Changeset - 15a0838ef8e4
[Not reviewed]
ennstatus/static/images/btc.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
ennstatus/static/images/eth.png
Show inline comments
 
new file 100644
 
binary diff not shown
Show images
ennstatus/static/images/partners/Logo-Piratepartei2014.png
Show inline comments
 
binary diff not shown
Show images
ennstatus/static/images/partners/flokinet.png
Show inline comments
 
binary diff not shown
Show images
ennstatus/static/images/partners/logo-c3l.png
Show inline comments
 
binary diff not shown
Show images
ennstatus/static/images/partners/torservers.png
Show inline comments
 
binary diff not shown
Show images
ennstatus/static/js/d3/.bower.json
Show inline comments
 
{
 
  "name": "d3",
 
  "description": "A JavaScript visualization library for HTML and SVG.",
 
  "main": "d3.js",
 
  "scripts": [
 
    "d3.js"
 
  ],
 
  "ignore": [
 
    ".DS_Store",
 
    ".git",
 
    ".gitignore",
 
    ".npmignore",
 
    ".spmignore",
 
    ".travis.yml",
 
    "Makefile",
 
    "bin",
 
    "component.json",
 
    "composer.json",
 
    "index.js",
 
    "lib",
 
    "node_modules",
 
    "package.json",
 
    "src",
 
    "test"
 
  ],
 
  "homepage": "https://github.com/mbostock/d3",
 
  "version": "3.5.6",
 
  "_release": "3.5.6",
 
  "license": "BSD-3-Clause",
 
  "ignore": [],
 
  "homepage": "https://github.com/mbostock-bower/d3-bower",
 
  "version": "3.5.17",
 
  "_release": "3.5.17",
 
  "_resolution": {
 
    "type": "version",
 
    "tag": "v3.5.6",
 
    "commit": "0e88ef5aacbc565b7282790c829ea51dd86c978d"
 
    "tag": "v3.5.17",
 
    "commit": "abe0262a205c9f3755c3a757de4dfd1d49f34b24"
 
  },
 
  "_source": "git://github.com/mbostock/d3.git",
 
  "_source": "https://github.com/mbostock-bower/d3-bower.git",
 
  "_target": "~3.5.6",
 
  "_originalSource": "d3",
 
  "_direct": true
 
  "_originalSource": "d3"
 
}
 
\ No newline at end of file
ennstatus/static/js/d3/.gitattributes
Show inline comments
 
deleted file
ennstatus/static/js/d3/CONTRIBUTING.md
Show inline comments
 
deleted file
ennstatus/static/js/d3/LICENSE
Show inline comments
 
Copyright (c) 2010-2015, Michael Bostock
 
Copyright (c) 2010-2016, Michael Bostock
 
All rights reserved.
 

	
 
Redistribution and use in source and binary forms, with or without
 
modification, are permitted provided that the following conditions are met:
 

	
 
* Redistributions of source code must retain the above copyright notice, this
ennstatus/static/js/d3/README.md
Show inline comments
 
# Data-Driven Documents
 

	
 
<a href="http://d3js.org"><img src="http://d3js.org/logo.svg" align="left" hspace="10" vspace="6"></a>
 
<a href="https://d3js.org"><img src="https://d3js.org/logo.svg" align="left" hspace="10" vspace="6"></a>
 

	
 
**D3.js** is a JavaScript library for manipulating documents based on data. **D3** helps you bring data to life using HTML, SVG, and CSS. **D3** emphasizes web standards and combines powerful visualization components with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers without tying yourself to a proprietary framework.
 

	
 
Want to learn more? [See the wiki.](https://github.com/mbostock/d3/wiki)
 

	
 
For examples, [see the gallery](https://github.com/mbostock/d3/wiki/Gallery) and [mbostock’s bl.ocks](http://bl.ocks.org/mbostock).
 

	
 
## Good News, Everyone!
 

	
 
The next major release of D3, 4.0, is coming! See the [4.0 development branch](https://github.com/mbostock/d3/tree/4) and read the [new API reference](https://github.com/mbostock/d3/blob/4/README.md) to get ready.
ennstatus/static/js/d3/bower.json
Show inline comments
 
{
 
  "name": "d3",
 
  "description": "A JavaScript visualization library for HTML and SVG.",
 
  "main": "d3.js",
 
  "scripts": [
 
    "d3.js"
 
  ],
 
  "ignore": [
 
    ".DS_Store",
 
    ".git",
 
    ".gitignore",
 
    ".npmignore",
 
    ".spmignore",
 
    ".travis.yml",
 
    "Makefile",
 
    "bin",
 
    "component.json",
 
    "composer.json",
 
    "index.js",
 
    "lib",
 
    "node_modules",
 
    "package.json",
 
    "src",
 
    "test"
 
  ]
 
  "license": "BSD-3-Clause",
 
  "ignore": []
 
}
ennstatus/static/js/d3/d3.js
Show inline comments
 
!function() {
 
  var d3 = {
 
    version: "3.5.6"
 
    version: "3.5.17"
 
  };
 
  var d3_arraySlice = [].slice, d3_array = function(list) {
 
    return d3_arraySlice.call(list);
 
  };
 
  var d3_document = this.document;
 
  function d3_documentElement(node) {
 
@@ -217,26 +217,26 @@
 
  };
 
  d3.pairs = function(array) {
 
    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
 
    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
 
    return pairs;
 
  };
 
  d3.transpose = function(matrix) {
 
    if (!(n = matrix.length)) return [];
 
    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {
 
      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {
 
        row[j] = matrix[j][i];
 
      }
 
    }
 
    return transpose;
 
  };
 
  function d3_transposeLength(d) {
 
    return d.length;
 
  }
 
  d3.zip = function() {
 
    if (!(n = arguments.length)) return [];
 
    for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
 
      for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
 
        zip[j] = arguments[j][i];
 
      }
 
    }
 
    return zips;
 
  };
 
  function d3_zipLength(d) {
 
    return d.length;
 
  }
 
  d3.transpose = function(matrix) {
 
    return d3.zip.apply(d3, matrix);
 
    return d3.transpose(arguments);
 
  };
 
  d3.keys = function(map) {
 
    var keys = [];
 
    for (var key in map) keys.push(key);
 
    return keys;
 
  };
 
@@ -617,27 +617,25 @@
 
  };
 
  function d3_selection_selectorAll(selector) {
 
    return typeof selector === "function" ? selector : function() {
 
      return d3_selectAll(selector, this);
 
    };
 
  }
 
  var d3_nsXhtml = "http://www.w3.org/1999/xhtml";
 
  var d3_nsPrefix = {
 
    svg: "http://www.w3.org/2000/svg",
 
    xhtml: "http://www.w3.org/1999/xhtml",
 
    xhtml: d3_nsXhtml,
 
    xlink: "http://www.w3.org/1999/xlink",
 
    xml: "http://www.w3.org/XML/1998/namespace",
 
    xmlns: "http://www.w3.org/2000/xmlns/"
 
  };
 
  d3.ns = {
 
    prefix: d3_nsPrefix,
 
    qualify: function(name) {
 
      var i = name.indexOf(":"), prefix = name;
 
      if (i >= 0) {
 
        prefix = name.slice(0, i);
 
        name = name.slice(i + 1);
 
      }
 
      if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
 
      return d3_nsPrefix.hasOwnProperty(prefix) ? {
 
        space: d3_nsPrefix[prefix],
 
        local: name
 
      } : name;
 
    }
 
  };
 
@@ -805,13 +803,13 @@
 
      return this.appendChild(name.apply(this, arguments));
 
    });
 
  };
 
  function d3_selection_creator(name) {
 
    function create() {
 
      var document = this.ownerDocument, namespace = this.namespaceURI;
 
      return namespace ? document.createElementNS(namespace, name) : document.createElement(name);
 
      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);
 
    }
 
    function createNS() {
 
      return this.ownerDocument.createElementNS(name.space, name.local);
 
    }
 
    return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;
 
  }
 
@@ -842,30 +840,32 @@
 
    }
 
    function bind(group, groupData) {
 
      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
 
      if (key) {
 
        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;
 
        for (i = -1; ++i < n; ) {
 
          if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
 
            exitNodes[i] = node;
 
          } else {
 
            nodeByKeyValue.set(keyValue, node);
 
          if (node = group[i]) {
 
            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {
 
              exitNodes[i] = node;
 
            } else {
 
              nodeByKeyValue.set(keyValue, node);
 
            }
 
            keyValues[i] = keyValue;
 
          }
 
          keyValues[i] = keyValue;
 
        }
 
        for (i = -1; ++i < m; ) {
 
          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
 
            enterNodes[i] = d3_selection_dataNode(nodeData);
 
          } else if (node !== true) {
 
            updateNodes[i] = node;
 
            node.__data__ = nodeData;
 
          }
 
          nodeByKeyValue.set(keyValue, true);
 
        }
 
        for (i = -1; ++i < n; ) {
 
          if (nodeByKeyValue.get(keyValues[i]) !== true) {
 
          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {
 
            exitNodes[i] = group[i];
 
          }
 
        }
 
      } else {
 
        for (i = -1; ++i < n0; ) {
 
          node = group[i];
 
@@ -1051,13 +1051,13 @@
 
  d3.selectAll = function(nodes) {
 
    var group;
 
    if (typeof nodes === "string") {
 
      group = d3_array(d3_selectAll(nodes, d3_document));
 
      group.parentNode = d3_document.documentElement;
 
    } else {
 
      group = nodes;
 
      group = d3_array(nodes);
 
      group.parentNode = null;
 
    }
 
    return d3_selection([ group ]);
 
  };
 
  d3_selectionPrototype.on = function(type, listener, capture) {
 
    var n = arguments.length;
 
@@ -1202,13 +1202,13 @@
 
    var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, "touchmove", "touchend");
 
    function drag() {
 
      this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart);
 
    }
 
    function dragstart(id, position, subject, move, end) {
 
      return function() {
 
        var that = this, target = d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);
 
        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = ".drag" + (dragId == null ? "" : "-" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);
 
        if (origin) {
 
          dragOffset = origin.apply(that, arguments);
 
          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];
 
        } else {
 
          dragOffset = [ 0, 0 ];
 
        }
 
@@ -1230,13 +1230,13 @@
 
            dy: dy
 
          });
 
        }
 
        function ended() {
 
          if (!position(parent, dragId)) return;
 
          dragSubject.on(move + dragName, null).on(end + dragName, null);
 
          dragRestore(dragged && d3.event.target === target);
 
          dragRestore(dragged);
 
          dispatch({
 
            type: "dragend"
 
          });
 
        }
 
      };
 
    }
 
@@ -1282,24 +1282,28 @@
 
  }
 
  function d3_haversin(x) {
 
    return (x = Math.sin(x / 2)) * x;
 
  }
 
  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;
 
  d3.interpolateZoom = function(p0, p1) {
 
    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
 
    var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ;
 
    function interpolate(t) {
 
      var s = t * S;
 
      if (dr) {
 
        var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
 
    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;
 
    if (d2 < ε2) {
 
      S = Math.log(w1 / w0) / ρ;
 
      i = function(t) {
 
        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];
 
      };
 
    } else {
 
      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
 
      S = (r1 - r0) / ρ;
 
      i = function(t) {
 
        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
 
        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];
 
      }
 
      return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ];
 
    }
 
    interpolate.duration = S * 1e3;
 
    return interpolate;
 
      };
 
    }
 
    i.duration = S * 1e3;
 
    return i;
 
  };
 
  d3.behavior.zoom = function() {
 
    var view = {
 
      x: 0,
 
      y: 0,
 
      k: 1
 
@@ -1363,14 +1367,15 @@
 
    };
 
    zoom.scale = function(_) {
 
      if (!arguments.length) return view.k;
 
      view = {
 
        x: view.x,
 
        y: view.y,
 
        k: +_
 
        k: null
 
      };
 
      scaleTo(+_);
 
      rescale();
 
      return zoom;
 
    };
 
    zoom.scaleExtent = function(_) {
 
      if (!arguments.length) return scaleExtent;
 
      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];
 
@@ -1463,23 +1468,23 @@
 
    function zoomended(dispatch) {
 
      if (!--zooming) dispatch({
 
        type: "zoomend"
 
      }), center0 = null;
 
    }
 
    function mousedowned() {
 
      var that = this, target = d3.event.target, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);
 
      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);
 
      d3_selection_interrupt.call(that);
 
      zoomstarted(dispatch);
 
      function moved() {
 
        dragged = 1;
 
        translateTo(d3.mouse(that), location0);
 
        zoomed(dispatch);
 
      }
 
      function ended() {
 
        subject.on(mousemove, null).on(mouseup, null);
 
        dragRestore(dragged && d3.event.target === target);
 
        dragRestore(dragged);
 
        zoomended(dispatch);
 
      }
 
    }
 
    function touchstarted() {
 
      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);
 
      started();
 
@@ -1695,15 +1700,14 @@
 
    return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
 
  };
 
  function d3_rgb_hex(v) {
 
    return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
 
  }
 
  function d3_rgb_parse(format, rgb, hsl) {
 
    format = format.toLowerCase();
 
    var r = 0, g = 0, b = 0, m1, m2, color;
 
    m1 = /([a-z]+)\((.*)\)/.exec(format);
 
    m1 = /([a-z]+)\((.*)\)/.exec(format = format.toLowerCase());
 
    if (m1) {
 
      m2 = m1[2].split(",");
 
      switch (m1[1]) {
 
       case "hsl":
 
        {
 
          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
 
@@ -2112,33 +2116,36 @@
 
      return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
 
    }
 
    return dsv;
 
  };
 
  d3.csv = d3.dsv(",", "text/csv");
 
  d3.tsv = d3.dsv("	", "text/tab-separated-values");
 
  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) {
 
  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) {
 
    setTimeout(callback, 17);
 
  };
 
  d3.timer = function(callback, delay, then) {
 
  d3.timer = function() {
 
    d3_timer.apply(this, arguments);
 
  };
 
  function d3_timer(callback, delay, then) {
 
    var n = arguments.length;
 
    if (n < 2) delay = 0;
 
    if (n < 3) then = Date.now();
 
    var time = then + delay, timer = {
 
      c: callback,
 
      t: time,
 
      f: false,
 
      n: null
 
    };
 
    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;
 
    d3_timer_queueTail = timer;
 
    if (!d3_timer_interval) {
 
      d3_timer_timeout = clearTimeout(d3_timer_timeout);
 
      d3_timer_interval = 1;
 
      d3_timer_frame(d3_timer_step);
 
    }
 
  };
 
    return timer;
 
  }
 
  function d3_timer_step() {
 
    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;
 
    if (delay > 24) {
 
      if (isFinite(delay)) {
 
        clearTimeout(d3_timer_timeout);
 
        d3_timer_timeout = setTimeout(d3_timer_step, delay);
 
@@ -2151,28 +2158,27 @@
 
  }
 
  d3.timer.flush = function() {
 
    d3_timer_mark();
 
    d3_timer_sweep();
 
  };
 
  function d3_timer_mark() {
 
    var now = Date.now();
 
    d3_timer_active = d3_timer_queueHead;
 
    while (d3_timer_active) {
 
      if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
 
      d3_timer_active = d3_timer_active.n;
 
    var now = Date.now(), timer = d3_timer_queueHead;
 
    while (timer) {
 
      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;
 
      timer = timer.n;
 
    }
 
    return now;
 
  }
 
  function d3_timer_sweep() {
 
    var t0, t1 = d3_timer_queueHead, time = Infinity;
 
    while (t1) {
 
      if (t1.f) {
 
        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
 
      } else {
 
      if (t1.c) {
 
        if (t1.t < time) time = t1.t;
 
        t1 = (t0 = t1).n;
 
      } else {
 
        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
 
      }
 
    }
 
    d3_timer_queueTail = t0;
 
    return time;
 
  }
 
  function d3_format_precision(x, p) {
 
@@ -2181,13 +2187,13 @@
 
  d3.round = function(x, n) {
 
    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
 
  };
 
  var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
 
  d3.formatPrefix = function(value, precision) {
 
    var i = 0;
 
    if (value) {
 
    if (value = +value) {
 
      if (value < 0) value *= -1;
 
      if (precision) value = d3.round(value, d3_format_precision(value, precision));
 
      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
 
      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));
 
    }
 
    return d3_formatPrefixes[8 + i / 3];
 
@@ -2531,13 +2537,14 @@
 
          L: 0,
 
          Z: null
 
        }, i = d3_time_parse(d, template, string, 0);
 
        if (i != string.length) return null;
 
        if ("p" in d) d.H = d.H % 12 + d.p * 12;
 
        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();
 
        if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) {
 
        if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("W" in d || "U" in d) {
 
          if (!("w" in d)) d.w = "W" in d ? 1 : 0;
 
          date.setFullYear(d.y, 0, 1);
 
          date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
 
        } else date.setFullYear(d.y, d.m, d.d);
 
        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);
 
        return localZ ? date._ : date;
 
      };
 
@@ -3515,13 +3522,13 @@
 
          }
 
        }
 
        if (!j++) break;
 
        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
 
      }
 
    }
 
    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;
 
    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < ) ^ winding & 1;
 
  }
 
  function d3_geo_clipCircle(radius) {
 
    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
 
    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);
 
    function visible(λ, φ) {
 
      return Math.cos(λ) * Math.cos(φ) > cr;
 
@@ -5983,60 +5990,74 @@
 
    c: 0,
 
    d: 1,
 
    e: 0,
 
    f: 0
 
  };
 
  d3.interpolateTransform = d3_interpolateTransform;
 
  function d3_interpolateTransform(a, b) {
 
    var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
 
    if (ta[0] != tb[0] || ta[1] != tb[1]) {
 
      s.push("translate(", null, ",", null, ")");
 
  function d3_interpolateTransformPop(s) {
 
    return s.length ? s.pop() + "," : "";
 
  }
 
  function d3_interpolateTranslate(ta, tb, s, q) {
 
    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {
 
      var i = s.push("translate(", null, ",", null, ")");
 
      q.push({
 
        i: 1,
 
        i: i - 4,
 
        x: d3_interpolateNumber(ta[0], tb[0])
 
      }, {
 
        i: 3,
 
        i: i - 2,
 
        x: d3_interpolateNumber(ta[1], tb[1])
 
      });
 
    } else if (tb[0] || tb[1]) {
 
      s.push("translate(" + tb + ")");
 
    } else {
 
      s.push("");
 
    }
 
    if (ra != rb) {
 
    }
 
  }
 
  function d3_interpolateRotate(ra, rb, s, q) {
 
    if (ra !== rb) {
 
      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
 
      q.push({
 
        i: s.push(s.pop() + "rotate(", null, ")") - 2,
 
        i: s.push(d3_interpolateTransformPop(s) + "rotate(", null, ")") - 2,
 
        x: d3_interpolateNumber(ra, rb)
 
      });
 
    } else if (rb) {
 
      s.push(s.pop() + "rotate(" + rb + ")");
 
    }
 
    if (wa != wb) {
 
      s.push(d3_interpolateTransformPop(s) + "rotate(" + rb + ")");
 
    }
 
  }
 
  function d3_interpolateSkew(wa, wb, s, q) {
 
    if (wa !== wb) {
 
      q.push({
 
        i: s.push(s.pop() + "skewX(", null, ")") - 2,
 
        i: s.push(d3_interpolateTransformPop(s) + "skewX(", null, ")") - 2,
 
        x: d3_interpolateNumber(wa, wb)
 
      });
 
    } else if (wb) {
 
      s.push(s.pop() + "skewX(" + wb + ")");
 
    }
 
    if (ka[0] != kb[0] || ka[1] != kb[1]) {
 
      n = s.push(s.pop() + "scale(", null, ",", null, ")");
 
      s.push(d3_interpolateTransformPop(s) + "skewX(" + wb + ")");
 
    }
 
  }
 
  function d3_interpolateScale(ka, kb, s, q) {
 
    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {
 
      var i = s.push(d3_interpolateTransformPop(s) + "scale(", null, ",", null, ")");
 
      q.push({
 
        i: n - 4,
 
        i: i - 4,
 
        x: d3_interpolateNumber(ka[0], kb[0])
 
      }, {
 
        i: n - 2,
 
        i: i - 2,
 
        x: d3_interpolateNumber(ka[1], kb[1])
 
      });
 
    } else if (kb[0] != 1 || kb[1] != 1) {
 
      s.push(s.pop() + "scale(" + kb + ")");
 
    }
 
    n = q.length;
 
    } else if (kb[0] !== 1 || kb[1] !== 1) {
 
      s.push(d3_interpolateTransformPop(s) + "scale(" + kb + ")");
 
    }
 
  }
 
  function d3_interpolateTransform(a, b) {
 
    var s = [], q = [];
 
    a = d3.transform(a), b = d3.transform(b);
 
    d3_interpolateTranslate(a.translate, b.translate, s, q);
 
    d3_interpolateRotate(a.rotate, b.rotate, s, q);
 
    d3_interpolateSkew(a.skew, b.skew, s, q);
 
    d3_interpolateScale(a.scale, b.scale, s, q);
 
    a = b = null;
 
    return function(t) {
 
      var i = -1, o;
 
      var i = -1, n = q.length, o;
 
      while (++i < n) s[(o = q[i]).i] = o.x(t);
 
      return s.join("");
 
    };
 
  }
 
  function d3_uninterpolateNumber(a, b) {
 
    b = (b -= a = +a) || 1 / b;
 
@@ -6134,13 +6155,13 @@
 
          };
 
        }
 
        groups[di] = {
 
          index: di,
 
          startAngle: x0,
 
          endAngle: x,
 
          value: (x - x0) / k
 
          value: groupSums[di]
 
        };
 
        x += padding;
 
      }
 
      i = -1;
 
      while (++i < n) {
 
        j = i - 1;
 
@@ -6202,13 +6223,13 @@
 
      if (!groups) relayout();
 
      return groups;
 
    };
 
    return chord;
 
  };
 
  d3.layout.force = function() {
 
    var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;
 
    var force = {}, event = d3.dispatch("start", "tick", "end"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;
 
    function repulse(node) {
 
      return function(quad, x1, _, x2) {
 
        if (quad.point !== node) {
 
          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;
 
          if (dw * dw / theta2 < dn) {
 
            if (dn < chargeDistance2) {
 
@@ -6226,12 +6247,13 @@
 
        }
 
        return !quad.charge;
 
      };
 
    }
 
    force.tick = function() {
 
      if ((alpha *= .99) < .005) {
 
        timer = null;
 
        event.end({
 
          type: "end",
 
          alpha: alpha = 0
 
        });
 
        return true;
 
      }
 
@@ -6243,13 +6265,13 @@
 
        x = t.x - s.x;
 
        y = t.y - s.y;
 
        if (l = x * x + y * y) {
 
          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
 
          x *= l;
 
          y *= l;
 
          t.x -= x * (k = s.weight / (t.weight + s.weight));
 
          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);
 
          t.y -= y * k;
 
          s.x += x * (k = 1 - k);
 
          s.y += y * k;
 
        }
 
      }
 
      if (k = alpha * gravity) {
 
@@ -6339,19 +6361,27 @@
 
      return force;
 
    };
 
    force.alpha = function(x) {
 
      if (!arguments.length) return alpha;
 
      x = +x;
 
      if (alpha) {
 
        if (x > 0) alpha = x; else alpha = 0;
 
        if (x > 0) {
 
          alpha = x;
 
        } else {
 
          timer.c = null, timer.t = NaN, timer = null;
 
          event.end({
 
            type: "end",
 
            alpha: alpha = 0
 
          });
 
        }
 
      } else if (x > 0) {
 
        event.start({
 
          type: "start",
 
          alpha: alpha = x
 
        });
 
        d3.timer(force.tick);
 
        timer = d3_timer(force.tick);
 
      }
 
      return force;
 
    };
 
    force.start = function() {
 
      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
 
      for (i = 0; i < n; ++i) {
 
@@ -6599,13 +6629,13 @@
 
  };
 
  d3.layout.pie = function() {
 
    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;
 
    function pie(data) {
 
      var n = data.length, values = data.map(function(d, i) {
 
        return +value.call(pie, d, i);
 
      }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - n * pa) / d3.sum(values), index = d3.range(n), arcs = [], v;
 
      }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;
 
      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
 
        return values[j] - values[i];
 
      } : function(i, j) {
 
        return sort(data[i], data[j]);
 
      });
 
      index.forEach(function(i) {
 
@@ -7312,16 +7342,14 @@
 
        rect.x += v;
 
        rect.dx -= v;
 
      }
 
    }
 
    function treemap(d) {
 
      var nodes = stickies || hierarchy(d), root = nodes[0];
 
      root.x = 0;
 
      root.y = 0;
 
      root.dx = size[0];
 
      root.dy = size[1];
 
      root.x = root.y = 0;
 
      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;
 
      if (stickies) hierarchy.revalue(root);
 
      scale([ root ], root.dx * root.dy / root.value);
 
      (stickies ? stickify : squarify)(root);
 
      if (sticky) stickies = nodes;
 
      return nodes;
 
    }
 
@@ -7535,13 +7563,15 @@
 
    return rescale();
 
  }
 
  function d3_scale_linearRebind(scale, linear) {
 
    return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
 
  }
 
  function d3_scale_linearNice(domain, m) {
 
    return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
 
    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
 
    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
 
    return domain;
 
  }
 
  function d3_scale_linearTickRange(domain, m) {
 
    if (m == null) m = 10;
 
    var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
 
    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
 
    extent[0] = Math.ceil(extent[0] / step) * step;
 
@@ -7637,16 +7667,17 @@
 
      }
 
      return ticks;
 
    };
 
    scale.tickFormat = function(n, format) {
 
      if (!arguments.length) return d3_scale_logFormat;
 
      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format);
 
      var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, 
 
      Math.floor), e;
 
      var k = Math.max(1, base * n / scale.ticks().length);
 
      return function(d) {
 
        return d / pow(f(log(d) + e)) <= k ? format(d) : "";
 
        var i = d / pow(Math.round(log(d)));
 
        if (i * base < base - .5) i *= base;
 
        return i <= k ? format(d) : "";
 
      };
 
    };
 
    scale.copy = function() {
 
      return d3_scale_log(linear.copy(), base, positive, domain);
 
    };
 
    return d3_scale_linearRebind(scale, linear);
 
@@ -7979,27 +8010,32 @@
 
          y2 = r0 * Math.sin(h0);
 
          x3 = y3 = null;
 
        }
 
      } else {
 
        x2 = y2 = 0;
 
      }
 
      if ((rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {
 
      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {
 
        cr = r0 < r1 ^ cw ? 0 : 1;
 
        var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
 
        var rc1 = rc, rc0 = rc;
 
        if (da < π) {
 
          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
 
          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));
 
          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));
 
        }
 
        if (x1 != null) {
 
          var rc1 = Math.min(rc, (r1 - lc) / (kc + 1)), t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);
 
          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);
 
          if (rc === rc1) {
 
            path.push("M", t30[0], "A", rc1, ",", rc1, " 0 0,", cr, " ", t30[1], "A", r1, ",", r1, " 0 ", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), ",", cw, " ", t12[1], "A", rc1, ",", rc1, " 0 0,", cr, " ", t12[0]);
 
          } else {
 
            path.push("M", t30[0], "A", rc1, ",", rc1, " 0 1,", cr, " ", t12[0]);
 
          }
 
        } else {
 
          path.push("M", x0, ",", y0);
 
        }
 
        if (x3 != null) {
 
          var rc0 = Math.min(rc, (r0 - lc) / (kc - 1)), t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);
 
          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);
 
          if (rc === rc0) {
 
            path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t21[1], "A", r0, ",", r0, " 0 ", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), ",", 1 - cw, " ", t03[1], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
 
          } else {
 
            path.push("L", t21[0], "A", rc0, ",", rc0, " 0 0,", cr, " ", t03[0]);
 
          }
 
        } else {
 
@@ -8075,13 +8111,13 @@
 
    return d && d.padAngle;
 
  }
 
  function d3_svg_arcSweep(x0, y0, x1, y1) {
 
    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;
 
  }
 
  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {
 
    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(r * r * d2 - D * D), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;
 
    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;
 
    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
 
    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];
 
  }
 
  function d3_svg_line(projection) {
 
    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
 
    function line(data) {
 
@@ -8147,16 +8183,16 @@
 
  });
 
  d3_svg_lineInterpolators.forEach(function(key, value) {
 
    value.key = key;
 
    value.closed = /-closed$/.test(key);
 
  });
 
  function d3_svg_lineLinear(points) {
 
    return points.join("L");
 
    return points.length > 1 ? points.join("L") : points + "Z";
 
  }
 
  function d3_svg_lineLinearClosed(points) {
 
    return d3_svg_lineLinear(points) + "Z";
 
    return points.join("L") + "Z";
 
  }
 
  function d3_svg_lineStep(points) {
 
    var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
 
    while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]);
 
    if (n > 1) path.push("H", p[0]);
 
    return path.join("");
 
@@ -8172,13 +8208,13 @@
 
    return path.join("");
 
  }
 
  function d3_svg_lineCardinalOpen(points, tension) {
 
    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));
 
  }
 
  function d3_svg_lineCardinalClosed(points, tension) {
 
    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), 
 
    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), 
 
    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
 
  }
 
  function d3_svg_lineCardinal(points, tension) {
 
    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
 
  }
 
  function d3_svg_lineHermite(points, tangents) {
 
@@ -8608,15 +8644,17 @@
 
  d3_selectionPrototype.interrupt = function(name) {
 
    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));
 
  };
 
  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
 
  function d3_selection_interruptNS(ns) {
 
    return function() {
 
      var lock, active;
 
      if ((lock = this[ns]) && (active = lock[lock.active])) {
 
        if (--lock.count) delete lock[lock.active]; else delete this[ns];
 
      var lock, activeId, active;
 
      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {
 
        active.timer.c = null;
 
        active.timer.t = NaN;
 
        if (--lock.count) delete lock[activeId]; else delete this[ns];
 
        lock.active += .5;
 
        active.event && active.event.interrupt.call(this, this.__data__, active.index);
 
      }
 
    };
 
  }
 
  function d3_transition(groups, ns, id) {
 
@@ -8865,68 +8903,81 @@
 
    return name == null ? "__transition__" : "__transition_" + name + "__";
 
  }
 
  function d3_transitionNode(node, i, ns, id, inherit) {
 
    var lock = node[ns] || (node[ns] = {
 
      active: 0,
 
      count: 0
 
    }), transition = lock[id];
 
    }), transition = lock[id], time, timer, duration, ease, tweens;
 
    function schedule(elapsed) {
 
      var delay = transition.delay;
 
      timer.t = delay + time;
 
      if (delay <= elapsed) return start(elapsed - delay);
 
      timer.c = start;
 
    }
 
    function start(elapsed) {
 
      var activeId = lock.active, active = lock[activeId];
 
      if (active) {
 
        active.timer.c = null;
 
        active.timer.t = NaN;
 
        --lock.count;
 
        delete lock[activeId];
 
        active.event && active.event.interrupt.call(node, node.__data__, active.index);
 
      }
 
      for (var cancelId in lock) {
 
        if (+cancelId < id) {
 
          var cancel = lock[cancelId];
 
          cancel.timer.c = null;
 
          cancel.timer.t = NaN;
 
          --lock.count;
 
          delete lock[cancelId];
 
        }
 
      }
 
      timer.c = tick;
 
      d3_timer(function() {
 
        if (timer.c && tick(elapsed || 1)) {
 
          timer.c = null;
 
          timer.t = NaN;
 
        }
 
        return 1;
 
      }, 0, time);
 
      lock.active = id;
 
      transition.event && transition.event.start.call(node, node.__data__, i);
 
      tweens = [];
 
      transition.tween.forEach(function(key, value) {
 
        if (value = value.call(node, node.__data__, i)) {
 
          tweens.push(value);
 
        }
 
      });
 
      ease = transition.ease;
 
      duration = transition.duration;
 
    }
 
    function tick(elapsed) {
 
      var t = elapsed / duration, e = ease(t), n = tweens.length;
 
      while (n > 0) {
 
        tweens[--n].call(node, e);
 
      }
 
      if (t >= 1) {
 
        transition.event && transition.event.end.call(node, node.__data__, i);
 
        if (--lock.count) delete lock[id]; else delete node[ns];
 
        return 1;
 
      }
 
    }
 
    if (!transition) {
 
      var time = inherit.time;
 
      time = inherit.time;
 
      timer = d3_timer(schedule, 0, time);
 
      transition = lock[id] = {
 
        tween: new d3_Map(),
 
        time: time,
 
        timer: timer,
 
        delay: inherit.delay,
 
        duration: inherit.duration,
 
        ease: inherit.ease,
 
        index: i
 
      };
 
      inherit = null;
 
      ++lock.count;
 
      d3.timer(function(elapsed) {
 
        var delay = transition.delay, duration, ease, timer = d3_timer_active, tweened = [];
 
        timer.t = delay + time;
 
        if (delay <= elapsed) return start(elapsed - delay);
 
        timer.c = start;
 
        function start(elapsed) {
 
          if (lock.active > id) return stop();
 
          var active = lock[lock.active];
 
          if (active) {
 
            --lock.count;
 
            delete lock[lock.active];
 
            active.event && active.event.interrupt.call(node, node.__data__, active.index);
 
          }
 
          lock.active = id;
 
          transition.event && transition.event.start.call(node, node.__data__, i);
 
          transition.tween.forEach(function(key, value) {
 
            if (value = value.call(node, node.__data__, i)) {
 
              tweened.push(value);
 
            }
 
          });
 
          ease = transition.ease;
 
          duration = transition.duration;
 
          d3.timer(function() {
 
            timer.c = tick(elapsed || 1) ? d3_true : tick;
 
            return 1;
 
          }, 0, time);
 
        }
 
        function tick(elapsed) {
 
          if (lock.active !== id) return 1;
 
          var t = elapsed / duration, e = ease(t), n = tweened.length;
 
          while (n > 0) {
 
            tweened[--n].call(node, e);
 
          }
 
          if (t >= 1) {
 
            transition.event && transition.event.end.call(node, node.__data__, i);
 
            return stop();
 
          }
 
        }
 
        function stop() {
 
          if (--lock.count) delete lock[id]; else delete node[ns];
 
          return 1;
 
        }
 
      }, 0, time);
 
    }
 
  }
 
  d3.svg.axis = function() {
 
    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;
 
    function axis(g) {
 
      g.each(function() {
 
@@ -8974,13 +9025,13 @@
 
      if (!arguments.length) return orient;
 
      orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
 
      return axis;
 
    };
 
    axis.ticks = function() {
 
      if (!arguments.length) return tickArguments_;
 
      tickArguments_ = arguments;
 
      tickArguments_ = d3_array(arguments);
 
      return axis;
 
    };
 
    axis.tickValues = function(x) {
 
      if (!arguments.length) return tickValues;
 
      tickValues = x;
 
      return axis;
 
@@ -9496,9 +9547,8 @@
 
    range.selectNode(d3_document.body);
 
    return range.createContextualFragment(request.responseText);
 
  }
 
  d3.xml = d3_xhrType(function(request) {
 
    return request.responseXML;
 
  });
 
  if (typeof define === "function" && define.amd) define(d3); else if (typeof module === "object" && module.exports) module.exports = d3;
 
  this.d3 = d3;
 
  if (typeof define === "function" && define.amd) this.d3 = d3, define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; else this.d3 = d3;
 
}();
 
\ No newline at end of file

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)