| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051 | (function(f){var g;if(typeof window!=='undefined'){g=window}else if(typeof self!=='undefined'){g=self}g.diagnostics=f()})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){'use strict';var colorspace = _dereq_('colorspace');var enabled = _dereq_('enabled');/** * Bare minimum browser version of diagnostics. It doesn't need fancy pancy * detection algorithms. The code is only enabled when *you* enable it for * debugging purposes. * * @param {String} name Namespace of the diagnostics instance. * @returns {Function} The logger. * @public */module.exports = function factory(name) {  if (!enabled(name)) return function diagnopes() {};  //  // The color for the namespace.  //  var color = colorspace(name);  /**   * The actual function that does the logging.   *   * @param {...args} args The data that needs to be logged.   * @public   */  return function diagnostics() {    var args = Array.prototype.slice.call(arguments, 0);    //    // We cannot push a value as first argument of the argument array as    // console's formatting %s, %d only works on the first argument it receives.    // So in order to prepend our namespace we need to override and prefix the    // first argument.    //    args[0] = '%c'+ name +'%c: '+ args[0];    //    // Now we want to inject the colors to the arguments, so they get colored.    // The last empty argh here is to remove the color again so the log message    // is not colored.    //    args.splice(1, 0, 'color:'+ color, '');    //    // So yea. IE8 doesn't have an apply so we need a work around to puke the    // arguments in place.    //    try { Function.prototype.apply.call(console.log, console, args); }    catch (e) {}  };};},{"colorspace":7,"enabled":8}],2:[function(_dereq_,module,exports){/* MIT license */module.exports = {  rgb2hsl: rgb2hsl,  rgb2hsv: rgb2hsv,  rgb2hwb: rgb2hwb,  rgb2cmyk: rgb2cmyk,  rgb2keyword: rgb2keyword,  rgb2xyz: rgb2xyz,  rgb2lab: rgb2lab,  rgb2lch: rgb2lch,  hsl2rgb: hsl2rgb,  hsl2hsv: hsl2hsv,  hsl2hwb: hsl2hwb,  hsl2cmyk: hsl2cmyk,  hsl2keyword: hsl2keyword,  hsv2rgb: hsv2rgb,  hsv2hsl: hsv2hsl,  hsv2hwb: hsv2hwb,  hsv2cmyk: hsv2cmyk,  hsv2keyword: hsv2keyword,  hwb2rgb: hwb2rgb,  hwb2hsl: hwb2hsl,  hwb2hsv: hwb2hsv,  hwb2cmyk: hwb2cmyk,  hwb2keyword: hwb2keyword,  cmyk2rgb: cmyk2rgb,  cmyk2hsl: cmyk2hsl,  cmyk2hsv: cmyk2hsv,  cmyk2hwb: cmyk2hwb,  cmyk2keyword: cmyk2keyword,  keyword2rgb: keyword2rgb,  keyword2hsl: keyword2hsl,  keyword2hsv: keyword2hsv,  keyword2hwb: keyword2hwb,  keyword2cmyk: keyword2cmyk,  keyword2lab: keyword2lab,  keyword2xyz: keyword2xyz,  xyz2rgb: xyz2rgb,  xyz2lab: xyz2lab,  xyz2lch: xyz2lch,  lab2xyz: lab2xyz,  lab2rgb: lab2rgb,  lab2lch: lab2lch,  lch2lab: lch2lab,  lch2xyz: lch2xyz,  lch2rgb: lch2rgb}function rgb2hsl(rgb) {  var r = rgb[0]/255,      g = rgb[1]/255,      b = rgb[2]/255,      min = Math.min(r, g, b),      max = Math.max(r, g, b),      delta = max - min,      h, s, l;  if (max == min)    h = 0;  else if (r == max)    h = (g - b) / delta;  else if (g == max)    h = 2 + (b - r) / delta;  else if (b == max)    h = 4 + (r - g)/ delta;  h = Math.min(h * 60, 360);  if (h < 0)    h += 360;  l = (min + max) / 2;  if (max == min)    s = 0;  else if (l <= 0.5)    s = delta / (max + min);  else    s = delta / (2 - max - min);  return [h, s * 100, l * 100];}function rgb2hsv(rgb) {  var r = rgb[0],      g = rgb[1],      b = rgb[2],      min = Math.min(r, g, b),      max = Math.max(r, g, b),      delta = max - min,      h, s, v;  if (max == 0)    s = 0;  else    s = (delta/max * 1000)/10;  if (max == min)    h = 0;  else if (r == max)    h = (g - b) / delta;  else if (g == max)    h = 2 + (b - r) / delta;  else if (b == max)    h = 4 + (r - g) / delta;  h = Math.min(h * 60, 360);  if (h < 0)    h += 360;  v = ((max / 255) * 1000) / 10;  return [h, s, v];}function rgb2hwb(rgb) {  var r = rgb[0],      g = rgb[1],      b = rgb[2],      h = rgb2hsl(rgb)[0],      w = 1/255 * Math.min(r, Math.min(g, b)),      b = 1 - 1/255 * Math.max(r, Math.max(g, b));  return [h, w * 100, b * 100];}function rgb2cmyk(rgb) {  var r = rgb[0] / 255,      g = rgb[1] / 255,      b = rgb[2] / 255,      c, m, y, k;  k = Math.min(1 - r, 1 - g, 1 - b);  c = (1 - r - k) / (1 - k) || 0;  m = (1 - g - k) / (1 - k) || 0;  y = (1 - b - k) / (1 - k) || 0;  return [c * 100, m * 100, y * 100, k * 100];}function rgb2keyword(rgb) {  return reverseKeywords[JSON.stringify(rgb)];}function rgb2xyz(rgb) {  var r = rgb[0] / 255,      g = rgb[1] / 255,      b = rgb[2] / 255;  // assume sRGB  r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);  g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);  b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);  var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);  var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);  var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);  return [x * 100, y *100, z * 100];}function rgb2lab(rgb) {  var xyz = rgb2xyz(rgb),        x = xyz[0],        y = xyz[1],        z = xyz[2],        l, a, b;  x /= 95.047;  y /= 100;  z /= 108.883;  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);  l = (116 * y) - 16;  a = 500 * (x - y);  b = 200 * (y - z);  return [l, a, b];}function rgb2lch(args) {  return lab2lch(rgb2lab(args));}function hsl2rgb(hsl) {  var h = hsl[0] / 360,      s = hsl[1] / 100,      l = hsl[2] / 100,      t1, t2, t3, rgb, val;  if (s == 0) {    val = l * 255;    return [val, val, val];  }  if (l < 0.5)    t2 = l * (1 + s);  else    t2 = l + s - l * s;  t1 = 2 * l - t2;  rgb = [0, 0, 0];  for (var i = 0; i < 3; i++) {    t3 = h + 1 / 3 * - (i - 1);    t3 < 0 && t3++;    t3 > 1 && t3--;    if (6 * t3 < 1)      val = t1 + (t2 - t1) * 6 * t3;    else if (2 * t3 < 1)      val = t2;    else if (3 * t3 < 2)      val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;    else      val = t1;    rgb[i] = val * 255;  }  return rgb;}function hsl2hsv(hsl) {  var h = hsl[0],      s = hsl[1] / 100,      l = hsl[2] / 100,      sv, v;  if(l === 0) {      // no need to do calc on black      // also avoids divide by 0 error      return [0, 0, 0];  }  l *= 2;  s *= (l <= 1) ? l : 2 - l;  v = (l + s) / 2;  sv = (2 * s) / (l + s);  return [h, sv * 100, v * 100];}function hsl2hwb(args) {  return rgb2hwb(hsl2rgb(args));}function hsl2cmyk(args) {  return rgb2cmyk(hsl2rgb(args));}function hsl2keyword(args) {  return rgb2keyword(hsl2rgb(args));}function hsv2rgb(hsv) {  var h = hsv[0] / 60,      s = hsv[1] / 100,      v = hsv[2] / 100,      hi = Math.floor(h) % 6;  var f = h - Math.floor(h),      p = 255 * v * (1 - s),      q = 255 * v * (1 - (s * f)),      t = 255 * v * (1 - (s * (1 - f))),      v = 255 * v;  switch(hi) {    case 0:      return [v, t, p];    case 1:      return [q, v, p];    case 2:      return [p, v, t];    case 3:      return [p, q, v];    case 4:      return [t, p, v];    case 5:      return [v, p, q];  }}function hsv2hsl(hsv) {  var h = hsv[0],      s = hsv[1] / 100,      v = hsv[2] / 100,      sl, l;  l = (2 - s) * v;  sl = s * v;  sl /= (l <= 1) ? l : 2 - l;  sl = sl || 0;  l /= 2;  return [h, sl * 100, l * 100];}function hsv2hwb(args) {  return rgb2hwb(hsv2rgb(args))}function hsv2cmyk(args) {  return rgb2cmyk(hsv2rgb(args));}function hsv2keyword(args) {  return rgb2keyword(hsv2rgb(args));}// http://dev.w3.org/csswg/css-color/#hwb-to-rgbfunction hwb2rgb(hwb) {  var h = hwb[0] / 360,      wh = hwb[1] / 100,      bl = hwb[2] / 100,      ratio = wh + bl,      i, v, f, n;  // wh + bl cant be > 1  if (ratio > 1) {    wh /= ratio;    bl /= ratio;  }  i = Math.floor(6 * h);  v = 1 - bl;  f = 6 * h - i;  if ((i & 0x01) != 0) {    f = 1 - f;  }  n = wh + f * (v - wh);  // linear interpolation  switch (i) {    default:    case 6:    case 0: r = v; g = n; b = wh; break;    case 1: r = n; g = v; b = wh; break;    case 2: r = wh; g = v; b = n; break;    case 3: r = wh; g = n; b = v; break;    case 4: r = n; g = wh; b = v; break;    case 5: r = v; g = wh; b = n; break;  }  return [r * 255, g * 255, b * 255];}function hwb2hsl(args) {  return rgb2hsl(hwb2rgb(args));}function hwb2hsv(args) {  return rgb2hsv(hwb2rgb(args));}function hwb2cmyk(args) {  return rgb2cmyk(hwb2rgb(args));}function hwb2keyword(args) {  return rgb2keyword(hwb2rgb(args));}function cmyk2rgb(cmyk) {  var c = cmyk[0] / 100,      m = cmyk[1] / 100,      y = cmyk[2] / 100,      k = cmyk[3] / 100,      r, g, b;  r = 1 - Math.min(1, c * (1 - k) + k);  g = 1 - Math.min(1, m * (1 - k) + k);  b = 1 - Math.min(1, y * (1 - k) + k);  return [r * 255, g * 255, b * 255];}function cmyk2hsl(args) {  return rgb2hsl(cmyk2rgb(args));}function cmyk2hsv(args) {  return rgb2hsv(cmyk2rgb(args));}function cmyk2hwb(args) {  return rgb2hwb(cmyk2rgb(args));}function cmyk2keyword(args) {  return rgb2keyword(cmyk2rgb(args));}function xyz2rgb(xyz) {  var x = xyz[0] / 100,      y = xyz[1] / 100,      z = xyz[2] / 100,      r, g, b;  r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);  g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);  b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);  // assume sRGB  r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)    : r = (r * 12.92);  g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)    : g = (g * 12.92);  b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)    : b = (b * 12.92);  r = Math.min(Math.max(0, r), 1);  g = Math.min(Math.max(0, g), 1);  b = Math.min(Math.max(0, b), 1);  return [r * 255, g * 255, b * 255];}function xyz2lab(xyz) {  var x = xyz[0],      y = xyz[1],      z = xyz[2],      l, a, b;  x /= 95.047;  y /= 100;  z /= 108.883;  x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);  y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);  z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);  l = (116 * y) - 16;  a = 500 * (x - y);  b = 200 * (y - z);  return [l, a, b];}function xyz2lch(args) {  return lab2lch(xyz2lab(args));}function lab2xyz(lab) {  var l = lab[0],      a = lab[1],      b = lab[2],      x, y, z, y2;  if (l <= 8) {    y = (l * 100) / 903.3;    y2 = (7.787 * (y / 100)) + (16 / 116);  } else {    y = 100 * Math.pow((l + 16) / 116, 3);    y2 = Math.pow(y / 100, 1/3);  }  x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);  z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);  return [x, y, z];}function lab2lch(lab) {  var l = lab[0],      a = lab[1],      b = lab[2],      hr, h, c;  hr = Math.atan2(b, a);  h = hr * 360 / 2 / Math.PI;  if (h < 0) {    h += 360;  }  c = Math.sqrt(a * a + b * b);  return [l, c, h];}function lab2rgb(args) {  return xyz2rgb(lab2xyz(args));}function lch2lab(lch) {  var l = lch[0],      c = lch[1],      h = lch[2],      a, b, hr;  hr = h / 360 * 2 * Math.PI;  a = c * Math.cos(hr);  b = c * Math.sin(hr);  return [l, a, b];}function lch2xyz(args) {  return lab2xyz(lch2lab(args));}function lch2rgb(args) {  return lab2rgb(lch2lab(args));}function keyword2rgb(keyword) {  return cssKeywords[keyword];}function keyword2hsl(args) {  return rgb2hsl(keyword2rgb(args));}function keyword2hsv(args) {  return rgb2hsv(keyword2rgb(args));}function keyword2hwb(args) {  return rgb2hwb(keyword2rgb(args));}function keyword2cmyk(args) {  return rgb2cmyk(keyword2rgb(args));}function keyword2lab(args) {  return rgb2lab(keyword2rgb(args));}function keyword2xyz(args) {  return rgb2xyz(keyword2rgb(args));}var cssKeywords = {  aliceblue:  [240,248,255],  antiquewhite: [250,235,215],  aqua: [0,255,255],  aquamarine: [127,255,212],  azure:  [240,255,255],  beige:  [245,245,220],  bisque: [255,228,196],  black:  [0,0,0],  blanchedalmond: [255,235,205],  blue: [0,0,255],  blueviolet: [138,43,226],  brown:  [165,42,42],  burlywood:  [222,184,135],  cadetblue:  [95,158,160],  chartreuse: [127,255,0],  chocolate:  [210,105,30],  coral:  [255,127,80],  cornflowerblue: [100,149,237],  cornsilk: [255,248,220],  crimson:  [220,20,60],  cyan: [0,255,255],  darkblue: [0,0,139],  darkcyan: [0,139,139],  darkgoldenrod:  [184,134,11],  darkgray: [169,169,169],  darkgreen:  [0,100,0],  darkgrey: [169,169,169],  darkkhaki:  [189,183,107],  darkmagenta:  [139,0,139],  darkolivegreen: [85,107,47],  darkorange: [255,140,0],  darkorchid: [153,50,204],  darkred:  [139,0,0],  darksalmon: [233,150,122],  darkseagreen: [143,188,143],  darkslateblue:  [72,61,139],  darkslategray:  [47,79,79],  darkslategrey:  [47,79,79],  darkturquoise:  [0,206,209],  darkviolet: [148,0,211],  deeppink: [255,20,147],  deepskyblue:  [0,191,255],  dimgray:  [105,105,105],  dimgrey:  [105,105,105],  dodgerblue: [30,144,255],  firebrick:  [178,34,34],  floralwhite:  [255,250,240],  forestgreen:  [34,139,34],  fuchsia:  [255,0,255],  gainsboro:  [220,220,220],  ghostwhite: [248,248,255],  gold: [255,215,0],  goldenrod:  [218,165,32],  gray: [128,128,128],  green:  [0,128,0],  greenyellow:  [173,255,47],  grey: [128,128,128],  honeydew: [240,255,240],  hotpink:  [255,105,180],  indianred:  [205,92,92],  indigo: [75,0,130],  ivory:  [255,255,240],  khaki:  [240,230,140],  lavender: [230,230,250],  lavenderblush:  [255,240,245],  lawngreen:  [124,252,0],  lemonchiffon: [255,250,205],  lightblue:  [173,216,230],  lightcoral: [240,128,128],  lightcyan:  [224,255,255],  lightgoldenrodyellow: [250,250,210],  lightgray:  [211,211,211],  lightgreen: [144,238,144],  lightgrey:  [211,211,211],  lightpink:  [255,182,193],  lightsalmon:  [255,160,122],  lightseagreen:  [32,178,170],  lightskyblue: [135,206,250],  lightslategray: [119,136,153],  lightslategrey: [119,136,153],  lightsteelblue: [176,196,222],  lightyellow:  [255,255,224],  lime: [0,255,0],  limegreen:  [50,205,50],  linen:  [250,240,230],  magenta:  [255,0,255],  maroon: [128,0,0],  mediumaquamarine: [102,205,170],  mediumblue: [0,0,205],  mediumorchid: [186,85,211],  mediumpurple: [147,112,219],  mediumseagreen: [60,179,113],  mediumslateblue:  [123,104,238],  mediumspringgreen:  [0,250,154],  mediumturquoise:  [72,209,204],  mediumvioletred:  [199,21,133],  midnightblue: [25,25,112],  mintcream:  [245,255,250],  mistyrose:  [255,228,225],  moccasin: [255,228,181],  navajowhite:  [255,222,173],  navy: [0,0,128],  oldlace:  [253,245,230],  olive:  [128,128,0],  olivedrab:  [107,142,35],  orange: [255,165,0],  orangered:  [255,69,0],  orchid: [218,112,214],  palegoldenrod:  [238,232,170],  palegreen:  [152,251,152],  paleturquoise:  [175,238,238],  palevioletred:  [219,112,147],  papayawhip: [255,239,213],  peachpuff:  [255,218,185],  peru: [205,133,63],  pink: [255,192,203],  plum: [221,160,221],  powderblue: [176,224,230],  purple: [128,0,128],  rebeccapurple: [102, 51, 153],  red:  [255,0,0],  rosybrown:  [188,143,143],  royalblue:  [65,105,225],  saddlebrown:  [139,69,19],  salmon: [250,128,114],  sandybrown: [244,164,96],  seagreen: [46,139,87],  seashell: [255,245,238],  sienna: [160,82,45],  silver: [192,192,192],  skyblue:  [135,206,235],  slateblue:  [106,90,205],  slategray:  [112,128,144],  slategrey:  [112,128,144],  snow: [255,250,250],  springgreen:  [0,255,127],  steelblue:  [70,130,180],  tan:  [210,180,140],  teal: [0,128,128],  thistle:  [216,191,216],  tomato: [255,99,71],  turquoise:  [64,224,208],  violet: [238,130,238],  wheat:  [245,222,179],  white:  [255,255,255],  whitesmoke: [245,245,245],  yellow: [255,255,0],  yellowgreen:  [154,205,50]};var reverseKeywords = {};for (var key in cssKeywords) {  reverseKeywords[JSON.stringify(cssKeywords[key])] = key;}},{}],3:[function(_dereq_,module,exports){var conversions = _dereq_("./conversions");var convert = function() {   return new Converter();}for (var func in conversions) {  // export Raw versions  convert[func + "Raw"] =  (function(func) {    // accept array or plain args    return function(arg) {      if (typeof arg == "number")        arg = Array.prototype.slice.call(arguments);      return conversions[func](arg);    }  })(func);  var pair = /(\w+)2(\w+)/.exec(func),      from = pair[1],      to = pair[2];  // export rgb2hsl and ["rgb"]["hsl"]  convert[from] = convert[from] || {};  convert[from][to] = convert[func] = (function(func) {     return function(arg) {      if (typeof arg == "number")        arg = Array.prototype.slice.call(arguments);            var val = conversions[func](arg);      if (typeof val == "string" || val === undefined)        return val; // keyword      for (var i = 0; i < val.length; i++)        val[i] = Math.round(val[i]);      return val;    }  })(func);}/* Converter does lazy conversion and caching */var Converter = function() {   this.convs = {};};/* Either get the values for a space or  set the values for a space, depending on args */Converter.prototype.routeSpace = function(space, args) {   var values = args[0];   if (values === undefined) {      // color.rgb()      return this.getValues(space);   }   // color.rgb(10, 10, 10)   if (typeof values == "number") {      values = Array.prototype.slice.call(args);           }   return this.setValues(space, values);};  /* Set the values for a space, invalidating cache */Converter.prototype.setValues = function(space, values) {   this.space = space;   this.convs = {};   this.convs[space] = values;   return this;};/* Get the values for a space. If there's already  a conversion for the space, fetch it, otherwise  compute it */Converter.prototype.getValues = function(space) {   var vals = this.convs[space];   if (!vals) {      var fspace = this.space,          from = this.convs[fspace];      vals = convert[fspace][space](from);      this.convs[space] = vals;   }  return vals;};["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) {   Converter.prototype[space] = function(vals) {      return this.routeSpace(space, arguments);   }});module.exports = convert;},{"./conversions":2}],4:[function(_dereq_,module,exports){'use strict'module.exports = {	"aliceblue": [240, 248, 255],	"antiquewhite": [250, 235, 215],	"aqua": [0, 255, 255],	"aquamarine": [127, 255, 212],	"azure": [240, 255, 255],	"beige": [245, 245, 220],	"bisque": [255, 228, 196],	"black": [0, 0, 0],	"blanchedalmond": [255, 235, 205],	"blue": [0, 0, 255],	"blueviolet": [138, 43, 226],	"brown": [165, 42, 42],	"burlywood": [222, 184, 135],	"cadetblue": [95, 158, 160],	"chartreuse": [127, 255, 0],	"chocolate": [210, 105, 30],	"coral": [255, 127, 80],	"cornflowerblue": [100, 149, 237],	"cornsilk": [255, 248, 220],	"crimson": [220, 20, 60],	"cyan": [0, 255, 255],	"darkblue": [0, 0, 139],	"darkcyan": [0, 139, 139],	"darkgoldenrod": [184, 134, 11],	"darkgray": [169, 169, 169],	"darkgreen": [0, 100, 0],	"darkgrey": [169, 169, 169],	"darkkhaki": [189, 183, 107],	"darkmagenta": [139, 0, 139],	"darkolivegreen": [85, 107, 47],	"darkorange": [255, 140, 0],	"darkorchid": [153, 50, 204],	"darkred": [139, 0, 0],	"darksalmon": [233, 150, 122],	"darkseagreen": [143, 188, 143],	"darkslateblue": [72, 61, 139],	"darkslategray": [47, 79, 79],	"darkslategrey": [47, 79, 79],	"darkturquoise": [0, 206, 209],	"darkviolet": [148, 0, 211],	"deeppink": [255, 20, 147],	"deepskyblue": [0, 191, 255],	"dimgray": [105, 105, 105],	"dimgrey": [105, 105, 105],	"dodgerblue": [30, 144, 255],	"firebrick": [178, 34, 34],	"floralwhite": [255, 250, 240],	"forestgreen": [34, 139, 34],	"fuchsia": [255, 0, 255],	"gainsboro": [220, 220, 220],	"ghostwhite": [248, 248, 255],	"gold": [255, 215, 0],	"goldenrod": [218, 165, 32],	"gray": [128, 128, 128],	"green": [0, 128, 0],	"greenyellow": [173, 255, 47],	"grey": [128, 128, 128],	"honeydew": [240, 255, 240],	"hotpink": [255, 105, 180],	"indianred": [205, 92, 92],	"indigo": [75, 0, 130],	"ivory": [255, 255, 240],	"khaki": [240, 230, 140],	"lavender": [230, 230, 250],	"lavenderblush": [255, 240, 245],	"lawngreen": [124, 252, 0],	"lemonchiffon": [255, 250, 205],	"lightblue": [173, 216, 230],	"lightcoral": [240, 128, 128],	"lightcyan": [224, 255, 255],	"lightgoldenrodyellow": [250, 250, 210],	"lightgray": [211, 211, 211],	"lightgreen": [144, 238, 144],	"lightgrey": [211, 211, 211],	"lightpink": [255, 182, 193],	"lightsalmon": [255, 160, 122],	"lightseagreen": [32, 178, 170],	"lightskyblue": [135, 206, 250],	"lightslategray": [119, 136, 153],	"lightslategrey": [119, 136, 153],	"lightsteelblue": [176, 196, 222],	"lightyellow": [255, 255, 224],	"lime": [0, 255, 0],	"limegreen": [50, 205, 50],	"linen": [250, 240, 230],	"magenta": [255, 0, 255],	"maroon": [128, 0, 0],	"mediumaquamarine": [102, 205, 170],	"mediumblue": [0, 0, 205],	"mediumorchid": [186, 85, 211],	"mediumpurple": [147, 112, 219],	"mediumseagreen": [60, 179, 113],	"mediumslateblue": [123, 104, 238],	"mediumspringgreen": [0, 250, 154],	"mediumturquoise": [72, 209, 204],	"mediumvioletred": [199, 21, 133],	"midnightblue": [25, 25, 112],	"mintcream": [245, 255, 250],	"mistyrose": [255, 228, 225],	"moccasin": [255, 228, 181],	"navajowhite": [255, 222, 173],	"navy": [0, 0, 128],	"oldlace": [253, 245, 230],	"olive": [128, 128, 0],	"olivedrab": [107, 142, 35],	"orange": [255, 165, 0],	"orangered": [255, 69, 0],	"orchid": [218, 112, 214],	"palegoldenrod": [238, 232, 170],	"palegreen": [152, 251, 152],	"paleturquoise": [175, 238, 238],	"palevioletred": [219, 112, 147],	"papayawhip": [255, 239, 213],	"peachpuff": [255, 218, 185],	"peru": [205, 133, 63],	"pink": [255, 192, 203],	"plum": [221, 160, 221],	"powderblue": [176, 224, 230],	"purple": [128, 0, 128],	"rebeccapurple": [102, 51, 153],	"red": [255, 0, 0],	"rosybrown": [188, 143, 143],	"royalblue": [65, 105, 225],	"saddlebrown": [139, 69, 19],	"salmon": [250, 128, 114],	"sandybrown": [244, 164, 96],	"seagreen": [46, 139, 87],	"seashell": [255, 245, 238],	"sienna": [160, 82, 45],	"silver": [192, 192, 192],	"skyblue": [135, 206, 235],	"slateblue": [106, 90, 205],	"slategray": [112, 128, 144],	"slategrey": [112, 128, 144],	"snow": [255, 250, 250],	"springgreen": [0, 255, 127],	"steelblue": [70, 130, 180],	"tan": [210, 180, 140],	"teal": [0, 128, 128],	"thistle": [216, 191, 216],	"tomato": [255, 99, 71],	"turquoise": [64, 224, 208],	"violet": [238, 130, 238],	"wheat": [245, 222, 179],	"white": [255, 255, 255],	"whitesmoke": [245, 245, 245],	"yellow": [255, 255, 0],	"yellowgreen": [154, 205, 50]};},{}],5:[function(_dereq_,module,exports){/* MIT license */var colorNames = _dereq_('color-name');module.exports = {   getRgba: getRgba,   getHsla: getHsla,   getRgb: getRgb,   getHsl: getHsl,   getHwb: getHwb,   getAlpha: getAlpha,   hexString: hexString,   rgbString: rgbString,   rgbaString: rgbaString,   percentString: percentString,   percentaString: percentaString,   hslString: hslString,   hslaString: hslaString,   hwbString: hwbString,   keyword: keyword}function getRgba(string) {   if (!string) {      return;   }   var abbr =  /^#([a-fA-F0-9]{3})$/,       hex =  /^#([a-fA-F0-9]{6})$/,       rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,       per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,       keyword = /(\D+)/;   var rgb = [0, 0, 0],       a = 1,       match = string.match(abbr);   if (match) {      match = match[1];      for (var i = 0; i < rgb.length; i++) {         rgb[i] = parseInt(match[i] + match[i], 16);      }   }   else if (match = string.match(hex)) {      match = match[1];      for (var i = 0; i < rgb.length; i++) {         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);      }   }   else if (match = string.match(rgba)) {      for (var i = 0; i < rgb.length; i++) {         rgb[i] = parseInt(match[i + 1]);      }      a = parseFloat(match[4]);   }   else if (match = string.match(per)) {      for (var i = 0; i < rgb.length; i++) {         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);      }      a = parseFloat(match[4]);   }   else if (match = string.match(keyword)) {      if (match[1] == "transparent") {         return [0, 0, 0, 0];      }      rgb = colorNames[match[1]];      if (!rgb) {         return;      }   }   for (var i = 0; i < rgb.length; i++) {      rgb[i] = scale(rgb[i], 0, 255);   }   if (!a && a != 0) {      a = 1;   }   else {      a = scale(a, 0, 1);   }   rgb[3] = a;   return rgb;}function getHsla(string) {   if (!string) {      return;   }   var hsl = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;   var match = string.match(hsl);   if (match) {      var alpha = parseFloat(match[4]);      var h = scale(parseInt(match[1]), 0, 360),          s = scale(parseFloat(match[2]), 0, 100),          l = scale(parseFloat(match[3]), 0, 100),          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);      return [h, s, l, a];   }}function getHwb(string) {   if (!string) {      return;   }   var hwb = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;   var match = string.match(hwb);   if (match) {    var alpha = parseFloat(match[4]);      var h = scale(parseInt(match[1]), 0, 360),          w = scale(parseFloat(match[2]), 0, 100),          b = scale(parseFloat(match[3]), 0, 100),          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);      return [h, w, b, a];   }}function getRgb(string) {   var rgba = getRgba(string);   return rgba && rgba.slice(0, 3);}function getHsl(string) {  var hsla = getHsla(string);  return hsla && hsla.slice(0, 3);}function getAlpha(string) {   var vals = getRgba(string);   if (vals) {      return vals[3];   }   else if (vals = getHsla(string)) {      return vals[3];   }   else if (vals = getHwb(string)) {      return vals[3];   }}// generatorsfunction hexString(rgb) {   return "#" + hexDouble(rgb[0]) + hexDouble(rgb[1])              + hexDouble(rgb[2]);}function rgbString(rgba, alpha) {   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {      return rgbaString(rgba, alpha);   }   return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")";}function rgbaString(rgba, alpha) {   if (alpha === undefined) {      alpha = (rgba[3] !== undefined ? rgba[3] : 1);   }   return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2]           + ", " + alpha + ")";}function percentString(rgba, alpha) {   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {      return percentaString(rgba, alpha);   }   var r = Math.round(rgba[0]/255 * 100),       g = Math.round(rgba[1]/255 * 100),       b = Math.round(rgba[2]/255 * 100);   return "rgb(" + r + "%, " + g + "%, " + b + "%)";}function percentaString(rgba, alpha) {   var r = Math.round(rgba[0]/255 * 100),       g = Math.round(rgba[1]/255 * 100),       b = Math.round(rgba[2]/255 * 100);   return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha || rgba[3] || 1) + ")";}function hslString(hsla, alpha) {   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {      return hslaString(hsla, alpha);   }   return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)";}function hslaString(hsla, alpha) {   if (alpha === undefined) {      alpha = (hsla[3] !== undefined ? hsla[3] : 1);   }   return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, "           + alpha + ")";}// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax// (hwb have alpha optional & 1 is default value)function hwbString(hwb, alpha) {   if (alpha === undefined) {      alpha = (hwb[3] !== undefined ? hwb[3] : 1);   }   return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%"           + (alpha !== undefined && alpha !== 1 ? ", " + alpha : "") + ")";}function keyword(rgb) {  return reverseNames[rgb.slice(0, 3)];}// helpersfunction scale(num, min, max) {   return Math.min(Math.max(min, num), max);}function hexDouble(num) {  var str = num.toString(16).toUpperCase();  return (str.length < 2) ? "0" + str : str;}//create a list of reverse color namesvar reverseNames = {};for (var name in colorNames) {   reverseNames[colorNames[name]] = name;}},{"color-name":4}],6:[function(_dereq_,module,exports){/* MIT license */var convert = _dereq_("color-convert"),    string = _dereq_("color-string");var Color = function(obj) {  if (obj instanceof Color) return obj;  if (! (this instanceof Color)) return new Color(obj);   this.values = {      rgb: [0, 0, 0],      hsl: [0, 0, 0],      hsv: [0, 0, 0],      hwb: [0, 0, 0],      cmyk: [0, 0, 0, 0],      alpha: 1   }   // parse Color() argument   if (typeof obj == "string") {      var vals = string.getRgba(obj);      if (vals) {         this.setValues("rgb", vals);      }      else if(vals = string.getHsla(obj)) {         this.setValues("hsl", vals);      }      else if(vals = string.getHwb(obj)) {         this.setValues("hwb", vals);      }      else {        throw new Error("Unable to parse color from string \"" + obj + "\"");      }   }   else if (typeof obj == "object") {      var vals = obj;      if(vals["r"] !== undefined || vals["red"] !== undefined) {         this.setValues("rgb", vals)      }      else if(vals["l"] !== undefined || vals["lightness"] !== undefined) {         this.setValues("hsl", vals)      }      else if(vals["v"] !== undefined || vals["value"] !== undefined) {         this.setValues("hsv", vals)      }      else if(vals["w"] !== undefined || vals["whiteness"] !== undefined) {         this.setValues("hwb", vals)      }      else if(vals["c"] !== undefined || vals["cyan"] !== undefined) {         this.setValues("cmyk", vals)      }      else {        throw new Error("Unable to parse color from object " + JSON.stringify(obj));      }   }}Color.prototype = {   rgb: function (vals) {      return this.setSpace("rgb", arguments);   },   hsl: function(vals) {      return this.setSpace("hsl", arguments);   },   hsv: function(vals) {      return this.setSpace("hsv", arguments);   },   hwb: function(vals) {      return this.setSpace("hwb", arguments);   },   cmyk: function(vals) {      return this.setSpace("cmyk", arguments);   },   rgbArray: function() {      return this.values.rgb;   },   hslArray: function() {      return this.values.hsl;   },   hsvArray: function() {      return this.values.hsv;   },   hwbArray: function() {      if (this.values.alpha !== 1) {        return this.values.hwb.concat([this.values.alpha])      }      return this.values.hwb;   },   cmykArray: function() {      return this.values.cmyk;   },   rgbaArray: function() {      var rgb = this.values.rgb;      return rgb.concat([this.values.alpha]);   },   hslaArray: function() {      var hsl = this.values.hsl;      return hsl.concat([this.values.alpha]);   },   alpha: function(val) {      if (val === undefined) {         return this.values.alpha;      }      this.setValues("alpha", val);      return this;   },   red: function(val) {      return this.setChannel("rgb", 0, val);   },   green: function(val) {      return this.setChannel("rgb", 1, val);   },   blue: function(val) {      return this.setChannel("rgb", 2, val);   },   hue: function(val) {      return this.setChannel("hsl", 0, val);   },   saturation: function(val) {      return this.setChannel("hsl", 1, val);   },   lightness: function(val) {      return this.setChannel("hsl", 2, val);   },   saturationv: function(val) {      return this.setChannel("hsv", 1, val);   },   whiteness: function(val) {      return this.setChannel("hwb", 1, val);   },   blackness: function(val) {      return this.setChannel("hwb", 2, val);   },   value: function(val) {      return this.setChannel("hsv", 2, val);   },   cyan: function(val) {      return this.setChannel("cmyk", 0, val);   },   magenta: function(val) {      return this.setChannel("cmyk", 1, val);   },   yellow: function(val) {      return this.setChannel("cmyk", 2, val);   },   black: function(val) {      return this.setChannel("cmyk", 3, val);   },   hexString: function() {      return string.hexString(this.values.rgb);   },   rgbString: function() {      return string.rgbString(this.values.rgb, this.values.alpha);   },   rgbaString: function() {      return string.rgbaString(this.values.rgb, this.values.alpha);   },   percentString: function() {      return string.percentString(this.values.rgb, this.values.alpha);   },   hslString: function() {      return string.hslString(this.values.hsl, this.values.alpha);   },   hslaString: function() {      return string.hslaString(this.values.hsl, this.values.alpha);   },   hwbString: function() {      return string.hwbString(this.values.hwb, this.values.alpha);   },   keyword: function() {      return string.keyword(this.values.rgb, this.values.alpha);   },   rgbNumber: function() {      return (this.values.rgb[0] << 16) | (this.values.rgb[1] << 8) | this.values.rgb[2];   },   luminosity: function() {      // http://www.w3.org/TR/WCAG20/#relativeluminancedef      var rgb = this.values.rgb;      var lum = [];      for (var i = 0; i < rgb.length; i++) {         var chan = rgb[i] / 255;         lum[i] = (chan <= 0.03928) ? chan / 12.92                  : Math.pow(((chan + 0.055) / 1.055), 2.4)      }      return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];   },   contrast: function(color2) {      // http://www.w3.org/TR/WCAG20/#contrast-ratiodef      var lum1 = this.luminosity();      var lum2 = color2.luminosity();      if (lum1 > lum2) {         return (lum1 + 0.05) / (lum2 + 0.05)      };      return (lum2 + 0.05) / (lum1 + 0.05);   },   level: function(color2) {     var contrastRatio = this.contrast(color2);     return (contrastRatio >= 7.1)       ? 'AAA'       : (contrastRatio >= 4.5)        ? 'AA'        : '';   },   dark: function() {      // YIQ equation from http://24ways.org/2010/calculating-color-contrast      var rgb = this.values.rgb,          yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;      return yiq < 128;   },   light: function() {      return !this.dark();   },   negate: function() {      var rgb = []      for (var i = 0; i < 3; i++) {         rgb[i] = 255 - this.values.rgb[i];      }      this.setValues("rgb", rgb);      return this;   },   lighten: function(ratio) {      this.values.hsl[2] += this.values.hsl[2] * ratio;      this.setValues("hsl", this.values.hsl);      return this;   },   darken: function(ratio) {      this.values.hsl[2] -= this.values.hsl[2] * ratio;      this.setValues("hsl", this.values.hsl);      return this;   },   saturate: function(ratio) {      this.values.hsl[1] += this.values.hsl[1] * ratio;      this.setValues("hsl", this.values.hsl);      return this;   },   desaturate: function(ratio) {      this.values.hsl[1] -= this.values.hsl[1] * ratio;      this.setValues("hsl", this.values.hsl);      return this;   },   whiten: function(ratio) {      this.values.hwb[1] += this.values.hwb[1] * ratio;      this.setValues("hwb", this.values.hwb);      return this;   },   blacken: function(ratio) {      this.values.hwb[2] += this.values.hwb[2] * ratio;      this.setValues("hwb", this.values.hwb);      return this;   },   greyscale: function() {      var rgb = this.values.rgb;      // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale      var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;      this.setValues("rgb", [val, val, val]);      return this;   },   clearer: function(ratio) {      this.setValues("alpha", this.values.alpha - (this.values.alpha * ratio));      return this;   },   opaquer: function(ratio) {      this.setValues("alpha", this.values.alpha + (this.values.alpha * ratio));      return this;   },   rotate: function(degrees) {      var hue = this.values.hsl[0];      hue = (hue + degrees) % 360;      hue = hue < 0 ? 360 + hue : hue;      this.values.hsl[0] = hue;      this.setValues("hsl", this.values.hsl);      return this;   },   mix: function(color2, weight) {      weight = 1 - (weight == null ? 0.5 : weight);      // algorithm from Sass's mix(). Ratio of first color in mix is      // determined by the alphas of both colors and the weight      var t1 = weight * 2 - 1,          d = this.alpha() - color2.alpha();      var weight1 = (((t1 * d == -1) ? t1 : (t1 + d) / (1 + t1 * d)) + 1) / 2;      var weight2 = 1 - weight1;      var rgb = this.rgbArray();      var rgb2 = color2.rgbArray();      for (var i = 0; i < rgb.length; i++) {         rgb[i] = rgb[i] * weight1 + rgb2[i] * weight2;      }      this.setValues("rgb", rgb);      var alpha = this.alpha() * weight + color2.alpha() * (1 - weight);      this.setValues("alpha", alpha);      return this;   },   toJSON: function() {     return this.rgb();   },   clone: function() {     return new Color(this.rgb());   }}Color.prototype.getValues = function(space) {   var vals = {};   for (var i = 0; i < space.length; i++) {      vals[space.charAt(i)] = this.values[space][i];   }   if (this.values.alpha != 1) {      vals["a"] = this.values.alpha;   }   // {r: 255, g: 255, b: 255, a: 0.4}   return vals;}Color.prototype.setValues = function(space, vals) {   var spaces = {      "rgb": ["red", "green", "blue"],      "hsl": ["hue", "saturation", "lightness"],      "hsv": ["hue", "saturation", "value"],      "hwb": ["hue", "whiteness", "blackness"],      "cmyk": ["cyan", "magenta", "yellow", "black"]   };   var maxes = {      "rgb": [255, 255, 255],      "hsl": [360, 100, 100],      "hsv": [360, 100, 100],      "hwb": [360, 100, 100],      "cmyk": [100, 100, 100, 100]   };   var alpha = 1;   if (space == "alpha") {      alpha = vals;   }   else if (vals.length) {      // [10, 10, 10]      this.values[space] = vals.slice(0, space.length);      alpha = vals[space.length];   }   else if (vals[space.charAt(0)] !== undefined) {      // {r: 10, g: 10, b: 10}      for (var i = 0; i < space.length; i++) {        this.values[space][i] = vals[space.charAt(i)];      }      alpha = vals.a;   }   else if (vals[spaces[space][0]] !== undefined) {      // {red: 10, green: 10, blue: 10}      var chans = spaces[space];      for (var i = 0; i < space.length; i++) {        this.values[space][i] = vals[chans[i]];      }      alpha = vals.alpha;   }   this.values.alpha = Math.max(0, Math.min(1, (alpha !== undefined ? alpha : this.values.alpha) ));   if (space == "alpha") {      return;   }   // cap values of the space prior converting all values   for (var i = 0; i < space.length; i++) {      var capped = Math.max(0, Math.min(maxes[space][i], this.values[space][i]));      this.values[space][i] = Math.round(capped);   }   // convert to all the other color spaces   for (var sname in spaces) {      if (sname != space) {         this.values[sname] = convert[space][sname](this.values[space])      }      // cap values      for (var i = 0; i < sname.length; i++) {         var capped = Math.max(0, Math.min(maxes[sname][i], this.values[sname][i]));         this.values[sname][i] = Math.round(capped);      }   }   return true;}Color.prototype.setSpace = function(space, args) {   var vals = args[0];   if (vals === undefined) {      // color.rgb()      return this.getValues(space);   }   // color.rgb(10, 10, 10)   if (typeof vals == "number") {      vals = Array.prototype.slice.call(args);   }   this.setValues(space, vals);   return this;}Color.prototype.setChannel = function(space, index, val) {   if (val === undefined) {      // color.red()      return this.values[space][index];   }   // color.red(100)   this.values[space][index] = val;   this.setValues(space, this.values[space]);   return this;}module.exports = Color;},{"color-convert":3,"color-string":5}],7:[function(_dereq_,module,exports){'use strict';var colorjs = _dereq_('color')  , hex = _dereq_('text-hex');/** * Generate a color for a given name. But be reasonably smart about it by * understanding name spaces and coloring each namespace a bit lighter so they * still have the same base color as the root. * * @param {String} name The namespace * @returns {String} color * @api private */module.exports = function colorspace(namespace, delimiter) {  namespace = namespace.split(delimiter || ':');  for (var base = hex(namespace[0]), i = 0, l = namespace.length - 1; i < l; i++) {    base = colorjs(base).mix(colorjs(hex(namespace[i + 1]))).saturate(1).hexString();  }  return base;};},{"color":6,"text-hex":11}],8:[function(_dereq_,module,exports){'use strict';var env = _dereq_('env-variable');/** * Checks if a given namespace is allowed by the environment variables. * * @param {String} name namespace that should be included. * @param {Array} variables * @returns {Boolean} * @api public */module.exports = function enabled(name, variables) {  var envy = env()    , variable    , i = 0;  variables = variables || ['diagnostics', 'debug'];  for (; i < variables.length; i++) {    if ((variable = envy[variables[i]])) break;  }  if (!variable) return false;  variables = variable.split(/[\s,]+/);  i = 0;  for (; i < variables.length; i++) {    variable = variables[i].replace('*', '.*?');    if ('-' === variable.charAt(0)) {      if ((new RegExp('^'+ variable.substr(1) +'$')).test(name)) {        return false;      }      continue;    }    if ((new RegExp('^'+ variable +'$')).test(name)) {      return true;    }  }  return false;};},{"env-variable":9}],9:[function(_dereq_,module,exports){(function (process){'use strict';var has = Object.prototype.hasOwnProperty;/** * Gather environment variables from various locations. * * @param {Object} environment The default environment variables. * @returns {Object} environment. * @api public */function env(environment) {  environment = environment || {};  if ('object' === typeof process && 'object' === typeof process.env) {    env.merge(environment, process.env);  }  if ('undefined' !== typeof window) {    if ('string' === window.name && window.name.length) {      env.merge(environment, env.parse(window.name));    }    if (window.localStorage) {      try { env.merge(environment, env.parse(window.localStorage.env || window.localStorage.debug)); }      catch (e) {}    }    if (         'object' === typeof window.location      && 'string' === typeof window.location.hash      && window.location.hash.length    ) {      env.merge(environment, env.parse(window.location.hash.charAt(0) === '#'        ? window.location.hash.slice(1)        : window.location.hash      ));    }  }  //  // Also add lower case variants to the object for easy access.  //  var key, lower;  for (key in environment) {    lower = key.toLowerCase();    if (!(lower in environment)) {      environment[lower] = environment[key];    }  }  return environment;}/** * A poor man's merge utility. * * @param {Object} base Object where the add object is merged in. * @param {Object} add Object that needs to be added to the base object. * @returns {Object} base * @api private */env.merge = function merge(base, add) {  for (var key in add) {    if (has.call(add, key)) {      base[key] = add[key];    }  }  return base;};/** * A poor man's query string parser. * * @param {String} query The query string that needs to be parsed. * @returns {Object} Key value mapped query string. * @api private */env.parse = function parse(query) {  var parser = /([^=?&]+)=([^&]*)/g    , result = {}    , part;  if (!query) return result;  for (;    part = parser.exec(query);    result[decodeURIComponent(part[1])] = decodeURIComponent(part[2])  );  return result.env || result;};//// Expose the module//module.exports = env;}).call(this,_dereq_('_process'))},{"_process":10}],10:[function(_dereq_,module,exports){// shim for using process in browservar process = module.exports = {};// cached from whatever global is present so that test runners that stub it// don't break things.  But we need to wrap it in a try catch in case it is// wrapped in strict mode code which doesn't define any globals.  It's inside a// function because try/catches deoptimize in certain engines.var cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout() {    throw new Error('setTimeout has not been defined');}function defaultClearTimeout () {    throw new Error('clearTimeout has not been defined');}(function () {    try {        if (typeof setTimeout === 'function') {            cachedSetTimeout = setTimeout;        } else {            cachedSetTimeout = defaultSetTimout;        }    } catch (e) {        cachedSetTimeout = defaultSetTimout;    }    try {        if (typeof clearTimeout === 'function') {            cachedClearTimeout = clearTimeout;        } else {            cachedClearTimeout = defaultClearTimeout;        }    } catch (e) {        cachedClearTimeout = defaultClearTimeout;    }} ())function runTimeout(fun) {    if (cachedSetTimeout === setTimeout) {        //normal enviroments in sane situations        return setTimeout(fun, 0);    }    // if setTimeout wasn't available but was latter defined    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {        cachedSetTimeout = setTimeout;        return setTimeout(fun, 0);    }    try {        // when when somebody has screwed with setTimeout but no I.E. maddness        return cachedSetTimeout(fun, 0);    } catch(e){        try {            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally            return cachedSetTimeout.call(null, fun, 0);        } catch(e){            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error            return cachedSetTimeout.call(this, fun, 0);        }    }}function runClearTimeout(marker) {    if (cachedClearTimeout === clearTimeout) {        //normal enviroments in sane situations        return clearTimeout(marker);    }    // if clearTimeout wasn't available but was latter defined    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {        cachedClearTimeout = clearTimeout;        return clearTimeout(marker);    }    try {        // when when somebody has screwed with setTimeout but no I.E. maddness        return cachedClearTimeout(marker);    } catch (e){        try {            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally            return cachedClearTimeout.call(null, marker);        } catch (e){            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.            // Some versions of I.E. have different rules for clearTimeout vs setTimeout            return cachedClearTimeout.call(this, marker);        }    }}var queue = [];var draining = false;var currentQueue;var queueIndex = -1;function cleanUpNextTick() {    if (!draining || !currentQueue) {        return;    }    draining = false;    if (currentQueue.length) {        queue = currentQueue.concat(queue);    } else {        queueIndex = -1;    }    if (queue.length) {        drainQueue();    }}function drainQueue() {    if (draining) {        return;    }    var timeout = runTimeout(cleanUpNextTick);    draining = true;    var len = queue.length;    while(len) {        currentQueue = queue;        queue = [];        while (++queueIndex < len) {            if (currentQueue) {                currentQueue[queueIndex].run();            }        }        queueIndex = -1;        len = queue.length;    }    currentQueue = null;    draining = false;    runClearTimeout(timeout);}process.nextTick = function (fun) {    var args = new Array(arguments.length - 1);    if (arguments.length > 1) {        for (var i = 1; i < arguments.length; i++) {            args[i - 1] = arguments[i];        }    }    queue.push(new Item(fun, args));    if (queue.length === 1 && !draining) {        runTimeout(drainQueue);    }};// v8 likes predictible objectsfunction Item(fun, array) {    this.fun = fun;    this.array = array;}Item.prototype.run = function () {    this.fun.apply(null, this.array);};process.title = 'browser';process.browser = true;process.env = {};process.argv = [];process.version = ''; // empty string to avoid regexp issuesprocess.versions = {};function noop() {}process.on = noop;process.addListener = noop;process.once = noop;process.off = noop;process.removeListener = noop;process.removeAllListeners = noop;process.emit = noop;process.prependListener = noop;process.prependOnceListener = noop;process.listeners = function (name) { return [] }process.binding = function (name) {    throw new Error('process.binding is not supported');};process.cwd = function () { return '/' };process.chdir = function (dir) {    throw new Error('process.chdir is not supported');};process.umask = function() { return 0; };},{}],11:[function(_dereq_,module,exports){'use strict';/*** * Convert string to hex color. * * @param {String} str Text to hash and convert to hex. * @returns {String} * @api public */module.exports = function hex(str) {  for (    var i = 0, hash = 0;    i < str.length;    hash = str.charCodeAt(i++) + ((hash << 5) - hash)  );  var color = Math.floor(    Math.abs(      (Math.sin(hash) * 10000) % 1 * 16777216    )  ).toString(16);  return '#' + Array(6 - color.length + 1).join('0') + color;};},{}]},{},[1])(1)});
 |