/* * datawrapper / vis / stacked-column-chart v1.5.0 * generated on 2014-11-26T13:22:38+01:00 */ (function(){var root=this,dw={};if(typeof exports!=='undefined'){if(typeof module!=='undefined'&&module.exports){exports=module.exports=dw;} exports.dw=dw;}else{window.dw=dw;} dw.dataset=function(columns,opts){var columnsByName={},origColumns=columns.slice(0);_.each(columns,function(col){uniqueName(col);columnsByName[col.name()]=col;});opts=_.extend(opts,{});function uniqueName(col){var origColName=col.name(),colName=origColName,appendix=1;while(columnsByName.hasOwnProperty(colName)){colName=origColName+'.'+(appendix++);} if(colName!=origColName)col.name(colName);} var dataset={columns:function(){return columns;},column:function(x){if(_.isString(x)){if(columnsByName[x]!==undefined)return columnsByName[x];throw'No column found with that name: "'+x+'"';} if(columns[x]!==undefined)return columns[x];throw'No column found with that index: '+x;},numColumns:function(){return columns.length;},numRows:function(){return columns[0].length;},eachColumn:function(func){_.each(columns,func);},hasColumn:function(x){return(_.isString(x)?columnsByName[x]:columns[x])!==undefined;},indexOf:function(column_name){if(!dataset.hasColumn(column_name))return-1;return _.indexOf(columns,columnsByName[column_name]);},toCSV:function(){var csv="",sep=",",quote="\"";_.each(columns,function(col,i){var t=col.title();if(t.indexOf(quote)>-1)t.replace(quote,'\\'+quote);if(t.indexOf(sep)>-1)t=quote+t+quote;csv+=(i>0?sep:'')+t;});_.each(_.range(dataset.numRows()),function(row){csv+='\n';_.each(columns,function(col,i){var t=''+(col.type()=='date'?col.raw(row):col.val(row));if(t.indexOf(quote)>-1)t.replace(quote,'\\'+quote);if(t.indexOf(sep)>-1)t=quote+t+quote;csv+=(i>0?sep:'')+t;});});return csv;},filterColumns:function(ignore){columns=_.filter(columns,function(c){return!ignore[c.name()];});_.each(ignore,function(ign,key){if(ign&&columnsByName[key])delete columnsByName[key];});return dataset;},eachRow:function(func){var i;for(i=0;irange[1])range[1]=v;});range[0]=type.fromNum(range[0]);range[1]=type.fromNum(range[1]);} return range;},total:function(){if(!type.toNum)return false;if(!total){total=0;column.each(function(v){total+=type.toNum(v);});total=type.fromNum(total);} return total;},filterRows:function(r){rows=[];if(arguments.length){_.each(r,function(i){rows.push(origRows[i]);});}else{rows=origRows.slice(0);} column.length=rows.length;range=total=false;return column;},toString:function(){return name+' ('+type.name()+')';},indexOf:function(val){return _.find(_.range(rows.length),function(i){return column.val(i)==val;});}};return column;};dw.column.types={};dw.column.types.text=function(){return{parse:_.identity,errors:function(){return 0;},name:function(){return'text';},formatter:function(){return _.identity;},isValid:function(){return true;},format:function(){}};};dw.column.types.number=function(sample){function signDigitsDecimalPlaces(num,sig){if(num===0)return 0;return Math.round(sig-Math.ceil(Math.log(Math.abs(num))/ Math.LN10));} var format,errors=0,knownFormats={'-.':/^ *[-–—]?[0-9]*(\.[0-9]+)?(e[\+\-][0-9]+)?%? *$/,'-,':/^ *[-–—]?[0-9]*(,[0-9]+)?%? *$/,',.':/^ *[-–—]?[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?%? *$/,'.,':/^ *[-–—]?[0-9]{1,3}(\.[0-9]{3})*(,[0-9]+)?%? *$/,' .':/^ *[-–—]?[0-9]{1,3}( [0-9]{3})*(\.[0-9]+)?%? *$/,' ,':/^ *[-–—]?[0-9]{1,3}( [0-9]{3})*(,[0-9]+)?%? *$/,' .':/^ *[-–—]?[0-9]{1,3}( [0-9]{3})*(\.[0-9]+)?%? *$/,' ,':/^ *[-–—]?[0-9]{1,3}( [0-9]{3})*(,[0-9]+)?%? *$/},formatLabels={'-.':'1234.56','-,':'1234,56',',.':'1,234.56','.,':'1.234,56',' .':'1 234.56',' ,':'1 234,56',' .':'1 234.56',' ,':'1 234,56'},naStrings={'na':1,'n/a':1,'-':1,':':1};var matches={},bestMatch=['-.',0];sample=sample||[];_.each(sample,function(n){_.each(knownFormats,function(regex,fmt){if(matches[fmt]===undefined)matches[fmt]=0;if(regex.test(n)){matches[fmt]+=1;if(matches[fmt]>bestMatch[1]){bestMatch[0]=fmt;bestMatch[1]=matches[fmt];}}});});format=bestMatch[0];var type={parse:function(raw){if(_.isNumber(raw)||_.isUndefined(raw)||_.isNull(raw))return raw;var number=raw.replace("%","").replace('–','-').replace('—','-');if(format[0]!='-'){number=number.replace(format[0],'');} if(format[1]!='.'){number=number.replace(format[1],'.');} if(isNaN(number)||number===""){if(!naStrings[number.toLowerCase()]&&number!=="")errors++;return raw;} return Number(number);},toNum:function(i){return i;},fromNum:function(i){return i;},errors:function(){return errors;},name:function(){return'number';},formatter:function(config){var format=config['number-format']||'-',div=Number(config['number-divisor']||0),append=(config['number-append']||'').replace(/ /g,'\u00A0'),prepend=(config['number-prepend']||'').replace(/ /g,'\u00A0');if(div==60) {return function(val){if(isNaN(val))return val;var minutes=Math.floor(val);var minutePart=minutes%60;var hours=Math.floor(minutes / 60);if(hours>0) return hours+'u'+minutePart+'m';return minutePart+'m';};} return function(val,full,round){if(isNaN(val))return val;var _fmt=format;if(div!==0&&_fmt=='-')_fmt='n1';if(div!==0)val=Number(val)/ Math.pow(10,div);if(_fmt.substr(0,1)=='s'){var sig=+_fmt.substr(1);_fmt='n'+Math.max(0,signDigitsDecimalPlaces(val,sig));} if(round)_fmt='n0';val=Globalize.format(val,_fmt!='-'?_fmt:null);return full?prepend+val+append:val;};},isValid:function(val){return val===""||naStrings[String(val).toLowerCase()]||_.isNumber(type.parse(val));},ambiguousFormats:function(){var candidates=[];_.each(matches,function(cnt,fmt){if(cnt==bestMatch[1]){candidates.push([fmt,formatLabels[fmt]]);}});return candidates;},format:function(fmt){if(arguments.length){format=fmt;return type;} return format;}};return type;};dw.column.types.date=function(sample){var format,errors=0,matches={},bestMatch=['',0],knownFormats={'YYYY':{test:/^ *(?:1[7-9]|20)\d{2} *$/,parse:/^ *(\d{4}) *$/,precision:'year'},'YYYY-H':{test:/^ *[12]\d{3}[ \-\/]?[hH][12] *$/,parse:/^ *(\d{4})[ \-\/]?[hH]([12]) *$/,precision:'half'},'H-YYYY':{test:/^ *[hH][12][ \-\/][12]\d{3} *$/,parse:/^ *[hH]([12])[ \-\/](\d{4}) *$/,precision:'half'},'YYYY-Q':{test:/^ *[12]\d{3}[ \-\/]?[qQ][1234] *$/,parse:/^ *(\d{4})[ \-\/]?[qQ]([1234]) *$/,precision:'quarter'},'Q-YYYY':{test:/^ *[qQ]([1234])[ \-\/][12]\d{3} *$/,parse:/^ *[qQ]([1234])[ \-\/](\d{4}) *$/,precision:'quarter'},'YYYY-M':{test:/^ *([12]\d{3}) ?[ \-\/\.mM](0?[1-9]|1[0-2]) *$/,parse:/^ *(\d{4}) ?[ \-\/\.mM](0?[1-9]|1[0-2]) *$/,precision:'month'},'M-YYYY':{test:/^ *(0?[1-9]|1[0-2]) ?[ \-\/\.][12]\d{3} *$/,parse:/^ *(0?[1-9]|1[0-2]) ?[ \-\/\.](\d{4}) *$/,precision:'month'},'YYYY-WW':{test:/^ *[12]\d{3}[ -]?[wW](0?[1-9]|[1-4]\d|5[0-3]) *$/,parse:/^ *(\d{4})[ -]?[wW](0?[1-9]|[1-4]\d|5[0-3]) *$/,precision:'week'},'MM/DD/YYYY':{test:/^ *(0?[1-9]|1[0-2])([\-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2([12]\d{3})$/,parse:/^ *(0?[1-9]|1[0-2])([\-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2(\d{4})$/,precision:'day'},'DD/MM/YYYY':{test:/^ *(0?[1-9]|[1-2]\d|3[01])([\-\.\/ ?])(0?[1-9]|1[0-2])\2([12]\d{3})$/,parse:/^ *(0?[1-9]|[1-2]\d|3[01])([\-\.\/ ?])(0?[1-9]|1[0-2])\2(\d{4})$/,precision:'day'},'YYYY-MM-DD':{test:/^ *([12]\d{3})([\-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01])$/,parse:/^ *(\d{4})([\-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01])$/,precision:'day'},'YYYY-WW-d':{test:/^ *[12]\d{3}[ \-]?[wW](0?[1-9]|[1-4]\d|5[0-3])(?:[ \-]?[1-7]) *$/,parse:/^ *(\d{4})[ \-]?[wW](0?[1-9]|[1-4]\d|5[0-3])(?:[ \-]?([1-7])) *$/,precision:'day'},'MM/DD/YYYY HH:MM':{test:/^ *(0?[1-9]|1[0-2])([-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2([12]\d{3}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,parse:/^ *(0?[1-9]|1[0-2])([-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2(\d{4}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,precision:'day-minutes'},'DD.MM.YYYY HH:MM':{test:/^ *(0?[1-9]|[1-2]\d|3[01])([-\.\/ ?])(0?[1-9]|1[0-2])\2([12]\d{3}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,parse:/^ *(0?[1-9]|[1-2]\d|3[01])([-\.\/ ?])(0?[1-9]|1[0-2])\2(\d{4}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,precision:'day-minutes'},'YYYY-MM-DD HH:MM':{test:/^ *([12]\d{3})([-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01]) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,parse:/^ *(\d{4})([-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01]) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d) *$/,precision:'day-minutes'},'MM/DD/YYYY HH:MM:SS':{test:/^ *(0?[1-9]|1[0-2])([-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2([12]\d{3}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,parse:/^ *(0?[1-9]|1[0-2])([-\/] ?)(0?[1-9]|[1-2]\d|3[01])\2(\d{4}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,precision:'day-seconds'},'DD.MM.YYYY HH:MM:SS':{test:/^ *(0?[1-9]|[1-2]\d|3[01])([-\.\/ ?])(0?[1-9]|1[0-2])\2([12]\d{3}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,parse:/^ *(0?[1-9]|[1-2]\d|3[01])([-\.\/ ?])(0?[1-9]|1[0-2])\2(\d{4}) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,precision:'day-seconds'},'YYYY-MM-DD HH:MM:SS':{test:/^ *([12]\d{3})([-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01]) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,parse:/^ *(\d{4})([-\/\. ?])(0?[1-9]|1[0-2])\2(0?[1-9]|[1-2]\d|3[01]) *[ \-\|] *(0?\d|1\d|2[0-3]):([0-5]\d)(?::([0-5]\d))? *$/,precision:'day-seconds'}};function test(str,key){var fmt=knownFormats[key];if(_.isRegExp(fmt.test)){return fmt.test.test(str);}else{return fmt.test(str,key);}} function parse(str,key){var fmt=knownFormats[key];if(_.isRegExp(fmt.parse)){return str.match(fmt.parse);}else{return fmt.parse(str,key);}} sample=sample||[];_.each(knownFormats,function(format,key){_.each(sample,function(n){if(matches[key]===undefined)matches[key]=0;if(test(n,key)){matches[key]+=1;if(matches[key]>bestMatch[1]){bestMatch[0]=key;bestMatch[1]=matches[key];}}});});format=bestMatch[0];function dateFromIsoWeek(year,week,day){var d=new Date(Date.UTC(year,0,3));d.setUTCDate(3-d.getUTCDay()+(week-1)*7+parseInt(day,10));return d;} function dateToIsoWeek(date){var d=date.getUTCDay(),t=new Date(date.valueOf());t.setDate(t.getDate()-((d+6)%7)+3);var iso_year=t.getUTCFullYear(),w=Math.floor((t.getTime()-new Date(iso_year,0,1,-6))/ 864e5);return[iso_year,1+Math.floor(w/7),d>0?d:7];} var type={parse:function(raw){if(_.isDate(raw)||_.isUndefined(raw))return raw;if(!format||!_.isString(raw)){errors++;return raw;} var m=parse(raw,format);if(!m){errors++;return raw;}else{if(!test(raw,format))errors++;} switch(format){case'YYYY':return new Date(m[1],0,1);case'YYYY-H':return new Date(m[1],(m[2]-1)*6,1);case'H-YYYY':return new Date(m[2],(m[1]-1)*6,1);case'YYYY-Q':return new Date(m[1],(m[2]-1)*3,1);case'Q-YYYY':return new Date(m[2],(m[1]-1)*3,1);case'YYYY-M':return new Date(m[1],(m[2]-1),1);case'M-YYYY':return new Date(m[2],(m[1]-1),1);case'YYYY-WW':return dateFromIsoWeek(m[1],m[2],1);case'YYYY-WW-d':return dateFromIsoWeek(m[1],m[2],m[3]);case'YYYY-MM-DD':return new Date(m[1],(m[3]-1),m[4]);case'DD/MM/YYYY':return new Date(m[4],(m[3]-1),m[1]);case'MM/DD/YYYY':return new Date(m[4],(m[1]-1),m[3]);case'YYYY-MM-DD HH:MM':return new Date(m[1],(m[3]-1),m[4],m[5]||0,m[6]||0,0);case'DD.MM.YYYY HH:MM':return new Date(m[4],(m[3]-1),m[1],m[5]||0,m[6]||0,0);case'MM/DD/YYYY HH:MM':return new Date(m[4],(m[1]-1),m[3],m[5]||0,m[6]||0,0);case'YYYY-MM-DD HH:MM:SS':return new Date(m[1],(m[3]-1),m[4],m[5]||0,m[6]||0,m[7]||0);case'DD.MM.YYYY HH:MM:SS':return new Date(m[4],(m[3]-1),m[1],m[5]||0,m[6]||0,m[7]||0);case'MM/DD/YYYY HH:MM:SS':return new Date(m[4],(m[1]-1),m[3],m[5]||0,m[6]||0,m[7]||0);} errors++;return raw;},toNum:function(d){return d.getTime();},fromNum:function(i){return new Date(i);},errors:function(){return errors;},name:function(){return'date';},format:function(fmt){if(arguments.length){format=fmt;return type;} return format;},precision:function(){return knownFormats[format].precision;},formatter:function(config){if(!format)return _.identity;var M_pattern=Globalize.culture().calendar.patterns.M.replace('MMMM','MMM');switch(knownFormats[format].precision){case'year':return function(d){return!_.isDate(d)?d:d.getFullYear();};case'half':return function(d){return!_.isDate(d)?d:d.getFullYear()+' H'+(d.getMonth()/6+1);};case'quarter':return function(d){return!_.isDate(d)?d:d.getFullYear()+' Q'+(d.getMonth()/3+1);};case'month':return function(d){return!_.isDate(d)?d:Globalize.format(d,'MMM yy');};case'week':return function(d){return!_.isDate(d)?d:dateToIsoWeek(d).slice(0,2).join(' W');};case'day':return function(d,verbose){return!_.isDate(d)?d:Globalize.format(d,verbose?'D':'d');};case'day-minutes':return function(d){return!_.isDate(d)?d:Globalize.format(d,M_pattern).replace(' ',' ')+' - '+Globalize.format(d,'t').replace(' ',' ');};case'day-seconds':return function(d){return!_.isDate(d)?d:Globalize.format(d,'T').replace(' ',' ');};}},isValid:function(val){return _.isDate(type.parse(val));},ambiguousFormats:function(){var candidates=[];_.each(matches,function(cnt,fmt){if(cnt==bestMatch[1]){candidates.push([fmt,fmt]);}});return candidates;}};return type;};dw.datasource={};dw.datasource.delimited=function(opts){function loadAndParseCsv(){if(opts.url){return $.ajax({url:opts.url,method:'GET',dataType:"text"}).then(function(raw){return new DelimitedParser(opts).parse(raw);});}else if(opts.csv){var dfd=$.Deferred(),parsed=dfd.then(function(raw){return new DelimitedParser(opts).parse(raw);});dfd.resolve(opts.csv);return parsed;} throw'you need to provide either an URL or CSV data.';} var delimited={dataset:loadAndParseCsv};return delimited;};var DelimitedParser=function(opts){opts=_.extend({delimiter:"auto",quoteChar:"\"",skipRows:0,emptyValue:null,transpose:false,firstRowIsHeader:true},opts);this.__delimiterPatterns=getDelimiterPatterns(opts.delimiter,opts.quoteChar);this.opts=opts;};function getDelimiterPatterns(delimiter,quoteChar){return new RegExp(("(\\"+delimiter+"|\\r?\\n|\\r|^)"+"(?:"+quoteChar+"([^"+quoteChar+"]*(?:"+quoteChar+"\"[^"+quoteChar+"]*)*)"+quoteChar+"|"+"([^"+quoteChar+"\\"+delimiter+"\\r\\n]*))"),"gi");} _.extend(DelimitedParser.prototype,{parse:function(data){var me=this,opts=this.opts;me.__rawData=data;if(opts.delimiter=='auto'){opts.delimiter=me.guessDelimiter(data,opts.skipRows);me.__delimiterPatterns=getDelimiterPatterns(opts.delimiter,opts.quoteChar);} var closure=opts.delimiter!='|'?'|':'#',arrData;data=closure+data.replace(/\s+$/g,'')+closure;function parseCSV(delimiterPattern,strData,strDelimiter){strDelimiter=(strDelimiter||",");var arrData=[[]];var arrMatches=null,strMatchedValue;while(arrMatches=delimiterPattern.exec(strData)){var strMatchedDelimiter=arrMatches[1];if(strMatchedDelimiter.length&&(strMatchedDelimiter!=strDelimiter)){arrData.push([]);} if(arrMatches[2]){strMatchedValue=arrMatches[2].replace(new RegExp("\"\"","g"),"\"");}else{strMatchedValue=arrMatches[3];} arrData[arrData.length-1].push(strMatchedValue);} if(arrData[0][0].substr(0,1)==closure){arrData[0][0]=arrData[0][0].substr(1);} var p=arrData.length-1,q=arrData[p].length-1,r=arrData[p][q].length-1;if(arrData[p][q].substr(r)==closure){arrData[p][q]=arrData[p][q].substr(0,r);} return(arrData);} function transpose(arrMatrix){var a=arrMatrix,w=a.length?a.length:0,h=a[0]instanceof Array?a[0].length:0;if(h===0||w===0){return[];} var i,j,t=[];for(i=0;imaxMatchCount){maxMatchCount=c;k=i;}});return delimiters[k];}});dw.utils={minMax:function(columns){var minmax=[Number.MAX_VALUE,-Number.MAX_VALUE];_.each(columns,function(column){minmax[0]=Math.min(minmax[0],column.range()[0]);minmax[1]=Math.max(minmax[1],column.range()[1]);});return minmax;},dateFormat:function(daysDelta){var new_month=true,last_date=false;function timeFormat(formats){return function(date){new_month=!last_date||date.getMonth()!=last_date.getMonth();last_date=date;var i=formats.length-1,f=formats[i];while(!f[1](date))f=formats[--i];return f[0](date);};} function time_fmt(fmt){var format=function(date){var r=Globalize.format(date,fmt);return fmt!='htt'?r:r.toLowerCase();};return format;} var fmt=(function(lang){return{date:lang=='de'?"dd.":"dd",hour:lang!='en'?"H:00":"htt",minute:lang=='de'?"H:mm":'h:mm',mm:lang=='de'?'d.M.':'MM/dd',mmm:lang=='de'?'d.MMM':'MMM dd',mmmm:lang=='de'?'d. MMMM':'MMMM dd'};})(Globalize.culture().language);return timeFormat([[time_fmt("yyyy"),function(){return true;}],[time_fmt(daysDelta>70?"MMM":"MMM"),function(d){return d.getMonth()!==0;}],[time_fmt(fmt.date),function(d){return d.getDate()!=1;}],[time_fmt(daysDelta<7?fmt.mm:daysDelta>70?fmt.mmm:fmt.mmm),function(d){return d.getDate()!=1&&new_month;}],[time_fmt(fmt.hour),function(d){return d.getHours();}],[time_fmt(fmt.minute),function(d){return d.getMinutes();}],[time_fmt(":ss"),function(d){return d.getSeconds();}],[time_fmt(".fff"),function(d){return d.getMilliseconds();}]]);},longDateFormat:function(column){return function(d){if(column.type()=='date'){switch(column.type(true).precision()){case'year':return d.getFullYear();case'quarter':return d.getFullYear()+' Q'+(d.getMonth()/3+1);case'month':return Globalize.format(d,'MMM yy');case'day':return Globalize.format(d,'MMM d');case'minute':return Globalize.format(d,'t');case'second':return Globalize.format(d,'T');}}else{return d;}};},columnNameColumn:function(columns){var names=_.map(columns,function(col){return col.title();});return dw.column('',names);},name:function(obj){return _.isFunction(obj.name)?obj.name():_.isString(obj.name)?obj.name:obj;},getMaxChartHeight:function(el){function margin(el,type){if($(el).css('margin-'+type)=='auto')return 0;return+$(el).css('margin-'+type).replace('px','');} var ch=0,bottom=0;$('body > *').each(function(i,el){var t=el.tagName.toLowerCase();if(t!='script'&&el.id!='chart'&&!$(el).hasClass('tooltip')&&!$(el).hasClass('qtip')&&!$(el).hasClass('container')&&!$(el).hasClass('noscript')){ch+=$(el).outerHeight(false);} ch+=Math.max(margin(el,'top'),bottom);bottom=margin(el,'bottom');});ch+=bottom;var mt=$('#chart').css('margin-top').replace('px',''),mb=$('#chart').css('margin-bottom').replace('px',''),maxH=$(window).height()-ch-8;if(!$.support.leadingWhitespace)maxH-=15;maxH-=$('body').css('padding-top').replace('px','');maxH-=$('body').css('padding-bottom').replace('px','');return maxH;},purifyHtml:function(input,allowed){var tags=/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,commentsAndPhpTags=/|<\?(?:php)?[\s\S]*?\?>/gi,default_allowed="

",allowed_split={};if(allowed===undefined)allowed=default_allowed;allowed_split[allowed]=(((allowed||"")+"").toLowerCase().match(/<[a-z][a-z0-9]*>/g)||[]).join('');function purifyHtml(input,allowed){if(!_.isString(input)||input.indexOf("<")<0){return input;} if(allowed===undefined){allowed=default_allowed;} if(!allowed_split[allowed]){allowed_split[allowed]=(((allowed||"")+"").toLowerCase().match(/<[a-z][a-z0-9]*>/g)||[]).join('');} return input.replace(commentsAndPhpTags,'').replace(tags,function($0,$1){return allowed_split[allowed].indexOf('<'+$1.toLowerCase()+'>')>-1?$0:'';});} dw.utils.purifyHtml=purifyHtml;return purifyHtml(input,allowed);},significantDimension:function(values){var result=[],dimension=0,uniqValues=_.uniq(values),check,diff;if(uniqValues.length==1){return-1*Math.floor(Math.log(uniqValues[0])/Math.LN10);} if(_.uniq(_.map(uniqValues,round)).length==uniqValues.length){check=function(){return _.uniq(result).length==uniqValues.length;};diff=-1;}else{check=function(){return _.uniq(result).length0);if(max_iter<10){console.warn('maximum iteration reached',values,result,dimension);} if(diff<0)dimension+=2;else dimension--;function round(v){return dw.utils.round(v,dimension);} return dimension;},round:function(value,dimension){var base=Math.pow(10,dimension);return Math.round(value*base)/ base;},smartRound:function(values,add_precision){var dim=dw.utils.significantDimension(values);dim+=add_precision||0;return _.map(values,function(v){return dw.utils.round(v,dim);});},nearest:function(array,value){var min_diff=Number.MAX_VALUE,min_diff_val;_.each(array,function(v){var d=Math.abs(v-value);if(d');column.each(function(val,i){var lbl=format(val);if(!lbl)return;select.append('');});select.change(function(evt){var cur=select.val();update(cur);});select.addClass('filter-ui filter-select');return select;};if(type=='buttons')f=function(vis){var div=$('
');div.addClass('filter-ui filter-links');column.each(function(val,i){var lbl=format(val);if(!lbl)return;var a=$(''+(_.isString(lbl)?$.trim(lbl):lbl)+'').data('row',i);div.append(a);});$('a',div).click(function(e){var a=$(e.target);e.preventDefault();if(a.hasClass('active'))return;$('a',div).removeClass('active');a.addClass('active');update(a.data('row'));});div.appendTo('body');var fy=$('a:first',div).offset().top,ly=$('a:last',div).offset().top;if(fy!=ly){div.remove();return getFilterUI('select')(vis);} return div;};if(type=='timescale')f=function(vis){var w=Math.min(vis.__w-30,Math.max(300,vis.__w*0.7)),timescale=d3.time.scale().domain([column.val(0),column.val(-1)]).range([0,w]),timesel=$('
').css({position:'relative',height:45,'margin-left':3}).addClass('filter-ui'),nticks=w / 80,ticks=timescale.ticks(nticks),daysDelta=Math.round((column.val(-1).getTime()-column.val(0).getTime())/ 86400000),fmt=dw.utils.dateFormat(daysDelta),lfmt=column.type(true).formatter(),dots=timescale.ticks(w / 8),lbl_x=function(i){return Math.max(-18,timescale(column.val(i))-40);};_.each(ticks,function(d){var s=$(''+fmt(d)+''),x=timescale(d)-40,lw=vis.labelWidth(fmt(d));if(40-lw*0.5+x<0)x=-40+0.5*lw;s.css({position:'absolute',top:0,width:80,left:x,'text-align':'center',opacity:0.55});timesel.append(s);});_.each(dots,function(d){if(d.getTime()column.val(-1).getTime())return;var s=$('');s.css({position:'absolute',bottom:19,width:1,height:'1ex','border-left':'1px solid #000','vertical-align':'bottom',left:Math.round(timescale(d))+0.5});if(!_.find(ticks,function(td){return d.getTime()==td.getTime();})){s.css({height:'0.6ex',opacity:0.5});} timesel.append(s);});var pointer=$('
').css({position:'absolute',width:20,bottom:2,left:timescale(column.val(active))-9,'text-align':'center'});timesel.append(pointer);var lbl=$('
').css({position:'absolute',width:80,top:0,left:lbl_x(active),'text-align':'center'}).data('last-txt',lfmt(column.val(active))).data('last-left',lbl_x(active));$('span',lbl).css({background:vis.theme().colors.background,'font-weight':'bold','padding':'0 1ex'}).html(lfmt(column.val(active)));timesel.append(lbl);$('
').css({position:'absolute',width:w+1,bottom:15,height:2,'border-bottom':'1px solid #000'}).appendTo(timesel);var bar=$('
').css({position:'absolute',left:0,width:w,height:40});timesel.append(bar);function nearest(rel_x){var x_date=timescale.invert(rel_x),min_dist=Number.MAX_VALUE,nearest_row=0;column.each(function(date,i){var dist=Math.abs(date.getTime()-x_date.getTime());if(dist0;},isHighlighted:function(obj){if(_.isUndefined(obj)===undefined)return false;var hl=this.get('metadata.visualize.highlighted-series'),obj_name=dw.utils.name(obj);return!_.isArray(hl)||hl.length===0||_.indexOf(hl,obj_name)>=0;},locale:function(_locale){if(arguments.length){locale=_locale;Globalize.culture(locale);return chart;} return locale;},metricPrefix:function(_metric_prefix){if(arguments.length){metric_prefix=_metric_prefix;return chart;} return metric_prefix;},formatValue:function(val,full,round){var format=chart.get('metadata.describe.number-format'),div=Number(chart.get('metadata.describe.number-divisor')),append=chart.get('metadata.describe.number-append','').replace(' ',' '),prepend=chart.get('metadata.describe.number-prepend','').replace(' ',' ');if(div!==0)val=Number(val)/ Math.pow(10,div);if(format!='-'){if(round||val==Math.round(val))format=format.substr(0,1)+'0';val=Globalize.format(val,format);}else if(div!==0){val=val.toFixed(1);} return full?prepend+val+append:val;},render:function(container){if(!visualization||!theme||!dataset){throw'cannot render the chart!';} visualization.chart(chart);visualization.__init();var $cont=$(container);$cont.parent().addClass('vis-'+visualization.id).addClass('theme-'+theme.id);visualization.render($cont);},attributes:function(attrs){if(arguments.length){attributes=attrs;return chart;} return attributes;},onChange:change_callbacks.add,columnFormatter:function(column){var colFormat=chart.get('metadata.data.column-format',{});colFormat=colFormat[column.name()]||{};if(column.type()=='number'&&colFormat=='auto'){var mtrSuf=dw.utils.metricSuffix(chart.locale()),values=column.values(),dim=dw.utils.significantDimension(values),div=dim<-2?(Math.round((dim*-1)/ 3)*3):(dim>2?dim*-1:0),ndim=dw.utils.significantDimension(_.map(values,function(v){return v / Math.pow(10,div);}));colFormat={'number-divisor':div,'number-append':div?mtrSuf[div]||' × 10'+div+'':'','number-format':'n'+Math.max(0,ndim)};} return column.type(true).formatter(colFormat);}};function applyChanges(dataset){var changes=chart.get('metadata.data.changes',[]);var transpose=chart.get('metadata.data.transpose',false);_.each(changes,function(change){var row="row",column="column";if(transpose){row="column";column="row";} if(dataset.hasColumn(change[column])){if(change[row]===0){dataset.column(change[column]).title(change.value);} else{dataset.column(change[column]).raw(change[row]-1,change.value);}}});var columnFormats=chart.get('metadata.data.column-format',{});_.each(columnFormats,function(columnFormat,key){if(columnFormat.type&&dataset.hasColumn(key)){dataset.column(key).type(columnFormat.type);} if(columnFormat['input-format']&&dataset.hasColumn(key)){dataset.column(key).type(true).format(columnFormat['input-format']);}});return dataset;} return chart;};dw.visualization=(function(){var __vis={};var visualization=function(id){return new __vis[id]();};visualization.register=function(id){var parent=arguments.length==3?__vis[arguments[1]].prototype:dw.visualization.base,props=arguments[arguments.length-1],vis=__vis[id]=function(){};_.extend(vis.prototype,parent,{id:id},props);};return visualization;})();dw.visualization.base=(function(){}).prototype;_.extend(dw.visualization.base,{__init:function(){this.__renderedDfd=$.Deferred();if(window.parent&&window.parent['postMessage']){window.parent.postMessage('datawrapper:vis:init','*');} return this;},render:function(el){$(el).html('implement me!');},theme:function(theme){if(!arguments.length)return this.__theme;this.__theme=theme;var attr_properties=['horizontalGrid','verticalGrid','yAxis','xAxis'];_.each(attr_properties,function(prop){if(theme.hasOwnProperty(prop)){for(var key in theme[prop]){var lkey=key.replace(/([A-Z])/g,"-$1").toLowerCase();if(!theme[prop].hasOwnProperty(lkey)){theme[prop][lkey]=theme[prop][key];}}}});return this;},size:function(width,height){var me=this;if(!arguments.length)return[me.__w,me.__h];me.__w=width;me.__h=height;return me;},get:function(str,_default){return this.chart().get('metadata.visualize.'+str,_default);},notify:function(str){if(dw.backend&&_.isFunction(dw.backend.notify)){return dw.backend.notify(str);}else{if(window.parent&&window.parent['postMessage']){window.parent.postMessage('notify:'+str,'*');}else if(window['console']){console.log(str);}}},signature:function(){},translate:function(str){var locale=this.meta.locale,lang=this.lang;return locale[str]?locale[str][lang]||locale[str]:str;},checkBrowserCompatibility:function(){return true;},chart:function(chart){var me=this;if(!arguments.length)return me.__chart;me.dataset=chart.dataset();me.theme(chart.theme());me.__chart=chart;var columnFormat=chart.get('metadata.data.column-format',{});var ignore={};_.each(columnFormat,function(format,key){ignore[key]=!!format.ignore;});me.dataset.filterColumns(ignore);return me;},axes:function(returnAsColumns){var me=this,dataset=me.dataset,usedColumns={},axes={},axesDef,axesAsColumns={},errors=[];axesDef=me.chart().get('metadata.axes',{});_.each(me.meta.axes,function(o,key){if(axesDef[key]){var columns=axesDef[key];if(columnExists(columns)){axes[key]=columns;if(!_.isArray(columns))columns=[columns];_.each(columns,function(column){usedColumns[column]=true;});}}});_.each(me.meta.axes,function(axisDef,key){function checkColumn(col){return!usedColumns[col.name()]&&_.indexOf(axisDef.accepts,col.type())>=0;} function errMissingColumn(){var msg=dw.backend?dw.backend.messages.insufficientData:'The visualization needs at least one column of the type %type to populate axis %key';errors.push(msg.replace('%type',axisDef.accepts).replace('%key',key));} if(axes[key])return;if(!axisDef.optional){if(!axisDef.multiple){var c=_.find(dataset.columns(),checkColumn);if(c){usedColumns[c.name()]=true;axes[key]=c.name();}else{if(_.indexOf(axisDef.accepts,'text')>=0){var col=dw.column(key,_.map(_.range(dataset.numRows()),function(i){return(i>25?String.fromCharCode(64+i/26):'')+String.fromCharCode(65+(i%26));}),'text');dataset.add(col);me.chart().dataset(dataset);usedColumns[col.name()]=true;axes[key]=col.name();}else{errMissingColumn();}}}else{axes[key]=[];dataset.eachColumn(function(c){if(checkColumn(c)){usedColumns[c.name()]=true;axes[key].push(c.name());}});if(!axes[key].length){errMissingColumn();}}}else{axes[key]=false;}});if(errors.length){me.notify(errors.join('
'));} _.each(axes,function(columns,key){if(!_.isArray(columns)){axesAsColumns[key]=columns!==false?me.dataset.column(columns):null;}else{axesAsColumns[key]=[];_.each(columns,function(column,i){axesAsColumns[key][i]=column!==false?me.dataset.column(column):null;});}});me.axes=function(returnAsColumns){return returnAsColumns?axesAsColumns:axes;};function columnExists(columns){if(!_.isArray(columns))columns=[columns];for(var i=0;i'+txt+'
');lbl.css(attrs.css);lbl.css({'text-align':attrs.align});attrs.root.append(lbl);function position(){var w=attrs.w||me.labelWidth(attrs.txt,attrs.cl,attrs.size),h=attrs.h||lbl.height(),x=attrs.x,y=attrs.y,rot_w=100;var css=attrs.rotate==-90?{left:x-rot_w*0.5,top:attrs.valign=='top'?y+rot_w*0.5:y-rot_w*0.5,width:rot_w,height:20,'text-align':attrs.valign=='top'?'right':'left'}:{left:attrs.align=='left'?x:attrs.align=='center'?x-w*0.5:x-w,top:y-h*(attrs.valign=='top'?0:attrs.valign=='middle'?0.5:1),width:w,height:h};if(attrs.size){css['font-size']=attrs.size;} return css;} lbl.css($.extend({},attrs.css,position()));if(attrs.rotate==-90){lbl.css({'-moz-transform':'rotate(-90deg)','-webkit-transform':'rotate(-90deg)','-ms-transform':'rotate(-90deg)','-o-transform':'rotate(-90deg)','filter':'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'});} var label={el:lbl};label.text=function(txt){if(arguments.length){$('span',lbl).html(txt);return label;} return $('span',lbl).html();};label.animate=function(_attrs,duration,easing){if(_attrs.align!=attrs.align){setTimeout(function(){lbl.css({'text-align':_attrs.align});},duration?duration*0.5:10);} if(attrs.rotate&&_attrs.valign!=attrs.valign){setTimeout(function(){lbl.css({'text-align':_attrs.valign=='top'?'right':'left'});},duration?duration*0.5:10);} if(_attrs.txt!=attrs.txt)label.text(_attrs.txt);$.extend(attrs,_attrs);var _css=$.extend({},attrs.css,position());return duration?lbl.stop().animate(_css,duration,easing):lbl.css(_css);};label.attr=label.animate;label.data=function(){return lbl.data.apply(lbl,arguments);};label.hide=function(){return lbl.hide.apply(lbl,arguments);};label.show=function(){return lbl.show.apply(lbl,arguments);};label.width=function(){return lbl.width.apply(lbl,arguments);};label.height=function(){return lbl.height.apply(lbl,arguments);};label.left=function(){return lbl.offset().left;};label.top=function(){return lbl.offset().top;};label.on=function(){return lbl.on.apply(lbl,arguments);};label.hasClass=function(){return lbl.hasClass.apply(lbl,arguments);};label.addClass=function(){return lbl.addClass.apply(lbl,arguments);};label.removeClass=function(){return lbl.removeClass.apply(lbl,arguments);};label.remove=function(){return lbl.remove.apply(lbl,arguments);};lbl.data('label',label);return label;},labelWidth:function(txt,className,fontSize){var lbl,span,$span,ow,root=this.__root.get(0);lbl=document.createElement('div');lbl.style.position='absolute';lbl.style.left='-10000px';span=document.createElement('span');lbl.appendChild(span);$span=$(span);root.appendChild(lbl);ow=!_.isUndefined(span.offsetWidth)?function(){return span.offsetWidth;}:function(){return $span.outerWidth();};function labelWidth(txt,className,fontSize){lbl.setAttribute('class','label '+(className?' '+className:''));span.style.fontSize=fontSize?fontSize:null;span.innerHTML=txt;return ow();} this.labelWidth=labelWidth;return labelWidth(txt,className,fontSize);},labelHeight:function(txt,className,width,fontSize){var lbl,span,$span,oh,root=this.__root.get(0);lbl=document.createElement('div');lbl.style.position='absolute';lbl.style.left='-10000px';span=document.createElement('span');lbl.appendChild(span);$span=$(span);root.appendChild(lbl);oh=!_.isUndefined(span.offsetHeight)?function(){return span.offsetHeight;}:function(){return $span.height();};function labelHeight(txt,className,width,fontSize){lbl.setAttribute('class','label '+(className?' '+className:''));lbl.style.width=width+'px';span.style.fontSize=fontSize?fontSize:null;span.innerHTML=txt;return oh();} this.labelHeight=labelHeight;return labelHeight(txt,className,width,fontSize);},orderSeriesElements:function(){var me=this;_.each(me.dataset.columns(),function(column){if(me.chart().isHighlighted(column)){_.each(me.__elements[column.name()],function(el){el.toFront();});}});},getKeyByPoint:function(x,y,evt){var me=this,el=me.__canvas.paper.getElementByPoint(x,y);if(!el){el=$(evt.target);if(!el.hasClass('label'))el=el.parents('.label');} if(el&&el.data('key'))return el.data('key');return null;},getKeyByLabel:function(){var me=this;if(me.__hoveredLabel){lbl=$(me.__hoveredLabel);if(me.__hoveredLabel.nodeName.toLowerCase()=='span')lbl=lbl.parent();if(lbl.data('key'))return lbl.data('key');} return null;},getDataRowByPoint:function(x,y){throw'getDataRowByPoint() needs to be implemented by each visualization';},_baseColor:function(){var me=this,base=me.get('base-color',0),palette=me.theme().colors.palette,fromPalette=!_.isString(base);return fromPalette?palette[base]:base;},_getColor:function(series,row,opts){var me=this,key=opts.key;if(!key&&series){key=series.name();} if(key){var customColors=me.get('custom-colors',{});if(customColors[key])return customColors[key];} if(opts.byValue&&series){return opts.byValue(series.val(row));} if(series&&me.__colors&&me.__colors[key]){return me.__colors[key];} var palette=me.theme().colors.palette,baseColor=me._baseColor();if(opts.usePalette){return palette[(Math.max(0,palette.indexOf(baseColor))+row)%palette.length];} if(opts.varyLightness){var lab=chroma.color(baseColor).lab(),minL=Math.min(lab[0],50),maxL=91,f=row /(me.dataset.numRows()-1);return chroma.lab(minL+f*(maxL-minL),lab[1],lab[2]).hex();} return baseColor;},getColor:function(series,row,opts){var me=this,chart=me.chart(),color=me._getColor(series,row,opts);if(series&&chart.hasHighlight()&&!chart.isHighlighted(series)){return chroma.interpolate(color,me.theme().colors.background,0.65,'rgb').hex();} return color;},getKeyColor:function(_key,_value,_useNegativeColor,_colorful){var me=this,palette=me.theme().colors.palette,colorByRow=me.meta['color-by']=='row',colorCache={};function keyColor(key,value,useNegativeColor,colorful){var color;key=String(key);var userCustomColors=me.get('custom-colors',{});if(userCustomColors[key]){color=userCustomColors[key];}else if(value&&useNegativeColor){color=me.theme().colors[value<0?'negative':'positive'];}else{if(key&&me.__customColors&&me.__customColors[key]) color=me.__customColors[key];else color=me._baseColor();} var key_color=chroma.hex(color),bg_color=chroma.hex(me.theme().colors.background),bg_lch=bg_color.lch();if(key&&!me.chart().isHighlighted(key)){if(!colorCache[color+'-hl']){colorCache[color+'-hl']=chroma.interpolate(key_color,bg_color,bg_lch[0]<60?0.7:0.63);} return colorCache[color+'-hl'];} return color;} me.getKeyColor=keyColor;return keyColor(_key,_value,_useNegativeColor,_colorful);},setKeyColor:function(key,color){var me=this;if(!me.__customColors)me.__customColors={};me.__customColors[key]=color;},getYTicks:function(yscale,h,noDomain,useLogScale){var me=this,domain=yscale.domain(),ticks=useLogScale?dw.utils.logTicks(domain[0],domain[1]):yscale.ticks(h / 80),bt=yscale(ticks[0]),tt=yscale(ticks[ticks.length-1]);if(!noDomain){if(Math.abs(yscale(domain[0])-bt)<30)ticks.shift();if(Math.abs(tt-yscale(domain[1]))<30)ticks.pop();ticks.unshift(domain[0]);ticks.push(domain[1]);} return ticks;},invertLabel:function(col){var c=chroma.color(col),bg=chroma.color(this.theme().colors.background);return bg.lab()[0]>60?c.lab()[0]<80:c.lab()[0]>60;},signature:function(){var me=this,sig={type:'raphael-chart',el:{}};$.each(me.__elements,function(key,elements){sig.el[key]=elements.length;});return sig;},addLegend:function(items,container){var me=this,l=$('
'),xo=me.__canvas.lpad;_.each(items,function(item){div=$('
');div.css({background:item.color,width:12,height:12,position:'absolute',left:xo,top:1});l.append(div);lbl=me.label(xo+15,0,item.label,{valign:'left',root:l});xo+=me.labelWidth(item.label)+30;});l.css({position:'relative'});container.append(l);},optimizeLabelPositions:function(labels,pad,valign){if(!labels.length)return;var i=1,c=valign=='top'?0:valign=='middle'?0.5:1,min_y=labels[0].el.parent().offset().top,max_y=min_y+labels[0].el.parent().height();labels=_.filter(labels,function(lbl){return lbl.el.is(":visible");});if(!labels.length)return;_.each(labels,function(lbl){lbl.__noverlap={otop:lbl.top(),top:lbl.top(),dy:0};lbl.height('auto');});(function loop(){var overlap=false;_.each(labels,function(lbl0,p){_.each(labels,function(lbl1,q){if(q>p){var l0=lbl0.left(),l1=lbl1.left(),r0=l0+lbl0.width(),r1=l1+lbl1.width(),t0=lbl0.__noverlap.top-pad,t1=lbl1.__noverlap.top-pad,b0=t0+lbl0.height()+pad*2,b1=t1+lbl1.height()+pad*2,dy,l0up;if(!(l1>r0||r1b0||b11){var items=[],lblFmt=me.chart().columnFormatter(me.axes(true).labels);dataset.eachRow(function(r){items.push({label:lblFmt(me.axes(true).labels.val(r)),color:me.getColor(null,r,{varyLightness:true,key:me.axes(true).labels.val(r)})});});me.addLegend(items,$('#header',c.root.parent()));} $('.showOnHover').hide();if(me.theme().columnChart.cutGridLines)me.horzGrid();me.post_render();me.renderingComplete();},update:function(){var me=this,c=me.__canvas,n=me.axesDef.columns.length;_.each(me.getBarColumns(me.get('sort-values'),me.get('reverse-order')),function(column,s){column.each(function(val,r){me._color_opts.key=me.axes(true).labels.val(r);var d=me.barDimensions(column,s,r),fill=me.getColor(column,r,me._color_opts),stroke=chroma.color(fill).darken(10).hex(),key=column.name()+'-'+r,bar_attrs={x:d.x,y:d.y,width:d.w,height:d.h,stroke:stroke,fill:fill};me.__bars[key]=me.__bars[key]||me.registerElement(c.paper.rect().attr(bar_attrs),column.name(),r);if(me.theme().columnChart.barAttrs){me.__bars[key].attr(me.theme().columnChart.barAttrs);} me.__barLbls[key]=me.__barLbls[key]||me.registerLabel(me.label(0,0,'X',{align:'center',cl:'value'}),column.name());me.__barLbls[key].animate({x:d.x+d.w*0.5,y:d.y+d.h*0.5,txt:me.formatValue(column.val(r))},1000,'expoInOut');me.__barLbls[key].data('row',r);me.__barLbls[key].hide();me.__bars[key].animate(bar_attrs,me.theme().duration,me.theme().easing).data('strokeCol',stroke);var val_y=val>=0?d.y-10:d.y+d.h+10,lbl_y=val<0?d.y-10:d.y+d.h+5,lblcl=['series'],lbl_w=c.w /(n+2),valign=val>=0?'top':'bottom',halign='center',alwaysShow=(me.chart().hasHighlight()&&me.chart().isHighlighted(column.name()))||(d.w>40);if(me.chart().hasHighlight()&&me.chart().isHighlighted(column.name())){lblcl.push('highlighted');} if(d.bw<30){lbl_y+=5;lbl_w=100;halign='right';} if(d.bw<20){lblcl.push('smaller');lbl_w=90;} if(!/^X\.\d+$/.test(column.title())&&r===0){var la={x:d.bx+d.bw*0.5,y:lbl_y,w:lbl_w,align:halign,valign:valign,cl:lblcl.join(' '),rotate:d.bw<30?-90:0},sl=me.__series_names[column.name()]=me.__series_names[column.name()]||me.registerLabel(me.label(la.x,la.y,column.title(),la),column.name());sl.animate(la,me.theme().duration,me.theme().easing);}});});var y=c.h-me.__scales.y(0)-c.bpad;me.path([['M',c.lpad,y],['L',c.w-c.rpad,y]],'axis').attr(me.theme().yAxis);},getBarColumns:function(sortBars,reverse){return this._getBarColumns(sortBars,reverse);},_getBarColumns:function(sortBars,reverse){var me=this,columns=_.map(me.axesDef.columns,function(i){return me.dataset.column(i);});if(sortBars){columns.sort(function(a,b){var aType=a.type(true);return aType.toNum?aType.toNum(a.val(0))-aType.toNum(b.val(0)):a.val()>b.val()?1:a.val()==b.val()?0:-1;});} if(reverse)columns.reverse();return columns;},initDimensions:function(r){var me=this,c=me.__canvas;me.__domain=dw.utils.minMax(me.getBarColumns());if(me.__domain[0]>0)me.__domain[0]=0;if(me.__domain[1]<0)me.__domain[1]=0;me.__scales={y:d3.scale.linear().domain(me.__domain)};me.__scales.y.rangeRound([0,c.h-c.bpad-c.tpad-30]);},barDimensions:function(column,s,r){var me=this,sc=me.__scales,c=me.__canvas,n=me.axesDef.columns.length,w,h,x,y,i,cw,bw,pad=0.35,vspace=0.1,val=column.val(r);if(c.w / n<30)vspace=0.05;cw=(c.w-c.lpad-c.rpad)*(1-vspace-vspace);bw=cw /(n+(n-1)*pad);h=sc.y(val)-sc.y(0);w=Math.round(bw / column.length);if(h>=0){y=c.h-c.bpad-sc.y(0)-h;}else{y=c.h-c.bpad-sc.y(0);h*=-1;} if(val!==0)h=Math.max(0.5,h);x=Math.round((c.w-c.lpad-c.rpad)*vspace+c.lpad+s*(bw+bw*pad));return{w:w,h:h,x:x+Math.floor((w+1)*r),y:y,bx:x,bw:bw};},getDataRowByPoint:function(x,y){return 0;},showTooltip:function(){},hideTooltip:function(){},horzGrid:function(){var me=this,yscale=me.__scales.y,c=me.__canvas,domain=me.__domain,styles=me.__styles,ticks=me.getYTicks(yscale,c.h,true);ticks=ticks.filter(function(val,t){return val>=domain[0]&&val<=domain[1];});_.each(ticks,function(val,t){var y=c.h-c.bpad-yscale(val),x=c.lpad,ly=y-10,lbl,txt=me.formatValue(val,t==ticks.length-1,true);if(me.theme().columnChart.cutGridLines)ly+=10;if(val!==0){lbl=me.__gridlabels[val]=me.__gridlabels[val]||me.label(x+2,ly,txt,{align:'left',cl:'axis',css:{opacity:0}});lbl.animate({x:x+2,y:ly,css:{opacity:1}},me.theme().duration,me.theme().easing);} if(me.theme().yTicks){me.path([['M',c.lpad-25,y],['L',c.lpad-20,y]],'tick');} if(me.theme().horizontalGrid){var p='M'+[c.lpad,y]+'H'+c.w,l=me.__gridlines[val]=me.__gridlines[val]||me.path(p,'grid').attr(me.theme().horizontalGrid).attr('opacity',0);if(val===0)l.attr(me.theme().xAxis);else if(me.theme().columnChart.cutGridLines)l.attr('stroke',me.theme().colors.background);l.animate({path:p,opacity:1},me.theme().duration,me.theme().easing);l.toBack();}});_.each(me.__gridlabels,function(lbl,val){if(_.indexOf(ticks,+val)<0){lbl.animate({css:{opacity:0}},me.theme().duration,me.theme().easing);}});_.each(me.__gridlines,function(line,val){if(_.indexOf(ticks,+val)<0){line.animate({opacity:0},me.theme().duration,me.theme().easing);}});},hover:function(hoveredSeries){var me=this,whitishBg=chroma.color(me.theme().colors.background).lch()[0]>60;function getFill(col,el){var fill=me.getColor(null,el.data('row'),{varyLightness:true,key:me.axes(true).labels.val(el.data('row'))});if(hoveredSeries!==undefined&&col.name()==dw.utils.name(hoveredSeries)){fill=chroma.color(fill).darken(whitishBg?15:-25).hex();} return fill;} _.each(me.getBarColumns(),function(column){var fill,stroke;_.each(me.__labels[column.name()],function(lbl){if(hoveredSeries!==undefined&&column.name()==dw.utils.name(hoveredSeries)){lbl.addClass('hover');if(lbl.hasClass('showOnHover'))lbl.show(0.5);}else{lbl.removeClass('hover');if(lbl.hasClass('showOnHover'))lbl.hide(0.5);} if(lbl.hasClass('value')){lbl.removeClass('hover');fill=getFill(column,lbl);lbl.addClass('inverted');}});_.each(me.__elements[column.name()],function(el){fill=getFill(column,el);stroke=chroma.color(fill).darken(10).hex();if(el.attrs.fill!=fill||el.attrs.stroke!=stroke) el.animate({fill:fill,stroke:stroke},50);});});var visibleLbls=[];_.each(me.__barLbls,function(lbl,key){if(hoveredSeries&&lbl.data('key')==dw.utils.name(hoveredSeries)){lbl.show();visibleLbls.push(lbl.data('label'));}else lbl.hide();});me.optimizeLabelPositions(visibleLbls,5);},unhoverSeries:function(){this.hoverSeries();},formatValue:function(){var me=this;me.formatValue=me.chart().columnFormatter(me.axes(true).columns[0]);return me.formatValue.apply(me,arguments);},post_render:function(){},checkData:function(){return true;}});}).call(this);(function(){dw.visualization.register('stacked-column-chart','grouped-column-chart',{_showValueLabels:function(){return false;},getBarColumns:function(sortBars,reverse){var me=this,stackedColumns=[],normalize=me.is_normalized(),columns=me._getBarColumns(sortBars,reverse);_.each(columns,function(column){var normValues;if(normalize){normValues=[];column.each(function(val){normValues.push(val / column.total());});stackedColumns.push(dw.column(column.name(),normValues));}else{stackedColumns.push(column);}});return stackedColumns;},initDimensions:function(r){var me=this,c=me.__canvas,normalize=me.is_normalized(),dMin=0,dMax=0;_.each(me._getBarColumns(),function(column){if(normalize){dMin=0;dMax=1;}else{dMin=Math.min(dMin,column.range()[0]);dMax=Math.max(dMax,column.total());}});me.__domain=normalize?[0,1]:[dMin,dMax];me.__scales={y:d3.scale.linear().domain(me.__domain)};me.__scales.y.rangeRound([0,c.h-c.bpad-c.tpad-30]);return;},barDimensions:function(column,s,r){var me=this,sc=me.__scales,yo=me.__yoffset||0,c=me.__canvas,n=me.axesDef.columns.length,w,h,x,y,i,cw,bw,pad=0.35,vspace=0.1;if(c.w / n<30)vspace=0.05;cw=(c.w-c.lpad-c.rpad)*(1-vspace-vspace);bw=bw=cw /(n+(n-1)*pad);h=sc.y(column.val(r))-sc.y(0);if(r===0)yo=0;w=bw;if(h>=0){y=c.h-c.bpad-sc.y(0)-h;}else{y=c.h-c.bpad-sc.y(0);h*=-1;} x=Math.round((c.w-c.lpad-c.rpad)*vspace+c.lpad+s*(bw+bw*pad));y=y-yo;me.__yoffset=yo+h;return{w:w,h:h,x:x,y:y,bx:x,bw:bw};},formatValue:function(){var me=this,formatter=me.chart().columnFormatter(me.axes(true).columns[0]);me.formatValue=function(v,b,c){return me.is_normalized()?Math.round(v*100)+'%':formatter(v,b,c);};return me.formatValue.apply(me,arguments);},is_normalized:function(){var me=this;return me.get('normalize',false)&&(!me.get('normalize-user',false)||$('#normalize:checked').length>0);},post_render:function(){var me=this;if(me.get('normalize-user',false)){$('.header-right').remove();var chkNormalize=$('
');chkNormalize.addClass('header-right');$('#normalize',chkNormalize).on('change',function(){me.initDimensions();me.update();me.horzGrid();});$('#header').append(chkNormalize);}},checkData:function(){var me=this,ds=me.dataset,allPositive=true;_.each(me.getBarColumns(),function(column){column.each(function(val){if(val<0){allPositive=false;return false;}});if(!allPositive)return false;});if(!allPositive){me.notify(me.translate('cannotShowNegativeValues'));}}});}).call(this);d3=function(){function t(t){for(var n=1;t*n%1;)n*=10;return n}function n(t,n,e){return function(){var r=e.apply(n,arguments);return r===n?t:r}}function e(t){var n=[t.a,t.b],e=[t.c,t.d],o=u(n),a=r(n,e),c=u(i(e,n,-a))||0;n[0]*e[1]180?l+=360:l-f>180&&(f+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:o(f,l)})):l&&r.push(r.pop()+"rotate("+l+")"),h!=g?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:o(h,g)}):g&&r.push(r.pop()+"skewX("+g+")"),m[0]!=p[0]||m[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:o(m[0],p[0])},{i:e-2,x:o(m[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(t){for(var n,i=-1;++ie;++e)r.push(l(t[e],n[e]));for(;i>e;++e)u[e]=t[e];for(;o>e;++e)u[e]=n[e];return function(t){for(e=0;a>e;++e)u[e]=r[e](t);return u}}function f(t,n){var e,r,u,i,a,c=0,s=0,f=[],l=[];for(t+="",n+="",xn.lastIndex=0,r=0;e=xn.exec(n);++r)e.index&&f.push(n.substring(c,s=e.index)),l.push({i:f.length,x:e[0]}),f.push(null),c=xn.lastIndex;for(cr;++r)if(a=l[r],a.x==e[0]){if(a.i)if(null==f[a.i+1])for(f[a.i-1]+=a.x,f.splice(a.i,1),u=r+1;i>u;++u)l[u].i--;else for(f[a.i-1]+=a.x+f[a.i+1],f.splice(a.i,2),u=r+1;i>u;++u)l[u].i-=2;else if(null==f[a.i+1])f[a.i]=a.x;else for(f[a.i]=a.x+f[a.i+1],f.splice(a.i+1,1),u=r+1;i>u;++u)l[u].i--;l.splice(r,1),i--,r--}else a.x=o(parseFloat(e[0]),parseFloat(a.x));for(;i>r;)a=l.pop(),null==f[a.i+1]?f[a.i]=a.x:(f[a.i]=a.x+f[a.i+1],f.splice(a.i+1,1)),i--;return 1===f.length?null==f[0]?(a=l[0].x,function(t){return a(t)+""}):function(){return n}:function(t){for(r=0;i>r;++r)f[(a=l[r]).i]=a.x(t);return f.join("")}}function l(t,n){for(var e,r=dn.interpolators.length;--r>=0&&!(e=dn.interpolators[r](t,n)););return e}function h(t){return"transform"==t?a:l}function g(t,n){return n-=t,function(e){return Math.round(t+n*e)}}function m(t,n){return n=n-(t=+t)?1/(n-t):0,function(e){return(e-t)*n}}function p(t,n){return n=n-(t=+t)?1/(n-t):0,function(e){return Math.max(0,Math.min(1,(e-t)*n))}}function d(t,n){try{for(var e in n)Object.defineProperty(t.prototype,e,{value:n[e],enumerable:!1})}catch(r){t.prototype=n}}function M(){}function v(t){return t}function y(t,n){var e=Math.pow(10,3*Math.abs(8-n));return{scale:n>8?function(t){return t/e}:function(t){return t*e},symbol:t}}function x(t,n){return n-(t?Math.ceil(Math.log(t)/Math.LN10):1)}function w(t){return t+""}function b(t,n,e,r){var u=e(t[0],t[1]),i=r(n[0],n[1]);return function(t){return i(u(t))}}function D(t,n){var e,r=0,u=t.length-1,i=t[r],o=t[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),(n=n(o-i))&&(t[r]=n.floor(i),t[u]=n.ceil(o)),t}function T(t,n,e,r){var u=[],i=[],o=0,a=Math.min(t.length,n.length)-1;for(t[a]n?[n,e]:[e,n]}function _(t,n,e,r){function u(){var u=Math.min(t.length,n.length)>2?T:b,c=r?p:m;return o=u(t,n,c,e),a=u(n,t,c,l),i}function i(t){return o(t)}var o,a;return i.invert=function(t){return a(t)},i.domain=function(n){return arguments.length?(t=n.map(Number),u()):t},i.range=function(t){return arguments.length?(n=t,u()):n},i.rangeRound=function(t){return i.range(t).interpolate(g)},i.clamp=function(t){return arguments.length?(r=t,u()):r},i.interpolate=function(t){return arguments.length?(e=t,u()):e},i.ticks=function(n){return F(t,n)},i.tickFormat=function(n,e){return L(t,n,e)},i.nice=function(){return D(t,Y),u()},i.copy=function(){return _(t,n,e,r)},u()}function k(t,n){return dn.rebind(t,n,"range","rangeRound","interpolate","clamp")}function Y(t){return t=Math.pow(10,Math.round(Math.log(t)/Math.LN10)-1),t&&{floor:function(n){return Math.floor(n/t)*t},ceil:function(n){return Math.ceil(n/t)*t}}}function S(t,n){var e=C(t),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/n)/Math.LN10)),i=n/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function F(t,n){return dn.range.apply(dn,S(t,n))}function L(t,n,e){var r=-Math.floor(Math.log(S(t,n)[2])/Math.LN10+.01);return dn.format(e?e.replace(kn,function(t,n,e,u,i,o,a,c,s,f){return[n,e,u,i,o,a,c,s||"."+(r-2*("%"===f)),f].join("")}):",."+r+"f")}function A(t,n,e,r,u){function i(n){return t(e(n))}function o(){return e===O?{floor:a,ceil:c}:{floor:function(t){return-c(-t)},ceil:function(t){return-a(-t)}}}function a(t){return Math.pow(n,Math.floor(Math.log(t)/Math.log(n)))}function c(t){return Math.pow(n,Math.ceil(Math.log(t)/Math.log(n)))}return i.invert=function(n){return r(t.invert(n))},i.domain=function(n){return arguments.length?(n[0]<0?(e=U,r=H):(e=O,r=I),t.domain((u=n.map(Number)).map(e)),i):u},i.base=function(t){return arguments.length?(n=+t,i):n},i.nice=function(){return t.domain(D(u,o).map(e)),i},i.ticks=function(){var u=C(t.domain()),i=[];if(u.every(isFinite)){var o=Math.log(n),a=Math.floor(u[0]/o),c=Math.ceil(u[1]/o),s=r(u[0]),f=r(u[1]),l=n%1?2:n;if(e===U)for(i.push(-Math.pow(n,-a));a++0;h--)i.push(-Math.pow(n,-a)*h);else{for(;c>a;a++)for(var h=1;l>h;h++)i.push(Math.pow(n,a)*h);i.push(Math.pow(n,a))}for(a=0;i[a]f;c--);i=i.slice(a,c)}return i},i.tickFormat=function(t,u){if(arguments.length<2&&(u=An),!arguments.length)return u;var o,a=Math.log(n),c=Math.max(.1,t/i.ticks().length),s=e===U?(o=-1e-12,Math.floor):(o=1e-12,Math.ceil);return function(t){return t/r(a*s(e(t)/a+o))<=c?u(t):""}},i.copy=function(){return A(t.copy(),n,e,r,u)},k(i,t)}function O(t){return Math.log(0>t?0:t)}function I(t){return Math.exp(t)}function U(t){return-Math.log(t>0?0:-t)}function H(t){return-Math.exp(-t)}function E(){return!0}function j(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function z(t,n,e){function r(n){var e=t(n),r=i(e,1);return r-n>n-e?e:r}function u(e){return n(e=t(new On(e-1)),1),e}function i(t,e){return n(t=new On(+t),e),t}function o(t,r,i){var o=u(t),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),n(o,1);else for(;r>o;)a.push(new Date(+o)),n(o,1);return a}function a(t,n,e){try{On=j;var r=new j;return r._=t,o(r,n,e)}finally{On=Date}}t.floor=t,t.round=r,t.ceil=u,t.offset=i,t.range=o;var c=t.utc=N(t);return c.floor=c,c.round=N(r),c.ceil=N(u),c.offset=N(i),c.range=a,t}function N(t){return function(n,e){try{On=j;var r=new j;return r._=n,t(r,e)._}finally{On=Date}}}function X(t,n,e,r){for(var u,i,o=0,a=n.length,c=e.length;a>o;){if(r>=c)return-1;if(u=n.charCodeAt(o++),37===u){if(i=Qn[n.charAt(o++)],!i||(r=i(t,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function P(t){return new RegExp("^(?:"+t.map(dn.requote).join("|")+")","i")}function q(t){for(var n=new M,e=-1,r=t.length;++er?new Array(e-r+1).join(n)+t:t}function R(t,n,e){Bn.lastIndex=0;var r=Bn.exec(n.substring(e));return r?e+=r[0].length:-1}function B(t,n,e){Rn.lastIndex=0;var r=Rn.exec(n.substring(e));return r?e+=r[0].length:-1}function W(t,n,e){$n.lastIndex=0;var r=$n.exec(n.substring(e));return r?(t.m=Vn.get(r[0].toLowerCase()),e+=r[0].length):-1}function Z(t,n,e){Wn.lastIndex=0;var r=Wn.exec(n.substring(e));return r?(t.m=Zn.get(r[0].toLowerCase()),e+=r[0].length):-1}function $(t,n,e){return X(t,Kn.c.toString(),n,e)}function V(t,n,e){return X(t,Kn.x.toString(),n,e)}function J(t,n,e){return X(t,Kn.X.toString(),n,e)}function K(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+4));return r?(t.y=+r[0],e+=r[0].length):-1}function Q(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.y=tn(+r[0]),e+=r[0].length):-1}function tn(t){return t+(t>68?1900:2e3)}function nn(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.m=r[0]-1,e+=r[0].length):-1}function en(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.d=+r[0],e+=r[0].length):-1}function rn(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.H=+r[0],e+=r[0].length):-1}function un(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.M=+r[0],e+=r[0].length):-1}function on(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+2));return r?(t.S=+r[0],e+=r[0].length):-1}function an(t,n,e){te.lastIndex=0;var r=te.exec(n.substring(e,e+3));return r?(t.L=+r[0],e+=r[0].length):-1}function cn(t,n,e){var r=ne.get(n.substring(e,e+=2).toLowerCase());return null==r?-1:(t.p=r,e)}function sn(t){var n=t.getTimezoneOffset(),e=n>0?"-":"+",r=~~(Math.abs(n)/60),u=Math.abs(n)%60;return e+G(r,"0",2)+G(u,"0",2)}function fn(t,n,e){function r(n){return t(n)}return r.invert=function(n){return ln(t.invert(n))},r.domain=function(n){return arguments.length?(t.domain(n),r):t.domain().map(ln)},r.nice=function(t){return r.domain(D(r.domain(),function(){return t}))},r.ticks=function(e,u){var i=C(r.domain());if("function"!=typeof e){var o=i[1]-i[0],a=o/e,c=dn.bisect(ee,a);if(c==ee.length)return n.year(i,e);if(!c)return t.ticks(e).map(ln);Math.log(a/ee[c-1])r)for(;(u=n+r*++a)>e;)i.push(u/o);else for(;(u=n+r*++a)=0&&(e=t.substring(0,n),t=t.substring(n+1)),vn.hasOwnProperty(e)?{space:vn[e],local:t}:t}},dn.transform=function(t){var n=Mn.createElementNS(dn.ns.prefix.svg,"g");return(dn.transform=function(t){if(null!=t){n.setAttribute("transform",t);var r=n.transform.baseVal.consolidate()}return new e(r?r.matrix:yn)})(t)},e.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yn={a:1,b:0,c:0,d:1,e:0,f:0};dn.interpolateNumber=o,dn.interpolateTransform=a,dn.interpolateObject=c,dn.interpolateArray=s,dn.interpolateString=f;var xn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;dn.interpolate=l,dn.interpolators=[function(t,n){var e=typeof n;return("string"===e?f:"object"===e?Array.isArray(n)?s:c:o)(t,n)}],dn.interpolateRound=g,dn.map=function(t){var n=new M;for(var e in t)n.set(e,t[e]);return n},d(M,{has:function(t){return wn+t in this},get:function(t){return this[wn+t]},set:function(t,n){return this[wn+t]=n},remove:function(t){return t=wn+t,t in this&&delete this[t]},keys:function(){var t=[];return this.forEach(function(n){t.push(n)}),t},values:function(){var t=[];return this.forEach(function(n,e){t.push(e)}),t},entries:function(){var t=[];return this.forEach(function(n,e){t.push({key:n,value:e})}),t},forEach:function(t){for(var n in this)n.charCodeAt(0)===bn&&t.call(this,n.substring(1),this[n])}});var wn="\0",bn=wn.charCodeAt(0),Dn=".",Tn=",",Cn=[3,3],_n=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(y);dn.formatPrefix=function(t,n){var e=0;return t&&(0>t&&(t*=-1),n&&(t=dn.round(t,x(t,n))),e=1+Math.floor(1e-12+Math.log(t)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),_n[8+e/3]},dn.round=function(t,n){return n?Math.round(t*(n=Math.pow(10,n)))/n:Math.round(t)},dn.format=function(t){var n=kn.exec(t),e=n[1]||" ",r=n[2]||">",u=n[3]||"",i=n[4]||"",o=n[5],a=+n[6],c=n[7],s=n[8],f=n[9],l=1,h="",g=!1;switch(s&&(s=+s.substring(1)),(o||"0"===e&&"="===r)&&(o=e="0",r="=",c&&(a-=Math.floor((a-1)/4))),f){case"n":c=!0,f="g";break;case"%":l=100,h="%",f="f";break;case"p":l=100,h="%",f="r";break;case"b":case"o":case"x":case"X":i&&(i="0"+f.toLowerCase());case"c":case"d":g=!0,s=0;break;case"s":l=-1,f="r"}"#"===i&&(i=""),"r"!=f||s||(f="g"),null!=s&&("g"==f?s=Math.max(1,Math.min(21,s)):("e"==f||"f"==f)&&(s=Math.max(0,Math.min(20,s)))),f=Yn.get(f)||w;var m=o&&c;return function(t){if(g&&t%1)return"";var n=0>t||0===t&&0>1/t?(t=-t,"-"):u;if(0>l){var p=dn.formatPrefix(t,s);t=p.scale(t),h=p.symbol}else t*=l;t=f(t,s),!o&&c&&(t=Sn(t));var d=i.length+t.length+(m?0:n.length),M=a>d?new Array(d=a-d+1).join(e):"";return m&&(t=Sn(M+t)),Dn&&t.replace(".",Dn),n+=i,("<"===r?n+t+M:">"===r?M+n+t:"^"===r?M.substring(0,d>>=1)+n+t+M.substring(d):n+(m?t:M+t))+h}};var kn=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Yn=dn.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,n){return t.toPrecision(n)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},r:function(t,n){return(t=dn.round(t,x(t,n))).toFixed(Math.max(0,Math.min(20,x(t*(1+1e-15),n))))}}),Sn=v;if(Cn){var Fn=Cn.length;Sn=function(t){for(var n=t.lastIndexOf("."),e=n>=0?"."+t.substring(n+1):(n=t.length,""),r=[],u=0,i=Cn[0];n>0&&i>0;)r.push(t.substring(n-=i,n+i)),i=Cn[u=(u+1)%Fn];return r.reverse().join(Tn||"")+e}}dn.bisector=function(t){return{left:function(n,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=n.length);u>r;){var i=r+u>>>1;t.call(n,n[i],i)r;){var i=r+u>>>1;e=12?"PM":"AM"},S:function(t,n){return G(t.getSeconds(),n,2)},U:function(t,n){return G(dn.time.sundayOfYear(t),n,2)},w:function(t){return t.getDay()},W:function(t,n){return G(dn.time.mondayOfYear(t),n,2)},x:dn.time.format(jn),X:dn.time.format(zn),y:function(t,n){return G(t.getFullYear()%100,n,2)},Y:function(t,n){return G(t.getFullYear()%1e4,n,4)},Z:sn,"%":function(){return"%"}},Qn={a:R,A:B,b:W,B:Z,c:$,d:en,e:en,H:rn,I:rn,L:an,m:nn,M:un,p:cn,S:on,x:V,X:J,y:Q,Y:K},te=/^\s*\d+/,ne=dn.map({am:0,pm:1});dn.time.hour=z(function(t){var n=t.getTimezoneOffset()/60;return new On(36e5*(Math.floor(t/36e5-n)+n))},function(t,n){t.setTime(t.getTime()+36e5*Math.floor(n))},function(t){return t.getHours()}),dn.time.hours=dn.time.hour.range,dn.time.hours.utc=dn.time.hour.utc.range,dn.time.minute=z(function(t){return new On(6e4*Math.floor(t/6e4))},function(t,n){t.setTime(t.getTime()+6e4*Math.floor(n))},function(t){return t.getMinutes()}),dn.time.minutes=dn.time.minute.range,dn.time.minutes.utc=dn.time.minute.utc.range,dn.time.month=z(function(t){return t=dn.time.day(t),t.setDate(1),t},function(t,n){t.setMonth(t.getMonth()+n)},function(t){return t.getMonth()}),dn.time.months=dn.time.month.range,dn.time.months.utc=dn.time.month.utc.range,dn.time.second=z(function(t){return new On(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(t.getTime()+1e3*Math.floor(n))},function(t){return t.getSeconds()}),dn.time.seconds=dn.time.second.range,dn.time.seconds.utc=dn.time.second.utc.range;var ee=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],re=[[dn.time.second,1],[dn.time.second,5],[dn.time.second,15],[dn.time.second,30],[dn.time.minute,1],[dn.time.minute,5],[dn.time.minute,15],[dn.time.minute,30],[dn.time.hour,1],[dn.time.hour,3],[dn.time.hour,6],[dn.time.hour,12],[dn.time.day,1],[dn.time.day,2],[dn.time.week,1],[dn.time.month,1],[dn.time.month,3],[dn.time.year,1]],ue=[[dn.time.format("%Y"),E],[dn.time.format("%B"),function(t){return t.getMonth()}],[dn.time.format("%b %d"),function(t){return 1!=t.getDate()}],[dn.time.format("%a %d"),function(t){return t.getDay()!=Gn&&1!=t.getDate()}],[dn.time.format("%I %p"),function(t){return t.getHours()}],[dn.time.format("%I:%M"),function(t){return t.getMinutes()}],[dn.time.format(":%S"),function(t){return t.getSeconds()}],[dn.time.format(".%L"),function(t){return t.getMilliseconds()}]],ie=dn.scale.linear(),oe=hn(ue);return re.year=function(t,n){return ie.domain(t.map(mn)).ticks(n).map(gn)},dn.time.scale=function(){return fn(dn.scale.linear(),re,oe)},dn.ascending=function(t,n){return n>t?-1:t>n?1:t>=n?0:0/0},dn.quantile=function(t,n){var e=(t.length-1)*n+1,r=Math.floor(e),u=+t[r-1],i=e-r;return i?u+i*(t[r]-u):u},dn.median=function(t,n){return arguments.length>1&&(t=t.map(n)),t=t.filter(pn),t.length?dn.quantile(t.sort(dn.ascending),.5):void 0},dn}(),[].map||(Array.prototype.map=function(t,n){for(var e=this,r=e.length,u=[],i=0;r>i;)i in e&&(u[i]=t.call(n,e[i],i++,e));return u.lengh=r,u}),[].filter||(Array.prototype.filter=function(t,n,e,r,u){e=this,r=[];for(u in e)~~u+""==u&&u>=0&&t.call(n,e[u],+u,e)&&r.push(e[u]);return r}),[].forEach||(Array.prototype.forEach=function(t,n){for(var e=0,r=this.length;r>e;++e)t.call(n,this[e],e,this)});!function(){var Color,K,PITHIRD,TWOPI,X,Y,Z,bezier,brewer,chroma,clip_rgb,colors,cos,css2rgb,hex2rgb,hsi2rgb,hsl2rgb,hsv2rgb,lab2lch,lab2rgb,lab_xyz,lch2lab,lch2rgb,limit,luminance,luminance_x,rgb2hex,rgb2hsi,rgb2hsl,rgb2hsv,rgb2lab,rgb2lch,rgb_xyz,root,type,unpack,xyz_lab,xyz_rgb,_ref;root=typeof exports!=="undefined"&&exports!==null?exports:this;chroma=root.chroma=function(x,y,z,m){return new Color(x,y,z,m)};if(typeof module!=="undefined"&&module!==null){module.exports=chroma}chroma.color=function(x,y,z,m){return new Color(x,y,z,m)};chroma.hsl=function(h,s,l,a){return new Color(h,s,l,a,"hsl")};chroma.hsv=function(h,s,v,a){return new Color(h,s,v,a,"hsv")};chroma.rgb=function(r,g,b,a){return new Color(r,g,b,a,"rgb")};chroma.hex=function(x){return new Color(x)};chroma.css=function(x){return new Color(x)};chroma.lab=function(l,a,b){return new Color(l,a,b,"lab")};chroma.lch=function(l,c,h){return new Color(l,c,h,"lch")};chroma.hsi=function(h,s,i){return new Color(h,s,i,"hsi")};chroma.interpolate=function(a,b,f,m){if(a==null||b==null){return"#000"}if(type(a)==="string"){a=new Color(a)}if(type(b)==="string"){b=new Color(b)}return a.interpolate(f,b,m)};chroma.mix=chroma.interpolate;chroma.contrast=function(a,b){var l1,l2;if(type(a)==="string"){a=new Color(a)}if(type(b)==="string"){b=new Color(b)}l1=a.luminance();l2=b.luminance();if(l1>l2){return(l1+.05)/(l2+.05)}else{return(l2+.05)/(l1+.05)}};chroma.luminance=function(color){return chroma(color).luminance()};chroma._Color=Color;Color=function(){function Color(){var a,arg,args,m,me,me_rgb,x,y,z,_i,_len,_ref,_ref1,_ref2,_ref3;me=this;args=[];for(_i=0,_len=arguments.length;_i<_len;_i++){arg=arguments[_i];if(arg!=null){args.push(arg)}}if(args.length===0){_ref=[255,0,255,1,"rgb"],x=_ref[0],y=_ref[1],z=_ref[2],a=_ref[3],m=_ref[4]}else if(type(args[0])==="array"){if(args[0].length===3){_ref1=args[0],x=_ref1[0],y=_ref1[1],z=_ref1[2];a=1}else if(args[0].length===4){_ref2=args[0],x=_ref2[0],y=_ref2[1],z=_ref2[2],a=_ref2[3]}else{throw"unknown input argument"}m=args[1]}else if(type(args[0])==="string"){x=args[0];m="hex"}else if(type(args[0])==="object"){_ref3=args[0]._rgb,x=_ref3[0],y=_ref3[1],z=_ref3[2],a=_ref3[3];m="rgb"}else if(args.length>=3){x=args[0];y=args[1];z=args[2]}if(args.length===3){m="rgb";a=1}else if(args.length===4){if(type(args[3])==="string"){m=args[3];a=1}else if(type(args[3])==="number"){m="rgb";a=args[3]}}else if(args.length===5){a=args[3];m=args[4]}if(a==null){a=1}if(m==="rgb"){me._rgb=[x,y,z,a]}else if(m==="hsl"){me._rgb=hsl2rgb(x,y,z);me._rgb[3]=a}else if(m==="hsv"){me._rgb=hsv2rgb(x,y,z);me._rgb[3]=a}else if(m==="hex"){me._rgb=hex2rgb(x)}else if(m==="lab"){me._rgb=lab2rgb(x,y,z);me._rgb[3]=a}else if(m==="lch"){me._rgb=lch2rgb(x,y,z);me._rgb[3]=a}else if(m==="hsi"){me._rgb=hsi2rgb(x,y,z);me._rgb[3]=a}me_rgb=clip_rgb(me._rgb)}Color.prototype.rgb=function(){return this._rgb.slice(0,3)};Color.prototype.rgba=function(){return this._rgb};Color.prototype.hex=function(){return rgb2hex(this._rgb)};Color.prototype.toString=function(){return this.hex()};Color.prototype.hsl=function(){return rgb2hsl(this._rgb)};Color.prototype.hsv=function(){return rgb2hsv(this._rgb)};Color.prototype.lab=function(){return rgb2lab(this._rgb)};Color.prototype.lch=function(){return rgb2lch(this._rgb)};Color.prototype.hsi=function(){return rgb2hsi(this._rgb)};Color.prototype.luminance=function(){return luminance(this._rgb)};Color.prototype.name=function(){var h,k;h=this.hex();for(k in chroma.colors){if(h===chroma.colors[k]){return k}}return h};Color.prototype.alpha=function(alpha){if(arguments.length){this._rgb[3]=alpha;return this}return this._rgb[3]};Color.prototype.css=function(){if(this._rgb[3]<1){return"rgba("+this._rgb.join(",")+")"}else{return"rgb("+this._rgb.slice(0,3).join(",")+")"}};Color.prototype.interpolate=function(f,col,m){var dh,hue,hue0,hue1,lbv,lbv0,lbv1,me,res,sat,sat0,sat1,xyz0,xyz1;me=this;if(m==null){m="rgb"}if(type(col)==="string"){col=new Color(col)}if(m==="hsl"||m==="hsv"||m==="lch"||m==="hsi"){if(m==="hsl"){xyz0=me.hsl();xyz1=col.hsl()}else if(m==="hsv"){xyz0=me.hsv();xyz1=col.hsv()}else if(m==="hsi"){xyz0=me.hsi();xyz1=col.hsi()}else if(m==="lch"){xyz0=me.lch();xyz1=col.lch()}if(m.substr(0,1)==="h"){hue0=xyz0[0],sat0=xyz0[1],lbv0=xyz0[2];hue1=xyz1[0],sat1=xyz1[1],lbv1=xyz1[2]}else{lbv0=xyz0[0],sat0=xyz0[1],hue0=xyz0[2];lbv1=xyz1[0],sat1=xyz1[1],hue1=xyz1[2]}if(!isNaN(hue0)&&!isNaN(hue1)){if(hue1>hue0&&hue1-hue0>180){dh=hue1-(hue0+360)}else if(hue1180){dh=hue1+360-hue0}else{dh=hue1-hue0}hue=hue0+f*dh}else if(!isNaN(hue0)){hue=hue0;if(lbv1===1||lbv1===0){sat=sat0}}else if(!isNaN(hue1)){hue=hue1;if(lbv0===1||lbv0===0){sat=sat1}}else{hue=Number.NaN}if(sat==null){sat=sat0+f*(sat1-sat0)}lbv=lbv0+f*(lbv1-lbv0);if(m.substr(0,1)==="h"){res=new Color(hue,sat,lbv,m)}else{res=new Color(lbv,sat,hue,m)}}else if(m==="rgb"){xyz0=me._rgb;xyz1=col._rgb;res=new Color(xyz0[0]+f*(xyz1[0]-xyz0[0]),xyz0[1]+f*(xyz1[1]-xyz0[1]),xyz0[2]+f*(xyz1[2]-xyz0[2]),m)}else if(m==="lab"){xyz0=me.lab();xyz1=col.lab();res=new Color(xyz0[0]+f*(xyz1[0]-xyz0[0]),xyz0[1]+f*(xyz1[1]-xyz0[1]),xyz0[2]+f*(xyz1[2]-xyz0[2]),m)}else{throw"color mode "+m+" is not supported"}res.alpha(me.alpha()+f*(col.alpha()-me.alpha()));return res};Color.prototype.darken=function(amount){var lch,me;if(amount==null){amount=20}me=this;lch=me.lch();lch[0]-=amount;return chroma.lch(lch).alpha(me.alpha())};Color.prototype.darker=function(amount){return this.darken(amount)};Color.prototype.brighten=function(amount){if(amount==null){amount=20}return this.darken(-amount)};Color.prototype.brighter=function(amount){return this.brighten(amount)};Color.prototype.saturate=function(amount){var lch,me;if(amount==null){amount=20}me=this;lch=me.lch();lch[1]+=amount;return chroma.lch(lch).alpha(me.alpha())};Color.prototype.desaturate=function(amount){if(amount==null){amount=20}return this.saturate(-amount)};return Color}();clip_rgb=function(rgb){var i;for(i in rgb){if(i<3){if(rgb[i]<0){rgb[i]=0}if(rgb[i]>255){rgb[i]=255}}else if(i===3){if(rgb[i]<0){rgb[i]=0}if(rgb[i]>1){rgb[i]=1}}}return rgb};css2rgb=function(css){var hsl,i,m,rgb,_i,_j,_k,_l;if(chroma.colors!=null&&chroma.colors[css]){return hex2rgb(chroma.colors[css])}if(m=css.match(/rgb\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*\)/)){rgb=m.slice(1,4);for(i=_i=0;_i<=2;i=++_i){rgb[i]=+rgb[i]}rgb[3]=1}else if(m=css.match(/rgba\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*,\s*([01]|[01]?\.\d+)\)/)){rgb=m.slice(1,5);for(i=_j=0;_j<=3;i=++_j){rgb[i]=+rgb[i]}}else if(m=css.match(/rgb\(\s*(\-?\d+)%,\s*(\-?\d+)%\s*,\s*(\-?\d+)%\s*\)/)){rgb=m.slice(1,4);for(i=_k=0;_k<=2;i=++_k){rgb[i]=Math.round(rgb[i]*2.55)}rgb[3]=1}else if(m=css.match(/rgba\(\s*(\-?\d+)%,\s*(\-?\d+)%\s*,\s*(\-?\d+)%\s*,\s*([01]|[01]?\.\d+)\)/)){rgb=m.slice(1,5);for(i=_l=0;_l<=2;i=++_l){rgb[i]=Math.round(rgb[i]*2.55)}rgb[3]=+rgb[3]}else if(m=css.match(/hsl\(\s*(\-?\d+),\s*(\-?\d+)%\s*,\s*(\-?\d+)%\s*\)/)){hsl=m.slice(1,4);hsl[1]*=.01;hsl[2]*=.01;rgb=hsl2rgb(hsl);rgb[3]=1}else if(m=css.match(/hsla\(\s*(\-?\d+),\s*(\-?\d+)%\s*,\s*(\-?\d+)%\s*,\s*([01]|[01]?\.\d+)\)/)){hsl=m.slice(1,4);hsl[1]*=.01;hsl[2]*=.01;rgb=hsl2rgb(hsl);rgb[3]=+m[4]}return rgb};hex2rgb=function(hex){var a,b,g,r,rgb,u;if(hex.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/)){if(hex.length===4||hex.length===7){hex=hex.substr(1)}if(hex.length===3){hex=hex.split("");hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]}u=parseInt(hex,16);r=u>>16;g=u>>8&255;b=u&255;return[r,g,b,1]}if(hex.match(/^#?([A-Fa-f0-9]{8})$/)){if(hex.length===9){hex=hex.substr(1)}u=parseInt(hex,16);r=u>>24&255;g=u>>16&255;b=u>>8&255;a=u&255;return[r,g,b,a]}if(rgb=css2rgb(hex)){return rgb}throw"unknown color: "+hex};hsi2rgb=function(h,s,i){var b,g,r,_ref;_ref=unpack(arguments),h=_ref[0],s=_ref[1],i=_ref[2];h/=360;if(h<1/3){b=(1-s)/3;r=(1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3;g=1-(b+r)}else if(h<2/3){h-=1/3;r=(1-s)/3;g=(1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3;b=1-(r+g)}else{h-=2/3;g=(1-s)/3;b=(1+s*cos(TWOPI*h)/cos(PITHIRD-TWOPI*h))/3;r=1-(g+b)}r=limit(i*r*3);g=limit(i*g*3);b=limit(i*b*3);return[r*255,g*255,b*255]};hsl2rgb=function(){var b,c,g,h,i,l,r,s,t1,t2,t3,_i,_ref,_ref1;_ref=unpack(arguments),h=_ref[0],s=_ref[1],l=_ref[2];if(s===0){r=g=b=l*255}else{t3=[0,0,0];c=[0,0,0];t2=l<.5?l*(1+s):l+s-l*s;t1=2*l-t2;h/=360;t3[0]=h+1/3;t3[1]=h;t3[2]=h-1/3;for(i=_i=0;_i<=2;i=++_i){if(t3[i]<0){t3[i]+=1}if(t3[i]>1){t3[i]-=1}if(6*t3[i]<1){c[i]=t1+(t2-t1)*6*t3[i]}else if(2*t3[i]<1){c[i]=t2}else if(3*t3[i]<2){c[i]=t1+(t2-t1)*(2/3-t3[i])*6}else{c[i]=t1}}_ref1=[Math.round(c[0]*255),Math.round(c[1]*255),Math.round(c[2]*255)],r=_ref1[0],g=_ref1[1],b=_ref1[2]}return[r,g,b]};hsv2rgb=function(){var b,f,g,h,i,p,q,r,s,t,v,_ref,_ref1,_ref2,_ref3,_ref4,_ref5,_ref6;_ref=unpack(arguments),h=_ref[0],s=_ref[1],v=_ref[2];v*=255;if(s===0){r=g=b=v}else{if(h===360){h=0}if(h>360){h-=360}if(h<0){h+=360}h/=60;i=Math.floor(h);f=h-i;p=v*(1-s);q=v*(1-s*f);t=v*(1-s*(1-f));switch(i){case 0:_ref1=[v,t,p],r=_ref1[0],g=_ref1[1],b=_ref1[2];break;case 1:_ref2=[q,v,p],r=_ref2[0],g=_ref2[1],b=_ref2[2];break;case 2:_ref3=[p,v,t],r=_ref3[0],g=_ref3[1],b=_ref3[2];break;case 3:_ref4=[p,q,v],r=_ref4[0],g=_ref4[1],b=_ref4[2];break;case 4:_ref5=[t,p,v],r=_ref5[0],g=_ref5[1],b=_ref5[2];break;case 5:_ref6=[v,p,q],r=_ref6[0],g=_ref6[1],b=_ref6[2]}}r=Math.round(r);g=Math.round(g);b=Math.round(b);return[r,g,b]};K=18;X=.95047;Y=1;Z=1.08883;lab2lch=function(){var a,b,c,h,l,_ref;_ref=unpack(arguments),l=_ref[0],a=_ref[1],b=_ref[2];c=Math.sqrt(a*a+b*b);h=Math.atan2(b,a)/Math.PI*180;return[l,c,h]};lab2rgb=function(l,a,b){var g,r,x,y,z,_ref,_ref1;if(l!==void 0&&l.length===3){_ref=l,l=_ref[0],a=_ref[1],b=_ref[2]}if(l!==void 0&&l.length===3){_ref1=l,l=_ref1[0],a=_ref1[1],b=_ref1[2]}y=(l+16)/116;x=y+a/500;z=y-b/200;x=lab_xyz(x)*X;y=lab_xyz(y)*Y;z=lab_xyz(z)*Z;r=xyz_rgb(3.2404542*x-1.5371385*y-.4985314*z);g=xyz_rgb(-.969266*x+1.8760108*y+.041556*z);b=xyz_rgb(.0556434*x-.2040259*y+1.0572252*z);return[limit(r,0,255),limit(g,0,255),limit(b,0,255),1]};lab_xyz=function(x){if(x>.206893034){return x*x*x}else{return(x-4/29)/7.787037}};xyz_rgb=function(r){return Math.round(255*(r<=.00304?12.92*r:1.055*Math.pow(r,1/2.4)-.055))};lch2lab=function(){var c,h,l,_ref;_ref=unpack(arguments),l=_ref[0],c=_ref[1],h=_ref[2];h=h*Math.PI/180;return[l,Math.cos(h)*c,Math.sin(h)*c]};lch2rgb=function(l,c,h){var L,a,b,g,r,_ref,_ref1;_ref=lch2lab(l,c,h),L=_ref[0],a=_ref[1],b=_ref[2];_ref1=lab2rgb(L,a,b),r=_ref1[0],g=_ref1[1],b=_ref1[2];return[limit(r,0,255),limit(g,0,255),limit(b,0,255)]};luminance=function(r,g,b){var _ref;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];r=luminance_x(r);g=luminance_x(g);b=luminance_x(b);return.2126*r+.7152*g+.0722*b};luminance_x=function(x){x/=255;if(x<=.03928){return x/12.92}else{return Math.pow((x+.055)/1.055,2.4)}};rgb2hex=function(){var b,g,r,str,u,_ref;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];u=r<<16|g<<8|b;str="000000"+u.toString(16);return"#"+str.substr(str.length-6)};rgb2hsi=function(){var TWOPI,b,g,h,i,min,r,s,_ref;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];TWOPI=Math.PI*2;r/=255;g/=255;b/=255;min=Math.min(r,g,b);i=(r+g+b)/3;s=1-min/i;if(s===0){h=0}else{h=(r-g+(r-b))/2;h/=Math.sqrt((r-g)*(r-g)+(r-b)*(g-b));h=Math.acos(h);if(b>g){h=TWOPI-h}h/=TWOPI}return[h*360,s,i]};rgb2hsl=function(r,g,b){var h,l,max,min,s,_ref;if(r!==void 0&&r.length>=3){_ref=r,r=_ref[0],g=_ref[1],b=_ref[2]}r/=255;g/=255;b/=255;min=Math.min(r,g,b);max=Math.max(r,g,b);l=(max+min)/2;if(max===min){s=0;h=Number.NaN}else{s=l<.5?(max-min)/(max+min):(max-min)/(2-max-min)}if(r===max){h=(g-b)/(max-min)}else if(g===max){h=2+(b-r)/(max-min)}else if(b===max){h=4+(r-g)/(max-min)}h*=60;if(h<0){h+=360}return[h,s,l]};rgb2hsv=function(){var b,delta,g,h,max,min,r,s,v,_ref;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];min=Math.min(r,g,b);max=Math.max(r,g,b);delta=max-min;v=max/255;if(max===0){h=Number.NaN;s=0}else{s=delta/max;if(r===max){h=(g-b)/delta}if(g===max){h=2+(b-r)/delta}if(b===max){h=4+(r-g)/delta}h*=60;if(h<0){h+=360}}return[h,s,v]};rgb2lab=function(){var b,g,r,x,y,z,_ref;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];r=rgb_xyz(r);g=rgb_xyz(g);b=rgb_xyz(b);x=xyz_lab((.4124564*r+.3575761*g+.1804375*b)/X);y=xyz_lab((.2126729*r+.7151522*g+.072175*b)/Y);z=xyz_lab((.0193339*r+.119192*g+.9503041*b)/Z);return[116*y-16,500*(x-y),200*(y-z)]};rgb_xyz=function(r){if((r/=255)<=.04045){return r/12.92}else{return Math.pow((r+.055)/1.055,2.4)}};xyz_lab=function(x){if(x>.008856){return Math.pow(x,1/3)}else{return 7.787037*x+4/29}};rgb2lch=function(){var a,b,g,l,r,_ref,_ref1;_ref=unpack(arguments),r=_ref[0],g=_ref[1],b=_ref[2];_ref1=rgb2lab(r,g,b),l=_ref1[0],a=_ref1[1],b=_ref1[2];return lab2lch(l,a,b)};chroma.scale=function(colors,positions){var classifyValue,f,getClass,getColor,resetCache,setColors,setDomain,tmap,_colorCache,_colors,_correctLightness,_domain,_fixed,_max,_min,_mode,_nacol,_numClasses,_out,_pos,_spread;_mode="rgb";_nacol=chroma("#ccc");_spread=0;_fixed=false;_domain=[0,1];_colors=[];_out=false;_pos=[];_min=0;_max=1;_correctLightness=false;_numClasses=0;_colorCache={};setColors=function(colors,positions){var c,col,_i,_j,_ref,_ref1,_ref2;if(colors==null){colors=["#ddd","#222"]}if(colors!=null&&type(colors)==="string"&&((_ref=chroma.brewer)!=null?_ref[colors]:void 0)!=null){colors=chroma.brewer[colors]}if(type(colors)==="array"){colors=colors.slice(0);for(c=_i=0,_ref1=colors.length-1;0<=_ref1?_i<=_ref1:_i>=_ref1;c=0<=_ref1?++_i:--_i){col=colors[c];if(type(col)==="string"){colors[c]=chroma(col)}}if(positions!=null){_pos=positions}else{_pos=[];for(c=_j=0,_ref2=colors.length-1;0<=_ref2?_j<=_ref2:_j>=_ref2;c=0<=_ref2?++_j:--_j){_pos.push(c/(colors.length-1))}}}resetCache();return _colors=colors};setDomain=function(domain){if(domain==null){domain=[]}_domain=domain;_min=domain[0];_max=domain[domain.length-1];resetCache();if(domain.length===2){return _numClasses=0}else{return _numClasses=domain.length-1}};getClass=function(value){var i,n;if(_domain!=null){n=_domain.length-1;i=0;while(i=_domain[i]){i++}return i-1}return 0};tmap=function(t){return t};classifyValue=function(value){var i,maxc,minc,n,val;val=value;if(_domain.length>2){n=_domain.length-1;i=getClass(value);minc=_domain[0]+(_domain[1]-_domain[0])*(0+_spread*.5);maxc=_domain[n-1]+(_domain[n]-_domain[n-1])*(1-_spread*.5);val=_min+(_domain[i]+(_domain[i+1]-_domain[i])*.5-minc)/(maxc-minc)*(_max-_min)}return val};getColor=function(val,bypassMap){var c,col,f0,i,k,p,t,_i,_ref;if(bypassMap==null){bypassMap=false}if(isNaN(val)){return _nacol}if(!bypassMap){if(_domain.length>2){c=getClass(val);t=c/(_numClasses-1)}else{t=f0=(val-_min)/(_max-_min);t=Math.min(1,Math.max(0,t))}}else{t=val}if(!bypassMap){t=tmap(t)}k=Math.floor(t*1e4);if(_colorCache[k]){col=_colorCache[k]}else{if(type(_colors)==="array"){for(i=_i=0,_ref=_pos.length-1;0<=_ref?_i<=_ref:_i>=_ref;i=0<=_ref?++_i:--_i){p=_pos[i];if(t<=p){col=_colors[i];break}if(t>=p&&i===_pos.length-1){col=_colors[i];break}if(t>p&&t<_pos[i+1]){t=(t-p)/(_pos[i+1]-p);col=chroma.interpolate(_colors[i],_colors[i+1],t,_mode);break}}}else if(type(_colors)==="function"){col=_colors(t)}_colorCache[k]=col}return col};resetCache=function(){return _colorCache={}};setColors(colors,positions);f=function(v){var c;c=getColor(v);if(_out&&c[_out]){return c[_out]()}else{return c}};f.domain=function(domain,classes,mode,key){var d;if(mode==null){mode="e"}if(!arguments.length){return _domain}if(classes!=null){d=chroma.analyze(domain,key);if(classes===0){domain=[d.min,d.max]}else{domain=chroma.limits(d,mode,classes)}}setDomain(domain);return f};f.mode=function(_m){if(!arguments.length){return _mode}_mode=_m;resetCache();return f};f.range=function(colors,_pos){setColors(colors,_pos);return f};f.out=function(_o){_out=_o;return f};f.spread=function(val){if(!arguments.length){return _spread}_spread=val;return f};f.correctLightness=function(v){if(!arguments.length){return _correctLightness}_correctLightness=v;resetCache();if(_correctLightness){tmap=function(t){var L0,L1,L_actual,L_diff,L_ideal,max_iter,pol,t0,t1;L0=getColor(0,true).lab()[0];L1=getColor(1,true).lab()[0];pol=L0>L1;L_actual=getColor(t,true).lab()[0];L_ideal=L0+(L1-L0)*t;L_diff=L_actual-L_ideal;t0=0;t1=1;max_iter=20;while(Math.abs(L_diff)>.01&&max_iter-->0){!function(){if(pol){L_diff*=-1}if(L_diff<0){t0=t;t+=(t1-t)*.5}else{t1=t;t+=(t0-t)*.5}L_actual=getColor(t,true).lab()[0];return L_diff=L_actual-L_ideal}()}return t}}else{tmap=function(t){return t}}return f};return f};if((_ref=chroma.scales)==null){chroma.scales={}}chroma.scales.cool=function(){return chroma.scale([chroma.hsl(180,1,.9),chroma.hsl(250,.7,.4)])};chroma.scales.hot=function(){return chroma.scale(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")};chroma.analyze=function(data,key,filter){var add,k,r,val,visit,_i,_len;r={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};if(filter==null){filter=function(){return true}}add=function(val){if(val!=null&&!isNaN(val)){r.values.push(val);r.sum+=val;if(valr.max){r.max=val}r.count+=1}};visit=function(val,k){if(filter(val,k)){if(key!=null&&type(key)==="function"){return add(key(val))}else if(key!=null&&type(key)==="string"||type(key)==="number"){return add(val[key])}else{return add(val)}}};if(type(data)==="array"){for(_i=0,_len=data.length;_i<_len;_i++){val=data[_i];visit(val)}}else{for(k in data){val=data[k];visit(val,k)}}r.domain=[r.min,r.max];r.limits=function(mode,num){return chroma.limits(r,mode,num)};return r};chroma.limits=function(data,mode,num){var assignments,best,centroids,cluster,clusterSizes,dist,i,j,kClusters,limits,max,max_log,min,min_log,mindist,n,nb_iters,newCentroids,p,pb,pr,repeat,sum,tmpKMeansBreaks,value,values,_i,_j,_k,_l,_m,_n,_o,_p,_q,_r,_ref1,_ref10,_ref11,_ref12,_ref13,_ref14,_ref15,_ref2,_ref3,_ref4,_ref5,_ref6,_ref7,_ref8,_ref9,_s,_t,_u,_v,_w;if(mode==null){mode="equal"}if(num==null){num=7}if(data.values==null){data=chroma.analyze(data)}min=data.min;max=data.max;sum=data.sum;values=data.values.sort(function(a,b){return a-b});limits=[];if(mode.substr(0,1)==="c"){limits.push(min);limits.push(max)}if(mode.substr(0,1)==="e"){limits.push(min);for(i=_i=1,_ref1=num-1;1<=_ref1?_i<=_ref1:_i>=_ref1;i=1<=_ref1?++_i:--_i){limits.push(min+i/num*(max-min))}limits.push(max)}else if(mode.substr(0,1)==="l"){if(min<=0){throw"Logarithmic scales are only possible for values > 0"}min_log=Math.LOG10E*Math.log(min);max_log=Math.LOG10E*Math.log(max);limits.push(min);for(i=_j=1,_ref2=num-1;1<=_ref2?_j<=_ref2:_j>=_ref2;i=1<=_ref2?++_j:--_j){limits.push(Math.pow(10,min_log+i/num*(max_log-min_log)))}limits.push(max)}else if(mode.substr(0,1)==="q"){limits.push(min);for(i=_k=1,_ref3=num-1;1<=_ref3?_k<=_ref3:_k>=_ref3;i=1<=_ref3?++_k:--_k){p=values.length*i/num;pb=Math.floor(p);if(pb===p){limits.push(values[pb])}else{pr=p-pb;limits.push(values[pb]*pr+values[pb+1]*(1-pr))}}limits.push(max)}else if(mode.substr(0,1)==="k"){n=values.length;assignments=new Array(n);clusterSizes=new Array(num);repeat=true;nb_iters=0;centroids=null;centroids=[];centroids.push(min);for(i=_l=1,_ref4=num-1;1<=_ref4?_l<=_ref4:_l>=_ref4;i=1<=_ref4?++_l:--_l){centroids.push(min+i/num*(max-min))}centroids.push(max);while(repeat){for(j=_m=0,_ref5=num-1;0<=_ref5?_m<=_ref5:_m>=_ref5;j=0<=_ref5?++_m:--_m){clusterSizes[j]=0}for(i=_n=0,_ref6=n-1;0<=_ref6?_n<=_ref6:_n>=_ref6;i=0<=_ref6?++_n:--_n){value=values[i];mindist=Number.MAX_VALUE;for(j=_o=0,_ref7=num-1;0<=_ref7?_o<=_ref7:_o>=_ref7;j=0<=_ref7?++_o:--_o){dist=Math.abs(centroids[j]-value);if(dist=_ref8;j=0<=_ref8?++_p:--_p){newCentroids[j]=null}for(i=_q=0,_ref9=n-1;0<=_ref9?_q<=_ref9:_q>=_ref9;i=0<=_ref9?++_q:--_q){cluster=assignments[i];if(newCentroids[cluster]===null){newCentroids[cluster]=values[i]}else{newCentroids[cluster]+=values[i]}}for(j=_r=0,_ref10=num-1;0<=_ref10?_r<=_ref10:_r>=_ref10;j=0<=_ref10?++_r:--_r){newCentroids[j]*=1/clusterSizes[j]}repeat=false;for(j=_s=0,_ref11=num-1;0<=_ref11?_s<=_ref11:_s>=_ref11;j=0<=_ref11?++_s:--_s){if(newCentroids[j]!==centroids[i]){repeat=true;break}}centroids=newCentroids;nb_iters++;if(nb_iters>200){repeat=false}}kClusters={};for(j=_t=0,_ref12=num-1;0<=_ref12?_t<=_ref12:_t>=_ref12;j=0<=_ref12?++_t:--_t){kClusters[j]=[]}for(i=_u=0,_ref13=n-1;0<=_ref13?_u<=_ref13:_u>=_ref13;i=0<=_ref13?++_u:--_u){cluster=assignments[i];kClusters[cluster].push(values[i])}tmpKMeansBreaks=[];for(j=_v=0,_ref14=num-1;0<=_ref14?_v<=_ref14:_v>=_ref14;j=0<=_ref14?++_v:--_v){tmpKMeansBreaks.push(kClusters[j][0]);tmpKMeansBreaks.push(kClusters[j][kClusters[j].length-1])}tmpKMeansBreaks=tmpKMeansBreaks.sort(function(a,b){return a-b});limits.push(tmpKMeansBreaks[0]);for(i=_w=1,_ref15=tmpKMeansBreaks.length-1;_w<=_ref15;i=_w+=2){if(!isNaN(tmpKMeansBreaks[i])){limits.push(tmpKMeansBreaks[i])}}}return limits};root=typeof exports!=="undefined"&&exports!==null?exports:this;chroma.brewer=brewer={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]};root=typeof exports!=="undefined"&&exports!==null?exports:this;chroma.colors=colors={indigo:"#4b0082",gold:"#ffd700",hotpink:"#ff69b4",firebrick:"#b22222",indianred:"#cd5c5c",yellow:"#ffff00",mistyrose:"#ffe4e1",darkolivegreen:"#556b2f",olive:"#808000",darkseagreen:"#8fbc8f",pink:"#ffc0cb",tomato:"#ff6347",lightcoral:"#f08080",orangered:"#ff4500",navajowhite:"#ffdead",lime:"#00ff00",palegreen:"#98fb98",darkslategrey:"#2f4f4f",greenyellow:"#adff2f",burlywood:"#deb887",seashell:"#fff5ee",mediumspringgreen:"#00fa9a",fuchsia:"#ff00ff",papayawhip:"#ffefd5",blanchedalmond:"#ffebcd",chartreuse:"#7fff00",dimgray:"#696969",black:"#000000",peachpuff:"#ffdab9",springgreen:"#00ff7f",aquamarine:"#7fffd4",white:"#ffffff",orange:"#ffa500",lightsalmon:"#ffa07a",darkslategray:"#2f4f4f",brown:"#a52a2a",ivory:"#fffff0",dodgerblue:"#1e90ff",peru:"#cd853f",lawngreen:"#7cfc00",chocolate:"#d2691e",crimson:"#dc143c",forestgreen:"#228b22",darkgrey:"#a9a9a9",lightseagreen:"#20b2aa",cyan:"#00ffff",mintcream:"#f5fffa",silver:"#c0c0c0",antiquewhite:"#faebd7",mediumorchid:"#ba55d3",skyblue:"#87ceeb",gray:"#808080",darkturquoise:"#00ced1",goldenrod:"#daa520",darkgreen:"#006400",floralwhite:"#fffaf0",darkviolet:"#9400d3",darkgray:"#a9a9a9",moccasin:"#ffe4b5",saddlebrown:"#8b4513",grey:"#808080",darkslateblue:"#483d8b",lightskyblue:"#87cefa",lightpink:"#ffb6c1",mediumvioletred:"#c71585",slategrey:"#708090",red:"#ff0000",deeppink:"#ff1493",limegreen:"#32cd32",darkmagenta:"#8b008b",palegoldenrod:"#eee8aa",plum:"#dda0dd",turquoise:"#40e0d0",lightgrey:"#d3d3d3",lightgoldenrodyellow:"#fafad2",darkgoldenrod:"#b8860b",lavender:"#e6e6fa",maroon:"#800000",yellowgreen:"#9acd32",sandybrown:"#f4a460",thistle:"#d8bfd8",violet:"#ee82ee",navy:"#000080",magenta:"#ff00ff",dimgrey:"#696969",tan:"#d2b48c",rosybrown:"#bc8f8f",olivedrab:"#6b8e23",blue:"#0000ff",lightblue:"#add8e6",ghostwhite:"#f8f8ff",honeydew:"#f0fff0",cornflowerblue:"#6495ed",slateblue:"#6a5acd",linen:"#faf0e6",darkblue:"#00008b",powderblue:"#b0e0e6",seagreen:"#2e8b57",darkkhaki:"#bdb76b",snow:"#fffafa",sienna:"#a0522d",mediumblue:"#0000cd",royalblue:"#4169e1",lightcyan:"#e0ffff",green:"#008000",mediumpurple:"#9370db",midnightblue:"#191970",cornsilk:"#fff8dc",paleturquoise:"#afeeee",bisque:"#ffe4c4",slategray:"#708090",darkcyan:"#008b8b",khaki:"#f0e68c",wheat:"#f5deb3",teal:"#008080",darkorchid:"#9932cc",deepskyblue:"#00bfff",salmon:"#fa8072",darkred:"#8b0000",steelblue:"#4682b4",palevioletred:"#db7093",lightslategray:"#778899",aliceblue:"#f0f8ff",lightslategrey:"#778899",lightgreen:"#90ee90",orchid:"#da70d6",gainsboro:"#dcdcdc",mediumseagreen:"#3cb371",lightgray:"#d3d3d3",mediumturquoise:"#48d1cc",lemonchiffon:"#fffacd",cadetblue:"#5f9ea0",lightyellow:"#ffffe0",lavenderblush:"#fff0f5",coral:"#ff7f50",purple:"#800080",aqua:"#00ffff",whitesmoke:"#f5f5f5",mediumslateblue:"#7b68ee",darkorange:"#ff8c00",mediumaquamarine:"#66cdaa",darksalmon:"#e9967a",beige:"#f5f5dc",blueviolet:"#8a2be2",azure:"#f0ffff",lightsteelblue:"#b0c4de",oldlace:"#fdf5e6"};type=function(){var classToType,name,_i,_len,_ref1;classToType={};_ref1="Boolean Number String Function Array Date RegExp Undefined Null".split(" ");for(_i=0,_len=_ref1.length;_i<_len;_i++){name=_ref1[_i];classToType["[object "+name+"]"]=name.toLowerCase()}return function(obj){var strType;strType=Object.prototype.toString.call(obj);return classToType[strType]||"object"}}();limit=function(x,min,max){if(min==null){min=0}if(max==null){max=1}if(xmax){x=max}return x};unpack=function(args){if(args.length>=3){return args}else{return args[0]}};TWOPI=Math.PI*2;PITHIRD=Math.PI/3;cos=Math.cos;bezier=function(colors){var I,I0,I1,c,lab0,lab1,lab2,lab3,_ref1,_ref2,_ref3;colors=function(){var _i,_len,_results;_results=[];for(_i=0,_len=colors.length;_i<_len;_i++){c=colors[_i];_results.push(chroma(c))}return _results}();if(colors.length===2){_ref1=function(){var _i,_len,_results;_results=[];for(_i=0,_len=colors.length;_i<_len;_i++){c=colors[_i];_results.push(c.lab())}return _results}(),lab0=_ref1[0],lab1=_ref1[1];I=function(t){var i,lab;lab=function(){var _i,_results;_results=[];for(i=_i=0;_i<=2;i=++_i){_results.push(lab0[i]+t*(lab1[i]-lab0[i]))}return _results}();return chroma.lab.apply(chroma,lab)}}else if(colors.length===3){_ref2=function(){var _i,_len,_results;_results=[];for(_i=0,_len=colors.length;_i<_len;_i++){c=colors[_i];_results.push(c.lab())}return _results}(),lab0=_ref2[0],lab1=_ref2[1],lab2=_ref2[2];I=function(t){var i,lab;lab=function(){var _i,_results;_results=[];for(i=_i=0;_i<=2;i=++_i){_results.push((1-t)*(1-t)*lab0[i]+2*(1-t)*t*lab1[i]+t*t*lab2[i])}return _results}();return chroma.lab.apply(chroma,lab)}}else if(colors.length===4){_ref3=function(){var _i,_len,_results;_results=[];for(_i=0,_len=colors.length;_i<_len;_i++){c=colors[_i];_results.push(c.lab())}return _results}(),lab0=_ref3[0],lab1=_ref3[1],lab2=_ref3[2],lab3=_ref3[3];I=function(t){var i,lab;lab=function(){var _i,_results;_results=[];for(i=_i=0;_i<=2;i=++_i){_results.push((1-t)*(1-t)*(1-t)*lab0[i]+3*(1-t)*(1-t)*t*lab1[i]+3*(1-t)*t*t*lab2[i]+t*t*t*lab3[i])}return _results}();return chroma.lab.apply(chroma,lab)}}else if(colors.length===5){I0=bezier(colors.slice(0,3));I1=bezier(colors.slice(2,5));I=function(t){if(t<.5){return I0(t*2)}else{return I1((t-.5)*2)}}}return I};chroma.interpolate.bezier=bezier}.call(this);!function(glob){var version="0.4.2",has="hasOwnProperty",separator=/[\.\/]/,wildcard="*",fun=function(){},numsort=function(a,b){return a-b},current_event,stop,events={n:{}},eve=function(name,scope){name=String(name);var e=events,oldstop=stop,args=Array.prototype.slice.call(arguments,2),listeners=eve.listeners(name),z=0,f=false,l,indexed=[],queue={},out=[],ce=current_event,errors=[];current_event=name;stop=0;for(var i=0,ii=listeners.length;i';b=d.firstChild;b.style.behavior="url(#default#VML)";if(!(b&&typeof b.adj=="object")){return R.type=E}d=null}R.svg=!(R.vml=R.type=="VML");R._Paper=Paper;R.fn=paperproto=Paper.prototype=R.prototype;R._id=0;R._oid=0;R.is=function(o,type){type=lowerCase.call(type);if(type=="finite"){return!isnan[has](+o)}if(type=="array"){return o instanceof Array}return type=="null"&&o===null||type==typeof o&&o!==null||type=="object"&&o===Object(o)||type=="array"&&Array.isArray&&Array.isArray(o)||objectToString.call(o).slice(8,-1).toLowerCase()==type};function clone(obj){if(typeof obj=="function"||Object(obj)!==obj){return obj}var res=new obj.constructor;for(var key in obj)if(obj[has](key)){res[key]=clone(obj[key])}return res}R.angle=function(x1,y1,x2,y2,x3,y3){if(x3==null){var x=x1-x2,y=y1-y2;if(!x&&!y){return 0}return(180+math.atan2(-y,-x)*180/PI+360)%360}else{return R.angle(x1,y1,x3,y3)-R.angle(x2,y2,x3,y3)}};R.rad=function(deg){return deg%360*PI/180};R.deg=function(rad){return rad*180/PI%360};R.snapTo=function(values,value,tolerance){tolerance=R.is(tolerance,"finite")?tolerance:10;if(R.is(values,array)){var i=values.length;while(i--)if(abs(values[i]-value)<=tolerance){return values[i]}}else{values=+values;var rem=value%values;if(remvalues-tolerance){return value-rem+values}}return value};var createUUID=R.createUUID=function(uuidRegEx,uuidReplacer){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(uuidRegEx,uuidReplacer).toUpperCase()}}(/[xy]/g,function(c){var r=math.random()*16|0,v=c=="x"?r:r&3|8;return v.toString(16)});R.setWindow=function(newwin){eve("raphael.setWindow",R,g.win,newwin);g.win=newwin;g.doc=g.win.document;if(R._engine.initWin){R._engine.initWin(g.win)}};var toHex=function(color){if(R.vml){var trim=/^\s+|\s+$/g;var bod;try{var docum=new ActiveXObject("htmlfile");docum.write("");docum.close();bod=docum.body}catch(e){bod=createPopup().document.body}var range=bod.createTextRange();toHex=cacher(function(color){try{bod.style.color=Str(color).replace(trim,E);var value=range.queryCommandValue("ForeColor");value=(value&255)<<16|value&65280|(value&16711680)>>>16;return"#"+("000000"+value.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=g.doc.createElement("i");i.title="Raphaël Colour Picker";i.style.display="none";g.doc.body.appendChild(i);toHex=cacher(function(color){i.style.color=color;return g.doc.defaultView.getComputedStyle(i,E).getPropertyValue("color")})}return toHex(color)},hsbtoString=function(){return"hsb("+[this.h,this.s,this.b]+")"},hsltoString=function(){return"hsl("+[this.h,this.s,this.l]+")"},rgbtoString=function(){return this.hex},prepareRGB=function(r,g,b){if(g==null&&R.is(r,"object")&&"r"in r&&"g"in r&&"b"in r){b=r.b;g=r.g;r=r.r}if(g==null&&R.is(r,string)){var clr=R.getRGB(r);r=clr.r;g=clr.g;b=clr.b}if(r>1||g>1||b>1){r/=255;g/=255;b/=255}return[r,g,b]},packageRGB=function(r,g,b,o){r*=255;g*=255;b*=255;var rgb={r:r,g:g,b:b,hex:R.rgb(r,g,b),toString:rgbtoString};R.is(o,"finite")&&(rgb.opacity=o);return rgb};R.color=function(clr){var rgb;if(R.is(clr,"object")&&"h"in clr&&"s"in clr&&"b"in clr){rgb=R.hsb2rgb(clr);clr.r=rgb.r;clr.g=rgb.g;clr.b=rgb.b;clr.hex=rgb.hex}else if(R.is(clr,"object")&&"h"in clr&&"s"in clr&&"l"in clr){rgb=R.hsl2rgb(clr);clr.r=rgb.r;clr.g=rgb.g;clr.b=rgb.b;clr.hex=rgb.hex}else{if(R.is(clr,"string")){clr=R.getRGB(clr)}if(R.is(clr,"object")&&"r"in clr&&"g"in clr&&"b"in clr){rgb=R.rgb2hsl(clr);clr.h=rgb.h;clr.s=rgb.s;clr.l=rgb.l;rgb=R.rgb2hsb(clr);clr.v=rgb.b}else{clr={hex:"none"};clr.r=clr.g=clr.b=clr.h=clr.s=clr.v=clr.l=-1}}clr.toString=rgbtoString;return clr};R.hsb2rgb=function(h,s,v,o){if(this.is(h,"object")&&"h"in h&&"s"in h&&"b"in h){v=h.b;s=h.s;h=h.h;o=h.o}h*=360;var R,G,B,X,C;h=h%360/60;C=v*s;X=C*(1-abs(h%2-1));R=G=B=v-C;h=~~h;R+=[C,X,0,0,X,C][h];G+=[X,C,C,X,0,0][h];B+=[0,0,X,C,C,X][h];return packageRGB(R,G,B,o)};R.hsl2rgb=function(h,s,l,o){if(this.is(h,"object")&&"h"in h&&"s"in h&&"l"in h){l=h.l;s=h.s;h=h.h}if(h>1||s>1||l>1){h/=360;s/=100;l/=100}h*=360;var R,G,B,X,C;h=h%360/60;C=2*s*(l<.5?l:1-l);X=C*(1-abs(h%2-1));R=G=B=l-C/2;h=~~h;R+=[C,X,0,0,X,C][h];G+=[X,C,C,X,0,0][h];B+=[0,0,X,C,C,X][h];return packageRGB(R,G,B,o)};R.rgb2hsb=function(r,g,b){b=prepareRGB(r,g,b);r=b[0];g=b[1];b=b[2];var H,S,V,C;V=mmax(r,g,b);C=V-mmin(r,g,b);H=C==0?null:V==r?(g-b)/C:V==g?(b-r)/C+2:(r-g)/C+4;H=(H+360)%6*60/360;S=C==0?0:C/V;return{h:H,s:S,b:V,toString:hsbtoString}};R.rgb2hsl=function(r,g,b){b=prepareRGB(r,g,b);r=b[0];g=b[1];b=b[2];var H,S,L,M,m,C;M=mmax(r,g,b);m=mmin(r,g,b);C=M-m;H=C==0?null:M==r?(g-b)/C:M==g?(b-r)/C+2:(r-g)/C+4;H=(H+360)%6*60/360;L=(M+m)/2;S=C==0?0:L<.5?C/(2*L):C/(2-2*L);return{h:H,s:S,l:L,toString:hsltoString}};R._path2string=function(){return this.join(",").replace(p2s,"$1")};function repush(array,item){for(var i=0,ii=array.length;i=1e3&&delete cache[count.shift()];count.push(args);cache[args]=f[apply](scope,arg);return postprocessor?postprocessor(cache[args]):cache[args]}return newf}var preload=R._preload=function(src,f){var img=g.doc.createElement("img");img.style.cssText="position:absolute;left:-9999em;top:-9999em";img.onload=function(){f.call(this);this.onload=null;g.doc.body.removeChild(this)};img.onerror=function(){g.doc.body.removeChild(this)};g.doc.body.appendChild(img);img.src=src};function clrToString(){return this.hex}R.getRGB=cacher(function(colour){if(!colour||!!((colour=Str(colour)).indexOf("-")+1)){return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:clrToString}}if(colour=="none"){return{r:-1,g:-1,b:-1,hex:"none",toString:clrToString}}!(hsrg[has](colour.toLowerCase().substring(0,2))||colour.charAt()=="#")&&(colour=toHex(colour));var res,red,green,blue,opacity,t,values,rgb=colour.match(colourRegExp);if(rgb){if(rgb[2]){blue=toInt(rgb[2].substring(5),16);green=toInt(rgb[2].substring(3,5),16);red=toInt(rgb[2].substring(1,3),16)}if(rgb[3]){blue=toInt((t=rgb[3].charAt(3))+t,16);green=toInt((t=rgb[3].charAt(2))+t,16);red=toInt((t=rgb[3].charAt(1))+t,16)}if(rgb[4]){values=rgb[4][split](commaSpaces);red=toFloat(values[0]);values[0].slice(-1)=="%"&&(red*=2.55);green=toFloat(values[1]);values[1].slice(-1)=="%"&&(green*=2.55);blue=toFloat(values[2]);values[2].slice(-1)=="%"&&(blue*=2.55);rgb[1].toLowerCase().slice(0,4)=="rgba"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)=="%"&&(opacity/=100)}if(rgb[5]){values=rgb[5][split](commaSpaces);red=toFloat(values[0]);values[0].slice(-1)=="%"&&(red*=2.55);green=toFloat(values[1]);values[1].slice(-1)=="%"&&(green*=2.55);blue=toFloat(values[2]);values[2].slice(-1)=="%"&&(blue*=2.55);(values[0].slice(-3)=="deg"||values[0].slice(-1)=="°")&&(red/=360);rgb[1].toLowerCase().slice(0,4)=="hsba"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)=="%"&&(opacity/=100);return R.hsb2rgb(red,green,blue,opacity)}if(rgb[6]){values=rgb[6][split](commaSpaces);red=toFloat(values[0]);values[0].slice(-1)=="%"&&(red*=2.55);green=toFloat(values[1]);values[1].slice(-1)=="%"&&(green*=2.55);blue=toFloat(values[2]);values[2].slice(-1)=="%"&&(blue*=2.55);(values[0].slice(-3)=="deg"||values[0].slice(-1)=="°")&&(red/=360);rgb[1].toLowerCase().slice(0,4)=="hsla"&&(opacity=toFloat(values[3]));values[3]&&values[3].slice(-1)=="%"&&(opacity/=100);return R.hsl2rgb(red,green,blue,opacity)}rgb={r:red,g:green,b:blue,toString:clrToString};rgb.hex="#"+(16777216|blue|green<<8|red<<16).toString(16).slice(1);R.is(opacity,"finite")&&(rgb.opacity=opacity);return rgb}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:clrToString}},R);R.hsb=cacher(function(h,s,b){return R.hsb2rgb(h,s,b).hex});R.hsl=cacher(function(h,s,l){return R.hsl2rgb(h,s,l).hex});R.rgb=cacher(function(r,g,b){return"#"+(16777216|b|g<<8|r<<16).toString(16).slice(1)});R.getColor=function(value){var start=this.getColor.start=this.getColor.start||{h:0,s:1,b:value||.75},rgb=this.hsb2rgb(start.h,start.s,start.b);start.h+=.075;if(start.h>1){start.h=0;start.s-=.2;start.s<=0&&(this.getColor.start={h:0,s:1,b:start.b})}return rgb.hex};R.getColor.reset=function(){delete this.start};function catmullRom2bezier(crp,z){var d=[];for(var i=0,iLen=crp.length;iLen-2*!z>i;i+=2){var p=[{x:+crp[i-2],y:+crp[i-1]},{x:+crp[i],y:+crp[i+1]},{x:+crp[i+2],y:+crp[i+3]},{x:+crp[i+4],y:+crp[i+5]}];if(z){if(!i){p[0]={x:+crp[iLen-2],y:+crp[iLen-1]}}else if(iLen-4==i){p[3]={x:+crp[0],y:+crp[1]}}else if(iLen-2==i){p[2]={x:+crp[0],y:+crp[1]};p[3]={x:+crp[2],y:+crp[3]}}}else{if(iLen-4==i){p[3]=p[2]}else if(!i){p[0]={x:+crp[i],y:+crp[i+1]}}}d.push(["C",(-p[0].x+6*p[1].x+p[2].x)/6,(-p[0].y+6*p[1].y+p[2].y)/6,(p[1].x+6*p[2].x-p[3].x)/6,(p[1].y+6*p[2].y-p[3].y)/6,p[2].x,p[2].y])}return d}R.parsePathString=function(pathString){if(!pathString){return null}var pth=paths(pathString);if(pth.arr){return pathClone(pth.arr)}var paramCounts={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},data=[];if(R.is(pathString,array)&&R.is(pathString[0],array)){data=pathClone(pathString)}if(!data.length){Str(pathString).replace(pathCommand,function(a,b,c){var params=[],name=b.toLowerCase();c.replace(pathValues,function(a,b){b&¶ms.push(+b)});if(name=="m"&¶ms.length>2){data.push([b][concat](params.splice(0,2)));name="l";b=b=="m"?"l":"L"}if(name=="r"){data.push([b][concat](params))}else while(params.length>=paramCounts[name]){data.push([b][concat](params.splice(0,paramCounts[name])));if(!paramCounts[name]){break}}})}data.toString=R._path2string;pth.arr=pathClone(data);return data};R.parseTransformString=cacher(function(TString){if(!TString){return null}var paramCounts={r:3,s:4,t:2,m:6},data=[];if(R.is(TString,array)&&R.is(TString[0],array)){data=pathClone(TString)}if(!data.length){Str(TString).replace(tCommand,function(a,b,c){var params=[],name=lowerCase.call(b);c.replace(pathValues,function(a,b){b&¶ms.push(+b)});data.push([b][concat](params))})}data.toString=R._path2string;return data});var paths=function(ps){var p=paths.ps=paths.ps||{};if(p[ps]){p[ps].sleep=100}else{p[ps]={sleep:100}}setTimeout(function(){for(var key in p)if(p[has](key)&&key!=ps){p[key].sleep--;!p[key].sleep&&delete p[key]}});return p[ps]};R.findDotsAtSegment=function(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t){var t1=1-t,t13=pow(t1,3),t12=pow(t1,2),t2=t*t,t3=t2*t,x=t13*p1x+t12*3*t*c1x+t1*3*t*t*c2x+t3*p2x,y=t13*p1y+t12*3*t*c1y+t1*3*t*t*c2y+t3*p2y,mx=p1x+2*t*(c1x-p1x)+t2*(c2x-2*c1x+p1x),my=p1y+2*t*(c1y-p1y)+t2*(c2y-2*c1y+p1y),nx=c1x+2*t*(c2x-c1x)+t2*(p2x-2*c2x+c1x),ny=c1y+2*t*(c2y-c1y)+t2*(p2y-2*c2y+c1y),ax=t1*p1x+t*c1x,ay=t1*p1y+t*c1y,cx=t1*c2x+t*p2x,cy=t1*c2y+t*p2y,alpha=90-math.atan2(mx-nx,my-ny)*180/PI;(mx>nx||my=bbox.x&&x<=bbox.x2&&y>=bbox.y&&y<=bbox.y2};R.isBBoxIntersect=function(bbox1,bbox2){var i=R.isPointInsideBBox;return i(bbox2,bbox1.x,bbox1.y)||i(bbox2,bbox1.x2,bbox1.y)||i(bbox2,bbox1.x,bbox1.y2)||i(bbox2,bbox1.x2,bbox1.y2)||i(bbox1,bbox2.x,bbox2.y)||i(bbox1,bbox2.x2,bbox2.y)||i(bbox1,bbox2.x,bbox2.y2)||i(bbox1,bbox2.x2,bbox2.y2)||(bbox1.xbbox2.x||bbox2.xbbox1.x)&&(bbox1.ybbox2.y||bbox2.ybbox1.y)};function base3(t,p1,p2,p3,p4){var t1=-3*p1+9*p2-9*p3+3*p4,t2=t*t1+6*p1-12*p2+6*p3;return t*t2-3*p1+3*p2}function bezlen(x1,y1,x2,y2,x3,y3,x4,y4,z){if(z==null){z=1}z=z>1?1:z<0?0:z;var z2=z/2,n=12,Tvalues=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],Cvalues=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],sum=0;for(var i=0;ie){step/=2;t2+=(lmmax(x3,x4)||mmax(y1,y2)mmax(y3,y4)){return}var nx=(x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4),ny=(x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4),denominator=(x1-x2)*(y3-y4)-(y1-y2)*(x3-x4);if(!denominator){return}var px=nx/denominator,py=ny/denominator,px2=+px.toFixed(2),py2=+py.toFixed(2);if(px2<+mmin(x1,x2).toFixed(2)||px2>+mmax(x1,x2).toFixed(2)||px2<+mmin(x3,x4).toFixed(2)||px2>+mmax(x3,x4).toFixed(2)||py2<+mmin(y1,y2).toFixed(2)||py2>+mmax(y1,y2).toFixed(2)||py2<+mmin(y3,y4).toFixed(2)||py2>+mmax(y3,y4).toFixed(2)){return}return{x:px,y:py}}function inter(bez1,bez2){return interHelper(bez1,bez2)}function interCount(bez1,bez2){return interHelper(bez1,bez2,1)}function interHelper(bez1,bez2,justCount){var bbox1=R.bezierBBox(bez1),bbox2=R.bezierBBox(bez2);if(!R.isBBoxIntersect(bbox1,bbox2)){return justCount?0:[]}var l1=bezlen.apply(0,bez1),l2=bezlen.apply(0,bez2),n1=mmax(~~(l1/5),1),n2=mmax(~~(l2/5),1),dots1=[],dots2=[],xy={},res=justCount?0:[];for(var i=0;i=0&&t1<=1.001&&t2>=0&&t2<=1.001){if(justCount){res++}else{res.push({x:is.x,y:is.y,t1:mmin(t1,1),t2:mmin(t2,1)})}}}}}return res}R.pathIntersection=function(path1,path2){return interPathHelper(path1,path2)};R.pathIntersectionNumber=function(path1,path2){return interPathHelper(path1,path2,1)};function interPathHelper(path1,path2,justCount){path1=R._path2curve(path1);path2=R._path2curve(path2);var x1,y1,x2,y2,x1m,y1m,x2m,y2m,bez1,bez2,res=justCount?0:[];for(var i=0,ii=path1.length;i1){h=math.sqrt(h);rx=h*rx;ry=h*ry}var rx2=rx*rx,ry2=ry*ry,k=(large_arc_flag==sweep_flag?-1:1)*math.sqrt(abs((rx2*ry2-rx2*y*y-ry2*x*x)/(rx2*y*y+ry2*x*x))),cx=k*rx*y/ry+(x1+x2)/2,cy=k*-ry*x/rx+(y1+y2)/2,f1=math.asin(((y1-cy)/ry).toFixed(9)),f2=math.asin(((y2-cy)/ry).toFixed(9));f1=x1f2){f1=f1-PI*2}if(!sweep_flag&&f2>f1){f2=f2-PI*2}}else{f1=recursive[0];f2=recursive[1];cx=recursive[2];cy=recursive[3]}var df=f2-f1;if(abs(df)>_120){var f2old=f2,x2old=x2,y2old=y2;f2=f1+_120*(sweep_flag&&f2>f1?1:-1);x2=cx+rx*math.cos(f2);y2=cy+ry*math.sin(f2);res=a2c(x2,y2,rx,ry,angle,0,sweep_flag,x2old,y2old,[f2,f2old,cx,cy])}df=f2-f1;var c1=math.cos(f1),s1=math.sin(f1),c2=math.cos(f2),s2=math.sin(f2),t=math.tan(df/4),hx=4/3*rx*t,hy=4/3*ry*t,m1=[x1,y1],m2=[x1+hx*s1,y1-hy*c1],m3=[x2+hx*s2,y2-hy*c2],m4=[x2,y2];m2[0]=2*m1[0]-m2[0];m2[1]=2*m1[1]-m2[1];if(recursive){return[m2,m3,m4][concat](res)}else{res=[m2,m3,m4][concat](res).join()[split](",");var newres=[];for(var i=0,ii=res.length;i"1e12"&&(t1=.5);abs(t2)>"1e12"&&(t2=.5);if(t1>0&&t1<1){dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t1);x.push(dot.x);y.push(dot.y)}if(t2>0&&t2<1){dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t2);x.push(dot.x);y.push(dot.y)}a=c2y-2*c1y+p1y-(p2y-2*c2y+c1y);b=2*(c1y-p1y)-2*(c2y-c1y);c=p1y-c1y;t1=(-b+math.sqrt(b*b-4*a*c))/2/a;t2=(-b-math.sqrt(b*b-4*a*c))/2/a;abs(t1)>"1e12"&&(t1=.5);abs(t2)>"1e12"&&(t2=.5);if(t1>0&&t1<1){dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t1);x.push(dot.x);y.push(dot.y)}if(t2>0&&t2<1){dot=findDotAtSegment(p1x,p1y,c1x,c1y,c2x,c2y,p2x,p2y,t2);x.push(dot.x);y.push(dot.y)}return{min:{x:mmin[apply](0,x),y:mmin[apply](0,y)},max:{x:mmax[apply](0,x),y:mmax[apply](0,y)}}}),path2curve=R._path2curve=cacher(function(path,path2){var pth=!path2&&paths(path);if(!path2&&pth.curve){return pathClone(pth.curve)}var p=pathToAbsolute(path),p2=path2&&pathToAbsolute(path2),attrs={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},attrs2={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},processPath=function(path,d,pcom){var nx,ny;if(!path){return["C",d.x,d.y,d.x,d.y,d.x,d.y]}!(path[0]in{T:1,Q:1})&&(d.qx=d.qy=null);switch(path[0]){case"M":d.X=path[1];d.Y=path[2];break;case"A":path=["C"][concat](a2c[apply](0,[d.x,d.y][concat](path.slice(1))));break;case"S":if(pcom=="C"||pcom=="S"){nx=d.x*2-d.bx;ny=d.y*2-d.by}else{nx=d.x;ny=d.y}path=["C",nx,ny][concat](path.slice(1));break;case"T":if(pcom=="Q"||pcom=="T"){d.qx=d.x*2-d.qx;d.qy=d.y*2-d.qy}else{d.qx=d.x;d.qy=d.y}path=["C"][concat](q2c(d.x,d.y,d.qx,d.qy,path[1],path[2]));break;case"Q":d.qx=path[1];d.qy=path[2];path=["C"][concat](q2c(d.x,d.y,path[1],path[2],path[3],path[4]));break;case"L":path=["C"][concat](l2c(d.x,d.y,path[1],path[2]));break;case"H":path=["C"][concat](l2c(d.x,d.y,path[1],d.y));break;case"V":path=["C"][concat](l2c(d.x,d.y,d.x,path[1]));break;case"Z":path=["C"][concat](l2c(d.x,d.y,d.X,d.Y));break}return path},fixArc=function(pp,i){if(pp[i].length>7){pp[i].shift();var pi=pp[i];while(pi.length){pp.splice(i++,0,["C"][concat](pi.splice(0,6)))}pp.splice(i,1);ii=mmax(p.length,p2&&p2.length||0)}},fixM=function(path1,path2,a1,a2,i){if(path1&&path2&&path1[i][0]=="M"&&path2[i][0]!="M"){path2.splice(i,0,["M",a2.x,a2.y]);a1.bx=0;a1.by=0;a1.x=path1[i][1];a1.y=path1[i][2];ii=mmax(p.length,p2&&p2.length||0)}};for(var i=0,ii=mmax(p.length,p2&&p2.length||0);ilength){if(subpath&&!subpaths.start){point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len);sp+=["C"+point.start.x,point.start.y,point.m.x,point.m.y,point.x,point.y];if(onlystart){return sp}subpaths.start=sp;sp=["M"+point.x,point.y+"C"+point.n.x,point.n.y,point.end.x,point.end.y,p[5],p[6]].join();len+=l;x=+p[5];y=+p[6];continue}if(!istotal&&!subpath){point=getPointAtSegmentLength(x,y,p[1],p[2],p[3],p[4],p[5],p[6],length-len);return{x:point.x,y:point.y,alpha:point.alpha}}}len+=l;x=+p[5];y=+p[6]}sp+=p.shift()+p}subpaths.end=sp;point=istotal?len:subpath?subpaths:R.findDotsAtSegment(x,y,p[0],p[1],p[2],p[3],p[4],p[5],1);point.alpha&&(point={x:point.x,y:point.y,alpha:point.alpha});return point}};var getTotalLength=getLengthFactory(1),getPointAtLength=getLengthFactory(),getSubpathsAtLength=getLengthFactory(0,1);R.getTotalLength=getTotalLength;R.getPointAtLength=getPointAtLength;R.getSubpath=function(path,from,to){if(this.getTotalLength(path)-to<1e-6){return getSubpathsAtLength(path,from).end}var a=getSubpathsAtLength(path,to,1);return from?getSubpathsAtLength(a,from).end:a};elproto.getTotalLength=function(){var path=this.getPath();if(!path){return}if(this.node.getTotalLength){return this.node.getTotalLength()}return getTotalLength(path)};elproto.getPointAtLength=function(length){var path=this.getPath();if(!path){return}return getPointAtLength(path,length)};elproto.getPath=function(){var path,getPath=R._getPath[this.type];if(this.type=="text"||this.type=="set"){return}if(getPath){path=getPath(this)}return path};elproto.getSubpath=function(from,to){var path=this.getPath();if(!path){return}return R.getSubpath(path,from,to)};var ef=R.easing_formulas={linear:function(n){return n},"<":function(n){return pow(n,1.7)},">":function(n){return pow(n,.48)},"<>":function(n){var q=.48-n/1.04,Q=math.sqrt(.1734+q*q),x=Q-q,X=pow(abs(x),1/3)*(x<0?-1:1),y=-Q-q,Y=pow(abs(y),1/3)*(y<0?-1:1),t=X+Y+.5;return(1-t)*3*t*t+t*t*t},backIn:function(n){var s=1.70158;return n*n*((s+1)*n-s)},backOut:function(n){n=n-1;var s=1.70158;return n*n*((s+1)*n+s)+1},elastic:function(n){if(n==!!n){return n}return pow(2,-10*n)*math.sin((n-.075)*2*PI/.3)+1},bounce:function(n){var s=7.5625,p=2.75,l;if(n<1/p){l=s*n*n}else{if(n<2/p){n-=1.5/p;l=s*n*n+.75}else{if(n<2.5/p){n-=2.25/p;l=s*n*n+.9375}else{n-=2.625/p;l=s*n*n+.984375}}}return l}};ef.easeIn=ef["ease-in"]=ef["<"];ef.easeOut=ef["ease-out"]=ef[">"];ef.easeInOut=ef["ease-in-out"]=ef["<>"];ef["back-in"]=ef.backIn;ef["back-out"]=ef.backOut;var animationElements=[],requestAnimFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){setTimeout(callback,16)},animation=function(){var Now=+new Date,l=0;for(;l1&&!e.next){for(key in to)if(to[has](key)){init[key]=e.totalOrigin[key]}e.el.attr(init);runAnimation(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}if(e.next&&!e.stop){runAnimation(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}R.svg&&that&&that.paper&&that.paper.safari();animationElements.length&&requestAnimFrame(animation)},upto255=function(color){return color>255?255:color<0?0:color};elproto.animateWith=function(el,anim,params,ms,easing,callback){var element=this;if(element.removed){callback&&callback.call(element);return element}var a=params instanceof Animation?params:R.animation(params,ms,easing,callback),x,y;runAnimation(a,element,a.percents[0],null,element.attr());for(var i=0,ii=animationElements.length;it1){return t1}while(t0x2){t0=t2}else{t1=t2}t2=(t1-t0)/2+t0}return t2}return solve(t,1/(200*duration))}elproto.onAnimation=function(f){f?eve.on("raphael.anim.frame."+this.id,f):eve.unbind("raphael.anim.frame."+this.id);return this};function Animation(anim,ms){var percents=[],newAnim={};this.ms=ms;this.times=1;if(anim){for(var attr in anim)if(anim[has](attr)){newAnim[toFloat(attr)]=anim[attr];percents.push(toFloat(attr))}percents.sort(sortByNumber)}this.anim=newAnim;this.top=percents[percents.length-1];this.percents=percents}Animation.prototype.delay=function(delay){var a=new Animation(this.anim,this.ms);a.times=this.times;a.del=+delay||0;return a};Animation.prototype.repeat=function(times){var a=new Animation(this.anim,this.ms);a.del=this.del;a.times=math.floor(mmax(times,0))||1;return a};function runAnimation(anim,element,percent,status,totalOrigin,times){percent=toFloat(percent);var params,isInAnim,isInAnimSet,percents=[],next,prev,timestamp,ms=anim.ms,from={},to={},diff={};if(status){for(i=0,ii=animationElements.length;istatus*anim.top){percent=anim.percents[i];prev=anim.percents[i-1]||0;ms=ms/anim.top*(percent-prev);next=anim.percents[i+1];params=anim.anim[percent];break}else if(status){element.attr(anim.anim[anim.percents[i]])}}if(!params){return}if(!isInAnim){for(var attr in params)if(params[has](attr)){if(availableAnimAttrs[has](attr)||element.paper.customAttributes[has](attr)){from[attr]=element.attr(attr);from[attr]==null&&(from[attr]=availableAttrs[attr]);to[attr]=params[attr];switch(availableAnimAttrs[attr]){case nu:diff[attr]=(to[attr]-from[attr])/ms;break;case"colour":from[attr]=R.getRGB(from[attr]);var toColour=R.getRGB(to[attr]);diff[attr]={r:(toColour.r-from[attr].r)/ms,g:(toColour.g-from[attr].g)/ms,b:(toColour.b-from[attr].b)/ms};break;case"path":var pathes=path2curve(from[attr],to[attr]),toPath=pathes[1];from[attr]=pathes[0];diff[attr]=[];for(i=0,ii=from[attr].length;i.5)*2-1;pow(fx-.5,2)+pow(fy-.5,2)>.25&&(fy=math.sqrt(.25-pow(fx-.5,2))*dir+.5)&&fy!=.5&&(fy=fy.toFixed(5)-1e-5*dir)}return E});gradient=gradient.split(/\s*\-\s*/);if(type=="linear"){var angle=gradient.shift();angle=-toFloat(angle);if(isNaN(angle)){return null}var vector=[0,0,math.cos(R.rad(angle)),math.sin(R.rad(angle))],max=1/(mmax(abs(vector[2]),abs(vector[3]))||1);vector[2]*=max;vector[3]*=max;if(vector[2]<0){vector[0]=-vector[2];vector[2]=0}if(vector[3]<0){vector[1]=-vector[3];vector[3]=0}}var dots=R._parseDots(gradient);if(!dots){return null}id=id.replace(/[\(\)\s,\xb0#]/g,"_");if(element.gradient&&id!=element.gradient.id){SVG.defs.removeChild(element.gradient);delete element.gradient}if(!element.gradient){el=$(type+"Gradient",{id:id});element.gradient=el;$(el,type=="radial"?{fx:fx,fy:fy}:{x1:vector[0],y1:vector[1],x2:vector[2],y2:vector[3],gradientTransform:element.matrix.invert()});SVG.defs.appendChild(el);for(var i=0,ii=dots.length;i1?clr.opacity/100:clr.opacity});case"stroke":clr=R.getRGB(value);node.setAttribute(att,clr.hex);att=="stroke"&&clr[has]("opacity")&&$(node,{"stroke-opacity":clr.opacity>1?clr.opacity/100:clr.opacity});if(att=="stroke"&&o._.arrows){"startString"in o._.arrows&&addArrow(o,o._.arrows.startString);"endString"in o._.arrows&&addArrow(o,o._.arrows.endString,1)}break;case"gradient":(o.type=="circle"||o.type=="ellipse"||Str(value).charAt()!="r")&&addGradientFill(o,value);break;case"opacity":if(attrs.gradient&&!attrs[has]("stroke-opacity")){$(node,{"stroke-opacity":value>1?value/100:value})}case"fill-opacity":if(attrs.gradient){gradient=R._g.doc.getElementById(node.getAttribute("fill").replace(/^url\(#|\)$/g,E));if(gradient){stops=gradient.getElementsByTagName("stop");$(stops[stops.length-1],{"stop-opacity":value})}break}default:att=="font-size"&&(value=toInt(value,10)+"px");var cssrule=att.replace(/(\-.)/g,function(w){return w.substring(1).toUpperCase()});node.style[cssrule]=value;o._.dirty=1;node.setAttribute(att,value);break}}}tuneText(o,params);node.style.visibility=vis},leading=1.2,tuneText=function(el,params){if(el.type!="text"||!(params[has]("text")||params[has]("font")||params[has]("font-size")||params[has]("x")||params[has]("y"))){return}var a=el.attrs,node=el.node,fontSize=node.firstChild?toInt(R._g.doc.defaultView.getComputedStyle(node.firstChild,E).getPropertyValue("font-size"),10):10;if(params[has]("text")){a.text=params.text;while(node.firstChild){node.removeChild(node.firstChild)}var texts=Str(params.text).split("\n"),tspans=[],tspan;for(var i=0,ii=texts.length;i"));var brect=span.getBoundingClientRect();res.W=a.w=(brect.right-brect.left)/m;res.H=a.h=(brect.bottom-brect.top)/m;res.X=a.x;res.Y=a.y+res.H/2;("x"in params||"y"in params)&&(res.path.v=R.format("m{0},{1}l{2},{1}",round(a.x*zoom),round(a.y*zoom),round(a.x*zoom)+1));var dirtyattrs=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var d=0,dd=dirtyattrs.length;d.25&&(fy=math.sqrt(.25-pow(fx-.5,2))*((fy>.5)*2-1)+.5);fxfy=fx+S+fy}return E});gradient=gradient.split(/\s*\-\s*/);if(type=="linear"){var angle=gradient.shift();angle=-toFloat(angle);if(isNaN(angle)){return null}}var dots=R._parseDots(gradient);if(!dots){return null}o=o.shape||o.node;if(dots.length){o.removeChild(fill);fill.on=true;fill.method="none";fill.color=dots[0].color;fill.color2=dots[dots.length-1].color;var clrs=[];for(var i=0,ii=dots.length;i')}}catch(e){createNode=function(tagName){return doc.createElement("<"+tagName+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}};R._engine.initWin(R._g.win);R._engine.create=function(){var con=R._getContainer.apply(0,arguments),container=con.container,height=con.height,s,width=con.width,x=con.x,y=con.y;if(!container){throw new Error("VML container not found.")}var res=new R._Paper,c=res.canvas=R._g.doc.createElement("div"),cs=c.style;x=x||0;y=y||0;width=width||512;height=height||342;res.width=width;res.height=height;width==+width&&(width+="px");height==+height&&(height+="px");res.coordsize=zoom*1e3+S+zoom*1e3;res.coordorigin="0 0";res.span=R._g.doc.createElement("span");res.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;";c.appendChild(res.span);cs.cssText=R.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",width,height);if(container==1){R._g.doc.body.appendChild(c);cs.left=x+"px";cs.top=y+"px";cs.position="absolute"}else{if(container.firstChild){container.insertBefore(c,container.firstChild)}else{container.appendChild(c)}}res.renderfix=function(){};return res};R.prototype.clear=function(){R.eve("raphael.clear",this);this.canvas.innerHTML=E;this.span=R._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};R.prototype.remove=function(){R.eve("raphael.remove",this);this.canvas.parentNode.removeChild(this.canvas);for(var i in this){this[i]=typeof this[i]=="function"?R._removedFactory(i):null}return true};var setproto=R.st;for(var method in elproto)if(elproto[has](method)&&!setproto[has](method)){setproto[method]=function(methodname){return function(){var arg=arguments;return this.forEach(function(el){el[methodname].apply(el,arg)})}}(method)}}();oldRaphael.was?g.win.Raphael=R:Raphael=R;return R});