summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Gayot <og@satcom1.com>2016-04-10 08:46:01 +0200
committerOlivier Gayot <og@satcom1.com>2016-04-10 08:46:01 +0200
commitd8343f962c3c882b09f6a8a157dae679a23cd493 (patch)
tree2ed688b6c6d18193ff0cda873a39e3c5df04b878
parentae2b94d7690059849ee4678c58dac624ea9ccda3 (diff)
added the web part
Signed-off-by: Olivier Gayot <og@satcom1.com>
-rw-r--r--webapp/index.html27
-rw-r--r--webapp/js/back_up.js128
-rw-r--r--webapp/js/fusioncharts.js1463
-rw-r--r--webapp/js/fusioncharts.theme.fint.js18
-rw-r--r--webapp/js/fusioncharts.widgets.js458
-rw-r--r--webapp/js/jquery-2.2.3.js9842
-rw-r--r--webapp/js/jquery.notify.js156
-rw-r--r--webapp/style/back_up.css8
-rw-r--r--webapp/style/jquery.dynameter.css104
9 files changed, 12204 insertions, 0 deletions
diff --git a/webapp/index.html b/webapp/index.html
new file mode 100644
index 0000000..9b81d2a
--- /dev/null
+++ b/webapp/index.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+
+<html>
+ <head>
+ <title>Back'Up</title>
+ <link rel='stylesheet' href='style/back_up.css' />
+ <script src='js/jquery-2.2.3.js'></script>
+ <script src='js/jquery-notify.js'></script>
+ <script src='js/fusioncharts.js'></script>
+ <script src='js/fusioncharts.theme.fint.js'></script>
+ <script src='js/back_up.js'></script>
+ </head>
+ <body>
+ <table>
+ <!-- heading -->
+ <tr><th>Measurement</th><th>Value</th></tr>
+ <tr><td>Pressure Top</td><td id='pression-top-val'></td></tr>
+ <tr><td>Pressure Bottom</td><td id='pression-bottom-val'></td></tr>
+ <tr><td>Flexion</td><td id='flexion-val'></td></tr>
+ <tr><td>Angle x</td><td id='angle-x-val'></td></tr>
+ <tr><td>Angle y</td><td id='angle-y-val'></td></tr>
+ <tr><td>Angle z</td><td id='angle-z-val'></td></tr>
+ </table>
+
+ <div id='fusioncharts-div'></div>
+ </body>
+</html>
diff --git a/webapp/js/back_up.js b/webapp/js/back_up.js
new file mode 100644
index 0000000..d242506
--- /dev/null
+++ b/webapp/js/back_up.js
@@ -0,0 +1,128 @@
+var BackUp = function() {
+ var ws;
+
+ var self = this;
+
+ var $pressionTop = $('#pression-top-val');
+ var $pressionBottom = $('#pression-bottom-val');
+ var $flexion = $('#flexion-val');
+ var $angleX = $('#angle-x-val');
+ var $angleY = $('#angle-y-val');
+ var $angleZ = $('#angle-z-val');
+
+ var gauge;
+
+ FusionCharts.ready(function () {
+ gauge = new FusionCharts({
+ 'id': 'chart',
+ 'type': 'angulargauge',
+ 'renderAt': 'fusioncharts-div',
+ 'width': '1000',
+ 'height': '500',
+ 'dataFormat': 'json',
+ 'dataSource': {
+ 'chart': {
+ //'caption': 'Inclinaison',
+ 'lowerLimit': '160',
+ 'upperLimit': '200',
+ 'theme': 'fint',
+ "gaugeFillMix": "{dark-40},{light-40},{dark-20}",
+ 'bgColor': '#00b0c0',
+ },
+ 'colorRange': {
+ 'color': [
+ {
+ 'minValue': '160',
+ 'maxValue': '171',
+ 'code': '#b41527',
+ }, {
+ 'minValue': '171',
+ 'maxValue': '175',
+ 'code': '#e48739',
+ }, {
+ 'minValue': '175',
+ 'maxValue': '185',
+ 'code': '#399e38',
+ }, {
+ 'minValue': '185',
+ 'maxValue': '189',
+ 'code': '#e48739',
+ }, {
+ 'minValue': '189',
+ 'maxValue': '200',
+ 'code': '#b41527',
+ },
+ ],
+ },
+ 'dials': {
+ 'dial': [ {
+ 'id': 'Dial1',
+ 'value': '180',
+ 'borderalpha': '0',
+ 'bgColor': '0,#aaaaaa,0',
+ 'basewidth': '40',
+ 'topwidth': '1',
+ 'radius': '300',
+ }, ],
+ },
+ },
+ });
+
+ gauge.render();
+
+ window.gauge = gauge;
+ });
+
+ this.run = function() {
+ var uri = 'ws://' + document.location.hostname + ':1234';
+
+ ws = new WebSocket(uri);
+
+ ws.onopen = function() {
+ console.log('open');
+ };
+
+ ws.onerror = function(evt) {
+ console.log(evt);
+ };
+
+ ws.onclose = function() {
+ console.log('connection closed by remote host')
+ };
+
+ ws.onmessage = function(evt) {
+ /* TODO */
+
+ var message = JSON.parse(evt.data);
+
+ //console.log(message);
+
+ $pressionTop.text(message['pressure_top']);
+ $pressionBottom.text(message['pressure_bottom']);
+ $flexion.text(message['flexion']);
+
+ if (message['angle_x']) {
+ angle = parseInt(message['angle_x'], 10) + 90;
+
+ ref = FusionCharts.getObjectReference('chart');
+
+ ref.feedData('value=' + angle);
+ $angleX.text(angle);
+ }
+
+ $angleY.text(message['angle_y']);
+ $angleZ.text(message['angle_z']);
+ };
+ };
+};
+
+var back_up;
+
+window.back_up = back_up;
+
+$(document).ready(function() {
+ back_up = new BackUp();
+
+ back_up.run();
+});
+
diff --git a/webapp/js/fusioncharts.js b/webapp/js/fusioncharts.js
new file mode 100644
index 0000000..0a7ca47
--- /dev/null
+++ b/webapp/js/fusioncharts.js
@@ -0,0 +1,1463 @@
+/*
+ FusionCharts JavaScript Library
+ Copyright FusionCharts Technologies LLP
+ License Information at <http://www.fusioncharts.com/license>
+ FusionCharts JavaScript Library
+ Copyright FusionCharts Technologies LLP
+ License Information at <http://www.fusioncharts.com/license>
+
+ @version 3.10.1
+
+ @attributions (infers respective third-party copyrights)
+ Raphael 2.1.0 (modified as 'Red Raphael') <http://raphaeljs.com/license.html>
+ JSON v2 <http://www.JSON.org/js.html>
+ Firebug Lite 1.3.0 <http://getfirebug.com/firebuglite>
+*/
+(function(){if(!window.FusionCharts||!window.FusionCharts.version){var e=window,q=e.document,F=e.navigator,u={window:e},d=u.modules={},a=u.interpreters={},t=Object.prototype.toString,E=/msie/i.test(F.userAgent)&&!e.opera,c=/loaded|complete/,l=!1,b=function(){var a=u.ready;u.ready=!0;u.raiseEvent&&(u.readyNotified=!0,u.raiseEvent("ready",{version:u.core.version,now:!a},u.core));u.readyNow=!a},r=function(a,b){var g,k;if(b instanceof Array)for(g=0;g<b.length;g+=1)"object"!==typeof b[g]?a[g]=b[g]:("object"!==
+typeof a[g]&&(a[g]=b[g]instanceof Array?[]:{}),r(a[g],b[g]));else for(g in b)"object"===typeof b[g]?(k=t.call(b[g]),"[object Object]"===k?("object"!==typeof a[g]&&(a[g]={}),r(a[g],b[g])):"[object Array]"===k?(a[g]instanceof Array||(a[g]=[]),r(a[g],b[g])):a[g]=b[g]):a[g]=b[g];return a};u.extend=function(a,b,g,k){var m;g&&a.prototype&&(a=a.prototype);if(!0===k)r(a,b);else for(m in b)a[m]=b[m];return a};u.uniqueId=function(){return"chartobject-"+(u.uniqueId.lastId+=1)};u.uniqueId.lastId=0;u.policies=
+{options:{chartTypeSourcePath:["typeSourcePath",""],product:["product","v3"],insertMode:["insertMode","replace"],safeMode:["safeMode",!0],overlayButton:["overlayButton",void 0],containerBackgroundColor:["containerBackgroundColor","#ffffff"],containerBackgroundOpacity:["containerBackgroundOpacity",1],containerClassName:["containerClassName","fusioncharts-container"],chartType:["type",void 0],baseChartMessageFont:["baseChartMessageFont","Verdana,sans"],baseChartMessageFontSize:["baseChartMessageFontSize",
+"10"],baseChartMessageColor:["baseChartMessageColor","#666666"],baseChartMessageImageHAlign:["baseChartMessageImageHAlign","middle"],baseChartMessageImageVAlign:["baseChartMessageImageVAlign","middle"],baseChartMessageImageAlpha:["baseChartMessageImageAlpha",100],baseChartMessageImageScale:["baseChartMessageImageScale",100],dataLoadStartMessage:["dataLoadStartMessage","Retrieving data. Please wait."],dataLoadErrorMessage:["dataLoadErrorMessage","Error in loading data."],dataInvalidMessage:["dataInvalidMessage",
+"Invalid data."],dataEmptyMessage:["dataEmptyMessage","No data to display."],typeNotSupportedMessage:["typeNotSupportedMessage","Chart type not supported."],browserNotSupportedMessage:["browserNotSupportedMessage","This browser is not supported."],loadMessage:["loadMessage","Loading chart. Please wait."],renderErrorMessage:["renderErrorMessage","Unable to render chart."]},attributes:{lang:["lang","EN"],id:["id",void 0]},width:["width","400"],height:["height","300"],src:["swfUrl",""]};a.stat="swfUrl id width height debugMode registerWithJS backgroundColor scaleMode lang detectFlashVersion autoInstallRedirect".split(" ");
+u.parsePolicies=function(a,b,g){var k,m,c;for(m in b)if(u.policies[m]instanceof Array)c=g[b[m][0]],a[m]=void 0===c?b[m][1]:c;else for(k in"object"!==typeof a[m]&&(a[m]={}),b[m])c=g[b[m][k][0]],a[m][k]=void 0===c?b[m][k][1]:c};u.parseCommands=function(b,c,g){var k,m;"string"===typeof c&&(c=a[c]||[]);k=0;for(m=c.length;k<m;k++)b[c[k]]=g[k];return b};u.registrars={module:function(){return u.core.apply(u.core,arguments)}};u.core=function(b){if(!(this instanceof u.core)){if(1===arguments.length&&b instanceof
+Array&&"private"===b[0]){if(d[b[1]])return;d[b[1]]={};b[3]instanceof Array&&(u.core.version[b[1]]=b[3]);return"function"===typeof b[2]?b[2].call(u,d[b[1]]):u}if(1===arguments.length&&"string"===typeof b)return u.core.items[b];u.raiseError&&u.raiseError(this,"25081840","run","",new SyntaxError('Use the "new" keyword while creating a new FusionCharts object'))}var c={};this.__state={};1===arguments.length&&"object"===typeof arguments[0]?c=arguments[0]:u.parseCommands(c,a.stat,arguments);1<arguments.length&&
+"object"===typeof arguments[arguments.length-1]&&(delete c[a.stat[arguments.length-1]],u.extend(c,arguments[arguments.length-1]));this.id="undefined"===typeof c.id?this.id=u.uniqueId():c.id;this.args=c;u.core.items[this.id]instanceof u.core&&u.raiseWarning(this,"06091847","param","",Error('A FusionCharts object with the specified id "'+this.id+'" already exists. Renaming it to '+(this.id=u.uniqueId())));u.parsePolicies(this,u.policies,c);this.attributes.id=this.id;this.resizeTo&&this.resizeTo(c.width,
+c.height,!0);this.chartType&&this.chartType(c.type||c.swfUrl,!0);u.raiseEvent("beforeInitialize",c,this);u.core.items[this.id]=this;u.core.defaultOptions=u.core.options;u.raiseEvent("initialized",c,this);return this};u.core.prototype={};u.core.prototype.constructor=u.core;u.extend(u.core,{id:"FusionCharts",version:["3","10","1"],items:{},options:{},getObjectReference:function(a){return u.core.items[a].ref},register:function(a){return u.registrars[a=a&&a.toString&&a.toString().toLowerCase()]&&u.registrars[a].apply(u.core,
+Array.prototype.slice.call(arguments,1))}});e.FusionCharts=u.core;e.FusionMaps&&e.FusionMaps.legacy&&(u.core(["private","modules.core.geo",e.FusionMaps.legacy,e.FusionMaps.version]),l=!0);c.test(q.readyState)||q.loaded?(u.ready=!0,setTimeout(b,1)):function(){function a(){arguments.callee.done||(arguments.callee.done=!0,g&&clearTimeout(g),l||(e.FusionMaps&&e.FusionMaps.legacy&&u.core(["private","modules.core.geo",e.FusionMaps.legacy,e.FusionMaps.version]),e.FusionMaps=u.core),setTimeout(b,1))}function d(){c.test(q.readyState)?
+a():g=setTimeout(d,10)}var g,k;q.addEventListener?q.addEventListener("DOMContentLoaded",a,!1):q.attachEvent&&e.attachEvent("onLoad",a);if(E)try{"https:"===e.location.protocol?q.write('<script id="__ie_onload_fusioncharts" defer="defer" src="//:">\x3c/script>'):q.write('<script id="__ie_onload_fusioncharts" defer="defer" src="javascript:void(0)">\x3c/script>'),k=q.getElementById("__ie_onload_fusioncharts"),k.onreadystatechange=function(){"complete"==this.readyState&&a()}}catch(m){}/WebKit/i.test(F.userAgent)&&
+(g=setTimeout(d,10));e.onload=function(b){return function(){a();b&&b.call&&b.call(e)}}(e.onload)}();e.FusionMaps=u.core}})();
+FusionCharts.register("module",["private","modules.mantle.errormanager",function(){var e=this,q=e.window,F={type:"TypeException",range:"ValueRangeException",impl:"NotImplementedException",param:"ParameterException",run:"RuntimeException",comp:"DesignTimeError",undefined:"UnspecifiedException"},u=function(a,d,E,c,l,b){var r="#"+d+" "+(a?a.id:"unknown-source")+c+" "+b+" >> ";l instanceof Error?(l.name=F[E],l.module="FusionCharts"+c,l.level=b,l.message=r+l.message,r=l.message,q.setTimeout(function(){throw l;
+},0)):r+=l;d={id:d,nature:F[E],source:"FusionCharts"+c,message:r};e.raiseEvent(b,d,a);if("function"===typeof q["FC_"+b])q["FC_"+b](d)},d;e.raiseError=function(a,d,e,c,l){u(a,d,e,c,l,"Error")};e.raiseWarning=function(a,d,e,c,l){u(a,d,e,c,l,"Warning")};d={outputHelpers:{text:function(a,e){d.outputTo("#"+a.eventId+" ["+(a.sender.id||a.sender).toString()+'] fired "'+a.eventType+'" event. '+("error"===a.eventType||"warning"===a.eventType?e.message:""))},event:function(a,d){this.outputTo(a,d)},verbose:function(a,
+e){d.outputTo(a.eventId,a.sender.id,a.eventType,e)}},outputHandler:function(a,t){"function"!==typeof d.outputTo?e.core["debugger"].outputFailed=!0:(e.core["debugger"].outputFailed=!1,d.currentOutputHelper(a,t))},currentOutputHelper:void 0,outputTo:void 0,enabled:!1};d.currentOutputHelper=d.outputHelpers.text;e.extend(e.core,{"debugger":{syncStateWithCharts:!0,outputFormat:function(a){return a&&"function"===typeof a.toLowerCase&&"function"===typeof d.outputHelpers[a=a.toLowerCase()]?(d.currentOutputHelper=
+d.outputHelpers[a],!0):!1},outputTo:function(a){"function"===typeof a?d.outputTo=a:null===a&&(e.core["debugger"].enable(!1),delete d.outputTo)},enable:function(a,t,E){var c;"object"===typeof a&&1===arguments.length&&(c=a,a=c.state,t=c.outputTo,E=c.outputFormat);"function"===typeof a&&("string"!==typeof t||2!==arguments.length&&!c||(E=t),t=a,a=!0);if("boolean"===typeof a&&a!==d.enabled)e.core[(d.enabled=a)?"addEventListener":"removeEventListener"]("*",d.outputHandler);"function"===typeof t&&(d.outputTo=
+t);e.core["debugger"].outputFormat(E);return d.enabled},enableFirebugLite:function(){var a;q.console&&q.console.firebug?e.core["debugger"].enable(q.console.log,"verbose"):((a=q.document.getElementsByTagName("html"))&&a[0].setAttribute("debug","true"),e.loadScript("https://getfirebug.com/firebug-lite.js#overrideConsole=false,startOpened=true",function(){e.core["debugger"].enable(q.console.log,"verbose")},"{ startOpened: true }",!0,!0))}},debugMode:{enabled:function(){q.setTimeout(function(){throw Error("Deprecated! Please use FusionCharts.debugger.enable instead.");
+},0);return e.core["debugger"].enable.apply(e.core["debugger"],arguments)}}},!1)}]);
+FusionCharts.register("module",["private","modules.mantle.eventmanager",function(){var e=this,q=e.window,F=e.core,u=q.Object.prototype.toString,d=u.call([]),a=function(a,b,c,g){try{a[0].call(b,c,g||{})}catch(k){setTimeout(function(){throw k;},0)}},t=function(b,c,d){if(b instanceof Array)for(var g=0,k;g<b.length;g+=1){if(b[g][1]===c.sender||void 0===b[g][1])k=b[g][1]===c.sender?c.sender:e.core,a(b[g],k,c,d),!0===c.detached&&(b.splice(g,1),--g,c.detached=!1);if(!0===c.cancelled)break}},E={unpropagator:function(){return!1===
+(this.cancelled=!0)},detacher:function(){return!1===(this.detached=!0)},undefaulter:function(){return!1===(this.prevented=!0)},listeners:{},lastEventId:0,addListener:function(a,b,c){var g,k;if(u.call(a)===d){g=[];for(k=0;k<a.length;k+=1)g.push(E.addListener(a[k],b,c));return g}if("string"!==typeof a)e.raiseError(c||e.core,"03091549","param","::EventTarget.addListener",Error("Unspecified Event Type"));else if("function"!==typeof b)e.raiseError(c||e.core,"03091550","param","::EventTarget.addListener",
+Error("Invalid Event Listener"));else return a=a.toLowerCase(),E.listeners[a]instanceof Array||(E.listeners[a]=[]),E.listeners[a].push([b,c]),b},removeListener:function(a,b,c){var g;if("function"!==typeof b)e.raiseError(c||e.core,"03091560","param","::EventTarget.removeListener",Error("Invalid Event Listener"));else if(a instanceof Array)for(g=0;g<a.length;g+=1)E.removeListener(a[g],b,c);else if("string"!==typeof a)e.raiseError(c||e.core,"03091559","param","::EventTarget.removeListener",Error("Unspecified Event Type"));
+else if(a=a.toLowerCase(),a=E.listeners[a],a instanceof Array)for(g=0;g<a.length;g+=1)a[g][0]===b&&a[g][1]===c&&(a.splice(g,1),--g)},triggerEvent:function(a,b,c,g,k,m){if("string"!==typeof a)e.raiseError(b,"03091602","param","::EventTarget.dispatchEvent",Error("Invalid Event Type"));else{a=a.toLowerCase();var J={eventType:a,eventId:E.lastEventId+=1,sender:b||Error("Orphan Event"),cancelled:!1,stopPropagation:this.unpropagator,prevented:!1,preventDefault:this.undefaulter,detached:!1,detachHandler:this.detacher};
+t(E.listeners[a],J,c);t(E.listeners["*"],J,c);switch(J.prevented){case !0:if("function"===typeof m)try{m.call(g||b||q,J,c||{})}catch(d){setTimeout(function(){throw d;},0)}break;default:if("function"===typeof k)try{k.call(g||b||q,J,c||{})}catch(d){setTimeout(function(){throw d;},0)}}return!0}}},c=e.raiseEvent=function(a,b,c,g,k,m){return E.triggerEvent(a,c,b,g,k,m)},l=e.legacyEventList={},b={};e.disposeEvents=function(a){var b,c;for(b in E.listeners)for(c=0;c<E.listeners[b].length;c+=1)E.listeners[b][c][1]===
+a&&E.listeners[b].splice(c,1)};e.raiseEventWithLegacy=function(a,b,d,g,k,m,J){var e=l[a];c(a,b,d,k,m,J);e&&"function"===typeof q[e]&&setTimeout(function(){q[e].apply(k||q,g)},0)};e.raiseEventGroup=function(a,d,l,g,k,m,J){var e=g.id,S=a+e;b[S]?(clearTimeout(b[S]),delete b[S]):e&&S?b[S]=setTimeout(function(){c(d,l,g,k,m,J);delete b[S]},0):c(d,l,g,k,m,J)};e.addEventListener=function(a,b){return E.addListener(a,b)};e.removeEventListener=function(a,b){return E.removeListener(a,b)};e.extend(F,{addEventListener:function(a,
+b){return E.addListener(a,b)},removeEventListener:function(a,b){return E.removeListener(a,b)},ready:function(a,b,c){e.ready?(F.ready=function(a,k){"function"===typeof a&&setTimeout(function(){a.call(k||F,b||F)},0)},F.ready(a,c)):"function"===typeof a&&F.addEventListener("ready",function(){F.ready(a,b,c)});return this}});F.on=F.addEventListener;e.extend(F.prototype,{addEventListener:function(a,b){return E.addListener(a,b,this)},removeEventListener:function(a,b){return E.removeListener(a,b,this)}});
+F.prototype.on=F.prototype.addEventListener;e.policies.options.events=["events",{}];e.addEventListener("beforeInitialize",function(a){a=a.sender;var b=a.options.events,c;if(b)for(c in b)"function"===typeof b[c]&&a.addEventListener(c,b[c])});e.ready&&!e.readyNotified&&(e.readyNotified=!0,e.raiseEvent("ready",{version:e.core.version,now:e.readyNow},e.core))}]);
+FusionCharts.register("module",["private","modules.mantle.ajax",function(){var e=this,q=e.window,F=parseFloat(q.navigator.appVersion.split("MSIE")[1]),u=5.5<=F&&7>=F?!0:!1,d="file:"===q.location.protocol,a=q.ActiveXObject,t=(!a||!d)&&q.XMLHttpRequest,E={objects:0,xhr:0,requests:0,success:0,failure:0,idle:0},c=function(){var d;if(t)return c=function(){E.xhr++;return new t},c();try{d=new a("Msxml2.XMLHTTP"),c=function(){E.xhr++;return new a("Msxml2.XMLHTTP")}}catch(b){try{d=new a("Microsoft.XMLHTTP"),
+c=function(){E.xhr++;return new a("Microsoft.XMLHTTP")}}catch(e){d=!1}}return d};e.core.ajax={stats:function(a){return a?E[a]:e.extend({},E)},headers:{"If-Modified-Since":"Sat, 29 Oct 1994 19:43:31 GMT","X-Requested-With":"XMLHttpRequest","X-Requested-By":"FusionCharts",Accept:"text/plain, */*","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}};F=e.ajax=function(a,b){this.onSuccess=a;this.onError=b;this.open=!1;E.objects++;E.idle++};e.extend(F.prototype,{headers:e.core.ajax.headers,
+transact:function(a,b,r,t){var p=this,g=p.xmlhttp,k=p.headers,m=p.onError,J=p.onSuccess;a="POST"===a;var T,S;if(!g||u)g=c(),p.xmlhttp=g;g.onreadystatechange=function(){try{4===g.readyState&&(!g.status&&d||200<=g.status&&300>g.status||304===g.status||1223===g.status||0===g.status?(J&&J(g.responseText,p,t,b),E.success++):m&&(m(Error("XmlHttprequest Error"),p,t,b),E.failure++),E.idle--,p.open=!1)}catch(a){m&&m(a,p,t,b),q.FC_DEV_ENVIRONMENT&&setTimeout(function(){throw a;},0),E.failure++}};try{g.open(a?
+"POST":"GET",b,!0);g.overrideMimeType&&g.overrideMimeType("text/plain");if(a)if("string"===typeof r)T=r;else{T=[];for(S in r)T.push(S+"="+(r[S]+"").replace(/\=/g,"%3D").replace(/\&/g,"%26"));T=T.join("&")}else T=null;for(S in k)g.setRequestHeader(S,k[S]);g.send(T);E.requests++;E.idle++;p.open=!0}catch(v){e.raiseError(e.core,"1110111515A","run","XmlHttprequest Error",v.message)}return g},get:function(a,b){return this.transact("GET",a,void 0,b)},post:function(a,b,c){return this.transact("POST",a,b,
+c)},abort:function(){var a=this.xmlhttp;this.open=!1;return a&&"function"===typeof a.abort&&a.readyState&&0!==a.readyState&&a.abort()},dispose:function(){this.open&&this.abort();delete this.onError;delete this.onSuccess;delete this.xmlhttp;delete this.open;E.objects--;return null}})}]);
+FusionCharts.register("module",["private","modules.mantle.runtime;1.1",function(){var e=this,q=e.window,F=/(^|[\/\\])(fusioncharts\.js)([\?#].*)?$/ig,u=/[\\\"<>;&]/,d=/^[^\S]*?(sf|f|ht)(tp|tps):\/\//i,a={},t={},E={},c={},l=e.purgeDOM=function(a){var b=a.attributes,g,k;if(b)for(g=b.length-1;0<=g;--g)k=b[g].name,"function"===typeof a[k]&&(a[k]=null);if(b=a.childNodes)for(b=b.length,g=0;g<b;g+=1)l(a.childNodes[g])},b=function(a,b,g){var k,c;for(k in a)if(a[k]instanceof Array)b[a[k][0]]=g[k];else for(c in a[k])b[a[k][c][0]]=
+g[k][c]},r=/^(FusionCharts|FusionWidgets|FusionMaps)/;e.getScriptBaseUri=function(a){var b=q.document.getElementsByTagName("script"),g=b.length,k,c;for(c=0;c<g;c+=1)if(k=b[c].getAttribute("src"),void 0!==k&&null!==k&&null!==k.match(a))return k.replace(a,"$1")};e.core.options.scriptBaseUri=function(){var a=e.getScriptBaseUri(F);return void 0===a?(e.raiseError(FusionCharts,"1603111624","run",">GenericRuntime~scriptBaseUri","Unable to locate FusionCharts script source location (URL)."),""):a}();e.isXSSSafe=
+function(a,b){return b&&null!==d.exec(a)?!1:null===u.exec(a)};e.xssEncode=function(a){return null===a||void 0===a||"function"!==typeof a.toString?"":a=a.toString().replace(/&/g,"&amp;").replace(/\'/g,"&#39;").replace(/\"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};e.loadScript=function(b,d,g,k,m){if(!b)return!1;var J=d&&d.success||d,l=d&&d.failure,r,v={type:"script",success:!1},aa=function(){c[r]=clearTimeout(c[r]);v.success?J&&J(b,r):l&&l(b,r);e.raiseEvent("externalresourceload",v,e.core)};
+m=m?"":e.core.options.scriptBaseUri;r=m+b;e.isXSSSafe(r,!1)||(r="function"===typeof q.encodeURIComponent?q.encodeURIComponent(r):q.escape(r));v.path=m;v.src=r;v.file=b;if(!0===E[r]&&k)return v.success=!0,v.notReloaded=!0,"function"===typeof d&&(d(),e.raiseEvent("externalresourceload",v,e.core)),!0;if(a[r]&&k)return!1;a[r]=!0;t[r]&&t[r].parentNode&&t[r].parentNode.removeChild(t[r]);d=t[r]=q.document.createElement("script");d.type="text/javascript";d.src=r;g&&(d["\v"==="v"?"text":"innerHTML"]=g);"function"===
+typeof J&&(E[r]=!1,c[r]=clearTimeout(c[r]),d.onload=function(){E[r]=!0;v.success=!0;aa()},d.onerror=function(){E[r]=!1;a[r]=!1;aa()},d.onreadystatechange=function(){if("complete"===this.readyState||"loaded"===this.readyState)E[r]=!0,v.success=!0,aa()});q.document.getElementsByTagName("head")[0].appendChild(d);"function"===typeof l&&(c[r]=setTimeout(function(){E[r]||aa()},e.core.options.html5ResourceLoadTimeout||15E3));return!0};e.capitalizeString=function(a,b){return a?a.replace(b?/(^|\s)([a-z])/g:
+/(^|\s)([a-z])/,function(a,b,c){return b+c.toUpperCase()}):a};e.extend(e.core,{clone:function(a,c){var g=typeof a,k,m=e.extend({},this.args,!1,!1);b(e.policies,m,this);b(e.renderer.getRendererPolicy(this.options.renderer),m,this);delete m.id;delete m.animate;delete m.stallLoad;k=m.link;m=e.extend({},m,!1,!1);m.link=k;switch(g){case "object":e.extend(m,a);break;case "boolean":c=a}return c?m:new e.core(m)},isActive:function(){if(!this.ref||q.document.getElementById(this.id)!==this.ref)return!1;try{return r.test(this.ref.signature())}catch(a){return!1}},
+chartType:function(a,b){var g=this.src,k=!0===b,c=this.options,d;"string"===typeof a&&(b="object"===typeof b?b:{},g=a.replace(/[\?\#][\s\S]*$/g,""),d=null!==g.match(/\.swf\s*?$/ig),g=g.replace(/\.swf\s*?$/ig,""),c.chartType=g.replace(/^[\s\S]*\//ig,"").replace(/^fcmap_/i,""),c.chartTypeSourcePath=-1===g.indexOf("/")?b.chartTypeSourcePath||this.options.chartTypeSourcePath||e.core.options.chartTypeSourcePath||"":g.replace(/[^\/]*?$/ig,""),this.src=((e.core.options.scriptBaseUri||"")+(c.chartTypeSourcePath||
+e.core.options.chartTypeSourcePath||"")).replace(/\/\s*$/g,"")+"/"+c.chartType.replace(/\.swf\s*?$/ig,"")+".swf",d&&(e.raiseWarning(this,"08101320181","comp","FusionCharts#chartType",'Chart type has ".swf" in alias and as such has been deprecated. Please use chart type alias.'),c.chartTypeSourcePath=e.core.options.chartTypeSourcePath||""),void 0!==b.dataSource&&null!==b.dataSource?this.setChartData(b.dataSource,b.dataFormat,b.dataConfiguration):this.isActive()&&!k&&this.render());return(c.chartType||
+"").toLowerCase()}},!0);q.getChartFromId=function(a){e.raiseWarning(this,"11133001041","comp","GenericRuntime~getObjectFromId()",'Use of deprecated getChartFromId() or getMapFromId(). Replace with "FusionCharts()" or FusionCharts.items[].');return e.core.items[a]instanceof e.core?e.core.items[a].ref:q.swfobject&&q.swfobject.getObjectById(a)};q.getMapFromId=q.getChartFromId}]);
+FusionCharts.register("module",["private","api.printmanager",function(){var e=this;e.extend(e.core,{printManager:{configure:function(){e.raiseWarning(e.core,"28141714","impl",".printManager.configure","PrintManager is deprecated")},isReady:function(){e.raiseWarning(e.core,"28141714","impl",".printManager.isReady","PrintManager is deprecated");return!1},enabled:function(){e.raiseWarning(e.core,"28141714","impl",".printManager.enabled","PrintManager is deprecated");return!1},managedPrint:function(){e.raiseWarning(e.core,
+"28141714","impl",".printManager.managedPrint","PrintManager is deprecated")}}},!1)}]);
+FusionCharts.register("module",["private","modules.interface.renderer",function(){var e=this,q=e.window,F=q.document,u=function(){e.raiseError(this,"25081845","run","::RendererManager",Error("No active renderer"))},d=e.FusionChartsDOMInsertModes={REPLACE:"replace",APPEND:"append",PREPEND:"prepend"},a={undefined:{render:u,remove:u,update:u,resize:u,config:u,policies:{}}},t={},E=function(a){return function(){var b=this.ref;if(void 0===b||null===b||"function"!==typeof b[a])e.raiseError(this,"25081617",
+"run","#"+a+"()","ExternalInterface call failed. Check whether chart has been rendered.");else return b[a].apply(b,arguments)}},c=function(a,b){return"function"===typeof a[b]?function(){return a[b].apply(a,arguments)}:a[b]},l=function(a,b){var c=F.getElementById(a),d=b.id||b.getAttribute("id"),l,e;if(null===c)return!1;if(a===d)return!0;d=b.getElementsByTagName("*");l=0;for(e=d.length;l<e;l++)if(d[l]===c)return!1;return!0},b=/[^\%\d]*$/ig,r=function(){var a=function(b){var c=b.parentNode;if(9===c.nodeType)return!1;
+var d="display";q.getComputedStyle?d=q.getComputedStyle(b)[d]:b.currentStyle&&(d=b.currentStyle[d]);return"none"===d?!0:c?a(c):!1};return a}(),V=function(){var a={},b,c=function(){var d=0,l=parseInt(e.core.options.visibilityTrackingInterval,10)||300,p,v,aa,L,t;for(p in a)if(d+=1,v=a[p].chart,aa=a[p].container,L=a[p].insertMode,t=a[p].callback,v.disposed||!r(aa))delete a[p],--d,!v.disposed&&v.renderChart.call(v,aa,L,t);b=d?setTimeout(c,l):clearTimeout(b)};return function(d,l,r,v){a[d.id]={chart:d,
+container:l,insertMode:r,callback:v};b||(b=setTimeout(c,parseInt(e.core.options.visibilityTrackingInterval,10)||300))}}(),p;e.policies.options.containerElementId=["renderAt",void 0];e.policies.options.renderer=["renderer",void 0];e.policies.options.containerElementType=["containerElementType",void 0];e.policies.options.visibilityTrackingInterval=300;e.normalizeCSSDimension=function(a,b,c){a=void 0===a?c.offsetWidth||parseFloat(c.style.width):a;b=void 0===b?c.offsetHeight||parseFloat(c.style.height):
+b;var d={},l=c.style,e;l.width=a=a.toString?a.toString():"0";l.height=b=b.toString?b.toString():"0";if((d.widthIsRelative=a.match(/^\s*\d*\.?\d*\%\s*$/)&&!a.match(/^\s*0\%\s*$/))&&0===c.offsetWidth)for(e=c;e=e.offsetParent;)if(0<e.offsetWidth){a=(e.offsetWidth*parseFloat(a.match(/\d*/)[0])/100).toString();break}if((d.heightIsRelative=b.match(/^\s*\d*\.?\d*\%\s*$/)&&!b.match(/^\s*0\%\s*$/))&&20>=c.offsetHeight)for(e=c;e=e.offsetParent;)if(0<e.offsetHeight){b=(e.offsetHeight*parseFloat(b.match(/\d*/)[0])/
+100).toString();break}d.width=a.replace?a.replace(/^\s*(\d*\.?\d*)\s*$/ig,"$1px"):a;d.height=b.replace?b.replace(/^\s*(\d*\.?\d*)\s*$/ig,"$1px"):b;l.width=d.width;l.height=d.height;d.pixelWidth=d.widthIsRelative?c.offsetWidth:parseInt(d.width,10)||0;d.pixelHeight=d.heightIsRelative?c.offsetHeight:parseInt(d.height,10)||0;return d};p=e.renderer={register:function(b,c){if(!b||"function"!==typeof b.toString)throw Error("#03091436 ~renderer.register() Invalid value for renderer name.");b=b.toString().toLowerCase();
+if(void 0!==a[b])return e.raiseError(e.core,"03091438","param","::RendererManager>register",'Duplicate renderer name specified in "name"'),!1;a[b]=c;return!0},userSetDefault:!1,setDefault:function(b){if(!b||"function"!==typeof b.toString)return e.raiseError(e.core,"25081731","param","::RendererManager>setDefault",'Invalid renderer name specified in "name"'),!1;if(void 0===a[b=b.toString().toLowerCase()])return e.raiseError(e.core,"25081733","range","::RendererManager>setDefault","The specified renderer does not exist."),
+!1;this.userSetDefault=!1;e.policies.options.renderer=["renderer",b];return!0},notifyRender:function(a){var b=e.core.items[a&&a.id];b&&(!1!==a.success||a.silent)||e.raiseError(e.core.items[a.id],"25081850","run","::RendererManager",Error("There was an error rendering the chart. Enable FusionCharts JS debugger for more information."));if(b.ref=a.ref)a.ref.FusionCharts=e.core.items[a.id];e.raiseEvent("internal.DOMElementCreated",{},b)},protectedMethods:{options:!0,attributes:!0,src:!0,ref:!0,constructor:!0,
+signature:!0,link:!0,addEventListener:!0,removeEventListener:!0},getRenderer:function(b){return a[b]},getRendererPolicy:function(b){b=a[b].policies;return"object"===typeof b?b:{}},currentRendererName:function(){return e.policies.options.renderer[1]},update:function(a){t[a.id].update.apply(a,Array.prototype.slice.call(arguments,1))},render:function(a){t[a.id].render.apply(a,Array.prototype.slice.call(arguments,1))},remove:function(a){t[a.id].remove.apply(a,Array.prototype.slice.call(arguments,1))},
+resize:function(a){t[a.id].resize.apply(a,Array.prototype.slice.call(arguments,1))},config:function(a){t[a.id].config.apply(a,Array.prototype.slice.call(arguments,1))},dispose:function(a){t[a.id].dispose.apply(a,Array.prototype.slice.call(arguments,1))}};e.addEventListener("beforeInitialize",function(b){b=b.sender;var c=b.options.renderer.toLowerCase(),m;"string"===typeof b.options.renderer&&void 0===a[c]&&(b.options.renderer=e.policies.options.renderer[1]);b.options.renderer=c;t[b.id]=a[b.options.renderer];
+!0!==t[b.id].initialized&&"function"===typeof t[b.id].init&&(t[b.id].init(),t[b.id].initialized=!0);e.parsePolicies(b,t[b.id].policies||{},b.args);for(m in t[b.id].prototype)b[m]=t[b.id].prototype[m];for(m in t[b.id].events)b.addEventListener(m,t[b.id].events[m])});e.addEventListener(["rendered","dataloaderror","nodatatodisplay","rendercancelled"],function(a,b){var c=a.sender;c instanceof e.core&&c.__state.rendering&&(e.raiseEvent("internal.rendered",b,c),delete c.__state.rendering)});e.addEventListener("loaded",
+function(a){var b=a.sender;a=a.sender.ref;var m,d;if(void 0!==a&&null!==a&&"function"===typeof a.getExternalInterfaceMethods){try{m=a.getExternalInterfaceMethods(),m="string"===typeof m?m.split(","):[]}catch(l){m=[],e.raiseError(b,"13111126041","run","RendererManager^Loaded",Error("Error while retrieving data from the chart-object."+(l.message&&0<=l.message.indexOf("NPObject")?" Possible cross-domain security restriction.":"")))}for(a=0;a<m.length;a+=1)d=m[a],void 0===b[d]&&(b[d]=E(d));if(b.ref)for(d in m=
+p.protectedMethods,a=p.getRenderer(b.options.renderer).protectedMethods,b)if(a&&!m[d]&&!a[d]&&void 0===b.ref[d])try{b.ref[d]=c(b,d)}catch(l){}}});e.legacyEventList.resized="FC_Resized";e.extend(e.core.prototype,{render:function(a,b,c){c?"function"!==typeof c&&(c=void 0):"function"===typeof b?(c=b,b=void 0):b||"function"!==typeof a||(c=a,a=void 0);void 0===a&&(a=this.options.containerElementId);"string"===typeof a&&(a=F.getElementById(a));if(void 0===a||null===a)return e.raiseError(this,"03091456",
+"run",".render()",Error("Unable to find the container DOM element.")),this;r(a)?V(this,a,b,c):this.renderChart.call(this,a,b,c);return this},renderChart:function(a,b,c){var J=this,r,p,v;if((v=q[this.id])&&v.FusionCharts&&v.FusionCharts===this||(v=this.ref)&&v.FusionCharts&&v.FusionCharts===this)e.renderer.dispose(this),v===q[this.id]&&(q[this.id]=void 0);void 0!==q[this.id]&&e.raiseError(this,"25081843","comp",".render",Error("#25081843:IECompatibility() Chart Id is same as a JavaScript variable name. Variable naming error. Please use unique name forchart JS variable, chart-id and container id."));
+c?"function"!==typeof c&&(c=void 0):"function"===typeof b?(c=b,b=void 0):b||"function"!==typeof a||(c=a,a=void 0);b=(b||this.options.insertMode).toLowerCase()||d.REPLACE;void 0===a&&(a=this.options.containerElementId);"string"===typeof a&&(a=F.getElementById(a));if(void 0===a||null===a)return e.raiseError(this,"03091456","run",".render()",Error("Unable to find the container DOM element.")),this;if(l(this.id,a))return e.raiseError(this,"05102109","run",".render()",Error("A duplicate object already exists with the specific Id: "+
+this.id)),this;r=F.createElement(this.options.containerElementType||"span");r.setAttribute("id",this.id);if("append"!==b&&"prepend"!==b)for(;a.hasChildNodes();)a.removeChild(a.firstChild);"prepend"===b&&a.firstChild?a.insertBefore(r,a.firstChild):a.appendChild(r);this.options.containerElement=a;this.options.containerElementId=a.id;if(b=r.style)b.position="relative",b.textAlign="left",b.lineHeight="normal",b.display="inline-block",b.zoom="1",b.fontWeight="normal",b.fontVariant="normal",b.fontStyle=
+"normal",b.textDecoration="none",b["*DISPLAY"]="inline",b.padding="0",b.margin="0",b.border="none",b.direction="ltr";this.options.containerClassName&&(r.className=this.options.containerClassName);b=e.normalizeCSSDimension(this.width,this.height,r);this.__state.renderedWidth=b.pixelWidth;this.__state.renderedHeight=b.pixelHeight;this.__state.rendering=!0;e.raiseEvent("beforeRender",p={container:a,width:this.width,height:this.height,renderer:this.options.renderer},this,void 0,function(a,b){!0!==this.disposed&&
+e.renderer.render(J,r,function(){e.renderer.notifyRender.apply(this,arguments);if(c)try{c.call(a.sender,b.container)}catch(k){setTimeout(function(){throw k;})}})},function(){e.raiseEvent("renderCancelled",p,J)});return this},remove:function(){e.renderer.remove(this);return this},resizeTo:function(a,c,m){var d=this,l=d.width,r=d.height,v=d.__state;"object"===typeof a&&(m=c,c=a.h,a=a.w);a=null===a||void 0===a?l:a.toString().replace(b,"");c=null===c||void 0===c?r:c.toString().replace(b,"");!0!==m?e.raiseEvent("beforeresize",
+{currentWidth:l,currentHeight:r,newWidth:a,newHeight:c},d,void 0,function(){d.width=a;d.height=c;e.renderer.resize(d,{width:a,height:c});e.raiseEventWithLegacy("resized",{width:d.width,height:d.height,prevWidth:l,prevHeight:r,pixelWidth:d.ref&&d.ref.offsetWidth||0,pixelHeight:d.ref&&d.ref.offsetHeight||0,originalWidth:v.renderedWidth,originalHeight:v.renderedHeight},d,[d.id,d.width,d.height])},function(){e.raiseEvent("resizecancelled",{currentWidth:l,currentHeight:r,cancelledTargetWidth:a,cancelledTargetHeight:c},
+d)}):(d.width=a,d.height=c);return this},dispose:function(){var a=this,b={};e.raiseEvent("beforeDispose",b,a,void 0,function(){e.renderer.dispose(a);e.raiseEvent("disposed",b,a);e.disposeEvents(a);delete e.core.items[a.id];for(var c in a)a.hasOwnProperty(c)&&delete a[c];a.disposed=!0},function(){e.raiseEvent("disposeCancelled",b,a)})},configure:function(a,b){var c;a&&("string"===typeof a?(c={},c[a]=b):c=a,e.renderer.config(this,c))}});e.extend(e.core,{setCurrentRenderer:function(){var a=p.setDefault.apply(p,
+arguments);p.userSetDefault=!0;return a},getCurrentRenderer:function(){return p.currentRendererName.apply(p,arguments)},render:function(a,b){return a instanceof e.core?(a.render(b),a):(new e.core(a)).render(b)}},!1)}]);
+FusionCharts.register("module",["private","modules.interface.transcoder",function(){var e=this,q=e.window,F=e.transcoders={},u={},d={},a=/url$/i,t=e._interactiveCharts={selectscatter:[!0,!1],dragcolumn2d:[!0,!0],dragarea:[!0,!0],dragline:[!0,!0],dragnode:[!0,!0]},E=function(a,c,d,g){var r=d.obj;d=d.args;d.dataSource=a;d.xmlHttpRequestObject=c;d.source="XmlHttpRequest";d.url=g;e.raiseEvent("dataLoadRequestCompleted",d,r,void 0,l,b)},c=function(a,b,c){var d=c.obj;c=c.args;c.error=a;c.httpStatus=b.xhr&&
+b.xhr.status?b.xhr.status:-1;c.xmlHttpRequestObject=b;e.raiseEvent("dataLoadError",c,d);"function"===typeof q.FC_DataLoadError&&q.FC_DataLoadError(d.id,c)},l=function(a,b){b.config||(b.config={});b.config.isHighPerformingChart=!!(a.sender&&a.sender.args&&/zoomscatter/ig.test(a.sender.args.type));a.sender.setChartData(b.dataSource,b.dataFormat,b.config,b.successcallback,b.silent)},b=function(a,b){e.raiseEvent("dataLoadCancelled",b,a.sender);b.xmlHttpRequestObject.abort()},r=function(a,b){var d=a.sender,
+g=d.__state,l=b.url;d.options.dataSource=b.url;g.dhmXhrObj||(g.dhmXhrObj=new e.ajax(E,c));g.dhmXhrObj.get("function"===typeof q.decodeURIComponent?q.decodeURIComponent(l):q.unescape(l),{obj:d,args:b})},V=function(a,b){var c=a.sender,d=c.__state;e.raiseEvent("dataLoadRequestCancelled",b,c);d&&d.dhmXhrObj&&d.dhmXhrObj.abort()},p=function(a,b){var c=a.sender,g=c.__state,l=c.id;u[l]=b;d[l]&&delete d[l];d[l]={};g.dataReady=void 0;g.dataAvailable=!0;!0!==b.silent&&(!0!==c.options.safeMode||!0!==g.rendering||
+c.isActive()?(delete g.args,e.renderer.update(c,b)):(g.updatePending=b,e.raiseWarning(c,"23091255","run","::DataHandler~update","Renderer update was postponed due to async loading.")));e.raiseEvent("dataUpdated",b,c,void 0,b.successcallback)},g=function(a,b){e.raiseEvent("dataUpdateCancelled",b,a.sender,void 0,b.failurecallback)};e.dataFormats={};e.policies.options.dataSource=["dataSource",void 0];e.policies.options.dataFormat=["dataFormat",void 0];e.policies.options.dataConfiguration=["dataConfiguration",
+void 0];e.policies.options.showDataLoadingMessage=["showDataLoadingMessage",!1];e.addDataHandler=function(a,b){if("string"!==typeof a||void 0!==F[a.toLowerCase()])e.raiseError(e.core,"03091606","param","::DataManager.addDataHandler",Error("Invalid Data Handler Name"));else{var c={},d=a.toLowerCase();F[d]=b;b.name=a;c["set"+a+"Data"]=function(b,c,d){return this.setChartData(b,a,c,d)};b.transportable&&(c["set"+a+"Url"]=function(b,c,d){return this.setChartDataUrl(b,a,c,d)},e.dataFormats[a+"URL"]=d+"Url");
+c["get"+a+"Data"]=function(){return this.getChartData(a)};e.dataFormats[a]=d;e.extend(e.core,c,!0)}};e.extend(e.core.prototype,{setChartDataUrl:function(b,c,d,g,l){if(void 0===c||null===c||"function"!==typeof c.toString)c=this.options.dataFormat,e.raiseWarning(this,"03091609","param","FusionCharts#setChartDataUrl","Invalid Data Format. Reverting to current data format - "+c);c=c.toString().toLowerCase();c=a.test(c)?c.slice(0,-3):c;e.raiseEvent("dataLoadRequested",{source:"XmlHttpRequest",url:b,dataFormat:c,
+silent:!!l,config:d,successcallback:g},this,void 0,r,V)},setChartData:function(b,c,d,l,r){var v=this.options,aa,L;if(void 0===c||null===c||"function"!==typeof c.toString)c=v.dataFormat,e.raiseWarning(this,"03091610","param","FusionCharts#setChartData","Invalid Data Format. Reverting to current data format - "+c);c=c.toString().toLowerCase();a.test(c)?this.setChartDataUrl(b,c,d,l,r):(v.dataSource=b,aa=c,v.dataFormat=c,L=F[aa],"undefined"===typeof L?e.raiseError(e.core,"03091611","param","FusionCharts#setChartData",
+Error("Data Format not recognized")):(c=(c=e.renderer&&e.renderer.getRenderer(v.renderer||e.renderer.currentRendererName()))&&c.dataFormat,d=c===aa?L.passthrough?L.passthrough(b,d):{data:b}:L.encode(b,this,d||v.dataConfiguration)||{},d["native"]=c===aa,d.format=d["native"]?c:"xml",d.dataFormat=aa,d.dataSource=b,d.silent=!!r,"function"===typeof l&&(d.successcallback=l),e.raiseEvent("beforeDataUpdate",d,this,void 0,p,g)))},getChartData:function(a,b){var c=this.options,g=this.id,l;if(void 0===a||"function"!==
+typeof a.toString||void 0===(l=F[a=a.toString().toLowerCase()]))e.raiseError(this,"25081543","param","::transcoder~getChartData()",Error('Unrecognized data-format specified in "format"'));else return d[g][a]?c=d[g][a]:u[g]?(a===u[g].format?d[g][a]=u[g]:(d[g].xml||(d[g].xml="xml"===u[g].format?u[g]:F[u[g].format].encode(u[g].data,this,c.dataConfiguration)),d[g][a]||(d[g][a]=l.decode(d[g].xml.data,this,c.dataConfiguration))),c=d[g][a]):c={error:Error("Data not defined")},!0===Boolean(b)?c:c.data},dataReady:function(a){return a?
+this.__state.dataAvailable:this.__state.dataReady}});e.extend(e.core,{transcodeData:function(a,b,c,d,g){if(b&&"function"===typeof b.toString&&c&&"function"===typeof c.toString&&void 0!==F[c=c.toString().toLowerCase()]&&void 0!==F[b=b.toString().toLowerCase()])return a=F[b].encode(a,this,g),b=F[c].decode(a.data,this,g,b),b.error instanceof Error||(b.error=a.error),d?b:b.data;e.raiseError(this,"14090217","param",".transcodeData()",Error("Unrecognized data-format specified during transcoding."))}},!1);
+e.getRenderer&&!e.getRenderer("flash")||e.addEventListener("DataLoadRequested",function(a){var b=a.sender;b.options&&"flash"===b.options.renderer&&b.options.useLegacyXMLTransport&&a.preventDefault()});e.addEventListener("beforeInitialize",function(b){b=b.sender;var c=b.options,g=c.dataSource,l=e.renderer&&e.renderer.getRenderer(c.renderer),r={};delete u[b.id];d[b.id]={};if(void 0!==g&&null!==g){b.__state.dataSetDuringConstruction=!0;if("string"!==typeof c.dataFormat)switch(typeof g){case "function":g=
+c.dataSource=g.call(b,c.dataConfiguration);c.dataFormat="JSON";break;case "string":c.dataFormat=/^\s*?\{[\s\S]*\}\s*?$/g.test(b.options.dataFormat)?"JSON":"XML";break;case "object":c.dataFormat="JSON"}c.dataFormat&&c.dataFormat.toString&&(b.__state.dataFetchDuringConstruction=a.test(c.dataFormat.toString()));r.isHighPerformingChart=!!/zoomscatter/ig.test(c.chartType);b.setChartData(g,c.dataFormat,r,void 0,!0)}else l&&(b.__state.dataSetDuringConstruction=!1,e.raiseWarning(b,"1810131922A","param",":dataHandler~event:beforeInitialize",
+"Data source was not defined during construction, hence set to blank renderer default - "+l.dataFormat),b.setChartData("",l.dataFormat,void 0,void 0,!0),b.__state.dataAvailable=!1)});e.addEventListener("beforeDispose",function(a){var b=a.sender;delete u[a.sender.id];delete d[a.sender.id];b&&b.__state&&b.__state.dhmXhrObj&&b.__state.dhmXhrObj.abort()});e.addEventListener("disposed",function(a){delete d[a.sender.id]});e.addEventListener("loaded",function(a){a=a.sender;var b=a.__state.updatePending;
+a instanceof e.core&&void 0!==b&&(delete a.__state.updatePending,e.renderer.update(a,b))});e.addEventListener("dataUpdated",function(a,b){var c=a.sender,d=c.__state;d.rendering&&(d.dataFetchDuringConstruction||d.updatePending)&&(delete d.dataFetchDuringConstruction,delete d.updatePending,e.renderer.update(c,b))});e.addEventListener(["dataLoadError","dataInvalid"],function(a){a.sender.__state.dataAvailable=!1});e.addEventListener("loaded",function(a){a=a.sender;var b=a.__state,c,d,g;g=function(a,b){return function(c){return!1===
+c?b.apply(this):this.ref.getUpdatedXMLData?e.core.transcodeData(this.ref.getUpdatedXMLData(),"xml",a):this.getData?this.getData(a):b.apply(this)}};if(a.chartType&&t[a.chartType()]&&t[a.chartType()][0]){for(c in e.transcoders)d=e.transcoders[c].name,d="get"+d+"Data",a[d]=g(c,a.constructor.prototype[d]),a[d]._dynamicdatarouter=!0;b.dynamicDataRoutingEnabled=!0}else if(b.dynamicDataRoutingEnabled){for(c in e.transcoders)d=e.transcoders[c].name,d="get"+d+"Data",a.hasOwnProperty(d)&&a[d]._dynamicdatarouter&&
+delete a[d];b.dynamicDataRoutingEnabled=!1}})}]);"object"!==typeof JSON&&(JSON={});
+(function(){function e(a){return 10>a?"0"+a:a}function q(a){d.lastIndex=0;return d.test(a)?'"'+a.replace(d,function(a){var c=E[a];return"string"===typeof c?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function F(d,b){var e,E,p,g,k=a,m,J=b[d];J&&"object"===typeof J&&"function"===typeof J.toJSON&&(J=J.toJSON(d));"function"===typeof c&&(J=c.call(b,d,J));switch(typeof J){case "string":return q(J);case "number":return isFinite(J)?String(J):"null";case "boolean":case "null":return String(J);
+case "object":if(!J)return"null";a+=t;m=[];if("[object Array]"===Object.prototype.toString.apply(J)){g=J.length;for(e=0;e<g;e+=1)m[e]=F(e,J)||"null";p=0===m.length?"[]":a?"[\n"+a+m.join(",\n"+a)+"\n"+k+"]":"["+m.join(",")+"]";a=k;return p}if(c&&"object"===typeof c)for(g=c.length,e=0;e<g;e+=1)"string"===typeof c[e]&&(E=c[e],(p=F(E,J))&&m.push(q(E)+(a?": ":":")+p));else for(E in J)Object.prototype.hasOwnProperty.call(J,E)&&(p=F(E,J))&&m.push(q(E)+(a?": ":":")+p);p=0===m.length?"{}":a?"{\n"+a+m.join(",\n"+
+a)+"\n"+k+"}":"{"+m.join(",")+"}";a=k;return p}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+e(this.getUTCMonth()+1)+"-"+e(this.getUTCDate())+"T"+e(this.getUTCHours())+":"+e(this.getUTCMinutes())+":"+e(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var u=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+d=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,a,t,E={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},c;"function"!==typeof JSON.stringify&&(JSON.stringify=function(d,b,e){var E;t=a="";if("number"===typeof e)for(E=0;E<e;E+=1)t+=" ";else"string"===typeof e&&(t=e);if((c=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return F("",{"":d})});
+"function"!==typeof JSON.parse&&(JSON.parse=function(a,b){function c(a,d){var k,m,l=a[d];if(l&&"object"===typeof l)for(k in l)Object.prototype.hasOwnProperty.call(l,k)&&(m=c(l,k),void 0!==m?l[k]=m:delete l[k]);return b.call(a,d,l)}var d;a=String(a);u.lastIndex=0;u.test(a)&&(a=a.replace(u,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return d=eval("("+a+")"),"function"===typeof b?c({"":d},""):d;throw new SyntaxError("JSON.parse");})})();
+FusionCharts.register("module",["private","modules.data.json",function(){var e=this,q=e.window,F=q.document,u=e.xssEncode,d,a,t=function(a){var c,d;for(c in a)a.hasOwnProperty(c)&&(d=c.toLowerCase(),c!==d&&(a[d]=a[c],delete a[c]),"object"===typeof a[d]&&"data"!==d&&t(a[d]))};void 0===q.JSON&&e.raiseError(this,"1113062012","run","JSONDataHandler",Error("Could not find library support for JSON parsing."));e.policies.options.allowIESafeXMLParsing=["_allowIESafeXMLParsing",!0];d=function(){var a={set:!0,
+trendlines:!0,vtrendlines:!0,line:{trendlines:!0,vtrendlines:!0},data:!0,dataset:!0,lineset:!0,categories:!0,category:!0,linkeddata:!0,application:!0,definition:!0,axis:!0,connectors:!0,connector:{connectors:!0},trendset:!0,row:{rows:!0},column:{columns:!0},label:{labels:!0},color:{colorrange:!0},dial:{dials:!0},pointer:{pointers:!0},point:{trendpoints:!0},process:{processes:!0},task:{tasks:!0},milestone:{milestones:!0},datacolumn:{datatable:!0},text:{datacolumn:!0},item:{legend:!0},alert:{alerts:!0},
+groups:{annotations:!0},items:{groups:!0,data:!0},shapes:!0,shape:{shapes:!0},entitydef:!0,entity:{entitydef:!0}},c={chart:"linkedchart",map:"linkedmap",set:"data",vline:{chart:"data",graph:"data",dataset:"data",categories:"category",linkedchart:"data"},apply:{application:"application"},style:{definition:"definition"},marker:{application:"application",definition:"definition",data:"items"},entity:{entitydef:"entitydef",data:"data"},shape:{shapes:"shapes"},connector:{connectors:{chart:"connector",linkedchart:"connector",
+map:"connectors",linkedmap:"connectors"}},annotationgroup:{annotations:"groups"},annotation:{groups:"items"}},d={vline:{vline:"true"}},b={chart:!0,map:!0,graph:!0},r={dataset:"data",categories:"category"},t={target:"target",value:"value"},p={styles:{definition:!0,application:!0},chart:{value:!0,target:!0},graph:{value:!0,target:!0},linkedchart:{value:!0,target:!0},markers:{definition:!0,application:!0,shapes:!0,connectors:!0,data:!0},map:{entitydef:!0,data:!0},linkedmap:{entitydef:!0,data:!0}},g,
+k,m;g={append:function(b,c,d,g){!a[d]||!0!==a[d]&&!0!==a[d][g]?c[d]=b:(c[d]instanceof Array||(c[d]=[]),c[d].push(b))},child:function(a,k,m,v){var aa,L,E,G,H,D;for(aa=0;aa<k.length;aa+=1)switch(E=k[aa],L=E.nodeName.toLowerCase(),E.nodeType){case 1:G=g.attr(E.attributes);D=b[L];!0===D&&(H=G,G={},G[L]=H);D=d[L];"object"===typeof D&&e.extend(G,D);if(D=c[L])if("object"===typeof D&&"object"===typeof D[m])for(H in H=void 0,D[m]){if(v[H]){L=D[m][H];break}}else"object"===typeof D&&"string"===typeof D[m]?L=
+D[m]:"string"===typeof D&&(L=D);E.childNodes.length&&((D=p[m])&&D[L]?g.child(a,E.childNodes,L,v):g.child(G,E.childNodes,L,v));(D=p[m])&&D[L]||g.append(G,a,L,m);break;case 3:if(D=t[m])L=D,G=E.data,g.append(G,a,L,m);D=r[m];"string"===typeof D&&v.chart&&parseInt(v.chart.compactdatamode,10)&&(L=D,G=E.data,a[L]=a[L]?a[L]+G:G)}},attr:function(a){var b,c={};if(!a||!a.length)return c;for(b=0;b<a.length;b+=1)"xml"===m&&(a[b].value?a[b].value=a[b].value.replace(/</g,"&lt;").replace(/>/g,"&gt;"):a[b].nodeValue&&
+(a[b].nodeValue=a[b].nodeValue.replace(/</g,"&lt;").replace(/>/g,"&gt;"))),c[a[b].nodeName.toLowerCase()]=a[b].value||a[b].nodeValue;return c}};k=function(a){var b={},c,d,m,l,r,p,H,D,t;if("object"!==typeof a&&a&&"function"!==typeof a.toString)return k.errorObject=new TypeError("xml2json.parse()"),b;a=a.toString().replace(/<\!--[\s\S]*?--\x3e/g,"").replace(/<\?xml[\s\S]*?\?>/ig,"").replace(/&(?!([^;\n\r]+?;))/g,"&amp;$1");a=a.replace(/^\s\s*/,"");for(var E=/\s/,O=a.length;E.test(a.charAt(--O)););a=
+a.slice(0,O+1);if(!a)return b;try{q.DOMParser?c=(new q.DOMParser).parseFromString(a,"text/xml"):F.body&&e.core.options.allowIESafeXMLParsing?(d=F.createElement("xml"),d.innerHTML=a,F.body.appendChild(d),c=d.XMLDocument,F.body.removeChild(d)):(c=new q.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(a));if(!(c&&c.childNodes&&1===c.childNodes.length&&(m=c.childNodes[0])&&m.nodeName&&(l=m.nodeName.toLowerCase()))||"chart"!==l&&"map"!==l&&"graph"!==l)return k.errorObject=new TypeError("xml2json.parse()"),
+b;if("graph"===l){r=c.createElement("chart");for(t=(H=m.attributes)&&H.length||0;t--;)r.setAttribute(H[t].name,H[t].value),H.removeNamedItem(H[t].name);if(t=(D=m.childNodes)&&D.length||0)--t,p=m.removeChild(D[t]),r.appendChild(p);for(;t--;)p=m.removeChild(D[t]),r.insertBefore(p,r.firstChild);c.replaceChild(r,m);m=r}}catch(ha){k.errorObject=ha}m?(m.attributes&&(b[l]=g.attr(m.attributes)),m.childNodes&&g.child(b,m.childNodes,l,b),delete k.errorObject):k.errorObject=new TypeError("xml2json.parse()");
+return b};return function(a){delete k.errorObject;m=arguments[arguments.length-1];return{data:k(a),error:k.errorObject}}}();a=function(){var a,c;a={items:{explode:{data:"set",groups:{annotations:"annotationgroup"},items:{groups:"annotation"}},text:{chart:{target:"target",value:"value"},graph:{target:"target",value:"value"}},dsv:{dataset:{data:"dataset"},categories:{category:"categories"}},attr:{chart:{chart:"chart"},graph:{graph:"graph"},map:{map:"map"},linkedmap:{map:"map"},linkedchart:{chart:"chart"}},
+group:{styles:{definition:"style",application:"apply"},map:{data:"entity",entitydef:"entity"},markers:{definition:"marker",application:"marker",shapes:"shape",connectors:"connector",items:"marker"}},tag:{markers:{items:"data"}}},qualify:function(a,b,c){return"object"===typeof this.items[a][c]?this.items[a][c][b]:this.items[a][c]}};c=function(d,b,e,t){var p="",g="",k="",m="",J,T,q;b&&"function"===typeof b.toLowerCase&&(b=b.toLowerCase());if(void 0===e&&d[b])for(J in d[b])T=J.toLowerCase(),"compactdatamode"===
+T&&(t.applyDSV=1==d[b][J]);if(d instanceof Array)for(J=0;J<d.length;J+=1)k="string"===typeof d[J]?k+u(d[J]):k+c(d[J],b,e,t);else{for(J in d)T=J.toLowerCase(),d[J]instanceof Array&&(q=a.qualify("group",T,b))?(k=a.qualify("tag",T,b)||T,g+="<"+k+">"+c(d[J],q,b,t)+"</"+k+">"):"object"===typeof d[J]?(q=a.qualify("attr",T,b))?(m=c(d[J],q,b,t).replace(/\s*\/\>/ig,""),b=T):g+=c(d[J],T,b,t):t.applyDSV&&(q=a.qualify("dsv",T,b))?g+=d[J]:(q=a.qualify("text",T,b))?(k=a.qualify("tag",T,b)||q,g+="<"+k+">"+d[J]+
+"</"+k+">"):"vline"===T&&Boolean(d[J])?b="vline":p+=" "+T+'="'+u(d[J]).toString().replace(/\"/ig,"&quot;")+'"';if(q=a.qualify("explode",e,b))b=q;k=b;k=(""!==m?m:"<"+k)+p+(""!==g?">"+g+"</"+k+">":" />")}return k};return function(a){delete c.errorObject;if(a&&"string"===typeof a)try{a=JSON.parse(a)}catch(b){c.errorObject=b}return{data:c(a,a&&a.graph?"graph":a&&a.map?"map":"chart",void 0,{}),error:c.errorObject}}}();e.addDataHandler("JSON",{encode:a,decode:d,passthrough:function(a,c){var d={data:{}};
+if(!a)return d;if("string"!==typeof a)try{a=JSON.stringify(a)}catch(b){return d.error=b,d}try{c&&c.isHighPerformingChart?(d.data=JSON.parse(a),t(d.data)):d.data=JSON.parse(a.replace(/"([^"]+)"[\s]*:/g,function(a,c){return'"'+c.toLowerCase()+'":'}))}catch(b){console.log(b),d.error=b}return d},transportable:!0})}]);FusionCharts.register("module",["private","modules.data.xml",function(){var e=function(e){return{data:e,error:void 0}};this.addDataHandler("XML",{encode:e,decode:e,transportable:!0})}]);
+FusionCharts.register("module",["private","modules.data.csv",function(){var e=this,q=e.window,F=e.core,u=q.parseInt,d=q.parseFloat,a=function(a){return a},t;t=function(a){this.data=[];this.columnCount=this.rowCount=0;this.configure(a)};t.decodeLiterals=function(a,c){return void 0!==a&&null!==a&&a.toString?a.replace("{tab}","\t").replace("{quot}",'"').replace("{apos}","'"):c};t.prototype.set=function(a,c,d){var b;if(this.rowCount<=a){for(b=this.rowCount;b<=a;b+=1)this.data[b]=[];this.rowCount=a+1}this.columnCount<=
+c&&(this.columnCount=c+1);this.data[a][c]=d};t.prototype.setRow=function(a,c){var d;if(this.rowCount<=a){for(d=this.rowCount;d<=a;d+=1)this.data[d]=[];this.rowCount=a+1}this.columnCount<c.length&&(this.columnCount=c.length);this.data[a]=c};t.prototype.get=function(a,c){var d=this.data;return d[a]&&d[a][c]};t.prototype.configure=function(a){var c=t.decodeLiterals;this.delimiter=c(a.delimiter,",");this.qualifier=c(a.qualifier,'"');this.eolCharacter=c(a.eolCharacter,"\r\n");this.numberFormatted=!!u(a.numberFormatted,
+0)};t.prototype.clear=function(){this.data=[];this.columnCount=this.rowCount=0};t.prototype.toString=function(){var a,c,d="";for(a=0;a<this.rowCount;a+=1)c=this.qualifier+this.data[a].join(this.qualifier+this.delimiter+this.qualifier)+this.qualifier,d+='""'===c?this.eolCharacter:c+this.eolCharacter;0<this.rowCount&&(d=d.slice(0,d.length-2));return d};e.addDataHandler("CSV",{encode:function(a,c){e.raiseError(c,"0604111215","run","::CSVDataHandler.encode()","FusionCharts CSV data-handler only supports encoding of data.");
+throw Error("FeatureNotSupportedException()");},decode:function(e,c){var l=F.transcodeData(e,"xml","json")||{},b=c.jsVars,r,u,p,g,k,m,J,q=l.chart||l.map||l.graph||{};J=Boolean(q.exporterrorcolumns||0);var S=l.categories&&l.categories[0]&&l.categories[0].category||[],v=l.map&&!l.chart||b&&b.instanceAPI&&"geo"===b.instanceAPI.defaultSeriesType,aa=!1,L=!1,fa=!1,G=!1;u=!1;var H=a,D={},R,W,O,ha,ka,ga,ba,ja,ma,da,na;k=0;r=new t({separator:q.exportdataseparator,qualifier:q.exportdataqualifier,numberFormatted:q.exportdataformattedval});
+F.formatNumber&&r.numberFormatted&&(H=function(a){return F.formatNumber(a,q)});if(v)for(da in D.geo=!0,S=b.hcObj&&b.hcObj.entities&&b.hcObj.entities.items||[],r.setRow(0,["Id"," Short Name","Long Name","Value","Formatted Value"]),b=0,S)L=S[da],na=L.eJSON,u=L.value,r.setRow(++b,[da,na.shortLabel,na.label,void 0===u?"":u,L.formattedValue]);else if(void 0!==(R=l.dials&&l.dials.dial||l.pointers&&l.pointers.pointer||l.value))if(D.gauge=!0,"string"===typeof R)r.set(0,0,H(R)),D.singlevalue=!0,"string"===
+typeof l.target&&(r.set(0,1,H(l.target)),D.bullet=!0);else for(r.setRow(0,["Id","Value"]),D.multivalue=!0,b=0,m=1,k=R.length;b<k;b+=1,m+=1)r.setRow(m,[m,H(R[b].value)]);else if(R=l.dataset||!(l.data instanceof Array)&&[]){D.multiseries=!0;p=1;if(W=l.lineset)R=R.concat(W),D.lineset=!0;if(O=l.axis)R=R.concat(O),D.multiaxis=!0;ga=R.length;ka=S.length;if(!(ga=R.length)){for(b=0;b<ka;b+=1)ba=S[b],r.set(b+1,0,ba.label||ba.name);D.multilevel=!0}for(b=0;b<ga;b+=1)for(ja=R,ja[b].dataset?(ja=ja[b].dataset,
+g=0,ha=ja.length):(ja=R,g=b,ha=g+1);g<ha&&!aa&&!fa;g+=1,p+=1){v=ja[g];r.set(0,p,v.seriesname);"string"===typeof v.data&&(D.compactdata=!0,v.data=v.data.split(q.dataseparator||"|"));m=k=0;for(ma=v.data&&v.data.length||0;k<ma||k<ka;k+=1){ba=S[k];u=m+1;da=v.data&&v.data[m]||{};if(void 0!==da.x&&void 0!==da.y){aa=D.xy=!0;break}if(void 0!==da.open||void 0!==da.high||void 0!==da.close||void 0!==da.low){G=D.ohlc=!0;break}if(void 0!==da.rowid&&void 0!==da.columnid){fa=D.heatmap=!0;break}if(k<ka&&!ba.vline){r.set(u,
+0,ba.label||ba.name);ba=d(da?da.value:"");ba=isNaN(ba)?"":H(ba);r.set(u,p,ba);if(L||J||da.errorvalue)L||r.set(0,p+1,"Error"),na=1,r.set(u,p+1,H(da.errorvalue));m+=1}}na&&(p+=na,na=0)}W&&(R=R.slice(0,-W.length));O&&(R=R.slice(0,-O.length))}else if(R=l.data){r.set(0,1,q.yaxisname||"Value");D.singleseries=!0;u="1"==q.showsumatend;b=0;for(ka=R.length;b<ka;b+=1)da=R[b],da.vline||(ba=d(da.value?da.value:""),r.setRow(b+1,[da.label||da.name,isNaN(ba)?"":(k+=ba,H(ba))]));u&&(D.summation=!0,r.setRow(b+1,[q.sumlabel||
+"Total",H(k)]))}if(G)for(r.clear(),r.setRow(0,["Open","Close","High","Low"]),b=0,u=1,R=l.dataset,ha=R.length;b<ha;b+=1)for(k=0,v=R[b]&&R[b].data||[],ga=v.length;k<ga;k+=1,u+=1)da=v[k]||{},r.setRow(k+1,[H(da.open),H(da.close),H(da.high),H(da.low)]);else if(aa)for(r.clear(),L=!1,na=0,r.setRow(0,["Series","x","y"]),b=0,u=1,R=l.dataset,ha=R.length;b<ha;b+=1)for(k=0,v=R[b]&&R[b].data||[],ga=v.length;k<ga;k+=1,u+=1){da=v[k]||{};ba=[R[b].seriesname,H(da.x),H(da.y)];void 0!==da.z&&(ba.push(H(da.z)),na||(r.set(0,
+3,"z"),na=1));if(L||J||void 0!==da.errorvalue||void 0!==da.horizontalerrorvalue||void 0!==da.verticalerrorvalue)l=H(da.errorvalue),ba.push(da.errorvalue,void 0===da.horizontalerrorvalue?l:H(da.horizontalerrorvalue),void 0===da.verticalerrorvalue?l:H(da.verticalerrorvalue)),L||(r.set(0,na+3,"Error"),r.set(0,na+4,"Horizontal Error"),r.set(0,na+5,"Vertical Error")),L=D.error=!0;r.setRow(u,ba)}else if(fa){r.clear();aa={};fa={};b=0;k=1;S=l.rows&&l.rows.row||[];for(J=S.length;b<J;b+=1,k+=1)ba=S[b],ba.id&&
+(aa[ba.id.toLowerCase()]=k,r.set(k,0,ba.label||ba.id));b=0;k=1;S=l.columns&&l.columns.column||[];for(J=S.length;b<J;b+=1,k+=1)ba=S[b],ba.id&&(fa[ba.id.toLowerCase()]=k,r.set(0,k,ba.label||ba.id));v=l.dataset&&l.dataset[0]&&l.dataset[0].data||[];b=0;for(J=v.length;b<J;b+=1)da=v[b],u=da.rowid.toLowerCase(),p=da.columnid.toLowerCase(),aa[u]||(aa[u]=r.rowCount,r.set(r.rowCount,0,da.rowid)),fa[p]||(fa[p]=r.columnCount,r.set(0,r.columnCount,da.columnid)),r.set(aa[u],fa[p],H(da.value))}R=S=W=O=null;0<r.rowCount&&
+void 0===r.get(0,0)&&r.set(0,0,q.xaxisname||"Label");return{data:r.toString(),error:void 0,predictedFormat:D}},transportable:!1});F.addEventListener("Loaded",function(a){a=a.sender;"javascript"!==a.options.renderer||a.getDataAsCSV||(a.getDataAsCSV=a.ref.getDataAsCSV=a.getCSVData)})}]);
+FusionCharts.register("module",["private","modules.renderer.js",function(){var e=this,q=e.window,F=q.document,u=e.core.options,d=/msie/i.test(q.navigator.userAgent)&&!q.opera,a=Boolean(q.SVGAngle||F.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),t=function(){},E=e.hcLib={cmdQueue:[]},c=E.moduleCmdQueue={base:[],charts:[],powercharts:[],widgets:[],maps:[]},l=E.moduleDependencies={},b=E.moduleMeta={base:"fusioncharts.js",charts:"fusioncharts.charts.js",powercharts:"fusioncharts.powercharts.js",
+widgets:"fusioncharts.widgets.js",maps:"fusioncharts.maps.js"},r={},V=E.getMetaSentence=function(){var a={};return function(b){b=b&&b.replace(/(^\s*)|(\s*$)/g,"")||"";return a[b]||(a[b]={key:b,subject:b.replace(/[^\/]*?$/ig,""),predicate:b.replace(/^.*\//ig,"")})}}(),p=E.getDependentModuleName=function(a){var b=[],c,d;a=V(a).predicate;for(c in l)void 0!==(d=l[c][a])&&(b[d]=c);return b},g=E.hasModule=function(a){var b,c;if(a instanceof Array){b=0;for(c=a.length;b<c;b+=1)if(!Boolean(e.modules["modules.renderer.js-"+
+V(a[b]).predicate]))return!1;return!0}return Boolean(e.modules["modules.renderer.js-"+V(a).predicate])},k=E.loadModule=function(a,c,d,k){a instanceof Array||(a=[a]);var m=a.length,l=0,D;D=function(){if(l>=m)c&&c();else{var t=a[l],p=t&&t.match(/[^\/]*$/i)[0],O=b[t];l+=1;if(t){if(g(p)){D();return}if(r[p]){e.raiseError(k||e.core,"1112201445A","run","JavaScriptRenderer~loadModule() ","required resources are absent or blocked from loading.");d&&d(p);return}}else d&&d(p);t=e.core.options["html5"+e.capitalizeString(p)+
+"Src"];e.loadScript(void 0===t?O:t,{success:function(){g(p)?D():d&&d(p)},failure:d&&function(){d(p)}},void 0,!0)}};D()},m=E.executeWaitingCommands=function(a){for(var b;b=a.shift();)"object"===typeof b&&t[b.cmd].apply(b.obj,b.args)},J=function(a){delete a.sender.jsVars._reflowData;a.sender.jsVars._reflowData={};delete a.sender.jsVars._reflowClean},T=function(){var a=function(){};a.prototype={LoadDataErrorText:"Error in loading data.",XMLLoadingText:"Retrieving data. Please wait",InvalidXMLText:"Invalid data.",
+ChartNoDataText:"No data to display.",ReadingDataText:"Reading data. Please wait",ChartNotSupported:"Chart type not supported.",PBarLoadingText:"",LoadingText:"Loading chart. Please wait",RenderChartErrorText:"Unable to render chart."};return a.prototype.constructor=a}(),S=E.getContainerBackgroundColor=function(b){var c=b.options.containerBackgroundColor,g=b.options.containerBackgroundOpacity,k=b.jsVars.transparent;void 0!==k&&null!==k?g=b.jsVars.transparent?0:1:(g=parseFloat(g),0>g?g=0:1<g&&(g=1));
+c||(c="#ffffff");if(d&&!a)return g?c:"transparent";c=c.replace(/^#?([a-f0-9]+)/ig,"$1");c=E.graphics.HEXtoRGB(c);c[3]=g.toString();return"rgba("+c.join(",")+")"};E.injectModuleDependency=function(a,b,d){var g=!1,k=V(a).subject;a=V(a).predicate;b=void 0===b?a:V(b).predicate;l[a]||(l[a]={},c[a]||(c[a]=[],E.moduleMeta[a]=k+u.html5ScriptNamePrefix+(b&&b.replace&&b.replace(/^[\s\S]*\//ig,"").replace(/\?/g,"%3F").replace(/\#/g,"%23").replace(/\:/g,"%3A")||"")+u.html5ScriptNameSuffix),g=!0);l[a][b]=d||0;
+return g};E.needsModule=function(a,b){a=V(a).predicate;b=V(b).predicate;return void 0!==(E.moduleDependencies[a]&&E.moduleDependencies[a][b])};E.cleanupWaitingCommands=function(a){for(var b=a.chartType(),b=p(b),d,g=[],k;d=b.shift();){for(d=c[d]||[];k=d.shift();)"object"===typeof k&&k.obj!==a&&g.push(k);d.concat(g);g=[]}};e.extend(e.core.options,{html5ScriptNameSuffix:".js",html5ScriptNamePrefix:"fusioncharts."});e.extend(t,{dataFormat:"json",ready:!1,policies:{jsVars:{},options:{showChartLoadingMessage:["showChartLoadingMessage",
+!0]}},init:function(){g("base")?t.ready=!0:k("base",function(){t.ready=!0;m(E.cmdQueue)},void 0,e.core)},render:function(a){var b=a,c=this.jsVars.msgStore;b&&this.options.showChartLoadingMessage&&(b.innerHTML='<small style="display: inline-block; *zoom:1; *display:inline; width: 100%; font-family: Verdana,sans; font-size: 10px; color: #666666; text-align: center; padding-top: '+(parseInt(b.style.height,10)/2-5)+'px">'+(c.PBarLoadingText||c.LoadingText)+"</small>",b.style.backgroundColor=S(this));
+E.cmdQueue.push({cmd:"render",obj:this,args:arguments})},update:function(){E.cmdQueue.push({cmd:"update",obj:this,args:arguments})},resize:function(){E.cmdQueue.push({cmd:"resize",obj:this,args:arguments})},dispose:function(){var a=E.cmdQueue,b,c;b=0;for(c=a.length;b<c;b+=1)a[b].obj===this&&(a.splice(b,1),--c,--b)},load:function(){E.cmdQueue.push({cmd:"load",obj:this,args:arguments})},config:function(a,b){var c,d=this.jsVars,g=d.msgStore,d=d.cfgStore,k=this.options,m;m={LoadingText:"loadMessage",
+ChartNotSupported:"typeNotSupportedMessage",RenderChartErrorText:"renderErrorMessage",XMLLoadingText:"dataLoadStartMessage",ChartNoDataText:"dataEmptyMessage",LoadDataErrorText:"dataLoadErrorMessage",InvalidXMLText:"dataInvalidMessage"};"string"===typeof a&&1<arguments.length&&(c=a,a={},a[c]=b);for(c in a)void 0!==g[c]?g[c]=a[c]:d[c.toLowerCase()]=a[c],m[c]?k[m[c]]=a[c]:k[c]=a[c]},protectedMethods:{},events:{beforeInitialize:function(a){var b=a.sender;a=b.jsVars;var c;a.fcObj=b;a.msgStore=a.msgStore||
+new T;a.cfgStore=a.cfgStore||{};a.previousDrawCount=-1;a.drawCount=0;a._reflowData={};b.addEventListener("beforeRender",function(a){a.sender.jsVars.smartLabel=new E.SmartLabelManager(b.id,F.body||F.getElementsByTagName("body")[0]);a.detachHandler()});a.userModules instanceof Array||(c=a.userModules,a.userModules=[],"string"===typeof c&&(a.userModules=a.userModules.concat(c.split(","))));E.chartAPI&&E.chartAPI[void 0]||(a.needsLoaderCall=!0)},initialized:function(a){a=a.sender;var b=a.jsVars;b.needsLoaderCall&&
+(delete b.needsLoaderCall,t.load.call(a))},beforeDataUpdate:J,beforeDispose:function(a){var b=a.sender.jsVars;b.smartLabel&&!b.smartLabel.disposed&&b.smartLabel.dispose();J.apply(this,arguments)},beforeRender:function(a){var b=a.sender.jsVars;delete b.drLoadAttempted;delete b.waitingModule;delete b.waitingModuleError;J.apply(this,arguments)},dataLoadRequested:function(a){a=a.sender;var b=a.jsVars;delete b.loadError;a.ref&&a.options.showDataLoadingMessage?b.hcObj&&!b.hasNativeMessage&&b.hcObj.showLoading?
+b.hcObj.showMessage(b.msgStore.XMLLoadingText):a.ref.showChartMessage?a.ref.showChartMessage("XMLLoadingText"):b.stallLoad=!0:b.stallLoad=!0},dataLoadRequestCompleted:function(a){delete a.sender.jsVars.stallLoad},dataLoadError:function(a){var b=a.sender,c=b.jsVars;delete c.stallLoad;c.loadError=!0;b.ref&&"function"===typeof b.ref.showChartMessage&&b.ref.showChartMessage("LoadDataErrorText");b.__state.dataFetchDuringConstruction&&delete b.__state.dataFetchDuringConstruction;J.apply(this,arguments)}},
+_call:function(a,b,c){a.apply(c||q,b||[])}});e.extend(t.prototype,{getSWFHTML:function(){e.raiseWarning(this,"11090611381","run","JavaScriptRenderer~getSWFHTML()","getSWFHTML() is not supported for JavaScript charts.")},addVariable:function(){e.raiseWarning(this,"11090611381","run","JavaScriptRenderer~addVariable()",'Use of deprecated "addVariable()". Replace with "configure()".');e.core.prototype.configure.apply(this,arguments)},getXML:function(){e.raiseWarning(this,"11171116291","run","JavaScriptRenderer~getXML()",
+'Use of deprecated "getXML()". Replace with "getXMLData()".');return this.getXMLData.apply(this,arguments)},setDataXML:function(){e.raiseWarning(this,"11171116292","run","JavaScriptRenderer~setDataXML()",'Use of deprecated "setDataXML()". Replace with "setXMLData()".');return this.setXMLData.apply(this,arguments)},setDataURL:function(){e.raiseWarning(this,"11171116293","run","JavaScriptRenderer~setDataURL()",'Use of deprecated "SetDataURL()". Replace with "setXMLUrl()".');return this.setXMLUrl.apply(this,
+arguments)},hasRendered:function(){return!(!this.jsVars.hcObj||!this.jsVars.hcObj.hasRendered)},setTransparent:function(a){var b;if(b=this.jsVars)"boolean"!==typeof a&&null!==a&&(a=!0),b.transparent=null===a?!1:!0===a?!0:!1}});e.extend(e.core,{_fallbackJSChartWhenNoFlash:function(){q.swfobject.hasFlashPlayerVersion(e.core.options.requiredFlashPlayerVersion)||e.renderer.setDefault("javascript")},_enableJSChartsForSelectedBrowsers:function(a){void 0!==a&&null!==a&&e.renderer.setDefault((new RegExp(a)).test(q.navigator.userAgent)?
+"javascript":"flash")},_doNotLoadExternalScript:function(a){var c,d;for(c in a)d=c.toLowerCase(),b[d]&&(r[d]=Boolean(a[c]))},_preloadJSChartModule:function(){throw"NotImplemented()";}});e.renderer.register("javascript",t);a||d?e.renderer.setDefault("javascript"):q.swfobject&&q.swfobject.hasFlashPlayerVersion&&!q.swfobject.hasFlashPlayerVersion(e.core.options.requiredFlashPlayerVersion)&&(e.raiseWarning(e.core,"1204111846","run","JSRenderer","Switched to JavaScript as default rendering due to absence of required Flash Player."),
+e.renderer.setDefault("javascript"))}]);
+FusionCharts.register("module",["private","modules.renderer.js-lib",function(){var e=this,q=e.window,F=q.document,u=q.navigator,d=Boolean(q.SVGAngle||F.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")),a=/msie/i.test(u.userAgent)&&!q.opera,t=q.parseFloat,E=/\s+/g,c=/^#?/,l=/^rgba/i,b=/[#\s]/ig,r=/\{br\}/ig,V=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,p=Math.abs,g=Math.pow,k=Math.round,m=g(2,-24),J=Object.prototype.toString,T="ontouchstart"in F,u=T&&!(u.maxTouchPoints||
+u.msMaxTouchPoints),S="http://www.fusioncharts.com?BS=FCHSEvalMark&utm_source=FCS_trial&pver="+q.escape(e.core.version),v=!/fusioncharts\.com$/i.test(q.location.hostname),aa=Math,L=aa.max,fa=aa.min,G=q.Image,H={pageX:0,pageY:0},D="createTouch"in F,R=D&&!(q.navigator.maxTouchPoints||q.navigator.msMaxTouchPoints),W=e.hcLib||(e.hcLib={}),O=function(a){var b=a.data,f=b.chart,c=f.paper,n=a.state,d=ca(A(a.originalEvent)),B=d.target||d.originalTarget||d.srcElement||d.relatedTarget||d.fromElement,w=f.elements.resizeBox,
+g=b.layerX=d.pageX-b.chartPosLeft,I=b.layerY=d.pageY-b.chartPosTop,k=g-b.ox,m=I-b.oy,e=b.bBox,v=b.ox,l=b.oy,D=b.zoomX,r=b.zoomY,e=b.canvasY,O=b.canvasX,t=b.canvasW,J=b.canvasH,z=b.canvasX2,C=b.canvasY2,P=b.strokeWidth,k=b.attr;switch(n){case "start":a=ka(this);b.chartPosLeft=a.left;b.chartPosTop=a.top;g=d.pageX-b.chartPosLeft;I=d.pageY-b.chartPosTop;b.oy=I;b.ox=g;b.allowMove=!1;w||(w=f.elements.resizeBox=c.rect(f.layers.tracker).attr(k));g>O&&g<z&&I>e&&I<C&&(b.allowMove=!0);B&&B.ishot&&(b.allowMove=
+!1);w.attr({x:0,y:0,width:0,height:0}).show();break;case "end":e=w.getBBox();f={chart:f,selectionLeft:e.x,selectionTop:e.y,selectionHeight:e.height,selectionWidth:e.width,originalEvent:a.originalEvent};b.isDragged&&(b.selectionEnd&&b.selectionEnd(f),b.isDragged=0);w.hide();delete b.oy;delete b.ox;break;default:if(!b.allowMove)break;k=g-b.ox;m=I-b.oy;v=b.ox;l=b.oy;b.isDragged||(f={chart:f,selectionLeft:(D?fa(v,v+k):O)+.5*P,selectionTop:(r?fa(l,l+m):e)+.5*P,selectionHeight:0,selectionWidth:0,originalEvent:a.originalEvent},
+b.selectionStart&&b.selectionStart(f),b.isDragged=1);k=-(v-fa(v-(v-L(v+k,O)),z));m=-(l-fa(l-(l-L(l+m,e)),C));w.attr({x:(D?fa(v,v+k):O)+.5*P,y:(r?fa(l,l+m):e)+.5*P,width:D?p(k):t,height:r?p(m):J})}},ha=function(a){var b=a.data;a=a.originalEvent;var f=a.target||a.originalTarget||a.srcElement||a.relatedTarget||a.fromElement,c=a.type,n=a.layerX,d=a.layerY;void 0===n&&(n=a.pageX-b.chartPosLeft,d=a.pageY-b.chartPosTop);"mousedown"===c&&(f.ishot=n>b.canvasX&&n<b.canvasX2&&d>b.canvasY&&d<b.canvasY2);"mouseup"===
+c&&setTimeout(function(){f.ishot=!1},1)},aa=function(){var a="innerWidth",b="innerHeight",f=F.documentElement||F.body,c=f;"innerWidth"in q?c=q:(a="clientWidth",b="clientHeight");return function(){return{width:c[a],height:c[b],scrollTop:f.scrollTop,scrollLeft:f.scrollLeft}}}(),ka=function(a,b){var f={left:a.offsetLeft||0,top:a.offsetTop||0};for(a=a.offsetParent;a;)f.left+=a.offsetLeft||0,f.top+=a.offsetTop||0,a===F.body||a===F.documentElement||b||(f.left-=a.scrollLeft,f.top-=a.scrollTop),a=a.offsetParent;
+return f},ga=function(a){return a&&a.replace(/\$/g,"$$$$")},ba=function(a,b){return a||!1===a||0===a?a:b},ja=function(){var a,b,f;b=0;for(f=arguments.length;b<f;b+=1)if((a=arguments[b])||!1===a||0===a)return a;return""},ma=function(){var a,b,f;b=0;for(f=arguments.length;b<f;b+=1)if((a=arguments[b])||!1===a||0===a)return a},da=function(a,b,f,c){return W.dem.listen(a,b,f,c)},na=function(a,b,f){return W.dem.unlisten(a,b,f)},A=function(a){a=a.sourceEvent||a.originalEvent||a;return T&&a&&a.touches&&a.touches[0]||
+a||H},ca=function(){var a;return function(b){void 0===b.pageX&&(b.pageX=b.clientX+(a||(a=q.document.body||q.document.documentElement)).scrollLeft,b.pageY=b.clientY+a.scrollTop);return b}}(),Ia=function(a,b){b=ca(A(b));var f=b.pageX,c=b.pageY,n=ka(a);return{chartX:f-n.left,chartY:c-n.top,pageX:f,pageY:c}},Ba=function(a,b,f){a=F.createElement(a);for(var c in b)a.setAttribute(c,b[c]);f&&f.appendChild&&f.appendChild(a);return a},va=function(a){return a&&a.replace(/^#?([a-f0-9]+)/ig,"#$1")||"none"},Y=
+function(){var a,b,f;b=0;for(f=arguments.length;b<f;b+=1)if(((a=arguments[b])||!1===a||0===a)&&!isNaN(a=Number(a)))return a},Da=function(a,b){a=a||!1===a||0===a?Number(a):NaN;return isNaN(a)?null:b?p(a):a},sa=function(a){return"string"===typeof a?a.replace(r,"<br />"):""},wa=function(a,b){for(var f=b.length,c=-1;f--;)if(a===b[f]){c=f;break}return c},ob=function(){if(Array.isArray)return Array.isArray;var a=Object.prototype.toString,b=a.call([]);return function(f){return a.call(f)===b}}(),ia=function(a,
+b,f,c,n){var d,B,w,g;n?(c.push(a),n.push(b)):(c=[a],n=[b]);if(b instanceof Array)for(d=0;d<b.length;d+=1){try{B=a[d],w=b[d]}catch(A){continue}if("object"!==typeof w)f&&void 0===w||(a[d]=w);else{if(null===B||"object"!==typeof B)B=a[d]=w instanceof Array?[]:{};g=wa(w,n);-1!==g?B=a[d]=c[g]:ia(B,w,f,c,n)}}else for(d in b){try{B=a[d],w=b[d]}catch(A){continue}if(null!==w&&"object"===typeof w)if(g=J.call(w),"[object Object]"===g){if(null===B||"object"!==typeof B)B=a[d]={};g=wa(w,n);-1!==g?B=a[d]=c[g]:ia(B,
+w,f,c,n)}else"[object Array]"===g?(null!==B&&B instanceof Array||(B=a[d]=[]),g=wa(w,n),-1!==g?B=a[d]=c[g]:ia(B,w,f,c,n)):a[d]=w;else a[d]=w}return a},bb=function(a,b,f){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||null===b)return a;"object"!==typeof a&&(a=b instanceof Array?[]:{});ia(a,b,f);return a},ua=function(a,b){var f;if(b instanceof Array)for(f=b.length-1;0<=f;--f)"object"!==typeof b[f]?!0===b[f]&&a&&a.splice&&a.splice(f,1):J.call(b[f])===J.call(a[f])&&ua(a[f],
+b[f]);else for(f in b)"object"!==typeof b[f]?!0===b[f]&&a&&a.splice&&a.splice(f,1):J.call(b[f])===J.call(a[f])&&ua(a[f],b[f]);return a},la=function(){var a=/^@window_/g;return function(b,f){var c=b.replace(/\[[\'\"]/g,".").replace(/[\'\"]\]/g,"").replace(/\[/g,".@window_").replace(/\]/g,"").split("."),n=q,d,B;B="";var w,g,A;g=c.length;for(A=0;A<g;A+=1){w=c[A];d=n;if(w.match(a))B=q[w.replace(a,"")],n=n[B];else{if(void 0===n||null===n)throw(B||w).replace(a,"")+" is not defined";n=n[w]}B=w}!n||"function"!==
+typeof n.call&&n!==q.alert?setTimeout(function(){throw w.replace(a,"")+"() is not a function";},0):n===q.alert?n(f):n.call(d,f)}}(),pb=function(){var a="FusionChartslinkEval"+parseInt(+new Date,10);return function(b){try{q[a]=new Function(b),eval('window["'+a+'"]();')}catch(f){setTimeout(function(){throw f;},0)}d?delete q[a]:q[a]=null}}(),nb=function(a,b){a=Number(a);a=isNaN(a)?100:a;void 0!==b&&(a=a*b/100);return a%101},qb=function(a,b,f){a=a.split(",");var c;void 0!==f&&(f=Y(f.split(",")[0]));a[0]=
+nb(a[0],f);for(c=1;c<b;c+=1)a[c]=a[0]*nb(a[c],f)/100;return a.join(",")},Ga=function(a,f,c){var n=0,d=0,B=0;c&&c.match(l)&&(c=c.split(","),n=c[0].slice(c[0].indexOf("(")+1),d=c[1],B=c[2],f||0===f||(f=parseInt(100*c[3].slice(0,c[3].indexOf(")")),10)));if(a)if(a.match(l))c=a.split(","),n=c[0].slice(c[0].indexOf("(")+1),d=c[1],B=c[2];else{a=a.replace(b,"").split(",")[0];switch(a.length){case 3:a=a.charAt(0)+a.charAt(0)+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2);break;case 6:break;default:a=(a+"FFFFFF").slice(0,
+6)}n=parseInt(a.slice(0,2),16);d=parseInt(a.slice(2,4),16);B=parseInt(a.slice(4,6),16)}f||0===f||(f=100);"string"===typeof f&&(f=f.split(",")[0]);f=parseInt(f,10)/100;return"rgba("+n+","+d+","+B+","+f+")"},fb=function(){var a={};return function(b){var f=(b=b||this)&&b.FCcolor||b,c=f.color,n=f.ratio,d=f.angle,B=f.alpha,w=f.r,g=f.cx,A=f.cy,I=f.fx,k=f.fy,m=f.gradientUnits,e=f.x1,v=f.y1,l=f.x2,ca=f.y2,D=1,r,O,z,C;if("string"===typeof b)return a[C="~"+b]||(a[C]=b.replace(/^#?([a-f0-9]{3,6})/ig,"#$1"));
+c=c||"";if(!c)return r;C=[c,B,n,d,w,g,A,m,I,k,e,l,v,ca].join("_").replace(/[\(\)\s,\xb0#]/g,"_");if(a[C])return a[C];n=n&&(n+"").split(",")||[];B=(B||0===B)&&(B+"").split(",")||[];if(c=c.split(","))if(r="",1===c.length)z=c[0].replace(/^#?([a-f0-9]{3,6})/ig,"$1"),r=B.length?"rgba("+Cb(z).join(",")+","+.01*t(B[0])+")":z.replace(/^#?([a-f0-9]{3,6})/ig,"#$1");else{b=0;for(O=c.length;b<O;b++)z=c[b].replace(/^#?([a-f0-9]{3,6})/ig,"$1"),isNaN(n[b])||(n[b]=t(n[b]),z+=":"+n[b],isNaN(n[b+1])||(n[b+1]=t(n[b+
+1])+n[b])),isNaN(B[b])||""===B[b]||(D=.01*B[b]),c[b]="rgba("+Cb(z).join(",")+","+D+")",isNaN(n[b])||(c[b]=c[b]+":"+n[b]);r+=c.join("-");if(void 0!==w||void 0!==I||void 0!==g||f.radialGradient)r="xr("+[I,k,w,g,A,m].join()+")"+r;else{r="-"+r;if(void 0!==e||void 0!==v||void 0!==l||void 0!==ca)r="("+[e,v,l,ca,m].join()+")"+r;void 0===d&&(d=0);r=360-t(d)%360+r}}return a[C]=r}}(),Ca=function(){return function(){return""}}(),mb=function(a){return a.replace(b,"").replace(c,"#")},jb=function(a,f){f=(0>f||
+100<f?100:f)/100;a=a.replace(b,"");var c=parseInt(a,16),n=Math.floor(c/65536),d=Math.floor((c-65536*n)/256);return("000000"+(n*f<<16|d*f<<8|(c-65536*n-256*d)*f).toString(16)).slice(-6)},oa=function(a,f){f=(0>f||100<f?100:f)/100;a=a.replace(b,"");var c=parseInt(a,16),n=Math.floor(c/65536),d=Math.floor((c-65536*n)/256);return("000000"+(256-(256-n)*f<<16|256-(256-d)*f<<8|256-(256-(c-65536*n-256*d))*f).toString(16)).slice(-6)},Cb=function(a){a=parseInt(a,16);var b=Math.floor(a/65536),f=Math.floor((a-
+65536*b)/256);return[b,f,Math.floor(a-65536*b-256*f)]},Oa=function(a,b){if("object"!==typeof a)return"";if(a.fontSize||a["font-size"])!a.fontSize&&a["font-size"]&&(a.fontSize=a["font-size"],delete a["font-size"]),a.lineHeight=(parseFloat(a.fontSize)||b||10)*W.lineHeightFactor+"px",delete a["line-height"];!a.lineHeight&&a["line-height"]&&(a.lineHeight=a["line-height"],delete a["line-height"]);return a.lineHeight},zb=function(a,b,f,c,n){var d=ja(a.labelbordercolor,b.bordercolor,f.labelbordercolor,""),
+B=ma(a.labelbgcolor,b.bgcolor,f.labelbgcolor),w=Y(a.labelborderthickness,b.borderthickness,f.labelborderthickness,1);n=Y(f.usedataplotcolorforlabels,0)?n||c.color:c.color;d=d?Ga(d,Y(a.labelborderalpha,b.borderalpha,f.labelborderalpha,a.labelalpha,b.alpha,f.labelalpha,100)):"";a={fontFamily:ma(a.labelfont,b.font,f.labelfont,c.fontFamily),fontSize:ma(a.labelfontsize,b.fontsize,f.labelfontsize,parseInt(c.fontSize,10))+"px",color:Ga(ma(a.labelfontcolor,b.fontcolor,f.labelfontcolor,n),Y(a.labelfontalpha,
+b.fontalpha,f.labelfontalpha,a.labelalpha,b.alpha,f.labelalpha,100)),fontWeight:Y(a.labelfontbold,b.fontbold,f.labelfontbold)?"bold":"normal",fontStyle:Y(a.labelfontitalic,b.fontitalic,f.labelfontitalic)?"italic":"normal",border:d||B?w+"px solid":"",borderColor:d,borderThickness:w,borderPadding:Y(a.labelborderpadding,b.borderpadding,f.labelborderpadding,2),borderRadius:Y(a.labelborderradius,b.borderradius,f.labelborderradius,0),backgroundColor:B?Ga(B,Y(a.labelbgalpha,b.bgalpha,f.labelbgalpha,a.labelalpha,
+b.alpha,f.labelalpha,100)):"",borderDash:Y(a.labelborderdashed,b.borderdashed,f.labelborderdashed,0)?Eb(Y(a.labelborderdashlen,b.borderdashlen,f.labelborderdashlen,4),Y(a.labelborderdashgap,b.borderdashgap,f.labelborderdashgap,2),w):"none"};a.lineHeight=Oa(a);return a},jc=function(){var a={top:{align:"center",verticalAlign:"top",textAlign:"center"},right:{align:"right",verticalAlign:"middle",textAlign:"left"},bottom:{align:"center",verticalAlign:"bottom",textAlign:"center"},left:{align:"left",verticalAlign:"middle",
+textAlign:"right"}},b=/([^\,^\s]+)\)$/g,f=function(a,b){var f;/^(bar|bar3d)$/.test(a)&&(this.isBar=!0,this.yPos="bottom",this.yOppPos="top",this.xPos="left",this.xOppPos="right");f=parseInt(b.labelstep,10);this.labelStep=1<f?f:1;this.showLabel=Y(b.showlabels,b.shownames,1);this.is3D=/3d$/.test(a)};f.prototype={isBar:!1,yPos:"left",yOppPos:"right",xPos:"bottom",xOppPos:"top",addAxisGridLine:function(f,c,n,d,B,w,g,A){var I=""===n?!1:!0,k=0<d||0<w.match(b)[1]?!0:!1,m;if(I||k)k||(w="rgba(0,0,0,0)",d=
+.1),m={isGrid:!0,width:d,dashStyle:B,color:w,value:c,zIndex:void 0===g?2:g},I&&(c=f.opposite?A?this.xOppPos:this.yOppPos:A?this.xPos:this.yPos,c=a[c],m.label={text:n,style:f.labels.style,textAlign:c.textAlign,align:c.align,verticalAlign:c.verticalAlign,rotation:0,x:0,y:0}),f.plotLines.push(m);return m},addAxisAltGrid:function(a,b){if(!this.is3D){var f=Y(a._lastValue,a.min),c=ma(a._altGrid,!1);c&&a.plotBands.push({isGrid:!0,color:a.alternateGridColor,to:b,from:f,zIndex:1});a._lastValue=b;a._altGrid=
+!c}},addXaxisCat:function(b,f,c,n,d,B,w,g){var A=a[b.opposite?this.xOppPos:this.xPos];f={isGrid:!0,isDataLabel:!0,width:.1,color:"rgba(0,0,0,0)",value:f,label:{text:n,link:ma(d.labellink,B.link,w.labellink),style:zb(d,B,w,b.labels.style,g),textAlign:A.textAlign,align:A.align,verticalAlign:A.verticalAlign,rotation:0,x:0,y:0}};0!==c%this.labelStep&&(f.stepped=!0,f.label.style=b.steppedLabels.style);b.plotLines.push(f)},addVline:function(a,b,f,c){c=c._FCconf;var n=c.isBar,K=c.divlineStyle,d=sa(b.label),
+B=Boolean(Y(b.showlabelborder,c.showVLineLabelBorder,1)),w=Boolean(Y(b.showlabelbackground,1)),g=ma(b.labelhalign,n?"left":"center"),A=ma(b.labelvalign,n?"middle":"bottom").toLowerCase(),X=Y(b.labelposition,0),I=Y(b.lineposition,.5),k=Y(b.showvlines,c.showVLines,1),m=Y(b.alpha,c.vLineAlpha,80),e=ma(b.color,c.vLineColor).replace(/^#?/,"#"),ta=w?ma(b.labelbgcolor,c.vLineLabelBgColor,"333333").replace(/^#?/,"#"):"",z=ma(b.labelcolor,c.vLineLabelColor,b.color,c.vLineColor).replace(/^#?/,"#"),C=Y(b.thickness,
+c.vLineThickness,1),P=.5*C,N=Boolean(Number(ma(b.dashed,0))),h=Y(b.dashlen,5),Ua=Y(b.dashgap,2),U=c.smartLabel,tb=parseInt(K.fontSize,10)+2,ic=0,v=Y(b.rotatelabel,c.rotateVLineLabels)?270:0,I=0>I||1<I?.5:I,X=0>X||1<X?0:X;U.setStyle(K);U=U.getOriSize(d);e=Ga(e,k?m:"0");if(n){switch(A){case "top":tb-=U.height+P+2;break;case "middle":tb-=.5*U.height+1;break;default:tb+=P}b.labelhalign||(ic-=U.width*X)}else{switch(A){case "top":tb=.5*-U.height+1;break;case "middle":tb=0;break;default:tb=.5*U.height}switch(g){case "left":ic+=
+C;break;case "right":ic-=C+1}}a.plotLines.push({isVline:!0,color:e,width:C,value:f-1+I,zIndex:Y(b.showontop,c.showVLinesOnTop)?5:3,dashStyle:N?Eb(h,Ua,C):"none",label:{text:d,align:n?"left":"center",offsetScale:X,rotation:v,y:tb,x:ic,textAlign:g,backgroundColor:ta,borderWidth:k&&B?1:0,borderType:k&&B?"solid":"",borderColor:k&&B?z:"",backgroundOpacity:k&&w?ma(b.labelbgalpha,c.vLineLabelBgAlpha)/100:0,style:{color:k?z:e,fontSize:K.fontSize,fontFamily:K.fontFamily,lineHeight:K.lineHeight,backgroundColor:ta}}})}};
+return f.prototype.constructor=f}(),ac=function(){var a=function(a,f,c,n,K){a=Math.abs(f-a);f=a/(c+1);b(a,c,n)||(K&&Number(f)/Number(n)<(1<n?2:.5)&&(n/=10),f=(Math.floor(f/n)+1)*n,a=f*(c+1));return a},b=function(a,b,c){return f(a/(b+1))>f(c)?!1:!0},f=function(a){a=Math.abs(a);a=String(a);var b=0,f=a.indexOf(".");-1!=f&&(b=a.length-f-1);return b};return function(f,c,n,d,B,w,g,A){var I,k,e,v,ta,l,ca,r=0;f=!0===isNaN(f)||void 0===f?.1:f;c=!0===isNaN(c)||void 0===c?0:c;f===c&&0===f&&(f=.1);w=void 0===
+typeof w?!0:w;k=Math.max(Math.floor(Math.log(Math.abs(c))/Math.LN10),Math.floor(Math.log(Math.abs(f))/Math.LN10));I=Math.pow(10,k);2>Math.abs(f)/I&&2>Math.abs(c)/I&&(k--,I=Math.pow(10,k));k=Math.floor(Math.log(f-c)/Math.LN10);e=Math.pow(10,k);0<f-c&&10<=I/e&&(I=e);k=(Math.floor(f/I)+1)*I;0>c?e=-1*(Math.floor(Math.abs(c/I))+1)*I:w?e=0:(e=Math.floor(Math.abs(c/I)-1)*I,e=0>e?0:e);(void 0===typeof B||B)&&0>=f&&(k=0);B=n||0===n?!0:!1;w=d||0===d?!0:!1;f=!1===B||!0===B&&Number(n)<f&&f-Number(n)>m?k:Number(n);
+c=!1===w||!0===w&&Number(d)>c&&Number(d)-c>m?e:Number(d);d=Math.abs(f-c);if(!1===w&&!1===B&&A)if(0<f&&0>c)for(n=!1,B=10<I?I/10:I,A=a(c,f,g,B,!1),w=A-(g+1)*B;!1===n;){if(w+=(g+1)*B,b(w,g,B))if(A=w-d,k=w/(g+1),v=Math.min(Math.abs(c),f),e=v==Math.abs(c)?-1:1,0===g)n=!0;else for(l=1;l<=Math.floor((g+1)/2);l++)ta=k*l,!(ta-v>A)&&ta>v&&(ca=w-ta,ca/k==Math.floor(ca/k)&&ta/k==Math.floor(ta/k)&&(d=w,f=-1==e?ca:ta,c=-1==e?-ta:-ca,n=!0))}else n=a(c,f,g,I,!0),A=n-d,d=n,0<f?f+=A:c-=A;else A&&(n=function(a,f,c){for(var n=
+0,K=1,h;;){h=a+n*K;h=0===h?1:h;if(b(f,h,c))break;n=-1==K||n>a?++n:n;if(25<n){h=0;break}K=n<=a?-1*K:1}return h},0<g&&(A=n(g,d,I),0===A&&(A=n(g,d+1,I),r=1),g=A));return{Max:f,Min:c,Range:d,interval:I,divGap:(f-c+r)/(g+1)}}}(),ec=function(){var a=function(a,b,f){var c=f.jsVars&&f.jsVars.smartLabel,n=a.offsetWidth,K=a.offsetHeight,d=this.chart;a=this.title;var B=f._chartMessageImageStyle,w=!1,g;void 0!==b&&(b=b.replace(/^\s+/,"").replace(/\s+$/,""),/^i\s*[\-]\s*/i.test(b)?(w=!0,g=b.replace(/^i\s*[\-]\s*/i,
+"")):g=b.replace(/^\\/,""));a.y=K/2;a.x=n/2;d.bgSWF=a.text=void 0;b=g;w?(d.bgSWF=b,d.bgImageHAlign=B.imageHAlign,d.bgImageVAlign=B.imageVAlign,d.bgImageScale=B.imageScale,d.bgSWFAlpha=B.imageAlpha):void 0!==b&&(c?(Oa(a.style),c.setStyle(a.style),c=c.getSmartText(sa(b),n,K),a.text=c.text):a.text=sa(b),a.verticalAlign="middle");a.style=f._chartMessageStyle;delete f._chartMessageImageStyle;delete f._chartMessageStyle};a.prototype={chart:{events:{},margin:[0,0,0,0],backgroundColor:{FCcolor:{alpha:0}}},
+credits:{href:S,text:"FusionCharts XT Trial",enabled:v},legend:{enabled:!1},title:{text:"",style:{fontFamily:"Verdana,sans",fontSize:"10px",color:"#666666"}},plotOptions:{series:{}},series:[{}],exporting:{enabled:!1},nativeMessage:!0};return a.prototype.constructor=a}(),Sb={"true":{"true":{"true":"center","false":"center"},"false":{"true":"center","false":"center"}},"false":{"true":{"true":"right","false":"left"},"false":{"true":"left","false":"right"}}},Qb=function(){return function(a,b,f,c,n,d,
+B){var w,g=f.trendStyle,A,I,k,m,e,v,l,ca,r,D,O,z,C,P=d?"xAxis":"dataLabels";if(d?f.showVLines:f.showTrendlines)for(w=0,I=a.length;w<I;w+=1)if((C=a[w])&&C.line)for(A=0,k=C.line.length;A<k;A+=1)m=C.line[A],D=f.numberFormatter.getCleanValue(ma(m.startvalue,m.value,0)),O=f.numberFormatter.getCleanValue(ma(m.endvalue,ma(m.startvalue,m.value,0))),d?ca=b:c&&m.parentyaxis&&/^s$/i.test(m.parentyaxis)?(ca=b[1],z=1):ca=b[0],v=ca.max,l=ca.min,e=!1,v>=D&&v>=O&&l<=D&&l<=O&&(c&&m.parentyaxis&&/^s$/i.test(m.parentyaxis)?
+e="1"!==ma(m.valueonleft,f.trendlineValuesOnOpp):c||(e="1"===ma(m.valueonright,f.trendlineValuesOnOpp)),v=Boolean(Y(m.istrendzone,d?1:0)),(l=(d?f.showVLineLabels:f.showTrendlineLabels)?sa(ma(m.displayvalue,f.numberFormatter[P](e?O:D,z))):"")?(r=D<O,e={text:l,textAlign:n?"center":e?"left":"right",align:n?Sb[v][!B][r]:e?"right":"left",verticalAlign:n?"bottom":"middle",rotation:0,x:0,y:0,style:g},l=ma(m.color,f.trendlineColor),m.alwaysVisible=v,l&&(e.style=bb({},g),e.style.color=Ga(l,Y(m.alpha,100)))):
+e=void 0,l=ba(sa(ma(m.tooltext,C.tooltext,f.trendLineToolText))),l=Ab(l,[7,15,16,17,18,19],{startValue:D,startDataValue:f.numberFormatter[P](D,z),endValue:O,endDataValue:f.numberFormatter[P](O,z),axisName:ca.title&&ca.title.text},m),r=Y(m.thickness,f.trendlineThickness,1),v?ca.plotBands.push({isTrend:!0,color:Ga(ma(m.color,f.trendlineColor),ma(m.alpha,f.trendlineAlpha,40)),from:D,to:O,label:e,zIndex:f.is3d||"1"!==ma(m.showontop,f.showTrendlinesOnTop)?3:5,tooltext:l,alwaysVisible:m.alwaysVisible}):
+ca.plotLines.push({isTrend:!0,color:Ga(ma(m.color,f.trendlineColor,f.trendlineColor),ma(m.alpha,f.trendlineAlpha,99)),value:D,to:O,width:r,dashStyle:"1"==ma(m.dashed,f.trendlinesAreDashed)?Eb(Y(m.dashlen,f.trendlinesDashLen),Y(m.dashgap,f.trendlinesDashGap),r):"none",label:e,zIndex:f.is3d||"1"!==ma(m.showontop,f.showTrendlinesOnTop)?3:5,tooltext:l}))}}(),Eb=function(a,b,f,c){return c||void 0===c?[a,b]:"none"},pc=function(){},Bb=function(a,b,f){var c,n=Bb[a];n||(n=function(){},n.prototype=f instanceof
+pc?f:new pc,n.prototype.constructor=n,n=Bb[a]=new n);f&&(n.base=f);n.name=a;for(c in b)switch(typeof b[c]){case "object":if(b[c]instanceof pc){n[c]=b[c][c];break}default:n[c]=b[c];break;case "undefined":delete n[c]}return this instanceof Bb?(a=function(){},a.prototype=n,a.prototype.constructor=a,new a):n},Ab=function(){var a=[{regex:/((^|[^\\])((\\)\\)*\$cleanvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cleanvalue))/ig,argIndex:2,argKey:"cleanvalue"},{regex:/((^|[^\\])((\\)\\)*\$datavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$datavalue))/ig,
+argIndex:2,argKey:"formattedValue"},{regex:/((^|[^\\])((\\)\\)*\$value)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$value))/ig,argIndex:3,argKey:"value"},{regex:/((^|[^\\])((\\)\\)*\$label)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$label))/ig,argIndex:2,argKey:"label"},{regex:/((^|[^\\])((\\)\\)*\$seriesname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$seriesname))/ig,argIndex:5,argKey:"seriesname"},{regex:/((^|[^\\])((\\)\\)*\$yaxisname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yaxisname))/ig,argIndex:2,argKey:"yaxisName"},
+{regex:/((^|[^\\])((\\)\\)*\$xaxisname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxisname))/ig,argIndex:2,argKey:"xaxisName"},{regex:/((^|[^\\])((\\)\\)*\$displayvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$displayvalue))/ig,argIndex:3,argKey:"displayvalue"},{regex:/((^|[^\\])((\\)\\)*\$xdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xdatavalue))/ig,argIndex:2,argKey:"xDataValue"},{regex:/((^|[^\\])((\\)\\)*\$ydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$ydatavalue))/ig,argIndex:2,argKey:"yDataValue"},
+{regex:/((^|[^\\])((\\)\\)*\$xvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xvalue))/ig,argIndex:3,argKey:"x"},{regex:/((^|[^\\])((\\)\\)*\$yvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$yvalue))/ig,argIndex:3,argKey:"y"},{regex:/((^|[^\\])((\\)\\)*\$zvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zvalue))/ig,argIndex:3,argKey:"z"},{regex:/((^|[^\\])((\\)\\)*\$name)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$name))/ig,argIndex:3,argKey:"name"},{regex:/((^|[^\\])((\\)\\)*\$percentValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentValue))/ig,
+argIndex:2,argKey:"percentValue"},{regex:/((^|[^\\])((\\)\\)*\$startValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startValue))/ig,argIndex:2,argKey:"startValue"},{regex:/((^|[^\\])((\\)\\)*\$startDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$startDataValue))/ig,argIndex:2,argKey:"startDataValue"},{regex:/((^|[^\\])((\\)\\)*\$endValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endValue))/ig,argIndex:2,argKey:"endValue"},{regex:/((^|[^\\])((\\)\\)*\$endDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$endDataValue))/ig,
+argIndex:2,argKey:"endDataValue"},{regex:/((^|[^\\])((\\)\\)*\$axisName)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$axisName))/ig,argIndex:2,argKey:"axisName"},{regex:/((^|[^\\])((\\)\\)*\$cumulativevalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativevalue))/ig,argIndex:2,argKey:"cumulativeValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativedatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativedatavalue))/ig,argIndex:2,argKey:"cumulativeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativePercentValue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativePercentValue))/ig,argIndex:2,argKey:"cumulativePercentValue"},{regex:/((^|[^\\])((\\)\\)*\$cumulativepercentdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$cumulativepercentdatavalue))/ig,argIndex:2,argKey:"cumulativePercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$sum)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sum))/ig,argIndex:2,argKey:"sum"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsum)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsum))/ig,argIndex:2,
+argKey:"unformattedSum"},{regex:/((^|[^\\])((\\)\\)*\$targetvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetvalue))/ig,argIndex:2,argKey:"targetValue"},{regex:/((^|[^\\])((\\)\\)*\$targetdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$targetdatavalue))/ig,argIndex:2,argKey:"targetDataValue"},{regex:/((^|[^\\])((\\)\\)*\$processname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$processname))/ig,argIndex:2,argKey:"processName"},{regex:/((^|[^\\])((\\)\\)*\$start)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$start))/ig,
+argIndex:2,argKey:"start"},{regex:/((^|[^\\])((\\)\\)*\$end)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$end))/ig,argIndex:2,argKey:"end"},{regex:/((^|[^\\])((\\)\\)*\$percentcomplete)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentcomplete))/ig,argIndex:2,argKey:"percentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskpercentcomplete)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskpercentcomplete))/ig,argIndex:2,argKey:"taskPercentComplete"},{regex:/((^|[^\\])((\\)\\)*\$taskstartdate)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskstartdate))/ig,
+argIndex:2,argKey:"taskStartDate"},{regex:/((^|[^\\])((\\)\\)*\$taskenddate)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$taskenddate))/ig,argIndex:2,argKey:"taskEndDate"},{regex:/((^|[^\\])((\\)\\)*\$tasklabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tasklabel))/ig,argIndex:2,argKey:"taskLabel"},{regex:/((^|[^\\])((\\)\\)*\$date)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$date))/ig,argIndex:2,argKey:"date"},{regex:/((^|[^\\])((\\)\\)*\$percentofprevvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentofprevvalue))/ig,
+argIndex:2,argKey:"percentOfPrevValue"},{regex:/((^|[^\\])((\\)\\)*\$sname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$sname))/ig,argIndex:2,argKey:"sName"},{regex:/((^|[^\\])((\\)\\)*\$lname)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lname))/ig,argIndex:2,argKey:"lName"},{regex:/((^|[^\\])((\\)\\)*\$fromid)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromid))/ig,argIndex:2,argKey:"fromId"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/ig,argIndex:2,argKey:"fromLabel"},
+{regex:/((^|[^\\])((\\)\\)*\$toid)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toid))/ig,argIndex:2,argKey:"toId"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$fromxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxvalue))/ig,argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromyvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromyvalue))/ig,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromxdatavalue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromxdatavalue))/ig,argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromydatavalue))/ig,argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromlabel))/ig,argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxvalue))/ig,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toyvalue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toyvalue))/ig,argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toxdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toxdatavalue))/ig,argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toydatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toydatavalue))/ig,argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$openvalue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$openvalue))/ig,argIndex:2,argKey:"openValue"},{regex:/((^|[^\\])((\\)\\)*\$closevalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closevalue))/ig,argIndex:2,argKey:"closeValue"},{regex:/((^|[^\\])((\\)\\)*\$highvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highvalue))/ig,argIndex:2,argKey:"highValue"},{regex:/((^|[^\\])((\\)\\)*\$lowvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowvalue))/ig,argIndex:2,argKey:"lowValue"},{regex:/((^|[^\\])((\\)\\)*\$opendatavalue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$opendatavalue))/ig,argIndex:2,argKey:"openDataValue"},{regex:/((^|[^\\])((\\)\\)*\$closedatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$closedatavalue))/ig,argIndex:2,argKey:"closeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$highdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$highdatavalue))/ig,argIndex:2,argKey:"highDataValue"},{regex:/((^|[^\\])((\\)\\)*\$lowdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$lowdatavalue))/ig,argIndex:2,argKey:"lowDataValue"},
+{regex:/((^|[^\\])((\\)\\)*\$maxvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxvalue))/ig,argIndex:2,argKey:"maxValue"},{regex:/((^|[^\\])((\\)\\)*\$maxdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$maxdatavalue))/ig,argIndex:2,argKey:"maxDataValue"},{regex:/((^|[^\\])((\\)\\)*\$minvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$minvalue))/ig,argIndex:2,argKey:"minValue"},{regex:/((^|[^\\])((\\)\\)*\$mindatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mindatavalue))/ig,argIndex:2,argKey:"minDataValue"},
+{regex:/((^|[^\\])((\\)\\)*\$q1)/ig,argIndex:2,argKey:"Q1"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ1)/ig,argIndex:2,argKey:"unformattedQ1"},{regex:/((^|[^\\])((\\)\\)*\$q3)/ig,argIndex:2,argKey:"Q3"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQ3)/ig,argIndex:2,argKey:"unformattedQ3"},{regex:/((^|[^\\])((\\)\\)*\$median)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$median))/ig,argIndex:2,argKey:"median"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMedian)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMedian))/ig,
+argIndex:2,argKey:"unformattedMedian"},{regex:/((^|[^\\])((\\)\\)*\$SD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$SD))/ig,argIndex:2,argKey:"SD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedsd)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedsd))/ig,argIndex:2,argKey:"unformattedsd"},{regex:/((^|[^\\])((\\)\\)*\$QD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$QD))/ig,argIndex:2,argKey:"QD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedQD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedQD))/ig,argIndex:2,
+argKey:"unformattedQD"},{regex:/((^|[^\\])((\\)\\)*\$MD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$MD))/ig,argIndex:2,argKey:"MD"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMD)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMD))/ig,argIndex:2,argKey:"unformattedMD"},{regex:/((^|[^\\])((\\)\\)*\$mean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$mean))/ig,argIndex:2,argKey:"mean"},{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/ig,argIndex:2,argKey:"unformattedMean"},
+{regex:/((^|[^\\])((\\)\\)*\$unformattedMean)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$unformattedMean))/ig,argIndex:2,argKey:"unformattedMean"},{regex:/((^|[^\\])((\\)\\)*\$volumeValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeValue))/ig,argIndex:2,argKey:"volumeValue"},{regex:/((^|[^\\])((\\)\\)*\$volumeDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$volumeDataValue))/ig,argIndex:2,argKey:"volumeDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXValue))/ig,
+argIndex:2,argKey:"fromXValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYValue))/ig,argIndex:2,argKey:"fromYValue"},{regex:/((^|[^\\])((\\)\\)*\$fromXDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromXDataValue))/ig,argIndex:2,argKey:"fromXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromYDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromYDataValue))/ig,argIndex:2,argKey:"fromYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$fromLabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$fromLabel))/ig,
+argIndex:2,argKey:"fromLabel"},{regex:/((^|[^\\])((\\)\\)*\$toXValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXValue))/ig,argIndex:2,argKey:"toXValue"},{regex:/((^|[^\\])((\\)\\)*\$toYValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYValue))/ig,argIndex:2,argKey:"toYValue"},{regex:/((^|[^\\])((\\)\\)*\$toXDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toXDataValue))/ig,argIndex:2,argKey:"toXDataValue"},{regex:/((^|[^\\])((\\)\\)*\$toYDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$toYDataValue))/ig,
+argIndex:2,argKey:"toYDataValue"},{regex:/((^|[^\\])((\\)\\)*\$tolabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tolabel))/ig,argIndex:2,argKey:"toLabel"},{regex:/((^|[^\\])((\\)\\)*\$tlLabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlLabel))/ig,argIndex:5,argKey:"tlLabel"},{regex:/((^|[^\\])((\\)\\)*\$trlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trlabel))/ig,argIndex:5,argKey:"trLabel"},{regex:/((^|[^\\])((\\)\\)*\$bllabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$bllabel))/ig,argIndex:5,argKey:"blLabel"},
+{regex:/((^|[^\\])((\\)\\)*\$brlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brlabel))/ig,argIndex:5,argKey:"brLabel"},{regex:/((^|[^\\])((\\)\\)*\$rowlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$rowlabel))/ig,argIndex:5,argKey:"rowLabel"},{regex:/((^|[^\\])((\\)\\)*\$columnlabel)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$columnlabel))/ig,argIndex:5,argKey:"columnLabel"},{regex:/((^|[^\\])((\\)\\)*\$errorvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorvalue))/ig,argIndex:2,argKey:"errorValue"},
+{regex:/((^|[^\\])((\\)\\)*\$errordatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errordatavalue))/ig,argIndex:2,argKey:"errorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentvalue))/ig,argIndex:2,argKey:"errorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$errorpercentdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$errorpercentdatavalue))/ig,argIndex:2,argKey:"errorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorValue)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorValue))/ig,argIndex:2,argKey:"horizontalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorDataValue))/ig,argIndex:2,argKey:"horizontalErrorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorValue))/ig,argIndex:2,argKey:"verticalErrorValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorDataValue))/ig,
+argIndex:2,argKey:"verticalErrorDataValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercent)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentValue))/ig,argIndex:2,argKey:"horizontalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$horizontalErrorPercentDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$horizontalErrorPercentDataValue))/ig,argIndex:2,argKey:"horizontalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercent)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentValue))/ig,
+argIndex:2,argKey:"verticalErrorPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$verticalErrorPercentDataValue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$verticalErrorPercentDataValue))/ig,argIndex:2,argKey:"verticalErrorPercentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$xaxispercentvalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$xaxispercentvalue))/ig,argIndex:2,argKey:"xAxisPercentValue"},{regex:/((^|[^\\])((\\)\\)*\$percentdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$percentdatavalue))/ig,argIndex:2,
+argKey:"percentDataValue"},{regex:/((^|[^\\])((\\)\\)*\$trType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$trType))/ig,argIndex:4,argKey:"trtype"},{regex:/((^|[^\\])((\\)\\)*\$tlType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$tlType))/ig,argIndex:4,argKey:"tltype"},{regex:/((^|[^\\])((\\)\\)*\$brType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$brType))/ig,argIndex:4,argKey:"brtype"},{regex:/((^|[^\\])((\\)\\)*\$blType)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$blType))/ig,argIndex:4,argKey:"bltype"},{regex:/((^|[^\\])((\\)\\)*\$colorRangeLabel)/ig,
+escapeRegex:/((^|[^\\])((\\)\\)*\\(\$colorRangeLabel))/ig,argIndex:5,argKey:"colorRangeLabel"},{regex:/((^|[^\\])((\\)\\)*\$zdatavalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$zdatavalue))/ig,argIndex:2,argKey:"zDataValue"},{regex:/((^|[^\\])((\\)\\)*\$svalue)/ig,escapeRegex:/((^|[^\\])((\\)\\)*\\(\$svalue))/ig,argIndex:3,argKey:"svalue"}],b=[],f,c=a.length;for(f=0;f<c;f+=1)b.push(f);return function(){var f=arguments[0],c=arguments[1],n,d,B,w,g;ob(c)||(c=b);if(f)for(g=c.length,w=0;w<g;w+=1)if(B=a[c[w]])n=
+ga(ba((d=arguments[B.argIndex])&&d[B.argKey],"")+""),f=f.replace(B.regex,"$2$4"+(B.parsingMethod?B.parsingMethod(n):n)),f=f.replace(B.escapeRegex,"$2$4$5");return f}}(),Tb=function(a){var b,f,c;b=0<=a.split(",")[0].indexOf("base64")?q.atob(a.split(",")[1]):q.unescape(a.split(",")[1]);a=a.split(",")[0].split(":")[1].split(";")[0];f=new Uint8Array(b.length);for(c=0;c<b.length;c++)f[c]=b.charCodeAt(c);return new q.Blob([f],{type:a})},Hb=function(){var a=q.navigator.userAgent,b;return-1!==(b=a.indexOf("Edge"))?
+{name:"Edge",version:a.substring(b+5,b+11)}:-1!==(b=a.indexOf("Chrome"))?{name:"Chrome",version:a.substring(b+7,b+11)}:-1!==(b=a.indexOf("MSIE"))?{name:"ie",version:a.substring(b+5,b+9)}:-1!==(b=a.indexOf("rv"))&&-1!==a.indexOf("Trident")?{name:"ie",version:a.substring(b+5,b+9)}:-1!==(b=a.indexOf("Firefox"))?{name:"Firefox",version:a.substring(b+8,b+12)}:-1!==(b=a.indexOf("Safari"))?{name:"Safari",version:a.substring(b+7,b+11)}:{name:"default",version:"Not Known"}},Qa=function(a){return a.replace(/<image [^\>]*\>/gi,
+function(a){return a.match(/href=["']\s*["']/)||a.match(/href=["']http:\/\/|href=["']https:\/\//)&&/(href=["']http:\/\/|href=["']https:\/\/)([^\/\:]*)/.exec(a)[2]&&q.location.hostname!==/(href=["']http:\/\/|href=["']https:\/\/)([^\/\:]*)/.exec(a)[2]?"":a})},wb=function(a,b,f){var c=Hb(),n;"Chrome"===c.name||"Firefox"===c.name?("blob"===a&&(b=q.URL.createObjectURL(b)),n=F.createElement("a"),n.download=f,n.href=b,F.body.appendChild(n),n.onclick=function(){n.parentNode.removeChild(n)},n.click()):"ie"!==
+c.name&&"Edge"!==c.name||!q.navigator.msSaveBlob||(a="url"===a?Tb(b):b,q.navigator.msSaveBlob(a,f))},f=function(a,b){var f,c,n,d;d=b.exportTargetWindow;var B=b.exportCallback,w=b.fusionCharts,g=b.paper,A=b.chartId;c=b.exportHandler;var I;if("download"===b.exportAction){/webkit/ig.test(q.navigator.userAgent)&&"_self"===d&&(d=n=A+"export_iframe",I||(I=n=Ba("IFRAME",{name:n,width:"1px",height:"1px"},F.body),n.style.cssText="position:absolute;left:-10px;top:-10px;"));c=Ba("form",{method:"POST",action:c,
+target:d,style:"display:none;"},F.body);for(f in a)Ba("input",{type:"hidden",name:f,value:a[f]},c);c.submit();F.body.removeChild(c);c=void 0;return!0}d=new e.ajax(function(a){var b={};a.replace(RegExp("([^?=&]+)(=([^&]*))?","g"),function(a,f,c,n){b[f]=n});B&&q[B]&&"function"===typeof q[B]&&q[B].call(q,b);e.raiseEvent("exported",b,w)},function(a){a={statusCode:0,statusMessage:"failure",error:a,DOMId:A,width:g.width,height:g.height};B&&q[B]&&"function"===typeof q[B]&&q[B].call(q,a);e.raiseEvent("exported",
+a,w,[a])});for(f in a)a.hasOwnProperty(f)&&(a[f]=encodeURIComponent(a[f]));d.post(c,a)},B=function(a,b){if(-1===a.indexOf("<image "))b(a);else{var f=0,c,n=0,d;c=a.match(/<image [^\>]*\>/gi).length;a=a.replace(/NS\d+:/gi,"xlink:");a=Qa(a);a=a.replace(/<image [^\>]*\>/gi,function(B){if(B.match(/href="http:\/\/|href="https:\/\//)&&/(href="http:\/\/|href="https:\/\/)([^\/\:]*)/.exec(B)[2]&&q.location.hostname!==/(href="http:\/\/|href="https:\/\/)([^\/\:]*)/.exec(B)[2])return n++,f++,c===n&&b(a),"";B=
+B.replace(/(:href=")([^"]*)(")/gi,function(a,b,c,n){d=c;return b+"{{{"+f+"}}}"+n});var w=F.createElement("canvas"),g,A;g=w.getContext("2d");A=new G;A.src=d;A.ind=f;A.onload=function(){w.width=this.width;w.height=this.height;g.drawImage(this,0,0);var f=w.toDataURL("image/png");(new G).src=f;a=a.replace(new RegExp("\\{\\{\\{"+A.ind+"\\}\\}\\}","g"),f);n++;c===n&&b(a)};f++;return B})}},n=function(a){var b,f,c,d,B,w;if(a){if(b=a.components)for(c in b)if(f=b[c],f instanceof Array)for(d=f.length,B=0;B<
+d;B++)(w=f[B])&&w.dispose?w.dispose():n(w);else f&&f.dispose?f.dispose():n(f);if(b=a.graphics)for(c in b)if(f=b[c],f instanceof Array)for(d=f.length,B=0;B<d;B++)(w=f[B])&&w.remove&&w.remove();else f&&f.remove&&f.remove();for(c in a)delete a[c]}},w={},I={};e.registrars.datasettype=function(a){var b,f,c,n;n=a[0].toLowerCase();if(1==a.length)"undefined"===typeof w[n]&&console.error('Undefined dataSetType "'+a[0]+'"');else if(w[n]=f=function(){},"undefined"!==typeof a[2]&&(b=a[2].toLowerCase()),b&&w[b]){b=
+new w[b];f.prototype=b;f.prototype.constructor=f;a=a[1]||{};for(c in a)f.prototype[c]="undefined"!==typeof a[c]?a[c]:b[c];w[n]=f}else f.prototype=a[1],f.prototype.constructor=f;return w[n]};e.registrars.groupmanagertype=function(a){var b,f,c,n;n=a[0].toLowerCase();if(1==a.length)"undefined"===typeof I[n]&&console.error('Undefined dataSetType "'+a[0]+'"');else if(I[n]=f=function(){},"undefined"!==typeof a[2]&&(b=a[2].toLowerCase()),b&&I[b]){b=new I[b];f.prototype=b;f.prototype.constructor=f;a=a[1]||
+{};for(c in a)f.prototype[c]="undefined"!==typeof a[c]?a[c]:b[c];I[n]=f}else f.prototype=a[1],f.prototype.constructor=f;return I[n]};e.core._setLineHeightFactor=function(a){!(a=t(a))||0>a||(W.lineHeightFactor=a)};e.extend(W,{BLANKSTRINGPLACEHOLDER:"#BLANK#",BLANKSTRING:"",COLOR_BLACK:"000000",COLOR_GLASS:"rgba(255, 255, 255, 0.3)",COLOR_WHITE:"FFFFFF",COLOR_TRANSPARENT:"rgba(0,0,0,0)",HASHSTRING:"#",BREAKSTRING:"<br />",STRINGSTRING:"string",OBJECTSTRING:"object",COMMASTRING:",",ZEROSTRING:"0",SAMPLESTRING:"Ay0",
+TESTSTR:"Ag",ONESTRING:"1",DECIMALSTRING:".",STRINGUNDEFINED:"undefined",POSITION_TOP:"top",POSITION_RIGHT:"right",POSITION_BOTTOM:"bottom",POSITION_LEFT:"left",POSITION_CENTER:"center",POSITION_MIDDLE:"middle",POSITION_START:"start",POSITION_END:"end",FC_CONFIG_STRING:"_FCconf",SHAPE_RECT:"rect",HUNDREDSTRING:"100",PXSTRING:"px",COMMASPACE:", ",TEXTANCHOR:"text-anchor",TOUCH_THRESHOLD_PIXELS:15,CLICK_THRESHOLD_PIXELS:5,regex:{stripWhitespace:E,dropHash:c,startsRGBA:l,cleanColorCode:b,breakPlaceholder:r,
+hexcode:/^#?[0-9a-f]{6}/i},fireEvent:function(a,b,f,c){W.dem.fire(a,b,f,c)},plotEventHandler:function(b,f,c){f=f||{};var n=f.type,d=Ia(b.container,f),d=bb(d,this.data("eventArgs")),B=b.logic.fireGroupEvent,w=this.data("groupId"),g=function(b,c){f.FusionChartsPreventEvent=!0;a&&c.toolText&&W.toolTip&&W.toolTip.preventTooltip()};"index"in d&&!("dataIndex"in d)&&(d.dataIndex=d.index);"value"in d&&!("dataValue"in d)&&(d.dataValue=d.value);c=ma(c,"dataplotclick").toLowerCase();"dataplotrollover"===c?(f.FusionChartsPreventEvent=
+!1,B?e.raiseEventGroup(w,c,d,b.fusionCharts,void 0,void 0,g):e.raiseEvent(c,d,b.logic.chartInstance,void 0,void 0,g)):B&&"dataplotclick"!==c?e.raiseEventGroup(w,c,d,b.fusionCharts):e.raiseEvent(c,d,b.logic.chartInstance);if(("click"===n||"mouseup"===n||"touchend"===n)&&/click/i.test(c)){if(D&&!R){c=(new Date).getTime();if(this.lastClickTimeStamp&&400>c-this.lastClickTimeStamp){f&&(f.originalEvent||f).preventDefault();return}this.lastClickTimeStamp=c}b.linkClickFN.call({link:d.link},b)}},getEventCoordinate:ca,
+getMouseCoordinate:Ia,addEvent:da,removeEvent:na,getTouchEvent:A,extend2:bb,deltend:function(a,b){if("object"!==typeof a||"object"!==typeof b)return null;ua(a,b);return a},imprint:function(a,b,f){var c;if("object"!==typeof a||null===a)return b;if("object"!==typeof b||null===b)return a;for(c in b)if(void 0===a[c]||!f&&null===a[c])a[c]=b[c];return a},pluck:ma,pluckNumber:Y,getFirstDefinedValue:function(){var a,b,f;b=0;for(f=arguments.length;b<f;b+=1)if((a=arguments[b])||!1===a||0===a||""==a)return a},
+createElement:Ba,hashify:va,pluckFontSize:function(){var a,b,f;b=0;for(f=arguments.length;b<f;b+=1)if(((a=arguments[b])||!1===a||0===a)&&!isNaN(a=Number(a)))return 1>a?1:a;return 1},getValidValue:ba,getPosition:ka,getViewPortDimension:aa,bindSelectionEvent:function(a,b){b=b||{};var f=a.options.chart,c=a.container,n=f.zoomType,d=bb({},b.attr||{}),B=d["stroke-width"]=Y(d.strokeWidth,d["stroke-width"],1),w=ka(c),g=a.eventListeners||(a.eventListeners=[]);b=bb({chart:a,zoomX:/x/.test(n),zoomY:/y/.test(n),
+canvasY:a.canvasTop,canvasX:a.canvasLeft,canvasW:a.canvasWidth,canvasH:a.canvasHeight,canvasX2:a.canvasLeft+a.canvasWidth,canvasY2:a.canvasTop+a.canvasHeight,strokeWidth:B,chartPosLeft:w.left,chartPosTop:w.top,attr:d},b);d.stroke=ja(d.stroke,"rgba(51,153,255,0.8)");d.fill=ja(d.fill,"rgba(185,213,241,0.3)");d.ishot=!0;c&&(na(c,"pointerdrag",O),g.push(da(c,"pointerdrag",O,b)));f.link&&(na(a.container,"mouseup mousedown",ha),g.push(da(a.container,"mouseup mousedown",ha,b)))},createContextMenu:function(b){var f=
+b.chart,c=f.smartLabel,n=f.logic.hcJSON&&f.logic.hcJSON.chart.useRoundEdges,B=W.Raphael,w=function(a){var b=a.menufillcolor&&va(a.menufillcolor),f=a.menulabelcolor&&va(a.menulabelcolor),h=a.menufillhovercolor&&va(a.menufillhovercolor);a=a.menulabelhovercolor&&va(a.menulabelhovercolor);return{attrs:{backgroundColor:b,color:f},hover:{backgroundColor:h,color:a}}}(f.definition.chart),g=function(a,b,f){b=b||{};a=(a=(a=a&&B.tintshade(a.color,.7))&&B.getRGB(a))&&"rgb("+[a.r,a.g,a.b].join()+")";return{backgroundColor:b.backgroundHoverColor||
+f.backgroundColor||a||"rgb(64, 64, 64)",color:b.hoverColor||f.color||"#FFFFFF"}}(b.basicStyle,b.hover,w.hover),A=function(a,b,f){b=bb({},b||{});b=bb(b,a);return{fontFamily:b.fontFamily||"Verdana,sans",fontSize:b.fontSize||"10px",color:b.color||f.color||"#000000",backgroundColor:b.backgroundColor||f.backgroundColor||"rgb(255, 255, 255)"}}(b.basicStyle,b.attrs,w.attrs),I={textAlign:"left",align:"left",paddingLeft:"5px",paddingRight:"5px",paddingTop:"5px",cursor:"pointer",borderWidth:"0px"},k=b.items,
+m=b.position,e=b.verticalPadding||3,v=b.horizontalPadding||6,l={},ca,r,D,O,t,p,z,C,P,N,h,Ua,U;if(f)ca=ka(f.container);else return!1;O=function(){var b=l.items,f=b.length,h=0,z=0,C=0,P,B;l.menuItems||(l.menuItems=[]);for(c.setStyle(A);f--;)P=b[f],P=c.getOriSize(P.text),C||(C=P.height+2*e),h+=C,z=L(z,P.width+2*v);l.height=h;l.width=z;l.itemH=C;this.style.width=z+"px";l.menuRect||(h=l.menuRect=F.createElement("div"),h.style.border="1px solid rgb(100, 100, 100)",n&&(h.style.mozBorderRadius="4px",h.style.webkitBorderRadius=
+"4px",h.style.borderRadius="4px",h.style.overflow="hidden"),a&&!d?h.style.filter="progid:DXImageTransform.Microsoft.Shadow(Color=#999999,direction=135,strength=3)":(h.style.mozBoxShadow="3px 3px 3px #999",h.style.webkitBoxShadow="3px 3px 3px #999",h.style.boxShadow="3px 3px 3px #999"),this.appendChild(h));z=b.length;for(f=0;f<z;f+=1)if(P=b[f],l.menuItems[f])l.menuItems[f].label.innerHTML=P.text;else{l.menuItems[f]={};h=l.menuItems[f].box=F.createElement("div");h.style.height=C+"px";h.style.lineHeight=
+C+"px";for(B in I)h.style[B]=I[B];for(B in A)h.style[B]=A[B];l.menuRect.appendChild(h);h.innerHTML=P.text;W.dem.listen(h,"click",U);W.dem.listen(h,"pointerhover",N);l.menuItems[f].box._itemIdx=f}for(;l.menuItems[f];)l.menuItems[f].box.parentNode.removeChild(l.menuItems[f].box),l.menuItems.splice(f,1)};t=function(){D||(D=F.createElement("div"),D.style.position="absolute",D.style.zIndex="50",D.style.display="none",f.container.appendChild&&f.container.appendChild(D));return D};p=function(){r=setTimeout(l.hide,
+800)};z=function(){r&&clearTimeout(r)};C=function(a){var b=a.x;a=a.y;var h={x:b,y:a},c=l.width,z=l.height,C=f.chartHeight,n=f.chartWidth;b+c>n&&0<b-c?h.x-=c:b+c>n&&(h.x=0);a+z>C&&0<a-z&&(h.y-=z);return h};P=function(){l.hide()};N=function(a){a.target&&a.target.parentNode&&("start"===a.state?h:Ua).call(a.target)};h=function(){var a=l.menuItems[this._itemIdx],b;z();for(b in g)a.box.style[b]=g[b]};Ua=function(){var a=l.menuItems[this._itemIdx],b;for(b in A)a.box.style[b]=A[b];p()};U=function(a){var b=
+l.items[this._itemIdx];b.onclick&&b.onclick.call(b,a);a.originalEvent.stopPropagation?a.originalEvent.stopPropagation():a.originalEvent.cancelBubble=!0;l.hide()};l.showItem=function(a){a=this.menuItems[a];var b=this.height,f=this.itemH;a&&a._isHidden&&(a.box.style.display="",this.height=b+f,a._isHidden=!1,a=C(m),this.left=a.x,this.top=a.y)};l.hideItem=function(a){a=this.menuItems[a];var b=this.height,f=this.itemH;a&&!a._isHidden&&(a.box.style.display="none",this.height=b-f,a._isHidden=!0,a=C(m),this.left=
+a.x,this.top=a.y)};l.redraw=function(){var a=this.menuContainer;this.items=k;a?O.call(this.menuContainer):m&&void 0!==m.x&&void 0!==m.y?(this.menuContainer=t(),O.call(this.menuContainer),a=C(m),this.left=a.x,this.top=a.y,this.menuContainer.style.left=this.left+"px",this.menuContainer.style.top=this.top+"px"):(this.menuContainer=t(),O.call(this.menuContainer))};l.show=function(a){var b=this;a&&void 0!==a.x&&void 0!==a.y?(a=C(a),b.menuContainer.style.left=a.x+"px",b.menuContainer.style.top=a.y+"px"):
+(b.menuContainer.style.left=b.left+"px",b.menuContainer.style.top=b.top+"px");b.menuContainer.style.display="";setTimeout(function(){b.visible=!0;B.click(P)},400)};l.hide=function(){this.visible&&(this.visible=!1,l.menuContainer.style.display="none",l.menuContainer.style.left=-l.width+"px",l.menuContainer.style.top=-l.height+"px",B.unclick(P))};l.update=function(a){a&&a.length&&(this.items=a,this.redraw())};l.updatePosition=function(a){var b=ca.left,h=ca.top;ca=ka(f.container);a?(m=a,a=C(a),this.left=
+a.x,this.top=a.y):(this.left-=b-ca.left,this.top-=h-ca.top)};l.add=function(a){var b=this.menuItems,f=b.length,h;c.setStyle(A);this.width=L(this.width,c.getOriSize(a.text).width);b[f]={};b=b[f].box=F.createElement("div");b.style.height=this.itemH+"px";b.style.lineHeight=this.itemH+"px";for(h in I)b.style[h]=I[h];for(h in A)b.style[h]=A[h];l.menuRect.appendChild(b);b.innerHTML=a.text;W.dem.listen(b,"click",U);W.dem.listen(b,"pointerhover",N);l.menuItems[f].box._itemIdx=f;this.height+=this.itemH};l.removeItems=
+function(){for(var a=this.menuItems,b=a&&a.length,f;b--;)f=a[b],W.dem.unlisten(f.box,"click",U),W.dem.unlisten(f.box,"pointerhover",N),f.box&&f.box.parentNode&&f.box.parentNode.removeChild(f.box);delete this.menuItems;delete this.items};l.setPosition=function(a){void 0!==a.x&&void 0!==a.y&&(this.menuContainer.style.x=a.x,this.menuContainer.style.y=a.y)};l.destroy=function(){this.removeItems();this.menuContainer.parentNode.removeChild(this.menuContainer)};k&&k.length&&(l.redraw(),l.hide());return l},
+getDefinedColor:function(a,b){return a||0===a||""===a?a:b},getFirstValue:ja,getFirstColor:function(a){a=a.split(",")[0];a=a.replace(E,"");""==a&&(a="000000");return a.replace(c,"#")},getColorCodeString:function(a,b){var f="",c,n,d=0,B=b.split(",");for(n=B.length;d<n;d+=1)c=B[d].split("-"),f=2===c.length?"-1"!==c[0].indexOf("dark")?f+(oa(a,100-parseInt(c[1],10))+","):f+(jb(a,100-parseInt(c[1],10))+","):f+(B[d]+",");return f.substring(0,f.length-1)},pluckColor:function(a){if(ba(a))return a=a.split(",")[0],
+a=a.replace(E,""),""==a&&(a="000000"),a.replace(c,"#")},toRaphaelColor:fb,gradientify:Ca,trimString:function(a){a=a.replace(/^\s\s*/,"");for(var b=/\s/,f=a.length;b.test(a.charAt(--f)););return a.slice(0,f+1)},getFirstAlpha:function(a){a=parseInt(a,10);if(isNaN(a)||100<a||0>a)a=100;return a},parsePointValue:Da,parseUnsafeString:sa,parseTooltext:Ab,toPrecision:function(a,b){var f=g(10,b);return k(a*f)/f},hasTouch:u,CREDIT_HREF:S,CREDIT_STRING:"FusionCharts XT Trial",getSentenceCase:function(a){a=a||
+"";return a.charAt(0).toUpperCase()+a.substr(1)},getCrispValues:function(a,b,f){var c=f%2/2;f=k(a+c)-c;a=k(a+b+c)-c-f;return{position:f,distance:a}},regescape:function(a){return a&&a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},regReplaceEscape:ga,isArray:ob,stubFN:function(){},falseFN:function(){return!1},stableSort:function(a,b){var f=a.length,c;for(c=0;c<f;c++)a[c].ssI=c;a.sort(function(a,f){var c=b(a,f);return 0===c?a.ssI-f.ssI:c});for(c=0;c<f;c++)delete a[c].ssI},hasSVG:d,isIE:a,lineHeightFactor:1.2,
+getLinkAction:function(a,b){var f=function(a){return a};return function(c){c=c||this.series&&this.series.chart;var n=a.chart||a.map||{},d=Y(n.unescapelinks,1),n=Y(n.clickurloverridesplotlinks,0),B=ja(this.link,"");c=c&&c.options&&c.options.chart&&c.options.chart.link||"";var w=this.options&&this.options.chart&&this.options.chart.link||"",g=n?ma(c,w,B):ma(B,w,c),A=g,I,k,m,l,v,ca,D,r,O,t;void 0!==g&&(d&&(g=q.decodeURIComponent?q.decodeURIComponent(g):q.unescape(g)),g=g.replace(/^\s+/,"").replace(/\s+$/,
+""),-1!==g.search(/^[a-z]*\s*[\-\:]\s*/i)&&(v=g.split(/\s*[\-\:]\s*/)[0].toLowerCase(),t=v.length),setTimeout(function(){switch(v){case "j":g=g.replace(/^j\s*\-/i,"j-");I=g.indexOf("-",2);-1===I?la(g.slice(2)):la(g.substr(2,I-2).replace(/\s/g,""),g.slice(I+1));break;case "javascript":pb(g.replace(/^javascript\s*\:/i,""));break;case "n":g.replace(/^n\s*\-/i,"n-");q.open(f(g.slice(2),d));break;case "f":g=g.replace(/^f\s*\-/i,"f-");I=g.indexOf("-",2);-1!==I?(k=g.substr(2,I-2))&&q.frames[k]?q.frames[k].location=
+f(g.slice(I+1),d):q.open(f(g.slice(I+1),d),k):q.open(f(g.slice(2),d));break;case "p":g=g.replace(/p\s*\-/i,"p-");I=g.indexOf("-",2);m=g.indexOf(",",2);-1===I&&(I=1);l=f(g.slice(I+1),d);q.open(l,g.substr(2,m-2),g.substr(m+1,I-m-1)).focus();break;case "newchart":case "newmap":":"===g.charAt(t)&&(I=g.indexOf("-",t+1),O=g.substring(t+1,I),t=I);I=g.indexOf("-",t+1);ca=g.substring(t+1,I).toLowerCase();switch(ca){case "xmlurl":case "jsonurl":r=g.substring(I+1,g.length);break;case "xml":case "json":var c=
+D=g.substring(I+1,g.length),C={chart:{}},n,c=c.toLowerCase();if(a.linkeddata)for(n=0;n<a.linkeddata.length;n+=1)a.linkeddata[n].id.toLowerCase()===c&&(C=a.linkeddata[n].linkedchart||a.linkeddata[n].linkedmap);r=C;ca="json"}e.raiseEvent("linkedChartInvoked",{alias:O,linkType:ca.toUpperCase(),data:r},b);break;default:q.location.href=g}e.raiseEvent("linkClicked",{linkProvided:A,linkInvoked:g,linkAction:v&&v.toLowerCase()},b)},0))}},graphics:{parseAlpha:qb,convertColor:Ga,getDarkColor:jb,getLightColor:oa,
+mapSymbolName:function(a,b){var f="circle";a=Da(a);3<=a&&(f=(b?"spoke_":"poly_")+a);return f},getColumnColor:function(a,b,f,c,n,d,B,w,g){var A,I;A=a.split(",");I=b.split(",");d=d.split(",");B=B.split(",");a=a.replace(/\s/g,"").replace(/\,$/,"");g?w={FCcolor:{color:A[0],alpha:I[0]}}:n?(a=A[0],I=I[0],w={FCcolor:{color:jb(a,75)+","+oa(a,10)+","+jb(a,90)+","+oa(a,55)+","+jb(a,80),alpha:I+","+I+","+I+","+I+","+I,ratio:"0,11,14,57,18",angle:w?"90":"0"}},d=[jb(a,70)]):(b=qb(b,A.length),w={FCcolor:{color:a,
+alpha:b,ratio:f,angle:w?-c:c}});return[w,{FCcolor:{color:d[0],alpha:B[0]}}]},getAngle:function(a,b,f){a=180*Math.atan(b/a)/Math.PI;2==f?a=180-a:3==f?a+=180:4==f&&(a=360-a);return a},parseColor:mb,getValidColor:function(a){return V.test(mb(a))&&a},HSBtoRGB:function(a){var b=a[0],f=0,c=0,n=0,d=[],d=a[1]/100;a=a[2]/100;var B=b/60-Math.floor(b/60),w=a*(1-d),g=a*(1-B*d),d=a*(1-(1-B)*d);switch(Math.floor(b/60)%6){case 0:f=a;c=d;n=w;break;case 1:f=g;c=a;n=w;break;case 2:f=w;c=a;n=d;break;case 3:f=w;c=g;
+n=a;break;case 4:f=d;c=w;n=a;break;case 5:f=a,c=w,n=g}return d=[k(255*f),k(255*c),k(255*n)]},RGBtoHSB:function(a){var b=a[0],f=a[1];a=a[2];var c=Math.max(Math.max(b,f),a),n=Math.min(Math.min(b,f),a),d=0,B=0;c==n?d=0:c==b?d=(60*(f-a)/(c-n)+360)%360:c==f?d=60*(a-b)/(c-n)+120:c==a&&(d=60*(b-f)/(c-n)+240);B=0===c?0:(c-n)/c;return[k(d),k(100*B),k(c/255*100)]},RGBtoHex:function(a){return("000000"+(a[0]<<16|a[1]<<8|a[2]).toString(16)).slice(-6)},HEXtoRGB:Cb},setImageDisplayMode:function(a,b,f,c,n,d,B,w){var g=
+c/100*w.width;c=c/100*w.height;w={};var A,I=d-2*n;A=B-2*n;var k=function(a,b,f,c,d,B){var w={};switch(a){case "top":w.y=n;break;case "bottom":w.y=B-c-n;break;case "middle":w.y=(B-c)/2}switch(b){case "left":w.x=n;break;case "right":w.x=d-f-n;break;case "middle":w.x=(d-f)/2}return w};switch(a){case "center":w.width=g;w.height=c;w.y=B/2-c/2;w.x=d/2-g/2;break;case "stretch":w.width=d-2*n;w.height=B-2*n;w.y=n;w.x=n;break;case "tile":w.width=g;w.height=c;w.tileInfo={};w.tileInfo.xCount=a=Math.ceil(I/g);
+w.tileInfo.yCount=A=Math.ceil(A/c);b=k(b,f,g*a,c*A,d,B);w.y=b.y;w.x=b.x;break;case "fit":a=g/c>I/A?I/g:A/c;w.width=g*a;w.height=c*a;b=k(b,f,w.width,w.height,d,B);w.y=b.y;w.x=b.x;break;case "fill":a=g/c>I/A?A/c:I/g;w.width=g*a;w.height=c*a;b=k(b,f,w.width,w.height,d,B);w.y=b.y;w.x=b.x;break;default:b=k(b,f,g,c,d,B),w.width=g,w.height=c,w.y=b.y,w.x=b.x}return w},setLineHeight:Oa,parsexAxisStyles:zb,supportedStyle:{font:"font",fontFamily:"font-family","font-family":"font-family",fontWeight:"font-weight",
+"font-weight":"font-weight",fontSize:"font-size","font-size":"font-size",lineHeight:"line-height","line-height":"line-height",textDecoration:"text-decoration","text-decoration":"text-decoration",color:"color",whiteSpace:"white-space","white-space":"white-space",padding:"padding",margin:"margin",background:"background",backgroundColor:"background-color","background-color":"background-color",backgroundImage:"background-image","background-image":"background-image",backgroundPosition:"background-position",
+"background-position":"background-position",backgroundPositionLeft:"background-position-left","background-position-left":"background-position-left",backgroundPositionTop:"background-position-top","background-position-top":"background-position-top",backgroundRepeat:"background-repeat","background-repeat":"background-repeat",border:"border",borderColor:"border-color","border-color":"border-color",borderStyle:"border-style","border-style":"border-style",borderThickness:"border-thickness","border-thickness":"border-thickness",
+borderTop:"border-top","border-top":"border-top",borderTopColor:"border-top-color","border-top-color":"border-top-color",borderTopStyle:"border-top-style","border-top-style":"border-top-style",borderTopThickness:"border-top-thickness","border-top-thickness":"border-top-thickness",borderRight:"border-right","border-right":"border-right",borderRightColor:"border-right-color","border-right-color":"border-right-color",borderRightStyle:"border-right-style","border-right-style":"border-right-style",borderRightThickness:"border-right-thickness",
+"border-right-thickness":"border-right-thickness",borderBottom:"border-bottom","border-bottom":"border-bottom",borderBottomColor:"border-bottom-color","border-bottom-color":"border-bottom-color",borderBottomStyle:"border-bottom-style","border-bottom-style":"border-bottom-style",borderBottomThickness:"border-bottom-thickness","border-bottom-thickness":"border-bottom-thickness",borderLeft:"border-left","border-left":"border-left",borderLeftColor:"border-left-color","border-left-color":"border-left-color",
+borderLeftStyle:"border-left-style","border-left-Style":"border-left-style",borderLeftThickness:"border-left-thickness","border-left-thickness":"border-left-thickness"},getAxisLimits:ac,createTrendLine:Qb,getDashStyle:Eb,axisLabelAdder:jc,chartAPI:Bb,dataSetDefStore:w,createDialog:ec,isCanvasElemSupported:function(){var a=F.createElement("canvas");return!(!a.getContext||!a.getContext("2d"))},componentDispose:n,getSvgDataurl:function(a,b){B(a,function(a){b("data:image/svg+xml;base64,"+q.btoa(q.unescape(encodeURIComponent('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+
+a))))})},removeCrossDomainImages:Qa,getBrowserDetails:Hb,dataurlToBlob:Tb,downloadCharts:function(a,b,c,n,d){b?wb(a,b,c):f(n,d)}})}]);
+window.FusionCharts&&window.FusionCharts.register("module",["private","vendor.redraphael",function(){var e=this.hcLib,q=window.Raphael,F;(function(){(function(e,d){var a=/[\.\/]/,t=function(){},E=function(a,b){return a-b},c,l,b={n:{}},r=function(a,b){a=String(a);var d=l,k=Array.prototype.slice.call(arguments,2),m=r.listeners(a),e=0,t,u=[],v={},q=[],L=c;c=a;for(var fa=l=0,G=m.length;fa<G;fa++)"zIndex"in m[fa]&&(u.push(m[fa].zIndex),0>m[fa].zIndex&&(v[m[fa].zIndex]=m[fa]));for(u.sort(E);0>u[e];)if(t=
+v[u[e++]],q.push(t.apply(b,k)),l)return l=d,q;for(fa=0;fa<G;fa++)if(t=m[fa],"zIndex"in t)if(t.zIndex==u[e]){q.push(t.apply(b,k));if(l)break;do if(e++,(t=v[u[e]])&&q.push(t.apply(b,k)),l)break;while(t)}else v[t.zIndex]=t;else if(q.push(t.apply(b,k)),l)break;l=d;c=L;return q.length?q:null};r._events=b;r.listeners=function(c){c=c.split(a);var d=b,g,k,m,e,l,r,v,t=[d],L=[];m=0;for(e=c.length;m<e;m++){v=[];l=0;for(r=t.length;l<r;l++)for(d=t[l].n,g=[d[c[m]],d["*"]],k=2;k--;)if(d=g[k])v.push(d),L=L.concat(d.f||
+[]);t=v}return L};r.on=function(c,d){c=String(c);if("function"!=typeof d)return function(){};for(var g=c.split(a),k=b,m=0,e=g.length;m<e;m++)k=k.n,k=k.hasOwnProperty(g[m])&&k[g[m]]||(k[g[m]]={n:{}});k.f=k.f||[];m=0;for(e=k.f.length;m<e;m++)if(k.f[m]==d)return t;k.f.push(d);return function(a){+a==+a&&(d.zIndex=+a)}};r.f=function(a){var b=[].slice.call(arguments,1);return function(){r.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}};r.stop=function(){l=1};r.nt=function(a){return a?
+(new RegExp("(?:\\.|\\/|^)"+a+"(?:\\.|\\/|$)")).test(c):c};r.nts=function(){return c.split(a)};r.off=r.unbind=function(c,d){if(c){var g=c.split(a),k,m,e,l,t,v,u=[b];l=0;for(t=g.length;l<t;l++)for(v=0;v<u.length;v+=e.length-2){e=[v,1];k=u[v].n;if("*"!=g[l])k[g[l]]&&e.push(k[g[l]]);else for(m in k)k.hasOwnProperty(m)&&e.push(k[m]);u.splice.apply(u,e)}l=0;for(t=u.length;l<t;l++)for(k=u[l];k.n;){if(d){if(k.f){v=0;for(g=k.f.length;v<g;v++)if(k.f[v]==d){k.f.splice(v,1);break}!k.f.length&&delete k.f}for(m in k.n)if(k.n.hasOwnProperty(m)&&
+k.n[m].f){e=k.n[m].f;v=0;for(g=e.length;v<g;v++)if(e[v]==d){e.splice(v,1);break}!e.length&&delete k.n[m].f}}else for(m in delete k.f,k.n)k.n.hasOwnProperty(m)&&k.n[m].f&&delete k.n[m].f;k=k.n}}else r._events=b={n:{}}};r.once=function(a,b){var c=function(){r.unbind(a,c);return b.apply(this,arguments)};return r.on(a,c)};r.version="0.4.2";r.toString=function(){return"You are running Eve 0.4.2"};"undefined"!=typeof module&&module.exports?module.exports=r:d||"undefined"==typeof define?e.eve=r:define("eve",
+[],function(){return r})})(this,!0);(function(e,d,a){!a&&"function"===typeof define&&define.amd?define(["eve"],function(a){return d(e,a)}):d(e,e.eve)})(this,function(e,d){function a(b){var f,c;void 0===a._url&&(a._url="");if(a.is(b,"function"))return J?b():d.on("raphael.DOMload",b);if(a.is(b,v))return a._engine.create[T](a,b.splice(0,3+a.is(b[0],S))).add(b);f=Array.prototype.slice.call(arguments,0);return a.is(f[f.length-1],"function")?(c=f.pop(),J?c.call(a._engine.create[T](a,f)):d.on("raphael.DOMload",
+function(){c.call(a._engine.create[T](a,f))})):a._engine.create[T](a,arguments)}function t(){return this.hex}function E(a,b){for(var f=[],c=0,h=a.length;h-2*!b>c;c+=2){var z=[{x:+a[c-2],y:+a[c-1]},{x:+a[c],y:+a[c+1]},{x:+a[c+2],y:+a[c+3]},{x:+a[c+4],y:+a[c+5]}];b?c?h-4==c?z[3]={x:+a[0],y:+a[1]}:h-2==c&&(z[2]={x:+a[0],y:+a[1]},z[3]={x:+a[2],y:+a[3]}):z[0]={x:+a[h-2],y:+a[h-1]}:h-4==c?z[3]=z[2]:c||(z[0]={x:+a[c],y:+a[c+1]});f.push(["C",(-z[0].x+6*z[1].x+z[2].x)/6,(-z[0].y+6*z[1].y+z[2].y)/6,(z[1].x+
+6*z[2].x-z[3].x)/6,(z[1].y+6*z[2].y-z[3].y)/6,z[2].x,z[2].y])}return f}function c(a,b,f,c,h,z,n,C,d){null==d&&(d=1);d=(1<d?1:0>d?0:d)/2;for(var P=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],B=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],N=0,w=0;12>w;w++)var g=d*P[w]+d,A=g*(g*(-3*a+9*f-9*h+3*n)+6*a-12*f+6*h)-3*a+3*f,g=g*(g*(-3*b+9*c-9*z+3*C)+6*b-12*c+6*z)-3*b+3*c,N=N+B[w]*ia(A*A+g*g);return d*N}function l(a,b,f,h,z,n,C,d,P){if(!(0>P||
+c(a,b,f,h,z,n,C,d)<P)){var B=.5,N=1-B,w;for(w=c(a,b,f,h,z,n,C,d,N);.01<Da(w-P);)B/=2,N+=(w<P?1:-1)*B,w=c(a,b,f,h,z,n,C,d,N);return N}}function b(b,f,h){b=a._path2curve(b);f=a._path2curve(f);for(var z,n,C,d,P,B,N,w,g,A,I=h?0:[],U=0,k=b.length;U<k;U++)if(g=b[U],"M"==g[0])z=P=g[1],n=B=g[2];else{"C"==g[0]?(g=[z,n].concat(g.slice(1)),z=g[6],n=g[7]):(g=[z,n,z,n,P,B,P,B],z=P,n=B);for(var K=0,tb=f.length;K<tb;K++)if(A=f[K],"M"==A[0])C=N=A[1],d=w=A[2];else{"C"==A[0]?(A=[C,d].concat(A.slice(1)),C=A[6],d=A[7]):
+(A=[C,d,C,d,N,w,N,w],C=N,d=w);var m;var e=g,Ua=A;m=h;var l=a.bezierBBox(e),v=a.bezierBBox(Ua);if(a.isBBoxIntersect(l,v)){for(var l=c.apply(0,e),v=c.apply(0,Ua),l=va(~~(l/5),1),v=va(~~(v/5),1),X=[],ca=[],r={},D=m?0:[],Q=0;Q<l+1;Q++){var ic=a.findDotsAtSegment.apply(a,e.concat(Q/l));X.push({x:ic.x,y:ic.y,t:Q/l})}for(Q=0;Q<v+1;Q++)ic=a.findDotsAtSegment.apply(a,Ua.concat(Q/v)),ca.push({x:ic.x,y:ic.y,t:Q/v});for(Q=0;Q<l;Q++)for(e=0;e<v;e++){var Ra=X[Q],Dc=X[Q+1],Ua=ca[e],ic=ca[e+1],t=.001>Da(Dc.x-Ra.x)?
+"y":"x",O=.001>Da(ic.x-Ua.x)?"y":"x",Vb;Vb=Ra.x;var qc=Ra.y,xc=Dc.x,H=Dc.y,p=Ua.x,Ia=Ua.y,L=ic.x,za=ic.y;if(va(Vb,xc)<Y(p,L)||Y(Vb,xc)>va(p,L)||va(qc,H)<Y(Ia,za)||Y(qc,H)>va(Ia,za))Vb=void 0;else{var J=(Vb*H-qc*xc)*(p-L)-(Vb-xc)*(p*za-Ia*L),ab=(Vb*H-qc*xc)*(Ia-za)-(qc-H)*(p*za-Ia*L),da=(Vb-xc)*(Ia-za)-(qc-H)*(p-L);if(da){var J=J/da,ab=ab/da,da=+J.toFixed(2),ya=+ab.toFixed(2);Vb=da<+Y(Vb,xc).toFixed(2)||da>+va(Vb,xc).toFixed(2)||da<+Y(p,L).toFixed(2)||da>+va(p,L).toFixed(2)||ya<+Y(qc,H).toFixed(2)||
+ya>+va(qc,H).toFixed(2)||ya<+Y(Ia,za).toFixed(2)||ya>+va(Ia,za).toFixed(2)?void 0:{x:J,y:ab}}else Vb=void 0}Vb&&r[Vb.x.toFixed(4)]!=Vb.y.toFixed(4)&&(r[Vb.x.toFixed(4)]=Vb.y.toFixed(4),Ra=Ra.t+Da((Vb[t]-Ra[t])/(Dc[t]-Ra[t]))*(Dc.t-Ra.t),Ua=Ua.t+Da((Vb[O]-Ua[O])/(ic[O]-Ua[O]))*(ic.t-Ua.t),0<=Ra&&1.001>=Ra&&0<=Ua&&1.001>=Ua&&(m?D++:D.push({x:Vb.x,y:Vb.y,t1:Y(Ra,1),t2:Y(Ua,1)})))}m=D}else m=m?0:[];if(h)I+=m;else{l=0;for(v=m.length;l<v;l++)m[l].segment1=U,m[l].segment2=K,m[l].bez1=g,m[l].bez2=A;I=I.concat(m)}}}return I}
+function r(a,b,f,c,h,z){null!=a?(this.a=+a,this.b=+b,this.c=+f,this.d=+c,this.e=+h,this.f=+z):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}function q(){return this.x+" "+this.y+" "+this.width+" × "+this.height}function p(a,b,f,c,h,z){function n(a,b){var f,c,h,z;h=a;for(c=0;8>c;c++){z=((P*h+d)*h+C)*h-a;if(Da(z)<b)return h;f=(3*P*h+2*d)*h+C;if(1E-6>Da(f))break;h-=z/f}f=0;c=1;h=a;if(h<f)return f;if(h>c)return c;for(;f<c;){z=((P*h+d)*h+C)*h;if(Da(z-a)<b)break;a>z?f=h:c=h;h=(c-f)/2+f}return h}var C=
+3*b,d=3*(c-b)-C,P=1-C-d,B=3*f,N=3*(h-f)-B,w=1-B-N;return function(a,b){var f=n(a,b);return((w*f+N)*f+B)*f}(a,1/(200*z))}function g(a,b){var f=[],c={};this.ms=b;this.times=1;if(a){for(var h in a)a.hasOwnProperty(h)&&(c[ca(h)]=a[h],f.push(ca(h)));f.sort(pc)}this.anim=c;this.top=f[f.length-1];this.percents=f}function k(b,f,c,z,n,C){c=ca(c);var B,N,w,g,I,U,k=b.ms,K={},m={},tb={};if(z)for(U=0,Ua=gb.length;U<Ua;U++){var e=gb[U];if(e.el.id==f.id&&e.anim==b){e.percent!=c?(gb.splice(U,1),w=1):N=e;f.attr(e.totalOrigin);
+break}}else z=+m;U=0;for(var Ua=b.percents.length;U<Ua;U++)if(b.percents[U]==c||b.percents[U]>z*b.top){c=b.percents[U];I=b.percents[U-1]||0;k=k/b.top*(c-I);g=b.percents[U+1];B=b.anim[c];break}else z&&f.attr(b.anim[b.percents[U]]);if(B){if(N)N.initstatus=z,N.start=new Date-N.ms*z;else{for(var l in B)if(B.hasOwnProperty(l)&&(Qb.hasOwnProperty(l)||f.ca[l]))switch(K[l]=f.attr(l),null==K[l]&&(K[l]=Sb[l]),m[l]=B[l],Qb[l]){case S:tb[l]=(m[l]-K[l])/k;break;case "colour":K[l]=a.getRGB(K[l]);U=a.getRGB(m[l]);
+tb[l]={r:(U.r-K[l].r)/k,g:(U.g-K[l].g)/k,b:(U.b-K[l].b)/k};break;case "path":U=Z(K[l],m[l]);e=U[1];K[l]=U[0];tb[l]=[];U=0;for(Ua=K[l].length;U<Ua;U++){tb[l][U]=[0];for(var v=1,X=K[l][U].length;v<X;v++)tb[l][U][v]=(e[U][v]-K[l][U][v])/k}break;case "transform":U=f._;if(Ua=h(U[l],m[l]))for(K[l]=Ua.from,m[l]=Ua.to,tb[l]=[],tb[l].real=!0,U=0,Ua=K[l].length;U<Ua;U++)for(tb[l][U]=[K[l][U][0]],v=1,X=K[l][U].length;v<X;v++)tb[l][U][v]=(m[l][U][v]-K[l][U][v])/k;else Ua=f.matrix||new r,U={_:{transform:U.transform},
+getBBox:function(){return f.getBBox(1)}},K[l]=[Ua.a,Ua.b,Ua.c,Ua.d,Ua.e,Ua.f],P(U,m[l]),m[l]=U._.transform,tb[l]=[(U.matrix.a-Ua.a)/k,(U.matrix.b-Ua.b)/k,(U.matrix.c-Ua.c)/k,(U.matrix.d-Ua.d)/k,(U.matrix.e-Ua.e)/k,(U.matrix.f-Ua.f)/k];break;case "csv":Ua=A(B[l]).split(fb);e=A(K[l]).split(fb);if("clip-rect"==l)for(K[l]=e,tb[l]=[],U=e.length;U--;)tb[l][U]=(Ua[U]-K[l][U])/k;m[l]=Ua;break;default:for(Ua=[].concat(B[l]),e=[].concat(K[l]),tb[l]=[],U=f.ca[l].length;U--;)tb[l][U]=((Ua[U]||0)-(e[U]||0))/k}U=
+B.easing;l=a.easing_formulas[U];if(!l)if((l=A(U).match(jb))&&5==l.length){var Q=l;l=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],k)}}else l=Ab;U=B.start||b.start||+new Date;e={anim:b,percent:c,timestamp:U,start:U+(b.del||0),status:0,initstatus:z||0,stop:!1,ms:k,easing:l,from:K,diff:tb,to:m,el:f,callback:B.callback,prev:I,next:g,repeat:C||b.times,origin:f.attr(),totalOrigin:n};gb.push(e);if(z&&!N&&!w&&(e.stop=!0,e.start=new Date-k*z,1==gb.length))return Rc();w&&(e.start=new Date-e.ms*z);1==gb.length&&
+Vc(Rc)}d("raphael.anim.start."+f.id,f,b)}}function m(a){for(var b=0;b<gb.length;b++)gb[b].el.paper==a&&gb.splice(b--,1)}a.upgrade="1.0.0";a.version="2.1.0";a.eve=d;F=a;var J,T="apply",S="number",v="array",aa=Array.prototype.slice,L=Array.prototype.splice,fa=function(){return function(){}.hasOwnProperty("prototype")}(),G={doc:document,win:e},H=Object.prototype.hasOwnProperty.call(G.win,"Raphael"),D=G.win.Raphael,R=G.doc,W=G.win,O=a.supportsTouch="createTouch"in R,ha=a.supportsOnlyTouch=O&&!(W.navigator.maxTouchPoints||
+W.navigator.msMaxTouchPoints),ka=function(){};a.ca=a.customAttributes=ka.prototype;var ga=function(){this.ca=this.customAttributes=new ka;this._CustomAttributes=function(){};this._CustomAttributes.prototype=this.ca;this._elementsById={};this.id=a._oid++;d("raphael.new",this)},ba=a.fn=ga.prototype=a.prototype,ja={circle:1,rect:1,path:1,ellipse:1,text:1,image:1,group:1},ma="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel dragstart dragmove dragend".split(" "),
+da=a._touchMap={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},na=a._dragEventMap={dragstart:"mousedown",dragmove:"mousemove",dragend:"mouseup"},A=W.String,ca=W.parseFloat,Ia=W.parseInt,Ba=W.Math,va=Ba.max,Y=Ba.min,Da=Ba.abs,sa=Ba.pow,wa=Ba.cos,ob=Ba.sin,ia=Ba.sqrt,bb=Ba.round,ua=Ba.PI,la=ua/180,pb=180/ua,nb=A.prototype.toLowerCase,qb=A.prototype.toUpperCase,Ga=W.Object.prototype.toString,fb=/[, ]+/,Ca=/\{(\d+)\}/g;a._ISURL=/^url\(['"]?([^\)]+?)['"]?\)$/i;var mb=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i,
+jb=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,oa=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,Cb=/,?([achlmqrstvxz]),?/gi,Oa=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,
+zb=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/ig,jc=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ig;
+a._radial_gradient=/^x?r(?:\(([^\)]*?)\))?/;var ac={NaN:1,Infinity:1,"-Infinity":1},ec={hs:1,rg:1},Sb=a._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9","clip-path":"",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"about:blank","letter-spacing":0,"line-height":12,"vertical-align":"middle",opacity:1,path:"M0,0",r:0,rx:0,ry:0,
+src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",visibility:"",title:"",transform:"",rotation:0,width:0,x:0,y:0},Qb=a._availableAnimAttrs={blur:S,"clip-rect":"csv","clip-path":"path",cx:S,cy:S,fill:"colour","fill-opacity":S,"font-size":S,height:S,opacity:S,path:"path",r:S,rx:S,ry:S,stroke:"colour","stroke-opacity":S,"stroke-width":S,transform:"transform",width:S,
+x:S,y:S},Eb={},pc=function(a,b){return ca(a)-ca(b)},Bb=function(){},Ab=function(a){return a},Tb=a._rectPath=function(a,b,f,c,h){return h?[["M",a+h,b],["l",f-2*h,0],["a",h,h,0,0,1,h,h],["l",0,c-2*h],["a",h,h,0,0,1,-h,h],["l",2*h-f,0],["a",h,h,0,0,1,-h,-h],["l",0,2*h-c],["a",h,h,0,0,1,h,-h],["z"]]:[["M",a,b],["l",f,0],["l",0,c],["l",-f,0],["z"]]},Hb=function(a,b,f,c){null==c&&(c=f);return[["M",a,b],["m",0,-c],["a",f,c,0,1,1,0,2*c],["a",f,c,0,1,1,0,-2*c],["z"]]},Qa=a._getPath={group:function(){return!1},
+path:function(a){return a.attr("path")},circle:function(a){a=a.attrs;return Hb(a.cx,a.cy,a.r)},ellipse:function(a){a=a.attrs;return Hb(a.cx,a.cy,a.rx,a.ry)},rect:function(a){a=a.attrs;return Tb(a.x,a.y,a.width,a.height,a.r)},image:function(a){a=a.attrs;return Tb(a.x,a.y,a.width,a.height)},text:function(a){a=a._getBBox();return Tb(a.x,a.y,a.width,a.height)}},wb=a.mapPath=function(a,b){if(!b)return a;var f,c,h,z,n,C,d;a=Z(a);h=0;for(n=a.length;h<n;h++)for(d=a[h],z=1,C=d.length;z<C;z+=2)f=b.x(d[z],d[z+
+1]),c=b.y(d[z],d[z+1]),d[z]=f,d[z+1]=c;return a};a.pick=function(){for(var a,b=0,f=arguments.length;b<f;b+=1)if((a=arguments[b])||!1===a||0===a)return a};var f=a._lastArgIfGroup=function(b,f){var c=b.length-1,h=b[c];if(h&&h.constructor===a.el.constructor&&"group"===h.type)return f&&(b[c]=void 0,delete b[c],L.call(b,c,1)),h},B=a._serializeArgs=function(b){var f=b[0],c,h;if(a.is(f,"object")&&!a.is(f,"array")&&"group"!==f.type)for(c=f,f.path&&(f=f.path)&&!a.is(f,"string")&&a.is(f[0],v),f=1,h=arguments.length;f<
+h;f+=2)c[arguments[f]]||(c[arguments[f]]=arguments[f+1]);else for(c={},f=1,h=arguments.length;f<h;f+=2)c[arguments[f]]=b[(f-1)/2]||arguments[f+1];return c},n=a.merge=function(a,b,f,c,h){var z,C,d,P;h?(c.push(a),h.push(b)):(c=[a],h=[b]);if(b instanceof Array)for(z=0;z<b.length;z+=1){try{C=a[z],d=b[z]}catch(B){continue}if("object"!==typeof d)f&&void 0===d||(a[z]=d);else{if(null===C||"object"!==typeof C)C=a[z]=d instanceof Array?[]:{};P=checkCyclicRef(d,h);-1!==P?C=a[z]=c[P]:n(C,d,f,c,h)}}else for(z in b){try{C=
+a[z],d=b[z]}catch(B){continue}if(null!==d&&"object"===typeof d)if(P=Ga.call(d),"[object Object]"===P){if(null===C||"object"!==typeof C)C=a[z]={};P=checkCyclicRef(d,h);-1!==P?C=a[z]=c[P]:n(C,d,f,c,h)}else"[object Array]"===P?(null!==C&&C instanceof Array||(C=a[z]=[]),P=checkCyclicRef(d,h),-1!==P?C=a[z]=c[P]:n(C,d,f,c,h)):a[z]=d;else a[z]=d}return a};a.extend=function(a,b,f){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||null===b)return a;"object"!==typeof a&&(a=b instanceof
+Array?[]:{});n(a,b,f);return a};var w=a.is=function(a,b){b=nb.call(b);return"finite"==b?!ac.hasOwnProperty(+a):b==v?a instanceof Array:"object"!==b||void 0!==a&&null!==a?"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||Ga.call(a).slice(8,-1).toLowerCase()==b:!1};a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*Ba.random()|0;return("x"==
+a?b:b&3|8).toString(16)});var I=a.clone=fa?function(a){if(Object(a)!==a)return a;var b=new a.constructor,f;for(f in a)"prototype"!==f&&a.hasOwnProperty(f)&&(b[f]=I(a[f]));return b}:function(a){if(Object(a)!==a)return a;var b=new a.constructor,f;for(f in a)a.hasOwnProperty(f)&&(b[f]=I(a[f]));return b};a._g=G;a.type=W.ENABLE_RED_CANVAS&&(W.CanvasRenderingContext2D||R.createElement("canvas").getContext)?"CANVAS":W.SVGAngle||R.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure",
+"1.1")?"SVG":"VML";if("VML"==a.type){var K=R.createElement("div"),X;K.innerHTML='<v:shape adj="1"/>';X=K.firstChild;X.style.behavior="url(#default#VML)";if(!X||"object"!=typeof X.adj)return a.type="";K=null}a.svg=!((a.vml="VML"==a.type)||(a.canvas="CANVAS"==a.type));a._Paper=ga;a._id=0;a._oid=0;a.angle=function(b,f,c,h,z,n){return null==z?(b-=c,f-=h,b||f?(Ba.atan2(-f,-b)*pb+540)%360:0):a.angle(b,f,z,n)-a.angle(c,h,z,n)};a.rad=function(a){return a%360*la};a.deg=function(a){return a*pb%360};a.snapTo=
+function(a,b,f){var c;w(f,"finite")||(f=10);if(w(a,v))for(c=a.length;c--;){if(Da(a[c]-b)<=f)return a[c]}else{a=+a;c=b%a;if(c<f)return b-c;if(c>a-f)return b-c+a}return b};a.setWindow=function(b){d("raphael.setWindow",a,G.win,b);W=G.win=b;R=G.doc=G.win.document;a._engine.initWin&&a._engine.initWin(G.win)};var ta=function(b){if(a.vml){var f=/^\s+|\s+$/g,c;try{var h=new ActiveXObject("htmlfile");h.write("<body>");h.close();c=h.body}catch(z){c=createPopup().document.body}var n=c.createTextRange();ta=qa(function(a){try{c.style.color=
+A(a).replace(f,"");var b=n.queryCommandValue("ForeColor");return"#"+("000000"+((b&255)<<16|b&65280|(b&16711680)>>>16).toString(16)).slice(-6)}catch(h){return"none"}})}else{var C=G.doc.createElement("i");C.title="Raphaël Colour Picker";C.style.display="none";G.doc.body.appendChild(C);ta=qa(function(a){C.style.color=a;return G.doc.defaultView.getComputedStyle(C,"").getPropertyValue("color")})}return ta(b)},Aa=function(){return"hsb("+[this.h,this.s,this.b]+")"},za=function(){return"hsl("+[this.h,this.s,
+this.l]+")"},ya=function(){return this.hex},Ea=function(b,f,c){null==f&&w(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(c=b.b,f=b.g,b=b.r);null==f&&w(b,"string")&&(c=a.getRGB(b),b=c.r,f=c.g,c=c.b);if(1<b||1<f||1<c)b/=255,f/=255,c/=255;return[b,f,c]},lb=function(b,f,c,h){var z={r:b*=255,g:f*=255,b:c*=255,hex:a.rgb(b,f,c),toString:ya};w(h,"finite")&&(z.opacity=h);return z};a.color=function(b){var f;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(f=a.hsb2rgb(b),b.r=f.r,b.g=f.g,b.b=f.b,b.hex=f.hex):a.is(b,"object")&&
+"h"in b&&"s"in b&&"l"in b?(f=a.hsl2rgb(b),b.r=f.r,b.g=f.g,b.b=f.b,b.hex=f.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(f=a.rgb2hsl(b),b.h=f.h,b.s=f.s,b.l=f.l,f=a.rgb2hsb(b),b.v=f.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1));b.toString=ya;return b};a.hsb2rgb=function(a,b,f,c){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(f=a.b,b=a.s,a=a.h,c=a.o);var h,z,n;a=360*a%360/60;n=f*b;b=n*(1-Da(a%2-1));f=h=z=f-n;a=~~a;f+=[n,b,0,0,b,n][a];h+=[b,n,n,b,0,0][a];
+z+=[0,0,b,n,n,b][a];return lb(f,h,z,c)};a.hsl2rgb=function(a,b,f,c){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(f=a.l,b=a.s,a=a.h);if(1<a||1<b||1<f)a/=360,b/=100,f/=100;var h,z,n;a=360*a%360/60;n=2*b*(.5>f?f:1-f);b=n*(1-Da(a%2-1));f=h=z=f-n/2;a=~~a;f+=[n,b,0,0,b,n][a];h+=[b,n,n,b,0,0][a];z+=[0,0,b,n,n,b][a];return lb(f,h,z,c)};a.rgb2hsb=function(a,b,f){f=Ea(a,b,f);a=f[0];b=f[1];f=f[2];var c,h;c=va(a,b,f);h=c-Y(a,b,f);a=((0==h?null:c==a?(b-f)/h:c==b?(f-a)/h+2:(a-b)/h+4)+360)%6*60/360;return{h:a,
+s:0==h?0:h/c,b:c,toString:Aa}};a.rgb2hsl=function(a,b,f){f=Ea(a,b,f);a=f[0];b=f[1];f=f[2];var c,h,z;c=va(a,b,f);h=Y(a,b,f);z=c-h;a=((0==z?null:c==a?(b-f)/z:c==b?(f-a)/z+2:(a-b)/z+4)+360)%6*60/360;c=(c+h)/2;return{h:a,s:0==z?0:.5>c?z/(2*c):z/(2-2*c),l:c,toString:za}};a._path2string=function(){return this.join(",").replace(Cb,"$1")};var qa=a._cacher=function(a,b,f){function c(){var h=aa.call(arguments,0),z=h.join("␀"),n=c.cache=c.cache||{},C=c.count=c.count||[];if(n.hasOwnProperty(z)){a:for(var h=C,
+C=z,d=0,P=h.length;d<P;d++)if(h[d]===C){h.push(h.splice(d,1)[0]);break a}return f?f(n[z]):n[z]}1E3<=C.length&&delete n[C.shift()];C.push(z);n[z]=a[T](b,h);return f?f(n[z]):n[z]}return c};a._preload=function(a,b){var f=R.createElement("img");f.style.cssText="position:absolute;left:-9999em;top:-9999em";f.onload=function(){b.call(this);this.onload=null;R.body.removeChild(this)};f.onerror=function(){R.body.removeChild(this)};R.body.appendChild(f);f.src=a};a.getRGB=qa(function(b){var f,c,h,z,n;b&&w(b,
+"object")&&"opacity"in b&&(f=b.opacity);if(!b||(b=A(b)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:t};if("none"==b)return{r:-1,g:-1,b:-1,hex:"none",toString:t};!ec.hasOwnProperty(b.toLowerCase().substring(0,2))&&"#"!==b.charAt()&&(b=ta(b));if(b=b.match(mb)){b[2]&&(z=Ia(b[2].substring(5),16),h=Ia(b[2].substring(3,5),16),c=Ia(b[2].substring(1,3),16));b[3]&&(z=Ia((n=b[3].charAt(3))+n,16),h=Ia((n=b[3].charAt(2))+n,16),c=Ia((n=b[3].charAt(1))+n,16));b[4]&&(n=b[4].split(oa),c=ca(n[0]),
+"%"==n[0].slice(-1)&&(c*=2.55),h=ca(n[1]),"%"==n[1].slice(-1)&&(h*=2.55),z=ca(n[2]),"%"==n[2].slice(-1)&&(z*=2.55),"rgba"==b[1].toLowerCase().slice(0,4)&&(f=ca(n[3])),n[3]&&"%"==n[3].slice(-1)&&(f/=100));if(b[5])return n=b[5].split(oa),c=ca(n[0]),"%"==n[0].slice(-1)&&(c*=2.55),h=ca(n[1]),"%"==n[1].slice(-1)&&(h*=2.55),z=ca(n[2]),"%"==n[2].slice(-1)&&(z*=2.55),"deg"!=n[0].slice(-3)&&"°"!=n[0].slice(-1)||(c/=360),"hsba"==b[1].toLowerCase().slice(0,4)&&(f=ca(n[3])),n[3]&&"%"==n[3].slice(-1)&&(f/=100),
+a.hsb2rgb(c,h,z,f);if(b[6])return n=b[6].split(oa),c=ca(n[0]),"%"==n[0].slice(-1)&&(c*=2.55),h=ca(n[1]),"%"==n[1].slice(-1)&&(h*=2.55),z=ca(n[2]),"%"==n[2].slice(-1)&&(z*=2.55),"deg"!=n[0].slice(-3)&&"°"!=n[0].slice(-1)||(c/=360),"hsla"==b[1].toLowerCase().slice(0,4)&&(f=ca(n[3])),n[3]&&"%"==n[3].slice(-1)&&(f/=100),a.hsl2rgb(c,h,z,f);b={r:c,g:h,b:z,toString:t};b.hex="#"+(16777216|z|h<<8|c<<16).toString(16).slice(1);a.is(f,"finite")&&(b.opacity=f);return b}return{r:-1,g:-1,b:-1,hex:"none",error:1,
+toString:t}},a);a.tintshade=qa(function(b,f){var c=a.getRGB(b),h;h=255;0>f&&(f*=-1,h=0);1<f&&(f=1);h=0===f?c:{r:h-(h-c.r)*f,g:h-(h-c.g)*f,b:h-(h-c.b)*f,toString:t};h.hex=a.rgb(h.r,h.g,h.b);c.error&&(h.error=c.error);"opacity"in c?(h.rgba="rgba("+[h.r,h.g,h.b,c.opacity].join()+")",h.opacity=c.opacity):h.rgba="rgb("+[h.r,h.g,h.b].join()+")";return h},a);a.hsb=qa(function(b,f,c){return a.hsb2rgb(b,f,c).hex});a.hsl=qa(function(b,f,c){return a.hsl2rgb(b,f,c).hex});a.rgb=qa(function(a,b,f){return"#"+(16777216|
+f|b<<8|a<<16).toString(16).slice(1)});a.getColor=function(a){a=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75};var b=this.hsb2rgb(a.h,a.s,a.b);a.h+=.075;1<a.h&&(a.h=0,a.s-=.2,0>=a.s&&(this.getColor.start={h:0,s:1,b:a.b}));return b.hex};a.getColor.reset=function(){delete this.start};a.parsePathString=function(b){if(!b)return null;var f=yb(b);if(f.arr)return Ja(f.arr);var c={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},h=[];a.is(b,v)&&a.is(b[0],v)&&(h=Ja(b));h.length||A(b).replace(Oa,function(a,
+b,f){var z=[];a=b.toLowerCase();f.replace(jc,function(a,b){b&&z.push(+b)});"m"==a&&2<z.length&&(h.push([b].concat(z.splice(0,2))),a="l",b="m"==b?"l":"L");if("r"==a)h.push([b].concat(z));else for(;z.length>=c[a]&&(h.push([b].concat(z.splice(0,c[a]))),c[a]););});h.toString=a._path2string;f.arr=Ja(h);return h};a.parseTransformString=qa(function(b){if(!b)return null;var f=[];a.is(b,v)&&a.is(b[0],v)&&(f=Ja(b));f.length||A(b).replace(zb,function(a,b,c){var h=[];nb.call(b);c.replace(jc,function(a,b){b&&
+h.push(+b)});f.push([b].concat(h))});f.toString=a._path2string;return f});var yb=function(a){var b=yb.ps=yb.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var f in b)b.hasOwnProperty(f)&&f!=a&&(b[f].sleep--,!b[f].sleep&&delete b[f])});return b[a]};a.findDotsAtSegment=function(a,b,f,c,h,z,n,C,d){var P=1-d,B=sa(P,3),N=sa(P,2),w=d*d,g=w*d,A=B*a+3*N*d*f+3*P*d*d*h+g*n,B=B*b+3*N*d*c+3*P*d*d*z+g*C,N=a+2*d*(f-a)+w*(h-2*f+a),g=b+2*d*(c-b)+w*(z-2*c+b),U=f+2*d*(h-f)+w*(n-2*h+f),w=c+2*
+d*(z-c)+w*(C-2*z+c);a=P*a+d*f;b=P*b+d*c;h=P*h+d*n;z=P*z+d*C;C=90-180*Ba.atan2(N-U,g-w)/ua;(N>U||g<w)&&(C+=180);return{x:A,y:B,m:{x:N,y:g},n:{x:U,y:w},start:{x:a,y:b},end:{x:h,y:z},alpha:C}};a.bezierBBox=function(b,f,c,h,z,n,C,d){a.is(b,"array")||(b=[b,f,c,h,z,n,C,d]);b=xa.apply(null,b);return{x:b.min.x,y:b.min.y,x2:b.max.x,y2:b.max.y,width:b.max.x-b.min.x,height:b.max.y-b.min.y}};a.isPointInsideBBox=function(a,b,f){return b>=a.x&&b<=a.x2&&f>=a.y&&f<=a.y2};a.isBBoxIntersect=function(b,f){var c=a.isPointInsideBBox;
+return c(f,b.x,b.y)||c(f,b.x2,b.y)||c(f,b.x,b.y2)||c(f,b.x2,b.y2)||c(b,f.x,f.y)||c(b,f.x2,f.y)||c(b,f.x,f.y2)||c(b,f.x2,f.y2)||(b.x<f.x2&&b.x>f.x||f.x<b.x2&&f.x>b.x)&&(b.y<f.y2&&b.y>f.y||f.y<b.y2&&f.y>b.y)};a.pathIntersection=function(a,f){return b(a,f)};a.pathIntersectionNumber=function(a,f){return b(a,f,1)};a.isPointInsidePath=function(f,c,h){var z=a.pathBBox(f);return a.isPointInsideBBox(z,c,h)&&(1==b(f,[["M",c,h],["H",z.x2+10]],1)%2||1==b(f,[["M",c,h],["V",z.y2+10]],1)%2)};a._removedFactory=function(a){return function(){d("raphael.log",
+null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var Gb=a.pathBBox=function(a){var b=yb(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Z(a);for(var f=0,c=0,h=[],z=[],n,C=0,d=a.length;C<d;C++)n=a[C],"M"==n[0]?(f=n[1],c=n[2],h.push(f),z.push(c)):(f=xa(f,c,n[1],n[2],n[3],n[4],n[5],n[6]),h=h.concat(f.min.x,f.max.x),z=z.concat(f.min.y,f.max.y),f=n[5],c=n[6]);a=Y[T](0,h);n=Y[T](0,z);h=va[T](0,h);z=va[T](0,z);z={x:a,y:n,x2:h,y2:z,width:h-a,height:z-
+n};b.bbox=I(z);return z},Ja=function(b){b=I(b);b.toString=a._path2string;return b},Ka=a._pathToRelative=function(b){var f=yb(b);if(f.rel)return Ja(f.rel);a.is(b,v)&&a.is(b&&b[0],v)||(b=a.parsePathString(b));var c=[],h=0,z=0,n=0,C=0,d=0;"M"==b[0][0]&&(h=b[0][1],z=b[0][2],n=h,C=z,d++,c.push(["M",h,z]));for(var P=b.length;d<P;d++){var B=c[d]=[],N=b[d];if(N[0]!=nb.call(N[0]))switch(B[0]=nb.call(N[0]),B[0]){case "a":B[1]=N[1];B[2]=N[2];B[3]=N[3];B[4]=N[4];B[5]=N[5];B[6]=+(N[6]-h).toFixed(3);B[7]=+(N[7]-
+z).toFixed(3);break;case "v":B[1]=+(N[1]-z).toFixed(3);break;case "m":n=N[1],C=N[2];default:for(var w=1,g=N.length;w<g;w++)B[w]=+(N[w]-(w%2?h:z)).toFixed(3)}else for(c[d]=[],"m"==N[0]&&(n=N[1]+h,C=N[2]+z),B=0,w=N.length;B<w;B++)c[d][B]=N[B];N=c[d].length;switch(c[d][0]){case "z":h=n;z=C;break;case "h":h+=+c[d][N-1];break;case "v":z+=+c[d][N-1];break;default:h+=+c[d][N-2],z+=+c[d][N-1]}}c.toString=a._path2string;f.rel=Ja(c);return c},Lb=a._pathToAbsolute=function(b){var f=yb(b),c;if(f.abs)return Ja(f.abs);
+a.is(b,v)&&a.is(b&&b[0],v)||(b=a.parsePathString(b));if(!b||!b.length)return c=["M",0,0],c.toString=a._path2string,c;var h=0,z=0,n=0,C=0,d=0;c=[];"M"==b[0][0]&&(h=+b[0][1],z=+b[0][2],n=h,C=z,d++,c[0]=["M",h,z]);for(var P=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),B,N=d,w=b.length;N<w;N++){c.push(d=[]);B=b[N];if(B[0]!=qb.call(B[0]))switch(d[0]=qb.call(B[0]),d[0]){case "A":d[1]=B[1];d[2]=B[2];d[3]=B[3];d[4]=B[4];d[5]=B[5];d[6]=+(B[6]+h);d[7]=+(B[7]+z);break;case "V":d[1]=
++B[1]+z;break;case "H":d[1]=+B[1]+h;break;case "R":for(var g=[h,z].concat(B.slice(1)),A=2,U=g.length;A<U;A++)g[A]=+g[A]+h,g[++A]=+g[A]+z;c.pop();c=c.concat(E(g,P));break;case "M":n=+B[1]+h,C=+B[2]+z;default:for(A=1,U=B.length;A<U;A++)d[A]=+B[A]+(A%2?h:z)}else if("R"==B[0])g=[h,z].concat(B.slice(1)),c.pop(),c=c.concat(E(g,P)),d=["R"].concat(B.slice(-2));else for(g=0,A=B.length;g<A;g++)d[g]=B[g];switch(d[0]){case "Z":h=n;z=C;break;case "H":h=d[1];break;case "V":z=d[1];break;case "M":n=d[d.length-2],
+C=d[d.length-1];default:h=d[d.length-2],z=d[d.length-1]}}c.toString=a._path2string;f.abs=Ja(c);return c},Fb=function(a,b,f,c){return[a,b,f,c,f,c]},pa=function(a,b,f,c,h,z){var n=1/3,d=2/3;return[n*a+d*f,n*b+d*c,n*h+d*f,n*z+d*c,h,z]},ea=function(a,b,f,c,h,z,n,d,C,P){var B=120*ua/180,N=la*(+h||0),w=[],g,A=qa(function(a,b,f){var c=a*wa(f)-b*ob(f);a=a*ob(f)+b*wa(f);return{x:c,y:a}});if(P)K=P[0],g=P[1],z=P[2],U=P[3];else{g=A(a,b,-N);a=g.x;b=g.y;g=A(d,C,-N);d=g.x;C=g.y;wa(la*h);ob(la*h);g=(a-d)/2;K=(b-
+C)/2;U=g*g/(f*f)+K*K/(c*c);1<U&&(U=ia(U),f*=U,c*=U);var U=f*f,I=c*c,U=(z==n?-1:1)*ia(Da((U*I-U*K*K-I*g*g)/(U*K*K+I*g*g)));z=U*f*K/c+(a+d)/2;var U=U*-c*g/f+(b+C)/2,K=Ba.asin(((b-U)/c).toFixed(9));g=Ba.asin(((C-U)/c).toFixed(9));K=a<z?ua-K:K;g=d<z?ua-g:g;0>K&&(K=2*ua+K);0>g&&(g=2*ua+g);n&&K>g&&(K-=2*ua);!n&&g>K&&(g-=2*ua)}if(Da(g-K)>B){var w=g,I=d,k=C;g=K+B*(n&&g>K?1:-1);d=z+f*wa(g);C=U+c*ob(g);w=ea(d,C,f,c,h,0,n,I,k,[g,w,z,U])}z=g-K;h=wa(K);B=ob(K);n=wa(g);g=ob(g);z=Ba.tan(z/4);f=4/3*f*z;z*=4/3*c;
+c=[a,b];a=[a+f*B,b-z*h];b=[d+f*g,C-z*n];d=[d,C];a[0]=2*c[0]-a[0];a[1]=2*c[1]-a[1];if(P)return[a,b,d].concat(w);w=[a,b,d].concat(w).join().split(",");P=[];d=0;for(C=w.length;d<C;d++)P[d]=d%2?A(w[d-1],w[d],N).y:A(w[d],w[d+1],N).x;return P},M=function(a,b,f,c,h,z,n,d,C){var P=1-C;return{x:sa(P,3)*a+3*sa(P,2)*C*f+3*P*C*C*h+sa(C,3)*n,y:sa(P,3)*b+3*sa(P,2)*C*c+3*P*C*C*z+sa(C,3)*d}},xa=qa(function(a,b,f,c,h,z,n,d){var C=h-2*f+a-(n-2*h+f),P=2*(f-a)-2*(h-f),B=a-f,N=(-P+ia(P*P-4*C*B))/2/C,C=(-P-ia(P*P-4*C*
+B))/2/C,w=[b,d],g=[a,n];"1e12"<Da(N)&&(N=.5);"1e12"<Da(C)&&(C=.5);0<N&&1>N&&(N=M(a,b,f,c,h,z,n,d,N),g.push(N.x),w.push(N.y));0<C&&1>C&&(N=M(a,b,f,c,h,z,n,d,C),g.push(N.x),w.push(N.y));C=z-2*c+b-(d-2*z+c);P=2*(c-b)-2*(z-c);B=b-c;N=(-P+ia(P*P-4*C*B))/2/C;C=(-P-ia(P*P-4*C*B))/2/C;"1e12"<Da(N)&&(N=.5);"1e12"<Da(C)&&(C=.5);0<N&&1>N&&(N=M(a,b,f,c,h,z,n,d,N),g.push(N.x),w.push(N.y));0<C&&1>C&&(N=M(a,b,f,c,h,z,n,d,C),g.push(N.x),w.push(N.y));return{min:{x:Y[T](0,g),y:Y[T](0,w)},max:{x:va[T](0,g),y:va[T](0,
+w)}}}),Z=a._path2curve=qa(function(a,b){var f=!b&&yb(a);if(!b&&f.curve)return Ja(f.curve);var c=Lb(a),h=b&&Lb(b),z={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},d=function(a,b){var f,c;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];a[0]in{T:1,Q:1}||(b.qx=b.qy=null);switch(a[0]){case "M":b.X=a[1];b.Y=a[2];break;case "A":a=["C"].concat(ea[T](0,[b.x,b.y].concat(a.slice(1))));break;case "S":f=b.x+(b.x-(b.bx||b.x));c=b.y+(b.y-(b.by||b.y));a=["C",f,c].concat(a.slice(1));
+break;case "T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));a=["C"].concat(pa(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case "Q":b.qx=a[1];b.qy=a[2];a=["C"].concat(pa(b.x,b.y,a[1],a[2],a[3],a[4]));break;case "L":a=["C"].concat(Fb(b.x,b.y,a[1],a[2]));break;case "H":a=["C"].concat(Fb(b.x,b.y,a[1],b.y));break;case "V":a=["C"].concat(Fb(b.x,b.y,b.x,a[1]));break;case "Z":a=["C"].concat(Fb(b.x,b.y,b.X,b.Y))}return a},C=function(a,b){if(7<a[b].length){a[b].shift();for(var f=a[b];f.length;)a.splice(b++,
+0,["C"].concat(f.splice(0,6)));a.splice(b,1);N=va(c.length,h&&h.length||0)}},P=function(a,b,f,z,n){a&&b&&"M"==a[n][0]&&"M"!=b[n][0]&&(b.splice(n,0,["M",z.x,z.y]),f.bx=0,f.by=0,f.x=a[n][1],f.y=a[n][2],N=va(c.length,h&&h.length||0))},B=0,N=va(c.length,h&&h.length||0);for(;B<N;B++){c[B]=d(c[B],z);C(c,B);h&&(h[B]=d(h[B],n));h&&C(h,B);P(c,h,z,n,B);P(h,c,n,z,B);var w=c[B],g=h&&h[B],A=w.length,U=h&&g.length;z.x=w[A-2];z.y=w[A-1];z.bx=ca(w[A-4])||z.x;z.by=ca(w[A-3])||z.y;n.bx=h&&(ca(g[U-4])||n.x);n.by=h&&
+(ca(g[U-3])||n.y);n.x=h&&g[U-2];n.y=h&&g[U-1]}h||(f.curve=Ja(c));return h?[c,h]:c},null,Ja);a._parseDots=qa(function(b){for(var f=[],c=0,h=b.length;c<h;c++){var z={},n=b[c].match(/^([^:]*):?([\d\.]*)/);z.color=a.getRGB(n[1]);if(z.color.error)return null;z.opacity=z.color.opacity;z.color=z.color.hex;n[2]&&(z.offset=n[2]+"%");f.push(z)}c=1;for(h=f.length-1;c<h;c++)if(!f[c].offset){b=ca(f[c-1].offset||0);n=0;for(z=c+1;z<h;z++)if(f[z].offset){n=f[z].offset;break}n||(n=100,z=h);n=ca(n);for(n=(n-b)/(z-
+c+1);c<z;c++)b+=n,f[c].offset=b+"%"}return f});var z=a._tear=function(a,b){a==b.top&&(b.top=a.prev);a==b.bottom&&(b.bottom=a.next);a.next&&(a.next.prev=a.prev);a.prev&&(a.prev.next=a.next)};a._tofront=function(a,b){if(b.top===a)return!1;z(a,b);a.next=null;a.prev=b.top;b.top.next=a;b.top=a;return!0};a._toback=function(a,b){if(b.bottom===a)return!1;z(a,b);a.next=b.bottom;a.prev=null;b.bottom.prev=a;b.bottom=a;return!0};a._insertafter=function(a,b,f,c){z(a,f);a.parent=c;b===c.top&&(c.top=a);b.next&&
+(b.next.prev=a);a.next=b.next;a.prev=b;b.next=a};a._insertbefore=function(a,b,f,c){z(a,f);a.parent=c;b===c.bottom&&(c.bottom=a);b.prev&&(b.prev.next=a);a.prev=b.prev;b.prev=a;a.next=b};var C=a.toMatrix=function(a,b){var f=Gb(a),c={_:{transform:""},getBBox:function(){return f}};P(c,b);return c.matrix};a.transformPath=function(a,b){return wb(a,C(a,b))};var P=a._extractTransform=function(b,f){if(null==f)return b._.transform;f=A(f).replace(/\.{3}|\u2026/g,b._.transform||"");var c=a.parseTransformString(f),
+h=0,z=0,n=0,d=1,C=1,P=b._,n=new r;P.transform=c||[];if(c)for(var z=0,B=c.length;z<B;z++){var N=c[z],w=N.length,g=A(N[0]).toLowerCase(),U=N[0]!=g,I=U?n.invert():0,K;"t"==g&&3==w?U?(w=I.x(0,0),g=I.y(0,0),U=I.x(N[1],N[2]),I=I.y(N[1],N[2]),n.translate(U-w,I-g)):n.translate(N[1],N[2]):"r"==g?2==w?(K=K||b.getBBox(1),n.rotate(N[1],K.x+K.width/2,K.y+K.height/2),h+=N[1]):4==w&&(U?(U=I.x(N[2],N[3]),I=I.y(N[2],N[3]),n.rotate(N[1],U,I)):n.rotate(N[1],N[2],N[3]),h+=N[1]):"s"==g?2==w||3==w?(K=K||b.getBBox(1),n.scale(N[1],
+N[w-1],K.x+K.width/2,K.y+K.height/2),d*=N[1],C*=N[w-1]):5==w&&(U?(U=I.x(N[3],N[4]),I=I.y(N[3],N[4]),n.scale(N[1],N[2],U,I)):n.scale(N[1],N[2],N[3],N[4]),d*=N[1],C*=N[2]):"m"==g&&7==w&&n.add(N[1],N[2],N[3],N[4],N[5],N[6]);P.dirtyT=1;b.matrix=n}b.matrix=n;P.sx=d;P.sy=C;P.deg=h;P.dx=z=n.e;P.dy=n=n.f;1==d&&1==C&&!h&&P.bbox?(P.bbox.x+=+z,P.bbox.y+=+n):P.dirtyT=1},N=function(a){var b=a[0];switch(b.toLowerCase()){case "t":return[b,0,0];case "m":return[b,1,0,0,1,0,0];case "r":return 4==a.length?[b,0,a[2],
+a[3]]:[b,0];case "s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},h=a._equaliseTransform=function(b,f){f=A(f).replace(/\.{3}|\u2026/g,b);b=a.parseTransformString(b)||[];f=a.parseTransformString(f)||[];for(var c=va(b.length,f.length),h=[],z=[],n=0,d,C,P,B;n<c;n++){P=b[n]||N(f[n]);B=f[n]||N(P);if(P[0]!=B[0]||"r"==P[0].toLowerCase()&&(P[2]!=B[2]||P[3]!=B[3])||"s"==P[0].toLowerCase()&&(P[3]!=B[3]||P[4]!=B[4]))return;h[n]=[];z[n]=[];d=0;for(C=va(P.length,B.length);d<C;d++)d in P&&(h[n][d]=
+P[d]),d in B&&(z[n][d]=B[d])}return{from:h,to:z}};a._getContainer=function(b,f,c,h){var z;z=null!=h||a.is(b,"object")?b:G.doc.getElementById(b);if(null!=z)return z.tagName?null==f?{container:z,width:z.style.pixelWidth||z.offsetWidth,height:z.style.pixelHeight||z.offsetHeight}:{container:z,width:f,height:c}:{container:1,x:b,y:f,width:c,height:h}};a.pathToRelative=Ka;a._engine={};a.path2curve=Z;a.matrix=function(a,b,f,c,h,z){return new r(a,b,f,c,h,z)};(function(b){function f(a){return a[0]*a[0]+a[1]*
+a[1]}function c(a){var b=ia(f(a));a[0]&&(a[0]/=b);a[1]&&(a[1]/=b)}b.add=function(a,b,f,c,h,z){var n=[[],[],[]],d=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]];b=[[a,f,h],[b,c,z],[0,0,1]];a&&a instanceof r&&(b=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]);for(a=0;3>a;a++)for(f=0;3>f;f++){for(c=h=0;3>c;c++)h+=d[a][c]*b[c][f];n[a][f]=h}this.a=n[0][0];this.b=n[1][0];this.c=n[0][1];this.d=n[1][1];this.e=n[0][2];this.f=n[1][2]};b.invert=function(){var a=this.a*this.d-this.b*this.c;return new r(this.d/
+a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};b.clone=function(){return new r(this.a,this.b,this.c,this.d,this.e,this.f)};b.translate=function(a,b){this.add(1,0,0,1,a,b)};b.scale=function(a,b,f,c){null==b&&(b=a);(f||c)&&this.add(1,0,0,1,f,c);this.add(a,0,0,b,0,0);(f||c)&&this.add(1,0,0,1,-f,-c)};b.rotate=function(b,f,c){b=a.rad(b);f=f||0;c=c||0;var h=+wa(b).toFixed(9);b=+ob(b).toFixed(9);this.add(h,b,-b,h,f,c);this.add(1,0,0,1,-f,-c)};b.x=function(a,
+b){return a*this.a+b*this.c+this.e};b.y=function(a,b){return a*this.b+b*this.d+this.f};b.get=function(a){return+this[A.fromCharCode(97+a)].toFixed(4)};b.toString=function(){return a.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()};b.toMatrixString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"};b.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+
+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"};b.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};b.split=function(){var b={};b.dx=this.e;b.dy=this.f;var h=[[this.a,this.c],[this.b,this.d]];b.scalex=ia(f(h[0]));c(h[0]);b.shear=h[0][0]*h[1][0]+h[0][1]*h[1][1];h[1]=[h[1][0]-h[0][0]*b.shear,h[1][1]-h[0][1]*b.shear];b.scaley=ia(f(h[1]));c(h[1]);b.shear/=b.scaley;var z=-h[0][1],h=h[1][1];
+0>h?(b.rotate=a.deg(Ba.acos(h)),0>z&&(b.rotate=360-b.rotate)):b.rotate=a.deg(Ba.asin(z));b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate);b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate;b.noRotation=!+b.shear.toFixed(9)&&!b.rotate;return b};b.toTransformString=function(a){a=a||this.split();return a.isSimple?(a.scalex=+a.scalex.toFixed(4),a.scaley=+a.scaley.toFixed(4),a.rotate=+a.rotate.toFixed(4),(a.dx||a.dy?"t"+[a.dx,
+a.dy]:"")+(1!=a.scalex||1!=a.scaley?"s"+[a.scalex,a.scaley,0,0]:"")+(a.rotate?"r"+[a.rotate,0,0]:"")):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}})(r.prototype);var Ua=navigator.userAgent.match(/Version\/(.*?)\s/)||navigator.userAgent.match(/Chrome\/(\d+)/);"Apple Computer, Inc."==navigator.vendor&&(Ua&&4>Ua[1]||"iP"==navigator.platform.slice(0,2))||"Google Inc."==navigator.vendor&&Ua&&8>Ua[1]?ba.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+
+99).attr({stroke:"none"});setTimeout(function(){a.remove()});return!0}:ba.safari=Bb;for(var U=function(){this.returnValue=!1},tb=function(){return this.originalEvent.preventDefault()},ic=function(){this.cancelBubble=!0},Dc=function(){return this.originalEvent.stopPropagation()},xc=a.addEvent=function(){if(G.doc.addEventListener)return function(a,b,f,c){var h=ha&&da[b]||b,z;da[na[b]]&&(h=da[na[b]]);z=function(h){var z=G.doc.documentElement.scrollTop||G.doc.body.scrollTop,n=G.doc.documentElement.scrollLeft||
+G.doc.body.scrollLeft,d;if(O&&da.hasOwnProperty(ha?b:na[b]))for(var C=0,P=h.targetTouches&&h.targetTouches.length;C<P;C++)if(d=h.targetTouches[C].target,d==a||"tspan"==d.nodeName&&d.parentNode==a){d=h;h=h.targetTouches[C];h.originalEvent=d;h.preventDefault=tb;h.stopPropagation=Dc;break}return f.call(c,h,h.clientX+n,h.clientY+z)};a.addEventListener(h,z,!1);return function(){a.removeEventListener(h,z,!1);return!0}};if(G.doc.attachEvent)return function(a,b,f,c){var h=function(a){a=a||G.win.event;var b=
+a.clientX+(G.doc.documentElement.scrollLeft||G.doc.body.scrollLeft),h=a.clientY+(G.doc.documentElement.scrollTop||G.doc.body.scrollTop);a.preventDefault=a.preventDefault||U;a.stopPropagation=a.stopPropagation||ic;return f.call(c,a,b,h)};a.attachEvent("on"+b,h);return function(){a.detachEvent("on"+b,h);return!0}}}(),qc=[],Jc=function(b){for(var f=b.clientX,c=b.clientY,h=G.doc.documentElement.scrollTop||G.doc.body.scrollTop,z=G.doc.documentElement.scrollLeft||G.doc.body.scrollLeft,n,C=qc.length;C--;){n=
+qc[C];if(O&&"touchmove"===b.type)for(var P=b.touches.length,N;P--;){if(N=b.touches[P],N.identifier==n.el._drag.id){f=N.clientX;c=N.clientY;(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();if(!n.el.removed){var P=a._engine.getNode(n.el),B=P.nextSibling,w=P.parentNode,g=P.style.display;G.win.opera&&w.removeChild(P);P.style.display="none";N=n.el.paper.getElementByPoint(f,c);P.style.display=g;G.win.opera&&(B?w.insertBefore(P,B):w.appendChild(P));N&&d("raphael.drag.over."+
+n.el.id,n.el,N);f+=z;c+=h;d("raphael.drag.move."+n.el.id,n.move_scope||n.el,f-n.el._drag.x,c-n.el._drag.y,f,c,b)}}},Vb=function(b){a.undragmove(Jc).undragend(Vb);a.unmousemove(Jc).unmouseup(Vb);for(var f=qc.length,c;f--;)c=qc[f],c.el._drag={},d("raphael.drag.end."+c.el.id,c.end_scope||c.start_scope||c.move_scope||c.el,b);qc=[]},Q=a.el={},uc=ma.length;uc--;)(function(b){a[b]=Q[b]=function(f,c){a.is(f,"function")&&(this.events=this.events||[],this.events.push({name:b,f:f,unbind:xc(this.shape||this.node||
+G.doc,b,f,c||this)}));return this};a["un"+b]=Q["un"+b]=function(a){for(var f=this.events||[],c=f.length;c--;)if(f[c].name==b&&f[c].f==a){f[c].unbind();f.splice(c,1);!f.length&&delete this.events;break}return this}})(ma[uc]);Q.data=function(b,f){var c=Eb[this.id]=Eb[this.id]||{};if(1==arguments.length){if(a.is(b,"object")){for(var h in b)b.hasOwnProperty(h)&&this.data(h,b[h]);return this}d("raphael.data.get."+this.id,this,c[b],b);return c[b]}c[b]=f;d("raphael.data.set."+this.id,this,f,b);return this};
+Q.removeData=function(a){null==a?delete Eb[this.id]:Eb[this.id]&&delete Eb[this.id][a];return this};Q.getData=function(){return I(Eb[this.id]||{})};var ab=[],Zc=function(){this.untrack=xc(G.doc,"mouseup",Ub,this)},Ub=function(){this.untrack();this.untrack=null;return this.fn&&this.fn.apply(this.scope||this.el,arguments)};Q.mouseup=function(b,f,c){if(!c)return a.mouseup.apply(this,arguments);ab.push(c={el:this,fn:b,scope:f});c.unbind=xc(this.shape||this.node||G.doc,"mousedown",Zc,c);return this};Q.unmouseup=
+function(b){for(var f=ab.length,c;f--;)ab[f].el===this&&ab[f].fn===b&&(c=ab[f],c.unbind(),c.untrack&&c.untrack(),ab.splice(f,1));return c?this:a.unmouseup.apply(this,arguments)};Q.hover=function(a,b,f,c){return this.mouseover(a,f).mouseout(b,c||f)};Q.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var lc=[];Q.drag=function(b,f,c,h,z,n){function C(P){var N=G.doc.documentElement.scrollTop||G.doc.body.scrollTop,B=G.doc.documentElement.scrollLeft||G.doc.body.scrollLeft;this._drag.x=P.clientX+
+B;this._drag.y=P.clientY+N;this._drag.id=P.identifier;O&&!ha&&!qc.length&&a.dragmove(Jc).dragend(Vb);!qc.length&&a.mousemove(Jc).mouseup(Vb);qc.push({el:this,move_scope:h,start_scope:z,end_scope:n});f&&d.on("raphael.drag.start."+this.id,f);b&&d.on("raphael.drag.move."+this.id,b);c&&d.on("raphael.drag.end."+this.id,c);d("raphael.drag.start."+this.id,z||h||this,P.clientX+B,P.clientY+N,P)}this._drag={};lc.push({el:this,start:C});O&&!ha&&this.dragstart(C);this.mousedown(C);return this};Q.onDragOver=function(a){a?
+d.on("raphael.drag.over."+this.id,a):d.unbind("raphael.drag.over."+this.id)};Q.undrag=function(){for(var b=lc.length;b--;)lc[b].el==this&&(this.unmousedown(lc[b].start),lc.splice(b,1),d.unbind("raphael.drag.*."+this.id));!lc.length&&a.unmousemove(Jc).unmouseup(Vb);delete this._drag};Q.follow=function(b,f,c){if(b.removed||b.constructor!==a.el.constructor)return this;b.followers.push({el:this,stalk:c={before:"insertBefore",after:"insertAfter"}[c],cb:f});c&&this[c](b);return this};Q.unfollow=function(b){if(b.removed||
+b.constructor!==a.el.constructor)return this;for(var f=0,c=b.followers.length;f<c;f++)if(b.followers[f].el===this){b.followers.splice(f,1);break}return this};ba.hide=function(){this.canvas.style.visibility="hidden";return this};ba.show=function(){this.canvas.style.visibility="";return this};ba.group=function(){var b=arguments,c=f(b,!0),b=a._engine.group(this,b[0],c);return this.__set__&&this.__set__.push(b),this._elementsById[b.id]=b};ba.circle=function(){var b=arguments,c=f(b,!0),b=B(b,"cx",0,"cy",
+0,"r",0,"fill","none","stroke","#000"),c=a._engine.circle(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};ba.rect=function(){var b=arguments,c=f(b,!0),b=B(b,"x",0,"y",0,"width",0,"height",0,"r",0,"fill","none","stroke","#000"),c=a._engine.rect(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};ba.ellipse=function(){var b=arguments,c=f(b,!0),b=B(b,"x",0,"y",0,"rx",0,"ry",0,"fill","none","stroke","#000"),c=a._engine.ellipse(this,b,c);return this.__set__&&
+this.__set__.push(c),this._elementsById[c.id]=c};ba.path=function(){var b=arguments,c=f(b,!0),b=B(b,"path","","fill","none","stroke","#000"),c=a._engine.path(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};ba.image=function(){var b=arguments,c=f(b,!0),b=B(b,"src","","x",0,"y",0,"width",0,"height",0);out=a._engine.image(this,b,c);return this.__set__&&this.__set__.push(out),this._elementsById[out.id]=out};ba.text=function(){var b=arguments,c=f(b,!0),b=B(b,"x",0,"y",0,
+"text","","stroke","none","fill","#000","text-anchor","middle","vertical-align","middle"),c=a._engine.text(this,b,c);return this.__set__&&this.__set__.push(c),this._elementsById[c.id]=c};ba.set=function(b){!a.is(b,"array")&&(b=L.call(arguments,0,arguments.length));var f=new Gc(b);this.__set__&&this.__set__.push(f);return f};ba.setStart=function(a){this.__set__=a||this.set()};ba.setFinish=function(a){a=this.__set__;delete this.__set__;return a};ba.setSize=function(b,f){return a._engine.setSize.call(this,
+b,f)};ba.setViewBox=function(b,f,c,h,z){return a._engine.setViewBox.call(this,b,f,c,h,z)};ba.top=ba.bottom=null;ba.raphael=a;ba.getElementByPoint=function(a,b){var f,c,h=this.canvas,z=G.doc.elementFromPoint(a,b);if(G.win.opera&&"svg"==z.tagName){c=h.getBoundingClientRect();f=h.ownerDocument;var n=f.body,d=f.documentElement;f=c.top+(G.win.pageYOffset||d.scrollTop||n.scrollTop)-(d.clientTop||n.clientTop||0);c=c.left+(G.win.pageXOffset||d.scrollLeft||n.scrollLeft)-(d.clientLeft||n.clientLeft||0);n=h.createSVGRect();
+n.x=a-c;n.y=b-f;n.width=n.height=1;f=h.getIntersectionList(n,null);f.length&&(z=f[f.length-1])}if(!z)return null;for(;z.parentNode&&z!=h.parentNode&&!z.raphael;)z=z.parentNode;z==this.canvas.parentNode&&(z=h);return z=z&&z.raphael?this.getById(z.raphaelid):null};ba.getElementsByBBox=function(b){var f=this.set();this.forEach(function(c){a.isBBoxIntersect(c.getBBox(),b)&&f.push(c)});return f};ba.getById=function(a){return this._elementsById[a]||null};ba.forEach=function(a,b){for(var f=this.bottom;f&&
+!1!==a.call(b,f);)f=f.next;return this};ba.getElementsByPoint=function(a,b){var f=this.set();this.forEach(function(c){c.isPointInside(a,b)&&f.push(c)});return f};Q.isPointInside=function(b,f){var c=this.realPath=this.realPath||Qa[this.type](this),h;return a.isPointInsidePath((h=this.attr("transform"))&&h.length&&a.transformPath(c,h)||c,b,f)};Q.getBBox=function(a){if(this.removed)return{};var b=this._;if(a){if(b.dirty||!b.bboxwt)this.realPath=Qa[this.type](this),b.bboxwt=Gb(this.realPath),b.bboxwt.toString=
+q,b.dirty=0;return b.bboxwt}if(b.dirty||b.dirtyT||!b.bbox){if(b.dirty||!this.realPath)b.bboxwt=0,this.realPath=Qa[this.type](this);b.bbox=Gb(wb(this.realPath,this.matrix));b.bbox.toString=q;b.dirty=b.dirtyT=0}return b.bbox};Q.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());this.__set__&&this.__set__.push(a);return a};Q.glow=function(a){if("text"==this.type)return null;a=a||{};var b=(a.width||10)+(+this.attr("stroke-width")||1),f=a.fill||!1,c=a.opacity||
+.5,h=a.offsetx||0,z=a.offsety||0;a=a.color||"#000";for(var n=b/2,d=this.paper,C=d.set(),P=this.realPath||Qa[this.type](this),P=this.matrix?wb(P,this.matrix):P,N=1;N<n+1;N++)C.push(d.path(P).attr({stroke:a,fill:f?a:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b/n*N).toFixed(3),opacity:+(c/n).toFixed(3)}));return C.insertBefore(this).translate(h,z)};var Sc=function(b,f,h,z,n,d,C,P,N){return null==N?c(b,f,h,z,n,d,C,P):a.findDotsAtSegment(b,f,h,z,n,d,C,P,l(b,f,h,z,n,d,C,
+P,N))},Tc=function(b,f){return function(c,h,z){c=Z(c);for(var n,d,C,P,N="",B={},w=0,g=0,U=c.length;g<U;g++){C=c[g];if("M"==C[0])n=+C[1],d=+C[2];else{P=Sc(n,d,C[1],C[2],C[3],C[4],C[5],C[6]);if(w+P>h){if(f&&!B.start){n=Sc(n,d,C[1],C[2],C[3],C[4],C[5],C[6],h-w);N+=["C"+n.start.x,n.start.y,n.m.x,n.m.y,n.x,n.y];if(z)return N;B.start=N;N=["M"+n.x,n.y+"C"+n.n.x,n.n.y,n.end.x,n.end.y,C[5],C[6]].join();w+=P;n=+C[5];d=+C[6];continue}if(!b&&!f)return n=Sc(n,d,C[1],C[2],C[3],C[4],C[5],C[6],h-w),{x:n.x,y:n.y,
+alpha:n.alpha}}w+=P;n=+C[5];d=+C[6]}N+=C.shift()+C}B.end=N;n=b?w:f?B:a.findDotsAtSegment(n,d,C[0],C[1],C[2],C[3],C[4],C[5],1);n.alpha&&(n={x:n.x,y:n.y,alpha:n.alpha});return n}},Wc=Tc(1),zc=Tc(),Ha=Tc(0,1);a.getTotalLength=Wc;a.getPointAtLength=zc;a.getSubpath=function(a,b,f){if(1E-6>this.getTotalLength(a)-f)return Ha(a,b).end;a=Ha(a,f,1);return b?Ha(a,b).end:a};Q.getTotalLength=function(){if("path"==this.type)return this.node.getTotalLength?this.node.getTotalLength():Wc(this.attrs.path)};Q.getPointAtLength=
+function(a){if("path"==this.type)return zc(this.attrs.path,a)};Q.getSubpath=function(b,f){if("path"==this.type)return a.getSubpath(this.attrs.path,b,f)};var Ta=a.easing_formulas={linear:function(a){return a},"<":function(a){return sa(a,1.7)},">":function(a){return sa(a,.48)},"<>":function(a){var b=.48-a/1.04,f=ia(.1734+b*b);a=f-b;a=sa(Da(a),1/3)*(0>a?-1:1);b=-f-b;b=sa(Da(b),1/3)*(0>b?-1:1);a=a+b+.5;return 3*(1-a)*a*a+a*a*a},backIn:function(a){return a*a*(2.70158*a-1.70158)},backOut:function(a){--a;
+return a*a*(2.70158*a+1.70158)+1},elastic:function(a){return a==!!a?a:sa(2,-10*a)*ob(2*(a-.075)*ua/.3)+1},bounce:function(a){a<1/2.75?a*=7.5625*a:a<2/2.75?(a-=1.5/2.75,a=7.5625*a*a+.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+.9375):(a-=2.625/2.75,a=7.5625*a*a+.984375);return a}};Ta.easeIn=Ta["ease-in"]=Ta["<"];Ta.easeOut=Ta["ease-out"]=Ta[">"];Ta.easeInOut=Ta["ease-in-out"]=Ta["<>"];Ta["back-in"]=Ta.backIn;Ta["back-out"]=Ta.backOut;var gb=[],Vc=e.requestAnimationFrame||e.webkitRequestAnimationFrame||
+e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(a){setTimeout(a,16)},Rc=function(){for(var b=+new Date,f=0;f<gb.length;f++){var c=gb[f];if(!c.el.removed&&!c.paused){var h=b-c.start,z=c.ms,n=c.easing,C=c.from,P=c.diff,N=c.to,B=c.el,w={},g,U={},A;c.initstatus?(h=(c.initstatus*c.anim.top-c.prev)/(c.percent-c.prev)*z,c.status=c.initstatus,delete c.initstatus,c.stop&&gb.splice(f--,1)):c.status=(c.prev+h/z*(c.percent-c.prev))/c.anim.top;if(!(0>h))if(h<z){var I=
+n(h/z),K;for(K in C)if(C.hasOwnProperty(K)){switch(Qb[K]){case S:g=+C[K]+I*z*P[K];break;case "colour":g="rgb("+[rc(bb(C[K].r+I*z*P[K].r)),rc(bb(C[K].g+I*z*P[K].g)),rc(bb(C[K].b+I*z*P[K].b))].join()+")";break;case "path":g=[];h=0;for(n=C[K].length;h<n;h++){g[h]=[C[K][h][0]];N=1;for(U=C[K][h].length;N<U;N++)g[h][N]=(+C[K][h][N]+I*z*P[K][h][N]).toFixed(4);g[h]=g[h].join(" ")}g=g.join(" ");break;case "transform":if(P[K].real)for(g=[],h=0,n=C[K].length;h<n;h++)for(g[h]=[C[K][h][0]],N=1,U=C[K][h].length;N<
+U;N++)g[h][N]=C[K][h][N]+I*z*P[K][h][N];else g=function(a){return+C[K][a]+I*z*P[K][a]},g=[["m",g(0),g(1),g(2),g(3),g(4),g(5)]];break;case "csv":if("clip-rect"==K)for(g=[],h=4;h--;)g[h]=+C[K][h]+I*z*P[K][h];break;default:for(n=[].concat(C[K]),g=[],h=B.ca[K].length;h--;)g[h]=+n[h]+I*z*P[K][h]}w[K]=g}B.attr(w);(function(a,b,f){setTimeout(function(){d("raphael.anim.frame."+a,b,f)})})(B.id,B,c.anim)}else{(function(b,f,c){setTimeout(function(){d("raphael.anim.frame."+f.id,f,c);d("raphael.anim.finish."+
+f.id,f,c);a.is(b,"function")&&b.call(f)})})(c.callback,B,c.anim);B.attr(N);gb.splice(f--,1);if(1<c.repeat&&!c.next){for(A in N)N.hasOwnProperty(A)&&(U[A]=c.totalOrigin[A]);c.el.attr(U);k(c.anim,c.el,c.anim.percents[0],null,c.totalOrigin,c.repeat-1)}c.next&&!c.stop&&k(c.anim,c.el,c.next,null,c.totalOrigin,c.repeat)}}}a.svg&&B&&B.paper&&B.paper.safari();gb.length&&Vc(Rc)},rc=function(a){return 255<a?255:0>a?0:a};Q.animateWith=function(b,f,c,h,z,n){if(this.removed)return n&&n.call(this),this;c=c instanceof
+g?c:a.animation(c,h,z,n);k(c,this,c.percents[0],null,this.attr());c=0;for(h=gb.length;c<h;c++)if(gb[c].anim==f&&gb[c].el==b){gb[h-1].start=gb[c].start;break}return this};Q.onAnimation=function(a){a?d.on("raphael.anim.frame."+this.id,a):d.unbind("raphael.anim.frame."+this.id);return this};g.prototype.delay=function(a){var b=new g(this.anim,this.ms);b.times=this.times;b.del=+a||0;return b};g.prototype.repeat=function(a){var b=new g(this.anim,this.ms);b.del=this.del;b.times=Ba.floor(va(a,0))||1;return b};
+a.animation=function(b,f,c,h){if(b instanceof g)return b;if(a.is(c,"function")||!c)h=h||c||null,c=null;b=Object(b);f=+f||0;var z={},n,C;for(C in b)b.hasOwnProperty(C)&&ca(C)!=C&&ca(C)+"%"!=C&&(n=!0,z[C]=b[C]);return n?(c&&(z.easing=c),h&&(z.callback=h),new g({100:z},f)):new g(b,f)};Q.animate=function(b,f,c,h){if(this.removed)return h&&h.call(this),this;b=b instanceof g?b:a.animation(b,f,c,h);k(b,this,b.percents[0],null,this.attr());return this};Q.setTime=function(a,b){a&&null!=b&&this.status(a,Y(b,
+a.ms)/a.ms);return this};Q.status=function(a,b){var f=[],c=0,h,z;if(null!=b)return k(a,this,-1,Y(b,1)),this;for(h=gb.length;c<h;c++)if(z=gb[c],z.el.id==this.id&&(!a||z.anim==a)){if(a)return z.status;f.push({anim:z.anim,status:z.status})}return a?0:f};Q.pause=function(a){for(var b=0;b<gb.length;b++)gb[b].el.id!=this.id||a&&gb[b].anim!=a||!1===d("raphael.anim.pause."+this.id,this,gb[b].anim)||(gb[b].paused=!0);return this};Q.resume=function(a){for(var b=0;b<gb.length;b++)if(gb[b].el.id==this.id&&(!a||
+gb[b].anim==a)){var f=gb[b];!1!==d("raphael.anim.resume."+this.id,this,f.anim)&&(delete f.paused,this.status(f.anim,f.status))}return this};Q.stop=function(a){for(var b=0;b<gb.length;b++)gb[b].el.id!=this.id||a&&gb[b].anim!=a||!1!==d("raphael.anim.stop."+this.id,this,gb[b].anim)&&gb.splice(b--,1);return this};d.on("raphael.remove",m);d.on("raphael.clear",m);Q.toString=function(){return"Raphaël’s object"};Q.toFront=function(){if(this.removed)return this;var b=a._engine.getNode(this),f=this.parent,
+c=this.followers,h;a._tofront(this,f)&&f.canvas.appendChild(b);b=0;for(f=c.length;b<f;b++)(h=c[b]).stalk&&h.el[h.stalk](this);return this};Q.toBack=function(){if(this.removed)return this;var b=a._engine.getNode(this),f=this.parent,c=this.followers,h;a._toback(this,f)&&f.canvas.insertBefore(b,f.canvas.firstChild);b=0;for(f=c.length;b<f;b++)(h=c[b]).stalk&&h.el[h.stalk](this);return this};Q.insertAfter=function(b){if(this.removed)return this;var f=a._engine.getNode(this),c=a._engine.getLastNode(b),
+h=b.parent.canvas,z=this.followers,n;c.nextSibling?h.insertBefore(f,c.nextSibling):h.appendChild(f);a._insertafter(this,b,this.parent,b.parent);f=0;for(c=z.length;f<c;f++)(n=z[f]).stalk&&n.el[n.stalk](b);return this};Q.insertBefore=function(b){if(this.removed)return this;var f=a._engine.getNode(this),c=a._engine.getNode(b),h=this.followers,z;b.parent.canvas.insertBefore(f,c);a._insertbefore(this,b,this.parent,b.parent);this.parent=b.parent;f=0;for(c=h.length;f<c;f++)(z=h[f]).stalk&&z.el[z.stalk](b);
+return this};Q.appendChild=function(b){if(this.removed||"group"!==this.type)return this;var f=this.followers,c,h,z;if(b.parent===this)return b.toFront(),this;h=a._engine.getNode(b);a._tear(b,b.parent);this.canvas.appendChild(h);b.parent=this;!this.bottom&&(this.bottom=b);b.prev=this.top;b.next=null;this.top&&(this.top.next=b);this.top=b;h=0;for(z=f.length;h<z;h++)(c=f[h]).stalk&&c.el[c.stalk](b);return this};Q.removeChild=function(b){if(this.removed||"group"!==this.type||b.parent!==this)return this;
+var f=a._engine.getNode(b),c=this.paper;a._tear(b,this);c.canvas.appendChild(f);this.parent=c;!c.bottom&&(c.bottom=this);(this.prev=c.top)&&(c.top.next=this);c.top=this;this.next=null;return this};var Gc=function(a){this.items=[];this.length=0;this.type="set";if(a)for(var b=0,f=a.length;b<f;b++)!a[b]||a[b].constructor!=Q.constructor&&a[b].constructor!=Gc||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},oc=Gc.prototype;oc.push=function(){for(var a,b,f=0,c=arguments.length;f<
+c;f++)!(a=arguments[f])||a.constructor!=Q.constructor&&a.constructor!=Gc||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this};oc.pop=function(){this.length&&delete this[this.length--];return this.items.pop()};oc.forEach=function(a,b){for(var f=0,c=this.items.length;f<c&&!1!==a.call(b,this.items[f],f);f++);return this};for(var Na in Q)Q.hasOwnProperty(Na)&&(oc[Na]=function(a){return function(){var b=arguments;return this.forEach(function(f){f[a][T](f,b)})}}(Na));oc.attr=function(b,
+f){if(b&&a.is(b,v)&&a.is(b[0],"object"))for(var c=0,h=b.length;c<h;c++)this.items[c].attr(b[c]);else for(c=0,h=this.items.length;c<h;c++)this.items[c].attr(b,f);return this};oc.clear=function(){for(;this.length;)this.pop()};oc.splice=function(a,b,f){a=0>a?va(this.length+a,0):a;b=va(0,Y(this.length-a,isNaN(b)&&this.length||b));var c=[],h=[],z=[],n;for(n=2;n<arguments.length;n++)z.push(arguments[n]);for(n=0;n<b;n++)h.push(this[a+n]);for(;n<this.length-a;n++)c.push(this[a+n]);var C=z.length;for(n=0;n<
+C+c.length;n++)this.items[a+n]=this[a+n]=n<C?z[n]:c[n-C];for(n=this.items.length=this.length-=b-C;this[n];)delete this[n++];return new Gc(h)};oc.exclude=function(a){for(var b=0,f=this.length;b<f;b++)if(this[b]==a)return this.splice(b,1),!0};oc.animate=function(b,f,c,h){!a.is(c,"function")&&c||(h=c||null);var z=this.items.length,n=z,C=this,d;if(!z)return this;h&&(d=function(){!--z&&h.call(C)});c=a.is(c,"string")?c:d;f=a.animation(b,f,c,d);for(b=this.items[--n].animate(f);n--;)this.items[n]&&!this.items[n].removed&&
+this.items[n].animateWith(b,f,f);return this};oc.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this};oc.getBBox=function(){for(var a=[],b=[],f=[],c=[],h=this.items.length;h--;)if(!this.items[h].removed){var z=this.items[h].getBBox();a.push(z.x);b.push(z.y);f.push(z.x+z.width);c.push(z.y+z.height)}a=Y[T](0,a);b=Y[T](0,b);f=va[T](0,f);c=va[T](0,c);return{x:a,y:b,x2:f,y2:c,width:f-a,height:c-b}};oc.clone=function(a){a=new Gc;for(var b=0,f=this.items.length;b<
+f;b++)a.push(this.items[b].clone());return a};oc.toString=function(){return"Raphaël‘s set"};oc.glow=function(a){var b=this.paper.set();this.forEach(function(f,c){var h=f.glow(a);null!=h&&h.forEach(function(a,f){b.push(a)})});return b};a.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},f=a.face["font-family"],c;for(c in a.face)a.face.hasOwnProperty(c)&&(b.face[c]=a.face[c]);this.fonts[f]?this.fonts[f].push(b):this.fonts[f]=[b];if(!a.svg){b.face["units-per-em"]=
+Ia(a.face["units-per-em"],10);for(var h in a.glyphs)if(a.glyphs.hasOwnProperty(h)&&(f=a.glyphs[h],b.glyphs[h]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k))for(var z in f.k)f.hasOwnProperty(z)&&(b.glyphs[h].k[z]=f.k[z])}return a};ba.getFont=function(b,f,c,h){h=h||"normal";c=c||"normal";f=+f||{normal:400,bold:700,lighter:300,bolder:800}[f]||400;if(a.fonts){var z=a.fonts[b];if(!z){b=new RegExp("(^|\\s)"+b.replace(/[^\w\d\s+!~.:_-]/g,
+"")+"(\\s|$)","i");for(var n in a.fonts)if(a.fonts.hasOwnProperty(n)&&b.test(n)){z=a.fonts[n];break}}var C;if(z)for(n=0,b=z.length;n<b&&(C=z[n],C.face["font-weight"]!=f||C.face["font-style"]!=c&&C.face["font-style"]||C.face["font-stretch"]!=h);n++);return C}};ba.print=function(b,f,c,h,z,n,C){n=n||"middle";C=va(Y(C||0,1),-1);var d=A(c).split(""),P=0,N=0,B="";a.is(h,c)&&(h=this.getFont(h));if(h){c=(z||16)/h.face["units-per-em"];var w=h.face.bbox.split(fb);z=+w[0];var g=w[3]-w[1],U=0;n=+w[1]+("baseline"==
+n?g+ +h.face.descent:g/2);for(var w=0,I=d.length;w<I;w++){if("\n"==d[w])N=k=P=0,U+=g;else var K=N&&h.glyphs[d[w-1]]||{},k=h.glyphs[d[w]],P=P+(N?(K.w||h.w)+(K.k&&K.k[d[w]]||0)+h.w*C:0),N=1;k&&k.d&&(B+=a.transformPath(k.d,["t",P*c,U*c,"s",c,c,z,n,"t",(b-z)/c,(f-n)/c]))}}return this.path(B).attr({fill:"#000",stroke:"none"})};ba.add=function(b){if(a.is(b,"array"))for(var f=this.set(),c=0,h=b.length,z;c<h;c++)z=b[c]||{},ja.hasOwnProperty(z.type)&&f.push(this[z.type]().attr(z));return f};a.format=function(b,
+f){var c=a.is(f,v)?[0].concat(f):arguments;b&&a.is(b,"string")&&c.length-1&&(b=b.replace(Ca,function(a,b){return null==c[++b]?"":c[b]}));return b||""};a.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,f=function(a,f,c){var h=c;f.replace(b,function(a,b,f,c,z){b=b||c;h&&(b in h&&(h=h[b]),"function"==typeof h&&z&&(h=h()))});return h=(null==h||h==c?a:h)+""};return function(b,c){return String(b).replace(a,function(a,b){return f(a,b,c)})}}();a.ninja=
+function(){H?G.win.Raphael=D:delete Raphael;return a};var Sa=a.vml&&.5||0;a.crispBound=qa(function(a,b,f,c,h){var z={},n;a=a||0;b=b||0;f=f||0;c=c||0;h=h||0;n=h%2/2+Sa;z.x=bb(a+n)-n;z.y=bb(b+n)-n;z.width=bb(a+f+n)-n-z.x;z.height=bb(b+c+n)-n-z.y;z["stroke-width"]=h;0===z.width&&0!==f&&(z.width=1);0===z.height&&0!==c&&(z.height=1);return z},a);Q.crisp=function(){var b=this.attrs,f,c=this.attr(["x","y","width","height","stroke-width"]),c=a.crispBound(c.x,c.y,c.width,c.height,c["stroke-width"]);for(f in c)b[f]===
+c[f]&&delete c[f];return this.attr(c)};a.st=oc;a.define=function(b,f,c,h,z,n){var C;if(a.is(b,v))for(n=0,C=b.length;n<C;n++)a.define(b[n]);else if(a.is(b,"object"))a.define(b.name,b[b.name],b.ca,b.fn,b.e,b.data);else if(b&&!a.fn[b])return a.fn[b]=function(){var n=arguments,C=f.apply(this,n),d;if(h&&a.is(h,"object"))for(d in h)C[d]=h[d];if(z&&a.is(z,"object"))for(d in z)C[d]&&C[d](z[d]);if(c){if(a.is(c,"function"))C.ca[b]=c;else for(d in c)C.ca[d]=c[d];C.ca[b]&&(a._lastArgIfGroup(n,!0),C.attr(b,aa.call(n)))}return C},
+c&&(a.fn[b].ca=c),h&&(a.fn[b].fn=h),z&&(a.fn[b].e=z),n&&(a.fn[b].data=n),a.fn[b]};(function(b,f,c){function h(){/in/.test(b.readyState)?setTimeout(h,9):a.eve("raphael.DOMload")}null==b.readyState&&b.addEventListener&&(b.addEventListener(f,c=function(){b.removeEventListener(f,c,!1);b.readyState="complete"},!1),b.readyState="loading");h()})(document,"DOMContentLoaded");d.on("raphael.DOMload",function(){J=!0});(function(){if(a.svg){var b=String,f=parseFloat,c=parseInt,h=Math,z=h.max,n=h.abs,C=h.pow,
+d=h.sqrt,P=/[, ]+/,N=!(!/AppleWebKit/.test(a._g.win.navigator.userAgent)||/Chrome/.test(a._g.win.navigator.userAgent)&&!(29>a._g.win.navigator.appVersion.match(/Chrome\/(\d+)\./)[1])),B=a.eve,w={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},g={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};a._url="";var U=function(a,b){var f=
+a.gradient;if(f){if(f===b)return;f.refCount--;f.refCount||f.parentNode.removeChild(f);delete a.gradient}b&&(a.gradient=b,b.refCount++)},A=a._createNode=function(f,c){if(c){"string"==typeof f&&(f=A(f));for(var h in c)c.hasOwnProperty(h)&&("xlink:"==h.substring(0,6)?f.setAttributeNS("http://www.w3.org/1999/xlink",h.substring(6),b(c[h])):f.setAttribute(h,b(c[h])))}else f=a._g.doc.createElementNS("http://www.w3.org/2000/svg",f);return f},K={userSpaceOnUse:"userSpaceOnUse",objectBoundingBox:"objectBoundingBox"},
+I={pad:"pad",redlect:"reflect",repeat:"repeat"},k=function(c,P){if(!c.paper||!c.paper.defs)return 0;var N="linear",B=c.paper,w=(B.id+"-"+P).replace(/[\(\)\s%:,\xb0#]/g,"_"),g=.5,k=.5,tb,m,l,Ua,e,v=c.node,X=v.style,Q=a._g.doc.getElementById(w);if(!Q){P=b(P).replace(a._radial_gradient,function(a,b){N="radial";b=b&&b.split(",")||[];Ua=b[5];e=b[6];var c=b[0],h=b[1],z=b[2],n=b[3],P=b[4],B=c&&h,w;z&&(tb=/\%/.test(z)?z:f(z));if(Ua===K.userSpaceOnUse)return B&&(g=c,k=h),n&&P&&(m=n,l=P,B||(g=m,k=l)),"";B&&
+(g=f(c),k=f(h),c=2*(.5<k)-1,.25<(w=C(g-.5,2))+C(k-.5,2)&&.25>w&&(k=d(.25-w)*c+.5)&&.5!==k&&(k=k.toFixed(5)-1E-5*c));n&&P&&(m=f(n),l=f(P),c=2*(.5<l)-1,.25<(w=C(m-.5,2))+C(l-.5,2)&&.25>w&&(l=d(.25-w)*c+.5)&&.5!==l&&(l=l.toFixed(5)-1E-5*c),B||(g=m,k=l));return""});P=P.split(/\s*\-\s*/);if("linear"==N){var Q=P.shift(),ca=Q.match(/\((.*)\)/),D,ca=ca&&ca[1]&&ca[1].split(/\s*\,\s*/),Q=-f(Q);if(isNaN(Q))return null;ca&&ca.length?(ca[0]in K?(Ua=ca.shift(),ca[0]in I&&(e=ca.shift())):(ca[4]&&(Ua=ca[4]),ca[5]&&
+(e=ca[5])),D=[ca[0]||"0%",ca[1]||"0%",ca[2]||"100%",ca[3]||"0%"]):(D=[0,0,h.cos(a.rad(Q)),h.sin(a.rad(Q))],Q=1/(z(n(D[2]),n(D[3]))||1),D[2]*=Q,D[3]*=Q,0>D[2]&&(D[0]=-D[2],D[2]=0),0>D[3]&&(D[1]=-D[3],D[3]=0))}ca=a._parseDots(P);if(!ca)return null;Q=A(N+"Gradient",{id:w});Q.refCount=0;Ua in K&&Q.setAttribute("gradientUnits",b(Ua));e in I&&Q.setAttribute("spreadMethod",b(e));"radial"===N?(void 0!==tb&&Q.setAttribute("r",b(tb)),void 0!==m&&void 0!==l&&(Q.setAttribute("cx",b(m)),Q.setAttribute("cy",b(l))),
+Q.setAttribute("fx",b(g)),Q.setAttribute("fy",b(k))):A(Q,{x1:D[0],y1:D[1],x2:D[2],y2:D[3]});D=0;for(var r=ca.length;D<r;D++)Q.appendChild(A("stop",{offset:ca[D].offset?ca[D].offset:D?"100%":"0%","stop-color":ca[D].color||"#fff","stop-opacity":void 0===ca[D].opacity?1:ca[D].opacity}));B.defs.appendChild(Q)}U(c,Q);A(v,{fill:"url('"+a._url+"#"+w+"')",opacity:1,"fill-opacity":1});X.fill="";X.opacity=1;return X.fillOpacity=1},m=function(a){var b=a.getBBox(1);A(a.pattern,{patternTransform:a.matrix.invert()+
+" translate("+b.x+","+b.y+")"})},tb=function(f,c,h){if("path"==f.type){for(var z=b(c).toLowerCase().split("-"),n=f.paper,C=h?"end":"start",d=f.node,P=f.attrs,N=P["stroke-width"],B=z.length,U="classic",K,I,k=3,m=3,tb=5;B--;)switch(z[B]){case "block":case "classic":case "oval":case "diamond":case "open":case "none":U=z[B];break;case "wide":m=5;break;case "narrow":m=2;break;case "long":k=5;break;case "short":k=2}"open"==U?(k+=2,m+=2,tb+=2,K=1,I=h?4:1,z={fill:"none",stroke:P.stroke}):(I=K=k/2,z={fill:P.stroke,
+stroke:"none"});f._.arrows?h?(f._.arrows.endPath&&g[f._.arrows.endPath]--,f._.arrows.endMarker&&g[f._.arrows.endMarker]--):(f._.arrows.startPath&&g[f._.arrows.startPath]--,f._.arrows.startMarker&&g[f._.arrows.startMarker]--):f._.arrows={};if("none"!=U){var B="raphael-marker-"+U,l="raphael-marker-"+C+U+k+m+"-obj"+f.id;a._g.doc.getElementById(B)?g[B]++:(n.defs.appendChild(A(A("path"),{"stroke-linecap":"round",d:w[U],id:B})),g[B]=1);var Ua=a._g.doc.getElementById(l);Ua?(g[l]++,k=Ua.getElementsByTagName("use")[0]):
+(Ua=A(A("marker"),{id:l,markerHeight:m,markerWidth:k,orient:"auto",refX:I,refY:m/2}),k=A(A("use"),{"xlink:href":"#"+B,transform:(h?"rotate(180 "+k/2+" "+m/2+") ":"")+"scale("+k/tb+","+m/tb+")","stroke-width":(1/((k/tb+m/tb)/2)).toFixed(4)}),Ua.appendChild(k),n.defs.appendChild(Ua),g[l]=1);A(k,z);n=K*("diamond"!=U&&"oval"!=U);h?(h=f._.arrows.startdx*N||0,N=a.getTotalLength(P.path)-n*N):(h=n*N,N=a.getTotalLength(P.path)-(f._.arrows.enddx*N||0));z={};z["marker-"+C]="url('"+a._url+"#"+l+"')";if(N||h)z.d=
+a.getSubpath(P.path,h,N);A(d,z);f._.arrows[C+"Path"]=B;f._.arrows[C+"Marker"]=l;f._.arrows[C+"dx"]=n;f._.arrows[C+"Type"]=U;f._.arrows[C+"String"]=c}else h?(h=f._.arrows.startdx*N||0,N=a.getTotalLength(P.path)-h):(h=0,N=a.getTotalLength(P.path)-(f._.arrows.enddx*N||0)),f._.arrows[C+"Path"]&&A(d,{d:a.getSubpath(P.path,h,N)}),delete f._.arrows[C+"Path"],delete f._.arrows[C+"Marker"],delete f._.arrows[C+"dx"],delete f._.arrows[C+"Type"],delete f._.arrows[C+"String"];for(z in g)g.hasOwnProperty(z)&&!g[z]&&
+(f=a._g.doc.getElementById(z))&&f.parentNode.removeChild(f)}},l={"":["none"],none:["none"],"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},Ua=function(f,c,h){var z=l[b(c).toLowerCase()],n,C,d;if(c=z||void 0!==c&&[].concat(c)){n=f.attrs["stroke-width"]||1;h={round:n,square:n,butt:0}[f.attrs["stroke-linecap"]||h["stroke-linecap"]]||0;C=c.length;d=z?n:1;if("none"==c[0])z=c;else for(z=[];C--;)z[C]=c[C]*d+(C%
+2?1:-1)*h,0>=z[C]&&(z[C]=.01+(1>=n?h:0)),isNaN(z[C])&&(z[C]=0);a.is(c,"array")&&A(f.node,{"stroke-dasharray":z.join(",")})}},e=function(a,b){for(var f in b)B("raphael.attr."+f+"."+a.id,a,b[f],f),a.ca[f]&&a.attr(f,b[f])},v=a._setFillAndStroke=function(f,h){if(f.paper.canvas){var C=f.node,d=f.attrs,B=f.paper,w=C.style,g=w.visibility;h&&h.text&&(h.text=h.text.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&<br\/>lt;|&l<br\/>t;|&lt<br\/>;/g,"<<br/>").replace(/&<br\/>gt;|&g<br\/>t;|&gt<br\/>;/g,"><br/>"));
+w.visibility="hidden";for(var K in h)if(h.hasOwnProperty(K)&&a._availableAttrs.hasOwnProperty(K)){var I=h[K];d[K]=I;switch(K){case "blur":f.blur(I);break;case "href":case "title":case "target":var l=C.parentNode;if("a"!=l.tagName.toLowerCase()){if(""==I)break;var e=A("a");e.raphael=!0;e.raphaelid=C.raphaelid;l.insertBefore(e,C);e.appendChild(C);l=e}"target"==K?l.setAttributeNS("http://www.w3.org/1999/xlink","show","blank"==I?"new":I):l.setAttributeNS("http://www.w3.org/1999/xlink",K,I);C.titleNode=
+l;break;case "cursor":w.cursor=I;break;case "transform":f.transform(I);break;case "rotation":a.is(I,"array")?f.rotate.apply(f,I):f.rotate(I);break;case "arrow-start":tb(f,I);break;case "arrow-end":tb(f,I,1);break;case "clip-path":var v=!0;case "clip-rect":l=!v&&b(I).split(P);f._.clipispath=!!v;if(v||4==l.length){f.clip&&f.clip.parentNode.parentNode.removeChild(f.clip.parentNode);var e=A("clipPath"),Q=A(v?"path":"rect");e.id=a.createUUID();A(Q,v?{d:I?d["clip-path"]=a._pathToAbsolute(I):a._availableAttrs.path,
+fill:"none"}:{x:l[0],y:l[1],width:l[2],height:l[3],transform:f.matrix.invert()});e.appendChild(Q);B.defs.appendChild(e);A(C,{"clip-path":"url('"+a._url+"#"+e.id+"')"});f.clip=Q}!I&&(I=C.getAttribute("clip-path"))&&((I=a._g.doc.getElementById(I.replace(/(^url\(#|\)$)/g,"")))&&I.parentNode.removeChild(I),A(C,{"clip-path":""}),delete f.clip);break;case "path":"path"==f.type&&(A(C,{d:I?d.path=a._pathToAbsolute(I):a._availableAttrs.path}),f._.dirty=1,f._.arrows&&("startString"in f._.arrows&&tb(f,f._.arrows.startString),
+"endString"in f._.arrows&&tb(f,f._.arrows.endString,1)));break;case "width":if(C.setAttribute(K,I),f._.dirty=1,d.fx)K="x",I=d.x;else break;case "x":d.fx&&(I=-d.x-(d.width||0));case "rx":if("rx"==K&&"rect"==f.type)break;case "cx":C.setAttribute(K,I);f.pattern&&m(f);f._.dirty=1;break;case "height":if(C.setAttribute(K,I),f._.dirty=1,d.fy)K="y",I=d.y;else break;case "y":d.fy&&(I=-d.y-(d.height||0));case "ry":if("ry"==K&&"rect"==f.type)break;case "cy":C.setAttribute(K,I);f.pattern&&m(f);f._.dirty=1;break;
+case "r":"rect"==f.type?A(C,{rx:I,ry:I}):C.setAttribute(K,I);f._.dirty=1;break;case "src":"image"==f.type&&C.setAttributeNS("http://www.w3.org/1999/xlink","href",I);break;case "stroke-width":if(1!=f._.sx||1!=f._.sy)I/=z(n(f._.sx),n(f._.sy))||1;B._vbSize&&(I*=B._vbSize);N&&0===I&&(I=1E-6);C.setAttribute(K,I);d["stroke-dasharray"]&&Ua(f,d["stroke-dasharray"],h);f._.arrows&&("startString"in f._.arrows&&tb(f,f._.arrows.startString),"endString"in f._.arrows&&tb(f,f._.arrows.endString,1));break;case "stroke-dasharray":Ua(f,
+I,h);break;case "fill":var ca=b(I).match(a._ISURL);if(ca){var e=A("pattern"),D=A("image");e.id=a.createUUID();A(e,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1});A(D,{x:0,y:0,"xlink:href":ca[1]});e.appendChild(D);(function(b){a._preload(ca[1],function(){var a=this.offsetWidth,f=this.offsetHeight;A(b,{width:a,height:f});A(D,{width:a,height:f});B.safari()})})(e);B.defs.appendChild(e);w.fill="url('"+a._url+"#"+e.id+"')";A(C,{fill:w.fill});f.pattern=e;f.pattern&&m(f);break}l=a.getRGB(I);if(!l.error)delete h.gradient,
+delete d.gradient,!a.is(d.opacity,"undefined")&&a.is(h.opacity,"undefined")&&A(C,{opacity:d.opacity}),!a.is(d["fill-opacity"],"undefined")&&a.is(h["fill-opacity"],"undefined")&&A(C,{"fill-opacity":d["fill-opacity"]}),f.gradient&&U(f);else if(("circle"==f.type||"ellipse"==f.type||"r"!=b(I).charAt())&&k(f,I)){if("opacity"in d||"fill-opacity"in d)if(l=a._g.doc.getElementById(C.getAttribute("fill").replace(/^url\(#|\)$/g,"")))l=l.getElementsByTagName("stop"),A(l[l.length-1],{"stop-opacity":("opacity"in
+d?d.opacity:1)*("fill-opacity"in d?d["fill-opacity"]:1)});d.gradient=I;d.fill="none";w.fill="";break}l.hasOwnProperty("opacity")?(A(C,{"fill-opacity":w.fillOpacity=1<l.opacity?l.opacity/100:l.opacity}),f._.fillOpacityDirty=!0):f._.fillOpacityDirty&&a.is(d["fill-opacity"],"undefined")&&a.is(h["fill-opacity"],"undefined")&&(C.removeAttribute("fill-opacity"),w.fillOpacity="",delete f._.fillOpacityDirty);case "stroke":l=a.getRGB(I);C.setAttribute(K,l.hex);w[K]=l.hex;"stroke"==K&&(l.hasOwnProperty("opacity")?
+(A(C,{"stroke-opacity":w.strokeOpacity=1<l.opacity?l.opacity/100:l.opacity}),f._.strokeOpacityDirty=!0):f._.strokeOpacityDirty&&a.is(d["stroke-opacity"],"undefined")&&a.is(h["stroke-opacity"],"undefined")&&(C.removeAttribute("stroke-opacity"),w.strokeOpacity="",delete f._.strokeOpacityDirty),f._.arrows&&("startString"in f._.arrows&&tb(f,f._.arrows.startString),"endString"in f._.arrows&&tb(f,f._.arrows.endString,1)));break;case "gradient":"circle"!=f.type&&"ellipse"!=f.type&&"r"==b(I).charAt()||k(f,
+I);break;case "line-height":case "vertical-align":break;case "visibility":"hidden"===I?f.hide():f.show();break;case "opacity":d.gradient&&!d.hasOwnProperty("stroke-opacity")&&A(C,{"stroke-opacity":1<I?I/100:I});case "fill-opacity":if(d.gradient){if(l=a._g.doc.getElementById(C.getAttribute("fill").replace(/^url\(#|\)$/g,"")))l=l.getElementsByTagName("stop"),A(l[l.length-1],{"stop-opacity":I});break}default:"font-size"==K&&(I=c(I,10)+"px"),l=K.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()}),
+w[l]=I,f._.dirty=1,C.setAttribute(K,I)}}"text"===f.type&&X(f,h);w.visibility=g}},X=function(c,z){if("text"==c.type&&(z.hasOwnProperty("text")||z.hasOwnProperty("font")||z.hasOwnProperty("font-size")||z.hasOwnProperty("x")||z.hasOwnProperty("y")||z.hasOwnProperty("line-height")||z.hasOwnProperty("vertical-align"))){var n=c.attrs,C=c.node,d=C.firstChild&&a._g.doc.defaultView.getComputedStyle(C.firstChild,""),P=d?f(a._g.doc.defaultView.getComputedStyle(C.firstChild,"").getPropertyValue("font-size")):
+10,N=f(z["line-height"]||n["line-height"])||1.2*P,B=n.hasOwnProperty("vertical-align")?n["vertical-align"]:"middle",w=(z.direction||(d?d.getPropertyValue("direction"):"initial")).toLowerCase(),g=!!document.documentMode;isNaN(N)&&(N=1.2*P);a.is(z.text,"array")&&(z.text=z.text.join("<br>"));B="top"===B?-.5:"bottom"===B?.5:0;if(z.hasOwnProperty("text")&&(z.text!==n.text||c._textdirty)){for(n.text=z.text;C.firstChild;)C.removeChild(C.firstChild);for(var I=b(z.text).split(/\n|<br\s*?\/?>/ig),P=[],U=0,
+K=I.length;U<K;U++)d=A("tspan"),U?A(d,{dy:N,x:n.x}):A(d,{dy:N*I.length*B,x:n.x}),I[U]||(d.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),I[U]=" "),d.appendChild(a._g.doc.createTextNode(I[U])),C.appendChild(d),P[U]=d,!g&&"rtl"===w&&U<K-1&&(d=A("tspan"),A(d,{visibility:"hidden","font-size":"0px"}),d.appendChild(a._g.doc.createTextNode("i")),C.appendChild(d));c._textdirty=!1}else for(P=C.getElementsByTagName("tspan"),U=g=0,K=P.length;U<K;U++)if(d=P[U],w=d.attributes[0],
+!w||"visibility"!==w.name&&"visibility"!==w.nodeName||"hidden"!==w.value&&"hidden"!==w.nodeValue)U?A(d,{dy:N,x:n.x}):(w=P[1]&&P[1].attributes[0],!w||"visibility"!==w.name&&"visibility"!==w.nodeName||"hidden"!==w.value&&"hidden"!==w.nodeValue||(g=h.floor(.5*P.length)),A(P[0],{dy:N*(P.length-g)*B,x:n.x}));A(C,{x:n.x,y:n.y});c._.dirty=1;C=c._getBBox();N=n.y-(C.y+C.height/2);if(C.isCalculated)switch(n["vertical-align"]){case "top":N=.75*C.height;break;case "bottom":N=-(.25*C.height);break;default:N=n.y-
+(C.y+.25*C.height)}N&&a.is(N,"finite")&&P[0]&&A(P[0],{dy:N})}},ca=function(b,f,c){c=c||f;c.canvas&&c.canvas.appendChild(b);this.node=this[0]=b;b.raphael=!0;b.raphaelid=this.id=a._oid++;this.matrix=a.matrix();this.realPath=null;this.attrs=this.attrs||{};this.followers=this.followers||[];this.paper=f;this.ca=this.customAttributes=this.customAttributes||new f._CustomAttributes;this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1};this.parent=c;!c.bottom&&(c.bottom=this);(this.prev=c.top)&&(c.top.next=
+this);c.top=this;this.next=null},Q=a.el;ca.prototype=Q;Q.constructor=ca;a._engine.getNode=function(a){a=a.node||a[0].node;return a.titleNode||a};a._engine.getLastNode=function(a){a=a.node||a[a.length-1].node;return a.titleNode||a};Q.rotate=function(a,c,h){if(this.removed)return this;a=b(a).split(P);a.length-1&&(c=f(a[1]),h=f(a[2]));a=f(a[0]);null==h&&(c=h);if(null==c||null==h)h=this.getBBox(1),c=h.x+h.width/2,h=h.y+h.height/2;this.transform(this._.transform.concat([["r",a,c,h]]));return this};Q.scale=
+function(a,c,h,z){var n;if(this.removed)return this;a=b(a).split(P);a.length-1&&(c=f(a[1]),h=f(a[2]),z=f(a[3]));a=f(a[0]);null==c&&(c=a);null==z&&(h=z);if(null==h||null==z)n=this.getBBox(1);h=null==h?n.x+n.width/2:h;z=null==z?n.y+n.height/2:z;this.transform(this._.transform.concat([["s",a,c,h,z]]));return this};Q.translate=function(a,c){if(this.removed)return this;a=b(a).split(P);a.length-1&&(c=f(a[1]));a=f(a[0])||0;this.transform(this._.transform.concat([["t",a,+c||0]]));return this};Q.transform=
+function(b){var f=this._;if(null==b)return f.transform;a._extractTransform(this,b);this.clip&&!f.clipispath&&A(this.clip,{transform:this.matrix.invert()});this.pattern&&m(this);this.node&&A(this.node,{transform:this.matrix});if(1!=f.sx||1!=f.sy)b=this.attrs.hasOwnProperty("stroke-width")?this.attrs["stroke-width"]:1,this.attr({"stroke-width":b});return this};Q.hide=function(){!this.removed&&this.paper.safari(this.node.style.display="none");return this};Q.show=function(){!this.removed&&this.paper.safari(this.node.style.display=
+"");return this};Q.remove=function(){if(!this.removed&&this.parent.canvas){var b=a._engine.getNode(this),f=this.paper,c=f.defs;f.__set__&&f.__set__.exclude(this);B.unbind("raphael.*.*."+this.id);for(this.gradient&&c&&U(this);c=this.followers.pop();)c.el.remove();for(;c=this.bottom;)c.remove();this._drag&&this.undrag();if(this.events)for(;c=this.events.pop();)c.unbind();this.parent.canvas.removeChild(b);this.removeData();delete f._elementsById[this.id];a._tear(this,this.parent);for(c in this)this[c]=
+"function"===typeof this[c]?a._removedFactory(c):null;this.removed=!0}};Q._getBBox=function(){var a=this.node,b={},f=this.attrs,c,h;"none"===a.style.display&&(this.show(),h=!0);try{b=a.getBBox(),"text"==this.type&&(void 0===b.x&&(b.isCalculated=!0,c=f["text-anchor"],b.x=(f.x||0)-b.width*("start"===c?0:"middle"===c?.5:1)),void 0===b.y&&(b.isCalculated=!0,c=f["vertical-align"],b.y=(f.y||0)-b.height*("bottom"===c?1:"middle"===c?.5:0)))}catch(z){}finally{b=b||{}}h&&this.hide();return b};Q.attr=function(b,
+f){if(this.removed)return this;if(null==b){var c={},h;for(h in this.attrs)this.attrs.hasOwnProperty(h)&&(c[h]=this.attrs[h]);c.gradient&&"none"==c.fill&&(c.fill=c.gradient)&&delete c.gradient;c.transform=this._.transform;c.visibility="none"===this.node.style.display?"hidden":"visible";return c}if(null==f&&a.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==b)return this._.transform;if("visibility"==b)return"none"===this.node.style.display?
+"hidden":"visible";var c=b.split(P),z={},n=0;for(h=c.length;n<h;n++)b=c[n],b in this.attrs?z[b]=this.attrs[b]:a.is(this.ca[b],"function")?z[b]=this.ca[b].def:z[b]=a._availableAttrs[b];return h-1?z:z[c[0]]}if(null==f&&a.is(b,"array")){z={};n=0;for(h=b.length;n<h;n++)z[b[n]]=this.attr(b[n]);return z}null!=f?(c={},c[b]=f):null!=b&&a.is(b,"object")&&(c=b);for(n in c)B("raphael.attr."+n+"."+this.id,this,c[n],n);var C={};for(n in this.ca)if(this.ca[n]&&c.hasOwnProperty(n)&&a.is(this.ca[n],"function")&&
+!this.ca["_invoked"+n]){this.ca["_invoked"+n]=!0;h=this.ca[n].apply(this,[].concat(c[n]));delete this.ca["_invoked"+n];for(z in h)h.hasOwnProperty(z)&&(c[z]=h[z]);this.attrs[n]=c[n];!1===h&&(C[n]=c[n],delete c[n])}v(this,c);var d,n=0;for(h=this.followers.length;n<h;n++)d=this.followers[n],d.cb&&!d.cb.call(d.el,c,this)||d.el.attr(c);for(z in C)c[z]=C[z];return this};Q.blur=function(b){if(0!==+b){var f=A("filter"),c=A("feGaussianBlur");this.attrs.blur=b;f.id=a.createUUID();A(c,{stdDeviation:+b||1.5});
+f.appendChild(c);this.paper.defs.appendChild(f);this._blur=f;A(this.node,{filter:"url('"+a._url+"#"+f.id+"')"})}else this._blur&&(this._blur.parentNode.removeChild(this._blur),delete this._blur,delete this.attrs.blur),this.node.removeAttribute("filter")};Q.on=function(b,f){if(this.removed)return this;var c=f;a.supportsTouch&&(b=a._touchMap[b]||"click"===b&&"touchstart"||b,c=function(a){a.preventDefault();f()});this.node["on"+b]=c;return this};a._engine.path=function(a,b,f){var c=A("path");a=new ca(c,
+a,f);a.type="path";v(a,b);e(a,b);return a};a._engine.group=function(a,b,f){var c=A("g");a=new ca(c,a,f);a.type="group";a.canvas=a.node;a.top=a.bottom=null;a._id=b||"";b&&c.setAttribute("class","raphael-group-"+a.id+"-"+b);return a};a._engine.circle=function(a,b,f){var c=A("circle");a=new ca(c,a,f);a.type="circle";v(a,b);e(a,b);return a};a._engine.rect=function(a,b,f){var c=A("rect");a=new ca(c,a,f);a.type="rect";b.rx=b.ry=b.r;v(a,b);e(a,b);return a};a._engine.ellipse=function(a,b,f){var c=A("ellipse");
+a=new ca(c,a,f);a.type="ellipse";v(a,b);e(a,b);return a};a._engine.image=function(a,b,f){var c=A("image");a=new ca(c,a,f);a.type="image";c.setAttribute("preserveAspectRatio","none");v(a,b);e(a,b);return a};a._engine.text=function(a,b,f){var c=A("text");a=new ca(c,a,f);a.type="text";a._textdirty=!0;v(a,b);e(a,b);return a};a._engine.setSize=function(a,b){this.width=a||this.width;this.height=b||this.height;this.canvas.setAttribute("width",this.width);this.canvas.setAttribute("height",this.height);this._viewBox&&
+this.setViewBox.apply(this,this._viewBox);return this};a._engine.create=function(){var b=a._getContainer.apply(0,arguments),f=b&&b.container,c=b.x,h=b.y,z=b.width,b=b.height;if(!f)throw Error("SVG container not found.");var n=A("svg"),C,c=c||0,h=h||0,z=z||512,b=b||342;A(n,{height:b,version:1.1,width:z,xmlns:"http://www.w3.org/2000/svg"});1==f?(n.style.cssText="overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none;cursor:default;position:absolute;left:"+
+c+"px;top:"+h+"px",a._g.doc.body.appendChild(n),C=1):(n.style.cssText="overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none;cursor:default;position:relative",f.firstChild?f.insertBefore(n,f.firstChild):f.appendChild(n));f=new a._Paper;f.width=z;f.height=b;f.canvas=n;A(n,{id:"raphael-paper-"+f.id});f.clear();f._left=f._top=0;C&&(f.renderfix=function(){});f.renderfix();
+return f};a._engine.setViewBox=function(a,b,f,c,h){B("raphael.setViewBox",this,this._viewBox,[a,b,f,c,h]);var n=z(f/this.width,c/this.height),C=this.top,d=h?"meet":"xMinYMin",P;null==a?(this._vbSize&&(n=1),delete this._vbSize,P="0 0 "+this.width+" "+this.height):(this._vbSize=n,P=a+" "+b+" "+f+" "+c);for(A(this.canvas,{viewBox:P,preserveAspectRatio:d});n&&C;)d="stroke-width"in C.attrs?C.attrs["stroke-width"]:1,C.attr({"stroke-width":d}),C._.dirty=1,C._.dirtyT=1,C=C.prev;this._viewBox=[a,b,f,c,!!h];
+return this};a.prototype.renderfix=function(){var a=this.canvas,b=a.style,f;try{f=a.getScreenCTM()||a.createSVGMatrix()}catch(c){f=a.createSVGMatrix()}a=-f.e%1;f=-f.f%1;if(a||f)a&&(this._left=(this._left+a)%1,b.left=this._left+"px"),f&&(this._top=(this._top+f)%1,b.top=this._top+"px")};a.prototype._desc=function(b){var f=this.desc;if(f)for(;f.firstChild;)f.removeChild(f.firstChild);else this.desc=f=A("desc"),this.canvas.appendChild(f);f.appendChild(a._g.doc.createTextNode(a.is(b,"string")?b:"Created with Red Raphaël "+
+a.version))};a.prototype.clear=function(){var a;for(B("raphael.clear",this);a=this.bottom;)a.remove();for(a=this.canvas;a.firstChild;)a.removeChild(a.firstChild);this.bottom=this.top=null;a.appendChild(this.desc=A("desc"));a.appendChild(this.defs=A("defs"))};a.prototype.remove=function(){var b;for(B("raphael.remove",this);b=this.bottom;)b.remove();this.defs&&this.defs.parentNode.removeChild(this.defs);this.desc&&this.desc.parentNode.removeChild(this.desc);this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);
+for(b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0};var r=a.st,D;for(D in Q)Q.hasOwnProperty(D)&&!r.hasOwnProperty(D)&&(r[D]=function(a){return function(){var b=arguments;return this.forEach(function(f){f[a].apply(f,b)})}}(D))}})();(function(){if(a.vml){var b=String,f=parseFloat,c=Math,h=c.round,z=c.max,n=c.min,C=c.sqrt,d=c.abs,P=/[, ]+/,N=a.eve,B={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},w=/([clmz]),?([^clmz]*)/gi,g=/ progid:\S+Blur\([^\)]+\)/g,A=/-?[^,\s-]+/g,
+I={path:1,rect:1,image:1},U={circle:1,ellipse:1},K=function(f){var c=/[ahqstv]/ig,z=a._pathToAbsolute;b(f).match(c)&&(z=a._path2curve);c=/[clmz]/g;if(z==a._pathToAbsolute&&!b(f).match(c))return(f=b(f).replace(w,function(a,b,f){var c=[],z="m"==b.toLowerCase(),n=B[b];f.replace(A,function(a){z&&2==c.length&&(n+=c+B["m"==b?"l":"L"],c=[]);c.push(h(21600*a))});return n+c}))||"m0,0";var c=z(f),n;f=[];for(var C=0,d=c.length;C<d;C++){z=c[C];n=c[C][0].toLowerCase();"z"==n&&(n="x");for(var P=1,N=z.length;P<
+N;P++)n+=h(21600*z[P])+(P!=N-1?",":"");f.push(n)}return f.length?f.join(" "):"m0,0"},k=function(b,f,c){var h=a.matrix();h.rotate(-b,.5,.5);return{dx:h.x(f,c),dy:h.y(f,c)}},l=function(a,b,f,c,h,z){var n=a._,C=a.matrix,P=n.fillpos;a=a.node;var N=a.style,B=1,w="",g=21600/b,A=21600/f;N.visibility="hidden";if(b&&f){a.coordsize=d(g)+" "+d(A);N.rotation=z*(0>b*f?-1:1);z&&(h=k(z,c,h),c=h.dx,h=h.dy);0>b&&(w+="x");0>f&&(w+=" y")&&(B=-1);N.flip=w;a.coordorigin=c*-g+" "+h*-A;if(P||n.fillsize)if(c=(c=a.getElementsByTagName("fill"))&&
+c[0])a.removeChild(c),P&&(h=k(z,C.x(P[0],P[1]),C.y(P[0],P[1])),c.position=h.dx*B+" "+h.dy*B),n.fillsize&&(c.size=n.fillsize[0]*d(b)+" "+n.fillsize[1]*d(f)),a.appendChild(c);N.visibility="visible"}};a._url="";a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var m=function(a,f,c){f=b(f).toLowerCase().split("-");c=c?"end":"start";for(var h=f.length,z="classic",n="medium",C="medium";h--;)switch(f[h]){case "block":case "classic":case "oval":case "diamond":case "open":case "none":z=
+f[h];break;case "wide":case "narrow":C=f[h];break;case "long":case "short":n=f[h]}a=a.node.getElementsByTagName("stroke")[0];a[c+"arrow"]=z;a[c+"arrowlength"]=n;a[c+"arrowwidth"]=C},tb=function(a,b){for(var f in b)N("raphael.attr."+f+"."+a.id,a,b[f],f),a.ca[f]&&a.attr(f,b[f])},e=a._setFillAndStroke=function(c,C){if(c.paper.canvas){c.attrs=c.attrs||{};var d=c.node,N=c.attrs,B=d.style,w=I[c.type]&&(C.x!=N.x||C.y!=N.y||C.width!=N.width||C.height!=N.height||C.cx!=N.cx||C.cy!=N.cy||C.rx!=N.rx||C.ry!=N.ry||
+C.r!=N.r),g=U[c.type]&&(N.cx!=C.cx||N.cy!=C.cy||N.r!=C.r||N.rx!=C.rx||N.ry!=C.ry),A="group"===c.type,k;for(k in C)C.hasOwnProperty(k)&&(N[k]=C[k]);w&&(N.path=a._getPath[c.type](c),c._.dirty=1);C.href&&(d.href=C.href);C.title&&(d.title=C.title);C.target&&(d.target=C.target);C.cursor&&(B.cursor=C.cursor);"blur"in C&&c.blur(C.blur);if(C.path&&"path"==c.type||w)d.path=K(~b(N.path).toLowerCase().indexOf("r")?a._pathToAbsolute(N.path):N.path),"image"==c.type&&(c._.fillpos=[N.x,N.y],c._.fillsize=[N.width,
+N.height],l(c,1,1,0,0,0));"transform"in C&&c.transform(C.transform);"rotation"in C&&(B=C.rotation,a.is(B,"array")?c.rotate.apply(c,B):c.rotate(B));"visibility"in C&&("hidden"===C.visibility?c.hide():c.show());g&&(B=+N.cx,g=+N.cy,w=+N.rx||+N.r||0,k=+N.ry||+N.r||0,d.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",h(21600*(B-w)),h(21600*(g-k)),h(21600*(B+w)),h(21600*(g+k)),h(21600*B)));"clip-rect"in C&&(B=b(C["clip-rect"]).split(P),4==B.length&&(B[0]=+B[0],B[1]=+B[1],B[2]=+B[2]+B[0],B[3]=+B[3]+B[1],
+w=A?d:d.clipRect||a._g.doc.createElement("div"),g=w.style,A?(c.clip=B.slice(),w=c.matrix.offset(),w=[f(w[0]),f(w[1])],B[0]-=w[0],B[1]-=w[1],B[2]-=w[0],B[3]-=w[1],g.width="1px",g.height="1px"):d.clipRect||(g.top="0",g.left="0",g.width=c.paper.width+"px",g.height=c.paper.height+"px",d.parentNode.insertBefore(w,d),w.appendChild(d),w.raphael=!0,w.raphaelid=d.raphaelid,d.clipRect=w),g.position="absolute",g.clip=a.format("rect({1}px {2}px {3}px {0}px)",B)),C["clip-rect"]||(A&&c.clip?(d.style.clip="rect(0px 10800px 10800px 0px)",
+delete c.clip):d.clipRect&&(d.clipRect.style.clip="rect(0px 10800px 10800px 0px)")));c.textpath&&(A=c.textpath.style,C.font&&(A.font=C.font),C["font-family"]&&(A.fontFamily='"'+C["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,"")+'"'),C["font-size"]&&(A.fontSize=C["font-size"]),C["font-weight"]&&(A.fontWeight=C["font-weight"]),C["font-style"]&&(A.fontStyle=C["font-style"]));"arrow-start"in C&&m(c,C["arrow-start"]);"arrow-end"in C&&m(c,C["arrow-end"],1);if(null!=C.opacity||null!=C["stroke-width"]||
+null!=C.fill||null!=C.src||null!=C.stroke||null!=C["stroke-width"]||null!=C["stroke-opacity"]||null!=C["fill-opacity"]||null!=C["stroke-dasharray"]||null!=C["stroke-miterlimit"]||null!=C["stroke-linejoin"]||null!=C["stroke-linecap"]){A=d.getElementsByTagName("fill");B=-1;A=A&&A[0];!A&&(A=Q("fill"));"image"==c.type&&C.src&&(A.src=C.src);C.fill&&(A.on=!0);if(null==A.on||"none"==C.fill||null===C.fill)A.on=!1;A.on&&C.fill&&((g=b(C.fill).match(a._ISURL))?(A.parentNode==d&&d.removeChild(A),A.rotate=!0,
+A.src=g[1],A.type="tile",w=c.getBBox(1),A.position=w.x+" "+w.y,c._.fillpos=[w.x,w.y],a._preload(g[1],function(){c._.fillsize=[this.offsetWidth,this.offsetHeight]})):(g=a.getRGB(C.fill),A.color=g.hex,A.src="",A.type="solid",g.error&&(c.type in{circle:1,ellipse:1}||"r"!=b(C.fill).charAt())&&Ua(c,C.fill,A)?(N.fill="none",N.gradient=C.fill,A.rotate=!1):"opacity"in g&&!("fill-opacity"in C)&&(B=g.opacity)));if(-1!==B||"fill-opacity"in C||"opacity"in C)g=((+N["fill-opacity"]+1||2)-1)*((+N.opacity+1||2)-
+1)*((+B+1||2)-1),g=n(z(g,0),1),A.opacity=g,A.src&&(A.color="none");d.appendChild(A);A=d.getElementsByTagName("stroke")&&d.getElementsByTagName("stroke")[0];B=!1;!A&&(B=A=Q("stroke"));if(C.stroke&&"none"!=C.stroke||C["stroke-width"]||null!=C["stroke-opacity"]||C["stroke-dasharray"]||C["stroke-miterlimit"]||C["stroke-linejoin"]||C["stroke-linecap"])A.on=!0;"none"!=C.stroke&&null!==C.stroke&&null!=A.on&&0!=C.stroke&&0!=C["stroke-width"]||(A.on=!1);g=a.getRGB("stroke"in C?C.stroke:N.stroke);A.on&&C.stroke&&
+(A.color=g.hex);g=((+N["stroke-opacity"]+1||2)-1)*((+N.opacity+1||2)-1)*((+g.opacity+1||2)-1);w=.75*(f(C["stroke-width"])||1);g=n(z(g,0),1);null==C["stroke-width"]&&(w=N["stroke-width"]);C["stroke-width"]&&(A.weight=w);w&&1>w&&(g*=w)&&(A.weight=1);A.opacity=g;C["stroke-linejoin"]&&(A.joinstyle=C["stroke-linejoin"])||B&&(B.joinstyle="miter");A.miterlimit=C["stroke-miterlimit"]||8;C["stroke-linecap"]&&(A.endcap="butt"==C["stroke-linecap"]?"flat":"square"==C["stroke-linecap"]?"square":"round");C["stroke-dasharray"]&&
+(g={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"},A.dashstyle=g.hasOwnProperty(C["stroke-dasharray"])?g[C["stroke-dasharray"]]:C["stroke-dasharray"].join&&C["stroke-dasharray"].join(" ")||"");B&&d.appendChild(A)}if("text"==c.type){c.paper.canvas.style.display="";d=c.paper.span;A=N.font&&N.font.match(/\d+(?:\.\d*)?(?=px)/);g=N["line-height"]&&(N["line-height"]+"").match(/\d+(?:\.\d*)?(?=px)/);
+B=d.style;N.font&&(B.font=N.font);N["font-family"]&&(B.fontFamily=N["font-family"]);N["font-weight"]&&(B.fontWeight=N["font-weight"]);N["font-style"]&&(B.fontStyle=N["font-style"]);A=f(N["font-size"]||A&&A[0])||10;B.fontSize=100*A+"px";g=f(N["line-height"]||g&&g[0])||12;N["line-height"]&&(B.lineHeight=100*g+"px");a.is(C.text,"array")&&(C.text=c.textpath.string=C.text.join("\n").replace(/<br\s*?\/?>/ig,"\n"));c.textpath.string&&(d.innerHTML=b(c.textpath.string).replace(/</g,"&#60;").replace(/&/g,"&#38;").replace(/\n/g,
+"<br>"));d=d.getBoundingClientRect();c.W=N.w=(d.right-d.left)/100;c.H=N.h=(d.bottom-d.top)/100;c.X=N.x;c.Y=N.y;switch(N["vertical-align"]){case "top":c.bby=c.H/2;break;case "bottom":c.bby=-c.H/2;break;default:c.bby=0}("x"in C||"y"in C||void 0!==c.bby)&&(c.path.v=a.format("m{0},{1}l{2},{1}",h(21600*N.x),h(21600*(N.y+(c.bby||0))),h(21600*N.x)+1));d="x y text font font-family font-weight font-style font-size line-height".split(" ");A=0;for(B=d.length;A<B;A++)if(d[A]in C){c._.dirty=1;break}switch(N["text-anchor"]){case "start":c.textpath.style["v-text-align"]=
+"left";c.bbx=c.W/2;break;case "end":c.textpath.style["v-text-align"]="right";c.bbx=-c.W/2;break;default:c.textpath.style["v-text-align"]="center",c.bbx=0}c.textpath.style["v-text-kern"]=!0}}},Ua=function(c,h,z){c.attrs=c.attrs||{};var n=Math.pow,d="linear",N=".5 .5";c.attrs.gradient=h;h=b(h).replace(a._radial_gradient,function(a,b){d="radial";b=b&&b.split(",")||[];var c=b[3],h=b[4];c&&h&&(c=f(c),h=f(h),.25<n(c-.5,2)+n(h-.5,2)&&(h=C(.25-n(c-.5,2))*(2*(.5<h)-1)+.5),N=c+" "+h);return""});h=h.split(/\s*\-\s*/);
+if("linear"==d){var P=h.shift(),P=-f(P);if(isNaN(P))return null}h=a._parseDots(h);if(!h)return null;c=c.shape||c.node;if(h.length){z.parentNode==c&&c.removeChild(z);z.on=!0;z.method="none";z.color=h[0].color;z.color2=h[h.length-1].color;for(var B=[],w=1,g=void 0===h[0].opacity?1:h[0].opacity,A=0,I=h.length;A<I;A++)h[A].offset&&B.push(h[A].offset+" "+h[A].color),void 0!==h[A].opacity&&(w=h[A].opacity);z.colors=B.length?B.join():"0% "+z.color;z.opacity=w;z["o:opacity2"]=g;"radial"==d?(z.type="gradientTitle",
+z.focus="100%",z.focussize="0 0",z.focusposition=N,z.angle=0):(z.type="gradient",z.angle=(270-P)%360);c.appendChild(z)}return 1},v=function(b,f,c){c=c||f;var h;c.canvas&&c.canvas.appendChild(b);h=Q("skew");h.on=!0;b.appendChild(h);this.skew=h;this.node=this[0]=b;b.raphael=!0;b.raphaelid=this.id=a._oid++;this.Y=this.X=0;this.attrs=this.attrs||{};this.followers=this.followers||[];this.paper=f;this.ca=this.customAttributes=this.customAttributes||new f._CustomAttributes;this.matrix=a.matrix();this._=
+{transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1};this.parent=c;!c.bottom&&(c.bottom=this);(this.prev=c.top)&&(c.top.next=this);c.top=this;this.next=null},c=a.el;v.prototype=c;c.constructor=v;c.transform=function(f){if(null==f)return this._.transform;var c=this.paper._viewBoxShift,h=c?"s"+[c.scale,c.scale]+"-1-1t"+[c.dx,c.dy]:"",z;c&&(z=f=b(f).replace(/\.{3}|\u2026/g,this._.transform||""));a._extractTransform(this,h+f);var c=this.matrix.clone(),n=this.skew;f=this.node;var h=~b(this.attrs.fill).indexOf("-"),
+C=!b(this.attrs.fill).indexOf("url(");c.translate(-.5,-.5);C||h||"image"==this.type?(n.matrix="1 0 0 1",n.offset="0 0",n=c.split(),h&&n.noRotation||!n.isSimple?(f.style.filter=c.toFilter(),c=this.getBBox(),h=this.getBBox(1),C=c.x2&&h.x2&&"x2"||"x",n=c.y2&&h.y2&&"y2"||"y",C=c[C]-h[C],c=c[n]-h[n],f.coordorigin=-21600*C+" "+-21600*c,l(this,1,1,C,c,0)):(f.style.filter="",l(this,n.scalex,n.scaley,n.dx,n.dy,n.rotate))):(f.style.filter="",n.matrix=b(c),n.offset=c.offset());z&&(this._.transform=z);return this};
+c.rotate=function(a,c,h){if(this.removed)return this;if(null!=a){a=b(a).split(P);a.length-1&&(c=f(a[1]),h=f(a[2]));a=f(a[0]);null==h&&(c=h);if(null==c||null==h)h=this.getBBox(1),c=h.x+h.width/2,h=h.y+h.height/2;this._.dirtyT=1;this.transform(this._.transform.concat([["r",a,c,h]]));return this}};c.translate=function(a,c){if(this.removed)return this;a=b(a).split(P);a.length-1&&(c=f(a[1]));a=f(a[0])||0;c=+c||0;this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=c);this.transform(this._.transform.concat([["t",
+a,c]]));return this};c.scale=function(a,c,h,z){if(this.removed)return this;a=b(a).split(P);a.length-1&&(c=f(a[1]),h=f(a[2]),z=f(a[3]),isNaN(h)&&(h=null),isNaN(z)&&(z=null));a=f(a[0]);null==c&&(c=a);null==z&&(h=z);if(null==h||null==z)var n=this.getBBox(1);h=null==h?n.x+n.width/2:h;z=null==z?n.y+n.height/2:z;this.transform(this._.transform.concat([["s",a,c,h,z]]));this._.dirtyT=1;return this};c.hide=function(a){!this.removed&&(this.node.style.display="none");return this};c.show=function(a){!this.removed&&
+(this.node.style.display="");return this};c._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y+(this.bby||0)-this.H/2,width:this.W,height:this.H}};c.remove=function(){if(!this.removed&&this.parent.canvas){var b=a._engine.getNode(this),f=this.paper,c=this.shape;f.__set__&&f.__set__.exclude(this);N.unbind("raphael.*.*."+this.id);c&&c.parentNode.removeChild(c);for(b.parentNode&&b.parentNode.removeChild(b);b=this.followers.pop();)b.el.remove();for(;b=this.bottom;)b.remove();
+this._drag&&this.undrag();if(this.events)for(;b=this.events.pop();)b.unbind();this.removeData();delete f._elementsById[this.id];a._tear(this,this.parent);for(b in this)this[b]="function"===typeof this[b]?a._removedFactory(b):null;this.removed=!0}};c.attr=function(b,f){if(this.removed)return this;if(null==b){var c={},h;for(h in this.attrs)this.attrs.hasOwnProperty(h)&&(c[h]=this.attrs[h]);c.gradient&&"none"==c.fill&&(c.fill=c.gradient)&&delete c.gradient;c.transform=this._.transform;c.visibility="none"===
+this.node.style.display?"hidden":"visible";return c}if(null==f&&a.is(b,"string")){if("fill"==b&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("visibility"==b)return"none"===this.node.style.display?"hidden":"visible";var c=b.split(P),z={},n=0;for(h=c.length;n<h;n++)b=c[n],b in this.attrs?z[b]=this.attrs[b]:a.is(this.ca[b],"function")?z[b]=this.ca[b].def:z[b]=a._availableAttrs[b];return h-1?z:z[c[0]]}if(this.attrs&&null==f&&a.is(b,"array")){z={};n=0;for(h=b.length;n<h;n++)z[b[n]]=
+this.attr(b[n]);return z}null!=f&&(c={},c[b]=f);null==f&&a.is(b,"object")&&(c=b);for(n in c)N("raphael.attr."+n+"."+this.id,this,c[n],n);if(c){var C={};for(n in this.ca)if(this.ca[n]&&c.hasOwnProperty(n)&&a.is(this.ca[n],"function")&&!this.ca["_invoked"+n]){this.ca["_invoked"+n]=!0;h=this.ca[n].apply(this,[].concat(c[n]));delete this.ca["_invoked"+n];for(z in h)h.hasOwnProperty(z)&&(c[z]=h[z]);this.attrs[n]=c[n];!1===h&&(C[n]=c[n],delete c[n])}"text"in c&&"text"==this.type&&(a.is(c.text,"array")&&
+(c.text=c.text.join("\n")),this.textpath.string=c.text.replace(/<br\s*?\/?>/ig,"\n"));e(this,c);var d,n=0;for(h=this.followers.length;n<h;n++)d=this.followers[n],d.cb&&!d.cb.call(d.el,c,this)||d.el.attr(c);for(z in C)c[z]=C[z]}return this};c.blur=function(b){var f=this.node.runtimeStyle,c=f.filter,c=c.replace(g,"");0!==+b?(this.attrs.blur=b,f.filter=c+" progid:DXImageTransform.Microsoft.Blur(pixelradius="+(+b||1.5)+")",f.margin=a.format("-{0}px 0 0 -{0}px",h(+b||1.5))):(f.filter=c,f.margin=0,delete this.attrs.blur);
+return this};c.on=function(b,f){if(this.removed)return this;this.node["on"+b]=function(){var b=a._g.win.event;b.target=b.srcElement;f(b)};return this};a._engine.getNode=function(a){a=a.node||a[0].node;return a.clipRect||a};a._engine.getLastNode=function(a){a=a.node||a[a.length-1].node;return a.clipRect||a};a._engine.group=function(b,f,c){var h=a._g.doc.createElement("div"),z=new v(h,b,c);h.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";z._id=f||"";f&&(h.className="raphael-group-"+
+z.id+"-"+f);(c||b).canvas.appendChild(h);z.type="group";z.canvas=z.node;z.transform=a._engine.group.transform;z.top=null;z.bottom=null;return z};a._engine.group.transform=function(c){if(null==c)return this._.transform;var h=this.node.style,z=this.clip,n=this.paper._viewBoxShift,C=n?"s"+[n.scale,n.scale]+"-1-1t"+[n.dx,n.dy]:"";n&&(c=b(c).replace(/\.{3}|\u2026/g,this._.transform||""));a._extractTransform(this,C+c);c=this.matrix;C=c.offset();n=f(C[0])||0;C=f(C[1])||0;h.left=n+"px";h.top=C+"px";h.zoom=
+(this._.tzoom=c.get(0))+"";z&&(h.clip=a.format("rect({1}px {2}px {3}px {0}px)",[z[0]-n,z[1]-C,z[2]-n,z[3]-C]));return this};a._engine.path=function(a,b,f){var c=Q("shape");c.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";c.coordsize="21600 21600";c.coordorigin=a.coordorigin;a=new v(c,a,f);a.type=b.type||"path";a.path=[];a.Path="";b.type&&delete b.type;e(a,b);tb(a,b);return a};a._engine.rect=function(b,f,c){var h=a._rectPath(f.x,f.y,f.w,f.h,f.r);f.path=h;f.type="rect";b=b.path(f,
+c);f=b.attrs;b.X=f.x;b.Y=f.y;b.W=f.width;b.H=f.height;f.path=h;return b};a._engine.ellipse=function(a,b,f){b.type="ellipse";a=a.path(b,f);b=a.attrs;a.X=b.x-b.rx;a.Y=b.y-b.ry;a.W=2*b.rx;a.H=2*b.ry;return a};a._engine.circle=function(a,b,f){b.type="circle";a=a.path(b,f);b=a.attrs;a.X=b.x-b.r;a.Y=b.y-b.r;a.W=a.H=2*b.r;return a};a._engine.image=function(b,f,c){var h=a._rectPath(f.x,f.y,f.w,f.h);f.path=h;f.type="image";f.stroke="none";b=b.path(f,c);c=b.attrs;var h=b.node,z=h.getElementsByTagName("fill")[0];
+c.src=f.src;b.X=c.x=f.x;b.Y=c.y=f.y;b.W=c.width=f.w;b.H=c.height=f.h;z.parentNode==h&&h.removeChild(z);z.rotate=!0;z.src=c.src;z.type="tile";b._.fillpos=[c.x,c.y];b._.fillsize=[c.w,c.h];h.appendChild(z);l(b,1,1,0,0,0);return b};a._engine.text=function(f,c,z){var n=Q("shape"),C=Q("path"),d=Q("textpath");x=c.x||0;y=c.y||0;text=c.text;C.v=a.format("m{0},{1}l{2},{1}",h(21600*c.x),h(21600*c.y),h(21600*c.x)+1);C.textpathok=!0;d.string=b(c.text).replace(/<br\s*?\/?>/ig,"\n");d.on=!0;n.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px";
+n.coordsize="21600 21600";n.coordorigin="0 0";f=new v(n,f,z);f.shape=n;f.path=C;f.textpath=d;f.type="text";f.attrs.text=b(c.text||"");f.attrs.x=c.x;f.attrs.y=c.y;f.attrs.w=1;f.attrs.h=1;e(f,c);tb(f,c);n.appendChild(d);n.appendChild(C);return f};a._engine.setSize=function(b,f){var c=this.canvas.style;this.width=b;this.height=f;b==+b&&(b+="px");f==+f&&(f+="px");c.width=b;c.height=f;c.clip="rect(0 "+b+" "+f+" 0)";this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox);return this};a._engine.setViewBox=
+function(a,b,f,c,h){N("raphael.setViewBox",this,this._viewBox,[a,b,f,c,h]);var n=this.width,C=this.height,d=1/z(f/n,c/C),P,B;h&&(P=C/c,B=n/f,f*P<n&&(a-=(n-f*P)/2/P),c*B<C&&(b-=(C-c*B)/2/B));this._viewBox=[a,b,f,c,!!h];this._viewBoxShift={dx:-a,dy:-b,scale:d};this.forEach(function(a){a.transform("...")});return this};var Q;a._engine.initWin=function(f){var c=f.document;c.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)");try{!c.namespaces.rvml&&c.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),
+Q=a._createNode=function(a,f){var h=c.createElement("<rvml:"+a+' class="rvml">'),z;for(z in f)h[z]=b(f[z]);return h}}catch(h){Q=a._createNode=function(a,f){var h=c.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">'),z;for(z in f)h[z]=b(f[z]);return h}}};a._engine.initWin(a._g.win);a._engine.create=function(){var b=a._getContainer.apply(0,arguments),f=b.container,c=b.height,h=b.width,z=b.x,b=b.y;if(!f)throw Error("VML container not found.");var n=new a._Paper,C=n.canvas=a._g.doc.createElement("div"),
+d=C.style,z=z||0,b=b||0,h=h||512,c=c||342;n.width=h;n.height=c;h==+h&&(h+="px");c==+c&&(c+="px");n.coordsize="21600000 21600000";n.coordorigin="0 0";C.id="raphael-paper-"+n.id;n.span=a._g.doc.createElement("span");n.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";C.appendChild(n.span);d.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;cursor:default;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",h,c);1==f?(a._g.doc.body.appendChild(C),
+d.left=z+"px",d.top=b+"px",d.position="absolute"):f.firstChild?f.insertBefore(C,f.firstChild):f.appendChild(C);n.renderfix=function(){};return n};a.prototype.clear=function(){var b;for(N("raphael.clear",this);b=this.bottom;)b.remove();this.canvas.innerHTML="";this.span=a._g.doc.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas.appendChild(this.span);this.bottom=this.top=null};a.prototype.remove=function(){var b;
+for(N("raphael.remove",this);b=this.bottom;)b.remove();this.canvas.parentNode.removeChild(this.canvas);for(b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var ca=a.st,D;for(D in c)c.hasOwnProperty(D)&&!ca.hasOwnProperty(D)&&(ca[D]=function(a){return function(){var b=arguments;return this.forEach(function(f){f[a].apply(f,b)})}}(D))}})();H?G.win.Raphael=a:Raphael=a;return a},!0)})();e.Raphael=F;e.Raphael.desc="";q&&q!==F?window.Raphael=q:window.Raphael===F&&(window.Raphael=
+void 0)}]);FusionCharts.register("module",["private","fusioncharts.redraphael.helper",function(){var e={};this.hcLib.Raphael.fn._elementFromEvent=function(q){if(!q||this.removed)return null;var F=q.srcElement||q.target||(q=q.originalEvent)&&(q.srcElement||q.target)||e;"tspan"===F.nodeName&&(F=F.parentNode);return this.getById(F.raphaelid)}}]);
+FusionCharts.register("module",["private","fusioncharts.redraphael.css",function(){var e=this.hcLib.Raphael,q=e.eve,F=e._g,u=e.fn,d=e.el,a=/[, ]+/,t=/\B([A-Z]{1})/g,E,c;E=function(a){this.styleSheet="";this.rules={};this.ns=a||""};c=E.prototype;c.getSheet=function(){var a=this.node;this.styleSheet=c.getStyleSheet("fusioncharts-raphael-stylesheet");this.styleSheet||(a=this.node=F.doc.createElement("style"),a.setAttribute("id",e.format("raphael-stylesheet-{0}",e._oid++)),a.setAttribute("type","text/css"),
+a.setAttribute("title","fusioncharts-raphael-stylesheet"),(F.doc.head||F.doc.getElementsByTagName("head")[0]).appendChild(this.node),this.styleSheet=c.getStyleSheet("fusioncharts-raphael-stylesheet"));return this.styleSheet};c.getStyleSheet=function(a){for(var b=F.doc.styleSheets,c=b.length,d;c--;)if(d=b[c],d.title===a)return d};c.applyCSSRule=function(a,b){var c=this.styleSheet,d;if(!c)if(a&&b)c=this.getSheet();else return;d=(c.rules||c.cssRules||{}).length||0;c.insertRule?c.insertRule(a+"{"+b+"}",
+d):c.addRule&&c.addRule(a,b,d)};c.removeCSS=function(a){var b=this.styleSheet,c=b.rules||b.cssRules||{},d=c.length||0,e;for(a=a||this.ns;d--;)e=c[d],(new RegExp(a)).test(e.selectorText)&&(b.removeRule?b.removeRule(d):b.deleteRule(d))};c.destroy=function(){this.removeCSS();delete this.node;delete this.styleSheet;delete this.ns;delete this.rules};c.clear=function(){this.removeCSS();this.rules={}};c.add=function(a,b){var c=this.rules[a]||(this.rules[a]={}),d;for(d in b)c[d]=b[d]};c.render=function(){this.setCssText()};
+c.setCssText=function(a){var b=a?"":"\t";a=a?":":": ";var c="",d="",e,g;for(e in this.rules){c="";d=e.replace(/(^|\,)/g,"$1"+this.ns+" ");e=this.rules[e];for(g in e)e[g]&&(c+=b+g.replace(t,"-$1").toLowerCase()+a+e[g]+";");this.applyCSSRule(d,c)}};q.on("raphael.new",function(){this._stylesheet=this._stylesheet||new E;this.cssNamespace("")});q.on("raphael.remove",function(){this._stylesheet&&this._stylesheet.destroy();delete this._stylesheet});u.cssNamespace=function(a){arguments.length&&(this._stylesheet.ns=
+e.format("{0}#raphael-paper-{1}",a&&a+" "||"",this.id));return this._stylesheet.ns};u.cssAddRule=function(a,b){if(1===arguments.length&&"object"===typeof a){for(var c in a)this.cssAddRule(c,a[c]);return this}return this._stylesheet.add(a,b),this};u.cssRender=function(){return e.svg&&this._stylesheet.render(),this};u.cssClear=function(){return this._stylesheet.clear(),this};e._availableAttrs["class"]="";e.svg&&q.on("raphael.attr.class",function(a){var b=this.node;a=a||"";b.setAttribute("class","group"===
+this.type&&this._id?"raphael-group-"+this.id+"-"+this._id+" "+a:a)});e.vml&&q.on("raphael.attr.class",function(a){var b=this.paper,c="."+a,b=b._stylesheet&&b._stylesheet.rules,d=this.parent,e=this.attrs,g={},k;this.node.className="group"===this.type?a&&this._id+" "+a||this._id:"rvml "+a;if(c&&b){a=b[c];for(k in a)"color"===k&&"text"===this.type&&(k="fill"),!e[k]&&(g[k]=a[k]);for(;d&&d.attr;){if(a=d.attr("class"))for(k in c="."+a+" "+c,a=b[c],a)"color"===k&&"text"===this.type&&(k="fill"),e[k]||g[k]||
+(g[k]=a[k]);d=d.parent}this.css(g)}});d.css=function(c,b){var d,t,p,g;if(this.removed)return this;this.styles||(this.styles={});if(null==b&&e.is(c,"string")){d=c.split(a);t={};g=0;for(p=d.length;g<p;g++)c=d[g],c in this.styles&&(t[c]=this.styles[c]);return p-1?t:t[d[0]]}if(null==b&&e.is(c,"array")){t={};g=0;for(p=c.length;g<p;g++)t[c[g]]=this.styles(c[g]);return t}null!=b?(d={},d[c]=b):null!=c&&e.is(c,"object")&&(d=c);t={};for(g in d)p=g.replace(/\B([A-Z]{1})/g,"-$1").toLowerCase(),e._availableAttrs.hasOwnProperty(p)||
+"color"===p?("color"===p&&"text"===this.type&&(p="fill"),t[p]=d[g],t.dirty=!0):(q("raphael.css."+p+"."+this.id,this,d[g],p),this.node.style[p]=d[g],this.styles[p]=d[g]);g=0;for(p=this.followers.length;g<p;g++)this.followers[g].el.attr(d);t.hasOwnProperty("dirty")&&(delete t.dirty,this.attr(t));return this}}]);
+FusionCharts.register("module",["private","modules.renderer.js-raphaelexport",function(){var e=this.hcLib,q=e.Raphael,F=e.pluckNumber,u=e.pluck,d=q._availableAttrs,a=/^matrix\(|\)$/g,t=/\,/g,E=/\n|<br\s*?\/?>/ig,c=/[^\d\.]/ig,l=/[\%\(\)\s,\xb0#]/g,b=/group/ig,r=/&/g,V=/"/g,p=/'/g,g=/</g,k=/>/g,m=0;(function(e){var q=Math,S=parseFloat,v=q.max,aa=q.abs,L=q.pow,fa=String,G=/[, ]+/,H=[{reg:/xmlns\=\"http\:\/\/www.w3.org\/2000\/svg\"/ig,repStr:""},{reg:/^.*<svg /,repStr:'<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" '},
+{reg:/\/svg>.*$/,repStr:"/svg>"},{reg:/<desc\>[^<]*<\/desc\>/,repStr:""},{reg:/zIndex="[^"]+"/g,repStr:""},{reg:/url\((\\?[\'\"])[^#]+#/g,repStr:"url($1#"},{reg:/ href=/g,repStr:" xlink:href="},{reg:/(id|class|width|height)=([^" >]+)/g,repStr:'$1="$2"'},{reg:/:(path|rect)/g,repStr:"$1"},{reg:/<ima?ge? ([^\>]+?[^\/])\>/gi,repStr:"<image $1 />"},{reg:/<\/ima?ge?\>/g,repStr:""},{reg:/style="([^"]+)"/g,repStr:function(a){return a.toLowerCase()}}],D={blur:function(){},transform:function(){},src:function(a,
+b){b.attrSTR+=' xlink:href="'+b.attrs.src+'"'},path:function(a,b){var c=b.attrs.path,c=e._pathToAbsolute(c||"");b.attrSTR+=' d="'+(c.toString&&c.toString()||"").replace(t," ")+'"'},gradient:function(a,b,c){var d=a.attrs.gradient,g="linear",k,m,D,t=.5,A=.5,ca=m="",r="",H,p,G,R;k=d.replace(l,"_");if(!c[k]){d=fa(d).replace(e._radial_gradient,function(a,b){var c,d,k,m,e,l,v;b=b&&b.split(",")||[];g="radial";c=b[0];d=b[1];k=b[2];m=b[3];e=b[4];R=b[5];v=c&&d;k&&(G=/\%/.test(k)?k:S(k));if("userSpaceOnUse"===
+R)return v&&(t=c,A=d),m&&e&&(H=m,p=e,v||(t=H,A=p)),"";v&&(t=S(c),A=S(d),c=2*(.5<A)-1,.25<(l=L(t-.5,2))+L(A-.5,2)&&.25>l&&(A=q.sqrt(.25-l)*c+.5)&&.5!==A&&(A=A.toFixed(5)-1E-5*c));m&&e&&(H=S(m),p=S(e),c=2*(.5<p)-1,.25<(l=L(H-.5,2))+L(p-.5,2)&&.25>l&&(p=q.sqrt(.25-l)*c+.5)&&.5!==p&&(p=p.toFixed(5)-1E-5*c),v||(t=H,A=p));return""});d=d.split(/\s*\-\s*/);if("linear"===g){m=d.shift();m=-S(m);if(isNaN(m))return null;D=[0,0,q.cos(e.rad(m)),q.sin(e.rad(m))];m=1/(v(aa(D[2]),aa(D[3]))||1);D[2]*=m;D[3]*=m;0>D[2]&&
+(D[0]=-D[2],D[2]=0);0>D[3]&&(D[1]=-D[3],D[3]=0)}d=e._parseDots(d);if(!d)return null;"radial"===g?(m='<radialGradient fx = "'+t+'" fy = "'+A+'" cy = "'+p+'" cx = "'+H+'" r = "'+G+'" gradientUnits = "'+R+'" id = "'+k+'">',ca="</radialGradient>"):(m='<linearGradient x1 = "'+D[0]+'" y1 = "'+D[1]+'" x2 = "'+D[2]+'" y2 = "'+D[3]+'" gradientTransform ="matrix('+a.matrix.invert()+')" id = "'+k+'">',ca="</linearGradient>");a=0;for(D=d.length;a<D;a++)r+='<stop offset="'+(d[a].offset?d[a].offset:a?"100%":"0%")+
+'" stop-color="'+(d[a].color||"#fff")+'" stop-opacity="'+(void 0===d[a].opacity?1:d[a].opacity)+'" />';c[k]=!0;c.str+=m+r+ca}b.attrSTR+=" fill=\"url('#"+k+"')\""},fill:function(a,b){var c=b.attrs,d=c.fill,g;a.attrs.gradient||(d=e.color(d),g=d.opacity,"text"===a.type?b.styleSTR+="fill:"+d+"; stroke-opacity:0; ":(b.attrSTR+=' fill="'+d+'"',c["fill-opacity"]||!g&&0!==g||(b.attrSTR+=' fill-opacity="'+g+'"')))},stroke:function(a,b){var c=b.attrs,d,g;d=e.color(c.stroke);g=d.opacity;"text"!==a.type&&(b.attrSTR+=
+' stroke="'+d+'"',c["stroke-opacity"]||!g&&0!==g||(b.attrSTR+=' stroke-opacity="'+g+'"'))},"clip-rect":function(b,c,d){var g=fa(c.attrs["clip-rect"]),k=g.split(G),g=g.replace(l,"_")+"__"+m++;4===k.length&&(d[g]||(d[g]=!0,d.str+='<clipPath id="'+g+'"><rect x="'+k[0]+'" y="'+k[1]+'" width="'+k[2]+'" height="'+k[3]+'" transform="matrix('+b.matrix.invert().toMatrixString().replace(a,"")+')"/></clipPath>'),c.attrSTR+=' clip-path="url(#'+g+')"')},cursor:function(a,b){var c=b.attrs.cursor;c&&(b.styleSTR+=
+"cursor:"+c+"; ")},font:function(a,b){b.styleSTR+="font:"+b.attrs.font.replace(/\"/ig," ")+"; "},"font-size":function(a,b){var d=u(b.attrs["font-size"],"10");d&&d.replace&&(d=d.replace(c,""));b.styleSTR+="font-size:"+d+"px; "},"font-weight":function(a,b){b.styleSTR+="font-weight:"+b.attrs["font-weight"]+"; "},"font-family":function(a,b){b.styleSTR+="font-family:"+b.attrs["font-family"]+"; "},"line-height":function(){},"clip-path":function(){},visibility:function(){},"vertical-align":function(){},
+"text-anchor":function(a,b){var c=b.attrs["text-anchor"]||"middle";"text"===a.type&&(b.attrSTR+=' text-anchor="'+c+'"')},title:function(){},text:function(a,b){var d=b.attrs,m=d.text,e=u(d["font-size"],d.font,"10"),l=u(d["line-height"]),v,D,t;e&&e.replace&&(e=e.replace(c,""));e=F(e);l&&l.replace&&(l=l.replace(c,""));l=F(l,e&&1.2*e);v=e?.85*e:.75*l;e=d.x;D=u(d["vertical-align"],"middle").toLowerCase();m=fa(m).split(E);t=m.length;d=0;for(v="top"===D?v:"bottom"===D?v-l*t:v-l*t*.5;d<t;d++)b.textSTR+="<tspan ",
+D=(m[d]||"").replace(r,"&amp;").replace(V,"&quot;").replace(p,"&#39;").replace(g,"&lt;").replace(k,"&gt;"),b.textSTR=d?b.textSTR+('dy="'+l+'" x="'+e+'" '):b.textSTR+('dy="'+v+'"'),b.textSTR+=">"+D+"</tspan>"}},R=function(c,g){var k="",m={attrSTR:"",styleSTR:"",textSTR:"",attrs:c.attr()},e=c.isShadow,l="",v="",t,r,A=m.attrs;if("none"===c.node.style.display||e)c.next&&(k+=R(c.next,g));else{for(t in A)if("gradient"!==t&&(void 0!==d[t]||D[t])&&void 0!==A[t])if(D[t])D[t](c,m,g);else m.attrSTR+=" "+t+'="'+
+A[t]+'"';c.attrs.gradient&&D.gradient(c,m,g);"rect"===c.type&&A.r&&(m.attrSTR+=' rx="'+A.r+'" ry="'+A.r+'"');for(r in c.styles)m.styleSTR+=r+":"+c.styles[r]+"; ";"image"===c.type&&(m.attrSTR+=' preserveAspectRatio="none"');if("text"===c.type&&!A["text-anchor"])D["text-anchor"](c,m);c.bottom&&(l=R(c.bottom,g));c.next&&(v=R(c.next,g));e=c.type;e.match(b)&&(e="g");k+="<"+e+' transform="matrix('+c.matrix.toMatrixString().replace(a,"")+')" style="'+m.styleSTR+'"'+m.attrSTR+">"+m.textSTR+l+"</"+e+">"+v}return k},
+W=function(a,b){var c="",d;for(d in a)a.hasOwnProperty(d)&&("init"===b?c+=d+" { "+W(a[d],"attr")+" };":"attr"===b&&"object"!==typeof a[d]&&void 0!==a[d]&&(c+=d+": "+a[d]+";"));return"init"===b?c.slice(0,-1):c};e.fn.toSVG=function(a){var b="",c={str:""},d=0,g=H.length,k="";if(e.svg){if(this.canvas&&this.canvas.parentNode){for(b=this.canvas.parentNode.innerHTML;d<g;d+=1)c=H[d],b=b.replace(c.reg,c.repStr);this._stylesheet&&this._stylesheet.rules&&(b=b.replace(/^(<svg\s[\s\S]*?>)/ig,'$1<style type="text/css">'+
+W(this._stylesheet.rules,"init")+"</style>"))}}else b='<svg style="overflow: hidden; position: relative;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+this.width+'" version="1.1" height="'+this.height+'">',this.bottom&&(k=R(this.bottom,c)),b+="<defs>"+c.str+"</defs>"+k+"</svg>";a||(b=b.replace(/<image [^\>]*\>/gi,function(a){return a.match(/href=\"data\:image/i)?a:""}));return b}})(q)}]);
+FusionCharts.register("module",["private","modules.renderer.js-raphaelshadow",function(){var e=this.window,q=e.Math.sqrt,F=e.parseFloat,u=e.parseInt,e=e.SVGFilterElement||e.SVGFEColorMatrixElement&&2===e.SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE,d=this.hcLib.Raphael,a={"drop-shadow":"drop-shadow",stroke:"stroke",fill:"fill","stroke-width":"stroke-width","stroke-opacity":"stroke-opacity","stroke-linecap":"stroke-linecap","stroke-linejoin":"stroke-linejoin","shape-rendering":"shape-rendering",
+transform:"transform"},t=d._createNode,E;d.svg?(e&&(d.el.dropshadow=function(a,e,b,r){var u=this.node,p=this._.shadowFilter,g=this.paper.cacheShadows||(this.paper.cacheShadows={}),k="drop-shadow"+[a,e,b,r].join(" "),m;if("none"===a){if(p){--p.use;this.node.removeAttribute("filter");if(!p.use){k=p.hash;for(m in p)a=p[m],a.parentNode&&a.parentNode.removeChild(a),delete p[m];delete g[k]}delete this._.shadowFilter}}else p&&g[k]===p||(p=this.paper.defs.appendChild(t("filter",{id:d.createUUID(),width:"200%",
+height:"200%"})),r=d.color(r),r.error&&(r=d.color("rgba(0,0,0,1)")),m=d.pick(r.opacity,1),this._.shadowFilter=g[k]={use:1,filter:p,hash:k,offset:p.appendChild(t("feOffset",{result:"offOut","in":"SourceGraphic",dx:F(a),dy:F(e)})),matrix:p.appendChild(t("feColorMatrix",{result:"matrixOut","in":"offOut",type:"matrix",values:"0 0 0 0 "+r.r/255+" 0 0 0 0 "+r.g/255+" 0 0 0 0 "+r.b/255+" 0 0 0 "+m+" 0"})),blur:p.appendChild(t("feGaussianBlur",{result:"blurOut","in":"matrixOut",stdDeviation:q(F(b))})),blend:p.appendChild(t("feComposite",
+{"in":"SourceGraphic",in2:"blurOut",operator:"over"}))},u.setAttribute("filter",'url("'+d._url+"#"+p.id+'")'));return this}),E=function(c,d){var b=this.__shadowscale,e={},t,p;for(p in c)switch(a[p]&&(e[p]=c[p],delete c[p]),p){case "transform":t=d.matrix.clone();t.translate(this.__shadowx,this.__shadowy);this.transform(t.toTransformString());break;case "stroke-width":c[p]=((e[p]||1)+6-2*this.__shadowlevel)*b}this.attr(c);for(p in e)c[p]=e[p]},d.ca["drop-shadow"]=function(a,e,b,t,q,p){b=this._.shadows||
+(this._.shadows=[]);var g,k,m,J,T;if(!this.__shadowblocked)if("none"===a)for(;k=b.pop();)k.remove();else for(t=d.color(t),t.error&&(t=d.color("rgba(0,0,0,1)")),q instanceof Array?(g=q[0],q=q[1]):g=q,g=1/d.pick(g,1),q=1/d.pick(q,1),a=d.pick(a,1)*g,e=d.pick(e,1)*g,g=.05*d.pick(t.opacity,1),m=u(this.attr("stroke-width")||1,10)+6,J=this.matrix.clone(),J.translate(a,e),T=1;3>=T;T++)k=(b[T-1]||this.clone().follow(this,E,!p&&"before")).attr({stroke:t.hex,"stroke-opacity":g*T,"stroke-width":(m-2*T)*q,transform:J.toTransformString(),
+"stroke-linecap":"round","stroke-linejoin":"round",fill:"none"}),k.__shadowlevel=T,k.__shadowscale=q,k.__shadowx=a,k.__shadowy=e,p&&p.appendChild(k),b.push(k);return!1},d.el.shadow=function(a,e,b,t){var q;b&&b.constructor===d.el.constructor&&(t=b,b=void 0);"object"===typeof a&&(e&&e.constructor===d.el.constructor&&(t=e),e=a.opacity,b=a.scalefactor,q=!!a.useFilter,a=void 0===a.apply?!!e:a.apply);void 0===e&&(e=1);if(this.dropshadow){if(q)return a&&this.dropshadow(1,1,3,"rgb(64,64,64)")||this.dropshadow("none"),
+this;this._.shadowFilter&&this.dropshadow("none")}return this.attr("drop-shadow",a?[1,1,3,"rgba(64,64,64,"+e+")",b,t]:"none")}):d.vml?(d.ca["drop-shadow"]=function(a,e,b,t,q,p){var g=this._.shadow,k,m;if(this.isShadow)return!1;"none"===a?g&&(this._.shadow=g.remove()):(g||(g=this._.shadow=this.clone(),p&&p.appendChild(g.follow(this))||g.follow(this,void 0,"before"),g.attr({fill:"none","fill-opacity":.5,"stroke-opacity":1}).isShadow=!0,0>=g.attr("stroke-width")&&g.attr("stroke-width",1)),p=g.node.runtimeStyle,
+k=p.filter.replace(/ progid:\S+Blur\([^\)]+\)/g,""),t=d.color(t),t.error&&(t=d.color("rgba(0,0,0,1)")),m=d.pick(t.opacity,1)/5,q=1/d.pick(q,1),a=d.pick(a,1)*q,e=d.pick(e,1)*q,g.translate(a,e),p.filter=k+" progid:DXImageTransform.Microsoft.Blur(pixelRadius="+F(.4*b)+" makeShadow=True Color="+t.hex+' shadowOpacity="'+m+'");');return!1},d.el.shadow=function(a,e,b,t){b&&b.constructor===d.el.constructor&&(t=b,b=void 0);"object"===typeof a&&(e&&"group"===e.type&&(t=e),e=a.opacity,b=a.scalefactor,a=void 0===
+a.apply?!!e:a.apply);void 0===e&&(e=1);return this.attr("drop-shadow",a||!e?[1,1,5,"rgba(64,64,64,"+e+")",b,t]:"none")}):d.canvas&&(d.el.shadow=function(){return this})}]);
+FusionCharts.register("module",["private","modules.renderer.js-raphaelshapes",function(){var e=this.window,q="createTouch"in e.document,F=/msie/i.test(e.navigator.userAgent)&&!e.opera,u=e.Math,d=u.cos,a=u.sin,t=u.abs,E=u.pow,c=u.atan2,l=u.tan,b=u.acos,r=u.min,V=u.round,p=u.PI,g=u.sqrt,k=2*p,m=e.parseInt,J=e.parseFloat,T=String,S=Array.prototype.slice,v=E(2,-24),aa="rgba(192,192,192,"+(F?.002:1E-6)+")",L=this.hcLib.Raphael,fa=L.eve,G=L._createNode,H=L._setFillAndStroke,D=L.el.constructor,R={speed:"optimizeSpeed",
+crisp:"crispEdges",precision:"geometricPrecision"},W={enabled:!1,"false":!1,0:!1,disabled:!0,"true":!0,1:!0},O={Q:"L",Z:"X",q:"l",z:"x",",":" "},ha=/,?([achlmqrstvxz]),?/gi,ka=/\s*\,\s*/g,ga,ba=function(){return this.join(",").replace(ha,ga)},ja,ma,da=L._cacher(function(a,b,c,d){return g(E(c-a,2)+E(d-b,2))}),na=L._cacher(function(a,b,c,d,g){var k=c-a,e=d-b;c=da(a,b,c,d);return{x:a+k/c*g,y:b+e/c*g}});if(L.svg)fa.on("raphael.attr.shape-rendering",function(a,b){var c=this.node;this.attrs[b]=a=R[a]||
+a||"auto";c.setAttribute(b,a);c.style.shapeRendering=a});else if(L.vml)fa.on("raphael.attr.shape-rendering",function(a){this.node.style.antialias="crisp"!==a});L.define&&L.define([{name:"polypath",polypath:function(){return this.path(void 0,L._lastArgIfGroup(arguments))},ca:{polypath:function(b,c,g,k,e,l){var v,D,t;v=[];b=m(b,10)||0;c=J(c)||0;g=J(g)||0;k=J(k)||0;e=null===e||isNaN(e)?.5*p:L.rad(e);l=null===l||isNaN(l)?0:J(l);D=e;if(2<b)switch(e=2*p/b,l){case 0:for(l=0;l<b;l++)v.push("L",c+k*d(-D),
+g+k*a(-D)),D+=e;v[0]="M";v.push("Z");break;case 1:for(l=0;l<b;l++)v.push("M",c,g,"L",c+k*d(-D),g+k*a(-D)),D+=e;break;default:e*=.5;t=k*d(e)*(1-l);for(l=0;l<b;l++)v.push("L",c+k*d(-D),g+k*a(-D)),D+=e,v.push("L",c+t*d(-D),g+t*a(-D)),D+=e;v[0]="M";v.push("Z")}else 0===k?v.push("M",c,g,"L",c,g,"Z"):v.push("M",c-k,g,"A",k,k,0,0,0,c+k,g,"A",k,k,0,0,0,c-k,g,"Z");return{path:v}},r:function(a){var b=this.attrs.polypath;b[3]=a;this.attr("polypath",b);return!1}}},{name:"ringpath",ringpath:function(){return this.path(void 0,
+L._lastArgIfGroup(arguments))},ca:function(b,c,g,e,m,l){var D=l%k-m%k,r=l-m,H,L,O,J,G,R;this._.ringangle=.5*(m+l);t(r)<v?(H=d(m),r=a(m),g=["M",b+g*H,c+g*r,"L",b+e*H,c+e*r,"Z"]):(t(r)>v&&+(t(r)%k<v||k-t(r)%k<v)?(g=["M",b-g,c,"A",g,g,0,0,0,b+g,c,"A",g,g,0,0,0,b-g,c],0!==e&&(g=g.concat(["M",b-e,c,"A",e,e,0,0,1,b+e,c,"A",e,e,0,0,1,b-e,c]))):(H=d(m),r=a(m),L=d(l),l=a(l),D%=k,0>D&&(D+=k),D=D<p?0:1,O=b+g*H,G=c+g*r,J=b+g*L,R=c+g*l,L=b+e*L,l=c+e*l,.01>t(O-J)&&.01>t(G-R)&&(O=b+g*d(m+1.745329E-4),G=c+g*a(m+
+1.745329E-4)),g=["M",O,G,"A",g,g,0,D,1,J,R,"L",L,l],0!==e&&(H=b+e*H,r=c+e*r,.01>t(L-H)&&.01>t(l-r)&&(H=b+e*d(m+1.745329E-4),r=c+e*a(m+1.745329E-4)),g.push("A",e,e,0,D,0,H,r))),g.push("Z"));return{path:g}}},{name:"cubepath",cubepath:function(){var a={"stroke-linejoin":"round","shape-rendering":"precision",stroke:"none"},b=arguments,c=b.length-1,d=b[c],g,e;d&&d.constructor===L.el.constructor?b[c]=void 0:d=void 0;c=this.path(a,d);g=this.path(a,d);a=this.path(a,d);a._.cubetop=c.follow(a,void 0,"before");
+a._.cubeside=g.follow(a,void 0,"before");for(e in L.fn.cubepath.ca)a.ca[e]=L.fn.cubepath.ca[e];return a.attr("cubepath",[b[0],b[1],b[2],b[3],b[4],b[5]])},fn:{_getBBox2:function(){var a=this._.cubeside.getBBox(),b=this._.cubetop.getBBox(),c=this.getBBox();return{x:c.x+b.height,y:c.y-a.width,width:c.width,height:c.height}}},ca:{cubepath:function(a,b,c,d,g,e){var k=this._.cubetop,m=this._.cubeside;a=a||0;b=b||0;c=c||0;d=d||0;g=g||0;e=e||0;this.attr("path",["M",a+c,b,"l",0,d,-c,0,0,-d,"z"]);k.attr("path",
+["M",a,b,"l",1,1,c-1,0,0,-1,g,-e,-c,0,"z"]);m.attr("path",["M",a+c-1,b+1,"l",0,d-1,1,0,g,-e,0,-d,-g,e]);return!1},"stroke-linejoin":function(){return{"stroke-linejoin":"round"}},"drop-shadow":function(a,b,c,d){var g=this._.cubetop,e=this._.cubeside;this.dropshadow&&(g.dropshadow(a,-b,c,d),e.dropshadow(a,-b,c,d));return!1},fill:function(a,b){var d=this._.cubetop,g=this._.cubeside,e=this.attr("cubepath")||[0,0,0,0,0,0],k=e[2],m=e[4],e=e[5],l;a=L.color(a);b?(this.attr("fill",a),d.attr("fill",L.tintshade(a,
+-.78).rgba),g.attr("fill",L.tintshade(a,-.65).rgba)):(l="opacity"in a?"rgba("+[a.r,a.g,a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")",this.attr("fill",[270,L.tintshade(l,.55).rgba,L.tintshade(l,-.65).rgba].join("-")),g.attr("fill",[270,L.tintshade(l,-.75).rgba,L.tintshade(l,-.35).rgba].join("-")),d.attr("fill",[45+L.deg(c(e,m+k)),L.tintshade(l,-.78).rgba,L.tintshade(l,.22).rgba].join("-")));return!1}}},{name:"scroller",scroller:function(a,b,c,d,g,e,k){var m=this.group("scroller",k),l=m.attrs,v=m._.scroller=
+{};g=g&&"horizontal"||"vertical";var D,r={},H,p,O;v.track=this.rect(m).mousedown(function(a){var b=l["scroll-position"];a="horizontal"===l["scroll-orientation"]?a.layerX||a.x:a.layerY||a.y;a=(a-v.anchorOffset)/v.trackLength;D=L.animation({"scroll-position":a},2E3*t(b-a),"easeIn");m.animate(D);fa("raphael.scroll.start."+m.id,m,b)}).mouseup(v._mouseupTrack=function(){this.stop(D);fa("raphael.scroll.end."+this.id,this,l["scroll-position"])},m,!0);v.anchor=this.rect(m).drag(function(){r["scroll-position"]=
+H+arguments[p]/v.trackLength;m.animate(r,0)},function(a,b,c){p="horizontal"===l["scroll-orientation"]?0:1;fa("raphael.scroll.start."+m.id,m,H=l["scroll-position"]);c.stopPropagation()},function(){fa("raphael.scroll.end."+m.id,m,H=l["scroll-position"])});for(O in L.fn.scroller.fn)m[O]=L.fn.scroller.fn[O];for(O in L.fn.scroller.ca)m.ca[O]=L.fn.scroller.ca[O];l["scroll-orientation"]=g;l["stroke-width"]=1;m.ca["scroll-repaint"]=m.ca["scroll-repaint-"+g];!L.is(e,"object")&&(e={});return m.attr({ishot:!0,
+"scroll-display-buttons":e.showButtons&&"arrow"||"none","scroll-display-style":e.displayStyleFlat&&"flat"||"3d","scroll-ratio":J(e.scrollRatio)||1,"scroll-position":J(e.scrollPosition)||0,"scroll-repaint":[a,b,c,d]})},fn:{scroll:function(a,b){var c=this._.scroller;b=b||this;c.callback=function(){return a.apply(b,arguments)};return this},remove:function(){var a=this._.scroller,b;this.attr("scroll-display-buttons","none");a.track.unmouseup(a._mouseupTrack);for(b in a)a[b]&&a[b].remove&&a[b].remove(),
+a[b]=null;delete this._.scroller;L.el.remove.apply(this,arguments)}},ca:{"stroke-width":function(){return!1},"drop-shadow":function(a,b,c,d,g,e){this._.scroller.track.attr("drop-shadow",[a,b,c,d,g,e]);return!1},"scroll-display-style":function(a){var b=this.attrs,c=b["scroll-display-style"],d=b.fill;a={flat:"flat","3d":"3d",transparent:"transparent"}[a]||c;d&&a!==c&&(b["scroll-display-style"]=a,this.attr("fill",d));return{"scroll-display-style":a}},"scroll-display-buttons":function(a){var b=this,c=
+b.paper,d=b._.scroller,g=b.attrs,e=g["scroll-display-buttons"],k=g["scroll-repaint"],m,l;void 0===e&&(e="none");a={none:"none",arrow:"arrow"}[a]||e;a!==e&&(g["scroll-display-buttons"]=a,"none"===a&&d.start?(d.arrowstart.remove(),delete d.arrowstart,d.arrowend.remove(),delete d.arrowend,d.start.unmouseup(d._mouseupStart),d.start.remove(),delete d.start,d.end.unmouseup(d._mouseupEnd),d.end.remove(),delete d.end):(d.arrowstart=c.polypath(b),d.arrowend=c.polypath(b),d.start=c.rect(b).mousedown(function(){var a;
+0!==(a=g["scroll-position"])&&(b.animate({"scroll-position":a-.1},100).animate(m=L.animation({"scroll-position":0},4500*a,"easeIn")),fa("raphael.scroll.start."+b.id,b,a))}).mouseup(d._mouseupStart=function(){b.stop(m);fa("raphael.scroll.end."+b.id,b,g["scroll-position"])},b,!0),d.end=c.rect(b).mousedown(function(){var a;1!==(a=g["scroll-position"])&&(b.animate({"scroll-position":a+.1},100).animate(l=L.animation({"scroll-position":1},4500*(1-a),"easeIn")),fa("raphael.scroll.start."+b.id,b,a))}).mouseup(d._mouseupEnd=
+function(){b.stop(l);fa("raphael.scroll.end."+b.id,b,g["scroll-position"])},b,!0),g.fill&&b.attr("fill",g.fill)),k&&b.attr("scroll-repaint",k));return{"scroll-display-buttons":a}},"scroll-orientation":function(a){var b=this.attrs,c=b["scroll-repaint"],d=b["scroll-orientation"];a={horizontal:"horizontal",vertical:"vertical"}[a]||d;d!==a&&(this.ca["scroll-repaint"]=this.ca["scroll-repaint-"+a],c&&(c[2]+=c[3],c[3]=c[2]-c[3],c[2]-=c[3],this.attr("scroll-repaint",c)),b.fill&&this.attr("fill",b.fill));
+return{"scroll-orientation":a}},"scroll-ratio":function(a){var b=this.attrs,c=b["scroll-ratio"],d=b["scroll-repaint"];a=1<a?1:.01>a?.01:J(a);d&&a!==c&&(b["scroll-ratio"]=a,this.attr("scroll-repaint",d));return{"scroll-ratio":a}},"scroll-position":function(a,b){var c=this.attrs,d="horizontal"===c["scroll-orientation"],g=c["scroll-repaint"],e=c["scroll-position"],k=this._.scroller,m=k.anchor;a=1<a?1:0>a?0:J(a);isNaN(a)&&(a=e);g&&(e!==a||b)&&(e=k.start&&k.start.attr(d&&"width"||"height")||0,d&&m.attr("x",
+g[0]+e+(g[2]-2*e-m.attr("width"))*a+.5)||m.attr("y",g[1]+e+(g[3]-2*e-m.attr("height"))*a+.5),!b&&1>c["scroll-ratio"]&&(fa("raphael.scroll.change."+this.id,this,a),k.callback&&k.callback(a)));return{"scroll-position":a}},r:function(a){var b=this._.scroller;b.track.attr("r",a);b.anchor.attr("r","none"===this.attrs["scroll-display-buttons"]&&a||0);return!1},"scroll-repaint-horizontal":function(a,b,c,d){var g=this.attrs,e=this._.scroller,k=g["scroll-ratio"],m=g["scroll-position"],l=0,v=c*k,g="none"===
+g["scroll-display-buttons"];c&&--c;a&&(a+=.5);d&&--d;b&&(b+=.5);e.track.attr({width:c,height:d,y:b,x:a}).crisp();g||(l=r(d,.5*c),v-=2*l*k,e.start.attr({width:l,height:d,x:a,y:b}),e.arrowstart.attr("polypath",[3,a+.5*l,b+.5*d,.25*l,180]),e.end.attr({width:l,height:d,x:a+c-l,y:b}),e.arrowend.attr("polypath",[3,a+c-.5*l,b+.5*l,.25*l,0]));e.trackLength=c-2*l-v;e.trackOffset=a+l+.5;e.anchorOffset=e.trackOffset+.5*(v-1);e.anchor.attr({height:d,width:v-1,y:b,x:e.trackOffset+e.trackLength*m}).crisp()},"scroll-repaint-vertical":function(a,
+b,c,d){var g=this.attrs,e=this._.scroller,k=g["scroll-ratio"],m=g["scroll-position"],l=0,v=d*k,g="none"===g["scroll-display-buttons"];c&&--c;a&&(a+=.5);d&&--d;b&&(b+=.5);e.track.attr({width:c,height:d,y:b,x:a}).crisp();g||(l=r(c,.5*d),v-=2*l*k,e.start.attr({width:c,height:l,x:a,y:b}),e.arrowstart.attr("polypath",[3,a+.5*c,b+.5*l,.25*l,90]),e.end.attr({width:c,height:l,x:a,y:b+d-l}),e.arrowend.attr("polypath",[3,a+.5*c,b+d-.5*l,.25*l,-90]));e.trackLength=d-2*l-v;e.trackOffset=b+l+.5;e.anchorOffset=
+e.trackOffset+.5*(v-1);e.anchor.attr({height:v-1,width:c,y:e.trackOffset+e.trackLength*m,x:a}).crisp()},fill:function(a){var b=this.attrs,c=this._.scroller,d=b["scroll-repaint"],g="flat"===b["scroll-display-style"],e="horizontal"===b["scroll-orientation"],k={stroke:"none"},m;q&&d&&3<(m=16-d[e&&3||2])&&(k.stroke=aa,k["stroke-width"]=m);a=L.color(a);a.error&&(a=L.color("#000000"));a="opacity"in a?"rgba("+[a.r,a.g,a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")";k.fill=g&&a||[90*e,L.tintshade(a,.15).rgba,
+a].join("-");k.stroke=L.tintshade(a,-.75).rgba;c.track.attr(k);k.fill=g&&L.tintshade(a,-.6).rgba||[270*e,L.tintshade(a,.3).rgba+":40",L.tintshade(a,-.7).rgba].join("-");k.stroke=L.tintshade(a,-.6).rgba;c.anchor.attr(k);k.stroke="none";"none"!==b["scroll-display-buttons"]&&(k.fill=aa,c.start.attr(k),c.end.attr(k),k.fill=L.tintshade(a,-.4).rgba,c.arrowstart.attr(k),c.arrowend.attr(k));return!1}}},{name:"button",button:function(a,b,c,d,g,e){e=this.group("button",e);var k;e._.button={bound:this.rect(e),
+tracker:this.rect(e).attr({fill:aa,stroke:aa,cursor:"pointer"}).data("compositeButton",e)};!L.is(g,"object")&&(g={});for(k in L.fn.button.fn)e[k]=L.fn.button.fn[k];for(k in L.fn.button.ca)e.ca[k]=L.fn.button.ca[k];return e.attr({ishot:!0,"button-padding":[g.horizontalPadding,g.verticalPadding],"button-label":c,"button-symbol":d,"button-disabled":g.disabled||"false","button-symbol-position":g.symbolPosition,"button-symbol-padding":g.symbolPadding}).attr("button-repaint",[a,b,g.width,g.height,g.r])},
+data:{hoverin:function(){var a=this._.button,b=a.hoverbackIn,c=this._hover||{};c.fill||c.stroke||c["stroke-width"]||c.cursor?(c.fill&&this.bottom.attr("fill",c.fill)&&a.symbol.attr("fill",c.fill),c.stroke&&this.bottom.attr("stroke",c.stroke)&&a.symbol.attr("stroke",c.stroke),c["stroke-width"]&&this.bottom.attr("stroke-width",c["stroke-width"])&&a.symbol.attr("stroke-width",c["stroke-width"]),c.cursor&&a.tracker.attr("cursor",c.cursor),b&&b()):b&&!1===b(arguments)||this.attr("fill","hover");this.hovered=
+!0},hoverout:function(){var a=this._.button,b=a.hoverbackOut,c=this._normal||{};c.fill||c.stroke||c["stroke-width"]||c.cursor?(c.fill&&this.bottom.attr("fill",c.fill)&&a.symbol.attr("fill",c.fill),c.stroke&&this.bottom.attr("stroke",c.stroke)&&a.symbol.attr("stroke",c.stroke),c["stroke-width"]&&this.bottom.attr("stroke-width",c["stroke-width"])&&a.symbol.attr("stroke-width",c["stroke-width"]),c.cursor&&a.tracker.attr("cursor",c.cursor),b&&b()):b&&!1===b(arguments)||this.attr("fill",(this.pressed||
+this.active)&&"active"||"normal");this.hovered=!1},mousedown:function(){var a=this._.button,b=this._pressed||{};b.fill||b.stroke||b["stroke-width"]||b.cursor?(b.fill&&this.bottom.attr("fill",b.fill)&&a.symbol.attr("fill",b.fill),b.stroke&&this.bottom.attr("stroke",b.stroke)&&a.symbol.attr("stroke",b.stroke),b["stroke-width"]&&this.bottom.attr("stroke-width",b["stroke-width"])&&a.symbol.attr("stroke-width",b["stroke-width"]),b.cursor&&a.tracker.attr("cursor",b.cursor)):this.attr("fill","active");this.pressed=
+!0},mouseup:function(){var a=this._.button,b=a.callback,c=this._normal||{};c.fill||c.stroke||c["stroke-width"]||c.cursor?(c.fill&&this.bottom.attr("fill",c.fill)&&a.symbol.attr("fill",c.fill),c.stroke&&this.bottom.attr("stroke",c.stroke)&&a.symbol.attr("stroke",c.stroke),c["stroke-width"]&&this.bottom.attr("stroke-width",c["stroke-width"])&&a.symbol.attr("stroke-width",c["stroke-width"]),c.cursor&&a.tracker.attr("cursor",c.cursor)):this.attr("fill",this.hovered&&"hover"||this.active&&"active"||"normal");
+this.pressed=!1;b&&b(arguments)},mousemove:function(){var a=this._.button.mousemove;a&&a(arguments)}},fn:{tooltip:function(){L.el.tooltip&&L.el.tooltip.apply(this._.button.tracker,arguments);return this},buttonclick:function(a,b){var c=this._.button;b=b||this;c.callback=function(){return a.apply(b,arguments)};return this},labelcss:function(){var a=this._.button,b=a.label;a.cssArg=arguments;b&&b.css.apply(b,arguments);return this.attr("button-repaint",this.attrs["button-repaint"])},buttonhover:function(a,
+b,c,d,g,e){var k=this._.button;c=c||this;d=d||this;e=e||this;g&&(k.mousemove=function(){return g.apply(e,arguments)});k.hoverbackIn=function(){return a.apply(c,arguments)};k.hoverbackOut=function(){return b.apply(d,arguments)};return this},remove:function(){var a=this._.button,b;this.attr("button-disabled","true");for(b in a)a[b]&&a[b].remove&&a[b].remove(),a[b]=null;delete this._.button;L.el.remove.apply(this,arguments)}},ca:{"button-active":function(a){this.attr("fill",(this.active=!!a)?"active":
+this.hovered&&"hover"||"normal")},"button-disabled":function(a){var b=this._.button,c=b.tracker,d=this.attrs["button-disabled"],g=this.paper.button.data,e=this._disabled||{};a=W[a];d=W[d];if(void 0!==a&&a!==d)switch(a){case !0:e.fill||e.stroke||e["stroke-width"]||e.cursor?(e.fill&&this.bottom.attr("fill",e.fill)&&b.symbol.attr("fill",e.fill),e.stroke&&this.bottom.attr("stroke",e.stroke)&&b.symbol.attr("stroke",e.stroke),e["stroke-width"]&&this.bottom.attr("stroke-width",e["stroke-width"]&&b.symbol.attr("fill",
+e.fill)),e.cursor&&b.tracker.attr("cursor",e.cursor)):c.attr("fill","rgba(204,204,205,.5)");c.unmousedown(g.mousedown).unmouseup(g.mouseup).unhover(g.hoverin,g.hoverout).unmousemove(g.mousemove);break;case !1:c.attr("fill",aa).mousedown(g.mousedown,this).mouseup(g.mouseup,this,!0).hover(g.hoverin,g.hoverout,this,this).mousemove(g.mousemove,this)}},"button-label":function(a){var b=this._.button,c=this.attrs,d=b.label,g=b.cssArg,e=this.attrs["button-repaint"];a=T(a||"");"none"===a?d&&(b.label=d.remove()):
+a&&(!d&&(d=b.label=this.paper.text(this).insertBefore(b.tracker)),d.attr({text:a,"text-anchor":"middle","vertical-align":"middle"}),g&&g.length&&d.css.apply(d,g));e&&c["button-label"]!==a&&this.attr("button-repaint",e)},"button-symbol":function(a){var b=this._.button,c=b.symbol,d=this.attrs["button-repaint"];a=T(a||"");"none"===a?(c&&(b.symbol=c.remove()),delete b.symbol):a&&!c&&(b.symbol=this.paper.symbol(this).insertAfter(b.bound));d&&this.attr("button-repaint",d)},"button-symbol-position":function(a){return{"button-symbol-position":{top:"top",
+right:"right",bottom:"bottom",left:"left",none:"none"}[T(a).toLowerCase()]||"none"}},"button-symbol-padding":function(a){return{"button-symbol-padding":J(a)}},"button-padding":function(a,b){return{"button-padding":[null==a&&(a=5)||J(a),null==b&&a||J(b)]}},"button-repaint":function(a,b,c,d,g){var e=this._.button,k=e.bound,m=e.label,l=e.symbol,v=this.attrs,D=v["button-padding"],t=D[0],H=D[1],p,O;void 0===a&&(a=0);void 0===b&&(b=0);if(void 0===c||void 0===d)p=m&&m.getBBox()||{width:0,height:0},void 0===
+c&&(c=2*t+p.width),void 0===d&&(d=2*H+p.height);k=L.crispBound(a,b,c,d,k.attr("stroke-width"));k.r=L.pick(g,V(.1*r(d,c)));a=k.x;b=k.y;c=k.width;d=k.height;m&&m.attr({x:a+c/2,y:b+d/2});if(l){!L.is(O=v["button-symbol-padding"],"finite")&&(O=.2*d);g=d-H;p=.5*g;switch(v["button-symbol-position"]+(m&&"+"||"-")){case "right+":a=a+(c+(2*p+H))-p-t;b+=.5*d;m.attr("transform",["t",-(g+O),0]);break;case "left+":a=a+t+p;b+=.5*d;m.attr("transform",["t",g+O,0]);break;case "top+":a+=.5*c;b=b+D[1]+p;m.attr("transform",
+["t",0,g+O]);break;case "bottom+":a+=.5*c;b=b+(d+(2*p+O))-H-p;m.attr("transform",["t",0,-(g+O)]);break;default:a+=.5*c,b+=.5*d}l.attr("symbol",[v["button-symbol"],a,b,p])}e.bound.attr(k);e.tracker.attr(k)},fill:function(a,b,c,d,g){var e=this._.button,k=e.bound,m=e.symbol,l=e.label,v={normal:e.gradient,active:e.gradientActive,hover:e.gradientHover}[a];v||(g||(a=L.getRGB(a),a.error&&(a=L.color("#cccccc")),a="opacity"in a?"rgba("+[a.r,a.g,a.b,a.opacity]+")":"rgb("+[a.r,a.g,a.b]+")"),e.gradient=g?a:[90,
+L.tintshade(a,-.8).rgba+":0",L.tintshade(a,.8).rgba+":100"].join("-"),e.gradientActive=[270,L.tintshade(a,-.8).rgba+":0",L.tintshade(a,.8).rgba+":100"].join("-"),d=L.getRGB(d),d.error&&(d=a)||(d="opacity"in d?"rgba("+[d.r,d.g,d.b,d.opacity]+")":"rgb("+[d.r,d.g,d.b]+")"),e.gradientHover=g?d:[90,L.tintshade(d,-.9).rgba+":0",L.tintshade(d,.7).rgba+":100"].join("-"),c=c||L.tintshade(a,.2).rgba,b=b||L.tintshade(a,-.2).rgba,e.symbolFill=c,e.labelFill=b,v=(this.pressed||this.active)&&e.gradientActive||this.hovered&&
+e.gradienthover||e.gradient);k.attr("fill",v);m&&m.attr("fill",e.symbolFill);l&&l.attr("fill",e.labelFill);return!1},stroke:function(a,b){var c=this._.button,d=c.symbol;a=L.color(a);a.error&&(a=L.color("#999999"));c.bound.attr("stroke",a);d&&d.attr("stroke",b||a);return!1},"stroke-width":function(a,b){var c=this._.button,d=c.symbol;c.bound.attr("stroke-width",a);c.tracker.attr("stroke-width",a);d&&d.attr("stroke-width",b);return!1},config:function(a){a.hover&&(this._hover={fill:a.hover.fill,stroke:a.hover.stroke,
+"stroke-width":a.hover["stroke-width"],cursor:a.hover.cursor});a.disabled&&(this._disabled={fill:a.disabled.fill,stroke:a.disabled.stroke,"stroke-width":a.disabled["stroke-width"],cursor:a.disabled.cursor});a.pressed&&(this._pressed={fill:a.pressed.fill,stroke:a.pressed.stroke,"stroke-width":a.pressed["stroke-width"],cursor:a.pressed.cursor});a.normal&&(this._normal={fill:a.normal.fill,stroke:a.normal.stroke,"stroke-width":a.normal["stroke-width"],cursor:a.normal.cursor});a.symbol&&(a.symbol={stroke:a.normal.stroke,
+"stroke-width":a.normal["stroke-width"]})}}},{name:"trianglepath",trianglepath:function(){var a=arguments,b=L._lastArgIfGroup(a);return this.path(b).attr("trianglepath",[a[0],a[1],a[2],a[3],a[4],a[5],a[6]||0,a[7]||0,a[8]||0])},fn:{sides:function(){var a=this._args;return[da(a[0],a[1],a[2],a[3]),da(a[2],a[3],a[4],a[5]),da(a[4],a[5],a[0],a[1])]},enclosedAngles:function(){var a=this._sides;return[b((E(a[0],2)+E(a[2],2)-E(a[1],2))/(2*a[0]*a[2])),b((E(a[0],2)+E(a[1],2)-E(a[2],2))/(2*a[0]*a[1])),b((E(a[2],
+2)+E(a[1],2)-E(a[0],2))/(2*a[2]*a[1]))]},semiperimeter:function(){var a=this._sides||this.sides();return(a[0]+a[1]+a[2])/2}},ca:{trianglepath:function(a,b,c,d,e,k,m,v,D){if(m||v||D){this._args=arguments;this._sides=this.sides();var t=this.enclosedAngles(),H;H=this.semiperimeter();H=g(H*(H-this._sides[0])*(H-this._sides[1])*(H-this._sides[2]))/H;t=[r(m,H)/l(t[0]/2),r(v,H)/l(t[1]/2),r(D,H)/l(t[2]/2)];t=[na(a,b,e,k,t[0]),na(a,b,c,d,t[0]),na(c,d,a,b,t[1]),na(c,d,e,k,t[1]),na(e,k,c,d,t[2]),na(e,k,a,b,
+t[2])];this.attr({path:["M",t[0].x,t[0].y,"Q",a,b,t[1].x,t[1].y,"L",t[2].x,t[2].y,"Q",c,d,t[3].x,t[3].y,"L",t[4].x,t[4].y,"Q",e,k,t[5].x,t[5].y,"L",t[0].x,t[0].y]})}else this.attr({path:["M",a,b,"L",c,d,e,k,"Z"]})}}}]);L.ca["text-bound"]=function(a,b,c,d,g,e){d=this.paper;var k=this._.textbound;if("text"===this.type){if(!(b&&"none"!==b||a&&"none"!==a))return this._.textbound=k&&k.unfollow(this).remove(),!1;c&&L.is(c,"finite")||(c=0);g&&L.is(g,"finite")||(g=0);!k&&(k=this._.textbound=d.rect(0,0,0,
+0,this.group).follow(this,L.ca["text-bound"].reposition,"before"));k.attr({stroke:b,"stroke-width":c,fill:a,"shape-rendering":1===c&&"crisp"||"",r:g});e&&k.attr("stroke-dasharray",e);L.ca["text-bound"].reposition.call(k,this.attr(),this);return!1}};L.ca["text-bound"].reposition=function(a,b){var c={},d,g,e,k,m;a.hasOwnProperty("visibility")&&this.attr("visibility",a.visibility);if(a.hasOwnProperty("text-bound")||a.hasOwnProperty("x")||a.hasOwnProperty("y")||a.hasOwnProperty("text")||a.hasOwnProperty("text-anchor")||
+a.hasOwnProperty("text-align")||a.hasOwnProperty("font-size")||a.hasOwnProperty("line-height")||a.hasOwnProperty("vertical-align")||a.hasOwnProperty("transform")||a.hasOwnProperty("rotation"))d=b.attrs["text-bound"],g=T(d&&d[3]||"0").split(ka),d=J(g[0])||0,g=L.pick(J(g[1]),d),e=b.getBBox(),k=e.width,m=e.height,isNaN(k)||(c.x=e.x-d,c.y=e.y-g,c.width=k+2*d,c.height=m+2*g),this.attr(c)};L.fn.symbol=function(){var a=arguments,b=a.length-1,c=a[b];c&&c.constructor===L.el.constructor?a[b]=void 0:c=void 0;
+b=this.path(void 0,c);b.ca.symbol=L.fn.symbol.ca.symbol;return a.length===!!c+0?b:b.attr("symbol",a)};L.fn.symbol.cache={"":L._cacher(function(a,b,c,d){return 3<arguments.length?["M",a,b,"h",c,"v",d,"h",-c,"v",-d,"z"]:["M",a-c,b-c,"h",c*=2,"v",c,"h",-c,"v",-c,"z"]})};L.fn.symbol.ca={symbol:function(a){var b=L.is(a,"object")&&1===arguments.length&&!L.is(a,"function")?a:arguments,c;b===a&&(a=b[0]);b=(c=L.is(a,"function")&&a||L.fn.symbol.cache[a]||L.fn.symbol.cache[""])&&c.apply(L,S.call(b,1));L.is(b,
+"array")||L.is(b,"string")?this.attr("path",b):b&&this.attr(b)}};L.addSymbol=function(a,b){var c=L.is(b,"function")&&(c={},c[a]=b,c)||a,d=L.fn.symbol.cache,g=[],e;for(e in c)b=c[e],d[e]=L.is(b,"function")&&L._cacher(b,L)||(g.push(e),b);for(;e=g.pop();)d[e]=d[d[e]]};L.svg?(ga="$1",ja=function(a){a?"string"===typeof a?a=a.replace(ha,ga):a.toString=ba:a="M0,0";this.node.setAttribute("d",a.toString());return this},L._engine.litepath=function(a,b,c,d){a=G("path");(d||b).canvas.appendChild(a);b=new D(a,
+b,d);b.type="litepath";b.id=a.raphaelid=L._oid++;a.raphael=!0;H(b,{fill:"none",stroke:"#000"});return b},L._getPath.litepath=function(a){return L.parsePathString(a.node.getAttribute("d"))}):L.vml&&(ga=function(a,b){return O[b]||b},ma=function(){this._transform.apply(this,arguments);this._.bcoord&&(this.node.coordsize=this._.bcoord);return this},ja=function(a){a?"string"===typeof a?a=a.replace(ha,ga):a.toString=ba:a="M0,0";this.node.path=a;return this},L._engine.litepath=function(a,b,c,d){a=G("shape");
+var g=a.style,e=new D(a,b,d);g.cssText="position:absolute;left:0;top:0;width:21600px;height:21600px;";c=J(c);isNaN(c)?a.coordsize="21600 21600":(e._.bzoom=c,g.width="1px",g.height="1px",a.coordsize=e._.bcoord=c+" "+c);a.coordorigin=b.coordorigin;e.type="litepath";e.id=a.raphaelid=L._oid++;a.raphael=!0;e._transform=e.transform;e.transform=ma;L._setFillAndStroke(e,{fill:"none",stroke:"#000"});(d||b).canvas.appendChild(a);b=G("skew");b.on=!0;a.appendChild(b);e.skew=b;return e},L._getPath.litepath=function(a){return L.parsePathString(a.node.path||
+"")});L.fn.litepath=function(a,b,c){b&&b.constructor===D&&(c=b,b=void 0);a&&a.constructor===D&&(c=a,a="");b=L._engine.litepath(a,this,b,c);b.ca.litepath=ja;a&&b.attr("litepath",L.is(a,"array")?[a]:a);return this.__set__&&this.__set__.push(b),this._elementsById[b.id]=b}}]);
+FusionCharts.register("module",["private","modules.renderer.js-htmlrenderer",function(){var e=this.hcLib,q=e.Raphael,F=e.dem,u=this.window,d=u.document,a=/msie/i.test(u.navigator.userAgent)&&!u.opera,t="VML"===q.type,E=e.hasTouch,c={cursor:"cursor"},l={x:"left",y:"top",strokeWidth:"borderThickness","stroke-width":"borderThickness",width:"width",height:"height"},b={fill:"backgroundColor",stroke:"borderColor",color:"color"},r={left:0,top:0,padding:0,border:"none",margin:0,outline:"none","-webkit-apperance":"none",
+position:"absolute",zIndex:20},V,p=function(a,b,c,g){a=d.createElement(a);for(var e in b)l[e]?a.style[e]=b[e]:a.setAttribute(e,b[e]);for(e in c)a.style[e]=c[e];g&&g.appendChild&&g.appendChild(a);return a},g;g=function(a,b,c){b&&b instanceof g&&(b=b.element);(this.element=p(a,c,r,b)).ishot="true";this.nodeName=a.toLowerCase();this.added=Boolean(b)};g.prototype={attr:function(g){var e=this.element,r={},p,q,v,u,L,E,G;if("object"!==typeof g){if(!(r=this[g])){if("string"===typeof g)e&&e.getAttribute&&
+(u=e.getAttribute(g));else if(void 0!==g&&null!==g&&"object"===typeof g)for(v in g)e.setAttribute(v,g[v]);r=u}return r}for(p in g){v=g[p];if(c[p]){switch(p){case "cursor":"pointer"===v&&t&&(v="hand")}e.style[c[p]]=v;q=!0}else if(l[p])e.style[l[p]]=v+"px",q=!0;else if(b[p])e.style[b[p]]=v&&v.replace(/^#?([a-f0-9]+)/ig,"#$1")||"none",q=!0;else if(/^visibility$/i.test(p))q="hidden"===v,e.style.display=q?"none":"",this.hidden=q,q=!0;else if(/^opacity$/i.test(p))e.style.opacity=v,a&&(q=100*Number(v),e.style.filter=
+"progid:DXImageTransform.Microsoft.Alpha(Opacity="+q+")"),q=!0;else if(/^innerhtml$/i.test(p)){if(t&&"select"==e.nodeName.toLowerCase()){for(q=v.match(/<option\s?[\s\S]*?(\/>|><\/option>|>[\s\S]*?<\/option>)/ig);e.firstChild;)e.removeChild(e.firstChild);L=0;for(E=q.length;L<E;L+=1)u=q[L],G=d.createElement("option"),/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/ig.test(u)&&(G.value=u.replace(/<option\s([\s\S]*[\'\"])\s*?(\/>|>[\s\S]*<\/option>)/ig,"$1").replace(/[\s\S]*value\s*\=\s*[\'\"]([\s\S]*)[\'\"]/,
+"$1")),G.text=u.replace(/<option\s*[\s\S]*[\'\"]?\s*?[\/>|\>]([\s\S]*)<\/option>/ig,"$1 "),e.options.add(G)}else"input"!==e.nodeName.toLowerCase()&&void 0!==v&&(e.innerHTML=v||"");q=!0}else/^text$/i.test(p)?("input"!==e.nodeName.toLowerCase()&&(e.innerHTML="",void 0!==v&&e.appendChild(d.createTextNode(v))),q=!0):/^type$/i.test(p)&&a&&this.added&&(q=!0);q&&(r[p]=v,delete g[p],q=!1)}for(p in g)e.setAttribute(p,g[p]);for(p in r)this[p]=g[p]=r[p],delete r[p];return this},val:function(a){var b=this.element,
+c=void 0===a;return"input"===this.nodeName&&"checkbox"===b.getAttribute("type")?c?this.checked()?1:0:this.checked(a):c?b.value:(b.value=a,this)},checked:function(a){var b=this.element;return void 0===a?b.checked:(a?b.setAttribute("checked","checked"):b.removeAttribute("checked"),this)},css:function(a,b){var c=this.element.style,d;if("object"===typeof a)for(d in a)c[d]=a[d];else d&&void 0!==b&&(c[d]=b);return this},translate:function(a,b){var c=this.element;void 0!==a&&(c.style.left=a+"px");void 0!==
+b&&(c.style.top=b+"px");return this},add:function(a,b){var c=this.element,d=a.element;b?d.insertBefore(c,d.firstChild):d.appendChild(c);this.added=!0;return this},hide:function(){this.element.style.display="none";return this},show:function(){this.element.style.display="";return this},focus:function(){"function"===typeof this.element.focus?this.element.focus():e.dem.fire(this.element,"focus")},destroy:function(){var a=this.element||{};a.onclick=a.onmouseout=a.onmouseover=a.onmousemove=a.onblur=a.onfocus=
+null;V||(V=p("div"));a&&V.appendChild(a);V.innerHTML="";delete this.element;return null},on:t?function(a,b){this.element["on"+a]=function(){var a=u.event;a.target=a.srcElement;b(a)};return this}:function(a,b){var c=b;E&&"click"===a&&(a="touchstart",c=function(a){a.preventDefault();b()});this.element["on"+a]=c;return this},bind:function(a,b,c){F.listen(this.element,a,b,c);return this},unbind:function(a,b){F.unlisten(this.element,a,b);return this},trigger:function(a,b){F.fire(this.element,a,b);return this},
+fadeIn:function(a,b){var c="fast"===a?400:1E3;this.show();this.attr({opacity:0});e.danimate.animate(this.element,{opacity:1},c,"linear",b)}};g.prototype.constructor=g;q.fn.html=function(a,b,c,d){var e={},l;b&&"type"in b&&(e.type=b.type,delete b.type);a=(new g(a,d,e)).css(c).attr(b);for(l in e)b[l]=e[l];return a}}]);
+FusionCharts.register("module",["private","modules.renderer.js-raphaeltooltip",function(){var e=this,q=e.window,F=q.document,u=F.body||F.getElementsByTagName("body")[0],d=e.hcLib,a=d.Raphael,t=a.eve,E=d.createElement,c=d.addEvent,l=d.removeEvent,b=d.getPosition,r=d.hasTouch,V=d.getTouchEvent,p=q.Math,g=p.ceil,k=p.floor,m={},J=q.screen.availHeight,T=q.screen.availWidth,S={E:1,moz:1,webkit:1,o:1,ms:1},v={borderRadius:"borderRadius",boxShadow:"boxShadow"},aa=/\-([a-z])/ig,L=function(a,b){return b.toUpperCase()},
+fa=function(b){var c=G.forbiddenStyle,d,g,e;for(d in b)g=aa.test(d)?d.replace(aa,L):d,void 0!==b[d]&&!c[g]&&(this[g]=b[d]),a.vml&&/color/ig.test(g)&&(this[g]=a.getRGB(this[g]).toString());for(d in v)if(this[d])for(e in S)this[e+d]=this[d]},G=d.toolTip={elementId:"fusioncharts-tooltip-element",element:null,lastTarget:null,currentTarget:null,currentPaper:null,pointeroffset:12,prevented:!1,defaultStyle:d.extend2(fa.prototype,{backgroundColor:"#ffffee",borderColor:"#000000",borderWidth:"1px",color:"#000000",
+fontSize:"10px",lineHeight:"12px",padding:"3px",borderStyle:"solid"}),defaultContainerStyle:{position:"absolute",textAlign:"left",margin:"0",zIndex:"99999",pointer:"default",display:"block"},forbiddenStyle:{}},H=function(a){!0===G._oobready?G._oobready=!1:(l(u,"touchstart",H),!G.hidden&&G.currentTarget&&(a=a.srcElement||a.target||m,a.raphael&&G.currentTarget.paper.getById(a.raphaelid)===G.currentTarget||G.hide()))};a.svg&&(G.defaultContainerStyle.pointerEvents="none",G.defaultStyle.borderRadius="0",
+G.defaultStyle.boxShadow="none");a.vml&&(G.forbiddenStyle.borderRadius=!0,G.forbiddenStyle.boxShadow=!0,G.defaultStyle.filter="");G.setup=function(){var b=G.container,c=G.textElement,d=G.style,g=G.defaultContainerStyle,k=G.forbiddenStyle,m;b||(b=G.element=E("span"),(F.body||F.getElementsByTagName("body")[0]).appendChild(b),b.setAttribute("id",G.elementId),d=G.containerStyle=b.style,c=G.textElement=E("span"),b.appendChild(c),G.style=a.vml?c.runtimeStyle:c.style,G.style.overflow="hidden",G.style.display=
+"block",G.hidden=!1,G.hide());for(m in g)!k[m]&&(d[m]=g[m]);G.scatted=!0;t.on("raphael.drag.start.*",function(){G.scatted&&(G.waitingScat=!0)});t.on("raphael.drag.move.*",function(){G.waitingScat&&(G.block(),G.waitingScat=!1)});t.on("raphael.drag.end.*",function(){G.waitingScat=!1;G.scatted&&G.unblock(!0)});t.on("raphael.remove",function(){if(G.currentPaper===this||G.currentTarget&&G.currentTarget.paper===this)G.hide(),G.currentTarget=G.currentPaper=null});e.addEventListener("LinkedChartInvoked",
+function(a){G.currentPaper===a.sender.jsVars.hcObj.paper&&G.hide()});e.addEventListener("realTimeUpdateComplete",function(a){G.currentPaper===a.sender.jsVars.hcObj.paper&&G.hide()})};G.restyle=function(a){var b=G.style,c;for(c in a)b[c]=a[c]};G.onelement=function(a){if(!a.__tipProcessed){var d=this.paper,g="group"===this.type?d&&d._elementFromEvent(a):this,e=d.__tipStyle;g&&e&&g.__tipNeeded&&((a.originalEvent||a).FusionChartsPreventEvent&&G.preventTooltip(),G.hiding&&(G.hiding=clearTimeout(G.hiding)),
+G.currentPaper!==d&&(d.__tipCp=d.canvas&&b(d.canvas.parentNode,!0)||{},G.restyle(d.__tipStyle),G.currentPaper=d),G.lastTarget=G.currentTarget,G.currentTarget=g,(G.scatted=g.__tipScatted)&&G.unblock(!0),G.onredraw.call(this,a),a.__tipProcessed=!0,r&&(G._oobready=!0,c(u||(u=F.body||F.getElementsByTagName("body")[0]),"touchstart",H)))}};G.onredraw=function(a){a.__tipProcessed||(a.__tipProcessed=!0,(this.paper&&this.paper._elementFromEvent(a))===G.currentTarget&&(a=V(a),G.x=k(a.pageX||a.clientX+F.body.scrollLeft+
+F.documentElement.scrollLeft||0),G.y=k(a.pageY||a.clientY+F.body.scrollTop+F.documentElement.scrollTop||0),G.redraw()))};G.onhide=function(a){a.__tipProcessed||(a.__tipProcessed=!0,(this.paper&&this.paper._elementFromEvent(a))===G.currentTarget&&(G.hiding=setTimeout(G.hide,200)))};G.redraw=function(){if(!G.prevented&&!G.blocked&&G.currentTarget&&G.currentTarget.__tipNeeded){var a=G.currentTarget,b=a.paper,c=G.textElement,d=G.containerStyle,e=G.style,k=a.__tipText,a=G.pointeroffset,m=b.__tipCp,l=F.documentElement||
+F.body,v=l.scrollLeft,l=l.scrollTop,t=G.x,H=G.y,r,A=b.width,p=b.height,b=b.__tipConstrain;if(100>A||100>p)b=!1;G.hidden&&(G.containerStyle.top="-999em",G.show());k!==G.text&&(G.text=k,d.width=d.height="",c.innerHTML=k,e.whiteSpace="nowrap",r=g(e.pixelWidth||c.offsetWidth||0),k=g(e.pixelHeight||c.offsetHeight||0),(G.textWidthOverflow=t+r>m.left+A)?(r=A-2*a>r?d.width:A-2*a||0,d.width=r&&r+"px"||"",e.whiteSpace="normal"):d.width="",(G.textHeightOverflow=k>p)?(d.height=(p||0)-2*a+"px",e.whiteSpace="normal"):
+d.height="");r=g(e.pixelWidth||c.offsetWidth||0);k=g(e.pixelHeight||c.offsetHeight||0);b?(G.textWidthOverflow?t=(t-r<m.left?m.left:t-r)-v:t+a+r>m.left-v+A-a&&(t=t-r-a),G.textHeightOverflow?H=m.top-l:H+a+k>m.top-l+p-a&&(H=H-k-1.5*a)):(v+T<t+a+r&&(t=t-r-a),l+J<H+a+k&&(H=H-k-1.5*a));d.left=(t+a||0)+"px";d.top=(H+a||0)+"px";G.hidden&&G.show()}};G.hide=function(){G.hiding&&(G.hiding=clearTimeout(G.hiding));G.containerStyle.display="none";G.hidden=!0;G.prevented=!1};G.show=function(){G.blocked||(G.hiding&&
+(G.hiding=clearTimeout(G.hiding)),G.containerStyle.display="inline",G.hidden=!1)};G.preventTooltip=function(){G.prevented=!0};G.block=function(){G.blocked=!0;G.containerStyle.display="none"};G.unblock=function(a){G.blocked=!1;a&&(G.containerStyle.display=G.hidden&&"none"||"inline")};a.fn.tooltip=function(c,d,g){d&&(d=.4*(void 0===d.opacity?1:d.opacity),a.svg?c.boxShadow="1px 1px 3px rgba(64,64,64,"+d+")":c.filter='progid:DXImageTransform.Microsoft.Shadow(Strength=2, Direction=135, Color="#404040", shadowOpacity="'+
+d/2+'")');this.__tipStyle=new fa(c);this.__tipCp=this.canvas&&b(this.canvas.parentNode,!0)||{};this.__tipConstrain=Boolean(g);return this};a.el.trackTooltip=function(a){var b=!!this.__tiptracking;if(void 0===a||(a=!!a)===b)return this;a?r?this.touchstart(G.onelement):(this.mouseover(G.onelement),this.mousemove(G.onredraw),this.mouseout(G.onhide)):r?this.untouchstart(G.onelement):(this.unmouseover(G.onelement),this.unmousemove(G.onredraw),this.unmouseout(G.onhide));this.__tiptracking=a;return this};
+a.el.tooltip=function(b,c,d,g,e){G.setup();a.el.tooltip=function(a,b,c,d,g){b=!1===a||void 0===a||""===a;this.__tipScatted=void 0===d?this.__tipScatted:!d;void 0===this.__tipScatted&&(this.__tipScatted=!0);null!==g&&(this.__tip_blocked=g);b^!this.__tipText&&(this.__tipNeeded=!b);this.__tipText=a;if(G.currentTarget===this&&a!==G.text&&!G.hidden)G[b?"hide":"redraw"]();return this};return a.el.tooltip.call(this,b,c,d,g,e)};e.core._setTooltipZIndex=function(a){a=parseInt(a,10);G&&!isNaN(a)&&(G.defaultContainerStyle.zIndex=
+a,G.containerStyle&&(G.containerStyle.zIndex=a))}}]);
+FusionCharts.register("module",["private","modules.renderer.js-smartlabel",function(){var e=this.hcLib,q=e.isIE,F=e.hasSVG,u=Math.max,d=this.window,a=/ HtmlUnit/.test(d.navigator.userAgent),t=d.document,E=/ AppleWebKit\//.test(d.navigator.userAgent),c=!!t.createElement("canvas").getContext,l=!(!c||!t.createElement("canvas").getContext("2d").measureText),d=function(){function b(a,b,c){if(!a||!a.length)return 0;var d=c.getWidthFunction(),g=0,e=0,e=d(a),k=e/a.length;c=b;g=Math.ceil(b/k);if(e<b)return a.length-
+1;g>a.length&&(c=b-e,g=a.length);for(;0<c;)if(c=b-d(a.substr(0,g)),e=Math.floor(c/k))g+=e;else return g;for(;0>c;)if(c=b-d(a.substr(0,g)),e=Math.floor(c/k))g+=e;else break;return g}function d(a,b){b=5<b?b:5;this.maxContainers=20>b?b:20;this.last=this.first=null;this.containers={};this.length=0;this.rootNode=a;if(fa){var c=t.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttributeNS("http://www.w3.org/2000/svg","xlink","http://www.w3.org/1999/xlink");c.setAttributeNS("http://www.w3.org/2000/svg",
+"height","0");c.setAttributeNS("http://www.w3.org/2000/svg","width","0");this.svgRoot=c;this.rootNode.appendChild(c)}}function V(b,c,g){if("undefined"!==typeof b&&"object"!==typeof b){this.id=b;var e;"string"===typeof c&&(c=t.getElementById(c));a:{if(c&&(c.offsetWidth||c.offsetHeight)){if(c.appendChild){c.appendChild(c=t.createElement("div"));c.className="fusioncharts-smartlabel-container";c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");b=c;break a}}else if((b=t.getElementsByTagName("body")[0])&&
+b.appendChild){c=t.createElement("div");c.className="fusioncharts-smartlabel-container";c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");b.appendChild(c);b=c;break a}b=void 0}b=this.parentContainer=b;b.innerHTML="WgI";if(a||!b.offsetHeight&&!b.offsetWidth)fa=!0;b.innerHTML="";for(e in k)b.style[e]=k[e];this.containerManager=new d(b,10);this.showNoEllipses=!g;this.init=!0;this.style={};this.setStyle()}}var p=e.supportedStyle,g={fontWeight:1,"font-weight":1,fontStyle:1,"font-style":1,
+fontSize:1,"font-size":1,fontFamily:1,"font-family":1},k={position:"absolute",top:"-9999em",left:"-9999em",whiteSpace:"nowrap",padding:"0px",width:"1px",height:"1px",overflow:"hidden"},m=E?0:4.5,J=0,T=/\b_SmartLabel\b/,S=/\b_SmartLabelBR\b/,v=/(<[^<\>]+?\>)|(&(?:[a-z]+|#[0-9]+);|.)/ig,aa=RegExp("\\<span[^\\>]+?_SmartLabel[^\\>]{0,}\\>(.*?)\\<\\/span\\>","ig"),L=/<[^>][^<]*[^>]+>/i,fa=!1,G=0,H=0,D,R,W;t.getElementsByClassName?(D="getElementsByClassName",R="_SmartLabel",W=!0):(D="getElementsByTagName",
+R="span",W=!1);d.prototype={get:function(a){var b=this.containers,c=this.length,d=this.maxContainers,g,e="",k="",k=this.getCanvasFont(a);for(g in p)void 0!==a[g]&&(e+=p[g]+":"+a[g]+";");if(!e)return!1;if(b[e])e=b[e],this.first!==e&&(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.next=this.first,e.next.prev=e,this.last===e&&(this.last=e.prev),e.prev=null,this.first=e);else{if(c>=d)for(a=c-d+1;a--;)this.removeContainer(this.last);e=this.addContainer(e,k)}return e},getCanvasFont:function(a){var b,
+d=[];if(!c||!l)return!1;for(b in g)void 0!==a[b]&&d.push(a[b]);return d.join(" ")},setMax:function(a){var b=this.length;a=5<a?a:5;a=20>a?a:20;if(a<b){for(b-=a;b--;)this.removeContainer(this.last);this.length=a}this.maxContainers=a},addContainer:function(a,b){var c,d;this.containers[a]=d={next:null,prev:null,node:null,ellipsesWidth:0,lineHeight:0,dotWidth:0,avgCharWidth:4,keyStr:a,canvasStr:b,charCache:{}};d.next=this.first;d.next&&(d.next.prev=d);this.first=d;this.last||(this.last=d);this.length+=
+1;c=d.node=t.createElement("div");this.rootNode.appendChild(c);q&&!F?c.style.setAttribute("cssText",a):c.setAttribute("style",a);c.setAttribute("aria-hidden","true");c.setAttribute("role","presentation");c.style.display="inline-block";c.innerHTML="WgI";d.lineHeight=c.offsetHeight;d.avgCharWidth=c.offsetWidth/3;fa?(c=d.svgText=t.createElementNS("http://www.w3.org/2000/svg","text"),c.setAttribute("style",a),this.svgRoot.appendChild(c),c.textContent="WgI",d.lineHeight=c.getBBox().height,d.avgCharWidth=
+(c.getBBox().width-m)/3,c.textContent="...",d.ellipsesWidth=c.getBBox().width-m,c.textContent=".",d.dotWidth=c.getBBox().width-m):b?(c=d.canvas=t.createElement("canvas"),c.style.height=c.style.width="0px",this.rootNode.appendChild(c),d.context=c=c.getContext("2d"),c.font=b,d.ellipsesWidth=c.measureText("...").width,d.dotWidth=c.measureText(".").width):(c.innerHTML="...",d.ellipsesWidth=c.offsetWidth,c.innerHTML=".",d.dotWidth=c.offsetWidth,c.innerHTML="");return d},removeContainer:function(a){var b=
+a.keyStr;b&&this.length&&a&&(--this.length,a.prev&&(a.prev.next=a.next),a.next&&(a.next.prev=a.prev),this.first===a&&(this.first=a.next),this.last===a&&(this.last=a.prev),a.node.parentNode.removeChild(a.node),a.canvas&&a.canvas.parentNode.removeChild(a.canvas),delete this.containers[b])},dispose:function(){var a,b=this.containers;this.maxContainers=null;for(a in b)this.removeContainer(b[a]);this.rootNode.parentNode.removeChild(this.rootNode);this.last=this.first=this.rootNode=null}};d.prototype.constructor=
+d;V.prototype={dispose:function(){this.init&&(this.containerManager.dispose(),delete this.container,delete this.context,delete this.cache,delete this.containerManager,delete this.containerObj,delete this.id,delete this.style,delete this.parentContainer,delete this.showNoEllipses)},useEllipsesOnOverflow:function(a){this.init&&(this.showNoEllipses=!a)},getWidthFunction:function(){var a=this.context,b=this.container,c=this.containerObj.svgText;return c?function(a){var b;c.textContent=a;a=c.getBBox();
+b=a.width-m;1>b&&(b=a.width);return b}:a?function(b){return a.measureText(b).width}:function(a){b.innerHTML=a;return b.offsetWidth}},getSmartText:function(a,c,d,g){if(!this.init)return!1;if(void 0===a||null===a)a="";var e={text:a,maxWidth:c,maxHeight:d,width:null,height:null,oriTextWidth:null,oriTextHeight:null,oriText:a,isTruncated:!1},k=!1,m,l,r=0,A,p,q,E=-1,F=k=-1;l=this.container;var Y=this.context,V=0;q=0;var sa,wa,ob;ob=[];var ia=0,bb=this.showNoEllipses?"":"...";p=this.lineHeight;var ua,V=
+[],E=m=-1;ua=function(a){a=a.replace(/^\s\s*/,"");for(var b=/\s/,c=a.length;b.test(a.charAt(--c)););return a.slice(0,c+1)};k=-1;wa=this.getWidthFunction();if(l){if(!fa){l.innerHTML=a;e.oriTextWidth=k=l.offsetWidth;e.oriTextHeight=q=l.offsetHeight;if(q<=d&&k<=c)return e.width=e.oriTextWidth=k,e.height=e.oriTextHeight=q,e;if(p>d)return e.text="",e.width=e.oriTextWidth=0,e.height=e.oriTextHeight=0,e}a=ua(a).replace(/(\s+)/g," ");k=L.test(a);p=this.showNoEllipses?c:c-J;if(k){r=a.replace(v,"$2");a=a.replace(v,
+'$1<span class="_SmartLabel">$2</span>');a=a.replace(/(<br\s*\/*\>)/g,'<span class="_SmartLabel _SmartLabelBR">$1</span>');l.innerHTML=a;ia=l[D](R);Y=0;for(wa=ia.length;Y<wa;Y+=1)if(a=ia[Y],W||T.test(a.className))ua=a.innerHTML,""!==ua&&(" "===ua?E=V.length:"-"===ua&&(m=V.length),V.push({spaceIdx:E,dashIdx:m,elem:a}),ob.push(ua));ia=0;m=V.length;G=V[0].elem.offsetWidth;if(G>c)return e.text="",e.width=e.oriTextWidth=e.height=e.oriTextHeight=0,e;G>p&&!this.showNoEllipses&&(p=c-2*H,p>G?bb="..":(p=c-
+H,p>G?bb=".":(p=0,bb="")));ob=V[0].elem.offsetLeft;Y=V[0].elem.offsetTop;if(g)for(;ia<m;ia+=1)a=V[ia].elem,wa=a.offsetLeft-ob+a.offsetWidth,wa>p&&(sa||(sa=ia),l.offsetWidth>c&&(A=ia,ia=m));else for(;ia<m;ia+=1)a=V[ia].elem,ua=a.offsetHeight+(a.offsetTop-Y),wa=a.offsetLeft-ob+a.offsetWidth,g=null,wa>p?(sa||(sa=ia),wa>c&&(k=V[ia].spaceIdx,E=V[ia].dashIdx,k>F?(V[k].elem.innerHTML="<br/>",F=k):E>F?(V[E].elem.innerHTML=E===ia?"<br/>-":"-<br/>",F=E):a.parentNode.insertBefore(g=t.createElement("br"),a),
+a.offsetHeight+a.offsetTop>d?(g?g.parentNode.removeChild(g):F===E?V[E].elem.innerHTML="-":V[k].elem.innerHTML=" ",A=ia,ia=m):sa=null)):ua>d&&(A=ia,ia=m);if(A<m){e.isTruncated=!0;sa=sa?sa:A;for(ia=m-1;ia>=sa;--ia)a=V[ia].elem,a.parentNode.removeChild(a);for(;0<=ia;--ia)a=V[ia].elem,S.test(a.className)?a.parentNode.removeChild(a):ia=0}e.text=l.innerHTML.replace(aa,"$1");e.isTruncated&&(e.text+=bb,e.tooltext=r)}else{ob=a.split("");m=ob.length;l="";A=[];sa=ob[0];this.cache[sa]?G=this.cache[sa].width:
+(G=wa(sa),this.cache[sa]={width:G});if(p>G)A=a.substr(0,b(a,p,this)).split(""),ia=A.length;else{if(G>c)return e.text="",e.width=e.oriTextWidth=e.height=e.oriTextHeight=0,e;bb&&(p=c-2*H,p>G?bb="..":(p=c-H,p>G?bb=".":(p=0,bb="")))}V=wa(A.join(""));q=this.lineHeight;if(g){for(;ia<m;ia+=1)if(sa=A[ia]=ob[ia],this.cache[sa]?G=this.cache[sa].width:(G=wa(sa),this.cache[sa]={width:G}),V+=G,V>p&&(l||(l=A.slice(0,-1).join("")),V>c))return e.text=ua(l)+bb,e.tooltext=e.oriText,e.width=wa(e.text),e.height=this.lineHeight,
+e;e.text=A.join("");e.width=V;e.height=this.lineHeight}else{for(;ia<m;ia+=1)if(sa=A[ia]=ob[ia]," "!==sa||Y||(sa="&nbsp;"),this.cache[sa]?G=this.cache[sa].width:(G=wa(sa),this.cache[sa]={width:G}),V+=G,V>p&&(l||(l=A.slice(0,-1).join("")),V>c)){k=a.substr(0,A.length).lastIndexOf(" ");E=a.substr(0,A.length).lastIndexOf("-");k>F?(V=wa(A.slice(F+1,k).join("")),A.splice(k,1,"<br/>"),F=k,g=k+1):E>F?(E===A.length-1?(V=wa(A.slice(F+1,k).join("")),A.splice(E,1,"<br/>-")):(V=wa(A.slice(F+1,k).join("")),A.splice(E,
+1,"-<br/>")),F=E,g=E+1):(A.splice(A.length-1,1,"<br/>"+ob[ia]),k=A.length-2,V=wa(A.slice(F+1,k+1).join("")),F=k,g=ia);q+=this.lineHeight;if(q>d)return e.text=ua(l)+bb,e.tooltext=e.oriText,e.width=c,e.height=q-this.lineHeight,e;r=u(r,V);l=null;sa=b(a.substr(g),p,this);V=wa(a.substr(g,sa||1));A.length<g+sa&&(A=A.concat(a.substr(A.length,g+sa-A.length).split("")),ia=A.length-1)}r=u(r,V);e.text=A.join("");e.width=r;e.height=q}return e}e.height=l.offsetHeight;e.width=l.offsetWidth}else e.error=Error("Body Tag Missing!");
+return e},setStyle:function(a){if(!this.init)return!1;if(a!==this.style||this.styleNotSet){a||(a=this.style);var b=a,c=b.fontSize=b.fontSize||"12px";b.lineHeight=b.lineHeight||b["line-height"]||1.2*parseInt(c,10)+"px";this.style=a;(this.containerObj=a=this.containerManager.get(a))?(this.container=a.node,this.context=a.context,this.cache=a.charCache,this.lineHeight=a.lineHeight,J=a.ellipsesWidth,H=a.dotWidth,this.styleNotSet=!1):this.styleNotSet=!0}},getTextSize:function(a,b,c){if(!this.init)return!1;
+var d={text:a,width:null,height:null,oriTextWidth:null,oriTextHeight:null,isTruncated:!1},g=this.container;g&&(g.innerHTML=a,d.oriTextWidth=g.offsetWidth,d.oriTextHeight=g.offsetHeight,d.width=Math.min(d.oriTextWidth,b),d.height=Math.min(d.oriTextHeight,c),d.width<d.oriTextWidth||d.height<d.oriTextHeight)&&(d.isTruncated=!0);return d},getOriSize:function(a){if(!this.init)return!1;var b={text:a,width:null,height:null},c=this.container,d=this.getWidthFunction(),g=0;if(fa){a=a.split(/(<br\s*\/*\>)/g);
+c=a.length;for(b.height=this.lineHeight*c;c--;)g=u(g,d(a[c]));b.width=g}else c&&(c.innerHTML=a,b.width=c.offsetWidth,b.height=c.offsetHeight);return b}};return V.prototype.constructor=V}();e.SmartLabelManager=d}]);
+FusionCharts.register("module",["private","modules.renderer.js-numberformatter",function(){var e=this,q=e.hcLib,F=q.pluckNumber,u=q.extend2,d=q.getValidValue,a=q.pluck,t=q.getFirstValue,E=Math.abs,c=Math.pow,l=Math.round,b=function(a){return a&&a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},r={},V=function(a){var b=[],c;for(c in a)b.push(c+"_"+a[c]);b.sort();return b.join(",")},p=function(a){var b={},c;for(c in a)b[c.toLowerCase()]=a[c];return b};q.NumberFormatter=function(){function g(a,b,d){var g;
+if(0>=b)return l(a)+"";if(isNaN(b))return a+="",12<a.length&&-1!=a.indexOf(".")&&(b=12-a.split(".")[0].length,g=c(10,b),a=l(a*g)/g+""),a;g=c(10,b);a=l(a*g)/g+"";if(1==d)for(-1==a.indexOf(".")&&(a+=".0"),d=a.split("."),b-=d[1].length,d=1;d<=b;d++)a+="0";return a}function e(a,b,c,d,g){var k=Number(a),m="",l=!1,t="",p="",r=t=0;if(isNaN(k))return"";if(1E15<k)return k.toExponential(g?1:14);t=0;r=a.length;-1!=a.indexOf(".")&&(m=a.substring(a.indexOf(".")+1,a.length),r=a.indexOf("."));0>k&&(l=!0,t=1);t=
+a.substring(t,r);a=t.length;g=d.length-1;k=d[g];if(a<k)p=t;else for(;a>=k;)p=(a-k?c:"")+t.substr(a-k,k)+p,a-=k,k=0>=--g?d[0]:d[g],a<k&&(p=t.substring(a,0)+p);""!=m&&(p=p+b+m);!0===l&&(p="-"+p);return p}var m,p={formatnumber:"1",formatnumberscale:"1",forcenumberscale:"0",defaultnumberscale:"",numberscaleunit:["K","M"],numberscalevalue:[1E3,1E3],numberprefix:"",numbersuffix:"",decimals:"",forcedecimals:"0",yaxisvaluedecimals:"2",decimalseparator:".",thousandseparator:",",thousandseparatorposition:[3],
+indecimalseparator:"",inthousandseparator:"",sformatnumber:"1",sformatnumberscale:"0",sforcenumberscale:"0",sdefaultnumberscale:"",snumberscaleunit:["K","M"],snumberscalevalue:[1E3,1E3],snumberprefix:"",snumbersuffix:"",sdecimals:"2",sforcedecimals:"0",syaxisvaluedecimals:"2",xFormatNumber:"0",xFormatNumberScale:"0",xforcenumberscale:"0",xDefaultNumberScale:"",xNumberScaleUnit:["K","M"],xNumberScaleValue:[1E3,1E3],xNumberPrefix:"",xNumberSuffix:""},r={mscombidy2d:{formatnumberscale:"1"}},q=function(c,
+g,e){var k,m,l,D,q,E,O,S,V,ga=g.name,ba=u({},p),ja,ma,da,na,A,ca,Ia,Ba,va,Y,Da;(l=r[ga])&&(ba=u(ba,l));this.csConf=ba;this.chartAPI=g;d(c.numberscaleunit)&&(k=c.numberscaleunit.split(","));if(m=d(c.snumberscaleunit,c.numberscaleunit))m=m.split(",");if(l=d(c.xnumberscaleunit,c.numberscaleunit))l=l.split(",");if(D=d(c.ticknumberscaleunit,c.numberscaleunit))D=D.split(",");if(q=d(c.ynumberscaleunit,c.numberscaleunit))q=q.split(",");d(c.numberscalevalue)&&(E=c.numberscalevalue.split(","));if(ma=d(c.snumberscalevalue,
+c.numberscalevalue))ma=ma.split(",");if(O=d(c.xnumberscalevalue,c.numberscalevalue))O=O.split(",");if(S=d(c.ticknumberscalevalue,c.numberscalevalue))S=S.split(",");if(V=d(c.ynumberscalevalue,c.numberscalevalue))V=V.split(",");if(d(c.thousandseparatorposition))for(ja=c.thousandseparatorposition.split(","),da=ja.length,A=p.thousandseparatorposition[0];da--;)na=parseInt(ja[da],10),0>=na&&(na=A),A=ja[da]=na;g||(g={});da=F(c.scalerecursively,0);na=F(c.sscalerecursively,da);A=F(c.xscalerecursively,da);
+ca=F(c.maxscalerecursion,-1);Ia=F(c.smaxscalerecursion,ca);Ba=F(c.xmaxscalerecursion,ca);va=d(c.scaleseparator," ");Y=d(c.sscaleseparator,va);Da=d(c.xscaleseparator,va);ca||(ca=-1);this.baseConf=k={cacheStore:[],formatnumber:a(c.formatnumber,g.formatnumber,ba.formatnumber),formatnumberscale:a(c.formatnumberscale,g.formatnumberscale,ba.formatnumberscale),forcenumberscale:a(c.forcenumberscale,g.forcenumberscale,ba.forcenumberscale),defaultnumberscale:t(c.defaultnumberscale,g.defaultnumberscale,ba.defaultnumberscale),
+numberscaleunit:a(k,g.numberscaleunit,ba.numberscaleunit).concat(),numberscalevalue:a(E,g.numberscalevalue,ba.numberscalevalue).concat(),numberprefix:t(c.numberprefix,g.numberprefix,ba.numberprefix),numbersuffix:t(c.numbersuffix,g.numbersuffix,ba.numbersuffix),decimalprecision:parseInt("auto"===c.decimals?ba.decimalprecision:a(c.decimals,c.decimalprecision,g.decimals,ba.decimals,g.decimalprecision,ba.decimalprecision),10),forcedecimals:a(c.forcedecimals,g.forcedecimals,ba.forcedecimals),decimalseparator:a(c.decimalseparator,
+g.decimalseparator,ba.decimalseparator),thousandseparator:a(c.thousandseparator,g.thousandseparator,ba.thousandseparator),thousandseparatorposition:a(ja,g.thousandseparatorposition,ba.thousandseparatorposition),indecimalseparator:t(c.indecimalseparator,g.indecimalseparator,ba.indecimalseparator),inthousandseparator:t(c.inthousandseparator,g.inthousandseparator,ba.inthousandseparator),scalerecursively:da,maxscalerecursion:ca,scaleseparator:va};d(k.inthousandseparator)&&(this.baseConf._REGinthousandseparator=
+new RegExp(b(k.inthousandseparator),"g"));d(k.indecimalseparator)&&(this.baseConf._REGindecimalseparator=new RegExp(b(k.indecimalseparator)));this.Y=[];e||(e={cacheStore:[],formatnumber:k.formatnumber,formatnumberscale:k.formatnumberscale,forcenumberscale:k.forcenumberscale,defaultnumberscale:k.defaultnumberscale,numberscaleunit:k.numberscaleunit.concat(),numberscalevalue:k.numberscalevalue.concat(),numberprefix:k.numberprefix,numbersuffix:k.numbersuffix,decimalprecision:k.decimalprecision,forcedecimals:k.forcedecimals,
+decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition,indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,scalerecursively:da,maxscalerecursion:ca,scaleseparator:va},g.useScaleRecursively&&(e.numberscalevalue&&e.numberscalevalue.length)==(e.numberscaleunit&&e.numberscaleunit.length)||(e.scalerecursively=da=0),E={cacheStore:[],formatnumber:e.formatnumber,formatnumberscale:e.formatnumberscale,forcenumberscale:e.forcenumberscale,
+defaultnumberscale:e.defaultnumberscale,numberscaleunit:e.numberscaleunit.concat(),numberscalevalue:e.numberscalevalue.concat(),numberprefix:e.numberprefix,numbersuffix:e.numbersuffix,decimalprecision:parseInt(a(c.yaxisvaluedecimals,e.decimalprecision,2),10),forcedecimals:a(c.forceyaxisvaluedecimals,e.forcedecimals),decimalseparator:e.decimalseparator,thousandseparator:e.thousandseparator,thousandseparatorposition:e.thousandseparatorposition.concat(),indecimalseparator:e.indecimalseparator,inthousandseparator:e.inthousandseparator,
+scalerecursively:da,maxscalerecursion:ca,scaleseparator:va},ma={cacheStore:[],formatnumber:a(c.sformatnumber,g.sformatnumber,p.sformatnumber),formatnumberscale:a(c.sformatnumberscale,g.sformatnumberscale,p.sformatnumberscale),forcenumberscale:a(c.sforcenumberscale,g.sforcenumberscale,p.sforcenumberscale),defaultnumberscale:t(c.sdefaultnumberscale,g.sdefaultnumberscale,e.defaultnumberscale),numberscaleunit:a(m,g.snumberscaleunit,p.snumberscaleunit).concat(),numberscalevalue:a(ma,g.snumberscalevalue,
+p.snumberscalevalue).concat(),numberprefix:t(c.snumberprefix,g.snumberprefix,p.snumberprefix),numbersuffix:t(c.snumbersuffix,g.snumbersuffix,p.snumbersuffix),decimalprecision:parseInt(a(c.syaxisvaluedecimals,c.sdecimals,c.decimals,g.sdecimals,p.sdecimals),10),forcedecimals:a(c.forcesyaxisvaluedecimals,c.sforcedecimals,c.forcedecimals,g.sforcedecimals,p.sforcedecimals),decimalseparator:a(c.decimalseparator,g.decimalseparator,p.decimalseparator),thousandseparator:a(c.thousandseparator,g.thousandseparator,
+p.thousandseparator),thousandseparatorposition:e.thousandseparatorposition.concat(),indecimalseparator:a(c.indecimalseparator,g.indecimalseparator,p.indecimalseparator),inthousandseparator:a(c.inthousandseparator,g.inthousandseparator,p.inthousandseparator),scalerecursively:na,maxscalerecursion:Ia,scaleseparator:Y},m=u({},ma),m.decimalprecision=parseInt(a(c.sdecimals,c.decimals,c.syaxisvaluedecimals,g.sdecimals,p.sdecimals),10),m.forcedecimals=a(c.sforcedecimals,c.forcedecimals,c.forcesyaxisvaluedecimals,
+g.sforcedecimals,p.sforcedecimals),m.cacheStore=[],g.useScaleRecursively&&(ma.numberscalevalue&&ma.numberscalevalue.length)==(ma.numberscaleunit&&ma.numberscaleunit.length)||(ma.scalerecursively=na=0),/^(bubble|scatter|selectscatter|zoomscatter)$/.test(ga)&&(E.formatnumber=a(c.yformatnumber,E.formatnumber),E.formatnumberscale=a(c.yformatnumberscale,E.formatnumberscale),E.forcenumberscale=a(c.yforcenumberscale,E.forcenumberscale),E.defaultnumberscale=t(c.ydefaultnumberscale,E.defaultnumberscale),E.numberscaleunit=
+a(q,E.numberscaleunit),E.numberscalevalue=a(V,E.numberscalevalue),E.numberprefix=a(c.ynumberprefix,E.numberprefix),E.numbersuffix=a(c.ynumbersuffix,E.numbersuffix),e.formatnumber=a(c.yformatnumber,e.formatnumber),e.formatnumberscale=a(c.yformatnumberscale,e.formatnumberscale),e.forcenumberscale=a(c.yforcenumberscale,e.forcenumberscale),e.defaultnumberscale=t(c.ydefaultnumberscale,e.defaultnumberscale),e.numberscaleunit=a(c.ynumberscaleunit,e.numberscaleunit.concat()),e.numberscalevalue=a(c.ynumberscalevalue,
+e.numberscalevalue.concat()),e.numberprefix=a(c.ynumberprefix,e.numberprefix),e.numbersuffix=a(c.ynumbersuffix,e.numbersuffix)),/^(pie2d|pie3d|doughnut2d|doughnut3d|marimekko|pareto2d|pareto3d)$/.test(ga)&&(e.decimalprecision=a(c.decimals,"2")),da&&(e.numberscalevalue.push(1),e.numberscaleunit.unshift(e.defaultnumberscale),E.numberscalevalue.push(1),E.numberscaleunit.unshift(E.defaultnumberscale)),na&&(ma.numberscalevalue.push(1),ma.numberscaleunit.unshift(ma.defaultnumberscale),m.numberscalevalue.push(1),
+m.numberscaleunit.unshift(m.defaultnumberscale)),this.Y[0]={yAxisLabelConf:E,dataLabelConf:e},this.Y[1]={yAxisLabelConf:ma,dataLabelConf:m},this.paramLabels=e,this.param1=E,this.param2=ma,this.paramLabels2=m);this.paramX={cacheStore:[],formatnumber:a(c.xformatnumber,k.formatnumber),formatnumberscale:a(c.xformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.xforcenumberscale,k.forcenumberscale),defaultnumberscale:t(c.xdefaultnumberscale,k.defaultnumberscale),numberscaleunit:a(l,k.numberscaleunit.concat()),
+numberscalevalue:a(O,k.numberscalevalue.concat()),numberprefix:a(c.xnumberprefix,k.numberprefix),numbersuffix:a(c.xnumbersuffix,k.numbersuffix),decimalprecision:parseInt(a(c.xaxisvaluedecimals,c.xaxisvaluesdecimals,k.decimalprecision,2),10),forcedecimals:a(c.forcexaxisvaluedecimals,0),decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition.concat(),indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,
+scalerecursively:A,maxscalerecursion:Ba,scaleseparator:Da};this.paramLegend=u(u({},k),{cacheStore:[],decimalprecision:parseInt(F(c.legendvaluedecimals,k.decimalprecision,2),10),forcedecimals:F(c.legendvalueforcedecimals,k.forcedecimals,0),formatnumberscale:a(c.legendvalueformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.legendvalueforcenumberscale,k.forcenumberscale),formatnumber:a(c.legendvalueformatnumber,k.formatnumber)});g.useScaleRecursively&&(this.paramX.numberscalevalue&&this.paramX.numberscalevalue.length)==
+(this.paramX.numberscaleunit&&this.paramX.numberscaleunit.length)||(this.paramX.scalerecursively=A=0);A&&(this.paramX.numberscalevalue.push(1),this.paramX.numberscaleunit.unshift(this.paramX.defaultnumberscale));this.paramScale={cacheStore:[],formatnumber:a(c.tickformatnumber,k.formatnumber),formatnumberscale:a(c.tickformatnumberscale,k.formatnumberscale),forcenumberscale:a(c.tickforcenumberscale,k.forcenumberscale),defaultnumberscale:t(c.tickdefaultnumberscale,k.defaultnumberscale),numberscaleunit:a(D,
+k.numberscaleunit.concat()),numberscalevalue:a(S,k.numberscalevalue.concat()),numberprefix:a(c.ticknumberprefix,k.numberprefix),numbersuffix:a(c.ticknumbersuffix,k.numbersuffix),decimalprecision:parseInt(a(c.tickvaluedecimals,k.decimalprecision,"2"),10),forcedecimals:a(c.forcetickvaluedecimals,k.forcedecimals,0),decimalseparator:k.decimalseparator,thousandseparator:k.thousandseparator,thousandseparatorposition:k.thousandseparatorposition.concat(),indecimalseparator:k.indecimalseparator,inthousandseparator:k.inthousandseparator,
+scalerecursively:da,maxscalerecursion:ca,scaleseparator:va};da&&(this.paramScale.numberscalevalue.push(1),this.paramScale.numberscaleunit.unshift(this.paramScale.defaultnumberscale));this.timeConf={inputDateFormat:a(c.inputdateformat,c.dateformat,"mm/dd/yyyy"),outputDateFormat:a(c.outputdateformat,c.inputdateformat,c.dateformat,"mm/dd/yyyy"),days:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),months:"January February March April May June July August September October November December".split(" "),
+daySuffix:" st nd rd th th th th th th th th th th th th th th th th th st nd rd th th th th th th th st".split(" ")};this.cleaneValueCacheStore={};this.percentStrCacheStore={}};q.prototype={cleaneValueCacheStore:{},percentStrCacheStore:{},dispose:function(){this.Y&&delete this.Y;this.cleaneValueCacheStore&&delete this.cleaneValueCacheStore;this.percentStrCacheStore&&delete this.percentStrCacheStore;this.paramLabels&&delete this.paramLabels;this.param1&&delete this.param1;this.param2&&delete this.param2;
+this.paramLabels2&&delete this.paramLabels2;this.csConf&&delete this.csConf;this.chartAPI&&delete this.chartAPI;this.baseConf&&delete this.baseConf;this.timeConf&&delete this.timeConf;this.paramX&&delete this.paramX;this.paramScale&&delete this.paramScale},parseMLAxisConf:function(b,c){var g=this.baseConf,e=this.csConf,k=this.chartAPI,m=F(b.scalerecursively,g.scalerecursively),l=F(b.maxscalerecursion,g.maxscalerecursion),r=d(b.scaleseparator,g.scaleseparator),q,u,S,T,V,ba;c=F(c,this.Y.length);d(b.numberscaleunit)&&
+(q=b.numberscaleunit.split(","));d(b.numberscalevalue)&&(u=b.numberscalevalue.split(","));l||(l=-1);if(d(b.thousandseparatorposition))for(S=b.thousandseparatorposition.split(","),T=S.length,ba=p.thousandseparatorposition[0];T--;)(V=F(E(S[T])))?ba=V:V=ba,S[T]=V;g={cacheStore:[],formatnumber:a(b.formatnumber,g.formatnumber),formatnumberscale:a(b.formatnumberscale,g.formatnumberscale),forcenumberscale:a(b.forcenumberscale,g.forcenumberscale),defaultnumberscale:t(b.defaultnumberscale,g.defaultnumberscale),
+numberscaleunit:a(q,g.numberscaleunit).concat(),numberscalevalue:a(u,g.numberscalevalue).concat(),numberprefix:t(b.numberprefix,g.numberprefix),numbersuffix:t(b.numbersuffix,g.numbersuffix),forcedecimals:a(b.forcedecimals,g.forcedecimals),decimalprecision:parseInt("auto"===b.decimals?e.decimalprecision:a(b.decimals,g.decimalprecision),10),decimalseparator:a(b.decimalseparator,g.decimalseparator),thousandseparator:a(b.thousandseparator,g.thousandseparator),thousandseparatorposition:a(S,g.thousandseparatorposition),
+indecimalseparator:t(b.indecimalseparator,g.indecimalseparator),inthousandseparator:t(b.inthousandseparator,g.inthousandseparator),scalerecursively:m,maxscalerecursion:l,scaleseparator:r};k.useScaleRecursively&&(g.numberscalevalue&&g.numberscalevalue.length)==(g.numberscaleunit&&g.numberscaleunit.length)||(g.scalerecursively=m=0);k={cacheStore:[],formatnumber:g.formatnumber,formatnumberscale:g.formatnumberscale,forcenumberscale:g.forcenumberscale,defaultnumberscale:g.defaultnumberscale,numberscaleunit:g.numberscaleunit.concat(),
+numberscalevalue:g.numberscalevalue.concat(),numberprefix:g.numberprefix,numbersuffix:g.numbersuffix,decimalprecision:parseInt(a(b.yaxisvaluedecimals,g.decimalprecision,2),10),forcedecimals:a(b.forceyaxisvaluedecimals,g.forcedecimals),decimalseparator:g.decimalseparator,thousandseparator:g.thousandseparator,thousandseparatorposition:g.thousandseparatorposition.concat(),indecimalseparator:g.indecimalseparator,inthousandseparator:g.inthousandseparator,scalerecursively:m,maxscalerecursion:l,scaleseparator:r};
+m&&(g.numberscalevalue.push(1),g.numberscaleunit.unshift(g.defaultnumberscale),k.numberscalevalue.push(1),k.numberscaleunit.unshift(k.defaultnumberscale));this.Y[c]={dataLabelConf:g,yAxisLabelConf:k}},percentValue:function(a){var b=this.percentStrCacheStore[a];void 0===b&&(b=isNaN(this.paramLabels.decimalprecision)?"2":this.paramLabels.decimalprecision,b=this.percentStrCacheStore[a]=e(g(a,b,this.paramLabels.forcedecimals),this.paramLabels.decimalseparator,this.paramLabels.thousandseparator,this.paramLabels.thousandseparatorposition)+
+"%");return b},getCleanValue:function(a,b){var c=this.cleaneValueCacheStore[a];if(void 0===c){var d=this.baseConf,c=a+"";d._REGinthousandseparator&&(c=c.replace(d._REGinthousandseparator,""));d._REGindecimalseparator&&(c=c.replace(d._REGindecimalseparator,"."));c=parseFloat(c);c=isFinite(c)?c:NaN;this.cleaneValueCacheStore[a]=c=isNaN(c)?null:b?E(c):c}return c},dataLabels:function(a,b){var c=this.Y[b]||(b?this.Y[1]:this.Y[0]),d,c=c&&c.dataLabelConf||this.baseConf;d=c.cacheStore[a];void 0===d&&(d=c.cacheStore[a]=
+m(a,c));return d},yAxis:function(a,b){var c=this.Y[b]||(b?this.Y[1]:this.Y[0]),d,c=c&&c.yAxisLabelConf||this.baseConf;d=c.cacheStore[a];void 0===d&&(d=c.cacheStore[a]=m(a,c,!0));return d},xAxis:function(a){var b=this.paramX.cacheStore[a];void 0===b&&(b=this.paramX.cacheStore[a]=m(a,this.paramX,!0));return b},sYAxis:function(a){var b=this.Y[1],c,b=b&&b.yAxisLabelConf||this.baseConf;c=b.cacheStore[a];void 0===c&&(c=b.cacheStore[a]=m(a,b));return c},scale:function(a){var b=this.paramScale.cacheStore[a];
+void 0===b&&(b=this.paramScale.cacheStore[a]=m(a,this.paramScale));return b},getCleanTime:function(a){var b;this.timeConf.inputDateFormat&&Date.parseExact&&(b=Date.parseExact(a,this.timeConf.inputDateFormat));return b&&b.getTime()},legendValue:function(a){var b=this.paramLegend.cacheStore[a];void 0===b&&(b=this.paramLegend.cacheStore[a]=m(a,this.paramLegend));return b},legendPercentValue:function(a){var b=this.percentStrCacheStore[a],c=this.paramLegend;void 0===b&&(b=isNaN(c.decimalprecision)?"2":
+c.decimalprecision,b=this.percentStrCacheStore[a]=e(g(a,b,c.forcedecimals),c.decimalseparator,c.thousandseparator,c.thousandseparatorposition)+"%");return b},getDateValue:function(a){var b,c,d;a&&!/\//.test(this.timeConf.inputDateFormat)&&(a=a.replace(new RegExp(this.timeConf.inputDateFormat.replace(/[a-z]/ig,"").slice(0,1),"g"),"/"));a=/^dd/.test(this.timeConf.inputDateFormat)&&a&&a.replace(/(\d{1,2})\/(\d{1,2})\/(\d{2,4})/,"$2/$1/$3")||a;b=new Date(a);c=b.getTime();!c&&a&&/\:/.test(a)&&(a=a.split(":"),
+c=F(a[0],0),d=F(a[1],0),a=F(a[2],0),c=23<c?24===c&&0===d&&0===a?c:23:c,d=59<d?59:d,a=59<a?59:a,b=new Date,b.setHours(c),b.setMinutes(d),b.setSeconds(a),c=b.getTime());return{ms:c,date:b}},getFormattedDate:function(b,c){var d="object"===typeof b&&b||new Date(b),g=this.timeConf,e=a(c,g.outputDateFormat),k=d.getFullYear(),m=d.getMonth(),l=d.getDate(),t=d.getDay(),p=d.getMinutes(),r=d.getSeconds(),d=d.getHours(),p=9<p?""+p:"0"+p,r=9<r?""+r:"0"+r,d=9<d?""+d:"0"+d;e.match(/dnl/)&&(e=e.replace(/dnl/ig,g.days[t]));
+e.match(/dns/)&&(e=e.replace(/dns/ig,g.days[t]&&g.days[t].substr(0,3)));e.match(/dd/)&&(e=e.replace(/dd/ig,l));e.match(/mnl/)&&(e=e.replace(/mnl/ig,g.months[m]));e.match(/mns/)&&(e=e.replace(/mns/ig,g.months[m]&&g.months[m].substr(0,3)));e.match(/mm/)&&(e=e.replace(/mm/ig,m+1));e.match(/yyyy/)&&(e=e.replace(/yyyy/ig,k));e.match(/yy/)&&(e=e.replace(/yy/ig,(k%1E3%100+"").replace(/^(\d)$/,"0$1")));e.match(/hh12/)&&(e=e.replace(/hh12/ig,d%12||12));e.match(/hh/)&&(e=e.replace(/hh/ig,d));e.match(/mn/)&&
+(e=e.replace(/mn/ig,p));e.match(/ss/)&&(e=e.replace(/ss/ig,r));e.match(/ampm/)&&(e=e.replace(/ampm/ig,12>d?"AM":"PM"));e.match(/ds/)&&(e=e.replace(/ds/ig,g.daySuffix[l]));return e}};q.prototype.constructor=q;m=function(b,c,d){if(null!==b){b=Number(b);var m=b+"",l,t,p,r,q;l=1==c.formatnumberscale?c.defaultnumberscale:"";q=(q=m.split(".")[1])?q.length:c.forcedecimals?"2":"";if(1==c.formatnumberscale){m=b;t=c.defaultnumberscale;b=c.numberscalevalue;l=c.numberscaleunit;var E=c.scalerecursively;p=c.forcenumberscale;
+r={};var u=t,J=0,S=[],T=[],V;p=F(p)||0;if(E){u=F(b[0])||1E3;for(J=0;J<b.length;J++)if(E=F(b[J])||1E3,Math.abs(Number(m))>=E&&J<b.length-1)V=m%E,m=(m-V)/E,0===J&&0!==V&&""===l[J]&&p?(S.push(V/u),T.push(l[1]||"")):0!==V&&(1===J&&""===t&&p?(E=V+(S.length?S.pop():0),T.pop(),S.push(E)):S.push(V),T.push(l[J]));else{0===J&&""===t&&p?(m=Number(m)/u,S.push(m),T.push(l[1]||"")):(1===J&&""===t&&p?(E=m+(S.length?S.pop():0),T.pop(),S.push(E)):S.push(m),T.push(l[J]));break}S.reverse();T.reverse();r.value=S;r.scale=
+T}else{if(b.length===l.length)for(J=0;J<b.length;J++)if(E=F(b[J])||1E3,Math.abs(Number(m))>=E)u=l[J]||"",m=Number(m)/E;else{0===J&&""===t&&p&&(u=l[0]||"",m=Number(m)/E);break}r.value=m;r.scale=u}t=r;b=m=t.value;l=t.scale}if(c.scalerecursively&&0!==c.formatnumberscale&&"0"!==c.formatnumberscale){d=t.value;t=t.scale;b=-1==c.maxscalerecursion?d.length:Math.min(d.length,c.maxscalerecursion);if(1==c.formatnumber)for(m="",r=0;r<b;r++)l=0===r?d[r]:Math.abs(d[r]),p=l+"",r==b-1&&(p=g(l,a(c.decimalprecision,
+q),c.forcedecimals)),m=m+e(p,c.decimalseparator,c.thousandseparator,c.thousandseparatorposition)+t[r]+(r<b-1?c.scaleseparator:"");else for(m="",r=0;r<b;r++)m=m+(0===r?d[r]:Math.abs(d[r])+"")+t[r]+(r<b-1?c.scaleseparator:"");m=(c.numberprefix||"")+m+(c.numbersuffix||"")}else 1==c.formatnumber&&(m=g(b,a(c.decimalprecision,q),c.forcedecimals),m=e(m,c.decimalseparator,c.thousandseparator,c.thousandseparatorposition,d)),m=(c.numberprefix||"")+m+l+(c.numbersuffix||"");return m}};return q}();e.extend(e.core,
+{formatNumber:function(a,b){b=b&&p(b)||{};var c=V(b),d;r[c]?d=r[c]:r[c]=d=new q.NumberFormatter(b,{useScaleRecursively:!0});return d.dataLabels(a)}},!1);e.extend(e.core,{formatNumber:function(a,b,c,d){c=c&&p(c)||{};var l=this.jsVars.instanceAPI||{},t=l.numberFormatter,v;""===V(c)?t?v=t:(t=this.getChartData(e.dataFormats.JSON,!0),t=t.data||{},t=t.chart||{},c=V(t),r[c]?v=r[c]:r[c]=v=new q.NumberFormatter(t,l)):(t=this.getChartData(e.dataFormats.JSON,!0),t=t.data||{},t=t.chart||{},t=u(u({},t),c),c=V(t),
+r[c]?v=r[c]:r[c]=v=new q.NumberFormatter(t,l));switch((b&&b.toLowerCase?b:"").toLowerCase()){case "yaxisvalues":a=v.yAxis(a,d);break;case "xaxisvalues":a=v.xAxis(a);break;case "scale":a=v.scale(a);break;default:a=v.dataLabels(a,d)}return a}},!0)}]);
+FusionCharts.register("module",["private","modules.renderer.js-dom",function(){var e=this.hcLib,q=this.window,F=q.document,u=e.extend2,d="ontouchstart"in q;(function(a){var e=function(){var a={},e;a.pointerdrag={start:["mousedown"],end:["mouseup"],onStart:["mousemove"],postHandlers:{},preHandlers:{}};a.pointerhover={start:["mouseover"],end:["mouseout"]};a.click={start:["click"]};a.escape={start:["keydown"],preHandlers:{start:function(a){a=a||q.event;return a.keyCode&&27===a.keyCode?!0:!1}}};d&&(e=
+a.pointerdrag,e.start.push("touchstart"),e.end.push("touchend"),e.onStart.push("touchmove"),e.postHandlers.onStart=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1});return a}(),E;E=u({},e);a.dem=new function(){var a={},d={},b=F.addEventListener?function(a,b,c){a.addEventListener(b,c,!1)}:function(a,b,c){a.attachEvent("on"+b,c)},e=F.removeEventListener?function(a,b,c){a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent("on"+b,c)},t=function(a,b,c){var d=[],g,e,l;l=E[b];c.start=
+function(b){b=b||q.event;for(var d=l.onStart,g=l.end,e=[],m=[],t=d&&d.length||0;t--;)e.push(p(a,d[t],c,"onStart"));for(t=g&&g.length||0;t--;)m.push(p(a,g[t],c,"end"));c.startUn=c.startUn?c.startUn.concat(e):e;c.endUn=c.endUn?c.endUn.concat(m):m;c.state="start";c.closure(b)};c.onStart=function(a){a=a||q.event;c.state="on";if(c.gDef&&c.gDef.preHandlers&&"function"===typeof c.gDef.preHandlers.onStart)c.gDef.preHandlers.onStart(a);c.closure(a);if(c.gDef&&c.gDef.postHandlers&&"function"===typeof c.gDef.postHandlers.onStart)c.gDef.postHandlers.onStart(a)};
+c.end=function(a){a=a||q.event;for(var b=c.startUn,d=c.endUn,g=b&&b.length||0;g--;)b[g]();delete c.startUn;c.startUn=[];for(g=d&&d.length||0;g--;)d[g]();delete c.endUn;c.endUn=[];c.state="end";c.closure(a)};if(l)for(b=l.start,e=b.length;e--;)(g=b[e])&&d.push(p(a,g,c,"start"));return d},p=function(a,c,d,g){g=g||"closure";b(a,c,d[g]);return function(){e(a,c,d[g])}},g=function(a){return function(b){b=b||q.event;a.handler.call(a.context||a.elem,{data:a.data,type:a.type,state:a.state,isGesture:a.isGesture,
+target:b.target||b.srcElement,originalEvent:b})}};return{listen:function(b,e,r,q,u){var v=this;e="string"===typeof e?e.split(" "):e;var aa=e.length,L=[],fa=function(a,b,c){L.push(function(){v.unlisten(a,b,c)})},G,H,D,R,W;if(b.ownerDocument&&b.ownerDocument===F)for(;aa--;)H=e[aa],R=Boolean(E[H]),W="function"===typeof r?r:r[aa],D={handler:W,elem:b,type:H,isGesture:R,gDef:R?E[H]:null,data:q,context:u,start:[],end:[],links:{prev:null,next:null}},D.closure=g(D),R?((G=d[H])||(G=d[H]=[]),G.push(D),t(b,H,
+D)):((G=a[H])||(G=a[H]=[]),G.push(D),p(b,H,D)),fa(b,H,W);else for(;aa--;)H=e[aa],W="function"===typeof r?r:r[aa],D={handler:W,elem:b,type:H,isGesture:R,data:q,context:u,start:[],end:[],links:{prev:null,next:null}},D.closure=g(D),(G=a[H])||(G=a[H]=[]),G.push(D),p(b,H,D),fa(b,H,W);return{unlisten:function(){for(var a=L.length;a--;)L[a]();L.length=0;L=null}}},unlisten:function(b,g,t){var p,q=!1,v,u;if(Boolean(E[g]))for(v=(p=d[g])&&p.length||0;v--;){if(u=p[v],u.handler===t&&u.elem===b){var q=b,F=void 0,
+V=void 0,G=void 0,F=void 0;if(F=E[g])for(F=F.start,G=F.length;G--;)(V=F[G])&&e(q,V,u.start);p.splice(v,1);q=!0}}else for(v=(p=a[g])&&p.length||0;v--;)u=p[v],u.handler===t&&u.elem===b&&(e(b,g,u.closure),p.splice(v,1),q=!0);return q},fire:function(b,d,g,e){var l;if(b.ownerDocument&&b.ownerDocument===F)F.createEvent?(l=F.createEvent("HTMLEvents"),l.initEvent(d,!0,!0),g&&(g.originalEvent?g.originalEvent=l:u(l,g)),"function"===typeof b[d]&&b[d].call(b),b.dispatchEvent(l)):(l=F.createEventObject(),l.eventType=
+d,g&&(g.originalEvent?g.originalEvent=l:u(l,g)),"function"===typeof b[d]&&b[d].call(b),b.fireEvent("on"+d,l)),e&&!l.returnValue&&e(l);else for(e=(d=a[d])&&d.length||0;e--;)l=d[e],l.elem===b&&l.closure(g)}}}})(e||q);(function(a){function d(a,b){var c="";F.defaultView&&F.defaultView.getComputedStyle?c=F.defaultView.getComputedStyle(a,"").getPropertyValue(b):a.currentStyle&&(b=b.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),c=a.currentStyle[b]);c=parseInt(c,10);return isNaN(c)?0:c}function e(a,
+c,d,g,k,m,t,q){var E=c/40,v=l[m||"linear"](g-d,E),u=0,F=function(){var c;u<E?(c=v[u],a.style[k]=d+c+q,b&&"opacity"===k&&(c=100*Number(c),a.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+c+")"),u+=1,setTimeout(F,40)):t&&t()};q=q||"";setTimeout(F,40)}var c={width:{suffix:"px"},height:{suffix:"px"},opacity:!0,top:{suffix:"px"},left:{suffix:"px"}},l={linear:function(a,b){for(var c=[],d=a/b,e=0;e<b;e+=1)c[e]=d*(e+1);return c}},b=/msie/i.test(q.navigator.userAgent)&&!q.opera;a.danimate=
+u({animate:function(a,b,l,g,k){g={};var m={},q=function(){F+=1;F===u&&"function"===typeof k&&k()},u=0,F=0,v,aa;if(40>l){for(aa in b)a.style[aa]=b[aa];k&&k()}else for(aa in b)c[aa]&&(u+=1,g[aa]=b[aa],m[aa]=d(a,aa),v="object"===typeof c[aa]&&c[aa].suffix,e(a,l,m[aa],g[aa],aa,"linear",q,v))}},{})})(e||q)}]);
+FusionCharts.register("module",["private","modules.renderer.js-colormanager",function(){var e=this.hcLib,q=e.pluckNumber,F=e.graphics.getDarkColor,u=e.graphics.getLightColor,d="AFD8F8 F6BD0F 8BBA00 FF8E46 008E8E D64646 8E468E 588526 B3AA00 008ED6 9D080D A186BE CC6600 FDC689 ABA000 F26D7D FFF200 0054A6 F7941C CC3300 006600 663300 6DCFF6".split(" "),a="8BBA00 F6BD0F FF654F AFD8F8 FDB398 CDC309 B1D0D2 FAD1B9 B8A79E D7CEA5 C4B3CE E9D3BE EFE9AD CEA7A2 B2D9BA".split(" "),t=e.defaultPaletteOptions={paletteColors:[d,
+d,d,d,d],bgColor:["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["50,50","60,50","40,20","20,10","30,30"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],showShadow:[0,
+1,1,1,1],divLineColor:["717170","7B7D6D","92CDD6","965B01","68001B"],divLineAlpha:[40,45,65,40,30],altHGridColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],altHGridAlpha:[50,35,10,20,15],altVGridColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],altVGridAlpha:[10,20,10,15,10],anchorBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E",
+"025B6A","A15E01","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],legendBorderColor:["545454","545454","415D6F","845001","D55979"],plotGradientColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],plotBorderColor:["333333","8A8A8A","FFFFFF","FFFFFF","FFFFFF"],plotFillColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],bgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],bgAlpha3D:["100",
+"100","100","100","100"],bgAngle3D:[90,90,90,90,90],bgRatio3D:["","","","",""],canvasBgColor3D:["DDE3D5","D8D8D7","EEDFCA","CFD2D8","FEE8E0"],canvasBaseColor3D:["ACBB99","BCBCBD","C8A06C","96A4AF","FAC7BC"],divLineColor3D:["ACBB99","A4A4A4","BE9B6B","7C8995","D49B8B"],divLineAlpha3D:[100,100,100,100,100],legendBgColor3D:["F0F3ED","F3F3F3","F7F0E8","EEF0F2","FEF8F5"],legendBorderColor3D:["C6CFB8","C8C8C8","DFC29C","CFD5DA","FAD1C7"],toolTipbgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor3D:["49563A",
+"666666","49351D","576373","681C09"],baseFontColor3D:["49563A","4A4A4A","49351D","48505A","681C09"],anchorBgColor3D:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"]},d=e.colorManager=function(a,c){var d=a.chart,b=e.extend2({},t),r=c.defaultPaletteOptions||{},V;b||(b={});for(V in r)b[V]=r[V];b=this.paletteOptions=b;r=this.themeEnabled=d.palettethemecolor;this.paletteIndex=(0<d.palette&&6>d.palette?d.palette:q(c.paletteIndex,1))-1;this.iterator=0;this.paletteColors=b.paletteColors[this.themeEnabled?0:
+this.paletteIndex];V=d.palettecolors;void 0!==V&&null!==V&&""!==d.palettecolors&&(this.paletteColors=d.palettecolors.split(/\s*\,\s*/));this.paletteLen=this.paletteColors.length;this.useFlatColors=q(d.useflatdataplotcolor,c.useFlatColor,0);r&&(this.paletteIndex=5,b.bgColor.push(u(r,35)+","+u(r,10)),b.bgAngle.push(270),b.bgRatio.push("0,100"),b.bgAlpha.push("50,50"),b.canvasBgColor.push("FFFFFF"),b.canvasBgAngle.push(0),b.canvasBgAlpha.push("100"),b.canvasBgRatio.push(""),b.canvasBorderColor.push(F(r,
+80)),b.canvasBorderAlpha.push(100),b.showShadow.push(1),b.divLineColor.push(F(r,20)),b.divLineAlpha.push(40),b.altHGridColor.push(u(r,20)),b.altHGridAlpha.push(15),b.altVGridColor.push(u(r,80)),b.altVGridAlpha.push(10),b.anchorBgColor.push("FFFFFF"),b.toolTipBgColor.push("FFFFFF"),b.toolTipBorderColor.push(F(r,80)),b.baseFontColor.push(r.split&&r.split(",")[0]),b.borderColor.push(F(r,60)),b.borderAlpha.push(50),b.legendBgColor.push("FFFFFF"),b.legendBorderColor.push(F(r,80)),b.plotGradientColor.push("FFFFFF"),
+b.plotBorderColor.push(F(r,85)),b.plotFillColor.push(F(r,85)),b.bgColor3D.push("FFFFFF"),b.bgAlpha3D.push("100"),b.bgAngle3D.push(90),b.bgRatio3D.push(""),b.canvasBgColor3D.push(u(r,20)),b.canvasBaseColor3D.push(u(r,40)),b.divLineColor3D.push(F(r,20)),b.divLineAlpha3D.push(40),b.legendBgColor3D.push("FFFFFF"),b.legendBorderColor3D.push(F(r,80)),b.toolTipbgColor3D.push("FFFFFF"),b.toolTipBorderColor3D.push(F(r,80)),b.baseFontColor3D.push(r.split&&r.split(",")[0]),b.anchorBgColor3D.push("FFFFFF"),b.tickColor&&
+b.tickColor.push(F(r,90)),b.trendDarkColor&&b.trendDarkColor.push(F(r,90)),b.trendLightColor&&b.trendLightColor.push(u(r,b.TrendLightShadeOffset)),b.msgLogColor&&b.msgLogColor.push(u(r,80)),b.dialColor&&b.dialColor.push(F(r,95)+",FFFFFF,"+F(r,95)),b.dialBorderColor&&b.dialBorderColor.push(F(r,95)+",FFFFFF,"+F(r,95)),b.pivotColor&&b.pivotColor.push(u(r,95)+",FFFFFF,"+u(r,95)),b.pivotBorderColor&&b.pivotBorderColor.push(F(r,95)+",FFFFFF,"+F(r,95)),b.pointerBorderColor&&b.pointerBorderColor.push(F(r,
+75)),b.pointerBgColor&&b.pointerBgColor.push(F(r,75)),b.thmBorderColor&&b.thmBorderColor.push(F(r,90)),b.thmFillColor&&b.thmFillColor.push(u(r,55)),b.cylFillColor&&b.cylFillColor.push(u(r,55)),b.periodColor&&b.periodColor.push(u(r,10)),b.winColor&&b.winColor.push("666666"),b.lossColor&&b.lossColor.push("CC0000"),b.drawColor&&b.drawColor.push("666666"),b.scorelessColor&&b.scorelessColor.push("FF0000"),b.gridColor&&b.gridColor.push(u(r,30)),b.categoryBgColor&&b.categoryBgColor.push(u(r,10)),b.dataTableBgColor&&
+b.dataTableBgColor.push(u(r,10)),b.gridResizeBarColor&&b.gridResizeBarColor.push(F(r,90)),b.scrollBarColor&&b.scrollBarColor.push(u(r,50)))};d.prototype={getColor:function(a){return this.paletteOptions[a][this.paletteIndex]},getPlotColor:function(a){var c=this.paletteColors;a=this.useFlatColors?this.getColor("plotFillColor"):c[a%this.paletteLen];a||(this.iterator===this.paletteLen&&(this.iterator=0),a=c[this.iterator],this.iterator+=1);return a},parseColorMix:function(a,c){var d=[],b,e,t,p,g,k,m,
+q,T,S;c=c.replace(/\s/g,"");c=c.toLowerCase();if(""===c||null===c||void 0===c)d=[a];else for(e=c.split(","),t=a.split(","),p=Math.max(e.length,t.length,1),g=e[0],k=t[0],T=/[\{\}]/ig,S=0;S<p;S++)m=(e[S]||g).replace(T,""),q=t[S]||k,"color"==m?d.push(q):"light"==m.substr(0,5)?(b=m.indexOf("-"),b=-1==b?1:m.substr(b+1,m.length-b),b=100-b,d.push(u(q,b))):"dark"==m.substr(0,4)?(b=m.indexOf("-"),b=-1==b?1:m.substr(b+1,m.length-b),b=100-b,d.push(F(q,b))):d.push(m);return d},parseAlphaList:function(a,c){var d=
+a.split(","),b=[],e,t=100,p;for(p=0;p<c;p++)e=q(d[p]),void 0!==e&&null!==e&&(t=e),b[p]=t;return b.join()},parseRatioList:function(a,c){var d=a.split(","),b=[],e=0,t,p;for(p=0;p<c;p++)t=d[p],t=isNaN(t)||void 0===t?0:Math.abs(Number(t)),t=100<t?100:t,b[p]=t,e+=t;e=100<e?100:e;if(d.length<c)for(p=d.length;p<c;p++)b[p]=(100-e)/(c-d.length);b[-1]=0;return b.join()}};d.prototype.constructor=d;e.defaultGaugePaletteOptions={paletteColors:[a,a,a,a,a],bgColor:["CBCBCB,E9E9E9","CFD4BE,F3F5DD","C5DADD,EDFBFE",
+"A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["50,50","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["555555","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendDarkColor:["333333","60634E","025B6A","A15E01","68001B"],trendLightColor:["f1f1f1","F3F5DD",
+"EDFBFE","FFF5E8","FFD1DD"],pointerBorderColor:["545454","60634E","415D6F","845001","68001B"],pointerBgColor:["545454","60634E","415D6F","845001","68001B"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["545454","545454","415D6F","845001","68001B"],canvasBorderAlpha:[100,100,100,90,100],altHGridColor:["EEEEEE","D8DCC5","99C4CD","DEC49C","FEC1D0"],altHGridAlpha:[50,
+35,10,20,15],altVGridColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],altVGridAlpha:[10,20,10,15,10],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50],legendBgColor:["ffffff","ffffff","ffffff","ffffff","ffffff"],legendBorderColor:["545454","545454","415D6F","845001","D55979"],plotFillColor:["767575","D8DCC5","99C4CD","DEC49C","FEC1D0"],plotBorderColor:["999999","8A8A8A","6BA9B6","C1934D","FC819F"],msgLogColor:["717170","7B7D6D","92CDD6","965B01","68001B"],
+TrendLightShadeOffset:30}}]);
+FusionCharts.register("module",["private","modules.renderer.js-annotations",function(){var e=this,q=e.core,F=e.hcLib,u=e.window,d=/msie/i.test(u.navigator.userAgent)&&!u.opera,a=F.addEvent,t=F.removeEvent,E=F.hasTouch,c=u.Number,l=E?6:5,b="rgba(192,192,192,"+(d?.002:1E-6)+")",d=u.Math,r=d.min,V=d.max,p=d.sin,g=d.cos,k=d.PI,m=k/180,J=d.abs,T=e.extend,S=F.pluck,v=F.pluckNumber,aa=F.graphics.convertColor,L=F.getValidValue,fa=F.parseUnsafeString,G=F.setImageDisplayMode,H=F.graphics.parseColor,D=F.setLineHeight,
+R=F.getMouseCoordinate,W={style:{}},O=F.toRaphaelColor,ha=function(a,b){return{start:-a,end:-b,angle:a-b}},ka=function(a,b,d,g,e){var k,l,m=0,t=0;l=void 0===b||null===b?1:b;var p;if(!a||!a.toString)return{value:d,hasDynamicMacros:!1};a=a.toString();a=a.toLowerCase().replace(/\s/g,"");if(d=a.match(/^[\+\-]?\d+(\.\d+)?|[\+\-]\d+(\.\d+)?/g)){for(b=0;b<d.length;b+=1)m+=Number(d[b])||0;m*=l}if(d=a.match(/^[\+\-]?(\$[a-z0-9\.]+)|[\+\-](\$[a-z0-9\.]+)/g))for(b=0;b<d.length;b+=1){k=d[b];var D=g,r=e,q=k.split("."),
+H=void 0,v=void 0,u=0;for(l=void 0;H=q.shift();)switch(typeof(v=D[H])){case "object":D=v[H];break;case "function":v=v(q,r),"-"===k.charAt()&&(v*=-1),l=!0;default:u+=c(v)||0,q.length=0}k=u;l&&(p=!0);t+=k}if(d=a.match(/^[\+\-]?\$\d+(\.\d+)?|[\+\-]\$\d+(\.\d+)?/g))for(b=0;b<d.length;b+=1)t=t+Number(d[b].replace("$",""))||0;return{value:m+t,hasDynamicMacros:p}},ga=function(a,b,c){if(!b.removed){b=b.data("annotation");var d=b.getRenderer(),g=R(d.container,c),k=g.annotationOptions=b.options,l=g.groupOptions=
+b.group.options;g._shape=b;"id"in k&&(g.annotationId=k.id);"id"in l&&(g.groupId=l.id);e.raiseEvent(a,g,d.fusionCharts,c)}},ba,ja,ma;ja=function(a,b,c,d,g){this.options=a;this.attrs={};this.css={};this.bounds={};this.shared=b;this.snaps=c||{};this.annotations=g;this.items=b=[];this._idstore=d;a.id&&(this._id=a.id,d[a.id]=this);if(a=a.items)for(d=0,c=a.length;d<c;d+=1)b.push(new ma(a[d],this))};T(ja.prototype,{scaleImageX:1,scaleImageY:1,scaleText:1,scaleValue:1,scaleValueComplement:1,scaleX:1,scaleY:1});
+ja.prototype.setup=function(){var a=this.options,b=this.shared,c=this.getRenderer();c&&(this.isBelow=0!==v(a.showbelow,a.showbelowchart,b.showbelow),this.useTracker=!this.isBelow&&c.layers.tracker&&this.shared.useTracker,this.raiseOwnEvents=b.interactionevents)};ja.prototype.scale=function(){var a=this.options,b=this.shared,c=this.bounds,d=this.snaps,g=this.getRenderer(),e=b.rootxscale,k=b.rootyscale,l=c.xs=v(a.xscale,b.xscale,100)/100,m=c.ys=v(a.yscale,b.yscale,100)/100,t,p,D;g&&(this.scaleText*=
+m,this.scaleImageX*=l,this.scaleImageY*=m,0!==v(a.autoscale,b.autoscale)&&(l=v(a.origw,b.origw),m=v(a.origh,b.origh),l=g.chartWidth/l,m=g.chartHeight/m,g=0!==v(a.constrainedscale,b.constrainedscale),t=l<m?l:m,p=g?t:l,D=g?t:m,this.scaleValue=ja.prototype.scaleValue*t,this.scaleValueComplement=ja.prototype.scaleValueComplement*(g?t:l<m?m:l),this.scaleX=ja.prototype.scaleX*p,this.scaleY=ja.prototype.scaleX*D,c.xs*=p,c.ys*=D,e*=p,k*=D,"1"==S(a.scaletext,b.scaletext)&&(this.scaleText=ja.prototype.scaleText*
+D),"1"==S(a.scaleimages,b.scaleimages)&&(this.scaleImageX=ja.prototype.scaleImageX*p,this.scaleImageY=ja.prototype.scaleImageY*D)),c.x=ka(S(a.x,a.xpos),e,0,d,this.isBelow).value+v(a.grpxshift,b.grpxshift,0),c.y=ka(S(a.y,a.ypos),k,0,d,this.isBelow).value+v(a.grpyshift,b.grpyshift,0),this.xshift=v(a.xshift,b.xshift,0),this.yshift=v(a.yshift,b.yshift,0))};ja.prototype.draw=function(){var a=this.getRenderer(),b=this.options,c=this.bounds,d=this.items,g=a&&a.layers.dataset,e=this.wrapper;if(a){e||(this.wrapper=
+e=a.paper.group("annotations"),g&&(this.isBelow?e.insertBefore(g):e.insertAfter(a.layers.datalabels||g)));this.wrapper.attr({x:0,y:0,visibility:v(b.visible,1)?"":"hidden"}).translate(c.x,c.y);b=0;for(c=d.length;b<c;b+=1)a=d[b],a.scale(!0),a.queueDraw?a.queue():(a.setup(),a.draw());return this}};ja.prototype.destroy=function(){for(var a=this.wrapper,b=this.items,c;c=b.shift();)c.destroy();a&&(this.wrapper=a.remove());this._idstore[this._id]===this&&delete this._idstore[this._id]};ja.prototype.addItem=
+function(a,b){var c;this.items.push(c=new ma(a,this,this._idstore));b&&null!==this.getRenderer()&&(c.scale(),c.setup(),c.draw());return c};ja.prototype.removeItem=function(a){for(var b=this.items,c=b.length;c--;)if(a===b[c]._id)return b.splice(c,1)};ja.prototype.getRenderer=function(){return this.annotations&&this.annotations.getRenderer()||null};ma=function(a,b){var c=!1,d;this.options=a;this.group=b;this.args=[];this.attrs={};this.attrsTracker={};this.style={};this.bounds={};this._idstore=b._idstore;
+a.id&&(this._id=a.id,b._idstore[a.id]=this);this.type=a.type&&a.type.toLowerCase&&a.type.toLowerCase();for(d in ma.eventNames)"function"===typeof a[d]&&(this[d]=a[d],c=!0);this.hasEvents=c;"function"===typeof a.onload&&(this.onload=a.onload)};e.extend(ma.prototype,{getAbsoluteBounds:function(){var a=this.bounds,b=a.x1,c=a.y1,d=a.x2,g=a.y2,e=r(b,d),k=r(c,g),b=V(b,d)-e,c=V(c,g)-k;return{x:e,width:b,y:k,height:c,r:a.r,unscaled:{width:b/a.xs,height:c/a.ys}}},queue:function(){this.group.annotations.shapesToDraw.push(this)},
+scale:function(a){var b=this,c=b.group,d=c.bounds,g=b.bounds,e=b.options,k=c.snaps,l=S(e.x,e.xpos),m=S(e.y,e.ypos),t=S(e.tox,e.toxpos),p=S(e.toy,e.toypos),D=g.xs=d.xs,d=g.ys=d.ys,r=v(e.xshift,c.xshift,0),q=v(e.yshift,c.yshift,0),H;H=function(d,g,e,k){d=ka(d,g,e,k,c.isBelow);d.hasDynamicMacros&&a&&(b.queueDraw=!0);return d.value};b.hasDimension=!0;b.hasDimensionX=!0;b.hasDimensionY=!0;g.x1=H(l,D,0,k)+r;void 0===t?(b.hasDimension=!1,b.hasDimensionX=!1,g.x2=g.x1):g.x2=H(t,D,0,k)+r;g.y1=H(m,d,0,k)+q;
+void 0===p?(b.hasDimension=!1,b.hasDimensionY=!1,g.y2=g.y1):g.y2=H(p,d,0,k)+q;ma.angularShapeTypes[b.type]&&(g.angles=ha(H(e.startangle,1,0,k),H(e.endangle,1,360,k)));g.r=H(e.radius,c.scaleValue,0,k)},setup:function(){var a=this.options,c=this.group,d=c.options,g=this.attrs,e=this.style,k=c.scaleValue,l=v(d.fillalpha,d.alpha,100),m=this.fillAlpha=S(a.fillalpha,a.alpha,l),t=this.fillColor=S(a.fillcolor,a.color,d.color),p=this.fillPattern=S(a.fillpattern&&a.fillpattern.toLowerCase&&a.fillpattern.toLowerCase(),
+d.fillpattern&&d.fillpattern.toLowerCase&&d.fillpattern.toLowerCase()),D=this.bordered=v(a.showborder,ma.borderedShapeTypes[this.type],!!L(a.bordercolor)),r=this.borderColor=S(a.bordercolor,d.bordercolor,t),l=this.borderAlpha=v(a.borderalpha,a.alpha,d.borderalpha,l),q=this.dashed=!!v(a.dashed,0),H=v(a.borderthickness,a.thickness,2)*k;this.link=S(a.link,d.link);this.shadow="1"==S(a.showshadow,d.showshadow);void 0===t&&(t=ma.borderedShapeTypes[this.type]&&"none"||"#ff0000",void 0===r&&(r="#ff0000"));
+D&&H?(g.stroke=aa(r,l),g["stroke-linecap"]="round",g["stroke-width"]=H,q&&(g["stroke-dasharray"]=[v(a.dashlen,5)*k,v(a.dashgap,3)*k])):g.stroke="none";this.fillOptions={gradientUnits:"objectBoundingBox",color:t,alpha:m,ratio:S(a.fillratio,d.fillratio),angle:360-v(a.fillangle,0),radialGradient:"radial"===p};this.link&&(e.cursor="pointer",e._cursor="hand");g.visibility=v(a.visible,1)?"":"hidden";this.useTracker=c.useTracker;this.toolText=fa(S(a.tooltext,d.tooltext));if(this.useTracker||this.link||this.toolText)T(this.attrsTracker,
+{stroke:b,fill:b}),this.link&&(this.attrsTracker.ishot=+new Date);this.raiseOwnEvents=c.raiseOwnEvents},draw:function(){var b=this.getRenderer(),c=this.type,d=this.attrs,g=this.style,e=b&&b.paper,k=ma.types[c]&&ma.types[c].call&&ma.types[c].call(this,b),l=ma.imageShapeTypes[k],m=ma.textShapeTypes[k],p=l||m||ma.trackerShapeTypes[k],D=this.link||this.toolText,r=this.wrapper,c=this.tracker,q=b&&b.layers.tracker||this.group.wrapper,H=!1,v=c||r,u=ma.eventNames,E=ma.ownEvents,R,G;if(b){if(k){if(r)if(r.elemType!==
+k){if(this.ownEventsAttached){for(G in E)v["un"+G].apply(r,E[G]);this.ownEventsAttached=!1}r=r.remove()}else if(this.hasEvents)for(R in u)(G=this[R])&&G.eventAttached&&(t(v.node,u[R],G),G.eventAttached=!1);l||(d.fill=O(this.fillOptions));r?r.attr(d).css(g):(this.args.push(this.group.wrapper),r=this.wrapper=e[k].apply(e,this.args).attr(d).css(g),r.elemType=k,r.data("annotation",this),H=!0,this.args.pop());!this.shadow||this.shadowAdded||l||m?r.shadow(this.shadowAdded=!1):r.shadow(this.shadowAdded=
+!0,V(this.borderAlpha,this.fillOptions.alpha)/100);D?this.useTracker&&(c||(this.args.push(q),c=this.tracker=p?e.rect(0,0,0,0,0,q):e[k].apply(e,this.args),this.args.pop()),c.attr(d).attr(this.attrsTracker)):c&&(c=c.remove());v=c||r;if(this.raiseOwnEvents&&!this.ownEventsAttached){for(G in E)v[G].apply(r,E[G]);this.ownEventsAttached=!0}this.link&&v.click(b.linkClickFN,this);this.toolText&&(v.tooltip(this.toolText||""),this.group.wrapper.trackTooltip(!0));if(this.hasEvents)for(R in u)(G=this[R])&&!G.eventAttached&&
+(a(v.node,u[R],G,this),G.eventAttached=!0);l||(c&&p&&(b=r.getBBox(),c.attr({x:b.x,y:b.y,width:b.width,height:b.height})),H&&this.onload&&this.onload(d))}return this}},destroy:function(){var a=this.wrapper,b=this.tracker,c=b||a,d=ma.eventNames,g=ma.ownEvents,e,k;if(a){if(this.ownEventsAttached){for(k in g)c["un"+k].apply(a,g[k]);this.ownEventsAttached=!1}if(this.hasEvents)for(e in d)(k=this[e])&&k.eventAttached&&(t(c.node,d[e],k),k.eventAttached=!1);b&&(this.tracker=b.remove());this.wrapper=a.remove()}this._idstore[this._id]===
+this&&delete this._idstore[this._id]},getRenderer:function(){return this.group&&this.group.getRenderer()||null}});e.extend(ma,{imageShapeTypes:{image:!0},angularShapeTypes:{circle:!0,arc:!0},textShapeTypes:{text:!0},trackerShapeTypes:{image:!0,text:!0},borderedShapeTypes:{path:!0,line:!0},eventNames:{onmouseover:E?"touchstart":"mouseover",onmouseout:"mouseout",onmousemove:E?"touchmove":"mousemove",onclick:"click"},ownEvents:{click:[function(a){ga("annotationClick",this,a)}],hover:[function(a){ga("annotationRollOver",
+this,a)},function(a){ga("annotationRollOut",this,a)}]},textAlignOptions:{left:"start",right:"end",center:"middle"},textVerticalAlignOptions:{top:"bottom",middle:"middle",bottom:"top"},textRotationOptions:{0:"0",1:"270",right:"90",cw:"90",left:"270",ccw:"270"},types:{rectangle:function(){var a=this.args,b=this.attrs,c=this.getAbsoluteBounds(),d=.5*c.width;c.r>d&&(c.r=d);a[0]=b.x=c.x;a[1]=b.y=c.y;a[2]=b.width=c.width;a[3]=b.height=c.height;a[4]=b.r=c.r;return"rect"},line:function(){var a=this.attrs,
+b=this.bounds;this.args[0]=a.path=["M",b.x1,b.y1,"L",b.x2,b.y2];1===a["stroke-width"]&&(a["shape-rendering"]="crisp");a["stroke-width"]<l&&(this.attrsTracker["stroke-width"]=l);this.bordered&&this.dashed&&(this.attrsTracker["stroke-dasharray"]="solid");return"path"},path:function(){var a=this.attrs,b=this.bounds;this.args[0]=a.path=this.options.path;a.transform=["T",b.x1,b.y1,"S",b.xs,b.ys,b.x1,b.y1];1===a["stroke-width"]&&(a["shape-rendering"]="crisp");return"path"},polygon:function(){var a=this.args,
+b=this.attrs,c=this.options,d=this.bounds,g=this.group,e=g.snaps;a[0]=ka(c.sides,1,5,e,g.isBelow).value;a[1]=d.x1;a[2]=d.y1;a[3]=d.r;a[4]=ka(c.startangle,1,0,e,g.isBelow).value;a[5]=0;b.polypath=a.slice(0);return"polypath"},circle:function(a){var b=this.args,c=this.attrs,d=this.options,e=this.bounds,l=a.chartWidth,t=a.chartHeight,r=this.group.scaleValueComplement,D=this.group.snaps,q=e.angles,H=this.group;a=e.r;S(d.radius)||(e.r=l<t?l*e.xs:t*e.ys,e.r=a=.3*e.r);d=ka(d.yradius,r,a,D,H.isBelow).value;
+this.fillPattern||(this.fillOptions.radialGradient=!0,this.fillPattern="radial");"radial"===this.fillPattern&&(this.fillOptions.cx=this.fillOptions.cy=.5);t=q.angle%360;if(!t&&a===d)return b[0]=c.cx=e.x1,b[1]=c.cy=e.y1,b[2]=c.r=e.r,"circle";t||(q.angle=0<q.angle?q.angle-.001:q.angle+.001,q.start=q.end-q.angle);t||t==q.angle||(t=360);l=q.start*m;q=q.end*m;t*=m;D=e.x1;H=e.y1;e=D+g(l)*a;r=H+p(l)*d;D+=g(q)*a;H+=p(q)*d;a=["M",e,r,"A",a,d,0,J(t)>=k?1:0,l<q?1:0,D,H,"Z"];b[0]=c.path=a;return"path"},arc:function(a){var b=
+this.options,c=this.args,d=this.attrs,g=this.bounds,e=a.chartWidth;a=a.chartHeight;var k=this.group,l=k.scaleValue,t=g.angles;S(b.radius)||(g.r=e<a?e*g.xs:a*g.ys,g.r*=.3);g.innerR=ka(b.innerradius,l,.8*g.r,this.group.snaps,k.isBelow).value;g.innerR>g.r&&(g.innerR+=g.r,g.r=g.innerR-g.r,g.innerR-=g.r);this.fillPattern||(this.fillOptions.radialGradient=!0,this.fillPattern="radial");"radial"===this.fillPattern&&(this.fillOptions.cx=this.fillOptions.cy=.5);c[0]=g.x1;c[1]=g.y1;c[2]=g.r;c[3]=g.innerR;c[4]=
+t.end*m;c[5]=t.start*m;d.ringpath=c.slice(0);return"ringpath"},text:function(a){var b=this.args,c=this.style,d=this.attrs,g=this.group,e=this.bounds,k=this.options,l=this.getAbsoluteBounds(),m=S(k.align,g.options.textalign,"center").toLowerCase(),t=S(k.valign,g.options.textvalign,"middle").toLowerCase(),p=fa(S(k.text,k.label)),r=a.logic.smartLabel,q=v(k.wrap,g.options.wraptext,1),u,E,G=S(k.rotatetext,g.options.rotatetext,"0").toLowerCase(),G=ma.textRotationOptions[G],R="0"!==G?"y":"x",J=a.options.orphanStyles;
+a=T({},J.defaultStyle.style||{});J=g.id&&J[g.id.toLowerCase()]||W;a=T(a,J.style);var J=parseFloat(a.fontSize),F=S(k.font,g.options.font,a.fontFamily),g=v(k.fontsize,g.options.fontsize,J)*g.scaleText;q&&(u=v(k.wrapwidth,this.hasDimensionX?l.width/e.xs:void 0),E=v(k.wrapheight,this.hasDimensionY?l.height/e.ys:void 0),u&&(u*=e.xs),E&&(E*=e.ys));c.fontFamily=F;c.fontWeight=v(k.bold,k.isbold,0)?"bold":"normal";v(k.italic,k.isitalic,0)&&(c.fontStyle="italic");k.bgcolor&&(!d["text-bound"]&&(d["text-bound"]=
+[]),d["text-bound"][0]=H(k.bgcolor));k.bordercolor&&(!d["text-bound"]&&(d["text-bound"]=[]),d["text-bound"][1]=H(k.bordercolor),d["text-bound"][2]=v(k.borderthickness,1),d["text-bound"][3]=v(k.padding,1));k.fontcolor&&(d.fill=H(k.fontcolor),this.fillOptions&&(this.fillOptions.color=d.fill));c.fontSize=g+"px";g===J?c.lineHeight=a.lineHeight:D(c);d["text-anchor"]=ma.textAlignOptions[m]||ma.textAlignOptions.center;r.setStyle(c);c=r.getSmartText(p,u,E,!1);d["vertical-align"]=ma.textVerticalAlignOptions[t]||
+ma.textVerticalAlignOptions.middle;d["text-anchor"]===ma.textAlignOptions.left?l[R]+=v(k.leftmargin,0):d["text-anchor"]===ma.textAlignOptions.center&&(l[R]+=.5*v(k.leftmargin,0));"0"!==G&&(d.rotation=[parseFloat(G),l.x,l.y]);b[0]=d.x=l.x;b[1]=d.y=l.y;b[2]=d.text=c.text;c.tooltext&&(d.title=c.tooltext);delete d.stroke;delete d["stroke-weight"];return"text"},image:function(a){var b=this,c=b.style,d=a.chartWidth,g=a.chartHeight;a=b.options;var e=b.attrs,k=b.args,l=L(a.url),m=b.group.scaleImageX*S(Number(a.xscale),
+100)/100,t=b.group.scaleImageY*S(Number(a.yscale),100)/100,p=b.getAbsoluteBounds(),r={width:1,height:1},D;if(!l)return k[0]=e.x=p.x,k[1]=e.y=p.y,k[2]=e.width=p.width,k[3]=e.height=p.height,k[4]=e.r=p.r,"rect";D=new u.Image;D.onload=function(){r=G("none","top","left",100,0,d,g,D);delete r.x;delete r.y;r=T(r,{width:(b.hasDimensionX?p.unscaled.width:r.width)*m,height:(b.hasDimensionY?p.unscaled.height:r.height)*t});setTimeout(function(){var a,d,g;if(a=b.wrapper){a.attr(r);if(d=b.tracker)g=a.getBBox(),
+d.attr({x:g.x,y:g.y,width:g.width,height:g.height});a.css({opacity:c.opacity=V(v(b.fillAlpha,b.borderAlpha),b.borderAlpha)/100})}b.onload&&b.onload(r)},0)};D.src=l;k[0]=e.src=l;k[1]=e.x=p.x;k[2]=e.y=p.y;k[3]=e.width=(b.hasDimensionX?p.unscaled.width:r.width)*m;k[4]=e.height=(b.hasDimensionY?p.unscaled.height:r.height)*t;c.opacity=V(v(b.fillAlpha,b.borderAlpha),b.borderAlpha)/100;delete e.stroke;delete e.fill;delete e["stroke-linecap"];return"image"}}});ba=function(){this.groups=[];this._idstore={};
+this._options={}};F.Annotations=ba;e.extend(ba.prototype,{reset:function(a,b,c){var d=this.groups,g;this.clear();if(c){g={};for(var e in c)switch(typeof c[e]){case "object":case "function":g["-$"+e]=g["$"+e]=g["+$"+e]=c[e];break;default:g["$"+e]=g["+$"+e]=c[e],g["-$"+e]=-1*c[e]}g=this._literals=g}b&&(this._options=b);if(a&&a.groups&&d)for(c=0;c<a.groups.length;c+=1)d.push(new ja(a.groups[c],b,g,this._idstore,this))},getRenderer:function(){return this._renderer},addGroup:function(a){var b=this.getRenderer();
+this.groups.push(a=new ja(a,this._options,this._literals,this._idstore,this));b&&(a.setup(),a.scale(),a.draw());return a},addItem:function(a,b,c){var d,g=this.getRenderer();"string"===typeof a?d=this._idstore[a]:(c=b,b=a);if(d&&d.addItem){if(!g&&c){e.raiseWarning(this,"04031411430","run","Annotations~addItem()","Cannot draw the shapeif the group has not been drawn. Use Annotations~draw() to draw the group and pass the renderer to it.");return}a=d.addItem(b,c)}else a=this.addGroup({}).addItem(b,c);
+return a},draw:function(a){var b=this.groups,c,d;if(b&&(this._renderer=a||this._renderer))for(c=0,d=b.length;c<d;c++)a=b[c],a.setup(),a.scale(),a.draw()},clear:function(){var a=this.groups,b;if(a){for(;b=a.shift();)b.destroy();this.shapesToDraw=[]}},dispose:function(){var a;this.disposing=!0;this.clear();for(a in this)delete this[a];this.disposed=!0},hide:function(a){if(a=this._idstore[a])return a.attrs.visibility="hidden",a.wrapper&&a.wrapper.hide(),a},show:function(a){if(a=this._idstore[a])return a.attrs.visibility=
+"",a.wrapper&&a.wrapper.show(),a},update:function(a,b,c){a=this._idstore[a];var d;if(a&&b){if("object"===typeof b)for(d in b.id&&delete b.id,b.type&&delete b.type,b)a.options[(d+"").toLowerCase()]=b[d]+"";else a.options[(b+"").toLowerCase()]=c+"";a.wrapper&&(a.scale(),a.setup(),a.draw());return a}},destroy:function(a){var b=this._idstore[a],c=b.group;b&&"function"===typeof b.destroy&&(c&&c.removeItem(a),b.destroy())},shapesToDraw:[]});e.core.addEventListener("beforeinitialize",function(a){"javascript"===
+a.sender.options.renderer&&(a.sender.annotations=new ba)});e.core.addEventListener("disposed",function(a){a.sender.annotations&&a.sender.annotations.dispose()});e.addEventListener("internal.animationComplete",function(a){var b=(a=a.sender.annotations)&&a.shapesToDraw,c=b&&b.length,d,g;if(c){for(g=0;g<c;g++)d=b[g],d.queueDraw=!1,d.scale(),d.setup(),d.draw();a.shapesToDraw=[]}});q.addEventListener("rendered",function(a,b){if("javascript"===b.renderer){var c=a.sender,d=c.jsVars||{},g=d.instanceAPI;d.hcObj&&
+g&&g.drawAnnotations?(c.showAnnotation||(c.showAnnotation=function(){c.annotations.show.apply(c.annotations,arguments)}),c.hideAnnotation||(c.hideAnnotation=function(){c.annotations.hide.apply(c.annotations,arguments)})):(delete c.showAnnotation,delete c.hideAnnotation)}})}]);
+FusionCharts.register("module",["private","modules.renderer.js-base",function(){var e=this,q=e.hcLib,F=q.Raphael,u=e.window,d=u.document,a=q.BLANKSTRING,t=q.createTrendLine,E="https:"===u.location.protocol?"https://export.api3.fusioncharts.com/":"http://export.api3.fusioncharts.com/",c=q.pluck,l=q.getValidValue,b=q.pluckNumber,r=q.getFirstValue,V=q.getDefinedColor,p=q.parseUnsafeString,g=q.FC_CONFIG_STRING,k=q.extend2,m=q.getDashStyle,J=q.parseTooltext,T=q.toPrecision,S=q.regex.dropHash,v=q.HASHSTRING,
+aa=q.getSentenceCase,L=q.addEvent,fa=function(a){return void 0!==a&&null!==a},G=u.Math,H=q.TOUCH_THRESHOLD_PIXELS,D=q.CLICK_THRESHOLD_PIXELS,R=G.min,W=G.max,O=G.abs,ha=G.ceil,ka=G.floor,ga=G.log,ba=G.pow,ja=G.sqrt,ma=G.round,da=q.graphics.getColumnColor,na=q.getFirstColor,A=q.setLineHeight,ca=q.pluckFontSize,Ia=q.getFirstAlpha,Ba=q.graphics.getDarkColor,va=q.graphics.getLightColor,Y=q.graphics.convertColor,Da=q.COLOR_TRANSPARENT,sa=q.POSITION_CENTER,wa=q.POSITION_TOP,ob=q.POSITION_BOTTOM,ia=q.POSITION_RIGHT,
+bb=q.POSITION_LEFT,ua=q.parsexAxisStyles,la=q.chartAPI,pb=q.graphics.mapSymbolName,nb=la.singleseries,qb=la.multiseries,Ga=q.COMMASTRING,fb=q.STRINGUNDEFINED,Ca=q.ZEROSTRING,mb=q.ONESTRING,jb=q.HUNDREDSTRING,oa=q.PXSTRING,Cb=q.COMMASPACE,Oa=u.navigator.userAgent.match(/(iPad|iPhone|iPod)/g),zb=!/fusioncharts\.com$/i.test(u.location.hostname),jc={left:"start",right:"end",center:"middle"},ac=q.BLANKSTRINGPLACEHOLDER,ec=q.BGRATIOSTRING,Sb=q.COLOR_WHITE,Qb=q.TESTSTR,Eb=q.graphics.getAngle,pc=q.axisLabelAdder,
+Bb=q.falseFN,Ab=q.NumberFormatter,Tb=q.getLinkAction,Hb=q.getAxisLimits,Qa=q.createDialog,wb=function(a,b){return 0<a?ga(a)/ga(b||10):null},f=q.hasTouch=void 0!==d.documentElement.ontouchstart,B=q.fireEvent=function(a,b,c,f){q.dem.fire(a,b,c,f)},n={1:"bold",0:"normal"},w={1:"italic",0:"normal"},I={1:"underline",0:"none"},K={font:function(a,b){b.style.fontFamily=a},size:function(a,b){a&&(b.style.fontSize=ca(a)+oa)},color:function(b,c,f){c.style.color=b&&b.replace&&b.replace(S,v)||a;f&&(c.color=c.style.color)},
+bgcolor:function(b,c){c.style.backgroundColor=b&&b.replace&&b.replace(S,v)||a},bordercolor:function(b,c){c.style.border="1px solid";c.style.borderColor=b&&b.replace&&b.replace(S,v)||a},ishtml:a,leftmargin:function(a,c){c.style.marginLeft=b(a,0)+oa},letterspacing:function(a,c){c.style.letterSpacing=b(a,0)+oa},bold:function(a,b){b.style.fontWeight=n[a]||""},italic:function(a,b){b.style.fontStyle=w[a]||""},underline:function(a,b){b.style.textDecoration=I[a]||""}},X=q.chartPaletteStr={chart2D:{bgColor:"bgColor",
+bgAlpha:"bgAlpha",bgAngle:"bgAngle",bgRatio:"bgRatio",canvasBgColor:"canvasBgColor",canvasBaseColor:"canvasBaseColor",divLineColor:"divLineColor",legendBgColor:"legendBgColor",legendBorderColor:"legendBorderColor",toolTipbgColor:"toolTipbgColor",toolTipBorderColor:"toolTipBorderColor",baseFontColor:"baseFontColor",anchorBgColor:"anchorBgColor"},chart3D:{bgColor:"bgColor3D",bgAlpha:"bgAlpha3D",bgAngle:"bgAngle3D",bgRatio:"bgRatio3D",canvasBgColor:"canvasBgColor3D",canvasBaseColor:"canvasBaseColor3D",
+divLineColor:"divLineColor3D",divLineAlpha:"divLineAlpha3D",legendBgColor:"legendBgColor3D",legendBorderColor:"legendBorderColor3D",toolTipbgColor:"toolTipbgColor3D",toolTipBorderColor:"toolTipBorderColor3D",baseFontColor:"baseFontColor3D",anchorBgColor:"anchorBgColor3D"}},ta=function(){var a={},b,c=function(){var f,h,d,n,g=0,B,w,k=parseInt(e.core.options.resizeTrackingInterval,10)||300,I;for(f in a)g+=1,h=a[f],d=h.jsVars,B=h.ref,!h.disposed&&(n=B&&B.parentNode)&&(w=B.style)&&(/\%/g.test(w.width)||
+/\%/g.test(w.height))?(B=n.offsetWidth,I=n.offsetHeight,!d.resizeLocked&&(B&&d._containerOffsetW!==B||I&&d._containerOffsetH!==I)&&(h.resizeTo&&h.resizeTo(),d._containerOffsetW=B,d._containerOffsetH=I)):(delete a[f],--g);b=g?setTimeout(c,k):clearTimeout(b)};return function(f,h){var d=f.jsVars,n=h||f.ref&&f.ref.parentNode||{};d._containerOffsetW=n.parentNode.offsetWidth;d._containerOffsetH=n.parentNode.offsetHeight;a[f.id]=f;b||(b=setTimeout(c,parseInt(e.core.options.resizeTrackingInterval,10)||300))}}(),
+Aa={getExternalInterfaceMethods:function(){var a=la[this.jsVars.type],a=a&&a.eiMethods,b="saveAsImage,print,exportChart,getXML,hasRendered,signature,cancelExport,getSVGString,lockResize,showChartMessage,",c;if("string"===typeof a)b+=a+Ga;else if(void 0!==a||null!==a)for(c in a)b+=c+Ga;return b.substr(0,b.length-1)},drawOverlayButton:function(a){var b=this.jsVars,c=b.overlayButton,f,h;if(a&&a.show){c||(c=b.overlayButton=d.createElement("span"),q.dem.listen(c,"click",function(){e.raiseEvent("OverlayButtonClick",
+a,b.fcObj)}));for(f=a.message?a.message:"Back";c.firstChild;)c.removeChild(c.firstChild);c.appendChild(d.createTextNode(f));b.overlayButtonMessage=f;f={border:"1px solid "+(a.borderColor?a.borderColor.replace(S,v):"#7f8975"),backgroundColor:a.bgColor?a.bgColor.replace(S,v):"#edefec",fontFamily:a.font?a.font:"Verdana,sans",color:"#"+a.fontColor?a.fontColor:"49563a",fontSize:(a.fontSize?a.fontSize:"10")+oa,padding:(a.padding?a.padding:"3")+oa,fontWeight:0===parseInt(a.bold,10)?"normal":"bold",position:"absolute",
+top:"0",right:"0",_cursor:"hand",cursor:"pointer"};for(h in f)c.style[h]=f[h];b.hcObj.container.appendChild(c);b.overlayButtonActive=!0}else c&&(b.overlayButton=c.parentNode.removeChild(c),b.overlayButtonActive=!1,delete b.overlayButtonMessage)},print:function(a){return this.jsVars.hcObj&&this.jsVars.hcObj.hasRendered&&this.jsVars.hcObj.print(a)},exportChart:function(a){var b=this.jsVars.hcObj;return b&&b.options&&b.options.exporting&&b.options.exporting.enabled?b.exportChart(a):!1},getSVGString:function(){return this.jsVars&&
+this.jsVars.hcObj&&this.jsVars.hcObj.paper&&this.jsVars.hcObj.paper.toSVG()},resize:function(){var a=this.jsVars,b=a.container,c=a.hcObj;c&&(c&&c.destroy&&c.destroy(),q.createChart(a.fcObj,b,a.type,void 0,void 0,!1,!0),delete a.isResizing)},lockResize:function(a){return"boolean"!==typeof a?!!this.jsVars.resizeLocked:this.jsVars.resizeLocked=a},showChartMessage:function(a,b,c){var f=this.jsVars,h=f.hcObj,d=f.fcObj,n=d.options;f.msgStore[a]&&(a=f.msgStore[a]);b&&h&&h.hasRendered?a?h.showMessage(a,c):
+h.hideLoading():(h&&h.destroy&&h.destroy(),d._chartMessageImageStyle={imageHAlign:n.baseChartMessageImageHAlign,imageVAlign:n.baseChartMessageImageVAlign,imageAlpha:n.baseChartMessageImageAlpha,imageScale:n.baseChartMessageImageScale},d._chartMessageStyle={color:n.baseChartMessageColor,fontFamily:n.baseChartMessageFont,fontSize:n.baseChartMessageFontSize},q.createChart(f.fcObj,f.container,f.type,void 0,a));return a},signature:function(){return"FusionCharts/3.4.0 (XT)"}},za=q.HCstub=function(c,f,d,
+n){c=c.chart;var h=b(c.showborder,1)?b(c.borderthickness,1):0,g=b(c.charttopmargin,n.charttopmargin,15)+h,e=b(c.chartrightmargin,n.chartrightmargin,15)+h,B=b(c.chartbottommargin,n.chartbottommargin,15)+h,h=b(c.chartleftmargin,n.chartleftmargin,15)+h,w=g+B,k=h+e;d*=.7;f*=.7;w>d&&(g-=(w-d)*g/w,B-=(w-d)*B/w);k>f&&(h-=(k-f)*h/k,e-=(k-f)*e/k);f={_FCconf:{0:{stack:{}},1:{stack:{}},x:{stack:{}},oriCatTmp:[],isSpline:-1!==n.chartInstance.options.chartType.search(/spline/i),noWrap:!1,marginLeftExtraSpace:0,
+marginRightExtraSpace:0,marginBottomExtraSpace:0,marginTopExtraSpace:0,marimekkoTotal:0},chart:{alignTicks:!1,ignoreHiddenSeries:!1,events:{},reflow:!1,spacingTop:g,spacingRight:e,spacingBottom:B,spacingLeft:h,marginTop:g,marginRight:e,marginBottom:B,marginLeft:h,borderRadius:0,plotBackgroundColor:"#FFFFFF",textDirection:"1"===c.hasrtltext?"rtl":"",style:{},animation:b(c.defaultanimation,c.animation,1)?{duration:500*b(c.animationduration,1)}:!1},colors:"AFD8F8 F6BD0F 8BBA00 FF8E46 008E8E D64646 8E468E 588526 B3AA00 008ED6 9D080D A186BE CC6600 FDC689 ABA000 F26D7D FFF200 0054A6 F7941C CC3300 006600 663300 6DCFF6".split(" "),
+credits:{href:q.CREDIT_HREF,text:q.CREDIT_STRING,enabled:zb},global:{},labels:{items:[]},lang:{},legend:{enabled:!0,symbolWidth:12,borderRadius:1,backgroundColor:"#FFFFFF",initialItemX:0,title:{text:a,x:0,y:0,padding:2},scroll:{},itemStyle:{}},loading:{},plotOptions:{series:{pointPadding:0,borderColor:"#333333",events:{},animation:b(c.animation,c.defaultanimation,1)?{duration:1E3*b(c.animationduration,1)}:!1,states:{hover:{enabled:!1},select:{enabled:!1}},dataLabels:{enabled:!0,color:"#555555",style:{},
+formatter:function(){return this.point.showPercentValues?n.numberFormatter.percentValue(this.percentage):this.point.displayValue}},point:{events:{}}},area:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},radar:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},areaspline:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},line:{shadow:!0,
+states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},scatter:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},bubble:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},spline:{states:{hover:{enabled:!1}},marker:{lineWidth:1,radius:3,states:{hover:{enabled:!1},select:{enabled:!1}}}},pie:{size:"80%",allowPointSelect:!0,cursor:"pointer",
+point:{events:{legendItemClick:c.interactivelegend===Ca?Bb:function(){this.slice()}}}},pie3d:{size:"80%",allowPointSelect:!0,cursor:"pointer",point:{events:{legendItemClick:c.interactivelegend===Ca?Bb:function(){this.slice()}}}},column:{},floatedcolumn:{},column3d:{},bar:{},bar3d:{}},point:{},series:[],subtitle:{text:a,style:{}},symbols:[],title:{text:a,style:{}},toolbar:{},tooltip:{style:{}},xAxis:{steppedLabels:{style:{}},labels:{x:0,style:{},enabled:!1},lineWidth:0,plotLines:[],plotBands:[],title:{style:{},
+text:a},tickWidth:0,scroll:{enabled:!1}},yAxis:[{startOnTick:!1,endOnTick:!1,title:{style:{},text:a},tickLength:0,labels:{x:0,style:{}},plotBands:[],plotLines:[]},{tickLength:0,gridLineWidth:0,startOnTick:!1,endOnTick:!1,title:{style:{},text:a},labels:{x:0,style:{},enabled:!1,formatter:function(){return this.value!==ac?this.value:a}},opposite:!0,plotBands:[],plotLines:[]}],exporting:{buttons:{exportButton:{},printButton:{enabled:!1}}}};c.palettecolors&&"string"===typeof c.palettecolors&&(f.colors=
+c.palettecolors.split(/\s*\,\s*/));return n.hcJSON=f},ya=function(a,b,c,f,h){var d=[],n=!1;f=f||0;for(h=h||{max:Number.MIN_VALUE,min:Number.MAX_VALUE};f<a.length;++f)if(n)if(isNaN(a[f].y)||null===a[f].y){if(!c)break}else d.push({index:f,y:a[f].y});else isNaN(a[f].y)||null===a[f].y||(n=!0,d.push({index:f,y:a[f].y}));if(2<d.length){var n=h,g={},e,B,w;for(B=0;B<d.length;++B)e=d[B].index,g["D"+e]=0;for(e=0;10>e;++e)for(B=0;B<d.length;++B)w=0===B?(3*(d[B+1].y-d[B].y)-g["D"+d[B+1].index])/2:B===d.length-
+1?(3*(d[B].y-d[B-1].y)-g["D"+d[B-1].index])/2:(3*(d[B+1].y-d[B-1].y)-g["D"+d[B+1].index]-g["D"+d[B-1].index])/4,g["D"+d[B].index]=w;e=ma(b/(d.length-1));for(B=1;B<d.length;++B){w=n;for(var k=void 0,I=void 0,l=void 0,K=void 0,m=I=void 0,t=void 0,p=void 0,r=void 0,r=void 0,k=g["D"+d[0].index],I=g["D"+d[B].index],l=d[0].y,K=3*(d[B].y-d[0].y)-2*k-I,I=2*(d[0].y-d[B].y)+k+I,m=w.max,t=w.min,p=0;p<=e;p++)r=p/e,r=l+k*r+K*r*r+I*r*r*r,r<t&&(t=r),r>m&&(m=r);w.max=m;w.min=t}}f<a.length&&!c&&ya(a,b,c,f,h);return h},
+Ea=q.placeVerticalAxis=function(c,f,d,n,h,e,B,w,k,I){var K=d[g],m=K.smartLabel,t,p,Q,r,X=0,D=K.marginRightExtraSpace,q=K.marginLeftExtraSpace,H={},v={},za={},u=c.plotLines,E=c.plotBands,K=f.verticalAxisValuesPadding,ya=isNaN(f.fixedValuesPadding)?0:f.fixedValuesPadding,ta=K-ya,A=f.verticalAxisValuesPadding,Ea=f.verticalAxisNamePadding,Aa=f.verticalAxisNameWidth,pa=f.rotateVerticalAxisName&&String(f.rotateVerticalAxisName).toLowerCase(),lb="none"!==pa,qa=c.offset?c.offset:0,G=0,R=0,Ja=0,M=0,Ka=0,J=
+0,yb=0,F,Gb,xa,ea,K=2,yb=B?D+5:q+4,Z=W(b(d.chart.plotBorderWidth,1),0),Fb=c.showLine?c.lineThickness:Z,L=function(a,b){var c,h;a&&a.label&&void 0!==l(a.label.text)&&(xa=a.label,xa.style&&xa.style!==Gb&&(Gb=xa.style,m.setStyle(Gb)),t=m.getOriSize(a.label.text),h=(c=t.width)?c+2:0,a.isGrid?(H[b]={width:c,height:t.height,label:xa},M<=h&&(M=h,f.lYLblIdx=b)):a.isTrend&&(B&&xa.textAlign===bb||xa.textAlign===ia?(v[b]={width:c,height:t.height,label:xa},Ka=W(Ka,h)):(za[b]={width:c,height:t.height,label:xa},
+J=W(J,h))))},Lb=function(b,f){var d,n=f?X:X+b;d=c.title.style;var g;p=p||{};if(0<n)return lb?(n<p.height&&(m.setStyle(d),p=m.getSmartText(c.title.text,h,n)),d=p.height,g=p.width):(n<p.width&&(m.setStyle(d),p=m.getSmartText(c.title.text,n,h)),d=p.width,g=p.height),c.title._actualWidth=d,c.title._actualHeight=g,c.title.text=p.text,p.tooltext&&(c.title.originalText=p.tooltext),f?n-d+b:n-d;c.title.text=a;return 0},T=function(a,b,c){for(var f in a)a[f].label.x=b,a[f].label.y=c},Ja=0;for(F=E.length;Ja<
+F;Ja+=1)L(E[Ja],Ja);Ja=0;for(F=u.length;Ja<F;Ja+=1)L(u[Ja],Ja);c.title&&c.title.text!=a&&(Gb=c.title.style,m.setStyle(Gb),Q=m.getOriSize(Qb).height,c.title._originalText=c.title.text,lb?(c.title.rotation="cw"===pa?90:270,p=m.getSmartText(c.title.text,h,e),X=p.height,r=Q):(c.title.rotation=0,p=m.getSmartText(c.title.text,void 0!==Aa?Aa:e,h),X=p.width,r=20));0<J&&(R=J+A);k&&(n=b(n.chart.maxlabelwidthpercent,0),1<=n&&100>=n&&(k=n*k/100,M>k&&(M=k)));G=W(Ka,M);G+=G?ta+ya:0;0<X&&(G+=X+Ea+yb);(function(){if(R+
+G>e){ea=R+G-e;if(R){if(A>=ea){A-=ea;return}ea-=A;A=0}if(ta+Ea>=ea)Ea>=ea?Ea-=ea:(ta-=ea-Ea,Ea=0);else{ea-=ta+Ea;Ea=ta=0;if(20<J)if(Ka>M){if(J-Ka>=ea){J-=ea;return}if(Ka-J>=ea){Ka-=ea;return}Ka>J?(ea-=Ka-J,Ka=J):(ea-=J-Ka,J=Ka);if(2*(Ka-M)>=ea){J-=ea/2;Ka-=ea/2;return}ea-=2*(Ka-M);J=Ka=M}else{if(J-20>=ea){J-=ea;return}ea-=J-20;J=20}if(Ka>M){if(Ka-M>=ea){Ka-=ea;return}ea-=Ka-M;Ka=M}X-r>=ea?X-=ea:(ea-=X-r,X=r,J>=ea?J=0:(ea-=J,J=0,X>=ea?X=0:(ea-=X,X=0,M>=ea&&(Ka=M-=ea))))}}})();Ja=function(b,c){var f,
+d=0,n=c?J-2:J+b-2,z;if(0<J){for(z in za)xa=za[z].label,za[z].width>n?(xa.style&&xa.style!==Gb&&(Gb=xa.style,m.setStyle(Gb)),f=m.getSmartText(xa.text,n,h,!0),xa.text=f.text,f.tooltext&&(xa.originalText=f.tooltext),za[z].height=f.height,d=W(d,f.width)):d=W(d,za[z].width);return c?n-d+b:n-d}for(z in za)za[z].label.text=a;return 0}(0,!0);Ja=Lb(Ja,!0);Ja=function(b){var c=0,f=W(M,Ka)+b-2,d;if(0<f){for(d in H)xa=H[d].label,H[d].width>f?(xa.style&&xa.style!==Gb&&(Gb=xa.style,m.setStyle(Gb)),b=m.getSmartText(xa.text,
+f,h,!0),xa.text=b.text,b.tooltext&&(xa.originalText=b.tooltext),H[d].height=b.height,c=W(c,b.width)):c=W(c,H[d].width);for(d in v)xa=v[d].label,v[d].width>f?(xa.style&&xa.style!==Gb&&(Gb=xa.style,m.setStyle(Gb)),b=m.getSmartText(xa.text,f,h,!0),xa.text=b.text,b.tooltext&&(xa.originalText=b.tooltext),v[d].height=b.height,c=W(c,b.width)):c=W(c,v[d].width);return O(f-c)}for(d in H)H[d].label.text=a;for(d in v)v[d].label.text=a;return 0}(Ja);Ja=Lb(Ja);k=f.verticalAxisNamePadding-Ea;Ja&&k&&(Ja>k?(Ea+=
+k,Ja-=k):(Ea+=Ja,Ja=0));k=f.verticalAxisValuesPadding-(ta+ya);Ja&&k&&(Ja>k?(ta+=k,Ja-=k):(ta+=Ja,Ja=0));k=f.verticalAxisValuesPadding-A;Ja&&k&&(Ja>k?(A+=k,Ja-=k):(A+=Ja,Ja=0));0<J&&(R=J+A);G=W(Ka,M);G+=G?ta+ya:0;0<X&&(G+=X+Ea+yb);k=W(Ka,M);k+=0<k?ta+ya:0;0<X?(lb?X<p.height&&(p=m.getSmartText(c.title.text,h,X)):(X<p.width&&(p=m.getSmartText(c.title.text,X,h)),c.title.y=-((p.height-Q)/2)),c.title.text=p.text,p.tooltext&&(c.title.originalText=p.tooltext),c.title.margin=k+Ea+yb+(lb?X-Q:X/2)):c.title.text=
+a;Q=-(ta+ya+qa+q+2);D=D+A+qa+2;yb=W(Ka,M);c.labels.style&&(K=.35*parseInt(c.labels.style.fontSize,10));B?(0<J&&T(za,Q,K),0<yb&&(T(H,D,K),T(v,D,K))):(0<J&&T(za,D,K),0<yb&&(T(H,Q,K),T(v,Q,K)));c.labels._textY=K;c.labels._righttX=D;c.labels._leftX=Q;G=G||Fb;R=R||(w?0:Z);I?(d.chart.marginLeft+=B?R:G-I,d.chart.marginRight+=B?G-I:R):(d.chart.marginLeft+=B?R:G,d.chart.marginRight+=B?G:R);return R+G},lb=q.titleSpaceManager=function(c,f,d,n){var h=this.snapLiterals||(this.snapLiterals={}),e=f.chart,B=p(e.caption);
+f=p(e.subcaption);var w=e=b(e.captionpadding,10),k=c[g],I=this.smartLabel||k.smartLabel,l=!1,K=0,m,t,Q=0,r=0,X=0,D=0,q=c.title,H=c.subtitle,v=W(b(c.chart.plotBorderWidth,1),0),za=0,u=0;if(3<n){e<v&&(e=v+2);B!==a&&(m=q.style,X=ha(b(parseFloat(m.fontHeight,10),parseFloat(m.lineHeight,10),12)));f!==a&&(t=H.style,D=b(parseInt(t.fontHeight,10),parseInt(t.lineHeight,10),12));if(0<X||0<D)n=W(n,0),K=X+D+e,K>n?(Q=n-K,l=!0,Q<e?e=W(Q,5):(Q-=e,e=0,D>Q?(r=D-Q+10,D=0,H._originalText=H.text,H.text=""):(Q-=D,D=0,
+X>Q&&(r=X-Q)))):r=n-K,0<X&&(I.setStyle(m),X+=r,n=I.getSmartText(B,d,X),r=X-n.height,q.height=X=n.height,q.text=n.text,n.tooltext&&(q.originalText=n.tooltext),za=n.width),0<D&&(I.setStyle(t),D+=r,d=I.getSmartText(f,d,D),r=D-d.height,D=d.height,H.text=d.text,H.height=d.height,d.tooltext&&(H.originalText=d.tooltext),u=d.width),l&&0<r&&(e+=R(w-e,r)),K=X+D+e;K=K||v;q.isOnTop?(h.captionstarty=c.chart.marginTop,c.chart.marginTop+=K):(c.chart.marginBottom+=K,h.captionstarty=q.y=k.height-c.chart.marginBottom+
+e,c.chart.marginTop+=5,K+=5);q._captionWidth=za;H._subCaptionWidth=u;q._lineHeight=X;H._lineHeight=D}else H&&(H.text=""),q&&(q.text="");return K},qa=q.stepYAxisValues=function(b,c,f,d,h,n){var e=0,B=d.plotLines,w=[],k=0,I=d.plotLines.length,l="W";c=c[g].smartLabel;for(var K=parseFloat(ca(f.basefontsize,10)),m,t,p=0;e<I;e+=1)f=B[e],f.isGrid&&f.label&&f.label.text&&(n&&(t=f.label.text.match(/<br \/>/gi))&&(p=W(p,t.length),t=null),w.push(f),0===f.value&&(k=w.length-1));n&&0<p&&(l+=Array(p+1).join("<br />W"));
+if(I=w.length)if(d.labels.style?c.setStyle(d.labels.style):w[0].label&&w[0].label.style&&c.setStyle(d.labels.style),e=c.getOriSize(l).height,n||(e+=.4*K),b/=I-1,b<e){n=W(1,ha(e/b));for(e=b=k;e<I;e+=1)f=w[e],e===h&&((e-b)%n&&m&&(m.label.text=""),b=h),f&&f.label&&((e-b)%n?f.label.text=a:m=f);for(e=b=k;0<=e;--e)f=w[e],e===h&&((b-e)%n&&m&&(m.label.text=""),b=h),f&&f.label&&((b-e)%n?f.label.text=a:m=f)}},yb=q.placeHorizontalAxis=function(c,f,d,n,h,e,B){var w=d[g],k=n&&n.chart||{},I,K,m,t,p,X,r,D,q,H,v,
+za,u=0,E=0,ya=10,ta=1,A=0,Ea=0,Aa=0,Ja=0,pa=!1,G=!1,Ka=!1,J=b(k.labelstep,0),lb=b(k.xaxisminlabelwidth,0),M=b(k.maxlabelheight,e),qa=f.labelDisplay,xa=f.rotateLabels,ea=f.horizontalLabelPadding,yb=w.marginBottomExtraSpace,Gb=d.chart.marginLeft,F=d.chart.marginRight,Z=w.smartLabel,Fb=w.plotBorderThickness,L=f.catCount,Lb=f.slantLabels,O=h/(c.max-c.min),T=0,V=0,S=0,aa=0,Y=n&&n.chart||{},ba=1E3*b(Y.updateinterval,Y.refreshinterval),ca=Y.datastreamurl,ma=Boolean(this.realtimeEnabled&&ba&&void 0!==ca),
+fa,ga,da,na,oa,db,Za,Wa,Da,Ra,la,va,sb,ub,ra,vb,Ba,$a,Xa,Oa,Cb,Jb,Rb,bc,Va,cc=null,wa=null,kb,Ga,ua,Ia,Ca,pb,jb,qb,fc,La,zb,Qa,hb=[],Zb=[],Ob,Xb=0,Yb=0,kc,mb,Pb,mc,wb,Eb,Mb,vc=f.horizontalAxisNamePadding,$b=0,Db=f.staggerLines,gc=T,nb=!1,jc=!1,Hb=0,wc,dc,hc,nc,ec,Bb,Tb,Ab,Qb,Sb,pc,ac,yc,Hc,Nc,Fc,Qc,Ic,Oc,Cc,Yc;zb=c.plotLines;ya=La=0;for(Mb=zb.length;La<Mb;La+=1)(K=zb[La])&&K.label&&!K.isTrend&&ya<(Yc=parseFloat(K.label.style.lineHeight,10))&&(ya=ha(Yc)+2*(K.label.style.borderThickness||0),X=K.label.style);
+if(X||c.labels.style)X=X||c.labels.style,Z.setStyle(X),D=Z.getOriSize("W"),ya=Z.lineHeight,r=D.width+4,za=Z.getOriSize("WWW").width+4;c.title&&c.title.text!=a&&(X=c.title.style,Z.setStyle(X),Ea=Z.getOriSize("W").height,c.title.rotation=0,t=Z.getSmartText(c.title.text,h,e),E=t.height);Gb!=parseInt(k.chartleftmargin,10)&&(jb=!0);F!=parseInt(k.chartrightmargin,10)&&(qb=!0);void 0!==k.canvaspadding&&""!==k.canvaspadding&&(jc=!0);fc=h-B;switch(qa){case "none":pa=Ka=!0;xa&&(u=Lb?300:270,D=ya,ya=r,r=D);
+break;case "rotate":u=Lb?300:270;D=ya;ya=r;r=D;pa=!0;break;case "stagger":G=pa=!0;q=ka((e-Ea)/ya);q<Db&&(Db=q);break;default:xa&&(u=Lb?300:270,D=ya,ya=r,r=D)}w.isBar&&(pa=!0);La=0;zb=c.plotLines;if(typeof d._FCconf.isXYPlot!==fb||w.isBar){fa={};db=oa=0;Ra=Da=null;$a={};nb=!0;O=h/(c.max-c.min);nc=function(b,f,h){var n,g,C,e,B,N;N=b.plotObj;B=b.labelTextWidth;B||(p=N.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),B=Z.getOriSize(p.text).width+4,b.oriWidth=B,B>ga&&(B=ga),b.labelTextWidth=B,b.leftEdge=
+N.value*O-B/2,b.rightEdge=N.value*O+B/2,h&&(B=R(B,2*(K.value-c.min)*O+d.chart.marginLeft),b.labelTextWidth=B));if(typeof f!==fb){if(h=f.plotObj,p=h.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),f.oriWidth?C=f.oriWidth:(C=Z.getOriSize(p.text).width+4,f.oriWidth=C),C>ga&&(C=ga),f.labelTextWidth=C,f.leftEdge=h.value*O-C/2,f.rightEdge=h.value*O+C/2,n=N.value*O,g=n+B/2,e=h.value*O,C=e-C/2,C<g)if(n+r<e-r)g-=C,n=e-n,b.labelTextWidth=g>n?R(B,n):W(r,B-g/2),f.labelTextWidth=2*(n-b.labelTextWidth/2),
+b.leftEdge=N.value*O-b.labelTextWidth/2,b.rightEdge=N.value*O+b.labelTextWidth/2,f.leftEdge=h.value*O-f.labelTextWidth/2,f.rightEdge=h.value*O+f.labelTextWidth/2;else return f.labelTextWidth=0,h.label.text=a,!1}else h&&(B=R(B,2*(c.max-K.value)*O+d.chart.marginRight),b.labelTextWidth=B,b.leftEdge=N.value*O-B/2,b.rightEdge=N.value*O+B/2);b.nextCat=f;return!0};G?Db>mb?Db=mb:2>Db&&(Db=2):Db=1;for(Mb=zb.length;La<Mb;La+=1)(K=zb[La])&&K.label&&typeof K.label.text!==fb&&(K.isGrid?(na={plotObj:K},K.isCat&&
+(Wa=La%Db,fa[Wa]||(fa[Wa]=[]),Da?(Ra=na,fa[Wa].push(Ra)):(Ra=Da=na,fa[Wa].push(Da))),hb.push(na)):K.isTrend&&Zb.push({plotObj:K}));Qa=c.plotBands;La=0;for(Mb=Qa.length;La<Mb;La+=1)(K=Qa[La])&&K.isTrend&&K.label&&typeof K.label.text!==fb&&Zb.push({plotObj:K});if(hb.length)if(!Ka&&!u)if(w.distributedColumns)for(La=0,Mb=hb.length;La<Mb;La+=1)vb=hb[La],Ba=La%Db,K=vb.plotObj,K.label&&K.isCat&&(0<=La-Db?(va=hb[La-Db],Rb=va.plotObj.value*O+va.plotObj._weight*O/2):(va=null,Rb=c.min*O-Gb),La+Db<Mb?(la=hb[La+
+Db],bc=la.plotObj.value*O-la.plotObj._weight*O/2):(la=null,bc=c.max*O+F),p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),sb=K.value*O,Qb=sb-K._weight*O/2,Ab=sb+K._weight*O/2,1<Db?(Oa=Qb-Rb,Cb=Ab+bc,Va=Ab-Qb+R(Oa,Cb)):Va=Ab-Qb,p=K.label,p.style&&p.style!==X&&Z.setStyle(p.style),Va<r&&r<Z.getOriSize(p.text).width?(K.label.text=a,vb.labelTextWidth=0):(vb.labelTextWidth=Va,I=Z.getSmartText(p.text,Va-4,e,pa),Va=I.width+4,vb.labelTextWidth=Va,aa=W(aa,I.height)));else{mb=hb.length;kc=hb.length-
+1;(Ob=(hb[kc].plotObj.value-hb[0].plotObj.value)*O)?(ga=.1*Ob,da=W(.2*Ob,Ob/mb)):da=ga=h;for(m in fa)for(La=0,ub=fa[m].length;La<ub;){for(Za=La+1;!nc(fa[m][La],fa[m][Za]);)Za+=1;La=Za}Da&&(db=(Da.plotObj.value-c.min)*O+Gb-Da.labelTextWidth/2);K=hb[0].plotObj;Da&&K===Da.plotObj||(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),v=Z.getOriSize(p.text).width+4,sb=(K.value-c.min)*O+Gb,Da&&(kb=db-sb,v=kb<v&&kb>r/2?2*kb:0),hb[0].labelTextWidth=v,0<v&&(D=sb-v/2),D<db&&(db=D));Ra&&(v=Ra.labelTextWidth,
+oa=(c.max-Ra.plotObj.value)*O+F-v/2);K=hb[kc].plotObj;Ra&&K===Ra.plotObj||(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),v=Z.getOriSize(p.text).width+4,sb=(c.max-K.value)*O+F,Ra&&(kb=sb-oa,v=kb<v&&kb>r/2?2*kb:0),hb[kc].labelTextWidth=v,0<v&&(D=sb-v/2),D<oa&&(oa=D));Xb=0>db?-db:0;Yb=0>oa?-oa:0;Eb=Xb+Yb;if(0<Eb)for(m in fc>Eb?(ra=(ra=Yb*h/(Yb+h))?ra+4:0,d.chart.marginRight+=ra,h-=ra,ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):Xb<Yb?fc>=Yb&&qb?(ra=(ra=Yb*h/
+(Yb+h))?ra+4:0,d.chart.marginRight+=ra,h-=ra,O=h/(c.max-c.min)):jb&&(ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):fc>=Xb&&jb?(ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):qb&&(ra=(ra=Yb*h/(Yb+h))?ra+4:0,d.chart.marginRight+=ra,h-=ra,O=h/(c.max-c.min)),F=d.chart.marginRight,Gb=d.chart.marginLeft,Ob=(hb[kc].plotObj.value-hb[0].plotObj.value)*O,ga=.1*Ob,da=W(.2*Ob,Ob/mb),fa){La=0;for(ub=fa[m].length;La<ub;){for(Za=La+1;!nc(fa[m][La],fa[m][Za],
+!0);)Za+=1;La=Za}m+=1}La=0;for(Mb=hb.length;La<Mb;La+=1)if(vb=hb[La],Ba=La%Db,K=vb.plotObj,K.label)if(K.isCat)vb.labelTextWidth&&($a[Ba]=vb);else{la=(va=$a[Ba])?va.nextCat:fa[Ba]?fa[Ba][0]:null;Xa=null;if(La>=Db)for(wa=La-Db,Xa=hb[wa];!Xa.labelTextWidth;)if(wa>=Db)wa-=Db,Xa=hb[wa];else{Xa=null;break}Rb=Xa?Xa.rightEdge:c.min*O-Gb;bc=la?la.leftEdge:c.max*O+F;p=K.label;p.style&&p.style!==X&&(X=p.style,Z.setStyle(X));v=Z.getOriSize(p.text).width+4;pb=K.value*O-v/2;if(w.isBar&&La==Mb-1&&Xa)Rb>pb&&(Xa.plotObj.label.text=
+a,Xa.labelTextWidth=0,Rb=Xa.leftEdge);else if(Rb>pb||bc<pb+v){K.label.text=a;vb.labelTextWidth=0;continue}Rb=W(Rb,pb);sb=K.value*O;Va=2*R(sb-Rb,bc-sb);Va.toFixed&&(Va=Va.toFixed(2));p=K.label;p.style&&p.style!==X&&Z.setStyle(p.style);Va<r&&r<Z.getOriSize(p.text).width?(K.label.text=a,vb.labelTextWidth=0):(vb.labelTextWidth=Va,I=Z.getSmartText(p.text,Va-4,e,pa),Va=I.width+4,vb.labelTextWidth=Va,vb.leftEdge=sb-Va/2,vb.rightEdge=sb+Va/2,aa=W(aa,I.height))}Xa=Jb=null;La=0;for(Mb=hb.length;La<Mb;La+=1)if(vb=
+hb[La],K=vb.plotObj,Ba=La%Db,K.isCat&&vb.labelTextWidth){Xa=Jb=null;sb=K.value*O;if(La>=Db)for(wa=La-Db,Xa=hb[wa];!Xa.labelTextWidth;)if(wa>Db)wa-=Db,Xa=hb[wa];else{Xa=null;break}Oa=Xa?sb-Xa.rightEdge:sb-c.min*O+d.chart.marginLeft;if(La+Db<Mb)for(cc=La+Db,Jb=hb[cc];!Jb.labelTextWidth;)if(cc+Db<Mb-1)cc+=Db,Jb=hb[cc];else{Jb=null;break}Cb=Jb?Jb.leftEdge-sb:c.max*O+d.chart.marginRight-sb;Va=2*R(Oa,Cb);Va>da&&(Va=da);Va>vb.oriWidth&&(Va=vb.oriWidth);vb.labelTextWidth=Va;p=K.label;p.style&&p.style!==X&&
+Z.setStyle(p.style);I=Z.getSmartText(p.text,Va-4,e,pa);vb.labelTextWidth=I.width+4;aa=W(aa,I.height);vb.rightEdge=sb+vb.labelTextWidth/2}}else if(u)for(La=0,Mb=hb.length;La<Mb;La+=1)if((K=hb[La].plotObj)&&K.label&&K.label.text){p=K.label;p.style&&p.style!==X&&(X=p.style,Z.setStyle(X));m=1;if(La+m<Mb)for(Sb=hb[m+La].plotObj;Sb&&(Sb.value-K.value)*O<r;)if(K.isCat){if(Sb.label){Sb.label.text=a;m+=1;if(m+La>=Mb-1)break;Sb=zb[m+La].plotObj}}else if(Sb.isCat){K.label.text=a;K=Sb;La+=m-1;p=K.label;p.style&&
+p.style!==X&&(X=p.style,Z.setStyle(X));break}S=W(S,Z.getOriSize(p.text).width+4)}m=0;for(Mb=Zb.length;m<Mb;m+=1)(K=Zb[m].plotObj)&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),I=Z.getOriSize(p.text),p.verticalAlign===ob?T=W(T,I.height):V=W(V,I.height))}else{for(Mb=zb.length;La<Mb;La+=1)(K=zb[La])&&(K.isGrid?hb.push(K):K.isTrend&&Zb.push(K));Qa=c.plotBands;La=0;for(Mb=Qa.length;La<Mb;La+=1)(K=Qa[La])&&Zb.push(K);kc=hb.length-1;mb=hb.length;G&&(Db>mb?
+Db=mb:2>Db&&(Db=2));if(mb)for(c.scroll&&c.scroll.viewPortMin&&c.scroll.viewPortMax?(Ia=c.scroll.viewPortMin,Ca=c.scroll.viewPortMax,qb=jb=!1):(Ia=c.min,Ca=c.max),Ob=(hb[kc].value-hb[0].value)*O,Pb=ec=Ob/(L-1),mc=(hb[0].value-Ia)*O,wb=(Ca-hb[kc].value)*O,"auto"===qa?Pb<za&&(u=Lb?300:270,D=ya,ya=r,r=D,pa=!0):"stagger"===qa&&(Pb*=Db),"line"!==this.defaultSeriesType&&("area"===this.defaultSeriesType?w.drawFullAreaBorder&&(Fb>mc&&(Ia=c.min-=Fb/(2*O),mc+=(hb[0].value-Ia)*O),Fb>wb&&(Ca=c.max+=Fb/(2*O),wb+=
+(Ca-hb[kc].value)*O)):(Fb>mc&&(Ia=c.min-=Fb/(2*O),mc+=(hb[0].value-Ia)*O),Fb>wb&&(Ca=c.max+=Fb/(2*O),wb+=(Ca-hb[kc].value)*O))),r<lb&&(r=lb),ta=G||Ka?W(1,J):W(1,J,ha(r/Pb)),w.x&&(w.x.stepValue=ta),Pb*=ta,H=2*(mc+Gb),(p=zb[0].label)&&p.text&&(p.style&&Z.setStyle(p.style),v=270===u?R(Pb,Z.getOriSize(p.text).height+4):R(Pb,Z.getOriSize(p.text).width+4),v>H&&(Ka||(Xb=(v-H)/2),jb||(jc&&(Xb=0),Pb-=Xb/(L-1),hc=Pb*(L-1),O=Pb,wc=(Ob-hc)/O,Ca=c.max+=wc,Ia=c.min-=wc,Xb=0,Ob=hc,mc=(hb[0].value-Ia)*O,wb=(Ca-hb[kc].value)*
+O))),H=2*(wb+F),(p=zb[kc].label)&&p.text&&(p.style&&Z.setStyle(p.style),v=270===u?R(Pb,Z.getOriSize(p.text).height+4):R(Pb,Z.getOriSize(p.text).width+4),v>H&&(Ka||(Yb=(v-H)/2),qb||(jc&&(Yb=0),Pb-=Yb/(L-1),hc=Pb*(L-1),O=Pb,wc=(Ob-hc)/O,Yb=0,Ob=hc,mc=(hb[0].value-Ia)*O,wb=(Ca-hb[kc].value)*O))),Eb=Xb+Yb,0<Eb&&(fc>Eb?(ra=(ra=Yb*h/(Yb+h))?ra+4:0,d.chart.marginRight+=ra,h-=ra,ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):Xb<Yb?fc>=Yb&&qb?(ra=(ra=Yb*h/(Yb+h))?ra+4:0,d.chart.marginRight+=
+ra,h-=ra,O=h/(c.max-c.min)):jb&&(ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):fc>=Xb&&jb?(ra=(ra=Xb*h/(Xb+h))?ra+4:0,d.chart.marginLeft+=ra,h-=ra,O=h/(c.max-c.min)):qb&&(ra=(ra=Yb*h/(Yb+h))?ra+4:0,d.chart.marginRight+=ra,h-=ra,O=h/(c.max-c.min)),Ob=(hb[kc].value-hb[0].value)*O,Pb=Ob/(L-1),G&&(Pb*=Db),ta=G||Ka?W(1,J):u?W(1,J,ha(ya/Pb)):W(1,J,ha(r/Pb)),w.x&&(w.x.stepValue=ta),Pb*=ta),m=0;m<mb;m+=1){K=hb[m];if(m%ta&&K.label){if(K.stepped=!0,K.label.style=c.steppedLabels.style,
+!ma)continue}else K.stepped=!1;K&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),u&&Ka?(I=Z.getOriSize(p.text),S=W(S,I.width+4),aa=W(aa,I.height)):Ka||(I=u||G?Z.getOriSize(p.text):Z.getSmartText(p.text,Pb-4,e,pa),S=W(S,I.width+4),aa=W(aa,I.height)))}m=0;for(Mb=Zb.length;m<Mb;m+=1)(K=Zb[m])&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),I=Z.getOriSize(p.text),p.verticalAlign===ob?T=W(T,I.height):V=W(V,I.height));
+c.scroll&&c.scroll.enabled&&!u&&!Ka&&(wc=S/2,d.chart.marginLeft<wc&&(dc=wc-d.chart.marginLeft,fc>dc&&(h-=dc,fc-=dc,d.chart.marginLeft+=dc)),d.chart.marginRight<wc&&(dc=wc-d.chart.marginRight,fc>dc&&(h-=dc,fc-=dc,d.chart.marginRight+=dc)))}Ka?($b=ya,u&&($b=S)):$b=u?S:G?Db*aa:aa;0<$b&&($b+ea>M&&($b=M-ea,Db=Math.floor($b/aa)),gc+=ea+$b);0<E&&(gc+=E+vc);Ga=ea-4;ua=V+gc+2;D=0;ua>e&&(kb=ua-e,vc>kb?(vc-=kb,kb=0):(kb-=vc,vc=0,Ga>kb?(Ga-=kb,kb=0):(kb-=Ga,Ga=0),ea=Ga+4),V>kb?(V-=kb,kb=0):(0<V&&(kb-=V,V=0),
+0<kb&&(T>kb?(T-=kb,kb=0):(0<T&&(kb-=T,T=0),0<kb&&((D=E-Ea)>kb?(E-=kb,kb=0):(kb-=D,E=Ea,0<kb&&((D=$b-ya)>kb?($b-=kb,kb=0):(kb-=D,$b=ya,0<kb&&(kb-=E+vc,E=0,0<kb&&(kb-=$b,$b=0,0<kb&&(ea-=kb)))))))))));ea+=yb;pc=w.is3d?-d.chart.xDepth:0;ac=$b+ea;Fc=pc;Qc=.5*ya;A=ya+ea;Mb=hb.length;Aa=0;if(nb)if(u)for(Cc=ia,yc=Lb?ea+8:ea+4,Mb=hb.length,m=0;m<Mb;m+=1)(K=hb[m].plotObj)&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),La=1,I=Z.getSmartText(p.text,$b-4,r,pa),p.text=
+I.text,I.tooltext&&(p.originalText=I.tooltext),Fc=pc+Qc/2,p.y=yc,p.x=Fc,p.rotation=u,p.textAlign=Cc,Aa+=1);else for(Hc=$b,Cc=sa,yc=A,m=0;m<Mb;m+=ta)K=hb[m].plotObj,ya=parseInt(K.label.style.lineHeight,10),K&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),Ka||(I=Z.getSmartText(p.text,hb[m].labelTextWidth-4,Hc,pa),p.text=I.text,I.tooltext&&(p.originalText=I.tooltext),G&&(yc=A+Aa%Db*ya)),p.y=yc,p.x=Fc,p.rotation=u,p.textAlign=Cc,Aa+=1);else{u?(Hc=Pb,Nc=
+$b-4,Cc=ia,yc=Lb?ea+8:ea+4):G?(Nc=Pb-4,Cc=sa):(Hc=$b,Nc=Pb-4,Cc=sa,yc=A);for(m=0;m<Mb;m+=ta)K=hb[m],ya=ha(parseFloat(K.label.style.lineHeight)),Qc=.5*ya,A=ya+ea,K&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),Ka||(G&&(Hc=ya),Bb=Gb+(m-Ia)*ec-d.chart.spacingLeft,Tb=300===u?R(ja(2.999*Bb*Bb+Bb*Bb)-ea,Nc):Nc,I=Z.getSmartText(p.text,Tb,Hc,pa),Hb=W(Hb,u?I.width:I.height),p.text=I.text,I.tooltext&&(p.originalText=I.tooltext),G&&(yc=A+Aa%Db*ya)),u?Fc=pc+.5*
+ya:G||(yc=ya+ea),p.y=yc,p.x=Fc,p.rotation=u,p.textAlign=Cc,Aa+=1);300===u&&($b=Hb,ac=$b+ea);f._labelY=A;f._labelX=pc;f._yShipment=yc;f._isStagger=G;f._rotation=u;f._textAlign=Cc;f._adjustedPx=Qc;f._staggerLines=Db;f._labelHeight=ya;f._canvasWidth=h;f._minCanvasWidth=B;f._availableHeight=e}Mb=Zb.length;for(m=Oc=Ic=0;m<Mb;m+=1)(K=Zb[m].plotObj?Zb[m].plotObj:Zb[m])&&K.label&&void 0!==l(K.label.text)&&(p=K.label,p.style&&p.style!==X&&(X=p.style,Z.setStyle(X)),p.verticalAlign===ob?(I=Z.getSmartText(p.text,
+h,T,!0),Oc=W(Oc,I.height),p.text=I.text,I.tooltext&&(p.originalText=I.tooltext),p.y=ac+Z.getOriSize(p.text).height,p.x=Fc):(I=Z.getSmartText(p.text,h,V,!0),Ic=W(Ic,I.height),p.text=I.text,I.tooltext&&(p.originalText=I.tooltext),p.y=-(V-Z.getOriSize("W").height+ea+2)));0<E&&(Z.setStyle(c.title.style),t=Z.getSmartText(c.title.text,h,E),c.title.text=t.text,t.tooltext&&(c.title.originalText=t.tooltext),c.title.margin=ac+Oc+vc);gc=Oc;0<$b&&(w.horizontalAxisHeight=ea+$b-yb,gc+=w.horizontalAxisHeight);0<
+E&&(gc+=Ja=E+vc);gc=gc||ea-yb;d.chart.marginBottom+=gc;0<Ic&&(d.chart.marginTop+=Ic,gc+=Ic);if(c.opposite)for(c.title.margin-=$b-(t&&t.height||0)+ea,gc-=Ja,d.chart.marginTop+=gc,d.chart.marginBottom-=gc,d.xAxis.opposite=1,Mb=zb.length,La=0;La<Mb;La+=1)(K=zb[La])&&K.isGrid&&(p=K.label)&&void 0!==p.text&&(p.textAlign=bb,p.y-=yc+ea+4);return gc},Gb=q.configureLegendOptions=function(f,d,n,g,h){g=f.legend;var e=f.chart,B=e.is3D?X.chart3D:X.chart2D,w=e.useRoundEdges,k=b(d.legendiconscale,1),K=(parseInt(g.itemStyle.fontSize,
+10)||10)+1,I=this.colorManager,m;if(0>=k||5<k)k=1;g.padding=4;0>=K&&(K=1);m=3*k;K=R(K*k,h-8);0>=K&&(m=K=0);g.symbolWidth=K;g.symbolPadding=m;g.textPadding=4;g.legendHeight=h=K+2*m;g.rowHeight=W(parseInt(g.itemStyle.lineHeight,10)||12,h);n?(g.align=ia,g.verticalAlign="middle",g.layout="vertical"):g.x=(e.marginLeft-e.spacingLeft-e.marginRight+e.spacingRight)/2;n=c(d.legendbordercolor,I.getColor(B.legendBorderColor));h=b(d.legendborderalpha,100);e=b(d.legendbgalpha,100);g.backgroundColor=Y(c(d.legendbgcolor,
+I.getColor(B.legendBgColor)),e);g.borderColor=Y(n,h);g.borderWidth=b(d.legendborderthickness,!w||d.legendbordercolor?1:0);g.shadow=Boolean(b(d.legendshadow,1));g.symbol3DLighting=Boolean(b(d.use3dlighting,d.useplotgradientcolor,1));g.shadow&&(g.shadow={enabled:g.shadow,opacity:W(h,e)/100});g.reversed=Boolean(b(d.reverselegend,0)-b(this.reverseLegend,0));g.style={padding:4};Boolean(b(d.interactivelegend,1))?g.symbolStyle={_cursor:"hand",cursor:"pointer"}:(f.legend.interactiveLegend=!1,g.itemStyle.cursor=
+"default",g.itemHoverStyle={cursor:"inherit"});g.borderRadius=b(d.legendborderradius,w?3:0);g.legendAllowDrag=Boolean(b(d.legendallowdrag,0));g.title.text=p(r(d.legendcaption,a));g.legendScrollBgColor=na(c(d.legendscrollbgcolor,d.scrollcolor,I.getColor("altHGridColor")));g.legendScrollBarColor=c(d.legendscrollbarcolor,n);g.legendScrollBtnColor=c(d.legendscrollbtncolor,n)},Ja=q.placeLegendBlockRight=function(c,f,d,n,h){this.configureLegendOptions(c,f.chart,!0,h,d);var e=this.snapLiterals||(this.snapLiterals=
+{}),B=0,w=c.series,k,K=c[g],I=this.smartLabel||K.smartLabel,m=c.chart.spacingRight,l=c.legend,p,t=l.textPadding,X=l.title.padding,r=l.symbolWidth,D=l.symbolPadding,q=r+2*D,H=2*n,v=0,u=b(f.chart.legendpadding,7);f=u+l.borderWidth/2+b(f.chart.canvasborderthickness,1);var za=2*l.padding,ya=za,E=!1,ta=[];d-=za+u;h&&(w=w&&w[0]&&w[0].data);if(typeof w===fb||typeof w.length===fb)return 0;h=w.length;for(B=0;B<h;B+=1)(k=w[B])&&!1!==k.showInLegend&&(k.__i=B,ta.push(k));ta.sort(function(a,b){return a.legendIndex-
+b.legendIndex||a.__i-b.__i});h=ta.length;p=d-q-u-t;0>p&&(p=0);I.setStyle(l.itemStyle);l.reversed&&ta.reverse();for(B=0;B<h;B+=1)k=ta[B],E=!0,k._legendX=0,k._legendY=ya,0===p?(ya+=k._legendH=q,k.name=a,k._totalWidth=r+D):(w=I.getSmartText(k.name,p,H),k.name=w.text,w.tooltext&&(k.originalText=w.tooltext),w.height<q&&(k._legendTestY=(q-w.height)/2),k._totalWidth=r+D+t+w.width+u,ya+=k._legendH=W(w.height,q),v=W(w.width,v));if(E)return l.itemWidth=v+q+u+t,l.width=l.itemWidth+za,l.title.text!==a&&(I.setStyle(l.title.style),
+w=I.getSmartText(l.title.text,d,H),l.title.text=w.text,w.tooltext&&(l.title.originalText=w.tooltext),B=w.width+za,l.width<B&&(l.initialItemX=(B-l.width)/2,l.width=B),l.initialItemY=w.height+X,ya+=l.initialItemY),l.height=l.totalHeight=ya,l.height>n&&(l.height=n,l.scroll.enabled=!0,l.scroll.flatScrollBars=K.flatScrollBars,l.scroll.scrollBar3DLighting=K.scrollBar3DLighting,l.width+=(l.scroll.scrollBarWidth=10)+(l.scroll.scrollBarPadding=2)),e.legendstartx=K.width-m-l.width,e.legendwidth=l.width,e.legendendx=
+e.legendstartx+e.legendwidth,e.legendheight=l.height,f=R(l.width+f,d),c.chart.marginRight+=f+u,f;l.enabled=!1;return 0},Ka=q.placeLegendBlockBottom=function(c,f,d,n,h){this.configureLegendOptions(c,f.chart,!1,h,d);var e=this.snapLiterals||(this.snapLiterals={}),B=0,w=c.series,k,K=c[g],I=K.smartLabel||this.smartLabel,l=c.chart,m=l.spacingBottom,t=l.spacingLeft,X=l.spacingRight,B=l.spacingTop,l=c.legend,r,D=l.textPadding;k=l.title.padding;var q,H=l.symbolWidth,v=l.symbolPadding,u=l.legendHeight,za=
+f.chart;q=0;var ya=2*n,E=l.rowHeight,ta=.05*E,A=[];r=b(za.minimisewrappinginlegend,0);var Ea=b(parseInt(za.legendnumcolumns,10),0),Aa=0,G=0,pa=0,Ja=0,Ka=0,J=0,lb=0,M=l.padding,qa=2*M,M=D+v+M;f=b(f.chart.legendpadding,7)+l.borderWidth/2+1;var ea=qa,Z=!1,xa,yb=[],Gb=!1,O=0,F=0,Fb,za=b(parseInt(za.alignlegendwithcanvas,10),1),L=d;Fb=c.yAxis&&c.yAxis[0].title;var Lb=c.yAxis&&c.yAxis[1].title,Ja=this.origRenderWidth,T;if(c.chart.isBar)T=c.xAxis.title._actualHeight,xa=c.xAxis.title._actualWidth;else if(Fb||
+Lb)T=b(Fb._actualHeight,0)>b(Lb._actualHeight,0)?(xa=Fb._actualWidth)&&Fb._actualHeight:(xa=Lb._actualWidth)&&Lb._actualHeight;0>Ea&&(Ea=0);d-=qa;I.setStyle(l.itemStyle);Fb=I.getOriSize(Qb).height;f=R(f,n-Fb-8);d=za?d:Ja-(T+B>this.origRenderHeight-n?2*xa+X+t:X+t);d<.3*Ja&&(d=.3*Ja);h&&(w=w&&w[0]&&w[0].data);if(typeof w===fb||typeof w.length===fb)return 0;h=w.length;for(B=0;B<h;B+=1)(xa=w[B])&&!1!==xa.showInLegend&&(xa.__i=B,yb.push(xa));yb.sort(function(a,b){return a.legendIndex-b.legendIndex||a.__i-
+b.__i});h=yb.length;I.setStyle(l.itemStyle);for(B=0;B<h;B+=1)Z=!0,yb[B].name=p(yb[B].name),w=I.getOriSize(yb[B].name),Aa=W(Aa,w.width),J=W(J,R(w.height,ya)),G+=w.width,pa+=1;Ja=G/pa;u=u+ta+D+v+qa;G+=u*pa;l.x=!za&&G>L?0:l.x;if(Z){Ja+=u;Aa+=u;0<Ea&&pa<Ea&&(Ea=pa);G<=d&&(0>=Ea||Ea===pa)?(Ea=pa,Ka=Ja=G/pa,Gb=!0,J>E&&(lb=(J-E)/2,E=J)):0<Ea&&(Ka=d/Ea)>Ja?Ka>Aa&&(Ka=Aa):d>Aa&&(r||1.5*Ja>Aa)?(Ea=ka(d/Aa),pa<Ea&&(Ea=pa),Ka=Aa):d>=2*Ja?(Ea=ka(d/Ja),pa<Ea&&(Ea=pa),Ka=ka(d/Ea),Ka>Aa&&(Ka=Aa)):(Ea=1,Ka=d);l.itemWidth=
+Ka;r=ha(Ka-u);0>r&&(v=r=D=0);l.symbolPadding=v;l.textPadding=D;l.width=Ka*Ea-ta;l.title.text!==a&&(I.setStyle(l.title.style),w=I.getSmartText(l.title.text,d,ya),l.title.text=w.text,w.tooltext&&(l.title.originalText=w.tooltext),q=w.width+qa,l.width<q&&(l.initialItemX=(q-l.width)/2,l.width=q),l.initialItemY=q=w.height+k);I.setStyle(l.itemStyle);l.reversed&&yb.reverse();for(B=0;B<h;B+=1){k=yb[B];0===r&&(A[O]=!0,k.name=a,D=1,ta=parseInt(O/Ea,10),Aa=O%Ea,k._legendX=Aa*Ka,k._legendY=ta*E+qa,k._legendH=
+D*E,k._totalWidth=H+v);if(Gb)w=I.getOriSize(k.name),w.height<E&&(k._legendTestY=(E-w.height)/2),k._markerYGutter=lb,k._legendX=F,k._legendY=qa,k._legendH=E,k._totalWidth=H+M+w.width,F+=w.width+u;else{w=I.getSmartText(k.name,r,ya);k.name=w.text;for(w.tooltext&&(k.originalText=w.tooltext);!0===A[O];)O+=1;ta=w.height/E;Aa=O;for(D=0;D<ta;D+=1,Aa+=Ea)A[Aa]=!0;w.height<E&&(k._legendTestY=(E-w.height)/2);ta=parseInt(O/Ea,10);Aa=O%Ea;k._legendX=Aa*Ka;k._legendY=ta*E+qa;k._legendH=D*E;k._totalWidth=H+M+w.width}O+=
+1}I=Gb?1:ha(A.length/Ea);l.height=l.totalHeight=ea+(I*E+q);l.rowHeight=E;l.legendNumColumns=Ea;l.height>n&&(l.height=n,l.scroll.enabled=!0,l.scroll.flatScrollBars=K.flatScrollBars,l.scroll.scrollBar3DLighting=K.scrollBar3DLighting,l.width=l.width+12>d?l.width:l.width+12);e.legendstartx=t+.5*(K.width-t-X-l.width)+(l.x||0);e.legendwidth=l.width;e.legendendx=e.legendstartx+e.legendwidth;e.legendstarty=K.height-m-l.height;e.legendheight=l.height;e.legendendy=e.legendstarty+e.legendheight;f+=l.height;
+c.chart.marginBottom+=f;return f}l.enabled=!1;return 0},Lb=function(a,b){return a.value-b.value},Fb=function(a,b,c){var f=b._originalText;a=a[g].smartLabel;b.text=b.rotation?a.getSmartText(f,c,b._actualWidth).text:a.getSmartText(f,b._actualWidth,c).text;b.centerYAxisName=!0},pa=q.adjustVerticalAxisTitle=function(a,b,c){if(b&&b.text){var f=b.text,d=a[g].smartLabel,n=2*R(a.chart.marginTop,a.chart.marginBottom)+c,e=c+a.chart.marginTop+a.chart.marginBottom;b.style&&d.setStyle(b.style);f=d.getOriSize(f);
+void 0===b.centerYAxisName&&(b.centerYAxisName=!0);b.rotation?f.width>n&&(b.y=e/2-(c/2+a.chart.marginTop),b.centerYAxisName=!1):f.height>n&&(b.y=(e/2-(c/2+a.chart.marginTop))/2,b.centerYAxisName=!1)}},ea=q.adjustVerticalCanvasMargin=function(a,c,f,d){var h=c.chart,n=c=0,g=0,e=b(h.canvastopmargin,0),h=b(h.canvasbottommargin,0),B=e/(e+h),w=a.chart.marginTop,k=a.chart.marginBottom;h>k&&(c+=h-k);e>w&&(c+=e-w);c>f?e>w&&h>k?(n=f*B,g=f*(1-B)):e>w?n=f:g=f:0<c&&(h>k&&(g=h-k),e>w&&(n=e-w));n&&(a.chart.marginTop+=
+n);g&&(a.chart.marginBottom+=g,d&&d.title&&(d.title.margin+=g));return n+g},M=q.adjustHorizontalCanvasMargin=function(a,c,f,d,h){var n=c.chart;c=b(n.canvasleftmargin,0);var n=b(n.canvasrightmargin,0),g=c/(c+n),e=0,B=a.chart.marginLeft,w=a.chart.marginRight,k=0,K=0;c>B&&(e+=c-B);n>w&&(e+=n-w);e>f?c>B&&n>w?(k=f*g,K=f*(1-g)):n>w?K=f:k=f:0<e&&(c>B&&(k=c-B),n>w&&(K=n-w));k&&(a.chart.marginLeft+=k,d&&d.title&&(d.title.margin+=k));K&&(a.chart.marginRight+=K,h&&h.title&&(h.title.margin+=K));return K+k},xa=
+function(a,b){return a-b},Z=q.getDataParser={column:function(a,f,d){var n=a[g],h=f.borderWidth;return function(g,e,B){var w=f.plotgradientcolor,k=f.is3d,K=f.isRoundEdges,l=f.plotBorderColor,I=c(g.color,f.color),p=c(g.ratio,f.ratio),t=Ia(f.plotBorderAlpha),X=b(g.dashed,f.dashed),r=c(g.dashlen,f.dashLen),D=c(g.dashgap,f.dashGap),q=f.use3DLighting,H=Ia(c(g.alpha,f.alpha)).toString(),v={opacity:H/100},u=f.isBar,za=f.fillAangle,ya=0>B?u?180-za:360-za:za,za=da(I+Ga+w,H,p,ya,K,l,c(g.alpha,t).toString(),
+u,k),E=X?m(r,D,h):"none";e=d.getPointStub(g,B,n.oriCatTmp[e],a,f,f.showValues,f.yAxis);g=d.pointHoverOptions(g,f,{plotType:"column",is3d:k,isBar:u,use3DLighting:q,isRoundEdged:K,color:I,gradientColor:w,alpha:H,ratio:p,angle:ya,borderWidth:h,borderColor:l,borderAlpha:t,borderDashed:X,borderDashGap:D,borderDashLen:r,shadow:v});e.y=B;e.isRoundEdges=K;e.shadow=v;e.color=za[0];e.borderColor=za[1];e.borderWidth=h;e.use3DLighting=q;e.dashStyle=E;e.tooltipConstraint=d.tooltipConstraint;e.hoverEffects=g.enabled&&
+g.options;e.rolloverProperties=g.enabled&&g.rolloverOptions;return e}},line:function(a,f,d){var n=a[g];return function(h,g,e){var B=b(h.alpha,f.lineAlpha),w={opacity:B/100},k=b(h.anchorsides,f.anchorSides,0),K=b(h.anchorborderthickness,f.anchorBorderThickness,1),l=na(c(h.anchorbordercolor,f.anchorBorderColor)),I=na(c(h.anchorbgcolor,f.anchorBgColor)),p=b(h.anchorstartangle,f.anchorStartAngle,90),t=c(h.anchoralpha,f.anchorAlpha),X=c(h.anchorbgalpha,t),r=b(h.anchorradius,f.anchorRadius),D=Boolean(b(h.anchorshadow,
+f.anchorShadow,0));g=d.getPointStub(h,e,n.oriCatTmp[g],a,f,f.showValues,f.yAxis);var q=c(h.anchorimageurl,f.imageUrl),H=c(h.anchorimagescale,f.imageScale),v=c(h.anchorimagealpha,f.imageAlpha),u=b(h.anchorimagepadding,f.imagePadding,1),za=b(h.anchorradius,f.isAnchorRadius),ya=b(h.hoverradius,h.anchorhoverradius,f.isAnchorHoverRadius);g.y=e;g.shadow=w;g.anchorShadow=f.anchorShadow;g.dashStyle=b(h.dashed,f.lineDashed)?m(f.lineDashLen,f.lineDashGap,f.lineThickness):"none";g.color={FCcolor:{color:na(c(h.color,
+f.lineColor)),alpha:B}};g.valuePosition=c(h.valueposition,f.valuePosition);e=d.pointHoverOptions(h,f,{plotType:"anchor",anchorBgColor:I,anchorAlpha:t,anchorBgAlpha:X,anchorAngle:p,anchorBorderThickness:K,anchorBorderColor:l,anchorBorderAlpha:t,anchorSides:k,anchorRadius:r,imageUrl:q,imageScale:H,imageAlpha:v,imagePadding:u,shadow:w});g.marker={enabled:void 0===f.drawAnchors?0!==B:!!f.drawAnchors,shadow:D&&{opacity:t/100},fillColor:{FCcolor:{color:na(c(h.anchorbgcolor,f.anchorBgColor)),alpha:(c(h.anchorbgalpha,
+f.anchorBgAlpha)*t/100).toString()}},lineColor:{FCcolor:{color:na(c(h.anchorbordercolor,f.anchorBorderColor)),alpha:t}},imageUrl:q,imageScale:H,imageAlpha:v,imagePadding:u,isAnchorRadius:za,isAnchorHoverRadius:ya,lineWidth:b(h.anchorborderthickness,f.anchorBorderThickness),radius:b(h.anchorradius,f.anchorRadius),symbol:pb(b(h.anchorsides,f.anchorSides)),startAngle:c(h.anchorstartangle,f.anchorAngle)};g.hoverEffects=e.enabled&&e.options;g.rolloverProperties=e.enabled&&e.rolloverOptions;return g}},
+area:function(a,f,d){var n=a[g];return function(h,g,e){var B=c(h.alpha,f.fillAlpha),w={opacity:W(B,f.lineAlpha)/100,inverted:!0},k=b(h.anchorsides,f.anchorSides,0),K=b(h.anchorborderthickness,f.anchorBorderThickness,1),l=na(c(h.anchorbordercolor,f.anchorBorderColor)),I=na(c(h.anchorbgcolor,f.anchorBgColor)),m=b(h.anchorstartangle,f.anchorStartAngle,90),t=c(h.anchoralpha,f.anchorAlpha),p=c(h.anchorbgalpha,t),X=b(h.anchorradius,f.anchorRadius),r=Boolean(b(h.anchorshadow,f.anchorShadow,0));g=d.getPointStub(h,
+e,n.oriCatTmp[g],a,f,f.showValues,f.yAxis);var D=c(h.anchorimageurl,f.imageUrl),q=c(h.anchorimagescale,f.imageScale),H=c(h.anchorimagealpha,f.imageAlpha),v=c(h.anchorimagepadding,f.imagePadding),u=b(h.anchorradius,f.isAnchorRadius),za=b(h.hoverradius,h.anchorhoverradius,f.isAnchorHoverRadius);g.y=e;g.shadow=w;g.anchorShadow=f.anchorShadow;g.color={FCcolor:{color:na(c(h.color,f.fillColor)),alpha:B}};g.valuePosition=c(h.valueposition,f.valuePosition);e=d.pointHoverOptions(h,f,{plotType:"anchor",anchorBgColor:I,
+anchorAlpha:t,anchorBgAlpha:p,anchorAngle:m,anchorBorderThickness:K,anchorBorderColor:l,anchorBorderAlpha:t,anchorSides:k,anchorRadius:X,imageUrl:D,imageScale:q,imageAlpha:H,imagePadding:v,shadow:w});g.marker={enabled:f.drawAnchors,shadow:r&&{opacity:t/100},fillColor:{FCcolor:{color:na(c(h.anchorbgcolor,f.anchorBgColor)),alpha:(c(h.anchorbgalpha,f.anchorBgAlpha)*t/100).toString()}},lineColor:{FCcolor:{color:na(c(h.anchorbordercolor,f.anchorBorderColor)),alpha:t}},imageUrl:D,imageScale:q,imageAlpha:H,
+imagePadding:v,isAnchorRadius:u,isAnchorHoverRadius:za,lineWidth:b(h.anchorborderthickness,f.anchorBorderThickness),radius:X,symbol:pb(b(h.anchorsides,f.anchorSides)),startAngle:c(h.anchorstartangle,f.anchorAngle)};g.hoverEffects=e.enabled&&e.options;g.rolloverProperties=e.enabled&&e.rolloverOptions;g.events={click:f.getLink};return g}}};e.core.options.resizeTrackingInterval=300;e.core.options.preventTrackResize=!1;e.core.options.SVGDefinitionURL="relative";q.createChart=function(a,f,n,g,h,B,w){var k=
+a.jsVars,K,l,I=la[n||(n=a.chartType())],m,t=k.hasNativeMessage,p=a.options,X=a.args,r;r=function(b){var c={renderer:"javascript"},h=k.fcObj,B=h.width,K=h.height,l=I&&I.eiMethods,p=k.overlayButton,X;f.jsVars=a.jsVars;k.container=f;k.hcObj=b;k.type=n;k.width=f.offsetWidth;k.height=f.offsetHeight;k.instanceAPI=m;if(b.hasRendered){e.extend(f,Aa);if(l&&"string"!==typeof l)for(X in l)f[X]=l[X];k.overlayButtonActive&&p&&(p.innerHTML="",p.appendChild(d.createTextNode(k.overlayButtonMessage)),b.container.appendChild(p))}(/\%/g.test(B)||
+/\%/g.test(K))&&f&&f.parentNode&&!e.core.options.preventTrackResize&&ta(h,f);if(g&&(g({success:b.hasRendered,ref:f,id:a.id}),b.hasRendered)){q.raiseEvent("loaded",{type:n,renderer:"javascript"},a,[a.id]);if(!0===a.disposed)return;t||(h.__state.firstRenderNotified=!0,setTimeout(function(){q.raiseEvent("rendered",{renderer:"javascript"},h,[h.id])},0))}b.hasRendered&&k.previousDrawCount<k.drawCount&&(c.width=k.width,c.height=k.height,c.drawCount=k.drawCount,c.displayingMessage=t,c.renderer=h.options.renderer,
+q.raiseEvent("drawcomplete",c,h,[h.id]),t||w||setTimeout(function(){h.__state&&!h.__state.firstRenderNotified&&q.raiseEvent("rendered",{renderer:"javascript"},h,[h.id]);e.raiseEvent("renderComplete",c,h)},0))};k.instanceAPI&&k.instanceAPI.dispose&&k.instanceAPI.dispose();m=I?new la(n):new la("stub");m.chartInstance=a;m.origRenderWidth=a.__state.renderedWidth;m.origRenderHeight=a.__state.renderedHeight;if(void 0!==h)"string"===typeof h&&(h=new Qa(f,h,a),t=k.hasNativeMessage=!0);else if(!I||!I.init||
+I&&"stub"===I.name)a._chartMessageImageStyle={imageHAlign:c(X.typeNotSupportedMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(X.typeNotSupportedMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.typeNotSupportedMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(X.typeNotSupportedMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={color:X.typeNotSupportedMessageColor||p.baseChartMessageColor,fontFamily:X.typeNotSupportedMessageFont||
+p.baseChartMessageFont,fontSize:X.typeNotSupportedMessageFontSize||p.baseChartMessageFontSize},h=new Qa(f,p.typeNotSupportedMessage,a),t=k.hasNativeMessage=!0;else if(k.message)h=new Qa(f,k.message,a),t=k.hasNativeMessage=!0;else if(k.loadError)a._chartMessageImageStyle={imageHAlign:c(X.dataLoadErrorMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(X.dataLoadErrorMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.dataLoadErrorMessageImageAlpha,
+p.baseChartMessageImageAlpha),imageScale:b(X.dataLoadErrorMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={color:X.dataLoadErrorMessageColor||p.baseChartMessageColor,fontFamily:X.dataLoadErrorMessageFont||p.baseChartMessageFont,fontSize:X.dataLoadErrorMessageFontSize||p.baseChartMessageFontSize},h=new Qa(f,p.dataLoadErrorMessage,a),t=k.hasNativeMessage=!0;else if(k.stallLoad)a._chartMessageImageStyle={imageHAlign:c(X.dataLoadStartMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),
+imageVAlign:c(X.dataLoadStartMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.dataLoadStartMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(X.dataLoadStartMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:X.dataLoadStartMessageFont||p.baseChartMessageFont,fontSize:X.dataLoadStartMessageFontSize||p.baseChartMessageFontSize,color:X.dataLoadStartMessageColor||p.baseChartMessageColor},h=new Qa(f,p.dataLoadStartMessage,a),t=k.hasNativeMessage=
+!0;else if("zoomscatter"!==n||d.createElement("canvas").getContext)if(e.raiseEvent("internal.drawStart",{chartType:n,logicName:m.name,logicBase:m.base&&m.base.name,defaultSeriesType:m.defaultSeriesType},a),K=a.jsVars&&a.jsVars.themeObject&&a.jsVars.themeObject.getThemedJSONData()||a.getChartData(e.dataFormats.JSON,!0),l=K.data,K.error instanceof Error)a._chartMessageImageStyle={imageHAlign:c(X.dataInvalidMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(X.dataInvalidMessageImageVAlign,
+p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.dataInvalidMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(X.dataInvalidMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:X.dataInvalidMessageFont||p.baseChartMessageFont,fontSize:X.dataInvalidMessageFontSize||p.baseChartMessageFontSize,color:X.dataInvalidMessageColor||p.baseChartMessageColor},h=new Qa(f,p.dataInvalidMessage,a),t=k.hasNativeMessage=!0,a.__state.dataReady=!1,w||e.raiseEvent("dataInvalid",
+{error:K.error},k.fcObj,void 0,function(){q.raiseEvent("dataxmlinvalid",{},a,[a.id])});else{w||q.raiseEvent("dataloaded",{},a,[a.id]);if(!0===m.chartInstance.disposed)return;h=m.init(f,l,a,r);m.inited=!0;k.previousDrawCount=k.drawCount;k.drawCount+=1;0===h.series.length?(a._chartMessageImageStyle={imageHAlign:c(X.dataEmptyMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(X.dataEmptyMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.dataEmptyMessageImageAlpha,
+p.baseChartMessageImageAlpha),imageScale:b(X.dataEmptyMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={fontFamily:X.dataEmptyMessageFont||p.baseChartMessageFont,fontSize:X.dataEmptyMessageFontSize||p.baseChartMessageFontSize,color:X.dataEmptyMessageColor||p.baseChartMessageColor},h=new Qa(f,p.dataEmptyMessage,a),t=k.hasNativeMessage=!0,a.__state.dataReady=!1,w||q.raiseEvent("nodatatodisplay",{},a,[a.id])):(a.__state.dataReady=!0,t=k.hasNativeMessage=!1,delete k.message)}else a._chartMessageImageStyle=
+{imageHAlign:c(X.browserNotSupportedMessageImageHAlign,p.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(X.browserNotSupportedMessageImageVAlign,p.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(X.browserNotSupportedMessageImageAlpha,p.baseChartMessageImageAlpha),imageScale:b(X.browserNotSupportedMessageImageScale,p.baseChartMessageImageScale)},a._chartMessageStyle={color:X.browserNotSupportedMessageColor||p.baseChartMessageColor,fontFamily:X.browserNotSupportedMessageFont||p.baseChartMessageFont,
+fontSize:X.browserNotSupportedMessageFontSize||p.baseChartMessageFontSize},h=new Qa(f,c(X.browserNotSupportedMessage,p.browserNotSupportedMessage),a),t=k.hasNativeMessage=!0;h||(a._chartMessageImageStyle={imageHAlign:p.baseChartMessageImageHAlign,imageVAlign:p.baseChartMessageImageVAlign,imageAlpha:p.baseChartMessageImageAlpha,imageScale:p.baseChartMessageImageScale},a._chartMessageStyle={fontFamily:p.baseChartMessageFont,fontSize:p.baseChartMessageFontSize,color:p.baseChartMessageColor},h=new Qa(f,
+"Error rendering chart {0x01}",a),t=k.hasNativeMessage=!0);t&&!m.inited&&m.init(f,l,a,r);h.chart=h.chart||{};h.credits=h.credits||{};h.credits.enabled=I&&!0===I.creditLabel?!0:!1;!1===B&&(h.chart.animation=!1,h.plotOptions||(h.plotOptions={}),h.plotOptions.series||(h.plotOptions.series={}),h.plotOptions.series.animation=!1);f.style&&(h.chart.containerBackgroundColor=q.getContainerBackgroundColor(a));return m.draw(h,r)};la("base",{useScaleRecursively:!0,tooltipConstraint:"chart",rendererId:"root",
+canvasPaddingModifiers:["anchor","anchorlabel"],drawAnnotations:!0,draw:function(a,b){var c=this.renderer;c||(c=this.renderer=new la("renderer."+this.rendererId));this.updateDefaultAnnotations();return c.init(this,a,b)},init:function(f,d,n){var g=this.chartInstance||n,h=g.jsVars;n=h._reflowData||(h._reflowData={});var B=h._reflowClean,w=g.options,K=w.args,l,I;/^\s*absolute\s*$/i.test(e.core.options.SVGDefinitionURL)&&(F._url=(F._g&&F._g.win||u).location.href.replace(/#.*?$/,a));this.dataObj=d=k({},
+d);I=d.chart=d.chart||d.graph||d.map||{};delete d.graph;delete d.map;n&&!this.stateless&&(l=n.hcJSON,delete n.hcJSON,k(this,n,!0),this.preReflowAdjustments&&this.preReflowAdjustments.call(this),n.hcJSON=l);this.containerElement=f;this.config={};this.smartLabel=h.smartLabel;this.smartLabel.useEllipsesOnOverflow(b(I.useellipseswhenoverflow,I.useellipsewhenoverflow,1));this.colorManager=new q.colorManager(d,this);this.linkClickFN=Tb(d,g);this.numberFormatter=new Ab(d.chart,this);if(!this.standaloneInit)return g._chartMessageImageStyle=
+{imageHAlign:c(K.typeNotSupportedMessageImageHAlign,w.baseChartMessageImageHAlign).toLowerCase(),imageVAlign:c(K.typeNotSupportedMessageImageVAlign,w.baseChartMessageImageVAlign).toLowerCase(),imageAlpha:b(K.typeNotSupportedMessageImageAlpha,w.baseChartMessageImageAlpha),imageScale:b(K.typeNotSupportedMessageImageScale,w.baseChartMessageImageScale)},g._chartMessageStyle={fontFamily:K.typeNotSupportedMessageFont||w.baseChartMessageFont,fontSize:K.typeNotSupportedMessageFontSize||w.baseChartMessageFontSize,
+color:K.typeNotSupportedMessageColor||w.baseChartMessageColor},new q.createDialog(f,w.typeNotSupportedMessage,g);f=this.chart(f.offsetWidth||parseFloat(f.style.width),f.offsetHeight||parseFloat(f.style.height),g);n&&!this.stateless&&(n.hcJSON&&k(f,n.hcJSON,!0),this.postReflowAdjustments&&this.postReflowAdjustments.call(this),B&&this.cleanedData&&(this.cleanedData(this,B),this.cleanedData(n,B)));return f},postSpaceManager:function(){var a=this.hcJSON,c=a._FCconf,f=a.chart,d=f.marginLeft,h=f.spacingLeft,
+n=f.spacingRight,g=c.width-d-f.marginRight,e=a.title,a=a.subtitle,B=c.width,w=e.align,c=e.x,k=e.horizontalPadding,K=e.alignWithCanvas,l=(ma(d)||0)+b(g,B)/2,d=this.snapLiterals||(this.snapLiterals={}),g=e._captionWidth,I=a._subCaptionWidth,m=e._lineHeight,p=a._lineHeight,t=e.text;if(void 0===c){switch(w){case ia:c=K?B-f.marginRight-k:B-k;break;case bb:c=K?f.marginLeft+k:k;break;default:c=K?l:h+.5*(B-h-n)||B/2}e.align===bb?(n=h=0,e.align="start"):e.align===ia?(h=g,n=I,e.align="end"):(h=g/2,n=I/2,e.align=
+"middle");e.x=c;e.y=e.y||f.spacingTop||0;a.y=t?e.y+m+2:e.y||f.spacingTop||0;d.captionstartx=c-h-2;d.captionwidth=g+4;d.captionendx=d.captionstartx+d.captionwidth;d.captionstarty=e.y||0;d.captionheight=m+2;d.captionendy=d.captionstarty+d.captionheight;d.subcaptionstartx=c-n-2;d.subcaptionwidth=I+4;d.subcaptionendx=d.subcaptionstartx+d.subcaptionwidth;d.subcaptionstarty=a.y||0;d.subcaptionheight=p+2;d.subcaptionendy=d.subcaptionstarty+d.subcaptionheight}},chart:function(d,B){var w=this.name,N=this.dataObj,
+h=N.chart,K=this.colorManager,I,t,q,v,ya,E,ta,Ea=this.defaultSeriesType,Q,Aa,pa,Ka,Ja,G,J,lb,M,qa,ea,R,xa,Z,yb,Gb,F,Fb,L,Lb,T,V,S,ha,aa,ba,ma,fa,ga,da,ka,ja,Da,xb,la,Oa,Ia,ua,zb,pb,qb,tc,Ya,Ib,Bc,db,Za,Wa,wb,Ra,Nb,Kb,sb,ub,ra,vb,fb,$a,Xa,Qa,Wb,Jb,Rb,bc,Va,cc,sc,kb,Sb,Bb,Hb,nb,Ab,Qb,Tb,fc,La,ac,Ac,hb,Zb,Ob,Xb,Yb,kc,Kc,Pb,mc,Ec,Xc,Mb,vc,$b,Db,gc,Lc,Pc,Uc,wc,dc,hc,nc,Mc;I=za(N,d,B,this);M=I.chart;lb=I.xAxis;Q=I[g];this.snapLiterals||(this.snapLiterals={});ea=this.snapLiterals;ea.chartstartx=0;ea.chartstarty=
+0;ea.chartwidth=d;ea.chartheight=B;ea.chartendx=d;ea.chartendy=B;ea.chartcenterx=d/2;ea.chartcentery=B/2;ea.chartbottommargin=M.spacingBottom;ea.chartleftmargin=M.spacingLeft;ea.chartrightmargin=M.spacingRight;ea.charttopmargin=M.spacingTop;this.updateSnapPoints&&this.updateSnapPoints();this.postHCJSONCreation&&this.postHCJSONCreation.call(this,I);e.raiseEvent("internal.postlogic",this,this.chartInstance);I.labels.smartLabel=E=Q.smartLabel=this.smartLabel;Q.width=d;Q.height=B;pa=I.plotOptions;Q.isDual=
+this.isDual;Q.numberFormatter=this.numberFormatter;Q.axisGridManager=new pc(Ea,h);Q.tooltext=h.plottooltext;Q.trendLineToolText=h.trendlinetooltext;M.is3D=t=Q.is3d=/3d$/.test(Ea);M.isBar=Aa=Q.isBar=this.isBar;ta=/^pie/.test(Ea);J=1==h.useroundedges;G=t?X.chart3D:X.chart2D;M.events.click=I.plotOptions.series.point.events.click=this.linkClickFN;M.defaultSeriesType=Ea;Gb=0<h.palette&&6>h.palette?h.palette:b(this.paletteIndex,1);--Gb;M.paletteIndex=Gb;M.usePerPointLabelColor=h.colorlabelsfromplot==mb;
+M.syncLabelWithAnchor=b(h.synclabelwithanchoronhover,1);M.minimizeTendency=b(h.minimizetendency,h.minimisetendency,0);M.useRoundEdges=J&&!t&&!this.distributedColumns&&"pie"!==this.defaultSeriesType;void 0!==c(h.clickurl)&&(M.link=h.clickurl,M.style.cursor="pointer",I.plotOptions.series.point.events.click=function(){M.events.click.call({link:h.clickurl})});F=c(h.basefont,"Verdana,sans");Fb=ca(h.basefontsize,10);L=c(h.basefontcolor,K.getColor(G.baseFontColor));Lb=c(h.outcnvbasefont,F);T=ca(h.outcnvbasefontsize,
+Fb);V=T+oa;S=c(h.outcnvbasefontcolor,L).replace(/^#?([a-f0-9]+)/ig,"#$1");ba=Fb;Fb+=oa;L=L.replace(/^#?([a-f0-9]+)/ig,"#$1");Mc=(Mc=r(h.trendvaluebordercolor,a))?Y(Mc,b(h.trendvalueborderalpha,h.trendvaluealpha,100)):a;Q.trendStyle=Q.outCanvasStyle={fontFamily:c(h.trendvaluefont,Lb),color:c(h.trendvaluefontcolor,S),fontSize:ca(h.trendvaluefontsize,T)+oa,fontWeight:b(h.trendvaluefontbold)?"bold":"normal",fontStyle:b(h.trendvaluefontitalic)?"italic":"normal",border:Mc||h.trendvaluebgcolor?b(h.trendvalueborderthickness,
+1)+"px solid":"",borderColor:Mc,borderThickness:b(h.trendvalueborderthickness,1),borderPadding:b(h.trendvalueborderpadding,2),borderRadius:b(h.trendvalueborderradius,0),backgroundColor:h.trendvaluebgcolor?Y(h.trendvaluebgcolor,b(h.trendvaluebgalpha,h.trendvaluealpha,100)):a,borderDash:b(h.trendvalueborderdashed,0)?m(b(h.trendvalueborderdashlen,4),b(h.trendvalueborderdashgap,2),b(h.trendvalueborderthickness,1)):"none"};ha=A(Q.trendStyle);Q.inCanvasStyle={fontFamily:F,fontSize:Fb,color:L};aa=A(Q.inCanvasStyle);
+Q.divlineStyle={fontFamily:F,fontSize:Fb,color:L,lineHeight:aa};lb.labels.style={fontFamily:c(h.labelfont,Lb),fontSize:b(h.labelfontsize,T)+oa,color:c(h.labelfontcolor,S)};lb.labels.style.lineHeight=A(lb.labels.style);lb.steppedLabels.style={fontFamily:Lb,fontSize:V,lineHeight:ha,color:S,visibility:"hidden"};I.yAxis[0].labels.style={fontFamily:Lb,fontSize:V,lineHeight:ha,color:S};I.yAxis[1].labels.style={fontFamily:Lb,fontSize:V,lineHeight:ha,color:S};fa=c(h.legenditemfont,Lb);ga=ca(h.legenditemfontsize,
+T);da=c(h.legenditemfontcolor,S).replace(/^#?([a-f0-9]+)/ig,"#$1");ka=n[b(h.legenditemfontbold,0)]||"";ma=ca(h.legendcaptionfontsize,T)+oa;ga+=oa;I.legend.itemStyle={fontFamily:fa,fontSize:ga,color:da,fontWeight:ka};A(I.legend.itemStyle);I.legend.itemHiddenStyle={fontFamily:fa,fontSize:ga,color:c(h.legenditemhiddencolor,"cccccc").replace(/^#?([a-f0-9]+)/ig,"#$1"),fontWeight:ka};A(I.legend.itemHiddenStyle);I.legend.itemHoverStyle={color:c(h.legenditemhoverfontcolor,da).replace(/^#?([a-f0-9]+)/ig,"#$1")};
+I.legend.title.style={fontFamily:c(h.legendcaptionfont,fa),fontSize:ma,color:c(h.legendcaptionfontcolor,S).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontWeight:n[b(h.legendcaptionfontbold,1)]||""};A(I.legend.title.style);I.legend.title.align=jc[h.legendcaptionalignment&&h.legendcaptionalignment.toLowerCase()||sa]||jc.center;qa=(qa=r(h.valuebordercolor,a))?Y(qa,b(h.valueborderalpha,h.valuealpha,100)):a;I.plotOptions.series.dataLabels.style={fontFamily:c(h.valuefont,F),fontSize:c(h.valuefontsize,parseInt(Fb,
+10))+oa,lineHeight:aa,color:Y(c(h.valuefontcolor,L),b(h.valuefontalpha,h.valuealpha,100)),fontWeight:b(h.valuefontbold)?"bold":"normal",fontStyle:b(h.valuefontitalic)?"italic":"normal",border:qa||h.valuebgcolor?b(h.valueborderthickness,1)+"px solid":"",borderColor:qa,borderThickness:b(h.valueborderthickness,1),borderPadding:b(h.valueborderpadding,2),borderRadius:b(h.valueborderradius,0),backgroundColor:h.valuebgcolor?Y(h.valuebgcolor,b(h.valuebgalpha,h.valuealpha,100)):a,borderDash:b(h.valueborderdashed,
+0)?m(b(h.valueborderdashlen,4),b(h.valueborderdashgap,2),b(h.valueborderthickness,1)):"none"};A(I.plotOptions.series.dataLabels.style);N.labelStyle={fontFamily:c(h.valuefont,F),fontSize:c(h.valuefontsize,parseInt(Fb,10))+oa,lineHeight:aa,color:Y(c(h.valuefontcolor,L),b(h.valuefontalpha,h.valuealpha,100)),fontWeight:b(h.valuefontbold)?"bold":"normal",fontStyle:b(h.valuefontitalic)?"italic":"normal",border:qa||h.valuebgcolor?b(h.valueborderthickness,1)+"px solid":"",borderColor:qa,borderThickness:b(h.valueborderthickness,
+1),borderPadding:b(h.valueborderpadding,2),borderRadius:b(h.valueborderradius,0),backgroundColor:h.valuebgcolor?Y(h.valuebgcolor,b(h.valuebgalpha,h.valuealpha,100)):a,borderDash:b(h.valueborderdashed,0)?m(b(h.valueborderdashlen,4),b(h.valueborderdashgap,2),b(h.valueborderthickness,1)):"none"};I.plotOptions.series.dataLabels.color=I.plotOptions.series.dataLabels.style.color;I.tooltip.style={fontFamily:F,fontSize:Fb,lineHeight:aa,color:L};I.title.style={fontFamily:c(h.captionfont,Lb),color:c(h.captionfontcolor,
+S).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontSize:b(h.captionfontsize,T+3)+oa,fontWeight:0===b(h.captionfontbold)?"normal":"bold"};I.title.align=c(h.captionalignment,sa);I.title.isOnTop=b(h.captionontop,1);I.title.alignWithCanvas=b(h.aligncaptionwithcanvas,this.alignCaptionWithCanvas,1);I.title.horizontalPadding=b(h.captionhorizontalpadding,I.title.alignWithCanvas?0:15);A(I.title.style);I.subtitle.style={fontFamily:c(h.subcaptionfont,h.captionfont,Lb),color:c(h.subcaptionfontcolor,h.captionfontcolor,
+S).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontSize:b(h.subcaptionfontsize,b(W(b(h.captionfontsize)-3,-1),T)+b(this.subTitleFontSizeExtender,1))+oa,fontWeight:0===b(h.subcaptionfontbold,this.subTitleFontWeight,h.captionfontbold)?"normal":"bold"};I.subtitle.align=I.title.align;I.subtitle.isOnTop=I.title.isOnTop;I.subtitle.alignWithCanvas=I.title.alignWithCanvas;I.subtitle.horizontalPadding=I.title.horizontalPadding;A(I.subtitle.style);qa=(qa=r(h.xaxisnamebordercolor,a))?Y(qa,b(h.xaxisnameborderalpha,h.xaxisnamealpha,
+100)):a;lb.title.style={fontFamily:c(h.xaxisnamefont,Lb),fontSize:c(h.xaxisnamefontsize,parseInt(V,10))+oa,color:Y(c(h.xaxisnamefontcolor,S),b(h.xaxisnamefontalpha,h.xaxisnamealpha,100)),fontWeight:b(h.xaxisnamefontbold,1)?"bold":"normal",fontStyle:b(h.xaxisnamefontitalic)?"italic":"normal",border:qa||h.xaxisnamebgcolor?b(h.xaxisnameborderthickness,1)+"px solid":void 0,borderColor:qa,borderThickness:b(h.xaxisnameborderthickness,1),borderPadding:b(h.xaxisnameborderpadding,2),borderRadius:b(h.xaxisnameborderradius,
+0),backgroundColor:h.xaxisnamebgcolor?Y(h.xaxisnamebgcolor,b(h.xaxisnamebgalpha,h.xaxisnamealpha,100)):a,borderDash:b(h.xaxisnameborderdashed,0)?m(b(h.xaxisnameborderdashlen,4),b(h.xaxisnameborderdashgap,2),b(h.xaxisnameborderthickness,1)):"none"};A(lb.title.style);qa=(qa=c(h.pyaxisnamebordercolor,h.yaxisnamebordercolor,a))?Y(qa,b(h.pyaxisnameborderalpha,h.yaxisnameborderalpha,h.pyaxisnamealpha,h.yaxisnamealpha,100)):a;I.yAxis[0].title.style={fontFamily:c(h.pyaxisnamefont,h.yaxisnamefont,Lb),fontSize:c(h.pyaxisnamefontsize,
+h.yaxisnamefontsize,parseInt(V,10))+oa,color:Y(c(h.pyaxisnamefontcolor,h.yaxisnamefontcolor,S),b(h.pyaxisnamefontalpha,h.yaxisnamefontalpha,h.pyaxisnamealpha,h.yaxisnamealpha,100)),fontWeight:b(h.pyaxisnamefontbold,h.yaxisnamefontbold,1)?"bold":"normal",fontStyle:b(h.pyaxisnamefontitalic,h.yaxisnamefontitalic)?"italic":"normal",border:qa||h.pyaxisnamebgcolor||h.yaxisnamebgcolor?b(h.pyaxisnameborderthickness,h.yaxisnameborderthickness,1)+"px solid":void 0,borderColor:qa,borderThickness:b(h.pyaxisnameborderthickness,
+h.yaxisnameborderthickness,1),borderPadding:b(h.pyaxisnameborderpadding,h.yaxisnameborderpadding,2),borderRadius:b(h.pyaxisnameborderradius,h.yaxisnameborderradius,0),backgroundColor:h.pyaxisnamebgcolor||h.yaxisnamebgcolor?Y(c(h.pyaxisnamebgcolor,h.yaxisnamebgcolor),b(h.pyaxisnamebgalpha,h.yaxisnamebgalpha,h.pyaxisnamealpha,h.yaxisnamealpha,100)):a,borderDash:b(h.pyaxisnameborderdashed,h.yaxisnameborderdashed,0)?m(b(h.pyaxisnameborderdashlen,h.yaxisnameborderdashlen,4),b(h.pyaxisnameborderdashgap,
+h.yaxisnameborderdashgap,2),b(h.pyaxisnameborderthickness,h.yaxisnameborderthickness,1)):"none"};A(I.yAxis[0].title.style);I.yAxis[1].title.style={fontFamily:Lb,color:S,fontSize:V,lineHeight:void 0,fontWeight:"bold"};qa=(qa=c(h.syaxisnamebordercolor,h.yaxisnamebordercolor,a))?Y(qa,b(h.syaxisnameborderalpha,h.yaxisnameborderalpha,h.syaxisnamealpha,h.yaxisnamealpha,100)):a;I.yAxis[1].title.style={fontFamily:c(h.syaxisnamefont,h.yaxisnamefont,Lb),fontSize:c(h.syaxisnamefontsize,h.yaxisnamefontsize,parseInt(V,
+10))+oa,color:Y(c(h.syaxisnamefontcolor,h.yaxisnamefontcolor,S),b(h.syaxisnamefontalpha,h.yaxisnamefontalpha,h.syaxisnamealpha,h.yaxisnamealpha,100)),fontWeight:b(h.syaxisnamefontbold,h.yaxisnamefontbold,1)?"bold":"normal",fontStyle:b(h.syaxisnamefontitalic,h.yaxisnamefontitalic)?"italic":"normal",border:qa||h.syaxisnamebgcolor||h.yaxisnamebgcolor?b(h.syaxisnameborderthickness,h.yaxisnameborderthickness,1)+"px solid":void 0,borderColor:qa,borderThickness:b(h.syaxisnameborderthickness,h.yaxisnameborderthickness,
+1),borderPadding:b(h.syaxisnameborderpadding,h.yaxisnameborderpadding,2),borderRadius:b(h.syaxisnameborderradius,h.yaxisnameborderradius,0),backgroundColor:h.syaxisnamebgcolor||h.yaxisnamebgcolor?Y(c(h.syaxisnamebgcolor,h.yaxisnamebgcolor),b(h.syaxisnamebgalpha,h.yaxisnamebgalpha,h.syaxisnamealpha,h.yaxisnamealpha,100)):a,borderDash:b(h.syaxisnameborderdashed,h.yaxisnameborderdashed,0)?m(b(h.syaxisnameborderdashlen,h.yaxisnameborderdashlen,4),b(h.syaxisnameborderdashgap,h.yaxisnameborderdashgap,2),
+b(h.syaxisnameborderthickness,h.yaxisnameborderthickness,1)):"none"};A(I.yAxis[1].title.style);M.overlapColumns=b(h[Aa&&"overlapbars"||"overlapcolumns"],t?0:1);I.orphanStyles={defaultStyle:{style:k({},Q.inCanvasStyle)},connectorlabels:{style:k({},I.plotOptions.series.dataLabels)},vyaxisname:{style:k({},I.yAxis[0].title.style)}};I.plotOptions.series.dataLabels.tlLabelStyle={fontFamily:l(h.tlfont,F),color:na(l(h.tlfontcolor,L)),fontSize:ca(h.tlfontsize,ba)+"px"};A(I.plotOptions.series.dataLabels.tlLabelStyle);
+I.plotOptions.series.dataLabels.trLabelStyle={fontFamily:l(h.trfont,F),color:na(l(h.trfontcolor,L)),fontSize:ca(h.trfontsize,ba)+"px"};A(I.plotOptions.series.dataLabels.trLabelStyle);I.plotOptions.series.dataLabels.blLabelStyle={fontFamily:l(h.blfont,F),color:na(l(h.blfontcolor,L)),fontSize:ca(h.blfontsize,ba)+"px"};A(I.plotOptions.series.dataLabels.blLabelStyle);I.plotOptions.series.dataLabels.brLabelStyle={fontFamily:l(h.brfont,F),color:na(l(h.brfontcolor,L)),fontSize:ca(h.brfontsize,ba)+"px"};
+A(I.plotOptions.series.dataLabels.brLabelStyle);this.parseStyles(I);delete I.xAxis.labels.style.backgroundColor;delete I.xAxis.labels.style.borderColor;delete I.yAxis[0].labels.style.backgroundColor;delete I.yAxis[0].labels.style.borderColor;delete I.yAxis[1].labels.style.backgroundColor;delete I.yAxis[1].labels.style.borderColor;Q.showTooltip=b(h.showtooltip,this.showtooltip,1);Q.tooltipSepChar=c(h.tooltipsepchar,this.tooltipsepchar,Cb);Q.showValues=b(h.showvalues,this.showValues,1);Q.seriesNameInToolTip=
+b(h.seriesnameintooltip,1);Q.showVLines=b(h.showvlines,1);Q.showVLinesOnTop=b(h.showvlinesontop,0);Q.showVLineLabels=b(h.showvlinelabels,this.showVLineLabels,1);Q.showVLineLabelBorder=b(h.showvlinelabelborder,1);Q.rotateVLineLabels=b(h.rotatevlinelabels,0);Q.vLineColor=c(h.vlinecolor,"333333");Q.vLineLabelColor=c(h.vlinelabelcolor);Q.vLineThickness=c(h.vlinethickness,1);Q.vLineAlpha=b(h.vlinealpha,80);Q.vLineLabelBgColor=c(h.vlinelabelbgcolor,"ffffff");Q.vLineLabelBgAlpha=b(h.vlinelabelbgalpha,t?
+50:100);Q.trendlineColor=c(h.trendlinecolor,"333333");Q.trendlineThickness=c(h.trendlinethickness,1);Q.trendlineAlpha=b(h.trendlinealpha);Q.showTrendlinesOnTop=c(h.showtrendlinesontop,0);Q.trendlineValuesOnOpp=c(h.trendlinevaluesonopp,h.trendlinevaluesonright,0);Q.trendlinesAreDashed=b(h.trendlinesaredashed,0);Q.trendlinesDashLen=b(h.trendlinedashlen,5);Q.trendlinesDashGap=b(h.trendlinedashgap,2);Q.showTrendlines=b(h.showtrendlines,1);Q.showTrendlineLabels=b(h.showtrendlinelabels,this.showTrendlineLabels,
+1);Q.flatScrollBars=b(h.flatscrollbars,0);Q.scrollBar3DLighting=b(h.scrollbar3dlighting,1);M.anchorTrackingRadius=b(h.anchortrackingradius,f?H:D);I.plotOptions.series.connectNullData=b(h.connectnulldata,0);M.backgroundColor={FCcolor:{color:c(h.bgcolor,K.getColor(G.bgColor)),alpha:c(h.bgalpha,K.getColor(G.bgAlpha)),angle:c(h.bgangle,K.getColor(G.bgAngle)),ratio:c(h.bgratio,K.getColor(G.bgRatio))}};M.rotateValues=b(h.rotatevalues,0);M.placeValuesInside=b(h.placevaluesinside,0);M.valuePosition=c(h.valueposition,
+"auto");M.valuePadding=b(h.valuepadding,2);M.managePlotOverflow=b(h.manageplotoverflow,1);M.borderColor=Y(c(h.bordercolor,t?"#666666":K.getColor("borderColor")),c(h.borderalpha,t?"100":K.getColor("borderAlpha")));Ka=b(h.showborder,t?0:1);M.borderWidth=Ka?b(h.borderthickness,1):0;M.borderRadius=b(h.borderradius,0);M.borderDashStyle=b(h.borderdashed,0)?m(b(h.borderdashlen,4),b(h.borderdashgap,2),M.borderWidth):"none";M.plotBorderColor=Y(c(h.canvasbordercolor,K.getColor("canvasBorderColor")),c(h.canvasborderalpha,
+K.getColor("canvasBorderAlpha")));"0"!==h.showcanvasborder&&(Ja=Boolean(c(h.canvasborderthickness,J?0:1)),"1"!==h.showaxislines&&"1"!==h.showxaxisline&&"1"!==h.showyaxisline&&"1"!==h.showsyaxisline||"1"===h.showcanvasborder||(Ja=0));M.plotBorderWidth=t||!Ja?0:b(h.canvasborderthickness,this.canvasborderthickness,M.useRoundEdges?1:2);M.bgSWF=c(h.bgimage,h.bgswf);M.bgSWFAlpha=b(h.bgimagealpha,h.bgswfalpha,100);ja=c(h.bgimagedisplaymode,"none").toLowerCase();Da=l(h.bgimagevalign,a).toLowerCase();xb=l(h.bgimagehalign,
+a).toLowerCase();"tile"==ja||"fill"==ja||"fit"==ja?(Da!=wa&&"middle"!=Da&&Da!=ob&&(Da="middle"),xb!=bb&&"middle"!=xb&&xb!=ia&&(xb="middle")):(Da!=wa&&"middle"!=Da&&Da!=ob&&(Da=wa),xb!=bb&&"middle"!=xb&&xb!=ia&&(xb=bb));M.bgImageDisplayMode=ja;M.bgImageVAlign=Da;M.bgImageHAlign=xb;M.bgImageScale=b(h.bgimagescale,100);M.logoURL=l(h.logourl);M.logoPosition=c(h.logoposition,"tl").toLowerCase();M.logoAlpha=b(h.logoalpha,100);M.logoLink=l(h.logolink);M.logoScale=b(h.logoscale,100);M.logoLeftMargin=b(h.logoleftmargin,
+0);M.logoTopMargin=b(h.logotopmargin,0);la=M.toolbar={button:{}};Oa=la.button;Oa.scale=b(h.toolbarbuttonscale,1.15);Oa.width=b(h.toolbarbuttonwidth,15);Oa.height=b(h.toolbarbuttonheight,15);Oa.radius=b(h.toolbarbuttonradius,2);Oa.spacing=b(h.toolbarbuttonspacing,5);Oa.fill=Y(c(h.toolbarbuttoncolor,"ffffff"));Oa.labelFill=Y(c(h.toolbarlabelcolor,"cccccc"));Oa.symbolFill=Y(c(h.toolbarsymbolcolor,"ffffff"));Oa.hoverFill=Y(c(h.toolbarbuttonhovercolor,"ffffff"));Oa.stroke=Y(c(h.toolbarbuttonbordercolor,
+"bbbbbb"));Oa.symbolStroke=Y(c(h.toolbarsymbolbordercolor,"9a9a9a"));Oa.strokeWidth=b(h.toolbarbuttonborderthickness,1);Oa.symbolStrokeWidth=b(h.toolbarsymbolborderthickness,1);Ia=Oa.symbolPadding=b(h.toolbarsymbolpadding,5);Oa.symbolHPadding=b(h.toolbarsymbolhpadding,Ia);Oa.symbolVPadding=b(h.toolbarsymbolvpadding,Ia);ua=la.position=c(h.toolbarposition,"tr").toLowerCase();switch(ua){case "tr":case "rt":case "top right":case "right top":ua="tr";break;case "br":case "rb":case "bottom right":case "right bottom":ua=
+"br";break;case "tl":case "lt":case "top left":case "left top":ua="tl";break;case "bl":case "lb":case "bottom left":case "left bottom":ua="bl";break;default:ua="tr"}zb=la.hAlign="left"===(a+h.toolbarhalign).toLowerCase()?"l":ua.charAt(1);pb=la.vAlign="bottom"===(a+h.toolbarvalign).toLowerCase()?"b":ua.charAt(0);la.hDirection=b(h.toolbarhdirection,"r"===zb?-1:1);la.vDirection=b(h.toolbarvdirection,"b"===pb?-1:1);la.vMargin=b(h.toolbarvmargin,6);la.hMargin=b(h.toolbarhmargin,10);la.x=b(h.toolbarx,"l"===
+zb?0:d);la.y=b(h.toolbary,"t"===pb?0:B);qb=c(h.divlinecolor,K.getColor(G.divLineColor));tc=c(h.divlinealpha,t?K.getColor("divLineAlpha3D"):K.getColor("divLineAlpha"));Ya=b(h.divlinethickness,1);Ib=Boolean(b(h.divlinedashed,h.divlineisdashed,this.divLineIsDashed,0));Bc=b(h.divlinedashlen,4);db=b(h.divlinedashgap,2);I.yAxis[0].gridLineColor=Y(qb,tc);I.yAxis[0].gridLineWidth=Ya;I.yAxis[0].gridLineDashStyle=Ib?m(Bc,db,Ya):"none";I.yAxis[0].alternateGridColor=Aa?Y(c(h.alternatevgridcolor,K.getColor("altVGridColor")),
+1===b(h.showalternatevgridcolor,1)?c(h.alternatevgridalpha,K.getColor("altVGridAlpha")):Ca):Y(c(h.alternatehgridcolor,K.getColor("altHGridColor")),"0"===h.showalternatehgridcolor?0:c(h.alternatehgridalpha,K.getColor("altHGridAlpha")));Qa=b(h.vdivlinethickness,1);Wb=Boolean(b(h.vdivlinedashed,h.vdivlineisdashed,0));Jb=b(h.vdivlinedashlen,4);Rb=b(h.vdivlinedashgap,2);lb.gridLineColor=Y(c(h.vdivlinecolor,K.getColor(G.divLineColor)),c(h.vdivlinealpha,K.getColor("divLineAlpha")));lb.gridLineWidth=Qa;lb.gridLineDashStyle=
+Wb?m(Jb,Rb,Qa):"none";lb.alternateGridColor=Y(c(h.alternatevgridcolor,K.getColor("altVGridColor")),"1"===h.showalternatehgridcolor?c(h.alternatevgridalpha,K.getColor("altVGridAlpha")):0);Wa=c(h.canvasbgcolor,K.getColor(G.canvasBgColor));Ra=c(h.canvasbgalpha,K.getColor("canvasBgAlpha"));c(h.showcanvasbg,mb)==Ca&&(Ra="0");I.plotOptions.series.shadow=b(h.showshadow,h.showcolumnshadow,this.defaultPlotShadow,K.getColor("showShadow"));this.inversed&&(I.yAxis[0].reversed=!0,I.yAxis[1].reversed=!0);this.isStacked&&
+(this.distributedColumns?(Q.showStackTotal=Boolean(b(h.showsum,1)),ya=b(h.usepercentdistribution,1),Za=b(h.showpercentvalues,0),wb=b(h.showpercentintooltip,ya,0),Q.showXAxisPercentValues=b(h.showxaxispercentvalues,1)):(Q.showStackTotal=Boolean(b(this.showSum,h.showsum,0)),ya=b(this.stack100percent,h.stack100percent,0),Za=b(h.showpercentvalues,ya,0),wb=b(h.showpercentintooltip,Za)),Q.showPercentValues=Za,Q.showPercentInToolTip=wb,ya?(Q.isValueAbs=!0,pa[Ea].stacking="percent",Q[0].stacking100Percent=
+!0):pa[Ea].stacking="normal");this.isDual&&("0"===h.primaryaxisonleft&&(I.yAxis[0].opposite=!0,I.yAxis[1].opposite=!1),I.yAxis[0].showAlways=!0,I.yAxis[1].showAlways=!0);M.useRoundEdges&&(I.plotOptions.series.shadow=b(h.showshadow,h.showcolumnshadow,1),I.plotOptions.series.borderRadius=1,I.tooltip.style.borderRadius="2px",M.plotBorderRadius=3,Ja||(M.plotBorderWidth=0),M.plotShadow=I.plotOptions.series.shadow?{enabled:!0,opacity:Ra/100}:0);1===b(h.use3dlighting,1)&&(I.legend.lighting3d=!0);I.plotOptions.series.userMaxColWidth=
+Aa?h.maxbarheight:b(h.maxcolwidth,this.maxColWidth);I.plotOptions.series.maxColWidth=O(b(I.plotOptions.series.userMaxColWidth,50))||1;I.title.text=p(h.caption);I.subtitle.text=p(h.subcaption);0===b(h.showtooltip,this.showtooltip)&&(I.tooltip.enabled=!1);Nb=I.tooltip.style;Nb.backgroundColor=Y(c(Nb.backgroundColor,h.tooltipbgcolor,K.getColor("toolTipBgColor")),c(h.tooltipbgalpha,100));Nb.borderColor=Y(c(Nb.borderColor,h.tooltipbordercolor,K.getColor("toolTipBorderColor")),c(h.tooltipborderalpha,100));
+I.tooltip.shadow=b(h.showtooltipshadow,h.showshadow,1)?{enabled:!0,opacity:W(b(h.tooltipbgalpha,100),b(h.tooltipborderalpha,100))/100}:!1;I.tooltip.constrain=b(h.constraintooltip,1);Nb.borderWidth=b(h.tooltipborderthickness,1)+"px";h.tooltipborderradius&&(Nb.borderRadius=b(h.tooltipborderradius,1)+"px");Nb.padding=b(h.tooltippadding,this.tooltippadding,3)+"px";h.tooltipcolor&&(Nb.color=na(h.tooltipcolor));Q.userPlotSpacePercent=I.plotOptions.series.userPlotSpacePercent=h.plotspacepercent;Kb=b(h.plotspacepercent,
+20)%100;Q.plotSpacePercent=I.plotOptions.series.groupPadding=Kb/200;t&&!ta?(M.series2D3Dshift="mscombi3d"===w?!0:Boolean(b(h.use3dlineshift,0)),M.canvasBaseColor3D=c(h.canvasbasecolor,K.getColor("canvasBaseColor3D")),M.canvasBaseDepth=b(h.canvasbasedepth,10),M.canvasBgDepth=b(h.canvasbgdepth,3),M.showCanvasBg=Boolean(b(h.showcanvasbg,1)),M.showCanvasBase=Boolean(b(h.showcanvasbase,1)),Aa?(M.xDepth=5,M.yDepth=5,M.showCanvasBg&&(Q.marginTopExtraSpace+=M.canvasBgDepth),Q.marginLeftExtraSpace+=M.yDepth+
+(M.showCanvasBase?M.canvasBaseDepth:0),Q.marginBottomExtraSpace+=5):(M.xDepth=10,M.yDepth=10,M.showCanvasBg&&(Q.marginRightExtraSpace+=M.canvasBgDepth),Q.marginBottomExtraSpace+=M.yDepth+(M.showCanvasBase?M.canvasBaseDepth:0)),Wa=Wa.split(Ga)[0],Ra=Ra.split(Ga)[0],M.use3DLighting=Boolean(b(h.use3dlighting,1)),M.plotBackgroundColor=M.use3DLighting?{FCcolor:{color:Ba(Wa,85)+Ga+va(Wa,55),alpha:Ra+Ga+Ra,ratio:ec,angle:Eb(d-(M.marginLeft+M.marginRight),B-(M.marginTop+M.marginBottom),1)}}:Y(Wa,Ra),M.canvasBgColor=
+Y(Ba(Wa,80),Ra),q=c(h.zeroplanecolor,h.divlinecolor,K.getColor(G.divLineColor)),v=c(h.zeroplanealpha,h.divlinealpha,K.getColor("divLineAlpha")),M.zeroPlaneColor=Y(q,v),M.zeroPlaneBorderColor=Y(c(h.zeroplanebordercolor,q),b(h.zeroplaneshowborder,1)?v:0),M.zeroPlaneShowBorder=b(h.zeroplaneshowborder,1)):(M.is3D=!1,M.plotBackgroundColor={FCcolor:{color:Wa,alpha:Ra,angle:c(h.canvasbgangle,K.getColor("canvasBgAngle")),ratio:c(h.canvasbgratio,K.getColor("canvasBgRatio"))}});this.parseExportOptions(I);this.parseHoverEffectOptions(M);
+this.preSeriesAddition&&this.preSeriesAddition(I,N,d,B);this.series&&this.series(N,I,w,d,B);this.postSeriesAddition(I,N,d,B);this.spaceManager(I,N,d,B);this.postSpaceManager&&this.postSpaceManager(I,N,d,B);sb=b(h.drawquadrant,0);Q.isXYPlot&&sb&&(ub=lb.min,ra=lb.max,vb=I.yAxis[0].min,fb=I.yAxis[0].max,$a=b(h.quadrantxval,(ub+ra)/2),Xa=b(h.quadrantyval,(vb+fb)/2),Xa>=vb&&Xa<=fb&&$a>=ub&&$a<=ra&&(bc=Y(c(h.quadrantlinecolor,M.plotBorderColor),c(h.quadrantlinealpha,jb)),Va=b(h.quadrantlinethickness,M.plotBorderWidth),
+cc=b(h.quadrantlinedashed,h.quadrantlineisdashed,0),sc=b(h.quadrantlinedashLen,4),kb=b(h.quadrantlinedashgap,2),Sb=l(h.quadrantlabeltl,a),Bb=l(h.quadrantlabeltr,a),Hb=l(h.quadrantlabelbl,a),nb=l(h.quadrantlabelbr,a),Ab=b(h.quadrantlabelpadding,3),Qb=cc?m(sc,kb,Va):"none",lb.plotLines.push({color:bc,value:$a,width:Va,dashStyle:Qb,zIndex:3}),I.yAxis[0].plotLines.push({color:bc,value:Xa,width:Va,dashStyle:Qb,zIndex:3}),Tb=d-M.marginRight-M.marginLeft,fc=B-M.marginTop-M.marginBottom,Ob=Q.inCanvasStyle,
+La=Tb/(ra-ub)*($a-ub),ac=Tb-La,hb=fc/(fb-vb)*(Xa-vb),Ac=fc-hb,La-=Ab,ac-=Ab,Ac-=Ab,hb-=Ab,Xb=Ab+oa,Yb=fc-Ab+oa,kc=Ab+oa,Kc=Tb-Ab+oa,E.setStyle(Ob),0<Ac&&(Sb!==a&&0<La&&(qa=r(h.quadrantlabeltlbordercolor,h.quadrantlabelbordercolor,a),dc=c(h.quadrantlabeltlbgcolor,h.quadrantlabelbgcolor),hc=b(h.quadrantlabeltlborderthickness,h.quadrantlabelborderthickness,1),qa=qa?Y(qa,b(h.quadrantlabeltlborderalpha,h.quadrantlabelborderalpha,h.quadrantlabeltlalpha,h.quadrantlabelalpha,100)):a,nc={left:kc,top:Xb,fontSize:c(b(h.quadrantlabeltlfontsize,
+h.quadrantlabelfontsize),parseInt(Ob.fontSize,10))+oa,lineHeight:Ob.lineHeight,fontFamily:c(h.quadrantlabeltlfont,h.quadrantlabelfont,Ob.fontFamily),color:Y(c(h.quadrantlabeltlfontcolor,h.quadrantlabelfontcolor,Ob.color),b(h.quadrantlabeltlfontalpha,h.quadrantlabelfontalpha,100)),fontWeight:b(h.quadrantlabeltlfontbold,h.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(h.quadrantlabeltlfontitalic,h.quadrantlabelfontitalic)?"italic":"normal",border:qa||dc?hc+"px solid":a,borderColor:qa,borderThickness:hc,
+borderPadding:b(h.quadrantlabeltlborderpadding,h.quadrantlabelborderpadding,2),borderRadius:b(h.quadrantlabeltlborderradius,h.quadrantlabelborderradius,0),backgroundColor:dc?Y(dc,b(h.quadrantlabeltlbgalpha,h.quadrantlabelbgalpha,h.quadrantlabeltlalpha,h.quadrantlabelalpha,100)):a,borderDash:b(h.quadrantlabeltlborderdashed,h.quadrantlabelborderdashed,0)?m(b(h.quadrantlabeltlborderdashlen,h.quadrantlabelborderdashlen,4),b(h.quadrantlabeltlborderdashgap,h.quadrantlabelborderdashgap,2),hc):"none"},A(nc),
+E.setStyle(nc),Zb=E.getSmartText(Sb,La,Ac),I.labels.items.push({html:Zb.text,title:Zb.title,zIndex:3,vAlign:wa,style:nc})),Bb!==a&&0<ac&&(qa=r(h.quadrantlabeltrbordercolor,h.quadrantlabelbordercolor,a),dc=c(h.quadrantlabeltrbgcolor,h.quadrantlabelbgcolor),hc=b(h.quadrantlabeltrborderthickness,h.quadrantlabelborderthickness,1),qa=qa?Y(qa,b(h.quadrantlabeltrborderalpha,h.quadrantlabelborderalpha,h.quadrantlabeltralpha,h.quadrantlabelalpha,100)):a,nc={left:Kc,top:Xb,fontSize:c(b(h.quadrantlabeltrfontsize,
+h.quadrantlabelfontsize),parseInt(Ob.fontSize,10))+oa,lineHeight:Ob.lineHeight,fontFamily:c(h.quadrantlabeltrfont,h.quadrantlabelfont,Ob.fontFamily),color:Y(c(h.quadrantlabeltrfontcolor,h.quadrantlabelfontcolor,Ob.color),b(h.quadrantlabeltrfontalpha,h.quadrantlabelfontalpha,100)),fontWeight:b(h.quadrantlabeltrfontbold,h.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(h.quadrantlabeltrfontitalic,h.quadrantlabelfontitalic)?"italic":"normal",border:qa||dc?hc+"px solid":a,borderColor:qa,borderThickness:hc,
+borderPadding:b(h.quadrantlabeltrborderpadding,h.quadrantlabelborderpadding,2),borderRadius:b(h.quadrantlabeltrborderradius,h.quadrantlabelborderradius,0),backgroundColor:dc?Y(dc,b(h.quadrantlabeltrbgalpha,h.quadrantlabelbgalpha,h.quadrantlabeltralpha,h.quadrantlabelalpha,100)):a,borderDash:b(h.quadrantlabeltrborderdashed,h.quadrantlabelborderdashed,0)?m(b(h.quadrantlabeltrborderdashlen,h.quadrantlabelborderdashlen,4),b(h.quadrantlabeltrborderdashgap,h.quadrantlabelborderdashgap,2),hc):"none"},A(nc),
+E.setStyle(nc),Zb=E.getSmartText(Bb,La,Ac),I.labels.items.push({html:Zb.text,textAlign:ia,title:Zb.title,zIndex:3,vAlign:wa,style:nc}))),0<hb&&(Hb!==a&&0<La&&(qa=r(h.quadrantlabelblbordercolor,h.quadrantlabelbordercolor,a),dc=c(h.quadrantlabelblbgcolor,h.quadrantlabelbgcolor),hc=b(h.quadrantlabelblborderthickness,h.quadrantlabelborderthickness,1),qa=qa?Y(qa,b(h.quadrantlabelblborderalpha,h.quadrantlabelborderalpha,h.quadrantlabelblalpha,h.quadrantlabelalpha,100)):a,nc={left:kc,top:Yb,fontSize:c(b(h.quadrantlabelblfontsize,
+h.quadrantlabelfontsize),parseInt(Ob.fontSize,10))+oa,lineHeight:Ob.lineHeight,fontFamily:c(h.quadrantlabelblfont,h.quadrantlabelfont,Ob.fontFamily),color:Y(c(h.quadrantlabelblfontcolor,h.quadrantlabelfontcolor,Ob.color),b(h.quadrantlabelblfontalpha,h.quadrantlabelfontalpha,100)),fontWeight:b(h.quadrantlabelblfontbold,h.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(h.quadrantlabelblfontitalic,h.quadrantlabelfontitalic)?"italic":"normal",border:qa||dc?hc+"px solid":a,borderColor:qa,borderThickness:hc,
+borderPadding:b(h.quadrantlabelblborderpadding,h.quadrantlabelborderpadding,2),borderRadius:b(h.quadrantlabelblborderradius,h.quadrantlabelborderradius,0),backgroundColor:dc?Y(dc,b(h.quadrantlabelblbgalpha,h.quadrantlabelbgalpha,h.quadrantlabelblalpha,h.quadrantlabelalpha,100)):a,borderDash:b(h.quadrantlabelblborderdashed,h.quadrantlabelborderdashed,0)?m(b(h.quadrantlabelblborderdashlen,h.quadrantlabelborderdashlen,4),b(h.quadrantlabelblborderdashgap,h.quadrantlabelborderdashgap,2),hc):"none"},A(nc),
+E.setStyle(nc),Zb=E.getSmartText(Hb,La,Ac),I.labels.items.push({html:Zb.text,textAlign:bb,title:Zb.title,zIndex:3,vAlign:ob,style:nc})),nb!==a&&0<ac&&(qa=r(h.quadrantlabelbrbordercolor,h.quadrantlabelbordercolor,a),dc=c(h.quadrantlabelbrbgcolor,h.quadrantlabelbgcolor),hc=b(h.quadrantlabelbrborderthickness,h.quadrantlabelborderthickness,1),qa=qa?Y(qa,b(h.quadrantlabelbrborderalpha,h.quadrantlabelborderalpha,h.quadrantlabelbralpha,h.quadrantlabelalpha,100)):a,nc={left:Kc,top:Yb,fontSize:c(b(h.quadrantlabelbrfontsize,
+h.quadrantlabelfontsize),parseInt(Ob.fontSize,10))+oa,lineHeight:Ob.lineHeight,fontFamily:c(h.quadrantlabelbrfont,h.quadrantlabelfont,Ob.fontFamily),color:Y(c(h.quadrantlabelbrfontcolor,h.quadrantlabelfontcolor,Ob.color),b(h.quadrantlabelbrfontalpha,h.quadrantlabelfontalpha,100)),fontWeight:b(h.quadrantlabelbrfontbold,h.quadrantlabelfontbold)?"bold":"normal",fontStyle:b(h.quadrantlabelbrfontitalic,h.quadrantlabelfontitalic)?"italic":"normal",border:qa||dc?hc+"px solid":a,borderColor:qa,borderThickness:hc,
+borderPadding:b(h.quadrantlabelbrborderpadding,h.quadrantlabelborderpadding,2),borderRadius:b(h.quadrantlabelbrborderradius,h.quadrantlabelborderradius,0),backgroundColor:dc?Y(dc,b(h.quadrantlabelbrbgalpha,h.quadrantlabelbgalpha,h.quadrantlabelbralpha,h.quadrantlabelalpha,100)):a,borderDash:b(h.quadrantlabelbrborderdashed,h.quadrantlabelborderdashed,0)?m(b(h.quadrantlabelbrborderdashlen,h.quadrantlabelborderdashlen,4),b(h.quadrantlabelbrborderdashgap,h.quadrantlabelborderdashgap,2),hc):"none"},A(nc),
+E.setStyle(nc),Zb=E.getSmartText(nb,La,Ac),I.labels.items.push({html:Zb.text,textAlign:ia,vAlign:ob,title:Zb.title,zIndex:3,style:nc})))));if(this.hasVDivLine&&(Pb=b(h.showvdivlines,0),mc=b(h.numvdivlines,0)+1,Pb&&(mc=Q.x.catCount-1),1<mc)){Mb=lb.min;vc=Q.x.catCount-1;$b=lb.max;gc=vc/mc;Lc=!0;Pc=Mb;lb.scroll&&!isNaN(lb.scroll.viewPortMax)&&($b=lb.scroll.viewPortMax);Ec=c(h.vdivlinecolor,qb);Xc=b(h.vdivlinealpha,tc);Qa=b(h.vdivlinethickness,Ya);Wb=b(h.vdivlinedashed,h.vdivlineisdashed,Ib);Jb=b(h.vdivlinedashlen,
+Bc);Rb=b(h.vdivlinedashgap,db);(wc=b(h.showalternatevgridcolor,0))&&(Uc=Y(c(h.alternatevgridcolor,K.getColor("altVGridColor")),c(h.alternatevgridalpha,K.getColor("altVGridAlpha"))));for(Db=gc;Db<vc;Db+=gc,Lc=!Lc)Lc&&wc&&lb.plotBands.push({isNumVDIV:!0,color:Uc,from:Pc,to:Db,zIndex:1}),lb.plotLines.push({isNumVDIV:!0,width:Qa,color:Y(Ec,Xc),dashStyle:Wb?m(Jb,Rb,Qa):"none",value:Db,zIndex:1}),Pc=Db;Lc&&wc&&lb.plotBands.push({isNumVDIV:!0,color:Uc,from:Pc,to:$b,zIndex:1})}R=M.marginTop;xa=M.marginBottom;
+Z=M.marginLeft;yb=M.marginRight;ea.canvasstartx=Z;ea.canvasstarty=R;ea.canvasendx=d-yb;ea.canvasendy=B-xa;ea.canvaswidth=ea.canvasendx-ea.canvasstartx;ea.canvasheight=ea.canvasendy-ea.canvasstarty;I.legend&&I.legend.enabled&&"vertical"===I.legend.layout&&(ea.legendstarty=R+.5*(Q.height-xa-R-ea.legendheight)+(I.legend.y||0),ea.legendendy=ea.legendstarty+ea.legendheight);t&&M.xDepth>M.marginLeft&&(M.marginLeft=M.xDepth);u.console&&u.console.log&&u.FC_DEV_ENVIRONMENT&&console.log(I);return I},parseHoverEffectOptions:function(a){var f=
+this.dataObj.chart,d;a.showHoverEffect=f.showhovereffect;a.plotHoverEffect=b(f.plothovereffect,f.anchorhovereffect,a.showHoverEffect);d=a.plotHoverEffects={enabled:a.plotHoverEffect};d.highlight=b(f.highlightonhover,f.highlightplotonhover,a.plotHoverEffect);d.columnHighlight=b(d.highlight,f.highlightcolumnonhover,f.highlightbaronhover);d.anchorHighlight=b(d.highlight,f.highlightanchoronhover);d.imageHighlight=b(d.highlight,f.highlightanchorimageonhover);d.anchorImageHoverAlpha=c(f.anchorimagehoveralpha);
+d.anchorImageHoverScale=c(f.anchorimagehoverscale);d.bubbleHighlight=b(d.highlight,f.highlightbubbleonhover);d.color=c(f.plotfillhovercolor,f.columnhovercolor,f.barhovercolor,f.bubblehovercolor);d.alpha=c(f.plotfillhoveralpha,f.columnhoveralpha,f.barhoveralpha,f.bubblehoveralpha);d.scale=c(f.plothoverscale,f.columnhoverscale,f.barhoverscale,f.bubblehoverscale);d.gradientColor=f.plothovergradientcolor;d.ratio=f.plothoverratio;d.angle=f.plothoverangle;d.borderColor=f.plotborderhovercolor;d.borderAlpha=
+f.plotborderhoveralpha;d.borderThickness=f.plotborderhoverthickness;d.borderDashed=f.plotborderhoverdashed;d.borderDashGap=f.plotborderhoverdashgap;d.borderDashLen=f.plotborderhoverdashlen;d.shadow=f.plothovershadow;d.anchorScale=f.anchorhoverscale;d.anchorSides=f.anchorhoversides;d.anchorRadius=f.anchorhoverradius;d.anchorAlpha=f.anchorhoveralpha;d.anchorBgColor=c(f.anchorbghovercolor,f.anchorhovercolor);d.anchorBgAlpha=f.anchorbghoveralpha;d.anchorBorderColor=f.anchorborderhovercolor;d.anchorBorderAlpha=
+f.anchorborderhoveralpha;d.anchorBorderThickness=f.anchorborderhoverthickness;d.anchorStartAngle=f.anchorhoverstartangle;d.anchorDip=b(f.anchorhoverdip);d.anchorAnimation=b(f.anchorhoveranimation,1);d.negativeColor=c(f.negativehovercolor,f.negativecolor);d.is3DBubble=b(f.is3donhover)},parseExportOptions:function(f){var d=this.chartInstance,n=this.dataObj.chart;k(f.exporting,{enabled:b(n.exportenabled,0),bgcolor:d.jsVars.transparent||0===b(d.options.containerBackgroundOpacity,1)?a:d.options.containerBackgroundColor||
+"#ffffff",bgalpha:(d.jsVars.transparent?0:b(d.options.containerBackgroundOpacity,1))+a,exporttargetwindow:c(n.exporttargetwindow,Oa?"_blank":"_self"),exportaction:n.exportaction&&"save"===n.exportaction.toString().toLowerCase()&&"save"||"download",exportfilename:c(n.exportfilename,"FusionCharts"),exporthandler:c(n.html5exporthandler,n.exporthandler,E),exportparameters:c(n.exportparameters,a),exportformat:c(n.exportformat,"PNG"),exportcallback:c(n.exportcallback,a),exportwithimages:b(n.exportwithimages,
+1),exportatclientside:b(n.exportatclientside,0),buttons:{printButton:{enabled:!!b(n.printshowbutton,n.showprintmenuitem,0)},exportButton:{enabled:!(!b(n.exportenabled,0)||!b(n.exportshowbutton,n.exportshowmenuitem,1))}}});var d=f.exporting,g;n=n.exportformats;f=aa(f.exporting.exportaction);f={JPG:f+" as JPEG image",PNG:f+" as PNG image",PDF:f+" as PDF document",SVG:f+" as SVG vector image"};var h,e,B;if(n){n=n.split(/\s*?\|\s*?/);for(B=0;B<n.length;B++)e=(h=n[B].split(/\s*?=\s*?/))&&h[0].toUpperCase()||
+a,h=h&&h[1]||a,f[e]&&(g||(g={}))&&(g[e]=h||f[e]);g=g||f}else g=f;d.exportformats=g},defaultSeriesType:a,paletteIndex:1,creditLabel:zb,titleSpaceManager:lb,placeLegendBlockBottom:Ka,configureLegendOptions:Gb,placeLegendBlockRight:Ja,placeHorizontalAxis:yb,placeVerticalAxis:Ea,placeHorizontalCanvasMarginAdjustment:M,placeVerticalCanvasMarginAdjustment:ea,placeHorizontalXYSpaceManager:function(a,f,d,n){var h=a[g],e,B,w,k,I=f.chart,K,l,m,p,t,X,r,D=a.chart,q=h.marginLeftExtraSpace,H=h.marginTopExtraSpace,
+v=h.marginBottomExtraSpace,u=h.marginRightExtraSpace;k=d-(q+u+D.marginRight+D.marginLeft);var za=n-(v+D.marginBottom+D.marginTop),ya=.3*k;d=.3*za;var E=a.xAxis.showLine?a.xAxis.lineThickness:0;w=a.yAxis[0].showLine?a.yAxis[0].lineThickness:0;e=k-ya;n=za-d;K=c(I.legendposition,ob).toLowerCase();a.legend.enabled&&K===ia&&(e-=this.placeLegendBlockRight(a,f,e/2,za));t=b(I.xaxisnamepadding,5);X=b(I.labelpadding,4);r=c(I.rotatexaxisname,"ccw");r=r===Ca?"none":r;l=c(I.showplotborder,h.is3d?Ca:mb)===mb;l=
+h.plotBorderThickness=l?h.is3d?1:b(I.plotborderthickness,1):0;m=W(b(D.plotBorderWidth,1),0);!h.isDual&&D.marginRight<m&&void 0===I.chartrightmargin&&(B=m-D.marginRight,k>ya+B&&(D.marginRight=m,k-=B,ya=.3*k,e=k-ya));B=h.x;p=W(m,l/2);X<p&&(X=p);B.verticalAxisNamePadding=t;B.verticalAxisValuesPadding=X+E;B.rotateVerticalAxisName=r;B.verticalAxisNameWidth=b(I.xaxisnamewidth);e-=Ea(a.xAxis,B,a,f,za,e,!1,!1,k);a.xAxis.lineEndExtension=w;e-=M(a,f,e,a.xAxis);k=e+ya;a.legend.enabled&&K!==ia&&(n-=this.placeLegendBlockBottom(a,
+f,k,n/2));n-=this.titleSpaceManager(a,f,k,n/2);B=h[0];B.horizontalAxisNamePadding=b(I.yaxisnamepadding,5);B.horizontalLabelPadding=W(b(I.yaxisvaluespadding,4))+w;B.labelDisplay="auto";B.staggerLines=b(I.staggerlines,2);B.slantLabels=b(I.slantlabels,0);B.horizontalLabelPadding=B.horizontalLabelPadding<m?m:B.horizontalLabelPadding;this.xAxisMinMaxSetter(a,f,k);w=a.xAxis;t=w.plotLines;e=n/(w.max-w.min);t&&t.length&&(m=(t[0].value-w.min)*e,t=(w.max-t[t.length-1].value)*e,h.isBar&&(l>m&&(w.min-=(l-m)/
+(2*e)),l>t&&(w.max+=(l-t)/(2*e))));n-=this.placeHorizontalAxis(a.yAxis[0],B,a,f,k,n,ya);n-=ea(a,f,n,a.yAxis[0]);qa(d+n,a,I,a.xAxis,h.x.lYLblIdx,!0);pa(a,a.xAxis.title,n);a.legend.enabled&&K===ia&&(a=a.legend,f=d+n,a.height>f&&(a.height=f,a.scroll.enabled=!0,f=(a.scroll.scrollBarWidth=10)+(a.scroll.scrollBarPadding=2),a.width+=f,D.marginRight+=f),a.y=20);D.marginLeft+=q;D.marginTop+=H;D.marginBottom+=v;D.marginRight+=u},placeVerticalXYSpaceManager:function(a,f,d,n){var h=a[g],e,B,w=!0;e=0;var k=f.chart,
+I=!1,K,l,m,p,t=a.chart,X,r,D,q=h.marginLeftExtraSpace,H=h.marginTopExtraSpace,v=h.marginBottomExtraSpace,u=h.marginRightExtraSpace;p=d-(q+u+t.marginRight+t.marginLeft);var za=n-(v+t.marginBottom+t.marginTop),ya=.3*p;n=.3*za;var E=p-ya;d=za-n;e=h.drawFullAreaBorder=b(k.drawfullareaborder,1);var ta=c(k.legendposition,ob).toLowerCase();X=a.xAxis.showLine?a.xAxis.lineThickness:0;r=a.yAxis[0].showLine?a.yAxis[0].lineThickness:0;D=h.isDual&&a.yAxis[1].showLine?a.yAxis[1].lineThickness:0;K=b(k.yaxisnamepadding,
+5);l=b(k.yaxisvaluespadding,k.labelypadding,4);B=c(k.showplotborder,h.is3d?Ca:mb)===mb;B=h.plotBorderThickness=B?h.is3d?1:b(k.plotborderthickness,1):0;m=W(b(t.plotBorderWidth,1),0);B=W(m,B/2);"area"!==this.defaultSeriesType||e||(B=m);l<m&&(l=m);!h.isDual&&t.marginRight<m&&void 0===k.chartrightmargin&&(e=m-a.chart.marginRight,p>ya+e&&(p-=e,ya=.3*p,E=p-ya));a.legend.enabled&&ta===ia&&(E-=this.placeLegendBlockRight(a,f,E/2,za));h.isDual&&(I=!0,e=h[1],w=a.yAxis[1].opposite,m=c(k.rotateyaxisname,w?"cw":
+"ccw"),m=m===Ca?"none":m,e.verticalAxisNamePadding=K,e.verticalAxisValuesPadding=l+D,e.rotateVerticalAxisName=m,e.verticalAxisNameWidth=b(k.syaxisnamewidth),E-=Ea(a.yAxis[1],e,a,f,za,E/2,w,I));e=h[0];w=!w;m=c(k.rotateyaxisname,w?"cw":"ccw");m=m===Ca?"none":m;e.verticalAxisNamePadding=K;e.verticalAxisValuesPadding=l+r;e.rotateVerticalAxisName=m;e.verticalAxisNameWidth=b(I?k.pyaxisnamewidth:k.yaxisnamewidth);E-=Ea(a.yAxis[0],e,a,f,za,E,w,I,p);E-=M(a,f,E,a.yAxis[0],a.yAxis[1]);w=E+ya;a.legend.enabled&&
+ta!==ia&&(d-=this.placeLegendBlockBottom(a,f,w,d/2));d-=this.titleSpaceManager(a,f,w,d/2);e=h.x;e.horizontalAxisNamePadding=b(k.xaxisnamepadding,5);e.horizontalLabelPadding=b(k.labelpadding,k.labelxpadding,4)+X;e.labelDisplay=c(k.labeldisplay,"auto").toLowerCase();e.rotateLabels=b(k.rotatelabels,k.rotatexaxislabels,0);e.staggerLines=b(k.staggerlines,2);e.slantLabels=b(k.slantlabels,k.slantlabel,0);a.yAxis[0].opposite?(a.xAxis.lineEndExtension=r,a.xAxis.lineStartExtension=D):(a.xAxis.lineEndExtension=
+D,a.xAxis.lineStartExtension=r);e.horizontalLabelPadding<B&&(e.horizontalLabelPadding=B);p={left:0,right:0};p=t.managePlotOverflow&&this.canvasPaddingModifiers&&this.calculateCanvasOverflow(a,!0)||p;X=p.left+p.right;r=.6*w;X>r&&(D=p.left/X,p.left-=D*(X-r),p.right-=(1-D)*(X-r));this.xAxisMinMaxSetter(a,f,w,p.left,p.right);d-=this.placeHorizontalAxis(a.xAxis,e,a,f,w,d,ya);d-=ea(a,f,d,a.xAxis);a.title.alignWithCanvas||("left"===a.title.align&&a.yAxis[0].title.text&&Fb(a,a.yAxis[0].title,n+d),"right"===
+a.title.align&&I&&a.yAxis[1].title.text&&Fb(a,a.yAxis[1].title,n+d));I&&(qa(n+d,a,k,a.yAxis[1],h[1].lYLblIdx),pa(a,a.yAxis[1].title,n+d));qa(n+d,a,k,a.yAxis[0],h[0].lYLblIdx);pa(a,a.yAxis[0].title,n+d);a.legend.enabled&&ta===ia&&(a=a.legend,f=n+d,a.height>f&&"gradient"!==a.type&&(a.height=f,a.scroll.enabled=!0,f=(a.scroll.scrollBarWidth=10)+(a.scroll.scrollBarPadding=2),a.width+=f,t.marginRight+=f));t.marginLeft+=q;t.marginTop+=H;t.marginBottom+=v;t.marginRight+=u},placeVerticalAxisTitle:pa,calculateCanvasOverflow:function(b,
+c){for(var f=this.canvasPaddingModifiers,d=b.chart,h=this.smartLabel,n=0,g=0,e=0,B=0,w=n=!1,k=!1,I=f&&f.length||0,K,l,m,p,t;I--;)switch(g=f[I],g){case "anchor":w=l=n=!0;break;case "anchorlabel":m=l=n=!0;break;case "errorbar":k=n=!0}if(n&&(I=(f=b.series)&&f.length||0,c))for(;I--;)K=f[I],l&&(n=K&&K.data||[],1<n.length&&(p=n[0],t=n[n.length-1],w&&(n=p&&p.marker&&p.marker.enabled&&(p.marker.radius||0)+(p.marker.lineWidth||0)||0,g=t&&t.marker&&t.marker.enabled&&(t.marker.radius||0)+(t.marker.lineWidth||
+0)||0,e=W(n+2,e),B=W(g+2,B)),m&&(h.setStyle(b.plotOptions.series.dataLabels.style),d.rotateValues?(g=h.getOriSize(p&&p.displayValue||a),n=g.height/2,g=h.getOriSize(t&&t.displayValue||a),g=g.height/2):(g=h.getOriSize(p&&p.displayValue||a),n=g.width/2,g=h.getOriSize(t&&t.displayValue||a),g=g.width/2),e=W(n+2,e),B=W(g+2,B)))),k&&(g=n=K.errorBarWidth/2+K.errorBarThickness||0,e=W(n+2,e),B=W(g+2,B));return{left:e,right:B}},spaceManager:function(){return this.placeVerticalXYSpaceManager.apply(this,arguments)},
+axisMinMaxSetter:function(a,c,f,d,h,n,g,e){f=c.stacking100Percent?Hb(99,1,100,0,h,n,g,e):Hb(b(c.max,f),b(c.min,d),f,d,h,n,g,e);a.min=Number(T(f.Min,10));a.max=Number(T(f.Max,10));a.tickInterval=Number(T(f.divGap,10));c.numdivlines=G.round((a.max-a.min)/a.tickInterval)-1;2>=f.Range/f.divGap&&(a.alternateGridColor=Da);this.highValue=c.max;this.lowValue=c.min;delete c.max;delete c.min},configurePlotLines:function(f,d,n,e,h,B,w,k,I,K,l){var m=n.min,p=n.max,t=n.tickInterval,X=K?"xAxis":e.stacking100Percent?
+"percentValue":"yAxis",r=m,D=1,q=n.gridLineColor,H=n.gridLineWidth,v=n.gridLineDashStyle,u=0>m&&0<p?!0:!1,za=0===m,E=0===p,ya=0===b(e.showzeroplanevalue,f.showzeroplanevalue),M=!0,ta,Ea=1,Aa=0<b(f.numdivlines,0),qa=d[g].axisGridManager,A=this.colorManager,G=this.is3D,pa=b(f.showaxislimitgridlines,this.showAxisLimitGridLines),G=b(pa,G||d.chart.plotBorderWidth?0:1),Ja=this.inversed;d=d.xAxis;l=b(l,I?1:0);delete n._altGrid;delete n._lastValue;K&&!e.catOccupied&&(e.catOccupied={});!u||K&&e.catOccupied[0]||
+(K?(M=b(f.showvzeroplane,1),ta=b(f.showvzeroplanevalue,B),Aa=b(f.vzeroplanethickness,1),A=c(f.vzeroplanealpha,f.vdivlinealpha,A.getColor("divLineAlpha")),f=0<Aa?Y(c(f.vzeroplanecolor,q),A):Da):(A=b(f.divlinealpha,A.getColor("divLineAlpha")),ta=b(e.showzeroplanevalue,f.showzeroplanevalue,B),!1===this.defaultZeroPlaneHighlighted?(M=b(e.showzeroplane,f.showzeroplane,!(this.defaultZeroPlaneHidden&&!Aa)),Aa=H):(Aa=1===H?2:H,Ea=5,A=R(2*A,100)),Aa=b(e.zeroplanethickness,f.zeroplanethickness,Aa),A=c(e.zeroplanealpha,
+f.zeroplanealpha,A),f=0<Aa?Y(c(e.zeroplanecolor,f.zeroplanecolor,q),A):Da),M&&(ta=ta?k[X](0,l):a,(Ea=qa.addAxisGridLine(n,0,ta,Aa,v,f,Ea,K))&&(Ea.isZeroPlane=!0)),n.effectiveZeroPlaneThickness=M&&parseInt(A,10)&&Aa);K&&e.catOccupied[m]||(ta=!h||za&&ya?a:k[X](m,l),(Ea=pa||G&&(Ja||!d.showLine)?qa.addAxisGridLine(n,m,ta,H,v,q||Da,2,K):qa.addAxisGridLine(n,m,ta,.1,void 0,Da,2,K))&&(Ea.isMinLabel=!0));0>=H&&(H=.1,q=Da);for(m=Number(T(r+t,10));m<p;m=Number(T(m+t,10)),D+=1)u&&0>r&&0<m&&!I&&(qa.addAxisAltGrid(n,
+0),D+=1),0===m||K&&e.catOccupied[m]||(ta=1===B&&0===D%w?k[X](m,l):a,qa.addAxisGridLine(n,m,ta,H,v,q,2,K)),r=m,I||qa.addAxisAltGrid(n,m);I||qa.addAxisAltGrid(n,p);0!==D%w||K&&e.catOccupied[p]||(ta=!h||E&&ya?a:k[X](p,l),(Ea=pa||G&&(!Ja||!d.showLine)?qa.addAxisGridLine(n,p,ta,H,v,q||Da,2,K):qa.addAxisGridLine(n,p,ta,.1,v,Da,2,K))&&(Ea.isMaxLabel=!0));this.realtimeEnabled&&(n.labels._enabled=n.labels.enabled,n._gridLineWidth=n.gridLineWidth,n._alternateGridColor=n.alternateGridColor);n.labels.enabled=
+!1;n.gridLineWidth=0;n.alternateGridColor=Da;n.plotLines.sort(Lb)},xAxisMinMaxSetter:function(a,c,f,d,h){var n=a[g],e=n.x,B=c.chart,w=e.min=b(e.min,0),k=e.max=b(e.max,e.catCount-1),I=0,K=0,l=a.chart.defaultSeriesType,m=/^(column|column3d|bar|bar3d|floatedcolumn|sparkwinloss|boxandwhisker2d|dragcolumn)$/.test(l),p=/^(line|area|spline|areaspline)$/.test(l),l=/^(scatter|bubble|candlestick|dragnode)$/.test(l),X=a.xAxis,r=X.scroll,D=r&&r.enabled,q=b(B.canvaspadding),H=fa(q),v=ha(R(b(q,d,0),f/2-10)),q=
+ha(R(b(q,h,0),f/2-10)),u,za,ya,E;e.adjustMinMax&&(u=b(B.setadaptivexmin,1),k=w=!u,za=b(this.numVDivLines,B.numvdivlines,4),ya=B.adjustvdiv!==Ca,E=b(B.showxaxisvalues,B.showxaxisvalue,1),u=b(B.showvlimits,E),E=b(B.showvdivlinevalue,B.showvdivlinevalues,E),this.axisMinMaxSetter(X,e,B.xaxismaxvalue,B.xaxisminvalue,w,k,za,ya),w=X.min,k=X.max,e.requiredAutoNumericLabels&&(za=b(parseInt(B.xaxisvaluesstep,10),1),this.configurePlotLines(B,a,X,e,u,E,1>za?1:za,n.numberFormatter,!1,!0)),X.plotLines.sort(Lb));
+X.labels.enabled=!1;X.gridLineWidth=0;X.alternateGridColor=Da;(m||n.isScroll)&&!n.hasNoColumn&&!H&&fa(d)&&fa(h)&&(K=f/(k-w+1)*.5,v=0<K-d?0:v,q=0<K-h?0:q,I=0<K-d?.5:0,K=0<K-h?.5:0);m&&!n.hasNoColumn&&(K=I=.5);n.is3d&&(v+=b(a.chart.xDepth,0));a=(f-(v+q))/((D?r.vxLength:k)-w+(I+K));X.min=w-(I+v/a);X.max=k+(K+q/a);D&&(I=r.vxLength,a=X.max-X.min,r.viewPortMin=X.min,r.viewPortMax=X.max,r.scrollRatio=I/a,r.flatScrollBars=n.flatScrollBars,r.scrollBar3DLighting=n.scrollBar3DLighting,X.max=X.min+I);p&&X.min===
+X.max&&(X.min-=.65,X.max+=.65);l&&c.vtrendlines&&t(c.vtrendlines,X,n,!1,!0,!0)},postSeriesAddition:function(a){var f=a[g],d=f.isBar,n=f.is3d,h=a.chart.rotateValues&&!d?270:0,e=f[0],B=e&&e.stacking100Percent,w,I,K,l,m,p,t,X,r,D,q,H,v,u,za,E,ya,M,ta,Ea,Aa,A,qa;if(this.isStacked)for(K in w=f.plotSpacePercent,I=a.chart.defaultSeriesType,w=1-2*w,E=a.series,ya=this.numberFormatter,Aa=k({},a.plotOptions.series.dataLabels.style),A=parseFloat(Aa.fontSize),qa=!e.stacking100Percent,Aa.color=this.newArchitecture?
+"rgba(0,0,0,0)":a.plotOptions.series.dataLabels.color,Aa.backgroundColor=this.newArchitecture?"rgba(0,0,0,0)":a.plotOptions.series.dataLabels.backgroundColor,Aa.borderColor=this.newArchitecture?"rgba(0,0,0,0)":a.plotOptions.series.dataLabels.borderColor,l=e.stack,l){e=l[K].length;m=w/e;t=-(w-m)/2;u=[];H=0;for(X=E.length;H<X;H+=1)r=E[H],r.yAxis||c(r.type,I)!==K||u.push(r);for(p=0;p<e;p+=1,t+=m){q=l[K][p];za=[];H=0;for(X=u.length;H<X;H+=1)r=u[H],b(r.columnPosition,0)===p&&za.push(r.data);if(q&&q.length)for(D=
+0,r=q.length;D<r;D+=1)if(H=q[D])for(v=(H.n||0)+(H.p||0),f.showStackTotal&&(X=D,X+=t,H=0>v?H.n:H.p,a.xAxis.plotLines.push({value:X,width:0,isVline:qa,isTrend:!qa,zIndex:4,_isStackSum:1,_catPosition:D,_stackIndex:p,label:{align:sa,textAlign:n||270!==h?d?0>v?ia:bb:sa:0>v?ia:bb,offsetScale:qa?H:void 0,offsetScaleIndex:0,rotation:h,style:Aa,verticalAlign:wa,y:d?0:0>v?270===h?4:A:-4,x:0,text:f.numberFormatter.yAxis(v)}})),H=0,X=za.length;H<X;H+=1)if(ta=za[H][D])if(Ea=v&&(ta.y||0)/v*100,M=ya.percentValue(Ea),
+ta.toolText=J(ta.toolText,[14,24,25,112],{percentValue:M,sum:ya.dataLabels(v),unformattedSum:v}),ta.y||0===ta.y)B&&(ta.y=Ea,ta.previousY||0===ta.previousY)&&(ta.previousY=ta.previousY/v*100),ta.showPercentValues&&(ta.displayValue=M),f.showPercentValues&&(ta.displayValueArgs=M)}}},styleMapForFont:K,styleApplicationDefinition_font:function(a,b,c){var f,d,n=!1,e,B,w=this.styleMapForFont;switch(b){case "caption":f=a.title;break;case "datalabels":f=a.xAxis.labels;break;case "datavalues":f=a.plotOptions.series.dataLabels;
+n=!0;break;case "tldatavalues":f={style:a.plotOptions.series.dataLabels.tlLabelStyle};break;case "trdatavalues":f={style:a.plotOptions.series.dataLabels.trLabelStyle};break;case "bldatavalues":f={style:a.plotOptions.series.dataLabels.blLabelStyle};break;case "brdatavalues":f={style:a.plotOptions.series.dataLabels.brLabelStyle};break;case "subcaption":f=a.subtitle;break;case "tooltip":f=a.tooltip;break;case "trendvalues":f={style:a[g].trendStyle};break;case "xaxisname":f=a.xAxis.title;break;case "yaxisname":case "pyaxisname":case "axistitle":f=
+[];b=0;for(e=a.yAxis.length;b<e;b+=1)f.push(a.yAxis[b].title);break;case "yaxisvalues":f=[];b=0;for(e=a.yAxis.length;b<e;b+=1)f.push(a.yAxis[b].labels);break;case "vlinelabels":f={style:a[g].divlineStyle};break;case "legend":f={style:a.legend.itemStyle};break;default:(f=a.orphanStyles[b])||(a.orphanStyles[b]=f={text:"",style:{}})}if("object"===typeof f)if(f instanceof Array)for(b=0,e=f.length;b<e;b+=1){B=f[b];for(d in c)if(a=d.toLowerCase(),"function"===typeof w[a])w[a](c[d],B,n);A(B.style)}else{for(d in c)if(a=
+d.toLowerCase(),"function"===typeof w[a])w[a](c[d],f,n);A(f.style)}},parseStyles:function(a){var b,c,f,d={},n,g=this.dataObj;if(g.styles&&g.styles.definition instanceof Array&&g.styles.application instanceof Array){for(b=0;b<g.styles.definition.length;b+=1)c=g.styles.definition[b],c.type&&c.name&&this["styleApplicationDefinition_"+c.type.toLowerCase()]&&(d[c.name.toLowerCase()]=c);for(b=0;b<g.styles.application.length;b+=1)for(c=g.styles.application[b].styles&&g.styles.application[b].styles.split(Ga)||
+[],n=0;n<c.length;n+=1)if(f=c[n].toLowerCase(),d[f]&&g.styles.application[b].toobject)this["styleApplicationDefinition_"+d[f].type.toLowerCase()](a,g.styles.application[b].toobject.toLowerCase(),d[f])}},updateDefaultAnnotations:function(){var a=this.renderer,f=this.dataObj,d=this.chartInstance,n=f&&f.annotations||{},h={},g;if(this.drawAnnotations&&d.dataReady()&&f&&f.chart&&b(f.chart.showannotations,1)){g=b(n.scaleonresize,f.chart.scaleonresize,1);var a={interactionevents:c(this.annotationInteractionEvents,
+!0),showbelow:c(n.showbelow,n.showbelowchart),autoscale:n.autoscale,scaletext:n.scaletext,scaleimages:n.scaleimages,constrainedscale:n.constrainedscale,scaleonresize:g,origw:c(n.origw,f.chart.origw,g?this.origRenderWidth:a.chartWidth),origh:c(n.origh,f.chart.origh,g?this.origRenderHeight:a.chartHeight),xshift:n.xshift,yshift:n.yshift,grpxshift:n.grpxshift,grpyshift:n.grpyshift,xscale:n.xscale,yscale:n.yscale,rootxscale:b(n.xscale,100)/100,rootyscale:b(n.yscale,100)/100},e;a||(a={});for(e in h)a[e]=
+h[e];d.annotations.reset(n,a,this.snapLiterals)}else d.annotations.clear()},dispose:function(){var a,b,c,f,d;this.disposing=!0;if(b=this.renderer&&this.renderer.datasets&&this.renderer.datasets.length)for(d=0;d<b;d++)(f=(c=this.renderer.datasets[d].plot)&&c.groupManager)&&f.dispose(),c&&c.dispose&&c.dispose();this.renderer&&this.renderer.dispose();this.numberFormatter&&this.numberFormatter.dispose();this.hcJSON&&this.hcJSON.chart&&this.hcJSON.chart.renderTo&&delete this.hcJSON.chart.renderTo;for(a in this)delete this[a];
+delete this.disposing;this.disposed=!0}});la("stub",{init:function(a,b,c){this.containerElement=a;this.smartLabel=c.jsVars.smartLabel},standaloneInit:!0},la.base);la("barbase",{spaceManager:function(){return this.placeHorizontalXYSpaceManager.apply(this,arguments)}},la.base);la("singleseries",{series:function(a,b,c){var f=a.data||a.dataset&&a.dataset[0]&&a.dataset[0].data,d;f&&0<f.length&&f instanceof Array&&(d={data:[],hoverEffects:this.parseSeriesHoverOptions(a,b,{},c),colorByPoint:!0},b.legend.enabled=
+!1,c=this.point(c,d,f,a.chart,b),c instanceof Array?b.series=b.series.concat(c):b.series.push(c),this.configureAxis(b,a),a.trendlines&&t(a.trendlines,b.yAxis,b[g],!1,this.isBar))},defaultSeriesType:a,configureAxis:function(a,f){var d=a[g],n=a.xAxis,h=f.chart,e=a.chart.is3D,B,w,k,I,K,l,m,t,X,r,D,q,H=0,v,u,za,E,M,ta,Ea,Aa=this.numberFormatter,qa=b(h.syncaxislimits,0),A;n.title.text=p(h.xaxisname);A=b(parseInt(h.yaxisvaluesstep,10),parseInt(h.yaxisvaluestep,10),1);A=1>A?1:A;B=a.yAxis[0];w=d[0];if(d.isDual)k=
+Aa.getCleanValue(h.pyaxismaxvalue),I=Aa.getCleanValue(h.pyaxisminvalue),B.title.text=p(h.pyaxisname),qa&&!w.stacking100Percent?(q=d[1],D=b(q.max),q=b(q.min),void 0!==D&&void 0!==q&&(w.min=R(w.min,q),w.max=W(w.max,D)),D=Aa.getCleanValue(h.syaxismaxvalue),q=Aa.getCleanValue(h.syaxisminvalue),null!==q&&(I=null!==I?R(I,q):q),null!==D&&(k=null!==k?W(k,D):D)):qa=0;else{k=Aa.getCleanValue(h.yaxismaxvalue);I=Aa.getCleanValue(h.yaxisminvalue);if(d.isSpline)for(q=0;q<a.series.length;q++)D=ya(a.series[q].data,
+d.width,a.plotOptions.series.connectNullData),w.min=R(w.min,D.min),w.max=W(w.max,D.max);B.title.text=p(h.yaxisname)}m=b(this.isStacked?0:this.setAdaptiveYMin,h.setadaptiveymin,this.defSetAdaptiveYMin,0);l=K=!m;t=b(d.numdivlines,h.numdivlines,this.numdivlines,4);X=h.adjustdiv!==Ca;r=b(this.showYAxisValues,h.showyaxisvalues,h.showyaxisvalue,1);D=b(h.showyaxislimits,h.showlimits,r);q=b(h.showdivlinevalue,h.showdivlinevalues,r);e||(H=b(h.showaxislines,h.drawAxisLines,0),za=b(h.axislinethickness,1),M=
+b(h.axislinealpha,100),100<M&&(M=100),u=Y(c(h.axislinecolor,"#000000"),M),B.showLine=b(h.showyaxisline,H),v=n.showLine=b(h.showxaxisline,H),E=n.lineThickness=b(h.xaxislinethickness,za),B.lineThickness=b(h.yaxislinethickness,za),ta=n.lineAlpha=b(h.xaxislinealpha,M),100<ta&&(ta=n.lineAlpha=100),Ea=B.lineAlpha=b(h.yaxislinealpha,M),100<Ea&&(Ea=B.lineAlpha=100),n.lineColor=Y(c(h.xaxislinecolor,u),ta),B.lineColor=Y(c(h.yaxislinecolor,u),Ea),a.chart.xAxisLineVisible=v&&!!E&&0<ta);this.axisMinMaxSetter(B,
+w,k,I,K,l,t,X);this.configurePlotLines(h,a,B,w,D,q,A,d.numberFormatter,!1);B.reversed&&0<=B.min&&(a.plotOptions.series.threshold=B.max);d.isDual&&(B=a.yAxis[1],w=d[1],D=b(h.showsecondarylimits,D),q=b(h.showdivlinesecondaryvalue,r),qa?(n=a.yAxis[0],B.min=n.min,B.max=n.max,B.tickInterval=n.tickInterval,delete w.max,delete w.min):(k=Aa.getCleanValue(h.syaxismaxvalue),I=Aa.getCleanValue(h.syaxisminvalue),m=b(h.setadaptivesymin,m),l=K=!m,this.axisMinMaxSetter(B,w,k,I,K,l,t,X)),e||(B.showLine=b(h.showsyaxisline,
+H),B.lineThickness=b(h.syaxislinethickness,za),e=B.lineAlpha=b(h.syaxislinealpha,M),100<e&&(e=100),B.lineColor=Y(c(h.syaxislinecolor,u),e)),this.configurePlotLines(h,a,B,w,D,q,A,d.numberFormatter,!0),B.title.text=p(h.syaxisname))},pointValueWatcher:function(a,f,d,n,h,e,B){a=a[g];var w;if(null!==f)return d=b(d,0),a[d]||(a[d]={}),d=a[d],n&&(this.distributedColumns&&(a.marimekkoTotal+=f),n=d.stack,h=b(h,0),e=b(e,0),B=c(B,fb),n[B]||(n[B]=[]),B=n[B],B[e]||(B[e]=[]),e=B[e],e[h]||(e[h]={}),h=e[h],0<=f?void 0!==
+h.p?(w=h.p,f=h.p+=f):h.p=f:h.n?(w=h.n,f=h.n+=f):h.n=f),d.max=d.max>f?d.max:f,d.min=d.min<f?d.min:f,w},parseSeriesHoverOptions:function(a,f,d){a=f.chart.plotHoverEffects;f={enabled:c(d.showhovereffect,d.hovereffect,a.enabled)};f.highlight=b(d.highlightonhover,d.highlightplotonhover,a.highlight);f.columnHighlight=b(f.highlight,d.highlightcolumnonhover,d.highlightbaronhover,a.columnHighlight);f.anchorHighlight=b(f.highlight,d.highlightanchoronhover,a.anchorHighlight);f.anchorHighlight=b(f.highlight,
+d.highlightimageonhover,a.imageHighlight);f.bubbleHighlight=b(f.highlight,d.highlightbubbleonhover,d.highlightbaronhover,a.bubbleHighlight);f.imageHoverAlpha=c(d.anchorimagehoveralpha,a.anchorImageHoverAlpha);f.imageHoverScale=c(d.anchorimagehoverscale,a.anchorImageHoverScale);f.color=c(d.hovercolor,d.bubblehovercolor,a.color);f.alpha=c(d.hoveralpha,a.alpha);f.scale=c(d.hoverscale,d.bubblehoverscale,a.scale);f.gradientColor=void 0!==d.hovergradientcolor?d.hovergradientcolor:a.gradientColor;f.ratio=
+c(d.hoverratio,a.ratio);f.angle=c(d.hoverangle,a.angle);f.borderColor=c(d.borderhovercolor,a.borderColor);f.borderAlpha=c(d.borderhoveralpha,a.borderAlpha);f.borderThickness=b(d.borderhoverthickness,a.borderThickness);f.borderDashed=b(d.borderhoverdashed,a.borderDashed);f.borderDashGap=b(d.borderhoverdashgap,a.borderDashGap);f.borderDashLen=b(d.borderhoverdashlen,a.borderDashLen);f.shadow=c(d.hovershadow,a.shadow);f.anchorSides=c(d.anchorhoversides,a.anchorSides);f.anchorRadius=c(d.anchorhoverradius,
+a.anchorRadius);f.anchorScale=c(d.anchorhoverscale,a.anchorScale);f.anchorAlpha=c(d.anchorhoveralpha,d.hoveralpha,a.anchorAlpha);f.anchorBgColor=c(d.anchorbghovercolor,d.anchorhovercolor,a.anchorBgColor);f.anchorBgAlpha=c(d.anchorbghoveralpha,a.anchorBgAlpha);f.anchorBorderColor=c(d.anchorborderhovercolor,a.anchorBorderColor);f.anchorBorderAlpha=c(d.anchorborderhoveralpha,a.anchorBorderAlpha);f.anchorBorderThickness=b(d.anchorborderhoverthickness,a.anchorBorderThickness);f.anchorStartAngle=c(d.anchorhoverstartangle,
+a.anchorStartAngle);f.anchorDip=c(d.anchorhoverdip,a.anchorDip);f.anchorAnimation=b(d.anchorhoveranimation,a.anchorAnimation,1);f.negativeColor=c(d.negativehovercolor,a.negativeColor);f.is3DBubble=b(d.is3donhover,a.is3DBubble);return f},parseLegendOptions:function(a,f){var d={borderColor:c(f.legendiconbordercolor,a.legendiconbordercolor),bgColor:c(f.legendiconbgcolor,a.legendiconbgcolor),alpha:c(f.legendiconalpha,a.legendiconalpha),bgAlpha:c(f.legendiconbgalpha,a.legendiconbgalpha),sides:b(f.legendiconsides,
+a.legendiconsides),borderThickness:b(f.legendiconborderthickness,a.legendiconborderthickness),startAngle:b(f.legendiconstartangle,a.legendiconstartangle)};if(d.customLegendIcon=b(a.drawcustomlegendicon,f.drawcustomlegendicon))d.startAngle=b(d.startAngle,45),d.symbol=pb(d.sides||4);return d},pointHoverOptions:function(f,d,n){var g,h,e,B={};g=d.hoverEffects;d=b(f.hovereffect,g&&g.enabled);h=!1;var w={enabled:d},k=n&&a+n.plotType.toLowerCase();if(void 0===d)if(this.forceHoverEnable)h=d=w.enabled=!0;
+else{"anchor"==k&&(h=n.imageUrl?d=w.enabled=void 0!==c(f.anchorimagehoveralpha,g.imageHoverAlpha,f.anchorimagehoverscale,g.imageHoverScale,void 0):d=w.enabled=void 0!==c(f.hovercolor,f.anchorhovercolor,f.anchorbghovercolor,g.anchorBgColor,g.color,f.hoveralpha,f.anchorhoveralpha,g.anchorAlpha,f.bghoveralpha,f.anchorbghoveralpha,g.anchorBgAlpha,f.anchorborderhovercolor,f.borderhovercolor,g.anchorBorderColor,f.anchorborderhoverthickness,f.borderhoverthickness,g.anchorBorderThickness,f.anchorborderhoveralpha,
+f.borderhoveralpha,g.anchorBorderAlpha,f.hoverdip,f.anchorhoverdip,g.anchorDip,f.anchorhoverstartangle,g.anchorStartAngle,f.hoversides,f.anchorhoversides,g.anchorSides,f.hoverradius,f.anchorhoverradius,g.anchorRadius,void 0));if("column"==k||"bubble"==k)h=d=w.enabled=void 0!==c(f.hoveralpha,g.alpha,f.hovergradientcolor,g.gradientColor,f.borderhovercolor,g.borderColor,f.borderhoverthickness,g.borderThickness,f.hoverratio,g.ratio,f.hoverangle,g.angle,f.borderhoveralpha,g.borderAlpha,f.borderhoverdashed,
+g.borderDashed,f.borderhoverdashgap,g.borderDashGap,f.borderhoverdashlen,g.borderDashLen,f.hovercolor,g.color,void 0);h||"bubble"!=k||(h=d=w.enabled=void 0!==c(f.negativehovercolor,g.negativeColor,f.is3donhover,g.is3DBubble,f.hoverscale,g.scale,void 0));"pie"==k&&(h=d=w.enabled=void 0!==c(f.hovercolor,g.color,f.hoveralpha,g.alpha,f.borderhovercolor,g.borderColor,f.borderhoverthickness,g.borderThickness,f.borderhoveralpha,g.borderAlpha,void 0))}if(d){w.highlight=b(f.highlightonhover,g.highlight);w.columnHighlight=
+b(w.highlight,f.highlightcolumnonhover,f.highlightbaronhover);w.anchorHighlight=b(w.highlight,f.highlightanchoronhover);w.bubbleHighlight=b(w.highlight,f.highlightbubbleonhover);w.alpha=c(f.hoveralpha,g.alpha,n.alpha);w.scale=c(f.hoverscale,g.scale,1);w.gradientColor=void 0===f.hovergradientcolor?g.gradientColor:f.hovergradientcolor;w.borderColor=c(f.borderhovercolor,g.borderColor,n.borderColor);w.borderThickness=b(f.borderhoverthickness,g.borderThickness,n.borderWidth);w.ratio=c(f.hoverratio,g.ratio,
+n.ratio);w.angle=c(f.hoverangle,g.angle,n.angle);w.borderAlpha=c(f.borderhoveralpha,g.borderAlpha,n.borderAlpha);w.borderDashed=b(f.borderhoverdashed,g.borderDashed,n.borderDashed,0);w.borderDashGap=b(f.borderhoverdashgap,g.borderDashGap,n.borderDashGap);w.borderDashLen=b(f.borderhoverdashlen,g.borderDashLen,n.borderDashLen);w.shadow=c(f.hovershadow,g.shadow,0);w.color=c(f.hovercolor,g.color);"anchor"==k&&(n.imageUrl&&(w.imageHoverAlpha=b(f.anchorimagehoveralpha,g.imageHoverAlpha,100),w.imageHoverScale=
+n.imageScale*O(b(f.anchorimagehoverscale,g.imageHoverScale,110))*.01,w.anchorAnimation=b(f.anchorhoveranimation,g.anchorAnimation,1)),w.anchorColor=na(c(f.hovercolor,f.anchorhovercolor,f.anchorbghovercolor,g.anchorBgColor,g.color,n.anchorBgColor)),w.anchorAlpha=c(f.hoveralpha,f.anchorhoveralpha,g.anchorAlpha,n.anchorAlpha),w.anchorBgAlpha=c(f.bghoveralpha,f.anchorbghoveralpha,g.anchorBgAlpha,w.anchorAlpha,n.anchorBgAlpha),w.anchorBorderColor=c(f.anchorborderhovercolor,f.borderhovercolor,g.anchorBorderColor,
+n.anchorBorderColor),w.anchorBorderThickness=c(f.anchorborderhoverthickness,f.borderhoverthickness,g.anchorBorderThickness,n.anchorBorderThickness),w.anchorBorderAlpha=b(f.anchorborderhoveralpha,f.borderhoveralpha,g.anchorBorderAlpha,w.anchorAlpha,n.anchorBorderAlpha),w.anchorDip=b(f.hoverdip,f.anchorhoverdip,g.anchorDip),w.startAngle=c(f.anchorhoverstartangle,g.anchorStartAngle,n.anchorAngle),w.anchorSides=b(f.hoversides,f.anchorhoversides,g.anchorSides,n.anchorSides),w.anchorRadius=b(f.hoverradius,
+f.anchorhoverradius,g.anchorRadius),w.anchorScale=b(f.hoverscale,f.anchorhoverscale,g.anchorScale),w.anchorAnimation=b(f.anchorhoveranimation,g.anchorAnimation,1),void 0===w.anchorRadius&&(w.anchorRadius=!h||w.anchorHighlight?n.anchorRadius&&n.anchorRadius+1:n.anchorRadius));if(h||(w.columnHighlight||w.bubbleHighlight)&&w.color&&1==w.highlight)w.highlight=0;"column"==k&&(w.color=(c(w.color,n.color)+Ga+(void 0===w.gradientColor?n.gradientColor:w.gradientColor)).replace(/,+?$/,""));"pie"===k&&(w.color=
+c(w.color,n.color).replace(/,+?$/,""));"bubble"==k&&(w.negativeColor=c(f.negativehovercolor,g.negativeColor,n.negativeColor),w.is3d=b(f.is3donhover,g.is3DBubble,n.is3d),w.color=w.negativeColor&&0>f.z?w.negativeColor:w.color||n.color,e="string"==typeof w.color,w.color=na(e?w.color:w.color.FCcolor.color),w.color=w.is3d?la.bubble.getPointColor(w.color,w.alpha):{FCcolor:{color:w.color,alpha:w.alpha}});if(1==w.highlight&&"anchor"!==k){f=(e="string"==typeof w.color)?w.color.split(/\s{0,},\s{0,}/):w.color.FCcolor.color.split(/\s{0,},\s{0,}/);
+g=f.length;for(h=0;h<g;h++)f[h]=va(f[h],70);e?w.color=f.join(","):w.color.FCcolor.color=f.join(",")}"pie"===k&&(B={color:this.getPointColor(w.color,w.alpha,n.radius3D),alpha:w.alpha,borderColor:Y(w.borderColor,w.borderAlpha),borderWidth:w.borderThickness});"column"==k&&(w.colorArr=da(w.color,w.alpha,w.ratio,w.angle,n.isRoundEdged,w.borderColor,R(w.alpha,w.borderAlpha).toString(),n.isBar,n.is3d),w.dashStyle=w.borderDashed?m(w.borderDashLen,w.borderDashGap,w.borderThickness):"none",B={shadow:w.shadow,
+color:w.colorArr[0],borderColor:w.colorArr[1],borderWidth:w.borderThickness,use3DLighting:n.use3DLighting,dashStyle:w.dashStyle});"anchor"==k&&(B=n.imageUrl?{animation:w.anchorAnimation,imageHoverAlpha:w.imageHoverAlpha,imageHoverScale:w.imageHoverScale,shadow:w.shadow,fillColor:{FCcolor:{color:w.anchorColor,alpha:w.anchorBgAlpha*w.anchorAlpha/100+a}},lineColor:{FCcolor:{color:w.anchorBorderColor,alpha:w.anchorBorderAlpha}},lineWidth:w.anchorBorderThickness,radius:w.anchorRadius,symbol:pb(w.anchorSides),
+startAngle:w.startAngle,sides:w.anchorSides,scale:w.anchorScale,dip:w.anchorDip}:{animation:w.anchorAnimation,shadow:w.shadow,fillColor:{FCcolor:{color:w.anchorColor,alpha:w.anchorBgAlpha*w.anchorAlpha/100+a}},lineColor:{FCcolor:{color:w.anchorBorderColor,alpha:w.anchorBorderAlpha}},lineWidth:w.anchorBorderThickness,radius:w.anchorRadius,symbol:pb(w.anchorSides),startAngle:w.startAngle,sides:w.anchorSides,scale:w.anchorScale,dip:w.anchorDip});"bubble"==k&&(B={symbol:w.seriesAnchorSymbol,shadow:w.shadow,
+scale:w.scale,fillColor:w.color,lineColor:{FCcolor:{color:w.borderColor,alpha:w.alpha}},lineWidth:w.borderThickness})}return{enabled:d,options:w,rolloverOptions:B}},getPointStub:function(f,d,n,e){var h=this.dataObj.chart;e=e[g];d=null===d?d:e.numberFormatter.dataLabels(d);var B=l(p(c(f.tooltext,e.tooltext))),w=l(p(f.displayvalue)),h=e.showTooltip?void 0!==B?J(B,[1,2,3,5,6,7],{formattedValue:d,label:n,yaxisName:p(h.yaxisname),xaxisName:p(h.xaxisname)},f,h):null===d?!1:n!==a?n+e.tooltipSepChar+d:d:
+a;e=b(f.showvalue,e.showValues)?void 0!==w?w:d:a;d=c(w,d,a);f=c(f.link);return{displayValue:e,displayValueArgs:d,categoryLabel:n,toolText:h,link:f}},updateSnapPoints:function(){var a=this,b=a.snapLiterals,c=function(a,b){var c=0;switch(a){case "startx":c=b.x;break;case "starty":c=b.y;break;case "x":case "middlex":case "centerx":c=b.x+b.width/2;break;case "y":case "middley":case "centery":c=b.y+b.height/2;break;case "endx":c=b.x+b.width;break;case "endy":c=b.y+b.height;break;default:c=0}return c};
+b.dataset=function(b,f){var d=a.renderer&&a.renderer.plots,n,g,e,B;e=a.is3D;if(!d||!d.length)return 0;isNaN(b[0])?n=0:(n=Number(b[0]),b=b.slice(1));g=b[0];if("set"===g){isNaN(b[1])?(B=0,b=b.slice(1)):(B=Number(b[1]),b=b.slice(2));g=b[0];d=a.newArchitecture?(d=d[n]&&d[n].components.data[B])&&(d.graphics.element||d.graphics.hotElement):(d=d[n]&&d[n].items[B])&&d.graphic;if(!d)return 0;e=f&&e?d._getBBox2():d.getBBox();B=c(g,e)}return B};b.xaxis=function(b){var f=a.renderer&&a.renderer.xAxis&&a.renderer.xAxis[0]&&
+a.renderer.xAxis[0].labels,d,n;if(!f||!f.length)return 0;n=b[0];if("label"===n){isNaN(b[1])?(d=0,b=b.slice(1)):(d=Number(b[1]),b=b.slice(2));n=b[0];b=f[d];if(!b)return 0;b=b.getBBox();d=c(n,b)}return d};b.yaxis=function(b){var f=a.renderer&&a.renderer.yAxis,d,n;if(!f||!f.length)return 0;isNaN(b[0])?d=0:(d=Number(b[0]),b=b.slice(1));d=f[d];if(!d)return 0;f=b[0];if("label"===f){n=d.labels;isNaN(b[1])?(d=0,b=b.slice(1)):(d=Number(b[1]),b=b.slice(2));f=b[0];b=n[d];if(!b)return 0;b=b.getBBox();n=c(f,b)}return n}}},
+la.base);la("multiseries",{series:function(a,c,f){var d,h,n=c[g],e,B;c.legend.enabled=Boolean(b(a.chart.showlegend,1));if(a.dataset&&0<a.dataset.length){this.categoryAdder(a,c);d=0;for(h=a.dataset.length;d<h;d+=1)e=a.dataset[d],B={__positiionIndex:d,hoverEffects:this.parseSeriesHoverOptions(a,c,e,f),visible:!b(e.initiallyhidden,0),legendCosmetics:this.parseLegendOptions(a.chart,e),data:[]},this.isStacked||(B.numColumns=h),e=this.point(f,B,e,a.chart,c,n.oriCatTmp.length,d),e instanceof Array?c.series=
+c.series.concat(e):c.series.push(e);this.configureAxis(c,a);a.trendlines&&!this.isLog&&t(a.trendlines,c.yAxis,n,!1,this.isBar,void 0,this.inversed)}},categoryAdder:function(c,f){var d,n=0,h=f[g],e=h.axisGridManager,B=c.chart,w=f.xAxis,k,h=h.x,I,K,l,m;if(c.categories&&c.categories[0]&&c.categories[0].category)for(c.categories[0].font&&(f.xAxis.labels.style.fontFamily=c.categories[0].font),void 0!==(d=b(c.categories[0].fontsize))&&(1>d&&(d=1),f.xAxis.labels.style.fontSize=d+oa,A(f.xAxis.labels.style)),
+c.categories[0].fontcolor&&(f.xAxis.labels.style.color=c.categories[0].fontcolor.split(Ga)[0].replace(/^\#?/,"#")),K=f[g].oriCatTmp,l=c.categories[0].category,d=0;d<l.length;d+=1)l[d].vline?e.addVline(w,l[d],n,f):(I=b(l[d].showlabel,B.showlabels,1),m=c.categories[0].category[d],k=p(r(m.label,m.name)),e.addXaxisCat(w,n,n,I?k:a,{},m,B),K[n]=r(p(m.tooltext),k),n+=1);h.catCount=n},getPointStub:function(f,d,n,e,h,B,w,k,I,K){var m=this.dataObj.chart,t=this.isDual,X=this.isXY,D=this.isMLAxis,q=this.isStacked,
+H=this.isErrorChart,v;e=e[g];var u,za,E=null===d?d:this.numberFormatter.dataLabels(d,w),ya,M=l(p(c(f.tooltext,h.plottooltext,e.tooltext))),ta=e.tooltipSepChar,Ea,Aa={},A,qa,G,pa,Ja,Ka,lb,ea,R,xa;H&&(qa=null===k?k:this.numberFormatter.dataLabels(k,w),Ka=null===d?a:this.numberFormatter.percentValue(k/d*100),Ea=[1,2,3,4,5,6,7,99,100,101,102],d={yaxisName:pa=p(t?w?m.syaxisname:m.pyaxisname:m.yaxisname),xaxisName:Ja=p(m.xaxisname),formattedValue:E,label:n,errorDataValue:qa,errorPercentValue:Ka},X?(G=null===
+I?I:this.numberFormatter.xAxis(I),lb=null===K?a:this.numberFormatter.percentValue(I/K*100),Ea.push(103,104,105,106,107,108,109,110),R=c(f.horizontalerrorvalue,f.errorvalue),d.errorValue=ea=c(f.verticalerrorvalue,f.errorvalue),K=l(p(c(f.verticalerrorplottooltext,f.errorplottooltext,h.verticalerrorplottooltext,h.errorplottooltext,m.verticalerrorplottooltext,m.errorplottooltext))),null!==k&&(d.verticalErrorDataValue=qa,d.verticalErrorPercentValue=Ka,d.verticalErrorValue=ea),null!==I&&(d.horizontalErrorDataValue=
+G,d.horizontalErrorPercentValue=lb,d.horizontalErrorValue=R),A=l(p(c(f.horizontalerrorplottooltext,f.errorplottooltext,h.horizontalerrorplottooltext,h.errorplottooltext,m.horizontalerrorplottooltext,m.errorplottooltext))),Aa._hErrortoolText=e.showTooltip?void 0!==A?J(A,Ea,{yaxisName:pa=p(t?w?m.syaxisname:m.pyaxisname:m.yaxisname),xaxisName:Ja=p(m.xaxisname),formattedValue:E,label:n,errorDataValue:G,errorPercentValue:lb,errorValue:R,verticalErrorDataValue:qa,verticalErrorPercentValue:Ka,verticalErrorValue:ea,
+horizontalErrorDataValue:G,horizontalErrorPercentValue:lb,horizontalErrorValue:R},f,m,h):null===k?!1:G:!1):(K=l(p(c(f.errorplottooltext,h.errorplottooltext,m.errorplottooltext))),d.errorValue=ea=c(f.errorvalue)),Aa._errortoolText=e.showTooltip?void 0!==K?J(K,Ea,d,f,m,h):null===k?!1:qa:!1);e.showTooltip?void 0!==M?(q=[4,5,6,7],w={yaxisName:pa||p(t?w?m.syaxisname:m.pyaxisname:D?h._yAxisName:m.yaxisname),xaxisName:Ja||p(m.xaxisname)},X?(q.push(8,9,10,11),w.yDataValue=E,w.xDataValue=n,H&&(q.push(103,
+104,105,106,107,108,109,110),null!==k&&(w.verticalErrorDataValue=qa,w.verticalErrorPercentValue=Ka,w.verticalErrorValue=ea),null!==I&&(w.horizontalErrorDataValue=G,w.horizontalErrorPercentValue=lb,w.horizontalErrorValue=R))):(q.push(1,2,3),w.formattedValue=E,w.label=n,H&&(q.push(99,100,101,102),w.errorValue=ea,null!==k&&(w.errorDataValue=qa,w.errorPercentValue=Ka))),h=J(M,q,w,f,m,h)):null===E?h=!1:(e.seriesNameInToolTip&&(ya=r(h&&h.seriesname)),h=ya?ya+ta:a,h+=n?n+ta:a,e.showPercentInToolTip&&q?(za=
+!0,h+="$percentValue"):h+=E):h=!1;b(f.showvalue,B)?void 0!==l(f.displayvalue)?v=p(f.displayvalue):e.showPercentValues?u=!0:v=E:v=a;e.showPercentValues||(xa=c(p(f.displayvalue),E,a));Aa.link=c(f.link);Aa.displayValue=v;Aa.displayValueArgs=xa;Aa.categoryLabel=n;Aa.toolText=h;Aa.showPercentValues=u;Aa.showPercentInToolTip=za;return Aa}},la.singleseries);la("xybase",{hideRLine:function(){var a=this.chart.series[this.index+1];a&&a.hide&&a.hide()},showRLine:function(){var a=this.chart.series[this.index+
+1];a&&a.show&&a.show()},getRegressionLineSeries:function(a,b,c){var f,d,n,g;g=a.sumXY;var e=a.sumX,w=a.sumY;d=a.xValues;n=a.sumXsqure;f=a.yValues;a=a.sumYsqure;b?(d.sort(xa),f=d[0],d=d[d.length-1],g=(c*g-e*w)/(c*n-ba(e,2)),n=!isNaN(g)&&isFinite(g)?g*(f-e/c)+w/c:w/c,c=!isNaN(g)&&isFinite(g)?g*(d-e/c)+w/c:w/c,c=[{x:f,y:n},{x:d,y:c}]):(f.sort(xa),n=f[0],f=f[f.length-1],g=(c*g-e*w)/(c*a-ba(w,2)),d=isNaN(g)?e/c:g*(n-w/c)+e/c,c=isNaN(g)?e/c:g*(f-w/c)+e/c,c=[{x:d,y:n},{x:c,y:f}]);return c},pointValueWatcher:function(a,
+b,c,f){var d=a[g];null!==b&&(a=d[0],a.max=a.max>b?a.max:b,a.min=a.min<b?a.min:b);null!==c&&(a=d.x,a.max=a.max>c?a.max:c,a.min=a.min<c?a.min:c);f&&(c=c||0,b=b||0,f.sumX+=c,f.sumY+=b,f.sumXY+=c*b,f.sumXsqure+=ba(c,2),f.xValues.push(c),f.sumYsqure+=ba(b,2),f.yValues.push(b))}},la.multiseries);la("scrollbase",{postSeriesAddition:function(){var a=this.hcJSON,d=a.xAxis.scroll,n=a[g],e=n.width,h=n.x.catCount,w=this.dataObj.chart,B=this.colorManager,k,I,K,l,m,p;n.isScroll=!0;a.chart.hasScroll=!0;if(this.isStacked)k=
+1;else{I=k=0;l=a.series;p=a.chart.defaultSeriesType;for(K=l.length;I<K;I++)m=c(l[I].type,p),"column"===m&&(k+=1);1>k&&(k=1)}h*=k;e=b(w.numvisibleplot,ka(e/this.avgScrollPointWidth));d&&2<=e&&e<h&&(d.enabled=!0,d.vxLength=e/k,d.startPercent=R(1,W(0,parseFloat(w.scrolltoend)||0)),d.padding=b(w.scrollpadding,0),d.height=b(w.scrollheight,16),d.showButtons=!!b(w.scrollshowbuttons,1),d.buttonPadding=b(w.scrollbtnpadding,0),d.color=na(c(w.scrollcolor,B.getColor("altHGridColor"))),n.marginBottomExtraSpace+=
+d.padding+d.height);if(f||b(w.enabletouchscroll,0))a.chart.zoomType="x",a.chart.nativeZoom=!1,a.chart.selectionMarkerFill="rgba(255,255,255,0)",(a.callbacks||(a.callbacks=[])).push(function(a){L(a.containerElement,"selectionstart selectiondrag",la.scrollbase.performTouchScroll,{})})},performTouchScroll:function(a){var b=this.xAxis[0].scroller,c=b.config,c=c.trackLength/(c.width/c.scrollRatio)*(a.chartX||1);!0!==a.isOutsidePlot&&B(b.elements.anchor.element,"selectionstart"===a.type?"dragstart":"drag",
+{pageX:-c,pageY:-a.chartY})}},la.multiseries);la("logbase",{isLog:!0,isValueAbs:!0,configureAxis:function(f,d){var n=f[g],e=n.axisGridManager,h=this.numberFormatter,w=f.series,B=f.xAxis,I=f.yAxis[0],K=n[0],l=d.chart,m=!b(l.showyaxislimits,l.showlimits,l.showyaxisvalues,1),X=!b(l.showdivlinevalues,l.showyaxisvalues,1),r=b(l.base,l.logbase,10),D=b(l.yaxismaxvalue),q=b(l.yaxisminvalue),H=this.colorManager,v=1===b(l.showminordivlinevalues),u=c(l.minordivlinecolor,I.gridLineColor,H.getColor("divLineColor")),
+za=b(l.minordivlinealpha,l.divlinealpha,H.getColor("divLineAlpha")),H=[I,void 0,void 0,b(l.divlinethickness,2),I.gridLineDashStyle,I.gridLineColor,2],u=[I,void 0,void 0,b(l.minordivlinethickness,1),I.gridLineDashStyle,Y(c(l.minordivlinecolor,u),b(l.minordivlinealpha,za/2)),2],za=v||za&&u[3],E=b(l.showaxislimitgridlines,this.showAxisLimitGridLines),ya=b(E,this.is3D||f.chart.plotBorderWidth?0:1),M,ta;if(0>=r||1===r)r=10;0>=D&&(D=void 0);0>=q&&(q=void 0);D=this.getLogAxisLimits(K.max||r,K.min||1,D,q,
+r,za?l.numminordivlines:0);B.title.text=p(l.xaxisname);B.showLine=b(l.showxaxisline,l.showaxislines,0);B.lineThickness=b(l.xaxislinethickness,l.axislinethickness,1);B.lineAlpha=b(l.xaxislinealpha,l.axislinealpha,100);B.lineColor=Y(c(l.xaxislinecolor,l.axislinecolor,"000"));k(I,{title:{text:p(l.yaxisname)},labels:{enabled:!1},gridLineWidth:0,alternateGridColor:Da,reversed:"1"===l.invertyaxis,max:wb(D.Max,r),min:wb(D.Min,r),showLine:b(l.showyaxisline,l.showaxislines,0),lineThickness:b(l.yaxislinethickness,
+l.axislinethickness,1),lineAlpha:b(l.yaxislinealpha,l.axislinealpha,100),lineColor:Y(c(l.yaxislinecolor,l.axislinecolor,"000"))});for(l=w.length;l--;)if(q=w[l])for(q.threshold=I.min,ta=(q=q.data)&&q.length||0;ta--;)M=q[ta],M.y=wb(M.y,r);delete K.max;delete K.min;K.isLog=!0;I.reversed&&0<=I.min&&(f.plotOptions.series.threshold=I.max);d.trendlines&&t(d.trendlines,[{max:D.Max,min:D.Min,plotLines:I.plotLines,plotBands:I.plotBands,title:I.title}],n);for(l=I.plotLines.length;l--;)M=I.plotLines[l],M.value&&
+(M.value=wb(M.value,r)),M.from&&(M.from=wb(M.from,r)),M.to&&(M.to=wb(M.to,r));for(l=I.plotBands.length;l--;)M=I.plotBands[l],M.from&&(M.from=wb(M.from,r)),M.to&&(M.to=wb(M.to,r));for(l=D.divArr.length;l--;){M=D.divArr[l];if(M.ismajor)H[1]=wb(M.value,r),H[2]=h.yAxis(M.value),e.addAxisGridLine.apply(e,H);else if(za||M.isextreme)u[1]=wb(M.value,r),u[2]=v||M.isextreme?h.yAxis(M.value):a,e.addAxisGridLine.apply(e,u);q=I.plotLines[I.plotLines.length-1];M.isextreme?(q.width=E||ya&&(!M.isMin||!B.showLine)?
+q.width:.1,m&&(q.label.text=a)):X&&q.label&&(q.label.text=a)}},getLogAxisLimits:function(a,b,c,f,d,n){var g=function(a){return null===a||void 0===a||""===a||isNaN(a)?!1:!0},e=0,w=[],B,k,I,K,l,m,p,t;a===b&&(b-=b/100);g(c)&&Number(c)>=a?a=Number(c):(c=1<d?ha(ga(a)/ga(d)):ka(ga(a)/ga(d)),a=ba(d,c),k=c);k||(k=1<d?ha(ga(a)/ga(d)):ka(ga(a)/ga(d)));g(f)&&Number(f)<=b?b=Number(f):(c=1<d?ka(ga(b)/ga(d)):ha(ga(b)/ga(d)),b=ba(d,c),B=c);B||(B=1<d?ka(ga(b)/ga(d)):ha(ga(b)/ga(d)));f=Number(String(ga(d)/ga(10)));
+n=Number(n)||(ka(f)==f?8:4);1<d?(I=k,K=B):0<d&&1>d&&(I=B,K=k);f=k;for(B=I;B>=K;--B)if(I=ba(d,f),b<=I&&a>=I&&(w[e++]={value:I,ismajor:!0}),B!=K){k=1<d?-1:1;I=ba(d,f)-ba(d,f+k);c=I/(n+1);for(g=1;g<=n;++g)I=ba(d,f+k)+c*g,b<=I&&a>=I&&(w[e++]={value:I,ismajor:!1});1<d?f--:f++}for(p in w)for(t in w[p])"value"==t&&(l||(l=w[p][t]==b&&(w[p].isextreme=w[p].isMin=!0)),m||(m=w[p][t]==a&&(w[p].isextreme=w[p].isMax=!0)));l||(w[e++]={value:b,ismajor:!0,isMin:!0,isextreme:!0});m||(w[e]={value:a,ismajor:!0,isMax:!0,
+isextreme:!0});return{Max:a,Min:b,divArr:w}},pointValueWatcher:function(a,c,f){a=a[g];f=b(f,0);0<c&&(a[f]||(a[f]={}),f=a[f],f.max=f.max>c?f.max:c,f.min=f.min<c?f.min:c)}},la.mslinebase);nb=la.singleseries;qb=la.multiseries;la("column2dbase",{point:function(f,d,n,e,h){var w=n.length,B=h[g],I=B.axisGridManager,K=h.xAxis,B=B.x,l=this.colorManager,t=/3d$/.test(h.chart.defaultSeriesType),X=this.isBar,D=/^spark/i.test(f);f=c(e.showplotborder,D||t?Ca:mb)===mb?t?1:b(e.plotborderthickness,1):0;var q=h.chart.useRoundEdges,
+H=b(e.plotborderalpha,e.plotfillalpha,100),v=c(e.plotbordercolor,l.getColor("plotBorderColor")).split(Ga)[0],D=D?"":b(e.useplotgradientcolor,1)?V(e.plotgradientcolor,l.getColor("plotGradientColor")):a,u=0,za=Boolean(b(e.use3dlighting,1)),E=h[g].numberFormatter,M,ya=b(e.plotborderdashed,0),ta=b(e.plotborderdashlen,5),Ea=b(e.plotborderdashgap,4),Aa,qa,A,G,pa,Ja,Ka,lb,ea,J,R,xa,Z,yb;for(A=0;A<w;A+=1)Z=n[A],Z.vline?I.addVline(K,Z,u,h):(qa=E.getCleanValue(Z.value),M=b(Z.showlabel,e.showlabels,1),G=p(r(Z.label,
+Z.name)),Aa=c(Z.color,l.getPlotColor()),pa=c(Z.alpha,e.plotfillalpha,jb),Ja=c(Z.ratio,e.plotfillratio),Ka=c(360-e.plotfillangle,X?180:90),lb=c(Z.alpha,H),ea=b(Z.dashed,ya),J=c(Z.dashgap,Ea),R=c(Z.dashlen,ta),I.addXaxisCat(K,u,u,M?G:a,Z,{},e,Aa),u+=1,0>qa&&(Ka=X?180-Ka:360-Ka),yb={opacity:pa/100},xa=da(Aa+Ga+D.replace(/,+?$/,""),pa,Ja,Ka,q,v,lb+a,X,t),M=ea?m(R,J,f):"none",Aa=this.pointHoverOptions(Z,d,{plotType:"column",is3d:t,isBar:X,use3DLighting:za,isRoundEdged:q,color:Aa,gradientColor:D,alpha:pa,
+ratio:Ja,angle:Ka,borderWidth:f,borderColor:v,borderAlpha:lb,borderDashed:ea,borderDashGap:J,borderDashLen:R,shadow:yb}),d.data.push(k(this.getPointStub(Z,qa,G,h),{y:qa,shadow:yb,color:xa[0],borderColor:xa[1],borderWidth:f,use3DLighting:za,dashStyle:M,tooltipConstraint:this.tooltipConstraint,hoverEffects:Aa.enabled&&Aa.options,rolloverProperties:Aa.enabled&&Aa.rolloverOptions})),this.pointValueWatcher(h,qa));B.catCount=u;return d},defaultSeriesType:"column"},nb);la("linebase",{defaultSeriesType:"line",
+hasVDivLine:!0,defaultPlotShadow:1,point:function(f,d,n,e,h){var w,B,I,K,l,t,X,D,q,H,v,u,za,E,M,ya,ta,Aa,Ea,qa,A,G,pa,Ka,Ja,lb;f=h.chart;var ea=n.length,J=h.xAxis;w=h[g];var R=this.colorManager,Z,xa=w.axisGridManager,yb=0,F=w.x,Gb=h[g].numberFormatter,O,Fb,W,L,Lb,T;E=na(c(e.linecolor,e.palettecolors,R.getColor("plotFillColor")));M=c(e.linealpha,jb);v=b(e.linethickness,this.lineThickness,4);u=Boolean(b(e.linedashed,0));X=b(e.linedashlen,5);D=b(e.linedashgap,4);Ja=b(e.anchorshadow,0);d.color={FCcolor:{color:E,
+alpha:M}};d.lineWidth=v;d.anchorShadow=Ja;d.step=c(this.stepLine,d.step);d.drawVerticalJoins=Boolean(b(d.drawVerticalJoins,e.drawverticaljoins,1));d.useForwardSteps=Boolean(b(d.useForwardSteps,e.useforwardsteps,1));za=b(e.drawanchors,e.showanchors);for(B=0;B<ea;B+=1)K=n[B],K.vline?xa.addVline(J,K,yb,h):(w=Gb.getCleanValue(K.value),l=b(K.showlabel,e.showlabels,1),I=p(r(K.label,K.name)),xa.addXaxisCat(J,yb,yb,l?I:a,K,{},e),yb+=1,q=na(c(K.color,E)),H=b(K.alpha,M),l=b(K.dashed,u)?m(X,D,v):"none",t={opacity:H/
+100},ta=b(K.anchorsides,e.anchorsides,0),Ka=b(K.anchorstartangle,e.anchorstartangle,90),qa=b(K.anchorradius,e.anchorradius,this.anchorRadius,3),Ea=na(c(K.anchorbordercolor,e.anchorbordercolor,E)),Aa=b(K.anchorborderthickness,e.anchorborderthickness,this.anchorBorderThickness,1),A=na(c(K.anchorbgcolor,e.anchorbgcolor,R.getColor("anchorBgColor"))),G=c(K.anchoralpha,e.anchoralpha,jb),pa=c(K.anchorbgalpha,e.anchorbgalpha,G),O=c(K.anchorimageurl,e.anchorimageurl),Fb=c(K.anchorimagescale,e.anchorimagescale,
+100),W=c(K.anchorimagealpha,e.anchorimagealpha,100),L=b(K.anchorimagepadding,e.anchorimagepadding,1),Lb=b(K.anchorradius,e.anchorradius),T=b(K.hoverradius,e.hoverradius,K.anchorhoverradius,e.anchorhoverradius),ya=void 0===za?0!==H:!!za,lb=Boolean(b(K.anchorshadow,Ja,0)),Z=this.pointHoverOptions(K,d,{plotType:"anchor",anchorBgColor:A,anchorAlpha:G,anchorBgAlpha:pa,anchorAngle:Ka,anchorBorderThickness:Aa,anchorBorderColor:Ea,anchorBorderAlpha:G,anchorSides:ta,anchorRadius:qa,imageUrl:O,imageScale:Fb,
+imageAlpha:W,imagePadding:L,shadow:t}),d.data.push(k(this.getPointStub(K,w,I,h),{y:w,color:{FCcolor:{color:q,alpha:H}},shadow:t,dashStyle:l,valuePosition:c(K.valueposition,f.valuePosition),marker:{enabled:!!ya,shadow:lb&&{opacity:G/100},fillColor:{FCcolor:{color:A,alpha:pa*G/100+a}},lineColor:{FCcolor:{color:Ea,alpha:G}},lineWidth:Aa,radius:qa,startAngle:Ka,symbol:pb(ta),imageUrl:O,imageScale:Fb,imageAlpha:W,imagePadding:L,isAnchorRadius:Lb,isAnchorHoverRadius:T},tooltipConstraint:this.tooltipConstraint,
+hoverEffects:Z.enabled&&Z.options,rolloverProperties:Z.enabled&&Z.rolloverOptions})),this.pointValueWatcher(h,w));F.catCount=yb;return d},defaultZeroPlaneHighlighted:!1},nb);la("area2dbase",{defaultSeriesType:"area",hasVDivLine:!0,parseAnchorVisibility:function(a,f,d){var n=b(a.drawanchors,f.drawanchors,f.showanchors);return fa(n)?n:fa(c(a.anchorsides,f.anchorsides,a.anchorstartangle,f.anchorstartangle,a.anchorradius,f.anchorradius,a.anchorbordercolor,f.anchorbordercolor,a.anchorborderthickness,f.anchorborderthickness,
+a.anchorbgcolor,f.anchorbgcolor,a.anchoralpha,f.anchoralpha,a.anchorbgalpha,f.anchorbgalpha,a.anchorshadow,f.anchorshadow))||d},point:function(f,d,n,e,h){f=h.chart;var w=n.length,B=h.xAxis,I=h[g],K=I.axisGridManager,I=I.x,t=h[g].numberFormatter,X=this.colorManager,D=0,q,H,v,u,za,E,M,ya,ta,Aa,Ea,qa,A,G,pa,Ka,Ja,lb,ea,J,R,Z,xa,yb,O,F,Gb,Fb,L,Lb,T,S;za=c(e.plotfillcolor,e.areabgcolor,l(e.palettecolors)?X.getPlotColor(0):X.getColor("plotFillColor")).split(/\s*\,\s*/)[0];R=Ga+(b(e.useplotgradientcolor,
+1)?V(e.plotgradientcolor,X.getColor("plotGradientColor")):a);E=c(e.plotfillalpha,e.areaalpha,this.isStacked?jb:"90");M=b(e.plotfillangle,270);ya=c(e.plotbordercolor,e.areabordercolor,l(e.palettecolors)?X.getPlotColor(0):X.getColor("plotBorderColor")).split(/\s*\,\s*/)[0];ta=e.showplotborder==Ca?Ca:c(e.plotborderalpha,e.plotfillalpha,e.areaalpha,jb);q=b(e.plotborderangle,270);H=Boolean(b(e.plotborderdashed,0));v=b(e.plotborderdashlen,5);A=b(e.plotborderdashgap,4);Ja=b(e.plotborderthickness,e.areaborderthickness,
+1);Z=d.fillColor={FCcolor:{color:za+R.replace(/,+?$/,""),alpha:E,ratio:ec,angle:M}};d.lineWidth=Ja;d.dashStyle=H?m(v,A,Ja):"none";d.lineColor={FCcolor:{color:ya,alpha:ta,ratio:jb,angle:q}};d.step=c(this.stepLine,d.step);d.drawVerticalJoins=Boolean(b(d.drawVerticalJoins,e.drawverticaljoins,1));d.useForwardSteps=Boolean(b(d.useForwardSteps,e.useforwardsteps,1));Ja=Boolean(b(e.drawanchors,e.showanchors,1));O=Boolean(this.parseAnchorVisibility({},e,0));d.anchorShadow=xa=b(e.anchorshadow,0);for(H=0;H<
+w;H+=1)A=n[H],A.vline?K.addVline(B,A,D,h):(q=t.getCleanValue(A.value),u=b(A.showlabel,e.showlabels,1),v=p(r(A.label,A.name)),K.addXaxisCat(B,D,D,u?v:a,A,{},e),D+=1,u=b(A.anchorsides,e.anchorsides,0),qa=b(A.anchorstartangle,e.anchorstartangle,90),Aa=b(A.anchorradius,e.anchorradius,3),Ea=na(c(A.anchorbordercolor,e.anchorbordercolor,ya)),lb=b(A.anchorborderthickness,e.anchorborderthickness,1),G=na(c(A.anchorbgcolor,e.anchorbgcolor,X.getColor("anchorBgColor"))),pa=c(A.anchoralpha,e.anchoralpha,this.anchorAlpha,
+O?jb:0),Ka=c(A.anchorbgalpha,e.anchorbgalpha,pa),yb=Boolean(b(A.anchorshadow,xa,0)),ea=l(A.color),J=b(A.alpha),ea=void 0!==ea||void 0!==J?{FCcolor:{color:ea?na(ea)+R:za,alpha:void 0===J?Ia(J)+a:E,ratio:ec,angle:M}}:Z,F=c(A.anchorimageurl,e.anchorimageurl),Gb=c(A.anchorimagescale,e.anchorimagescale,100),Fb=c(A.anchorimagealpha,e.anchorimagealpha,100),L=c(A.anchorimagepadding,e.anchorimagepadding,1),Lb=b(A.anchorradius,e.anchorradius),T=b(A.hoverradius,e.hoverradius,A.anchorhoverradius,e.anchorhoverradius),
+J={opacity:W(J,ta)/100,inverted:!0},S=this.pointHoverOptions(A,d,{plotType:"anchor",anchorBgColor:G,anchorAlpha:pa,anchorBgAlpha:Ka,anchorAngle:qa,anchorBorderThickness:lb,anchorBorderColor:Ea,anchorBorderAlpha:pa,anchorSides:u,anchorRadius:Aa,imageUrl:F,imageScale:Gb,imageAlpha:Fb,imagePadding:L,shadow:J}),d.data.push(k(this.getPointStub(A,q,v,h),{y:q,shadow:J,color:ea,valuePosition:c(A.valueposition,f.valuePosition),marker:{enabled:Ja,shadow:yb&&{opacity:pa/100},fillColor:{FCcolor:{color:G,alpha:Ka*
+pa/100+a}},lineColor:{FCcolor:{color:Ea,alpha:pa}},lineWidth:lb,radius:Aa,symbol:pb(u),startAngle:qa,imageUrl:F,imageScale:Gb,imageAlpha:Fb,imagePadding:L,isAnchorRadius:Lb,isAnchorHoverRadius:T},tooltipConstraint:this.tooltipConstraint,previousY:this.pointValueWatcher(h,q),hoverEffects:S.enabled&&S.options,rolloverProperties:S.enabled&&S.rolloverOptions})));I.catCount=D;return d}},nb);la("mscolumn2dbase",{point:function(f,d,n,e,h,w,B,k,I){f=b(e.ignoreemptydatasets,0);var K=!1,m=n.data||[],p=h[g],
+t=c(d.type,this.defaultSeriesType),X=c(d.isStacked,h.plotOptions[t]&&h.plotOptions[t].stacking),D=c(this.isValueAbs,p.isValueAbs,!1),r=b(d.yAxis,0),q=h[g].numberFormatter,H=this.colorManager,v=H.getPlotColor(),u,za=h._FCconf.isBar,E=d.hoverEffects;d.visible=1===b(n.visible,!Number(n.initiallyhidden),1);X||(d.columnPosition=b(I,k,B));d.name=l(n.seriesname);if(0===b(n.includeinlegend)||void 0===d.name)d.showInLegend=!1;d.color=c(n.color,v).split(Ga)[0].replace(/^#?/g,"#");B=/3d$/.test(h.chart.defaultSeriesType);
+d.is3d=B;d.isBar=za;I=c(360-e.plotfillangle,za?180:90);0>u&&(I=360-I);n=d._dataParser=Z.column(h,{seriesname:d.name,plottooltext:n.plottooltext,color:c(n.color,v),alpha:c(n.alpha,e.plotfillalpha,jb),plotgradientcolor:b(e.useplotgradientcolor,1)?V(e.plotgradientcolor,H.getColor("plotGradientColor")):a,ratio:c(n.ratio,e.plotfillratio),fillAangle:I,isRoundEdges:h.chart.useRoundEdges,plotBorderColor:c(e.plotbordercolor,B?Sb:H.getColor("plotBorderColor")).split(Ga)[0],plotBorderAlpha:e.showplotborder==
+Ca||B&&e.showplotborder!=mb?Ca:c(e.plotborderalpha,n.alpha,e.plotfillalpha,jb),isBar:this.isBar,is3d:B,dashed:b(n.dashed,e.plotborderdashed,0),dashLen:b(n.dashlen,e.plotborderdashlen,5),dashGap:b(n.dashgap,e.plotborderdashgap,4),borderWidth:b(e.plotborderthickness,mb),showValues:b(n.showvalues,p.showValues),yAxis:r,use3DLighting:b(e.use3dlighting,1),_sourceDataset:n,hoverEffects:E},this);for(e=0;e<w;e+=1)(p=m[e])?(u=q.getCleanValue(p.value,D),null===u?d.data.push({y:null}):(K=!0,p=n(p,e,u),d.data.push(p),
+p.previousY=this.pointValueWatcher(h,u,r,X,e,k,t))):d.data.push({y:null});!f||K||this.realtimeEnabled||(d.showInLegend=!1);return d},defaultSeriesType:"column"},qb);la("mslinebase",{hasVDivLine:!0,point:function(f,d,n,e,h,w){f=b(e.ignoreemptydatasets,0);var B=!1,k=this.colorManager,I,K;I=h.chart;var m=n.data||[];K=h[g];var p=c(d.type,this.defaultSeriesType),t=c(d.isStacked,h.plotOptions[p]&&h.plotOptions[p].stacking),X=c(this.isValueAbs,K.isValueAbs,!1),D=b(d.yAxis,0),r=this.numberFormatter,q=na(c(n.color,
+e.linecolor,k.getPlotColor())),H=b(n.alpha,e.linealpha,jb),v=b(e.showshadow,this.defaultPlotShadow,1),u=b(n.drawanchors,n.showanchors,e.drawanchors,e.showanchors),za=b(n.anchorsides,e.anchorsides,0),E=b(n.anchorstartangle,e.anchorstartangle,90),M=b(n.anchorradius,e.anchorradius,3),ya=na(c(n.anchorbordercolor,e.anchorbordercolor,q)),ta=b(n.anchorborderthickness,e.anchorborderthickness,1),k=na(c(n.anchorbgcolor,e.anchorbgcolor,k.getColor("anchorBgColor"))),A=c(n.anchoralpha,e.anchoralpha,jb),Aa=c(n.anchorbgalpha,
+e.anchorbgalpha,A),Ea=A&&c(n.anchorshadow,e.anchorshadow,0),qa=d.hoverEffects;d.visible=1===b(n.visible,!Number(n.initiallyhidden),1);d.name=l(n.seriesname);if(0===b(n.includeinlegend)||void 0===d.name||0===H&&1!==u)d.showInLegend=!1;d.marker={enabled:Boolean(b(u,1)),fillColor:{FCcolor:{color:k,alpha:Aa*A/100+a}},lineColor:{FCcolor:{color:ya,alpha:A+a}},lineWidth:ta,radius:M,symbol:pb(za),startAngle:E};d.color={FCcolor:{color:q,alpha:H}};d.shadow=v?{opacity:v?H/100:0}:!1;d.anchorShadow=Ea;d.step=
+c(this.stepLine,d.step);d.drawVerticalJoins=Boolean(b(d.drawVerticalJoins,e.drawverticaljoins,1));d.useForwardSteps=Boolean(b(d.useForwardSteps,e.useforwardsteps,1));d.lineWidth=b(n.linethickness,e.linethickness,2);I=d._dataParser=Z.line(h,{seriesname:d.name,plottooltext:n.plottooltext,lineAlpha:H,anchorAlpha:A,showValues:b(n.showvalues,K.showValues),yAxis:D,lineDashed:Boolean(b(n.dashed,e.linedashed,0)),lineDashLen:b(n.linedashlen,e.linedashlen,5),lineDashGap:b(n.linedashgap,e.linedashgap,4),lineThickness:d.lineWidth,
+lineColor:q,valuePosition:c(n.valueposition,I.valuePosition),drawAnchors:u,anchorBgColor:k,anchorBgAlpha:Aa,anchorBorderColor:ya,anchorBorderThickness:ta,anchorRadius:M,anchorSides:za,anchorAngle:E,anchorShadow:d.anchorShadow,anchorStartAngle:b(n.anchorstartangle,e.anchorstartangle),_sourceDataset:n,hoverEffects:qa,imageUrl:c(n.anchorimageurl,e.anchorimageurl),imageScale:c(n.anchorimagescale,e.anchorimagescale,100),imageAlpha:c(n.anchorimagealpha,e.anchorimagealpha,100),imagePadding:c(n.anchorimagepadding,
+e.anchorimagepadding,1),isAnchorRadius:b(n.anchorradius,e.anchorradius),isAnchorHoverRadius:b(n.hoverradius,e.hoverradius,n.anchorhoverradius,e.anchorhoverradius)},this);for(e=0;e<w;e+=1)(K=m[e])?(n=r.getCleanValue(K.value,X),null===n?d.data.push({y:null}):(B=!0,K=I(K,e,n),d.data.push(K),K.previousY=this.pointValueWatcher(h,n,D,t,e,0,p))):d.data.push({y:null});!f||B||this.realtimeEnabled||(d.showInLegend=!1);return d},defaultSeriesType:"line",defaultPlotShadow:1,defaultZeroPlaneHighlighted:!1},qb);
+la("msareabase",{hasVDivLine:!0,point:function(f,d,n,e,h,w){f=b(e.ignoreemptydatasets,0);var B=!1,k=h.chart,I=n.data||[],K=h[g],l=c(d.type,this.defaultSeriesType),p=c(d.isStacked,h.plotOptions[l]&&h.plotOptions[l].stacking),t=c(this.isValueAbs,K.isValueAbs,!1),X=b(d.yAxis,0),D=h[g].numberFormatter,r=this.colorManager,q=r.getPlotColor(),H=c(n.color,e.plotfillcolor,q).split(Ga)[0].replace(/^#?/g,"#").split(Ga)[0],v=c(n.alpha,e.plotfillalpha,e.areaalpha,this.areaAlpha,70),u=b(e.plotfillangle,270),q=
+c(n.plotbordercolor,e.plotbordercolor,e.areabordercolor,this.isRadar?q:"666666").split(Ga)[0],za=c(n.showplotborder,e.showplotborder)==Ca?Ca:c(n.plotborderalpha,e.plotborderalpha,n.alpha,e.plotfillalpha,e.areaalpha,"95"),E=b(e.plotborderangle,270),M=b(n.anchorsides,e.anchorsides,0),ya=b(n.anchorstartangle,e.anchorstartangle,90),ta=b(n.anchorradius,e.anchorradius,3),A=na(c(n.anchorbordercolor,e.anchorbordercolor,H)),Aa=b(n.anchorborderthickness,e.anchorborderthickness,1),Ea=na(c(n.anchorbgcolor,e.anchorbgcolor,
+r.getColor("anchorBgColor"))),qa=Boolean(la.area2dbase.parseAnchorVisibility(n,e,0)),qa=b(n.anchoralpha,e.anchoralpha,this.anchorAlpha,qa?jb:0),G=b(n.anchorbgalpha,e.anchorbgalpha,qa),pa=qa&&c(n.anchorshadow,e.anchorshadow,0),Ja=d.hoverEffects;d.visible=1===b(n.visible,!Number(n.initiallyhidden),1);this.isRadar||(H+=Ga+(b(e.useplotgradientcolor,1)?V(e.plotgradientcolor,r.getColor("plotGradientColor")):a),H=H.replace(/,+?$/,""));d.step=c(this.stepLine,d.step);d.drawVerticalJoins=Boolean(b(d.drawVerticalJoins,
+e.drawverticaljoins,1));d.useForwardSteps=Boolean(b(d.useForwardSteps,e.useforwardsteps,1));d.name=c(n.seriesname);if(0===b(n.includeinlegend)||void 0===d.name)d.showInLegend=!1;d.fillColor={FCcolor:{color:H,alpha:v,ratio:ec,angle:u}};d.color=H;d.shadow={opacity:b(e.showshadow,1)?za/100:0};d.anchorShadow=pa;d.lineColor={FCcolor:{color:q,alpha:za,ratio:jb,angle:E}};d.lineWidth=c(n.plotborderthickness,e.plotborderthickness,1);d.dashStyle=Boolean(b(n.dashed,e.plotborderdashed,0))?m(b(n.dashlen,e.plotborderdashlen,
+5),b(n.dashgap,e.plotborderdashgap,4),d.lineWidth):"none";d.marker={fillColor:{FCcolor:{color:Ea,alpha:G*qa/100+a}},lineColor:{FCcolor:{color:A,alpha:qa+a}},lineWidth:Aa,radius:ta,symbol:pb(M),startAngle:ya};n=d._dataParser=Z.area(h,{seriesname:d.name,plottooltext:n.plottooltext,lineAlpha:za,anchorAlpha:qa,showValues:b(n.showvalues,K.showValues),yAxis:X,fillColor:H,fillAlpha:v,valuePosition:c(n.valueposition,k.valuePosition),drawAnchors:Boolean(b(n.drawanchors,e.drawanchors,e.showanchors,1)),anchorBgColor:Ea,
+anchorBgAlpha:G,anchorBorderColor:A,anchorBorderThickness:Aa,anchorRadius:ta,anchorSides:M,anchorAngle:ya,anchorShadow:d.anchorShadow,getLink:this.linkClickFN,anchorStartAngle:b(n.anchorstartangle,e.anchorstartangle),_sourceDataset:n,hoverEffects:Ja,imageUrl:c(n.anchorimageurl,e.anchorimageurl),imageScale:c(n.anchorimagescale,e.anchorimagescale,100),imageAlpha:c(n.anchorimagealpha,e.anchorimagealpha,100),imagePadding:c(n.anchorimagepadding,e.anchorimagepadding,1),isAnchorRadius:b(n.anchorradius,e.anchorradius),
+isAnchorHoverRadius:b(n.hoverradius,e.hoverradius,n.anchorhoverradius,e.anchorhoverradius)},this);for(k=0;k<w;k+=1)(K=I[k])?(e=K?D.getCleanValue(K.value,t):null,null===e?d.data.push({y:null}):(B=!0,K=n(K,k,e),d.data.push(K),K.previousY=this.pointValueWatcher(h,e,X,p,k,0,l))):d.data.push({y:null});!f||B||this.realtimeEnabled||(d.showInLegend=!1);return d},defaultSeriesType:"area",defaultPlotShadow:0},qb);la("scatterbase",{showValues:0,defaultPlotShadow:0,rendererId:"cartesian",defaultSeriesType:"scatter",
+canvasPaddingModifiers:["anchorlabel"],point:function(f,d,n,e,h,w,B){f=b(e.ignoreemptydatasets,0);var k=this.colorManager,I=k.getPlotColor(),K,p,t,X,D,r,q,H,v,u,za,E,M,ya,ta,A,Aa,Ea,qa;w=!1;var G,pa;D=b(n.drawline,e.drawlines,0);r=b(n.drawprogressioncurve,0);X=n.data||[];var Ja,Ka,lb,ea,J,R=b(n.showvalues,h[g].showValues),Z=this.numberFormatter,xa,yb=d._showRegression=b(n.showregressionline,e.showregressionline,0);d.zIndex=1;d.name=l(n.seriesname);if(0===b(n.includeinlegend)||void 0===d.name)d.showInLegend=
+!1;if(D||r)t=na(c(n.color,I)),X=c(n.alpha,jb),D=b(n.linethickness,e.linethickness,2),r=Boolean(b(n.linedashed,n.dashed,e.linedashed,0)),q=b(n.linedashlen,e.linedashlen,5),H=b(n.linedashgap,e.linedashgap,4),d.color=Y(c(n.linecolor,e.linecolor,t),b(n.linealpha,e.linealpha,X)),d.lineWidth=D,d.dashStyle=r?m(q,H,D):"none";D=Boolean(b(n.drawanchors,n.showanchors,e.drawanchors,e.showanchors,1));B=b(n.anchorsides,e.anchorsides,B+3);r=b(n.anchorradius,e.anchorradius,3);t=na(c(n.anchorbordercolor,n.color,e.anchorbordercolor,
+t,I));I=b(n.anchorborderthickness,e.anchorborderthickness,1);q=na(c(n.anchorbgcolor,e.anchorbgcolor,k.getColor("anchorBgColor")));H=c(n.anchoralpha,n.alpha,e.anchoralpha,jb);za=c(n.anchorbgalpha,n.alpha,e.anchorbgalpha,H);G=c(n.anchorstartangle,e.anchorstartangle,90);d.anchorShadow=k=b(e.anchorshadow,0);d.marker={fillColor:this.getPointColor(q,jb),lineColor:{FCcolor:{color:t,alpha:H+a}},lineWidth:I,radius:r,symbol:pb(B)};X=n.data||[];J=X.length;yb&&(d.events={hide:this.hideRLine,show:this.showRLine},
+Ja={sumX:0,sumY:0,sumXY:0,sumXsqure:0,sumYsqure:0,xValues:[],yValues:[]},ea=b(n.showyonx,e.showyonx,1),Ka=na(c(n.regressionlinecolor,e.regressionlinecolor,t)),lb=b(n.regressionlinethickness,e.regressionlinethickness,I),K=Ia(b(n.regressionlinealpha,e.regressionlinealpha,H)),Ka=Y(Ka,K));for(p=0;p<J;p+=1)(v=X[p])?(K=Z.getCleanValue(v.y),qa=Z.getCleanValue(v.x),null===K?d.data.push({y:null,x:qa}):(w=!0,pa=this.getPointStub(v,K,Z.xAxis(qa),h,n,R),E=b(v.anchorsides,B),M=b(v.anchorradius,r),ya=na(c(v.anchorbordercolor,
+t)),ta=b(v.anchorborderthickness,I),A=na(c(v.anchorbgcolor,q)),Aa=c(v.anchoralpha,v.alpha,H),Ea=c(v.anchorbgalpha,za),u=Boolean(b(v.anchorshadow,k,0)),xa=this.pointHoverOptions(v,d,{plotType:"anchor",anchorBgColor:A,anchorAlpha:Aa,anchorBgAlpha:Ea,anchorAngle:G,anchorBorderThickness:ta,anchorBorderColor:ya,anchorBorderAlpha:Aa,anchorSides:E,anchorRadius:M,shadow:void 0}),d.data.push({y:K,x:qa,displayValue:pa.displayValue,displayValueArgs:pa.displayValueArgs,toolText:pa.toolText,link:pa.link,marker:{enabled:D,
+shadow:u&&{opacity:Aa/100},fillColor:{FCcolor:{color:A,alpha:Ea*Aa/100+a}},lineColor:{FCcolor:{color:ya,alpha:Aa}},lineWidth:ta,radius:M,symbol:pb(E),startAngle:c(v.anchorstartangle,n.anchorstartangle,e.anchorstartangle,90)},hoverEffects:xa.enabled&&xa.options,rolloverProperties:xa.enabled&&xa.rolloverOptions}),this.pointValueWatcher(h,K,qa,yb&&Ja))):d.data.push({y:null});yb&&(n=this.getRegressionLineSeries(Ja,ea,J),this.pointValueWatcher(h,n[0].y,n[0].x),this.pointValueWatcher(h,n[1].y,n[1].x),h=
+{type:"line",color:Ka,showInLegend:!1,lineWidth:lb,enableMouseTracking:!1,marker:{enabled:!1},data:n,zIndex:0},d=[d,h]);f&&!w&&(d.showInLegend=!1);return d},postSeriesAddition:function(a,c){for(var f=a.chart,d=c.chart,n=a.series,e=0,g=n.length;e<g;e+=1)n[e]._showRegression&&(n[e].relatedSeries=[e+1]);f.clipBubbles=b(d.clipbubbles,1)},categoryAdder:function(f,d){var n,e=0,h,w=d[g].x,B,k=d.xAxis,I,K,l=f.chart,t=parseInt(l.labelstep,10),X=b(l.showlabels,1),D=c(l.xaxislabelmode,"categories").toLowerCase(),
+q=this.colorManager,H=d[g].numberFormatter,v,u,za,E,M,ya;d._FCconf.isXYPlot=!0;t=1<t?t:1;w.catOccupied={};if("auto"!==D&&f.categories&&f.categories[0]&&f.categories[0].category){K=f.categories[0];K.font&&(d.xAxis.labels.style.fontFamily=K.font);void 0!==(h=b(K.fontsize))&&(1>h&&(h=1),d.xAxis.labels.style.fontSize=h+oa,A(d.xAxis.labels.style));K.fontcolor&&(d.xAxis.labels.style.color=K.fontcolor.split(Ga)[0].replace(/^\#?/,"#"));n=c(K.verticallinecolor,q.getColor("divLineColor"));h=b(K.verticallinethickness,
+1);B=b(K.verticallinealpha,q.getColor("divLineAlpha"));q=b(K.verticallinedashed,0);v=b(K.verticallinedashlen,4);u=b(K.verticallinedashgap,2);za=Y(n,B);for(n=0;n<K.category.length;n+=1)E=K.category[n],B=H.getCleanValue(E.x),null===B||E.vline||(w.catOccupied[B]=!0,I=b(E.showlabel,E.showname,X),M=b(E.showverticalline,E.showline,E.sl,0),ya=b(E.linedashed,q),I=0===I||0!==e%t?a:p(r(E.label,E.name)),k.plotLines.push({isGrid:!0,isCat:!0,isDataLabel:!0,width:M?h:0,color:za,dashStyle:m(v,u,h,ya),value:B,label:{text:I,
+link:c(E.link,l.labellink),style:ua({},E,l,k.labels.style),align:sa,verticalAlign:ob,textAlign:sa,rotation:0,x:0,y:0}}),this.pointValueWatcher(d,null,B),e+=1);"mixed"===D&&(w.requiredAutoNumericLabels=b(this.requiredAutoNumericLabels,1))}else w.requiredAutoNumericLabels=b(this.requiredAutoNumericLabels,1);w.adjustMinMax=!0},getPointColor:function(a,b){var c,f;a=na(a);b=Ia(b);c=va(a,70);f=Ba(a,50);return{FCcolor:{gradientUnits:"objectBoundingBox",cx:.4,cy:.4,r:"100%",color:c+Ga+f,alpha:b+Ga+b,ratio:ec,
+radialGradient:!0}}}},la.xybase);la("mscombibase",{canvasPaddingModifiers:["anchor","anchorlabel"],series:function(a,f,d){var n,h,e,w,B=a.chart,k,I=[],K=[],l=[],m,p,X=f[g],D=this.isDual,q=0,H;f.legend.enabled=Boolean(b(a.chart.showlegend,1));if(a.dataset&&0<a.dataset.length){this.categoryAdder(a,f);w=X.oriCatTmp.length;n=0;for(h=a.dataset.length;n<h;n+=1)switch(e=a.dataset[n],m=D&&"s"===c(e.parentyaxis,"p").toLowerCase()?!0:!1,k={__positiionIndex:n,hoverEffects:this.parseSeriesHoverOptions(a,f,e,
+d),visible:!b(e.initiallyhidden,0),legendIndex:n,data:[]},m?(k.yAxis=1,p=r(e.renderas,this.secondarySeriesType),this.secondarySeriesFilter&&(H=this.secondarySeriesFilter[p])):(p=r(e.renderas,this.defaultSeriesType),this.defaultSeriesFilter&&(H=this.defaultSeriesFilter[p])),p=p.toLowerCase(),p){case "line":case "spline":k.type=!0===H?p:"line";I.push(la.mslinebase.point.call(this,d,k,e,B,f,w,n));break;case "area":case "splinearea":k.type=!0===H?p:"area";f.chart.series2D3Dshift=!0;l.push(la.msareabase.point.call(this,
+d,k,e,B,f,w,n));break;case "column":case "column3d":K.push(la.mscolumn2dbase.point.call(this,d,k,a.dataset[n],B,f,w,n,void 0,q));q+=1;break;default:m?(k.type="line",I.push(la.mslinebase.point.call(this,d,k,e,B,f,w,n))):(K.push(la.mscolumn2dbase.point.call(this,d,k,a.dataset[n],B,f,w,n,void 0,q)),q+=1)}"0"!==B.areaovercolumns?(f.chart.areaOverColumns=!0,f.series=f.series.concat(K,l,I)):(f.chart.areaOverColumns=!1,f.series=f.series.concat(l,K,I));if(0===K.length&&1!==w)X.hasNoColumn=!0;else if(!this.isStacked)for(d=
+0,n=K.length;d<n;d+=1)K[d].numColumns=n;this.configureAxis(f,a);a.trendlines&&t(a.trendlines,f.yAxis,f[g],D,this.isBar)}}},la.mscolumn2dbase)}]);
+FusionCharts.register("module",["private","modules.renderer.jpegtopdf",function(){var e=this.window,q=e.btoa,F=e.atob;this.hcLib.JpegToPdf=function(e,d){var a=[],t=0,E=e||500,c=d||500,l,b,r;l=function(b){t+=b.length+1;a.push(b)};this.addImage=function(a){a=/base64,(.+?)$/g.exec(a);r=F(a[1])};b=function(){var b=[],d,e;l("%PDF-1.7");b[1]=t;l("1 0 obj");l("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]");l("endobj");b[4]=t;l("4 0 obj");l("<< /Length 36>>");l("stream");l("q "+c+" 0 0 "+E+" 0 0 cm /Im3 Do Q");
+l("endstream");l("endobj");b[5]=t;l("5 0 obj");l("<</Type /Page /Parent 2 0 R /MediaBox [0 0 "+c+" "+E+"] /Contents [4 0 R ] /Resources <</ProcSet 1 0 R /Font <<>> /XObject <</Im3 3 0 R >> >> >>");l("endobj");b[3]=t;l("3 0 obj");l("<</Type /XObject /Subtype /Image /Width "+c+" /Height "+E+" /ColorSpace /DeviceRGB /BitsPerComponent 8 /Filter /DCTDecode /Length "+r.length+">>");l("stream");l(r);l("endstream");l("endobj");b[2]=t;l("2 0 obj");l("<</Type /Pages /Kids [5 0 R ] /Count 1>>");l("endobj");
+b[6]=t;l("6 0 obj");l("<</Type /Catalog /Pages 2 0 R >>");l("endobj");d=t;l("xref");l("0 7");l("0000000000 65535 f ");for(e=1;6>=e;e++)l(("0000000000"+b[e]).slice(-10)+" 00000 n ");l("trailer");l("<</Size 7 /Root 6 0 R >>");l("startxref");l(d);l("%%EOF");return a.join("\n")};this.getDataUrl=function(){return"data:application/pdf;base64,"+q(b())}}}]);
+(function(){var e=window,q=e.document,F={},u={};e.SvgDeCanvo=function(d,a,e){var q={svg:"",context:"",callBack:"",imageArr:[]};if(!(this instanceof SvgDeCanvo))throw"This function should be used as class";this._getStore=function(a){return"undefined"!=typeof q[a]?q[a]:!1};this._setStore=function(a,d){"undefined"!=typeof q[a]&&(q[a]=d)};d&&this.setSVG(d);a&&this.setContext(a);e&&this.setCallback(e);this.drawOnCanvas()};SvgDeCanvo.prototype.setContext=function(d){var a;if(d.getContext&&d.getContext("2d"))a=
+d.getContext("2d"),a.save(),a.fillStyle="#ffffff",a.fillRect(0,0,d.width,d.height),a.restore(),this._setStore("context",a);else throw"Please provide valid canvas";};SvgDeCanvo.prototype.getContext=function(){return this._getStore("context")};SvgDeCanvo.prototype.setSVG=function(d){if("undefined"!=typeof d.documentElement)this._setStore("svg",d);else if("<"==d.substr(0,1))d=u.StrToDom(d),this._setStore("svg",d);else throw"Please provide valid SVG";};SvgDeCanvo.prototype.getSVG=function(){return this._getStore("svg")};
+SvgDeCanvo.prototype.setCallback=function(d){"function"===typeof d&&this._setStore("callBack",d)};SvgDeCanvo.prototype.getCallback=function(){return this._getStore("callBack")};SvgDeCanvo.prototype.drawOnCanvas=function(d,a,e){d&&this.setSVG(d);a&&this.setContext(a);e&&this.setCallback(e);e=this.getCallback();d=this.getContext();(a=this.getSVG())&&d&&(u.storeImagesInArr(this),u.drawNodes([a],[],this,d,e))};F.common=function(d,a,e,q,c){var l=d.childNodes,b=function(){d.attributes&&q.restore();c&&c()};
+for(i in a)a.hasOwnProperty(i)&&"class"!=a[i].name&&"id"!=a[i].name&&"transform"!=a[i].name&&"clip-path"!=a[i].name&&"object"==typeof a[i]&&d.attributes&&!d.attributes[a[i].name]&&d.setAttribute([a[i].name],a[i].value);if(d.attributes&&d.attributes.style)for(i in styleArr=d.attributes.style.value.replace(/;$/,"").split(";"),styleArr)if(styleArr.hasOwnProperty(i)&&(styleName=styleArr[i].split(":")[0].trim(),!d.attributes[styleName]||"undefined"==d.attributes[styleName].value))try{d.setAttribute(styleName,
+styleArr[i].split(":")[1].trim())}catch(r){}d.attributes&&(q.save(),d.attributes.transform&&u.startTransform(d.attributes.transform.value,q),d.attributes["clip-path"]&&u.applyClip(d.attributes["clip-path"].value,q,e));if(0==l.length||1==l.length&&!l[0].tagName)if("undefined"!==typeof d.tagName)if(a="draw"+d.tagName,F[a])if(d.attributes.display&&"none"==d.attributes.display.value)b();else F[a](d,q,e,"draw",b);else b();else b();else u.drawNodes(l,"svg"==d.tagName?[]:d.attributes,e,q,b)};F.drawtext=
+function(d,a,e,q,c){this.drawtspan(d,a,e,q,c)};F.drawtspan=function(d,a,t,E,c){var l=d.innerHTML||d.textContent,b=d.attributes.x?d.attributes.x.value:0,r=d.attributes.y?d.attributes.y.value:0,F=d.attributes.dx?d.attributes.dx.value:0,p=d.attributes.dy?d.attributes.dy.value:0,g="serief",k="normal",m="16px",J=[],T;q.getElementsByTagName("body")[0]&&(T=e.getComputedStyle(q.getElementsByTagName("body")[0],null),T.getPropertyValue("font-family")&&(g=T.getPropertyValue("font-family")),T.getPropertyValue("font-weight")&&
+(k=T.getPropertyValue("font-weight")),T.getPropertyValue("font-size")&&(m=T.getPropertyValue("font-size")));g=d.attributes["font-family"]?d.attributes["font-family"].value:g;k=d.attributes["font-weight"]?d.attributes["font-weight"].value:k;T=d.attributes["text-anchor"]?d.attributes["text-anchor"].value:"start";m=d.attributes["font-size"]?d.attributes["font-size"].value:m;b=Number(b)+Number(F);r=Number(r)+Number(p);l=l.trim();T="middle"==T?"center":T;a.save();a.font=k+" "+m+" "+g;a.textAlign=T;if("draw"===
+E){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)u.applyFillEffect(d,a,t,J),a.fillText(l,b,r),u.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)u.applyStrokeEffect(d,a,t,J),a.strokeText(l,b,r),u.endStrokeEffect(d,a)}a.restore();"function"===typeof c&&c()};F.drawcircle=function(d,a,e,q,c){var l=Number(d.attributes.cx.value),b=Number(d.attributes.cy.value),r=Number(d.attributes.r.value),F=[];a.beginPath();a.arc(l,b,r,0,2*
+Math.PI);u.bBoxFromPoint([l,1*l+1*r,1*l-1*r],[b,1*b+1*r,1*b-1*r],F);if("draw"===q){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)u.applyFillEffect(d,a,e,F),a.fill(),u.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)u.applyStrokeEffect(d,a,e,F),a.stroke(),u.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};F.drawrect=function(d,a,e,q,c){var l=Number(d.attributes.x.value),b=Number(d.attributes.y.value),r=d.attributes.rx?
+Number(d.attributes.rx.value):0,F=d.attributes.ry?Number(d.attributes.ry.value):0,p=Number(d.attributes.height.value),g=Number(d.attributes.width.value),k=[];u.bBoxFromPoint([l,l+g],[b,b+p],k);a.beginPath();a.moveTo(l+r,b);a.lineTo(l+g-r,b);a.quadraticCurveTo(l+g,b,l+g,b+F);a.lineTo(l+g,b+p-F);a.quadraticCurveTo(l+g,b+p,l+g-r,b+p);a.lineTo(l+r,b+p);a.quadraticCurveTo(l,b+p,l,b+p-F);a.lineTo(l,b+F);a.quadraticCurveTo(l,b,l+r,b);if("draw"===q){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)u.applyFillEffect(d,
+a,e,k),a.fill(),u.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)u.applyStrokeEffect(d,a,e,k),a.stroke(),u.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};F.drawellipse=function(d,a,e,q,c){var l=Number(d.attributes.cx.value),b=Number(d.attributes.cy.value),r=Number(d.attributes.rx.value),F=Number(d.attributes.ry.value),p=.5522848*r,g=.5522848*F,k=l+r,m=b+F,J=[];a.beginPath();a.moveTo(l-r,b);a.bezierCurveTo(l-r,b-g,l-p,b-F,l,b-F);a.bezierCurveTo(l+
+p,b-F,k,b-g,k,b);a.bezierCurveTo(k,b+g,l+p,m,l,m);a.bezierCurveTo(l-p,m,l-r,b+g,l-r,b);u.bBoxFromPoint([l+r,l-r],[b+F,b-F],J);if("draw"===q){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)u.applyFillEffect(d,a,e,J),a.fill(),u.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)u.applyStrokeEffect(d,a,e,J),a.stroke(),u.endStrokeEffect(d,a)}a.closePath();"function"===typeof c&&c()};F.drawimage=function(d,a,e,q,c){var l=d.attributes.x?
+Number(d.attributes.x.value):0,b=d.attributes.y?Number(d.attributes.y.value):0,r=d.attributes.height?Number(d.attributes.height.value):0,u=d.attributes.width?Number(d.attributes.width.value):0,p,g=e._getStore("imageArr");a.save();d.attributes.opacity&&(a.globalAlpha=d.attributes.opacity.value);d.attributes["xlink:href"]?(p=d.attributes["xlink:href"].value,"complete"===g[p].status?(a.drawImage(g[p].obj,l,b,u,r),a.globalAlpha=1,a.restore(),"function"===typeof c&&c()):"error"===g[p].status?(a.globalAlpha=
+1,a.restore(),"function"===typeof c&&c()):"progress"===g[p].status?(g[p].callback=function(){a.drawImage(g[p].obj,l,b,u,r);a.globalAlpha=1;a.restore();"function"===typeof c&&c()},g[p].errCallback=function(){a.globalAlpha=1;a.restore();"function"===typeof c&&c()}):(a.globalAlpha=1,a.restore(),"function"===typeof c&&c())):(a.globalAlpha=1,a.restore(),"function"===typeof c&&c())};F.drawpath=function(d,a,e,q,c){var l=d.attributes.d.value.match(/[a-z][^a-z"]*/ig),b=[],r,F,p,g=0,k=0,m;a.beginPath();for(r in l)if(l.hasOwnProperty(r))switch(F=
+l[r].substring(0,1),p=u.getArgsAsArray(l[r].substring(1,l[r].length)),F){case "M":g=Number(p[0]);k=Number(p[1]);a.moveTo(g,k);break;case "m":g+=Number(p[0]);k+=Number(p[1]);a.moveTo(g,k);break;case "L":for(m=0;p[m];m+=2)u.bBoxFromPoint([g,p[m]],[k,p[m+1]],b),g=Number(p[m]),k=Number(p[m+1]),a.lineTo(g,k);break;case "l":for(m=0;p[m];m+=2)u.bBoxFromPoint([g,1*g+1*p[m]],[k,1*k+1*p[m+1]],b),g+=Number(p[m]),k+=Number(p[m+1]),a.lineTo(g,k);break;case "V":for(m=0;p[m];m+=1)u.bBoxFromPoint([g],[k,p[m]],b),
+k=Number(p[m]),a.lineTo(g,k);break;case "v":for(m=0;p[m];m+=1)u.bBoxFromPoint([g],[k,1*k+1*p[m]],b),k+=Number(p[m]),a.lineTo(g,k);break;case "H":for(m=0;p[m];m+=1)u.bBoxFromPoint([g,p[m]],[k],b),g=Number(p[m]),a.lineTo(g,k);break;case "h":for(m=0;p[m];m+=1)u.bBoxFromPoint([g,1*g+1*p[m]],[k],b),g+=Number(p[m]),a.lineTo(g,k);break;case "Q":for(m=0;p[m];m+=4)u.qBezierBBox(g,k,p[m],p[m+1],p[m+2],p[m+3],b),a.quadraticCurveTo(Number(p[m]),Number(p[m+1]),Number(p[m+2]),Number(p[m+3])),g=Number(p[m+2]),k=
+Number(p[m+3]);break;case "q":for(m=0;p[m];m+=4)u.qBezierBBox(g,k,g+1*p[m],k+1*p[m+1],1*g+1*p[m+2],1*k+1*p[m+3],b),a.quadraticCurveTo(g+1*p[m],k+1*p[m+1],g+=Number(p[m+2]),k+=Number(p[m+3]));break;case "C":for(m=0;p[m];m+=6)u.cBezierBBox(g,k,p[m],p[m+1],p[m+2],p[m+3],p[m+4],p[m+5],b),a.bezierCurveTo(p[m],p[m+1],p[m+2],p[m+3],p[m+4],p[m+5]),g=Number(p[m+4]),k=Number(p[m+5]);break;case "c":for(m=0;p[m];m+=6)u.cBezierBBox(g,k,g+1*p[m],1*k+1*p[m+1],g+1*p[m+2],1*k+1*p[m+3],g+1*p[m+4],1*k+1*p[m+5],b),a.bezierCurveTo(g+
+Number(p[m]),k+Number(p[m+1]),g+Number(p[m+2]),k+Number(p[m+3]),g+=Number(p[m+4]),k+=Number(p[m+5]));break;case "a":case "A":for(m=0;p[m];m+=7){var J=Number(p[m]),T=Number(p[m+1]),S,v,aa,L,fa,G,H,D,R,W,O,ha,ka,ga;S=Math.PI/180*Number(p[m+2]);v=Number(p[m+3]);aa=Number(p[m+4]);L=Number(p[m+5]);fa=Number(p[m+6]);G=Math.cos(S)*(g-L)/2+Math.sin(S)*(k-fa)/2;H=-Math.sin(S)*(g-L)/2+Math.cos(S)*(k-fa)/2;J=0>J?-J:J;T=0>T?-T:T;ha=Math.pow(G,2)/Math.pow(J,2)+Math.pow(H,2)/Math.pow(T,2);1<ha&&(J*=Math.sqrt(ha),
+T*=Math.sqrt(ha));ha=J>T?J:T;ka=J>T?1:J/T;ga=J>T?T/J:1;v=(v==aa?-1:1)*Math.sqrt((Math.pow(J,2)*Math.pow(T,2)-Math.pow(J,2)*Math.pow(H,2)-Math.pow(T,2)*Math.pow(G,2))/(Math.pow(J,2)*Math.pow(H,2)+Math.pow(T,2)*Math.pow(G,2)));isNaN(v)&&(v=0);D=v*J*H/T;R=-v*T*G/J;W=D*Math.cos(S)-R*Math.sin(S)+(g+L)/2;O=D*Math.sin(S)+R*Math.cos(S)+(k+fa)/2;v=u.angleBetweenVectors(1,0,(G-D)/J,(H-R)/T);G=u.angleBetweenVectors((G-D)/J,(H-R)/T,(-G-D)/J,(-H-R)/T);0==aa&&0<G&&(G-=Math.PI/180*360);1==aa&&0>G&&(G+=Math.PI/180*
+360);if(0==J&&0==T){a.lineTo(L,fa);break}a.save();J=u.combineTransformMatrix([[1,0,W,0,1,O],[Math.cos(S),Math.sin(S),0,Math.sin(S),Math.cos(S),0],[ka,0,0,0,ga,0]]);a.transform(J[0],J[3],J[1],J[4],J[2],J[5]);a.arc(0,0,ha,v,v+G,1-aa);a.restore();u.arcBBox(0,0,ha,v,v+G,1-aa,[J[0],J[3],J[1],J[4],J[2],J[5]],b);"A"==F?(g=Number(p[m+5]),k=Number(p[m+6])):(g+=Number(p[m+5]),k+=Number(p[m+6]))}break;case "Z":case "z":a.closePath()}if("draw"===q){if(!d.attributes.fill||d.attributes.fill&&"none"!=d.attributes.fill.value)u.applyFillEffect(d,
+a,e,b),a.fill(),u.endFillEffect(d,a);if(!d.attributes.stroke||d.attributes.stroke&&"none"!=d.attributes.stroke.value)u.applyStrokeEffect(d,a,e,b),a.stroke(),u.endStrokeEffect(d,a);c()}};u.drawNodes=function(d,a,e,q,c){var l=d.length,b=-1,r=0,u=0,p=function(){var g;b+=1;b<l?(g=d[b],g.tagName&&"defs"===g.tagName&&(b+=1,g=d[b]),g.attributes&&(g.attributes.dy&&(u=g.attributes.dy.value=1*g.attributes.dy.value+1*u),g.attributes.dx&&(r=g.attributes.dx.value=1*g.attributes.dx.value+1*r)),F.common(g,a,e,q,
+p)):c&&c()};p()};u.storeImagesInArr=function(d){var a=d.getSVG(),e,q;e=d._getStore("imageArr");d=a.getElementsByTagName("image");for(q in d)d.hasOwnProperty(q)&&d[q].attributes&&d[q].attributes["xlink:href"]&&(a=d[q].attributes["xlink:href"].value,e[a]||(e[a]=[],e[a].status="progress",e[a].callback=null,e[a].obj=new Image,e[a].obj.onload=function(a){return function(){var d=e[a].callback;d?(e[a].status="complete",d()):e[a].status="complete"}}(a),e[a].obj.onerror=function(a){return function(){var d=
+e[a].errCallback;d?(e[a].status="error",d()):e[a].status="error"}}(a),e[a].obj.src=a))};u.startTransform=function(d,a){var e=d.match(/[^\s][a-z,0-9.\-(\s]+\)/gi),q,c;for(c in e)e.hasOwnProperty(c)&&(-1<e[c].indexOf("matrix")&&(q=u.stringToArgs(e[c]),a.transform(q[0],q[1],q[2],q[3],q[4],q[5])),-1<e[c].indexOf("translate")&&(q=u.stringToArgs(e[c]),a.translate(q[0]||0,q[1]||0)),-1<e[c].indexOf("rotate")&&(q=u.stringToArgs(e[c]),3==q.length?(a.translate(q[1],q[2]),a.rotate(Math.PI/180*q[0]),a.translate(-q[1],
+-q[2])):a.rotate(Math.PI/180*q[0])),-1<e[c].indexOf("scale")&&(q=u.stringToArgs(e[c]),1==q.length?a.scale(q[0]||1,q[0]||1):a.scale(q[0]||1,q[1]||1)),-1<e[c].indexOf("skewX")&&(q=u.stringToArgs(e[c]),a.transform(1,0,Math.tan(Math.PI/180*q[0]),1,0,0)),-1<e[c].indexOf("skewY")&&(q=u.stringToArgs(e[c]),a.transform(1,Math.tan(Math.PI/180*q[0]),0,1,0,0)))};u.resetTransform=function(d){d.setTransform(1,0,0,1,0,0)};u.stringToArgs=function(d){d=/\(([^\)]+)/.exec(d)[1];return u.getArgsAsArray(d)};u.getArgsAsArray=
+function(d){var a;d=d.trim().split(/[\s,]+/);for(a=0;a<d.length;a++)d[a].trim(),0==d[a].length&&d.splice(a,1);return d};u.applyFillEffect=function(d,a,e,q){a.globalAlpha=d.attributes["fill-opacity"]&&"none"!=d.attributes["fill-opacity"].value?d.attributes["fill-opacity"].value:1;d.attributes.fill&&-1<d.attributes.fill.value.indexOf("url(")?(d=u.getFillStyleById(/url\(.*#([^\)'"]+)/.exec(d.attributes.fill.value)[1],a,e,q),a.fillStyle=d):a.fillStyle=d.attributes.fill?d.attributes.fill.value:"#000000"};
+u.endFillEffect=function(d,a){a.globalAlpha=1};u.applyStrokeEffect=function(d,a,e,q){d.attributes["stroke-opacity"]&&"none"!=d.attributes["stroke-opacity"].value&&(a.globalAlpha=d.attributes["stroke-opacity"].value);d.attributes["stroke-width"]&&(a.lineWidth=d.attributes["stroke-width"].value,0==d.attributes["stroke-width"].value&&(a.globalAlpha=0));d.attributes["stroke-linecap"]&&"none"!=d.attributes["stroke-linecap"].value&&(a.lineCap=d.attributes["stroke-linecap"].value);d.attributes["stroke-linejoin"]&&
+"none"!=d.attributes["stroke-linejoin"].value&&(a.lineJoin=d.attributes["stroke-linejoin"].value);d.attributes["stroke-dasharray"]&&"none"!=d.attributes["stroke-dasharray"].value&&a.setLineDash&&a.setLineDash(u.getArgsAsArray(d.attributes["stroke-dasharray"].value));a.strokeStyle=d.attributes.stroke?d.attributes.stroke.value:"#000000"};u.endStrokeEffect=function(d,a){d.attributes["stroke-opacity"]&&"none"!=d.attributes["stroke-opacity"].value&&(a.globalAlpha=1,a.setLineDash&&a.setLineDash([]),a.lineWidth=
+1);a.globalAlpha=1};u.applyClip=function(d,a,e){var q=e.getSVG(),c,l;if(-1!==d.indexOf("url(")){d=/url\(.*#([^\)'"]+)/.exec(d)[1];q=q.getElementById(d);q.attributes&&(a.save(),q.attributes.transform&&u.startTransform(q.attributes.transform.value,a));d=q.childNodes;for(c in d)d.hasOwnProperty(c)&&d[c].tagName&&d[c].constructor!==Array&&(l="draw"+d[c].tagName,d[c].attributes&&(a.save(),d[c].attributes.transform&&u.startTransform(d[c].attributes.transform.value,a)),F[l]&&(F[l](d[c],a,e,"clip"),a.closePath()),
+d[c].attributes&&a.restore());q.attributes&&a.restore();a.clip()}};u.getFillStyleById=function(d,a,e,q){d=e.getSVG().getElementById(d);return"linearGradient"==d.tagName?u.getLinearGradient(d,a,q):"radialGradient"==d.tagName?u.getRadialGradient(d,a,q):"#FFFFFF"};u.getLinearGradient=function(d,a,e){var q=d.attributes.x1?u.getPercentValue(d.attributes.x1.value,e.xMax-e.xMin,e.xMin):0,c=d.attributes.y1?u.getPercentValue(d.attributes.y1.value,e.yMax-e.yMin,e.yMin):0,l=d.attributes.x2?u.getPercentValue(d.attributes.x2.value,
+e.xMax-e.xMin,e.xMin):0;e=d.attributes.y2?u.getPercentValue(d.attributes.y2.value,e.yMax-e.yMin,e.yMin):0;var b;linGrad=a.createLinearGradient(q,c,l,e);d=d.childNodes;for(b in d)d.hasOwnProperty(b)&&d[b].attributes&&d[b].attributes["stop-color"]&&(a=u.toRGB(d[b].attributes["stop-color"].value),q=d[b].attributes["stop-opacity"]?d[b].attributes["stop-opacity"].value:1,a.status?linGrad.addColorStop(u.getPercentValue(d[b].attributes.offset.value,1,0),"rgba("+a.r+","+a.g+","+a.b+","+Number(q)+")"):linGrad.addColorStop(u.getPercentValue(d[b].attributes.offset.value,
+1,0),d[b].attributes["stop-color"].value));return linGrad};u.getRadialGradient=function(d,a,e){var q=d.attributes.cx?u.getPercentValue(d.attributes.cx.value,e.xMax-e.xMin,e.xMin):e.xMin+.5*(e.xMax-e.xMin),c=d.attributes.cy?u.getPercentValue(d.attributes.cy.value,e.yMax-e.yMin,e.yMin):e.yMin+.5*(e.yMax-e.yMin),l=d.attributes.fx?u.getPercentValue(d.attributes.fx.value,e.xMax-e.xMin,e.xMin):e.xMin+.5*(e.xMax-e.xMin),b=d.attributes.fy?u.getPercentValue(d.attributes.fy.value,e.yMax-e.yMin,e.yMin):e.yMin+
+.5*(e.yMax-e.yMin);e=d.attributes.r?u.getPercentValue(d.attributes.r.value,(e.yMax-e.yMin+e.xMax-e.xMin)/2,0):u.getPercentValue("50%",(e.yMax-e.yMin+e.xMax-e.xMin)/2,0);var r;a=a.createRadialGradient(l,b,0,q,c,e);d=d.childNodes;for(r in d)d.hasOwnProperty(r)&&d[r].attributes&&d[r].attributes["stop-color"]&&(q=u.toRGB(d[r].attributes["stop-color"].value),c=d[r].attributes["stop-opacity"]?d[r].attributes["stop-opacity"].value:1,q.status?a.addColorStop(u.getPercentValue(d[r].attributes.offset.value,
+1,0),"rgba("+q.r+","+q.g+","+q.b+","+Number(c)+")"):a.addColorStop(u.getPercentValue(d[r].attributes.offset.value,1,0),d[r].attributes["stop-color"].value));return a};u.getPercentValue=function(d,a,e){return-1!=d.indexOf("%")?(d=/(\d.*)%/.exec(d)[1],100<d&&(d=100),d*a/100+1*e):1<d?d:d*a+1*e};u.bBoxFromPoint=function(d,a,e){"undefined"!==typeof e.xMin&&(d.push(e.xMin,e.xMax),a.push(e.yMin,e.yMax));e.xMin=Math.min.apply(this,d);e.xMax=Math.max.apply(this,d);e.yMin=Math.min.apply(this,a);e.yMax=Math.max.apply(this,
+a)};u.arcBBox=function(d,a,e,q,c,l,b,r){var u,p,g;b instanceof Array&&(d=d*b[0]+d*b[2]+b[4],a=a*b[1]+a*b[3]+b[5]);g=function(a,b,c){a=(a+2*Math.PI)%(2*Math.PI);b=(b+2*Math.PI)%(2*Math.PI);if(a<=b)return a<=c&&c<=b?!0:!1;if(a>=b)return a>=c&&c>=b?!1:!0};b=q%(2*Math.PI);u=c%(2*Math.PI);l&&(b=c%(2*Math.PI),u=q%(2*Math.PI));l=d+e*Math.cos(b);q=a+e*Math.sin(b);p=d+e*Math.cos(u);c=a+e*Math.sin(u);l=[l,p];q=[q,c];g(b,u,0)&&(l.push(1*d+1*e),q.push(a));g(b,u,.5*Math.PI)&&(l.push(d),q.push(1*a+1*e));g(b,u,
+Math.PI)&&(l.push(d-1*e),q.push(a));g(b,u,1.5*Math.PI)&&(l.push(d),q.push(a-1*e));d=Math.max.apply(this,l);a=Math.min.apply(this,l);e=Math.max.apply(this,q);b=Math.min.apply(this,q);"undefined"!==typeof r.xMin?(r.xMin=Math.min(a,r.xMin),r.xMax=Math.max(d,r.xMax),r.yMin=Math.min(b,r.yMin),r.yMax=Math.max(e,r.yMax)):(r.xMin=a,r.xMax=d,r.yMin=b,r.yMax=e)};u.qBezierBBox=function(d,a,e,q,c,l,b){var r=1*d-2*e+1*c,u=1*a-2*q+1*l;0==r||0==u?(q=Math.max(d,c),d=Math.min(d,c),c=Math.max(a,l),a=Math.min(a,l)):
+(r=(d-e)/r,u=(a-q)/u,e=d*Math.pow(1-r,2)+2*e*(1-r)*r+c*Math.pow(r,2),u=a*Math.pow(1-u,2)+2*q*(1-u)*u+l*Math.pow(u,2),q=Math.max(d,c,e),d=Math.min(d,c,e),c=Math.max(a,l,u),a=Math.min(a,l,u));"undefined"!==typeof b.xMin?(b.xMin=Math.min(d,b.xMin),b.xMax=Math.max(q,b.xMax),b.yMin=Math.min(a,b.yMin),b.yMax=Math.max(c,b.yMax)):(b.xMin=d,b.xMax=q,b.yMin=a,b.yMax=c)};u.cBezierBBox=function(d,a,e,q,c,l,b,r,u){var p,g,k,m,J,F,S;null==c&&null==l&&(e=d+2/3*(e-d),c=a+2/3*(q-a),q=e+1/3*(b-d),l=c+1/3*(r-a));S=
+function(a,b,c,d,e){return a*Math.pow(1-e,3)+3*b*e*Math.pow(1-e,2)+3*c*e*e*(1-e)+d*e*e*e};k=3*b-9*c+9*e-3*d;m=6*d-12*e+6*c;J=Math.pow(m,2)-4*k*(3*e-3*d);g=p=d;b<p&&(p=b);b>g&&(g=b);0<=J&&(F=(-m+Math.sqrt(J))/(2*k),0<F&&1>F&&(F=S(d,e,c,b,F),F<p&&(p=F),F>g&&(g=F)),k=(-m-Math.sqrt(J))/(2*k),0<k&&1>k&&(F=S(d,e,c,b,k),F<p&&(p=F),F>g&&(g=F)));k=3*r-9*l+9*q-3*a;m=6*a-12*q+6*l;J=Math.pow(m,2)-4*k*(3*q-3*a);e=d=a;r<d&&(d=r);r>e&&(e=r);0<=J&&(F=(-m+Math.sqrt(J))/(2*k),0<F&&1>F&&(c=S(a,q,l,r,F),c<d&&(d=c),c>
+e&&(e=c)),k=(-m-Math.sqrt(J))/(2*k),0<k&&1>k&&(c=S(a,q,l,r,k),c<d&&(d=c),c>e&&(e=c)));"undefined"!==typeof u.xMin?(u.xMin=Math.min(p,u.xMin),u.xMax=Math.max(g,u.xMax),u.yMin=Math.min(d,u.yMin),u.yMax=Math.max(e,u.yMax)):(u.xMin=p,u.xMax=g,u.yMin=d,u.yMax=e)};u.combineTransformMatrix=function(d){var a=d.length-1,e;if(0>=a)return d[0];e=d[0];for(i=1;i<=a;i++)e[0]=e[0]*d[i][0]+e[1]*d[i][3],e[1]=e[0]*d[i][1]+e[1]*d[i][4],e[2]=e[0]*d[i][2]+e[1]*d[i][5]+1*e[2],e[3]=e[3]*d[i][0]+e[4]*d[i][3],e[4]=e[3]*d[i][1]+
+e[4]*d[i][4],e[5]=e[3]*d[i][2]+e[4]*d[i][5]+1*e[5];return e};u.angleBetweenVectors=function(d,a,e,q){return(d*q<a*e?-1:1)*Math.acos((d*e+a*q)/(Math.sqrt(Math.pow(d,2)+Math.pow(a,2))*Math.sqrt(Math.pow(e,2)+Math.pow(q,2))))};u.toRGB=function(d){var a={r:0,g:0,b:0,status:0},e,q;e=function(c){for(q in c)c.hasOwnProperty(q)&&(0>c[q]||isNaN(c[q])?c[q]=0:255<c[q]&&(c[q]=255));return a={r:c[0],g:c[1],b:c[2],status:1}};d=d.trim();d.match(/^rgb\(|^rgba\(/i)?(d=/\(\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})/.exec(d),
+e([parseInt(d[1]),parseInt(d[2]),parseInt(d[3])])):d.match(/^#/)&&(d=/(\w{2})(\w{2})(\w{2})/.exec(d),e([parseInt(d[1],16),parseInt(d[2],16),parseInt(d[3],16)]));return a};u.StrToDom=function(d){var a;e.DOMParser?(a=new DOMParser,a=a.parseFromString(d,"text/xml")):(a=new ActiveXObject("Microsoft.XMLDOM"),a.async=!1,a.loadXML(d));return a}})();
+FusionCharts.register("module",["private","modules.renderer.js-renderer",function(){function e(a,b,c,d){var e=b.paper,g=b.layers,k=c?"y-axis":"x-axis",l=this.layerAboveDataset=g.layerAboveDataset,m=this.layerBelowDataset=g.layerBelowDataset,g=l.bands||(l.bands=[]),p=g.length,q=m.bands||(m.bands=[]),D=q.length,r=l.lines||(l.lines=[]),t=r.length,H=m.lines||(m.lines=[]),u=H.length,l=l.labels||(l.labels=[]),v=l.length,m=m.labels||(m.labels=[]),A=m.length;this.renderer=b;this.axisData=a||{};this.globalOptions=
+b.options;this.isVertical=c;this.topBandGroup=this.topBandGroup||e.group(k+"-bands",this.layerAboveDataset);this.belowBandGroup=this.belowBandGroup||e.group(k+"-bands",this.layerBelowDataset);g.push(this.topBandGroup);p&&g[p].insertAfter(g[p-1]);q.push(this.belowBandGroup);D&&q[D].insertAfter(q[D-1]);this.topLineGroup=this.topLineGroup||e.group(k+"-lines",this.layerAboveDataset);this.belowLineGroup=this.belowLineGroup||e.group(k+"-lines",this.layerBelowDataset);this.topLabelGroup=this.topLabelGroup||
+e.group(k+"-labels",this.layerAboveDataset);this.belowLabelGroup=this.belowLabelGroup||e.group(k+"-labels",this.layerBelowDataset);r.push(this.topLineGroup);t&&r[t].insertAfter(r[t-1]);H.push(this.belowLineGroup);u&&H[u].insertAfter(H[u-1]);l.push(this.topLabelGroup);v&&l[v].insertAfter(l[v-1]);m.push(this.belowLabelGroup);A&&m[A].insertAfter(m[A-1]);this.isReverse=d;this.configure()}function q(a,b,c,d){return jb(b-c[1]-d.top,a-c[0]-d.left)}function F(a,b){var c=b?360:Eb;a=(a||0)%c;return 0>a?c+a:
+a}var u=this,d=u.window,a=u.hcLib,t=a.Raphael,E=a.chartAPI,c=/msie/i.test(d.navigator.userAgent)&&!d.opera,l=d.document,b=d.Image,r="VML"===t.type,V=a.BLANKSTRING,p=a.getPosition,g="rgba(192,192,192,"+(c?.002:1E-6)+")",c=a.TOUCH_THRESHOLD_PIXELS,k=a.CLICK_THRESHOLD_PIXELS,m=a.componentDispose,J=a.stubFN,T={pageX:0,pageY:0},S=parseFloat,v=parseInt,aa=a.extend2,L=a.addEvent,fa=a.getMouseCoordinate,G=a.removeEvent,H=a.pluck,D=a.pluckNumber,R=a.toRaphaelColor,W=a.graphics.convertColor,O=a.getFirstAlpha,
+ha=a.HUNDREDSTRING,ka=a.setImageDisplayMode,ga=a.FC_CONFIG_STRING,ba=/\s\bx\b=['"][^'"]+?['"]/ig,ja=/\s\by\b=['"][^'"]+?['"]/ig,ma=a.plotEventHandler,da=a.isArray,na=a.JpegToPdf,A=d.SvgDeCanvo,ca="createTouch"in l,Ia=ca&&!(d.navigator.maxTouchPoints||d.navigator.msMaxTouchPoints),Ba=a.each=function(a,b,c,d){var e;c||(c=a);d||(d={});if(da(a))for(e=0;e<a.length;e+=1){if(!1===b.call(c,a[e],e,a,d))return e}else if(null!==a&&void 0!==a)for(e in a)if(!1===b.call(c,a[e],e,a,d))return e},va=a.createContextMenu,
+Y=a.hasTouch,Da=Y?c:k,sa=a.getSentenceCase,wa=a.getCrispValues,ob=a.getValidValue,ia=a.getFirstValue,bb=a.parseTooltext,ua=a.regex.dropHash,la=a.HASHSTRING,pb=function(a){return a!==qb&&null!==a},nb=function(a,b){a[1]===a[4]&&(a[1]=a[4]=oa(a[1])+b%2/2);a[2]===a[5]&&(a[2]=a[5]=oa(a[2])+b%2/2);return a},qb,Ga=8===l.documentMode?"visible":"",fb=d.Math,Ca=fb.sin,mb=fb.cos,jb=fb.atan2,oa=fb.round,Cb=fb.min,Oa=fb.max,zb=fb.abs,jc=fb.ceil,ac=fb.floor,ec=180/fb.PI,Sb=fb.PI,Qb=Sb/2,Eb=2*Sb,pc=Sb+Qb,Bb=a.getFirstColor,
+Ab=a.graphics.getLightColor,Tb=a.POSITION_TOP,Hb=a.POSITION_BOTTOM,Qa=a.POSITION_RIGHT,wb=a.POSITION_LEFT;t.ca.ishot=function(a){if(this.removed)return!1;var b=this.node;a=a||"";b.ishot=a;switch(this.type){case "group":for(b=this.bottom;b;)b.attr("ishot",a),b=b.next;break;case "text":if(t.svg)for(b=b.getElementsByTagName("tspan")[0];b;)b.ishot=a,b=b.nextSibling}return!1};t.addSymbol({printIcon:function(a,b,c){var d=.75*c,e=.5*c,g=.33*c,k=oa(a-c)+.5,l=oa(b-c)+.5,m=oa(a+c)+.5;c=oa(b+c)+.5;var p=oa(a-
+d)+.5,q=oa(b-d)+.5,d=oa(a+d)+.5,D=oa(b+e)+.5,r=oa(a+e)+.5,t=oa(b+g)+.5;a=oa(a-e)+.5;g=oa(b+g+g)+.5;return["M",p,l,"L",d,l,d,q,p,q,"Z","M",k,q,"L",k,D,p,D,p,b,d,b,d,D,m,D,m,q,"Z","M",p,b,"L",p,c,d,c,d,b,"Z","M",r,t,"L",a,t,"M",r,g,"L",a,g]},exportIcon:function(a,b,c){var d=.66*c,e=.5*d,g=oa(a-c)+.5,k=oa(b-c)+.5,l=oa(a+c)+.5;c=oa(b+c)-.5;var m=oa(a-e)+.5,p=b<c-3?c-3:oa(b)+.5,e=oa(a+e)-.5,q=oa(a+d)-.5,d=oa(a-d)+.5;return["M",g,p,"L",g,c,l,c,l,p,l,c,g,c,"Z","M",a,c-1,"L",d,b,m,b,m,k,e,k,e,b,q,b,"Z"]}});
+a.rendererRoot=E("renderer.root",{standaloneInit:!1,isRenderer:!0,inited:!1,callbacks:[],init:function(a,b,c){var d=this,e=d.container=a&&a.containerElement||b.chart.renderTo,g=b.tooltip,k=d.layer,l,m;d.options=b;d.logic=a;d.definition=a.dataObj;d.smartLabel=a.smartLabel;d.numberFormatter=a.numberFormatter;d.fusionCharts=a.chartInstance;d.linkClickFN=a.linkClickFN;m=(l=b.chart)&&l.animation&&l.animation.duration;d.animationCompleteQueue=[];e.innerHTML=V;e=d.paper=d.fusionCharts.jsVars.paper=new t(e,
+e.offsetWidth||a.width,e.offsetHeight||a.height);!1!==u.core.options._useSVGDescTag&&e._desc&&(l=a.friendlyName||"Vector image",d.definition&&d.definition.chart&&d.definition.chart.caption&&(l+=' with caption "'+d.definition.chart.caption+'"'),e._desc(l));d.chartWidth=e.width;d.chartHeight=e.height;d.elements||(d.elements={});k||(k=d.layers={},k.background=k.background||e.group("background"),k.dataset=k.dataset||e.group("dataset").insertAfter(k.background),k.tracker=k.tracker||e.group("hot").insertAfter(k.dataset));
+g&&!1!==g.enabled&&(e.tooltip(g.style,g.shadow,g.constrain),k.tracker.trackTooltip(!0),k.dataset.trackTooltip(!0));d.disposeChartStyleSheet();d.setMargins();d.drawBackground();d.drawButtons();d.drawGraph();b.legend&&b.legend.enabled&&d.drawLegend();d.drawCaption();d.drawLogo();d.setChartEvents();d.drawLabels&&d.drawLabels();Ba(b.callbacks,function(a){a.apply(d,this)},[a]);Ba(d.callbacks,function(a){a.apply(d,this)},[a]);d.fusionCharts.annotations&&d.fusionCharts.annotations.draw(d);d.createChartStyleSheet();
+d.options.nativeMessage||m||u.raiseEvent("internal.animationComplete",{},d.fusionCharts);d.hasRendered=!0;c&&c(d)},disposeChartStyleSheet:function(){this.paper.cssClear()},createChartStyleSheet:function(){this.paper.cssRender()},addCSSDefinition:function(a,b){var c=this.paper;b.color&&(b.fill=b.color);c.cssAddRule(a,b)},animationCompleteQueue:[],animationComplete:function(){var a,b,c,d;this.animatedElements=this.animatedElements?++this.animatedElements:1;if(this.animatedElements===this.animatingElementsCount){c=
+this.animationCompleteQueue;a=0;for(b=c.length;a<b;a++)d=c[a],d.fn&&d.fn.call(d.scope);this.animationCompleteQueue=[];u.raiseEvent("internal.animationComplete",{},this.fusionCharts)}},getAnimationCompleteFn:function(){var a=this;a.animatingElementsCount=a.animatingElementsCount?++a.animatingElementsCount:1;return function(){a.animationComplete()}},reinit:function(a,b,c){this.hasRendered||this.init(b,c)},dispose:function(){var a=this.eventListeners,b=a&&a.length;this.disposing=!0;if(b)for(;b--;)a[b].unlisten();
+if(this.toolbar&&this.toolbar.length){for(;this.toolbar.length;)a=this.toolbar.pop(),a.remove();this.toolbar.add=null}if(this.menus&&this.menus.length)for(;this.menus.length;)a=this.menus.pop(),a.destroy();this.paper&&(this.paper.clear(),this.paper.remove(),delete this.paper);this.exportIframe&&(this.exportIframe.parentNode.removeChild(this.exportIframe),delete this.exportIframe);delete this.disposing;this.container=null;this.disposed=!0},onContainerClick:function(b){var c=b.target||b.originalTarget||
+b.srcElement||b.relatedTarget||b.fromElement,d=c&&c.parentElement,e=c&&c.nodeName.toLowerCase(),g=b.data,k=g.fusionCharts;b=a.getMouseCoordinate(g.container,b.originalEvent);k.ref&&(k=aa({height:k.args.height,width:k.args.width,pixelHeight:k.ref.offsetHeight,pixelWidth:k.ref.offsetWidth,id:k.args.id,renderer:k.args.renderer,container:k.options.containerElement},b),u.raiseEvent("chartclick",k,g.logic.chartInstance),c&&c.ishot&&g||"tspan"===e&&d&&d.ishot&&g||g.options.chart.link&&g.linkClickFN.call(g,
+g))},onContainerMouseMove:function(b){var c=b.data,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.originalEvent);d.ref&&(d=aa({height:d.args.height,width:d.args.width,pixelHeight:d.ref.offsetHeight,pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},b),u.raiseEvent("chartMouseMove",d,c.logic.chartInstance))},onContainerRollOver:function(b){var c=b.data,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.originalEvent);d.ref&&(d=aa({height:d.args.height,
+width:d.args.width,pixelHeight:d.ref.offsetHeight,pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},b),u.raiseEvent("chartRollOver",d,c.logic.chartInstance))},onContainerRollOut:function(b){var c=b.chart,d=c.fusionCharts;b=a.getMouseCoordinate(c.container,b.event);d.ref&&(d=aa({height:d.args.height,width:d.args.width,pixelHeight:d.ref.offsetHeight,pixelWidth:d.ref.offsetWidth,id:d.args.id,renderer:d.args.renderer,container:d.options.containerElement},
+b),u.raiseEvent("chartRollOut",d,c.logic.chartInstance))},mouseStateIn:!1,winMouseHover:function(a){var b=a.originalEvent,b=b.target||b.originalTarget||b.srcElement||b.relatedTarget||b.fromElement,c=a.data,e=c.paper;a={chart:c,event:a.originalEvent};r?e.getById(b.parentNode.raphaelid)||(c.onContainerRollOut(a),c.mouseStateIn=!1,G(l,"mouseover",c.winMouseHover)):b.viewportElement||(c.mouseStateIn=!1,c.onContainerRollOut(a),G(d,"mouseover",c.winMouseHover))},chartHoverManager:function(){return function(a){var b=
+a.type,c=a.data,e=c.eventListeners||(c.eventListeners=[]);"mouseover"!==b&&"touchstart"!==b||!1!==c.mouseStateIn||(c.mouseStateIn=!0,c.onContainerRollOver(a),e.push(L(r?l:d,"mouseover",c.winMouseHover,c)))}}(),setChartEvents:function(){var a=this.options,b=this.eventListeners||(this.eventListeners=[]),a=this.link=a.chart.link,c=this.container,d=D(this.definition&&this.definition.chart.enablechartmousemoveevent,0);G(c,"click",this.onContainerClick);b.push(L(c,"click",this.onContainerClick,this));G(this.paper.canvas,
+"mouseover",this.chartHoverManager,this);G(this.paper.canvas,"touchstart",this.chartHoverManager,this);G(this.paper.canvas,"mouseout",this.chartHoverManager,this);G(this.paper.canvas,"touchend",this.chartHoverManager,this);b.push(L(this.paper.canvas,"mouseover touchstart mouseout touchend",this.chartHoverManager,this));G(c,"mousemove",this.onContainerMouseMove,this);G(c,"touchmove",this.onContainerMouseMove,this);d&&b.push(L(c,"mousemove touchmove",this.onContainerMouseMove,this));this.paper.canvas.style.cursor=
+t.svg?a&&"pointer"||"default":a&&"hand"||"default"},onOverlayMessageClick:function(){var a=this.elements;t.animation({opacity:0},1E3);a.messageText&&a.messageText.hide();a.messageVeil&&a.messageVeil.hide()},showMessage:function(a,b){var c=this.paper,d=this.options.chart,e=this.elements,g=e.messageText,k=e.messageVeil,l=c.width,m=c.height;k||(k=e.messageVeil=c.rect(0,0,l,m).attr({fill:"rgba(0,0,0,0.2)",stroke:"none"}));k.show().toFront().attr("cursor",b?"pointer":"default")[b?"click":"unclick"](this.onOverlayMessageClick,
+this);g||(g=e.messageText=c.text(l/2,m/2,V).attr({fill:"rgba(255,255,255,1)","font-family":"Verdana,sans","font-size":10,"line-height":14,direction:d.textDirection,ishot:!0}));a=a||V;this.smartLabel.setStyle({"line-height":"14px","font-family":"Verdana,sans","font-size":"10px"});c=this.smartLabel.getSmartText(a,l-(d.spacingRight||0)-(d.spacingLeft||0),m-(d.spacingTop||0)-(d.spacingBotton||0));g.attr({text:c.text,ishot:!0,cursor:b?"pointer":"default"})[b?"click":"unclick"](this.onOverlayMessageClick,
+this).show().toFront()},drawButtons:function(){var a=this,b=a.logic,c="zoomline"===b.rendererId,d=a.paper,e=a.elements,g=a.toolbar||(a.toolbar=[]),k=a.menus||(a.menus=[]),l=a.layers,m=a.options,p=m[ga],b=p&&p.outCanvasStyle||b.outCanvasStyle||{},p=m.chart.toolbar||{},q=p.hDirection,D=c?1:p.vDirection,r=p.button||{},t=r.scale,H=r.width*r.scale,u=r.height*r.scale,v=q*(r.spacing*r.scale+H),A=r.radius,E=(m=m.exporting)&&m.buttons||{},G=E.exportButton&&!1!==E.exportButton.enabled,E=E.printButton&&!1!==
+E.printButton.enabled,pa,ea=l.buttons||(l.buttons=d.group("buttons").trackTooltip(!0));g.y||(g.y=(c?0:p.y)+p.vMargin*D+Cb(0,u*D));g.x||(g.x=p.x+p.hMargin*q-Oa(0,H*q));g.count=0;g.add=function(a,b,c){c="string"===typeof c?{tooltip:c}:c||{};var f=0===g.count?v-q*r.spacing*r.scale:v,f=c.x||(g.x+=f),e=c.y||g.y,n=c.tooltip||"",B=r.disableGradient||(r.disableGradient=c.disableGradient||!1);g.push(a=d.button(f,e,qb,a,{width:c.w||H,height:c.h||u,r:A,id:g.count++,verticalPadding:r.symbolHPadding*t,horizontalPadding:r.symbolHPadding},
+ea).attr({ishot:!0,fill:[r.fill,r.labelFill,r.symbolFill,r.hoverFill,B],stroke:[r.stroke,r.symbolStroke],"stroke-width":[r.strokeWidth,r.symbolStrokeWidth]}).tooltip(n).buttonclick(b));return a};G&&(k.push(pa=e.exportMenu=va({chart:a,basicStyle:b,items:function(b){var c=[],d=function(b){return function(){a.logic.chartInstance.exportChart({exportFormat:b})}},e;for(e in b)c.push({text:b[e],onclick:d(e)});return c}(m.exportformats)})),e.exportButton=g.add("exportIcon",function(a,b){return function(){pa.visible?
+pa.hide():pa.show({x:a,y:b+1})}}(g.x+H,g.y+u),{tooltip:"Export chart"}));E&&(e.printButton=g.add("printIcon",function(){a.print()},{tooltip:"Print chart"}))},setMargins:function(){var a=this.paper,b=this.options.chart||{},c=oa;this.canvasBorderWidth=b.plotBorderWidth||0;this.canvasTop=c(b.marginTop)||0;this.canvasLeft=c(b.marginLeft)||0;this.canvasWidth=c(a.width-(b.marginLeft||0)-(b.marginRight||0));this.canvasHeight=c(a.height-(b.marginTop||0)-(b.marginBottom||0));this.canvasRight=this.canvasLeft+
+this.canvasWidth;this.canvasBottom=this.canvasTop+this.canvasHeight},drawBackground:function(){var a=this,c=a.paper,d=a.layers,e=a.elements,g=d.background,k=e.background,l=e.chartborder,m=a.options.chart||{},p=S(m.borderWidth)||0,q=.5*p,r=2*p,D=m.borderWidth||0,t=a.chartHeight,H=a.chartWidth,v=e.backgroundImage,A=m.bgSWF,E=m.bgSWFAlpha/100,G=m.bgImageDisplayMode,J=m.bgImageVAlign,F=m.bgImageHAlign,pa=m.bgImageScale,ea=D+","+D+","+(H-2*D)+","+(t-2*D),M,xa,Z,z,C,P,N;c.canvas.style.backgroundColor=m.containerBackgroundColor;
+!g&&(g=d.background=c.group("background"));d={x:p,y:p,width:c.width-r,height:c.height-r,stroke:"none",fill:R(m.backgroundColor)};k?k.attr(d):k=e.background=c.rect(d,g);d={x:q,y:q,width:c.width-p,height:c.height-p,stroke:m.borderColor,"stroke-width":p,"stroke-dasharray":m.borderDashStyle,fill:"none",r:m.borderRadius||0};l?l.attr(d):l=e.chartborder=c.rect(d,g);A&&(M=new b,C=Z=1,v=[],M.onload=function(){xa=ka(G,J,F,pa,D,H,t,M);xa["clip-rect"]=ea;if(xa.tileInfo)for(Z=xa.tileInfo.xCount,C=P=xa.tileInfo.yCount,
+N=xa.y,delete xa.tileInfo;Z&&xa.width&&xa.height;)--P,z?(v[void 0]=z.clone().attr({x:xa.x,y:xa.y}),g.appendChild(v[void 0])):v[void 0]=z=c.image(A,g).attr(xa).css({opacity:E}),xa.y+=xa.height,0===P&&(P=C,--Z,xa.x+=xa.width,xa.y=N);else{if(a.disposed||c.disposed)return;v[0]=c.image(A,g);v[0].attr(xa).css({opacity:E}).attr({visibility:Ga,"clip-rect":ea})}u.raiseEvent("BackgroundLoaded",{url:A,bgImageAlpha:100*E,bgImageDisplayMode:G,bgImageVAlign:J,bgImageHAlign:F,bgImageScale:pa,imageWidth:M.width,
+imageHeight:M.height},a.logic.chartInstance)},M.onerror=function(b){u.raiseEvent("BackgroundLoadError",{url:A,bgImageAlpha:100*E,error:b,bgImageDisplayMode:G,bgImageVAlign:J,bgImageHAlign:F,bgImageScale:pa},a.logic.chartInstance)},M.src=A,e.backgroundImage=v)},drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=a.layers,g=a.options,k=a.elements,l=g.chart,g=a.datasets=g.series,m=ia(l.rendererId,l.defaultSeriesType),p=e.background,q=e.dataset=e.dataset||b.group("dataset").insertAfter(p),
+r,D,p=function(a,b){return function(f){var e=c[a],g,B={hcJSON:{series:[]}},k=B.hcJSON.series[a]||(B.hcJSON.series[a]={}),I=d.chartInstance.jsVars._reflowData;g=(f=ia(f,!e.visible))?"visible":"hidden";Ba(e.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});e.visible=f;b.visible=f;k.visible=f;aa(I,B,!0)}},t=function(b){return function(d,e){a["legendClick"+m]&&a["legendClick"+m](c[b],d,e)||a.legendClick&&a.legendClick(c[b],d,e)}},u=function(b){return function(){return a.getEventArgs&&
+a.getEventArgs(c[b])}},v=function(b,d,e){return function(g,w){d.call(a,c[b],e,{numUpdate:g,hasAxisChanged:w})}};e.tracker=e.tracker||b.group("hot").insertAfter(q);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],k.plots=c);e=0;for(k=g.length;e<k;e++)b=g[e]||{},q=b.updatePlot="updatePlot"+sa(H(b.type,b.plotType,m)),q=a[q],r=b.drawPlot="drawPlot"+sa(H(b.type,b.plotType,m)),r=a[r]||a.drawPlot,(D=c[e])||(c.push(D={index:e,items:[],data:b.data||[],name:b.name,userID:b.userID,setVisible:p(e,b),legendClick:t(e),
+getEventArgs:u(e),realtimeUpdate:v(e,q||r,b)}),b.plot=D,b.legendClick=D.legendClick,b.getEventArgs=D.getEventArgs,b.setVisible=D.setVisible),e&&g[e-1]&&(b.previousData=g[e-1].data),r.call(a,D,b);l.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())},drawPlot:J,drawCanvas:J,drawAxes:J,drawScroller:function(){},drawLegend:function(){var a=this,b=a.options,c=a.paper,d=b.chart||{},e=b.legend,g=e.scroll,b=a.elements.legend={elements:{}},k=b.elements,l=a.layers.legend,m=k.box,p=k.caption,q=k.elementGroup,
+r="vertical"===e.layout,H=d.marginBottom,u=d.spacingBottom,v=d.spacingLeft,A=d.spacingRight,E=c.width,G=c.height,J=a.canvasTop,F=e.width,pa=e.height,ea=e.borderRadius,M=e.backgroundColor,R=e.borderColor,Z=e.borderWidth||0,z=.5*Z,C=.5*Z+2,P=D(e.padding,4),N=.5*P,h,O,U,W,L,S,T,ha;ha=g&&g.enabled;r?(r=E-A-F,H=J+.5*(G-H-J-pa)+(e.y||0)):(r=v+.5*(E-v-A-F)+(e.x||0),H=G-u-pa);u=t.crispBound(r,H,F,pa,Z);r=u.x;H=u.y;F=u.width;pa=u.height;l||(l=a.layers.legend=c.group("legend").insertBefore(a.layers.tracker).translate(r,
+H).attr("class","fusioncharts-legend"));a.addCSSDefinition(".fusioncharts-legend .fusioncharts-caption",aa({"text-anchor":e.title.align},e.title.style));e.legendAllowDrag&&(a.addCSSDefinition(".fusioncharts-legend",{cursor:"move"}),O=r,U=H,l.drag(function(a,b){W=S+a;L=T+b;W+F+C>E&&(W=E-F-C);L+pa+C>G&&(L=G-pa-C);W<C&&(W=C);L<C&&(L=C);l.translate(W-O,L-U);O=W;U=L},function(){S=O;T=U}));ea={x:0,y:0,width:F,height:pa,r:ea,stroke:R,"stroke-width":Z,fill:M||"none",ishot:e.legendAllowDrag};m?m.attr(ea):
+m=k.box=c.rect(ea,l);m.shadow(e&&e.shadow);ha?(h=pa-P,m=","+F+","+h,q=k.elementGroup=c.group("legenditems",l).attr({"clip-rect":"0,"+N+m}),g=k.scroller||(k.scroller=c.scroller(F-10+N-Z,z,10,pa-Z,!1,{scrollPosition:g.scrollPosition||0,scrollRatio:(h+P)/e.totalHeight,showButtons:!1,displayStyleFlat:g.flatScrollBars},l)),g.attr("fill",e.legendScrollBgColor).scroll(function(b){q.transform(["T",0,(h-e.totalHeight)*b]);aa(a.fusionCharts.jsVars._reflowData,{hcJSON:{legend:{scroll:{position:b}}}},!0)})):
+q=k.elementGroup=l;if(e.title&&e.title.text!==V){switch(e.title.align){case "start":ha=P;break;case "end":ha=F-P-(ha?10:0);break;default:ha=.5*F}q.trackTooltip(!0);ea={"class":"fusioncharts-caption","text-anchor":e.title.align,text:e.title.text,x:ha,y:P,fill:e.title.style.color,"vertical-align":"top",direction:d.textDirection,"line-height":e.title.style.lineHeight};p?p.attr(ea):p=k.caption=c.text(ea,q).attr("class","fusioncharts-caption");p.tooltip(e.title.originalText)}this["draw"+sa(e.type||"point")+
+"LegendItem"](b)},drawPointLegendItem:function(a){var b=this,c=b.paper,d=b.options,e=d.series,k=d.chart,l=k.defaultSeriesType,d=d.legend,m=d.legendHeight,p=d.symbolPadding,q=d.textPadding||2,r=D(d.padding,4),k=k.textDirection,t=d.itemHoverStyle,v=d.itemHiddenStyle,A=d.itemStyle,E=A.color,v=v&&v.color||"#CCCCCC",G=t&&t.color||E,t=d.symbol3DLighting,J=d.symbolWidth,Ka=!1!==d.interactiveLegend,F=a.elements,O=F.elementGroup;a=a.item=[];var F=F.item=[],pa=[],ea={line:!0,spline:!0,scatter:!0,bubble:!0,
+dragnode:!0,zoomline:!0},M,xa,Z,z,C,P,N,h,L,U,S,T,V,Y,ba,ma,Vb,Q,uc,ab,ca,Ub;V=0;for(Y=e.length;V<Y;V+=1)if(M=e[V],h=M.legendCosmetics||{},M&&!1!==M.showInLegend)if(L=M.type||l,"point"===M.legendType)for(h=M.data||[],Z=0,C=h.length;Z<C;Z+=1)M=h[Z]||{},!1!==M.showInLegend&&(M._legendType=L,pa.push(M));else switch(M._legendType=L,L){case "pie":case "pie3d":case "funnel":case "pyramid":pa=M.data;break;default:pa.push(M)}pa.sort(function(a,b){return(a.legendIndex||0)-(b.legendIndex||0)||a.__i-b.__i});
+d.reversed&&pa.reverse();e=d.initialItemX||0;l=d.initialItemY||0;C=function(a){var c=this.data("legendItem"),f=c.getEventArgs?c.getEventArgs():{},d;a=fa(b.logic.chartInstance.ref,a);f.chartX=a.chartX;f.chartY=a.chartY;f.pageX=a.pageX;f.pageY=a.pageY;f.preventDefaults=function(){d=!0};u.raiseEvent("LegendItemClicked",f,b.logic.chartInstance);Ka&&!d&&c.legendClick()};P=function(a){var c=this.data("legendItem"),f=c.getEventArgs?c.getEventArgs():{};a=fa(b.logic.chartInstance.ref,a);var d=!1!==c.visible,
+e=c.plot.legend.elements.legendItemText;f.chartX=a.chartX;f.chartY=a.chartY;f.pageX=a.pageX;f.pageY=a.pageY;void 0!==c.plot.visible&&(d=c.plot.visible);d&&e&&e.attr({fill:G});u.raiseEvent("LegendItemRollover",f,b.logic.chartInstance)};N=function(a){var c=this.data("legendItem"),f=c.getEventArgs?c.getEventArgs():{};a=fa(b.logic.chartInstance.ref,a);var d=!1!==c.visible,e=c.plot.legend.elements.legendItemText;void 0!==c.plot.visible&&(d=c.plot.visible);f.chartX=a.chartX;f.chartY=a.chartY;f.pageX=a.pageX;
+f.pageY=a.pageY;d&&e&&e.attr({fill:E});u.raiseEvent("LegendItemRollout",f,b.logic.chartInstance)};b.addCSSDefinition(".fusioncharts-legend .fusioncharts-legenditem",d.itemStyle);V=0;for(Y=pa.length;V<Y;V+=1)!1!==pa[V].showInLegend&&(Ub={elements:{},hiddenColor:v,itemTextColor:E,hoverColor:G},a.push(Ub),F.push(Ub.elements),M=pa[V],h=M.legendCosmetics||{},U=e+M._legendX+r,S=l+M._legendY-r,T=M._legendH,xa=M._legendType||L,Z=!1!==M.visible,z=Ub.itemLineColor=R(M.color||{}),M.plot.legend=Ub,Ub.elements.legendItemText=
+c.text({"class":"fusioncharts-legenditem",x:U+m+q-2,y:S+(M._legendTestY||0),text:M.name,fill:Z?E:v,"vertical-align":"top",direction:k,"text-anchor":"start",cursor:A.cursor||"pointer",ishot:Ka,"line-height":A.lineHeight,"font-size":A.fontSize},O).data("legendItem",M),h.customLegendIcon?(M&&(Q=M.marker)&&!1!==Q.enabled?(uc=Q.lineColor,uc=W(H(h.borderColor,uc.FCcolor&&uc.FCcolor.color.split(",")[0]||uc,z),H(h.alpha,ha)),ab=Q.fillColor,ab=W(H(h.bgColor,ab&&ab.FCcolor&&ab.FCcolor.color.split(",")[0],ab,
+z),H(h.bgAlpha,h.alpha,ha))):(ab=H(h.bgColor,M.color&&M.color.FCcolor&&M.color.FCcolor.color||M.color),uc=Ab(ab,60).replace(ua,la),uc=W(H(h.borderColor,uc),H(h.alpha,ha)),ab=W(ab,H(h.bgAlpha,h.alpha,ha))),Ub.symbolColor=R(ab),Ub.symbolStroke=R(uc),ba=.5*J,z=U+p+ba,xa=S+(M._markerYGutter||0)+p+ba,ca&&(ba*=.6),ma=h.symbol.split("_"),Vb="spoke"===ma[0]?1:0,xa=ma[1]?Ub.elements.legendItemSymbol=c.polypath(ma[1],z,xa,ba,h.startAngle,Vb,O):Ub.elements.legendItemSymbol=c.circle(z,xa,ba,O),xa.data("legendItem",
+M).attr({cursor:A.cursor||"pointer",stroke:Z?Ub.symbolStroke:v,fill:Z?Ub.symbolColor:v,"stroke-width":D(h.borderThickness,1),ishot:Ka})):ea[xa]?(xa=S+(M._markerYGutter||0)+p+.5*J,M.lineWidth&&(ca=Ub.elements.legendItemLine=c.path({"stroke-width":M.lineWidth,stroke:Z?z:v,cursor:A.cursor||"pointer",ishot:Ka,path:["M",U+p,xa,"L",U+p+J,xa]},O).data("legendItem",M)),M&&(Q=M.marker)&&!1!==Q.enabled&&(Ub.symbolStroke=R(H((uc=Q.lineColor)&&(uc.FCcolor&&uc.FCcolor.color.split(",")[0]||uc),z)),t?Q.fillColor&&
+Q.fillColor.FCcolor?(h=aa({},Q.fillColor),h.FCcolor.alpha="100"):h=H(Q.fillColor,z):h={FCcolor:{color:H((ab=Q.fillColor)&&(ab.FCcolor&&ab.FCcolor.color.split(",")[0]||ab),z),angle:0,ratio:"0",alpha:"100"}},Ub.symbolColor=R(h),ba=.5*J,z=U+p+ba,xa=S+(M._markerYGutter||0)+p+ba,ca&&(ba*=.6),ma=Q.symbol.split("_"),Vb="spoke"===ma[0]?1:0,xa=ma[1]?Ub.elements.legendItemSymbol=c.polypath(ma[1],z,xa,ba,Q.startAngle,Vb,O):Ub.elements.legendItemSymbol=c.circle(z,xa,ba,O),xa.data("legendItem",M).attr({cursor:A.cursor||
+"pointer",stroke:Z?Ub.symbolStroke:v,fill:Z?Ub.symbolColor:v,"stroke-width":1,ishot:Ka}))):(h=b.getSymbolPath(U+p,S+(M._markerYGutter||0)+p,J,J,xa,M,!t),Ub.symbolColor=R(h.color),Ub.symbolStroke=R(h.strokeColor),xa=Ub.elements.legendItemSymbol=c.path({path:h.path,"stroke-width":h.strokeWidth,stroke:Z?Ub.symbolStroke:v,fill:Z?Ub.symbolColor:v,cursor:A.cursor||"pointer",ishot:Ka},O).data("legendItem",M)),Ub.elements.legendItemBackground=c.rect({x:U,y:S,width:M._totalWidth,height:T,r:0,fill:R(M.legendFillColor||
+g),"stroke-width":1,stroke:R(M.legendBorderColor||"none"),cursor:A.cursor||"pointer",ishot:Ka},O).click(C).mouseover(P).mouseout(N).data("legendItem",M));d.reversed&&pa.reverse()},drawCaption:function(){var a=this.options.chart,b=this.options.title,c=this.options.subtitle,d=this.paper,e=this.smartLabel,g=this.elements,k=this.layers,l=k.caption,m=g.caption,p=g.subcaption,q=b.text,r=c&&c.text,D=b.x,t;!q&&!r||l||(l=k.caption=d.group("caption"),l.trackTooltip(!0),k.tracker?l.insertBefore(k.tracker):l.insertAfter(k.dataset));
+q?(this.addCSSDefinition(".fusioncharts-caption",b.style),t={"class":"fusioncharts-caption",text:b.text,fill:b.style.color,x:D,y:b.y||a.spacingTop||0,"text-anchor":b.align||"middle","vertical-align":b.verticalAlign||"top",visibility:"visible",direction:a.textDirection},m?m.attr(t):m=g.caption=d.text(t,l).attr("class","fusioncharts-caption"),m.tooltip(b.originalText),m.css(b.style),e?(e.setStyle(b.style),t=e.getOriSize(b.text).height):t=10):m&&(m=g.caption=m.remove());r?(this.addCSSDefinition(".fusioncharts-subcaption",
+c.style),t={"class":"fusioncharts-subcaption",text:c.text,fill:c.style.color,x:D,y:q?m.attrs.y+t+2:b.y||a.spacingTop||0,"text-anchor":b.align||"middle","vertical-align":"top",direction:a.textDirection,visibility:"visible"},p?p.attr(t):p=g.subcaption=d.text(t,l).attr("class","fusioncharts-subcaption"),p.css(c.style),p.tooltip(c.originalText)):p&&(g.subcaption=p.remove());q||r||!l||(k.caption=l.remove())},drawLogo:function(){var a=this,c=a.paper,e=a.elements,g=a.options,k=g.credits,l=g.chart||{},m=
+l.borderWidth||0,p=a.chartHeight,q=a.chartWidth,D=e.logoImage,t=l.logoURL,H=l.logoAlpha/100,v=l.logoPosition,A=l.logoLink,E=l.logoScale,G=l.logoLeftMargin,J=l.logoTopMargin,g={tr:{vAlign:Tb,hAlign:Qa},bl:{vAlign:Hb,hAlign:wb},br:{vAlign:Hb,hAlign:Qa},cc:{vAlign:"middle",hAlign:"middle"}},F,R,O;a.logic&&k.enabled&&c.text().attr({text:k.text,x:6,y:p-4,"vertical-align":Hb,direction:l.textDirection,"text-anchor":"start",fill:"rgba(0,0,0,0.5)",title:k.title||""}).css({fontSize:9,fontFamily:"Verdana,sans",
+cursor:"pointer",_cursor:"hand"}).click(function(){try{d.open(k.href)}catch(a){(d.top||d).location.href=k.href}});t&&(F=new b,(O=g[v])||(O={vAlign:Tb,hAlign:wb}),F.onload=function(){a.disposed||c.disposed||(R=ka("none",O.vAlign,O.hAlign,E,m,q,p,F),r&&(R.w=R.width||0,R.h=R.height||0),R.src=t,D=a.paper.image(R).translate(G,J).css("opacity",H),A&&D.css({cursor:"pointer",_cursor:"hand"}),D.mouseover(function(b){b=fa(a.logic.chartInstance.ref,b);u.raiseEvent("LogoRollover",{logoURL:t,logoAlpha:100*H,logoPosition:v||
+"tl",logoScale:E,logoLink:A,chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance)}),D.mouseout(function(b){b=fa(a.logic.chartInstance.ref,b);u.raiseEvent("LogoRollout",{logoURL:t,logoAlpha:100*H,logoPosition:v||"tl",logoScale:E,logoLink:A,chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance)}),D.click(function(b){b=fa(a.logic.chartInstance.ref,b);u.raiseEvent("LogoClick",{logoURL:t,logoAlpha:100*H,logoPosition:v||"tl",logoScale:E,logoLink:A,
+chartX:b.chartX,chartY:b.chartY,pageX:b.pageX,pageY:b.pageY},a.logic.chartInstance,void 0,function(){A&&l.events.click.call({link:A})})}),u.raiseEvent("LogoLoaded",{logoURL:t,logoAlpha:100*H,logoPosition:v||"tl",logoScale:E,logoLink:A},a.logic.chartInstance))},F.onerror=function(b){u.raiseEvent("LogoLoadError",{logoURL:t,logoAlpha:100*H,logoPosition:v||"tl",logoScale:E,logoLink:A,error:b},a.logic.chartInstance)},F.src=t,e.logoImage=D)},getEventArgs:function(a){a=a||{};return{datasetName:a.name,datasetIndex:a.index,
+id:a.userID,visible:a.visible}},legendClick:function(a,b){var c=a.legend,d=c&&c.elements,e=d&&d.legendItemText,g=d&&d.legendItemSymbol,d=d&&d.legendItemLine,k=c&&c.hiddenColor,l=c&&c.itemLineColor,m=c&&c.itemTextColor,p=c&&c.symbolColor,q=c&&c.symbolStroke,c=H(b,!a.visible);a.setVisible(b);c?(g&&g.attr({fill:p||l,stroke:q}),e&&e.attr({fill:m}),d&&d.attr({stroke:l})):(g&&g.attr({fill:k,stroke:k}),e&&e.attr({fill:k}),d&&d.attr({stroke:k}));if((e=this.datasets&&this.datasets[a.index]&&this.datasets[a.index].relatedSeries)&&
+e instanceof Array&&0<e.length)for(g=e.length;g--;)d=parseFloat(e[g]),d=this.plots[d],d.legendClick.call(d,c,!1)},exportChart:function(c){var e=this,n=e.fusionCharts,g=a.getSvgDataurl,k=a.removeCrossDomainImages,K=a.getBrowserDetails,m=a.downloadCharts,p=e.options;c="object"===typeof c&&function(a){var b={},c;for(c in a)b[c.toLowerCase()]=a[c];return b}(c)||{};var q=aa(aa({},p.exporting),c),r=(q.exportformat||"png").toLowerCase(),D=q.exporthandler,t=(q.exportaction||V).toLowerCase(),H=q.exporttargetwindow||
+V,v=q.exportfilename,E=q.exportparameters,G=q.exportcallback,J=q.exportwithimages,F=q.exportatclientside;if(!p.exporting||!p.exporting.enabled||!D)return!1;u.raiseEvent("beforeExport",q,n,void 0,function(){function a(){-1!==P.indexOf("<image ")?h?(U=(O=P.match(/<image [^\>]*\>/gi))&&O.length,S=function(a){var b,c;(c=a.match(/data:image\/(.*);/))?a=c[1]:(b=a&&a.split("/"),b=b[b.length-1],a=b.split("."),b=a[0],a=a[1]||"png","jpg"===a&&(a="jpeg"));return{name:b,type:a}},T=function(a,c,f,d,e){var n=new b;
+n.onload=function(){var b="image/"+f,h=l.createElement("canvas"),g=h.getContext("2d"),w="";h.width=n.width;h.height=n.height;g.drawImage(n,0,0);w=h.toDataURL(b);Y[a]=w;aa(w,c,f,d,e)};n.onerror=function(){ha()};n.src=a},aa=function(a,b,c,f,d){W["image_"+L]={name:b,type:c,encodedData:a,width:f,height:d};ha()},ha=function(){var a={},b,c,f,d,e,n,h=!1;L<U?(b=O[L].replace(/\"/g,""),b.split(" ").forEach(function(b){b=b.split(/=(.+)?/);a[b[0]]=b[1]}),a["xlink:href"]&&(c=(b=S(a["xlink:href"]))&&b.name||"temp_image_"+
+L,f=b&&b.type||"png",d=parseInt(a.width,10),e=parseInt(a.height,10),n=c+"."+f,Y[a["xlink:href"]]&&b&&b.name?h=!0:T(a["xlink:href"],c,f,d,e)),b='xlink:href="'+a["xlink:href"],P=P.replace(b,'xlink:href="temp/'+n),L+=1,h&&ha()):(C.encodedImgData=JSON.stringify(W),C.stream=P,m(null,null,null,C,Q))},ha()):m(null,null,null,C,Q):m(null,null,null,C,Q)}function c(){var a=v+"."+r;"svg"===r?g(N,function(b){m("url",b,a)}):p(r,f)}function f(a,b){var c=v+"."+r,d;switch(a){case "pdf":d=new na(R.height,R.width);
+d.addImage(b);d=d.getDataUrl();m("url",d,c);break;default:m("url",b,c)}}function p(a,c){var f=K(),d;d=l.createElement("canvas");d.width=R.width;d.height=R.height;"ie"==f.name?(f=N,new A(f,d,function(){switch(a){case "png":c(a,d.toDataURL("image/png"));break;case "jpeg":c(a,d.toDataURL("image/jpeg"));break;default:c(a,d.toDataURL("image/jpeg"))}})):"Chrome"!==f.name&&"Firefox"!==f.name&&"Edge"!==f.name||g(N,function(f){var d,e,n;d=l.createElement("canvas");e=d.getContext("2d");n=new b;n.src=f;n.onload=
+function(){d.width=n.width;d.height=n.height;e.drawImage(n,0,0);switch(a){case "png":c(a,d.toDataURL("image/png"));break;case "jpeg":c(a,d.toDataURL("image/jpeg"));break;default:c(a,d.toDataURL("image/jpeg"))}}})}var M=e.layers.buttons,ta=n.id,R=e.paper,z=u&&u.hcLib,C,P,N,h=z&&z.isCanvasElemSupported(),O,U,L=0,W={},S,T,ha,aa,Y={},Q={exportAction:t,exportTargetWindow:H,exportCallback:G,fusionCharts:n,paper:R,chartId:ta,exportHandler:D};M&&M.attr("visibility","hidden");P=R.toSVG(J&&h);N=R.toSVG(J&&
+h);M&&M.attr("visibility","visible");P=P.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/ig,"$1M 0 0 L 0 0$2");P=P.replace(/NS\d+:/gi,"xlink:");P=k(P);N=k(N);N=N.replace(/NS\d+:/gi,"xlink:");N=N.replace(/(\sd\s*=\s*["'])[M\s\d\.]*(["'])/ig,"$1M 0 0 L 0 0$2");N=N.replace(/(xlink:title\s*=\s*)['"].*["']/ig,"");P=P.replace(/[\w\-]+\=\"undefined\"/ig,"");P=P.replace(/(xlink:title\s*=\s*)['"].*["']/ig,"");P=P.replace(/rgba\(([^\)]+)\)/ig,function(a,b){return"#"+z.graphics.RGBtoHex(b.split(","))});P=P.replace(/(([\w]+\-)?opacity\s*=\s*)['"][\d\.]+e[\-\+][\d]+["']/ig,
+'$1"0.001"');P=P.replace(/(([\w]+\-)?opacity\s*:\s*)[\d\.]+e[\-\+][\d]+/ig,"$10.001");P=P.replace(/<text[^\>]+/ig,function(a){a.match(/(stroke-width\=[\"\']([a-z0-9\#]+)?[\"\'])|(stroke-width\s*\:\s*([a-z0-9\#]+)?;?)/ig)||(a=a.replace(/stroke\=[\"\']([a-z0-9\#]+)?[\"\']/ig,""),a=a.replace(/stroke\s*\:\s*([a-z0-9\#]+)?;?/ig,""),a=a.replace(/stroke-opacity\=[\"\']([a-z0-9\#]+)?[\"\']/ig,""),a=a.replace(/stroke-opacity\s*\:\s*([a-z0-9\#]+)?;?/ig,""),a=a.replace(/(<text[^\>]+fill\=)([\"\'][^\"\']+[\"\'])([^\>]+)/ig,
+'$1$2 stroke=$2 stroke-width="0.2"$3'),a=a.replace(/(<text[^\>]+fill-opacity\=)([\"\'][^\"\']+[\"\'])([^\>]+)/ig,"$1$2 stroke-opacity=$2 $3"));return a});P=P.replace(/<(\b[^<>s\s]+\b)[^\>]+?opacity\s*=\s*['"][^1][^\>]+?(\/>|>[\s\r\n]*?<\/\1>)/ig,function(a,b){var c=ba.exec(a)||V,f=ja.exec(a)||V;return a+"<"+b+c+f+' opacity="1" stroke-opacity="1" fill="#cccccc" stroke-width="0" r="0" height="0.5" width="0.5" d="M 0 0 L 1 1" />'});C={charttype:n.chartType(),stream:P,stream_type:"svg",meta_bgColor:q.bgcolor||
+"",meta_bgAlpha:q.bgalpha||"1",meta_DOMId:n.id,meta_width:R.width,meta_height:R.height,parameters:["exportfilename="+v,"exportformat="+r,"exportaction="+t,"exportparameters="+E].join("|")};F&&"download"===t?(M=K(),"undefined"===typeof d.btoa||"Chrome"!==M.name&&"Firefox"!==M.name&&"Edge"!==M.name&&"ie"!==M.name?(u.raiseWarning(this,"14038823867","run","Export Feature","Client side export requirement not fulfiled so exporting through server side"),a()):c()):a();u.raiseEvent("exportDataReady",C,n)},
+function(){u.raiseEvent("exportCancelled",q,n)})},print:function(a){var b=this,c=aa({},a);if(b.isPrinting)return!1;u.raiseEvent("BeforePrint",c,b.logic.chartInstance,void 0,function(){var a=b.container,f=b.elements,e=f.printButton,g=f.exportButton,k=[],m=a.parentNode,f=l.body||l.getElementsByTagName("body")[0],p=f.childNodes;b.isPrinting=!0;Ba(p,function(a,b){1==a.nodeType&&(k[b]=a.style.display,a.style.display="none")});!1!==c.hideButtons&&(e&&"hidden"!=e.attrs.visibility&&e.attr({visibility:"hidden"}),
+g&&"hidden"!=g.attrs.visibility&&g.attr({visibility:"hidden"}));f.appendChild(a);d.print();setTimeout(function(){e&&e.attr({visibility:"visible"});g&&g.attr({visibility:"visible"});m.appendChild(a);Ba(p,function(a,b){1==a.nodeType&&(a.style.display=k[b])});b.isPrinting=!1;u.raiseEvent("PrintComplete",c,b.logic.chartInstance)},1E3)},function(){u.raiseEvent("PrintCancelled",c,b.logic.chartInstance)})},getSymbolPath:function(a,b,c,d,e,g,k){var l=["M"],m,p,q;m=(g.color&&Bb("string"===typeof g.color?g.color:
+g.color.FCcolor.color)||V).replace(ua,"");q=Ab(m,60).replace(ua,la);k?m={FCcolor:{color:m,angle:0,ratio:"0",alpha:"100"}}:(k=Ab(m,40),m={FCcolor:{color:m+","+m+","+k+","+m+","+m,ratio:"0,30,30,30,10",angle:0,alpha:"100,100,100,100,100"}});switch(e){case "column":case "dragcolumn":case "column3d":g=.25*c;e=.5*g;k=.7*d;p=.4*d;l=l.concat([a,b+d,"l",0,-k,g,0,0,k,"z","m",g+e,0,"l",0,-d,g,0,0,d,"z","m",g+e,0,"l",0,-p,g,0,0,p,"z"]);m.FCcolor.angle=270;break;case "bar":case "bar3d":g=.3*c;e=.6*c;k=d/4;p=
+k/2;l=l.concat([a,b,"L",a+e,b,a+e,b+k,a,b+k,"Z","M",a,b+k+p,"L",a+c,b+k+p,a+c,b+k+p+k,a,b+2*k+p,"Z","M",a,b+2*(k+p),"L",a+g,b+2*(k+p),a+g,b+d,a,b+d,"Z"]);break;case "area":case "area3d":case "areaspline":case "dragarea":k=.6*d;p=.2*d;d*=.8;l=l.concat([a,b+d,"L",a,b+k,a+.3*c,b+p,a+.6*c,b+k,a+c,b+p,a+c,b+d,"Z"]);m.FCcolor.angle=270;break;case "pie":case "pie3d":g=.5*c;e=.9*g;c=a+g+1;d=b+g-1;a=a+g-1;b=b+g+1;l=l.concat(["M",c,d,"L",c,d-e+1,"A",e-1,e-1,0,0,1,c+e-1,d,"Z","M",a,b,"L",a,b-e,"A",e,e,0,1,0,
+a+e,b,"Z"]);m.FCcolor.radialGradient="1";m.FCcolor.ratio="0,0,0,100,0";break;case "boxandwhisker2d":l=l.concat([a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]);m=g.color;q="#000000";break;default:l=l.concat([a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]),m.FCcolor.angle=270,m.FCcolor.ratio="0,70,30"}return{path:l,color:m,strokeWidth:.5,strokeColor:q}}});e.prototype={configure:function(){var a=this.axisData,b=this.renderer,c=this.isVertical,d=this.isReverse,e=b.options,g=e.chart,k=g.marginBottom,g=g.marginRight,l=b.canvasTop,
+m=b.canvasLeft,p=this.min=a.min,p=this.span=(this.max=a.max)-p,m=this.startX=D(a.startX,m),l=this.startY=D(a.startY,l),q=this.endX=D(a.endX,b.canvasRight),a=this.endY=D(a.endY,b.canvasBottom),p=this.pixelRatio=c?(a-l)/p:(q-m)/p,r=this.relatedObj={};r.marginObj={top:l,right:g,bottom:k,left:m};r.canvasObj={x:m,y:l,w:q-m,h:a-l,toX:q,toY:a};this.startPixel=d?c?a:q:c?l:m;this.pixelValueRatio=d?-p:p;this.primaryOffset=this.secondaryOffset=0;this.cache={lowestVal:0,highestVal:0,indexArr:[],hashTable:{}};
+this.elements=this.elements||{};this.belowBandGroup&&(b.elements.axes=b.elements.axes||{},b.elements.axes.belowBandGroup=this.belowBandGroup,e&&e.chart&&e.chart.hasScroll&&this.belowBandGroup.attr({"clip-rect":b.elements["clip-canvas"]}));this.poi={}},draw:function(){var a=this.axisData,b=a&&a.plotLines||[],c=a&&a.plotBands||[],d=a&&a.showLine,e=a&&a.tickLength,g=a&&a.tickWidth;a&&a.title&&this.drawAxisName();a&&a.labels&&(this.renderer.addCSSDefinition("."+a.labels.className+" .fusioncharts-label",
+a.labels.style),this.belowLabelGroup&&this.belowLabelGroup.attr("class",a.labels.className),this.topLabelGroup&&this.topLabelGroup.attr("class",a.labels.className));b&&0<b.length&&this.drawPlotLine();c&&0<c.length&&this.drawPlotBands();isNaN(e)||0===e||isNaN(g)||0===g||this.drawTicks();d&&this.drawLine()},scroll:function(){},setOffset:function(a,b){var c=this.primaryOffset=a,d=this.secondaryOffset=b||this.secondaryOffset,e=this.isVertical,g,k,l,m=[this.topLabelGroup,this.belowLabelGroup,this.topLineGroup,
+this.belowLineGroup,this.topBandGroup,this.belowBandGroup],p,q;p=0;for(q=m.length;p<q;p+=1)if(l=m[p])g=e?d:c,k=e?c:d,l.attr({transform:"t"+g+","+k});e||this.drawPlotLine&&this.drawPlotLine()},update:function(){},drawTicks:function(){var a=this.axisData,b=this.renderer.paper,c=this.min,d=this.max,e=this.isVertical,g=this.layerBelowDataset,g=this.tickGroup=this.tickGroup||b.group("axis-ticks",g),k=this.relatedObj.canvasObj,l=a.offset,m=a.opposite,p=a.showAxis,q=a.tickInterval,r=a.tickLength,D=a.tickWidth,
+a=a.tickColor,t=c;if(e&&p)for(c=this.getAxisPosition(c),e=this.getAxisPosition(d),k=m?k.toX+l:k.x-l,b.path(["M",k,c,"L",k,e],g).attr({stroke:a,"stroke-width":D});ac(t)<=d;)l=this.getAxisPosition(t),c=m?k+r:k-r,b.path(["M",k,l,"L",c,l],g).attr({stroke:a,"stroke-width":D}),t+=q},getAxisPosition:function(a,b){var c;b?c=(a-this.startPixel)/this.pixelValueRatio+this.min:(a=this.axisData.reversed?this.min+(this.max-a):a,c=this.startPixel+(a-this.min)*this.pixelValueRatio);return c},drawPlotLine:function(){var a=
+this.renderer,b=a.smartLabel,c=a.paper,d=this.isVertical,e=+!d,k=this.lines=this.lines||[],l=this.labels=this.labels||[],m=this.relatedObj.canvasObj,p=this.globalOptions||{},q=this.elements||{},r=this.axisData.plotLines||[],t=this.primaryOffset,H=d?this.startY:this.startX,v=d?this.endY:this.endX,u=parseFloat(a.canvasBorderWidth)||0,A=parseFloat(a.canvasTop),E=Oa(r.length,Oa(k.length,l.length)),G=a.layers.datalabels,J=this.belowLineGroup,F=this.topLineGroup,pa=this.belowLabelGroup,ea=this.topLabelGroup,
+M=!1!==(a.tooltip||{}).enabled,O=function(b){return function(c){ma.call(this,a,c,b)}},Z=p.chart.xDepth||0,z=p.chart,p=z.textDirection,z=z.rotateValues,C=[],P=0,N,h,L,U,W,S,T,ha,aa,ba,Y,Q,ca,ab,fa,Ub,lc,ga,da,ka,ia,Ha,Ta,gb,ja,na,rc,oa,sa,Na,Sa,la,va,Ba,cb,Pa,Ma,Fa,wa,ib,Ia,eb,ua;for(ua=0;ua<E;ua+=1){L=U=W=null;L=k[ua];U=l[ua];if(T=r[ua])if(ha=T.width,aa=T.isVline,ba=T.isTrend,Y=T.isGrid,Q=T.tooltext,ca=T.value,ab=T.color,fa=T.dashStyle,Ub=ba?T.to:null,lc=T._isStackSum,N=3<T.zIndex?F:J,ga=T.label){da=
+ga.style;ka=ga.text;ia=da&&da.color;Ha=ga.offsetScaleIndex||0;Ta=ga.offsetScale;if(gb=da&&da.fontSize)ja=gb,-1!==ja.indexOf("px")&&(ja=ja.replace("px",""),ja=parseFloat(ja));h=da&&da.lineHeight;gb=da?{fontFamily:da.fontFamily,fontSize:da.fontSize,lineHeight:da.lineHeight,fontWeight:da.fontWeight,fontStyle:da.fontStyle}:null;h&&(na=h,-1!==na.indexOf("px")&&(na=na.replace("px",""),na=parseFloat(na)));rc=ga.rotation;oa=ga.x||0;sa=ga.y||0;Na=ga.align;Sa=ga.verticalAlign;la=ga.textAlign;va=D(parseInt(ga.borderWidth,
+10),1);h=lc?G:3<=T.zIndex?ea:pa;ga.backgroundColor&&(ga.labelBgClr=R({color:ga.backgroundColor,alpha:100*ga.backgroundOpacity}));ga.borderColor&&(ga.labelBorderClr=R({color:ga.borderColor,alpha:"100"}));Ba=ja?.2*ja:2;la="left"===la?"start":"right"===la?"end":"middle"}S=Ia="visible";eb=0>D(Ta,ca,0);d?(Pa=this.getAxisPosition(ca),Fa=ba?this.getAxisPosition(Ub)||Pa:Pa,wa=Pa!==Fa?!0:!1,ib=["M",m.x,Pa,"L",m.toX,Fa],aa?a.logic.isBar&&(cb=a.yAxis[Ha],!lc&&!isNaN(Ta)&&0<=Ta&&1>=Ta&&(Ta=cb.min+(cb.max-cb.min)*
+Ta),Ma=cb.getAxisPosition(D(Ta,ca))+oa+Ba*(eb?-1:1)):Ma=ga?cb=this.axisData.isOpposite||"right"===Na?m.toX+oa:m.x+oa:cb=this.axisData.isOpposite?m.toX:m.x):(cb=this.getAxisPosition(ca)||0,Ma=ba?this.getAxisPosition(Ub)||cb:cb,!ba&&!aa&&0<Z&&!a.logic.isBar&&(cb+=Z,Ma+=Z,v+=Z),wa=cb!==Ma?!0:!1,ib=["M"+cb,m.y,"L",Ma,m.toY],Ia=cb+t<H||cb+t>v?"hidden":Ia,aa?(cb=a.yAxis[Ha],!lc&&!isNaN(Ta)&&0<=Ta&&1>=Ta&&(Ta=cb.min+(cb.max-cb.min)*(1-Ta)),Pa=cb.getAxisPosition(D(Ta,ca))+sa,b.setStyle(da),Fa=z?b.getOriSize(ka).width:
+b.getOriSize(ka).height,Fa=Pa-Fa,lc&&Fa<A&&(Pa+=A-Fa),Pa-=(u+parseFloat(va))*(sa&&(0<sa?-1:1))):this.axisData.opposite||"top"===Sa&&!Y?(Pa=m.y+sa,Fa="bottom",b.setStyle(da),Fa=z?b.getOriSize(ka).width:b.getOriSize(ka).height,lc&&Fa>A&&(Pa=Fa-u)):Pa=m.toY+sa,Fa=Pa);S=d?S:Ma+t<H||Ma+t>v?"hidden":S;if(T&&"visible"===Ia&&.1<ha)wa={path:nb(ib,ha),stroke:ab,"stroke-width":ha,"shape-rendering":!wa&&1<=ha?"crisp":void 0,"stroke-dasharray":fa?fa:void 0,visibility:Ia},L?L.attr(wa):(L=k[ua]=c.path(wa,N).css(T.style),
+q.lines=q.lines||[],q.lines[ua]=L),M&&Q&&ha<Da&&Ia&&(W=c.path({stroke:g,"stroke-width":Da,ishot:!0,path:ib,fill:g},a.layers.tracker)),W=W||L,M&&Q&&W.tooltip(Q);else if(L||U)L&&L.remove(),L=null,k&&(k[ua]=null),q&&q.lines&&(q.lines[ua]=null);ga&&T&&!T.stepped&&"visible"===S&&ga.text!=V&&" "!=ga.text?(Pa=ba?"left"===Na?Pa:Fa:Fa,W=Ma-+!aa*e*Z+e*(oa||0),lc?(Fa=d||rc?"middle":"bottom",Pa+=d?0:ja*(eb?-.4:.4),rc&&(Pa+=eb?4:-2,la=eb?"end":"start")):e&&this.axisData.opposite?(Fa=Hb,la=rc?"start":"middle"):
+Fa=Sa,/\n|<br\s*?\/?>/ig.test(ka)&&Y&&(rc?(Fa="middle",W-=e*(oa||0)):(Fa=e&&this.axisData.opposite&&!rc?"middle":Tb,Pa-=na)),wa={"class":"fusioncharts-label",text:ka,fill:gb?ia||ab:null,ishot:!0,cursor:ga.link?"pointer":V,x:W,y:Pa,"text-anchor":la,"vertical-align":Fa,direction:p,transform:" ","text-bound":[da.backgroundColor||ga.labelBgClr,da.borderColor||ga.labelBorderClr,da.borderThickness||va,da.borderPadding||Ba,da.borderRadius,da.borderDash],visibility:S,"line-height":da.lineHeight},U?U.attr(wa):
+(U=l[ua]=c.text(wa,h).attr("class","fusioncharts-label"),L&&(L.label=U),q.labels=q.labels||[],q.labels[ua]=U,T.isDataLabel&&U.click(O("dataLabelClick")).hover(O("dataLabelRollOver"),O("dataLabelRollOut"))),ga&&U.tooltip(ga.originalText),gb&&U.css(gb),T.isDataLabel&&(S={text:ka,index:P,link:ga.link},P+=1,U.data("eventArgs",S)),rc&&U.attr("transform",["r",rc,W,Pa]),lc&&U&&C.push(U)):U&&(U.isRotationSet=!1,U.remove(),l&&(l[ua]=null),q&&q.labels&&(q.labels[ua]=null));!L&&!U||T&&null===T.value||(T&&T.isMinLabel?
+this.poi.min={label:U,index:ua,line:L}:T&&T.isMaxLabel?this.poi.max={label:U,index:ua,line:L}:T&&T.isZeroPlane&&(this.poi.zero={label:U,index:ua,line:L}));L=U=null}D(a.options.plotOptions.series.animation.duration,0)},drawPlotBands:function(){var a=this.renderer,b=a.paper,c=this.isVertical,d=this.axisData.plotBands||[],e=this.bands=this.bands||[],g=this.bandLabels=this.bandLabels||[],k=this.relatedObj.canvasObj,l=this.primaryOffset,m=c?this.startY:this.startX,p=c?this.endY:this.endX,q=a.options.chart.hasScroll,
+r=this.belowBandGroup,t=this.topBandGroup,H=this.belowLabelGroup,v=this.topLabelGroup,u=this.elements||{},A=a.options.chart.textDirection,a=!1!==(a.tooltip||{}).enabled,E,G,J,F,ea,M,O,Z,z,C,P,N,h,L,U,W,T,S,ha,aa,ba,V,Q,Y,ab,ga,ma,ca,fa,da,ka,ia=Oa(d.length,e.length);for(ka=0;ka<ia;ka+=1){da="visible";ca=e[ka];fa=g[ka];if(E=d[ka])if(G=E.tooltext,J=E.to,F=E.from,ea=E.value,M=E.width,O=E.color,ga=3<E.zIndex?t:r,Z=E.label){if(z=Z.style)(h=z.fontSize)&&-1!==h.indexOf("px")&&(h=h.replace("px",""),parseFloat(h)),
+(h=z.lineHeight)&&-1!==h.indexOf("px")&&(h=h.replace("px",""),parseFloat(h)),h=z.color;S=(C=Z.borderWidth)?-1!==C.indexOf("px")?C.replace("px",""):1:1;C=Z.align;P=Z.x;N=Z.y;W=Z.text;T=Z.originalText;L=Z.backgroundColor;U=Z.backgroundOpacity;L&&(Z.labelBgClr=R({color:L,alpha:100*U}));if(L=Z.borderColor)Z.labelBorderClr=R({color:L,alpha:"100"});L=Z.textAlign;L="left"===L?"start":"right"===L?"end":"middle";U=Z.verticalAlign;ma=3<E.zIndex?v:H}ha=this.getAxisPosition(D(J,ea));aa=this.getAxisPosition(D(F,
+ea));ba=c?k.x:aa;V=c?ha:k.y;Q=c?k.w:(this.axisData.reversed?aa-ha:ha-aa)||M||1;aa=c?aa-ha||1:k.h;ha=ba+Q;Q=zb(Q);0>aa&&(aa=zb(aa),V-=aa);c||(da=q?"hidden":ba+l>p||ha+l<m?"hidden":da);Z&&(Y=c?"right"===C?k.toX+P:k.x+P:ba+Q/2,ab=c?V+aa/2:k.toY+N);if(!ca&&E&&"visible"===da)E={x:ba,y:V,width:Q,height:aa,fill:R(O),"stroke-width":0},ca?ca.attr(E):(ca=e[ka]=b.rect(E,ga),u.bands=u.bands||[],u.bands[ka]=ca),a&&G&&ca.tooltip(G);else if(ca&&(!E||"hidden"===da)){u.bandLabels&&(g[ka]=u.bandLabels[ka]=null);ca.label&&
+ca.label.remove();e[ka]=u.bands[ka]=null;ca.remove();continue}ca&&Z&&Z.text&&(E={"class":"fusioncharts-label",text:W,title:T||"",fill:h,"text-bound":[z.backgroundColor||Z.labelBgClr,z.borderColor||Z.labelBorderClr,z.borderThickness||S,z.borderPadding||2,z.borderRadius,z.borderDash],x:Y,y:ab,"text-anchor":L,direction:A,"vertical-align":U,"line-height":z.lineHeight},ma.trackTooltip(!0),fa?fa.attr(E):(fa=g[ka]=ca.label=b.text(E,ma).attr("class","fusioncharts-label"),z&&fa.css(z),u.bandLabels=u.bandLabels||
+[],u.bandLabels[ka]=fa),fa.tooltip(T))}},drawAxisName:function(){var a=this.axisData,b=a.title||{},c=b&&b.style,d=b&&b.className,e=b.align,g=b.centerYAxisName||!1,k=this.renderer.paper,l=this.isVertical,m=this.relatedObj.canvasObj,p=D(a.offset,0)+D(b.margin,0),q=b.text||"",r=this.name||void 0,a=a.opposite,t=this.layerBelowDataset,t=t.nameGroup=t.nameGroup||k.group("axis-name",t),H=D(b.rotation,a?90:270),v=l?a?m.toX+p:m.x-p:(m.x+m.toX)/2,u={fontFamily:c.fontFamily,fontSize:c.fontSize,lineHeight:c.lineHeight,
+fontWeight:c.fontWeight,fontStyle:c.fontStyle},A,g=l?"low"===e?m.toY:g?(m.y+m.toY)/2:this.renderer.chartHeight/2:m.toY+p;q?(!isNaN(H)&&H&&l&&(A=c.fontSize,A=-1!=A.indexOf("px")?A.replace("px",""):A,a?(v+=parseFloat(A),A=270===H?"bottom":"top"):(v-=parseFloat(A),A=270===H?"top":"bottom")),this.renderer.addCSSDefinition("."+d,u),d={"class":d,x:0,y:0,text:q,fill:c.color,direction:this.renderer.options.chart.textDirection,"text-anchor":"low"===e?90==H?"end":"start":"middle","vertical-align":l?H?A:"middle":
+a?Hb:"top",transform:l?"t"+v+","+g+"r"+H:"t"+v+","+g,"font-size":c.fontSize},r?r.attr(d):r=this.name=k.text(d,t),b.originalText&&r.tooltip(b.originalText),setTimeout(function(){r.attr({"line-height":c.lineHeight,"text-bound":[c.backgroundColor,c.borderColor,c.borderThickness,c.borderPadding,c.borderRadius,c.borderDash]})},0)):r&&r.remove();this.elements.name=r},drawLine:function(){var a=this.axisData,b=this.renderer.paper,c=this.min,d=this.max,e=this.isVertical,g=a.opposite,k=this.layerBelowDataset,
+k=this.lineGroup=this.lineGroup||b.group("axis-lines",k),l=a.lineColor,m=a.lineThickness,p=a.lineEndExtension||0,q=a.lineStartExtension||0,a=this.relatedObj.canvasObj;e?(c=this.getAxisPosition(c)-q,p=this.getAxisPosition(d)+p,d=e=g?a.toX+m/2:a.x-m/2):(d=a.x-q,e=a.toX+p,c=p=g?a.y-m/2:a.toY+m/2);b=b.path({path:["M",d,c,"L",e,p],stroke:l,"stroke-width":m},k);this.elements.axisLine=b},realtimeUpdateX:function(a){if(0<a){for(var b=this.axisData.plotBands,c=this.min+a,d,e=b.length;e--;)(d=b[e])&&!d.isNumVDIV&&
+(d.value<c||d.from<c||d.to<c?b.splice(e,1):(void 0!==d.value&&(d.value-=a),void 0!==d.from&&(d.from-=a),void 0!==d.to&&(d.to-=a)));this.drawPlotLine();this.drawPlotBands()}},realtimeUpdateY:function(a,b){var c=this.axisData,d=this.min=c.min=a,c=this.span=(this.max=c.max=b)-d,c=this.pixelRatio=this.isVertical?this.relatedObj.canvasObj.h/c:this.relatedObj.canvasObj.w/c;this.pixelValueRatio=this.isReverse?-c:c;this.drawPlotLine();this.drawPlotBands()}};e.prototype.constructor=e;E("renderer.cartesian",
+{drawCanvas:function(){var a=this.options,b=a.chart||{},c=b.plotBackgroundColor,d=this.paper,e=this.elements,g=e.canvas,k=e.canvas3DBase,l=e.canvas3dbaseline,k=e.canvasBorder,m=e.canvasBg,p=this.canvasTop,q=this.canvasLeft,H=this.canvasWidth,v=this.canvasHeight,u=D(b.plotBorderRadius,0),m=b.plotBorderWidth,A=.5*m,E=b.plotBorderColor,G=b.isBar,J=b.is3D,F=b.use3DLighting,O=b.showCanvasBg,pa=b.canvasBgDepth,ea=b.showCanvasBase,M=b.canvasBaseColor3D,xa=b.canvasBaseDepth,Z=b.plotShadow,z=r&&0===m&&Z&&
+Z.enabled,C=b.xDepth||0,a=b.yDepth||(a[ga]&&a[ga].isScroll?p:0),b=this.layers,P=b.background,N=b.dataset;b.tracker=b.tracker||d.group("hot").insertAfter(N);b.datalabels=b.datalabels||d.group("datalabels").insertAfter(N);b=b.canvas=b.canvas||d.group("canvas").insertAfter(P);k||(e.canvasBorder=d.rect({x:q-A,y:p-A,width:H+m,height:v+m,r:u,"stroke-width":m,stroke:E,"stroke-linejoin":2<m?"round":"miter"},b).shadow(Z));e["clip-canvas"]=[Oa(0,q-C),Oa(0,p-a),Oa(1,H+2*C),Oa(1,v+a)];e["clip-canvas-init"]=[Oa(0,
+q-C),Oa(0,p-a),1,Oa(1,v+2*a)];J&&(O&&(m=G?e.canvasBg=d.path(["M",q,",",p,"L",q+1.2*pa,",",p-pa,",",q+H-pa,",",p-pa,",",q+H,",",p,"Z"],b):e.canvasBg=d.path(["M",q+H,",",p,"L",q+H+pa,",",p+1.2*pa,",",q+H+pa,",",p+v-pa,",",q+H,",",p+v,"Z"],b),m.attr({"stroke-width":0,stroke:"none",fill:R(c)})),ea&&(k=G?e.canvas3DBase=d.cubepath(q-C-xa-1,p+a+1,xa,v,C+1,a+1,b):e.canvas3DBase=d.cubepath(q-C-1,p+v+a+1,H,xa,C+1,a+1,b),k.attr({stroke:"none","stroke-width":0,fill:[M.replace(ua,la),!F]}),l||(l=e.canvas3dbaseline=
+d.path(void 0,b)),l.attr({path:G?["M",q,p,"V",v+p]:["M",q,p+v,"H",H+q],stroke:t.tintshade(M.replace(ua,la),.05).rgba})));!g&&c&&(e.canvas=d.rect({x:q,y:p,width:H,height:v,r:u,"stroke-width":0,stroke:"none",fill:R(c)},b).shadow(z))},drawAxes:function(){var a=this.logic,b=this.options,c=this.paper,d=this.layers,g=d.dataset,k=d.layerBelowDataset=d.layerBelowDataset||c.group("axisbottom").trackTooltip(!0),l=d.layerAboveDataset=d.layerAboveDataset||c.group("axistop").trackTooltip(!0),c=this.xAxis=[],d=
+this.yAxis=[];k.insertBefore(g);l.insertAfter(g);if(b.xAxis&&b.xAxis.length)for(g=0,k=b.xAxis.length;g<k;g+=1)c[g]=this.xAxis[g]=new e(b.xAxis[g],this,a.isBar);else c[0]=this.xAxis[0]=new e(b.xAxis,this,a.isBar);if(b.yAxis)for(g=0,k=b.yAxis.length;g<k;g+=1)d[g]=this.yAxis[g]=new e(b.yAxis[g],this,!a.isBar,!a.isBar);g=0;for(k=d.length;g<k;g+=1)d[g].axisData&&(d[g].axisData.title&&(d[g].axisData.title.className="fusioncharts-yaxis-"+g+"-title"),d[g].axisData.labels&&(d[g].axisData.labels.className=
+"fusioncharts-yaxis-"+g+"-gridlabels")),d[g].draw();g=0;for(k=c.length;g<k;g+=1)c[g].axisData&&(c[g].axisData.title&&(c[g].axisData.title.className="fusioncharts-xaxis-"+g+"-title"),c[g].axisData.labels&&(c[g].axisData.labels.className="fusioncharts-xaxis-"+g+"-gridlabels")),c[g].draw()},drawScroller:function(){var a=this,b=a.options,c=a.paper,d=a.layers,e=a.xAxis["0"]||{},g=e.axisData||{},k=g.scroll||{},l=a.canvasTop,m=a.canvasLeft,p=a.canvasWidth,q=a.canvasHeight,r=a.canvasBorderWidth,H=r||(g.showLine?
+g.lineThickness:0),v=r||g.lineStartExtension,g=r||g.lineEndExtension,r=b.chart.useRoundEdges,A,E,G,J,F,R,pa,ea,M,O,Z,z,C,P,N=d.dataset,h=d.datalabels,L=d.tracker;J=d.layerAboveDataset;var U;k.enabled&&(U=d.scroll=d.scroll||c.group("scroll").insertAfter(J),J=k.scrollRatio,b=D(b[ga].xAxisScrollPos,k.startPercent),F=k.viewPortMax,R=k.viewPortMin,E=k.vxLength,jc(E),pa=k.showButtons,ea=k.height,M=k.padding,O=k.color,Z=k.flatScrollBars,E=k.windowedCanvasWidth=e.getAxisPosition(E),A=k.fullCanvasWidth=e.getAxisPosition(F-
+R)-E,G=oa(b*A),z=a.fusionCharts.jsVars._reflowData,C={hcJSON:{_FCconf:{xAxisScrollPos:0}}},P=C.hcJSON._FCconf,d.scroller=c.scroller(m-v,l+q+H+M-!!H,p+v+g,ea,!0,{showButtons:pa,displayStyleFlat:Z,scrollRatio:J,scrollPosition:b},U).data("fullCanvasWidth",A).data("windowedCanvasWidth",E).attr({"scroll-display-style":Z,fill:O,r:r&&2||0}).scroll(function(a){G=-oa(a*A);N&&N.transform(["T",G,0]);h&&h.transform(["T",G,0]);L&&L.transform(["T",G,0]);e.setOffset&&e.setOffset(G);P.xAxisScrollPos=k.lastPos=a;
+aa(z,C,!0)}),function(){var b;t.eve.on("raphael.scroll.start."+d.scroller.id,function(c){b=c;u.raiseEvent("scrollstart",{scrollPosition:c},a.logic.chartInstance)});t.eve.on("raphael.scroll.end."+d.scroller.id,function(c){u.raiseEvent("scrollend",{prevScrollPosition:b,scrollPosition:c},a.logic.chartInstance)})}());return k.enabled},finalizeScrollPlots:function(){var b=this,c=b.container,d=b.elements,e=b.layers,g=e.scroller,k=e.dataset,l=e.datalabels,e=e.tracker,m,q={},r,t=b.xAxis["0"]||{},H=(t.axisData||
+{}).scroll||{},v=D(b.options[ga].xAxisScrollPos,H.startPercent),A=H.fullCanvasWidth,E,J=b.logic.hcJSON.chart.animation,F=b.logic.hcJSON.xAxis.scroll.startPercent;H.enabled&&(k.attr({"clip-rect":d["clip-canvas"]}),l.attr({"clip-rect":d["clip-canvas"]}),e.attr({"clip-rect":d["clip-canvas"]}),d=function(c){var d=b.elements.canvas,e=m.left,n=m.top,k=c.state,w=Y&&a.getTouchEvent(c)||T;c=c.originalEvent;e=(c.clientX||c.pageX||w.pageX)-e;n=(c.clientY||c.pageY||w.pageY)-n;switch(k){case "start":r=d.isPointInside(e,
+n);q.ox=r&&e||null;if(!r)return!1;q.prevScrollPosition=g.attrs["scroll-position"];u.raiseEvent("scrollstart",{scrollPosition:q.prevScrollPosition},b.logic.chartInstance);break;case "end":u.raiseEvent("scrollend",{prevScrollPosition:q.prevScrollPosition,scrollPosition:q.scrollPosition},b.logic.chartInstance);r=!1;q={};break;default:if(!r)break;d=e-q.ox;q.ox=e;q.scrollPosition=g.attrs["scroll-position"]-d/A;g.attr({"scroll-position":q.scrollPosition})}},Y&&(m=p(c),c&&(G(c,"pointerdrag",d),L(c,"pointerdrag",
+d))),0<v&&(E=-oa(v*A),k&&k.transform(["T",E,0]),e&&e.transform(["T",E,0]),t.setOffset&&t.setOffset(E),J&&F?b.animationCompleteQueue.push({fn:function(){l&&l.transform(["T",E,0])},scope:b}):l&&l.transform(["T",E,0])))},drawPlotColumn:function(a,b,c){var d=this,e=a.data,k=e.length,l=a.items,m=a.graphics||(a.graphics=[]),p=d.paper,q=d.smartLabel,r=d.logic,u=d.layers,A=d.options,E=d.elements,G=A.chart,J=!1!==(A.tooltip||{}).enabled,F,O=d.definition.chart,L=A.plotOptions.series,W=L.dataLabels.style,pa=
+d.xAxis[b.xAxis||0],ea=d.yAxis[b.yAxis||0],M=d.chartWidth,xa=d.chartHeight,Z=ea.axisData.reversed,z=r.isLog,C=r.is3D,P=r.isStacked,N=r.isWaterfall,h=r.isCandleStick,T=H(pa.axisData.scroll,{}),U=c||{},ha=T.enabled,aa=D(U.position,A[ga].xAxisScrollPos,T.startPercent),ba=U.vxLength||jc(T.vxLength),V=U.scrollStart||Oa(0,oa((k-ba)*aa)-1)||0,Y=U.scrollEnd||Cb(k,V+ba+2)||k,ca=G.canvasBorderOpacity=t.color(G.plotBorderColor).opacity,fa=d.canvasBorderWidth,Q=G.isCanvasBorder=0!==ca&&0<fa,da,ab=c!==qb?0:isNaN(+L.animation)&&
+L.animation.duration||1E3*L.animation,ka=b.numColumns||1,Ub=b.columnPosition||0,lc=G.use3DLighting,ia=!1===b.visible?"hidden":"visible",ja=G.overlapColumns,na=pa.getAxisPosition(0),zc=pa.getAxisPosition(1)-na,Ha=O&&O.plotspacepercent,Ta=D(O&&O.plotpaddingpercent),gb=L.groupPadding,la=L.maxColWidth,sa=(1-.01*Ha)*zc||Cb(zc*(1-2*gb),la*ka),rc=sa/2,ua=sa/ka,oc=Cb(ua-1,1<ka?ja||Ta!==qb?0<Ta?ua*Ta/100:0:4:0),Na=Ub*ua-rc+oc/2,Sa=ea.max,wa=ea.min,va=0<Sa&&0<=wa,Ba=z?!1:0>=Sa&&0>wa,cb=0<Sa&&0>wa,Pa=Ba||Z&&
+va?Sa:z||va?wa:0,Ma=ea.yBasePos=ea.getAxisPosition(Pa),Fa,Ia=D(G.useRoundEdges,0),ib=u.dataset=u.dataset||p.group("dataset-orphan"),Ga=u.datalabels=u.datalabels||p.group("datalabels").insertAfter(ib),eb=u.tracker,Ca=u.rectHot=u.rectHot||p.group("col-hot",eb),rb=d.canvasTop,xb=d.canvasLeft,ob=d.canvasWidth,bb=d.canvasBottom,jb=d.canvasRight,Qa,wb,fb,mb,tc,Ya,Ib,Bc,db,Za,Wa,Ab,Ra,Nb,Kb,sb,ub,ra,vb,Eb,$a,Xa,Sb={fontFamily:W.fontFamily,fontSize:W.fontSize,lineHeight:W.lineHeight,fontWeight:W.fontWeight,
+fontStyle:W.fontStyle,color:W.color},Wb,Jb,Rb,bc,Va,cc,sc,kb,Bb,Hb,nb,Qb,Tb,ac,ec,fc,La,pc=D(O.variableindex,1),Ac=0,hb=0,Zb,Ob,Xb=1,Yb=1,kc=A.series,Kc=r.dataObj,Pb=function(a){ma.call(this,d,a)},mc=function(a,b){return function(c){a.attr(b);ma.call(this,d,c,"DataPlotRollOver")}},Ec=function(a,b){return function(c){a.attr(b);ma.call(this,d,c,"DataPlotRollOut")}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",Sb);Ga.attr("class","fusioncharts-datalabels");ab&&(!c&&Ga.attr({transform:"...t"+
+M+","+xa}),d.animationCompleteQueue.push({fn:function(){Ga.attr({transform:"...t"+-M+","+-xa})},scope:d}));ua-=oc;ha&&V>Y-ba-2&&(V=Oa(0,Y-ba-2));P&&(ac=ib.shadows||(ib.shadows=p.group("shadows",ib).toBack()));sc=ib.column||(ib.column=p.group("columns",ib));h||C||ha||sc.attrs["clip-rect"]||sc.attr({"clip-rect":E["clip-canvas"]});N&&sc.toBack();if(C)for(tc=G.xDepth||0,Ya=G.yDepth||0,kb=sc.negative=sc.negative||p.group("negative-values",sc),nb=sc.column=sc.column||p.group("positive-values",sc),Hb=sc.zeroPlane,
+!Hb&&0>wa&&0<=Sa&&(Hb=sc.zeroPlane=p.group("zero-plane",sc).insertBefore(nb),wb=G.zeroPlaneColor,fb=G.zeroPlaneBorderColor,mb=G.zeroPlaneShowBorder,E.zeroplane=p.cubepath(xb-tc,Ma+Ya,ob,1,tc,Ya,Hb).attr({fill:[wb,!lc],stroke:fb||"none","stroke-width":mb?1:0})),(Bb=kb.data("categoryplots"))||(kb.data("categoryplots",Array(k)),Bb=kb.data("categoryplots")),(Qb=nb.data("categoryplots"))||(nb.data("categoryplots",Array(k)),Qb=nb.data("categoryplots")),Za=0;Za<k;Za+=1)Bb[Za]=Bb[Za]||p.group(kb),Qb[Za]=
+Qb[Za]||p.group(nb);else Tb=sc;q.setStyle({fontFamily:W.fontFamily,fontSize:W.fontSize,lineHeight:W.lineHeight,fontWeight:W.fontWeight,fontStyle:W.fontStyle});1<e.length&&(Wa=e[0],Nb=D(Wa.x,0),Zb=pa.getAxisPosition(Wa._FCX)||pa.getAxisPosition(Nb)+Na,Wa=e[1],Nb=D(Wa.x,1),Ob=pa.getAxisPosition(Wa._FCX)||pa.getAxisPosition(Nb)+Na,Xa=(bc=Wa._FCW*zc)||ua,1<kc.length&&(Xb=kc[0].numColumns||Xb),5>Ob-(Zb+Xa*Xb)&&(Yb=0));"0"==Kc.chart.plotspacepercent&&(Yb=1);for(Za=V;Za<Y;Za+=1){Wa=e[Za];Kb=Wa.y;F=Wa.toolText;
+Qa=a.index+"_"+Za;Va=cc=null;if(null===Kb){if(db=l[Za])Va=db.graphic,C||Va.attr({height:0})}else{Ib=!1;Nb=D(Wa.x,Za);Ab=Wa.link;Ra=S(Wa.borderWidth)||0;bc=Wa._FCW*zc;ub=pa.getAxisPosition(Wa._FCX)||pa.getAxisPosition(Nb)+Na;sb=Wa.previousY;vb=ea.getAxisPosition(sb||Pa);ra=ea.getAxisPosition(Kb+(sb||0));$a=zb(ra-vb);Xa=bc||ua;hb=parseInt(pc)?Ac++:Za;La={index:hb,link:Ab,value:Wa.y,displayValue:Wa.displayValueArgs,categoryLabel:Wa.categoryLabel,toolText:Wa.toolText,id:a.userID,datasetIndex:a.index,
+datasetName:a.name,visible:a.visible};if(C){0>Kb&&(ra=vb,Ib=!0);Tb=0>Kb?Bb:Qb;(db=l[Za])||(db=l[Za]={index:Za,value:Kb,graphic:p.cubepath(Tb[Za]),dataLabel:null,tracker:null,hot:null});Va=db.graphic;Jb=Rb={};Wa.hoverEffects&&(Jb={fill:[R(Wa.color),!lc],stroke:Ra&&R(Wa.borderColor)||"NONE","stroke-width":Ra},Wb=Wa.rolloverProperties,Rb={fill:[R(Wb.color),!lc],stroke:Wb.borderWidth&&R(Wb.borderColor)||"NONE","stroke-width":Wb.borderWidth});Va.attr({cubepath:[ub-tc,ab?Ma+Ya:ra+Ya,Xa,ab?0:$a,tc,Ya],fill:[R(Wa.color),
+!lc],ishot:!J,stroke:Ra&&R(Wa.borderColor)||"NONE","stroke-width":Ra,visibility:ia}).shadow(L.shadow&&Wa.shadow,ac).data("BBox",{height:$a,width:Xa,x:ub,y:ra});ab&&Va.animate({cubepath:[ub-tc,ra+Ya,Xa,$a,tc,Ya]},ab,"normal",d.getAnimationCompleteFn());if(Ab||J)!P&&$a<Da&&(ra-=(Da-$a)/2,$a=Da),db.tracker||(db.tracker=p.cubepath(Ca)),cc=db.tracker,cc.attr({cubepath:[ub-tc,ra+Ya,Xa,$a,tc,Ya],cursor:Ab?"pointer":"",stroke:Ra&&g||"NONE","stroke-width":Ra,fill:g,ishot:!0,visibility:ia});(cc||Va).data("eventArgs",
+La).data("groupId",Qa).click(Pb).hover(mc(Va,Rb),Ec(Va,Jb)).tooltip(F);(cc||Va)._.cubetop.data("eventArgs",La).data("groupId",Qa).click(Pb).hover(mc(Va,Rb),Ec(Va,Jb)).tooltip(F);(cc||Va)._.cubeside.data("eventArgs",La).data("groupId",Qa).click(Pb).hover(mc(Va,Rb),Ec(Va,Jb)).tooltip(F);P&&Ib&&(Va.toBack(),cc&&cc.toBack())}else{Bc=!1;if(!z&&!Z&&0>Kb||!z&&Z&&0<Kb)ra=vb,Bc=!0;Z&&!cb&&0<Kb&&(ra=vb-$a,Bc=!1);N&&0>Kb&&pb(sb)&&(ra-=$a,Bc=!0);h||ha||(v(ra)<=rb&&($a-=rb-ra-+Q,ra=rb-+Q),oa(ra+$a)>=bb&&($a-=
+oa(ra+$a)-bb+ +!!Ra+ +Q,G.xAxisLineVisible&&!Q&&($a+=1)),1>=Ra&&(oa(ub)<=xb&&(Xa+=ub,ub=xb-Ra/2+ +!!Ra-+Q,Xa-=ub),oa(ub+Xa)>=jb&&(Xa=jb-ub+Ra/2-+!!Ra+ +Q)));ec=t.crispBound(ub,ra,Xa,$a,Ra);Yb&&(ub=ec.x,ra=ec.y,Xa=ec.width,$a=ec.height);if(!h&&Q&&(!pb(sb)||N&&sb===Kb&&Kb===Wa._FCY))if(Ba&&!Z)da=ra-(rb-Ra/2),$a+=da,Ma=ra-=da;else if(z||va||Z&&Ba)$a=bb-ra+Ra/2,Ma=ra+$a;N&&sb&&0<Ra&&0!==L.connectorOpacity&&1===L.connectorWidth&&L.connectorDashStyle&&(--$a,0>Kb&&(ra+=1));1>$a&&(ra+=0>Kb?1:0===Kb?0:-(1-
+$a),$a=1);b._columnWidth=Xa;if(!(db=l[Za])){db=l[Za]={index:hb,value:Kb,width:Xa,graphic:null,valueBelowPlot:Bc,dataLabel:null,tracker:null};Fa=0;ab||(Ma=ra,Fa=$a||1);Jb=Rb={};Wa.hoverEffects&&(Jb={fill:R(Wa.color),stroke:R(Wa.borderColor),"stroke-width":Ra,"stroke-dasharray":Wa.dashStyle},Wb=Wa.rolloverProperties,Rb={fill:R(Wb.color),stroke:R(Wb.borderColor),"stroke-width":Wb.borderWidth,"stroke-dasharray":Wb.dashStyle});fc={x:ub,y:Ma,width:Xa,height:Fa,r:Ia,ishot:!J,fill:R(Wa.color),stroke:R(Wa.borderColor),
+"stroke-width":Ra,"stroke-dasharray":Wa.dashStyle,"stroke-linejoin":"miter",visibility:ia};Va?Va.attr(fc):Va=db.graphic=p.rect(fc,Tb);Va.shadow(L.shadow&&Wa.shadow,ac).data("BBox",ec);ab&&Va.animate({y:ra,height:$a||1},ab,"normal",d.getAnimationCompleteFn());if(Ab||J)!P&&$a<Da&&(ra-=(Da-$a)/2,$a=Da),fc={x:ub,y:ra,width:Xa,height:$a,r:Ia,cursor:Ab?"pointer":"",stroke:g,"stroke-width":Ra,fill:g,ishot:!0,visibility:ia},(cc=db.tracker)?cc.attr(fc):cc=db.tracker=p.rect(fc,Ca);cc=db.tracker;(cc||Va).data("eventArgs",
+La).data("groupId",Qa).click(Pb).hover(mc(Va,Rb),Ec(Va,Jb)).tooltip(F)}}Eb=d.drawPlotColumnLabel(a,b,Za,ub,ra)}Eb&&m.push(Eb);Va&&m.push(Va);cc&&m.push(cc);d.drawTracker&&d.drawTracker.call(d,a,b,Za)}a.visible=!1!==b.visible;return a},drawPlotColumnScroll:function(a,b,c){var d=a.data.length,e=a.items,g;g=c.vxLength;var k=Oa(0,oa((d-g)*c.position)-1)||0,d=Cb(d,k+g+2)||d;k>d-g-2&&(k=Oa(0,d-g-2));c.scrollEnd=d;for(g=k;g<d;g++)if(!e[g]){c.scrollStart=g;this.drawPlotColumn(a,b,c);break}},drawPlotColumnLabel:function(a,
+b,c,d,e,g){var k=this.options,l=this.logic;d=k.chart;var m=this.paper,p=this.smartLabel,q=this.layers,k=k.plotOptions.series.dataLabels.style,r=1===d.rotateValues?270:0,D=this.canvasHeight,t=this.canvasTop,v=a.data[c];a=a.items[c];var u=d.valuePadding+2,A=a.graphic;c=a.dataLabel;var E=H(a.valueBelowPlot,0>v.y),G=l.isStacked,l=l.is3D,J=d.xDepth||0,F=d.yDepth||0,R=v.displayValue;b=!1===b.visible?"hidden":"visible";var M=d.placeValuesInside,O;g=g||q.datalabels;pb(R)&&R!==V&&null!==v.y?(a._state&&a._state.labelWidth||
+(p=p.getOriSize(R),a._state=r?{labelWidth:p.height,labelHeight:p.width}:{labelWidth:p.width,labelHeight:p.height}),A=A.data("BBox"),q=A.height,p=O=a._state.labelHeight+u,u=.5*O+u,A=A.x+.5*A.width,O=E?t+D-(e+q):e-t,G?(e=Cb(t+D-.5*p,e+.5*q+(F||0)),e=Oa(t+.5*p,e),A-=J):M?q>=p?(e+=E?q-u:u,v._valueBelowPoint=1,l&&(A-=J,e+=F)):O>=p?(e+=E?q+u:-u,l&&E&&(A-=J,e+=F)):(e+=E?q-u:u,v._valueBelowPoint=1,l&&(A-=J,e+=F)):O>=p?(e+=E?q+u:-u,l&&(E?(A-=J,e+=F):A-=J/2)):(e+=E?q-u:u,v._valueBelowPoint=1,l&&(A-=J,e+=F)),
+c?c.attr({x:A,y:e,visibility:b}):c=a.dataLabel=m.text({text:R,"class":"fusioncharts-label",x:A,y:e,fill:k.color,"font-size":k.fontSize,direction:d.textDirection,visibility:b},g).attr({"line-height":k.lineHeight,"text-bound":[k.backgroundColor,k.borderColor,k.borderThickness,k.borderPadding,k.borderRadius,k.borderDash]}),r&&c.attr("transform","T0,0,R"+r)):c&&c.attr({text:V});return c},drawPlotFloatedcolumn:function(a,b){this.drawPlotColumn.call(this,a,b)},drawPlotColumn3d:function(a,b){this.drawPlotColumn.call(this,
+a,b)},drawPlotBar:function(a,b){var c=this,d=a.data,e=d.length,k=a.items,l=a.graphics=[],m=c.paper,p=c.logic,q=c.layers,r=c.options,H=c.elements,u=r.chart,A=!1!==(r.tooltip||{}).enabled,E,G=c.definition.chart,J=r.plotOptions.series,F=J.dataLabels.style,O={fontFamily:F.fontFamily,fontSize:F.fontSize,lineHeight:F.lineHeight,fontWeight:F.fontWeight,fontStyle:F.fontStyle},L=c.xAxis[b.xAxis||0],pa=c.yAxis[b.yAxis||0],ea=p.is3D,M=p.isStacked,xa=u.canvasBorderOpacity=t.color(u.plotBorderColor).opacity,Z=
+c.canvasBorderWidth,z=u.isCanvasBorder=0!==xa&&0<Z,C=isNaN(+J.animation)&&J.animation.duration||1E3*J.animation,P=b.numColumns||1,N=b.columnPosition||0,h=u.use3DLighting,W=!1===b.visible?"hidden":"visible",U=u.overlapColumns,T=L.getAxisPosition(0),ha=L.getAxisPosition(1)-T,aa=G&&G.plotspacepercent,ba=D(G&&G.plotpaddingpercent),V=J.groupPadding,Y=J.maxColWidth,ca=(1-.01*aa)*ha||Cb(ha*(1-2*V),Y*P),Q=ca/2,ga=ca/P,ab=Cb(ga-1,1<P?U||ba!==qb?0<ba?ga*ba/100:0:4:0),fa=ga-ab,da=N*ga-Q+ab/2,ka=pa.max,ia=pa.min,
+ja=0<ka&&0<ia,na=pa.getAxisPosition(0>ka&&0>ia?ka:ja?ia:0),zc=D(u.useRoundEdges,0),Ha=c.canvasTop,Ta=c.canvasLeft,gb=c.canvasHeight,sa=c.canvasRight,la=c.chartWidth,rc=c.chartHeight,ua,wa,Na,Sa,Oa,va,Ba,cb,Pa,Ma,Fa,Ia,ib,Ga,eb,bb,rb,xb,Ca,ob,Qa,jb,wb=pa.axisData.effectiveZeroPlaneThickness,fb=q.dataset=q.dataset||m.group("dataset-orphan"),mb=q.datalabels=q.datalabels||m.group("datalabels").insertAfter(fb),tc=q.tracker,Ya,Ib,Ab,db,Za,Wa,nb,Ra,Nb,Kb,sb,ub,ra,vb,Eb,$a=1,Xa=1,Bb=r.series,Wb=p.dataObj,
+Jb=function(a){ma.call(this,c,a)},Rb=function(a,b){return function(d){a.attr(b);ma.call(this,c,d,"DataPlotRollOver")}},bc=function(a,b){return function(d){a.attr(b);ma.call(this,c,d,"DataPlotRollOut")}},Va;c.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",O);mb.attr("class","fusioncharts-datalabels");C&&(c.animationCompleteQueue.push({fn:function(){mb.attr({transform:"...t"+-la+","+-rc})},scope:c}),mb.attr({transform:"...t"+la+","+rc}));M&&(ub=fb.shadows||(fb.shadows=m.group("shadows",
+fb).toBack()));Za=fb.column=fb.column||m.group("bars",fb);if(ea)for(ua=u.xDepth||0,wa=u.yDepth||0,Wa=Za.negative=Za.negative||m.group("negative-values",Za),Nb=Za.column=Za.column||m.group("positive-values",Za),Ra=Za.zeroPlane,!Ra&&0>ia&&0<=ka&&(Ra=Za.zeroPlane=m.group("zero-plane",Za).insertBefore(Nb),ob=u.zeroPlaneColor,Qa=u.zeroPlaneBorderColor,jb=u.zeroPlaneShowBorder,H.zeroplane=m.cubepath(na-ua,Ha+wa,1,gb,ua,wa,Ra).attr({fill:[ob,!h],stroke:Qa||"none","stroke-width":jb?1:0})),(nb=Wa.data("categoryplots"))||
+(Wa.data("categoryplots",Array(e)),nb=Wa.data("categoryplots")),(Kb=Nb.data("categoryplots"))||(Nb.data("categoryplots",Array(e)),Kb=Nb.data("categoryplots")),Pa=0;Pa<e;Pa+=1)nb[Pa]=nb[Pa]||m.group(Wa),Kb[Pa]=Kb[Pa]||m.group(Nb);else Za.attrs["clip-rect"]||Za.attr({"clip-rect":H["clip-canvas"]}),sb=Za;1<d.length&&(Fa=d[0],eb=Fa.y,Ga=D(Fa.x,0),vb=L.getAxisPosition(Ga)+da,Fa=d[1],eb=Fa.y,Ga=D(Fa.x,1),Eb=L.getAxisPosition(Ga)+da,1<Bb.length&&($a=Bb[0].numColumns||$a),5>Eb-(vb+fa*$a)&&(Xa=0));"0"==Wb.chart.plotspacepercent&&
+(Xa=1);Pa=0;for(Ma=e-1;Pa<e;Pa+=1,--Ma){Fa=d[Pa];eb=Fa.y;Ya=Ib=null;if(null===eb){if(cb=k[Pa])Ya=cb.graphic,ea||Ya.attr({width:0})}else{Ga=D(Fa.x,Pa);Ia=Fa.link;E=Fa.toolText;ib=S(Fa.borderWidth)||0;xb=L.getAxisPosition(Ga)+da;Ca=(bb=Fa.previousY)?pa.getAxisPosition(bb):na;rb=pa.getAxisPosition(eb+(bb||0));Na=zb(rb-Ca);0<eb&&(rb=Ca);pb(b.previousData)&&pb(b.previousData[Pa].y)&&M&&1>zb(b.previousData[Pa].y)*pa.pixelValueRatio&&(0<=eb?rb+=1:--rb);Ab={index:Pa,link:Ia,value:Fa.y,displayValue:Fa.displayValueArgs,
+categoryLabel:Fa.categoryLabel,toolText:Fa.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible};if(ea){sb=0>eb?nb:Kb;(cb=k[Pa])||(cb=k[Pa]={index:Pa,value:eb,graphic:m.cubepath(sb[Ma]),dataLabel:null,tracker:null});Ya=cb.graphic;Oa=va={};Fa.hoverEffects&&(Oa={fill:[R(Fa.color),!h],stroke:ib&&R(Fa.borderColor)||"NONE","stroke-width":ib},Sa=Fa.rolloverProperties,va={fill:[R(Sa.color),!h],stroke:Sa.borderWidth&&R(Sa.borderColor)||"NONE","stroke-width":Sa.borderWidth});Ya.attr({cubepath:[C?
+na-ua:rb-ua,xb+wa,C?0:Na,fa,ua,wa],fill:[R(Fa.color),!h],ishot:!A,stroke:ib&&R(Fa.borderColor)||"NONE","stroke-width":ib,"stroke-dasharray":Fa.dashStyle,cursor:Ia?"pointer":"",visibility:W}).shadow(J.shadow&&Fa.shadow,ub).data("BBox",{height:fa,width:Na,x:rb,y:xb});C&&Ya.animate({cubepath:[rb-ua,xb+wa,Na,fa,ua,wa]},C,"normal",c.getAnimationCompleteFn());if(Ia||A)!M&&Na<Da&&(rb-=(Da-Na)/2,Na=Da),cb.tracker||(cb.tracker=m.cubepath(tc)),Ib=cb.tracker,Ib.attr({cubepath:[rb-ua,xb+wa,Na,fa,ua,wa],cursor:Ia?
+"pointer":"",stroke:ib&&g||"NONE","stroke-width":ib,fill:g,ishot:!0});(Ib||Ya).data("eventArgs",Ab).click(Jb).hover(Rb(Ya,va),bc(Ya,Oa)).tooltip(E);(Ib||Ya)._.cubetop.data("eventArgs",Ab).click(Jb).hover(Rb(Ya,va),bc(Ya,Oa)).tooltip(E);(Ib||Ya)._.cubeside.data("eventArgs",Ab).click(Jb).hover(Rb(Ya,va),bc(Ya,Oa)).tooltip(E);if(!M||M&&0>eb)Ya.toBack(),Ib&&Ib.toBack()}else{v(rb)<=Ta&&(Na+=rb,rb=Ta+ib/2+.2,u.xAxisLineVisible&&!z&&--rb,Na-=rb);oa(rb+Na)>=sa&&(Na=sa-rb-ib/2-.2);ra=t.crispBound(rb,xb,Na,
+fa,ib);Xa?(rb=ra.x,xb=ra.y,Na=ra.width,Va=ra.height):Va=fa;1>=Na&&(Na=1,rb+=0>eb?-Na:0===eb?0:1<wb?Na:0);(cb=k[Pa])||(cb=k[Pa]={index:Pa,value:eb,height:Va,graphic:null,dataLabel:null,tracker:null});Ya=cb.graphic;Oa=va={};Fa.hoverEffects&&(Oa={fill:R(Fa.color),stroke:R(Fa.borderColor),"stroke-width":ib,"stroke-dasharray":Fa.dashStyle},Sa=Fa.rolloverProperties,va={fill:R(Sa.color),stroke:R(Sa.borderColor),"stroke-width":Sa.borderWidth,"stroke-dasharray":Sa.dashStyle});db={x:C?na:rb,y:xb,width:C?0:
+Na||1,height:Va,r:zc,fill:R(Fa.color),ishot:!A,stroke:R(Fa.borderColor),"stroke-width":ib,"stroke-dasharray":Fa.dashStyle,"stroke-linejoin":"miter",cursor:Ia?"pointer":"",visibility:W};Ya?Ya.attr(db):Ya=cb.graphic=m.rect(db,sb);Ya.shadow(J.shadow&&Fa.shadow,ub).data("BBox",ra);C&&Ya.animate({x:rb,width:Na||1},C,"normal",c.getAnimationCompleteFn());if(Ia||A)!M&&Na<Da&&(rb-=(Da-Na)/2,Na=Da),Ib=cb.tracker,db={x:rb,y:xb,width:Na,height:fa,r:zc,cursor:Ia?"pointer":"",stroke:g,"stroke-width":ib,fill:g,
+ishot:!0},Ib?Ib.attr(db):Ib=cb.tracker=m.rect(db,tc),Ib.data("eventArgs",Ab);(Ib||Ya).data("eventArgs",Ab).click(Jb).hover(Rb(Ya,va),bc(Ya,Oa)).tooltip(E)}Ba=c.drawPlotBarLabel(a,b,Pa,rb,xb)}Ba&&l.push(Ba);Ya&&l.push(Ya);Ib&&l.push(Ib);c.drawTracker&&c.drawTracker.call(c,a,b,Pa)}a.visible=!1!==b.visible;return a},drawPlotBarLabel:function(a,b,c,d,e,g){var k=this.options,l=this.logic,m=k.chart,p=this.paper,q=this.layers,r=k.plotOptions.series.dataLabels.style,k=this.canvasLeft,D=this.canvasWidth,t=
+a.data[c],H=a.items[c];a=m.valuePadding+2;var v=H.graphic;c=H.dataLabel;var u=0>t.y,A=l.isStacked,l=l.is3D,E=m.xDepth||0,G=m.yDepth||0,J=t.displayValue;b=!1===b.visible?"hidden":"visible";var F=m.placeValuesInside;g=g||q.datalabels;g.trackTooltip(!0);if(pb(J)&&J!==V&&null!==t.y){c||(c=H.dataLabel=p.text({"class":"fusioncharts-label",text:J,"font-size":r.fontSize,title:t.originalText||"",fill:r.color,direction:m.textDirection,x:0,y:0,"line-height":r.lineHeight},g).tooltip(t.originalText).attr("text-bound",
+[r.backgroundColor,r.borderColor,r.borderThickness,r.borderPadding,r.borderRadius,r.borderDash]));q=c.getBBox();g=v.data("BBox");r=g.height;p=g.width;g=A?"middle":u?F?"start":"end":F?"end":"start";m=u?d-k:k+D-(d+p);q=q.width;q+=a;r=e+.5*r;t=d+(u?0:p);e=u?d-k:k+D-(d+p);if(A)t=Oa(k+.5*q,t+.5*(u?p:-p)),t=Cb(k+D-.5*q,t),t-=l?E:0,r+=l?G:0;else if(F?p>=q?(t+=u?a:-a,l&&(r+=G,t-=E)):q<m?(t+=u?-a:a,g=u?"end":"start",l&&u&&(t-=E)):(u?(t=d+p+Oa(q-d-p+k,0)-a,g="end",t-=l?E:0):(t=d-Oa(q-(k+D-d),0)+a,g="start"),
+l&&(t-=E,r+=G)):e>=q?(t+=u?-a:a,l&&u&&(t-=E,r+=E)):(t+=u?a+q:-(a+q),l&&(t-=E,r+=G)),t>k+D||t<k)t=k+4,g="start";c.attr({x:t,y:r,"text-anchor":g,visibility:b})}else c&&c.attr({text:V});return c},drawPlotBar3d:function(a,b){this.drawPlotBar.call(this,a,b)},drawPlotLine:function(a,c){var d=this,e=d.paper,k=d.elements,l=d.options,m=l.chart,p=d.logic,q=l.plotOptions.series,r=a.items,H=a.graphics=a.graphics||[],u,v=d.xAxis[c.xAxis||0],A=d.yAxis[c.yAxis||0],E=p.multisetRealtime||p.dragExtended,G=p.isWaterfall,
+J,F,O,L,pa,ea=0,M=!1!==(l.tooltip||{}).enabled,xa,Z=isNaN(+q.animation)&&q.animation.duration||1E3*q.animation,z,C=q.dataLabels.style,P={fontFamily:C.fontFamily,fontSize:C.fontSize,lineHeight:C.lineHeight,fontWeight:C.fontWeight,fontStyle:C.fontStyle},N=m.xDepth||0,h=m.yDepth||0,W=m.series2D3Dshift,U=c.step,T=c.drawVerticalJoins,ha=c.useForwardSteps,aa=a.data,ba=!1===c.visible?"hidden":"visible",V,Y=aa.length,ca=v.getAxisPosition(0),Q=v.getAxisPosition(1)-ca,ga=Q*Y,ab=v.axisData.scroll||{},fa=m.hasScroll||
+!1,da,ka=q.connectNullData,ia=d.chartWidth,na=d.chartHeight,ja=function(){ub.attr({"clip-rect":null});sb.show();Kb.show();ra.show();jb.attr({transform:"...t"+-ia+","+-na})},sa=c.isJDAStep?.5*(v.getAxisPosition(1)-v.getAxisPosition(0)):0,Ha,Ta,gb,la,ua,oa,Da,va=null,Na,Sa,Ia=q.connectorWidth=S(c.lineWidth),Ba=c.color,Ga,cb,Pa=q.connectorDashStyle=c.dashStyle,Ma,Fa,bb,ib,Ca,eb,ob,rb,xb,fb=d.layers,Qa=fb.dataset=fb.dataset||e.group("dataset-orphan"),jb=fb.datalabels=fb.datalabels||e.group("datalabels").insertAfter(Qa),
+zb=fb.tracker,Ab=fb.lineHot=fb.lineHot||e.group("line-hot",zb),wb=k["clip-canvas-init"].slice(0),pb=k["clip-canvas"].slice(0),mb=A.axisData.reversed,Ya=A.max,Ib=A.min,qb=A.getAxisPosition(0<Ya&&0<Ib?mb?Ya:Ib:0>Ya&&0>Ib?mb?Ib:Ya:mb?Ya:0)+(W?h:0),db=[],Za=m.anchorTrackingRadius,Wa=/drag/ig.test(d.logic.rendererId),nb,Ra,Nb,Kb,sb,ub,ra,vb,Eb,$a,Xa,Bb,Wb,Jb=[],Rb,bc=function(a){ma.call(this,d,a)},Va=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}},cc=function(a){return function(b){d.hoverPlotAnchor(this,
+b,"DataPlotRollOut",a,d)}},Hb=function(b,e,h,g,k,l,m,w){return function(){(Xa=g.dataLabel=d.drawPlotLineLabel(a,c,w,b,e))&&H.push(Xa)}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",P);jb.attr("class","fusioncharts-datalabels");q.connectorOpacity=t.color(Ba).opacity;A.yBasePos=qb;G&&(J=(F=d.definition.chart)&&F.plotspacepercent,O=q.groupPadding,L=q.maxColWidth,pa=(1-.01*J)*Q||Cb(Q*(1-2*O),1*L),ea=pa/2);jb.attr({transform:"...t"+ia+","+na});Z&&d.animationCompleteQueue.push({fn:ja,
+scope:d});Nb=Qa.line||(Qa.line=e.group("line-connector",Qa));Kb=a.lineShadowLayer||(a.lineShadowLayer=e.group("connector-shadow",Nb));sb=a.anchorShadowLayer||(a.anchorShadowLayer=e.group("anchor-shadow",Nb));ub=a.lineLayer||(a.lineLayer=e.group("connector",Nb));ra=a.anchorLayer||(a.anchorLayer=e.group("anchors",Nb));ra.hide();Kb.hide();sb.hide();for(V=0;V<Y;V+=1){Ha=aa[V];ua=Ha.y;Wb=aa[V+1]&&aa[V+1].y;oa=Ha.previousY||0;xa=Ha.toolText;nb=a.index+"_"+V;xb=Xa=ib=Ca=null;u=r[V]={index:V,value:null,graphic:null,
+connector:null,dataLabel:null,shadowGroup:sb,tracker:null};if(null===ua)Jb.length=0,0===ka&&(va=null);else{la=D(Ha.x,V);Ta=Ha.link;"boxandwhisker"===c.relatedSeries&&c.pointStart&&(la+=c.pointStart);Sa=A.getAxisPosition(ua+oa)+(W?h:0);Na=v.getAxisPosition(la)-N;Na=wa(Na,Ia,Ia).position;Sa=wa(Sa,Ia,Ia).position;if((Ma=Ha.marker)&&Ma.enabled)if(Fa=Ma.symbol.split("_"),bb="spoke"===Fa[0]?1:0,gb=Ma.radius,vb=Ma.shadow,Ra={index:V,link:Ta,value:Ha.y,displayValue:Ha.displayValueArgs,categoryLabel:Ha.categoryLabel,
+toolText:Ha.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},ob=rb={},eb=Ha.rolloverProperties,Ma.imageUrl)Bb=new b,Rb={isTooltip:M,setLink:Ta,hotLayer:Ab,groupId:nb,clickFunc:bc,isDragable:Wa},Bb.onload=d.onAnchorImageLoad(this,a,c,Na,Sa,Ma,u,Ra,xa,eb,V,ra,Rb),Bb.onerror=Hb(Na,Sa,Ma,u,Ra,xa,eb,V),Bb.src=Ma.imageUrl;else{eb&&(ob={polypath:[Fa[1]||2,Na,Sa,gb,Ma.startAngle,bb],fill:R(Ma.fillColor),"stroke-width":Ma.lineWidth,stroke:R(Ma.lineColor)},rb={polypath:[eb.sides||
+2,Na,Sa,eb.radius,eb.startAngle,eb.dip],fill:R(eb.fillColor),"stroke-width":eb.lineWidth,stroke:R(eb.lineColor)});ib=u.graphic=e.polypath(Fa[1]||2,Na,Sa,gb,Ma.startAngle,bb,ra).attr({fill:R(Ma.fillColor),ishot:!M,"stroke-width":Ma.lineWidth,stroke:R(Ma.lineColor),cursor:Ta?"pointer":"",visibility:gb?ba:"hidden"}).data("alwaysInvisible",!gb).data("setRolloverProperties",eb).data("setRolloverAttr",rb).data("setRolloutAttr",ob).data("anchorRadius",gb).data("anchorHoverRadius",eb&&eb.radius).shadow(vb||
+!1,sb);if(Ta||M||eb)gb=Oa(gb,eb&&eb.radius||0,Za),Ca=u.tracker=e.circle({cx:Na,cy:Sa,r:gb,cursor:Ta?"pointer":"",stroke:g,"stroke-width":Ma.lineWidth,fill:g,ishot:!0,visibility:ba},Ab);(Ca||ib).data("eventArgs",Ra).data("groupId",nb).click(bc).hover(Va(u),cc(u)).tooltip(xa);d.drawTracker&&d.drawTracker.call(d,a,c,V)}Eb=$a!==[R(Ha.color||Ba),Ha.dashStyle||Pa].join(":");if(null!==va){if(Jb.length&&(db=db.concat(Jb),Jb.length=0),(E||G||!db.join(""))&&db.push("M",Da,va),G&&db.push("m",-ea,0),U?ha?(db.push("H",
+Na-sa),G&&db.push("h",ea),T?db.push("V",Sa):db.push("m",0,Sa-va),(V===Y-1||null===Wb&&sa)&&db.push("H",Na)):(T&&db.push("V",Sa),db.push("M",Da,Sa,"H",Na)):db.push("L",Na,Sa),E||Eb)xb=u.connector=e.path(db,ub).attr({"stroke-dasharray":cb,"stroke-width":Ia,stroke:Ga,"stroke-linecap":"round","stroke-linejoin":2<Ia?"round":"miter",visibility:ba}).shadow(q.shadow&&Ha.shadow,Kb),db=[]}else!E&&Jb.push("M",Na,Sa);Ma&&Ma.imageUrl||(Xa=u.dataLabel=d.drawPlotLineLabel(a,c,V,Na,Sa));Da=Na;va=Sa;Ga=R(Ha.color||
+Ba);cb=Ha.dashStyle||Pa;$a=[Ga,cb].join(":")}Xa&&H.push(Xa);ib&&H.push(ib);xb&&H.push(xb);Ca&&H.push(Ca)}!E&&db.join("")&&(xb=e.path(db,ub).attr({"stroke-dasharray":cb,"stroke-width":Ia,stroke:Ga,"stroke-linecap":"round","stroke-linejoin":2<=Ia?"round":"miter",visibility:ba}).shadow(q.shadow&&Ha.shadow,Kb),a.graphic||(a.graphic=xb),xb&&H.push(xb));fa&&(da=ab.startPercent,pb[2]=ga+wb[0],1===da&&(wb[0]=pb[2],pb[0]=0));Z?(z=t.animation({"clip-rect":pb},Z,fa?"easeIn":"normal",d.getAnimationCompleteFn()),
+ub.attr({"clip-rect":wb}).animate(G?z.delay(Z):z)):(ja&&ja(),ja=void 0);a.visible=!1!==c.visible;return a},hoverPlotAnchor:function(a,b,c,d,e){var g=d.graphic,k=d.dataLabel,l=d.graphicImage,m=e.options.chart;d=1===m.rotateValues?270:0;var p=g.data("setRolloverProperties"),q=g.data("isRealtime"),r=q&&g.attr("polypath"),t=g.data("setRolloverAttr"),D="image"===g.type,H=g.data("setRolloutAttr"),u=k&&(k.data("isBelow")?1:-1)*(D?.5*(t.height-H.height):g.data("anchorHoverRadius")-g.data("anchorRadius")),
+v="DataPlotRollOver"==c?t:H,A={transform:"T0,"+("DataPlotRollOver"===c?u:0)+"R"+d},E={fill:v.fill,"stroke-width":v["stroke-width"],stroke:v.stroke},v=D?v:{polypath:v.polypath},G,m=m.syncLabelWithAnchor,J=g.data("anchorRadius"),F=g.data("anchorHoverRadius"),t=!(/,0\)$/.test(t.fill)&&/,0\)$/.test(H.fill))&&g.data("anchorHoverRadius")-g.data("anchorRadius")&&p.animation&&50;l&&(G=l.data("setRolloverAttr"),H=l.data("setRolloutAttr"),G="DataPlotRollOver"==c?G:H);k&&k.data("isMiddle")&&(A={transform:"T,"+
+("DataPlotRollOver"===c?u:0)+",0R"+d});if(p){if("DataPlotRollOver"==c&&0!==F||"DataPlotRollOut"==c&&0!==J)g.attr({visibility:"visible"}),l&&l.attr({visibility:"visible"});l&&l.css({opacity:.01*G.alpha});D?g.css({opacity:.01*v.alpha}):g.attr(E);q&&!D&&(v.polypath[1]=r[1],v.polypath[2]=r[2]);g.stop();l&&l.stop();g.animate(v,t,"easeOut",function(){("DataPlotRollOver"==c&&!F||"DataPlotRollOut"==c&&!J)&&g.attr({visibility:"hidden"})});l&&l.animate(G,t,"easeOut",function(){("DataPlotRollOver"==c&&!F||"DataPlotRollOut"==
+c&&!J)&&l.attr({visibility:"hidden"})});k&&k.stop();t&&m&&k&&k.animate(A,t,"easeOut")}ma.call(a,e,b,c)},onAnchorImageLoad:function(a,b,c,d,e,k,l,m,p,q,t,D,H){return function(){var u=a.paper,v=b.graphics=b.graphics||[],A=!1===c.visible?"hidden":"visible",E=a.options.chart.anchorTrackingRadius,G=a.layers,G=G.dataset=G.dataset||u.group("dataset-orphan"),G=G.line||(G.line=u.group("line-connector",G)),J=b.anchorShadowLayer||(b.anchorShadowLayer=u.group("anchor-shadow",G)),G=k.imageUrl,F=k.imageScale,O=
+k.imageAlpha,ea=q.imageHoverAlpha,M=q.imageHoverScale,L=this.height*F*.01,Z=this.width*F*.01,z=this.width*M*.01,C=this.height*M*.01,P=H.isTooltip,N=H.setLink,h=H.hotLayer,W=H.groupId||"",U=H.isDragable||!1,T=H.clickFunc,S=H.cartesianRenderer,ha=function(b){return function(c){S?S.hoverPlotAnchor(this,c,"DataPlotRollOver",b,a):a.hoverPlotAnchor(this,c,"DataPlotRollOver",b,a)}},aa=function(b){return function(c){S?S.hoverPlotAnchor(this,c,"DataPlotRollOut",b,a):a.hoverPlotAnchor(this,c,"DataPlotRollOut",
+b,a)}},V,ba,Y,Q,ca,ab,fa,ga,da,ma,ka;ca=function(a){var b=a.length,c="",d;for(d=0;d<b;d+=1)c+=" "+a[d];return c};if(r){if(ga={x:d-this.width*F*.005,y:e-this.height*F*.005,width:Z,height:L,alpha:O},ma={x:d-this.width*M*.005,y:e-this.height*M*.005,width:z,height:this.height*M*.01,alpha:ea},E=z>Z?ma:ga,U&&(E={cx:d,cy:e,r:.5*Oa(L,Z)}),l.graphic&&"image"===l.graphic.type?ka=l.graphic.attr("src",G):l.graphic=ka=u.image(G,D),ka.attr(ga).css({opacity:.01*O}).data("alwaysInvisible",!F).data("setRolloverProperties",
+q).data("setRolloverAttr",ma).data("setRolloutAttr",ga).data("anchorRadius",F).data("anchorHoverRadius",M),ka&&v.push(ka),N||P||q)V=l.tracker?l.tracker:l.tracker=U?u.circle(h):u.rect(h),V.attr(E).attr({cursor:N?"pointer":"",stroke:g,"stroke-width":k.lineWidth,fill:g,ishot:!0,visibility:A}).data("eventArgs",m).data("groupId",W).click(T).hover(ha(l),aa(l)).tooltip(p)}else{U=k.symbol.split("_");ba="spoke"===U[0]?1:0;ab=k.isAnchorHoverRadius;Y=k.isAnchorRadius;Y=k.radius=Y?k.radius:Cb(Z,L)/2;Q=k.shadow;
+ga=k.imagePadding;q.radius=ab?q.radius:Y+1;ab=q.radius-ga-.5*q.lineWidth;fa=Y-ga-.5*k.lineWidth;ma=ga={};q&&(ga={polypath:[U[1]||2,d,e,Y,k.startAngle,ba],fill:R(k.fillColor),"stroke-width":k.lineWidth,stroke:R(k.lineColor)},ma={polypath:[q.sides||2,d,e,q.radius,q.startAngle,q.dip],fill:R(q.fillColor),"stroke-width":q.lineWidth,stroke:R(q.lineColor)},da=Oa(q.fillColor.FCcolor.alpha,q.lineColor.FCcolor.alpha),ea>da&&(ea=da));k.fillColor.FCcolor&&k.lineColor.FCcolor&&(da=Oa(k.fillColor.FCcolor.alpha,
+k.lineColor.FCcolor.alpha),O>da&&(O=da));da=l.graphic&&"path"===l.graphic.type?l.graphic.attr(ga):l.graphic=u.polypath(U[1]||2,d,e,Y,k.startAngle,ba,D);da.attr({fill:R(k.fillColor),ishot:!P,"stroke-width":k.lineWidth,stroke:R(k.lineColor),cursor:N?"pointer":"",visibility:Y?A:"hidden"}).data("alwaysInvisible",!Y).data("setRolloverProperties",q).data("setRolloverAttr",ma).data("setRolloutAttr",ga).data("anchorRadius",Y).data("anchorHoverRadius",q&&q.radius).shadow(Q||!1,J);da&&v.push(da);J=u.polypath(U[1]||
+2,d,e,0<fa?fa:0,k.startAngle,ba,D).attr({visibility:"hidden"});ba=ca(J.attrs.path);J.remove();J=u.polypath(U[1]||2,d,e,0<ab?ab:0,q.startAngle,q.dip,D).attr({visibility:"hidden"});ca=ca(J.attrs.path);J.remove();ga={x:d-this.width*F*.005,y:e-this.height*F*.005,width:Z,height:L,alpha:O,"clip-path":ba};ma={x:d-this.width*M*.005,y:e-this.height*M*.005,width:z,height:C,alpha:ea,"clip-path":ca};l.graphicImage&&"image"===l.graphicImage.type?ka=l.graphicImage.attr("src",G):l.graphicImage=ka=u.image(G,D);ka.attr(ga).attr({visibility:Y?
+A:"hidden"}).css({opacity:.01*O}).data("alwaysInvisible",!F).data("setRolloverProperties",q).data("setRolloverAttr",ma).data("setRolloutAttr",ga).data("anchorRadius",F).data("anchorHoverRadius",M);ka&&v.push(ka);if(N||P||q)Y=Oa(Y,q&&q.radius||0,E),V=l.tracker&&"circle"===l.tracker.type?l.tracker.attr({cx:d,cy:e,r:Y}):l.tracker=u.circle({cx:d,cy:e,r:Y},h),V.attr({cursor:N?"pointer":"",stroke:g,"stroke-width":k.lineWidth,fill:g,ishot:!0,visibility:A});(V||ka).data("eventArgs",m).data("groupId",W).click(T).hover(ha(l),
+aa(l)).tooltip(p)}a.drawTracker&&a.drawTracker.call(a,b,c,t);(u=S?l.dataLabel=S.drawPlotLineLabel.call(a,b,c,t,d,e):l.dataLabel=a.drawPlotLineLabel(b,c,t,d,e))&&v.push(u)}},drawPlotArea:function(a,c){var d=this,e=d.paper,k=d.options,l=k.chart,m=d.logic,p=k.plotOptions.series,q=d.elements,r=a.items,t=a.graphics=a.graphics||[],H,u=d.xAxis[c.xAxis||0],v=d.yAxis[c.yAxis||0],A=v.axisData.reversed,E=l.xDepth||0,G=l.yDepth||0,m=m.isStacked,J=!1!==(k.tooltip||{}).enabled,F,O,k=p.dataLabels.style,L={fontFamily:k.fontFamily,
+fontSize:k.fontSize,lineHeight:k.lineHeight,fontWeight:k.fontWeight,fontStyle:k.fontStyle,color:k.color},k=isNaN(+p.animation)&&p.animation.duration||1E3*p.animation,ea=l.series2D3Dshift,M="0"===d.definition.chart.drawfullareaborder,W=a.data,Z=!1===c.visible?"hidden":"visible",z=W.length,C=u.getAxisPosition(0),P=(u.getAxisPosition(1)-C)*z,N=u.axisData.scroll||{},C=l.hasScroll||!1,h=p.connectNullData,T,U,S,ha,aa,V=v.max,ba=v.min,Y=v.getAxisPosition(0<V&&0>ba?0:!A&&0<V&&0<=ba?ba:V)+(ea?G:0),ca=d.chartWidth,
+Q=d.chartHeight,A=function(){Ga.attr({"clip-rect":null});Ba.show();wa.show();Na.attr({transform:"...t"+-ca+","+-Q})},ga=null,ab,da,V=c.lineWidth,ba=c.dashStyle,fa=R(c.fillColor),ka=R(c.lineColor),ia=0,ja=/drag/ig.test(d.logic.rendererId),na,la,Ha,Ta,gb,sa=[],ua=[],Da=null,oa=[],va=d.layers;ha=va.dataset=va.dataset||e.group("dataset-orphan");var Na=va.datalabels=va.datalabels||e.group("datalabels").insertAfter(ha),Da=va.tracker,Da=va.areaHot=va.areaHot||e.group("area-hot",Da),va=q["clip-canvas-init"].slice(0),
+q=q["clip-canvas"].slice(0),l=l.anchorTrackingRadius,wa,Ia,Ba,Ga,cb,Pa,Ma,Fa,Ca,ib=function(a){ma.call(this,d,a)},fb=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}},eb=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOut",a,d)}},bb=function(b,e,h,g,k,l,m,w){return function(){(Ca=g.dataLabel=d.drawPlotLineLabel(a,c,w,b,e))&&t.push(Ca)}};d.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",L);Na.attr("class","fusioncharts-datalabels");
+v.yBasePos=Y;Na.attr({transform:"...t"+ca+","+Q});k&&d.animationCompleteQueue.push({fn:A,scope:d});L=ha;m&&(cb=L.shadows||(L.shadows=e.group("shadows",L).toBack()));Ga=L.area=L.area||e.group("area",L);L=L.areaConnector||(L.areaConnector=e.group("area-connector",L));a.lineShadowLayer||(a.lineShadowLayer=e.group("connector-shadow",L));wa=a.anchorShadowLayer||(a.anchorShadowLayer=e.group("anchor-shadow",L));Ia=a.lineLayer||(a.lineLayer=e.group("connector",L));Ba=a.anchorLayer||(a.anchorLayer=e.group("anchors",
+L));Ba.hide();wa.hide();L=ha;for(L=0;L<z;L+=1){T=W[L];ha=T.y;H=D(T.x,L);ab=u.getAxisPosition(H)-E;na=Ca=la=null;H=r[L]={};if(null===ha)0===h&&(ga=null,0<ia&&(1===ia?sa.splice(-8,8):(sa=sa.concat(ua),sa.push("Z")),ua=[])),H.chart=d,H.index=L,H.value=ha;else{U=T.link;F=T.toolText;O=T.previousY;aa=(aa=v.getAxisPosition(O)||null)||Y;da=v.getAxisPosition(ha+(O||0))+(ea?G:0);if((Fa=T.marker)&&Fa.enabled)if(O={index:L,link:U,value:T.y,displayValue:T.displayValueArgs,categoryLabel:T.categoryLabel,toolText:T.toolText,
+id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},Ta=gb={},Ha=T.rolloverProperties,Fa.imageUrl)S=new b,U={isTooltip:J,setLink:U,hotLayer:Da,clickFunc:ib,isDragable:ja},S.onload=d.onAnchorImageLoad(this,a,c,ab,da,Fa,H,O,F,Ha,L,Ba,U),S.onerror=bb(ab,da,Fa,H,O,F,Ha,L),S.src=Fa.imageUrl;else{na=Fa.symbol.split("_");S=Fa.radius;Ma=Fa.shadow;Ha&&(Ta={polypath:[na[1]||2,ab,da,S,Fa.startAngle,0],fill:R(Fa.fillColor),"stroke-width":Fa.lineWidth,stroke:R(Fa.lineColor)},Ha=T.rolloverProperties,
+gb={polypath:[Ha.sides||2,ab,da,Ha.radius,Ha.startAngle,Ha.dip],fill:R(Ha.fillColor),"stroke-width":Ha.lineWidth,stroke:R(Ha.lineColor)});na=H.graphic=e.polypath(na[1]||2,ab,da,S,Fa.startAngle,0,Ba).attr({fill:R(Fa.fillColor),ishot:!J,"stroke-width":Fa.lineWidth,stroke:R(Fa.lineColor),cursor:U?"pointer":"",visibility:S?Z:"hidden"}).data("alwaysInvisible",!S).data("setRolloverProperties",Ha).data("setRolloverAttr",gb).data("setRolloutAttr",Ta).data("anchorRadius",S).data("anchorHoverRadius",Ha&&Ha.radius).shadow(Ma||
+!1,wa);if(U||J||Ha)m||(S=Oa(S,Ha&&Ha.radius||0,l)),la=H.tracker=e.circle({cx:ab,cy:da,r:S,cursor:U?"pointer":"",stroke:g,"stroke-width":Fa.lineWidth,fill:g,ishot:!0,visibility:Z},Da);(la||na).data("eventArgs",O).click(ib).hover(fb(H),eb(H)).tooltip(F);d.drawTracker&&d.drawTracker.call(d,a,c,L)}null===ga?(oa.push("M",ab,",",da),sa.push("M",ab,",",aa),ia=0):oa.push("L",ab,",",da);sa.push("L",ab,",",da);ua.unshift("L",ab,",",aa);ia++;ga=da;Fa&&Fa.imageUrl||(Ca=H.dataLabel=d.drawPlotLineLabel(a,c,L,ab,
+da));H.chart=d;H.index=L;H.value=ha;H.dataLabel=Ca}Ca&&t.push(Ca);na&&t.push(na);la&&t.push(la)}0<ia&&(1===ia?sa.splice(-8,8):(sa=sa.concat(ua),sa.push("Z")));(Da=a.graphic=e.path(sa,Ga).attr({fill:fa,"stroke-dasharray":ba,"stroke-width":M?0:V,stroke:ka,"stroke-linecap":"round","stroke-linejoin":2<V?"round":"miter",visibility:Z}).shadow(p.shadow&&T.shadow,cb))&&t.push(Da);C&&(p=N.startPercent,q[2]=P+va[0],1===p&&(va[0]=q[2],q[0]=0));k?Pa=Ga.attr({"clip-rect":va}).animate({"clip-rect":q},k,C?"easeIn":
+"normal",d.getAnimationCompleteFn()):(A&&A(),A=void 0);cb&&(k?cb.attr({"clip-rect":va}).animateWith(Ga,Pa,{"clip-rect":q},k,C?"easeIn":"normal",function(){cb.attr({"clip-rect":null})}):cb.attr({"clip-rect":null}));M&&(e=a.connector=e.path(oa,Ia).attr({"stroke-dasharray":ba,"stroke-width":V,stroke:ka,"stroke-linecap":"round","stroke-linejoin":2<V?"round":"miter",visibility:Z}),k?Ia.attr({"clip-rect":va}).animateWith(Ga,Pa,{"clip-rect":q},k,C?"easeIn":"normal",function(){Ia.attr({"clip-rect":null})}):
+Ia.attr({"clip-rect":null}),e&&t.push(e));a.visible=!1!==c.visible;return a},drawPlotScatter:function(a,b){var c=this,d=c.options,e=d.chart,k=d.plotOptions.series,l=c.paper,m=c.elements,p=a.items,q,r=a.graphics=a.graphics||[],t=c.xAxis[b.xAxis||0],D=c.yAxis[b.yAxis||0],H=a.data,u=!1===b.visible?"hidden":"visible",d=!1!==(d.tooltip||{}).enabled,v,A=k.dataLabels.style,E={fontFamily:A.fontFamily,fontSize:A.fontSize,lineHeight:A.lineHeight,fontWeight:A.fontWeight,fontStyle:A.fontStyle,color:A.color},
+A=isNaN(+k.animation)&&k.animation.duration||1E3*k.animation,G=c.chartWidth,J=c.chartHeight,F,O,M,L,Z,z,C,P=b.lineWidth,N=0<P,h=b.color,W=b.dashStyle,U=k.connectNullData,T=[],S,ha,aa,V,ba,Y,Q,ga,ca=c.layers,da=ca.dataset||(ca.dataset=l.group("dataset-orphan")),fa=ca.datalabels||(ca.datalabels=l.group("datalabels").insertAfter(da)),ca=ca.tracker,e=e.anchorTrackingRadius,ka,ia,na,ja=function(a){ma.call(this,c,a)},sa=function(a){return function(b){c.hoverPlotAnchor(this,b,"DataPlotRollOver",a,c)}},Ha=
+function(a){return function(b){c.hoverPlotAnchor(this,b,"DataPlotRollOut",a,c)}};c.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",E);fa.attr("class","fusioncharts-datalabels");A&&(c.animationCompleteQueue.push({fn:function(){fa.attr({transform:"...t"+-G+","+-J})},scope:c}),fa.attr({transform:"...t"+G+","+J}));ka=da.line||(da.line=l.group("line-connector",da));a.lineShadowLayer=l.group("connector-shadow",ka);da=a.anchorShadowLayer=l.group("anchor-shadow",ka);E=a.lineLayer=l.group("connector",
+ka);ka=a.anchorLayer=l.group("anchors",ka);F=0;for(O=H.length;F<O;F+=1){M=H[F];S=M.marker;Z=z=V=q=ba=null;na=a.index+"_"+F;z=M.y;Z=M.x;if(null!==z&&null!==Z){q=p[F]={index:F,x:Z,y:z,value:z};z=D.getAxisPosition(z);Z=t.getAxisPosition(Z);if(S&&S.enabled){L=M.link;v=M.toolText;aa=S.radius;ia=S.shadow;ha={index:F,link:L,y:M.y,x:M.x,displayValue:M.displayValueArgs,categoryLabel:M.categoryLabel,toolText:M.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible};V=S.symbol.split("_");
+Q=ga={};M.hoverEffects&&(Q={polypath:[V[1]||2,Z,z,aa,S.startAngle,0],fill:R(S.fillColor),"stroke-width":S.lineWidth,stroke:R(S.lineColor)},Y=M.rolloverProperties,ga={polypath:[Y.sides||2,Z,z,Y.radius,Y.startAngle,Y.dip],fill:R(Y.fillColor),"stroke-width":Y.lineWidth,stroke:R(Y.lineColor)});V=q.graphic=l.polypath(V[1]||2,Z,z,aa,S.startAngle,0,ka).attr({fill:R(S.fillColor),ishot:!d,"stroke-width":S.lineWidth,stroke:R(S.lineColor),cursor:L?"pointer":"",visibility:aa?u:"hidden"}).data("alwaysInvisible",
+!aa).data("setRolloverProperties",Y).data("setRolloverAttr",ga).data("setRolloutAttr",Q).data("anchorRadius",aa).data("anchorHoverRadius",Y&&Y.radius).shadow(ia||!1,da);if(L||d||Y)aa=Oa(aa,Y&&Y.radius||0,e),ba=q.tracker=l.circle({cx:Z,cy:z,r:aa,cursor:L?"pointer":"",stroke:g,"stroke-width":S.lineWidth,fill:g,ishot:!0,visibility:u},ca);(ba||V).data("eventArgs",ha).data("groupId",na).click(ja).hover(sa(q),Ha(q)).tooltip(v)}N&&((void 0===C||null===C&&0===U)&&Z&&z&&T.push("M",Z,",",z),Z&&z&&T.push("L",
+Z,",",z),C=z);q=q.dataLabel=c.drawPlotLineLabel(a,b,F,Z,z)}else N&&0===U&&(C=null),p[F]={chart:c,index:F,x:Z,y:z};q&&r.push(q);V&&r.push(V);ba&&r.push(ba);c.drawTracker&&c.drawTracker.call(c,a,b,F)}T.length&&(k=a.graphic=l.path(T,E).attr({"stroke-dasharray":W,"stroke-width":P,stroke:h,"stroke-linecap":"round","stroke-linejoin":2<P?"round":"miter",visibility:u}).shadow(k.shadow&&M.shadow),E.attr({"clip-rect":m[A?"clip-canvas-init":"clip-canvas"]}),A&&E.animate({"clip-rect":m["clip-canvas"]},A,"normal"),
+r.push(k));A&&ka.attr({opacity:0}).animate({opacity:1},A,"normal",c.getAnimationCompleteFn());a.visible=!1!==b.visible;return a},drawPlotLineLabel:function(a,b,c,d,e,g){var k=this.options,l=k.chart,m=this.paper,p=this.layers,q=k.plotOptions.series.dataLabels.style,k=1===l.rotateValues?270:0,r=this.canvasHeight,t=this.canvasTop,D=a.data,H=D[c],u=a.items[c],v=ob(H.valuePosition,"auto").toLowerCase();a=this.logic.defaultSeriesType;var A=u.graphic,E=H.marker,A=E&&E.enabled?A&&"image"==A.type&&.5*A.attr("height")||
+E&&E.radius-3:0,A=l.valuePadding+2+A;b=!1===b.visible?"hidden":"visible";E=u.dataLabel;g=g||p.datalabels;switch(v){case "above":c=0;break;case "below":c=1;break;default:p=D[c-1]||{},D=D[c+1]||{},c=c?p.y>H.y?1:(null==p.y&&D.y)>H.y?1:0:0}p=H.displayValue;pb(p)&&p!==V?(E?k&&E.attr("transform",["r",360-k]):E=u.dataLabel=m.text(g).attr({"class":"fusioncharts-label",text:p,fill:q.color,"text-bound":[q.backgroundColor,q.borderColor,q.borderThickness,q.borderPadding,q.borderRadius,q.borderDash],direction:l.textDirection,
+"font-weight":q.fontWeight,"font-style":q.fontStyle,"font-family":q.fontFamily,"font-size":q.fontSize,"line-height":q.lineHeight}),E.attr({title:H.originalText||"",fill:q.color}),u._state&&u._state.labelWidth||(g=E.getBBox(),u._state={labelWidth:g.width,labelHeight:g.height}),l=m=k?u._state.labelWidth:u._state.labelHeight,g=e-t,r=t+r-e,l=l+A+4,t=.5*m+A,/bubble/i.test(a)||(c?r>l?(e+=t,H._valueBelowPoint=1):g>l&&(e-=t,H._valueBelowPoint=0):g>l?(e-=t,H._valueBelowPoint=0):r>l&&(e+=t,H._valueBelowPoint=
+1)),E.attr({x:d,y:e,visibility:b}).data("isBelow",H._valueBelowPoint),k&&E.attr("transform","T0,0,R"+k)):E&&E.attr({text:V});return E},drawLabels:function(){for(var a=this.paper,b=this.options,c=b.labels&&b.labels.items&&b.labels.items,d=c&&c.length,e=this.layers.layerAboveDataset,g=this.elements.quadran||(this.elements.quadran=[]),k=this.canvasTop,l=this.canvasLeft,b=b.chart.textDirection,m={right:"end",left:"start",undefined:"start"},p,q,r;d--;)r=c[d],p=r.style,q={fontFamily:p.fontFamily,fontSize:p.fontSize,
+lineHeight:p.lineHeight,fontWeight:p.fontWeight,fontStyle:p.fontStyle,fill:p.color},pb(r.html)&&r.html!==V&&(g[d]=a.text({text:r.html},e).css(q).attr({x:parseInt(p.left,10)+l,y:parseInt(p.top,10)+k,"text-anchor":m[r.textAlign],"vertical-align":r.vAlign,direction:b,"text-bound":[p.backgroundColor,p.borderColor,p.borderThickness,p.borderPadding,p.borderRadius,p.borderDash]}))}},E["renderer.root"]);E("renderer.piebase",{isHovered:!1,getPlotData:function(a,b){var c=this.datasets[0],d=c.data[a],c=c.userData||
+(c.userData=[]),e,g;if(c[a])c=c[a];else{c=c[a]={};for(g in d)"object"!==typeof(e=d[g])&&"function"!==typeof e&&0!==g.indexOf("_")&&(c[g]=e);c.value=c.y;c.label=c.name;delete c.y;delete c.total;delete c.doNotSlice;delete c.name;delete c.centerAngle;delete c.showInLegend}c.sliced=b;return c},redrawDataLabels:function(a){var b=a.elements.plots[0];a.placeDataLabels(!0,b.items,b);return{}},sliceInOtherPies:function(a){var b=this.options.series[0],c=b.plot.items,d=c.length,e=0,g;for(b.enableMultiSlicing=
+!0;d--;)d!==a&&(g=c[d]).sliced&&++e&&this.plotGraphicClick.call(g);b.enableMultiSlicing=!1;return!!e},plotGraphicClick:function(a){var b=this.graphic||this,c=b.plotItem||b.data("plotItem"),d=c.seriesData,e=c.chart,g=e.logic.chartInstance,k=c.index,l=b.data("eventArgs")||{},m=e.options.series[0].enableMultiSlicing,p=d.data[c.index].doNotSlice,q=c.slicedTranslation,r,t;!d.isRotating&&ma.call(b,e,a);if(!(d.isRotating||d.singletonCase||p||(b=!m&&e.sliceInOtherPies(k),(a=c.sliced)&&b))){if(ca&&!Ia){b=
+(new Date).getTime();if(c.lastSliceTimeStamp&&400>b-c.lastSliceTimeStamp)return;c.lastSliceTimeStamp=b}b=c.graphic;d=c.connector;m=c.dataLabel;q="object"===typeof q?"t"+q:q;p=c.connectorPath;r=(a?-1:1)*c.transX;t=(a?-1:1)*c.transY;u.raiseEvent("slicingStart",{slicedState:a,dataIndex:"index"in l&&l.index,data:e.getPlotData(k,a)},g);b.animate({transform:a?"t0,0":q},200,"easeIn",function(){u.raiseEvent("slicingEnd",{slicedState:c.sliced,dataIndex:"index"in l&&l.index,data:e.getPlotData(k,c.sliced)},
+g)});m&&m.x&&m.animate({x:m.x+(a?0:r)},200,"easeIn");p&&(p[1]+=r,p[2]+=t,p[4]+=r,p[6]+=r,d.animate({path:p},200,"easeIn"));a=c.sliced=!a;b={hcJSON:{series:[]}};b.hcJSON.series[0]={data:q=[]};q[k]={sliced:a};aa(g.jsVars._reflowData,b,!0);return a}},plotDragStart:function(a,b,c){var e=this.data("plotItem"),g=e.chart,e=e.seriesData,k=g.options.series,m=-g.datasets[0].startAngle*ec;e.isRotating=!1;if(k[0].enableRotation){k=g.container;g={left:0,top:0};if(k.getBoundingClientRect)k=k.getBoundingClientRect(),
+g.top=k.top+(d.pageYOffset||l.scrollTop||0)-(l.clientTop||0),g.left=k.left+(d.pageXOffset||l.scrollLeft||0)-(l.clientLeft||0);else for(;k;)g.left+=k.offsetLeft||0,g.top+=k.offsetTop||0,k!==l.body&&k!==l.documentElement&&(g.left-=k.scrollLeft||0,g.top-=k.scrollTop||0),k=k.offsetParent;e.chartPosition=g;a=q.call(c,a,b,e.pieCenter,e.chartPosition);e.dragStartAngle=a;e.startingAngleOnDragStart=m}},plotDragEnd:function(a){var b=this.data("plotItem"),c=b.chart,d=b.seriesData,e=-c.datasets[0].startAngle*
+ec,g={hcJSON:{series:[{startAngle:e}]}};c.disposed||(aa(c.logic.chartInstance.jsVars._reflowData,g,!0),c.rotate(d,c.options.series[0]));!d.isRotating&&c.plotGraphicClick.call(b,a);d.isRotating&&(setTimeout(function(){d.isRotating=!1},0),u.raiseEvent("RotationEnd",{startingAngle:F(e,!0),changeInAngle:e-d.startingAngleOnDragStart},c.logic.chartInstance));!c.isHovered&&c.onPlotHover(this,!1)},plotDragMove:function(a,b,c,d,e){a=this.data("plotItem");var g=a.chart,k=a.seriesData,l=g.options.series;l[0].enableRotation&&
+!k.singletonCase&&(c=q.call(e,c,d,k.pieCenter,k.chartPosition),k.isRotating||(k.dragStartAngle!==c&&(k.isRotating=!0),u.raiseEvent("RotationStart",{startingAngle:F(k.startingAngleOnDragStart,!0)},g.logic.chartInstance)),l[0].startAngle+=c-k.dragStartAngle,k.dragStartAngle=c,k.moveDuration=0,c=(new Date).getTime(),!k._lastTime||k._lastTime+k.timerThreshold<c)&&(setTimeout(function(){g.rotate(k,l[0])},0),k._lastTime=c)},plotRollOver:function(a){var b=this.plotItem||this.data("plotItem"),c=b.chart,d,
+e;b.seriesData.isRotating||(ma.call(this,c,a,"DataPlotRollOver"),c.onPlotHover(this,!0));c.isHovered=!0;(a=b.innerDiameter)&&(d=b.centerLabelConfig)&&(e=d.label)&&c.drawDoughnutCenterLabel(e,b.center[0],b.center[1],a,a,d,!1)},plotRollOut:function(a){var b=this.plotItem||this.data("plotItem"),c=b.chart,d=c.options.series[0],e,g;b.seriesData.isRotating||(ma.call(this,c,a,"DataPlotRollOut"),c.onPlotHover(this,!1));c.isHovered=!1;(a=b.innerDiameter)&&(e=d.centerLabelConfig)&&((g=e.label)||!g)&&c.drawDoughnutCenterLabel(g,
+b.center[0],b.center[1],a,a,e,!1)},onPlotHover:function(a,b){var c=a.data("plotItem"),d=c.rolloverProperties,e=b?d.color:c.color,g=b?d.borderWidth:c.borderWidth,k=b?d.borderColor:c.borderColor;d&&c.graphic.attr({fill:R(e),"stroke-width":g,stroke:k})},getEventArgs:function(a){a=a||{};return{datasetName:a.label,datasetIndex:a.originalIndex,id:a.userID,visible:!0,label:a.label,value:a.value,percentValue:a.percentage,tooltext:a.toolText,link:a.link,sliced:a.sliced}},legendClick:function(a){var b=a.chart;
+b.elements.plots[0].isRotating=!1;b.plotGraphicClick.call(a)},placeDataLabels:function(){var a=function(a,b){return a.point.value-b.point.value},b=function(a,b){return a.angle-b.angle},c=["start","start","end","end"],d=[-1,1,1,-1],e=[1,1,-1,-1];return function(g,k,l,m){var p=this.options.plotOptions,q=p.pie,r=this.canvasLeft+.5*this.canvasWidth,t=this.canvasTop+.5*this.canvasHeight,H=this.smartLabel,u=p.series.dataLabels,v=u.style,A=D(jc(parseFloat(v.lineHeight)),12),E=ia(u.placeLabelsInside,1===
+k.length?!0:!1),p=u.skipOverlapLabels,G=u.manageLabelOverflow,F=u.connectorPadding,J=u.distance,O;O=m&&m.metrics||[r,t,q.size,q.innerSize||0];var M=O[1],L=O[0];m=.5*O[2];var R=[[],[],[],[]],z=this.canvasLeft,C=this.canvasTop,q=this.canvasWidth,J=l.labelsRadius||(l.labelsRadius=m+J),t=r=parseInt(v.fontSize,10),P=t/2,F=[F,F,-F,-F];l=l.labelsMaxInQuadrant||(l.labelsMaxInQuadrant=ac(J/t));var u=u.isSmartLineSlanted,N=O[3]/2,h,W,U,T,S,ha,aa,V,Y,ba,Q,ca,da,ga,fa,ka,ma,na;O=Number.POSITIVE_INFINITY;Q=[];
+h=[];g||H.setStyle(v);if(1==k.length&&!N&&E)E=k[0],(da=E.dataLabel)&&da.show(),E.slicedTranslation=[z,C],da&&(da.attr({visibility:Ga,align:"middle",transform:["t",L,M]}),da.x=L);else if(E)na=N+(m-N)/2,Ba(k,function(a){(da=a.dataLabel)&&da.show();da&&(ca=a.angle,ba=M+na*Ca(ca),ha=L+na*mb(ca),da.x=ha,da._x=ha,da.y=ba,a.sliced&&(ma=a.slicedTranslation,fa=ma[0]-z,ka=ma[1]-C,ha+=fa,ba+=ka),da.attr({visibility:Ga,align:"middle",transform:["t",ha,ba]}))});else{Ba(k,function(a){(da=a.dataLabel)&&da.show();
+da&&(ca=a.angle%Eb,0>ca&&(ca=Eb+ca),ga=0<=ca&&ca<Qb?1:ca<Sb?2:ca<pc?3:0,R[ga].push({point:a,angle:ca}))});for(k=g=4;k--;){if(p&&(v=R[k].length-l,0<v))for(R[k].sort(a),Q=R[k].splice(0,v),v=0,N=Q.length;v<N;v+=1)E=Q[v].point,E.dataLabel.attr({visibility:"hidden"}),E.connector&&E.connector.attr({visibility:"hidden"});R[k].sort(b)}k=Oa(R[0].length,R[1].length,R[2].length,R[3].length);v=Oa(Cb(k,l)*t,J+t);h=R[0].concat(R[1]);Q=R[2].concat(R[3]);for(k=h.length-1;0<=k;k--)E=h[k].point,delete E.clearance,
+delete E.clearanceShift,U=zb(v*Ca(E.angle)),Math.abs(O-U)<2*A&&(E.clearance=0,h[k+1].point.clearanceShift=A/2),O=U;O=Number.POSITIVE_INFINITY;k=0;for(N=Q.length;k<N;k++)E=Q[k].point,delete E.clearance,delete E.clearanceShift,U=zb(v*Ca(E.angle)),Math.abs(O-U)<2*A&&(E.clearance=0,Q[k-1].point.clearanceShift=A/2),O=U;R[1].reverse();for(R[3].reverse();g--;){Q=R[g];N=Q.length;p||(t=N>l?v/N:r,P=t/2);A=N*t;O=v;for(k=0;k<N;k+=1,A-=t)U=zb(v*Ca(Q[k].angle)),O<U?U=O:U<A&&(U=A),O=(Q[k].oriY=U)-t;h=c[g];N=v-(N-
+1)*t;O=0;for(k=Q.length-1;0<=k;--k,N+=t)if(E=Q[k].point,ca=Q[k].angle,T=E.sliced,da=E.dataLabel,U=zb(v*Ca(ca)),U<O?U=O:U>N&&(U=N),O=U+t,A=void 0===E.clearance?2*jc(D(parseFloat(E.style.border),12),12):2*jc(D(parseFloat(E.style.border),E.clearance)),V=(U+Q[k].oriY)/2,U=L+e[g]*J*mb(fb.asin(V/v)),V*=d[g],V+=M,Y=M+m*Ca(ca),S=L+m*mb(ca),(2>g&&U<S||1<g&&U>S)&&(U=S),ha=U+F[g],ba=V-P-2,aa=ha+F[g],da.x=aa,da._x=aa,G&&(W=1<g?aa-this.canvasLeft:this.canvasLeft+q-aa,H.setStyle(E.style),A=D(jc(parseFloat(E.style.lineHeight)),
+12)+A,A=H.getSmartText(E.labelText,W,A),void 0===E.clearance&&A.height>t&&(V+=t),da.attr({text:A.text}).tooltip(A.tooltext)),da.y=ba,T&&(fa=E.transX,ka=E.transY,ha+=fa,U+=fa,S+=fa,Y+=ka,aa+=fa),da.attr({visibility:Ga,"text-anchor":h,vAlign:"middle",x:aa,y:V}),A=E.connector)E.connectorPath=E=["M",S,Y,"L",u?U:S,V,ha,V],A.attr({path:E,visibility:Ga})}}}}()},E["renderer.root"]);E("renderer.newcartesian",{drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=d.dataObj.dataset,
+g=e&&e.length,k,l,m=a.layers,p=a.options,q=a.elements,r=p.chart;k=a.datasets=p.series;l=ia(r.rendererId,r.defaultSeriesType);var p=m.background,t=m.dataset=m.dataset||b.group("dataset").insertAfter(p),D,u,v,p=0,A=k.length,E=r.isBar,G=r.is3D;v=FusionCharts.register("groupManagerType",["ColumnGroupManager"]);var F=d.isStacked,J=FusionCharts.register("dataSetType",["Column"]),O=FusionCharts.register("dataSetType",["Column3D"]),M=FusionCharts.register("dataSetType",["Bar2D"]),R=FusionCharts.register("dataSetType",
+["Bar3D"]),L=d.chartInstance.jsVars._reflowData,L=L.dataObj||(L.dataObj={});u=L.chart||(L.chart={});var L=function(a,b){return function(f){var e=c[a],g,k={hcJSON:{series:[]}},l=k.hcJSON.series[a]||(k.hcJSON.series[a]={}),m=d.chartInstance.jsVars._reflowData;g=(f=ia(f,!e.visible))?"visible":"hidden";Ba(e.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});e.visible=f;b.visible=f;l.visible=f;aa(m,k,!0)}},z=function(a){return function(b){var d=c[a],f=d.legend,e=f&&f.elements,
+g=e&&e.legendItemText,k=e&&e.legendItemSymbol,e=e&&e.legendItemLine,l=f&&f.hiddenColor,m=f&&f.itemLineColor,p=f&&f.itemTextColor,w=f&&f.symbolColor,f=f&&f.symbolStroke;H(b,!d.visible)?(k&&k.attr({fill:w||m,stroke:f}),g&&g.attr({fill:p}),e&&e.attr({stroke:m})):(k&&k.attr({fill:l,stroke:l}),g&&g.attr({fill:l}),e&&e.attr({stroke:l}));c[a].visible?c[a].hide():c[a].show()}},C=function(b){return function(){return a.getEventArgs&&a.getEventArgs(c[b])}},P=function(b,d,e){return function(g,k){d.call(a,c[b],
+e,{numUpdate:g,hasAxisChanged:k})}};m.tracker=m.tracker||b.group("hot").insertAfter(t);u.animation=0;a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],q.plots=c);a.parseCategory();m=new v;m.init(a);m.dataSetsLen=A;for(b=0;b<A;b++)q=k[b]||{},D=q.updatePlot="updatePlot"+sa(H(q.type,q.plotType,l)),v=a[D],D=q.drawPlot="drawPlot"+sa(H(q.type,q.plotType,l)),u=a[D]||a.drawPlot,(D=c[b])||(E&&!G?c.push(D=new M):E&&G?c.push(D=new R):!E&&G?c.push(D=new O):c.push(D=new J),D.index=b,D.items=[],D.data=q.data||
+[],D.name=q.name,D.userID=q.userID,D.setVisible=L(b,q),D.legendClick=z(b),D.getEventArgs=C(b),D.realtimeUpdate=P(b,v||u,q),q.plot=D,q.legendClick=D.legendClick,q.getEventArgs=D.getEventArgs,q.setVisible=D.setVisible),b&&k[b-1]&&(q.previousData=k[b-1].data),D.setContainer(t);for(b=0;b<g;b++)for(l=(k=e[b].dataset)&&k.length||1,t=0;t<l;t++){D=c[p++];if(!D)return;F&&!k?m.addDataSet(D,t,b):m.addDataSet(D,b,t);k?D.init(a,b,t):D.init(a,b)}D.JSONData&&m.draw();r.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())},
+parseCategory:function(){var a=this._catArr=[],b=this.logic.dataObj,c,d=0,e,g,k=b.categories&&b.categories[0].category,l=k&&k.length;for(c=0;c<l;c+=1)k[c].vline||(e=b.categories[0].category[c],g=ia(e.label,e.name),a[d]=ia(e.tooltext,g),d+=1)}},E["renderer.cartesian"]);E("renderer.newmscombi2d",{drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=d.dataObj,g=e.dataset,k=d.isStacked,l=a.layers,m=a.options,p=a.elements,q=m.chart,r=q.is3D,m=a.datasets=m.series,t=ia(q.rendererId,
+q.defaultSeriesType),u=l.background,u=l.dataset=l.dataset||b.group("dataset").insertAfter(u),v,A,E=m.length,G,F=FusionCharts.register("groupManagerType",["ColumnGroupManager"]),J=FusionCharts.register("groupManagerType",["LineGroupManager"]),O=FusionCharts.register("groupManagerType",["AreaGroupManager"]),R=FusionCharts.register("dataSetType",["Column"]),M=FusionCharts.register("dataSetType",["Column3D"]),L=FusionCharts.register("dataSetType",["Line"]);v=FusionCharts.register("dataSetType",["Area"]);
+var W=0,z=0,C=0,e=D(e.chart.areaovercolumns,1),R={Column:R,Column3d:M,Area:v,Line:L},F={Column:new F,Column3d:new F,Area:new O,Line:new J},J=d.chartInstance.jsVars._reflowData;v=J.dataObj||(J.dataObj={});J=function(a,b){return function(f){var e=c[a],g,k={hcJSON:{series:[]}},l=k.hcJSON.series[a]||(k.hcJSON.series[a]={}),m=d.chartInstance.jsVars._reflowData;g=(f=ia(f,!e.visible))?"visible":"hidden";Ba(e.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});e.visible=f;b.visible=
+f;l.visible=f;aa(m,k,!0)}};O=function(a){return function(b){var d=c[a],f=d.legend,e=f&&f.elements,g=e&&e.legendItemText,k=e&&e.legendItemSymbol,e=e&&e.legendItemLine,l=f&&f.hiddenColor,m=f&&f.itemLineColor,p=f&&f.itemTextColor,w=f&&f.symbolColor,f=f&&f.symbolStroke;H(b,!d.visible)?(k&&k.attr({fill:w||m,stroke:f}),g&&g.attr({fill:p}),e&&e.attr({stroke:m})):(k&&k.attr({fill:l,stroke:l}),g&&g.attr({fill:l}),e&&e.attr({stroke:l}));c[a].visible?c[a].hide():c[a].show()}};M=function(b){return function(){return a.getEventArgs&&
+a.getEventArgs(c[b])}};L=function(b,d,e){return function(g,k){d.call(a,c[b],e,{numUpdate:g,hasAxisChanged:k})}};(v.chart||(v.chart={})).animation=0;l.tracker=l.tracker||b.group("hot").insertAfter(u);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],p.plots=c);for(G in F)F[G].init(a);a.parseCategory();for(l=0;l<E;l++){b=m[l]||{};p=b.updatePlot="updatePlot"+sa(H(b.type,b.plotType,t));p=a[p];G=sa(H(b.type,b.plotType,t));v=b.drawPlot="drawPlot"+G;v=a[v]||a.drawPlot;if(!G||g[l].dataset)return;(A=c[l])||
+(c.push(A=new R[G]),A.index=l,A.items=[],A.data=b.data||[],A.name=b.name,A.userID=b.userID,A.setVisible=J(l,b),A.legendClick=O(l),A.getEventArgs=M(l),A.renderType=G,A.realtimeUpdate=L(l,p||v,b),A.yAxis=b.yAxis,b.plot=A,b.legendClick=A.legendClick,b.getEventArgs=A.getEventArgs,b.setVisible=A.setVisible);A.index=b.__positiionIndex;if("Column"===G||"Column3d"===G)k?F[G].addDataSet(A,0,W++):F[G].addDataSet(A,W++,0);"Area"===G&&F[G].addDataSet(A,C++);"Line"===G&&F[G].addDataSet(A,z++);A.init(a,b.__positiionIndex);
+l&&m[l-1]&&(b.previousData=m[l-1].data);A.setContainer(u)}e?(W&&(r?F.Column3d.draw():F.Column.draw()),C&&F.Area.draw()):(C&&F.Area.draw(),W&&(r?F.Column3d.draw():F.Column.draw()));z&&F.Line.draw();q.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())}},E["renderer.newcartesian"]);E("renderer.msstackedcolumn2dlinedy",{drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=a.layers,g=a.options,k=a.elements,l=g.chart,g=a.datasets=g.series,m=ia(l.rendererId,l.defaultSeriesType),
+p=e.background,p=e.dataset=e.dataset||b.group("dataset").insertAfter(p),q,r,t,D=g.length,u=FusionCharts.register("groupManagerType",["ColumnGroupManager"]),v=FusionCharts.register("groupManagerType",["LineGroupManager"]),A=FusionCharts.register("dataSetType",["Column"]),E=FusionCharts.register("dataSetType",["Line"]),G=0,F=0,J=0,A={Column:A,Line:E},u={Column:new u,Line:new v},v=d.chartInstance.jsVars._reflowData;q=v.dataObj||(v.dataObj={});var v=function(a,b){return function(f){var e=c[a],g,k={hcJSON:{series:[]}},
+h=k.hcJSON.series[a]||(k.hcJSON.series[a]={}),l=d.chartInstance.jsVars._reflowData;g=(f=ia(f,!e.visible))?"visible":"hidden";Ba(e.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});e.visible=f;b.visible=f;h.visible=f;aa(l,k,!0)}},E=function(a){return function(b){var d=c[a],f=d.legend,e=f&&f.elements,g=e&&e.legendItemText,h=e&&e.legendItemSymbol,e=e&&e.legendItemLine,k=f&&f.hiddenColor,l=f&&f.itemLineColor,m=f&&f.itemTextColor,p=f&&f.symbolColor,f=f&&f.symbolStroke;H(b,!d.visible)?
+(h&&h.attr({fill:p||l,stroke:f}),g&&g.attr({fill:m}),e&&e.attr({stroke:l})):(h&&h.attr({fill:k,stroke:k}),g&&g.attr({fill:k}),e&&e.attr({stroke:k}));c[a].visible?c[a].hide():c[a].show()}},O=function(b){return function(){return a.getEventArgs&&a.getEventArgs(c[b])}},M=function(b,d,e){return function(g,k){d.call(a,c[b],e,{numUpdate:g,hasAxisChanged:k})}};(q.chart||(q.chart={})).animation=0;e.tracker=e.tracker||b.group("hot").insertAfter(p);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],k.plots=
+c);for(t in u)u[t].init(a);a.parseCategory();for(e=0;e<D;e++){b=g[e]||{};k=b.updatePlot="updatePlot"+sa(H(b.type,b.plotType,m));t=a[k];k=sa(H(b.type,b.plotType,m));q=b.drawPlot="drawPlot"+k;r=a[q]||a.drawPlot;if(!k)return;(q=c[e])||(c.push(q=new A[k]),q.index=e,q.items=[],q.data=b.data||[],q.name=b.name,q.userID=b.userID,q.setVisible=v(e,b),q.legendClick=E(e),q.getEventArgs=O(e),q.renderType=k,q.realtimeUpdate=M(e,t||r,b),q.yAxis=b.yAxis,b.plot=q,b.legendClick=q.legendClick,b.getEventArgs=q.getEventArgs,
+b.setVisible=q.setVisible);"Column"===k?(t=b.__positiionIndex,t!=J&&G++,J=t,u[k].addDataSet(q,G,b.__stackIndex||0),q.init(a,G,b.__stackIndex)):("Line"===k&&u[k].addDataSet(q,F),q.init(a,F++,!0));e&&g[e-1]&&(b.previousData=g[e-1].data);q.setContainer(p)}u.Column.draw();u.Line.draw();l.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())}},E["renderer.newcartesian"]);FusionCharts.register("dataSetType",["Column",{configure:function(){var b=this.chart,c=b.logic,d=this.conf,e=this.fcJSON,g=this.JSONData,
+k=g.data,l=e.categories&&e.categories[0].category,m=Cb(l&&l.length,k&&k.length),e=e.chart,p=b.logic.colorManager,q,r=p.getPlotColor(this.index||this.positionIndex),t=D(g.dashed,e.plotborderdashed),u=D(e.useplotgradientcolor,1),v=D(e.showtooltip,1),A=a.parseUnsafeString,E=A(e.yaxisname),G=A(e.xaxisname),F=A(H(e.tooltipsepchar,", ")),J=D(e.seriesnameintooltip,1),O=a.parseTooltext,L,ea,M,W,S,z,C,P,N,h,T,U,aa,V,ba,Y,da,ca,ga,Q,fa,ka,ma,na,ja,sa=a.getDashStyle,la=this.components.data,Da=b.numberFormatter,
+ua=c.isBar,Ha=c.is3D,Ta=c.isStacked;q=c.chartInstance.jsVars._reflowData;q=q.dataObj||(q.dataObj={});z=q.chart||(q.chart={});q=d.showplotborder=D(e.showplotborder,Ha?0:1);d.plotDashLen=C=D(e.plotborderdashlen,5);d.plotDashGap=P=D(e.plotborderdashgap,4);d.plotfillAngle=h=D(360-e.plotfillangle,ua?180:90);d.plotFillAlpha=W=H(g.alpha,e.plotfillalpha,ha);d.plotColor=H(g.color,r);d.isRoundEdges=N=D(e.useroundedges,0);d.plotRadius=D(e.useRoundEdges,d.isRoundEdges?1:0);d.plotFillRatio=T=H(g.ratio,e.plotfillratio);
+d.plotgradientcolor=U=a.getDefinedColor(e.plotgradientcolor,p.getColor("plotGradientColor"));!u&&(U="");d.plotBorderAlpha=aa=q?H(e.plotborderalpha,W,ha):0;d.plotBorderColor=V=H(e.plotbordercolor,Ha?"#ffffff":p.getColor("plotBorderColor"));d.plotBorderThickness=u=D(e.plotborderthickness,1);d.plotBorderDashStyle=t=t?sa(C,P,u):"none";d.showValues=D(g.showvalues,e.showvalues,1);d.valuePadding=D(e.valuepadding,2);d.enableAnimation=r=D(e.animation,e.defaultanimation,1);d.animation=r?{duration:1E3*D(e.animationduration,
+1)}:!1;z.transposeAnimation=d.transposeAnimation=D(e.transposeanimation,z.transposeAnimation,r);d.transposeAnimDuration=1E3*D(e.transposeanimduration,.2);d.showShadow=N||Ha?D(e.showshadow,1):D(e.showshadow,p.getColor("showShadow"));d.showHoverEffect=p=D(e.plothovereffect,e.showhovereffect,qb);d.showTooltip=D(e.showtooltip,1);d.stack100Percent=c=D(c.stack100percent,e.stack100percent,0);d.definedGroupPadding=D(e.plotspacepercent);d.plotSpacePercent=D(e.plotspacepercent,20)%100;d.maxColWidth=D(ua?e.maxbarheight:
+e.maxcolwidth,50);d.showPercentValues=D(e.showpercentvalues,Ta&&c?1:0);d.showPercentInToolTip=D(e.showpercentintooltip,Ta&&c?1:0);d.plotPaddingPercent=D(e.plotpaddingpercent);d.rotateValues=D(e.rotatevalues)?270:0;d.placeValuesInside=D(e.placevaluesinside,0);d.zeroPlaneColor=b.options.chart.zeroPlaneColor;d.zeroPlaneBorderColor=b.options.chart.zeroPlaneBorderColor;d.zeroPlaneShowBorder=b.options.chart.zeroPlaneShowBorder;d.use3DLighting=D(e.use3dlighting,1);d.parentYAxis=c="s"===H(g.parentyaxis&&
+g.parentyaxis.toLowerCase(),"p")?1:0;la||(la=this.components.data=[]);for(Ta=0;Ta<m;Ta++)z=k[Ta],b=(r=la[Ta])&&r.config,r||(r=la[Ta]={graphics:{}}),r.config||(b=la[Ta].config={}),b.showValue=D(z.showvalue,d.showValues),b.setValue=ea=Da.getCleanValue(z.value),b.setLink=H(z.link),b.toolTipValue=r=Da.dataLabels(ea,c),b.setDisplayValue=W=A(z.displayvalue),b.displayValue=H(W,r),r=D(z.dashed),W=D(z.dashlen,C),L=P=D(z.dashgap,P),b.plotBorderDashStyle=L=1===r?sa(W,L,u):0===r?"none":t,r=H(z.color,d.plotColor),
+W=H(z.alpha,d.plotFillAlpha),0>ea&&!N&&(S=h,h=ua?180-h:360-h),b.colorArr=ba=a.graphics.getColumnColor(r+","+U,W,T,h,N,V,aa.toString(),ua?1:0,Ha?!0:!1),ea=ob(A(H(l[Ta].tooltext,l[Ta].label))),0!==p&&(Y=H(z.hovercolor,g.hovercolor,e.plotfillhovercolor,e.columnhovercolor,r),da=H(z.hoveralpha,g.hoveralpha,e.plotfillhoveralpha,e.columnhoveralpha,W),ca=H(z.hovergradientcolor,g.hovergradientcolor,e.plothovergradientcolor,U),!ca&&(ca=""),ga=H(z.hoverratio,g.hoverratio,e.plothoverratio,T),Q=D(360-z.hoverangle,
+360-g.hoverangle,360-e.plothoverangle,h),fa=H(z.borderhovercolor,g.borderhovercolor,e.plotborderhovercolor,V),ka=H(z.borderhoveralpha,g.borderhoveralpha,e.plotborderhoveralpha,aa,W),W=D(z.borderhoverthickness,g.borderhoverthickness,e.plotborderhoverthickness,u),ma=D(z.borderhoverdashed,g.borderhoverdashed,e.plotborderhoverdashed),na=D(z.borderhoverdashgap,g.borderhoverdashgap,e.plotborderhoverdashgap,C),ja=D(z.borderhoverdashlen,g.borderhoverdashlen,e.plotborderhoverdashlen,P),ma=ma?sa(ja,na,W):L,
+1==p&&Y===r&&(Y=Ab(Y,70)),r=a.graphics.getColumnColor(Y+","+ca,da,ga,Q,N,fa,ka.toString(),ua?1:0,Ha?!0:!1),b.setRolloutAttr={fill:Ha?[R(ba[0]),!d.use3DLighting]:R(ba[0]),stroke:q&&R(ba[1]),"stroke-width":u,"stroke-dasharray":L},b.setRolloverAttr={fill:Ha?[R(r[0]),!d.use3DLighting]:R(r[0]),stroke:q&&R(r[1]),"stroke-width":W,"stroke-dasharray":ma}),L=b.toolTipValue,r=ob(A(H(z.tooltext,g.plottooltext,e.plottooltext))),v?null===L?z=!1:void 0!==r?(W=[1,2,3,4,5,6,7],ea={yaxisName:E,xaxisName:G,formattedValue:L,
+label:ea},z=O(r,W,ea,z,e,g)):(J&&(M=ia(g&&g.seriesname)),z=M?M+F:"",z+=ea?ea+F:""):z=!1,b.toolText=z,b.setTooltext=z,S&&(h=S)},init:function(a,b,c){var d=(this.fcJSON=a.logic.dataObj).dataset,e=a.logic.isDual?a.yAxis[this.yAxis||0]:a.yAxis[0];if(!d||!d[b])return!1;this.chart=a;this.yAxis=e;this.components={};this.conf={};this.graphics={};pb(c)?this.JSONData=d[b].dataset[c]:this.JSONData=d[b];this.visible=1===D(this.JSONData.visible,!Number(this.JSONData.initiallyhidden),1);this.configure()},draw:function(){var b=
+this,c=b.parentContainer,d=b.JSONData,e=b.fcJSON,k=e.chart,l=b.conf,m=b.groupManager,p=b.datasetIndex,q=e.categories&&e.categories[0].category,r=d.data,t=q&&q.length,u=r&&r.length,v=e.labelStyle,A,E,e=b.visible,G=b.chart,F=G.paper,J=G.xAxis[0],O=b.yAxis,L=G.logic,W=G.elements;A=H(J.axisData.scroll,{}).enabled;var L=L.isStacked,ea,M,S=G.layers,T=a.parseUnsafeString,z=a.getValidValue,C=a.Raphael,P=l.showTooltip,N=l.animation.duration,h=J.getAxisPosition(0),ha=J.getAxisPosition(1)-h,U=l.definedGroupPadding,
+aa=l.plotSpacePercent/200,V=m.getDataSetPosition(b),h=m.stackSumValue[b.positionIndex],ba=m.manageClip,Y=l.maxColWidth,da=l.transposeAnimDuration,ca=l.transposeAnimation,ha=(1-.01*U)*ha||Cb(ha*(1-2*aa),1*Y),ha=D(V.columnWidth,ha/1),ga,U=V.xPosOffset||0,V=V.height,Q,fa,aa=b.components.data,ka,na,ia,ja;na={};ja={};na={fontFamily:v.fontFamily,fontSize:v.fontSize,lineHeight:v.lineHeight,fontWeight:v.fontWeight,fontStyle:v.fontStyle,color:v.color};var Y=O.max,sa=O.min,v=0<Y&&0>sa,Y=0>=Y&&0>sa?Y:0<Y&&0<=
+sa?sa:0,sa=O.yBasePos=O.getAxisPosition(Y),la=0,ua=l.showShadow,va=l.plotBorderThickness,l=l.plotRadius,Ha=b.graphics.container,Ta=b.graphics.trackerContainer,gb=b.graphics.dataLabelContainer,oa=b.graphics.shadowContainer;ja=S.tracker;var S=!0,wa=!1,Ia=!1,Ba=function(a){ma.call(this,G,a)},Oa=function(a,b){return function(c){a.attr(b);ma.call(this,G,c,"DataPlotRollOver")}},Na=function(a,b){return function(c){a.attr(b);ma.call(this,G,c,"DataPlotRollOut")}},Sa=function(){!1!==b.visible||!1!==b._conatinerHidden&&
+void 0!==b._conatinerHidden||(Ha.hide(),Ta.hide(),oa.hide(),gb&&gb.hide(),b._conatinerHidden=!0)},Ga=G.getAnimationCompleteFn(),Ca=function(){b.drawLabel();m.drawSumValueFlag&&m.drawSumValue();Ga()};Ha||(Ha=b.graphics.container=F.group("columns",c),Ha.attrs["clip-rect"]||A||Ha.attr({"clip-rect":W["clip-canvas"]}),e||Ha.hide());Ta||(Ta=b.graphics.trackerContainer=F.group("col-hot",ja),e||Ta.hide());G.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",na);oa||(oa=b.graphics.shadowContainer=
+F.group("shadow",c).toBack(),oa.attrs["clip-rect"]||A||oa.attr({"clip-rect":W["clip-canvas"]}),e||oa.hide());c=Cb(t,u);for(t=0;t<c;t++)if(A=r[t],ja=(u=aa[t])&&u.config,na=ja.setValue,ea=0<=na,null!==na){W=ja.setLink;ka=ja.colorArr;u.graphics||(aa[t].graphics={});ia=ja.displayValue;ea=ea?ja.previousPositiveY:ja.previousNegativeY;fa=z(T(H(A.tooltext,d.plottooltext,k.plottooltext)));L&&(ea=b._parseValues(t,ea,h[t],fa),na=ja.value);ga=O.getAxisPosition(ea||Y);A=J.getAxisPosition(t)+U;0!==V?(ea=O.getAxisPosition(na+
+(ea||0)),Q=zb(ga-ea)):(Q=0,ea=ga);ea=Cb(ea,ga);!v&&ba&&e&&0<va&&(Q+=va,m.manageClip=!1);m.isCrisp?(M=C.crispBound(A,ea,ha,Q,va),A=M.x,ea=M.y,ga=M.width,Q=M.height):ga=ha;fa=ja.toolText+(fa?"":ja.toolTipValue);E=ja.plotBorderDashStyle;ia={index:t,link:W,value:na,displayValue:ia,categoryLabel:q[t].label,toolText:fa,id:"",datasetIndex:p,datasetName:d.seriesname,visible:e};na=ja.setRolloutAttr;ja=ja.setRolloverAttr;N||(sa=ea,la=Q);E={x:A,y:sa,width:ga,height:la||1,r:l,ishot:!P,fill:R(ka[0]),stroke:R(ka[1]),
+"stroke-width":va,"stroke-dasharray":E,"stroke-linejoin":"miter",visibility:e};u._xPos=A;u._yPos=ea;u._height=Q;u._width=ga;u.graphics.element?(Ia=wa=!0,E={x:A,y:ea,width:ga,height:Q||1},ca?ka=u.graphics.element.animate(E,da,"normal",S&&Sa):(ka=u.graphics.element.attr(E),S&&Sa())):(ka=u.graphics.element=F.rect(E,Ha),N?(ka.animate({y:ea,height:Q||1},N,"normal",S&&Ca),S=!1):Ia=wa=!0);ka.shadow({opacity:ua},oa).data("BBox",M);if(W||P)Q<Da&&(ea-=(Da-Q)/2,Q=Da),E={x:A,y:ea,width:ga,height:Q,r:l,cursor:W?
+"pointer":"",stroke:g,"stroke-width":va,fill:g,ishot:!0,visibility:e},u.graphics.hotElement?u.graphics.hotElement.attr(E):W=u.graphics.hotElement=F.rect(E,Ta);W=u.graphics.hotElement;(W||ka).data("eventArgs",ia).data("groupId",void 0).click(Ba).hover(Oa(ka,ja),Na(ka,na)).tooltip(fa)}wa&&b.drawLabel();m.drawSumValueFlag&&Ia&&m.drawSumValueFlag&&m.drawSumValue()},setContainer:function(a){if(!a)return!1;var b=this.graphics&&this.graphics.container;this.parentContainer=a;b&&this.parentContainer.appendChild(b)},
+dispose:function(){m(this)},show:function(){var a=this.graphics&&this.graphics.container,b=this.graphics&&this.graphics.trackerContainer,c=this.graphics&&this.graphics.dataLabelContainer,d=this.graphics&&this.graphics.shadowContainer,e=this.groupManager,g=this.index,k=this.positionIndex,l=this.stackIndex,m=this.chart.logic.msstackedcolumn2d,p=this.chart.logic.chartInstance.jsVars._reflowData,q=this.chart.logic.is3D,r=this.components.data,t=this.fcJSON.categories&&this.fcJSON.categories[0].category,
+t=Cb(this.JSONData.data&&this.JSONData.data.length,t&&t.length);this.visible=!0;this._conatinerHidden=!1;p=p.dataObj||(p.dataObj={});p=p.dataset||(p.dataset=[]);m?(g=p[k]||(p[k]={}),g=g.dataset||(g.dataset={}),l=g[l]||(g[l]={}),l.visible=1):(g=p[g]||(p[g]={}),g.visible=1);if(q)for(a=0;a<t;a++)r[a].graphics.element&&r[a].graphics.element.attr({visibility:"visible"}),r[a].graphics.hotElement&&r[a].graphics.hotElement.attr({visibility:"visible"});else a.show(),b.show();d.show();c&&c.show();e.draw()},
+hide:function(){var a=this.groupManager,b=this.index,c=this.positionIndex,d=this.stackIndex,e=this.chart.logic.msstackedcolumn2d,g=this.chart.logic.chartInstance.jsVars._reflowData,g=g.dataObj||(g.dataObj={}),g=g.dataset||(g.dataset=[]);e?(b=g[c]||(g[c]={}),b=b.dataset||(b.dataset={}),d=b[d]||(b[d]={}),d.visible=0):(b=g[b]||(g[b]={}),b.visible=0);this.visible=!1;a.draw()},drawLabel:function(){var a=this.chart,b=this.fcJSON,c=b.categories&&b.categories[0].category,b=b.labelStyle,d=a.logic,e=d.is3D,
+d=d.isStacked,g=this.JSONData.data,k=this.conf,l=c&&c.length,m=g&&g.length,c=this.components.data,p=this.visible,q=a.paper,r=a.smartLabel,t,D,u=k.rotateValues,v=k.placeValuesInside,H=k.transposeAnimDuration,A=k.transposeAnimation,E=a.canvasTop,G=a.canvasHeight,F,J,M,k=k.valuePadding+2,O,L,z=e?10:0,C=e?10:0,R,N=this.graphics.dataLabelContainer,a=a.layers.datalabels,G=G+z;N||(N=this.graphics.dataLabelContainer=q.group("datalabel",a),p||N.hide());a=Cb(m,l);r.setStyle(b);for(l=0;l<a;l++)p=c[l],m=p.graphics,
+M=p&&p.config,D=g[l],R=p._yPos,O=p._xPos,F=M.setValue,t=0>F,J=p._height,L=p._width,p=M.displayValue,(M=M.showValue)&&null!==F&&(D._state&&D._state.labelWidth||(F=r.getOriSize(p),D._state=u?{labelWidth:F.height,labelHeight:F.width}:{labelWidth:F.width,labelHeight:F.height}),D=M=D._state.labelHeight+k,F=J,M=.5*M+k,O+=.5*L,L=t?E+G-(R+J):R-E,d?(J=R+.5*J+(z||0),J=Cb(E+G-.5*D,J),J=Oa(E+.5*D,J),O-=C):v?F>=D?(J=R+(t?J-M:M),e&&(O-=C,J+=z)):L>=D?(J=R+(t?J+M:-M),e&&t&&(O-=C,J+=z)):(J=R+(t?J-M:M),e&&(O-=C,J+=
+z)):L>=D?(J=R+(t?J+M:-M),e&&(t?(O-=C,J+=z):O-=C/2)):(J=R+(t?J-M:M),e&&(O-=C,J+=z)),t={text:p,"class":"fusioncharts-label",x:O,y:J,fill:b.color,"font-size":b.fontSize,"font-weight":b.fontWeight,"font-style":b.fontStyle,"font-family":b.fontFamily,visibility:"visible"},m.label?(m.label.attr({text:p}),t={x:O,y:J},A?(t.transform=u&&"T0,0,R"+u,m.label.animate(t,H,"normal")):(m.label.attr(t),u&&m.label.attr("transform","T0,0,R"+u))):(m.label=q.text(t,N).attr({"line-height":b.lineHeight,"text-bound":[b.backgroundColor,
+b.borderColor,b.borderThickness,b.borderPadding,b.borderRadius,b.borderDash]}),u&&m.label.attr("transform","T0,0,R"+u)))},_parseValues:function(a,b,c,d){var e=this.conf;a=this.components.data[a].config;var g=e.showPercentValues,k=e.showPercentInToolTip,l=a.setValue,m=e.stack100Percent,p=this.chart.numberFormatter,q=a.setDisplayValue,e=e.parentYAxis,r;r=(this.visible?l||0:0)/c*100;l=p.percentValue(r);m&&(a.value=r,b=(b||0)/c*100);k&&(a.toolTipValue=l);g&&!q&&(a.displayValue=l);d&&(a.toolText=bb(a.setTooltext,
+[14,24,25,112],{percentValue:l,sum:p.dataLabels(c,e),unformattedSum:c}));return b}}]);FusionCharts.register("dataSetType",["Column3D",{draw:function(){var b=this,c=b.parentContainer,d=b.JSONData,e=b.fcJSON,k=e.chart,l=b.conf,m=b.groupManager,p=b.datasetIndex,q=e.categories&&e.categories[0].category,r=d.data,t=q&&q.length,u=r&&r.length,v,A=e.labelStyle,E,G,F,J=b.chart,O=J.paper,L=J.xAxis[0],W=b.yAxis,S=J.logic.isStacked,M,T,Z,z=J.layers,C=a.parseUnsafeString,P=a.getValidValue,N=l.showTooltip,h=l.animation.duration,
+ha=L.getAxisPosition(0),U=L.getAxisPosition(1)-ha,aa=l.definedGroupPadding,V=l.plotSpacePercent/200,Y=m.getDataSetPosition(b),ba=m.stackSumValue[b.positionIndex],da=l.maxColWidth,ca=l.transposeAnimDuration,ga=l.transposeAnimation,Q=(1-.01*aa)*U||Cb(U*(1-2*V),1*da),ka=D(Y.columnWidth,Q/1),fa,na=Y.xPosOffset||0,ja=Y.height,ia,sa=b.components.data,la,ua,oa,Ha,Ta,va,wa,Ia,Ba,Oa={},Ga={},Na={fontFamily:A.fontFamily,fontSize:A.fontSize,lineHeight:A.lineHeight,fontWeight:A.fontWeight,fontStyle:A.fontStyle,
+color:A.color},Sa=W.max,Ca=W.min,fb=0<Sa&&0<=Ca,bb=0>=Sa&&0>Ca?Sa:fb?Ca:0,cb=W.yBasePos=W.getAxisPosition(bb),Pa,Ma,Fa=0,ob=l.showShadow,ib=l.plotBorderThickness,Qa=b.graphics.container,eb=b.graphics.dataLabelContainer,jb=b.graphics.shadowContainer,rb=J.numberFormatter,xb=z.tracker,pb,Ab,wb,mb,nb,qb,Bb,Eb,Ya,Ib,Hb,db,Za,Wa=l.use3DLighting,Qb,Ra,Nb,Kb,sb=!0,ub=!1,ra=!1,vb=b.visible,Sb=function(a){ma.call(this,J,a)},$a=function(a,b){return function(c){a.attr(b);ma.call(this,J,c,"DataPlotRollOver")}},
+Xa=function(a,b){return function(c){a.attr(b);ma.call(this,J,c,"DataPlotRollOut")}},Tb=function(){var a;if(!1===b.visible&&(!1===b._conatinerHidden||void 0===b._conatinerHidden)){a=b.components.data;for(F=0;F<v;F++)a[F].graphics.element&&a[F].graphics.element.attr({visibility:"hidden"}),a[F].graphics.hotElement&&a[F].graphics.hotElement.attr({visibility:"hidden"});jb.hide();eb&&eb.hide();b._conatinerHidden=!0}},Wb=J.getAnimationCompleteFn(),Jb=function(){b.drawLabel();m.drawSumValueFlag&&m.drawSumValue();
+Wb()};Qa||(Qa=b.graphics.container=J.datasetLayers=J.datasetLayers||O.group("columns",c));J.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",Na);jb||(jb=b.graphics.shadowContainer=O.group("shadow",c).toBack());v=Cb(t,u)||0;mb=Qa.negative=Qa.negative||O.group("negative-values",Qa);nb=Qa.column=Qa.column||O.group("positive-values",Qa);qb=xb.negative=xb.negative||O.group("negative-values",xb);Bb=xb.column=xb.column||O.group("positive-values",xb);Eb=Qa.zeroPlane;!Eb&&0>Ca&&0<=Sa&&(Eb=Qa.zeroPlane=
+O.group("zero-plane",Qa).insertBefore(nb),J.elements.zeroplane=O.cubepath(J.canvasLeft-10,cb+10,J.canvasWidth,1,10,10,Eb).attr({fill:[l.zeroPlaneColor,!Wa],stroke:l.zeroPlaneBorderColor||"none","stroke-width":l.zeroPlaneShowBorder?1:0}));(Ya=mb.data("categoryplots"))||(mb.data("categoryplots",Array(v)),Ya=mb.data("categoryplots"));(Ib=nb.data("categoryplots"))||(nb.data("categoryplots",Array(v)),Ib=nb.data("categoryplots"));(Hb=qb.data("categoryplots"))||(qb.data("categoryplots",Array(v)),Hb=qb.data("categoryplots"));
+(db=Bb.data("categoryplots"))||(Bb.data("categoryplots",Array(v)),db=Bb.data("categoryplots"));for(F=0;F<v;F+=1)Ya[F]=Ya[F]||O.group(mb),Ib[F]=Ib[F]||O.group(nb),Hb[F]=Hb[F]||O.group(qb),db[F]=db[F]||O.group(Bb);for(F=0;F<v;F++)if(E=r[F],Ba=(la=sa[F])&&la.config,va=Ba.setValue,Ta=Ba.setLink,pb=Ba.colorArr,null!==va){la.graphics||(sa[F].graphics={});Ia=Ba.displayValue;Pa=0<=va?Ba.previousPositiveY:Ba.previousNegativeY;ua=P(C(H(E.tooltext,d.plottooltext,k.plottooltext)));S&&(Pa=b._parseValues(F,Pa,
+ba[F],ua),va=Ba.value);Ma=W.getAxisPosition(Pa||bb);M=L.getAxisPosition(F)+na;0!==ja?(Z=W.getAxisPosition(va+(Pa||0)),T=zb(Ma-Z)):(T=0,Z=Ma);Z=Cb(Z,Ma);fa=ka;Ab=(Za=0>rb.getCleanValue(E.value))?Ya:Ib;wb=Za?Hb:db;ia=Ba.toolText+(ua?"":Ba.toolTipValue);wa={index:F,link:Ta,value:va,displayValue:Ia,categoryLabel:q[F].label,toolText:ia,id:"",datasetIndex:p,datasetName:d.seriesname,visible:vb};Oa=Ba.setRolloutAttr;Ga=Ba.setRolloverAttr;h||(cb=Z,Fa=T);Qb=M;Ra=Z;Nb=fa;Kb=T;M-=10;Z+=10;la.graphics.element?
+(ra=ub=!0,oa=la.graphics.element,ga?oa.animate({cubepath:[M,Z,fa,T,10,10]},ca,"normal",sb&&Tb):(oa.attr({cubepath:[M,Z,fa,T,10,10],visibility:vb?"visible":"hidden"}),sb&&Tb())):(oa=la.graphics.element=O.cubepath(Ab[F]),oa.attr({cubepath:[M,h?cb+10:Z,fa,h?0:Fa,10,10],fill:[R(pb[0]),!Wa],ishot:!0,stroke:l.showplotborder&&R(pb[1]),"stroke-width":l.plotBorderThickness,"stroke-dasharray":l.plotBorderDashStyle,cursor:Ta?"pointer":"",visibility:vb?"visible":"hidden"}),h?(oa.animate({cubepath:[M,Z,fa,T,10,
+10]},h,"normal",sb&&Jb),sb=!1):ra=ub=!0);oa.shadow({opacity:ob},jb).data("BBox",{height:Fa,width:fa,x:M,y:Z});if(Ta||N)T<Da&&(Z-=(Da-T)/2,T=Da),G={cubepath:[M,Z,fa,T,10,10],cursor:Ta?"pointer":"",stroke:ib&&g||"NONE","stroke-width":ib,fill:g,ishot:!0,visibility:"visible"},la.graphics.hotElement?la.graphics.hotElement.attr(G):(Ha=la.graphics.hotElement=O.cubepath(wb[F]),Ha.attr(G));Ha=la.graphics.hotElement;(Ha||oa).data("eventArgs",wa).data("groupId",void 0).click(Sb).hover($a(oa,Ga),Xa(oa,Oa)).tooltip(ia);
+(Ha||oa)._.cubetop.data("eventArgs",wa).click(Sb).hover($a(oa,Ga),Xa(oa,Oa)).tooltip(ia);(Ha||oa)._.cubeside.data("eventArgs",wa).click(Sb).hover($a(oa,Ga),Xa(oa,Oa)).tooltip(ia);S&&Za&&(oa.toBack(),Ha&&Ha.toBack());la._xPos=Qb;la._yPos=Ra;la._height=Kb;la._width=Nb}ub&&b.drawLabel();m.drawSumValueFlag&&ra&&m.drawSumValueFlag&&m.drawSumValue()}},"Column"]);FusionCharts.register("dataSetType",["Bar2D",{draw:function(){var b=this,c=b.parentContainer,d=b.JSONData,e=b.fcJSON,k=e.chart,l=b.conf,m=b.groupManager,
+p=b.datasetIndex,q=e.categories&&e.categories[0].category,r=d.data,t=q&&q.length,u=r&&r.length,v=e.labelStyle,A,E,F=b.chart,e=F.paper,G=F.xAxis[0],J=b.yAxis,O=F.logic,L=F.elements;A=H(G.axisData.scroll,{}).enabled;var O=O.isStacked,W,T,M,S=F.layers,Z=a.parseUnsafeString,z=a.getValidValue,C=a.Raphael,P=l.showTooltip,N=l.animation.duration,h=G.getAxisPosition(0),ha=G.getAxisPosition(1)-h,U=l.definedGroupPadding,aa=l.plotSpacePercent/200,V=m.getDataSetPosition(b),h=m.stackSumValue[b.positionIndex],Y=
+m.manageClip,ba=l.maxColWidth,da=l.transposeAnimDuration,ca=l.transposeAnimation,ha=(1-.01*U)*ha||Cb(ha*(1-2*aa),1*ba),ha=D(V.columnWidth,ha/1),ga,U=V.xPosOffset||0,V=V.height,Q,aa=b.components.data,fa,ka,na,ja;ka={};ja={};ka={fontFamily:v.fontFamily,fontSize:v.fontSize,lineHeight:v.lineHeight,fontWeight:v.fontWeight,fontStyle:v.fontStyle,color:v.color};var ba=J.max,ia=J.min,v=0<ba&&0>ia,ba=0>=ba&&0>ia?ba:0<ba&&0<=ia?ia:0,ia=J.yBasePos=J.getAxisPosition(ba),la=0,sa=l.showShadow,oa=l.plotBorderThickness,
+l=l.plotRadius,va=b.graphics.container,Ha=b.graphics.trackerContainer,Ta=b.graphics.dataLabelContainer,ua=b.graphics.shadowContainer;ja=S.tracker;var S=b.visible,wa=!0,Ba=!1,Ia=!1,Oa=function(a){ma.call(this,F,a)},Ga=function(a,b){return function(c){a.attr(b);ma.call(this,F,c,"DataPlotRollOver")}},Na=function(a,b){return function(c){a.attr(b);ma.call(this,F,c,"DataPlotRollOut")}},Sa=function(){!1!==b.visible||!1!==b._conatinerHidden&&void 0!==b._conatinerHidden||(va.hide(),Ha.hide(),ua.hide(),Ta&&
+Ta.hide(),b._conatinerHidden=!0)},Ca=F.getAnimationCompleteFn(),Qa=function(){b.drawLabel();m.drawSumValueFlag&&m.drawSumValue();Ca()};va||(va=b.graphics.container=e.group("bars",c),va.attrs["clip-rect"]||A||va.attr({"clip-rect":L["clip-canvas"]}),S||va.hide());Ha||(Ha=b.graphics.trackerContainer=e.group("bar-hot",ja),S||Ha.hide());F.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",ka);ua||(ua=b.graphics.shadowContainer=e.group("shadow",c).toBack(),S||ua.hide());c=Cb(t,u);for(t=0;t<
+c;t++)if(A=r[t],ja=(u=aa[t])&&u.config,ka=ja.setValue,L=ja.setLink,fa=ja.colorArr,null!==ka){u.graphics||(aa[t].graphics={});na=ja.displayvalue;W=0<=ka?ja.previousPositiveY:ja.previousNegativeY;Q=z(Z(H(A.tooltext,d.plottooltext,k.plottooltext)));O&&(W=b._parseValues(t,W,h[t],Q),ka=ja.value);ga=J.getAxisPosition(W||ba);A=G.getAxisPosition(t)+U;0!==V?(T=J.getAxisPosition(ka+(W||0)),W=Math.abs(ga-T)):(W=0,T=ga);T=Math.min(T,ga);!v&&Y&&S&&0<oa&&(W+=oa,T-=oa,m.manageClip=!1);m.isCrisp?(M=C.crispBound(A,
+T,ha,W,oa),A=M.x,T=M.y,ga=M.width,W=M.height):ga=ha;Q=ja.toolText+(Q?"":ja.toolTipValue);E=ja.plotBorderDashStyle;na={index:t,link:L,value:ka,displayValue:na,categoryLabel:q[t].label,toolText:Q,id:"",datasetIndex:p,datasetName:d.seriesname,visible:S};ka=ja.setRolloutAttr;ja=ja.setRolloverAttr;N||(ia=T,la=W);E={x:ia,y:A,width:la||1,height:ga,r:l,ishot:!P,fill:R(fa[0]),stroke:R(fa[1]),"stroke-width":oa,"stroke-dasharray":E,"stroke-linejoin":"miter",visibility:"visible"};u._xPos=T;u._yPos=A;u._height=
+ga;u._width=W;u.graphics.element?(Ba=Ia=!0,fa=u.graphics.element,E={x:T,y:A,width:W||1,height:ga},ca?fa.animate(E,da,"normal",wa&&Sa):(fa.attr(E),wa&&Sa())):(fa=u.graphics.element=e.rect(E,va),N?(fa.animate({x:T,width:W||1},N,"normal",wa&&Qa),wa=!1):Ba=Ia=!0);fa.shadow({opacity:sa},ua).data("BBox",M);if(L||P)W<Da&&(T-=(Da-W)/2,W=Da),E={x:T,y:A,width:W,height:ga,r:l,cursor:L?"pointer":"",stroke:g,"stroke-width":oa,fill:g,ishot:!0,visibility:"visible"},u.graphics.hotElement?u.graphics.hotElement.attr(E):
+L=u.graphics.hotElement=e.rect(E,Ha);L=u.graphics.hotElement;(L||fa).data("eventArgs",na).data("groupId",void 0).click(Oa).hover(Ga(fa,ja),Na(fa,ka)).tooltip(Q)}Ba&&b.drawLabel();m.drawSumValueFlag&&Ia&&m.drawSumValueFlag&&m.drawSumValue()},drawLabel:function(){var a=this.chart,b=a.layers,c=this.fcJSON,d=c.categories&&c.categories[0].category,e=c.labelStyle,g=a.logic,k=g.is3D,g=g.isStacked,l=this.JSONData.data,m=d&&d.length,p=l.length,d=this.components.data,q=a.paper,r,t,u=a.options.chart,v=u.xDepth||
+0,u=u.yDepth||0,H=a.numberFormatter;r="";var A=this.conf,E,c=D(c.chart.placevaluesinside,0),F=a.canvasWidth,a=a.canvasLeft,G,J,O=A.valuePadding+2,M,L,R,z=A.transposeAnimDuration,A=A.transposeAnimation,C=this.graphics.dataLabelContainer,P,N,h;r=this.visible;b=b.datalabels;C||(C=this.graphics.dataLabelContainer=q.group("datalabel"),r||C.hide());b&&b.appendChild(C);b=m<p?m:p;for(m=0;m<b;m++)if(r=d[m],G=r.graphics,h=G.label,E=l[m],M=r._yPos,L=r._xPos,N=r.config,t=H.getCleanValue(E.value),p=0>D(t),J=r._height,
+R=r._width,r=N.showValue)if(P=g?"middle":p?c?"start":"end":c?"end":"start",r=N.displayValue,N.showValue&&pb(r)&&r!==V&&null!==t){h||(t={text:r,"class":"fusioncharts-label",x:0,y:0,fill:e.color,"text-bound":[e.backgroundColor,e.borderColor,e.borderThickness,e.borderPadding,e.borderRadius,e.borderDash],"font-size":e.fontSize,"font-weight":e.fontWeight,"font-style":e.fontStyle,"font-family":e.fontFamily,"line-height":e.lineHeight,visibility:"visible"},h=G.label=q.text(t,C));E._state&&E._state.labelWidth||
+(G=h.getBBox(),E._state={labelWidth:G.width,labelHeight:G.height});E=E._state.labelWidth;E+=O;G=O;J=M+.5*J;M=L+(p?0:R);t=p?L-a:a+F-(L+R);g?(M+=.5*(p?R:-R),M=Oa(a+.5*E,M),M=Cb(a+F-.5*E,M),M-=k?v:0,J+=k?u:0):c?R>=E?(M+=p?G:-G,k&&(J+=u,M-=v)):E<t?(M+=p?-G:G,P=p?"end":"start",k&&p&&(M-=v)):(p?(M=L+R+Oa(E-L-R+a,0)-G,P="end"):(M=L-Oa(E-(a+F-L),0)+G,P="start"),k&&(M-=v,J+=u)):t>=E?(M+=p?-G:G,k&&p&&(M-=v,J+=v)):(M+=p?G+E:-(G+E),k&&(M-=v,J+=u));if(M>a+F||M<a)M=a+4,P="start";t={text:r,x:M,y:J,"text-anchor":P};
+0===h.attrs.x&&0===h.attrs.y?h.attr(t):A?(h.attr({text:r}),h.animate(t,z,"normal")):h.attr(t)}}},"Column"]);FusionCharts.register("dataSetType",["Bar3D",{draw:function(){var b=this,c=b.parentContainer,d=b.JSONData,e=b.fcJSON,k=e.chart,l=b.conf,m=b.groupManager,p=b.datasetIndex,q=e.categories&&e.categories[0].category,r=d.data,t=q&&q.length,u=r&&r.length,v,A=e.labelStyle,E,G,F,J=b.chart,O=J.paper,L=J.xAxis[0],W=b.yAxis,T=J.logic.isStacked,M,S,Z,z=J.layers,C=a.parseUnsafeString,P=a.getValidValue,N=
+l.showTooltip,h=l.animation.duration,ha=L.getAxisPosition(0),U=L.getAxisPosition(1)-ha,V=l.definedGroupPadding,aa=l.plotSpacePercent/200,Y=m.getDataSetPosition(b),ba=m.stackSumValue[b.positionIndex],da=l.maxColWidth,ca=l.transposeAnimDuration,ga=l.transposeAnimation,Q=(1-.01*V)*U||Cb(U*(1-2*aa),1*da),fa=D(Y.columnWidth,Q/1),ka,ja=Y.xPosOffset||0,na=Y.height,ia,oa=b.components.data,la,sa=J.numberFormatter,va,Ha,ua,wa,Ba,Ia,Oa,Ga,Ca={},Na={},Sa={fontFamily:A.fontFamily,fontSize:A.fontSize,lineHeight:A.lineHeight,
+fontWeight:A.fontWeight,fontStyle:A.fontStyle,color:A.color},Qa=W.max,bb=W.min,fb=0<Qa&&0<=bb,cb=0>=Qa&&0>bb?Qa:fb?bb:0,Pa=W.yBasePos=W.getAxisPosition(cb),Ma,Fa,jb=0,ib=l.showShadow,ob=l.plotBorderThickness,eb=b.graphics.container,pb=b.graphics.dataLabelContainer,rb=b.graphics.shadowContainer,xb=z.tracker,mb,Ab,wb,nb,qb,zb,Bb,Eb,Ya,Ib,Hb,db,Za,Wa,Sb,Ra,Nb,Kb,sb=l.use3DLighting,ub=!0,ra=!1,vb=!1,Qb=b.visible,$a=function(a){ma.call(this,J,a)},Xa=function(a,b){return function(c){a.attr(b);ma.call(this,
+J,c,"DataPlotRollOver")}},Tb=function(a,b){return function(c){a.attr(b);ma.call(this,J,c,"DataPlotRollOut")}},Wb=function(){var a;if(!1===b.visible&&(!1===b._conatinerHidden||void 0===b._conatinerHidden)){a=b.components.data;for(F=0;F<v;F++)a[F].graphics.element&&a[F].graphics.element.attr({visibility:"hidden"}),a[F].graphics.hotElement&&a[F].graphics.hotElement.attr({visibility:"hidden"});rb.hide();pb&&pb.hide();b._conatinerHidden=!0}},Jb=J.getAnimationCompleteFn(),Rb=function(){var a=b.components.data;
+for(F=0;F<v;F++)a[F].graphics.element&&a[F].graphics.element.attr({fill:[R(mb[0]),!sb]});b.drawLabel();m.drawSumValueFlag&&m.drawSumValue();Jb()};eb||(eb=b.graphics.container=J.datasetLayers=J.datasetLayers||O.group("bars",c));J.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",Sa);rb||(rb=b.graphics.shadowContainer=O.group("shadow",c).toBack());v=Cb(t,u)||0;nb=eb.negative=eb.negative||O.group("negative-values",eb);qb=eb.column=eb.column||O.group("positive-values",eb);zb=xb.negative=
+xb.negative||O.group("negative-values",xb);Bb=xb.column=xb.column||O.group("positive-values",xb);Eb=eb.zeroPlane;!Eb&&0>bb&&0<=Qa&&(Eb=eb.zeroPlane=O.group("zero-plane",eb).insertBefore(qb),J.elements.zeroplane=O.cubepath(Pa-5,J.canvasTop+5,1,J.canvasHeight,5,5,Eb).attr({fill:[l.zeroPlaneColor,!sb],stroke:l.zeroPlaneBorderColor||"none","stroke-width":l.zeroPlaneShowBorder?1:0}));(Ya=nb.data("categoryplots"))||(nb.data("categoryplots",Array(v)),Ya=nb.data("categoryplots"));(Ib=qb.data("categoryplots"))||
+(qb.data("categoryplots",Array(v)),Ib=qb.data("categoryplots"));(Hb=zb.data("categoryplots"))||(zb.data("categoryplots",Array(v)),Hb=zb.data("categoryplots"));(db=Bb.data("categoryplots"))||(Bb.data("categoryplots",Array(v)),db=Bb.data("categoryplots"));for(F=0;F<v;F+=1)Ya[F]=Ya[F]||O.group(nb),Ib[F]=Ib[F]||O.group(qb),Hb[F]=Hb[F]||O.group(zb),db[F]=db[F]||O.group(Bb);F=0;for(Za=v-1;F<v;F++,Za--)if(E=r[F],Ga=(la=oa[F])&&la.config,Ba=Ga.setValue,wa=Ga.setLink,mb=Ga.colorArr,null!==Ba){la.graphics||
+(oa[F].graphics={});Oa=Ga.displayvalue;Ma=0<=Ba?Ga.previousPositiveY:Ga.previousNegativeY;va=P(C(H(E.tooltext,d.plottooltext,k.plottooltext)));T&&(Ma=b._parseValues(F,Ma,ba[F],va),Ba=Ga.value);Fa=W.getAxisPosition(Ma||cb);M=L.getAxisPosition(F)+ja;0!==na?(Z=W.getAxisPosition(Ba+(Ma||0)),S=Math.abs(Fa-Z)):(S=0,Z=Fa);Z=Math.min(Z,Fa);ka=fa;Ab=(Wa=0>sa.getCleanValue(E.value))?Ya:Ib;wb=Wa?Hb:db;ia=Ga.toolText+(va?"":Ga.toolTipValue);Ia={index:F,link:wa,value:Ba,displayValue:Oa,categoryLabel:q[F].label,
+toolText:ia,id:"",datasetIndex:p,datasetName:d.seriesname,visible:Qb};Ca=Ga.setRolloutAttr;Na=Ga.setRolloverAttr;h||(Pa=Z,jb=S);Sb=M;Ra=Z;Nb=ka;Kb=S;M+=5;Z-=5;la.graphics.element?(vb=ra=!0,ga?Ha=la.graphics.element.animate({cubepath:[Z,M,S,ka,5,5]},ca,"normal",ub&&Wb):(Ha=la.graphics.element.attr({cubepath:[Z,M,S,ka,5,5],visibility:Qb?"visible":"hidden"}),ub&&Wb())):(Ha=la.graphics.element=O.cubepath(Ab[Za]),Ha.attr({cubepath:[h?Pa-5:Z,M,h?0:jb,ka,5,5],fill:[R(mb[0]),!sb],ishot:!0,stroke:l.showplotborder&&
+R(mb[1]),"stroke-width":l.plotBorderThickness,"stroke-dasharray":l.plotBorderDashStyle,cursor:wa?"pointer":"",visibility:Qb?"visible":"hidden"}),h?(Ha.animate({cubepath:[Z,M,S,ka,5,5]},h,"normal",ub&&Rb),ub=!1):vb=ra=!0);Ha.shadow({opacity:ib},rb).data("BBox",{height:ka,width:jb,x:Z,y:M});if(wa||N)S<Da&&(Z-=(Da-S)/2,S=Da),G={cubepath:[Z,M,S,ka,5,5],cursor:wa?"pointer":"",stroke:ob&&g||"NONE","stroke-width":ob,fill:g,ishot:!0,visibility:Qb?"visible":"hidden"},la.graphics.hotElement?la.graphics.hotElement.attr(G):
+(ua=la.graphics.hotElement=O.cubepath(wb[Za]),ua.attr(G));ua=la.graphics.hotElement;(ua||Ha).data("eventArgs",Ia).data("groupId",void 0).click($a).hover(Xa(Ha,Na),Tb(Ha,Ca)).tooltip(ia);(ua||Ha)._.cubetop.data("eventArgs",Ia).click($a).hover(Xa(Ha,Na),Tb(Ha,Ca)).tooltip(ia);(ua||Ha)._.cubeside.data("eventArgs",Ia).click($a).hover(Xa(Ha,Na),Tb(Ha,Ca)).tooltip(ia);if(!T||Wa)Ha.toBack(),ua&&ua.toBack();la._xPos=Ra;la._yPos=Sb;la._height=Nb;la._width=Kb}ra&&b.drawLabel();m.drawSumValueFlag&&vb&&m.drawSumValueFlag&&
+m.drawSumValue()}},"Bar2D"]);FusionCharts.register("groupManagerType",["ColumnGroupManager",{init:function(a){this.chart=a;this.positionStackArr=[];this.stackSumValue=[];this.sumValues=[];this.stackConfig=[];this.drawSumValueFlag=!0;this.graphics={sumLabels:[],sumLabelContainer:[]}},addDataSet:function(a,b,c){var d=this.positionStackArr[b];a.groupManager=this;a.positionIndex=b;a.stackIndex=c;d||(d=this.positionStackArr[b]=[]);d[c]={dataSet:a}},removeDataSet:function(){},draw:function(){var a=this.positionStackArr,
+b=a.length,c,d,e,g;this.preDrawCalculate();this.drawSumValueFlag=!0;for(c=0;c<b;c++)for(d=a[c],e=d.length,this.manageClip=!0,d=0;d<e;d++)g=a[c][d].dataSet,g.draw()},getDataSetPosition:function(a){var b=this.numVisiblePositions,c=this.stackConfig[a.positionIndex||0],d;if(!a.visible&&c.visible||0===b)d=0;return{xPosOffset:c.xPosOffset,columnWidth:c.columnWidth,height:d}},preDrawCalculate:function(){var a=this.chart,b=a.logic,c=this.stackConfig,d=this.stackSumValue,e=this.positionStackArr,g=this.sumValues,
+k=!1,l=b.isStacked,m=e.length,p,q,r,t,u,v,H,A,E,F,G,J,O,M,L,R=a.numberFormatter,z,C=b.isBar,P=b.dataObj.chart,a=a.xAxis[0],N=D(C?P.overlapbars:P.overlapcolumns,b.is3D?0:1),b=a.getAxisPosition(0),h=a.getAxisPosition(1)-b,W=D(P.plotspacepercent),T=D(P.plotpaddingpercent),b=D(P.plotspacepercent,20)%100,S=b/200,ha=!0;for(H=this.numVisiblePositions=0;H<m;H++){A=e[H].length;L=c[H]||(c[H]={});L.visible=!1;L.previousVisibleCount=this.numVisiblePositions;for(z=0;z<A;z++)if((t=e[H][z])&&!1!==t.dataSet.visible&&
+(L.visible=!0),l){v=e[H][z+1];E=z;for(k=!1;0<=E&&!k;)k=(p=e[H][--E])&&p.dataSet.visible;u=t&&t.dataSet.JSONData.data;M=v&&v.dataSet.JSONData.data;F=t.dataSet.components.data;G=p&&p.dataSet.components.data;F||(F=t.dataSet.components.data=[]);J=u&&u.length;for(v=0;v<J;v++){(O=F[v])||(O=F[v]={config:{}});q=G&&G[v];if(!q)for(;0<=E&&!q;)if(k=(p=e[H][--E])&&p.dataSet.visible)q=(G=p&&p.dataSet.components.data)&&G[v];O=O.config;O.value=k=R.getCleanValue(u[v].value);r=q&&q.config;q=(r&&r.previousPositiveY||
+0)+(r&&(0<r.value?r.value:0)||0);r=(r&&r.previousNegativeY||0)+(r&&(0>r.value?r.value:0)||0);O.previousPositiveY=q;O.previousNegativeY=r;M&&M[v]||(d[H]||(d[H]=[]),d[H][v]=q+(t.dataSet.visible&&zb(k))+zb(r),!d[H][v]&&(d[H][v]=1),g&&(g[H]||(g[H]=[]),g[H][v]={},g[H][v].positive=q+(0<=k?t.dataSet.visible&&k:0),g[H][v].negative=r+(0>k?t.dataSet.visible&&k:0)))}}L.visible&&(this.numVisiblePositions+=1)}c=this.numVisiblePositions;H=D(C?P.maxbarheight:P.maxcolwidth,50);C=(1-.01*W)*h||Cb(h*(1-2*S),H*(c||1));
+P=C/2;d=0===c?C:C/c;N=Cb(d-1,1<c?N||T!==qb?0<T?d*T/100:0:4:0);for(H=0;H<m;H++)e=this.stackConfig[H],T=e.previousVisibleCount,e.xPosOffset=T*d-P+N/2,d-=N,e.columnWidth=e.visible||0===c?d:0,d+=N;m=a.getAxisPosition(0)-P;4>a.getAxisPosition(1)-P-(m+C)&&(ha=!1);"0"==b&&(ha=!0);this.isCrisp=ha},drawSumValue:function(){var a=this.chart,b=a.paper,c=a.logic,d=this.positionStackArr,e=this.stackConfig,g,k=a.layers.datalabels,l,m=a.canvasTop,p=a.canvasBottom,q=a.canvasLeft,r=a.canvasWidth,t,u=c.isBar,v=a.options.chart,
+H=v.xDepth,v=v.yDepth,A=c.is3D,E=a.xAxis[0],F=a.yAxis[0];g=c.isStacked;var G,J,O,M,L,R=a.numberFormatter,z,C,P,N,h,W,T,S,ha,V,aa,Y,ba=!1,da,Q;G=D(d[0][0].dataSet.fcJSON.chart.showsum,0);this.drawSumValueFlag=!1;if(G&&g)for(C=0;C<d.length;C++){(g=this.graphics.sumLabelContainer[C])||(g=this.graphics.sumLabelContainer[C]=this.graphics.sumLabelContainer[C]||b.group("sumlabels",k));P=d[C][0].dataSet;da=P.conf.transposeAnimDuration;Q=P.conf.transposeAnimation;G=this.sumValues[C];l=P&&P.fcJSON.categories&&
+P.fcJSON.categories[0].category&&P.fcJSON.categories[0].category.length;T=Cb(l,G&&G.length);N=this.graphics.sumLabels[C]=this.graphics.sumLabels[C]||[];S=0;e[C].visible||(ba=!0);for(W=0;W<T;W++)if(t=D(c.stack100percent,P.fcJSON.chart.stack100percent,0),J=P.fcJSON.labelStyle,l=D(P.fcJSON.chart.rotatevalues,0)?270:0,g.show(),V=G[W].positive,aa=G[W].negative,O=V+aa,L=R.dataLabels(O,0),u?(Y=zb(aa)>V?aa:V,M=E.getAxisPosition(W)+e[C].xPosOffset,h=e[C].columnWidth,O=F.getAxisPosition(t?100:Y),M+=.5*h,V===
+aa&&(L=""),l=0):(ha=zb(aa)>V?aa:V,O=E.getAxisPosition(W)+e[C].xPosOffset,h=e[C].columnWidth,M=F.getAxisPosition(t?100:ha),O+=.5*h,V===aa&&(L="")),L||""===L)""===L?V=aa="rgba(255,255,255,0)":(V=J.backgroundColor,aa=J.borderColor),J={text:L,"class":"fusioncharts-label",fill:J.color,"text-bound":[V,aa,J.borderThickness,J.borderPadding,J.borderRadius,J.borderDash],"font-weight":J.fontWeight,"font-style":J.fontStyle,"font-family":J.fontFamily,"font-size":J.fontSize,"line-height":J.lineHeight,visibility:"visible"},
+N[S]?N[S].attr(J):N[S]=b.text(J,g),N[S]._state&&N[S]._state.labelWidth||(J=N[S].getBBox(),N[S]._state=l?{labelWidth:J.height,labelHeight:J.width}:{labelWidth:J.width,labelHeight:J.height}),u?(J=L=N[S]._state.labelWidth,J=J/2+2,t?(t=a.chartWidth-a.canvasRight,O=t<=z?O+J:a.canvasRight,N[S].attr({"text-anchor":"start"})):0<=Y?(t=q+r-O,t<L?(O=O-J+t,A&&(O-=H,M+=v)):O+=J):(t=O-q,t<L?(O=O+J-t,O-=A?H:0,M+=A?v:0):(O-=J,A&&(O-=H,M+=v)))):(J=z=N[S]._state.labelHeight,J=J/2+2,t?M=m<=z?J:m-J:(0<=ha&&(t=M-m,M=
+t<z?M+J-t:M-J),0>ha&&(t=p-M,M=t<z?M-J:M+J,A&&(O-=H,M+=v)))),0===N[S].attrs.x&&0===N[S].attrs.y?(N[S].attr({x:O,y:M}),l&&N[S].attr("transform","T0,0,R"+l)):(J={x:O,y:M},Q?(J.transform=l&&"T0,0,R"+l,N[S].animate(J,da,"normal")):(N[S].attr(J),l&&N[S].attr("transform","T0,0,R"+l))),S++;ba&&(g.hide(),ba=!1)}},dispose:function(){m(this)}}]);E("renderer.newareacartesian",{drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,e=a.layers,g=a.options,k=a.elements,l=g.chart,g=a.datasets=
+g.series,m=ia(l.rendererId,l.defaultSeriesType),p=e.background,p=e.dataset=e.dataset||b.group("dataset").insertAfter(p),q,r,t,D=FusionCharts.register("dataSetType",["area"]),v=g.length;t=FusionCharts.register("groupManagerType",["AreagroupManager"]);var u=d.chartInstance.jsVars._reflowData;r=u.dataObj||(u.dataObj={});var u=function(a,b){return function(e){var f=c[a],g,k={hcJSON:{series:[]}},l=k.hcJSON.series[a]||(k.hcJSON.series[a]={}),m=d.chartInstance.jsVars._reflowData;g=(e=ia(e,!f.visible))?"visible":
+"hidden";Ba(f.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});f.visible=e;b.visible=e;l.visible=e;aa(m,k,!0)}},A=function(a){return function(b){var d=c[a],e=d.legend,f=e&&e.elements,g=f&&f.legendItemText,k=f&&f.legendItemSymbol,f=f&&f.legendItemLine,l=e&&e.hiddenColor,m=e&&e.itemLineColor,p=e&&e.itemTextColor,h=e&&e.symbolColor,e=e&&e.symbolStroke;H(b,!d.visible)?(k&&k.attr({fill:h||m,stroke:e}),g&&g.attr({fill:p}),f&&f.attr({stroke:m})):(k&&k.attr({fill:l,stroke:l}),
+g&&g.attr({fill:l}),f&&f.attr({stroke:l}));c[a].visible?c[a].hide():c[a].show()}},E=function(b){return function(){return a.getEventArgs&&a.getEventArgs(c[b])}},J=function(b,d,e){return function(g,k){d.call(a,c[b],e,{numUpdate:g,hasAxisChanged:k})}};(r.chart||(r.chart={})).animation=0;e.tracker=e.tracker||b.group("hot").insertAfter(p);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],k.plots=c);a.parseCategory();k=new t(a);k.init(a);for(e=0;e<v;e++)b=g[e]||{},q=b.updatePlot="updatePlot"+sa(H(b.type,
+b.plotType,m)),t=a[q],q=b.drawPlot="drawPlot"+sa(H(b.type,b.plotType,m)),r=a[q]||a.drawPlot,(q=c[e])||(c.push(q=new D),q.init(a,e),q.index=e,q.items=[],q.data=b.data||[],q.name=b.name,q.userID=b.userID,q.setVisible=u(e,b),q.legendClick=A(e),q.getEventArgs=E(e),q.realtimeUpdate=J(e,t||r,b),b.plot=q,b.legendClick=q.legendClick,b.getEventArgs=q.getEventArgs,b.setVisible=q.setVisible),e&&g[e-1]&&(b.previousData=g[e-1].data),q.setContainer(p),k.addDataSet(q,e);q.JSONData&&k.draw();l.hasScroll&&(a.drawScroller(),
+a.finalizeScrollPlots())}},E["renderer.newcartesian"]);FusionCharts.register("groupManagerType",["AreagroupManager",{addDataSet:function(a,b){var c=this.positionStackArr[0];a.groupManager=this;a.stackIndex=b;c||(c=this.positionStackArr[0]=[]);c[b]={dataSet:a}},removeDataSet:function(){},draw:function(){var a=this.chart,b=this.positionStackArr,c,d=b[0].length;c=a.layers.dataset;a=a.paper;c.area=c.area||a.group("area",c);c.areaConnector=c.areaConnector||a.group("area-connector",c);this.preDrawCalculate();
+for(c=0;c<d;c++)a=b[0][c].dataSet,a.JSONData&&a.JSONData.data&&a.draw()}},"ColumnGroupManager"]);FusionCharts.register("dataSetType",["area",{configure:function(){var b=this.chart,c=a.parseUnsafeString,d=this.conf,e=this.JSONData,g=this.fcJSON,k=g.chart,l=b.logic.colorManager,m=this.index||this.datasetIndex,p=this.plotType,q=D(e.showplotborder,k.showplotborder||1),r=l.getPlotColor(m),m=e.data,t,g=g.categories&&g.categories[0].category,v=Cb(g&&g.length,m&&m.length),u=b.logic.areaAlpha,A=b.numberFormatter,
+E=b.logic,J=E.use3dlineshift,F,G,O,b=c(k.yaxisname),L=c(k.xaxisname),R=H(k.tooltipsepchar,", "),M=D(e.dashed,k.linedashed);t=E.isStacked;F=this.isLineSet;var W=E.chartInstance.jsVars._reflowData,W=W.dataObj||(W.dataObj={}),W=W.chart||(W.chart={});d.use3dlineshift=void 0!==J?D(k.use3dlineshift,J):1;d.plotColor=r;E=D(E.defaultPlotShadow,l.getColor("showShadow"));d.drawFullAreaBorder=D(k.drawfullareaborder,1);d.parentYAxis=F?O=1:O="s"===H(e.parentyaxis&&e.parentyaxis.toLowerCase(),"p")?1:0;d.connectNullData=
+D(k.connectnulldata,0);d.enableAnimation=F=D(k.animation,k.defaultanimation,1);d.animation=F?{duration:1E3*D(k.animationduration,1)}:!1;W.transposeAnimation=d.transposeanimation=D(k.transposeanimation,W.transposeAnimation,F);d.transposeanimduration=1E3*D(k.transposeanimduration,.2);d.showValues=D(e.showvalues,k.showvalues,1);d.valuePadding=D(k.valuepadding,2);d.valuePosition=H(e.valueposition,k.valueposition,"auto");d.stack100Percent=F=D(k.stack100percent,0);d.showPercentValues=D(k.showpercentvalues,
+t&&F?1:0);d.showPercentInToolTip=D(k.showpercentintooltip,t&&F?1:0);d.showTooltip=D(k.showtooltip,1);d.seriesNameInTooltip=D(k.seriesnameintooltip,1);d.plotFillColor=H(e.color,k.plotfillcolor,r);d.plotFillAngle=H(k.plotfillangle,270);d.plotFillAlpha=H(e.alpha,k.plotfillalpha,u,"70");r=D(k.useplotgradientcolor,1);d.plotGradientColor=0!==r?a.getDefinedColor(k.plotgradientcolor,l.getColor("plotGradientColor")):"";d.fillColor={color:d.plotFillColor+(d.plotGradientColor?","+d.plotGradientColor:""),alpha:d.plotFillAlpha,
+angle:d.plotFillAngle};d.plotBorderAlpha=q?H(e.plotborderalpha,k.plotborderalpha,e.alpha,"95"):0;d.plotBorderColor=H(e.plotbordercolor,k.plotbordercolor,k.areabordercolor,"666666");d.dashed=q=D(e.dashed,k.plotborderdashed);d.plotBorderDashLen=H(e.plotborderdashlen,k.plotborderdashlen,5);d.plotBorderDashGap=H(e.plotborderdashgap,k.plotborderdashgap,4);d.plotBorderThickness=D(e.plotborderthickness,k.plotborderthickness,1);d.plotBorderDashStyle=q?a.getDashStyle(d.plotBorderDashLen,d.plotBorderDashGap,
+d.plotBorderThickness):"none";d.showHoverEffect=D(k.plothovereffect,k.anchorhovereffect,k.showhovereffect,qb);d.rotateValues=D(k.rotatevalues)?270:0;d.lineThickness=D(e.linethickness,k.linethickness,2);d.lineDashLen=D(e.linedashlen,k.linedashlen,5);d.lineDashGap=D(e.linedashgap,k.linedashgap,4);d.lineAlpha=D(e.alpha,k.linealpha,ha);d.lineColor=H(e.color,k.linecolor,d.plotColor);q=a.getDashStyle(d.lineDashLen,d.lineDashGap,d.lineThickness);d.lineDashStyle=M?q:"none";d.shadow={opacity:D(k.showshadow,
+E)?"line"===p?d.lineAlpha/100:d.plotBorderAlpha/100:0};d.drawAnchors=D(e.drawanchors,e.showanchors,k.drawanchors,k.showanchors);d.anchorBgColor=H(e.anchorbgcolor,k.anchorbgcolor,l.getColor("anchorBgColor"));d.anchorBorderColor=H(e.color,e.anchorbordercolor,k.anchorbordercolor,d.plotColor);d.anchorRadius=D(e.anchorradius,k.anchorradius,3);d.anchorAlpha=H(e.alpha,e.anchoralpha,k.anchoralpha);d.anchorBgAlpha=H(e.anchorbgalpha,k.anchorbgalpha,100);d.anchorBorderThickness=H(e.anchorborderthickness,k.anchorborderthickness,
+1);d.anchorSides=H(e.anchorsides,k.anchorsides,0);d.anchorImageUrl=H(e.anchorimageurl,k.anchorimageurl);d.anchorImageAlpha=D(e.anchorimagealpha,k.anchorimagealpha,100);d.anchorImageScale=D(e.anchorimagescale,k.anchorimagescale,100);d.anchorImagePadding=D(e.anchorimagepadding,k.anchorimagepadding,1);d.anchorStartAngle=D(e.anchorstartangle,k.anchorstartangle,90);d.anchorShadow=D(e.anchorshadow,k.anchorshadow,0);p=this.components.data=[];for(u=0;u<v;u++)t=m[u],l=p[u]={},l.config={},r=l.config,r.setValue=
+F=A.getCleanValue(t.value),r.setLink=H(t.link),r.anchorProps=this._parseAnchorProperties(u),r.label=a.getValidValue(c(H(g[u].tooltext,g[u].label))),r.showValue=D(t.showvalue,d.showValues),r.dashed=D(t.dashed,M),r.color=H(t.color,d.lineColor),r.alpha=H(t.alpha,d.lineAlpha),r.dashStyle=r.dashed?q:"none",r.toolTipValue=E=A.dataLabels(F,O),r.setDisplayValue=J=c(t.displayvalue),r.displayValue=H(J,E),r.formatedVal=H(t.toolTipValue,A.dataLabels(F,O)),r.setTooltext=a.getValidValue(c(H(t.tooltext,e.plottooltext,
+k.plottooltext))),d.showTooltip?void 0!==r.setTooltext?(E=[1,2,3,4,5,6,7],F={yaxisName:b,xaxisName:L,formattedValue:void 0,label:r.label},t=a.parseTooltext(r.setTooltext,E,F,t,k,e)):(d.seriesNameInTooltip&&(G=a.getFirstValue(e&&e.seriesname)),t=G?G+R:"",t+=r.label?r.label+R:""):t=!1,r.toolText=t,r.setTooltext=t,l?l.graphics||(p[u].graphics={}):l=p[u]={graphics:{}},r.hoverEffects=this._parseHoverEffectOptions(l),r.anchorProps.isAnchorHoverRadius=r.hoverEffects.anchorRadius},init:function(a,b){var c=
+(this.fcJSON=a.logic.dataObj).dataset,d;if(!c||!c[b])return!1;d=a.logic.isDual?a.yAxis[this.yAxis||0]:a.yAxis[0];this.chart=a;this.datasetIndex=b;this.yAxis=d;this.components={};this.conf={};this.graphics={};this.plotType="area";this.JSONData=c[b];this.visible=1===D(this.JSONData.visible,!Number(this.JSONData.initiallyhidden),1);this.configure()},draw:function(){var c=this,d=this.chart.logic,e,k=c.JSONData,l=c.fcJSON,m=l.chart,p=c.conf,q=d.isStacked,r=c.groupManager.stackSumValue[0],t=c.datasetIndex,
+D=l.categories&&l.categories[0].category,u=k.data,v=D&&D.length,A=u.length,E=l.labelStyle,F,J,G,O=c.chart,l=O.paper,L=O.xAxis[0],W=c.yAxis,S,M=p.animation.duration,T,ha=O.layers,z=p.showTooltip,C,P=c.components.data,N,h,V,U=p.connectNullData,aa,Y;e={fontFamily:E.fontFamily,fontSize:E.fontSize,lineHeight:E.lineHeight,fontWeight:E.fontWeight,fontStyle:E.fontStyle,color:E.color};var E=ha.dataset,ba=W.max,da=W.min,ca=0>=ba&&0>da?ba:0<ba&&0<=da?da:0,ga,ka,ba=p.plotBorderColor,da=p.plotBorderAlpha,Q=p.plotBorderDashStyle,
+fa=p.plotBorderThickness,ja=c.graphics.container,ia=c.graphics.trackerContainer;G=ha.tracker;var na=[],la=[],oa,sa=a.parseUnsafeString,ua=!1,va=[],Ha=[],wa=p.fillColor,Ba=d.is3D,d=p.transposeanimation,Da=p.transposeanimduration,Ia=function(){!1!==c.visible||!1!==c._conatinerHidden&&void 0!==c._conatinerHidden||(ja.areaGroup.hide(),Pa.hide(),ja.lineShadowGroup.hide(),ja.anchorShadowGroup.hide(),ja.anchorGroup.hide(),ia.hide(),Fa&&Fa.hide(),c._conatinerHidden=!0)},Ga=O.getAnimationCompleteFn(),Ca=function(){ja.areaGroup.attr({"clip-rect":null});
+ja.lineShadowGroup.show();ja.anchorShadowGroup.show();ja.anchorGroup.show();Fa.show();Ga()},Qa=p.shadow,Na,Sa=c.visible,bb=function(a){ma.call(this,O,a)},fb=function(a,b){return function(d){b&&c._hoverPlotAnchor(a,"DataPlotRollOver",m);ma.call(this,O,d,"DataPlotRollOver")}},jb=function(a,b){return function(d){b&&c._hoverPlotAnchor(a,"DataPlotRollOut",m);ma.call(this,O,d,"DataPlotRollOut")}},cb=0,Pa=ja&&ja.shadowContainer,Ma={},Ma=ha.datalabels,Fa=c.graphics.dataLabelContainer,ha=L.getAxisPosition(0);
+N=L.getAxisPosition(1)-ha;var mb=L.axisData.scroll||{},ib=O.elements,nb=O.options.chart.hasScroll||!1,ha=ib["clip-canvas-init"].slice(0),ib=ib["clip-canvas"].slice(0),eb=Ba?10:0,Ba=Ba?10:0,qb=!p.drawFullAreaBorder,rb=c.graphics.connector;ja||(ja=c.graphics.container={lineShadowGroup:l.group("connector-shadow",E.areaConnector),anchorShadowGroup:l.group("anchor-shadow",E.areaConnector),areaGroup:l.group("area",E.area),anchorGroup:l.group("anchors",E.areaConnector)},Sa||(ja.lineShadowGroup.hide(),ja.anchorShadowGroup.hide(),
+ja.areaGroup.hide(),ja.anchorGroup.hide()));Pa||(Pa=c.graphics.shadowContainer=E.shadows||(E.shadows=l.group("shadows",ja.areaGroup).toBack()),Sa||Pa.hide());ia||(ia=c.graphics.trackerContainer=l.group("area-hot"),Sa||ia.hide());P||(P=c.components.data);G&&G.appendChild(ia);Fa||(Fa=c.graphics.dataLabelContainer=c.graphics.dataLabelContainer||l.group("datalabel",Ma),Sa||Fa.hide());O.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",e);v=Cb(v,A);A=N*v;c.graphics.lineElement||(oa=c.graphics.lineElement=
+l.path(ja.areaGroup));for(G=0;G<v;G++)F=u[G],C=(N=P[G])&&N.config,e=C.showValue,V=C.setValue,J=C.setLink,Ma=C.anchorProps,h=Ma.shadow,S=ob(sa(H(F.tooltext,k.plottooltext,m.plottooltext))),C&&(ga=0<=V?C.previousPositiveY:C.previousNegativeY),q&&V&&(ga=c._parseValues(G,ga,r[G],S),V=C.value),null===V?U||(0<cb&&(la.push("Z"),na=na.concat(la),la=[]),va=[],Ha=[],ua=!1):(ka=W.getAxisPosition(ga||ca)+Ba,T=c.visible?W.getAxisPosition(V+(ga||0))+Ba:ka,F=L.getAxisPosition(G)-eb,Na=C.hoverEffects,S=C.toolText+
+(S?"":C.toolTipValue),V={index:G,link:J,value:V,displayValue:C.displayValue,categoryLabel:D[G].label,toolText:S,id:c.userID,datasetIndex:t,datasetName:k.seriesname,visible:Sa},Na.enabled&&(C.setRolloverAttr={polypath:[Na.anchorSides||2,F,T,Na.anchorRadius,Na.startAngle,Na.dip],fill:R({color:Na.anchorColor,alpha:Na.anchorBgAlpha}),stroke:R({color:Na.anchorBorderColor,alpha:Na.anchorBorderAlpha}),"stroke-width":Na.anchorBorderThickness},C.setRolloutAttr={polypath:[Ma.symbol[1]||2,F,T,Ma.radius,Ma.startAngle,
+0],fill:R({color:Ma.bgColor,alpha:Ma.bgAlpha}),stroke:R({color:Ma.borderColor,alpha:Ma.borderAlpha}),"stroke-width":Ma.borderThickness},Y=C.setRolloverAttr,aa=C.setRolloutAttr),Ma.imageUrl?(h=new b,J={isTooltip:z,setLink:J,hotLayer:ia,groupId:void 0,clickFunc:bb},h.onload=c._onAnchorImageLoad(O,c,p,F,T,Ma,N,V,S,Na.enabled?Na:!1,G,ja.anchorGroup,J),h.onerror=c._onErrorSetter(F,T,G,c),h.src=Ma.imageUrl):((C=N.graphics.element)?d?C.animate({polypath:[Ma.symbol[1]||2,F,T,Ma.radius,90,0]},Da,"normal"):
+C.attr({polypath:[Ma.symbol[1]||2,F,T,Ma.radius,90,0]}):C=N.graphics.element=l.polypath(Ma.symbol[1]||2,F,T,Ma.radius,Ma.startAngle,0,ja.anchorGroup).attr({fill:R({color:Ma.bgColor,alpha:Ma.bgAlpha}),stroke:R({color:Ma.borderColor,alpha:Ma.borderAlpha}),"stroke-width":Ma.borderThickness,visibility:Ma.radius?Sa:"hidden"}).shadow(h,ja.anchorShadowGroup).data("anchorRadius",Ma.radius).data("anchorHoverRadius",Na.anchorRadius).data("setRolloverAttr",Y).data("setRolloutAttr",aa),Na.enabled&&C&&C.data("anchorRadius",
+Ma.radius).data("anchorHoverRadius",Na.anchorRadius).data("setRolloverAttr",Y).data("setRolloutAttr",aa),h=Oa(Ma.radius,Na&&!q&&Na.anchorRadius||0),J={cx:F,cy:T,r:h,cursor:J?"pointer":"",stroke:g,"stroke-width":Ma.borderThickness,fill:g,ishot:!0,visibility:"visible"},(h=N.graphics.hotElement)?h.attr(J):h=N.graphics.hotElement=l.circle(J,ia),(h||C).data("eventArgs",V).data("groupId",void 0).click(bb).tooltip(S).hover(fb(N,Na.enabled),jb(N,Na.enabled))),N._xPos=F,N._yPos=T,ua?(va.length&&(na=na.concat(va),
+la=Ha,Ha=[],va=[],cb++),na.push(F,",",T),la.splice(0,0,F,",",ka)):(cb=0,va.push("M",F,",",T,"L"),Ha.push(F,",",ka),ua=!0)),e&&!Ma.imageUrl&&this.drawLabel(G);"Z"!==la[la.length-1]&&0<cb&&la.push("Z");nb&&(k=mb.startPercent,ib[2]=A+ha[0],1===k&&(ha[0]=ib[2],ib[0]=0));ib[3]+=Ba;oa?(oa.attr({path:na.concat(la),stroke:R({color:ba,alpha:da}),"stroke-width":qb?0:fa,fill:R(wa),"stroke-linecap":"round","stroke-linejoin":2<fa?"round":"miter","stroke-dasharray":Q}).shadow(Qa,Pa),M&&Sa&&(ja.anchorGroup.hide(),
+ja.anchorShadowGroup.hide(),Fa.hide(),E.area.attr({"clip-rect":ha}).animate({"clip-rect":ib},M,"normal",Ca))):c.graphics.lineElement&&(d?c.graphics.lineElement.animate({path:na.concat(la)},Da,"normal",Ia):(c.graphics.lineElement.attr({path:na.concat(la)}),Ia()));qb&&(rb?d?rb.animate({path:na},Da,"normal"):rb.attr({path:na}):rb=c.graphics.connector=l.path({path:na,stroke:R({color:ba,alpha:da}),"stroke-width":fa,"stroke-linecap":"round","stroke-linejoin":2<fa?"round":"miter","stroke-dasharray":Q},ja.areaGroup))},
+_parseAnchorProperties:function(b){var c=this.conf,d="area"===this.plotType?0:1,e=this.JSONData,g=this.fcJSON.chart;b=e.data[b];var k={},l=a.graphics.mapSymbolName,e=H(b.anchorstartangle,e.anchorstartangle,g.anchorstartangle,b.anchorimagealpha,e.anchorimagealpha,g.anchorimagealpha,b.anchorimagescale,e.anchorimagescale,g.anchorimagescale,b.anchorimagepadding,e.anchorimagepadding,g.anchorimagepadding,b.anchorimageurl,e.anchorimageurl,g.anchorimageurl,b.anchorradius,e.anchorradius,g.anchorradius,b.anchorbgcolor,
+e.anchorbgcolor,g.anchorbgcolor,b.anchorbordercolor,e.anchorbordercolor,g.anchorbordercolor,b.anchoralpha,e.anchoralpha,g.anchoralpha,b.anchorsides,e.anchorsides,g.anchorsides,b.anchorborderthickness,e.anchorborderthickness,g.anchorborderthickness,qb)!==qb,g=D(b.drawanchors,c.drawAnchors);k.enabled=e?D(g,e):D(g,d);k.startAngle=D(b.anchorstartangle,c.anchorStartAngle);k.imageAlpha=D(b.anchorimagealpha,c.anchorImageAlpha);k.imageScale=D(b.anchorimagescale,c.anchorImageScale);k.imagePadding=D(b.anchorimagepadding,
+c.anchorImagePadding);0>k.imagePadding&&(k.imagePadding=0);k.imageUrl=H(b.anchorimageurl,c.anchorImageUrl);k.radius=D(b.anchorradius,c.anchorRadius);k.isAnchorRadius=k.radius;k.bgColor=H(b.anchorbgcolor,c.anchorBgColor);d=k.enabled?O(H(b.anchoralpha,c.anchorAlpha,k.enabled?ha:"0")):0;k.bgAlpha=O(H(b.anchorbgalpha,c.anchorBgAlpha,d))*d/100;k.borderColor=H(b.anchorbordercolor,c.anchorBorderColor);k.borderAlpha=d;k.sides=H(b.anchorsides,c.anchorSides);k.borderThickness=H(b.anchorborderthickness,c.anchorBorderThickness);
+k.symbol=l(k.sides).split("_");k.shadow=D(b.anchorshadow,c.anchorShadow)&&1<=k.radius?{opacity:d/100}:!1;return k},_onErrorSetter:function(a,b,c,d){return function(){d.components.data[c].config.showValue&&d.drawLabel(c,a,b)}},_onAnchorImageLoad:function(a,b,c,d,e,k,l,m,p,q,t,D,u){return function(){var v=a.paper,H=b.chart,A=b.fcJSON.chart,E=b.components.data[t],F=E.graphics,J=!1===c.visible?"hidden":"visible",G=b.conf.transposeanimation,O=b.conf.transposeanimduration,L=b.graphics.anchorShadowGroup,
+M=k.imageUrl,E=E.config.showValue,W=k.imageScale,S=k.imageAlpha,z=q.imageHoverAlpha,C=q.imageHoverScale,P=this.height*W*.01,N=this.width*W*.01,h=this.width*C*.01,T=this.height*C*.01,U=u.isTooltip,ha=u.setLink,V=u.hotLayer,aa=u.groupId||"",Y=u.clickFunc,ba=function(a){return function(c){q&&b._hoverPlotAnchor(a,"DataPlotRollOver",A);ma.call(this,H,c,"DataPlotRollOver")}},da=function(a){return function(c){q&&b._hoverPlotAnchor(a,"DataPlotRollOut",A);ma.call(this,H,c,"DataPlotRollOut")}},ga,Q,ca,ka,fa,
+ja,na,ia,la,oa=function(a){var b=a.length,c="",d;for(d=0;d<b;d+=1)c+=" "+a[d];return c};if(r){if(ja={x:d-this.width*W*.005,y:e-this.height*W*.005,width:N,height:P,alpha:S},la={x:d-this.width*C*.005,y:e-this.height*C*.005,width:h,height:this.height*C*.01,alpha:z},P=h>N?la:ja,(z=F.image)&&"image"===z.type?G?z.animate(ja,O,"normal"):z.attr(ja):(F.image=z=v.image(M,D),z.attr(ja).css({opacity:.01*S}).data("alwaysInvisible",!W).data("setRolloverProperties",q).data("setRolloverAttr",la).data("setRolloutAttr",
+ja).data("anchorRadius",W).data("anchorHoverRadius",C)),ha||U||q)ga=F.hotElem?F.hotElem:F.hotElem=v.rect(V),ga.attr(P).attr({cursor:ha?"pointer":"",stroke:g,"stroke-width":k.borderThickness,fill:g,ishot:!0,visibility:J}).data("eventArgs",m).data("groupId",aa).click(Y).hover(ba(l),da(l)).tooltip(p)}else{Q=k.symbol[1];fa=k.isAnchorHoverRadius;ca=k.isAnchorRadius;ca=k.radius=ca?k.radius:Cb(N,P)/2;ka=k.shadow;ja=k.imagePadding;q.radius=fa?q.anchorRadius:ca+1;fa=q.radius-ja-.5*q.anchorBorderThickness;
+na=ca-ja-.5*k.borderThickness;la=ja={};ja={polypath:[Q||2,d,e,ca,k.startAngle,void 0],fill:R({color:k.bgColor,alpha:k.bgAlpha}),"stroke-width":k.borderThickness,stroke:R({color:k.borderColor,alpha:k.borderAlpha})};q&&(la={polypath:[q.anchorSides||2,d,e,q.anchorRadius,q.startAngle,q.dip],fill:R({color:q.anchorColor,alpha:q.anchorBgAlpha}),"stroke-width":q.anchorBorderThickness,stroke:R({color:q.anchorBorderColor,alpha:q.anchorBorderAlpha})},ia=Oa(q.anchorAlpha,q.anchorBorderAlpha),z>ia&&(z=ia));k.bgAlpha&&
+k.borderAlpha&&(ia=Oa(k.bgAlpha,k.borderAlpha),S>ia&&(S=ia));(ia=F.element)&&"path"===ia.type?G?ia.animate(ja,O,"normal"):ia.attr(ja):(ia=F.element=v.polypath(Q||2,d,e,ca,k.startAngle,void 0,D),ia.attr({fill:R({color:k.bgColor,alpha:k.bgAlpha}),ishot:!U,"stroke-width":k.borderThickness,stroke:R({color:k.borderColor,alpha:k.borderAlpha}),cursor:ha?"pointer":"",visibility:ca?J:"hidden"}).data("alwaysInvisible",!ca).data("setRolloverProperties",q).data("setRolloverAttr",la).data("setRolloutAttr",ja).data("anchorRadius",
+ca).data("anchorHoverRadius",q&&q.radius).shadow(ka,L));L=v.polypath(Q||2,d,e,0<na?na:0,k.startAngle,void 0,D).attr({visibility:"hidden"});ja=oa(L.attrs.path);L.remove();L=v.polypath(Q||2,d,e,0<fa?fa:0,q.startAngle,q.dip,D).attr({visibility:"hidden"});Q=oa(L.attrs.path);L.remove();ja={x:d-this.width*W*.005,y:e-this.height*W*.005,width:N,height:P,alpha:S,"clip-path":ja};la={x:d-this.width*C*.005,y:e-this.height*C*.005,width:h,height:T,alpha:z,"clip-path":Q};(z=F.image)&&"image"===z.type?G?z.animate(ja,
+O,"normal"):z.attr(ja):(F.image=z=v.image(M,D).attr({visibility:ca?J:"hidden"}).css({opacity:.01*S}).data("alwaysInvisible",!W).data("setRolloverProperties",q).data("setRolloverAttr",la).data("setRolloutAttr",ja).data("anchorRadius",W).data("anchorHoverRadius",C),z.attr(ja));if(ha||U||q)ca=Oa(ca,q&&q.anchorRadius||0,2),ga=F.hotElem&&"circle"===F.hotElem.type?F.hotElem.attr({cx:d,cy:e,r:ca}):F.hotElem=v.circle({cx:d,cy:e,r:ca},V),ga.attr({cursor:ha?"pointer":"",stroke:g,"stroke-width":k.borderThickness,
+fill:g,ishot:!0,visibility:J});(ga||z).data("eventArgs",m).data("groupId",aa).click(Y).hover(ba(l),da(l)).tooltip(p)}E&&b.drawLabel(t,d,e)}},show:function(){var a=this.graphics&&this.graphics.container,b=this.graphics&&this.graphics.trackerContainer,c=this.graphics&&this.graphics.dataLabelContainer,d=this.graphics&&this.graphics.shadowContainer,e=this.groupManager,g=this.datasetIndex,k=this.chart.logic.chartInstance.jsVars._reflowData,k=k.dataObj||(k.dataObj={}),k=k.dataset||(k.dataset=[]),g=k[g]||
+(k[g]={});this._conatinerHidden=!1;a.areaGroup.show();d.show();a.lineShadowGroup.show();a.anchorShadowGroup.show();a.anchorGroup.show();b.show();c.show();this.visible=!0;g.visible=1;e.draw()},hide:function(){var a=this.groupManager,b=this.datasetIndex,c=this.chart.logic.chartInstance.jsVars._reflowData,c=c.dataObj||(c.dataObj={}),c=c.dataset||(c.dataset=[]),b=c[b]||(c[b]={});this.visible=!1;b.visible=0;a.draw()},_parseHoverEffectOptions:function(a){var b=this.JSONData,c=this.fcJSON.chart,d=this.conf,
+e=a.config.anchorProps,g={enabled:!1};0!==d.showHoverEffect&&(g.enabled=H(a.hovercolor,a.anchorhovercolor,a.anchorbghovercolor,b.anchorbghovercolor,c.anchorbghovercolor,a.hoveralpha,a.anchorhoveralpha,b.anchorhoveralpha,c.anchorhoveralpha,a.bghoveralpha,a.anchorbghoveralpha,b.anchorbghoveralpha,c.anchorbghoveralpha,a.anchorborderhovercolor,a.borderhovercolor,b.anchorborderhovercolor,c.anchorborderhovercolor,a.anchorborderhoverthickness,a.borderhoverthickness,b.anchorborderhoverthickness,c.anchorborderhoverthickness,
+a.anchorborderhoveralpha,a.borderhoveralpha,b.anchorborderhoveralpha,c.anchorborderhoveralpha,a.hoverdip,a.anchorhoverdip,b.anchorhoverdip,c.anchorhoverdip,a.anchorhoverstartangle,b.anchorhoverstartangle,c.anchorhoverstartangle,a.hoversides,a.anchorhoversides,b.anchorhoversides,c.anchorhoversides,a.hoverradius,a.anchorhoverradius,b.anchorhoverradius,c.anchorhoverradius,d.showHoverEffect,qb)!==qb,g.startAngle=D(a.anchorhoverstartangle,b.anchorhoverstartangle,c.anchorhoverstartangle,e.startAngle),g.anchorSides=
+D(a.hoversides,b.anchorhoversides,c.anchorhoversides,e.sides),g.anchorRadius=D(a.anchorhoverradius,b.anchorhoverradius,c.anchorhoverradius,e.radius+2),g.anchorScale=H(a.hoverscale,b.anchorscale,c.anchorscale),g.imageHoverScale=D(a.anchorimagehoverScale,b.anchorimagehoverscale,c.anchorimagehoverscale,110),g.imageHoverAlpha=D(a.anchorimagehoveralpha,b.anchorimaghoverealpha,c.anchorimagehoveralpha),g.anchorAlpha=H(a.anchorhoveralpha,a.hoveralpha,b.anchorhoveralpha,c.anchorhoverAlpha,e.anchorAlpha),g.anchorColor=
+Bb(H(a.hovercolor,a.anchorhovercolor,a.anchorbghovercolor,b.anchorbghovercolor,b.anchorhovercolor,c.anchorbghovercolor,c.anchorhovercolor,c.plotfillhovercolor,e.bgColor)),g.anchorBgAlpha=H(a.bghoveralpha,a.anchorbghoveralpha,b.anchorbghoveralpha,c.anchorbghoveralpha,c.plotfillhoveralpha,e.bgAlpha),g.anchorBorderColor=H(a.borderhovercolor,a.anchorborderhovercolor,b.anchorborderhovercolor,c.anchorborderhovercolor,e.borderColor),g.anchorBorderAlpha=H(a.borderhoveralpha,b.anchorborderhoveralpha,c.anchorborderhoveralpha,
+c.anchorborderalpha,e.borderAlpha),g.anchorBorderThickness=D(a.borderhoverthickness,b.anchorborderhoverthickness,c.anchorborderhoverthickness,c.anchorBorderThickness,e.borderThickness),g.dip=H(a.hoverdip,b.anchorhoverdip,c.anchorhoverdip,e.dip),g.anchorAnimation=D(b.anchorhoveranimation,c.anchorhoveranimation,1));return g},_hoverPlotAnchor:function(a,b,c){var d=a.graphics.element,e=a.graphics.label,g=a.graphics.image,k=d.data("setRolloverAttr"),l=d.data("setRolloutAttr"),m="DataPlotRollOver"===b?
+d.data("setRolloverAttr"):d.data("setRolloutAttr"),p=D(c.rotatevalues)?270:0;c="image"===d.type;var q=d.data("anchorRadius"),r=d.data("anchorHoverRadius"),t=e&&(e.data("isBelow")?1:-1)*(c?.5*(k.height-l.height):r-q),u=a.config.hoverEffects,v;a={polypath:m.polypath};m={fill:m.fill,"stroke-width":m["stroke-width"],stroke:m.stroke};p={transform:"T0,"+("DataPlotRollOver"===b?t:0)+"R"+p};k=!(/,0\)$/.test(k.fill)&&/,0\)$/.test(l.fill))&&d.data("anchorHoverRadius")-d.data("anchorRadius")&&u.anchorAnimation&&
+50;g&&(v=g.data("setRolloverAttr"),l=g.data("setRolloutAttr"),v="DataPlotRollOver"==b?v:l);if("DataPlotRollOver"==b&&0!==r||"DataPlotRollOut"==b&&0!==q)d.attr({visibility:"visible"}),g&&g.attr({visibility:"visible"});g&&g.css({opacity:.01*v.alpha});c?d.css({opacity:.01*a.alpha}):d.attr(m);d.stop();d.animate(a,k,"easeOut",function(){("DataPlotRollOver"==b&&!r||"DataPlotRollOut"==b&&!q)&&d.attr({visibility:"hidden"})});g&&g.animate(v,k,"easeOut",function(){("DataPlotRollOver"==b&&!r||"DataPlotRollOut"==
+b&&!q)&&g.attr({visibility:"hidden"})});e&&e.stop();k&&e&&e.animate(p,k,"easeOut")},drawLabel:function(b){var c=this.chart,d=a.getValidValue,e=this.fcJSON.labelStyle,g=this.JSONData.data,k=this.components.data,l=c.paper,m,p="",q=this.conf,r=q.transposeanimation,t=q.transposeanimduration,D=q.rotateValues,u=c.canvasTop,v=c.canvasHeight,H,A=q.valuePadding+2,E,F=q.valuePosition;H=this.graphics.dataLabelContainer;var J,G;G=c.logic.isStacked;var O=q.stack100Percent;m=k[b];p=m.config;E=p.anchorProps;c=m.graphics;
+g=g[b];J=m._yPos;q=m._xPos;m=c.element?m.graphicImage&&.5*c.element.attr("height")||E.radius-3:0;A+=m;F=d(g.valueposition,F).toLowerCase();switch(F){case "above":b=0;break;case "below":b=1;break;default:d=k[b-1]&&k[b-1].config||{},k=k[b+1]&&k[b+1].config||{},G&&O?(d=d.value,k=k.value,G=p.value):(d=d.setValue,k=k.setValue,G=p.setValue),b=b?d>G?1:(null==k&&k)>G?1:0:0}p=p.displayValue;pb(p)&&p!==V&&null!==g.value&&(c.label?c.label.attr({text:p}):(e={text:p,"class":"fusioncharts-label",fill:e.color,"text-bound":[e.backgroundColor,
+e.borderColor,e.borderThickness,e.borderPadding,e.borderRadius,e.borderDash],"font-weight":e.fontWeight,"font-style":e.fontStyle,"font-family":e.fontFamily,"font-size":e.fontSize,"line-height":e.lineHeight,visibility:"visible"},c.label=l.text(e,H)),g._state&&g._state.labelWidth||(l=c.label.getBBox(),g._state=D?{labelWidth:l.height,labelHeight:l.width}:{labelWidth:l.width,labelHeight:l.height}),l=H=g._state.labelHeight,H=.5*H+A,e=J-u,u=u+v-J,v=J,l=l+A+4,b?u>l?(v+=H,g._valueBelowPoint=1):e>l&&(v-=H,
+g._valueBelowPoint=0):e>l?(v-=H,g._valueBelowPoint=0):u>l&&(v+=H,g._valueBelowPoint=1),0===c.label.attrs.x&&0===c.label.attrs.y?(c.label.attr({x:q,y:v}).data("isBelow",g._valueBelowPoint),D&&c.label.attr("transform","T0,0,R"+D)):r?c.label.animate({x:q,y:v,transform:D&&"T0,0,R"+D},t,"normal"):c.label.attr({x:q,y:v,transform:D&&"T0,0,R"+D}))}},"column"]);FusionCharts.register("dataSetType",["Line",{init:function(a,b,c){var d=this.fcJSON=a.logic.dataObj,d=c?d.lineset:d.dataset,e=a.logic.isDual;if(!d||
+!d[b])return!1;this.isLineSet=c;this.chart=a;this.datasetIndex=b;this.yAxis=e?a.yAxis[this.yAxis||0]:a.yAxis[0];this.components={};this.conf={};this.graphics={};this.plotType="line";this.JSONData=d[b];this.visible=1===D(this.JSONData.visible,!Number(this.JSONData.initiallyhidden),1);this.configure()},draw:function(){var c=this,d=c.JSONData,e=c.fcJSON,k=e.chart,l=c.chart,m=c.conf,p=c.datasetIndex,q=e.categories&&e.categories[0].category,r=d.data,t=q&&q.length,D=r&&r.length,v,u=c.isLineSet,A=e.labelStyle,
+E,F,J=l.paper,G=l.xAxis[0],O=c.yAxis,L,W,S=l.layers,M=S.datalabels,T=a.parseUnsafeString,ha=a.getValidValue,z,C,P,N,h,V,U,aa=m.animation.duration,Y=c.components.data,ba,ca,da,ga={fontFamily:A.fontFamily,fontSize:A.fontSize,lineHeight:A.lineHeight,fontWeight:A.fontWeight,fontStyle:A.fontStyle,color:A.color},fa=m.lineThickness,Q=c.graphics.container,ka=c.graphics.trackerContainer,ja=S.tracker,ia=function(a){ma.call(this,l,a)},na=function(a,b){return function(d){b&&c._hoverPlotAnchor(a,"DataPlotRollOver",
+k);ma.call(this,l,d,"DataPlotRollOver")}},la=function(a,b){return function(d){b&&c._hoverPlotAnchor(a,"DataPlotRollOut",k);ma.call(this,l,d,"DataPlotRollOut")}},oa,ua=m.connectNullData,va=m.showTooltip,sa,Ba=S.dataset,wa,Da=m.shadow,Ia,Ga=c.graphics.dataLabelContainer,Ca={},Qa,bb,Na,Sa,fb=l.logic.is3D,jb=m.use3dlineshift,mb=m.transposeanimation,cb=m.transposeanimduration,Pa,Ma=function(){!1!==c.visible||!1!==c._conatinerHidden&&void 0!==c._conatinerHidden||(Q.lineGroup.hide(),Q.lineShadowGroup.hide(),
+Q.anchorShadowGroup.hide(),Q.anchorGroup.hide(),ka.hide(),Ga&&Ga.hide(),u?c._conatinerHidden=e.lineset._conatinerHidden:c._conatinerHidden=!0)},Fa=l.getAnimationCompleteFn(),ob=function(){Q.lineGroup.attr({"clip-rect":null});Q.lineShadowGroup.show();Q.anchorShadowGroup.show();Q.anchorGroup.show();ka.show();Ga&&Ga.show();Fa()},ib=!0,nb,eb,pb,rb=O.max,xb=O.min,zb=0<rb&&0<=xb,Ab=O.yBasePos=O.getAxisPosition(0>=rb&&0>xb?rb:zb?xb:0),wb=l.elements,Bb=G.getAxisPosition(0),Eb=G.getAxisPosition(1)-Bb,Hb=l.options.chart,
+Qb,Sb=wb["clip-canvas-init"].slice(0),Ya=wb["clip-canvas"].slice(0),Ib=G.axisData.scroll||{},Tb=Hb.hasScroll||!1,db,Za=fb?10:0,Wa=fb&&jb?10:0,ac=m.lineDashStyle,Ra={color:m.lineColor,alpha:m.lineAlpha},Nb,Kb,sb,ub,ra=[],vb,ec=0,$a=[],Xa=null,jc,Wb=[],Jb=!1,Rb,bc=c.graphics.lineElement,Va=c.visible;Q||(Q=c.graphics.container={lineShadowGroup:J.group("connector-shadow",Ba.line),anchorShadowGroup:J.group("anchor-shadow",Ba.lineConnector),lineGroup:J.group("line",Ba.line),anchorGroup:J.group("anchors",
+Ba.lineConnector)},Va||(Q.lineShadowGroup.hide(),Q.anchorShadowGroup.hide(),Q.lineGroup.hide(),Q.anchorGroup.hide()));ka||(ka=c.graphics.trackerContainer=J.group("line-hot"),Va||ka.hide());Y||(Y=c.components.data=[]);ja&&ja.appendChild(ka);l.addCSSDefinition(".fusioncharts-datalabels .fusioncharts-label",ga);Ga||(Ga=c.graphics.dataLabelContainer=c.graphics.dataLabelContainer||J.group("datalabel",M),Va||Ga.hide());v=Cb(t,D);Qb=Eb*v;for(F=0;F<v;F++)E=r[F],ba=Y[F],Sa=ba.config,h=Sa.setValue,N=Sa.setLink,
+nb=ha(T(H(E.tooltext,d.plottooltext,k.plottooltext))),Pa=Sa.showValue,Ca=Sa.anchorProps,Na=Ca.symbol,Ia=Ca.shadow,U=Sa.displayValue,ba||(ba=Y[F]={graphics:{}}),null===h?(Wb.length=0,ua||(Xa=null)):(ub={color:Sa.color,alpha:Sa.alpha},pb=Sa.dashStyle,L=G.getAxisPosition(F)-Za,W=c.visible?O.getAxisPosition(h)+Wa:Ab,wa=Sa.hoverEffects,Ca.isAnchorHoverRadius=wa.anchorRadius,ha(T(H(q[F].tooltext,q[F].label))),z=z=Sa.toolText+(nb?"":Sa.toolTipValue),V={index:F,link:N,value:h,displayValue:U,categoryLabel:q[F].label,
+toolText:z,id:m.userID,datasetIndex:p,datasetName:d.seriesname,visible:Va},Ca.imageUrl&&(Qa=new b,bb={isTooltip:va,setLink:N,hotLayer:ka,groupId:void 0,clickFunc:ia},Qa.onload=this._onAnchorImageLoad(l,c,m,L,W,Ca,ba,V,z,wa.enabled?wa:!1,F,Q.anchorGroup,bb),Qa.onerror=this._onErrorSetter(L,W,F,c),Qa.src=Ca.imageUrl),C=ba.graphics.element,eb=ba.graphics.connector,C?(mb?C.animate({polypath:[Na[1]||2,L,W,Ca.radius,Ca.startAngle,0]},cb,"normal",ib&&Ma):(C.attr({polypath:[Na[1]||2,L,W,Ca.radius,Ca.startAngle,
+0]}),ib&&Ma()),ib=!1):(C=ba.graphics.element=J.polypath(Na[1]||2,L,W,Ca.radius,Ca.startAngle,0,Q.anchorGroup).attr({fill:R({color:Ca.bgColor,alpha:Ca.bgAlpha}),stroke:R({color:Ca.borderColor,alpha:Ca.borderAlpha}),"stroke-width":Ca.borderThickness,visibility:Ca.radius?Va:"hidden"}).shadow(Ia,Q.anchorShadowGroup),Jb=!0),wa.enabled&&(da={polypath:[wa.anchorSides||2,L,W,wa.anchorRadius,wa.startAngle,wa.dip],fill:R({color:wa.anchorColor,alpha:wa.anchorBgAlpha}),stroke:R({color:wa.anchorBorderColor,alpha:wa.anchorBorderAlpha}),
+"stroke-width":wa.anchorBorderThickness},ca={polypath:[Ca.sides,L,W,Ca.radius,Ca.startAngle,0],fill:R({color:Ca.bgColor,alpha:Ca.bgAlpha}),stroke:R({color:Ca.borderColor,alpha:Ca.borderAlpha}),"stroke-width":Ca.borderThickness},C&&C.data("anchorRadius",Ca.radius).data("anchorHoverRadius",wa.anchorRadius).data("setRolloverAttr",da).data("setRolloutAttr",ca)),oa=Oa(Ca.radius,wa&&wa.anchorRadius||0),sa={cx:L,cy:W,r:oa,cursor:N?"pointer":"",stroke:g,"stroke-width":Ca.borderThickness,fill:g,ishot:!0,visibility:Va},
+P=ba.graphics.hotElement,eb=ba.graphics.connector,ba.graphics.hotElement?ba.graphics.hotElement.attr(sa):P=ba.graphics.hotElement=J.circle(sa,ka),P=ba.graphics.hotElement,(P||C).data("eventArgs",V).data("groupId",void 0).click(ia).tooltip(z),wa.enabled&&(P||C).hover(na(ba,wa.enabled),la(ba,wa.enabled)),sb=vb!==[R(ub||Ra),pb||ac].join(":"),null!==Xa?(Wb.length&&(ra=ra.concat(Wb),Wb.length=0),ra.join("")||ra.push("M",jc,Xa),ra.push("L",L,W),sb&&(ec?$a=$a.concat(ra):eb?(mb?eb.animate({path:ra},cb,"normal",
+ib&&Ma):(eb.attr({path:ra}),ib&&Ma()),ib=!1):(eb=ba.graphics.connector=J.path(ra,Q.lineGroup).attr({"stroke-dasharray":Kb,"stroke-width":fa,stroke:Nb,"stroke-linecap":"round","stroke-linejoin":2<fa?"round":"miter"}).shadow(Rb,Q.lineShadowGroup),Jb=!0),ra=[])):Wb.push("M",L,W),jc=L,Xa=W,Nb=R(ub||Ra),Rb=ub?{opacity:ub&&ub.alpha/100}:Da,Kb=pb||ac,ec=H(E.color,E.alpha,E.dashed)===qb?1:0,vb=[Nb,Kb].join(":"),ba._xPos=L,ba._yPos=W,Pa&&!Ca.imageUrl&&this.drawLabel(F));ra.length&&($a=$a.concat(ra));$a.join("")&&
+(bc?(mb?bc.animate({path:$a},cb,ib&&Ma):(bc.attr({path:$a}),ib&&Ma()),ib=!1):(bc=c.graphics.lineElement=J.path({path:$a,"stroke-dasharray":ac,"stroke-width":fa,stroke:R(Ra),"stroke-linecap":"round","stroke-linejoin":2<=fa?"round":"miter"},Q.lineGroup).shadow(Da,Q.lineShadowGroup),Jb=!0));Tb&&(db=Ib.startPercent,Ya[2]=Qb+Sb[0],1===db&&(Sb[0]=Ya[2],Ya[0]=0));Ya[3]+=Wa;aa&&Va&&Jb&&(Q.anchorGroup.hide(),Q.lineShadowGroup.hide(),Q.anchorShadowGroup.hide(),Ga.hide(),Ba.line.attr({"clip-rect":Sb}).animate({"clip-rect":Ya},
+aa,"normal",ob))},show:function(){var a=this.graphics&&this.graphics.container,b=this.graphics&&this.graphics.trackerContainer,c=this.graphics&&this.graphics.dataLabelContainer,d=this.datasetIndex,e=this.groupManager,g=this.chart.logic.chartInstance.jsVars._reflowData,k;k=this.isLineSet;g=g.dataObj||(g.dataObj={});k?(k=g.lineset||(g.lineset=[]),d=k[d]||(k[d]={}),d.visible=1,k._conatinerHidden=!1):(k=g.dataset||(g.dataset=[]),d=k[d]||(k[d]={}),d.visible=1,this._conatinerHidden=!1);a.lineGroup.show();
+a.anchorGroup.show();a.anchorShadowGroup.show();a.lineShadowGroup.show();b.show();c.show();this.visible=!0;e.draw()},hide:function(){var a=this.datasetIndex,b=this.groupManager,c=this.chart.logic.chartInstance.jsVars._reflowData,d;d=this.isLineSet;c=c.dataObj||(c.dataObj={});d=d?c.lineset||(c.lineset=[]):c.dataset||(c.dataset=[]);a=d[a]||(d[a]={});a.visible=0;this.visible=!1;b.draw()}},"area"]);E("renderer.newlinecartesian",{drawGraph:function(){var a=this,b=a.paper,c=a.plots=a.elements.plots,d=a.logic,
+e=a.layers,g=a.options,k=a.elements,l=g.chart,g=a.datasets=g.series,m=ia(l.rendererId,l.defaultSeriesType),p=e.background,p=e.dataset=e.dataset||b.group("dataset").insertAfter(p),q,r,t=FusionCharts.register("dataSetType",["Line"]),D=g.length,v=d.chartInstance.jsVars._reflowData,v=v.dataObj||(v.dataObj={});q=v.chart||(v.chart={});var v=function(a,b){return function(e){var f=c[a],g,k={hcJSON:{series:[]}},l=k.hcJSON.series[a]||(k.hcJSON.series[a]={}),m=d.chartInstance.jsVars._reflowData;g=(e=ia(e,!f.visible))?
+"visible":"hidden";Ba(f.graphics,function(a){!0!==a.data("alwaysInvisible")&&a.attr("visibility",g)});f.visible=e;b.visible=e;l.visible=e;aa(m,k,!0)}},u=function(a){return function(b){var d=c[a],e=d.legend,f=e&&e.elements,g=f&&f.legendItemText,k=f&&f.legendItemSymbol,f=f&&f.legendItemLine,l=e&&e.hiddenColor,m=e&&e.itemLineColor,p=e&&e.itemTextColor,h=e&&e.symbolColor,e=e&&e.symbolStroke;H(b,!d.visible)?(k&&k.attr({fill:h||m,stroke:e}),g&&g.attr({fill:p}),f&&f.attr({stroke:m})):(k&&k.attr({fill:l,
+stroke:l}),g&&g.attr({fill:l}),f&&f.attr({stroke:l}));c[a].visible?c[a].hide():c[a].show()}},A=function(b){return function(){return a.getEventArgs&&a.getEventArgs(c[b])}},E=function(b,d,e){return function(g,k){d.call(a,c[b],e,{numUpdate:g,hasAxisChanged:k})}},F=new (FusionCharts.register("groupManagerType",["Linegroupmanager"]))(a);q.animation=0;e.tracker=e.tracker||b.group("hot").insertAfter(p);a.drawCanvas();a.drawAxes();c||(c=a.plots=a.plots||[],k.plots=c);a.parseCategory();F.init(a);for(e=0;e<
+D;e++)b=g[e]||{},k=b.updatePlot="updatePlot"+sa(H(b.type,b.plotType,m)),k=a[k],q=b.drawPlot="drawPlot"+sa(H(b.type,b.plotType,m)),q=a[q]||a.drawPlot,(r=c[e])||(c.push(r=new t),r.init(a,e),r.index=e,r.items=[],r.data=b.data||[],r.name=b.name,r.userID=b.userID,r.setVisible=v(e,b),r.legendClick=u(e),r.getEventArgs=A(e),r.realtimeUpdate=E(e,k||q,b),b.plot=r,b.legendClick=r.legendClick,b.getEventArgs=r.getEventArgs,b.setVisible=r.setVisible),e&&g[e-1]&&(b.previousData=g[e-1].data),F.addDataSet(r,e),r.setContainer(p);
+F.draw();l.hasScroll&&(a.drawScroller(),a.finalizeScrollPlots())}},E["renderer.newcartesian"]);FusionCharts.register("groupManagerType",["Linegroupmanager",{init:function(a){this.chart=a;this.positionStackArr=[]},addDataSet:function(a,b){var c=this.positionStackArr;a.groupManager=this;a.positionIndex=b;c[b]={dataSet:a}},draw:function(){var a=this.chart,b=this.positionStackArr,c,d=b.length;c=a.layers.dataset;a=a.paper;c.line=c.line||a.group("line",c);c.lineConnector=c.lineConnector||a.group("line-connector",
+c);for(c=0;c<d;c++)a=b[c].dataSet,a.JSONData&&a.JSONData.data&&a.draw()}},"AreagroupManager"])}]);
+FusionCharts.register("module",["private","modules.renderer.js-interface",function(){var e=this,q=e.hcLib,F=e.renderer.getRenderer("javascript"),u=q.hasModule,d=q.loadModule,a=q.getMetaSentence,t=q.moduleCmdQueue,E=q.executeWaitingCommands,c=q.injectModuleDependency,l=q.moduleDependencies,b=q.getDependentModuleName,r,V;r=function(c){var d,k,l,r={},t;c=a(c);for(d in e.core.items)d=e.core.items[d],k=d.chartType(),l=d.options.chartTypeSourcePath+k,(k=d.jsVars)&&k.waitingModule&&d.__state.rendering&&
+q.needsModule(c.predicate,l)&&(k.waitingModuleError=!0,k=b(l).concat(k.userModules),k.length&&(k=k[k.length-1],r[k]=q.moduleCmdQueue[k]));for(t in r)E(r[t]);e.raiseError(e.core,"11171116151","run","HC-interface~renderer.load","Unable to load required modules and resources: "+c.key)};V=function(a,b,c){var d=a.args,l=a.options;a._chartMessageImageStyle={imageHAlign:d.typeNotSupportedMessageImageHAlign||l.baseChartMessageImageHAlign,imageVAlign:d.typeNotSupportedMessageImageVAlign||l.baseChartMessageImageVAlign,
+imageAlpha:d.typeNotSupportedMessageImageAlpha||l.baseChartMessageImageAlpha,imageScale:d.typeNotSupportedMessageImageScale||l.baseChartMessageImageScale};a._chartMessageStyle={color:d.typeNotSupportedMessageColor||l.baseChartMessageColor,fontFamily:d.typeNotSupportedMessageFont||l.baseChartMessageFont,fontSize:d.typeNotSupportedMessageFontSize||l.baseChartMessageFontSize};e.hcLib.createChart(a,b,"stub",c,l.typeNotSupportedMessage)};q.eventList=e.extend(e.legacyEventList,{loaded:"FC_Loaded",dataloaded:"FC_DataLoaded",
+rendered:"FC_Rendered",drawcomplete:"FC_DrawComplete",dataxmlinvalid:"FC_DataXMLInvalid",nodatatodisplay:"FC_NoDataToDisplay",exported:"FC_Exported"});q.raiseEvent=e.raiseEventWithLegacy;l.charts=e.extend(l.charts||{},{column2d:0,column3d:0,bar2d:0,bar3d:0,pie2d:0,pie3d:0,line:0,area2d:0,doughnut2d:0,doughnut3d:0,pareto2d:0,pareto3d:0,mscolumn2d:0,mscolumn3d:0,msline:0,msarea:0,msbar2d:0,msbar3d:0,stackedcolumn2d:0,marimekko:0,stackedcolumn3d:0,stackedarea2d:0,stackedcolumn2dline:0,stackedcolumn3dline:0,
+stackedbar2d:0,stackedbar3d:0,msstackedcolumn2d:0,mscombi2d:0,mscombi3d:0,mscolumnline3d:0,mscombidy2d:0,mscolumn3dlinedy:0,stackedcolumn3dlinedy:0,msstackedcolumn2dlinedy:0,scatter:0,bubble:0,ssgrid:0,scrollcolumn2d:0,scrollcolumn3d:0,scrollline2d:0,scrollarea2d:0,scrollstackedcolumn2d:0,scrollcombi2d:0,scrollcombidy2d:0,zoomline:0,zoomlinedy:0,zoomscatter:0});l.powercharts=e.extend(l.powercharts||{},{spline:0,splinearea:0,msspline:0,mssplinearea:0,mssplinedy:0,multiaxisline:0,multilevelpie:0,waterfall2d:0,
+msstepline:0,inversemsline:0,inversemscolumn2d:0,inversemsarea:0,errorbar2d:0,errorscatter:0,errorline:0,logmsline:0,logmscolumn2d:0,logstackedcolumn2d:0,radar:0,dragnode:0,candlestick:0,selectscatter:0,dragcolumn2d:0,dragline:0,dragarea:0,boxandwhisker2d:0,kagi:0,heatmap:0,treemap:0});l.widgets=e.extend(l.widgets||{},{angulargauge:0,bulb:0,cylinder:0,drawingpad:0,funnel:0,hbullet:0,hled:0,hlineargauge:0,vlineargauge:0,pyramid:0,realtimearea:0,realtimecolumn:0,realtimeline:0,realtimelinedy:0,realtimestackedarea:0,
+realtimestackedcolumn:0,sparkcolumn:0,sparkline:0,sparkwinloss:0,thermometer:0,vbullet:0,gantt:0,vled:0});l.maps=e.extend(l.maps||{},{});e.extend(F,{render:function(a,d){var k=this.chartType(),l=this.options.chartTypeSourcePath+k,r=this.jsVars,E=this.__state,S=q.chartAPI,v=this.options,aa=this.args,L=this.options.showChartLoadingMessage,fa,G;fa=b(l).concat(r.userModules);r.isResizing&&(r.isResizing=clearTimeout(r.isResizing));r.hcObj&&r.hcObj.destroy&&r.hcObj.destroy();if(S[k]){if(S[E.lastRenderedType]&&
+E.lastRenderedType!==k)for(G in e.raiseEvent("chartTypeChanged",{previousType:E.lastRenderedType,newType:k},this),S[E.lastRenderedType].eiMethods)delete this[G];E.lastRenderedType=k;E.lastRenderedSrc=this.src;!r.waitingModuleError&&q.raiseEvent("internal.loaded",{type:k,triggeredModuleLoad:r.drLoadAttempted||r.waitingModule},this,[this.id]);delete r.waitingModule;delete r.waitingModuleError;delete r.drLoadAttempted;e.hcLib.createChart(this,a,k,d)}else{if(k&&u(fa)){if(r.drLoadAttempted){e.raiseError(this,
+11112822001,"run","HC-interface~renderer.render","Chart runtimes not loaded even when resource is present");V(this,a,d);return}c(l)&&(fa=b(l).concat(r.userModules));r.drLoadAttempted=!0}else{if(!fa.length){V(this,a,d);return}if(r.waitingModuleError){V(this,a,d);delete r.waitingModule;delete r.waitingModuleError;return}}(k=t[fa[fa.length-1]])?(k.push({cmd:"render",obj:this,args:arguments}),r.waitingModule||(r=L?v.PBarLoadingText||v.loadMessage:"",this._chartMessageImageStyle={imageHAlign:aa.loadMessageImageHAlign||
+v.baseChartMessageImageHAlign,imageVAlign:aa.loadMessageImageVAlign||v.baseChartMessageImageVAlign,imageAlpha:aa.loadMessageImageAlpha||v.baseChartMessageImageAlpha,imageScale:aa.loadMessageImageScale||v.baseChartMessageImageScale},this._chartMessageStyle={color:aa.loadMessageColor||v.baseChartMessageColor,fontFamily:aa.loadMessageFont||v.baseChartMessageFont,fontSize:aa.loadMessageFontSize||v.baseChartMessageFontSize},e.hcLib.createChart(this,a,"stub",void 0,r),F.load.call(this,a,d))):(e.raiseError(this,
+12080515551,"run","HC-interface~renderer.render","Unregistered module in dependentModule definition."),this._chartMessageImageStyle={imageHAlign:aa.renderErrorMessageImageHAlign||v.baseChartMessageImageHAlign,imageVAlign:aa.renderErrorMessageImageVAlign||v.baseChartMessageImageVAlign,imageAlpha:aa.renderErrorMessageImageAlpha||v.baseChartMessageImageAlpha,imageScale:aa.renderErrorMessageImageScale||v.baseChartMessageImageScale},this._chartMessageStyle={color:aa.renderErrorMessageColor||v.baseChartMessageColor,
+fontFamily:aa.renderErrorMessageFont||v.baseChartMessageFont,fontSize:aa.renderErrorMessageFontSize||v.baseChartMessageFontSize},e.hcLib.createChart(this,a,"stub",void 0,v.renderErrorMessage))}},update:function(a){var b=this.ref,c=this.jsVars,d=c&&c.fcObj,d=c.container||d&&d.options&&d.options.containerElement&&d.options.containerElement.childNodes[0];c.hcObj&&c.hcObj.destroy&&c.hcObj.destroy();c.isResizing&&(c.isResizing=clearTimeout(c.isResizing));void 0===a.error?(delete c.stallLoad,delete c.loadError,
+this.isActive()?this.src!==this.__state.lastRenderedSrc?this.render():e.hcLib.createChart(this,d):this.__state.rendering&&!c.waitingModule&&e.hcLib.createChart(this,d)):(this.isActive()&&"function"===typeof b.showChartMessage&&b.showChartMessage("InvalidXMLText"),delete c.loadError)},resize:function(a){var b=this.ref,c,d=this.jsVars;b&&b.resize&&(d.isResizing&&(d.isResizing=clearTimeout(d.isResizing)),d.isResizing=setTimeout(function(){c=e.normalizeCSSDimension(a.width,a.height,b);void 0!==a.width&&
+(b.style.width=c.width);void 0!==a.height&&(b.style.height=c.height);b.resize();delete d.isResizing},0))},dispose:function(){var a,b=this.jsVars;b.isResizing&&(b.isResizing=clearTimeout(b.isResizing));b.instanceAPI&&b.instanceAPI.dispose&&(b.instanceAPI.dispose(),delete b.instanceAPI);if(a=this.ref)e.purgeDOM(a),a.parentNode&&a.parentNode.removeChild(a);b.container=null;q.cleanupWaitingCommands(this)},load:function(a,c){var k=this.jsVars,l=this.chartType(),t=e.hcLib.chartAPI[l],l=b(l).concat(k.userModules),
+u=l[l.length-1];t||!l||l&&0===l.length?(delete k.waitingModule,a&&V(this,a||this.ref,c)):k.waitingModule||(k.waitingModule=!0,delete k.waitingModuleError,d(l,function(){delete k.waitingModule;E(q.moduleCmdQueue[u])},r,this))}})}]);
+FusionCharts.register("module",["private","modules.api.dynamicchartattributes",function(){var e=this;e.extend(e.core,{setChartAttribute:function(q,F){var u,d,a,t;if("string"===typeof q)u=q,q={},q[u]=F;else if(null===q||"object"!==typeof q)return;t=0;if(a=(u=this.getChartData(e.dataFormats.JSON))&&(u.chart||u.graph||u.map)){for(d in q)t+=1,null===q[d]?delete a[d.toLowerCase()]:a[d.toLowerCase()]=q[d];0<t&&("undefined"===typeof a.animation&&(a.animation="0"),this.setChartData(u,e.dataFormats.JSON))}else e.raiseError(this,
+"2105141421","run","#setChartAttribute()","Could not retrieve attribute list. Is data ready?")},getChartAttribute:function(q){var F=this.getChartData(e.dataFormats.JSON),F=F&&(F.chart||F.graph||F.map),u,d;if(0===arguments.length||void 0===q||void 0===F)return F;if("string"===typeof q)u=F[q.toString().toLowerCase()];else if(q instanceof Array)for(u={},d=0;d<q.length;d+=1)u[q[d]]=F[q[d].toString().toLowerCase()];else e.raiseError(this,"25081429","param","~getChartAttribute()",'Unexpected value of "attribute"');
+return u}},!0)}]);
+FusionCharts.register("module",["private","api.linkmanager",function(){var e=this,q=e.FusionChartsDOMInsertModes,F={},u=function(a,d){this.items={};this.root=a;this.parent=d;d instanceof e.core?this.level=this.parent.link.level+1:(F[a.id]=[{}],this.level=0)},d=function(a,d){return(a.options.containerElement===d.options.containerElement||a.options.containerElementId===d.options.containerElementId)&&a.options.insertMode===q.REPLACE};e.policies.link=["link",void 0];u.prototype.configuration=function(){return F[this.root.id][this.level]||
+(F[this.root.id][this.level]={})};e.extend(e.core,{configureLink:function(a,d){var q;if(a instanceof Array){for(q=0;q<a.length;q+=1)"object"!==typeof F[this.link.root.id][q]&&(F[this.link.root.id][q]={}),e.extend(F[this.link.root.id][q],a[q]);F[this.link.root.id].splice(a.length)}else"object"===typeof a?("number"!==typeof d&&(d=this.link.level),void 0===F[this.link.root.id][d]&&(F[this.link.root.id][d]={}),e.extend(F[this.link.root.id][d],a)):e.raiseError(this,"25081731","param","~configureLink()",
+"Unable to update link configuration from set parameters")}},!0);e.addEventListener("beforeInitialize",function(a){a.sender.link instanceof u?a.sender.link.parent instanceof e.core&&(a.sender.link.parent.link.items[a.sender.id]=a.sender):a.sender.link=new u(a.sender)});e.addEventListener("linkedChartInvoked",function(a,q){var E=a.sender,c=E.clone({dataSource:q.data,dataFormat:q.linkType,link:new u(E.link.root,E)},!0),l=q.alias,b;l&&(!c.typeSource&&c.swfUrl&&(c.typeSource=c.swfUrl.replace(/(.*?)?[^\/]*\.swf.*?/ig,
+"$1")),c.type=l);E.args&&0!==parseInt(E.args.animate,10)&&delete c.animate;e.extend(c,E.link.configuration());e.raiseEvent("beforeLinkedItemOpen",{level:E.link.level},E.link.root,void 0,function(){e.core.items[c.id]instanceof e.core&&e.core.items[c.id].dispose();b=new e.core(c);d(b,E)||E.options.overlayButton&&E.options.overlayButton.message||("object"!==typeof E.options.overlayButton&&(E.options.overlayButton={}),E.options.overlayButton.message="Close");b.render();e.raiseEvent("linkedItemOpened",
+{level:E.link.level,item:b},E.link.root)})});e.addEventListener("overlayButtonClick",function(a,q){if("LinkManager"===q.id){var u=a.sender,c=u.link.level-1,l=u.link.parent,b=u.link.root;e.raiseEvent("beforeLinkedItemClose",{level:c,item:u},b,u,function(){setTimeout(function(){e.core.items[u.id]&&u.dispose();e.raiseEvent("linkedItemClosed",{level:c},b)},0);l.disposed||l.isActive()||!d(u,l)||l.render()})}});e.addEventListener("Loaded",function(a){a=a.sender;var d;a&&void 0!==a.link&&a.link.root!==a&&
+a.link.parent instanceof e.core&&(a.ref&&"function"===typeof a.ref.drawOverlayButton?(d=e.extend({show:!0,id:"LinkManager"},a.link.parent.options.overlayButton),e.extend(d,a.link.parent.link.configuration().overlayButton||{}),a.ref.drawOverlayButton(d)):e.raiseWarning(a,"04091602","run","::LinkManager^Loaded","Unable to draw overlay button on object. -"+a.id))});e.addEventListener("beforeDispose",function(a){var d=a.sender;d&&d.link instanceof u&&(d&&d.link&&d.link.parent instanceof e.core&&d.link.parent.link&&
+d.link.parent.link.items&&delete d.link.parent.link.items[a.sender.id],delete F[d.id])})}]);
+FusionCharts.register("module",["private","modules.renderer.js-thememanager",function(){var e=this,q,F,u,d=/\s+!important$/,a=/\\!important$/,t=function(a,b){for(var c=b.length,d=-1;c--;)if(a===b[c]){d=c;break}return d},E=function(a,b,c,d,e){var l,p,q,r;e?(d.push(a),e.push(b)):(d=[a],e=[b]);if(b instanceof Array)for(l=0;l<b.length;l+=1){try{p=a[l],q=b[l]}catch(u){continue}if("object"!==typeof q)c&&void 0===q||(a[l]=q);else{if(null===p||"object"!==typeof p)p=a[l]=q instanceof Array?[]:{};r=t(q,e);
+-1!==r?p=a[l]=d[r]:E(p,q,c,d,e)}}else for(l in b){try{p=a[l],q=b[l]}catch(u){continue}if(null!==q&&"object"===typeof q)if(r=Object.prototype.toString.call(q),"[object Object]"===r){if(null===p||"object"!==typeof p)p=a[l]={};r=t(q,e);-1!==r?p=a[l]=d[r]:E(p,q,c,d,e)}else"[object Array]"===r?(null!==p&&p instanceof Array||(p=a[l]=[]),r=t(q,e),-1!==r?p=a[l]=d[r]:E(p,q,c,d,e)):a[l]=q;else a[l]=q}return a},c=function(a,b,c){if("object"!==typeof a&&"object"!==typeof b)return null;if("object"!==typeof b||
+null===b)return a;"object"!==typeof a&&(a=b instanceof Array?[]:{});E(a,b,c);return a},l=function(b){var c={important:!1,str:""};if(!b)return c;b=b.toString();d.test(b)?(b=b.replace(d,""),c.important=!0):(b=b.replace(a,"!imporant"),c.important=!1);c.str=b;return c},b=function(a,c){var d,e,l,p,q,t,u=0,E=0;for(d in a)if(e=a[d],e instanceof Array)for(t=e.length,q=0;q<t;q+=1){if(p=e[q],"object"===typeof p)if("category"===d)if("true"===p.vline){if(l=c.component("vline",u,p))r(p,l),u+=1}else{if(l=c.component("category",
+E,p,t))r(p,l),E+=1}else if(l=c.component(d,q,p,t))r(p,l),b(p,l)}else"object"===typeof e&&(l=c.component(d,null,e))&&(r(e,l),b(e,l))},r=function(a,b){var c=b.getAll(),d,e;for(d in c)e=c[d].toString(),e=l(e),e.important?a[d.toLowerCase()]=e.str:void 0===a[d.toLowerCase()]&&(a[d.toLowerCase()]=e.str)},V=function(a,b){"geo"===b.defaultSeriesType&&p.call(this,a,b)},p=function(a,b){var c=a.sender,d=c.getChartData(e.dataFormats.JSON,!0),l;d.error||((l=d.data.chart.theme)?u.themify(l,c,c.chartType(),d.data,
+"geo"===b.defaultSeriesType&&"geo"):c.jsVars.themeObject&&c.jsVars.themeObject.dispose())};q=function(){this.themeStore={}};q.prototype={constructor:q,add:function(a){for(var b=0,c=a.length,d;b<c;b+=1)(d=a[b].name)&&(this.themeStore[d]=a[b])},themify:function(a,b,c,d,l){var q=b.jsVars,r=a.split(","),t=[],u=r.length,E,G;if(u){for(G=0;G<u;G+=1){E=this.themeStore;var H;H=r[G];H=H.replace(/^\s\s*/,"");for(var D=/\s/,R=H.length;D.test(H.charAt(--R)););H=H.slice(0,R+1);(E=E[H])&&t.push(this.evaluateThemeJSON(E.theme,
+b,c,l))}t.length?(q.themeObject=new F(t,b,!1,d),this.applyTheme(b),b.addEventListener("chartTypeChanged",p),b.addEventListener("internal.drawstart",V)):e.raiseWarning(b,"14051100501","run","api.themes~themify()",'The theme "'+a+'" requested has not been registered.')}},evaluateThemeJSON:function(a,b,d,e){var l={},p=b.jsVars,q=function(a){var b,d;for(b in a)d=a[b],l[b]=d instanceof Array?c(l[b]||[],d):"object"===typeof d?c(l[b]||{},d):d};d=d||b.chartType();p.themeObject&&a!==p.themeObject&&(p.themeObject.dispose(),
+delete p.themeObject);q(a.base);e&&a[e]&&q(a[e]);d&&a[d]&&q(a[d]);return l},applyTheme:function(a){a=a.jsVars.themeObject;var c=a.getThemedJSONData().data;c&&b(c,a)}};F=function(a,b,d,e){this.themeArray=a;this.themeComponents={};this.base={};this.chartInstance=b;this.isChildInstance=Boolean(d);this.themedData=d?null:c({},e);this.length=a.length;b=0;for(d=a.length;b<d;b+=1)this.parse(a[b])};F.prototype={constructor:F,pushTheme:function(a){a&&(this.themeArray.push(a),this.parse(a),this.length+=1)},
+popTheme:function(){},parse:function(a){var b=this.themeComponents,d=this.chartInstance,e=this.base,p,q,r;for(q in a)if("string"===typeof a[q]||"number"===typeof a[q])if(e[q]){if(p=l(a[q]),r=l(e[q]),p.important||!r.important)e[q]=a[q]}else e[q]=a[q];else b[q]||(b[q]=[]),p=b[q],a[q]instanceof Array?p.push(c([],a[q])):"object"===typeof a[q]?p.push(new F([a[q]],d,!0)):"function"===typeof a[q]&&p.push(a[q])},merge:function(a){var b=this.base,c=a.base,d=this.themeComponents,e=a.themeComponents,p,q,r;for(r in c)if(p=
+l(b[r]),q=l(c[r]),!p.important||q.important)b[r]=c[r];for(r in e)d[r]=d[r]?d[r].concat(e[r]):[].concat(e[r]);this.length+=a.length},get:function(a){return this.base[a]},getAll:function(){return c({},this.base)},component:function(a,b,c,d){var e=this.themeComponents,l=this.chartInstance,p=new F([],l,!0),q,r,t;r=e[a];if(!r)return null;a=0;for(e=r.length;a<e;a+=1)t=r[a],"function"===typeof t?(b=b||0,p.pushTheme(t.call(l,b,c,d))):t instanceof Array?(b=b||0,q=t.length,b%=q,q=t[b],q instanceof F?p.merge(q):
+"function"===typeof q?p.pushTheme(q.call(l,b,c,d)):p.pushTheme(q)):t instanceof F?p.merge(t):p.pushTheme(t);return p},getThemedJSONData:function(){return{data:this.themedData}},dispose:function(){var a=this.themeComponents,b=this.chartInstance,c,d;for(c in a)if(d=a[c].length){for(;d--;)a[c][d].dispose&&a[c][d].dispose();delete a[c]}this.isChildInstance||(b.removeEventListener("chartTypeChanged",p),b.removeEventListener("internal.drawstart",V));this.dataWithoutTheme=this.isChildInstance=this.themeArray=
+this.base=this.chartInstance=this.themeComponents=null}};u=new q;e.registrars.theme=e.registerTheme=function(a){a&&("[object Array]"!==Object.prototype.toString.call(a)&&(a=[a]),u.add(a))};e.addEventListener("beforeDataUpdate",function(a,b){var c=a.sender,d=e.core.transcodeData(b.data,b.format,e.dataFormats.JSON),l=d.chart&&d.chart.theme;l?u.themify(l,c,c.args.type,d):c.jsVars.themeObject&&(c.jsVars.themeObject.dispose(),delete c.jsVars.themeObject)})}]);
+FusionCharts.register("theme",{name:"default",theme:{base:{chart:{labelDisplay:"stagger !important",caption:"Theme Caption \\!important",canvasBgColor:"#56EF22",borderThickness:"5 !important",borderColor:"#E60539",baseFontColor:"#781129"},categories:[{fontColor:"#0F4F40",fontSize:15,category:function(e){return{showLabel:e%2?0:1}},vline:{color:"#000000",thickness:2}}],dataset:[{color:"#8C3146",data:function(e,q){8==e&&(q.value="");return{color:32E3>Number(q.value)?"#8C3146":"#FF0000",alpha:"100"}}}],
+trendlines:[{line:function(e){return e?{color:"#ff0000",thickness:3}:{color:"#ffff00",thickness:3}}}]},pie2d:{chart:{bgColor:"#FF0000"}},msline:{chart:{canvasBgColor:"#ff0000"}},geo:{chart:{canvasBgColor:"#0000ff"}},world:{chart:{canvasBgColor:"#00ff00"}}}});
+FusionCharts.register("module",["private","modules.renderer.js-highlightmanager",function(){var e=this.hcLib,q=e.pluckNumber,F=e.toRaphaelColor,u=/^#?[0-9a-f]{6}/i,d=/255,255,255/,a=/FFFFFF/i,t=e.getFirstAlpha,E=function(a){a=a.replace("rgba(","").split(",");return"#"+("000000"+(a[0]<<16|a[1]<<8|a[2]).toString(16)).slice(-6)},c=e.pluck,l={},b={},r=function(a){if(/rgb/.test(a))return a=a.match(/[\d\.]+\)/g),parseFloat(a&&a[0]);if(a.FCcolor)return t(a.FCcolor.alpha)},V=function(a){a=a.split(",");var b,
+c,d,e={},g;b=0;for(c=a.length;b<c;b++)d=a[b].split("="),g=d[0],d=d[1],e[g]=d;return e},p=function(a,b,d){var e,g=b.color;if(/rgb/.test(a))b=c(b.alpha,100*r(a)),/rgb/.test(g)&&(g=E(g)),e=d?F({color:c(g,E(a)),alpha:b}):a;else if(a.FCcolor){if(d){a=a.FCcolor;var k;d={};var l;for(k in a)if("alpha"===k){g=k;if(b.alpha){e=a[k];var m=b.alpha,p=void 0,q=void 0,t=[];if("number"===typeof e)e=m;else{q=e.split&&e.split(",");for(p=0;p<q.length;p++)t.push(m);e=t.join()}}else e=a[k];d[g]=e}else"color"===k?(-1!==
+a[k].indexOf(",")&&b.color&&(l=b.color+","+a[k].substring(a[k].indexOf(",")+1)),d[k]=c(l||b.color,a[k])):d[k]=a[k];b=F(d)}else b=F(a.FCcolor);e=b}else u.test(a.color||a)&&(e=d?F({color:c(b.color,a.color,a),alpha:c(b.alpha,a.alpha)}):F({color:a.color||a,alpha:a.alpha}));return e},g=function(a,b,c,d){var e,g;a.marker?(e=0!==parseInt(r(a.marker.fillColor))?p(a.marker.fillColor,{color:d.anchorbgcolor,alpha:d.anchorbgalpha||d.alpha},c):F(a.marker.fillColor),g=0!==parseInt(r(a.marker.lineColor))?p(a.marker.lineColor,
+{color:d.anchorbordercolor||d.color,alpha:d.anchorborderalpha||d.alpha},c):F(a.marker.lineColor)):a.anchors&&(e=p({color:a.anchors.fill,alpha:100*a.anchors["fill-opacity"]},{color:d.anchorbgcolor,alpha:d.anchorbgalpha||d.alpha},c),g=p({color:a.anchors.stroke,alpha:100*a.anchors["stroke-opacity"]},{color:d.anchorbordercolor||d.color,alpha:d.anchorborderalpha||d.alpha},c));b&&b.attr({stroke:g,fill:e})},k=function(a,b,c,d){var e,g,k,l;g=a.lineColor||a.attrs||a.color;var m;g&&(g.graphics?e=p({color:g.graphics.stroke,
+alpha:100*g.graphics["stroke-opacity"]},c,b):(g.FCcolor&&d&&(d.alpha=d.color||0!==q(g.FCcolor.alpha)?d.alpha:"0"),e=p(g,d||c,b)),k=r(e));a.fillColor&&(m=p(a.fillColor,c,b));d=a.plot.components&&a.plot.components.data||a.plot.items;(g=a.plot.graphic||a.plot.graphics.lineElement)&&g.attr({stroke:e,fill:m||"none","drop-shadow":g.attrs["drop-shadow"]&&"none"!==g.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+k+")",g.attrs[4],g.attrs["drop-shadow"][5]]:"none"});for(g=0;g<d.length;g++)m=d[g].graphics?d[g].graphics&&
+d[g].graphics.connector:d[g].connector,d[g-1]&&(l=d[g-1].config||a.plot.data[g-1])&&(l.color||l.alpha)&&(e=l.color.FCcolor?l.color:{color:l.color,alpha:l.alpha},e=p(e,c,b)),m&&m.attr({stroke:e,"drop-shadow":m.attrs["drop-shadow"]&&"none"!==m.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+k+")",m.attrs[4],m.attrs["drop-shadow"][5]]:"none"})},m=function(a,b,c,d,e){var g,k;for(k=0;k<a.length;k++)g=b.errorValue[k].errorBarColor||e,g=p(g,c,d),a[k].attr({stroke:g})},J=function(a,b,c,d){var e,g=[];e=p(b.fill,
+{color:c.valuefontcolor,alpha:c.alpha},d);b["text-bound"]&&(g[0]=b["text-bound"][0]&&p(b["text-bound"][0],{color:c.valuebgcolor||b["text-bound"][0],alpha:c.alpha},d),g[1]=b["text-bound"][1]&&p(b["text-bound"][1],{color:c.valuebordercolor||b["text-bound"][1],alpha:c.alpha},d),g.push(b["text-bound"][2],b["text-bound"][3],b["text-bound"][4]));a.attr({fill:e,"text-bound":g})},T=function(b,e,g,k){var l=e.symbolColor,m=e.symbolStroke,q=e.itemTextColor,r=b.legendItemText,t=b.legendItemSymbol;b=b.legendItemLine;
+e=e.itemLineColor;b&&e&&(u.test(e)?b.attr({stroke:k?F({color:c(g.color,e),alpha:g.alpha}):e}):(e=p(e,g,k),b.attr({stroke:e})));t&&(l&&(l=l.match(u)?k&&!a.test(l)?F({color:g.color||l,alpha:g.alpha}):l:d.test(l)?l:p(l,g,k)),m&&(m=u.test(m)?k&&!a.test(m)?F({color:g.color||m,alpha:g.alpha}):m:k&&!d.test(m)?g.color?F({color:g.color,alpha:g.alpha}):m:m),t.attr({fill:l||"none",stroke:m||"none"}));r&&r.attr({fill:F({color:q,alpha:k?g.alpha:100})})},S=function(a,b,c,d){var e;b.marker&&(e=d?c:q(b.marker.imageAlpha,
+100));a.attr({opacity:e/100})},v=function(a,b,c){var d,e,m,p;a=V(a);var q,r;if(!c)for(a.alpha=a.alpha||30,c={color:a.bordercolor,alpha:a.borderalpha||a.alpha},this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),k(this,b,a,c),e=this.plot.items.length?this.plot.items:this.plot.components.data,m=0,q=e.length;m<q;m++){c=e[m].graphic||e[m].graphics&&e[m].graphics.element;e[m]&&e[m].graphics?(d=e[m].config.anchorProps,d={marker:{fillColor:{FCcolor:{alpha:d.bgAlpha,
+color:d.bgColor}},lineColor:{FCcolor:{alpha:d.borderAlpha,color:d.borderColor}},imageAlpha:d.imageAlpha,imageScale:d.imageScale}},p=e[m].graphics.image):(d=this.data[m],p=e[m].graphicImage);p&&S(p,d,a.alpha,b);if(r=e[m].dataLabel||e[m].graphics&&e[m].graphics.label)b&&(l.fill=r.attrs.fill,l["text-bound"]=r.attrs["text-bound"]),p=b?r.attrs:l,J(r,p,a,b);c&&g(d,c,b,a)}},aa=function(a,d,e){var g={},k,m,g=V(a);a=this.plot.chart&&this.plot.chart.datasets[0].Pie3DManager;!1===e&&(g.alpha||(g.alpha=30),e=
+{color:g.bordercolor,alpha:g.alpha},this.plot.legend&&this.plot.legend.elements&&T(this.plot.legend.elements,this.plot.legend,g,d),this.plot.dataLabel&&(d&&(l.fill=this.plot.dataLabel.attrs.fill,l["text-bound"]=this.plot.dataLabel.attrs["text-bound"]),k=d?this.plot.dataLabel.attrs:l,J(this.plot.dataLabel,k,g,d)),this.plot.connector&&(k=this.plot.connector,d&&(b=k.attrs.stroke),m=d?k.attrs.stroke.replace(/[\d\.]+\)/g,g.alpha/100+")"):b,k.attr({stroke:m})),a?a.setAttrs(a.pointElemStore[this.plot.index],
+this,g,d):(a=this.plot.chart&&this.plot.chart.logic.getPointColor,g.color?a?(g=d?a(g.color,c(g.alpha,t(this.color.FCcolor.alpha)),this.radius3D):this.color,g.FCcolor.cx=this.color.FCcolor.cx,g.FCcolor.cy=this.color.FCcolor.cy,g.FCcolor.r=this.color.FCcolor.r,g.FCcolor.ratio=this.color.FCcolor.ratio,g=F(g)):g=p(this,g,d):g=p(this.color.FCcolor?this.color:this,g,d),d=p(this.borderColor,e,d),e=this.plot.graphic,this.plot&&this.plot.graphic&&this.plot.graphic.attr({fill:g,stroke:d,"drop-shadow":e.attrs["drop-shadow"]&&
+"none"!==e.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(g)+")",e.attrs[4],e.attrs["drop-shadow"][5]]:"none"})))},L=function(a,b,c){var d,e,p,q;a=V(a);if(!c)for(a.alpha||(a.alpha=30),(this.attrs&&this.attrs.graphics||this.lineColor||this.color)&&k(this,b,a),this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),p=this.plot.anchors||this.plot.components&&this.plot.components.data||this.plot.items,c=0;c<p.length;c++)if(e=p[c],d=this.data[c],
+e&&((q=p[c].graphicImage?p[c].graphicImage:p[c].graphics&&p[c].graphics.image)&&S(q,d,a.alpha,b),e.errorBars&&m(e.errorBars,d,a,b,this.errorBarColor),this.attrs&&this.attrs.anchors?g(this.attrs,e,b,a):(q=e.graphic||e.graphics&&e.graphics.element)&&g(d,q,b,a),e=e.dataLabel||e.graphics&&e.graphics.label))b&&(l.fill=e.attrs.fill,l["text-bound"]=e.attrs["text-bound"]),d=b?e.attrs:l,J(e,d,a,b)},fa=function(){this.effectStore={}},G=new fa;fa.prototype.add=function(a){this.effectStore[a.name]=a};fa.prototype.applyEffect=
+function(a,b,c){var d=a.definition.dataset||a.definition.categories?a.logic.hcJSON.series:a.logic.hcJSON.series[0].data,e=this.effectStore,g=a.options.chart.defaultSeriesType,k=a.definition.chart.plothighlighteffect&&a.definition.chart.plothighlighteffect.toLowerCase(),l,m,p,r;a="";var t;k&&(k=k.replace(/\s+/g,"").split("|"),t=k[0],a=k[1]||"");if(t&&e[t])for(l=0,r=d.length;l<r;l++)k=d[l],g=k.type||g,k.plot&&"undefined"!==(m=q(k.plot.originalIndex,k.plot.index))&&(p=m===b,e[t][g]?e[t][g].call(k,a,
+c,p):e[t]["default"].call(k,a,c,p))};this.registrars.highlighteffect=function(a){a&&G.add(a)};this.addEventListener("legenditemrollover",function(a,b){var c=a.sender.jsVars.hcObj,d=c.options.chart.defaultSeriesType;"candlestick"===d&&"gantt"===d||G.applyEffect(c,b.datasetIndex,!0)});this.addEventListener("legenditemrollout",function(a,b){var c=a.sender.jsVars.hcObj,d=c.options.chart.defaultSeriesType;"candlestick"===d&&"gantt"===d||G.applyEffect(c,b.datasetIndex,!1)});FusionCharts.register("highlightEffect",
+{name:"fadeout",area:v,radar:v,bubble:function(a,b,d){var e,k,m;a=V(a);if(!1===d)for(a.alpha||(a.alpha=30),this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),d=0;d<this.plot.items.length;d++)k=this.plot.items[d],e=this.data[d],k&&k.dataLabel&&(b&&(l.fill=k.dataLabel.attrs.fill,l["text-bound"]=k.dataLabel.attrs["text-bound"]),m=b?k.dataLabel.attrs:l,J(k.dataLabel,m,a,b)),this.is3d&&a.color?(e=b?this.getPointColor(a.color,c(a.alpha,
+t(e.marker.fillColor.FCcolor.alpha))):e.marker.fillColor,k.graphic&&k.graphic.attr({fill:F(e)})):(a.anchorbgcolor=a.color,a.anchorbordercolor=a.bordercolor,k&&k.graphic&&g(e,k.graphic,b,a))},pie:aa,line:L,spline:L,areaspline:v,pie3d:aa,zoomline:L,funnel:aa,pyramid:aa,scatter:function(a,b,c){var d,e,p;a=V(a);if(!1===c)for(a.alpha||(a.alpha=30),this.plot.graphic&&k(this,b,a),this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),p=this.plot,
+c=0;c<p.items.length;c++)e=p.items[c],d=p.data[c],e.errorBars&&m(e.errorBars,d,a,b),d.marker&&g(d,e.graphic,b,a),e.dataLabel&&(b&&(l.fill=e.dataLabel.attrs.fill,l["text-bound"]=e.dataLabel.attrs["text-bound"]),d=b?e.dataLabel.attrs:l,J(e.dataLabel,d,a,b))},heatmap:function(a,b,d){var e,g,k,m,p,q,t;a=V(a);if(!d)for(a.alpha||(a.alpha=30),q={color:a.bordercolor,alpha:a.alpha},this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),m=0,p=
+this.data.length;m<p;m++){e=this.data[m];g=this.plot.items[m];d=g.graphic;if(g.dataLabels)for(t=0;t<g.dataLabels.length;t++)b&&0===t&&(l.fill=g.dataLabels[t].attrs.fill,l["text-bound"]=g.dataLabels[t].attrs["text-bound"]),k=b?g.dataLabels[t].attrs:l,J(g.dataLabels[t],k,a,b);g=r(e.color);e=E(e.color);k=a.bordercolor?F(q):this.borderColor;a.color&&-1===a.color.indexOf("#")&&(a.color="#"+a.color);d.attr({fill:b?c(a.color,e):e,opacity:b?c(a.alpha/100,g):g,stroke:b?k:this.borderColor})}},boxandwhisker2d:function(a,
+b,c){var d,g,k,m,q,t;a=V(a);if(!1===c)for(a.alpha||(a.alpha=30),this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),c=0,d=this.data.length;c<d;c++){g=this.data[c];k=this.plot.items[c];if(m=this.plot.items.displayValues.medianValues&&this.plot.items.displayValues.medianValues[c])b&&(l.fill=m.attrs.fill,l["text-bound"]=m.attrs["text-bound"]),q=b?m.attrs:l,J(m,q,a,b);m=k.errorValues;for(t=0;t<m.length;t++)b&&(l.fill=m[t].attrs.fill,l["text-bound"]=
+m[t].attrs["text-bound"]),q=b?m[t].attrs:l,J(m[t],q,a,b);q=a;m=b;t=this.isRoundEdges;var u={},v={},G=u=v=void 0,L=void 0,A=void 0,S=void 0,aa=void 0,fa=void 0,va=void 0,Y=void 0;m?(v=e.graphics.getColumnColor(q.color||g.color.FCcolor.color,q.alpha.toString(),g.color.FCcolor.ratio,g.color.FCcolor.angle,t,q.bordercolor||E(g.upperBoxBorder.color),q.borderalpha&&q.borderalpha.toString()||(100*r(g.lowerBoxBorder.color)).toString()),v=F(v[0]),u=e.graphics.getColumnColor(q.color||g.lowerboxColor.FCcolor.color,
+q.alpha.toString(),g.lowerboxColor.FCcolor.ratio,g.lowerboxColor.FCcolor.angle,t,q.bordercolor||E(g.lowerBoxBorder.color),q.borderalpha&&q.borderalpha.toString()||(100*r(g.lowerBoxBorder.color)).toString()),u=F(u[0]),G=p(g.errorValue[0].errorBarColor,q,m),L=p(g.errorValue[1].errorBarColor,q,m),A=p(g.median.color,q,m),fa=p(g.lowerQuartile.color,q,m),va=p(g.upperQuartile.color,q,m)):(v=F(g.color),u=F(g.lowerboxColor),A=g.median.color,G=g.errorValue[0].errorBarColor,L=g.errorValue[1].errorBarColor,S=
+g.upperBoxBorder.color,aa=g.lowerBoxBorder.color,va=g.upperQuartile.color,fa=g.lowerQuartile.color);Y=k.upperBox;Y.attr({fill:v,"drop-shadow":Y.attrs["drop-shadow"]&&"none"!==Y.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(v)+")",Y.attrs[4],Y.attrs["drop-shadow"][5]]:"none"});Y=k.lowerBox;Y.attr({fill:u,"drop-shadow":Y.attrs["drop-shadow"]&&"none"!==Y.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(u)+")",Y.attrs[4],Y.attrs["drop-shadow"][5]]:"none"});Y=k.errorBars&&k.errorBars[0];Y.attr({stroke:G,
+"drop-shadow":Y.attrs["drop-shadow"]&&"none"!==Y.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(G)+")",Y.attrs[4],Y.attrs["drop-shadow"][5]]:"none"});Y=k.errorBars&&k.errorBars[1];Y.attr({stroke:L,"drop-shadow":Y.attrs["drop-shadow"]&&"none"!==Y.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(L)+")",Y.attrs[4],Y.attrs["drop-shadow"][5]]:"none"});Y=k.lowerBoxBorder;Y.attr({stroke:aa});k.upperBoxBorder&&k.upperBoxBorder.attr({stroke:S});k.lowerQuartile&&k.lowerQuartile.attr({stroke:fa});k.upperQuartile&&
+k.upperQuartile.attr({stroke:va});k.medianBorder&&k.medianBorder.attr({stroke:A})}},"default":function(a,b,c){var d,g,k,p,t,u;a=V(a);var v,E;v="";var G,L=e.graphics.getColumnColor;if(!1===c)for(a.alpha||(a.alpha="30"),c=a.borderalpha||a.alpha,this.plot.legend&&this.plot.legend.elements&&!0===this.plot.visible&&T(this.plot.legend.elements,this.plot.legend,a,b),G=this.plot.items.length?this.plot.items:this.plot.components.data,k=0,p=G.length;k<p;k++)if(g=G[k],this.plot.components?(d={color:G[k].config.colorArr[0],
+borderColor:G[k].config.colorArr[1]},u=this.plot.conf.isRoundEdges):(d=this.data[k],u=d.isRoundEdges),g){if(v=g.dataLabel||g.graphics&&g.graphics.label)b&&(l.fill=v.attrs.fill,l["text-bound"]=v.attrs["text-bound"]),t=b?v.attrs:l,J(v,t,a,b);g.errorBars&&m(g.errorBars,d,a,b,this.errorBarColor);if(g=g.graphic||g.graphics&&g.graphics.element)v=d.color.FCcolor.color,t=c,this.is3d&&"0"===d.borderColor.FCcolor.alpha&&(t=d.borderColor.FCcolor.alpha),v=-1!==(E=v.indexOf(","))&&a.color?a.color+d.color.FCcolor.color.substring(E):
+a.color||v,0===q(d.borderColor.FCcolor.alpha)&&(t="0"),u=b?L(v,a.alpha,d.color.FCcolor.ratio,d.color.FCcolor.angle,u,a.bordercolor||d.borderColor.FCcolor.color,t,this.isBar,this.is3d):[d.color,d.borderColor],d=F(u[0]),u=F(u[1]),g.attr({stroke:u,fill:d,"drop-shadow":g.attrs["drop-shadow"]&&"none"!==g.attrs["drop-shadow"]?[1,1,3,"rgba(64,64,64,"+r(d)+")",g.attrs[4],g.attrs["drop-shadow"][5]]:"none"})}}})}]);
diff --git a/webapp/js/fusioncharts.theme.fint.js b/webapp/js/fusioncharts.theme.fint.js
new file mode 100644
index 0000000..4e2637a
--- /dev/null
+++ b/webapp/js/fusioncharts.theme.fint.js
@@ -0,0 +1,18 @@
+/*
+ Fint Theme v0.0.3
+ FusionCharts JavaScript Library
+
+ Copyright FusionCharts Technologies LLP
+ License Information at <http://www.fusioncharts.com/license>
+*/
+FusionCharts.register("theme",{name:"fint",theme:{base:{chart:{paletteColors:"#0075c2,#1aaf5d,#f2c500,#f45b00,#8e0000,#0e948c,#8cbb2c,#f3de00,#c02d00,#5b0101",labelDisplay:"auto",baseFontColor:"#333333",baseFont:"Helvetica Neue,Arial",captionFontSize:"14",subcaptionFontSize:"14",subcaptionFontBold:"0",showBorder:"0",bgColor:"#ffffff",showShadow:"0",canvasBgColor:"#ffffff",showCanvasBorder:"0",useplotgradientcolor:"0",useRoundEdges:"0",showPlotBorder:"0",showAlternateHGridColor:"0",showAlternateVGridColor:"0",
+toolTipColor:"#ffffff",toolTipBorderThickness:"0",toolTipBgColor:"#000000",toolTipBgAlpha:"80",toolTipBorderRadius:"2",toolTipPadding:"5",legendBgAlpha:"0",legendBorderAlpha:"0",legendShadow:"0",legendItemFontSize:"10",legendItemFontColor:"#666666",legendCaptionFontSize:"9",divlineAlpha:"100",divlineColor:"#999999",divlineThickness:"1",divLineIsDashed:"1",divLineDashLen:"1",divLineGapLen:"1",scrollheight:"10",flatScrollBars:"1",scrollShowButtons:"0",scrollColor:"#cccccc",showHoverEffect:"1",valueFontSize:"10",
+showXAxisLine:"1",xAxisLineThickness:"1",xAxisLineColor:"#999999"},dataset:[{}],trendlines:[{}]},geo:{chart:{showLabels:"0",fillColor:"#0075c2",showBorder:"1",borderColor:"#eeeeee",borderThickness:"1",borderAlpha:"50",entityFillhoverColor:"#0075c2",entityFillhoverAlpha:"80",connectorColor:"#cccccc",connectorThickness:"1.5",markerFillHoverAlpha:"90"}},pie2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",captionPadding:"15"},data:function(c,a,b){a=window.Math;return{alpha:100-
+(50<b?a.round(100/a.ceil(b/10)):20)*a.floor(c/10)}}},doughnut2d:{chart:{placeValuesInside:"0",use3dlighting:"0",valueFontColor:"#333333",centerLabelFontSize:"12",centerLabelBold:"1",centerLabelFontColor:"#333333",captionPadding:"15"},data:function(c,a,b){a=window.Math;return{alpha:100-(50<b?a.round(100/a.ceil(b/10)):20)*a.floor(c/10)}}},line:{chart:{lineThickness:"2"}},spline:{chart:{lineThickness:"2"}},column2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},
+bar2d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},column3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},bar3d:{chart:{paletteColors:"#0075c2",valueFontColor:"#ffffff",placeValuesInside:"1"}},area2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},splinearea:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},mscolumn2d:{chart:{valueFontColor:"#ffffff",
+placeValuesInside:"1",rotateValues:"1"}},mscolumn3d:{chart:{showValues:"0"}},msstackedcolumn2dlinedy:{chart:{showValues:"0"}},stackedcolumn2d:{chart:{showValues:"0"}},stackedarea2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},stackedbar2d:{chart:{showValues:"0"}},msstackedcolumn2d:{chart:{showValues:"0"}},mscombi3d:{chart:{showValues:"0"}},mscombi2d:{chart:{showValues:"0"}},mscolumn3dlinedy:{chart:{showValues:"0"}},stackedcolumn3dline:{chart:{showValues:"0"}},
+stackedcolumn2dline:{chart:{showValues:"0"}},scrollstackedcolumn2d:{chart:{valueFontColor:"#ffffff"}},scrollcombi2d:{chart:{showValues:"0"}},scrollcombidy2d:{chart:{showValues:"0"}},logstackedcolumn2d:{chart:{showValues:"0"}},logmsline:{chart:{showValues:"0"}},logmscolumn2d:{chart:{showValues:"0"}},msstackedcombidy2d:{chart:{showValues:"0"}},scrollcolumn2d:{chart:{valueFontColor:"#ffffff",placeValuesInside:"1",rotateValues:"1"}},pareto2d:{chart:{paletteColors:"#0075c2",showValues:"0"}},pareto3d:{chart:{paletteColors:"#0075c2",
+showValues:"0"}},angulargauge:{chart:{pivotFillColor:"#ffffff",pivotRadius:"4",gaugeFillMix:"{light+0}",showTickValues:"1",majorTMHeight:"12",majorTMThickness:"2",majorTMColor:"#000000",minorTMNumber:"0",tickValueDistance:"10",valueFontSize:"24",valueFontBold:"1",gaugeInnerRadius:"50%",showHoverEffect:"0"},dials:{dial:[{baseWidth:"10",rearExtension:"7",bgColor:"#000000",bgAlpha:"100",borderColor:"#666666",bgHoverAlpha:"20"}]}},hlineargauge:{chart:{pointerFillColor:"#ffffff",gaugeFillMix:"{light+0}",
+showTickValues:"1",majorTMHeight:"3",majorTMColor:"#000000",minorTMNumber:"0",valueFontSize:"18",valueFontBold:"1"},pointers:{pointer:[{}]}},bubble:{chart:{use3dlighting:"0",showplotborder:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0",plotFillHoverColor:"#2b8ecf"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},
+scatter:{chart:{use3dlighting:"0",showYAxisLine:"1",yAxisLineThickness:"1",yAxisLineColor:"#999999",showAlternateHGridColor:"0",showAlternateVGridColor:"0"},categories:[{verticalLineDashed:"1",verticalLineDashLen:"1",verticalLineDashGap:"1",verticalLineThickness:"1",verticalLineColor:"#000000",category:[{}]}],vtrendlines:[{line:[{alpha:"0"}]}]},boxandwhisker2d:{chart:{valueBgColor:"#ffffff",valueBgAlpha:"90",valueBorderPadding:"-2",valueBorderRadius:"2"}},thermometer:{chart:{gaugeFillColor:"#0075c2"}},
+cylinder:{chart:{cylFillColor:"#0075c2"}},sparkline:{chart:{linecolor:"#0075c2"}},sparkcolumn:{chart:{plotFillColor:"#0075c2"}},sparkwinloss:{chart:{winColor:"#0075c2",lossColor:"#1aaf5d",drawColor:"#f2c500",scoreLessColor:"#f45b00"}},hbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}},vbullet:{chart:{plotFillColor:"#0075c2",targetColor:"#1aaf5d"}}}});
diff --git a/webapp/js/fusioncharts.widgets.js b/webapp/js/fusioncharts.widgets.js
new file mode 100644
index 0000000..c2d4b3a
--- /dev/null
+++ b/webapp/js/fusioncharts.widgets.js
@@ -0,0 +1,458 @@
+/*
+ FusionCharts JavaScript Library
+ Copyright FusionCharts Technologies LLP
+ License Information at <http://www.fusioncharts.com/license>
+
+ @version 3.10.1
+*/
+FusionCharts.register("module",["private","modules.renderer.js-messagelogger",function(){var V=this.hcLib,mb=V.Raphael,Fa,eb=V.isIE,qa=V.graphics.HEXtoRGB,I=V.graphics.convertColor,Ga,J,Ta,Ka,q,E,h,Ua,Ba,U,Y,fa,ta,Na,ub=this.window,pa=ub.document,zb=8===pa.documentMode,na=!0,da=!1,L=V.pluck,xa=V.pluckNumber,Ab=V.FC_CONFIG_STRING,Ya={display:"block",paddingLeft:"10px",paddingRight:"10px","font-family":"Arial","font-size":"11px"},v=function(h,q){var y=this,E;q||(q="");for(E=y.indexOf(h);-1!==E;)y=y.replace(h,
+q),E=y.indexOf(h);return y};Na=function(v,L,y){var J=v.hcJSON,Y=J&&J[Ab],U=L&&L.chartWidth,ca=L&&L.chartHeight,J=Ka/100*U,ta=q/100*ca,ka=(U-J)/2,ja=(ca-ta)/2,xa=J-18-22,ra=ta-18-22,pa=Ua,qa=Ua;v=y.html("div",{fill:"transparent",width:U,height:ca},{fontSize:"10px",lineHeight:"15px",fontFamily:(Y&&Y.inCanvasStyle||v.inCanvasStyle).fontFamily},L&&L.container);v.veil=y.html("div",{id:"veil",fill:"000000",width:U,height:ca,opacity:.1},void 0,v).on("click",function(){fa&&V.messageLogger.close()});h&&E&&
+(v.title=y.html("p",{id:"Title",innerHTML:h,x:5,y:5},{"font-weight":"bold"},v));v.dialog=y.html("div",{id:"dialog",x:ka,y:ja,fill:"ffffff",strokeWidth:1,stroke:pa,width:J,height:ta},{borderRadius:"5px",boxShadow:"1px 1px 3px #000000","-webkit-border-radius":"5px","-webkit-box-shadow":"1px 1px 3px #000000",filter:'progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")'},v);v.logBackground=y.html("div",{id:"dialogBackground",x:0,y:0,fill:qa,width:J,height:ta},void 0,v.dialog);
+fa&&(v.closeBtnContainer=y.html("div",{id:"closeBtnContainer",width:18,height:18,x:ka+J-21,y:ja+3},{},v),L=new mb("closeBtnContainer",18,18),U=L.group("closeGroup"),v.closeButton=L.symbol("closeIcon",0,0,6,U).attr({transform:"t9,9","stroke-width":2,stroke:I("999999"),ishot:!0,"stroke-linecap":"round","stroke-linejoin":"round"}).css({cursor:"pointer",_cursor:"hand"}).click(function(){V.messageLogger.close()}));v.logWrapper=y.html("div",{id:"logWrapper",x:(J-xa)/2,y:(ta-ra)/2,width:xa,height:ra},{overflow:"auto"},
+v.dialog).on("scroll",function(){var h=this&&this.scrollTop,q=this&&this.scrollHeight,y=this&&this.offsetHeight;da?da=!1:na=q-h===y?!0:!1});v.log=y.html("div",{id:"log",x:0,y:0},{},v.logWrapper);v.hide();return v};Fa=function(h,q,y,v){if(V.messageLogger)return V.messageLogger;this.chart=h;this.instanceAPI=q;this.renderer=y;this.paper=v;this.menuCreated=!1;this.log=(h=this.ui=Na(q,y,v))&&h.log;h&&this.updateStatus("INITIALIZED")};Fa.prototype={STATUS:"",updateStatus:function(h){var q=this.renderer,
+q=q&&q.menu instanceof Array&&q.menu[0];this.status=h;switch(q&&this.status.toLowerCase()){case "initialized":Ga?q.hideItem(4):q.hideItem(1);break;case "closed":Ga?q.showItem(3):q.showItem(0);Ga?q.hideItem(4):q.hideItem(1);break;case "active":Ga?q.showItem(4):q.showItem(1),Ga?q.hideItem(3):q.hideItem(0)}},appendMessage:function(h){var q=this.status,y=L(h.msgid,""),E=L(h.msgtitle,""),J=L(h.msgtext,""),I=h&&L(h.msgtype,"literal"),ca=h&&!!xa(h.clearlog,0),ta=h&&!!xa(h.hidelog,0),ka=h&&!!xa(h.showlog,
+0),ja=h&&!!xa(h.msggoestolog,Ta),Ka=h&&!!xa(h.msggoestojs,Ba);ja&&"INITIALIZED"===q&&this.updateStatus("CLOSED");ta&&this.close();ca&&this.clear();ka&&this.open();ja&&"ACTIVE"!==this.status&&this.show();if((""!==E&&void 0!==E||""!==J&&void 0!==J)&&this.log&&ja){var q=this.log,ca=h&&h.msgtitle,ta=h&&h.msgtext,ka=h&&L(h.msgtype,"literal"),ra,V;h="";var fa,ya,ha;q&&q.element&&(fa=q.element);fa&&(ya=fa.parentElement);ca&&(ca+=" : ");switch(ka.toLowerCase()){case "info":ca&&(ra='<span style="color: #005900">$titleVal$</span>');
+ta&&(V="<span>$msgVal$</span>");break;case "literal":ca&&(ra='<span style="color: #005900">$titleVal$</span>');ta&&(V="<span>$msgVal$</span>");break;case "error":ca&&(ra='<span style="color: #CC0000">$titleVal$</span>');ta&&(V='<span style="color: #CC0000">$msgVal$</span>');break;case "link":ca&&(ra='<span style="color: #005900">$titleVal$</span>');ta&&(V='<a href="$msgVal$">$msgVal$</a>');break;default:ca&&(ra='<span style="color: #005900">$titleVal$</span>'),ta&&(V="<span>$msgVal$</span>")}ra&&
+(ra=ra.replace("$titleVal$",ca),h+=ra);V&&(V=v.call(V,"$msgVal$",ta),h+=V);if(fa&&h){ra=pa.createElement("span");for(ha in Ya)ra.style[ha]=Ya[ha];ra.innerHTML=h;fa.appendChild&&fa.appendChild(ra);eb&&zb&&(ha=fa.innerHTML,fa.innerHTML=ha);na&&(da=!0,fa=ya.scrollHeight,ya.scrollTop=fa)}eb||(this.ui.element.scrollHeight+=30,this.ui.element.scrollTop=this.ui.element.scrollHeight)}Ka&&U&&(Ka=ub[U],"function"===typeof Ka&&(Y?Ka(y,E,J,I):Ka(J)))},hide:function(){"ACTIVE"===this.status&&(this.ui.hide(),this.updateStatus("BEFORE CLOSE"))},
+close:function(){"ACTIVE"===this.status&&(this.ui.hide(),this.updateStatus("CLOSED"))},open:function(){"ACTIVE"!==this.status&&(this.ui.show(),this.updateStatus("ACTIVE"))},show:function(){"ACTIVE"!==this.status&&"CLOSED"!==this.status&&(this.ui.show(),this.updateStatus("ACTIVE"))},clear:function(){var h=this.log;if(h=h&&h.element)for(;h.hasChildNodes();)h.removeChild(h.lastChild)},destroy:function(){this.hide();this.updateStatus("DESTROYED");V.messageLogger=null;delete V.messageLogger;return null}};
+Fa.prototype.constructor=Fa;this.core.addEventListener(["rendered","dataupdated","resized"],function(v){var L=v&&v.sender;v=v&&v.eventType;var y=L&&L.jsVars,I=y&&y.hcObj,da=I&&I.options,na=y&&y.instanceAPI,ca=na&&na.renderer,I=ca&&ca.paper,da=da&&da.chart,pa=L&&L.options,pa=pa&&pa.renderer,ka=V&&V.messageLogger,ja=ka&&ka.status,Ya=y&&y._reflowData,ra=Ya&&Ya._messageLogger||{},y=ra&&ra.appendedMessages,Na;if(!pa||"javascript"===pa.toLowerCase())if(J=da&&da.useMessageLog){da&&(Ga=da.showRTMenuItem,
+Ta=da.messageGoesToLog,Ba=da.messageGoesToJS,U=da.messageJSHandler,Y=da.messagePassAllToJS,Ka=da.messageLogWPercent,q=da.messageLogHPercent,E=da.messageLogShowTitle,h=da.messageLogTitle,fa=da.messageLogIsCancelable,Ua=da.messageLogColor,Ua=Ua.replace(/^#?([a-f0-9]+)/ig,"$1"),qa(Ua),ta=da.alwaysShowMessageLogMenu);ka&&(ka=V.messageLogger=ka.destroy());Na=(ka=V.messageLogger=new Fa(L,na,ca,I))&&ka.ui&&ka.ui.log&&ka.ui.log.element;if("resized"===v)switch(y&&(Na.innerHTML=y),ja.toLowerCase()){case "active":ka.ui.show();
+ka.updateStatus(ja);break;case "closed":ka.updateStatus(ja)}ta&&(ka.menuCreated=!0);L.addEventListener("RealTimeUpdateComplete",function(h,q){var y=q&&q.updateObject,v=y&&y.msgtitle,E=y&&y.msgtext,I=y&&xa(y.showlog,0),da=y&&xa(y.hidelog,0),Y=y&&xa(y.clearlog,0);if(v||E||I||da||Y)!J||Ga||!Ta||ta||ka.menuCreated||(na.drawMLMenuButtons.call(ca,L),ka.menuCreated=!0),ka.appendMessage(y),ra.appendedMessages=Na&&Na.innerHTML,Ya._messageLogger=ra});L.addEventListener("beforeDispose",function(){ka&&ka.destroy()})}})}]);
+FusionCharts.register("module",["private","modules.renderer.js-realtime",function(){var V=this,mb=V.window,Fa=Math,eb=Fa.random,qa=Fa.max,I=V.hcLib.pluckNumber,Ga=function(I,q,E){clearTimeout(E);return setTimeout(I,q)},J,Ta;J=function(I){var q=I.sender,E=q.jsVars;I=q.__state;var h=E.instanceAPI,J=h.hcJSON,Ba=h.numberFormatter,U=J&&J.alerts&&J.alerts.alert||[],E=E._rtLastUpdatedData&&E._rtLastUpdatedData.values,Y=U.length,fa;if(E&&E.length){h=function(h){var E,I=Ba.getCleanValue(h),J,fa=function(h){return function(){eval(h.param)}};
+for(J=0;J<Y;J+=1)if(h=U[J],E=h.action&&h.action.toLowerCase(),h.minvalue<=I&&h.maxvalue>=I){if("1"!==h.occuronce||!h.hasOccurred){h.hasOccurred=!0;h.state="1";switch(E){case "calljs":setTimeout(fa(h),0);break;case "showannotation":q.showAnnotation&&q.showAnnotation(h.param)}V.raiseEvent("AlertComplete",{alertValue:I,alertMaxValue:h.maxvalue,alertMinValue:h.minvalue},q)}}else"showannotation"===E&&"1"===h.state&&q.hideAnnotation&&q.hideAnnotation(h.param),h.state="2"};J=qa(E.length,0);for(fa=0;fa<J;fa+=
+1)I.lastSetValues&&E[fa]===I.lastSetValues[fa]||h(E[fa]);I.lastSetValues=E}};Ta=function(Ka){var q=Ka.sender,E=q.__state,h,qa,Ba,U,Y,fa,ta,Na,Fa,pa,Ta,na;E.dataSetDuringConstruction&&!E.rtStateChanged&&void 0===E.rtPreInit&&(q.dataReady()?(E.rtStateChanged=!0,E.rtPreInit=!0):E.rtPreInit=!1);E.rtStateChanged&&(E.rtStateChanged=!1,h=q.jsVars,qa=h.hcObj)&&(Ba=qa.logic,Y=(U=qa.options)&&U.chart||{},fa=1E3*I(Y.updateInterval,Y.refreshInterval),ta=1E3*I(Y.clearInterval,0),Na=Y.dataStreamURL,Fa=Y.dataStamp,
+Y=Boolean(Ba&&Ba.realtimeEnabled&&0<fa&&void 0!==Na&&Y),U=U&&U.plotOptions&&U.plotOptions.series.animation&&U.plotOptions.series.animation.duration||0,pa=E._rtAjaxObj,Ta=function(){q.clearChart&&q.clearChart();ta&&(E._toClearChart=setTimeout(Ta,ta))},na=function(){var h=Na,h=h+((-1===Na.indexOf("?")?"?num=":"&num=")+eb());Fa&&(h+="&dataStamp="+Fa);pa.open&&pa.abort();pa.get(h);E._rtAjaxLatencyStart=new Date},0>=fa?(E._toRealtime=clearTimeout(E._toRealtime),pa&&pa.abort()):10>fa&&(fa=10),E._toClearChart=
+clearTimeout(E._toClearChart),0<ta&&(10>ta?ta=10:E._toClearChart=setTimeout(Ta,ta)),E._rtStaticRefreshMS=fa,Y&&(void 0===E._rtPaused&&(E._rtPaused=!1),E._rtDataUrl=Na,E.lastSetValues=null,pa=E._rtAjaxObj||(E._rtAjaxObj=new V.ajax),pa.onSuccess=function(I,L,J,Y){if(!q.disposed){var U=h.hcObj&&h.hcObj.logic;J=U.linearDataParser&&U.linearDataParser(I,U.multisetRealtime);E._rtAjaxLatencyStart&&(E._rtAjaxLatency=new Date-E._rtAjaxLatencyStart);if(q.isActive()&&J&&qa&&(qa.realtimeUpdate||U.realtimeUpdate)){Fa=
+J.dataStamp?J.dataStamp:null;J.interval=1E3>fa?fa:1E3;L=q.getDataJSON();qa.realtimeUpdate?qa.realtimeUpdate(J):U.realtimeUpdate(J);h._rtLastUpdatedData=U.multisetRealtime?J:q.getDataJSON();U=(U.realtimeDrawingLatency||0)+(E._rtAjaxLatency||0);V.raiseEvent("realtimeUpdateComplete",{data:I,updateObject:J,prevData:L.values,source:"XmlHttpRequest",url:Y,networkLatency:E._rtAjaxLatency,latency:U},Ka.sender);try{mb.FC_ChartUpdated&&mb.FC_ChartUpdated(Ka.sender.id)}catch(v){setTimeout(function(){throw v;
+},1)}E._rtPaused||(U>=E._rtStaticRefreshMS&&(U=E._rtStaticRefreshMS-1),E._toRealtime=setTimeout(na,E._rtStaticRefreshMS-U))}else E._toRealtime=clearTimeout(E._toRealtime)}},pa.onError=function(h,J,I,U){E._rtAjaxLatencyStart&&(E._rtAjaxLatency=new Date-E._rtAjaxLatencyStart);V.raiseEvent("realtimeUpdateError",{source:"XmlHttpRequest",url:U,xmlHttpRequestObject:J.xhr,error:h,httpStatus:J.xhr&&J.xhr.status?J.xhr.status:-1,networkLatency:E._rtAjaxLatency},Ka.sender);E._toRealtime=q.isActive()?setTimeout(na,
+fa):clearTimeout(E._toRealtime)},E._rtPaused||(E._toRealtime=Ga(na,U>fa?U:fa,E._toRealtime))),q.removeEventListener("realtimeUpdateComplete",J),Ba.dataObj&&Ba.dataObj.alerts&&Ba.dataObj.alerts&&Ba.dataObj.alerts.alert&&Ba.dataObj.alerts.alert.length&&q.addEventListener("realtimeUpdateComplete",J))};V.addEventListener(["beforeDataUpdate","beforeRender"],function(J){J=J.sender;var q=J.__state;J.jsVars&&(J.jsVars._rtLastUpdatedData=null);q._toRealtime&&(q._toRealtime=clearTimeout(q._toRealtime));q._toClearChart&&
+(q._toClearChart=clearTimeout(q._toClearChart));q._rtAjaxLatencyStart=null;q._rtAjaxLatency=null});V.addEventListener(["renderComplete","dataUpdated"],function(J){var q=J.sender.__state;q&&(void 0===q.rtPreInit&&(q.rtPreInit=!1),q._rtPaused&&delete q._rtPaused,q.rtStateChanged||(q.rtStateChanged=!0,Ta.apply(this,arguments)))});V.core.addEventListener("beforeDispose",function(J){J=J.sender.__state;J._toRealtime&&(J._toRealtime=clearTimeout(J._toRealtime));J._toClearChart&&(J._toClearChart=clearTimeout(J._toClearChart))});
+V.core.addEventListener("drawComplete",Ta)}]);
+FusionCharts.register("module",["private","modules.renderer.js-widgets",function(){function V(){}function mb(a,e,c,d){e=h(e,d);a=h(a,c);return e&&a?a/c==e/d?c/a:Math.min(c/a,d/e):1}function Fa(a,e){var c=a.labels,d=c._textY,b=c._righttX,c=c._leftX,f,n,g=e.length;for(f=0;f<g;f+=1)if(n=e[f]&&e[f].label)n.y=d,n.x=n.align===gb?b:c}function eb(a,e,c,d){var b,f,n,g,p,m;c instanceof Array||(c=this.colorManager.getPlotColor(0));if(a&&0<a.length){for(f=n=a.length-1;0<=f;--f)if(b=a[f])b.minvalue=d.numberFormatter.getCleanValue(b.minvalue),
+b.maxvalue=d.numberFormatter.getCleanValue(b.maxvalue),null===b.minvalue&&(null!==b.maxvalue?b.minvalue=b.maxvalue:f!==n&&a.splice(f,1)),void 0!==b.label&&(b.label=ca(b.label)),void 0!==b.name&&(b.name=ca(b.name)),null!==b.maxvalue&&b.minvalue>b.maxvalue&&(g=b.minvalue,b.minvalue=b.maxvalue,b.maxvalue=g);a.sort(Nb);a[0].code||(a[0].code=c[0]);void 0===E(a[0].alpha)&&(a[0].alpha=Ia);f=0;for(n=a.length-1;f<n;f+=1)if(g=f+1,b=a[f],d=a[g],d.code||(d.code=c[g]),void 0===E(d.alpha)&&(d.alpha=Ia),null===
+b.maxvalue&&(b.maxvalue=d.minvalue),b.maxvalue>d.minvalue){if(b.maxvalue>d.maxvalue){g=Y(b);g.maxvalue=b.maxvalue;m=g.minvalue=d.maxvalue;for(p=f+2;p<n&&a[p].minvalue<m;p+=1);a.splice(p,0,g);n+=1}b.maxvalue=d.minvalue}b=a[f];null===b.maxvalue&&(b.maxvalue=b.minvalue)}a&&0<a.length||(e||(e={code:"CCCCCC",alpha:"100",bordercolor:"000000",borderalpha:"100"}),a=[e],this.defaultAsigned=!0);this.colorArr=a}var qa=this,I=qa.hcLib,Ga=I.Raphael,J=I.BLANKSTRING,Ta=I.createTrendLine,Ka=I.createContextMenu,q=
+I.pluck,E=I.getValidValue,h=I.pluckNumber,Ua=I.getFirstDefinedValue,Ba=I.getColorCodeString,U=I.FC_CONFIG_STRING,Y=I.extend2,fa=I.getDashStyle,ta=I.hashify,Na=I.hasSVG,ub=I.falseFN,pa=I.getFirstValue,zb=I.getFirstColor,na=I.graphics.getDarkColor,da=I.graphics.getLightColor,L=I.graphics.convertColor,xa=I.graphics.parseColor,Ab=I.graphics.parseAlpha,Ya=I.COLOR_TRANSPARENT,v=I.chartAPI,ab=I.parseTooltext,Vb=v.singleseries,y=I.COMMASTRING,fb=I.ZEROSTRING,Kb=I.ONESTRING,Wb=/\\,/ig,ca=I.parseUnsafeString,
+Xb=I.HCstub,ka=qa.window,ja=/msie/i.test(ka.navigator.userAgent)&&!ka.opera,vb=I.regex.hexcode,ra="rgba(192,192,192,"+(ja?.002:1E-6)+")",Yb=parseFloat,Zb=parseInt,ya=Math,ha=ya.round,Lb=ya.ceil,Ca=ya.max,La=ya.min,Bb=ya.abs,Mb=ya.atan2,ia=ya.pow,pb=ya.sqrt,hb=ya.PI/180,ib=I.regex.dropHash,Cb=I.toPrecision,$b=I.isArray,nb=I.HASHSTRING,X=I.toRaphaelColor,ya=I.TOUCH_THRESHOLD_PIXELS,ac=I.CLICK_THRESHOLD_PIXELS,Db=void 0!==ka.document.documentElement.ontouchstart,Eb=Db?ya:ac,bc=I.getPosition,la=I.plotEventHandler,
+Nb,Fb,Gb,Hb,kb,Ob,Pb,Qb,cc={left:"start",right:"end",center:"middle"},wb={"true":void 0,"false":"crisp"},dc=function(a,e,c){var d=0,b=a.length;if(c)for(;d<b;d++){if(!1===e.call(c,a[d],d,a))return d}else for(;d<b;d++)if(!1===e.call(a[d],a[d],d,a))return d},Ma=function(a,e){var c;a||(a={});for(c in e)a[c]=e[c];return a},qb=function(a){return"object"===typeof a},bb=function(a){return"string"===typeof a},ga=function(a){return void 0!==a&&null!==a},xb=ja&&!Na?"visible":"",yb=I.regex.startsRGBA,Oa=I.setLineHeight,
+Rb=I.pluckFontSize,Va=I.POSITION_MIDDLE,cb=I.POSITION_TOP,rb=I.POSITION_BOTTOM,gb=I.POSITION_RIGHT,Wa=I.POSITION_LEFT,Aa=I.POSITION_MIDDLE,Ia=I.HUNDREDSTRING,ob=I.PXSTRING,Sb=I.COMMASPACE,Ha={right:"end",left:"start",middle:"middle",start:"start",end:"end",center:"middle",undefined:"","":""},ja=!/fusioncharts\.com$/i.test(ka.location.hostname),ec=function(){return function(a,e,c){var d,b=this,f=this._Attr,n=Ga.vml?-1.5:0,g=Ga.vml?-1.5:0,p;f||(f=b._Attr={});bb(a)&&ga(e)&&(d=a,a={},a[d]=e);if(bb(a)||
+void 0===a)b="angle"==a?b._Attr[a]:b._attr(a);else for(d in a)e=a[d],"angle"===d?(f[d]=e,p=e*hb,f.tooltipPos[0]=f.cx+f.toolTipRadius*Math.cos(p),f.tooltipPos[1]=f.cy+f.toolTipRadius*Math.sin(p),f.prevValue=e,c&&c.duration?b.animate({transform:"R"+e+","+n+","+g},c.duration,"easeIn"):b.attr({transform:"R"+e+","+n+","+g})):b._attr(d,e);return b}},sb=function(a){var e=[],c;(function(a){(c=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(a))?e=[parseInt(c[1],
+10),parseInt(c[2],10),parseInt(c[3],10),parseFloat(c[4])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))&&(e=[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16),1])})(a);return{get:function(c){return e&&!isNaN(e[0])?"rgb"===c?"rgb("+e[0]+","+e[1]+","+e[2]+")":"hex"===c?"#"+("000000"+(e[0]<<16|e[1]<<8|e[2]).toString(16)).slice(-6):"a"===c?e[3]:"rgba("+e.join(",")+")":a},brighten:function(a){if(!isNaN(a)&&0!==a){var b;for(b=0;3>b;b++)e[b]+=parseInt(255*a,10),0>e[b]&&(e[b]=0),255<
+e[b]&&(e[b]=255)}return this},setOpacity:function(a){e[3]=a;return this}}},ya=Y({},I.defaultGaugePaletteOptions);V.prototype={numDecimals:function(a){a=Cb(a,10);a=Math.abs(a);a=Cb(a-Math.floor(a),10);a=String(a).length-2;return 0>a?0:a},toRadians:function(a){return a/180*Math.PI},toDegrees:function(a){return a/Math.PI*180},flashToStandardAngle:function(a){return-1*a},standardToFlashAngle:function(a){return-1*a},flash180ToStandardAngle:function(a){var e=360-(0>(a%=360)?a+360:a);return 360==e?0:e},
+getAngularPoint:function(a,e,c,d){d*=Math.PI/180;return{x:a+c*Math.cos(d),y:e-c*Math.sin(d)}},remainderOf:function(a,e){var c=a%e,d=void 0,d=ia(10,void 0===d?2:d),c=ha(Number(String(c*d)));return c/=d},boundAngle:function(a){return 0<=a?V.prototype.remainderOf(a,360):360-V.prototype.remainderOf(Math.abs(a),360)},toNearestTwip:function(a){var e=0>a?-1:1;a=ha(100*Math.abs(a));var c=Math.floor(a/5);return(2<Number(String(a-5*c))?5*c+5:5*c)/100*e},roundUp:function(a,e){var c=ia(10,void 0===e?2:e);a=ha(Number(String(a*
+c)));return a/=c}};V.prototype.constructor=V;I.MathExt=V;Fb=function(a,e,c,d,b,f,n,g){var p=a[U].smartLabel,m=e.chart,k=a.chart,l,t,r=0;e=a.title;n=a.subtitle;var u=e.text,w=n.text;b=h(m.captionpadding,b,2);var C=0,F=0,r=0,x=h(m.captiononright,0),q=E(m.captionposition,"top").toLowerCase(),m=0,z={left:0,right:0};g=g.snapLiterals||(g.snapLiterals={});var A=0,B=0;u!==J&&(l=e.style,C=h(parseInt(l.fontHeight,10),parseInt(l.lineHeight,10),12),h(parseInt(l.fontSize,10),10));w!==J&&(t=n.style,F=h(parseInt(t.fontHeight,
+10),parseInt(t.lineHeight,10),12),r=h(parseInt(t.fontSize,10),10));if(0<C||0<F){p.setStyle(l);l=p.getSmartText(e.text,c,d);0<l.width&&(l.width+=2,m=l.height);p.setStyle(t);t=p.getSmartText(n.text,c,d-m);0<t.width&&(t.width+=2);p=l.height+0+r/2;switch(q){case "middle":e.y=d/2-l.height;n.y=e.y+p;break;case "bottom":n.y=d-k.marginBottom-k.marginTop-t.height;e.y=n.y-(0<l.height?p:0);break;default:e.y=0,n.y=p}r=Math.max(l.width,t.width);a.title.text=l.text;l.tooltext&&(a.title.originalText=l.tooltext);
+a.subtitle.text=t.text;t.tooltext&&(a.subtitle.originalText=t.tooltext);0<r&&(r+=b);a=Math.min(r,c);x?(e.align=n.align=Ha.start,z.right=a,e.x=f-r+b,n.x=f-r+b):(e.align=n.align=Ha.end,z.left=a,e.x=r-b,n.x=r-b,A=a,B=t.width);e._captionWidth=l.width;n._subCaptionWidth=t.width;g.captionstartx=e.x-A;g.captionstarty=e.y;g.captionwidth=l.width;g.captionheight=m||0;g.captionendx=g.captionstartx+g.captionwidth;g.captionendy=g.captionstarty+g.captionheight;g.subcaptionstartx=n.x-B;g.subcaptionstarty=n.y;g.subcaptionwidth=
+0<t.width?t.width:0;g.subcaptionheight=0<t.height?t.height:0;g.subcaptionendx=g.subcaptionstartx+g.subcaptionwidth;g.subcaptionendy=g.subcaptionstarty+g.subcaptionheight}return z};Gb=function(a,e,c,d,b,f){var n=a.chart,g=e.chart;e=a.title;var p=h(g.captionpadding,2),g=h(g.captiononright,0);a=a.subtitle;f=f.snapLiterals;var m=0,k=0;n.spacingRight=n.spacingLeft=0;ga(d)||(d=0);ga(b)||(b=0);g?(c-=n.marginRight,a.align=e.align=Ha.start,e.x=a.x=c+p+b+2):(a.align=e.align=Ha.end,e.x=a.x=n.marginLeft-n.spacingLeft-
+p-d-2,m=e._captionWidth,k=a._subCaptionWidth);f.captionstartx=e.x-m;f.subcaptionstartx=a.x-k;f.captionendx=f.captionstartx+f.captionwidth;f.subcaptionendx=f.subcaptionstartx+f.subcaptionwidth};Hb=function(a,e,c,d,b){this.userMin=a;this.userMax=e;this.numMajorTM=h(d.majorTMNumber,-1);this.numMinorTM=h(d.minorTMNumber,5);this.adjustTM=d.adjustTM;this.tickValueStep=h(d.tickValueStep,1);this.showLimits=h(d.showLimits,1);this.showTickValues=h(d.showTickValues,1);this.nf=b;this.stopMaxAtZero=c;this.setMinAsZero=
+!d.setAdaptiveMin;this.upperLimitDisplay=d.upperLimitDisplay;this.lowerLimitDisplay=d.lowerLimitDisplay;this.userMaxGiven=null===this.userMax||void 0===this.userMax||""===this.userMax?!1:!0;this.userMinGiven=null===this.userMin||void 0===this.userMin||""===this.userMin?!1:!0;this.majorTM=[];this.minorTM=[];this.MathExt=new V};Hb.prototype={setAxisCoords:function(a,e){this.startAxisPos=a;this.endAxisPos=e},calculateLimits:function(a,e){var c=!0,d=!0,b=Number(this.userMax),f=Number(this.userMin),n,
+g;if(this.userMaxGiven&&this.userMinGiven)b>a&&(a=b),f<e&&(e=f);else if(isNaN(a)&&(a=.9,d=!1),isNaN(e)&&(e=0,c=!1),a===e&&0===a&&(isNaN(b)||(a=b),isNaN(b)||0===b))a=.9;n=Math.max(Math.floor(Math.log(Math.abs(e))/Math.LN10),Math.floor(Math.log(Math.abs(a))/Math.LN10));f=ia(10,n);2>Math.abs(a)/f&&2>Math.abs(e)/f&&(n--,f=ia(10,n));n=ia(10,Math.floor(Math.log(a-e)/Math.LN10));0<a-e&&10<=f/n&&(f=n);n=(Math.floor(a/f)+1)*f;0>e?g=-1*(Math.floor(Math.abs(e/f))+1)*f:this.setMinAsZero?g=0:(g=Math.floor(Math.abs(e/
+f)-1)*f,g=0>g?0:g);this.stopMaxAtZero&&0>=a&&(n=0);this.max=!1===this.userMaxGiven||!0===this.userMaxGiven&&b<a&&d?n:b;this.min=!1===this.userMinGiven||!0===this.userMinGiven&&Number(this.userMin)>e&&c?g:Number(this.userMin);this.min>this.max?this.min==Number(this.userMin)&&this.max==b?(c=this.min,this.min=this.max,this.max=c):this.min==Number(this.userMin)?this.max=this.min+1:this.max==b&&(this.min=this.max-1):this.min==this.max&&(this.max=this.min+1);this.range=Math.abs(this.max-this.min);this.interval=
+f;this.calcTickInterval()},calcTickInterval:function(){var a,e,c=0;-1!=this.numMajorTM&&2>this.numMajorTM&&(this.numMajorTM=2);!1===this.userMinGiven&&!1===this.userMaxGiven&&-1!==this.numMajorTM?(this.numMajorTM=-1==this.numMajorTM?5:this.numMajorTM,a=this.getDivisibleRange(this.min,this.max,this.numMajorTM,this.interval,!0),e=a-this.range,this.range=a,0<this.max?this.max+=e:this.min-=e):(this.numMajorTM=-1==this.numMajorTM?5:this.numMajorTM,!0===this.adjustTM&&(a=function(a,b){for(var c=0,e=1,g;;){g=
+b.numMajorTM+c*e;g=0===g?1:g;if(b.isRangeDivisible(a,g,b.interval))break;c=-1==e||c>b.numMajorTM?++c:c;if(25<c){g=b.numMajorTM;break}e=c<=b.numMajorTM?-1*e:1}b.numMajorTM=1<g?g:b.numMajorTM},e=this.numMajorTM,a(this.range,this),2===this.numMajorTM&&(this.numMajorTM=e,a(this.range+1,this),c=1)));this.majorTickInt=(this.max-this.min+c)/(this.numMajorTM-1)},isRangeDivisible:function(a,e,c){return this.MathExt.numDecimals(a/(e-1))>this.MathExt.numDecimals(c)?!1:!0},getDivisibleRange:function(a,e,c,d,
+b){if(3>c)return this.range;a=Math.abs(e-a);e=a/(c-1);this.isRangeDivisible(a,c,d)||(b&&Number(e)/Number(d)<(1<d?2:.5)&&(d/=10),e=(Math.floor(e/d)+1)*d,a=e*(c-1));return a},calculateTicks:function(){this.majorTM=[];this.minorTM=[];for(var a=0,e,c,d=this.numMajorTM,b=this.numMinorTM,f=this.nf,n=this.tickValueStep,g=ca(this.lowerLimitDisplay),p=ca(this.upperLimitDisplay),m=this.majorTickInt,k=this.min,l=this.showTickValues,t=!1,r=h(this.showLimits,l);a<d;a+=1)e=a<d-1?Cb(Number(k+m*a),10):this.max,c=
+f.scale(e),t=!1,0!==a%n&&a!==d-1?c=J:0===a||a===d-1?r?0===a&&g?(c=g,t=!0):a==d-1&&p&&(c=p,t=!0):c=J:l||(c=J),this.majorTM.push({displayValue:c,isString:t,value:e});c=m/(b+1);for(a=0;a<d-1;a+=1)for(e=1;e<=b;e+=1)this.minorTM.push(this.majorTM[a].value+c*e)},returnDataAsTick:function(a,e){var c={};c.value=a;c.displayValue=this.nf.dataLabels(a);c.showValue=e;return c},getMax:function(){return this.max},getMin:function(){return this.min},getMajorTM:function(){return this.majorTM},getMinorTM:function(){return this.minorTM},
+getAxisPosition:function(a){if(void 0===this.startAxisPos||void 0===this.endAxisPos)throw Error("Cannot calculate position, as axis co-ordinates have not been defined. Please use setAxisCoords() method to define the same.");return this.startAxisPos+(this.endAxisPos-this.startAxisPos)/(this.max-this.min)*(a-this.min)},getValueFromPosition:function(a){if(void 0===this.startAxisPos||void 0===this.endAxisPos)throw Error("Cannot calculate value, as axis co-ordinates have not been defined. Please use setAxisCoords() method to define the same.");
+var e,c;e=this.max-this.min;c=a-this.startAxisPos;return c/(c+(this.endAxisPos-a))*e+this.min}};v("gaugebase",{creditLabel:ja,defaultPaletteOptions:ya,multiValueGauge:!1,decimals:2,formatnumberscale:0,drawAnnotations:!0,useScaleRecursively:!0,includeColorRangeInLimits:!1,init:function(a,e,c){var d=c.jsVars;this.rtLatestSeriesData=d&&d._rtLastUpdatedData?d._rtLastUpdatedData:null;return v.base.init.apply(this,arguments)},chart:function(a,e){var c=this.name,d=this.dataObj||{},b=d.chart||{},f=this.defaultSeriesType,
+n=this.realtimeEnabled,g=this.colorManager,p,m=d.alerts,k,l,t,r,u,w,C,F,x,W,z,A,B;l=Xb(d,a,e,this);u=l.chart;k=l[U];l.labels.smartLabel=k.smartLabel=this.smartLabel;this.width=a;this.height=e;k.width=a;k.height=e;r=l.plotOptions;u.useRoundEdges=1==b.useroundedges;k.tooltext=b.plottooltext;k.targettooltext=b.targettooltext;p=(u.is3D=t=k.is3d=/3d$/.test(f))?I.chartPaletteStr.chart3D:I.chartPaletteStr.chart2D;u.defaultSeriesType=f;w=0<b.palette&&6>b.palette?b.palette:h(this.paletteIndex,1);--w;u.paletteIndex=
+w;f=Y({},d.colorrange);this.colorRangeGetter=new eb(f.color,void 0,this.defaultPaletteOptions.paletteColors[w],this);u.events.click=l.plotOptions.series.point.events.click=this.linkClickFN;void 0!==q(b.clickurl)&&(u.link=b.clickurl,u.style.cursor="pointer",l.plotOptions.series.point.events.click=function(){u.events.click.call({link:b.clickurl})});C=q(b.basefont,"Verdana,sans");F=Rb(b.basefontsize,10);x=q(b.basefontcolor,g.getColor("baseFontColor"));f=q(b.outcnvbasefont,C);z=Rb(b.outcnvbasefontsize,
+F);w=z+ob;W=q(b.outcnvbasefontcolor,x).replace(/^#?([a-f0-9]+)/ig,"#$1");F+=ob;x=x.replace(/^#?([a-f0-9]+)/ig,"#$1");this.trendStyle=this.outCanvasStyle={fontFamily:f,color:W,fontSize:w};A=Oa(this.trendStyle);this.inCanvasStyle={fontFamily:C,fontSize:F,color:x};B=Oa(this.inCanvasStyle);k.trendStyle=k.outCanvasStyle={fontFamily:f,color:W,fontSize:w};Y(l.legend,{title:{style:{fontFamily:q(b.legendcaptionfont,f),fontSize:h(b.legendcaptionfontsize,z)+"px",color:ta(q(b.legendcaptionfontcolor,W)),fontWeight:h(b.legendcaptionfontbold,
+1)?"bold":"normal"},align:cc[q(b.legendcaptionalignment)]},itemStyle:{fontFamily:q(b.legenditemfont,f),fontSize:h(b.legenditemfontsize,z)+"px",color:ta(q(b.legenditemfontcolor,W)),fontWeight:h(b.legenditemfontbold)?"bold":"normal"},itemHiddenStyle:{fontFamily:f,fontSize:z+"px",color:ta(q(b.legenditemhiddencolor,W))},itemHoverStyle:{color:ta(q(b.legenditemhoverfontcolor,b.legenditemfontcolor,W))}});l.legend.title.style.lineHeight=Oa(l.legend.title.style);l.legend.itemStyle.lineHeight=Oa(l.legend.itemStyle);
+l.legend.itemHiddenStyle.lineHeight=Oa(l.legend.itemHiddenStyle);k=(k=pa(b.valuebordercolor,J))?L(k,h(b.valueborderalpha,b.valuealpha,100)):J;k=r.series.dataLabels.style={fontFamily:q(b.valuefont,C),fontSize:q(b.valuefontsize,parseInt(F,10))+ob,color:L(q(b.valuefontcolor,x),h(b.valuefontalpha,b.valuealpha,100)),fontWeight:h(b.valuefontbold)?"bold":"normal",fontStyle:h(b.valuefontitalic)?"italic":"normal",border:k||b.valuebgcolor?h(b.valueborderthickness,1)+"px solid":void 0,borderColor:k,borderThickness:h(b.valueborderthickness,
+1),borderPadding:h(b.valueborderpadding,2),borderRadius:h(b.valueborderradius,0),backgroundColor:b.valuebgcolor?L(b.valuebgcolor,h(b.valuebgalpha,b.valuealpha,100)):J,borderDash:h(b.valueborderdashed,0)?fa(h(b.valueborderdashlen,4),h(b.valueborderdashgap,2),h(b.valueborderthickness,1)):"none"};Oa(k);r.series.dataLabels.color=k.color;this.isDataLabelBold&&(k.fontWeight="bold",delete k.lineHeight,Oa(k));l.tooltip.style={fontFamily:C,fontSize:F,lineHeight:B,color:x};l.title.style={fontFamily:q(b.captionfont,
+f),color:q(b.captionfontcolor,W).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontSize:h(b.captionfontsize,z+3)+ob,fontWeight:0===h(b.captionfontbold)?"normal":"bold"};l.title.align=q(b.captionalignment,Va);l.title.isOnTop=h(b.captionontop,1);l.title.alignWithCanvas=h(b.aligncaptionwithcanvas,this.alignCaptionWithCanvas,1);l.title.horizontalPadding=h(b.captionhorizontalpadding,l.title.alignWithCanvas?0:15);Oa(l.title.style);l.subtitle.style={fontFamily:q(b.subcaptionfont,b.captionfont,f),color:q(b.subcaptionfontcolor,
+b.captionfontcolor,W).replace(/^#?([a-f0-9]+)/ig,"#$1"),fontSize:h(b.subcaptionfontsize,h(Ca(h(b.captionfontsize)-3,-1),z)+h(this.subTitleFontSizeExtender,1))+ob,fontWeight:0===h(b.subcaptionfontbold,this.subTitleFontWeight,b.captionfontbold)?"normal":"bold"};l.subtitle.align=l.title.align;l.subtitle.isOnTop=l.title.isOnTop;l.subtitle.alignWithCanvas=l.title.alignWithCanvas;l.subtitle.horizontalPadding=l.title.horizontalPadding;Oa(l.subtitle.style);l.chart.trendPointStyle={style:this.trendStyle};
+l.orphanStyles={defaultStyle:{style:Y({},this.inCanvasStyle)}};l.chart.colorRangeStyle={style:{fontFamily:C,fontSize:F,lineHeight:B,color:x}};Oa(l.chart.colorRangeStyle);k=h(b.scaleonresize,1);u.origW=r=h(b.origw,k?this.origRenderWidth:a);u.origH=k=h(b.origh,k?this.origRenderHeight:e);r=(u.autoScale=C=h(b.autoscale,1))?mb(r,k,a,e):1;this.scaleFactor=u.scaleFactor=r;this.createGaugeAxis&&this.createGaugeAxis(d,l,{fontFamily:f,fontSize:w,lineHeight:A,color:W});this.parseStyles(l);delete l.xAxis.labels.style.backgroundColor;
+delete l.xAxis.labels.style.borderColor;delete l.yAxis[0].labels.style.backgroundColor;delete l.yAxis[0].labels.style.borderColor;delete l.yAxis[1].labels.style.backgroundColor;delete l.yAxis[1].labels.style.borderColor;this.showTooltip=h(b.showtooltip,this.showtooltip,1);this.tooltipSepChar=q(b.tooltipsepchar,Sb);this.showValues=h(b.showvalues,b.showvalue,this.showValues,1);this.seriesNameInToolTip=h(b.seriesnameintooltip,1);this.showTooltip||(l.tooltip.enabled=!1);l.plotOptions.series.connectNullData=
+h(b.connectnulldata,0);u.backgroundColor={FCcolor:{color:q(b.bgcolor,g.getColor(p.bgColor)),alpha:q(b.bgalpha,g.getColor(p.bgAlpha)),angle:q(b.bgangle,g.getColor(p.bgAngle)),ratio:q(b.bgratio,g.getColor(p.bgRatio))}};p=h(b.showborder,t?0:1);u.borderWidth=p?h(b.borderthickness,1):0;u.borderRadius=h(b.borderradius,0);u.borderDashStyle=h(b.borderdashed,0)?fa(h(b.borderdashlen,4),h(b.borderdashgap,2),u.borderWidth):"none";u.borderColor=L(q(b.bordercolor,t?"#666666":g.getColor("borderColor")),q(b.borderalpha,
+t?"100":g.getColor("borderAlpha")));u.plotBackgroundColor=u.plotBorderColor=Ya;u.plotBorderWidth=0;u.plotShadow=0;u.bgSWF=q(b.bgimage,b.bgswf);u.bgSWFAlpha=h(b.bgimagealpha,b.bgswfalpha,100);t=q(b.bgimagedisplaymode,"none").toLowerCase();p=E(b.bgimagevalign,J).toLowerCase();f=E(b.bgimagehalign,J).toLowerCase();"tile"==t||"fill"==t||"fit"==t?(p!=cb&&p!=Aa&&p!=rb&&(p=Aa),"left"!=f&&f!=Aa&&"right"!=f&&(f=Aa)):(p!=cb&&p!=Aa&&p!=rb&&(p=cb),"left"!=f&&f!=Aa&&"right"!=f&&(f="left"));u.bgImageDisplayMode=
+t;u.bgImageVAlign=p;u.bgImageHAlign=f;u.bgImageScale=h(b.bgimagescale,100);u.logoURL=E(b.logourl);u.logoPosition=q(b.logoposition,"tl").toLowerCase();u.logoAlpha=h(b.logoalpha,100);u.logoLink=E(b.logolink);u.logoScale=h(b.logoscale,100);u.logoLeftMargin=h(b.logoleftmargin,0);u.logoTopMargin=h(b.logotopmargin,0);u.annRenderDelay=E(b.annrenderdelay);t=l.tooltip.style;t.backgroundColor=L(q(t.backgroundColor,b.tooltipbgcolor,b.hovercapbgcolor,b.hovercapbg,g.getColor("toolTipBgColor")),q(b.tooltipbgalpha,
+100));t.borderColor=L(q(t.borderColor,b.tooltipbordercolor,b.hovercapbordercolor,b.hovercapborder,g.getColor("toolTipBorderColor")),q(b.tooltipborderalpha,100));l.tooltip.constrain=h(b.constraintooltip,1);l.tooltip.shadow=h(b.showtooltipshadow,b.showshadow,1)?{enabled:!0,opacity:Ca(h(b.tooltipbgalpha,100),h(b.tooltipborderalpha,100))/100}:!1;t.borderWidth=h(b.tooltipborderthickness,1)+"px";b.tooltipborderradius&&(t.borderRadius=h(b.tooltipborderradius,1)+"px");l.tooltip.style.padding=h(b.tooltippadding,
+this.tooltippadding,3)+"px";b.tooltipcolor&&(t.color=zb(b.tooltipcolor));u.rotateValues=h(b.rotatevalues,0);u.placeValuesInside=h(b.placevaluesinside,0);u.valuePosition=b.valueposition;u.valuePadding=h(b.valuepadding,4);l.plotOptions.series.shadow=h(b.showshadow,b.showcolumnshadow,this.defaultPlotShadow,this.colorManager.getColor("showShadow"));u.useRoundEdges&&(l.plotOptions.series.shadow=h(b.showshadow,b.showcolumnshadow,1),l.plotOptions.series.borderRadius=1,l.tooltip.borderRadius=2);l.title.text=
+ca(b.caption);l.subtitle.text=ca(b.subcaption);b.showtooltip==fb&&(l.tooltip.enabled=!1);g=h(b.plotspacepercent,20);if(80<g||0>g)g=20;this.plotSpacePercent=l.plotOptions.series.groupPadding=g/200;this.parseExportOptions(l);u.dataStreamURL=q(b.datastreamurl,"");u.refreshInterval=h(b.refreshinterval,1);u.dataStamp=b.datastamp;u.useMessageLog=h(b.usemessagelog,0);u.messageLogWPercent=La(h(b.messagelogwpercent,80),100);u.messageLogHPercent=La(h(b.messageloghpercent,70),100);u.messageLogShowTitle=h(b.messagelogshowtitle,
+1);u.messageLogTitle=q(b.messagelogtitle,"Message Log");u.messageLogColor=q(b.messagelogcolor,"#fbfbfb");u.messageGoesToJS=h(b.messagegoestojs,0);u.messageGoesToLog=h(b.messagegoestolog,1);u.messageJSHandler=q(b.messagejshandler,"");u.messagePassAllToJS=h(b.messagepassalltojs,0);u.messageLogIsCancelable=h(b.messagelogiscancelable,1);u.alwaysShowMessageLogMenu=h(b.alwaysshowmessagelogmenu,u.useMessageLog);u.showRTMenuItem=h(b.showrtmenuitem,0);g=h(b.showgaugeborder,1);u.gaugeBorderColor=q(b.gaugebordercolor,
+this.gaugeBorderColor,"333333");u.gaugeBorderThickness=g?h(b.gaugeborderthickness,this.gaugeBorderThickness,2):0;u.gaugeBorderAlpha=q(b.gaugeborderalpha,Ia);u.gaugeFillColor=q(b.gaugefillcolor,b.ledbgcolor,"000000");u.useSameFillColor=h(b.usesamefillcolor,0);u.useSameFillBgColor=h(b.usesamefillbgcolor,u.useSameFillColor);u.colorRangeFillMix=Ua(b.colorrangefillmix,b.gaugefillmix,this.colorRangeFillMix,"{light-10},{dark-10},{light-10},{dark-10}");u.colorRangeFillRatio=Ua(b.colorrangefillratio,b.gaugefillratio,
+this.colorRangeFillRatio,b.gaugefillratio,"0,10,80,10");u.showColorRangeBorder=h(b.showcolorrangeborder,b.showgaugeborder,this.showColorRangeBorder,0);u.colorRangeBorderColor=q(b.colorrangebordercolor,b.gaugebordercolor,"{dark-20}");u.colorRangeBorderThickness=g?h(b.colorrangeborderthickness,b.gaugeborderthickness,1):0;u.colorRangeBorderAlpha=h(b.colorrangeborderalpha,b.gaugeborderalpha,100);u.roundRadius=h(b.roundradius,b.gaugeroundradius,0);u.showShadow=h(b.showshadow,1);u.gaugeType=h(b.gaugetype,
+this.gaugeType,1);this.preSeriesAddition&&this.preSeriesAddition(l,d,a,e);this.series(d,l,c,a,e);this.postSeriesAddition&&this.postSeriesAddition(l,d,a,e);this.configureAxis&&this.configureAxis(l,d);this.spaceManager&&this.spaceManager(l,d,a,e);this.postSpaceManager&&this.postSpaceManager();this.updateSnapPoints&&this.updateSnapPoints(l);this.latestDataUpdater&&this.latestDataUpdater(l,d,a,e);c=u.toolbar={button:{}};g=c.button;g.scale=h(b.toolbarbuttonscale,1.15);g.width=h(b.toolbarbuttonwidth,15);
+g.height=h(b.toolbarbuttonheight,15);g.radius=h(b.toolbarbuttonradius,2);g.spacing=h(b.toolbarbuttonspacing,5);g.fill=L(q(b.toolbarbuttoncolor,"ffffff"));g.labelFill=L(q(b.toolbarlabelcolor,"cccccc"));g.symbolFill=L(q(b.toolbarsymbolcolor,"ffffff"));g.hoverFill=L(q(b.toolbarbuttonhovercolor,"ffffff"));g.stroke=L(q(b.toolbarbuttonbordercolor,"bbbbbb"));g.symbolStroke=L(q(b.toolbarsymbolbordercolor,"9a9a9a"));g.strokeWidth=h(b.toolbarbuttonborderthickness,1);g.symbolStrokeWidth=h(b.toolbarsymbolborderthickness,
+1);d=g.symbolPadding=h(b.toolbarsymbolpadding,5);g.symbolHPadding=h(b.toolbarsymbolhpadding,d);g.symbolVPadding=h(b.toolbarsymbolvpadding,d);g=c.position=q(b.toolbarposition,"tr").toLowerCase();switch(g){case "tr":case "tl":case "br":case "bl":break;default:g="tr"}d=c.hAlign="left"===(J+b.toolbarhalign).toLowerCase()?"l":g.charAt(1);g=c.vAlign="bottom"===(J+b.toolbarvalign).toLowerCase()?"b":g.charAt(0);c.hDirection=h(b.toolbarhdirection,"r"===d?-1:1);c.vDirection=h(b.toolbarvdirection,"b"===g?-1:
+1);c.vMargin=h(b.toolbarvmargin,6);c.hMargin=h(b.toolbarhmargin,10);c.x=h(b.toolbarx,"l"===d?0:a);c.y=h(b.toolbary,"t"===g?0:e);ka.console&&ka.console.log&&ka.FC_DEV_ENVIRONMENT&&console.log(l);h(b.showrtmenuitem,0)?(l.callbacks||(l.callbacks=[])).push(this.drawRTMenuButtons):u.useMessageLog&&u.alwaysShowMessageLogMenu&&u.messageGoesToLog&&(l.callbacks||(l.callbacks=[])).push(this.drawMLMenuButtons);n&&m&&(this.hcJSON.alerts=this.parseAlertObj(m));return l},parseAlertObj:function(){return kb.parseAlertObj.apply(this,
+arguments)},drawMLMenuButtons:function(){var a=this.options,e=a.chart,c=this.menu||(this.menu=[]),d=this.toolbar,a=a[U],b;c.push(b=Ka({chart:this,basicStyle:a&&a.outCanvasStyle||this.outCanvasStyle||{},items:[{text:"Show Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.open();b.showItem(4);b.hideItem(3)}},{text:"Hide Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.close();b.showItem(3);b.hideItem(4)}}],position:{x:e.spacingLeft,y:this.chartHeight-
+e.spacingBottom+(e.showFormBtn||e.showRestoreBtn?10:-15)}}));b.hideItem(1);this.elements.configureButton=d.add("loggerIcon",function(a,c){return function(){b.visible?b.hide():b.show({x:a,y:c+1})}}(),{x:e.spacingLeft,y:this.chartHeight-e.spacingBottom+(e.showFormBtn||e.showRestoreBtn?10:-15),tooltip:"Show & Hide Message"})},drawRTMenuButtons:function(){var a=this.logic,e=a.chartInstance,c=this.options,d=c.chart,b=d&&d.alwaysShowMessageLogMenu,f=this.menu||(this.menu=[]),n=this.toolbar,c=(c=c[U])&&
+c.outCanvasStyle||this.outCanvasStyle||{},g,a=(a=e.isUpdateActive||a.eiMethods.isUpdateActive)&&a.call(e);f.push(g=Ka({chart:this,basicStyle:c,items:[{text:"Stop Update",visibility:a?xb:"hidden",onclick:function(){g.hideItem(0);g.showItem(1);e.stopUpdate()}},{text:"Start Update",visibility:a?"hidden":xb,onclick:function(){g.hideItem(1);g.showItem(0);e.restartUpdate()}},{text:"Clear Chart",onclick:function(){e.clearChart()}},{text:"Show Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&
+I.messageLogger.open();g.showItem(4);g.hideItem(3)}},{text:"Hide Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.close();g.showItem(3);g.hideItem(4)}}],position:{x:d.spacingLeft,y:this.chartHeight-d.spacingBottom+(d.showFormBtn||d.showRestoreBtn?10:-15)}}));g.hideItem(2);g.hideItem(0);g.hideItem(1);g.showItem(a?0:1);!b&&g.hideItem(3);g.hideItem(4);this.elements.configureButton=n.add("configureIcon",function(a,b){return function(){g.visible?g.hide():g.show({x:a,y:b+
+1})}}(),{x:d.spacingLeft,y:this.chartHeight-d.spacingBottom+(d.showFormBtn||d.showRestoreBtn?10:-15),tooltip:"Manage RealTime Update"})},latestDataUpdater:function(a){var e=this.chartInstance;a=(a=a.series&&a.series)&&a[0]&&a[0].data;var c,d,b;if((e=e&&e.jsVars&&e.jsVars._rtLastUpdatedData)&&a)for(c=0,d=e.values&&e.values.length;c<d;c+=1)if(b=a[c])b.y=e.values[c],b.displayValue=e.labels[c],b.toolText=e.toolTexts[c]},styleApplicationDefinition_font:function(a,e,c){var d,b=!1,f,n,g,p=this.styleMapForFont;
+switch(e){case "caption":a=a.title;break;case "datalabels":a=a.plotOptions.series.dataLabels;break;case "value":a=a.plotOptions.series.dataLabels;break;case "datavalues":a=a.plotOptions.series.dataLabels;b=!0;break;case "subcaption":a=a.subtitle;break;case "tooltip":a=a.tooltip;break;case "trendvalues":a=a.chart.trendPointStyle;break;case "xaxisname":a=a.xAxis.title;break;case "vlinelabels":a={style:a[U].divlineStyle};break;case "gaugelabels":a=a.chart.colorRangeStyle;break;case "tickvalues":a=a.scale.tickValues;
+break;case "limitvalues":a=a.scale.limitValues;break;case "openvalue":a=a.chart.openValue;break;case "closevalue":a=a.chart.closeValue;break;case "highlowvalue":a=a.chart.highLowValue;break;case "legend":a={style:a.legend.itemStyle};break;default:a.orphanStyles[e]=a={text:"",style:{}}}if("object"===typeof a)if(a instanceof Array)for(f=0,n=a.length;f<n;f+=1){g=a[f];for(d in c)if(e=d.toLowerCase(),"function"===typeof p[e])p[e](c[d],g,b);Oa(g.style)}else{for(d in c)if(e=d.toLowerCase(),"function"===
+typeof p[e])p[e](c[d],a,b);Oa(a.style)}},createGaugeAxis:function(a,e,c){a=a.chart;var d=this.colorManager,b=this.numberFormatter,f=this.isHorizontal?h(a.ticksbelowgauge,a.ticksbelowgraph,this.ticksbelowgauge,1)?3:1:h(a.ticksonright,this.ticksOnRight,1)?2:4,d=q(a.majortmcolor,d.getColor("tickColor")),n=h(a.majortmalpha,100),g=h(h(a.majortmheight)*this.scaleFactor,this.majorTMHeight,6),p=h(a.tickvaluestep,a.tickvaluesstep,1),m=h(a.showtickmarks,1),k=m?h(a.connecttickmarks,this.connectTickMarks,1):
+0,l=h(a.showtickvalues,m),t=h(a.majortmthickness,1),r=h(b.getCleanValue(a.upperlimit)),b=h(b.getCleanValue(a.lowerlimit)),u=1==h(a.reversescale,0);this.isHorizontal||(u=!u);p=1>p?1:p;e.scale={min:null,max:null,axisPosition:f,showTickMarks:m,showTickValues:l,showLimits:h(a.showlimits,l),adjustTM:Boolean(h(a.adjusttm,1)),majorTMNumber:h(a.majortmnumber,-1),majorTMColor:L(d,n),majorTMHeight:m?g:0,majorTMThickness:t,minorTMNumber:h(a.minortmnumber,this.minorTMNumber,4),minorTMColor:L(q(a.minortmcolor,
+d),h(a.minortmalpha,n)),minorTMHeight:m?h(h(a.minortmheight,a.minortmwidth)*this.scaleFactor,ha(g/2)):0,minorTMThickness:h(a.minortmthickness,1),tickMarkDistance:h(h(a.tickmarkdistance,a.tickmarkgap)*this.scaleFactor,this.tickMarkDistance,3),tickValueDistance:h(h(a.tickvaluedistance,a.displayvaluedistance)*this.scaleFactor,2)+2,placeTicksInside:h(a.placeticksinside,0),placeValuesInside:h(a.placevaluesinside,0),tickValueStep:p,setAdaptiveMin:h(a.setadaptivemin,0),upperLimit:r,lowerLimit:b,upperLimitDisplay:E(a.upperlimitdisplay),
+lowerLimitDisplay:E(a.lowerlimitdisplay),reverseScale:u,connectorColor:L(q(a.connectorcolor,d),h(a.connectoralpha,n)),connectorThickness:k?h(a.connectorthickness,t):0,majorTM:[],minorTM:[],trendPoint:[],labels:{style:Y({},c)},tickValues:{style:Y({},c)},limitValues:{style:Y({},c)}}},configureAxis:function(a,e){var c=e.chart,d,b,f,n,g=this.colorManager,p,m,k,l,t,r=this.colorRangeGetter,u=(r=r&&r.colorArr)&&r.length;b=r&&r[0];d=r&&r[u-1];n=this.minDataValue;m=this.maxDataValue;r=a.scale;k=r.lowerLimit;
+l=r.upperLimit;var u=this.numberFormatter,w;if(a.series[0]&&(ga(n)&&ga(m)?(k=k<=n?k:b&&b.minvalue,l=l>=m?l:d&&d.maxvalue):(k=h(k,b&&b.minvalue),l=h(l,d&&d.maxvalue)),d=new Hb(k,l,!1,r,this.numberFormatter),d.calculateLimits(this.maxDataValue,this.minDataValue),d.calculateTicks(),r.majorTM=d.getMajorTM(),r.minorTM=d.getMinorTM(),b=r.min=d.min,d=r.max=d.max,e.trendpoints&&(f=e.trendpoints.point)&&0<(p=f.length))){r.trendPoint=[];for(m=0;m<p;m+=1)n=f[m],t=h(n.dashed,0)?fa(q(Math.max(n.dashlen,n.thickness),
+4),h(n.dashgap,3),h(n.thickness,1)):"none",k=h(n.startvalue,n.value),l=h(n.endvalue,k),w=k!==l,k<=d&&k>=b&&l<=d&&l>=b&&(r.trendPoint.push({style:Y(Y(a.chart.trendPointStyle.style),{}),startValue:k,endValue:l,tooltext:E(ca(n.markertooltext)),displayValue:E(ca(n.displayvalue),w?J:u.scale(k)),showOnTop:h(n.showontop,c.ticksbelowgauge,c.ticksbelowgraph,1),color:q(n.color,g.getColor("trendLightColor")),alpha:h(n.alpha,99),thickness:h(n.thickness,1),dashStyle:t,useMarker:h(n.usemarker,0),markerColor:L(q(n.markercolor,
+n.color,g.getColor("trendLightColor")),100),markerBorderColor:L(q(n.markerbordercolor,n.bordercolor,g.getColor("trendDarkColor")),100),markerRadius:h(h(n.markerradius)*this.scaleFactor,5),markerToolText:pa(n.markertooltext),trendValueDistance:h(h(n.trendvaluedistance,c.trendvaluedistance)*this.scaleFactor,r.tickValueDistance),isZone:w,valueInside:h(n.valueinside,c.placevaluesinside,0),showBorder:h(n.showborder,1),borderColor:L(q(n.bordercolor,n.color,g.getColor("trendDarkColor")),h(n.borderalpha,
+n.alpha,100)),radius:h(h(n.radius)*this.scaleFactor),innerRadius:h(h(n.innerradius)*this.scaleFactor)}),xa(q(n.bordercolor,n.color,g.getColor("trendDarkColor"))));"lineargauge"===this.defaultSeriesType&&I.stableSort&&I.stableSort(r.trendPoint,function(a,b){return a.startValue-b.startValue})}},placeTickMark:function(a,e,c){var d=this.smartLabel,b=a.chart,f=this.width-(b.marginRight+b.marginLeft),n=this.height-(b.marginTop+b.marginBottom);a=a.scale;var g=a.min,p=a.max,m=a.axisPosition,k=a.showLimits,
+l=a.showTickValues,t=a.tickMarkDistance,r=a.tickValueDistance,u=Math.max(a.majorTMHeight,a.minorTMHeight),w=a.placeTicksInside,C=a.placeValuesInside,F=a.reverseScale,x=0,q=0,z=1,A,B=a.majorTM.length-1,D=2===m||4===m?!1:!0,R=6;e=D?n-c:f-e;c=0;var G=a.tickValues.style,M=a.limitValues.style;a.majorTM[0]&&a.majorTM[1]&&(A=a.majorTM[1].value-a.majorTM[0].value);w||(x+=t+u);if(l||k)for(d.setStyle(M),k=h(parseInt(M.fontSize,10),10),l=h(parseInt(M.lineHeight,10),12),l/=2,C||(x+=r),3===m&&(q=k),D?(n=e-x,f=
+f/(p-g)*A/2+6):(f=e-x,n=n/(p-g)*A+l),a.majorTM[0]&&(A=a.majorTM[0],A.isString?A.displayValue&&(g=d.getSmartText(A.displayValue,f,n),A.displayValue=g.text,A._oriText=g.oriText,g.tooltext&&(A.originalText=g.tooltext),D?(c=Math.max(c,g.height),A.labelY=1===m&&!C||3===m&&C?k-g.height:q,R=Math.min(6,g.width/2)):(c=Math.max(c,g.width),A.labelY=k-(F?g.height-l:l),A.labelX=0)):z=0,D&&(F?(A.labelX=R,A.align=gb):(A.labelX=-R,A.align=Wa))),a.majorTM[B]&&(A=a.majorTM[B],A.isString?A.displayValue&&(g=d.getSmartText(A.displayValue,
+f,n),A.displayValue=g.text,A._oriText=g.oriText,g.tooltext&&(A.originalText=g.tooltext),D?(c=Math.max(c,g.height),A.labelY=1===m&&!C||3===m&&C?k-g.height:q,R=Math.min(6,g.width/2)):(c=Math.max(c,g.width),A.labelY=k-(F?l:g.height-l),A.labelX=0)):(R=6,B+=1),D&&(F?(A.labelX=-R,A.align=Wa):(A.labelX=R,A.align=gb)));z<B;z++)0===z||z===B-1?(d.setStyle(M),k=h(parseInt(M.fontSize,10),10),l=h(parseInt(M.lineHeight,10),12)):(d.setStyle(G),k=h(parseInt(G.fontSize,10),10),l=h(parseInt(G.lineHeight,10),12)),D&&
+(q=1===m&&C||3===m&&!C?k:0),A=a.majorTM[z],A.displayValue&&(A.labelX=h(A.labelX,0),D?(c=Math.max(c,l),A.labelY=q):(g=d.getOriSize(A.displayValue),c=Math.max(c,g.width),A.labelY=k-g.height/2));d=x;C||(x+=c);x=Math.min(e,x);a._labelUsedSpace=C?c:x-d;switch(m){case 1:b.marginTop+=x;break;case 2:b.marginRight+=x;break;case 3:b.marginBottom+=x;break;case 4:b.marginLeft+=x}return x},eiMethods:{feedData:function(a){var e=this.jsVars,c=e.hcObj,d=c.logic,b=c.options&&c.options.series&&c.options.series[0],
+f,n;if(this.isActive()&&d&&d.linearDataParser&&(n=d.linearDataParser(a,d.multisetRealtime))){f=this.getDataJSON();c.realtimeUpdate?c.realtimeUpdate(n):c.logic.realtimeUpdate?c.logic.realtimeUpdate(n):b&&b.realtimeUpdate&&b.realtimeUpdate(n);e._rtLastUpdatedData=d.multisetRealtime?n:this.getDataJSON();qa.raiseEvent("realtimeUpdateComplete",{data:a,updateObject:n,prevData:f.values,source:"feedData",url:null},e.fcObj);try{ka.FC_ChartUpdated&&ka.FC_ChartUpdated(e.fcObj.id)}catch(g){setTimeout(function(){throw g;
+},0)}return!0}return!1},getData:function(){var a,e=(a=this.jsVars)&&(a=a.hcObj)&&(a=a.options)&&(a=a.series)&&(a=a[0])&&a.data;return(a=e&&e[0])?h(a.value,a.y):null},setData:function(a,e){var c="";if(a&&a.toString||""===a||0===a)c="value="+a.toString();if(e&&e.toString||""===e)c=c+"&label="+e.toString();c&&this.feedData(c)},stopUpdate:function(a){var e=this.__state;clearTimeout(e._toRealtime);e._rtAjaxObj&&e._rtAjaxObj.abort();e._rtPaused=!0;qa.raiseEvent("realimeUpdateStopped",{source:a},this)},
+restartUpdate:function(){var a=this.__state;a._rtDataUrl&&a._rtPaused&&(a._rtPaused=!1,a._rtAjaxObj.get(a._rtDataUrl))},isUpdateActive:function(){return!this.__state._rtPaused},clearChart:function(a){var e=this.jsVars,c;a=a&&a.toString&&a.toString();(c=e.hcObj)&&(c=c.options)&&(c=c.scale)&&(e=c.min,isNaN(e)||(this.jsVars.hcObj.fusionCharts.feedData("&showLabel=0&value="+e),I.raiseEvent("chartCleared",{source:a},this,[this.id,a])))},getDataJSON:function(){var a=0,e,c,d=[],b=[],f=[],n=(e=this.jsVars)&&
+(e=e.hcObj)&&(e=e.options)&&(e=e.series)&&(e=e[0])&&e.data;for(e=n&&n.length?n.length:0;a<e;a+=1)c=n[a],d.push(h(c.value,c.y)),b.push(c.displayValue||""),f.push(c.toolText||"");return{values:d,labels:b,toolTexts:f}},showLog:function(){return this.feedData("showLog=1")},hideLog:function(){return this.feedData("hideLog=1")},clearLog:function(){return this.feedData("clearLog=1")}},linearDataParser:function(a,e){var c={values:y,colors:y,toolTexts:y,links:function(a){var b=[],c;a=a.replace(Wb,"_fc_escaped_comma_");
+b=a.split(",");a=0;for(c=b.length;a<c;a+=1)b[a]=b[a].replace(/_fc_escaped_comma_/ig,",");return b},valueVisibility:y},d=this.chartInstance,b,f,n,g,p,m={},k=0;a=a&&a.toString&&a.toString()||"";b=a.split("&");g=0;for(p=b.length;g<p;g+=1)if(f=b[g].split("="),n=f[1],f=f[0],f!==J&&void 0!==f&&void 0!==n&&(n!==J||e))switch(f=f.toLowerCase(),f){case "label":m.labels=n.split(",");break;case "vline":m.vlines=n.split(",");break;case "vlinelabel":m.vlineLabels=n.split(",");break;case "vlinecolor":m.vlineColors=
+n.split(",");break;case "vlinethickness":m.vlineThickness=n.split(",");break;case "vlinedashed":m.vlineDashed=n.split(",");break;case "value":m.values=n.split("|");k=1;break;case "showlabel":m.showLabels=n.split(",");break;case "showvalue":m.valueVisibility=n.split("|");break;case "tooltext":m.toolTexts=n.split("|");break;case "link":m.links=n.split("|");break;case "color":m.colors=n.split("|");break;case "datastamp":m.dataStamp=n;break;case "stopupdate":m.pause="1"==n;break;case "clear":m.clear=
+"1"==n;break;default:m[f]=n}if(e)for(m.values||(m.values=[]),g=m.values.length;g--;){for(f in c)m[f]?"function"===typeof c[f]?m[f][g]&&(m[f][g]=c[f].call(this,m[f][g])):m[f][g]&&(m[f][g]=m[f][g].split(c[f])):m[f]=[];k=Ca(m.values[g].length,k)}m.labels&&(k=Ca(k,m.labels.length));m.dimension=k;m.pause&&d.stopUpdate&&d.stopUpdate("datastream");return m},series:function(){var a=this.dataObj,e=this.hcJSON,c=a.pointers&&a.pointers.pointer||a.value,d=a.chart,b=this.colorRangeGetter,f=(b=b&&b.colorArr)&&
+b.length,n={},g=n.data=[],p,m;e.legend.enabled=!1;$b(c)||(c="object"!==typeof c?[{value:c}]:[c]);p=0;for(m=this.multiValueGauge?c.length:1;p<m;p++)g.push(this.getPointStub(c[p],p,e,a));e.series[0]=n;f&&this.pointValueWatcher&&h(d.includecolorrangeinlimits,this.includeColorRangeInLimits)&&(a=h(b[0].minvalue),ga(a)&&this.pointValueWatcher(a),a=h(b[f-1].maxvalue),ga(a)&&this.pointValueWatcher(a))},pointValueWatcher:function(a){null!==a&&(this.maxDataValue=this.maxDataValue>a?this.maxDataValue:a,this.minDataValue=
+this.minDataValue<a?this.minDataValue:a)},updateSnapPoints:function(a){var e=a.chart,c=this.width,d=this.height,b=e.marginBottom;a=e.marginLeft;var f=e.marginRight,e=e.marginTop,c=Ma(this.snapLiterals||(this.snapLiterals={}),{chartstartx:0,chartstarty:0,chartwidth:c,chartheight:d,chartendx:c,chartendy:d,chartcenterx:c/2,chartcentery:d/2,chartbottommargin:b,chartleftmargin:a,chartrightmargin:f,charttopmargin:e,canvasstartx:a,canvasstarty:e,canvaswidth:c-a-f,canvasheight:d-e-b,canvasendx:c-f,canvasendy:d-
+b});c.gaugestartx=c.canvasstartx;c.gaugestarty=c.canvasstarty;c.gaugeendx=c.canvasendx;c.gaugeendy=c.canvasendy;c.gaugecenterx=c.canvascenterx=a+c.canvaswidth/2;c.gaugecentery=c.canvascentery=e+c.canvasheight/2}},v.base);v("linearscalegauge",{spaceManager:function(a,e,c,d){var b=a.chart,f=c-(b.marginRight+b.marginLeft),n=d-(b.marginTop+b.marginBottom),g=b.marginRight,p=b.marginLeft,m=b.marginTop,k=b.marginBottom,l=La(Ca(.3*f,5),f),h=La(Ca(.3*n,5),n),r,u,w=0,C;5>l&&10<c&&(l=f=5,C=g+p,g=b.marginRight=
+(c-f)*g/C,p=b.marginLeft=(c-f)*p/C);5>h&&10<d&&(h=n=5,C=m+k,m=b.marginRight=(d-n)*m/C,k=b.marginLeft=(d-n)*k/C);this.manageTitleSpace&&a.title.alignCaptionWithCanvas&&(u=this.manageTitleSpace(a,e,l,h));this.placeTickMark&&(r=this.placeTickMark(a,l,h));this.manageTitleSpace&&!a.title.alignCaptionWithCanvas&&(u=this.manageTitleSpace(a,e,l,h));this.placeDataLabels&&(w=this.placeDataLabels(a,l,h,m,g,k,p,r));this.postDataLabelsPlacement&&this.postDataLabelsPlacement(a,l,h);I.adjustVerticalCanvasMargin(a,
+e,d-(b.marginTop+b.marginBottom),a.xAxis);this.fixCaptionAlignment&&this.fixCaptionAlignment(u,a,e,c,0,w)},manageTitleSpace:function(a,e,c,d){c=a.chart;return this.titleSpaceManager(a,e,this.width-(c.marginRight+c.marginLeft),this.height-(c.marginTop+c.marginBottom)-d)},placeDataLabels:function(a,e,c,d,b,f){var n=this.smartLabel;e=a.chart;var g=this.width-(e.marginRight+e.marginLeft),p=this.height-(e.marginTop+e.marginBottom);d=e.marginBottom;b=a.plotOptions.series.dataLabels;var m=b.style,k=h(parseInt(m.lineHeight,
+10),12);c=p-c;var p=e.valuePadding,l=0;(a=a.series[0].data[0])&&a.displayValue!==J&&(n.setStyle(m),a.isLabelString?(n=n.getSmartText(a.displayValue,g,c-p),a.displayValue=n.text,n.tooltext&&(a.originalText=n.tooltext)):n=n.getOriSize(a.displayValue)," "===a.displayValue&&(n={height:k}),0<n.height&&(l=n.height+p),l>c&&(a=l-c,p=a<p?p-a:0,l=c),e.marginBottom+=l,b.align=Va,e.valuePadding=d-f+p);return l},postDataLabelsPlacement:function(a){var e=this.smartLabel,c=a.chart,d=this.width-(c.marginRight+c.marginLeft),
+b=this.height-(c.marginTop+c.marginBottom);a=a.scale;var f=a.min,n=a.max,g=a.axisPosition,p=a.limitValues.style,c=a.reverseScale,m,k=a.majorTM.length-1,g=2===g||4===g?!1:!0,l=h(parseInt(p.fontSize,10),10),t=h(parseInt(p.lineHeight,10),12)/2;a.majorTM[0]&&a.majorTM[1]&&(m=a.majorTM[1].value-a.majorTM[0].value);g?(b=a._labelUsedSpace,d=d/(n-f)*m/2+6):(d=a._labelUsedSpace,b=b/(n-f)*m+t);e.setStyle(p);a.majorTM[0]&&a.majorTM[0].isString&&(m=a.majorTM[0],m.displayValue&&(f=e.getSmartText(m._oriText,d,
+b),m.displayValue=f.text,f.tooltext&&(m.originalText=f.tooltext),g?(f=Math.min(6,f.width/2),m.labelX=c?f:-f):m.labelY=l-(c?f.height-t:t)));a.majorTM[k]&&a.majorTM[k].isString&&(m=a.majorTM[k],m.displayValue&&(f=e.getSmartText(m._oriText,d,b),m.displayValue=f.text,f.tooltext&&(m.originalText=f.tooltext),g?(f=Math.min(6,f.width/2),m.labelX=c?-f:f):m.labelY=l-(c?t:f.height-t)))},getPointStub:function(a,e,c,d,b){var f=c[U];e=this.colorManager;var n=this.numberFormatter;c=n.getCleanValue(a.value);var g=
+E(a.link),p=E(ca(q(a.tooltext,f.tooltext))),f=E(ca(a.displayvalue)),m=n.dataLabels(c),k,n=d.chart;d=h(n.showhovereffect);var l,t,r;this.showTooltip?void 0!==p?(b=ab(p,[1,2],{formattedValue:m},a,n),r=!0):b=null===m?!1:void 0!==b?b+this.tooltipSepChar+m:m:b=!1;a=h(a.showvalue,this.showValues)?void 0!==f?f:E(m," "):J;m=q(f,m,J);this.pointValueWatcher&&this.pointValueWatcher(c);this.getPointColorObj&&(k=this.getPointColorObj(n,c));0!==d&&(d||n.gaugefillhovercolor||n.plotfillhovercolor||n.gaugefillhoveralpha||
+n.plotfillhoveralpha||0===n.gaugefillhoveralpha)&&(d=!0,f=q(n.gaugefillhovercolor,n.plotfillhovercolor,"{dark-10}"),n=h(n.gaugefillhoveralpha,n.plotfillhoveralpha),l={},t={},t.fluidColor=k.code,t.fluidAlpha=k.alpha,f=(p=/\{/.test(f))?e.parseColorMix(E(k.code,J),f)[0]:f,l.fluidColor=f,l.fluidAlpha=h(n,k.alpha));return{y:c,displayValue:a,displayValueArgs:m,toolText:b,isLabelString:r,color:L(k.code,k.alpha),link:g,colorRange:k,doNotSlice:!0,rolloverProperties:{enabled:d,hoverAttr:l,outAttr:t}}},getPointColorObj:function(a,
+e){return this.colorRangeGetter.getColorObj(e)}},v.gaugebase);v("led",{singleValued:!0,isDataLabelBold:!0,preSeriesAddition:function(a,e){var c=e.chart,d=a.chart;d.ledGap=h(c.ledgap,2);d.ledSize=h(c.ledsize,2);d.plotHoverEffect=h(c.showhovereffect,0)}},v.linearscalegauge);v("vled",{friendlyName:"Vertical LED Gauge",defaultSeriesType:"led",defaultPlotShadow:1,standaloneInit:!0,realtimeEnabled:!0,chartleftmargin:15,chartrightmargin:15,charttopmargin:10,chartbottommargin:10,showTooltip:0,connectTickMarks:0,
+rendererId:"led",creditLabel:ja},v.led);v("hled",{friendlyName:"Horizontal LED Gauge",defaultPlotShadow:1,standaloneInit:!0,creditLabel:ja,isHorizontal:!0,rendererId:"led",connectTickMarks:1,realtimeEnabled:!0},v.vled);v("bullet",{creditLabel:ja,defaultSeriesType:"bullet",defaultPlotShadow:1,drawAnnotations:!0,realtimeEnabled:!1,subTitleFontSizeExtender:0,subTitleFontWeight:0,connectTickMarks:0,minorTMNumber:0,majorTMHeight:4,chartleftmargin:10,chartrightmargin:15,charttopmargin:5,chartbottommargin:5,
+isDataLabelBold:!0,defaultPaletteOptions:Ma(Y({},ya),{paletteColors:[["A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["100","60,50","40,20","20,10","30,30"],toolTipBgColor:["FFFFFF","FFFFFF",
+"FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["333333","60634E","025B6A","A15E01","68001B"],tickColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["545454","60634E","415D6F","845001","68001B"],plotFillColor:["545454","60634E","415D6F","845001","68001B"],borderColor:["767575","545454","415D6F","845001","68001B"],borderAlpha:[50,50,50,50,50]}),preSeriesAddition:function(){var a=this.dataObj.chart;this.hcJSON.chart.colorRangeBorderThickness=
+h(a.showgaugeborder,a.showcolorrangeborder,0)?h(a.colorrangeborderthickness,a.gaugeborderthickness,this.gaugeBorderThickness,2):0},postSeriesAddition:function(a){var e=this.dataObj,c=this.colorManager,d=a.series[0],b=e.chart,f=h(b.showhovereffect),n={value:e.target},g=h(b.targetthickness,3),p=q(b.targetcolor,c.getColor("plotFillColor")),m=E(b.targetalpha,100),k=L(p,m),l=h(b.targetfillpercent,60),t,r,u,w;0!==f&&(f||b.targethovercolor||b.targethoveralpha||0===b.targethoveralpha||b.targethoverthickness||
+0===b.targethoverthickness)&&(f=!0,u={},w={},r=h(b.targethoverthickness,g+2),g!==r&&(u["stroke-width"]=r,w["stroke-width"]=g),t=q(b.targethovercolor,"{dark-10}"),m=h(b.targethoveralpha,m),r&&(w.stroke=k,r=/\{/.test(t),u.stroke=L(r?c.parseColorMix(p,t)[0]:t,m)),t=!!h(b.showhoveranimation,1));a=this.getPointStub(n,1,a,e);delete a.rolloverProperties;d.data.push(Y(a,{borderColor:k,borderWidth:g,targetThickness:g,targetFillPercent:l,rolloverProperties:{enabled:f,hoverAttr:u,outAttr:w,showHoverAnimation:t}}))},
+getPointStub:function(a,e,c,d,b){var f=this.numberFormatter,n=this.colorManager,g=c[U];c=f.getCleanValue(a.value);var p=E(a.link),m=E(ca(e?g.targettooltext:g.tooltext)),k=E(ca(a.displayvalue)),l=f.dataLabels(c),g=this.colorRangeGetter.getColorObj(c),t=d.chart,r=e?f.dataLabels(f.getCleanValue(d.value)):l,u=e?c:f.getCleanValue(d.target),w=e?l:f.dataLabels(u),C=q(t.plotfillcolor,n.getColor("plotFillColor"));e=h(t.plotasdot,0);var f=h(t.showhovereffect),F=h(t.showplotborder,0),x=F?h(t.plotborderthickness,
+1):0,W=h(t.plotfillpercent,e?25:40),z,A,B,D;d=this.showTooltip?void 0!==m?ab(m,[1,2,26,27],{formattedValue:r,targetValue:u,targetDataValue:w},d,t):null===l?!1:void 0!==b?b+this.tooltipSepChar+l:l:J;a=h(a.showvalue,this.showValues)?void 0!==k?k:E(l," "):J;m=q(k,l,J);this.pointValueWatcher&&this.pointValueWatcher(c);/\{/.test(b=q(t.plotbordercolor,"{dark-20}"))&&(A=!0,b=n.parseColorMix(C,b).join());u=h(t.plotfillalpha,100);k=L(C,u);r=h(t.plotborderalpha,100);l=L(b,r);0!==f&&(f||t.plotfillhovercolor||
+t.plotfillhoveralpha||0===t.plotfillhoveralpha||t.showplotborderonhover||0===t.showplotborderonhover||t.plotborderhovercolor||t.plotborderhoverthickness||0===t.plotborderhoverthickness||t.plotborderhoveralpha||0===t.plotborderhoveralpha)&&(f=!0,B={},D={},z=q(t.plotfillhovercolor,"{dark-10}"),u=h(t.plotfillhoveralpha,u),z=/\{/.test(z)?n.parseColorMix(C,z)[0]:z,B.fill=L(z,u),D.fill=k,C=h(t.showplotborderonhover),void 0===C&&(C=t.plotborderhoverthickness||t.plotborderhovercolor||t.plotborderhoveralpha?
+1:F),C=C?h(t.plotborderhoverthickness,x||1):0,x!==C&&(B["stroke-width"]=C,D["stroke-width"]=x),F=q(t.plotborderhovercolor,"{dark-10}"),r=h(t.plotborderhoveralpha,r),C&&(D.stroke=l,C=/\{/.test(F),B.stroke=L(C?n.parseColorMix(A?z:b,F)[0]:F,r)),z=!!h(t.showhoveranimation,1));return{y:c,displayValue:a,displayValueArgs:m,toolText:d,plotAsDot:e,plotFillPercent:W,color:k,borderColor:l,borderWidth:x,link:p,colorRange:g,doNotSlice:!0,rolloverProperties:{enabled:f,hoverAttr:B,outAttr:D,showHoverAnimation:z}}}},
+v.linearscalegauge);v("vbullet",{friendlyName:"Vertical Bullet Gauge",creditLabel:ja,defaultSeriesType:"bullet",gaugeType:4,ticksOnRight:0,rendererId:"bullet",standaloneInit:!0},v.bullet);v("hbullet",{friendlyName:"Horizontal Bullet Gauge",creditLabel:ja,defaultSeriesType:"hbullet",gaugeType:1,standaloneInit:!0,isHorizontal:!0,defaultCaptionPadding:5,rendererId:"hbullet",placeDataLabels:function(a,e){var c=this.smartLabel,d=a.chart,b=this.width-(d.marginRight+d.marginLeft),f=this.height-(d.marginTop+
+d.marginBottom),n=a.plotOptions.series.dataLabels,g=n.style,p=h(parseInt(g.fontSize,10),10),b=b-e,m=d.valuePadding,k=0,l=a.series[0].data[0];l&&l.displayValue!==J&&(c.setStyle(g),l.isLabelString?(c=c.getSmartText(l.displayValue,b-m,f),l.displayValue=c.text,c.tooltext&&(l.originalText=c.tooltext)):c=c.getOriSize(l.displayValue),0<c.height&&(k=c.width+m),k>b&&(k=b),d.marginRight+=k,n.align=Wa,n.x=0,n.y=p-c.height/2);return k},manageTitleSpace:function(a,e,c){var d=a.chart,b=e.chart,f=this.width-(d.marginRight+
+d.marginLeft),d=this.height-(d.marginTop+d.marginBottom),n=h(b.captionpadding,2),b=h(h(b.captiononright,0)?b.canvasrightmargin:b.canvasleftmargin);ga(b)&&(b-=n);c=h(b,f-c);return Fb(a,e,c,d,this.defaultCaptionPadding,this.width,this.height,this)},fixCaptionAlignment:function(a,e,c,d,b,f){d=e.chart;var n=c.chart,g=h(n.canvasleftmargin),n=h(n.canvasrightmargin);d.marginRight+=a.right;d.marginLeft+=a.left;ga(g)&&(d.spacingLeft=d.marginLeft=g,d.spacingLeft-=a.left+0-1);ga(n)&&(d.spacingRight=d.marginRight=
+n,d.spacingRight-=a.right+0-1);Gb(e,c,this.width,b,f,this)}},v.bullet);v("lineargauge",{creditLabel:ja,defaultSeriesType:"lineargauge",multiValueGauge:!0,realtimeEnabled:!0,gaugeType:1,chartleftmargin:15,chartrightmargin:15,charttopmargin:10,chartbottommargin:10,colorRangeFillMix:"{light-10},{dark-20},{light-50},{light-85}",colorRangeFillRatio:"0,8,84,8",isDataLabelBold:!0,eiMethods:Y(Y({},v.gaugebase.eiMethods),{getData:function(a){var e,c=(e=this.jsVars)&&(e=e.hcObj)&&(e=e.options)&&(e=e.series)&&
+(e=e[0])&&e.data;e=c&&c.length?c.length:0;return void 0!==a&&0<a&&a<=e?(a=c[a-1],h(a.value,a.y)):null},getDataForId:function(a){var e,c=(e=this.jsVars)&&(e=e.hcObj)&&e.dataById;return c[a]&&c[a].point?(a=c[a].point,h(a.value,a.y)):null},setData:function(a,e,c){var d="",b,f=(b=this.jsVars)&&(b=b.hcObj)&&(b=b.options)&&(b=b.series)&&(b=b[0])&&b.data;b=f&&f.length||0;f=0;if(0<a&&a<=b&&(e&&e.toString()||""===e||0===e)){for(f=a;--f;)d+="|";a="value="+(d+e);if(c&&c.toString||""===c)a+="&label="+d+c.toString();
+this.feedData(a)}},setDataForId:function(a,e,c){var d,b=(d=this.jsVars)&&(d=d.hcObj)&&d.dataById;b[a]&&void 0!==b[a].index&&this.setData(b[a].index+1,e,c)}}),placeDataLabels:function(a,e,c,d,b,f,n,g){d=a.scale;b=this.smartLabel;f=a.chart;n=this.width-(f.marginRight+f.marginLeft);var p=this.height-(f.marginTop+f.marginBottom),m,k=a.plotOptions.series.dataLabels;m=k.style;var l=a.scale&&a.scale.labels&&a.scale.labels.style,t=h(parseInt(m.lineHeight,10),12);c=p-c;e=n-e;var r=f.valuePadding,u,w=0,C=0,
+F=0,x=0,q=0,z=0,A=a.series&&a.series[0]&&a.series[0].data||[];a=a.scale&&a.scale.trendPoint||[];var B=0,D=A.length,R;for(b.setStyle(m);B<D;B+=1)(R=A[B])&&R.displayValue!==J&&(u=r+R.radius*(3>=R.sides?.5:R.sides%2?1.1-1/R.sides:1),f.valuePadding=Math.max(f.valuePadding,u),this.isHorizontal?(R.isLabelString?(m=b.getSmartText(R.displayValue,n,c-r),R.displayValue=m.text,m.tooltext&&(R.originalText=m.tooltext)):m=b.getOriSize(R.displayValue)," "===R.displayValue&&(m={height:t}),0<m.height&&(w=m.height+
+u),w>c&&(w=c),f.pointerOnOpp?(3===d.axisPosition&&(x=Math.max(g,x),w=Math.max(g,w)),C=Math.max(C,w)):(1===d.axisPosition&&(q=Math.max(g,q),w=Math.max(g,w)),F=Math.max(w,F))):(R.isLabelString?(m=b.getSmartText(R.displayValue,e-r,p),R.displayValue=m.text,m.tooltext&&(R.originalText=m.tooltext)):m=b.getOriSize(R.displayValue),0<m.width&&(z=m.width+u),z>e&&(z=e),f.pointerOnOpp?2===d.axisPosition?(f.marginRight-=g,f.marginRight+=Math.max(g,z)):f.marginRight+=z:4===d.axisPosition?(f.marginLeft-=g,f.marginLeft+=
+Math.max(g,z)):f.marginLeft+=z),k.align=Va);b.setStyle(l);B=0;for(D=a.length;B<D;B+=1)(R=a[B])&&R.displayValue!==J&&(u=r+.5*R.markerRadius,f.valuePadding=Math.max(u,f.valuePadding),this.isHorizontal&&(m=b.getOriSize(R.displayValue),0<m.height&&(w=m.height+u),w>c&&(w=c),R.showOnTop?(1===d.axisPosition&&(q=Math.max(g,q),w=Math.max(g,w)),F=Math.max(F,w)):(3===d.axisPosition&&(x=Math.max(g,x),w=Math.max(g,w)),C=Math.max(w,C)),k.align=Va));this.isHorizontal&&(f.marginBottom+=C-x,f.marginTop+=F-q,w=F+C-
+x-q);return w},preSeriesAddition:function(a,e){var c=a.chart,d=e.chart,b=this.colorManager,f=a.scale;c.pointerRadius=h(d.pointerradius,10);c.pointerBgColor=q(d.pointerbgcolor,d.pointercolor,b.getColor("pointerBgColor"));c.pointerBgAlpha=h(d.pointerbgalpha,100);c.pointerBorderColor=q(d.pointerbordercolor,b.getColor("pointerBorderColor"));c.pointerBorderThickness=h(d.pointerborderthickness,1);c.pointerBorderAlpha=h(d.pointerborderalpha,100);c.pointerSides=h(d.pointersides,3);c.showGaugeLabels=h(d.showgaugelabels,
+1);c.showPointerShadow=h(d.showpointershadow,d.showshadow,1);c.valuePadding=h(d.valuepadding,2);this.isHorizontal?(c.pointerOnOpp=h(d.pointerontop,1==f.axisPosition?0:1)?0:1,c.gaugeType=f.reverseScale?2:1,c.valueAbovePointer=h(d.valueabovepointer,c.pointerOnOpp?0:1,1),c.valueInsideGauge=c.valueAbovePointer===c.pointerOnOpp?1:0):(c.pointerOnOpp=h(d.pointeronright,2==f.axisPosition?0:1),c.gaugeType=f.reverseScale?4:3)},getPointStub:function(a,e,c,d,b){var f=this.numberFormatter,n=this.colorManager,
+g=c.chart,p=c[U];c=f.getCleanValue(a.value);var m=E(a.link),k=E(ca(q(a.tooltext,p.tooltext))),l=E(ca(a.displayvalue)),t=f.dataLabels(c),f=this.colorRangeGetter.getColorObj(c);d=d.chart;var p=h(a.alpha,a.bgalpha,g.pointerBgAlpha),r=q(a.color,a.bgcolor,g.pointerBgColor),u=L(r,p),w=h(a.showborder,d.showplotborder,1),C=h(a.borderalpha,g.pointerBorderAlpha),F=q(a.bordercolor,g.pointerBorderColor),x=L(F,C),W=w?h(a.borderthickness,g.pointerBorderThickness):0,z=h(a.radius,g.pointerRadius),A=h(a.showhovereffect,
+d.showhovereffect),B,D,R,G,M,ma,N,H,K=!1,T=!1,y,O,Q;this.showTooltip?void 0!==k?(b=ab(k,[1,2],{formattedValue:t},a,d),T=!0):b=null===t?!1:void 0!==b?b+this.tooltipSepChar+t:t:b=J;h(a.showvalue,this.showValues)?void 0!==l?(k=l,K=!0):k=E(t," "):k=J;t=q(l,t,J);l=h(a.sides,g.pointerSides);3>l&&(l=3);this.pointValueWatcher&&this.pointValueWatcher(c);0!==A&&(A||a.bghovercolor||d.pointerbghovercolor||d.plotfillhovercolor||a.bghoveralpha||d.pointerbghoveralpha||d.plotfillhoveralpha||0===a.bghoveralpha||0===
+d.pointerbghoveralpha||a.showborderonhover||d.showborderonhover||0===a.showborderonhover||0===d.showborderonhover||a.borderhoverthickness||d.pointerborderhoverthickness||0===a.borderhoverthickness||0===d.pointerborderhoverthickness||a.borderhovercolor||d.pointerborderhovercolor||a.borderhoveralpha||d.pointerborderhoveralpha||0===a.borderhoveralpha||0===d.pointerborderhoveralpha||a.hoverradius||d.pointerhoverradius||0===a.hoverradius||0===d.pointerhoverradius)&&(A=!0,R=q(a.bghovercolor,d.pointerbghovercolor,
+d.plotfillhovercolor,"{dark-10}"),G=h(a.bghoveralpha,d.pointerbghoveralpha,d.plotfillhoveralpha),B=h(a.showborderonhover,d.showborderonhover),void 0===B&&(B=a.borderhoverthickness||0===a.borderhoverthickness||a.borderhovercolor||a.borderhoveralpha||0===a.borderhoveralpha?1:w),w=q(a.borderhovercolor,d.pointerborderhovercolor,"{dark-10}"),ma=h(a.borderhoveralpha,d.pointerborderhoveralpha),M=B?h(a.borderhoverthickness,d.pointerborderhoverthickness,W||1):0,D=h(a.hoverradius,d.pointerhoverradius,z+2),
+N=!!h(a.showhoveranimation,d.showhoveranimation,1),B={},O={},W!==M&&(B["stroke-width"]=M,O["stroke-width"]=W),O.fill=u,R=(H=/\{/.test(R))?n.parseColorMix(r,R)[0]:R,B.fill=L(R,h(G,p)),M&&(O.stroke=x,r=/\{/.test(w),B.stroke=L(r?n.parseColorMix(F,w)[0]:w,h(ma,C))),D&&(N?(y={r:D},Q={r:z}):(B.r=D,O.r=z)));return{y:c,displayValue:k,displayValueArgs:t,id:q(a.id,"pointer_"+e),editMode:h(a.editmode,d.editmode),isLabelString:K,isTooltextString:T,toolText:b,_tooltext:a.tooltext,plotFillPercent:q(d.plotfillpercent,
+40),bgalpha:p,color:u,borderAlpha:h(d.showplotborder,1)?g.pointerBorderAlpha:0,borderColor:x,borderWidth:W,radius:z,sides:l,link:m,colorRange:f,doNotSlice:!0,tooltipConstraint:this.tooltipConstraint,rolloverProperties:{enabled:A,hoverAttr:B,hoverAnimAttr:y,outAttr:O,outAnimAttr:Q}}}},v.linearscalegauge);v("hlineargauge",{friendlyName:"Horizontal Linear Gauge",creditLabel:ja,defaultSeriesType:"lineargauge",rendererId:"hlinear",standaloneInit:!0,isHorizontal:!0},v.lineargauge);v("vlineargauge",{friendlyName:"Vertical Linear Gauge",
+creditLabel:ja,defaultSeriesType:"lineargauge",connectTickMarks:0,standaloneInit:!0},v.lineargauge);v("thermometer",{friendlyName:"Thermometer Gauge",creditLabel:ja,defaultSeriesType:"thermometer",rendererId:"thermometer",connectTickMarks:0,tickMarkDistance:0,standaloneInit:!0,realtimeEnabled:!0,isDataLabelBold:!0,defaultPlotShadow:0,alignCaptionWithCanvas:0,defaultPaletteOptions:Ma(Y({},ya),{thmBorderColor:["545454","60634E","415D6F","845001","68001B"],thmFillColor:["999999","ADB68F","A2C4C8","FDB548",
+"FF7CA0"]}),preSeriesAddition:function(a,e){var c=a.chart,d=e.chart,b=this.colorManager,f;f=this.numberFormatter;var n=h(d.showhovereffect);c.thmOriginX=h(d.thmoriginx,d.gaugeoriginx);c.thmOriginY=h(d.thmoriginy,d.gaugeoriginy);c.thmBulbRadius=h(f.getCleanValue(d.thmbulbradius,!0));c.thmHeight=h(f.getCleanValue(h(d.thmheight,d.gaugeheight),!0));c.gaugeFillColor=q(d.gaugefillcolor,d.thmfillcolor,b.getColor("thmFillColor"));c.gaugeFillAlpha=h(d.gaugefillalpha,d.thmfillalpha,Ia);0!==n&&(n||d.thmfillhovercolor||
+d.plotfillhovercolor||d.thmfillhoveralpha||d.plotfillhoveralpha||0===d.thmfillhoveralpha)&&(c.plotHoverEffects={},c.plotHoverEffects.enabled=!0,f=q(d.thmfillhovercolor,d.plotfillhovercolor,"{dark-10}"),c.plotHoverEffects.thmFillHoverColor=/\{/.test(f)?b.parseColorMix(c.gaugeFillColor,f)[0]:f,c.plotHoverEffects.thmFillHoverAlpha=q(d.thmfillhoveralpha,d.plotfillhoveralpha,c.gaugeFillAlpha));f=h(d.showgaugeborder,1)?h(d.gaugeborderalpha,40):0;c.gaugeBorderColor=L(q(d.gaugebordercolor,b.getColor("thmBorderColor")),
+f);c.gaugeBorderThickness=h(d.gaugeborderthickness,1);c.thmGlassColor=q(d.thmglasscolor,da(c.gaugeFillColor,30));c.use3DLighting=!h(d.use3dlighting,1)},getPointColorObj:function(a){return{code:q(a.gaugefillcolor,a.thmfillcolor,this.colorManager.getColor("thmFillColor")),alpha:h(a.gaugefillalpha,a.thmfillalpha,100)}},getPointStub:v.linearscalegauge,placeDataLabels:v.linearscalegauge,manageTitleSpace:v.linearscalegauge,spaceManager:function(a,e,c,d){var b=a.chart,f=c-(b.marginRight+b.marginLeft);d-=
+b.marginTop+b.marginBottom;var n=b.marginRight,g=b.marginLeft,p=b.marginTop,m=b.marginBottom,k=.3*f,l=.3*d,t=b.thmOriginX,r=b.thmOriginY,u=b.thmBulbRadius,w=b.thmHeight,C=ga(t),F=ga(r),x=ga(u),q=ga(w),z=4===a.scale.axisPosition,A=0,B=0,D,R,G=0;a.title.alignWithCanvas||(d-=G=this.manageTitleSpace(a,e,0,d/2));this.placeTickMark&&(f-=A=this.placeTickMark(a,2*h(u,4),l));x||(b.thmBulbRadius=u=Math.min(f/2,.13*h(w,d)),x=!0);x&&(R=.643*u,k=D=2*R,x=(2*u-D)/2,C?b.marginLeft=z?b.marginLeft+(B=t-R-A):b.marginLeft+
+(B=t-R):z?(b.marginLeft+=(c-g-n-x-D)/2-A/2,b.marginRight-=(c-g-n-x-D)/2-A/2,b.marginRight+=B=Math.min(u,f/2)-R):(b.marginLeft+=(c-g-n-x-D)/2-A/2,b.marginRight-=(c-g-n-x-D)/2-A/2,b.marginLeft+=B=Math.min(u,f/2)-R),f-=B);b.marginRight+=f-D;a.title.alignWithCanvas&&(d-=G=this.manageTitleSpace(a,e,0,d/2));F&&(l=r-G+u);this.placeDataLabels&&(d-=this.placeDataLabels(a,k,l,p,n,m,g));q||(b.thmHeight=F?w=Math.max(r-G+u-R,3*u):w=Math.max(d-R,3*u));b.marginTop=F?b.marginTop+(r-G+u-w):b.marginTop+(d-w);e=1.766*
+u;b.marginBottom+=e;b.valuePadding+=e;b.thmHeight=b.plotHeight=w-e;this.postDataLabelsPlacement&&this.postDataLabelsPlacement(a,k,l);b.marginBottom+=F?d-r-u+G:0}},v.gaugebase);v("cylinder",{friendlyName:"Cylinder Gauge",creditLabel:ja,defaultSeriesType:"cylinder",connectTickMarks:0,rendererId:"cylinder",tickMarkDistance:2,standaloneInit:!0,charttopmargin:10,chartbottommargin:10,chartrightmargin:10,chartleftmargin:10,isDataLabelBold:!0,realtimeEnabled:!0,alignCaptionWithCanvas:0,defaultPaletteOptions:Ma(Y({},
+ya),{cylFillColor:["CCCCCC","ADB68F","E1F5FF","FDB548","FF7CA0"],periodColor:["EEEEEE","ECEEE6","E6ECF0","FFF4E6","FFF2F5"]}),preSeriesAddition:function(a,e){var c=a.chart,d=e.chart,b=this.colorManager,f=h(d.showhovereffect);c.cylFillColor=q(d.gaugefillcolor,d.cylfillcolor,b.getColor("cylFillColor"));c.cylFillAlpha=q(d.gaugefillalpha,d.cylfillalpha,100);0!==f&&(f||d.cylfillhovercolor||d.plotfillhovercolor||d.cylfillhoveralpha||d.plotfillhoveralpha||0===d.cylfillhoveralpha)&&(c.plotHoverEffects={},
+c.plotHoverEffects.enabled=!0,f=q(d.cylfillhovercolor,d.plotfillhovercolor,"{dark-10}"),c.plotHoverEffects.cylFillHoverColor=/\{/.test(f)?b.parseColorMix(c.cylFillColor,f)[0]:f,c.plotHoverEffects.cylFillHoverAlpha=q(d.cylfillhoveralpha,d.plotfillhoveralpha,c.cylFillAlpha));c.cylGlassColor=q(d.cylglasscolor,"FFFFFF");c.cyl3DLighting=h(d.use3dlighting,"1")},getPointColorObj:function(a){return{code:q(a.gaugefillcolor,a.thmfillcolor,this.colorManager.getColor("cylFillColor")),alpha:h(a.gaugefillalpha,
+a.thmfillalpha,100)}},getPointStub:v.linearscalegauge,placeDataLabels:v.linearscalegauge,manageTitleSpace:v.linearscalegauge,spaceManager:function(a,e,c,d){var b=a.chart,f=e.chart,n=c-(b.marginRight+b.marginLeft),g=d-(b.marginTop+b.marginBottom),p=b.marginRight,m=b.marginLeft,k=b.marginTop,l=b.marginBottom,t=.2*n,r=.3*g,u=h(f.cylyscale,30),w=this.scaleFactor,C=this.numberFormatter;a.title.alignWithCanvas||(g-=this.manageTitleSpace(a,e,n/2,g/2));this.placeTickMark&&(n-=this.placeTickMark(a,t,r));this.placeDataLabels&&
+(g-=this.placeDataLabels(a,t,r,k,p,l,m)+8,b.valuePadding+=8);this.postDataLabelsPlacement&&this.postDataLabelsPlacement(a,t,r);b.cylHeight=E(f.cylheight);if(50<u||0>u)u=30;b.cylYScale=u/=100;p=Math.max(La(n,1.2*g)/2,5);p=h(E(C.getCleanValue(f.cylradius,!0))*w,p);b.marginLeft=h(E(f.cyloriginx)*w,b.marginLeft);b.marginLeft+=n/2-p;b.marginRight=c-(b.marginLeft+2*p);a.title.alignWithCanvas&&(g-=this.manageTitleSpace(a,e,n/2,g/2));a=g-p*u*2;C=h(E(C.getCleanValue(f.cylheight,!0))*w,a);u=b.yScaleRadius=
+p*u;a=b.cylinderTotalHeight=2*u+C;g=g-a+b.marginTop;b.marginTop=h(E(f.cyloriginy)*w-C,u+g);b.marginBottom=d-(b.marginTop+C);b.cylRadius=p;b.cylHeight=C;b.yScaleRadius=u}},v.gaugebase);v("angulargauge",{friendlyName:"Angular Gauge",standaloneInit:!0,drawAnnotations:!0,defaultSeriesType:"angulargauge",creditLabel:ja,rendererId:"angular",isAngular:!0,eiMethods:v.lineargauge.eiMethods,multiValueGauge:!0,realtimeEnabled:!0,defaultPaletteOptions:Ma(Y({},ya),{dialColor:["999999,ffffff,999999","ADB68F,F3F5DD,ADB68F",
+"A2C4C8,EDFBFE,A2C4C8","FDB548,FFF5E8,FDB548","FF7CA0,FFD1DD,FF7CA0"],dialBorderColor:["999999","ADB68F","A2C4C8","FDB548","FF7CA0"],pivotColor:["999999,ffffff,999999","ADB68F,F3F5DD,ADB68F","A2C4C8,EDFBFE,A2C4C8","FDB548,FFF5E8,FDB548","FF7CA0,FFD1DD,FF7CA0"],pivotBorderColor:["999999","ADB68F","A2C4C8","FDB548","FF7CA0"]}),subTitleFontSizeExtender:0,charttopmargin:5,chartrightmargin:5,chartbottommargin:5,chartleftmargin:5,defaultPlotShadow:1,gaugeBorderColor:"{dark-20}",gaugeBorderThickness:1,updateSnapPoints:function(a){v.gaugebase.updateSnapPoints.apply(this,
+arguments);var e=a.series[0],c=this.snapLiterals;c.gaugestartangle=a.chart.gaugeStartAngle/hb;c.gaugeendangle=a.chart.gaugeEndAngle/hb;c.chartcenterx=a.chart.origW/2;c.chartcentery=a.chart.origH/2;c.gaugecenterx=e.gaugeOriginX;c.gaugecentery=e.gaugeOriginY;c.gaugeinnerradius=e.gaugeInnerRadius;c.gaugeouterradius=e.gaugeOuterRadius;c.dial=function(c){var b=a.series[0],f=c[1]||c[0],e=(c=b.data[Number(c[0])||0])&&c.graphic;if(e){e=e.matrix;switch(f){case "startx":b=b.gaugeOriginX+e.x(-c.rearExtension,
+0);break;case "starty":b=b.gaugeOriginY+e.y(-c.rearExtension,0);break;case "endx":b=b.gaugeOriginX+e.x(c.radius,0);break;case "endy":b=b.gaugeOriginY+e.y(c.radius,0);break;default:b=0}return b}return 0}},preSeriesAddition:function(a,e){var c=e.chart,d=h(c.gaugescaleangle,180),b=h(c.gaugestartangle),c=h(c.gaugeendangle),f=ga(b),n=Na?.001:.01,g=ga(c);if(360<d||-360>d)d=0<d?360:-360;if(360<c||-360>c)c%=360;if(360<b||-360>b)b%=360;if(f&&g){if(d=b-c,360<d||-360>d)d%=360,c=b-d}else if(f){if(c=b-d,360<c||
+-360>c)c%=360,b+=0<c?-360:360}else if(g){if(b=c+d,360<b||-360>b)b%=360,c+=0<b?-360:360}else 360===d?(b=180,c=-180):-360===d?c=b=-180:(b=90+d/2,c=b-d);360===Math.abs(d)&&(d+=0<d?-n:n,c=b-d);c=360-c;b=360-b;if(360<b||360<c)b-=360,c-=360;a.chart.gaugeStartAngle=b*hb;a.chart.gaugeEndAngle=c*hb;a.chart.gaugeScaleAngle=-d*hb},series:function(a,e){var c={data:[],colorByPoint:!0},d=a.chart,b=this.colorRangeGetter,f=(b=b&&b.colorArr)&&b.length,n=e[U],g=this.numberFormatter,p=this.colorManager,m,k,l,t=c.showValue=
+h(d.showvalue,d.showrealtimevalue,0),r=this.scaleFactor,u=0,w=a.dials&&a.dials.dial,C,F,x=h(d.showhovereffect),W,z,A,B,D,R,G,M,ma,N,H,K,T,y,O=h(d.editmode,0),Q,S,v,P,I,ba,sa,Z,aa,ea,oa;Q=u=h(E(d.pivotradius)*r,5);c.pivotRadius=Q;S=0;v=w&&w.length;ea=0;v||(S=-1,v=0,w=[]);for(0!==x&&(x||d.dialborderhovercolor||d.dialborderhoveralpha||0===d.dialborderhoveralpha||d.dialborderhoverthickness||0===d.dialborderhoverthickness||d.dialbghovercolor||d.plotfillhovercolor||d.dialbghoveralpha||d.plotfillhoveralpha||
+0===d.dialbghoveralpha)&&(x=1);S<v;S+=1){P=w[S]||{};m=g.getCleanValue(P.value);this.pointValueWatcher&&this.pointValueWatcher(m);I=h(P.rearextension,0);u=Math.max(u,I*r);l=g.dataLabels(m);ba=E(l,J);Z=h(P.showvalue,t);aa=h(E(P.valuey)*r);sa=q(P.tooltext,P.hovertext)?!0:!1;Z&&!ga(aa)&&(ea+=1);k=(k=E(ca(q(P.tooltext,P.hovertext,n.tooltext))))?ab(k,[1,2],{formattedValue:l},P,d):ba;T=q(P.color,P.bgcolor,p.getColor("dialColor"));D=h(P.alpha,P.bgalpha,100);y=X({FCcolor:{color:T,alpha:D,angle:90}});C=q(P.bordercolor,
+p.getColor("dialBorderColor"));oa=h(P.borderalpha,100);l=L(C,oa);F=h(P.borderthickness,1);M=h(P.radius);ma=h(P.basewidth);H=h(P.topwidth,0);N=h(P.baseradius,0);W=h(P.showhovereffect,x);if(0!==W&&(W||P.borderhovercolor||P.borderhoveralpha||0===P.borderhoveralpha||P.borderhoverthickness||0===P.borderhoverthickness||P.bghovercolor||P.bghoveralpha||0===P.bghoveralpha)){W=!0;K={};G={};z=q(P.borderhovercolor,d.dialborderhovercolor,"{dark-10}");B=h(P.borderhoveralpha,d.dialborderhoveralpha,oa);if(A=h(P.borderhoverthickness,
+d.dialborderhoverthickness,F))K.stroke=l,R=/\{/.test(z),G.stroke=L(R?p.parseColorMix(C,z)[0]:z,B);A!==F&&(G["stroke-width"]=A,K["stroke-width"]=F);C=q(P.bghovercolor,d.dialbghovercolor,d.plotfillhovercolor,"{dark-10}");D=h(P.bghoveralpha,d.dialbghoveralpha,d.plotfillhoveralpha,D);K.fill=y;C=(z=/\{/.test(C))?p.parseColorMix(T,C).join():C;z={FCcolor:{color:C,alpha:D,angle:90}};G.fill=X(z)}c.data.push({rolloverProperties:{enabled:W,hasHoverSizeChange:void 0,hoverRadius:h(NaN*r),baseHoverWidth:h(NaN*
+r,1.6*Q),topHoverWidth:h(NaN*r),rearHoverExtension:h(NaN*r),hoverFill:z,hoverAttr:G,outAttr:K},_tooltext:q(P.tooltext,P.hovertext),y:m,id:q(P.id,S),color:y,showValue:Z,editMode:h(P.editmode,O),borderColor:l,shadowAlpha:oa,borderThickness:F,baseWidth:h(ma*r,1.6*Q),topWidth:h(H*r),baseRadius:h(N*r),rearExtension:I*r,valueX:h(E(P.valuex)*r),valueY:aa,radius:h(M*r),link:q(P.link,J),isLabelString:sa,toolText:k,displayValue:Z?q(ba," "):J,displayValueArgs:q(ba,J),doNotSlice:!0})}c.displayValueCount=ea;c.compositPivotRadius=
+u;e.series[0]=c;f&&this.pointValueWatcher&&h(d.includecolorrangeinlimits,this.includeColorRangeInLimits)&&(c=h(b[0].minvalue),ga(c)&&this.pointValueWatcher(c),c=h(b[f-1].maxvalue),ga(c)&&this.pointValueWatcher(c))},postSeriesAddition:function(a,e){var c=e.chart,d=a.series[0],b=this.colorManager,f;d.valueBelowPivot=h(c.valuebelowpivot,0);d.gaugeFillMix=c.gaugefillmix;d.gaugeFillRatio=c.gaugefillratio;void 0===d.gaugeFillMix&&(d.gaugeFillMix="{light-10},{light-70},{dark-10}");void 0===d.gaugeFillRatio?
+d.gaugeFillRatio=",6":""!==d.gaugeFillRatio&&(d.gaugeFillRatio=","+d.gaugeFillRatio);f=b.parseColorMix(q(c.pivotfillcolor,c.pivotcolor,c.pivotbgcolor,b.getColor("pivotColor")),q(c.pivotfillmix,"{light-10},{light-30},{dark-20}"));d.pivotFillAlpha=b.parseAlphaList(q(c.pivotfillalpha,Ia),f.length);d.pivotFillRatio=b.parseRatioList(q(c.pivotfillratio,fb),f.length);d.pivotFillColor=f.join();d.pivotFillAngle=h(c.pivotfillangle,0);d.isRadialGradient="radial"==q(c.pivotfilltype,"radial").toLowerCase();d.showPivotBorder=
+h(c.showpivotborder,0);d.pivotBorderThickness=h(c.pivotborderthickness,1);d.pivotBorderColor=L(q(c.pivotbordercolor,b.getColor("pivotBorderColor")),1==d.showPivotBorder?q(c.pivotborderalpha,Ia):fb);this.parseColorMix=b.parseColorMix;this.parseAlphaList=b.parseAlphaList;this.parseRatioList=b.parseRatioList},spaceManager:function(a,e,c,d){var b=a.chart,f=e.chart,n=a.scale,g=a.series[0],p=g.displayValueCount,m=n.tickValues.style,k=h(parseInt(m.lineHeight,10),12),l=h(parseInt(m.fontSize,10),10),t=.8*
+l,r=.1*k,u=Na?0:.1*k,w=h(parseInt(a.plotOptions.series.dataLabels.style.lineHeight,10),12),C=c-(b.marginRight+b.marginLeft),F=d-(b.marginTop+b.marginBottom),x=this.scaleFactor,q=g.compositPivotRadius,z,A,B=b.gaugeStartAngle,D=b.gaugeEndAngle,R,G=p*w+2+g.pivotRadius,M=0,ma=g.valueBelowPivot,N,H,K,T,y,O,Q,S,v,P,J,I,L,Z,aa,ea,oa,ua,wa,va,za,Da,lb,Qa,X,U,Y,Ja,Ra,Jb,da,ca,V,ka,fa,ja,ra;R=/^\d+\%$/.test(f.gaugeinnerradius)?parseInt(f.gaugeinnerradius,10)/100:.7;F-=this.titleSpaceManager(a,e,C,F/2);ma||
+(M=G,G=0);g.gaugeOuterRadius=h(Math.abs(E(f.gaugeouterradius)*x));g.gaugeInnerRadius=h(Math.abs(E(f.gaugeinnerradius)*x),g.gaugeOuterRadius*R);var na=b.gaugeStartAngle,ta=b.gaugeEndAngle,la=F,qa=g.gaugeOuterRadius,ia=h(E(f.gaugeoriginx)*x-b.marginLeft),ha=h(E(f.gaugeoriginy)*x-b.marginTop),pa=Math.max(q,l),xa=G,ya=M,Ca=ga(qa),Ha=ga(ia),Ka=ga(ha),Fa=2*Math.PI,Ba=Math.PI,Ga=Math.PI/2,La=Ba+Ga,Sa,Oa=ia,Ta=ha,Ma,Aa,Za,Ia,db,Ya=!1,ab,bb,cb,eb,Ua,$a,fb,Ea,Xa,ib,jb=na%Fa;0>jb&&(jb+=Fa);(pa=pa||0)&&pa<C/
+2&&pa<la/2&&(Ya=!0);xa>la/2&&(xa=la/2);ya>la/2&&(ya=la/2);ab=Math.cos(na);bb=Math.sin(na);cb=Math.cos(ta);eb=Math.sin(ta);Aa=Math.min(ab,cb,0);Ia=Math.max(ab,cb,0);Za=Math.min(bb,eb,0);db=Math.max(bb,eb,0);if(!Ca||!Ha||!Ka){ib=ta-na;$a=jb+ib;if($a>Fa||0>$a)Ia=1;if(0<ib){if(jb<Ga&&$a>Ga||$a>Fa+Ga)db=1;if(jb<Ba&&$a>Ba||$a>Fa+Ba)Aa=-1;if(jb<La&&$a>La||$a>Fa+La)Za=-1}else{if(jb>Ga&&$a<Ga||$a<-La)db=1;if(jb>Ba&&$a<Ba||$a<-Ba)Aa=-1;if(jb>La&&$a<La||$a<-Ga)Za=-1}Ha?Ca||(Ea=C-ia,Xa=-ia,Sa=Aa?Math.min(Ea/
+Ia,Xa/Aa):Ea/Ia):(fb=Ia-Aa,Ua=C/fb,ia=-Ua*Aa,Sa=Ua,Ya&&(C-ia<pa?(ia=C-pa,Ea=C-ia,Xa=-ia,Sa=Aa?Math.min(Ea/Ia,Xa/Aa):Ea/Ia):ia<pa&&(ia=pa,Ea=C-ia,Xa=-ia,Sa=Aa?Math.min(Ea/Ia,Xa/Aa):Ea/Ia)),Oa=ia);Ka?Ca||(Ea=la-ha,Xa=-ha,Sa=Math.min(Sa,Za?Math.min(Ea/db,Xa/Za):Ea/db)):(fb=db-Za,Ua=la/fb,ha=-Ua*Za,Ya&&(la-ha<pa?(ha=la-pa,Ea=la-ha,Xa=-ha,Sa=Math.min(Sa,Za?Math.min(Ea/db,Xa/Za):Ea/db)):ha<pa&&(ha=pa,Ea=la-ha,Xa=-ha,Sa=Math.min(Sa,Za?Math.min(Ea/db,Xa/Za):Ea/db))),la-ha<xa?(ha=la-xa,Ea=la-ha,Xa=-ha,Sa=
+Math.min(Sa,Za?Math.min(Ea/db,Xa/Za):Ea/db)):ha<ya&&(ha=ya,Ea=la-ha,Xa=-ha,Sa=Math.min(Sa,Za?Math.min(Ea/db,Xa/Za):Ea/db)),Sa=Math.min(Sa,Ua),Ta=ha);Ma=Sa;0>=Ma&&(Ma=Math.min(C/2,la/2))}z=g.gaugeOriginX=Oa;A=g.gaugeOriginY=Ta;N=n.majorTM;H=0;K=N.length;y=a.labels.smartLabel;J=n.min;I=n.max-n.min;oa=C-z;ua=F-A;wa=n.placeValuesInside;va=Math.cos(89.98*hb);za=-va;Da=ga(g.gaugeOuterRadius);lb=n.tickValueDistance;Qa=n.showTickValues;X=n.showLimits;U=h(g.gaugeOuterRadius,Ma);Y=h(g.gaugeInnerRadius,U*R);
+Ja=U;Ra=.2*U;fa=1.5*k;ra=(D-B)/I;if(Qa||X)for(wa?Y>lb+k?Jb=Y-lb:(Jb=Y,lb=0):(Ja+=lb,Da||(Ra+=lb)),y.setStyle(m);H<K;H+=1)if(P=N[H],ja=B+(P.value-J)*ra,L=Math.cos(ja),Z=Math.sin(ja),T=P.displayValue,O=y.getOriSize(T),Q=O.width,S=O.height,v=S/2,0<Q&&0<S)if(P.x=0,wa)P.align=L>va?gb:L<za?Wa:Va,P.isString&&(aa=Jb*L,da=Math.abs(aa),da<Q&&(O=y.getSmartText(T,Math.max(da,k),fa),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height,v=S/2)),L>va||L<za?(P.y=l-v+u,P.y-=.4*S*Z):P.y=t-(0>Z?0:
+S-r);else if(P.align=L>va?Wa:L<za?gb:Va,aa=Ja*L,ea=Ja*Z,Da||(0<ea?(ka=v+v*Z,ua<ea+ka&&(ea=ua-ka,Ja=Math.max(ea/Z,Ra))):0>ea&&(ka=v-v*Z,A<-ea+ka&&(ea=ka-A,Ja=Math.max(ea/Z,Ra)))),L>va)aa+Q>oa&&(Da?P.isString&&(O=y.getSmartText(T,oa-aa,fa),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height,v=S/2):(aa=oa-Q,Ja=Math.max(aa/L,Ra),aa=Ja*L,P.isString&&aa+Q>oa&&(O=y.getSmartText(T,oa-aa,fa),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height,v=S/2,Q=O.width,aa=oa-
+Q,Ja=Math.max(aa/L,Ra)))),P.y=l-v+u+.4*S*Z;else if(L<za)Q-aa>z&&(Da?P.isString&&(O=y.getSmartText(T,z+aa,fa),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height,v=S/2):(aa=Q-z,Ja=Math.max(aa/L,Ra),aa=Ja*L,P.isString&&Q-aa>z&&(O=y.getSmartText(T,z+aa,fa),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),Q=O.width,S=O.height,v=S/2,aa=Q-z,Ja=Math.max(aa/L,Ra)))),P.y=l-v+u+.4*S*Z;else{0<Z?(ca=ua,V=S+ea):(ca=A,V=S-ea);if(!Da){if(V>ca&&(Ja=Math.max(ca-S,Ra),V=S+Ja),P.isString&&
+V>ca||Q>C)O=y.getSmartText(T,C,Math.max(ca-Ra,k)),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height,Ja=Math.max(ca-S,Ra)}else if(P.isString&&V>ca||Q>C)O=y.getSmartText(T,C,Math.max(S-V+ca,k)),P.displayValue=O.text,O.tooltext&&(P.originalText=O.tooltext),S=O.height;P.y=t-(0<Z?0:S-r)}Da||(g.gaugeOuterRadius=wa?Ja:Ja-lb,0>=g.gaugeOuterRadius&&(g.gaugeOuterRadius=Math.abs(Ra)));g.gaugeInnerRadius=h(g.gaugeInnerRadius,g.gaugeOuterRadius*R)}},v.gaugebase);v("bulb",{friendlyName:"Bulb Gauge",
+defaultSeriesType:"bulb",defaultPlotShadow:1,standaloneInit:!0,drawAnnotations:!0,charttopmargin:10,chartrightmargin:10,chartbottommargin:10,chartleftmargin:10,realtimeEnabled:!0,isDataLabelBold:!0,rendererId:"bulb",preSeriesAddition:function(a){a=a.chart;a.colorRangeGetter=this.colorRangeGetter;a.defaultColors=this.colorManager.getPlotColor(0);a.defaultColLen=a.defaultColors.length},getPointColor:function(a,e,c){return c?{FCcolor:{cx:.4,cy:.4,r:"80%",color:da(a,65)+y+da(a,75)+y+na(a,65),alpha:e+
+y+e+y+e,ratio:"0,30,70",radialGradient:!0}}:L(a,e)},getPointStub:function(a,e,c,d,b){var f=c.chart,n=c[U];e=d.chart;c=this.numberFormatter;d=c.getCleanValue(a.value);var g=c.dataLabels(d);c=E(a.link);var p=E(ca(q(a.tooltext,n.tooltext))),m=E(ca(a.displayvalue)),n=this.colorRangeGetter.getColorObj(d),k=f.useColorNameAsValue=h(e.usecolornameasvalue,0),l=n.colorObj||n.prevObj||n.nextObj||{},t=this.colorManager,r=ca(q(l.label,l.name)),u=q(e.gaugefillalpha,l.alpha,Ia),w=q(l.bordercolor,e.gaugebordercolor,
+na(l.code,70)),C=h(l.borderalpha,e.gaugeborderalpha,"90")*u/100,F=h(e.showgaugeborder,0),x=F?h(e.gaugeborderthickness,1):0,W=f.is3D=h(e.is3d,1),z=this.getPointColor(l.code,u,W),A=h(e.showhovereffect),B,D,R,G,M,ma,N,H,K;n.isOnMeetPoint&&(l=n.nextObj);f.gaugeFillAlpha=u;w=(H=/\{/.test(w))?t.parseColorMix(q(l.bordercolor,l.code),w)[0]:w;f=L(w,C);0!==A&&(A||e.gaugefillhovercolor||e.plotfillhovercolor||e.gaugefillhoveralpha||e.plotfillhoveralpha||0===e.gaugefillhoveralpha||e.is3donhover||0===e.is3donhover||
+e.showgaugeborderonhover||0===e.showgaugeborderonhover||e.gaugeborderhovercolor||e.gaugeborderhoveralpha||0===e.gaugeborderhoveralpha||e.gaugeborderhoverthickness||0===e.gaugeborderhoverthickness)&&(A=!0,B=q(e.gaugefillhovercolor,e.plotfillhovercolor,"{dark-10}"),D=h(e.gaugefillhoveralpha,e.plotfillhoveralpha),R=h(e.showgaugeborderonhover),void 0===R&&(R=e.gaugeborderhovercolor||e.gaugeborderhoveralpha||0===e.gaugeborderhoveralpha||e.gaugeborderhoverthickness||0===e.gaugeborderhoverthickness?1:F),
+F=q(e.gaugeborderhovercolor,"{dark-10}"),M=h(e.gaugeborderhoveralpha),G=R?h(e.gaugeborderhoverthickness,x||1):0,W=!!h(e.is3donhover,W),h(e.showhoveranimation,1),R={},K={},x!==G&&(R["stroke-width"]=G,K["stroke-width"]=x),K.fill=X(z),B=(N=/\{/.test(B))?t.parseColorMix(l.code,B)[0]:q(B,l.code),R.fill=X(this.getPointColor(B,h(D,u),W)),G&&(K.stroke=f,l=/\{/.test(F),R.stroke=L(l?t.parseColorMix(H?B:w,F)[0]:F,h(M,C))));this.showTooltip?void 0!==p?(a=ab(p,[1,2],{formattedValue:g},a,e),ma=!0):a=k?r:null===
+g?!1:void 0!==b?b+this.tooltipSepChar+g:g:a=!1;b=void 0!==m?m:k?r:g;this.pointValueWatcher&&this.pointValueWatcher(d);return{y:d,displayValue:b,displayValueArgs:b,toolText:a,isLabelString:ma,colorName:r,color:z,borderWidth:x,borderColor:f,colorRange:n,link:c,doNotSlice:!0,rolloverProperties:{enabled:A,hoverAttr:R,hoverAnimAttr:void 0,outAttr:K}}},spaceManager:function(a,e,c,d){var b=this.smartLabel,f=a.series[0],n=f&&f.data[0],f=a.chart,g=e.chart,p=f.scaleFactor=this.scaleFactor;c-=f.marginRight+
+f.marginLeft;d-=f.marginTop+f.marginBottom;var m=f.marginLeft,k=f.marginTop,l=h(g.valuepadding,4),t=f.useColorNameAsValue,r,u=0,w;n.y=E(n.y,a.scale.min);n.displayValue=this.showValues?E(n.displayValue,this.numberFormatter.dataLabels(a.scale.min)):J;w=n.displayValue;f.gaugeOriginX=h(g.gaugeoriginx,g.bulboriginx,-1);f.gaugeOriginY=h(g.gaugeoriginy,g.bulboriginy,-1);f.gaugeRadius=h(g.gaugeradius,g.bulbradius,-1);g=-1!==f.gaugeRadius;d-=e=this.titleSpaceManager(a,e,c,.3*d);k+=e;f.dataLabels={style:a.plotOptions.series.dataLabels.style};
+e=f.dataLabels.style;b.setStyle(e);1==f.placeValuesInside?(a=g?f.gaugeRadius*p:Math.min(c,d)/2,r=Math.sqrt(ia(2*a,2)/2),b=b.getSmartText(w,r,r)):(r=(g?d-2*f.gaugeRadius*p:.7*d)-l,b=b.getSmartText(w,c,r),u=b.height+l,a=Math.min(c,d-u)/2);t&&(n.displayValue=b.text,b.tooltext&&(n.originalText=b.tooltext));f.valuePadding=l;f.valueTextHeight=b.height;f.labelLineHeight=parseInt(e.lineHeight,10);a=g?f.gaugeRadius*p:a;b=-1===f.gaugeOriginX?m+c/2:f.gaugeOriginX*p;p=-1===f.gaugeOriginY?k+(d-u)/2:f.gaugeOriginY*
+p;f.marginTop=f.marginLeft=0;f.gaugeRadius=a;f.gaugeOriginX=b;f.gaugeOriginY=p},updateSnapPoints:function(a){v.gaugebase.updateSnapPoints.apply(this,arguments);this.snapLiterals.gaugeradius=a.chart.gaugeRadius}},v.gaugebase);v("drawingpad",{friendlyName:"DrawingPad Component",standaloneInit:!0,defaultSeriesType:"drawingpad",rendererId:"drawingpad",defaultPlotShadow:1,drawAnnotations:!0,chartleftmargin:0,charttopmargin:0,chartrightmargin:0,chartbottommargin:0,chart:function(){Y(this.dataObj.chart,
+{bgcolor:this.dataObj.chart.bgcolor||"#ffffff",bgalpha:this.dataObj.chart.bgalpha||"100"});return this.base.chart.apply(this,arguments)},series:function(){Y(this.hcJSON,{legend:{enabled:!1},chart:{plotBackgroundColor:Ya,plotBorderColor:Ya},series:[{data:[]}]})},spaceManager:function(){},creditLabel:ja},v.bulb);v("funnel",{friendlyName:"Funnel Chart",standaloneInit:!0,defaultSeriesType:"funnel",sliceOnLegendClick:!0,defaultPlotShadow:1,subTitleFontSizeExtender:0,tooltippadding:3,drawAnnotations:!0,
+isDataLabelBold:!1,formatnumberscale:1,rendererId:"funnel",alignCaptionWithCanvas:0,defaultPaletteOptions:Ma(Y({},ya),{paletteColors:I.defaultPaletteOptions.paletteColors}),preSeriesAddition:function(a,e){var c=e.chart,d=this.colorManager,b=a.plotOptions.series.dataLabels;b.connectorWidth=h(c.smartlinethickness,1);b.connectorColor=L(q(c.smartlinecolor,d.getColor("baseFontColor")),h(c.smartlinealpha,100));h(c.showlegend,0)?(a.legend.enabled=!0,a.legend.reversed=!Boolean(h(c.reverselegend,0))):a.legend.enabled=
+!1;a.plotOptions.series.point.events.legendItemClick=c.interactivelegend===fb?ub:function(){this.slice()}},series:function(a,e,c){a.data&&0<a.data.length&&(a=this.point(c,{data:[],colorByPoint:!0,showInLegend:!0},a.data,a.chart,e))&&e.series.push(a)},pointHoverOptions:function(a,e,c){var d=h(a.showhovereffect,e.showhovereffect),b={enabled:d},f={};void 0===d&&(d=b.enabled=void 0!==q(a.hovercolor,e.plotfillhovercolor,a.hoveralpha,e.plotfillhoveralpha,a.borderhovercolor,e.plotborderhovercolor,a.borderhoverthickness,
+e.plotborderhoverthickness,a.borderhoveralpha,e.plotborderhoveralpha));if(d){b.highlight=h(a.highlightonhover,e.highlightonhover);b.color=q(a.hovercolor,e.plotfillhovercolor);b.alpha=q(a.hoveralpha,e.plotfillhoveralpha,c.alpha);b.borderColor=q(a.borderhovercolor,e.plotborderhovercolor,c.borderColor);b.borderThickness=h(a.borderhoverthickness,e.plotborderhoverthickness,c.borderWidth);b.borderAlpha=q(a.borderhoveralpha,e.plotborderhoveralpha,c.borderAlpha);0!==b.highlight&&void 0===b.color&&(b.highlight=
+1);b.color=q(b.color,c.color).replace(/,+?$/,J);if(1===b.highlight){a=b.color.split(/\s{0,},\s{0,}/);e=a.length;for(c=0;c<e;c+=1)a[c]=da(a[c],70);b.color=a.join(",")}f={color:b.color,alpha:b.alpha,borderColor:L(b.borderColor,b.borderAlpha),borderWidth:b.borderThickness}}return{enabled:d,options:b,rolloverOptions:f}},point:function(a,e,c,d,b){a=b[U];var f=0,n=J,g=[],p=q(d.plotborderthickness,Kb),m=!0,k=!1,l=J,t=b.chart,r=this.isPyramid,u=h(d.showpercentintooltip,1),w=h(d.showlabels,1),C=h(d.showvalues,
+1),F=h(d.showpercentvalues,d.showpercentagevalues,0),x=q(d.tooltipsepchar,d.hovercapsepchar,Sb),W=q(d.labelsepchar,x),z=q(d.plotbordercolor,d.piebordercolor),A=this.smartLabel,B=this.numberFormatter,D=c.length,R,G=this.colorManager,t=t.issliced=h(d.issliced,0),M=0,ma=h(d.showvalueinlegend,0),N=h(d.showlabelinlegend,1),H=h(d.valuebeforelabelinlegend,0),K=h(d.showvalueaspercentinlegend,1),T=q(d.legendsepchar,", "),Tb=b.plotOptions.series.dataLabels.style,O={apply:d.showshadow==Kb,opacity:1},Q,S,tb,
+P,Pa,ba,sa,Z,aa,ea,oa,ua,wa,va,za,Da;e.isPyramid=r;wa=e.streamlinedData=h(d.streamlineddata,1);e.is2d=h(d.is2d,0);e.use3DLighting=1===h(d.use3dlighting,1);e.isHollow=h(d.ishollow,wa?1:0);oa=h(d.percentofprevious,0);ea=h(this.isPyramid?d.pyramidyscale:d.funnelyscale);e.labelDistance=Math.abs(h(d.labeldistance,d.nametbdistance,50));e.showLabelsAtCenter=h(d.showlabelsatcenter,0);e.yScale=0<=ea&&40>=ea?ea/200:.2;w||C||(b.plotOptions.series.dataLabels.enabled=!1,!1===b.tooltip.enabled&&(m=!1));e.useSameSlantAngle=
+h(d.usesameslantangle,wa?0:1);for(b=0;b<D;b+=1)Q=c[b],c[b].vline||(Q.cleanValue=ea=B.getCleanValue(Q.value,!0),null!==ea&&(k=!0,za=za||ea,g.push(Q),f+=ea,za=Math.max(za,ea)));if(k){e.valueSum=f;c=B.dataLabels(f);D=g.length;!r&&wa&&g.sort(function(a,b){return b.cleanValue-a.cleanValue});r||wa||e.data.push({showInLegend:!1,y:f,name:"",shadow:O,smartTextObj:R,color:S,alpha:tb,borderColor:L(P,Pa),borderWidth:p,link:E(Q.link),style:I.parsexAxisStyles(Q,{},d,Tb,S),displayValue:J,doNotSlice:0===h(d.enableslicing,
+1)});for(b=0;b<g.length;b+=1){Q=g[b];k=Q.cleanValue;ua=b?g[b-1].value:k;D=ca(q(Q.label,Q.name,J));R=A.getOriSize(D);S=b&&!r&&wa?b-1:b;S=q(Q.color,G.getPlotColor(S));tb=q(Q.alpha,d.plotfillalpha,Ia);P=q(Q.bordercolor,z,da(S,25)).split(y)[0];Pa=1!=d.showplotborder?fb:q(Q.borderalpha,d.plotborderalpha,d.pieborderalpha,"80");O.opacity=Math.max(tb,Pa)/100;if(ea=h(Q.issliced,t))M+=1,a.preSliced=ea;va=r||!wa?f:oa?ua:za;m&&(sa=B.percentValue(k/va*100),Z=B.dataLabels(k)||J,ba=1===w?D:J,n=1===h(Q.showvalue,
+C)?1===F?sa:Z:J,aa=E(ca(Q.displayvalue)),Da=q(aa,D+W+(F?sa:Z),J),n=aa?aa:n!==J&&ba!==J?ba+W+n:q(ba,n)||J,wa&&(l=oa?sa:B.percentValue(k/ua*100)),ba=E(ca(q(Q.tooltext,a.tooltext))),void 0!==ba?ba=ab(ba,[1,2,3,7,14,24,25,37],{formattedValue:Z,label:D,percentValue:oa?B.percentValue(k/za*100):sa,sum:c,unformattedSum:f,percentOfPrevValue:l},Q,d):(ba=1===u?sa:Z,ba=D!==J?D+x+ba:ba));ua=N?D:J;ma&&(va=K?B.legendPercentValue(k/va*100):B.legendValue(k),ua=H?va+(ua&&T+ua):(ua&&ua+T)+va);va=this.pointHoverOptions(Q,
+d,{color:S,alpha:tb,borderColor:P,borderAlpha:Pa,borderWidth:p});R={displayValue:n,displayValueArgs:Da,style:I.parsexAxisStyles(Q,{},d,Tb,S),categoryLabel:D,toolText:ba,legendCosmetics:v.singleseries.parseLegendOptions(d,Q),showInLegend:ua!==J,y:k,name:ua,shadow:O,smartTextObj:R,color:S,alpha:tb,borderColor:L(P,Pa),borderWidth:p,link:E(Q.link),isSliced:ea,doNotSlice:0===h(d.enableslicing,1),tooltipConstraint:this.tooltipConstraint,hoverEffects:va.enabled&&va.options,rolloverProperties:va.enabled&&
+va.rolloverOptions};b||r||!wa||(R.showInLegend=!1);e.data.push(R)}f||(e.data=[]);e.labelMaxWidth=0;e.noOFSlicedElement=M;return e}return null},spaceManager:function(a,e,c,d){var b=this.smartLabel,f=e.chart,n=a.chart,g=q(f.legendposition,rb).toLowerCase(),p=c-(n.marginRight+n.marginLeft);d-=n.marginTop+n.marginBottom;var m=this.isPyramid,k=0,l=0,t,r,u=a.series[0],w,C,F,x,W,z,A,B,D,R,G,M,ma,N,H,K,y,v,O,Q,S,J=n.marginLeft;if(u){w=this._tempSnap={top3DSpace:0,bottom3DSpace:0,topLabelSpace:0,rightLabelSpace:0};
+a.legend.enabled&&(g===gb?p-=this.placeLegendBlockRight(a,e,p/2,d,!0):d-=this.placeLegendBlockBottom(a,e,p,d/2,!0));r=.1*d;t=h(f.slicingdistance,r);r=t>2*r?0:t;f=Math.min(2*(d-r),p);n.marginTop+=r/2;n.marginBottom+=r/2;u.SlicingDistance=t;l=u.data;A=l.length;B=m?0:1;r=u.labelDistance+3;t=u.showLabelsAtCenter;M=Math.min(f,.3*p);x=p-M;ma=p-M-r;H=0;K=(C=l[0])&&l[0].y?l[0].y:1;y=u.valueSum?u.valueSum:1;v=m?0:1;O=.8/K;Q=1==u.useSameSlantAngle;G=(S=!m&&!u.streamlinedData)?l[0].y-l[1].y:0;!m&&C&&l[0].displayValue&&
+(D=l[0],C=a.plotOptions.series.dataLabels.style,N=h(Lb(parseFloat(C.lineHeight)+C.borderPadding+C.borderThickness),10),b.setStyle(C),F=b.getSmartText(D.displayValue,p,N),D.displayValue=F.text,F.tooltext&&(D.originalText=F.tooltext),D.labelWidht=b.getOriSize(F.text).width,n.marginTop+=w.topLabelSpace=N+4);for(;B<A;B+=1)D=l[B],C=D.style,N=h(Lb(parseFloat(C.lineHeight)+C.borderPadding+C.borderThickness),10),b.setStyle(C),t?b.getSmartText(D.displayValue,p,N):(z=m?(C=G+D.y/2)?C/y:1:S?.2+O*G:D.y?Q?D.y/
+K:Math.sqrt(D.y/K):1,C=M*z,R=ma+(M-C)/2,F=b.getSmartText(D.displayValue,R,N),D.displayValue=F.text,F.tooltext&&(D.originalText=F.tooltext),H=Math.max(H,F.width),0<x&&(F=0<F.width?R-F.width:R+r,C=1/(z+1)*(C+2*F+M),x=Math.min(x,C-M)),G+=S?-(l[B+1]&&l[B+1].y||0):D.y);D&&(W=m?1:S?.2:D.y?Q?D.y/K:Math.sqrt(D.y/K):1);x=M+x;x>f&&(x=f);G=S?l[0].y-l[1].y:0;if(!t)for(B=m?0:1,A=l.length;B<A;B+=1)D=l[B],z=m?(C=G+D.y/2)?C/y:1:S?.2+O*G:D.y?Q?D.y/K:pb(D.y/K):1,C=x*z,R=ma+(M-C)/2,F=b.getSmartText(D.displayValue,R,
+N),k=Ca(k,.5*C+F.width+r),G+=S?-(l[B+1]&&l[B+1].y||0):D.y;0<H?(w.rightLabelSpace=p-x,l=k-(.5*c-n.marginRight),0<l&&(n.marginRight+=l,n.marginLeft-=l),a.legend.enabled&&g===gb?n.marginLeft<J&&(n.marginLeft=J):(n.marginRight+=.5*w.rightLabelSpace,n.marginLeft+=.5*w.rightLabelSpace),p-=a.title.alignWithCanvas?w.rightLabelSpace:0):r=0;u.labelDistance=u.connectorWidth=r;this.titleSpaceManager(a,e,p,d/2);(t||!H)&&f<p&&(n.marginLeft+=.5*(p-f-r),n.marginRight+=.5*(p-f-r));u.is2d||(n.marginTop+=w.top3DSpace=
+x*u.yScale*v/2,n.marginBottom+=w.bottom3DSpace=x*u.yScale*W/2)}},updateSnapPoints:function(){v.gaugebase.updateSnapPoints.apply(this,arguments);var a=this.snapLiterals,e=this._tempSnap||{};a.plotwidth=a.canvaswidth;a.plotsemiwidth=a.canvaswidth/2;a.plotheight=a.canvasheight+e.top3DSpace+e.bottom3DSpace;a.plotstartx=a.canvasstartx;a.plotstarty=a.canvasstarty-e.top3DSpace;a.plotendx=a.canvasendx;a.plotendy=a.canvasendy+e.bottom3DSpace;a.canvaswidth+=e.rightLabelSpace;a.canvasheight=a.plotheight+e.topLabelSpace;
+a.canvasstarty=a.plotstarty-e.topLabelSpace;a.canvasendy=a.plotendy;a.canvasendx+=e.rightLabelSpace},eiMethods:{sliceDataItem:function(a){var e=this.jsVars.hcObj,c;if(e&&e.series&&(c=e.series[0])&&c.data&&c.data[a]&&c.data[a].slice)return c.data[c.xIncrement-1-a].slice()}},useSortedData:!0,creditLabel:ja},v.gaugebase);v("pyramid",{friendlyName:"Pyramid Chart",subTitleFontSizeExtender:0,drawAnnotations:!0,standaloneInit:!0,defaultSeriesType:"pyramid",defaultPlotShadow:1,useSortedData:!1,isPyramid:1,
+creditLabel:ja,rendererId:"pyramid"},v.funnel);v("sparkbase",{defaultPlotShadow:0,useSortedData:!1,subTitleFontSizeExtender:0,subTitleFontWeight:0,drawAnnotations:!0,showYAxisValues:0,numdivlines:0,chartrightmargin:3,chartleftmargin:3,charttopmargin:3,chartbottommargin:3,decimals:2,showTrendlineLabel:0,zeroplanethickness:0,tooltippadding:1,useScaleRecursively:!0,showTrendlineLabels:0,showAxisLimitGridLines:0,styleApplicationDefinition_font:v.gaugebase.styleApplicationDefinition_font,defaultPaletteOptions:Ma(Y({},
+ya),{paletteColors:[["555555","A6A6A6","CCCCCC","E1E1E1","F0F0F0"],["A7AA95","C4C6B7","DEDFD7","F2F2EE"],["04C2E3","66E7FD","9CEFFE","CEF8FF"],["FA9101","FEB654","FED7A0","FFEDD5"],["FF2B60","FF6C92","FFB9CB","FFE8EE"]],bgColor:["FFFFFF","CFD4BE,F3F5DD","C5DADD,EDFBFE","A86402,FDC16D","FF7CA0,FFD1DD"],bgAngle:[270,270,270,270,270],bgRatio:["0,100","0,100","0,100","0,100","0,100"],bgAlpha:["100","60,50","40,20","20,10","30,30"],canvasBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],canvasBgAngle:[0,
+0,0,0,0],canvasBgAlpha:["100","100","100","100","100"],canvasBgRatio:["","","","",""],canvasBorderColor:["BCBCBC","BEC5A7","93ADBF","C97901","FF97B1"],toolTipBgColor:["FFFFFF","FFFFFF","FFFFFF","FFFFFF","FFFFFF"],toolTipBorderColor:["545454","545454","415D6F","845001","68001B"],baseFontColor:["333333","60634E","025B6A","A15E01","68001B"],trendColor:["666666","60634E","415D6F","845001","68001B"],plotFillColor:["666666","A5AE84","93ADBF","C97901","FF97B1"],borderColor:["767575","545454","415D6F","845001",
+"68001B"],borderAlpha:[50,50,50,50,50],periodColor:["EEEEEE","ECEEE6","E6ECF0","FFF4E6","FFF2F5"],winColor:["666666","60634E","025B6A","A15E01","FF97B1"],lossColor:["CC0000","CC0000","CC0000","CC0000","CC0000"],drawColor:["666666","A5AE84","93ADBF","C97901","FF97B1"],scorelessColor:["FF0000","FF0000","FF0000","FF0000","FF0000"]}),preSeriesAddition:function(a,e){var c=a.plotOptions.series.dataLabels.style,d=a.chart,b=e.chart,c={fontFamily:c.fontFamily,fontSize:c.fontSize,lineHeight:c.lineHeight,fontWeight:c.fontWeight,
+fontStyle:c.fontStyle},f,n,g,p;if("sparkwinloss"==this.name&&(f=e.data||e.dataset&&e.dataset[0]&&e.dataset[0].data,n={w:1,l:-1,d:.1},0<(g=f&&f.length)))for(;g;)--g,p=f[g],p.value=n[p.value.toLowerCase()];d.borderWidth=h(b.showborder,this.showBorder,0)?h(b.borderthickness,1):0;d.plotBorderWidth=h(b.canvasborderthickness,1);f=d.openColor=xa(q(b.opencolor,"0099FF"));n=d.closeColor=xa(q(b.closecolor,"0099FF"));d.highColor=xa(q(b.highcolor,"00CC00"));d.lowColor=xa(q(b.lowcolor,"CC0000"));d.openHoverColor=
+L(xa(q(b.openhovercolor,b.anchorhovercolor,b.plotfillhovercolor,da(f,70))),h(b.openhoveralpha,b.anchorhoveralpha,b.plotfillhoveralpha,100));d.closeHoverColor=L(xa(q(b.closehovercolor,b.anchorhovercolor,b.plotfillhovercolor,da(n,70))),h(b.closehoveralpha,b.anchorhoveralpha,b.plotfillhoveralpha,100));d.highHoverColor=L(xa(q(b.highhovercolor,b.anchorhovercolor,b.plotfillhovercolor,da(d.highColor,70))),h(b.highhoveralpha,b.anchorhoveralpha,b.plotfillhoveralpha,100));d.lowHoverColor=L(xa(q(b.lowhovercolor,
+b.anchorhovercolor,b.plotfillhovercolor,da(d.lowColor,70))),h(b.lowhoveralpha,b.anchorhoveralpha,b.plotfillhoveralpha,100));this.forceHoverEnable=q(b.openhovercolor,b.closehovercolor,b.highhovercolor,b.lowhovercolor,b.openhoveralpha,b.closehoveralpha,b.highhoveralpha,b.lowhoveralpha,b.winhovercolor,b.losshovercolor,b.drawhovercolor,b.scorelesshovercolor);a.chart.openValue={style:Y({},c)};Oa(a.chart.openValue.style);a.chart.openValue.style.color=f;a.chart.closeValue={style:Y({},c)};Oa(a.chart.openValue.style);
+a.chart.closeValue.style.color=n;a.chart.highLowValue={style:Y({},c)};this.parseStyles(a);0===this.showCanvas&&(d.plotBackgroundColor=Ya);this.showCanvasBorder||(d.plotBorderWidth=0);d.useRoundEdges||(d.plotShadow=0);b.zeroplanethickness=q(b.zeroplanethickness,this.zeroplanethickness);delete b.yaxisname;delete b.xaxisname;b.showlabels=q(b.showlabels,fb)},spaceManager:function(a,e,c,d){var b=a[U],f=this.smartLabel||b.smartLabel,n=e.chart,g=a.series[0],p=a.chart,m=c-(p.marginRight+p.marginLeft),k=h(n.canvasleftmargin),
+l=h(n.canvasrightmargin),t=a.valuePadding=h(n.valuepadding,2),r=a.plotOptions.series.dataLabels.style,u=parseInt(r.lineHeight,10),w=m,C=b=0,F,x;if(g){d=Fb(a,e,.7*m,d,void 0,c,d,this);w-=d.left+d.right;m=c-(p.marginRight+p.marginLeft);x=F=g=0;f.setStyle(r);ga(p.openValue.label)&&(f.setStyle(p.openValue.style),u=h(parseInt(p.openValue.style.lineHeight,10),10),r=f.getSmartText(p.openValue.label,w,1.5*u),0<r.width&&(b=g=r.width+t,w-=g));ga(p.closeValue.label)&&(f.setStyle(p.closeValue.style),u=h(parseInt(p.closeValue.style.lineHeight,
+10),10),r=f.getSmartText(p.closeValue.label,w,1.5*u),0<r.width&&(C=F=r.width+t,w-=F));ga(p.highLowValue.label)&&(f.setStyle(p.highLowValue.style),u=h(parseInt(p.highLowValue.style.lineHeight,10),10),f=f.getSmartText(p.highLowValue.label,w,1.5*u),0<f.width&&(C+=x=f.width+t));p.marginRight+=x+F;p.marginLeft+=g;ga(k)?(p.spacingLeft=p.marginLeft=k,p.spacingLeft-=d.left+g):p.marginLeft+=d.left;ga(l)?(p.spacingRight=p.marginRight=l,p.spacingRight-=d.right+x+F):p.marginRight+=d.right;this.xAxisMinMaxSetter(a,
+e,m);p=a.xAxis;l=p.min;m=p.max;k=h(n.periodlength,0);n=L(q(n.periodcolor,this.colorManager.getColor("periodColor")),h(n.periodalpha,100));t=1;if(0<k)for(;l<=m;l+=k)t?(p.plotBands.push({color:n,from:l,to:Math.min(m,l+k),zIndex:1}),t=0):t=1;Gb(a,e,c,b,C,this)}}},Vb);v("sparkline",{friendlyName:"Spark Line Chart",standaloneInit:!0,defaultSeriesType:"line",rendererId:"sparkline",creditLabel:ja,showtooltip:0,showCanvas:0,point:v.linebase.point,lineThickness:1,anchorRadius:2,anchorBorderThickness:0,postSeriesAddition:function(a,
+e){var c=a.chart,d=e.chart,b=this.colorManager,f=a.series&&a.series[0],n=f&&a.series[0].data,g,p,m,k=this.highValue,l=this.lowValue,t=this.numberFormatter,r=c.openColor,u=c.closeColor,w=c.highColor,C=c.lowColor,F=c.openHoverColor,x=c.closeHoverColor,W=c.highHoverColor,z=c.lowHoverColor,A;A=xa(q(d.anchorcolor,b.getColor("plotFillColor")));var B=h(d.showopenanchor,d.drawanchors,d.showanchors,1),D=h(d.showcloseanchor,d.drawanchors,d.showanchors,1),R=h(d.showhighanchor,d.drawanchors,d.showanchors,1),
+G=h(d.showlowanchor,d.drawanchors,d.showanchors,1),M=h(d.anchoralpha,100),ma,N=h(d.drawanchors,d.showanchors,0),H=N?h(d.anchoralpha,100):0,K,y,v=0,O=q(d.linecolor,b.getColor("plotFillColor")),Q=h(d.linealpha,100),S,E;if(0<(b=g=n&&n.length)){p=e.data||e.dataset&&e.dataset[0]&&e.dataset[0].data;f.color=L(O,Q);S=n[0]&&n[0].y||J;for(E=n[b-1]&&n[b-1].y||J;g;)--g,f=n[g],m=p[g],A=void 0,ma=h(f.anchorbgalpha,M),f.color=L(q(m.color,O),h(m.alpha,Q)),f.marker.fillColor=L(q(f.anchorbgcolor,A),h(f.anchorbgalpha,
+H)),A=L(xa(q(d.anchorhovercolor,d.plotfillhovercolor,da(O,70))),h(d.lowhoveralpha,d.anchorhoveralpha,d.plotfillhoveralpha,100)),h(d.anchorhoverradius,f.marker.radius),f.marker.enabled=!!N,f.y==l&&(A=q(f.anchorbgcolor,C),f.marker.fillColor=L(A,ma),A=z,f.marker.enabled=!!G,y=t.dataLabels(f.y)),f.y==k&&(A=q(f.anchorbgcolor,w),f.marker.fillColor=L(A,ma),A=W,f.marker.enabled=!!R,K=t.dataLabels(f.y)),void 0!==f.toolText&&(f.toolText=ab(f.toolText,[54,55,56,57,58,59,60,61],{openDataValue:t.dataLabels(S),
+closeDataValue:t.dataLabels(E),highDataValue:t.dataLabels(k),lowDataValue:t.dataLabels(l),openValue:S,closeValue:E,highValue:k,lowValue:l},{},d)),h(m.showvalue,d.showvalue,d.showvalues,0)||(f.displayValue=J),ga(f.y)&&(v=1),m=f.hoverEffects,f.marker.enabled&&m&&(m.anchorColor=A,m=f.rolloverProperties,m.radius=h(d.anchorhoverradius,f.marker.radius),m.lineWidth=0,m.lineColor=m.fillColor=A);f=n[0];f.marker.fillColor=L(q(f.anchorbgcolor,r),ma);f.marker.enabled=!!B;m=f.hoverEffects;f.marker.enabled&&m&&
+(m.anchorColor=F,m=f.rolloverProperties,m.radius=h(d.anchorhoverradius,f.marker.radius),m.lineWidth=0,m.lineColor=m.fillColor=F);r=t.dataLabels(f.y);f.y==l&&G&&(f.marker.fillColor=L(q(f.anchorbgcolor,C),ma),f.marker.enabled=!!G);f.y==k&&R&&(f.marker.fillColor=L(q(f.anchorbgcolor,w),ma),f.marker.enabled=!!R);f=n[b-1];f.marker.fillColor=L(q(f.anchorbgcolor,u),ma);f.marker.enabled=!!D;m=f.hoverEffects;f.marker.enabled&&m&&(m.anchorColor=x,m=f.rolloverProperties,m.radius=h(d.anchorhoverradius,f.marker.radius),
+m.lineWidth=0,m.lineColor=m.fillColor=x);n=t.dataLabels(f.y);f.y==l&&G&&(f.marker.fillColor=L(q(f.anchorbgcolor,C),ma),f.marker.enabled=!!G);f.y==k&&R&&(f.marker.fillColor=L(q(f.anchorbgcolor,w),ma),f.marker.enabled=!!R);c.openValue.label=c.closeValue.label=c.highLowValue.label=c.highLowValue.highLabel=void 0;v&&(c.openValue.label=h(d.showopenvalue,1)?r:J,c.closeValue.label=h(d.showclosevalue,1)?n:J,h(d.showhighlowvalue,1)&&(c.highLowValue.label="["+K+" | "+y+"]",c.highLowValue.highLabel=K,c.highLowValue.lowLabel=
+y))}}},v.sparkbase);v("sparkcolumn",{friendlyName:"Spark Column Chart",standaloneInit:!0,rendererId:"cartesian",defaultSeriesType:"column",creditLabel:ja,showCanvasBorder:!0,point:v.column2dbase.point,useFlatColor:!0,postSeriesAddition:function(a,e){var c=e.chart,d=this.colorManager,b=a.series&&a.series[0]&&a.series[0].data,f,n,g,p,m=this.highValue,k=this.lowValue,l=this.numberFormatter,t=q(c.plotfillalpha,Ia),r=q(c.plotfillcolor,d.getColor("plotFillColor")),u=q(c.plotborderalpha,Ia),w=q(c.plotbordercolor),
+C,F=q(c.highcolor,"000000"),x=q(c.lowcolor,"000000"),W=q(c.highbordercolor,w),z=q(c.lowbordercolor,w),A=h(c.showplotborder,0)?h(c.plotborderthickness,1):0,B,D,R,G,M,ma;if(0<(d=b&&b.length))for(n=e.data||e.dataset&&e.dataset[0]&&e.dataset[0].data;d;)--d,f=b[d],g=n[d],B=q(g.color,r),D=q(g.alpha,t),R=q(g.bordercolor,w),G=q(g.borderalpha,u),M=q(g.ratio,c.plotfillratio),ma=q(360-c.plotfillangle,90),f.y==m&&(B=q(g.color,F),R=q(g.bordercolor,W),p=f.hoverEffects)&&(p.color=q(g.hovercolor,c.highhovercolor,
+c.plotfillhovercolor,da(B,70)),p.borderColor=q(g.borderhovercolor,c.highborderhovercolor,c.plotborderhovercolor,R),p.colorArr=p=this.getColumnColor(g,p.color,q(g.hoveralpha,c.highhoveralpha,c.plotfillhoveralpha,D),p.borderColor,G,M,ma,a.chart.useRoundEdges),C=f.rolloverProperties,C.color=p[0],C.borderColor=p[1]),f.y==k&&(B=q(g.color,x),R=q(g.bordercolor,z),p=f.hoverEffects)&&(p.color=q(g.hovercolor,c.lowhovercolor,c.plotfillhovercolor,da(B,70)),p.borderColor=q(g.borderhovercolor,c.lowborderhovercolor,
+c.plotborderhovercolor,R),p.colorArr=p=this.getColumnColor(g,f.hoverEffects.color,q(g.hoveralpha,c.lowhoveralpha,c.plotfillhoveralpha,D),f.hoverEffects.borderColor,G,M,ma,a.chart.useRoundEdges),C=f.rolloverProperties,C.color=p[0],C.borderColor=p[1]),void 0!==f.toolText&&(f.toolText=ab(f.toolText,[56,57,60,61],{highValue:m,lowValue:k,highDataValue:l.dataLabels(m),lowDataValue:l.dataLabels(k)},{},c)),p=this.getColumnColor(g,B,D,R,G,M,ma,a.chart.useRoundEdges),f.color=p[0],f.borderColor=p[1],f.borderWidth=
+A,h(g.showvalue,c.showvalue,c.showvalues,0)||(f.displayValue=J)},getColumnColor:function(a,e,c,d,b,f,n,g,p,m){var k;d=q(d,na(e,60));k=e.split(y);a=c.split(y);d=d.split(y);b=b.split(y);m?p={FCcolor:{color:k[0],alpha:a[0]}}:g?(e=k[0],c=a[0],p={FCcolor:{color:na(e,75)+y+da(e,25)+y+na(e,80)+y+da(e,65)+y+na(e,80),alpha:c+y+c+y+c+y+c+y+c,ratio:"0,10,13,57,20",angle:p?"-180":"0"}},d=[na(e,70)]):(c=Ab(c,k.length),p={FCcolor:{color:e,alpha:c,ratio:f,angle:p?180-n:n}});return[p,{FCcolor:{color:d[0],alpha:b[0]}}]}},
+v.sparkbase);v("sparkwinloss",{friendlyName:"Spark Win-Loss Chart",standaloneInit:!0,defaultSeriesType:"column",rendererId:"sparkwinloss",creditLabel:ja,showCanvasBorder:!1,showCanvas:0,showtooltip:0,postSeriesAddition:function(a,e){var c=a.chart,d=e.chart,b=this.colorManager,f=a.series&&a.series[0]&&a.series[0].data,n=q(d.plotfillalpha,Ia),g=q(d.plotfillcolor,b.getColor("plotFillColor")),p=q(d.plotborderalpha,Ia),m=q(d.plotbordercolor),k=h(d.showplotborder,0)?h(d.plotborderthickness,1):0,l=q(d.wincolor,
+b.getColor("winColor")),t=q(d.losscolor,b.getColor("lossColor")),r=q(d.drawcolor,b.getColor("drawColor")),b=q(d.scorelesscolor,b.getColor("scorelessColor")),u=d.winhovercolor,w=d.losshovercolor,C=d.drawhovercolor,F=d.scorelesshovercolor,x=J,W,z,A,B,D,R,G=0,M=0,ma=0;z=a.yAxis[0];var y,H,K,T,v,O;a.tooltip.enabled=!1;z.min=-1.1;z.max=1.1;if(0<(T=f&&f.length)){for(v=e.data||e.dataset&&e.dataset[0]&&e.dataset[0].data;T;){--T;y=f[T];O=v[T];switch(O.value){case 1:x=q(O.color,l,g);W=q(O.hovercolor,u,x);G+=
+1;break;case -1:x=q(O.color,t,g);W=q(O.hovercolor,w,x);M+=1;break;case .1:x=q(O.color,r,g),W=q(O.hovercolor,C,x),ma+=1}1==O.scoreless&&(x=q(O.color,b,g),W=q(O.hovercolor,F,O.color,b,W));z=q(O.alpha,n);A=q(O.bordercolor,m);B=q(O.borderalpha,p);D=q(O.ratio,d.plotfillratio);R=q(360-d.plotfillangle,90);K=this.getColumnColor(O,x,z,A,B,D,R,a.chart.useRoundEdges);y.color=K[0];y.borderColor=K[1];y.borderWidth=k;h(O.showvalue,0)||(y.displayValue=J);if(H=y.hoverEffects)y=y.rolloverProperties,H.color=da(W,70),
+K=H.colorArr=this.getColumnColor(O,H.color,z,A,B,D,R,a.chart.useRoundEdges),y.color=K[0],y.borderColor=K[1],H.borderThickness=k,y.borderWidth=k}1==h(d.showvalue,1)&&(c.closeValue.style=Y({},a.plotOptions.series.dataLabels.style),c.closeValue.label=G+"-"+M+(0<ma?"-"+ma:J))}}},v.sparkcolumn);kb={realtimeEnabled:!0,canvasPaddingModifiers:null,linearDataParser:v.gaugebase.linearDataParser,eiMethods:Ma({},v.gaugebase.eiMethods),decimals:2,prepareRealtimeValueText:function(){var a=this.hcJSON,e=this.hcJSON[U],
+c=e.rtLabel,d=a.chart.realtimeValueSeparator,b=new RegExp(d+"$","g");c&&c.label&&(d=e.realtimeValues.join(d).replace(b,J),e=h(parseInt(e.outCanvasStyle.fontSize,10),10),c.label.y=.8*e+(a.xAxis.title.margin||0),c.label.text=d,a.xAxis.plotLines&&(a.xAxis.plotLines[0]=c))},chart:function(){var a=this.dataObj.chart,e=this.numberFormatter,c,d,b,f=h(a.showrealtimevalue,1),n=h(a.realtimevaluepadding),g,p,a=this.dataObj.chart;a.adjustdiv="0";f&&(a.xaxisname=a.xaxisname?"<br/>"+a.xaxisname:"<br/>");c=v.msareabase.chart.apply(this,
+arguments);b=c.chart;d=c[U];g=c.series;d.isDual?(d._userPMin=h(a.pyaxisminvalue),d._userPMax=h(a.pyaxismaxvalue),d._userSMin=h(a.syaxisminvalue),d._userSMax=h(a.syaxismaxvalue)):(d._userMin=h(a.yaxisminvalue),d._userMax=h(a.yaxismaxvalue));b.dataStreamURL=q(a.datastreamurl,"");b.refreshInterval=h(a.refreshinterval,1);b.updateInterval=h(a.updateinterval,b.refreshInterval);b.clearInterval=h(a.clearchartinterval,0);b.dataStamp=a.datastamp;b.useMessageLog=h(a.usemessagelog,0);b.messageLogWPercent=La(h(a.messagelogwpercent,
+80),100);b.messageLogHPercent=La(h(a.messageloghpercent,70),100);b.messageLogShowTitle=h(a.messagelogshowtitle,1);b.messageLogTitle=q(a.messagelogtitle,"Message Log");b.messageLogColor=q(a.messagelogcolor,"#fbfbfb");b.messageGoesToJS=h(a.messagegoestojs,0);b.messageGoesToLog=h(a.messagegoestolog,1);b.messageJSHandler=q(a.messagejshandler,"");b.messagePassAllToJS=h(a.messagepassalltojs,0);b.messageLogIsCancelable=h(a.messagelogiscancelable,1);b.alwaysShowMessageLogMenu=h(a.alwaysshowmessagelogmenu,
+b.useMessageLog);b.showRTMenuItem=h(a.showrtmenuitem,0);b.showRealtimeValue=f;b.realtimeValueSeparator=q(a.realtimevaluesep,", ");b.realtimeValuePadding=n;b.realtimeValueFont=q(a.realtimevaluefont,"");b.realtimeValueFontBold=q(a.realtimevaluefontbold,0);b.realtimeValueFontColor=q(a.realtimevaluefontcolor,"");b.realtimeValueFontSize=h(a.realtimevaluefontsize,"");if(f){if(!d.realtimeValues)for(d.realtimeValues=[],f=0,n=g.length;f<n;f++)a=g[f],p=(p=a.data)&&p.length&&p[p.length-1]&&p[p.length-1].y,d.realtimeValues[f]=
+e.dataLabels(p,a.yAxis);d.rtLabel||(e=Y({},d.outCanvasStyle),e.fontWeight=b.realtimeValueFontBold?"bold":"normal",b.realtimeValueFontColor&&(e.color=b.realtimeValueFontColor.replace(ib,nb)),b.realtimeValueFontSize&&(e.fontSize=b.realtimeValueFontSize+ob),b.realtimeValueFont&&(e.fontFamily=b.realtimeValueFont),g=h(parseInt(e.fontSize,10),10),d.rtLabel={color:ra,alwaysVisible:!0,isTrend:!0,value:(d.x.catCount-1)/2,width:.01,label:{align:Va,textAlign:Va,rotation:0,textVAlign:cb,text:" ",x:0,y:.8*g+(c.xAxis.title.margin|
+0),style:e}},c.xAxis.plotLines.splice(0,0,d.rtLabel))}b.showRTMenuItem?(c.callbacks||(c.callbacks=[])).push(this.drawRTMenuButtons):b.useMessageLog&&b.alwaysShowMessageLogMenu&&b.messageGoesToLog&&(c.callbacks||(c.callbacks=[])).push(this.drawMLMenuButtons);this.dataObj.alerts&&(this.hcJSON.alerts=this.parseAlertObj(this.dataObj.alerts));return c},parseAlertObj:function(a){var e=this.numberFormatter,c=a&&a.alert,d=c.length,b={alert:[]},f,n,g,p,m;for(a=0;a<d;a+=1)p=c[a],f=e.getCleanValue(p.minvalue),
+n=e.getCleanValue(p.maxvalue),g=q(p.action,""),p=q(p.param,""),null!==f&&null!==n&&""!==g&&(f>n&&(m=n,n=f,f=m),b.alert.push({minvalue:f,maxvalue:n,param:p,action:g}));return b},drawMLMenuButtons:function(){var a=this.options,e=a.chart,c=this.menu||(this.menu=[]),d=this.toolbar,a=a[U],b;c.push(b=Ka({chart:this,basicStyle:a&&a.outCanvasStyle||this.outCanvasStyle||{},items:[{text:"Show Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.open();b.showItem(4);b.hideItem(3)}},
+{text:"Hide Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.close();b.showItem(3);b.hideItem(4)}}],position:{x:e.spacingLeft,y:this.chartHeight-e.spacingBottom+(e.showFormBtn||e.showRestoreBtn?10:-15)}}));b.hideItem(1);this.elements.configureButton=d.add("loggerIcon",function(a,c){return function(){b.visible?b.hide():b.show({x:a,y:c+1})}}(),{x:e.spacingLeft,y:this.chartHeight-e.spacingBottom+(e.showFormBtn||e.showRestoreBtn?10:-15),tooltip:"Show & Hide Message"})},
+drawRTMenuButtons:function(){var a=this.logic,e=a.chartInstance,c=this.options,d=c.chart,b=d&&d.alwaysShowMessageLogMenu,f=this.menu||(this.menu=[]),n=this.toolbar,c=(c=c[U])&&c.outCanvasStyle||this.outCanvasStyle||{},g,p=e.isUpdateActive||a.eiMethods.isUpdateActive,p=p&&p.call(e);f.push(g=Ka({chart:this,basicStyle:c,items:[{text:"Stop Update",visibility:p?xb:"hidden",onclick:function(){g.hideItem(0);g.showItem(1);e.stopUpdate()}},{text:"Start Update",visibility:p?"hidden":xb,onclick:function(){g.hideItem(1);
+g.showItem(0);e.restartUpdate()}},{text:"Clear Chart",onclick:function(){e.clearChart()}},{text:"Show Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.open();g.showItem(4);g.hideItem(3)}},{text:"Hide Log",visibility:"hidden",onclick:function(){I&&I.messageLogger&&I.messageLogger.close();g.showItem(3);g.hideItem(4)}}],position:{x:d.spacingLeft,y:this.chartHeight-d.spacingBottom+(d.showFormBtn||d.showRestoreBtn?10:-15)}}));h(a.dataObj.chart.allowclear,1)||g.hideItem(2);
+g.hideItem(0);g.hideItem(1);!b&&g.hideItem(3);g.hideItem(4);g.showItem(p?0:1);this.elements.configureButton=n.add("configureIcon",function(a,b){return function(){g.visible?g.hide():g.show({x:a,y:b+1})}}(),{x:d.spacingLeft,y:this.chartHeight-d.spacingBottom+(d.showFormBtn||d.showRestoreBtn?10:-15),tooltip:"Manage RealTime Update"})},shiftPlotLines:function(a,e,c,d){var b,f,n=[],g=d[0],p=g&&g.RTValueArr,m=p&&p.length||0,k=(d=d[1])&&d.RTValueArr,l=k&&k.length||0,t=a&&a.length||0,r;c=h(c,-.5);for(r=0;r<
+t;r+=1)if(b=a[r],b.isGrid||b.isVline)if(f=b.value+=e,f<c||f===c&&b.isVline)a.splice(r,1),b.isGrid&&n.push(b),--r,--t;if(g&&p&&m)for(p.splice(0,-e),m=p.length,delete g.min,delete g.max,r=0;r<m;r+=1)(a=p[r])&&void 0!==a.min&&(!1===g.min<a.min&&(g.min=a.min),!1===g.max>a.max&&(g.max=a.max));if(d&&k&&l)for(k.splice(0,-e),l=k.length,delete d.min,delete d.max,r=0;r<l;r+=1)(a=k[r])&&void 0!==a.min&&(!1===d.min<a.min&&(d.min=a.min),!1===d.max>a.max&&(d.max=a.max));return n},configureAxis:function(a){var e=
+a[U],c=a.xAxis,d=e.x,b=e.axisGridManager,f=d.catCount,n=e.oriCatTmp,g=e[0],p=g&&g.RTValueArr,m=e[1],k=m&&m.RTValueArr,l=this.dataObj,t=l.chart||(l.chart={}),l=a.series,r=l[0].data.length,t=this.numDisplaySets=h(t.numdisplaysets,Ca(r,15)),u=c.plotLines,w=u&&u.length||0,C=[],F=this.chartInstance.jsVars._reflowData,x;F.hcJSON&&(x=F.hcJSON[U])&&(g.min=x[0]&&x[0].min,g.max=x[0]&&x[0].max,m.min=x[1]&&x[1].min,m.max=x[1]&&x[1].max);m=((this.dataObj.categories||(this.dataObj.categories=[{category:[]}]))[0]||
+(this.dataObj.categories[0]={category:[]})).category||(this.dataObj.categories[0].category=[]);0===f&&(this.chartInstance.jsVars._forceReflow=!0);g=t-r;if(0<g){for(;w--;)u[w].value+=g;for(c.plotLines=[];g--;)C[g]={y:null},b.addXaxisCat(c,g,g," ",{},{},{}),p&&p.unshift(null),k&&k.unshift(null),n.unshift(null),m.unshift({label:" "});c.plotLines=c.plotLines.reverse().concat(u)}else g&&(this.shiftPlotLines(c.plotLines,g,-.5,e),n.splice(0,-g));for(g=l.length;g--;)c=l[g],e=c.data,c.data=C.concat(e.slice(-t));
+this.needsRedraw=0===f;d.catCount=t;return v.msareabase.configureAxis&&v.msareabase.configureAxis.apply(this,arguments)},postSeriesAddition:function(a,e,c,d,b){e=a[U];c=e.isBar;d=a.chart.rotateValues&&!c?270:0;var f=e[0],n=f.RTValueArr,g=f&&f.stacking100Percent,p,m,k,l,h,r,u,w,C;if(this.isStacked&&n&&(e.showStackTotal||g))for(b=b||0,r=a.series,u=Y({},a.plotOptions.series.dataLabels.style),w=parseFloat(u.fontSize),C=!f.stacking100Percent,u.color=a.plotOptions.series.dataLabels.color,f=n.length;b<f;b+=
+1)if(m=n[b])if(h=(m.n||0)+(m.p||0),e.showStackTotal&&(p=b,m=0>h?m.n:m.p,a.xAxis.plotLines.push({value:p,width:0,isVline:C,isTrend:!C,zIndex:4,_isStackSum:1,_catPosition:b,label:{align:Va,textAlign:270===d?0>h?gb:Wa:Va,offsetScale:C?m:void 0,offsetScaleIndex:0,rotation:d,style:u,verticalAlign:cb,y:c?0:0>h?270===d?4:w:-4,x:0,text:e.numberFormatter.yAxis(h)}})),g)for(m=0,p=r.length;m<p;m+=1)if(r[m].data){k=r[m].data[b];if(k.y||0===k.y)l=k.y/h*100,k.y=l,k.showPercentValues&&(k.displayValue=this.numberFormatter.percentValue(l)),
+e.showPercentValues&&(k.displayValueArgs=this.numberFormatter.percentValue(l)),k.showPercentInToolTip&&(k.toolText=k.toolText+parseInt(100*l,10)/100+"%");if(k.previousY||0===k.previousY)k.previousY=k.previousY/h*100}},pointValueWatcher:function(a,e,c,d,b){if(null!==e){var f=a[U];a=f[c||(c=0)];var n;a||(a=f[c]={});c=a.RTValueArr;c||(c=a.RTValueArr=[]);(f=c[b])||(f=c[b]={});d&&(0<=e?f.p?(n=f.p,e=f.p+=e):f.p=e:f.n?(n=f.n,e=f.n+=e):f.n=e);!1===f.max>e&&(f.max=e,!1===a.max>e&&(a.max=e));!1===f.min<e&&
+(f.min=e,!1===a.min<e&&(a.min=e));return n}},realtimeUpdate:function(a,e){var c=this.hcJSON,d=this.dataObj,b=d.chart,f="0"===b.allowclear?0:1,n=c[U],g=this.numberFormatter,p=n.x,m=p._labelY,k=p._labelX,l=p._yShipment,t=p._isStagger,r=p._rotation,u=p._textAlign,w=p._adjustedPx,C=p._staggerLines,F=p._labelHeight,x,q=n.axisGridManager,z=p.catCount,A=this.renderer,B=this.chartInstance.jsVars,D=a.values,R=a.labels||[],G=a.showLabels||[],M=a.colors,y=a.toolTexts,N=a.links,H=c.xAxis,K="0"===d.chart.showlabels,
+T=c.chart.showRealtimeValue,v=d.categories,O=B._reflowData,Q=[],S=h(n._startIndex,0),L=p.stepValue,p=a.dimension>z?z:a.dimension,P=z-p,Q=[],Pa=a.vlines,ba=I.placeHorizontalAxis,sa,Z,aa,ea,oa,ua,wa,va,za,Da,X=new Date,Qa,Ub,Ib,V,Ja,Ra;a.clear&&f&&this.realtimeUpdate({dimension:this.numDisplaySets,values:[],labels:[]},0<a.dimension);if(a.dimension){c.plotOptions.series.animation=!1;Pa?(sa=a.vlineColors||[],Z=a.vlineLabels||[],aa=a.vlineThickness||[],ea=a.vlineDashed||[]):Pa=[];v||(v=d.categories=[]);
+v[0]?v[0].category||(v[0].category=[]):v[0]={category:[]};v=v[0].category;Q=this.shiftPlotLines(H.plotLines,-p,-.5,n);for(f=Q.length;f--;)(Da=Q[f]).label&&(oa=Da.label,oa.text="0"===G[f]||K?"":ca(R[f]||J),x=P+f,Da.value=x,wa=z+f+S,(x=0===wa%L)?(oa.style=H.labels.style,oa.y=t?m+wa/L%C*F:l,oa.x=k+(r?w:0),oa.rotation=r,oa.textAlign=u):oa.style=H.steppedLabels.style,H.plotLines.push(Y({},Da)),v.shift(),v.push({label:oa.text})),"1"===Pa[f]&&q.addVline(H,{color:sa[f]&&decodeURIComponent(sa[f]),label:Z[f]&&
+decodeURIComponent(Z[f]),thickness:aa[f]&&decodeURIComponent(aa[f]),dashed:ea[f]&&decodeURIComponent(ea[f])},P+f,c);Q=[];n._startIndex=(p+S)%(t?L*C:L);S=c.series&&c.series.length;p&&n.oriCatTmp.splice(0,p);n._skipValueWatcher=!1;for(f=0;f<S;f+=1){sa=c.series[f];aa=D&&D[f]||[];ea=M&&M[f]||[];L=N&&N[f]||[];P=y&&y[f]||[];G=sa.yAxis||0;n._rtCounter||(n._rtCounter=1);!Q[f]&&(Q[f]=[]);q=Q[f];Z=sa.data;ua=Z.length;K=ua-p;for(v=0;K<ua;K+=1,v+=1)Pa=decodeURIComponent(E(aa[v],null)),za=g.getCleanValue(Pa),
+oa=decodeURIComponent(R[v]||""),n.oriCatTmp[K]=oa,Z.shift(),Pa=sa._dataParser({value:Pa,label:oa,color:ea&&ea[v]&&decodeURIComponent(ea[v]),link:L&&L[v]&&decodeURIComponent(L[v]),tooltext:P&&P[v]&&decodeURIComponent(P[v])},K,za),Pa.y=za,Z.push(Pa),q.push(Pa),Pa.previousY=this.pointValueWatcher(c,za,G,this.isStacked,K);T&&(n.realtimeValues[f]=g.dataLabels(za,sa.yAxis))}n._rtCounter+=p;this.postSeriesAddition(c,void 0,void 0,void 0,ua-p);g=c.yAxis[0];D=n[0];y=h(this.isStacked?0:this.setAdaptiveYMin,
+b.setadaptiveymin,0);M=R=!y;N=(g.max-g.min)/4;if(n.isDual){if(D.max>g.max||D.min<g.min||(!M||0!==g.min)&&g.min!==n._userPMin&&D.min-g.min>N||(!R||0!==g.max)&&g.max!==n._userPMax&&g.max-D.max>N)B._forceReflow=!0,n._skipValueWatcher=!0;g=c.yAxis[1];D=n[1];M=R=!h(b.setadaptivesymin,y);N=(g.max-g.min)/4;if(D.max>g.max||D.min<g.min||(!M||0!==g.min)&&g.min!==n._userSMin&&D.min-g.min>N||(!R||0!==g.max)&&g.max!==n._userSMax&&g.max-D.max>N)B._forceReflow=!0,n._skipValueWatcher=!0}else if(D.max>g.max||D.min<
+g.min||(!M||0!==g.min)&&g.min!==n._userMin&&D.min-g.min>N||(!R||0!==g.max)&&g.max!==n._userMax&&g.max-D.max>N)B._forceReflow=!0,n._skipValueWatcher=!0;Qa=n[0]&&n[0].RTValueArr;Ub=n[1]&&n[1].RTValueArr;B._forceReflow&&(g=c.yAxis[0],D=n[0],Ib=n[0]&&n[0].min,V=n[0]&&n[0].max,Ja=n[1]&&n[1].min,Ra=n[1]&&n[1].max,S=g.min,sa=g.max,N=h(n.numdivlines,b.numdivlines,this.numdivlines,4),ua=b.adjustdiv!==fb,za=h(n._userMax,n._userPMax),f=h(n._userMin,n._userPMin),q=h(b.showyaxisvalues,b.showyaxisvalue,1),G=h(b.showlimits,
+q),K=h(b.showdivlinevalue,b.showdivlinevalues,q),v=h(parseInt(b.yaxisvaluesstep,10),parseInt(b.yaxisvaluestep,10),1),v=1>v?1:v,this.axisMinMaxSetter(g,D,za,f,R,M,N,ua),g.plotLines=[],g.plotBands=[],g.labels.enabled=g.labels._enabled,g.gridLineWidth=g._gridLineWidth,g.alternateGridColor=g._alternateGridColor,this.configurePlotLines(b,c,g,D,G,K,v,n.numberFormatter,!1),S===g.min&&sa===g.max&&(va=!0),n.isDual?(za=n._userSMax,f=n._userSMin,y=h(b.setadaptivesymin,y),M=R=!y,G=h(b.showsecondarylimits,G),
+K=h(b.showdivlinesecondaryvalue,q),g=c.yAxis[1],D=n[1],S=g.min,sa=g.max,this.axisMinMaxSetter(g,D,za,f,R,M,N,ua),g.plotLines=[],g.plotBands=[],g.labels.enabled=g.labels._enabled,g.gridLineWidth=g._gridLineWidth,g.alternateGridColor=g._alternateGridColor,this.configurePlotLines(b,c,g,D,G,K,v,n.numberFormatter,!0),S===g.min&&sa===g.max&&va&&(B._forceReflow=!1)):va&&(B._forceReflow=!1),d.trendlines&&Ta(d.trendlines,c.yAxis,n,n.isDual,this.isBar));O.hcJSON&&(b=O.hcJSON[U],delete O.hcJSON[U],Y(c.series,
+O.hcJSON.series,!0),O.hcJSON[U]=b,b=null);Y(O,{preReflowAdjustments:function(){this.dataObj.categories=d.categories},postReflowAdjustments:function(){var a,b=c.series,d=b&&b.length;this.hcJSON.xAxis.plotLines=H.plotLines;this.hcJSON._FCconf[0].RTValueArr=Qa;this.hcJSON._FCconf[1].RTValueArr=Ub;if(b)for(a=0;a<d;a+=1)this.hcJSON.series[a].data=b[a].data},postHCJSONCreation:function(a){Y(a,{_FCconf:{0:{min:Ib,max:V},1:{min:Ja,max:Ra},_skipValueWatcher:!0,realtimeValues:n.realtimeValues,rtvHTMLWrapper:n.rtvHTMLWrapper}},
+!0)},hcJSON:{_FCconf:{_userMax:n._userMax,_userMin:n._userMin,_userPMax:n._userPMax,_userSMax:n._userSMax,_userPMin:n._userPMin,_userSMin:n._userSMin,_chartState:n._chartState,_rtCounter:n._rtCounter,_startIndex:n._startIndex,oriCatTmp:n.oriCatTmp,x:{catCount:z,_labelY:m,_labelX:k,_yShipment:l,_isStagger:t,_rotation:r,_textAlign:u,_adjustedPx:w,_staggerLines:C,_labelHeight:F},0:{min:h(Ib,n[0]&&n[0].min),max:h(V,n[0]&&n[0].max)},1:{min:h(Ja,n[1]&&n[1].min),max:h(Ra,n[1]&&n[1].max)}}}},!0);if(!e){B._forceReflow&&
+(B._forceReflow=!1,g=c.yAxis[0],m=g.plotBands.concat(g.plotLines),Fa(g,m),A.yAxis[0].realtimeUpdateY(g.min,g.max),n.isDual&&(g=c.yAxis[1],m=g.plotBands.concat(g.plotLines),Fa(g,m),A.yAxis[1].realtimeUpdateY(g.min,g.max)),this.containerElement.resizeTo());ba.call(this,c.xAxis,n.x,c,this.dataObj,n.x._canvasWidth,n.x._availableHeight,n.x._minCanvasWidth);T&&this.prepareRealtimeValueText();A.xAxis[0].realtimeUpdateX(p);f=0;for(K=Q.length;f<K;f+=1)A.plots[f]&&A.plots[f].realtimeUpdate&&A.plots[f].realtimeUpdate(p,
+B._forceReflow);this.realtimeDrawingLatency=new Date-X}}},extractTrendLines:function(a){var e=a.plotLines;a=a.plotBands;for(var c,d=e.length,b=[],f=[];d;)c=d-1,c=e[c],c.isTrend&&f.push(c),--d;for(d=a.length;d;)c=d-1,e=a[c],e.isTrend&&b.push(e),--d;return{trendLines:f,trendBands:b}}};Ma(kb.eiMethods,{clearChart:function(a){a=a&&a.toString&&a.toString();this.feedData("clear=1");I.raiseEvent("ChartCleared",{source:a},this.FusionCharts,[this.id,a])},getDataJSON:function(){return this.jsVars._rtLastUpdatedData||
+{values:[]}},getData:function(){var a=this.jsVars.hcObj.options,e=a[U].oriCatTmp,c,d=[],b,f,n,g;if(!a||!a.series)return d;a=a.series;b=[];for(n=a.length;n--;)for(c=a[n],b[c.index]=c.name,f=c.data,g=e.length;g--;)c=d[g]||(d[g]=[e[g]]),c[n+1]=f[g].y;b.unshift(null);d.unshift(b);return d}});v("realtimearea",Ma({friendlyName:"Realtime Data Streaming Area Chart",standaloneInit:!0,multisetRealtime:!0,defaultPlotShadow:1,creditLabel:ja,rendererId:"realtimecartesian"},kb),v.msareabase);v("realtimecolumn",
+Ma({friendlyName:"Realtime Data Streaming Column Chart",standaloneInit:!0,multisetRealtime:!0,creditLabel:ja,rendererId:"realtimecartesian"},kb),v.mscolumn2dbase);v("realtimeline",Ma({friendlyName:"Realtime Data Streaming Line Chart",standaloneInit:!0,multisetRealtime:!0,creditLabel:ja,rendererId:"realtimecartesian"},kb),v.mslinebase);v("realtimelinedy",Ma({friendlyName:"Realtime Data Streaming Dual Y-Axis Line Chart",standaloneInit:!0,multisetRealtime:!0,isDual:!0,creditLabel:ja,series:v.mscombibase,
+rendererId:"realtimecartesian"},kb),v.mslinebase);v("realtimestackedarea",{friendlyName:"Realtime Data Streaming Stacked Area Chart",isStacked:!0,showSum:0,areaAlpha:100,creditLabel:ja},v.realtimearea);v("realtimestackedcolumn",{friendlyName:"Realtime Data Streaming Column Chart",isStacked:!0,creditLabel:ja},v.realtimecolumn);Nb=function(a,e){return a.minvalue-e.minvalue};eb.prototype={getColorObj:function(a){for(var e=this.colorArr,c=0,d=e.length,b,f,n={};c<d;c+=1){n.index=c;b=e[c];f=e[c+1];if(a<
+b.minvalue)return n.nextObj=b,n;if(a>=b.minvalue&&a<=b.maxvalue)return n.colorObj=b,f&&a==f.minvalue&&(n.nextObj=f,n.isOnMeetPoint=!0),n;n.prevObj=b}n.index=c-1;return n},getColorRangeArr:function(a,e){var c,d=this.colorArr,b,f,n=[],g,p;if(!this.defaultAsigned&&(a>e&&(c=a,a=e,e=c),a<e&&(b=this.getColorObj(a),f=this.getColorObj(e),b&&f))){c=a;b=b.index;for(f=f.index;b<=f;b+=1)g=Y({},d[b]),g.minvalue!==c&&(g.minvalue=c),n.push(g),p=g,c=g.maxvalue;p.maxvalue=e}return n}};eb.prototype.constructor=eb;
+Ob=function(){var a={fluidHRatio:!0,fluidColor:!0,fluidAlpha:!0,fluidFill:!0},e=[],c=0,d=function(a){c=Boolean(a)?a.duration:0},b=function(b,d){var f,m,k=this,l,t,r=!1,u=!1,w=this._3dAttr;bb(b)&&ga(d)&&(f=b,b={},b[f]=d);if(bb(b))k=a[b]?k._3dAttr[b]:k._attr(b);else for(f in b)m=b[f],a[f]?("fluidFill"===f?(m&&m.linearGradient&&m.stops&&m.stops[0]&&(m=m.stops[0][1]),yb.test(m)?(t=new sb(m),l=t.get("hex"),t=100*t.get("a")):m&&m.FCcolor?(l=m.FCcolor.color.split(y)[0],t=m.FCcolor.alpha.split(y)[0]):vb.test(m)&&
+(l=m.replace(ib,nb)),w.fluidColor=q(l,w.fluidColor,"000000"),w.fluidAlpha=h(t,w.fluidAlpha,100),r=!0):"fluidColor"===f?(w.fluidColor=q(m,w.fluidColor,"000000"),r=!0):"fluidAlpha"===f?(w.fluidAlpha=h(m,w.fluidAlpha,100),r=!0):0<=m&&1>=m&&(w.fluidHRatio=m,u=!0),r&&(m=na(w.fluidColor,w.is2D?80:70),k.fluid.attr({fill:L(m,w.fluidAlpha)}),k.fluidTop.attr({fill:L(m,w.fluidAlpha)}),k.topLight.attr({stroke:L(m,.4*w.fluidAlpha)}),k.topLightBorder.attr({fill:X({FCcolor:{color:m+y+m,alpha:"40,0",ratio:"0,80",
+radialGradient:!0,cx:.5,cy:1,r:"70%"}})})),u&&(m=w.scaleY+w.h*(1-w.fluidHRatio),c?(k.fluid.animate({path:w.fluidPath.concat(["L",w.lx2,m,w.lx1,m,"Z"])},c,"easeIn"),k.fluidTop.animate({path:e.concat(["M",w.lx1,m,"A",w.lCylWidthHalf,1,0,1,0,w.lx2,m,"Z"])},c,"easeIn")):(k.fluid.attr({path:w.fluidPath.concat(["L",w.lx2,m,w.lx1,m,"Z"])}),k.fluidTop.attr({path:e.concat(["M",w.lx1,m,"A",w.lCylWidthHalf,1,0,1,0,w.lx2,m,"Z"])})))):this._attr(f,m);return k},f=function(a,b,c){this.border.shadow(a,b,c)};return function(a,
+c,p,m,k,l,t,r,u,w,C,F,x){var W,z,A,B,D,R,G,M,v,N,H,K,T,J,O,Q;qb(a)&&(c=a.y,p=a.r,m=a.h,l=a.renderer,t=a.fluidHRatio,r=a.conColor,u=a.conBorderColor,w=a.conBorderThickness,C=a.fluidColor,F=a.fluidAlpha,x=a.is2D,a=a.x);0<=t&&1>=t||(t=0);r=q(r,"FFFFFF");u=q(u,"#000000");w=h(w,1);C=q(C,"000000");F=h(F,100);Q={x:a,y:c,r:p,h:m,renderer:l,fluidHRatio:t,conColor:r,conBorderColor:u,conBorderThickness:w,fluidStroke:3,fluidColor:C,is2D:x,fluidAlpha:F};k._attr=k.attr;k.attr=b;k._setAnimate=d;k.shadow=f;k._3dAttr=
+Q;W=na(r,80);C=na(C,x?80:70);r=da(r,80);z=.643*p;A=.33*z;B=z-A;D=a-z;R=a+z;G=a-B;B=a+B;M=c+z;v=M+m;N=v+.766*p;H=c+A;m=M+m*(1-t);t=.9*z;K=p+t-z;T=a-t;J=a+t;N-=Math.abs(Math.sqrt(K*K-t*t));O=parseInt(a-.6*z,10);z=a+z/2;Q.fluidPath=["M",T,N,"A",K,K,0,1,0,J,N];Q.scaleY=M;Q.lx1=T;Q.lx2=J;Q.lCylWidthHalf=t;k.topLight=l.path(["M",T,M,"L",J,M],k).attr({"stroke-width":1,stroke:L(C,40)});k.topLightBorder=l.path(["M",T,M,"L",J,M,J,H,T,H,"Z"],k).attr({"stroke-width":0,fill:X({FCcolor:{color:C+y+C,alpha:x?"0,0":
+"40,0",ratio:"0,80",radialGradient:!0,cx:.5,cy:1,r:"70%"}})});k.fluid=l.path(Q.fluidPath.concat(["L",J,m,T,m,"Z"]),k).attr({"stroke-width":0,fill:L(C,F)});k.fluidTop=l.path(e.concat(["M",T,m,"A",t,1,0,1,0,J,m,"Z"]),k).attr({"stroke-width":0,fill:L(C,F)});k.border=l.path(e.concat(["M",G,c,"A",A,A,0,0,0,D,H],["L",D,v],["A",p,p,0,1,0,R,v],["L",R,H],["A",A,A,0,0,0,B,c,"Z"]),k).attr({"stroke-width":w,stroke:u});x||(k.bulbBorderLight=l.path(e.concat(["M",D,v,"A",p,p,0,0,1,R,v],["M",R,v,"A",p,p,0,0,0,D,
+v],["M",D,v,"A",p,p,0,1,0,R,v,"Z"]),k).attr({"stroke-width":0,stroke:"#00FF00",fill:X({FCcolor:{cx:.5,cy:.5,r:"50%",color:W+y+r,alpha:"0,50",ratio:"78,30",radialGradient:!0}})}),k.bulbTopLight=l.path(e.concat(["M",D,v,"A",p,p,0,0,1,R,v],["A",p,p,0,0,0,D,v],["A",p,p,0,1,0,R,v,"Z"]),k).attr({"stroke-width":0,fill:X({FCcolor:{cx:.3,cy:.1,r:"100%",color:r+y+W,alpha:"60,0",ratio:"0,30",radialGradient:!0}})}),k.bulbCenterLight=l.path(e.concat(["M",D,v,"A",p,p,0,1,0,R,v],["A",p,p,0,0,0,D,v],["A",p,p,0,0,
+1,R,v,"Z"]),k).attr({"stroke-width":0,fill:X({FCcolor:{cx:.25,cy:.7,r:"100%",color:r+y+W,alpha:"80,0",ratio:"0,70",radialGradient:!0}})}),k.cylLeftLight=l.path(e.concat(["M",a,c,"L",G,c],["A",A,A,0,0,0,D,H],["L",D,v,a,v,"Z"]),k).attr({"stroke-width":0,fill:X({FCcolor:{color:r+y+W,alpha:"50,0",ratio:"0,80",angle:0}})}),k.cylRightLight=l.path(e.concat(["M",D,c,"L",B,c],["A",A,A,0,0,1,R,H],["L",R,v,D,v,"Z"]),k).attr({"stroke-width":0,fill:X({FCcolor:{color:r+y+W+y+W,alpha:"50,0,0",ratio:"0,40,60",angle:180}})}),
+k.cylLeftLight1=l.path(["M",O,H,"L",D,H,D,v,O,v,"Z"],k).attr({"stroke-width":0,fill:X({FCcolor:{color:r+y+W,alpha:"60,0",ratio:"0,100",angle:180}})}),k.cylRightLight1=l.path(["M",O-.01,H,"L",z,H,z,v,O-.01,v,"Z"],k).attr({"stroke-width":0,fill:X({FCcolor:{color:r+y+W,alpha:"60,0",ratio:"0,100",angle:0}})}));return k}}();Pb=function(){var a={fluidHRatio:!0,color:!0,alpha:!0,fill:!0},e=[],c=0,d=function(a){c=Boolean(a)?a.duration:0},b=function(b,d){var f,m,k=this,l,t,r=!1,u=!1,w=this._3dAttr,C,F,x,W,
+z,A,B,D;bb(b)&&ga(d)&&(f=b,b={},b[f]=d);if(bb(b))k=a[b]?k._3dAttr[b]:k._attr(b);else for(f in b)m=b[f],a[f]?("fill"===f?(m&&m.linearGradient&&m.stops&&m.stops[0]&&(m=m.stops[0][1]),yb.test(m)?(t=new sb(m),l=t.get("hex"),t=100*t.get("a")):m&&m.FCcolor?(l=m.FCcolor.color.split(y)[0],t=m.FCcolor.alpha.split(y)[0]):vb.test(m)&&(l=m.replace(ib,nb)),w.fluidColor=q(l,w.fluidColor,"000000"),w.fluidAlpha=h(t,w.fluidAlpha,100),r=!0):"color"===f?(w.fluidColor=q(m,w.fluidColor,"000000"),r=!0):"alpha"===f?(w.fluidAlpha=
+h(m,w.fluidAlpha,100),r=!0):0<=m&&1>=m&&(w.fluidHRatio=m,u=!0),r&&(m=na(w.fluidColor,70),C=da(w.fluidColor,70),x=na(w.conColor,80),F=da(w.conColor,80),t=w.fluidAlpha,W=t+y+t,k.fluid.attr({"stroke-width":0,fill:X({FCcolor:{cx:.5,cy:0,r:"100%",color:C+y+m,alpha:W,ratio:"0,100",radialGradient:!0}})}),k.fluidTop.attr({"stroke-width":3,stroke:L(C,t),fill:X({FCcolor:{cx:.5,cy:.7,r:"100%",color:C+y+m,alpha:W,ratio:"0,100",radialGradient:!0}})}),k.btnBorderLight.attr({fill:X({FCcolor:{color:F+y+x+y+F+y+F+
+y+x+y+m+y+x+y+F,alpha:"50,50,50,50,50,"+.7*t+",50,50",ratio:"0,15,0,12,0,15,43,15",angle:0}})})),u&&(x=w.x,m=w.r,C=w.fluidStroke,F=C/2,z=w.h*w.fluidHRatio,C=x-m,x+=m,W=C+F,A=x-F,B=w.y+w.h,z=B-z,D=m*w.r3dFactor,F=m-F,c?(k.fluid.animate({path:e.concat(["M",C,B],["A",m,Ca(D,1),0,0,0,x,B],["L",x,z],["A",m,Ca(D,1),0,0,0,C,z,"Z"])},c,"easeIn"),k.fluidTop.animate({path:e.concat(["M",W,z],["A",F,D,0,0,0,A,z],["L",A,z],["A",F,D,0,0,0,W,z,"Z"])},c,"easeIn")):(k.fluid.attr({path:e.concat(["M",C,B],["A",m,D,
+0,0,0,x,B],["L",x,z],["A",m,D,0,0,1,C,z,"Z"])}),k.fluidTop.attr({path:e.concat(["M",W,z],["A",F,D,0,0,0,A,z],["L",A,z],["A",F,D,0,0,0,W,z,"Z"])})))):this._attr(f,m);return k},f=function(){};return function(a,c,p,m,k,l,t,r,u,w,C,F,x){var W,z,A,B,D,R,G,v,ma,N,H,K,T,J,O,Q,S,E;qb(a)&&(c=a.y,p=a.r,m=a.h,k=a.r3dFactor,l=a.parentGroup,t=a.renderer,r=a.fluidHRatio,u=a.conColor,w=a.conAlpha,C=a.fluidColor,F=a.fluidAlpha,a=a.x);k=h(k,.15);Ga.vml&&(k=k||.001);0<=r&&1>=r||(r=0);u=q(u,"FFFFFF");w=h(w,30);C=q(C,
+"000000");F=h(F,100);w={x:a,y:c,r:p,h:m,r3dFactor:k,renderer:t,fluidHRatio:r,conColor:u,conAlpha:w,fluidStroke:3,fluidColor:C,fluidAlpha:F};l=t.group("graphic",l);l._attr=l.attr;l.attr=b;l._setAnimate=d;l.shadow=f;l._3dAttr=w;k*=p;w=p-1.5;W=c+m;m=W-m*r;r=a-p;z=a+p;A=r+1.5;B=z-1.5;D=r-2;R=z+2;G=p+2;v=k+2;ma=W+4;N=ma+.001;H=na(u,80);K=na(u,90);u=da(u,80);T=na(C,70);C=da(C,70);J=na(T,90);O=.85*p;Q=a-O;a+=O;S=Math.sqrt((1-O*O/(p*p))*k*k);O=c+S;S=W+S;E=c-1;l.btnBorder=t.path(e.concat(["M",D,ma],["A",G,
+v,0,0,0,R,ma],["L",R,N],["A",G,v,0,0,0,D,N,"Z"]),l).attr({"stroke-width":4,stroke:L(H,80)});l.btnBorder1=t.path(e.concat(["M",r,ma],["A",p,k,0,0,0,z,ma],["L",z,N],["A",p,k,0,0,0,r,N,"Z"]),l).attr({"stroke-width":4,stroke:L(H,50)});l.btnBorderLight=t.path(e.concat(["M",r,W],["A",p,k,0,0,0,z,W],["A",p,k,0,0,0,r,W,"Z"]),l).attr({"stroke-width":0,fill:X({FCcolor:{color:u+y+H+y+u+y+u+y+H+y+T+y+H+y+u,alpha:"50,50,50,50,50,70,50,50",ratio:"0,15,0,12,0,15,43,15",angle:0}})});D=x?u+y+H+y+u+y+H+y+K+y+K+y+H+
+y+u:u+y+H+y+H+y+H+y+H+y+H+y+H+y+u;l.back=t.path(e.concat(["M",r,W],["A",p,k,0,0,0,z,W],["L",z,c],["A",p,k,0,0,0,r,c,"Z"]),l).attr({"stroke-width":1,stroke:L(H,50),fill:X({FCcolor:{color:D,alpha:"30,30,30,30,30,30,30,30",ratio:"0,15,43,15,0,12,0,15",angle:0}})});D=x?C+y+T:T+y+T;l.fluid=t.path(e.concat(["M",r,W],["A",p,Ca(k,1),0,0,0,z,W],["L",z,m],["A",p,Ca(k,1),0,0,0,r,m,"Z"]),l).attr({"stroke-width":0,fill:X({FCcolor:{cx:.5,cy:0,r:"100%",color:D,alpha:F+y+F,ratio:"0,100",radialGradient:!0}})});D=
+x?C+y+T:T+y+T;l.fluidTop=t.path(e.concat(["M",A,m],["A",w,k,0,0,0,B,m],["L",B,m],["A",w,k,0,0,0,A,m,"Z"]),l).attr({"stroke-width":2,stroke:x?L(C,F):L(J),fill:X({FCcolor:{cx:.5,cy:.7,r:"100%",color:D,alpha:F+y+F,ratio:"0,100",radialGradient:!0}})});D=x?u+y+H+y+u+y+u+y+H+y+u+y+H+y+u:H+y+H+y+H+y+H+y+H+y+H+y+H+y+H;l.front=t.path(e.concat(["M",r,W],["A",p,k,0,0,0,z,W],["L",z,c],["A",p,k,0,0,1,r,c,"Z"]),l).attr({"stroke-width":1,stroke:L(H,50),fill:X({FCcolor:{color:D,alpha:"30,30,30,30,30,30,30,30",ratio:"0,15,0,12,0,15,43,15",
+angle:0}})});x&&(l.frontLight=t.path(e.concat(["M",r,W],["A",p,k,1,0,0,Q,S],["L",Q,O],["A",p,k,0,0,1,r,c,"Z"]),l).attr({"stroke-width":0,stroke:"#"+H,fill:X({FCcolor:{color:D,alpha:"40,0",ratio:"0,100",angle:0}})}));x&&(l.frontLight1=t.path(e.concat(["M",a,S],["A",p,k,0,0,0,z,W],["L",z,c],["A",p,k,1,0,0,a,O,"Z"]),l).attr({"stroke-width":0,stroke:"#"+H,fill:X({FCcolor:{color:D,alpha:"40,0",ratio:"0,100",angle:180}})}));l.cylinterTop=t.path(e.concat(["M",r,E],["A",p,k,0,0,0,z,E],["L",z,E],["A",p,k,
+0,0,0,r,E,"Z"]),l).attr({"stroke-width":2,stroke:L(H,40)});return l}}();Qb=function(){var a={value:!0},e=0,c=function(a){e=Boolean(a)?a.duration:0},d=function(b,c){var d,p,m=this,k=this._3dAttr,l,h,r,u,w,C,q;bb(b)&&ga(c)&&(d=b,b={},b[d]=c);if(bb(b))m=a[b]?m._3dAttr[b]:m._attr(b);else for(d in b)if(p=b[d],a[d]){if(p>=k.minValue&&p<=k.maxValue){k[d]=p;l=(p-k.minValue)/k.perLEDValueLength;p=ha(l)*k.sizeGapSum-k.ledGap;if(k.LEDCase){h=m.colorArr;u=h.length;for(r=0;r<u;r+=1)w=h[r],w.maxLEDNoFrac<=l?q=
+k.LEDLowerFN:C?q=k.LEDUpperFN:(q=void 0,C=w),q&&(w[q](),"show"===q&&w.attr(w.oriShapeArg));C||(C=w);C.show();C.attr(C.hoverShapeArg)}m.darkShade&&(l={},k.isXChange?(l.width=Math.ceil(k.w-p),k.isIncrement&&(l.x=k.x+p)):(l.height=Math.ceil(k.h-p),k.isIncrement&&(l.y=k.y+p)),e?m.darkShade.animate(l,e,"easeIn"):m.darkShade.attr(l))}}else this._attr(d,p);return m},b=function(){};return function(a,e,g,p,m,k,l,t,r,u,w,C,F,x,W,z,A,B,D,v,G){var y=function(a){var b=0,c,d;return function(){b=0;for(c=a.colorArr.length;b<
+c;b+=1)d=a.colorArr[b],d.attr(d.data("rollover"))}},ma=function(a){var b=0,c,d;return function(){b=0;for(c=a.colorArr.length;b<c;b+=1)d=a.colorArr[b],d.attr(d.data("rollout"))}},N,H,K,T,J,O,Q,S,E,P,I,ba,sa,Z,aa,ea,oa,ua,wa,va,za,Da,U,Qa;qb(a)&&(e=a.y,g=a.w,p=a.h,m=a.wGroup,k=a.renderer,l=a.value,t=a.gaugeFillColor,r=a.gaugeBorderColor,u=a.gaugeBorderAlpha,w=a.gaugeBorderThickness,C=a.colorRangeManager,F=a.minValue,x=a.maxValue,W=a.useSameFillColor,z=a.useSameFillBgColor,A=a.ledSize,B=a.ledGap,D=a.type,
+a=a.x);l>=F&&l<=x||(l=F);t=q(t,"FFFFFF");r=q(r,"000000").replace(ib,nb);u=h(u,1);w=h(w,2);Qa={x:a,y:e,w:g,h:p,wGroup:m,renderer:k,value:l,gaugeFillColor:t,gaugeBorderColor:r,gaugeBorderAlpha:u,gaugeBorderThickness:w,colorRangeManager:C,minValue:F,maxValue:x,ledGap:B,ledSize:A,type:D,useSameFillColor:W,useSameFillBgColor:z};m=k.group("graphic",m);m._attr=m.attr;m.attr=d;m._setAnimate=c;m.shadow=b;m._3dAttr=Qa;C=C.getColorRangeArr(F,x);N=a;H=e;T=K=!0;J=2===D||4===D?p:g;O=B+A;Q=B/2;S=Q/2;E=J-A;P=x-F;
+x=0;I=C.length;Z=sa=0;aa=!1;oa=ea="show";ua=a;wa=e;va=w/2;za=a-va;Da=e-va;U=a+g+va;va=e+p+va;W&&(Z+=1,ea="hide");z&&(Z+=2,oa="hide");0>E?(W=1,A=J):(W=parseInt(E/O,10)+1,A+=E%O/W,O=A+B);z=P/W;m.colorArr=[];J=[];1===D?ua+=O-B/2:2===D?(T=!1,wa+=O-B/2):3===D?(N=a+g,K=!1,ua+=O-B/2):(H=e+p,T=K=!1,wa+=O-B/2);Qa.ledGap=B;Qa.ledSize=A;Qa.sizeGapSum=O;Qa.perLEDValueLength=z;Qa.isIncrement=K;Qa.isXChange=T;Qa.LEDLowerFN=ea;Qa.LEDUpperFN=oa;(Qa.LEDCase=Z)&&(3===Z?ba={x:a,y:e,width:g,height:p}:aa=!0);for(m.border=
+k.path(["M",za,Da,"L",U,Da,U,va,za,va,"Z"],m).attr({stroke:L(r,u),"stroke-width":w}).shadow({apply:v});x<I;x+=1)if((r=C[x])&&ga(r.maxvalue)&&(u=ha((r.maxvalue-F)/z),A=u-sa,sa=u,0<A)){w={r:0};aa&&(ba={});A*=O;if(T)if(w.y=H,w.width=A-B,w.height=p,K?(w.x=N,N+=A):(w.x=N-w.width,N-=A),aa&&(ba.width=w.x-a,K&&1===Z||!K&&2===Z?(ba.x=a,ba.width+=w.width):ba.width=g-ba.width),0===x||x===I-1){if(w.width+=S,K&&x===I-1||!K&&0===x)w.x-=S,w.width=Math.ceil(w.width)}else w.width+=Q,w.x-=S;else if(w.x=N,w.width=g,
+w.height=A-B,K?(w.y=H,H+=A):(w.y=H-w.height,H-=A),aa&&(ba.height=w.y-e,K&&1===Z||!K&&2===Z?(ba.y=e,ba.height+=w.height):ba.height=p-ba.height),0===x||x===I-1){if(w.height+=S,K&&x===I-1||!K&&0===x)w.y-=S,w.height=Math.ceil(w.height)}else w.height+=Q,w.y-=S;A=k.rect(w.x,w.y,w.width,w.height,m).attr({"stroke-width":0,fill:X({FCcolor:{color:q(r.code,"000000"),alpha:h(r.alpha,100)}})});A.oriShapeArg=w;A.hoverShapeArg=ba;A.maxLEDNo=u;A.maxLEDNoFrac=(r.maxvalue-F)/z;G&&(A.data("rollover",{"stroke-width":0,
+fill:X({FCcolor:{color:na(q(r.code,"000000"),80)+","+da(q(r.code,"000000"),80),alpha:h(r.alpha,100),angle:D%2?90:0}})}),A.data("rollout",{"stroke-width":0,fill:X({FCcolor:{color:q(r.code,"000000"),alpha:h(r.alpha,100)}})}));m.colorArr.push(A)}m.darkShade=k.rect(a,e,g,p,0,m).attr({"stroke-width":0,fill:L(t,50)});for(x=1;x<W;x+=1)T?(J.push("M",ua,wa,"L",ua,wa+p),ua+=O):(J.push("M",ua,wa,"L",ua+g,wa),wa+=O);m.LEDGap=k.path(J,m).attr({stroke:L(t,100),"stroke-width":B});m.tracker=k.rect(a,e,g,p,0,m).attr({fill:ra});
+G&&m.tracker.hover(y(m),ma(m));m.attr({value:l});return m}}();v("renderer.drawingpad",{deleteme:function(a){this.container.innerHTML="called from drawingpad: "+a}},v["renderer.root"]);v("renderer.widgetbase",{drawLegend:function(){},drawGraph:function(){var a=this.elements,e=this.paper,c=this.layers,d=this.options,b=c.dataset;d.nativeMessage||(c.dataset||(b=a.widgetGroup=c.dataset=e.group("dataset"),c.tracker=e.group("hot"),c.tracker.insertAfter(c.dataset)),c.datalabels||(c.datalabels=e.group("datalabels").insertAfter(b)),
+b.translate(this.canvasLeft,this.canvasTop),c.datalabels.translate(this.canvasLeft,this.canvasTop),d.tooltip&&!1!==d.tooltip.enabled&&e.tooltip(d.tooltip.style,d.tooltip.shadow,d.tooltip.constrain),this.drawWidget(),this.drawScale(),this.drawValue())},drawWidgetValue:function(){},drawValue:function(a,e){var c=this.options,d=e||c.plotOptions.series.animation,c=c.series&&c.series[0]&&c.series[0].data||[],b;if(c.length){if(a&&(b=a.length))for(;b--;)c[b]&&(c[b]=a[b]);this.drawWidgetValue(c,d);this.drawWidgetLabel(c,
+d)}},drawWidgetLabel:function(a){var e=this.paper,c=this.options,d=c.chart,b=this.elements,f=this.layers;a=a[0];var f=f.datalabels||(f.datalabels=e.group("datalabels").insertAfter(f.dataset)),n=this.canvasWidth,g=this.canvasHeight,p=d.valuePadding,m=a.displayValue,k=h(d.yScaleRadius,0),c=c.plotOptions.series.dataLabels.style,l={fontFamily:c.fontFamily,fontSize:c.fontSize,lineHeight:c.lineHeight,fontWeight:c.fontWeight,fontStyle:c.fontStyle},g=g+p+k;null!==a.y&&!isNaN(a.y)&&ga(m)&&m!==J&&(b.dataLabel?
+b.dataLabel.attr({text:m}):b.dataLabel=e.text(f).attr({"vertical-align":"top",text:m,x:n/2,y:g,"text-anchor":Ha[Aa],fill:c.color,direction:d.textDirection,"text-bound":[c.backgroundColor,c.borderColor,c.borderThickness,c.borderPadding,c.borderRadius,c.borderDash]}).css(l).tooltip(a.originalText),e=b.dataLabel.getBBox(),0>e.x+d.spacingLeft&&(e=e.width-d.spacingLeft,d.origW<e&&(e=d.origW-d.spacingLeft),b.dataLabel.attr({x:e/2})))},drawScale:function(){var a=this.paper,e=this.elements,c=this.layers.dataset,
+d=this.options,b=this.canvasWidth,f=this.canvasHeight,n=d.scale,g=n.minorTM,d=d.chart.textDirection,p=n.min,m=n.max,k=n.majorTM,l=n.axisPosition,h=n.minorTMHeight,r=n.majorTMHeight,u=n.connectorColor,w=n.connectorThickness,C=n.minorTMColor,q=n.minorTMThickness,x=n.majorTMColor,W=n.majorTMThickness,z=n.tickMarkDistance,A=n.tickValueDistance,B=n.placeTicksInside,D=n.placeValuesInside,v=Math.max(r,h),c=e.scaleGroup||(e.scaleGroup=a.group("scale",c)),G=Va,y=Aa,ma=n.reverseScale,N=p,H=q/2,K=W/2,p=m-p,
+T=0,E=0,O=0,Q=0,S=0,L=0,P=0,I=0,ba=0,sa=0,Z=0,aa=0,ea=0,oa=0,ua=0,wa=0,va,za={},Da=this.smartLabel;B?(z=-z,r=-r,h=-h,D?(v=-v,A=-A):v=-z):D&&(v=-z,A=-A);ma&&(p=-p,N=m);switch(l){case 1:T=b/p;Q=-z;L=Q-K;I=Q-H;sa=Q-r;aa=Q-h;oa=Q-v-A;G=Va;y=D?cb:rb;break;case 2:E=f/p;O=z;S=O+K;P=O+H;ba=O+r;Z=O+h;ea=O+v+A;ua=b;G=D?gb:Wa;y=Aa;break;case 3:T=b/p;Q=z;L=Q+K;I=Q+H;sa=Q+r;aa=Q+h;oa=Q+v+A;wa=f;G=Va;y=D?rb:cb;break;case 4:E=f/p,O=-z,S=O-K,P=O-H,ba=O-r,Z=O-h,ea=O-v-A,G=D?Wa:gb,y=Aa}e.minorTM||(e.minorTM=[]);e.majorTM||
+(e.majorTM=[]);this.tmLabel||(e.tmLabel=[]);if(h)for(b=0,m=g.length;b<m;b+=1)r=g[b]-N,z=r*T,r*=E,e.minorTM[b]=a.path(["M",z+P,r+I,"L",z+Z,r+aa],c).attr({"shape-rendering":wb[1>q],stroke:C,"stroke-linecap":"round","stroke-width":q});b=0;for(m=k.length;b<m;b+=1)if(q=k[b],r=q.value-N,Z=q.displayValue,z=r*T,r*=E,h&&(e.majorTM[b]=a.path(["M",z+S,r+L,"L",z+ba,r+sa],c).attr({"shape-rendering":wb[1>W],stroke:x,"stroke-linecap":"round","stroke-width":W})),Z!==J){C=0===b||b===m-1?n.limitValues.style:n.tickValues.style;
+g=q.labelX||0;P=z+ea;Da.getSmartText(Z);aa=Da.getSmartText(Z.charAt(0)).height;I=r+oa;ma?(b==k.length-1?(f=k[b-1],r=f.value-N,r*=E,f=r+oa,f-=aa/2):b||(f=k[b+1],r=f.value-N,r*=E,f=r+oa,f=I-f-aa/2),f=Math.max(f,aa),Z=Da.getSmartText(Z,Number.POSITIVE_INFINITY,f),aa=Da.getSmartText(Z.text).height,b==k.length-1&&.5*aa>this.canvasTop?I=.5*aa-this.canvasTop:!b&&.5*aa>this.chartHeight-this.canvasBottom&&(I-=.5*aa-(this.chartHeight-this.canvasBottom))):Z=this.smartLabel.getSmartText(Z,Number.POSITIVE_INFINITY,
+f);za[b]=Z.width;if(1===l||3===l)if(aa=b===m-1?P+g-Z.width:P-(Z.width/2+g),0===b?r=Number.NEGATIVE_INFINITY:(r=void 0===va?b-1:va,A=A=z=void 0,0>r?r=Number.NEGATIVE_INFINITY:(z=e.tmLabel[r],A=za[r],A=0===r?z?z.node.scrollWidth?z.node.scrollWidth>A?z.node.scrollWidth:A:A:0:z?z.node.scrollWidth?(z.node.scrollWidth>A?z.node.scrollWidth:A)/2:A/2:0,r=z?z.attrs.x+A:0)),r>=aa)if(b===m-1)e.tmLabel[va].remove();else continue;else va=b;e.tmLabel[b]=a.text(P+g,I,Z.text,c).attr({"text-anchor":Ha[q.align||G],
+direction:d,"vertical-align":y}).css(C).tooltip(Z.tooltext)}w&&(e.tmConnector=a.path(["M",O,Q,"L",p*T+O,p*E+Q],c).attr({"shape-rendering":wb[1>w],stroke:u,"stroke-linecap":"round","stroke-width":w}));c.translate(ua,wa);return c},realtimeUpdate:function(a){if(a===this.lastUpdatedObj)return!1;var e=this.options,c=e.series,d=this.logic,c=c&&c[0]&&c[0].data,b=a.values||[],f=a.labels||[],n=a.toolTexts||[],g=a.showLabels||[],p=c&&c.length||0,m=[],k;if(p){for(;p--;)k={},void 0!==b[p]&&""!==b[p]?(k.value=
+b[p],k.hasNewData=!0):k.value=c[p].y,f[p]&&(k.displayvalue=f[p],k.hasNewData=!0),n[p]&&(k.tooltext=n[p],k.hasNewData=!0),k.hasNewData&&(m[p]=d.getPointStub(k,p,e,this.definition)),"0"!=g[p]&&c[p].displayValue||(m[p].displayValue=J);m.length&&(this.lastUpdatedObj=a)&&this.drawValue(m);return Boolean(m.length)}}},v["renderer.root"]);v("renderer.bulb",{drawWidget:function(){var a=this,e=a.options,c=e.chart,d=a.paper,b=a.elements,f=c.gaugeRadius,e=e.series[0]&&e.series[0].data&&e.series[0].data[0]||{},
+n=e.rolloverProperties||{},g={cx:c.gaugeOriginX,cy:c.gaugeOriginY,stroke:e.borderColor,"stroke-linecap":"round","stroke-width":e.borderWidth,r:c.animation?.001:f},p={r:f},m;null===e.y||isNaN(e.y)||(m=b.bulb=(m=b.bulb)?m.attr(g):d.circle(g,a.layers.dataset),c.animation&&m.animate(p,c.animation.duration,"easeIn"),m.click(function(b){la.call(this,a,b)}).hover(function(b){la.call(this,a,b,"DataPlotRollOver")},function(b){la.call(this,a,b,"DataPlotRollOut")}),n.enabled&&m.mouseover(function(){m.attr(n.hoverAttr);
+n.hoverAnimAttr&&m.animate(n.hoverAnimAttr,100,"easeIn")}).data("hoverAttr",n.hoverAttr).mouseout(function(){m.attr(n.outAttr);n.hoverAnimAttr?m.animate(p,100,"easeIn"):m.attr(p)}).data("outAttr",n.outAttr))},drawWidgetValue:function(a){var e=this.elements;a=a[0];var c=a.rolloverProperties||{},d=c.hoverAttr,b=c.outAttr,f={fill:X(a.color),ishot:!0},e=e.bulb,n=e.data("hoverAttr"),g=e.data("outAttr");c.enabled&&(d&&d.stroke&&(n.stroke=d.stroke,g.stroke=b.stroke),d&&d.fill&&(n.fill=d.fill,g.fill=b.fill));
+e||this.drawWidget();c={value:a.y,displayValue:a.displayValueArgs,toolText:a.toolText};null===a.y||isNaN(a.y)||e.attr(f).tooltip(a.toolText).data("eventArgs",c)},drawScale:function(){},drawWidgetLabel:function(a){var e=this.options.chart,c=this.paper,d=this.elements,b=this.layers,f=e.gaugeRadius,n=e.gaugeOriginX,g=e.gaugeOriginY;a=a[0];var p=d.dataLabel,m=e.dataLabels.style,k={fontFamily:m.fontFamily,fontSize:m.fontSize,lineHeight:m.lineHeight,fontWeight:m.fontWeight,fontStyle:m.fontStyle};b.datalabels||
+(b.datalabels=c.group("datalabels").insertAfter(b.dataset));e.placeValuesInside?(b=g,f=Aa):(b=g+f+e.valuePadding,f=cb);null===a.y||isNaN(a.y)||a.displayValue===J||(p||(d.dataLabel=p=c.text(this.layers.dataset)),p.attr({text:a.displayValue,"text-anchor":"middle",x:n,y:b,"vertical-align":f,fill:m.color,direction:e.textDirection,"text-bound":[m.backgroundColor,m.borderColor,m.borderThickness,m.borderPadding,m.borderRadius,m.borderDash]}).css(k).tooltip(a.originalText))}},v["renderer.widgetbase"]);v("renderer.thermometer",
+{drawWidget:function(){var a=this.options,e=a.chart,c=this.paper,d=a.series[0].data[0],b=e.plotHoverEffects||{},f=e.thmBulbRadius,n=.643*f,g=new sb(d.color),p=g.get("hex").replace(ib,J),g=100*g.get("a"),m;d.minValue=a.scale.min;d.maxValue=a.scale.max;m=this.elements.thermometer=Ob(0+n,0-n,f,e.thmHeight,this.layers.dataset,c,0,e.thmGlassColor,e.gaugeBorderColor,e.gaugeBorderThickness,p,g,e.use3DLighting);b.enabled&&m.data("hoverInAttrs",{fluidColor:b.thmFillHoverColor,fluidAlpha:b.thmFillHoverAlpha}).data("hoverOutAttrs",
+{fluidColor:p,fluidAlpha:g}).hover(function(){m.attr(m.data("hoverInAttrs"))},function(){m.attr(m.data("hoverOutAttrs"))})},drawWidgetValue:function(a,e){var c=this,d=c.elements,b=c.options.scale,f=b.max,n=b.min,b=a[0],f=(h(b.y,n)-n)/(f-n),g;d.thermometer||c.drawWidget();b.fluidHRatio=f;n={value:b.y,displayValue:b.displayValueArgs,toolText:b.toolText};e&&d.thermometer._setAnimate(e);d.thermometer.attr({fluidHRatio:f,ishot:!0}).click(function(a){la.call(this,c,a)}).hover(function(a){la.call(this,c,
+a,"DataPlotRollOver")},function(a){la.call(this,c,a,"DataPlotRollOut")}).data("eventArgs",n);if(b.toolText&&(g=d.thermometer.bottom)){do g.tooltip(b.toolText);while(g=g.next)}}},v["renderer.widgetbase"]);v("renderer.cylinder",{drawWidget:function(){var a=this.options,e=a.chart,c=e.plotHoverEffects||{},d=this.paper,b=this.elements,f=this.layers.dataset,n=a.scale,g=n.max,a=a.series[0].data[0],h,m;a.minValue=n.min;a.maxValue=g;b.cylinder=Pb(e.cylRadius,0,e.cylRadius,e.cylHeight,e.cylYScale,f,d,0,e.cylGlassColor,
+"100",e.cylFillColor,e.cylFillAlpha,e.cyl3DLighting);c.enabled&&(h={color:c.cylFillHoverColor,alpha:c.cylFillHoverAlpha},m={color:e.cylFillColor,alpha:e.cylFillAlpha},b.cylinder.hover(function(){b.cylinder.attr(h)},function(){b.cylinder.attr(m)}))},drawWidgetValue:function(a,e){var c=this,d=c.elements,b=c.options.scale,f=b.max,n=b.min,b=a[0],f=(h(b.y,n)-n)/(f-n),g;d.cylinder||c.drawWidget();n={value:b.y,displayValue:b.displayValueArgs,toolText:b.toolText};b.fluidHRatio=f;e&&d.cylinder._setAnimate(e);
+d.cylinder.attr({fluidHRatio:f,ishot:!0}).click(function(a){la.call(this,c,a)}).hover(function(a){la.call(this,c,a,"DataPlotRollOver")},function(a){la.call(this,c,a,"DataPlotRollOut")}).data("eventArgs",n);if(b.toolText&&(g=d.cylinder.bottom)){do g.tooltip(b.toolText);while(g=g.next)}}},v["renderer.widgetbase"]);v("renderer.led",{drawWidget:function(){var a=this.options,e=this.paper,c=this.logic,d=a.chart,b=this.elements,f=a.scale,n=f.max,g=f.min,a=a.series[0].data[0],h=this.layers.dataset;a.minValue=
+g;a.maxValue=n;b.led=Qb(0,0,this.canvasWidth,this.canvasHeight,h,e,0,d.gaugeFillColor,d.gaugeBorderColor,d.gaugeBorderAlpha,d.gaugeBorderThickness,c.colorRangeGetter,g,n,d.useSameFillColor,d.useSameFillBgColor,d.ledSize,d.ledGap,c.isHorizontal?f.reverseScale?3:1:f.reverseScale?4:2,d.showShadow,d.plotHoverEffect)},drawWidgetValue:function(a,e){var c=this.elements,d=a[0].y;c.led||this.drawWidget();e&&c.led._setAnimate(e);c.led.attr({value:d})}},v["renderer.widgetbase"]);v("renderer.bullet",{drawWidget:function(){var a=
+this.options,e=this.paper,c=this.logic,d=a.chart,b=a.scale,a=this.elements,f=this.layers.dataset,n=this.canvasWidth,g=this.canvasHeight,p=b.min,m=b.max,k=b&&b.trendPoint||[],l=d.colorRangeFillMix,t=d.colorRangeFillRatio,r=d.colorRangeBorderColor,u=d.colorRangeBorderAlpha,w=d.colorRangeBorderThickness,C=c.colorRangeGetter.getColorRangeArr(p,m),d=d.showShadow,q,x,v,z,A,B=c.colorManager,D,R,G;a.linear||(a.linear=q=e.group("colorrange",f),a.outerRect=e.rect(q));a.outerRect.attr({x:0,y:0,width:n,height:g,
+stroke:"none",r:0});c=c.isHorizontal?b.reverseScale?3:1:b.reverseScale?4:2;1===c?(f=function(a,b){return{x:a*n/(m-p),y:0,width:(b-a)*n/(m-p),height:g}},x=270):2===c?(f=function(a,b){return{x:0,y:a*g/(m-p),width:n,height:(b-a)*g/(m-p)}},x=180):3===c?(f=function(a,b){return{x:n-b*n/(m-p),y:0,width:(b-a)*n/(m-p),height:g}},x=270):(f=function(a,b){return{x:0,y:g-b*g/(m-p),width:n,height:(b-a)*g/(m-p)}},x=180);a.colorRangeElems||(a.colorRangeElems=[]);c=0;for(b=C.length;c<b;c+=1)z=C[c],A=f(z.minvalue-
+p,z.maxvalue-p),z.x=A.x,z.y=A.y,z.width=A.width,z.height=A.height,v=z.code,v=L(Ba(v,r),u),D=B.parseColorMix(z.code,l),R=B.parseAlphaList(z.alpha,D.length),G=h(z.borderAlpha,u),z=R.split(y),z=Ca.apply(Math,z),z=Ca(w&&G||0,z),a.colorRangeElems[c]||(a.colorRangeElems[c]=e.rect(q)),a.colorRangeElems[c].attr({x:A.x,y:A.y,width:A.width,height:A.height,r:0,"stroke-width":w,stroke:v,fill:X({FCcolor:{color:D.toString(),ratio:t,alpha:R,angle:x}})}).shadow({apply:d,opacity:z/100});for(;a.colorRangeElems[c];)a.colorRangeElems[c].remove(),
+a.colorRangeElems.splice(c,1);a.trendObjElems||(a.trendObjElems=[]);c=0;for(b=k.length;c<b;c+=1)l=k[c],A=f(l.startValue-p,l.endValue-p),l.isZone?(a.trendObjElems[c]||(a.trendObjElems[c]=e.rect(q)),a.trendObjElems[c].attr({x:A.x,y:A.y,width:0<A.width?A.width:0,height:0<A.height?A.height:0,r:0,fill:X({FCcolor:{color:l.color,alpha:l.alpha}})})):a.trendObjElems[c]=this.path(["M",A.x,A.y,"L",A.x,A.y+A.height],q).attr({stroke:L(l.color,l.alpha),"stroke-width":l.thickness,"stroke-dasharray":l.dashStyle});
+for(;a.trendObjElems[c];)a.trendObjElems[c].remove(),a.trendObjElems.splice(c,1)},drawWidgetValue:function(a){var e=this,c=e.paper,d=e.layers.dataset,b=e.canvasWidth,f=e.canvasHeight,n=e.options.scale,g=n.max,p=n.min,m=g-p,k=a[0],l=a[1],t=n&&n.trendPoint||[],r,u,w=l.borderWidth,q=e.logic.isHorizontal,F;u=a.length;var x=0,v=0,z=0,A=0,B=p,D,y,G,M,J,N;q?(x=b/m,A=f/2):(v=f/m,z=b/2);n.reverseScale&&(x=-x,v=-v,B=g);for(;u--;)F=a[u],n=h(F.y,B)-B,F.plotX=F.origX=n*x+z,F.plotY=F.origY=n*v+A;for(u=t.length;u--;)F=
+t[u],n=F.startValue-p,F.plotX=F.origX=n*x+z,F.plotY=F.origY=n*v+A;n=function(a){a=h(a,B)-B;return{x:a*x+z,y:a*v+A}}(Math.min(Math.max(p,0),g));ga(k.y)&&(k.plotAsDot?(t=u=k.plotFillPercent/100*(q?f:b),a=k.plotX-u/2,g=k.plotY-t/2,q?(k.animInitAttr={x:n.x},k.animAttr={x:a}):(k.animInitAttr={y:n.y},k.animAttr={y:g})):(a=Math.min(k.plotX,n.x),g=Math.min(k.plotY,n.y),t=Math.abs(k.plotY-n.y),u=Math.abs(k.plotX-n.x),q?(k.animInitAttr={x:n.x,width:0},k.animAttr={x:a,width:u},t=k.plotFillPercent/100*f,g-=t/
+2):(k.animInitAttr={y:n.y,height:0},k.animAttr={y:g,height:t},u=k.plotFillPercent/100*b,a-=u/2)),p={link:F.link,value:k.y,displayValue:k.displayValueArgs,toolText:F.toolText},F.shapeType="rect",F.shapeArgs={x:a,y:g,height:t,width:u,endY:r,r:0},G=k.rolloverProperties||{},G.enabled&&void 0!==G.plotFillHoverPercent&&(G.showHoverAnimation?(D={},y={}):(D=G.hoverAttr,y=G.outAttr),k.plotAsDot?(D.width=D.height=G.plotFillHoverPercent/100*(q?f:b),D.x=k.plotX-D.width/2,D.y=k.plotY-D.width/2,y.width=y.height=
+u,y.x=a,y.y=g):q?(D.height=G.plotFillHoverPercent/100*f,D.y=Math.min(k.plotY,n.y)-D.height/2,y.height=t,y.y=g):(D.width=G.plotFillHoverPercent/100*b,D.x=Math.min(k.plotX,n.x)-D.width/2,y.width=u,y.x=a)),F.graphic=c.rect(a,g,u,t,0,d).attr({fill:F.color,stroke:F.borderColor,ishot:!0,"stroke-width":F.borderWidth}).click(function(a){la.call(this,e,a)}).hover(function(a){la.call(this,e,a,"DataPlotRollOver");G.enabled&&(this.attr(G.hoverAttr),G.showHoverAnimation&&this.animate(D,100,"easeOut"))},function(a){la.call(this,
+e,a,"DataPlotRollOut");G.enabled&&(this.attr(G.outAttr),G.showHoverAnimation&&this.animate(y,100,"easeOut"))}).tooltip(F.toolText).data("eventArgs",p));ga(l.y)&&(q?(u=f*l.targetFillPercent/100,t=u/2,k=a=l.plotX,p=g=l.plotY-t,r=l.plotY+t,t=u,u=w,F=a-w/2,n=[a+w,l.plotY]):(u=b*l.targetFillPercent/100,t=u/2,F=a=l.plotX-t,g=r=l.plotY,k=l.plotX+t,t=w,p=g-w/2,n=[l.plotX,g+w+10]),l.shapeType="rect",l.tooltipPos=n,l.trackerArgs={x:F,y:p,height:t,width:u,r:0},l.shapeArgs=["M",a,g,"L",k,r],l.animInitAttr={d:["M",
+l.plotX,l.plotY,"L",l.plotX,l.plotY]},l.animAttr={d:l.shapeArgs},p={link:l.link,value:l.y,displayValue:l.displayValueArgs,toolText:l.toolText},M=l.rolloverProperties||{},M.enabled&&void 0!==M.plotFillHoverPercent&&(M.showHoverAnimation?(N={},J={d:l.shapeArgs}):(N=M.hoverAttr,M.outAttr.d=l.shapeArgs),q?(u=f*l.plotFillHoverPercent/100,t=u/2,N.d=["M",a,l.plotY-t,"L",k,l.plotY+t]):(u=b*l.plotFillHoverPercent/100,t=u/2,N.d=["M",l.plotX-t,g,"L",l.plotX+t,r])),l.graphic=c.path(l.shapeArgs,d).attr({stroke:l.borderColor,
+"stroke-width":w,"stroke-linecap":"round",ishot:!0,"shape-rendering":wb[1>w]}).click(function(a){la.call(this,e,a)}).hover(function(a){la.call(this,e,a,"DataPlotRollOver");M.enabled&&(this.attr(M.hoverAttr),M.showHoverAnimation&&this.animate(N,100,"easeOut"))},function(a){la.call(this,e,a,"DataPlotRollOut");M.enabled&&(this.attr(M.outAttr),M.showHoverAnimation&&this.animate(J,100,"easeOut"))}).tooltip(l.toolText).data("eventArgs",p))}},v["renderer.widgetbase"]);v("renderer.hbullet",{drawWidgetLabel:function(a){var e=
+this.options,c=e.chart,d=this.layers,b=this.paper,f=d.datalabels;a=a[0];var n=this.canvasWidth,g=this.canvasHeight,h=c.valuePadding,e=e.plotOptions.series.dataLabels.style,m={fontFamily:e.fontFamily,fontSize:e.fontSize,lineHeight:e.lineHeight,fontWeight:e.fontWeight,fontStyle:e.fontStyle};f||(f=d.datalabels=b.group("datalabels").insertAfter(d.dataset));d=n+h;void 0===a.y||isNaN(a.y)||a.displayValue===J||(a.dataLabel=b.text(d,g/2,a.displayValue,f).attr({"text-anchor":Ha[Wa],fill:e.color,direction:c.textDirection,
+"text-bound":[e.backgroundColor,e.borderColor,e.borderThickness,e.borderPadding,e.borderRadius,e.borderDash]}).css(m).tooltip(a.originalText))}},v["renderer.bullet"]);v("renderer.hlinear",{drawWidget:function(){var a=this.options,e=this.paper,c=this.logic,d=a.chart,b=a.scale,a=this.elements,f=this.layers.dataset,n=this.canvasWidth,g=this.canvasHeight,p=b.min,m=b.max,b=b&&b.trendPoint||[],k=d.colorRangeFillMix,l=d.colorRangeFillRatio,t=d.colorRangeBorderColor,r=d.colorRangeBorderAlpha,u=d.colorRangeBorderThickness,
+w=c.colorRangeGetter.getColorRangeArr(p,m),C=d.showShadow,F,x,v,z,A,B,D=this.pointOrientation={top:1,bottom:3},R=c.colorManager,G,M,J;a.linear||(a.linear=x=e.group("colorrange",f),a.outerRect=e.rect(x));a.outerRect.attr({x:0,y:0,width:n,height:g,stroke:"none",r:0});v=function(a,b){return{x:a*n/(m-p),y:0,width:(b-a)*n/(m-p),height:g}};a.colorRangeElems||(a.colorRangeElems=[]);c=0;for(F=w.length;c<F;c+=1)A=w[c],B=v(A.minvalue-p,A.maxvalue-p),A.x=B.x,A.y=B.y,A.width=B.width,A.height=B.height,z=A.code,
+z=L(Ba(q(A.bordercolor,z),t),h(A.borderalpha,r)),G=R.parseColorMix(A.code,k),M=R.parseAlphaList(A.alpha,G.length),A=h(A.borderAlpha,r),J=M.split(y),J=Ca.apply(Math,J),J=Ca(u&&A||0,J),a.colorRangeElems[c]||(a.colorRangeElems[c]=e.rect(x)),a.colorRangeElems[c].attr({x:B.x,y:B.y,width:B.width,height:B.height,r:0,"stroke-width":u,stroke:z,fill:X({FCcolor:{color:G.toString(),ratio:l,alpha:M,angle:270}})}).shadow({apply:C,opacity:J/100});for(;a.colorRangeElems[c];)a.colorRangeElems[c].remove(),a.colorRangeElems.splice(c,
+1);a.trendObjElems||(a.trendObjElems=[]);c=0;for(F=b.length;c<F;c+=1)k=b[c],B=v(k.startValue-p,k.endValue-p),k.isZone?(a.trendObjElems[c]||(a.trendObjElems[c]=e.rect(x)),a.trendObjElems[c].attr({x:B.x,y:B.y,width:0<B.width?B.width:0,height:0<B.height?B.height:0,r:0,"stroke-width":0,fill:X({FCcolor:{color:k.color,alpha:k.alpha}})}).tooltip(k.tooltext)):a.trendObjElems[c]=e.path(["M",B.x,B.y,"L",B.x,B.y+B.height],x).attr({stroke:L(k.color,k.alpha),"stroke-width":k.thickness,"stroke-dasharray":k.dashStyle}).tooltip(k.tooltext),
+k.useMarker&&(k.showOnTop?(t="bottom",l=0):(t="top",l=g),t=90*D[t],k.graphic=e.polypath(3,B.x,l,k.markerRadius,t,0,f).attr({fill:k.markerColor,stroke:k.markerBorderColor,"stroke-width":1}).shadow({apply:d.showShadow}).tooltip(k.tooltext));for(;a.trendObjElems[c];)a.trendObjElems[c].remove(),a.trendObjElems.splice(c,1)},drawWidgetValue:function(a,e){var c=a&&a.length||0,d=this.options.chart,b=this.pointOrientation,f={point:[],showPointerShadow:d.showPointerShadow},d=d.pointerOnOpp?"top":"bottom";for(this.dataById=
+{};c--;)f.point[c]={startAngle:90*b[d]};this.drawPointerValues(null,e,f)},drawPointerValues:function(a,e,c){var d=this;a=d.layers.dataset;var b=d.options,f=d.elements,n=d.paper,g=b.scale,p=b.series&&b.series[0]&&b.series[0].data||[],m=d.canvasWidth,k=d.canvasHeight,k=b.chart.pointerOnOpp?k:0,l=b.chart.showPointerShadow,b=!1!==b.tooltip.enabled,t=(g.max-g.min)/m,r=g.min,u=g.max,w=p.length,q,F,x,v,z={pageX:0,pageY:0},A=function(a){F=d.fusionCharts.getDataJSON();this.dragStartX=a},B=function(){var a,
+b=d.fusionCharts;(a=b&&b.jsVars)&&(a._rtLastUpdatedData=b.getDataJSON());qa.raiseEvent("RealTimeUpdateComplete",{data:"&value="+this.updatedValStr,updateObject:{values:[this.updatedValStr]},prevData:F.values,source:"editMode",url:null},b);try{ka.FC_ChartUpdated&&ka.FC_ChartUpdated(b.id)}catch(c){setTimeout(function(){throw c;},1)}this.graphic.tooltip(this.toolText)},D=function(a,b,c,e,f){a=Db&&(Db&&f.sourceEvent&&f.sourceEvent.touches&&f.sourceEvent.touches[0]||f)||z;b=h(this.y,g.min);e=b-(this.dragStartX-
+c)*t;var n=0,k=[];e<g.min?e=g.min:e>g.max&&(e=g.max);for(;n<this.index;n+=1)k.push("");k.push(e);b!==e&&d.realtimeUpdate({values:k},{duration:0})&&(this.updatedValStr=k.join("|"),this.dragStartX=c||f.pageX||a.pageX)},y,G,M,J,N,H;J=function(a){la.call(this,d,a)};N=function(a){var b=this.data("rolloverProperties");b.enabled&&(this.attr(b.hoverAttr),b.hoverAnimAttr&&this.animate(b.hoverAnimAttr,100,"easeIn"));la.call(this,d,a,"DataPlotRollOver")};for(H=function(a){var b=this.data("rolloverProperties");
+b.enabled&&(this.attr(b.outAttr),b.outAnimAttr&&this.animate(b.outAnimAttr,100,"easeIn"));la.call(this,d,a,"DataPlotRollOut")};w--;)q=p[w],G=q.rolloverProperties||{},v=c&&c.point[w]&&c.point[w].startAngle||q._startAngle,v+=.2,f.pointers||(f.pointers=[]),f.pointers[w]||(void 0!==q.id&&(d.dataById[q.id]={index:w,point:q}),x=l?{opacity:Math.max(q.bgalpha,q.borderalpha)/100}:!1,y=q.editMode?void 0:q.link,M={link:y,value:q.y,displayValue:q.displayValueArgs,toolText:q.toolText},q.graphic=f.pointers[w]=
+n.polypath(q.sides,0,k||0,q.radius,v,0,a).attr({fill:q.color,stroke:q.borderColor,ishot:!0,r:q.radius,"stroke-width":q.borderWidth}).shadow(!!x,x&&x.opacity).click(J).hover(N,H).data("eventArgs",M).data("rolloverProperties",G),y&&q.graphic.css({cursor:"pointer",_cursor:"hand"}),q._startAngle=v,q.editMode&&(q.index=w,q.graphic.css({cursor:"pointer",_cursor:"hand"}).attr({ishot:!0}),q.graphic.drag(D,A,B,q,q,q))),q.graphic=f.pointers[w],b&&q.graphic.tooltip(q.toolText),e&&e.duration?q.graphic.animate({polypath:[q.sides,
+m*(h(q.y,r)-r)/(u-r),k||0,q.radius,v,0]},e.duration,"easeIn"):q.graphic.attr({polypath:[q.sides,m*(h(q.y,r)-r)/(u-r),k||0,q.radius,v,0]})},drawWidgetLabel:function(a,e){var c=this.options,d=c.scale,b=this.layers,f=this.paper,n=c.chart,g=this.logic,b=b.datalabels||(b.datalabels=f.group("datalabels").insertAfter(b.dataset)),p=d.min,m=d.max,k=n.textDirection,l=g.colorRangeGetter.getColorRangeArr(p,m),g=g.numberFormatter,t=n.colorRangeStyle.style||{},r,u=this.canvasWidth,w=this.canvasHeight,C=n.marginRight,
+d=d&&d.trendPoint||[],F=n.pointerOnOpp,x=n.valueInsideGauge;r=n.showGaugeLabels;var v=c.plotOptions.series.dataLabels.style,z,A,B,D,y,G,M,E,N;E=!1;var c=this.smartLabel,H,K,T;T=h(parseInt(v.fontHeight,10),parseInt(v.lineHeight,10),12);var L=n.valuePadding+.5*T,n=n.valuePadding,O=L,Q,v={fontFamily:v.fontFamily,fontSize:v.fontSize,lineHeight:v.lineHeight,fontWeight:v.fontWeight,fontStyle:v.fontStyle},L=x===F?L-T/4:L+T/4;c.setStyle(v);K=c.getOriSize("W...").width;D=this.getPointerLabelXY=function(a,
+b,c,d,e){b=c?b?w-d-L:w+L:b?L:-(L+d);Q=(a-p)*u/(m-p);Q+e>u+C&&(Q=u-e+C);return{x:Q,y:b,align:"middle"}};y=function(a,b){return{x:(a-p+(b-a)/2)*u/(m-p),y:w/2,width:(b-a)*u/(m-p),height:w}};if(a&&a.length)for(v=a.length;v--;)if(B=a[v],0!==B.showvalue&&B.displayValue!==J&&(H=c.getOriSize(B.displayValue),B.setWidth&&(H=c.getSmartText(B.displayValue,B.setWidth,H.height,!0)),G=this.getPointerLabelXY(B.y,x,F,H.height/2,H.width/2),B.isLabelString)){E=!1;for(N=1;!E;){M=a[v+N];if(!M)break;M.isLabelString?E=
+!0:N+=1}M&&(E=c.getOriSize(M.displayValue),z=D(M.y,x,F,E.height/2),N=z.x-E.width/2-(G.x+H.width/2),z=z.x-G.x,0>N&&(A=H.width+N,A>z&&(B.setWidth=A=z),A>K?(G=B.setWidth&&B.setWidth<=A?c.getSmartText(B.displayValue,B.setWidth,H.height,!0):c.getSmartText(B.displayValue,A,H.height,!0),B.displayValue=G.text,G.tooltext&&(B.originalText=G.tooltext)):(G=c.getSmartText(B.displayValue,K,H.height,!0),B.displayValue=G.text,G.tooltext&&(B.originalText=G.tooltext),N=2*N+K-4),B.setWidth=null,A=E.width+N-4,M.setWidth=
+A>z?z:A>K?A:K));B.setWidth&&(G=c.getSmartText(B.displayValue,B.setWidth,H.height,!0),B.displayValue=G.text,G.tooltext&&(B.originalText=G.tooltext),B.setWidth=null)}this.drawPointerLabels(null,e);t=t||{};c.setStyle(t);if(l&&r)for(v=0,F=l.length;v<F;v+=1)r=l[v],x=q(r.label,r.name),ga(x)&&x!==J&&(G=y(r.minvalue,r.maxvalue),H=G.width-4>K&&G.height-4>T?c.getSmartText(x,G.width-4,G.height-4):c.getSmartText(x,G.width,G.height),f.text(b).attr({"text-anchor":Aa,"vertical-align":Aa,text:H.text,x:G.x,y:G.y,
+direction:k,fill:t.color}).css(t).tooltip(H.tooltext));if(d)for(v=0,F=d.length;v<F;v+=1){l=d[v];l.displayValue=q(l.displayValue,g.dataLabels(l.startValue));c.setStyle(l.style);T=c.getOriSize("Wg").height;H=c.getOriSize(l.displayValue);G=D(l.startValue,0,!l.showOnTop);l.setWidth&&(H=c.getSmartText(l.displayValue,l.setWidth,H.height,!0));E=!1;for(N=1;!E;){M=d[v+N];if(!M)break;M.showOnTop===l.showOnTop?E=!0:N+=1}M&&(E=c.getOriSize(M.displayValue),z=D(M.startValue,0,!M.showOnTop),N=z.x-E.width/2-(G.x+
+H.width/2),0>N&&(z=z.x-G.x,A=H.width+N,A>z&&(l.setWidth=A=z),A>K?(H=l.setWidth&&l.setWidth<=A?c.getSmartText(l.displayValue,l.setWidth,H.height,!0):c.getSmartText(l.displayValue,H.width+N-4,H.height,!0),l.displayValue=H.text,H.tooltext&&(l.originalText=H.tooltext)):(H=c.getSmartText(l.displayValue,K,H.height,!0),l.displayValue=H.text,H.tooltext&&(l.originalText=H.tooltext),N=2*N+K-4),l.setWidth=null,A=E.width+N-4,M.setWidth=A>z?z:A>K?A:K));l.setWidth&&(H=c.getSmartText(l.displayValue,l.setWidth,H.height,
+!0),l.displayValue=H.text,H.tooltext&&(l.originalText=H.tooltext),l.setWidth=null);T=l.showOnTop?-(n+H.height/2):w+O;t=l.isZone?y(l.startValue,l.endValue).x:G.x;l.dataLabel=f.text(0,T,l.displayValue,b).attr({"text-anchor":Ha[G.align],direction:k}).css(l.style).tooltip(l.originalText);l.dataLabel.attr({x:t})}},drawPointerLabels:function(a,e){for(var c=this.layers.datalabels,d=this.paper,b=this.options,f=b.chart,n=f.marginLeft,g=f.pointerOnOpp,h=f.valueInsideGauge,f=f.textDirection,m=this.smartLabel,
+k=b.series&&b.series[0]&&b.series[0].data||[],b=b.plotOptions.series.dataLabels.style,l=k.length,t={fontFamily:b.fontFamily,fontSize:b.fontSize,lineHeight:b.lineHeight,fontWeight:b.fontWeight,fontStyle:b.fontStyle},r,u,q,C;l--;)u=k[l],r=u.displayValue,0!==u.showvalue&&r!==J&&(m.setStyle(t),C=m.getOriSize(r),q=this.getPointerLabelXY(u.y,h,g,C.height/2,C.width/2),u.dataLabel?u.dataLabel.attr({text:r,title:u.originalText||""}):u.dataLabel=d.text(c).attr({"text-anchor":Ha[q.align],text:r,x:0,y:q.y,fill:b.color,
+direction:f,"text-bound":[b.backgroundColor,b.borderColor,b.borderThickness,b.borderPadding,b.borderRadius,b.borderDash]}).css(t).tooltip(u.originalText),q.x+n<C.width/2&&(q.x=C.width/2-n),e&&e.duration?u.dataLabel.animate({x:q.x},e.duration,"easeIn"):u.dataLabel.attr({x:q.x}))},realtimeUpdate:function(a,e){if(a===this.lastUpdatedObj)return!1;var c=this.options,d=c[U],b=c.series,f=this.numberFormatter,b=b&&b[0]&&b[0].data,n=a.values||[],g=a.labels||[],h=a.toolTexts||[],m=a.showLabels||[],k=b&&b.length||
+0,l,t,r=null,u=[],w;e=e||c.plotOptions.series.animation;if(k){for(;k--;)c={},w={},l=b[k],void 0!==n[k]&&""!==n[k]?(c.value=w.value=n[k],r=w.displayvalue=w.tooltext=f.dataLabels(w.value),w.hasNewData=!0):w.value=l.y,g[k]&&(w.displayvalue=g[k],w.hasNewData=!0),"0"==m[k]&&(w.displayvalue=J,w.hasNewData=!0),t=E(ca(q(l._tooltext,d.tooltext))),h[k]&&(t=E(ca(h[k])),w.hasNewData=!0),w.hasNewData&&(u[k]=w,Y(l,{y:w.value,displayValue:l.displayValue||"1"==m[k]?w.displayvalue:J,toolText:void 0!==t?ab(t,[1,2],
+{formattedValue:r},c):r}));u.length&&(this.lastUpdatedObj=a,this.drawPointerValues(b,e),this.drawPointerLabels(b,e));return Boolean(u.length)}}},v["renderer.widgetbase"]);v("renderer.angular",{drawWidget:function(){var a=this.options,e=a.chart,c=a.scale,d=a.series[0],a=this.paper,b=this.elements,f=this.layers.dataset,n=d.gaugeOuterRadius,g=d.gaugeInnerRadius,p=d.gaugeFillRatio,m=e.gaugeBorderColor,k=e.gaugeBorderThickness,l=e.gaugeBorderAlpha,t=d.gaugeFillMix,r=d.gaugeOriginX,u=d.gaugeOriginY,w=e.gaugeStartAngle,
+C=e.gaugeEndAngle,F=e.showShadow,e=e.textDirection,x=c.min,v=c.max,z=this.logic,A=z.colorRangeGetter.getColorRangeArr(x,v),B=0,D=A.length,R=v-x,C=C-w,G,M,E=w,N=Math.cos(w),H=Math.sin(w),K=r+n*N;M=u+n*H;var N=r+g*N,H=u+g*H,T,c=c.trendPoint,I,O=this.smartLabel;b.trendPointGroup||(b.trendPointGroup=a.group("trendpoint",f));for(;B<D;B+=1)G=A[B],M=w+(Math.min(G.maxvalue,v)-x)/R*C,N=z.parseColorMix(G.code,t),H=z.parseAlphaList(G.alpha,N.length),K=z.parseRatioList(g/n*100+p,N.length),I=G.bordercolor,T=h(G.borderAlpha,
+l),I=I&&-1==I.indexOf("{")?L(I,T):z.parseColorMix(G.code,q(I,m))[0],I=L(I,T),G=H.split(y),G=Ca.apply(Math,G),G=F?Ca(k&&T||0,G):0,T=M,E>M&&(E+=M,M=E-M,E-=M),a.ringpath(r,u,n,g,E,M,f).attr({fill:X({FCcolor:{cx:r,cy:u,r:n,gradientUnits:"userSpaceOnUse",color:N.join(),alpha:H,ratio:K,radialGradient:!0}}),"stroke-width":k,stroke:I}).shadow({apply:F,opacity:G/100}),E=T;b.tickMarkGroup||(b.tickMarkGroup=a.group("tickmark",f));b.trendMarkerGroup||(b.trendMarkerGroup=a.group("trendmarker",f));b.pointGroup||
+(b.pointGroup=a.group("pointers",f).translate(r,u));b.pivot||(b.pivot=a.circle(f));b.pivot.attr({cx:r,cy:u,r:d.pivotRadius,fill:X({FCcolor:d.isRadialGradient?{color:d.pivotFillColor,alpha:d.pivotFillAlpha,ratio:d.pivotFillRatio,radialGradient:!0,angle:d.pivotFillAngle,cx:.5,cy:.5,r:"50%"}:{color:d.pivotFillColor,alpha:d.pivotFillAlpha,ratio:d.pivotFillRatio,radialGradient:!1,angle:d.pivotFillAngle}}),"stroke-width":d.pivotBorderThickness,stroke:d.pivotBorderColor}).shadow({apply:F});f=Math.cos(89.99*
+hb);p=-f;B=0;for(D=c.length;B<D;B+=1)d=c[B],F=d.isZone,t=w+(d.startValue-x)/R*C,m=h(d.radius,n),k=h(d.innerRadius,F?Math.max(g-15,0):g),l=h(d.trendValueDistance,0),N=Math.cos(t),H=Math.sin(t),K=r+m*N,M=u+m*H,N=r+k*N,H=u+k*H,F?(H=w+(d.endValue-x)/R*C,t>H&&(t+=H,H=t-H,t-=H),d.graphic=a.ringpath(r,u,m,k,t,H,b.trendPointGroup).attr({fill:L(d.color,d.alpha),"stroke-width":d.showBorder?d.thickness:0,stroke:d.borderColor,"stroke-dasharray":d.dashStyle})):d.graphic=a.path(["M",K,M,"L",N,H],b.tickMarkGroup).attr({"stroke-width":d.showBorder?
+d.thickness:0,stroke:d.borderColor,"stroke-linecap":"round","stroke-dasharray":d.dashStyle}),d.useMarker&&(d.markerElement=a.polypath("3",K,M,d.markerRadius,(-t+Math.PI)/hb,0,b.trendMarkerGroup).attr({fill:d.markerColor,"stroke-width":1,stroke:d.markerBorderColor}),""!==d.markerToolText&&d.markerElement.tooltip(d.markerToolText)),d.displayValue!==J&&(M=(d.endValue+d.startValue)/2,H=w+(M-x)/R*C,N=Math.cos(H),H=Math.sin(H),t=O.getSmartText(d.displayValue).width,M=d.valueInside?k-2-l:m+2+l,K=r+M*N,M=
+u+M*H,m=O.getSmartText(d.displayValue).height,m=O.getSmartText(d.displayValue,this.canvasWidth,m),K=this.canvasWidth<K+t?this.canvasWidth-t/2:K<t?t/2:K,t>this.canvasWidth&&(K=this.canvasWidth/2),k=d.style,d.textElement=a.text(b.trendMarkerGroup).attr({x:K,y:M,text:m.text,direction:e,"text-anchor":Va,"vertical-align":cb}).css(k).tooltip(m.oriText),K=d.textElement.getBBox(),K=K.height,M=N>f||N<p?M+(-(K/2)+.4*K*H*(d.valueInside?-1:1)):d.valueInside?M+-(0>H?0:K):M+-(0<H?0:K),d.textElement.attr({y:M}))},
+drawWidgetValue:function(a,e){var c=this,d=c.options,b=d.chart,f=d.scale,n=d.series[0],g=c.paper,p=c.elements,m=Number(n.gaugeOriginX),k=Number(n.gaugeOriginY),l=b.gaugeStartAngle,t=b.gaugeEndAngle,b=b.showShadow,d=!1!==d.tooltip.enabled,r=f.min,u=f.max,q=p.pointGroup,C=u-r,F=t-l,x=C/F,v=0,z,A,B,D,y,G,M,J=a&&a.length,N,H=ec(l,t),K=bc(c.container),E=function(a,b){var d;d=[m,k];d=Mb(d[1]-b+K.top,d[0]-a+K.left);c.rotationStartAngle=d;N=c.fusionCharts.getDataJSON()},L=function(){var a=c.fusionCharts,
+b;(b=a&&a.jsVars)&&(b._rtLastUpdatedData=a.getDataJSON());qa.raiseEvent("RealTimeUpdateComplete",{data:"&value="+this.updatedValStr,updateObject:{values:[this.updatedValStr]},prevData:N.values,source:"editMode",url:null},a);try{ka.FC_ChartUpdated&&ka.FC_ChartUpdated(a.id)}catch(d){setTimeout(function(){throw d;},1)}},O=function(a,b,d,e){a=[m,k];d=Mb(a[1]-e+K.top,a[0]-d+K.left);e=c.rotationStartAngle;var g;e=0>d&&0<e?Bb(d)-c.rotationStartAngle:0<d&&0>e?Bb(c.rotationStartAngle)-d:c.rotationStartAngle-
+d;e=this.y-e*x;a=[];b=0;g=this.index;e<f.min?e=f.min:e>f.max&&(e=f.max);for(;b<g;b+=1)a.push("");a.push(e);e!==this.value&&c.realtimeUpdate({values:a},{duration:0})&&(this.updatedValStr=a.join("|"),c.rotationStartAngle=d)},Q,I,U,P,X,ba,sa,Z,aa,ea;void 0===c.dataById&&(c.dataById={});p.pointers||(p.pointers=[]);Z=function(a){la.call(this,c,a)};aa=function(a){var b=this.data("rolloverProperties");la.call(this,c,a,"DataPlotRollOver");b.enabled&&(a=this.attr("transform"),this.attr("transform",""),this.attr(b.hoverAttr),
+this.attr("transform",a))};for(ea=function(a){var b=this.data("rolloverProperties");la.call(this,c,a,"DataPlotRollOut");b.enabled&&(a=this.attr("transform"),this.attr("transform",""),this.attr(b.outAttr),this.attr("transform",a))};v<J;v+=1)t=a[v],I=t.rolloverProperties||{},ga(t.y)||(t.y=r,ga(t.toolText)||(t.toolText=r)," "===t.displayValue&&(t.displayValue=r)),void 0!==t.id&&(c.dataById[t.id]={index:v,point:t}),t.index=v,z=h(t.radius,(Number(n.gaugeOuterRadius)+Number(n.gaugeInnerRadius))/2),A=t.baseWidth,
+G=A/2,B=t.topWidth,M=B/2,y=t.rearExtension,D=t.baseRadius,t.tooltipPos=[m,k],p.pointers[v]?D=p.pointers[v]:(Q=t.editMode?void 0:t.link,U=["M",z,-M,"L",z,M,-y,G,-y,-G,"Z"],I.hasHoverSizeChange&&(I.outAttr.path=U,P=h(I.hoverRadius,z),X=I.baseHoverWidth,X/=2,ba=I.topHoverWidth,ba/=2,sa=I.rearHoverExtension,I.hoverAttr.path=["M",P,-ba,"L",P,ba,-sa,X,-sa,-X,"Z"]),Q={link:Q,value:t.y,displayValue:t.displayValueArgs,toolText:t.toolText},p.pointers[v]=B?g.path(U,q):g.trianglepath(z,M,-y,G,-y,-G,0,D,D,q),
+t.graphic=D=p.pointers[v],t.graphic.attr({fill:t.color,stroke:t.borderColor,ishot:!0,"stroke-width":t.borderThickness}).click(Z).hover(aa,ea).data("eventArgs",Q).data("rolloverProperties",I),(A||B||t.borderThickness)&&t.graphic.shadow({apply:b}),D._attr=D.attr,D.attr=H,D._Attr={tooltipPos:t.tooltipPos,cx:m,cy:k,toolTipRadius:z-y,color:t.color},z=l/hb,D.attr({angle:z}),t.editMode&&(t.index=v,t.graphic.css({cursor:"pointer",_cursor:"hand"}).attr({ishot:!0}),t.graphic.drag(O,E,L,t,t,t))),t.y>=r&&t.y<=
+u&&(z=(t.y-r)/C*F,z=(l+z)/hb,D.attr({angle:z},null,e),d&&D.tooltip(t.toolText))},drawWidgetLabel:function(a){var e=this.paper,c=this.layers,d=c.datalabels,b=this.options,f=b.series[0],n=b.plotOptions.series.dataLabels.style,g=f.pivotRadius,p=h(parseInt(n.lineHeight,10),12),m=f.valueBelowPivot,k=f.gaugeOriginX,l=b.chart.textDirection,t={fontFamily:n.fontFamily,fontSize:n.fontSize,lineHeight:n.lineHeight,fontWeight:n.fontWeight,fontStyle:n.fontStyle},r,u,q,C=f.gaugeOriginY+(m?p/2+g+2:-(p/2)-g-2);d||
+(d=c.datalabels=e.group("datalabels").insertAfter(c.dataset));dc(a,function(a,b){r=a.displayValue;q=a.valueY;u=h(a.valueX,k);ga(q)||(q=m?C+p*b:C-p*b);ga(r)&&r!==J&&(a.dataLabel?a.dataLabel.attr({text:r,title:a.originalText||""}):a.dataLabel=e.text(d).attr({x:u,y:q,text:r,"text-anchor":Ha[Va],direction:l,fill:n.color,"text-bound":[n.backgroundColor,n.borderColor,n.borderThickness,n.borderPadding,n.borderRadius,n.borderDash]}).css(t).tooltip(a.originalText))})},drawScale:function(){var a=this.options,
+e=a.chart,c=a.scale,d=this.paper,b=this.elements,f=a.series[0],a=Number(f.gaugeOriginX),n=Number(f.gaugeOriginY),g=e.gaugeStartAngle,p=c.min,m=e.textDirection,k=Number(f.gaugeInnerRadius),l=Number(f.gaugeOuterRadius),f=c.max-p,e=e.gaugeEndAngle-g,t=0,r=c.majorTM,u=c.minorTM,q=b.tickMarkGroup,C,F,x,v,z,A,B=Math.cos,D=Math.sin,y=Number(c.minorTMHeight),G=Number(c.majorTMHeight),M=c.placeTicksInside,t=c.placeValuesInside;z=c.tickValueDistance;var J,N,H=c.limitValues.style,K=c.tickValues.style,E=.75*
+h(parseInt(H.lineHeight,10),12),I=.75*h(parseInt(K.lineHeight,10),12);M?(M=k,y=M+y,G=M+G):(M=l,y=M-y,G=M-G);J=t?k-z:l+z;b.majorTM||(b.majorTM=[]);b.tmLabel||(b.tmLabel=[]);t=0;for(k=r.length;t<k;t+=1)l=r[t],C=l.value,z=l.displayValue,A=(C-p)*e/f+g,N=B(A),A=D(A),C=a+M*N,F=n+M*A,x=a+G*N,v=n+G*A,b.majorTM[t]=d.path(["M",C,F,"L",x,v],q).attr({stroke:L(c.majorTMColor,c.majorTMAlpha),"stroke-width":c.majorTMThickness,"stroke-linecap":"round"}),""!==z&&(0===t||t===k-1?(x=H,F=n+J*A+(l.y||0)-E):(x=K,F=n+J*
+A+(l.y||0)-I),C=a+J*N+(l.x||0),b.tmLabel[t]=d.text(C,F,z,q).attr({"text-anchor":Ha[l.align||Va],direction:m,"vertical-align":cb}).css(x).tooltip(l.originalText));b.minorTM||(b.minorTM=[]);t=0;for(k=u.length;t<k;t+=1)C=u[t],A=(C-p)*e/f+g,C=a+M*B(A),F=n+M*D(A),x=a+y*B(A),v=n+y*D(A),b.minorTM[t]=d.path(["M",C,F,"L",x,v],q).attr({stroke:L(c.minorTMColor,c.minorTMAlpha),"stroke-width":c.minorTMThickness,"stroke-linecap":"round"})},realtimeUpdate:function(a,e){if(a===this.lastUpdatedObj)return!1;var c=
+this.options,d=c[U],b=c.series,f=this.numberFormatter,b=b&&b[0]&&b[0].data,n=a.values||[],g=a.labels||[],h=a.toolTexts||[],m=a.showLabels||[],k=b&&b.length||0,l,t,r=null,u=[],w,C;e=e||c.plotOptions.series.animation;if(k){for(;k--;)w={},c={},C=!1,l=b[k],t=l.id&&(l.id.toLowerCase&&l.id.toLowerCase()||l.id),void 0!==n[k]&&""!==n[k]&&(C=!0)||t&&a[t]?(c.value=w.value=C?n[k]:a[t],r=w.displayvalue=w.tooltext=f.dataLabels(w.value),w.hasNewData=!0):w.value=l.y,g[k]&&(w.displayvalue=g[k],w.hasNewData=!0),"0"==
+m[k]&&(w.displayvalue=J,w.hasNewData=!0),t=E(ca(q(l._tooltext,d.tooltext))),h[k]&&(t=E(ca(h[k])),w.hasNewData=!0),w.hasNewData&&(u[k]=w,Y(l,{y:w.value,displayValue:l.displayValue||"1"===m[k]?w.displayvalue:J,toolText:void 0!==t?ab(t,[1,2],{formattedValue:r},c):r}));u.length&&(this.lastUpdatedObj=a,this.drawWidgetValue(b,e),this.drawWidgetLabel(b,e));return Boolean(u.length)}}},v["renderer.widgetbase"]);v("renderer.funnel",{type:"funnel",pyramidFunnelShape:function(){var a={y:!0,R1:!0,R2:!0,h:!0,r3dFactor:!0,
+color:!0,opacity:!0,fill:!0,stroke:!0,strokeColor:!0,strokeAlpha:!0,"stroke-width":!0},e=function(a,c,d,e,h,m,k,l,t,r,u){qb(a)&&(c=a.y,d=a.R1,e=a.R2,h=a.h,m=a.r3dFactor,k=a.is2D,r=a.isHollow,t=a.isFunnel,a=a.x);l=a-d;u=a+d;var q=a-e,C=a+e,v=c+h,x,y;if(k)x={silhuette:["M",l,c,"L",u,c,C,v,q,v,"Z"]},t||(a=Math.round(a),x.lighterHalf=["M",l,c,"L",a,c,a,v,q,v,"Z"],x.darkerHalf=["M",a,c,"L",u,c,C,v,a,v,"Z"]);else if(t){q=a;C=c;c=d||.01;u=e||.01;a=r;l=c*m;m*=u;h=C+h;v=ia(u,2)-ia(c,2);d=-2*(ia(u,2)*C-ia(c,
+2)*h);e=ia(c*m,2)+ia(u*C,2)-ia(u*l,2)-ia(c*h,2);r=pb(ia(d,2)-4*v*e);e=(-d+r)/(2*v);v=(-d-r)/(2*v);e<h&&e>C?y=v:v<h&&v>C&&(y=e);e=pb((ia(y-C,2)-ia(l,2))/ia(c,2));d=-e;v={x:ha(ia(c,2)*e/(y-C)*100)/100,y:ha(100*(ia(l,2)/(y-C)+C))/100};e={x:ha(ia(u,2)*e/(y-h)*100)/100,y:ha(100*(ia(m,2)/(y-h)+h))/100};r={x:ha(ia(c,2)*d/(y-C)*100)/100,y:ha(100*(ia(l,2)/(y-C)+C))/100};y={x:ha(ia(u,2)*d/(y-h)*100)/100,y:ha(100*(ia(m,2)/(y-h)+h))/100};v={topLeft:r,bottomLeft:y,topRight:v,bottomRight:e};for(x in v)if(isNaN(v[x].x)||
+isNaN(v[x].y))v[x].x="topLeft"===x||"bottomLeft"===x?-c:c,v[x].y="bottomRight"===x||"bottomLeft"===x?h:C;h=v.topLeft;d=v.bottomLeft;x=q+h.x;y=q+v.topRight.x;C=q+d.x;q+=v.bottomRight.x;h=h.y;d=d.y;v=["A",c,l,0,0,0,y,h];e=["A",c,l,0,1,1,y,h];r=["A",u,m,0,0,1,C,d];u=["A",u,m,0,1,0,C,d];u={front:["M",x,h].concat(v,["L",q,d],r,["Z"]),back:["M",x,h].concat(e,["L",q,d],u,["Z"]),silhuette:["M",x,h].concat(e,["L",q,d],r,["Z"])};a||(u.top=["M",x,h].concat(v,["L",y,h],["A",c,l,0,1,0,x,h],["Z"]));x=u}else x=
+d*m,y=e*m,h=La(5,d),d=La(2,2*x),e=La(2,d),m=e/m,x={top:["M",l,c,"L",a,c+x,u,c,a,c-x,"Z"],front:["M",l,c,"L",a,c+x,u,c,C,v,a,v+y,q,v,"Z"],topLight:["M",l,c+.5,"L",a,c+x+.5,a,c+x-d,l+m,c,"Z"],topLight1:["M",u,c+.5,"L",a,c+x+.5,a,c+x-e,u-m,c,"Z"],silhuette:["M",l,c,"L",a,c-x,u,c,C,v,a,v+y,q,v,"Z"],centerLight:["M",a,c+x,"L",a,v+y,a-5,v+y,a-h,c+x,"Z"],centerLight1:["M",a,c+x,"L",a,v+y,a+5,v+y,a+h,c+x,"Z"]};return x},c=function(b,c){var d,g,p=this,m,k,l=!1,t=!1,r=this._3dAttr,q;bb(b)&&ga(c)&&(d=b,b={},
+b[d]=c);if(bb(b))p=a[b]?this._3dAttr[b]:this._attr(b);else{for(d in b)g=b[d],a[d]?(r[d]=g,"fill"===d?(g&&g.linearGradient&&g.stops&&g.stops[0]&&(g=g.stops[0][1]),yb.test(g)?(k=new sb(g),m=k.get("hex"),k=100*k.get("a")):g&&g.FCcolor?(m=g.FCcolor.color.split(y)[0],k=g.FCcolor.opacity.split(y)[0]):vb.test(g)&&(m=g.replace(ib,nb),k=h(r.opacity,100)),r.color=m,r.opacity=k,t=!0):"color"===d||"opacity"===d?(r.fill=X(L(r.color,h(r.opacity,100))),t=!0):"stroke"===d||"strokeColor"===d||"strokeAlpha"===d?r.is2D&&
+("stroke"===d?(g&&g.linearGradient&&g.stops&&g.stops[0]&&(g=g.stops[0][1]),yb.test(g)?(k=new sb(g),m=k.get("hex"),k=100*k.get("a")):g&&g.FCcolor?(m=g.FCcolor.color.split(y)[0],k=g.FCcolor.opacity.split(y)[0]):vb.test(g)&&(m=g.replace(ib,nb),k=h(r.opacity,100)),r.strokeColor=m,r.strokeAlpha=k):r.stroke=L(r.strokeColor,h(r.strokeAlpha,100)),r.isFunnel?this.funnel2D.attr("stroke",r.stroke):this.borderElement.attr("stroke",r.stroke)):"stroke-width"===d?r.is2D&&(r.isFunnel?this.funnel2D.attr(d,g):this.borderElement.attr(d,
+g)):l=!0):this._attr(d,g);r.is2D?(l&&(m=e(r.x,r.y,r.R1,r.R2,r.h,r.r3dFactor,r.is2D),p.shadowElement.attr({path:m.silhuette}),r.isFunnel?p.funnel2D.attr({path:m.silhuette}):(p.lighterHalf.attr({path:m.lighterHalf}),p.darkerHalf.attr({path:m.darkerHalf}),p.borderElement.attr({path:m.silhuette}))),t&&(r.isFunnel?p.funnel2D.attr("fill",X(L(r.color,h(r.opacity,100)))):(!1===r.use3DLighting?m=k=r.color:(m=na(r.color,80),k=da(r.color,80)),p.lighterHalf.attr("fill",X(L(k,h(r.opacity,100)))),p.darkerHalf.attr("fill",
+X(L(m,h(r.opacity,100))))))):(l&&(m=e(r.x,r.y,r.R1,r.R2,r.h,r.r3dFactor,r.is2D),p.shadowElement.attr("path",m.silhuette),r.isFunnel?(p.front.attr("path",m.front),p.back.attr("path",m.back),p.toptop&&m.top&&p.toptop.attr("path",m.top)):(p.front.attr("path",m.front),p.toptop.attr("path",m.top),p.topLight.attr("path",m.topLight),p.topLight1.attr("path",m.topLight1),p.centerLight.attr("path",m.centerLight),p.centerLight1.attr("path",m.centerLight1))),t&&(m=r.color,k=r.opacity,r.isFunnel?(t=da(m,60),l=
+na(m,60),p.back.attr("fill",X({FCcolor:{color:l+y+t+y+m,alpha:k+y+k+y+k,ratio:"0,60,40",angle:0}})),p.front.attr("fill",X({FCcolor:{color:m+y+t+y+l,alpha:k+y+k+y+k,ratio:"0,40,60",angle:0}})),p.toptop&&p.toptop.attr("fill",X({FCcolor:{color:t+y+l,alpha:k+y+k,ratio:"0,100",angle:-65}}))):(t=da(m,80),d=da(m,70),l=na(m,80),g="0,"+k,q=m+y+d,r=5/(r.R1*r.r3dFactor)*100,p.centerLight.attr("fill",X({FCcolor:{color:q,alpha:g,ratio:"0,100",angle:0}})),p.centerLight1.attr("fill",X({FCcolor:{color:q,alpha:g,
+ratio:"0,100",angle:180}})),p.topLight.attr("fill",X({FCcolor:{color:d+y+d+y+m+y+m,alpha:k+y+k+y+0+y+0,ratio:"0,50,"+r+y+(50-r),angle:-45}})),p.topLight1.attr("fill",X({FCcolor:{color:d+y+m+y+l,alpha:k+y+k+y+k,ratio:"0,50,50",angle:0}})),p.front.attr("fill",X({FCcolor:{color:m+y+m+y+l+y+l,alpha:k+y+k+y+k+y+k,ratio:"0,50,0,50",angle:0}})),p.toptop.attr("fill",X({FCcolor:{color:t+y+m+y+l+y+l,alpha:k+y+k+y+k+y+k,ratio:"0,25,30,45",angle:-45}})))))}return p},d=function(){var a=this.shadowElement;d&&a.shadow.apply(a,
+arguments)};return function(a,f,n,g,p,m,k,l,t,r,q,w){var v=this.layers.dataset;qb(a)&&(f=a.y,n=a.R1,g=a.R2,p=a.h,m=a.r3dFactor,k=a.gStr,l=a.is2D,w=a.use3DLighting,t=a.renderer,q=a.isHollow,r=a.isFunnel,a=a.x);m=h(m,.15);a={x:a,y:f,R1:n,R2:g,h:p,r3dFactor:m,is2D:l,use3DLighting:w,isHollow:q,isFunnel:r,renderer:t};f=e(a);k=t.group(k,v);k.Shapeargs=f;k.shadowElement=t.path(f.silhuette,k).attr({fill:ra,stroke:"none"});k._attr=k.attr;k.attr=c;k.shadow=d;k._3dAttr=a;r?l?k.funnel2D=t.path(f.silhuette,k):
+(k.back=t.path(f.back,k).attr({"stroke-width":0,stroke:"none"}),k.front=t.path(f.front,k).attr({"stroke-width":0,stroke:"none"}),f.top&&(k.toptop=t.path(f.top,k).attr({"stroke-width":0,stroke:"none"}))):l?(k.lighterHalf=t.path(f.lighterHalf,k).attr({"stroke-width":0}),k.darkerHalf=t.path(f.darkerHalf,k).attr({"stroke-width":0}),k.borderElement=t.path(f.silhuette,k).attr({fill:ra,stroke:"none"})):(k.front=t.path(f.front,k).attr({"stroke-width":0}),k.centerLight=t.path(f.centerLight,k).attr({"stroke-width":0}),
+k.centerLight1=t.path(f.centerLight1,k).attr({"stroke-width":0}),k.toptop=t.path(f.top,k).attr({"stroke-width":0}),k.topLight=t.path(f.topLight,k).attr({"stroke-width":0}),k.topLight1=t.path(f.topLight1,k).attr({"stroke-width":0}));return k}}(),getPlotData:function(a){var e=this.datasets[0],c=e.data[a],d=e.userData||(e.userData=[]),e="y name color alpha borderColor borderWidth link displayValue datasetIndex toolText".split(" "),b;if(d[a])a=d[a];else{a=d[a]={};for(d=0;d<e.length;d++)a[b=e[d]]=c[b];
+a.value=a.y;a.label=a.name;delete a.y;delete a.name}return a},translate:function(){function a(){var b=[],c=0;this.set=function(a,d){c++;b[a]=d};this.get=function(a){return b[a]};this.getAll=function(){return b};this.mergeWith=function(c){var d,e,f=b.slice(0);if(!(c instanceof Array))if(c instanceof a)c=c.getAll();else return;for(d in c)e=c[d],f[d]||(f[d]=e);return f};this.getEffectiveLength=function(){return c}}function e(a){this.distributionLength=a;this.distributedMatrix=[];this.altDistributedMatrix=
+[];this.nonDistributedMatrix={};this.forcePushObj={};this.flags={exhaustion:!1}}function c(a,c){var e,f,h,m=!1,p=0,r;e={flag:!1,point:void 0,sLabel:void 0,setAll:function(a,b,c){this.flag=a;this.point=b;this.sLabel=c}};var t={point:void 0,sLabel:void 0,set:function(a,b){return function(c,d){var e,f;c.dontPlot||(this.point&&this.sLabel?(e=a(this.point,this.sLabel),f=a(c,d),b(e,f)&&(this.point=c,this.sLabel=d)):(this.point=c,this.sLabel=d))}}},P={},aa={},S={},Z={};qa.extend(P,e);qa.extend(aa,e);P.setAll=
+function(a,b,c){var d=this.point,e=this.sLabel;this.flag=a;d&&e?(a=d.labelX-(e.oriTextWidth-e.width),d=b.labelX-(c.oriTextWidth-c.width),a>d&&(this.point=b,this.sLabel=c)):(this.point=b,this.sLabel=c)};aa.setAll=function(a,b,c){var d=this.point,e=this.sLabel;this.flag=a;d&&e?(a=d.labelX+e.oriTextWidth,d=b.labelX+c.oriTextWidth,a<d&&(this.point=b,this.sLabel=c)):(this.point=b,this.sLabel=c)};qa.extend(S,t);qa.extend(Z,t);S.set=function(){return t.set.apply(S,[function(a){return a.labelX},function(a,
+b){return a>b?!0:!1}])}();Z.set=function(){return t.set.apply(Z,[function(a,b){return a.labelX+b.oriTextWidth},function(a,b){return a<b?!0:!1}])}();e=0;for(f=a.length;e<f;e++)if(h=a[e])(h.x=e)?(c&&(m=!m),h.isSliced&&(H=h.x,1<H&&!G[H]&&(G[H]=!0,K+=1),H<l&&(G[H+1]=!0,K+=1)),M?(y=1==n.useSameSlantAngle?q?k*h.y/q:k:q?k*pb(h.y/q):k,x=w*(g[e-1].y-h.y)||1):(D+=x=w*g[e].y,y=k*(1-D*N)),h.shapeArgs={x:I,y:J,R1:v,R2:y,h:x||1,r3dFactor:z,isHollow:A,gStr:"point",is2D:B,renderer:R,isFunnel:!0},b.smartLabel.setStyle(h.style),
+h.oriText=h.displayValue,r=r=b.smartLabel.getSmartText(h.displayValue,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),L?(h.labelAline="middle",h.labelX=I,h.labelY=(B?J:J+z*v)+x/2+O):(h.labelAline="start",(h.alignmentSwitch=m)?(h.labelX=I-(E+y+3+r.width),S.set(h,r)):(h.labelX=I+E+y+3,Z.set(h,r)),h.distributionFactor=h.distributionFactor||0,p=h.distributionFactor*Q,h.labelY=J+O+x+p),c&&(m&&0>h.labelX?(p=h.labelX+r.width,p=b.smartLabel.getSmartText(h.displayValue,p,Number.POSITIVE_INFINITY,!0),h.labelX=
+2,h.isLabelTruncated=!0,h.displayValue=p.text,h.virtualWidth=p.maxWidth,P.setAll(!0,h,p)):!m&&h.labelX+r.width>b.chartWidth&&(p=b.smartLabel.getSmartText(h.displayValue,b.chartWidth-h.labelX,Number.POSITIVE_INFINITY,!0),h.isLabelTruncated=!0,h.displayValue=p.text,h.virtualWidth=p.maxWidth,aa.setAll(!0,h,p))),h.pWidth=h.virtualWidth=h.virtualWidth||r.width,J+=x,v=y):(h.oriText=h.displayValue,y=1==n.useSameSlantAngle?q?k*g[0].y/q:k:q?k*pb(g[0].y/q):k,h.labelWidht>2*y&&!c?(h.labelAline="start",h.labelX=
+0):(h.labelAline="middle",h.labelX=I),r=2*E,h.displayValue=b.smartLabel.getSmartText(h.displayValue,2*y+r,Number.POSITIVE_INFINITY,!0).text,h.labelY=(B?J:J-z*v)-O-3),h.plotX=I,h.plotY=J;d(a,{lTrimmedInfo:P,rTrimmedInfo:aa,lLargestLabel:S,rLargestLabel:Z})}function d(a,c){var d=0,e=c.lTrimmedInfo,f=c.rTrimmedInfo,g=c.lLargestLabel,h=c.rLargestLabel,k=0;if(!e.flag||!f.flag){if(f.flag){if(!g.point)return;d=f.sLabel;d=d.oriTextWidth-d.width;g=g.point.labelX-3;d=-Math.ceil(Math.min(d,g))}else if(e.flag){if(!h.point)return;
+d=e.sLabel;d=d.oriTextWidth-d.width;g=aa-(h.point.labelX+h.sLabel.width);d=Math.ceil(Math.min(d,g))}if(d)for(h=0,e=a.length;h<e;h++)g=a[h],!h&&M?g.labelX+=d:(g.alignmentSwitch?(f=0>d?b.smartLabel.getSmartText(g.oriText,g.pWidth,Number.POSITIVE_INFINITY,!0):b.smartLabel.getSmartText(g.oriText,g.pWidth+d,Number.POSITIVE_INFINITY,!0),g.isLabelTruncated&&(k=f.width-g.pWidth)):f=0<d?b.smartLabel.getSmartText(g.oriText,g.pWidth,Number.POSITIVE_INFINITY,!0):b.smartLabel.getSmartText(g.oriText,g.pWidth-d,
+Number.POSITIVE_INFINITY,!0),g.virtualWidth=f.width,g.displayValue=f.text,g.labelX+=d-k,g.shapeArgs&&(g.shapeArgs.x+=d),k=0);else for(h=0,e=a.length;h<e;h++)g=a[h],0<(k=g.labelX+g.pWidth-aa)&&(g.lOverflow=k,g.labelX-=k,b.isLegendRight?g.displayValue=b.smartLabel.getSmartText(g.oriText,g.pWidth-k,Number.POSITIVE_INFINITY,!0).text:(g.lOverflow=k,g.labelX-=k))}}var b=this,f=b.options,n=b.datasets[0],g=n.data,p=b.canvasWidth,m=b.canvasHeight,k=p/2,l=g.length-1,t=g[0],r=t&&g[l].y,q=t&&g[0].y,w,v,y,x,J=
+b.canvasTop,z=n.yScale,A=n.isHollow,B=n.is2d,D=0,R=b.paper,G={},M=n.streamlinedData,E=n.labelDistance,N=.8/m,H,K=0,I=k+b.canvasLeft,L=n.showLabelsAtCenter,O=.3*h(parseInt(f.plotOptions.series.dataLabels.style.fontSize,10),10),Q=Number(b.options.plotOptions.series.dataLabels.style.lineHeight.split(/px/)[0]),S,X=0,P,U,ba,sa,Z,aa=b.chartWidth-3,t=0,ea;Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c="toString toLocaleString valueOf hasOwnProperty isPrototypeOf propertyIsEnumerable constructor".split(" "),
+d=c.length;return function(e){if("object"!==typeof e&&("function"!==typeof e||null===e))throw new TypeError("Object.keys called on non-object");var f=[],g;for(g in e)a.call(e,g)&&f.push(g);if(b)for(g=0;g<d;g++)a.call(e,c[g])&&f.push(c[g]);return f}}());Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c,d,e,f,g;if(null==this)throw new TypeError(" this is null or not defined");e=Object(this);f=e.length>>>0;if("function"!==typeof a)throw new TypeError(a+" is not a function");1<arguments.length&&
+(c=b);for(d=0;d<f;)d in e&&(g=e[d],a.call(c,g,d,e)),d++});if(M){w=m/(q-r);P=0;for(r=g.length;P<r;P++)t+=g[P].y;P=t?m/t:m}else w=q?m/q:m;v=k;b.globalMinXShift=0;b.alignmentType={};try{Object.defineProperty(b.alignmentType,"default",{configurable:!1,enumerable:!0,get:function(){return 1}})}catch(oa){b.alignmentType["default"]=1}try{Object.defineProperty(b.alignmentType,"alternate",{configurable:!1,enumerable:!0,get:function(){return 2}})}catch(oa){b.alignmentType.alternate=2}a.prototype.constructor=
+a;e.prototype.constructor=e;e.prototype.push=function(a,b){this.nonDistributedMatrix[b]=this.nonDistributedMatrix[b]||[];this.nonDistributedMatrix[b].push(a)};e.prototype.forcePush=function(a,b){this.forcePushObj[b]=a};e.prototype.distribute=function(b){var c,d=!0,e=new a,f=new a,h=new a,k=new a,n=this.flags,l,m,p,r,t,q=0;if(b){if(0<g.length-this.distributionLength)for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=1;r<c.length;r++)t=c[r],t.dontPlot=!0,t.displayValue=""}else if(0<
+g.length-2*this.distributionLength)for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=1;r<c.length-1;r++)t=c[r],t.dontPlot=!0,t.displayValue="";if(g.length>this.distributionLength&&!b){n.exhaustion=!0;for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=0,b=c.length;r<b;r++)t=c[r],t.dontPlot?d?l=h:l=k:(d?l=e:l=f,l.getEffectiveLength()>parseInt(m,10)?t.distributionFactor=l.getEffectiveLength()-1-m:t.distributionFactor=0),l.set(q++,t),d=!d;this.distributedMatrix=
+e.mergeWith(h);this.altDistributedMatrix=f.mergeWith(k)}else{for(p in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[p],r=0,b=c.length;r<b;r++)t=c[r],t.dontPlot?l=h:(l=e,l.getEffectiveLength()>parseInt(p,10)?t.distributionFactor=l.getEffectiveLength()-1-p:t.distributionFactor=0),l.set(q++,t);this.distributedMatrix=e.mergeWith(h)}};e.prototype.getDistributedResult=function(){var a,c=[],d=(a=b.options.legend)&&"right"===a.align&&1||0;a.width?d&&(aa-=a.width+f.chart.spacingRight):d=0;b.isLegendRight=
+d;this.distribute(d);d?(a=b.alignmentType["default"],c.push(this.distributedMatrix)):(a=this.flags.exhaustion?b.alignmentType.alternate:b.alignmentType["default"],this.flags.exhaustion?[].push.call(c,this.distributedMatrix,this.altDistributedMatrix):c.push(this.distributedMatrix));return{forceMatrix:this.forcePushObj,suggestion:a,matrix:c}};S=new e(Math.floor(m/Q));ea=M?P:w;g.forEach(function(a,b){var c;c=0;!M&&0===b||!M&&b===g.length-1?S.forcePush(a,b):(c=a.y*ea,X+=a.y*ea,c=X-c+c/2,c=Math.floor(c/
+Q),S.push(a,c))});m=S.getDistributedResult();g.length=0;if(void 0===m.matrix[1])[].push.apply(g,m.matrix[0]);else for(P=m.matrix[0],U=m.matrix[1],r=Math.max(P.length,U.length),t=0;t<r;t++)sa=P[t],ba=U[t],g.push(sa?sa:ba);if(0<Object.keys(m.forceMatrix).length)for(Z in m.forceMatrix)[].splice.apply(g,[parseInt(Z,10),0].concat(m.forceMatrix[Z]));switch(m.suggestion){case b.alignmentType["default"]:c(g,!1);break;case b.alignmentType.alternate:b.labelAlignment=b.alignmentType.alternate,k=p/3,b.canvasLeft=
+b.chartWidth/2-k,I=b.canvasLeft+k,v=k,c(g,!0)}n._temp={slicingGapPosition:G,noOfGap:K}},drawPlotFunnel:function(a,e){this.translate();var c=this,d=a.items,b=a.data,f=c.options,h=f.plotOptions,g=c.elements.plots[0],p=h.series.dataLabels,m=c.paper,k=f.tooltip||{},k=k&&!1!==k.enabled,l,h=h.series.animation.duration||0,t=c.layers,r=t.tracker,t=t.datalabels||(t.datalabels=m.group("datalabels").insertAfter(t.dataset)),q=g.showLabelsAtCenter,w=e._temp||{},v=w.slicingGapPosition,w=w.noOfGap,y=e.SlicingDistance,
+x,J=y/2,z=0,A=f.chart.issliced,f=f.chart.textDirection,B=p.style,B={fontFamily:B.fontFamily,fontSize:B.fontSize,lineHeight:B.lineHeight,fontWeight:B.fontWeight,fontStyle:B.fontStyle},D=function(a,b){return function(d){a.graphic.attr(b);la.call(this,c,d,"DataPlotRollOver")}},R=function(a,b){return function(d){a.graphic.attr(b);la.call(this,c,d,"DataPlotRollOut")}},G,M,E,N,H,K,I,L;if(!(E=c.datasets[0].streamlinedData&&2>b.length)){w&&(x=La(1.5*J,y/w),z=J);y=function(a){return function(){c.legendClick(a,
+!0,!1)}};J=function(a){return function(){return c.getEventArgs(a)}};L=function(a){return function(){a.attr({visibility:"visible"})}};t.trackTooltip(!0);b&&b.length||(b=[]);g.singletonCase=E&&2==b.length||1==b.length;e.data||(e.data=[]);for(I=b.length;I--;)N=b[I],G=N.y,M=N.displayValue,l=N.toolText,K=!!N.link,H=A?0:N.isSliced,null!==G&&void 0!==G&&N.shapeArgs?((E=d[I])||(e.data[I].plot=E=d[I]={value:G,displayValue:M,sliced:!!H,chart:c,plotItems:d,seriesData:g,cursor:K?"pointer":"",x:N.x,index:I,graphic:c.pyramidFunnelShape(N.shapeArgs).attr({fill:N.color,
+opacity:0,"stroke-width":N.borderWidth,stroke:N.borderColor}),dataLabel:m.text(t).attr({text:M,ishot:!0,cursor:K?"pointer":"",direction:f,x:0,y:0}).css(B).tooltip(N.originalText),trackerObj:m.path(r)},e.data[I].legendClick=y(E),e.data[I].getEventArgs=J(E),G=M={},N.hoverEffects&&(G={color:N.color,opacity:N.alpha,"stroke-width":N.borderWidth,stroke:N.borderColor},M=N.rolloverProperties,M={color:M.color,opacity:M.alpha,"stroke-width":M.borderWidth,stroke:M.borderColor}),!N.doNotSlice&&E.trackerObj.click(c.slice,
+E),E.trackerObj.mouseup(c.plotMouseUp,E),E.trackerObj.hover(D(E,M),R(E,G)),E.dataLabel.hover(D(E,M),R(E,G)),k&&E.trackerObj.tooltip(l),!N.doNotSlice&&E.dataLabel.click(c.slice,E),E.dataLabel.mouseup(c.plotMouseUp,E),q&&0===I&&"funnel"==c.type&&g.streamlinedData||(E.connector=m.path(t).attr({"stroke-width":p.connectorWidth,stroke:p.connectorColor,ishot:!0,cursor:K?"pointer":""}).click(c.slice,E).mouseup(c.plotMouseUp,E).hover(D(E,M),R(E,G))),E.dy=0,w&&(z&&(E._startTranslateY=l="t0,"+z,E.dy=E.DistanceAvailed=
+z,E.graphic.attr({transform:l}),E.dataLabel.attr({transform:l}),E.connector.attr({transform:l})),v[N.x]&&(z-=x))),h?(t.attr({visibility:"hidden"}),E.graphic.animate({opacity:N.alpha},h,"easeIn",I===b.length-1&&L(t))):E.graphic.attr({opacity:N.alpha})):e.data[I].plot=d[I]={dataLabel:m.text(t).attr({text:M,direction:f,x:0,y:0}).css(B).tooltip(N.originalText)};c.drawDataLabels();c.drawTracker(a,e)}},slice:function(a,e,c,d){var b=this.chart;a=b.datasets[0].SlicingDistance/2;c=e=0;var f=this.plotItems,
+h=f.length,g,p,m,k,l,t,r,q;t={hcJSON:{chart:{issliced:!1},series:[]}};t.hcJSON.series[0]={data:m=[]};d=this.sliced=ga(d)?d:!this.sliced;r=-a;q=function(a,c){return function(){qa.raiseEvent("SlicingEnd",{slicedState:a,data:b.getPlotData(c)},b.logic.chartInstance)}};for(e=0;e<h;e+=1)p=f[e],p!==this?(p.sliced=!1,m[e]={isSliced:!1},k=!1):(m[e]={isSliced:d},k=!0,l=e),p.graphic&&(g=p.dy,g=-g,d&&(p.x<this.x?(g+=r,c+=1):p.x==this.x?c?e==h-1&&(g+=.5*a):g+=.5*-a:g+=a),p.graphic.attr({transform:"t0,"+p.dy}),
+p.dy+=g,g={transform:"...t0,"+g},k&&qa.raiseEvent("SlicingStart",{slicedState:!d,data:b.getPlotData(l)},b.logic.chartInstance),p.graphic.animate(g,300,"easeIn",k&&q(d,l)),p.dataLabel&&p.dataLabel.animate(g,300,"easeIn"),p.connector&&p.connector.animate(g,300,"easeIn"),p.trackerObj&&p.trackerObj.animate(g,300,"easeIn"),1==e&&!f[0].graphic&&f[0].dataLabel&&f[0].dataLabel.animate(g,300,"easeIn"));Y(b.logic.chartInstance.jsVars._reflowData,t,!0)},drawDataLabels:function(){var a=this.datasets[0],e=a.data,
+c=this.options.plotOptions.series.dataLabels,d=this.elements.plots[0].items,b,f,n,g,p=a.showLabelsAtCenter,m=Number(c.style.lineHeight.split(/px/)[0]),k=h(parseInt(c.style.fontSize,10),10),l=.3*k,t=.3*m,r,q,w,v,y=a.labelDistance,x,E,z={};for(v=e.length-1;0<=v;--v)g=e[v],E=g.displayValue,c=d[v],f=g.labelY,b=g.labelX,n=g.labelAline,x=g.style,k=h(parseInt(x.fontSize,10),10),l=.3*k,k={fontFamily:x.fontFamily,fontSize:x.fontSize,lineHeight:x.lineHeight,fontWeight:x.fontWeight,fontStyle:x.fontStyle},p?
+f=0===v&&"funnel"==this.type&&a.streamlinedData?f-t+(d[1].DistanceAvailed||0):f-t+(c.DistanceAvailed||0):(w=f-l-g.distributionFactor*m,l=f-l,q=z[g.alignmentSwitch],void 0!==r&&void 0!==q&&q-l<m&&(f=l=q-m),g.displayValue&&(z[g.alignmentSwitch]=l),r=g.plotY,this.labelAlignment===this.alignmentType.alternate?g.alignmentSwitch?(q=b+3+g.virtualWidth,g=q+y+g.distributionFactor*this.globalMinXShift):(q=b-3,g=q-(y-(g.lOverflow||0))-g.distributionFactor*this.globalMinXShift):(q=b-3,g=q-(y-(g.lOverflow||0))-
+g.distributionFactor*this.globalMinXShift),"undefined"===typeof E||E===J||0===v&&"funnel"==this.type&&a.streamlinedData||(g=["M",g,w,"L",q,l],c.connector.attr({path:g,"shape-rendering":w===l&&1>l?"crisp":""})),f=0===v&&"funnel"==this.type&&a.streamlinedData?f+(d[1].DistanceAvailed||0):l+(c.DistanceAvailed||0)),E!==J&&c.dataLabel.attr({transform:"t"+b+","+f,"text-anchor":Ha[n],text:E,fill:x.color,"font-size":x.fontSize,"text-bound":[x.backgroundColor,x.borderColor,x.borderThickness,x.borderPadding,
+x.borderRadius,x.borderDash]}).css(k)},drawTracker:function(a){var e=this.paper,c=a.items;a=a.data;for(var d,b,f=+new Date,h=a.length-1,g,p=this.layers.tracker,m,k;0<=h;--h)g=c[h],k=a[h],b=g.trackerObj,g.graphic&&(d=g.graphic.Shapeargs.silhuette,m={link:k.link,value:k.y,displayValue:k.displayValueArgs,categoryLabel:k.categoryLabel,dataIndex:g.index||"",toolText:k.toolText},k.datasetIndex=g.index,b?b.attr({path:d,isTracker:f,fill:ra,stroke:"none",transform:"t0,"+(g._startTranslateY||0),ishot:!0,cursor:g.cursor}):
+g.trackerObj=e.path(d,p).attr({isTracker:f,fill:ra,stroke:"none",transform:"t0,"+(g._startTranslateY||0),ishot:!0,cursor:g.cursor}),b.data("eventArgs",m))},getEventArgs:function(a){return a.chart.getPlotData(a.index)},legendClick:function(a){var e=a.chart;e.slice.call(e.plots[0].items[a.index])},plotMouseUp:function(a){la.call(this.trackerObj,this.chart,a)}},v["renderer.piebase"]);v("renderer.pyramid",{type:"pyramid",translate:function(){function a(){var b=[],c=0;this.set=function(a,d){c++;b[a]=d};
+this.get=function(a){return b[a]};this.getAll=function(){return b};this.mergeWith=function(c){var d,e,f=b.slice(0);if(!(c instanceof Array))if(c instanceof a)c=c.getAll();else return;for(d in c)e=c[d],f[d]||(f[d]=e);return f};this.getEffectiveLength=function(){return c}}function e(a){this.distributionLength=a;this.distributedMatrix=[];this.altDistributedMatrix=[];this.nonDistributedMatrix={};this.flags={exhaustion:!1}}function c(a,c){var e,f,g,h,n=0,m=!1;e={flag:!1,point:void 0,sLabel:void 0,setAll:function(a,
+b,c){this.flag=a;this.point=b;this.sLabel=c}};var p={point:void 0,sLabel:void 0,set:function(a,b){return function(c,d){var e,f;c.dontPlot||(this.point&&this.sLabel?(e=a(this.point,this.sLabel),f=a(c,d),b(e,f)&&(this.point=c,this.sLabel=d)):(this.point=c,this.sLabel=d))}}},O={},L={},P={},Q={};qa.extend(O,e);qa.extend(L,e);O.setAll=function(a,b,c){var d=this.point,e=this.sLabel;this.flag=a;d&&e?(a=d.labelX-(e.oriTextWidth-e.width),d=b.labelX-(c.oriTextWidth-c.width),a>d&&(this.point=b,this.sLabel=c)):
+(this.point=b,this.sLabel=c)};L.setAll=function(a,b,c){var d=this.point,e=this.sLabel;this.flag=a;d&&e?(a=d.labelX+e.oriTextWidth,d=b.labelX+c.oriTextWidth,a<d&&(this.point=b,this.sLabel=c)):(this.point=b,this.sLabel=c)};qa.extend(P,p);qa.extend(Q,p);P.set=function(){return p.set.apply(P,[function(a){return a.labelX},function(a,b){return a>b?!0:!1}])}();Q.set=function(){return p.set.apply(Q,[function(a,b){return a.labelX+b.oriTextWidth},function(a,b){return a<b?!0:!1}])}();e=0;for(f=a.length;e<f;e++)if(g=
+e,h=a[e])h.x=g,c&&(m=!m),h.isSliced&&((A=h.x)&&!B[A]&&(B[A]=!0,D+=1),A<l&&(B[A+1]=!0,D+=1)),h.oriText=h.displayValue,b.smartLabel.setStyle(h.style),g=b.smartLabel.getSmartText(h.displayValue,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),z+=h.y,t=k*z/E,r=N*h.y,h.shapeArgs={x:I,y:q,R1:K,R2:t,h:r,r3dFactor:v,gStr:"point",is2D:y,use3DLighting:F,renderer:x},G?(h.labelAline="middle",h.labelX=I,h.labelY=(y?q:q+v*K)+r/2+M):(h.labelAline="start",(h.alignmentSwitch=m)?(h.labelX=I-((K+t)/2+3+J+g.width),
+h.labelX-=h.distributionFactor*b.globalMinXShift,P.set(h,g)):(h.labelX=I+J+(K+t)/2+3,h.labelX+=h.distributionFactor*b.globalMinXShift,Q.set(h,g)),c&&(m&&0>h.labelX?(n=h.labelX+g.width,n=b.smartLabel.getSmartText(h.displayValue,n,Number.POSITIVE_INFINITY,!0),h.labelX=2,h.displayValue=n.text,h.virtualWidth=n.width,O.setAll(!0,h,n)):!m&&h.labelX+g.width>b.chartWidth&&(n=b.smartLabel.getSmartText(h.displayValue,b.chartWidth-h.labelX,Number.POSITIVE_INFINITY,!0),h.displayValue=n.text,h.virtualWidth=n.width,
+L.setAll(!0,h,n))),h.pWidth=h.virtualWidth||g.width,n=h.distributionFactor*H,h.labelY=q+M+r/2+n),q+=r,h.plotX=I,h.plotY=q-r/2,K=t,h.virtualWidth=h.virtualWidth||g.width;d(a,{lTrimmedInfo:O,rTrimmedInfo:L,lLargestLabel:P,rLargestLabel:Q})}function d(a,c){var d=0,e=c.lTrimmedInfo,f=c.rTrimmedInfo,g=c.lLargestLabel,h=c.rLargestLabel;if(!e.flag||!f.flag){if(f.flag){if(!g.point)return;d=f.sLabel;d=d.oriTextWidth-d.width;h=g.point.labelX-3;d=-Math.ceil(Math.min(d,h))}else if(e.flag){if(!h.point)return;
+g=e.point;d=e.sLabel;d=d.oriTextWidth-d.width;h=O-(h.point.labelX+h.sLabel.width);d=Math.ceil(Math.min(d,h));g.labelX-=d}if(d)for(g=0,e=a.length;g<e;g++)h=a[g],f=h.alignmentSwitch?0>d?b.smartLabel.getSmartText(h.oriText,h.pWidth,Number.POSITIVE_INFINITY,!0):b.smartLabel.getSmartText(h.oriText,h.pWidth+d,Number.POSITIVE_INFINITY,!0):0<d?b.smartLabel.getSmartText(h.oriText,h.pWidth,Number.POSITIVE_INFINITY,!0):b.smartLabel.getSmartText(h.oriText,h.pWidth-d,Number.POSITIVE_INFINITY,!0),h.virtualWidth=
+f.width,h.displayValue=f.text,h.labelX+=d,h.shapeArgs.x+=d;else for(g=0,e=a.length;g<e;g++)h=a[g],0<(d=h.labelX+h.pWidth-O)&&(b.isLegendRight?h.displayValue=b.smartLabel.getSmartText(h.oriText,h.pWidth-d,Number.POSITIVE_INFINITY,!0).text:(h.lOverflow=d,h.labelX-=d))}}var b=this,f=b.options,n=b.datasets[0],g=n.data,p=b.canvasWidth,m=b.canvasHeight,k=p/2,l=g.length-1,t,r,q=b.canvasTop,v=n.yScale,y=n.is2d,F=n.use3DLighting,x=b.paper,E=n.valueSum?n.valueSum:1,z=0,A,B={},D=0,J=n.labelDistance,G=n.showLabelsAtCenter,
+M=.3*h(parseInt(f.plotOptions.series.dataLabels.style.fontSize,10),10),I=0,N=m/E,H=Number(b.options.plotOptions.series.dataLabels.style.lineHeight.split(/px/)[0]),K=0,L,X=0,O=b.chartWidth-3,Q,S,U,P,Y,ba;Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c,d,e,f,g;if(null==this)throw new TypeError(" this is null or not defined");e=Object(this);f=e.length>>>0;if("function"!==typeof a)throw new TypeError(a+" is not a function");1<arguments.length&&(c=b);for(d=0;d<f;)d in e&&(g=e[d],
+a.call(c,g,d,e)),d++});b.globalMinXShift=Math.floor(H/Math.cos(Math.atan(k/2/m)));b.alignmentType={};try{Object.defineProperty(b.alignmentType,"default",{configurable:!1,enumerable:!0,get:function(){return 1}})}catch(sa){b.alignmentType["default"]=1}try{Object.defineProperty(b.alignmentType,"alternate",{configurable:!1,enumerable:!0,get:function(){return 2}})}catch(sa){b.alignmentType.alternate=2}a.prototype.constructor=a;e.prototype.constructor=e;e.prototype.push=function(a,b){this.nonDistributedMatrix[b]=
+this.nonDistributedMatrix[b]||[];this.nonDistributedMatrix[b].push(a)};e.prototype.distribute=function(b){var c,d=!0,e=new a,f=new a,h=new a,k=new a,n=this.flags,l,m,p,r,q,t=0;if(b){if(0<g.length-this.distributionLength)for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=1;r<c.length;r++)q=c[r],q.dontPlot=!0,q.displayValue=""}else if(0<g.length-2*this.distributionLength)for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=1;r<c.length-1;r++)q=c[r],q.dontPlot=
+!0,q.displayValue="";if(g.length>this.distributionLength&&!b){n.exhaustion=!0;for(m in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[m],r=0,b=c.length;r<b;r++)q=c[r],q.dontPlot?d?l=h:l=k:(d?l=e:l=f,l.getEffectiveLength()>parseInt(m,10)?q.distributionFactor=l.getEffectiveLength()-1-m:q.distributionFactor=0),l.set(t++,q),d=!d;this.distributedMatrix=e.mergeWith(h);this.altDistributedMatrix=f.mergeWith(k)}else{for(p in this.nonDistributedMatrix)for(c=this.nonDistributedMatrix[p],r=0,b=c.length;r<
+b;r++)q=c[r],q.dontPlot?l=h:(l=e,l.getEffectiveLength()>parseInt(p,10)?q.distributionFactor=l.getEffectiveLength()-1-p:q.distributionFactor=0),l.set(t++,q);this.distributedMatrix=e.mergeWith(h)}};e.prototype.getDistributedResult=function(){var a,c=[],d=(a=b.options.legend)&&"right"===a.align&&1||0;a.width?d&&(O-=a.width+f.chart.spacingRight):d=0;b.isLegendRight=d;this.distribute(d);d?(a=b.alignmentType["default"],c.push(this.distributedMatrix)):(a=this.flags.exhaustion?b.alignmentType.alternate:b.alignmentType["default"],
+this.flags.exhaustion?[].push.call(c,this.distributedMatrix,this.altDistributedMatrix):c.push(this.distributedMatrix));return{suggestion:a,matrix:c}};L=new e(Math.floor(m/H));g.forEach(function(a){var b=0,b=a.y*N;X+=a.y*N;L.push(a,Math.floor((X-b+b/2)/H))});m=L.getDistributedResult();g.length=0;if(void 0===m.matrix[1])[].push.apply(g,m.matrix[0]);else for(S=m.matrix[0],U=m.matrix[1],P=Math.max(S.length,U.length),Q=0;Q<P;Q++)ba=S[Q],Y=U[Q],g.push(ba?ba:Y);switch(m.suggestion){case b.alignmentType["default"]:I=
+b.canvasLeft+k;c(g,!1);break;case b.alignmentType.alternate:b.labelAlignment=b.alignmentType.alternate,k=p/3,b.canvasLeft=b.chartWidth/2-k,I=b.canvasLeft+k,c(g,!0)}n._temp={slicingGapPosition:B,noOfGap:D}},drawPlotPyramid:function(a,e){this.translate();var c=this,d=a.items,b=a.data,f=c.options,h=f.plotOptions,g=c.elements.plots[0],p=c.datasets[0],m=h.series.dataLabels,k=g.showLabelsAtCenter,h=h.series.animation.duration||0,l=c.paper,q=f.tooltip||{},q=q&&!1!==q.enabled,r,u=c.layers,v=u.tracker,u=u.datalabels||
+(u.datalabels=l.group("datalabels").insertAfter(u.dataset)),y=p._temp||{},F=y.slicingGapPosition,y=y.noOfGap,x=p.SlicingDistance,E,z=x/2,p=0,A=f.chart.issliced,f=f.chart.textDirection,B=m.style,B={fontFamily:B.fontFamily,fontSize:B.fontSize,lineHeight:B.lineHeight,fontWeight:B.fontWeight,fontStyle:B.fontStyle},D=function(a,b){return function(d){a.graphic.attr(b);la.call(this,c,d,"DataPlotRollOver")}},J=function(a,b){return function(d){a.graphic.attr(b);la.call(this,c,d,"DataPlotRollOut")}},G,M,I,
+N,H,K,L,X;K=function(a){return function(){c.legendClick(a,!0,!1)}};L=function(a){return function(){return c.getEventArgs(a)}};X=function(a){return function(){a.attr({visibility:"visible"})}};u.trackTooltip(!0);y&&(E=La(1.5*z,x/y),p=z);b&&b.length||(b=[]);g.singletonCase=1==b.length;for(H=b.length;H--;)z=b[H],G=z.y,M=z.displayValue,r=z.toolText,I=!!z.link,N=A?0:z.isSliced,null!==G&&void 0!==G&&z.shapeArgs?((x=d[H])||(e.data[H].plot=x=d[H]={value:G,sliced:!!N,cursor:I?"pointer":"",chart:c,plotItems:d,
+seriesData:g,x:z.x,index:H,graphic:c.pyramidFunnelShape(z.shapeArgs).attr({fill:z.color,opacity:h?0:z.alpha,"stroke-width":z.borderWidth,stroke:z.borderColor}),dataLabel:l.text(u).attr({text:M,direction:f,ishot:!0,cursor:I?"pointer":"",x:0,y:0}).css(B).tooltip(z.originalText),trackerObj:l.path(v)},G=M={},z.hoverEffects&&(G={color:z.color,opacity:z.alpha,"stroke-width":z.borderWidth,stroke:z.borderColor},M=z.rolloverProperties,M={color:M.color,opacity:M.alpha,"stroke-width":M.borderWidth,stroke:M.borderColor}),
+e.data[H].legendClick=K(x),e.data[H].getEventArgs=L(x),!z.doNotSlice&&x.trackerObj.click(c.slice,x),x.trackerObj.mouseup(c.plotMouseUp,x).hover(D(x,M),J(x,G)),q&&x.trackerObj.tooltip(r),!z.doNotSlice&&x.dataLabel.click(c.slice,x),x.dataLabel.mouseup(c.plotMouseUp,x).hover(D(x,M),J(x,G)),k&&0===H&&"funnel"==c.type&&g.streamlinedData||(x.connector=l.path(u).attr({"stroke-width":m.connectorWidth,stroke:m.connectorColor,ishot:!0,cursor:I?"pointer":""}).click(c.slice,x).mouseup(c.plotMouseUp,x).hover(D(x,
+M),J(x,G))),x.dy=0,y&&(p&&(x._startTranslateY=r="t,0,"+p,x.dy=x.DistanceAvailed=p,x.graphic.attr({transform:r}),x.dataLabel.attr({transform:r}),x.connector.attr({transform:r})),F[z.x]&&(p-=E))),h&&(u.attr("visibility","hidden"),x.graphic.animate({opacity:z.alpha},h,"easeIn",H===b.length-1&&X(u)))):e.data[H].plot=d[H]={dataLabel:l.text(u).attr({text:M,direction:f,x:0,y:0}).css(B).tooltip(z.originalText)};c.drawDataLabels();c.drawTracker(a,e)}},v["renderer.funnel"]);v("renderer.sparkline",{callbacks:[function(){if(!this.options.nativeMessage){var a=
+this.options,e=this.layers,c=this.paper,d=a.series[0]&&a.series[0].data&&a.series[0].data[0],b=e.limitlabels,f=this.smartLabel,a=a.chart,h=a.highLowValue.highLabel,g=a.highLowValue.lowLabel,p=a.valuePadding,m=this.canvasHeight/2,k;d&&(b||(b=e.limitlabels=c.group("limitlabels").insertAfter(e.dataset)),b.translate(this.canvasLeft,this.canvasTop),ga(a.openValue.label)&&(d.openValue=c.text(-p,m,a.openValue.label,b).attr({direction:a.textDirection,"text-anchor":Ha[gb]}).css(a.openValue.style)),e=a.closeValue.label,
+k=this.canvasWidth+p,ga(e)&&(d.closeValue=c.text(this.canvasWidth+p,m,e,b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.closeValue.style),f.setStyle(a.closeValue.style),k+=f.getOriSize(e).width+p),ga(h)&&(c.text(k,m,"[",b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.highLowValue.style),f.setStyle(a.highLowValue.style),k+=f.getOriSize("[").width+1,d.highLabel=c.text(k,m,h,b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.highLowValue.style).css({color:a.highColor}),
+k+=f.getOriSize(h).width+1),ga(g)&&(c.text(k,m,"|",b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.highLowValue.style),k+=f.getOriSize("|").width+1,d.dataLabel=c.text(k,m,g,b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.highLowValue.style).css({color:a.lowColor}),k+=f.getOriSize(g).width+1,c.text(k,m,"]",b).attr({direction:a.textDirection,"text-anchor":Ha[Wa]}).css(a.highLowValue.style)))}}]},v["renderer.cartesian"]);v("renderer.sparkwinloss",{callbacks:[function(){if(!this.options.nativeMessage){var a=
+this.options,e=this.layers,c=this.paper,d=a.series[0]&&a.series[0].data&&a.series[0].data[0],b=e.limitlabels,f=a.plotOptions.series.dataLabels&&a.plotOptions.series.dataLabels.style||{},a=a.chart,h=a.closeValue.label,g={fontFamily:f.fontFamily,fontSize:f.fontSize,lineHeight:f.lineHeight,fontWeight:f.fontWeight,fontStyle:f.fontStyle};d&&(b||(b=e.limitlabels=c.group("limitlabels").insertAfter(e.dataset)),b.translate(this.canvasLeft,this.canvasTop),ga(h)&&h!==J&&(d.dataLabel=c.text(this.canvasWidth+
+a.valuePadding,this.canvasHeight/2,h,b).attr({"text-anchor":Ha[Wa],fill:f.color,direction:a.textDirection,"text-bound":[f.backgroundColor,f.borderColor,f.borderThickness,f.borderPadding,f.borderRadius,f.borderDash]}).css(g)))}}]},v["renderer.cartesian"]);v("renderer.realtimecartesian",{updatePlotColumn:function(a,e,c){var d=this,b=a.data,f=b.length,n=a.items,g=a.graphics||(a.graphics=[]),p=d.paper,m=d.layers,k=d.options,l=k.chart,q=!1!==(k.tooltip||{}).enabled,r=d.definition.chart,k=k.plotOptions.series,
+u=d.xAxis[e.xAxis||0],v=d.yAxis[e.yAxis||0],y=d.logic.isStacked,F=e.numColumns||1,x=e.columnPosition||0,E=l.canvasBorderOpacity=Ga.color(l.plotBorderColor).opacity,z=d.canvasBorderWidth,E=l.isCanvasBorder||(l.isCanvasBorder=0!==E&&0<z),A,z=!1===e.visible?"hidden":"visible",B=l.overlapColumns,D=u.getAxisPosition(0),I=u.getAxisPosition(1)-D,G=r&&r.plotspacepercent,M=k.groupPadding,L=k.maxColWidth,D=h(r&&r.plotpaddingpercent),G=(1-.01*G)*I||La(I*(1-2*M),L*F),I=G/2,G=G/F,B=La(G-1,1<F?B||void 0!==D?0<
+D?G*D/100:0:4:0),F=G-B,x=x*G-I+B/2,I=v.max,G=v.min,B=0<I&&0<=G,D=0>=I&&0>G,I=0>I&&0>G?I:0<I&&0<G?G:0,l=h(l.useRoundEdges,0),N=m.dataset=m.dataset||p.group("dataset-orphan"),m=m.tracker,G=d.canvasTop,M=d.canvasLeft,L=d.canvasBottom,H=d.canvasRight,K,T,U,O,Q,S,Y,P,V,ba,ca,Z,aa,ea,oa=h(r.variableindex,1),da=-1,r=function(a,b){return function(c){a.attr(b);la.call(this,d,c,"dataplotrollover")}};aa=function(a,b){return function(c){a.attr(b);la.call(this,d,c,"dataplotrollout")}};ea=function(a){la.call(this,
+d,a)};y&&(ba=N.shadows||(N.shadows=p.group("shadows",N).toBack()));N=N.column=N.column||p.group("columns",N);if(ca=c.numUpdate||0)for(c=0;c<ca;c+=1)(K=n.shift())&&delete K._state,K&&delete K.tracker,n.push(K);for(c=0;c<f;c+=1){Y=c+ca;T=b[c];S=T.y;K=h(T.x,c);P=u.getAxisPosition(K)+x;K=n[c];Q=T.toolText;U=T.link;O=T.displayValue||J;A=Yb(T.borderWidth)||0;V=parseInt(oa)?K&&K.index||(da+1)%f:c;Z={index:V,link:U,value:S,displayValue:T.displayValueArgs,categoryLabel:T.categoryLabel,toolText:Q,id:a.userID,
+datasetIndex:a.index,datasetName:a.name,visible:a.visible};Y>=f&&(K||(K=n[c]={index:V,value:S,width:F,graphic:null,dataLabel:null,tracker:null}),K&&(K.valueBelowPlot=0>S),Y=V={},T.hoverEffects&&(Y={fill:X(T.color),stroke:X(T.borderColor),"stroke-width":A,"stroke-dasharray":T.dashStyle},V=T.rolloverProperties,V={fill:X(V.color),stroke:X(V.borderColor),"stroke-width":V.borderWidth,"stroke-dasharray":V.dashStyle}),K.graphic||(K.graphic=p.rect(N).attr({visibility:z}),g.push(K.graphic),K.graphic.shadow(k.shadow&&
+T.shadow,ba)),K.graphic.attr({r:l,fill:X(T.color||""),stroke:X(T.borderColor||""),"stroke-width":A,"stroke-dasharray":T.dashStyle,"stroke-linejoin":"miter"}),K.tracker||(K.tracker=p.rect(m).attr({stroke:ra,fill:ra,visibility:z}),g.push(K.tracker)),K._attrHoverInFn&&K.tracker.unhover(K._attrHoverInFn,K._attrHoverOutFn),K._attrClickFn&&K.tracker.unclick(K._attrClickFn),K.tracker.attr({height:0,width:0,r:l,"stroke-width":A,stroke:ra,cursor:U?"pointer":"",ishot:!0}).data("eventArgs",Z).click(K._attrClickFn=
+ea).hover(K._attrHoverInFn=r(K.graphic,V),K._attrHoverOutFn=aa(K.graphic,Y)).tooltip(Q));if(null===S)K&&(K.graphic&&K.graphic.attr({height:0,"stroke-width":0}),K.tracker&&K.tracker.attr({height:0,"stroke-width":0}),K.dataLabel&&K.dataLabel.attr({text:""}));else if(Y=T.previousY,V=v.getAxisPosition(Y||I),T=v.getAxisPosition(S+(Y||0)),Q=Bb(T-V),0>S&&(T=V),Zb(T)<=G&&(Q-=G-T-+E,T=G-+E),ha(T+Q)>=L&&(Q-=ha(T+Q)-L+ +!!A+ +E),1>=A&&(ha(P)<=M&&(F+=P,P=M-A/2+ +!!A-+E,F-=P),ha(P+F)>=H&&(F=H-P+A/2-+!!A+ +E)),
+V=Ga.crispBound(P,T,F,Q,A),P=V.x,T=V.y,F=V.width,Q=V.height,E&&!ga(Y)&&(D?(A=T-(G-A/2),Q+=A,T-=A):B&&(Q=L-T+A/2)),1>=Q&&(Q=1,T+=0>S?0:-Q),K&&K.graphic&&(K.graphic.attr({x:P,y:T,width:F,height:Q}).data("BBox",V),K.tracker.data("eventArgs",Z),K.dataLabel&&K.dataLabel.attrs.text!==O&&K.dataLabel.attr({text:O}),d.drawPlotColumnLabel(a,e,c,P,T),U||q))!y&&Q<Eb&&(T-=(Eb-Q)/2,Q=Eb),K.tracker&&K.tracker.attr({x:P,y:T,width:F,height:Q});da=K&&(da=K.index)||da}return a},updateRealtimeAnchorImage:function(a,
+e,c,d,b,f,h,g,p,m){var k,l,q=b.graphic,r,u,v,y,F,x,E,z,A;c=!1===c.visible?"hidden":"visible";k=this.layers;var B=function(a){var b=a.length,c="",d;for(d=0;d<b;d+=1)c+=" "+a[d];return c};k=k.dataset=k.dataset||g.group("dataset-orphan");k=k.line||(k.line=g.group("line-connector",k));d=d.anchorShadowLayer||(d.anchorShadowLayer=g.group("anchor-shadow",k));if(l=b.graphicImage){k=f.symbol.split("_");r="spoke"===k[0]?1:0;u=f.radius;v=f.shadow;y=f.imagePadding;F=x=E=z={};E=l.data("setRolloverAttr");z=l.data("setRolloutAttr");
+A=h.rolloverProperties.radius-y-h.rolloverProperties.lineWidth;y=u-y-f.lineWidth;F&&(r=g.polypath(k[1]||2,a,e,0<y?y:0,f.startAngle,r).attr({visibility:"hidden"}),y=B(r.attrs.path),r.remove(),r=g.polypath(k[1]||2,a,e,0<A?A:0,h.rolloverProperties.startAngle,h.rolloverProperties.dip).attr({visibility:"hidden"}),g=B(r.attrs.path),r.remove(),E.x=a-.5*E.width,E.y=e-.5*E.height,E["clip-path"]=g,l&&l.stop(),b.dataLabel&&b.dataLabel.stop(),z.x=a-.5*z.width,z.y=e-.5*z.height,z["clip-path"]=y,l.attr(z));if(g=
+h.rolloverProperties)x={polypath:[k[1]||2,a,e,u,f.startAngle,0],fill:X(f.fillColor),"stroke-width":f.lineWidth,stroke:X(f.lineColor)},g=h.rolloverProperties,F={polypath:[g.sides||2,a,e,g.radius,g.startAngle,g.dip],fill:X(g.fillColor),"stroke-width":g.lineWidth,stroke:X(g.lineColor)};q&&q.attr({polypath:[k[1]||2,a,e,u,f.startAngle,0],visibility:0===u?"hidden":c}).data("isRealtime",!0).data("alwaysInvisible",0===u).data("setRolloverProperties",g).data("setRolloverAttr",F).data("setRolloutAttr",x).data("anchorRadius",
+u).data("anchorHoverRadius",g&&g.radius).shadow(v||!1,d);(p||m)&&b.tracker&&b.tracker.attr({cx:a,cy:e})}else F=q.data("setRolloverAttr"),x=q.data("setRolloutAttr"),F&&(F.x=a-.5*F.width,F.y=e-.5*F.height,q&&q.stop(),b.dataLabel&&b.dataLabel.stop(),x.x=a-.5*x.width,x.y=e-.5*x.height,q.attr(x),b.tracker&&b.tracker.attr({x:x.x,y:x.y,fill:ra}))},updatePlotLine:function(a,e,c){var d=this,b=d.paper,f=d.options,n=f.chart,g=f.plotOptions.series,p=a.items,m=a.graphics||(a.graphics=[]),k,l=d.xAxis[e.xAxis||
+0],q=d.yAxis[e.yAxis||0],f=!1!==(f.tooltip||{}).enabled,r=a.data,u=!1===e.visible?"hidden":"visible",v=r.length,C=g.connectNullData,F,x,E,z,A,B,D,I=null,G,M=e.lineWidth,L=e.color,N,H,K,T,U,O,Q,S,V=d.layers,P=V.dataset=V.dataset||b.group("dataset-orphan"),V=V.tracker,Y,ba,ca,Z,aa,ea,da,ga,fa,ha,ja,ia,na;ha=function(a){la.call(this,d,a)};ja=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}};ia=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOut",a,
+d)}};na=function(b,c,f,g,h,k,l,n){return function(){(Y=g.dataLabel=d.drawPlotLineLabel(a,e,n,b,c))&&m.push(Y)}};ba=P.line||(P.line=b.group("line-connector",P));ca=a.lineShadowLayer||(a.lineShadowLayer=b.group("connector-shadow",ba));Z=a.anchorShadowLayer||(a.anchorShadowLayer=b.group("anchor-shadow",ba));P=a.lineLayer||(a.lineLayer=b.group("connector",ba));ba=a.anchorLayer||(a.anchorLayer=b.group("anchors",ba));if(da=c.numUpdate||0)for(c=0;c<da;c+=1)(k=p.shift())&&delete k._state,p.push(k);for(c=
+0;c<v;c+=1)if(ea=c+da,F=r[c],B=F.y,A=h(F.x,c),A=l.getAxisPosition(A),z=F.toolText,x=F.link,E=F.displayValue||J,H=F.marker||{},K=T=H.radius||0,aa=H.shadow,U=H.lineWidth||0,O=H.fillColor||"",Q=H.lineColor||"",k=H.imageUrl,fa=!!k,k=p[c],k._state||(k._state={}),ea>=v&&(k||(k=p[c]={index:c,value:B,graphic:null,connector:null,dataLabel:null,tracker:null}),k.graphic&&"image"===k.graphic.type&&!fa&&(k.graphic&&k.graphic.remove(),k.tracker&&k.tracker.remove(),k.graphic=k.tracker=null),k.graphicImage&&k.graphicImage.remove(),
+k.graphic||(k.graphic=(fa?b.image(ba):b.polypath(ba)).attr({visibility:u}),m.push(k.graphic)),fa||k.graphic.attr({fill:X(O),"stroke-width":U,stroke:X(Q)}),k.connector||(k.connector=b.path(P).attr({visibility:u}),k.connector.shadow(g.shadow&&F.shadow,ca),m.push(k.connector)),k.connector.attr({"stroke-dasharray":N,stroke:X(G||L),"stroke-width":M,"stroke-linecap":"round","stroke-linejoin":2<M?"round":"miter"}),k.tracker||(k.tracker=(fa?b.rect(V):b.circle(V)).attr({stroke:ra,fill:ra,visibility:u}),m.push(k.tracker)),
+T=Ca(T,S&&S.radius||0,n.anchorTrackingRadius),ga={index:c,link:x,value:F.y,displayValue:F.displayValueArgs,categoryLabel:F.categoryLabel,toolText:F.toolText,id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},k._attrClickFn&&k.tracker.unclick(k._attrClickFn),k._attrHoverInFn&&k.tracker.unhover(k._attrHoverInFn,k._attrHoverOutFn),k.tracker.attr({r:T,"stroke-width":U,stroke:ra,cursor:x?"pointer":"",ishot:!0}).data("eventArgs",ga).click(k._attrClickFn=ha).hover(k._attrHoverInFn=ja(k),
+k._attrHoverOutFn=ia(k)).tooltip(z)),k&&(k.index=c),null===B)k&&(k.graphic&&k.graphic.attr({polypath:[2,0,0,0,0,0],"stroke-width":0}),k.dataLabel&&k.dataLabel.attr({text:""}),k.connector&&k.connector.attr({path:"M-9999,-9999Lh-1","stroke-width":0}),k.tracker&&k.tracker.attr({r:0,"stroke-width":0})),0===C&&(I=null);else{G=q.getAxisPosition(B);if(H&&H.enabled)if(T=H.symbol.split("_"),U=k.graphic,N=B={},S=F.rolloverProperties,fa)ea>=v?(N=new ka.Image,x={isTooltip:f,setLink:x,hotLayer:V},N.onload=d.onAnchorImageLoad(this,
+a,e,A,G,H,k,ga,z,S,c,ba,x),N.onerror=na(A,G,H,k,ga,z,S,c),N.src=H.imageUrl):this.updateRealtimeAnchorImage(A,G,e,a,k,H,F,b,x,f);else{if(S=F.rolloverProperties)N={polypath:[T[1]||2,A,G,K,H.startAngle,0],fill:X(H.fillColor),"stroke-width":H.lineWidth,stroke:X(H.lineColor)},S=F.rolloverProperties,B={polypath:[S.sides||2,A,G,S.radius,S.startAngle,S.dip],fill:X(S.fillColor),"stroke-width":S.lineWidth,stroke:X(S.lineColor)};U&&U.attr({polypath:[T[1]||2,A,G,K,H.startAngle,0],visibility:0===K?"hidden":u}).data("isRealtime",
+!0).data("alwaysInvisible",0===K).data("setRolloverProperties",S).data("setRolloverAttr",B).data("setRolloutAttr",N).data("anchorRadius",K).data("anchorHoverRadius",S&&S.radius).shadow(aa||!1,Z);(x||f)&&k.tracker&&k.tracker.attr({cx:A,cy:G})}k.dataLabel&&k.dataLabel.attrs.text!=E&&k.dataLabel.attr({text:E});Y=d.drawPlotLineLabel(a,e,c,A,G);null!==I?(D=["M",D,y,I],D.push("L",A,y,G),(I=k.connector)&&I.attr({path:D,"stroke-width":M})):k.connector&&k.connector.attr({path:"M-9999,-9999Lh-1","stroke-width":0});
+D=A;I=G;G=F.color;N=F.dashStyle||e.dashStyle}return a},updatePlotArea:function(a,e,c){var d=this,b=d.paper,f=d.options,n=f.chart,g=d.logic,p=f.plotOptions.series,m=a.items,k=a.graphics||(a.graphics=[]),l,q=d.xAxis[e.xAxis||0],r=d.yAxis[e.yAxis||0],u=r.axisData.reversed,v=g.isStacked,f=!1!==(f.tooltip||{}).enabled,g="0"===d.definition.chart.drawfullareaborder,C=a.data,E=!1===e.visible?"hidden":"visible",x=C.length,I=p.connectNullData,z,A,B,D,L,G,M,U=r.max,N=r.min,u=r.getAxisPosition(0<U&&0<N?u?U:N:
+0>U&&0>N?u?N:U:u?U:0),U=null,H,N=e.lineWidth,K=e.dashStyle,T=X(e.lineColor),V=0,O,Q,S,Y,P,ca,ba=[],da=[],Z=[],aa=d.layers,ea=aa.dataset=aa.dataset||b.group("dataset-orphan"),aa=aa.tracker,fa,ga,ha,ja,ia,na,pa,ta,qa,xa,ya,Aa,Ba;r.yBasePos=u;xa=function(a){la.call(this,d,a)};ya=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOver",a,d)}};Aa=function(a){return function(b){d.hoverPlotAnchor(this,b,"DataPlotRollOut",a,d)}};Ba=function(b,c,f,g,h,l,m,n){return function(){(ja=g.dataLabel=
+d.drawPlotLineLabel(a,e,n,b,c))&&k.push(ja)}};v&&(ha=ea.shadows||(ea.shadows=b.group("shadows",ea).toBack()));fa=ea.line||(ea.line=b.group("line-connector",ea));a.lineShadowLayer||(a.lineShadowLayer=b.group("connector-shadow",fa));ea=a.anchorShadowLayer||(a.anchorShadowLayer=b.group("anchor-shadow",fa));v=a.lineLayer||(a.lineLayer=b.group("connector",fa));fa=a.anchorLayer||(a.anchorLayer=b.group("anchors",fa));if(na=c.numUpdate||0)for(c=0;c<na;c+=1)(l=m.shift())&&delete l._state,m.push(l);for(c=0;c<
+x;c+=1)ia=c+na,z=C[c],L=z.y,l=h(z.x,c),H=q.getAxisPosition(l),D=z.toolText,A=z.link,B=z.displayValue||J,O=z.marker||{},Q=M=O.radius||0,ga=O.shadow,G=O.lineWidth||0,S=O.fillColor||"",Y=O.lineColor||"",ta=O.imageUrl,qa=!!ta,l=m[c],ia>=x&&(l||(l=m[c]={index:c,graphic:null,connector:null,dataLabel:null,tracker:null}),l.graphic&&"image"===l.graphic.type&&!qa&&(l.graphic&&l.graphic.remove(),l.tracker&&l.tracker.remove(),l.graphic=l.tracker=null),l.graphicImage&&!qa&&(l.graphicImage&&l.graphicImage.remove(),
+l.graphic&&l.graphic.remove(),l.tracker&&l.tracker.remove(),l.graphic=l.tracker=null),l.graphic||(l.graphic=(qa?b.image(fa):b.polypath(fa)).attr({visibility:E}),k.push(l.graphic)),qa||l.graphic.attr({fill:X(S),"stroke-width":G,stroke:X(Y)}),l.tracker||(l.tracker=(qa?b.rect(aa):b.circle(aa)).attr({stroke:ra,fill:ra,visibility:E}),k.push(l.tracker)),M=Ca(M,P&&P.radius||0,n.anchorTrackingRadius),pa={index:c,link:A,value:z.y,displayValue:z.displayValueArgs,categoryLabel:z.categoryLabel,toolText:z.toolText,
+id:a.userID,datasetIndex:a.index,datasetName:a.name,visible:a.visible},l._attrHoverInFn&&l.tracker.unhover(l._attrHoverInFn,l._attrHoverOutFn),l._attrClickFn&&l.tracker.unclick(l._attrClickFn),l.tracker.attr({r:M,"stroke-width":G,cursor:A?"pointer":"",ishot:!0}).data("eventArgs",pa).click(l._attrClickFn=xa).hover(l._attrHoverInFn=ya(l),l._attrHoverOutFn=Aa(l)).tooltip(D)),l&&(l.index=c),null===L?(l&&(l.graphic&&l.graphic.attr({polypath:[2,0,0,0,0,0],"stroke-width":0}),l.dataLabel&&l.dataLabel.attr({text:""}),
+l.tracker&&l.tracker.attr({r:0,"stroke-width":0})),0===I&&(U=null,0<V&&(1===V?ba.splice(-8,8):(ba=ba.concat(da),ba.push("Z")),da=[]))):(A=z.link,G=z.previousY,M=(M=r.getAxisPosition(G)||null)||u,L=r.getAxisPosition(L+(G||0)),O&&O.enabled&&(Y=O.symbol.split("_"),ca=l.graphic,G=S={},P=z.rolloverProperties,qa&&ca?ia>=x?(ia=new ka.Image,A={isTooltip:f,setLink:A,hotLayer:aa},ia.onload=d.onAnchorImageLoad(this,a,e,H,L,O,l,pa,D,P,c,fa,A),ia.onerror=Ba(H,L,O,l,pa,D,P,c),ia.src=ta):this.updateRealtimeAnchorImage(H,
+L,e,a,l,O,z,b,A,f):(P&&(G={polypath:[Y[1]||2,H,L,Q,O.startAngle,0],fill:X(O.fillColor),"stroke-width":O.lineWidth,stroke:X(O.lineColor)},P=z.rolloverProperties,S={polypath:[P.sides||2,H,L,P.radius,P.startAngle,P.dip],fill:X(P.fillColor),"stroke-width":P.lineWidth,stroke:X(P.lineColor)}),ca&&ca.attr({polypath:[Y[1]||2,H,L,Q,O.startAngle,0],visibility:0===Q?"hidden":E}).data("isRealtime",!0).data("alwaysInvisible",0===Q).data("setRolloverProperties",P).data("setRolloverAttr",S).data("setRolloutAttr",
+G).data("anchorRadius",Q).data("anchorHoverRadius",P&&P.radius).shadow(ga||!1,ea),(A||f)&&l.tracker&&l.tracker.attr({cx:H,cy:L}))),l.dataLabel&&l.dataLabel.attrs.text!==B&&l.dataLabel.attr({text:B}),ja=d.drawPlotLineLabel(a,e,c,H,L),null===U?(Z.push("M",H,y,L),ba.push("M",H,y,M),V=0):Z.push("L",H,y,L),ba.push("L",H,y,L),da.unshift("L",H,y,M),V++,U=L);0<V&&(1===V?ba.splice(-8,8):(ba=ba.concat(da),ba.push("Z")));a.graphic||(a.graphic=b.path(void 0).attr({"stroke-dasharray":K,"stroke-width":g?0:N,stroke:T,
+"stroke-linecap":"round","stroke-linejoin":2<N?"round":"miter"}).shadow(p.shadow&&z.shadow,ha),k.push(a.graphic));a.graphic.attr({path:ba});g&&(a.connector||(a.connector=b.path(v).attr({"stroke-dasharray":K,"stroke-width":N,stroke:T,"stroke-linecap":"round","stroke-linejoin":2<N?"round":"miter"}),k.push(a.connector)),a.connector.attr({path:Z}));return a}},v["renderer.cartesian"])},[3,2,0,"sr2"]]);
diff --git a/webapp/js/jquery-2.2.3.js b/webapp/js/jquery-2.2.3.js
new file mode 100644
index 0000000..3854747
--- /dev/null
+++ b/webapp/js/jquery-2.2.3.js
@@ -0,0 +1,9842 @@
+/*!
+ * jQuery JavaScript Library v2.2.3
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-04-05T19:26Z
+ */
+
+(function( global, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//"use strict";
+var arr = [];
+
+var document = window.document;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+ version = "2.2.3",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ var realStringObj = obj && obj.toString();
+ return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call( obj, "constructor" ) &&
+ !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android<4.0, iOS<6 (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ var script,
+ indirect = eval;
+
+ code = jQuery.trim( code );
+
+ if ( code ) {
+
+ // If the code includes a valid, prologue position
+ // strict mode pragma, execute code by injecting a
+ // script tag into the document.
+ if ( code.indexOf( "use strict" ) === 1 ) {
+ script = document.createElement( "script" );
+ script.text = code;
+ document.head.appendChild( script ).parentNode.removeChild( script );
+ } else {
+
+ // Otherwise, avoid the DOM node creation, insertion
+ // and removal by using an indirect global eval
+
+ indirect( code );
+ }
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE9-11+
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+// JSHint would error on this code due to the Symbol not being defined in ES5.
+// Defining this global in .jshintrc would create a danger of using the global
+// unguarded in another place, it seems safer to just disable JSHint for these
+// three lines.
+/* jshint ignore: start */
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+/* jshint ignore: end */
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.1
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-10-17
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // http://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, nidselect, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
+ while ( i-- ) {
+ groups[i] = nidselect + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, parent,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( (parent = document.defaultView) && parent.top !== parent ) {
+ // Support: IE 11
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( document.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var m = context.getElementById( id );
+ return m ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\r\\' msallowcapture=''>" +
+ "<option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibing-combinator selector` fails
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( (oldCache = uniqueCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i,
+ len = this.length,
+ ret = [],
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ // Support: Blackberry 4.6
+ // gEBID returns nodes no longer in the document (#6963)
+ if ( elem && elem.parentNode ) {
+
+ // Inject the element directly into the jQuery object
+ this.length = 1;
+ this[ 0 ] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( pos ?
+ pos.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnotwhite = ( /\S+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks( "memory" ) ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this === promise ? newDefer.promise() : this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add( function() {
+
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 ||
+ ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred.
+ // If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // Add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .progress( updateFunc( i, progressContexts, progressValues ) )
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // If we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+} );
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ jQuery( document ).off( "ready" );
+ }
+ }
+} );
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called
+ // after the browser event has already occurred.
+ // Support: IE9-10 only
+ // Older IE sometimes signals "interactive" too soon
+ if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+ } else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ /* jshint -W018 */
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ register: function( owner, initial ) {
+ var value = initial || {};
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable, non-writable property
+ // configurability must be true to allow the property to be
+ // deleted with the delete operator
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ writable: true,
+ configurable: true
+ } );
+ }
+ return owner[ this.expando ];
+ },
+ cache: function( owner ) {
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( !acceptData( owner ) ) {
+ return {};
+ }
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ if ( typeof data === "string" ) {
+ cache[ data ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ prop ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+ owner[ this.expando ] && owner[ this.expando ][ key ];
+ },
+ access: function( owner, key, value ) {
+ var stored;
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ stored = this.get( owner, key );
+
+ return stored !== undefined ?
+ stored : this.get( owner, jQuery.camelCase( key ) );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i, name, camel,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key === undefined ) {
+ this.register( owner );
+
+ } else {
+
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = key.concat( key.map( jQuery.camelCase ) );
+ } else {
+ camel = jQuery.camelCase( key );
+
+ // Try the string as a key before any manipulation
+ if ( key in cache ) {
+ name = [ key, camel ];
+ } else {
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ name = camel;
+ name = name in cache ?
+ [ name ] : ( name.match( rnotwhite ) || [] );
+ }
+ }
+
+ i = name.length;
+
+ while ( i-- ) {
+ delete cache[ name[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <= 35-45+
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://code.google.com/p/chromium/issues/detail?id=378607
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE11+
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data, camelKey;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // with the key as-is
+ data = dataUser.get( elem, key ) ||
+
+ // Try to find dashed key if it exists (gh-2779)
+ // This is for 2.2.x only
+ dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
+
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ camelKey = jQuery.camelCase( key );
+
+ // Attempt to get data from the cache
+ // with the key camelized
+ data = dataUser.get( elem, camelKey );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, camelKey, undefined );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ camelKey = jQuery.camelCase( key );
+ this.each( function() {
+
+ // First, attempt to store a copy or reference of any
+ // data that might've been store with a camelCased key.
+ var data = dataUser.get( this, camelKey );
+
+ // For HTML5 data-* attribute interop, we have to
+ // store property names with dashes in a camelCase form.
+ // This might not apply to all properties...*
+ dataUser.set( this, camelKey, value );
+
+ // *... In the case of properties that might _actually_
+ // have dashes, we need to also store a copy of that
+ // unchanged property.
+ if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
+ dataUser.set( this, key, value );
+ }
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" ||
+ !jQuery.contains( elem.ownerDocument, elem );
+ };
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() { return tween.cur(); } :
+ function() { return jQuery.css( elem, prop, "" ); },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([\w:-]+)/ );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE9
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting <tbody> or other required elements.
+ thead: [ 1, "<table>", "</table>" ],
+ col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE9-11+
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== "undefined" ?
+ context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android<4.1, PhantomJS<2
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android<4.1, PhantomJS<2
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0-4.3, Safari<=5.1
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Safari<=5.1, Android<4.2
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<=11+
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "<textarea>x</textarea>";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE9
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, j, ret, matched, handleObj,
+ handlerQueue = [],
+ args = slice.call( arguments ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Support (at least): Chrome, IE9
+ // Find delegate handlers
+ // Black-hole SVG <use> instance trees (#13180)
+ //
+ // Support: Firefox<=42+
+ // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
+ if ( delegateCount && cur.nodeType &&
+ ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push( { elem: cur, handlers: matches } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
+ "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
+
+ fixHooks: {},
+
+ keyHooks: {
+ props: "char charCode key keyCode".split( " " ),
+ filter: function( event, original ) {
+
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
+
+ return event;
+ }
+ },
+
+ mouseHooks: {
+ props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
+ "screenX screenY toElement" ).split( " " ),
+ filter: function( event, original ) {
+ var eventDoc, doc, body,
+ button = original.button;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
+
+ event.pageX = original.clientX +
+ ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
+ ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY +
+ ( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
+ ( doc && doc.clientTop || body && body.clientTop || 0 );
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
+
+ return event;
+ }
+ },
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
+
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
+
+ event = new jQuery.Event( originalEvent );
+
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Support: Cordova 2.5 (WebKit) (#13255)
+ // All events should have a target; Cordova deviceready doesn't
+ if ( !event.target ) {
+ event.target = document;
+ }
+
+ // Support: Safari 6.0+, Chrome<28
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ focus: {
+
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ this.focus();
+ return false;
+ }
+ },
+ delegateType: "focusin"
+ },
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
+ },
+ click: {
+
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
+ this.click();
+ return false;
+ }
+ },
+
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android<4.0
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://code.google.com/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
+
+ // Support: IE 10-11, Edge 10240+
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /<script|<style|<link/i,
+
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptTypeMasked = /^true\/(.*)/,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Manipulating tables requires a tbody
+function manipulationTarget( elem, content ) {
+ return jQuery.nodeName( elem, "table" ) &&
+ jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
+
+ elem.getElementsByTagName( "tbody" )[ 0 ] ||
+ elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
+ elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+ elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+ return elem;
+}
+function restoreScript( elem ) {
+ var match = rscriptTypeMasked.exec( elem.type );
+
+ if ( match ) {
+ elem.type = match[ 1 ];
+ } else {
+ elem.removeAttribute( "type" );
+ }
+
+ return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+ var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // 1. Copy private data: events, handlers, etc.
+ if ( dataPriv.hasData( src ) ) {
+ pdataOld = dataPriv.access( src );
+ pdataCur = dataPriv.set( dest, pdataOld );
+ events = pdataOld.events;
+
+ if ( events ) {
+ delete pdataCur.handle;
+ pdataCur.events = {};
+
+ for ( type in events ) {
+ for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type, events[ type ][ i ] );
+ }
+ }
+ }
+ }
+
+ // 2. Copy user data
+ if ( dataUser.hasData( src ) ) {
+ udataOld = dataUser.access( src );
+ udataCur = jQuery.extend( {}, udataOld );
+
+ dataUser.set( dest, udataCur );
+ }
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // Fails to persist the checked state of a cloned checkbox or radio button.
+ if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+ dest.checked = src.checked;
+
+ // Fails to return the selected option to the default selected state when cloning options
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+ // Flatten any nested arrays
+ args = concat.apply( [], args );
+
+ var fragment, first, scripts, hasScripts, node, doc,
+ i = 0,
+ l = collection.length,
+ iNoClone = l - 1,
+ value = args[ 0 ],
+ isFunction = jQuery.isFunction( value );
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( isFunction ||
+ ( l > 1 && typeof value === "string" &&
+ !support.checkClone && rchecked.test( value ) ) ) {
+ return collection.each( function( index ) {
+ var self = collection.eq( index );
+ if ( isFunction ) {
+ args[ 0 ] = value.call( this, index, self.html() );
+ }
+ domManip( self, args, callback, ignored );
+ } );
+ }
+
+ if ( l ) {
+ fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+ first = fragment.firstChild;
+
+ if ( fragment.childNodes.length === 1 ) {
+ fragment = first;
+ }
+
+ // Require either new content or an interest in ignored elements to invoke the callback
+ if ( first || ignored ) {
+ scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+ hasScripts = scripts.length;
+
+ // Use the original fragment for the last item
+ // instead of the first because it can end up
+ // being emptied incorrectly in certain situations (#8070).
+ for ( ; i < l; i++ ) {
+ node = fragment;
+
+ if ( i !== iNoClone ) {
+ node = jQuery.clone( node, true, true );
+
+ // Keep references to cloned scripts for later restoration
+ if ( hasScripts ) {
+
+ // Support: Android<4.1, PhantomJS<2
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( scripts, getAll( node, "script" ) );
+ }
+ }
+
+ callback.call( collection[ i ], node, i );
+ }
+
+ if ( hasScripts ) {
+ doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+ // Reenable scripts
+ jQuery.map( scripts, restoreScript );
+
+ // Evaluate executable scripts on first document insertion
+ for ( i = 0; i < hasScripts; i++ ) {
+ node = scripts[ i ];
+ if ( rscriptType.test( node.type || "" ) &&
+ !dataPriv.access( node, "globalEval" ) &&
+ jQuery.contains( doc, node ) ) {
+
+ if ( node.src ) {
+
+ // Optional AJAX dependency, but won't run scripts if not present
+ if ( jQuery._evalUrl ) {
+ jQuery._evalUrl( node.src );
+ }
+ } else {
+ jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return collection;
+}
+
+function remove( elem, selector, keepData ) {
+ var node,
+ nodes = selector ? jQuery.filter( selector, elem ) : elem,
+ i = 0;
+
+ for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+ if ( !keepData && node.nodeType === 1 ) {
+ jQuery.cleanData( getAll( node ) );
+ }
+
+ if ( node.parentNode ) {
+ if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+ setGlobalEval( getAll( node, "script" ) );
+ }
+ node.parentNode.removeChild( node );
+ }
+ }
+
+ return elem;
+}
+
+jQuery.extend( {
+ htmlPrefilter: function( html ) {
+ return html.replace( rxhtmlTag, "<$1></$2>" );
+ },
+
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var i, l, srcElements, destElements,
+ clone = elem.cloneNode( true ),
+ inPage = jQuery.contains( elem.ownerDocument, elem );
+
+ // Fix IE cloning issues
+ if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+ !jQuery.isXMLDoc( elem ) ) {
+
+ // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
+ destElements = getAll( clone );
+ srcElements = getAll( elem );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ fixInput( srcElements[ i ], destElements[ i ] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ if ( deepDataAndEvents ) {
+ srcElements = srcElements || getAll( elem );
+ destElements = destElements || getAll( clone );
+
+ for ( i = 0, l = srcElements.length; i < l; i++ ) {
+ cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+ }
+ } else {
+ cloneCopyEvent( elem, clone );
+ }
+ }
+
+ // Preserve script evaluation history
+ destElements = getAll( clone, "script" );
+ if ( destElements.length > 0 ) {
+ setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ cleanData: function( elems ) {
+ var data, elem, type,
+ special = jQuery.event.special,
+ i = 0;
+
+ for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+ if ( acceptData( elem ) ) {
+ if ( ( data = elem[ dataPriv.expando ] ) ) {
+ if ( data.events ) {
+ for ( type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ // Support: Chrome <= 35-45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataPriv.expando ] = undefined;
+ }
+ if ( elem[ dataUser.expando ] ) {
+
+ // Support: Chrome <= 35-45+
+ // Assign undefined instead of using delete, see Data#remove
+ elem[ dataUser.expando ] = undefined;
+ }
+ }
+ }
+ }
+} );
+
+jQuery.fn.extend( {
+
+ // Keep domManip exposed until 3.0 (gh-2225)
+ domManip: domManip,
+
+ detach: function( selector ) {
+ return remove( this, selector, true );
+ },
+
+ remove: function( selector ) {
+ return remove( this, selector );
+ },
+
+ text: function( value ) {
+ return access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().each( function() {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ this.textContent = value;
+ }
+ } );
+ }, null, value, arguments.length );
+ },
+
+ append: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.appendChild( elem );
+ }
+ } );
+ },
+
+ prepend: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+ var target = manipulationTarget( this, elem );
+ target.insertBefore( elem, target.firstChild );
+ }
+ } );
+ },
+
+ before: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this );
+ }
+ } );
+ },
+
+ after: function() {
+ return domManip( this, arguments, function( elem ) {
+ if ( this.parentNode ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ }
+ } );
+ },
+
+ empty: function() {
+ var elem,
+ i = 0;
+
+ for ( ; ( elem = this[ i ] ) != null; i++ ) {
+ if ( elem.nodeType === 1 ) {
+
+ // Prevent memory leaks
+ jQuery.cleanData( getAll( elem, false ) );
+
+ // Remove any remaining nodes
+ elem.textContent = "";
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function() {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ } );
+ },
+
+ html: function( value ) {
+ return access( this, function( value ) {
+ var elem = this[ 0 ] || {},
+ i = 0,
+ l = this.length;
+
+ if ( value === undefined && elem.nodeType === 1 ) {
+ return elem.innerHTML;
+ }
+
+ // See if we can take a shortcut and just use innerHTML
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+ value = jQuery.htmlPrefilter( value );
+
+ try {
+ for ( ; i < l; i++ ) {
+ elem = this[ i ] || {};
+
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( getAll( elem, false ) );
+ elem.innerHTML = value;
+ }
+ }
+
+ elem = 0;
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch ( e ) {}
+ }
+
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
+ },
+
+ replaceWith: function() {
+ var ignored = [];
+
+ // Make the changes, replacing each non-ignored context element with the new content
+ return domManip( this, arguments, function( elem ) {
+ var parent = this.parentNode;
+
+ if ( jQuery.inArray( this, ignored ) < 0 ) {
+ jQuery.cleanData( getAll( this ) );
+ if ( parent ) {
+ parent.replaceChild( elem, this );
+ }
+ }
+
+ // Force callback invocation
+ }, ignored );
+ }
+} );
+
+jQuery.each( {
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var elems,
+ ret = [],
+ insert = jQuery( selector ),
+ last = insert.length - 1,
+ i = 0;
+
+ for ( ; i <= last; i++ ) {
+ elems = i === last ? this : this.clone( true );
+ jQuery( insert[ i ] )[ original ]( elems );
+
+ // Support: QtWebKit
+ // .get() because push.apply(_, arraylike) throws
+ push.apply( ret, elems.get() );
+ }
+
+ return this.pushStack( ret );
+ };
+} );
+
+
+var iframe,
+ elemdisplay = {
+
+ // Support: Firefox
+ // We have to pre-define these values for FF (#10227)
+ HTML: "block",
+ BODY: "block"
+ };
+
+/**
+ * Retrieve the actual display of a element
+ * @param {String} name nodeName of the element
+ * @param {Object} doc Document object
+ */
+
+// Called only from within defaultDisplay
+function actualDisplay( name, doc ) {
+ var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
+
+ display = jQuery.css( elem[ 0 ], "display" );
+
+ // We don't have any data stored on the element,
+ // so use "detach" method as fast way to get rid of the element
+ elem.detach();
+
+ return display;
+}
+
+/**
+ * Try to determine the default display value of an element
+ * @param {String} nodeName
+ */
+function defaultDisplay( nodeName ) {
+ var doc = document,
+ display = elemdisplay[ nodeName ];
+
+ if ( !display ) {
+ display = actualDisplay( nodeName, doc );
+
+ // If the simple way fails, read from inside an iframe
+ if ( display === "none" || !display ) {
+
+ // Use the already-created iframe if possible
+ iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
+ .appendTo( doc.documentElement );
+
+ // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
+ doc = iframe[ 0 ].contentDocument;
+
+ // Support: IE
+ doc.write();
+ doc.close();
+
+ display = actualDisplay( nodeName, doc );
+ iframe.detach();
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return display;
+}
+var rmargin = ( /^margin/ );
+
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+ // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ var view = elem.ownerDocument.defaultView;
+
+ if ( !view || !view.opener ) {
+ view = window;
+ }
+
+ return view.getComputedStyle( elem );
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+var documentElement = document.documentElement;
+
+
+
+( function() {
+ var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
+ container = document.createElement( "div" ),
+ div = document.createElement( "div" );
+
+ // Finish early in limited (non-browser) environments
+ if ( !div.style ) {
+ return;
+ }
+
+ // Support: IE9-11+
+ // Style of cloned element affects source element cloned (#8908)
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+ container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
+ "padding:0;margin-top:1px;position:absolute";
+ container.appendChild( div );
+
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
+ // so they're executed at the same time to save the second computation.
+ function computeStyleTests() {
+ div.style.cssText =
+
+ // Support: Firefox<29, Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
+ "position:relative;display:block;" +
+ "margin:auto;border:1px;padding:1px;" +
+ "top:1%;width:50%";
+ div.innerHTML = "";
+ documentElement.appendChild( container );
+
+ var divStyle = window.getComputedStyle( div );
+ pixelPositionVal = divStyle.top !== "1%";
+ reliableMarginLeftVal = divStyle.marginLeft === "2px";
+ boxSizingReliableVal = divStyle.width === "4px";
+
+ // Support: Android 4.0 - 4.3 only
+ // Some styles come back with percentage values, even though they shouldn't
+ div.style.marginRight = "50%";
+ pixelMarginRightVal = divStyle.marginRight === "4px";
+
+ documentElement.removeChild( container );
+ }
+
+ jQuery.extend( support, {
+ pixelPosition: function() {
+
+ // This test is executed only once but we still do memoizing
+ // since we can use the boxSizingReliable pre-computing.
+ // No need to check if the test was already performed, though.
+ computeStyleTests();
+ return pixelPositionVal;
+ },
+ boxSizingReliable: function() {
+ if ( boxSizingReliableVal == null ) {
+ computeStyleTests();
+ }
+ return boxSizingReliableVal;
+ },
+ pixelMarginRight: function() {
+
+ // Support: Android 4.0-4.3
+ // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
+ // since that compresses better and they're computed together anyway.
+ if ( boxSizingReliableVal == null ) {
+ computeStyleTests();
+ }
+ return pixelMarginRightVal;
+ },
+ reliableMarginLeft: function() {
+
+ // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
+ if ( boxSizingReliableVal == null ) {
+ computeStyleTests();
+ }
+ return reliableMarginLeftVal;
+ },
+ reliableMarginRight: function() {
+
+ // Support: Android 2.3
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // This support function is only executed once so no memoizing is needed.
+ var ret,
+ marginDiv = div.appendChild( document.createElement( "div" ) );
+
+ // Reset CSS: box-sizing; display; margin; border; padding
+ marginDiv.style.cssText = div.style.cssText =
+
+ // Support: Android 2.3
+ // Vendor-prefix box-sizing
+ "-webkit-box-sizing:content-box;box-sizing:content-box;" +
+ "display:block;margin:0;border:0;padding:0";
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+ documentElement.appendChild( container );
+
+ ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );
+
+ documentElement.removeChild( container );
+ div.removeChild( marginDiv );
+
+ return ret;
+ }
+ } );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+ var width, minWidth, maxWidth, ret,
+ style = elem.style;
+
+ computed = computed || getStyles( elem );
+ ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
+
+ // Support: Opera 12.1x only
+ // Fall back to style even without computed
+ // computed is undefined for elems on document fragments
+ if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+
+ // Support: IE9
+ // getPropertyValue is only needed for .css('filter') (#12537)
+ if ( computed ) {
+
+ // A tribute to the "awesome hack by Dean Edwards"
+ // Android Browser returns percentage for some values,
+ // but width seems to be reliably pixels.
+ // This is against the CSSOM draft spec:
+ // http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
+
+ // Remember the original values
+ width = style.width;
+ minWidth = style.minWidth;
+ maxWidth = style.maxWidth;
+
+ // Put in the new values to get a computed value out
+ style.minWidth = style.maxWidth = style.width = ret;
+ ret = computed.width;
+
+ // Revert the changed values
+ style.width = width;
+ style.minWidth = minWidth;
+ style.maxWidth = maxWidth;
+ }
+ }
+
+ return ret !== undefined ?
+
+ // Support: IE9-11+
+ // IE returns zIndex value as an integer.
+ ret + "" :
+ ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+ // Define the hook, we'll check on the first run if it's really needed.
+ return {
+ get: function() {
+ if ( conditionFn() ) {
+
+ // Hook not needed (or it's not possible to use it due
+ // to missing dependency), remove it.
+ delete this.get;
+ return;
+ }
+
+ // Hook needed; redefine it so that the support test is not executed again.
+ return ( this.get = hookFn ).apply( this, arguments );
+ }
+ };
+}
+
+
+var
+
+ // Swappable if display is none or starts with table
+ // except "table", "table-cell", or "table-caption"
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssNormalTransform = {
+ letterSpacing: "0",
+ fontWeight: "400"
+ },
+
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
+ emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+ // Shortcut for names that are not vendor prefixed
+ if ( name in emptyStyle ) {
+ return name;
+ }
+
+ // Check for vendor prefixed names
+ var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+ i = cssPrefixes.length;
+
+ while ( i-- ) {
+ name = cssPrefixes[ i ] + capName;
+ if ( name in emptyStyle ) {
+ return name;
+ }
+ }
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+ // Any relative (+/-) values have already been
+ // normalized at this point
+ var matches = rcssNum.exec( value );
+ return matches ?
+
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
+ Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+ value;
+}
+
+function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
+
+ // If we already have the right measurement, avoid augmentation
+ 4 :
+
+ // Otherwise initialize for horizontal or vertical properties
+ name === "width" ? 1 : 0,
+
+ val = 0;
+
+ for ( ; i < 4; i += 2 ) {
+
+ // Both box models exclude margin, so add it if we want it
+ if ( extra === "margin" ) {
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
+ }
+
+ if ( isBorderBox ) {
+
+ // border-box includes padding, so remove it if we want content
+ if ( extra === "content" ) {
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+ }
+
+ // At this point, extra isn't border nor margin, so remove border
+ if ( extra !== "margin" ) {
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ } else {
+
+ // At this point, extra isn't content, so add padding
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+ // At this point, extra isn't content nor padding, so add border
+ if ( extra !== "padding" ) {
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+ }
+ }
+ }
+
+ return val;
+}
+
+function getWidthOrHeight( elem, name, extra ) {
+
+ // Start with offset property, which is equivalent to the border-box value
+ var valueIsBorderBox = true,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ styles = getStyles( elem ),
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
+
+ // Support: IE11 only
+ // In IE 11 fullscreen elements inside of an iframe have
+ // 100x too small dimensions (gh-1764).
+ if ( document.msFullscreenElement && window.top !== window ) {
+
+ // Support: IE11 only
+ // Running getBoundingClientRect on a disconnected node
+ // in IE throws an error.
+ if ( elem.getClientRects().length ) {
+ val = Math.round( elem.getBoundingClientRect()[ name ] * 100 );
+ }
+ }
+
+ // Some non-html elements return undefined for offsetWidth, so check for null/undefined
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
+ if ( val <= 0 || val == null ) {
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, styles );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+ }
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test( val ) ) {
+ return val;
+ }
+
+ // Check for style in case a browser which returns unreliable values
+ // for getComputedStyle silently falls back to the reliable elem.style
+ valueIsBorderBox = isBorderBox &&
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
+
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+ }
+
+ // Use the active box-sizing model to add/subtract irrelevant styles
+ return ( val +
+ augmentWidthOrHeight(
+ elem,
+ name,
+ extra || ( isBorderBox ? "border" : "content" ),
+ valueIsBorderBox,
+ styles
+ )
+ ) + "px";
+}
+
+function showHide( elements, show ) {
+ var display, elem, hidden,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ values[ index ] = dataPriv.get( elem, "olddisplay" );
+ display = elem.style.display;
+ if ( show ) {
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !values[ index ] && display === "none" ) {
+ elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( elem.style.display === "" && isHidden( elem ) ) {
+ values[ index ] = dataPriv.access(
+ elem,
+ "olddisplay",
+ defaultDisplay( elem.nodeName )
+ );
+ }
+ } else {
+ hidden = isHidden( elem );
+
+ if ( display !== "none" || !hidden ) {
+ dataPriv.set(
+ elem,
+ "olddisplay",
+ hidden ? display : jQuery.css( elem, "display" )
+ );
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( index = 0; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
+ elem.style.display = show ? values[ index ] || "" : "none";
+ }
+ }
+
+ return elements;
+}
+
+jQuery.extend( {
+
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity" );
+ return ret === "" ? "1" : ret;
+ }
+ }
+ }
+ },
+
+ // Don't automatically add "px" to these possibly-unitless properties
+ cssNumber: {
+ "animationIterationCount": true,
+ "columnCount": true,
+ "fillOpacity": true,
+ "flexGrow": true,
+ "flexShrink": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "order": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ "float": "cssFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, hooks,
+ origName = jQuery.camelCase( name ),
+ style = elem.style;
+
+ name = jQuery.cssProps[ origName ] ||
+ ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+ // Gets hook for the prefixed version, then unprefixed version
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Convert "+=" or "-=" to relative numbers (#7345)
+ if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+ value = adjustCSS( elem, name, ret );
+
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // Make sure that null and NaN values aren't set (#7116)
+ if ( value == null || value !== value ) {
+ return;
+ }
+
+ // If a number was passed in, add the unit (except for certain CSS properties)
+ if ( type === "number" ) {
+ value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+ }
+
+ // Support: IE9-11+
+ // background-* props affect original clone's values
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+ style[ name ] = "inherit";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !( "set" in hooks ) ||
+ ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+ style[ name ] = value;
+ }
+
+ } else {
+
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks &&
+ ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra, styles ) {
+ var val, num, hooks,
+ origName = jQuery.camelCase( name );
+
+ // Make sure that we're working with the right name
+ name = jQuery.cssProps[ origName ] ||
+ ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
+
+ // Try prefixed name followed by the unprefixed name
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks ) {
+ val = hooks.get( elem, true, extra );
+ }
+
+ // Otherwise, if a way to get the computed value exists, use that
+ if ( val === undefined ) {
+ val = curCSS( elem, name, styles );
+ }
+
+ // Convert "normal" to computed value
+ if ( val === "normal" && name in cssNormalTransform ) {
+ val = cssNormalTransform[ name ];
+ }
+
+ // Make numeric if forced or a qualifier was provided and val looks numeric
+ if ( extra === "" || extra ) {
+ num = parseFloat( val );
+ return extra === true || isFinite( num ) ? num || 0 : val;
+ }
+ return val;
+ }
+} );
+
+jQuery.each( [ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+
+ // Certain elements can have dimension info if we invisibly show them
+ // but it must have a current display style that would benefit
+ return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+ elem.offsetWidth === 0 ?
+ swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ } ) :
+ getWidthOrHeight( elem, name, extra );
+ }
+ },
+
+ set: function( elem, value, extra ) {
+ var matches,
+ styles = extra && getStyles( elem ),
+ subtract = extra && augmentWidthOrHeight(
+ elem,
+ name,
+ extra,
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+ styles
+ );
+
+ // Convert to pixels if value adjustment is needed
+ if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+ ( matches[ 3 ] || "px" ) !== "px" ) {
+
+ elem.style[ name ] = value;
+ value = jQuery.css( elem, name );
+ }
+
+ return setPositiveNumber( elem, value, subtract );
+ }
+ };
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+ function( elem, computed ) {
+ if ( computed ) {
+ return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+ elem.getBoundingClientRect().left -
+ swap( elem, { marginLeft: 0 }, function() {
+ return elem.getBoundingClientRect().left;
+ } )
+ ) + "px";
+ }
+ }
+);
+
+// Support: Android 2.3
+jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
+ function( elem, computed ) {
+ if ( computed ) {
+ return swap( elem, { "display": "inline-block" },
+ curCSS, [ elem, "marginRight" ] );
+ }
+ }
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i = 0,
+ expanded = {},
+
+ // Assumes a single number if not a string
+ parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+ for ( ; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+
+ if ( !rmargin.test( prefix ) ) {
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+ }
+} );
+
+jQuery.fn.extend( {
+ css: function( name, value ) {
+ return access( this, function( elem, name, value ) {
+ var styles, len,
+ map = {},
+ i = 0;
+
+ if ( jQuery.isArray( name ) ) {
+ styles = getStyles( elem );
+ len = name.length;
+
+ for ( ; i < len; i++ ) {
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+ }
+
+ return map;
+ }
+
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ }, name, value, arguments.length > 1 );
+ },
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHidden( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+ return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+ constructor: Tween,
+ init: function( elem, options, prop, end, easing, unit ) {
+ this.elem = elem;
+ this.prop = prop;
+ this.easing = easing || jQuery.easing._default;
+ this.options = options;
+ this.start = this.now = this.cur();
+ this.end = end;
+ this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ },
+ cur: function() {
+ var hooks = Tween.propHooks[ this.prop ];
+
+ return hooks && hooks.get ?
+ hooks.get( this ) :
+ Tween.propHooks._default.get( this );
+ },
+ run: function( percent ) {
+ var eased,
+ hooks = Tween.propHooks[ this.prop ];
+
+ if ( this.options.duration ) {
+ this.pos = eased = jQuery.easing[ this.easing ](
+ percent, this.options.duration * percent, 0, 1, this.options.duration
+ );
+ } else {
+ this.pos = eased = percent;
+ }
+ this.now = ( this.end - this.start ) * eased + this.start;
+
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ if ( hooks && hooks.set ) {
+ hooks.set( this );
+ } else {
+ Tween.propHooks._default.set( this );
+ }
+ return this;
+ }
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+ _default: {
+ get: function( tween ) {
+ var result;
+
+ // Use a property on the element directly when it is not a DOM element,
+ // or when there is no matching style property that exists.
+ if ( tween.elem.nodeType !== 1 ||
+ tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+ return tween.elem[ tween.prop ];
+ }
+
+ // Passing an empty string as a 3rd parameter to .css will automatically
+ // attempt a parseFloat and fallback to a string if the parse fails.
+ // Simple values such as "10px" are parsed to Float;
+ // complex values such as "rotate(1rad)" are returned as-is.
+ result = jQuery.css( tween.elem, tween.prop, "" );
+
+ // Empty strings, null, undefined and "auto" are converted to 0.
+ return !result || result === "auto" ? 0 : result;
+ },
+ set: function( tween ) {
+
+ // Use step hook for back compat.
+ // Use cssHook if its there.
+ // Use .style if available and use plain properties where available.
+ if ( jQuery.fx.step[ tween.prop ] ) {
+ jQuery.fx.step[ tween.prop ]( tween );
+ } else if ( tween.elem.nodeType === 1 &&
+ ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+ jQuery.cssHooks[ tween.prop ] ) ) {
+ jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+ } else {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+ }
+};
+
+// Support: IE9
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+ set: function( tween ) {
+ if ( tween.elem.nodeType && tween.elem.parentNode ) {
+ tween.elem[ tween.prop ] = tween.now;
+ }
+ }
+};
+
+jQuery.easing = {
+ linear: function( p ) {
+ return p;
+ },
+ swing: function( p ) {
+ return 0.5 - Math.cos( p * Math.PI ) / 2;
+ },
+ _default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back Compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+ fxNow, timerId,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rrun = /queueHooks$/;
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ window.setTimeout( function() {
+ fxNow = undefined;
+ } );
+ return ( fxNow = jQuery.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+ var which,
+ i = 0,
+ attrs = { height: type };
+
+ // If we include width, step value is 1 to do all cssExpand values,
+ // otherwise step value is 2 to skip over Left and Right
+ includeWidth = includeWidth ? 1 : 0;
+ for ( ; i < 4 ; i += 2 - includeWidth ) {
+ which = cssExpand[ i ];
+ attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+ }
+
+ if ( includeWidth ) {
+ attrs.opacity = attrs.width = type;
+ }
+
+ return attrs;
+}
+
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+ // We're done with this property
+ return tween;
+ }
+ }
+}
+
+function defaultPrefilter( elem, props, opts ) {
+ /* jshint validthis: true */
+ var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
+ anim = this,
+ orig = {},
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = dataPriv.get( elem, "fxshow" );
+
+ // Handle queue: false promises
+ if ( !opts.queue ) {
+ hooks = jQuery._queueHooks( elem, "fx" );
+ if ( hooks.unqueued == null ) {
+ hooks.unqueued = 0;
+ oldfire = hooks.empty.fire;
+ hooks.empty.fire = function() {
+ if ( !hooks.unqueued ) {
+ oldfire();
+ }
+ };
+ }
+ hooks.unqueued++;
+
+ anim.always( function() {
+
+ // Ensure the complete handler is called before this completes
+ anim.always( function() {
+ hooks.unqueued--;
+ if ( !jQuery.queue( elem, "fx" ).length ) {
+ hooks.empty.fire();
+ }
+ } );
+ } );
+ }
+
+ // Height/width overflow pass
+ if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
+
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE9-10 do not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height animated
+ display = jQuery.css( elem, "display" );
+
+ // Test default display if display is currently "none"
+ checkDisplay = display === "none" ?
+ dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
+
+ if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
+ style.display = "inline-block";
+ }
+ }
+
+ if ( opts.overflow ) {
+ style.overflow = "hidden";
+ anim.always( function() {
+ style.overflow = opts.overflow[ 0 ];
+ style.overflowX = opts.overflow[ 1 ];
+ style.overflowY = opts.overflow[ 2 ];
+ } );
+ }
+
+ // show/hide pass
+ for ( prop in props ) {
+ value = props[ prop ];
+ if ( rfxtypes.exec( value ) ) {
+ delete props[ prop ];
+ toggle = toggle || value === "toggle";
+ if ( value === ( hidden ? "hide" : "show" ) ) {
+
+ // If there is dataShow left over from a stopped hide or show
+ // and we are going to proceed with show, we should pretend to be hidden
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+ hidden = true;
+ } else {
+ continue;
+ }
+ }
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+
+ // Any non-fx value stops us from restoring the original display value
+ } else {
+ display = undefined;
+ }
+ }
+
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = dataPriv.access( elem, "fxshow", {} );
+ }
+
+ // Store state if its toggle - enables .stop().toggle() to "reverse"
+ if ( toggle ) {
+ dataShow.hidden = !hidden;
+ }
+ if ( hidden ) {
+ jQuery( elem ).show();
+ } else {
+ anim.done( function() {
+ jQuery( elem ).hide();
+ } );
+ }
+ anim.done( function() {
+ var prop;
+
+ dataPriv.remove( elem, "fxshow" );
+ for ( prop in orig ) {
+ jQuery.style( elem, prop, orig[ prop ] );
+ }
+ } );
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+
+ if ( !( prop in dataShow ) ) {
+ dataShow[ prop ] = tween.start;
+ if ( hidden ) {
+ tween.end = tween.start;
+ tween.start = prop === "width" || prop === "height" ? 1 : 0;
+ }
+ }
+ }
+
+ // If this is a noop like .hide().hide(), restore an overwritten display value
+ } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
+ style.display = display;
+ }
+}
+
+function propFilter( props, specialEasing ) {
+ var index, name, easing, value, hooks;
+
+ // camelCase, specialEasing and expand cssHook pass
+ for ( index in props ) {
+ name = jQuery.camelCase( index );
+ easing = specialEasing[ name ];
+ value = props[ index ];
+ if ( jQuery.isArray( value ) ) {
+ easing = value[ 1 ];
+ value = props[ index ] = value[ 0 ];
+ }
+
+ if ( index !== name ) {
+ props[ name ] = value;
+ delete props[ index ];
+ }
+
+ hooks = jQuery.cssHooks[ name ];
+ if ( hooks && "expand" in hooks ) {
+ value = hooks.expand( value );
+ delete props[ name ];
+
+ // Not quite $.extend, this won't overwrite existing keys.
+ // Reusing 'index' because we have the correct "name"
+ for ( index in value ) {
+ if ( !( index in props ) ) {
+ props[ index ] = value[ index ];
+ specialEasing[ index ] = easing;
+ }
+ }
+ } else {
+ specialEasing[ name ] = easing;
+ }
+ }
+}
+
+function Animation( elem, properties, options ) {
+ var result,
+ stopped,
+ index = 0,
+ length = Animation.prefilters.length,
+ deferred = jQuery.Deferred().always( function() {
+
+ // Don't match elem in the :animated selector
+ delete tick.elem;
+ } ),
+ tick = function() {
+ if ( stopped ) {
+ return false;
+ }
+ var currentTime = fxNow || createFxNow(),
+ remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+ // Support: Android 2.3
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ temp = remaining / animation.duration || 0,
+ percent = 1 - temp,
+ index = 0,
+ length = animation.tweens.length;
+
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( percent );
+ }
+
+ deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+ if ( percent < 1 && length ) {
+ return remaining;
+ } else {
+ deferred.resolveWith( elem, [ animation ] );
+ return false;
+ }
+ },
+ animation = deferred.promise( {
+ elem: elem,
+ props: jQuery.extend( {}, properties ),
+ opts: jQuery.extend( true, {
+ specialEasing: {},
+ easing: jQuery.easing._default
+ }, options ),
+ originalProperties: properties,
+ originalOptions: options,
+ startTime: fxNow || createFxNow(),
+ duration: options.duration,
+ tweens: [],
+ createTween: function( prop, end ) {
+ var tween = jQuery.Tween( elem, animation.opts, prop, end,
+ animation.opts.specialEasing[ prop ] || animation.opts.easing );
+ animation.tweens.push( tween );
+ return tween;
+ },
+ stop: function( gotoEnd ) {
+ var index = 0,
+
+ // If we are going to the end, we want to run all the tweens
+ // otherwise we skip this part
+ length = gotoEnd ? animation.tweens.length : 0;
+ if ( stopped ) {
+ return this;
+ }
+ stopped = true;
+ for ( ; index < length ; index++ ) {
+ animation.tweens[ index ].run( 1 );
+ }
+
+ // Resolve when we played the last frame; otherwise, reject
+ if ( gotoEnd ) {
+ deferred.notifyWith( elem, [ animation, 1, 0 ] );
+ deferred.resolveWith( elem, [ animation, gotoEnd ] );
+ } else {
+ deferred.rejectWith( elem, [ animation, gotoEnd ] );
+ }
+ return this;
+ }
+ } ),
+ props = animation.props;
+
+ propFilter( props, animation.opts.specialEasing );
+
+ for ( ; index < length ; index++ ) {
+ result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+ if ( result ) {
+ if ( jQuery.isFunction( result.stop ) ) {
+ jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+ jQuery.proxy( result.stop, result );
+ }
+ return result;
+ }
+ }
+
+ jQuery.map( props, createTween, animation );
+
+ if ( jQuery.isFunction( animation.opts.start ) ) {
+ animation.opts.start.call( elem, animation );
+ }
+
+ jQuery.fx.timer(
+ jQuery.extend( tick, {
+ elem: elem,
+ anim: animation,
+ queue: animation.opts.queue
+ } )
+ );
+
+ // attach callbacks from options
+ return animation.progress( animation.opts.progress )
+ .done( animation.opts.done, animation.opts.complete )
+ .fail( animation.opts.fail )
+ .always( animation.opts.always );
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+ tweeners: {
+ "*": [ function( prop, value ) {
+ var tween = this.createTween( prop, value );
+ adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+ return tween;
+ } ]
+ },
+
+ tweener: function( props, callback ) {
+ if ( jQuery.isFunction( props ) ) {
+ callback = props;
+ props = [ "*" ];
+ } else {
+ props = props.match( rnotwhite );
+ }
+
+ var prop,
+ index = 0,
+ length = props.length;
+
+ for ( ; index < length ; index++ ) {
+ prop = props[ index ];
+ Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+ Animation.tweeners[ prop ].unshift( callback );
+ }
+ },
+
+ prefilters: [ defaultPrefilter ],
+
+ prefilter: function( callback, prepend ) {
+ if ( prepend ) {
+ Animation.prefilters.unshift( callback );
+ } else {
+ Animation.prefilters.push( callback );
+ }
+ }
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
+ opt.duration : opt.duration in jQuery.fx.speeds ?
+ jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
+
+ // Normalize opt.queue - true/undefined/null -> "fx"
+ if ( opt.queue == null || opt.queue === true ) {
+ opt.queue = "fx";
+ }
+
+ // Queueing
+ opt.old = opt.complete;
+
+ opt.complete = function() {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue ) {
+ jQuery.dequeue( this, opt.queue );
+ }
+ };
+
+ return opt;
+};
+
+jQuery.fn.extend( {
+ fadeTo: function( speed, to, easing, callback ) {
+
+ // Show any hidden elements after setting opacity to 0
+ return this.filter( isHidden ).css( "opacity", 0 ).show()
+
+ // Animate to the value specified
+ .end().animate( { opacity: to }, speed, easing, callback );
+ },
+ animate: function( prop, speed, easing, callback ) {
+ var empty = jQuery.isEmptyObject( prop ),
+ optall = jQuery.speed( speed, easing, callback ),
+ doAnimation = function() {
+
+ // Operate on a copy of prop so per-property easing won't be lost
+ var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+ // Empty animations, or finishing resolves immediately
+ if ( empty || dataPriv.get( this, "finish" ) ) {
+ anim.stop( true );
+ }
+ };
+ doAnimation.finish = doAnimation;
+
+ return empty || optall.queue === false ?
+ this.each( doAnimation ) :
+ this.queue( optall.queue, doAnimation );
+ },
+ stop: function( type, clearQueue, gotoEnd ) {
+ var stopQueue = function( hooks ) {
+ var stop = hooks.stop;
+ delete hooks.stop;
+ stop( gotoEnd );
+ };
+
+ if ( typeof type !== "string" ) {
+ gotoEnd = clearQueue;
+ clearQueue = type;
+ type = undefined;
+ }
+ if ( clearQueue && type !== false ) {
+ this.queue( type || "fx", [] );
+ }
+
+ return this.each( function() {
+ var dequeue = true,
+ index = type != null && type + "queueHooks",
+ timers = jQuery.timers,
+ data = dataPriv.get( this );
+
+ if ( index ) {
+ if ( data[ index ] && data[ index ].stop ) {
+ stopQueue( data[ index ] );
+ }
+ } else {
+ for ( index in data ) {
+ if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+ stopQueue( data[ index ] );
+ }
+ }
+ }
+
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this &&
+ ( type == null || timers[ index ].queue === type ) ) {
+
+ timers[ index ].anim.stop( gotoEnd );
+ dequeue = false;
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Start the next in the queue if the last step wasn't forced.
+ // Timers currently will call their complete callbacks, which
+ // will dequeue but only if they were gotoEnd.
+ if ( dequeue || !gotoEnd ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ finish: function( type ) {
+ if ( type !== false ) {
+ type = type || "fx";
+ }
+ return this.each( function() {
+ var index,
+ data = dataPriv.get( this ),
+ queue = data[ type + "queue" ],
+ hooks = data[ type + "queueHooks" ],
+ timers = jQuery.timers,
+ length = queue ? queue.length : 0;
+
+ // Enable finishing flag on private data
+ data.finish = true;
+
+ // Empty the queue first
+ jQuery.queue( this, type, [] );
+
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
+ }
+
+ // Look for any active animations, and finish them
+ for ( index = timers.length; index--; ) {
+ if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+ timers[ index ].anim.stop( true );
+ timers.splice( index, 1 );
+ }
+ }
+
+ // Look for any animations in the old queue and finish them
+ for ( index = 0; index < length; index++ ) {
+ if ( queue[ index ] && queue[ index ].finish ) {
+ queue[ index ].finish.call( this );
+ }
+ }
+
+ // Turn off finishing flag
+ delete data.finish;
+ } );
+ }
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+ var cssFn = jQuery.fn[ name ];
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return speed == null || typeof speed === "boolean" ?
+ cssFn.apply( this, arguments ) :
+ this.animate( genFx( name, true ), speed, easing, callback );
+ };
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+ slideDown: genFx( "show" ),
+ slideUp: genFx( "hide" ),
+ slideToggle: genFx( "toggle" ),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+ var timer,
+ i = 0,
+ timers = jQuery.timers;
+
+ fxNow = jQuery.now();
+
+ for ( ; i < timers.length; i++ ) {
+ timer = timers[ i ];
+
+ // Checks the timer has not already been removed
+ if ( !timer() && timers[ i ] === timer ) {
+ timers.splice( i--, 1 );
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+ jQuery.timers.push( timer );
+ if ( timer() ) {
+ jQuery.fx.start();
+ } else {
+ jQuery.timers.pop();
+ }
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+ if ( !timerId ) {
+ timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
+ }
+};
+
+jQuery.fx.stop = function() {
+ window.clearInterval( timerId );
+
+ timerId = null;
+};
+
+jQuery.fx.speeds = {
+ slow: 600,
+ fast: 200,
+
+ // Default speed
+ _default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = window.setTimeout( next, time );
+ hooks.stop = function() {
+ window.clearTimeout( timeout );
+ };
+ } );
+};
+
+
+( function() {
+ var input = document.createElement( "input" ),
+ select = document.createElement( "select" ),
+ opt = select.appendChild( document.createElement( "option" ) );
+
+ input.type = "checkbox";
+
+ // Support: iOS<=5.1, Android<=4.2+
+ // Default value for a checkbox should be "on"
+ support.checkOn = input.value !== "";
+
+ // Support: IE<=11+
+ // Must access selectedIndex to make default options select
+ support.optSelected = opt.selected;
+
+ // Support: Android<=2.3
+ // Options inside disabled selects are incorrectly marked as disabled
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Support: IE<=11+
+ // An input loses its value after becoming a radio
+ input = document.createElement( "input" );
+ input.value = "t";
+ input.type = "radio";
+ support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+ attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+ attr: function( name, value ) {
+ return access( this, jQuery.attr, name, value, arguments.length > 1 );
+ },
+
+ removeAttr: function( name ) {
+ return this.each( function() {
+ jQuery.removeAttr( this, name );
+ } );
+ }
+} );
+
+jQuery.extend( {
+ attr: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set attributes on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === "undefined" ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+ }
+
+ if ( value !== undefined ) {
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return;
+ }
+
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ elem.setAttribute( name, value + "" );
+ return value;
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ ret = jQuery.find.attr( elem, name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ? undefined : ret;
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !support.radioValue && value === "radio" &&
+ jQuery.nodeName( elem, "input" ) ) {
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ }
+ },
+
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( rnotwhite );
+
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( ( name = attrNames[ i++ ] ) ) {
+ propName = jQuery.propFix[ name ] || name;
+
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+
+ // Set corresponding property to false
+ elem[ propName ] = false;
+ }
+
+ elem.removeAttribute( name );
+ }
+ }
+ }
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ elem.setAttribute( name, name );
+ }
+ return name;
+ }
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = attrHandle[ name ] || jQuery.find.attr;
+
+ attrHandle[ name ] = function( elem, name, isXML ) {
+ var ret, handle;
+ if ( !isXML ) {
+
+ // Avoid an infinite loop by temporarily removing this function from the getter
+ handle = attrHandle[ name ];
+ attrHandle[ name ] = ret;
+ ret = getter( elem, name, isXML ) != null ?
+ name.toLowerCase() :
+ null;
+ attrHandle[ name ] = handle;
+ }
+ return ret;
+ };
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+ rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+ prop: function( name, value ) {
+ return access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
+
+ removeProp: function( name ) {
+ return this.each( function() {
+ delete this[ jQuery.propFix[ name ] || name ];
+ } );
+ }
+} );
+
+jQuery.extend( {
+ prop: function( elem, name, value ) {
+ var ret, hooks,
+ nType = elem.nodeType;
+
+ // Don't get/set properties on text, comment and attribute nodes
+ if ( nType === 3 || nType === 8 || nType === 2 ) {
+ return;
+ }
+
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks &&
+ ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+ return ret;
+ }
+
+ return ( elem[ name ] = value );
+ }
+
+ if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+ return ret;
+ }
+
+ return elem[ name ];
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+
+ // elem.tabIndex doesn't always return the
+ // correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) ||
+ rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ },
+
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ }
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+if ( !support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent && parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ return null;
+ },
+ set: function( elem ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ };
+}
+
+jQuery.each( [
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+var rclass = /[\t\r\n\f]/g;
+
+function getClass( elem ) {
+ return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+jQuery.fn.extend( {
+ addClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnotwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+ cur = elem.nodeType === 1 &&
+ ( " " + curValue + " " ).replace( rclass, " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classes, elem, cur, curValue, clazz, j, finalValue,
+ i = 0;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+ } );
+ }
+
+ if ( !arguments.length ) {
+ return this.attr( "class", "" );
+ }
+
+ if ( typeof value === "string" && value ) {
+ classes = value.match( rnotwhite ) || [];
+
+ while ( ( elem = this[ i++ ] ) ) {
+ curValue = getClass( elem );
+
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 &&
+ ( " " + curValue + " " ).replace( rclass, " " );
+
+ if ( cur ) {
+ j = 0;
+ while ( ( clazz = classes[ j++ ] ) ) {
+
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+
+ // Only assign if different to avoid unneeded rendering.
+ finalValue = jQuery.trim( cur );
+ if ( curValue !== finalValue ) {
+ elem.setAttribute( "class", finalValue );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
+
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).toggleClass(
+ value.call( this, i, getClass( this ), stateVal ),
+ stateVal
+ );
+ } );
+ }
+
+ return this.each( function() {
+ var className, i, self, classNames;
+
+ if ( type === "string" ) {
+
+ // Toggle individual class names
+ i = 0;
+ self = jQuery( this );
+ classNames = value.match( rnotwhite ) || [];
+
+ while ( ( className = classNames[ i++ ] ) ) {
+
+ // Check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
+ }
+
+ // Toggle whole class name
+ } else if ( value === undefined || type === "boolean" ) {
+ className = getClass( this );
+ if ( className ) {
+
+ // Store className if set
+ dataPriv.set( this, "__className__", className );
+ }
+
+ // If the element has a class name or if we're passed `false`,
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ if ( this.setAttribute ) {
+ this.setAttribute( "class",
+ className || value === false ?
+ "" :
+ dataPriv.get( this, "__className__" ) || ""
+ );
+ }
+ }
+ } );
+ },
+
+ hasClass: function( selector ) {
+ var className, elem,
+ i = 0;
+
+ className = " " + selector + " ";
+ while ( ( elem = this[ i++ ] ) ) {
+ if ( elem.nodeType === 1 &&
+ ( " " + getClass( elem ) + " " ).replace( rclass, " " )
+ .indexOf( className ) > -1
+ ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+} );
+
+
+
+
+var rreturn = /\r/g,
+ rspaces = /[\x20\t\r\n\f]+/g;
+
+jQuery.fn.extend( {
+ val: function( value ) {
+ var hooks, ret, isFunction,
+ elem = this[ 0 ];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] ||
+ jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks &&
+ "get" in hooks &&
+ ( ret = hooks.get( elem, "value" ) ) !== undefined
+ ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+
+ // Handle most common string cases
+ ret.replace( rreturn, "" ) :
+
+ // Handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
+ }
+
+ isFunction = jQuery.isFunction( value );
+
+ return this.each( function( i ) {
+ var val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+
+ } else if ( typeof val === "number" ) {
+ val += "";
+
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map( val, function( value ) {
+ return value == null ? "" : value + "";
+ } );
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ } );
+ }
+} );
+
+jQuery.extend( {
+ valHooks: {
+ option: {
+ get: function( elem ) {
+
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+
+ // Support: IE10-11+
+ // option.text throws exceptions (#14686, #14858)
+ // Strip and collapse whitespace
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+ jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
+
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
+
+ // IE8-9 doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+
+ // Don't return options that are disabled or in a disabled optgroup
+ ( support.optDisabled ?
+ !option.disabled : option.getAttribute( "disabled" ) === null ) &&
+ ( !option.parentNode.disabled ||
+ !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( option.selected =
+ jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+ ) {
+ optionSet = true;
+ }
+ }
+
+ // Force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ }
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+ }
+ }
+ };
+ if ( !support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+ };
+ }
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
+
+jQuery.extend( jQuery.event, {
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+
+ var i, cur, tmp, bubbleType, ontype, handle, special,
+ eventPath = [ elem || document ],
+ type = hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+ cur = tmp = elem = elem || document;
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
+
+ if ( type.indexOf( "." ) > -1 ) {
+
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split( "." );
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
+
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join( "." );
+ event.rnamespace = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+ null;
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
+
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
+
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
+ }
+
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === ( elem.ownerDocument || document ) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+ }
+ }
+
+ // Fire handlers on the event path
+ i = 0;
+ while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
+
+ // jQuery handler
+ handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+ dataPriv.get( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && handle.apply && acceptData( cur ) ) {
+ event.result = handle.apply( cur, data );
+ if ( event.result === false ) {
+ event.preventDefault();
+ }
+ }
+ }
+ event.type = type;
+
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+ if ( ( !special._default ||
+ special._default.apply( eventPath.pop(), data ) === false ) &&
+ acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
+
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
+
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
+
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ jQuery.event.triggered = undefined;
+
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ // Piggyback on a donor event to simulate a different one
+ simulate: function( type, elem, event ) {
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true
+
+ // Previously, `originalEvent: {}` was set here, so stopPropagation call
+ // would not be triggered on donor event, since in our own
+ // jQuery.event.stopPropagation function we had a check for existence of
+ // originalEvent.stopPropagation method, so, consequently it would be a noop.
+ //
+ // But now, this "simulate" function is used only for events
+ // for which stopPropagation() is noop, so there is no need for that anymore.
+ //
+ // For the 1.x branch though, guard for "click" and "submit"
+ // events is still used, but was moved to jQuery.event.stopPropagation function
+ // because `originalEvent` should point to the original event for the constancy
+ // with other events and for more focused logic
+ }
+ );
+
+ jQuery.event.trigger( e, null, elem );
+
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+
+} );
+
+jQuery.fn.extend( {
+
+ trigger: function( type, data ) {
+ return this.each( function() {
+ jQuery.event.trigger( type, data, this );
+ } );
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[ 0 ];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
+ }
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error contextmenu" ).split( " " ),
+ function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ return arguments.length > 0 ?
+ this.on( name, null, data, fn ) :
+ this.trigger( name );
+ };
+} );
+
+jQuery.fn.extend( {
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+} );
+
+
+
+
+support.focusin = "onfocusin" in window;
+
+
+// Support: Firefox
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome, Safari
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+ jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
+ var handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+ };
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix );
+
+ if ( !attaches ) {
+ doc.addEventListener( orig, handler, true );
+ }
+ dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+ },
+ teardown: function() {
+ var doc = this.ownerDocument || this,
+ attaches = dataPriv.access( doc, fix ) - 1;
+
+ if ( !attaches ) {
+ doc.removeEventListener( orig, handler, true );
+ dataPriv.remove( doc, fix );
+
+ } else {
+ dataPriv.access( doc, fix, attaches );
+ }
+ }
+ };
+ } );
+}
+var location = window.location;
+
+var nonce = jQuery.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Support: Android 2.3
+// Workaround failure to string-cast null input
+jQuery.parseJSON = function( data ) {
+ return JSON.parse( data + "" );
+};
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+ var xml;
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+
+ // Support: IE9
+ try {
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+ } catch ( e ) {
+ xml = undefined;
+ }
+
+ if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
+};
+
+
+var
+ rhash = /#.*$/,
+ rts = /([?&])_=[^&]*/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = "*/".concat( "*" ),
+
+ // Anchor tag for parsing the document origin
+ originAnchor = document.createElement( "a" );
+ originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ var dataType,
+ i = 0,
+ dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
+
+ if ( jQuery.isFunction( func ) ) {
+
+ // For each dataType in the dataTypeExpression
+ while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+ // Prepend if requested
+ if ( dataType[ 0 ] === "+" ) {
+ dataType = dataType.slice( 1 ) || "*";
+ ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+ // Otherwise append
+ } else {
+ ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+ }
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+ var inspected = {},
+ seekingTransport = ( structure === transports );
+
+ function inspect( dataType ) {
+ var selected;
+ inspected[ dataType ] = true;
+ jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+ var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+ if ( typeof dataTypeOrTransport === "string" &&
+ !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+ options.dataTypes.unshift( dataTypeOrTransport );
+ inspect( dataTypeOrTransport );
+ return false;
+ } else if ( seekingTransport ) {
+ return !( selected = dataTypeOrTransport );
+ }
+ } );
+ return selected;
+ }
+
+ return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+ for ( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+
+ return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var ct, type, finalDataType, firstDataType,
+ contents = s.contents,
+ dataTypes = s.dataTypes;
+
+ // Remove auto dataType and get content-type in the process
+ while ( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+ var conv2, current, conv, tmp, prev,
+ converters = {},
+
+ // Work with a copy of dataTypes in case we need to modify it for conversion
+ dataTypes = s.dataTypes.slice();
+
+ // Create converters map with lowercased keys
+ if ( dataTypes[ 1 ] ) {
+ for ( conv in s.converters ) {
+ converters[ conv.toLowerCase() ] = s.converters[ conv ];
+ }
+ }
+
+ current = dataTypes.shift();
+
+ // Convert to each sequential dataType
+ while ( current ) {
+
+ if ( s.responseFields[ current ] ) {
+ jqXHR[ s.responseFields[ current ] ] = response;
+ }
+
+ // Apply the dataFilter if provided
+ if ( !prev && isSuccess && s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ prev = current;
+ current = dataTypes.shift();
+
+ if ( current ) {
+
+ // There's only work to do if current dataType is non-auto
+ if ( current === "*" ) {
+
+ current = prev;
+
+ // Convert response if prev dataType is non-auto and differs from current
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Seek a direct converter
+ conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+ // If none found, seek a pair
+ if ( !conv ) {
+ for ( conv2 in converters ) {
+
+ // If conv2 outputs current
+ tmp = conv2.split( " " );
+ if ( tmp[ 1 ] === current ) {
+
+ // If prev can be converted to accepted input
+ conv = converters[ prev + " " + tmp[ 0 ] ] ||
+ converters[ "* " + tmp[ 0 ] ];
+ if ( conv ) {
+
+ // Condense equivalence converters
+ if ( conv === true ) {
+ conv = converters[ conv2 ];
+
+ // Otherwise, insert the intermediate dataType
+ } else if ( converters[ conv2 ] !== true ) {
+ current = tmp[ 0 ];
+ dataTypes.unshift( tmp[ 1 ] );
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ // Apply converter (if not an equivalence)
+ if ( conv !== true ) {
+
+ // Unless errors are allowed to bubble, catch and return them
+ if ( conv && s.throws ) {
+ response = conv( response );
+ } else {
+ try {
+ response = conv( response );
+ } catch ( e ) {
+ return {
+ state: "parsererror",
+ error: conv ? e : "No conversion from " + prev + " to " + current
+ };
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajaxSettings: {
+ url: location.href,
+ type: "GET",
+ isLocal: rlocalProtocol.test( location.protocol ),
+ global: true,
+ processData: true,
+ async: true,
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ throws: false,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ "*": allTypes,
+ text: "text/plain",
+ html: "text/html",
+ xml: "application/xml, text/xml",
+ json: "application/json, text/javascript"
+ },
+
+ contents: {
+ xml: /\bxml\b/,
+ html: /\bhtml/,
+ json: /\bjson\b/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText",
+ json: "responseJSON"
+ },
+
+ // Data converters
+ // Keys separate source (or catchall "*") and destination types with a single space
+ converters: {
+
+ // Convert anything to text
+ "* text": String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
+
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ url: true,
+ context: true
+ }
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ return settings ?
+
+ // Building a settings object
+ ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+ // Extending ajaxSettings
+ ajaxExtend( jQuery.ajaxSettings, target );
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var transport,
+
+ // URL without anti-cache param
+ cacheURL,
+
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+
+ // timeout handle
+ timeoutTimer,
+
+ // Url cleanup var
+ urlAnchor,
+
+ // To know if global events are to be dispatched
+ fireGlobals,
+
+ // Loop variable
+ i,
+
+ // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+
+ // Callbacks context
+ callbackContext = s.context || s,
+
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
+ globalEventContext = s.context &&
+ ( callbackContext.nodeType || callbackContext.jquery ) ?
+ jQuery( callbackContext ) :
+ jQuery.event,
+
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery.Callbacks( "once memory" ),
+
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+
+ // The jqXHR state
+ state = 0,
+
+ // Default abort message
+ strAbort = "canceled",
+
+ // Fake xhr
+ jqXHR = {
+ readyState: 0,
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match == null ? null : match;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ var lname = name.toLowerCase();
+ if ( !state ) {
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Status-dependent callbacks
+ statusCode: function( map ) {
+ var code;
+ if ( map ) {
+ if ( state < 2 ) {
+ for ( code in map ) {
+
+ // Lazy-add the new callback in a way that preserves old ones
+ statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+ }
+ } else {
+
+ // Execute the appropriate callbacks
+ jqXHR.always( map[ jqXHR.status ] );
+ }
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ var finalText = statusText || strAbort;
+ if ( transport ) {
+ transport.abort( finalText );
+ }
+ done( 0, finalText );
+ return this;
+ }
+ };
+
+ // Attach deferreds
+ deferred.promise( jqXHR ).complete = completeDeferred.add;
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (prefilters might expect it)
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" )
+ .replace( rprotocol, location.protocol + "//" );
+
+ // Alias method option to type as per ticket #12004
+ s.type = options.method || options.type || s.method || s.type;
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
+
+ // A cross-domain request is in order when the origin doesn't match the current origin.
+ if ( s.crossDomain == null ) {
+ urlAnchor = document.createElement( "a" );
+
+ // Support: IE8-11+
+ // IE throws exception if url is malformed, e.g. http://example.com:80x/
+ try {
+ urlAnchor.href = s.url;
+
+ // Support: IE8-11+
+ // Anchor's host property isn't correctly set when s.url is relative
+ urlAnchor.href = urlAnchor.href;
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+ urlAnchor.protocol + "//" + urlAnchor.host;
+ } catch ( e ) {
+
+ // If there is an error parsing the URL, assume it is crossDomain,
+ // it can be rejected by the transport if it is invalid
+ s.crossDomain = true;
+ }
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefilter, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // We can fire global events as of now if asked to
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Save the URL in case we're toying with the If-Modified-Since
+ // and/or If-None-Match header later on
+ cacheURL = s.url;
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
+
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+ s.url = rts.test( cacheURL ) ?
+
+ // If there is already a '_' parameter, set its value
+ cacheURL.replace( rts, "$1_=" + nonce++ ) :
+
+ // Otherwise add one to the end
+ cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
+ }
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+ }
+ if ( jQuery.etag[ cacheURL ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+ s.accepts[ s.dataTypes[ 0 ] ] +
+ ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend &&
+ ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+
+ // Abort if not done already and return
+ return jqXHR.abort();
+ }
+
+ // Aborting is no longer a cancellation
+ strAbort = "abort";
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+
+ // If request was aborted inside ajaxSend, stop there
+ if ( state === 2 ) {
+ return jqXHR;
+ }
+
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = window.setTimeout( function() {
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch ( e ) {
+
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+
+ // Simply rethrow otherwise
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ // Callback for when everything is done
+ function done( status, nativeStatusText, responses, headers ) {
+ var isSuccess, success, error, response, modified,
+ statusText = nativeStatusText;
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ window.clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
+
+ // Determine if successful
+ isSuccess = status >= 200 && status < 300 || status === 304;
+
+ // Get response data
+ if ( responses ) {
+ response = ajaxHandleResponses( s, jqXHR, responses );
+ }
+
+ // Convert no matter what (that way responseXXX fields are always set)
+ response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+ // If successful, handle type chaining
+ if ( isSuccess ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ modified = jqXHR.getResponseHeader( "Last-Modified" );
+ if ( modified ) {
+ jQuery.lastModified[ cacheURL ] = modified;
+ }
+ modified = jqXHR.getResponseHeader( "etag" );
+ if ( modified ) {
+ jQuery.etag[ cacheURL ] = modified;
+ }
+ }
+
+ // if no content
+ if ( status === 204 || s.type === "HEAD" ) {
+ statusText = "nocontent";
+
+ // if not modified
+ } else if ( status === 304 ) {
+ statusText = "notmodified";
+
+ // If we have data, let's convert it
+ } else {
+ statusText = response.state;
+ success = response.data;
+ error = response.error;
+ isSuccess = !error;
+ }
+ } else {
+
+ // Extract error from statusText and normalize for non-aborts
+ error = statusText;
+ if ( status || !statusText ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ }
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+
+ // Shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ // The url can be an options object (which then must have .url)
+ return jQuery.ajax( jQuery.extend( {
+ url: url,
+ type: method,
+ dataType: type,
+ data: data,
+ success: callback
+ }, jQuery.isPlainObject( url ) && url ) );
+ };
+} );
+
+
+jQuery._evalUrl = function( url ) {
+ return jQuery.ajax( {
+ url: url,
+
+ // Make this explicit, since user can override this through ajaxSetup (#11264)
+ type: "GET",
+ dataType: "script",
+ async: false,
+ global: false,
+ "throws": true
+ } );
+};
+
+
+jQuery.fn.extend( {
+ wrapAll: function( html ) {
+ var wrap;
+
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( html.call( this, i ) );
+ } );
+ }
+
+ if ( this[ 0 ] ) {
+
+ // The elements to wrap the target around
+ wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+ if ( this[ 0 ].parentNode ) {
+ wrap.insertBefore( this[ 0 ] );
+ }
+
+ wrap.map( function() {
+ var elem = this;
+
+ while ( elem.firstElementChild ) {
+ elem = elem.firstElementChild;
+ }
+
+ return elem;
+ } ).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each( function( i ) {
+ jQuery( this ).wrapInner( html.call( this, i ) );
+ } );
+ }
+
+ return this.each( function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ } );
+ },
+
+ wrap: function( html ) {
+ var isFunction = jQuery.isFunction( html );
+
+ return this.each( function( i ) {
+ jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
+ } );
+ },
+
+ unwrap: function() {
+ return this.parent().each( function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ } ).end();
+ }
+} );
+
+
+jQuery.expr.filters.hidden = function( elem ) {
+ return !jQuery.expr.filters.visible( elem );
+};
+jQuery.expr.filters.visible = function( elem ) {
+
+ // Support: Opera <= 12.12
+ // Opera reports offsetWidths and offsetHeights less than zero on some elements
+ // Use OR instead of AND as the element is not visible if either is true
+ // See tickets #10406 and #13132
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
+};
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+ var name;
+
+ if ( jQuery.isArray( obj ) ) {
+
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+
+ // Item is non-scalar (array or object), encode its numeric index.
+ buildParams(
+ prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+ v,
+ traditional,
+ add
+ );
+ }
+ } );
+
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
+
+ // Serialize object item.
+ for ( name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+ var prefix,
+ s = [],
+ add = function( key, value ) {
+
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+};
+
+jQuery.fn.extend( {
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+ serializeArray: function() {
+ return this.map( function() {
+
+ // Can add propHook for "elements" to filter or add form elements
+ var elements = jQuery.prop( this, "elements" );
+ return elements ? jQuery.makeArray( elements ) : this;
+ } )
+ .filter( function() {
+ var type = this.type;
+
+ // Use .is( ":disabled" ) so that fieldset[disabled] works
+ return this.name && !jQuery( this ).is( ":disabled" ) &&
+ rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+ ( this.checked || !rcheckableType.test( type ) );
+ } )
+ .map( function( i, elem ) {
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val ) {
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ } ).get();
+ }
+} );
+
+
+jQuery.ajaxSettings.xhr = function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+ // File protocol always yields status code 0, assume 200
+ 0: 200,
+
+ // Support: IE9
+ // #1450: sometimes IE returns 1223 when it should be 204
+ 1223: 204
+ },
+ xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+ var callback, errorCallback;
+
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( support.cors || xhrSupported && !options.crossDomain ) {
+ return {
+ send: function( headers, complete ) {
+ var i,
+ xhr = options.xhr();
+
+ xhr.open(
+ options.type,
+ options.url,
+ options.async,
+ options.username,
+ options.password
+ );
+
+ // Apply custom fields if provided
+ if ( options.xhrFields ) {
+ for ( i in options.xhrFields ) {
+ xhr[ i ] = options.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( options.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( options.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Set headers
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+
+ // Callback
+ callback = function( type ) {
+ return function() {
+ if ( callback ) {
+ callback = errorCallback = xhr.onload =
+ xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
+
+ if ( type === "abort" ) {
+ xhr.abort();
+ } else if ( type === "error" ) {
+
+ // Support: IE9
+ // On a manual native abort, IE9 throws
+ // errors on any property access that is not readyState
+ if ( typeof xhr.status !== "number" ) {
+ complete( 0, "error" );
+ } else {
+ complete(
+
+ // File: protocol always yields status 0; see #8605, #14207
+ xhr.status,
+ xhr.statusText
+ );
+ }
+ } else {
+ complete(
+ xhrSuccessStatus[ xhr.status ] || xhr.status,
+ xhr.statusText,
+
+ // Support: IE9 only
+ // IE9 has no XHR2 but throws on binary (trac-11426)
+ // For XHR2 non-text, let the caller handle it (gh-2498)
+ ( xhr.responseType || "text" ) !== "text" ||
+ typeof xhr.responseText !== "string" ?
+ { binary: xhr.response } :
+ { text: xhr.responseText },
+ xhr.getAllResponseHeaders()
+ );
+ }
+ }
+ };
+ };
+
+ // Listen to events
+ xhr.onload = callback();
+ errorCallback = xhr.onerror = callback( "error" );
+
+ // Support: IE9
+ // Use onreadystatechange to replace onabort
+ // to handle uncaught aborts
+ if ( xhr.onabort !== undefined ) {
+ xhr.onabort = errorCallback;
+ } else {
+ xhr.onreadystatechange = function() {
+
+ // Check readyState before timeout as it changes
+ if ( xhr.readyState === 4 ) {
+
+ // Allow onerror to be called first,
+ // but that will not handle a native abort
+ // Also, save errorCallback to a variable
+ // as xhr.onerror cannot be accessed
+ window.setTimeout( function() {
+ if ( callback ) {
+ errorCallback();
+ }
+ } );
+ }
+ };
+ }
+
+ // Create the abort callback
+ callback = callback( "abort" );
+
+ try {
+
+ // Do send the request (this may raise an exception)
+ xhr.send( options.hasContent && options.data || null );
+ } catch ( e ) {
+
+ // #14683: Only rethrow if this hasn't been notified as an error yet
+ if ( callback ) {
+ throw e;
+ }
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup( {
+ accepts: {
+ script: "text/javascript, application/javascript, " +
+ "application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /\b(?:java|ecma)script\b/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+ var script, callback;
+ return {
+ send: function( _, complete ) {
+ script = jQuery( "<script>" ).prop( {
+ charset: s.scriptCharset,
+ src: s.url
+ } ).on(
+ "load error",
+ callback = function( evt ) {
+ script.remove();
+ callback = null;
+ if ( evt ) {
+ complete( evt.type === "error" ? 404 : 200, evt.type );
+ }
+ }
+ );
+
+ // Use native DOM manipulation to avoid our domManip AJAX trickery
+ document.head.appendChild( script[ 0 ] );
+ },
+ abort: function() {
+ if ( callback ) {
+ callback();
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+var oldCallbacks = [],
+ rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+ jsonp: "callback",
+ jsonpCallback: function() {
+ var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+ this[ callback ] = true;
+ return callback;
+ }
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var callbackName, overwritten, responseContainer,
+ jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+ "url" :
+ typeof s.data === "string" &&
+ ( s.contentType || "" )
+ .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+ rjsonp.test( s.data ) && "data"
+ );
+
+ // Handle iff the expected data type is "jsonp" or we have a parameter to set
+ if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+ // Get callback name, remembering preexisting value associated with it
+ callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
+ s.jsonpCallback() :
+ s.jsonpCallback;
+
+ // Insert callback into url or form data
+ if ( jsonProp ) {
+ s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+ } else if ( s.jsonp !== false ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+ }
+
+ // Use data converter to retrieve json after script execution
+ s.converters[ "script json" ] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( callbackName + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // Force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Install callback
+ overwritten = window[ callbackName ];
+ window[ callbackName ] = function() {
+ responseContainer = arguments;
+ };
+
+ // Clean-up function (fires after converters)
+ jqXHR.always( function() {
+
+ // If previous value didn't exist - remove it
+ if ( overwritten === undefined ) {
+ jQuery( window ).removeProp( callbackName );
+
+ // Otherwise restore preexisting value
+ } else {
+ window[ callbackName ] = overwritten;
+ }
+
+ // Save back as free
+ if ( s[ callbackName ] ) {
+
+ // Make sure that re-using the options doesn't screw things around
+ s.jsonpCallback = originalSettings.jsonpCallback;
+
+ // Save the callback name for future use
+ oldCallbacks.push( callbackName );
+ }
+
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( overwritten ) ) {
+ overwritten( responseContainer[ 0 ] );
+ }
+
+ responseContainer = overwritten = undefined;
+ } );
+
+ // Delegate to script
+ return "script";
+ }
+} );
+
+
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
+ return null;
+ }
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[ 1 ] ) ];
+ }
+
+ parsed = buildFragment( [ data ], context, scripts );
+
+ if ( scripts && scripts.length ) {
+ jQuery( scripts ).remove();
+ }
+
+ return jQuery.merge( [], parsed.childNodes );
+};
+
+
+// Keep a copy of the old load method
+var _load = jQuery.fn.load;
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+ }
+
+ var selector, type, response,
+ self = this,
+ off = url.indexOf( " " );
+
+ if ( off > -1 ) {
+ selector = jQuery.trim( url.slice( off ) );
+ url = url.slice( 0, off );
+ }
+
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( params && typeof params === "object" ) {
+ type = "POST";
+ }
+
+ // If we have elements to modify, make the request
+ if ( self.length > 0 ) {
+ jQuery.ajax( {
+ url: url,
+
+ // If "type" variable is undefined, then "GET" method will be used.
+ // Make value of this field explicit since
+ // user can override it through ajaxSetup method
+ type: type || "GET",
+ dataType: "html",
+ data: params
+ } ).done( function( responseText ) {
+
+ // Save response for use in complete callback
+ response = arguments;
+
+ self.html( selector ?
+
+ // If a selector was specified, locate the right elements in a dummy div
+ // Exclude scripts to avoid IE 'Permission Denied' errors
+ jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+ // Otherwise use the full result
+ responseText );
+
+ // If the request succeeds, this function gets "data", "status", "jqXHR"
+ // but they are ignored because response was set above.
+ // If it fails, this function gets "jqXHR", "status", "error"
+ } ).always( callback && function( jqXHR, status ) {
+ self.each( function() {
+ callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+ } );
+ } );
+ }
+
+ return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+ "ajaxStart",
+ "ajaxStop",
+ "ajaxComplete",
+ "ajaxError",
+ "ajaxSuccess",
+ "ajaxSend"
+], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+} );
+
+
+
+
+jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep( jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ } ).length;
+};
+
+
+
+
+/**
+ * Gets a window from an element
+ */
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
+}
+
+jQuery.offset = {
+ setOffset: function( elem, options, i ) {
+ var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+ position = jQuery.css( elem, "position" ),
+ curElem = jQuery( elem ),
+ props = {};
+
+ // Set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ curOffset = curElem.offset();
+ curCSSTop = jQuery.css( elem, "top" );
+ curCSSLeft = jQuery.css( elem, "left" );
+ calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+ ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+ // Need to be able to calculate position if either
+ // top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+ options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+ }
+
+ if ( options.top != null ) {
+ props.top = ( options.top - curOffset.top ) + curTop;
+ }
+ if ( options.left != null ) {
+ props.left = ( options.left - curOffset.left ) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+jQuery.fn.extend( {
+ offset: function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each( function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ } );
+ }
+
+ var docElem, win,
+ elem = this[ 0 ],
+ box = { top: 0, left: 0 },
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return;
+ }
+
+ docElem = doc.documentElement;
+
+ // Make sure it's not a disconnected DOM node
+ if ( !jQuery.contains( docElem, elem ) ) {
+ return box;
+ }
+
+ box = elem.getBoundingClientRect();
+ win = getWindow( doc );
+ return {
+ top: box.top + win.pageYOffset - docElem.clientTop,
+ left: box.left + win.pageXOffset - docElem.clientLeft
+ };
+ },
+
+ position: function() {
+ if ( !this[ 0 ] ) {
+ return;
+ }
+
+ var offsetParent, offset,
+ elem = this[ 0 ],
+ parentOffset = { top: 0, left: 0 };
+
+ // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
+ // because it is its only offset parent
+ if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+ // Assume getBoundingClientRect is there when computed position is fixed
+ offset = elem.getBoundingClientRect();
+
+ } else {
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent();
+
+ // Get correct offsets
+ offset = this.offset();
+ if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
+ parentOffset = offsetParent.offset();
+ }
+
+ // Add offsetParent borders
+ parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
+ parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
+ }
+
+ // Subtract parent offsets and element margins
+ return {
+ top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+ left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+ };
+ },
+
+ // This method will return documentElement in the following cases:
+ // 1) For the element inside the iframe without offsetParent, this method will return
+ // documentElement of the parent window
+ // 2) For the hidden or detached element
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
+ //
+ // but those exceptions were never presented as a real life use-cases
+ // and might be considered as more preferable results.
+ //
+ // This logic, however, is not guaranteed and can change at any point in the future
+ offsetParent: function() {
+ return this.map( function() {
+ var offsetParent = this.offsetParent;
+
+ while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || documentElement;
+ } );
+ }
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+ var top = "pageYOffset" === prop;
+
+ jQuery.fn[ method ] = function( val ) {
+ return access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
+
+ if ( val === undefined ) {
+ return win ? win[ prop ] : elem[ method ];
+ }
+
+ if ( win ) {
+ win.scrollTo(
+ !top ? val : win.pageXOffset,
+ top ? val : win.pageYOffset
+ );
+
+ } else {
+ elem[ method ] = val;
+ }
+ }, method, val, arguments.length );
+ };
+} );
+
+// Support: Safari<7-8+, Chrome<37-44+
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+ jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+ function( elem, computed ) {
+ if ( computed ) {
+ computed = curCSS( elem, prop );
+
+ // If curCSS returns percentage, fallback to offset
+ return rnumnonpx.test( computed ) ?
+ jQuery( elem ).position()[ prop ] + "px" :
+ computed;
+ }
+ }
+ );
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+ function( defaultExtra, funcName ) {
+
+ // Margin is only for outerHeight, outerWidth
+ jQuery.fn[ funcName ] = function( margin, value ) {
+ var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+ extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+ return access( this, function( elem, type, value ) {
+ var doc;
+
+ if ( jQuery.isWindow( elem ) ) {
+
+ // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
+ // isn't a whole lot we can do. See pull request at this URL for discussion:
+ // https://github.com/jquery/jquery/pull/764
+ return elem.document.documentElement[ "client" + name ];
+ }
+
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ doc = elem.documentElement;
+
+ // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+ // whichever is greatest
+ return Math.max(
+ elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+ elem.body[ "offset" + name ], doc[ "offset" + name ],
+ doc[ "client" + name ]
+ );
+ }
+
+ return value === undefined ?
+
+ // Get width or height on the element, requesting but not forcing parseFloat
+ jQuery.css( elem, type, extra ) :
+
+ // Set width or height on the element
+ jQuery.style( elem, type, value, extra );
+ }, type, chainable ? margin : undefined, chainable, null );
+ };
+ } );
+} );
+
+
+jQuery.fn.extend( {
+
+ bind: function( types, data, fn ) {
+ return this.on( types, null, data, fn );
+ },
+ unbind: function( types, fn ) {
+ return this.off( types, null, fn );
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.on( types, selector, data, fn );
+ },
+ undelegate: function( selector, types, fn ) {
+
+ // ( namespace ) or ( selector, types [, fn] )
+ return arguments.length === 1 ?
+ this.off( selector, "**" ) :
+ this.off( types, selector || "**", fn );
+ },
+ size: function() {
+ return this.length;
+ }
+} );
+
+jQuery.fn.andSelf = jQuery.fn.addBack;
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+ define( "jquery", [], function() {
+ return jQuery;
+ } );
+}
+
+
+
+var
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+ window.jQuery = window.$ = jQuery;
+}
+
+return jQuery;
+}));
diff --git a/webapp/js/jquery.notify.js b/webapp/js/jquery.notify.js
new file mode 100644
index 0000000..dd1d748
--- /dev/null
+++ b/webapp/js/jquery.notify.js
@@ -0,0 +1,156 @@
+/* jQuery Notify UI Widget 1.5 by Eric Hynds
+ * http://www.erichynds.com/jquery/a-jquery-ui-growl-ubuntu-notification-widget/
+ *
+ * Depends:
+ * - jQuery 1.4+
+ * - jQuery UI 1.8 widget factory
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+*/
+(function($){
+
+ $.widget("ech.notify", {
+
+ options: {
+ speed: 500,
+ expires: 5000,
+ stack: "below",
+ custom: false,
+ queue: false
+ },
+
+ _create: function(){
+ var self = this;
+ this.templates = {};
+ this.keys = [];
+
+ // build and save templates
+ this.element.addClass("ui-notify").children().addClass("ui-notify-message ui-notify-message-style").each(function(i){
+ var key = this.id || i;
+ self.keys.push(key);
+ self.templates[key] = $(this).removeAttr("id").wrap("<div></div>").parent().html(); // because $(this).andSelf().html() no workie
+ }).end().empty().show();
+ },
+
+ create: function(template, msg, opts){
+ if(typeof template === "object"){
+ opts = msg;
+ msg = template;
+ template = null;
+ }
+
+ var tpl = this.templates[ template || this.keys[0]];
+
+ // remove default styling class if rolling w/ custom classes
+ if(opts && opts.custom){
+ tpl = $(tpl).removeClass("ui-notify-message-style").wrap("<div></div>").parent().html();
+ }
+
+ this.openNotifications = this.openNotifications || 0;
+
+ // return a new notification instance
+ return new $.ech.notify.instance(this)._create(msg, $.extend({}, this.options, opts), tpl);
+ }
+ });
+
+ // instance constructor
+ $.extend($.ech.notify, {
+ instance: function(widget){
+ this.__super = widget;
+ this.isOpen = false;
+ }
+ });
+
+ // instance methods
+ $.extend($.ech.notify.instance.prototype, {
+
+ _create: function(params, options, template){
+ this.options = options;
+
+ var self = this,
+
+ // build html template
+ html = template.replace(/#(?:\{|%7B)(.*?)(?:\}|%7D)/g, function($1, $2){
+ return ($2 in params) ? params[$2] : '';
+ }),
+
+ // the actual message
+ m = (this.element = $(html)),
+
+ // close link
+ closelink = m.find(".ui-notify-close");
+
+ // clickable?
+ if(typeof this.options.click === "function"){
+ m.addClass("ui-notify-click").bind("click", function(e){
+ self._trigger("click", e, self);
+ });
+ }
+
+ // show close link?
+ if(closelink.length){
+ closelink.bind("click", function(){
+ self.close();
+ return false;
+ });
+ }
+
+ this.__super.element.queue("notify", function(){
+ self.open();
+
+ // auto expire?
+ if(typeof options.expires === "number" && options.expires > 0){
+ setTimeout($.proxy(self.close, self), options.expires);
+ }
+ });
+
+ if(!this.options.queue || this.__super.openNotifications <= this.options.queue - 1) {
+ this.__super.element.dequeue("notify");
+ }
+
+ return this;
+ },
+
+ close: function(){
+ var speed = this.options.speed;
+
+ this.element.fadeTo(speed, 0).slideUp(speed, $.proxy(function(){
+ this._trigger("close");
+ this.isOpen = false;
+ this.element.remove();
+ this.__super.openNotifications -= 1;
+ this.__super.element.dequeue("notify");
+ }, this));
+
+ return this;
+ },
+
+ open: function(){
+ if(this.isOpen || this._trigger("beforeopen") === false){
+ return this;
+ }
+
+ var self = this;
+
+ this.__super.openNotifications += 1;
+
+ this.element[this.options.stack === "above" ? "prependTo" : "appendTo"](this.__super.element).css({ display:"none", opacity:"" }).fadeIn(this.options.speed, function(){
+ self._trigger("open");
+ self.isOpen = true;
+ });
+
+ return this;
+ },
+
+ widget: function(){
+ return this.element;
+ },
+
+ _trigger: function(type, e, instance){
+ return this.__super._trigger.call( this, type, e, instance );
+ }
+ });
+
+})(jQuery);
diff --git a/webapp/style/back_up.css b/webapp/style/back_up.css
new file mode 100644
index 0000000..85b3954
--- /dev/null
+++ b/webapp/style/back_up.css
@@ -0,0 +1,8 @@
+body {
+ background-color: #00b0c0;
+}
+
+#fusioncharts-div {
+ text-align: center;
+
+}
diff --git a/webapp/style/jquery.dynameter.css b/webapp/style/jquery.dynameter.css
new file mode 100644
index 0000000..881652d
--- /dev/null
+++ b/webapp/style/jquery.dynameter.css
@@ -0,0 +1,104 @@
+/*! jQuery-Dynameter by Tzechiu Lei
+* http://tze1.com/dynameter/
+* v0.5.6
+* 2014-06-13
+* Copyright (c) 2014 Tzechiu Lei. MIT license. */
+
+div.dm-wrapperDiv {
+ display: block;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ zoom: 1;
+ overflow: hidden;
+ width: 200px;
+ height: 100px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 16px;
+ font-weight: bold;
+ line-height: 1;
+}
+div.dm-wrapperDiv * {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ zoom: 1;
+}
+div.dm-wrapperDiv div {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+}
+div.dm-wrapperDiv div.dm-bgClrDiv,
+div.dm-wrapperDiv div.dm-maskDiv {
+ width: 200px;
+ height: 100px;
+}
+div.dm-wrapperDiv div.dm-bgClrDiv,
+div.dm-wrapperDiv div.dm-maskDiv {
+ -webkit-border-radius: 100px 100px 0 0;
+ -moz-border-radius: 100px 100px 0 0;
+ -ms-border-radius: 100px 100px 0 0;
+ border-radius: 100px 100px 0 0;
+ border: 2px solid #999999;
+ border-bottom: 0;
+ -webkit-transform-origin: center bottom;
+ -moz-transform-origin: center bottom;
+ -ms-transform-origin: center bottom;
+ transform-origin: center bottom;
+}
+div.dm-wrapperDiv div.dm-bgClrDiv.normal {
+ background-color: #228b22;
+}
+div.dm-wrapperDiv div.dm-bgClrDiv.warn {
+ background-color: #daa520;
+}
+div.dm-wrapperDiv div.dm-bgClrDiv.error {
+ background-color: #ff0000;
+}
+div.dm-wrapperDiv div.dm-maskDiv {
+ background-color: #dddddd;
+ z-index: 4;
+}
+div.dm-wrapperDiv div.dm-innerDiv {
+ bottom: 0;
+ left: 20px;
+ -webkit-border-radius: 80px 80px 0 0;
+ -moz-border-radius: 80px 80px 0 0;
+ -ms-border-radius: 80px 80px 0 0;
+ border-radius: 80px 80px 0 0;
+ border-bottom: 1px solid #eeeeee;
+ width: 160px;
+ height: 80px;
+ padding-top: .7em;
+ background-color: #eeeeee;
+ text-align: center;
+ text-transform: uppercase;
+ z-index: 5;
+}
+div.dm-wrapperDiv div.dm-innerDiv p {
+ margin: 3px auto;
+ width: auto;
+ max-width: 85%;
+ overflow: hidden;
+ text-align: center;
+}
+div.dm-wrapperDiv div.dm-innerDiv p.dm-valueP {
+ font-size: 210%;
+ line-height: .85;
+}
+div.dm-wrapperDiv div.dm-innerDiv p.dm-unitP {
+ margin-top: 0;
+ font-size: 75%;
+ font-weight: normal;
+}
+div.dm-wrapperDiv div.dm-innerDiv p.dm-labelP {
+ font-size: 100%;
+}