{"url":"https://api.github.com/gists/3680958","forks_url":"https://api.github.com/gists/3680958/forks","commits_url":"https://api.github.com/gists/3680958/commits","id":"3680958","node_id":"MDQ6R2lzdDM2ODA5NTg=","git_pull_url":"https://gist.github.com/3680958.git","git_push_url":"https://gist.github.com/3680958.git","html_url":"https://gist.github.com/mbostock/3680958","files":{".block":{"filename":".block","type":"text/plain","language":null,"raw_url":"https://gist.githubusercontent.com/mbostock/3680958/raw/703d310b399098a243a76a50bc209167e924cfd2/.block","size":17,"truncated":false,"content":"license: gpl-3.0\n","encoding":"utf-8"},"README.md":{"filename":"README.md","type":"text/markdown","language":"Markdown","raw_url":"https://gist.githubusercontent.com/mbostock/3680958/raw/05d1b0706814b9efccc0be4c4479ae009256125d/README.md","size":255,"truncated":false,"content":"A series of related examples:\n\n* **Canvas geometric zooming**\n* [Canvas semantic zooming](https://bl.ocks.org/mbostock/3681006)\n* [SVG geometric zooming](https://bl.ocks.org/mbostock/3680999)\n* [SVG semantic zooming](https://bl.ocks.org/mbostock/3680957)\n","encoding":"utf-8"},"index.html":{"filename":"index.html","type":"text/html","language":"HTML","raw_url":"https://gist.githubusercontent.com/mbostock/3680958/raw/15cec3ad0b20e3940519cb22a79fdff4ab99c928/index.html","size":1008,"truncated":false,"content":"<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<canvas width=\"960\" height=\"500\"></canvas>\n<script src=\"https://d3js.org/d3.v4.min.js\"></script>\n<script>\n\nvar canvas = d3.select(\"canvas\").call(d3.zoom().scaleExtent([1, 8]).on(\"zoom\", zoom)),\n    context = canvas.node().getContext(\"2d\"),\n    width = canvas.property(\"width\"),\n    height = canvas.property(\"height\");\n\nvar randomX = d3.randomNormal(width / 2, 80),\n    randomY = d3.randomNormal(height / 2, 80),\n    data = d3.range(2000).map(function() { return [randomX(), randomY()]; });\n\ndraw();\n\nfunction zoom() {\n  var transform = d3.event.transform;\n  context.save();\n  context.clearRect(0, 0, width, height);\n  context.translate(transform.x, transform.y);\n  context.scale(transform.k, transform.k);\n  draw();\n  context.restore();\n}\n\nfunction draw() {\n  var i = -1, n = data.length, d;\n  context.beginPath();\n  while (++i < n) {\n    d = data[i];\n    context.moveTo(d[0], d[1]);\n    context.arc(d[0], d[1], 2.5, 0, 2 * Math.PI);\n  }\n  context.fill();\n}\n\n</script>\n","encoding":"utf-8"},"thumbnail.png":{"filename":"thumbnail.png","type":"image/png","language":null,"raw_url":"https://gist.githubusercontent.com/mbostock/3680958/raw/cc58165e29323486c3c3ffd6124fb9e3519a45a8/thumbnail.png","size":12774,"truncated":false,"content":"iVBORw0KGgoAAAANSUhEUgAAAOYAAAB4CAYAAADmBo6IAAAAGXRFWHRTb2Z0\nd2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAMYhJREFUeNrs3Qu8ZXP5P/Cl\nULmnEl0xpJJ0QUxyya3ccm2QGKlE5G6iJCFGMS6hjKhcKkKNUjJyp0kZ5U6l\nJLdccsnEVOu33t//6zn/dfbsvc/e+5wZM7O/n9drzzln77XXWnvPetbzPJ/n\n8zzfecqy/GNRFEtUj+lFRkbGi435qsej81b/vLJ6LJy/j4yM2QbTX5K/g9kP\nd999d7HZZpsV//rXv0Zkf//973+L5557Ln+xcxCyYc6GePWrX1189KMfLV72\nspcV06dPL/70pz8V//vf/3re309/+tNiiy22yF/sHIR5qhzz8ern4vmrmD1x\n1113Fbvvvnvxk5/8pFhkkUV62scTTzxR/P3vfy9WWmml/IXOGXgie8zZAE89\n9VRx1VVXpZCzGd7xjncUCyywQM/7X3zxxbNR5lA2o1vcf//9xRFHHFE8//zz\nM7y26KKLFmuuuWbx0pe+dMj9HH/88cWVV16Zv9BsmBkjAd7sl7/8ZVOvuNRS\nSxVjxowp5plnniH388ILLxT/+c9/2m7zsY99rLj++uvzl55zzIzZCeecc07x\n/ve/v1hmmWXylzEb55jZMOdQVP9vyUNibjPmPsPMoewcihtuuKHYYIMNUjml\nW5xxxhmpBJORc8yMEcaKK66YyJ755puv6/c+++yziUz6+te/Xlx44YVtt0VI\nPfzww/kLz4bZ37j33ns7Uvwstthixbve9a4hyZ5m2GeffYqll1465ZlveMMb\n2m577bXXFh//+Mfzf0w2zP4DD0ZE8Je//KXYbbfdiptuuqmj9332s58tTjvt\ntJ6Pu/XWWxfve9/72m6DKDrzzDPzf1I2zD78T3jJS4rXve51xSte8Yrikksu\nSXXLTrDrrrsWCy644IifD5WRGwU4pze+8Y097wtBdcstt/SUC2fDzOj6Yrvs\nssuSp+sFLvpvf/vbA3+rXx566KHFa1/72mRo884778Bx2oWqCy20UHHuuef2\nfB6tMG3atKTXHQk89NBDxSc/+cni8ccfzxdONsyZi2eeeaY46qijikceeaRl\nXjZhwoRhhZDwhS98oTj77LMHebJvfetbA3+//e1vT8IEBtoLrrvuuqaf4dFH\nH+1I0NAJ3vSmNyW54ZJLLpkvnC6Q65g9gq61lUzOhU04/ta3vrXtPnjDxx57\nrOVFS6onlHzNa16T/r755puTrnbdddcd1rnrVHn66aeL8ePHF1tttVWx6qqr\nzrDNySefnEoqJ5xwQv7PnvXIAoMXC3fccUdx++23F8cdd1wxefLknr3egw8+\nWPzud79LRrzJJpsUCy+8cDF16tRi/fXXb/mev/3tb8Uee+yRSiXzzz9/020e\neOCBlBcKre+7776OPHzGyBlmDmVfJIRHuvTSS5NR/vvf/y7++te/dr0ftUz5\nKoPUFnbrrbemfbfDK1/5yqQcapb38aZ/+MMfile96lWpnCIsP/bYY/N/2KwG\nj1n2OaZNm1ZW4ecsPWYVxqZH4Fe/+lU5evTosvJSHe+j8pTlKqusUj700ENl\n5QXLKgdNz1fGNbDNpEmT0qMRL7zwQrnbbruVX/va1wY9X90gyqWXXro86KCD\n0t9VyJ62zZileDx7zAo///nPix122KHl6zzbuHHjRvSY8tN6jqpeePHFFydG\nVhlE2WQoIJh23HHHlKP++te/Lm688caiMvDin//8Z3qd5+NRm4WrFEN77bVX\nsc4666RpCcLfK664IuXGQmv11FNPPTWF2r2oizKGh3nzV1AUG264YfHe9763\n5evCxPe85z0z9RwYzxJLLJF+33jjjYu3vOUtM2yj9CDcZUAYW4aDHBJuMuqx\nY8cm1najjTYqPvKRjxRf/OIXk7LH34344x//mIgkhme+kLD1Bz/4QQqHgwwa\nNWpU0x7RjBzKzpW45ppryp122in9/vTTT6dHI5599tlBISkIO/fee++y8uCD\nnj/llFPKyy67bODvo446qjz//PNTePvAAw8MhLeVUaff77333nLbbbctr776\n6vK5556b4Th1nHnmmSlcrgw0/8fNwlA2G+ZMglzx8cf//1d73XXXlQcccED6\nnWFdeuml5ZQpU8qFFlqoXH/99Qdte/vtt5eVBy+ffPLJGfLSeg76uc99rrz+\n+uubHp/x1Y21ClHLyusnYz3iiCPKiRMndvQ5GPYxxxxTPvPMM/k/NeeYsyfU\nHeVtFDkgzBNONhsNSe+66aabDkjRhIhR13zzm9+cJhO8/vWvL372s58lMbrQ\nMrDssssW3/nOdwYN38La/uMf/xhQBYFZQD/+8Y+LyvvOcPx77rmn+OEPf5h+\n/973vlccfvjhxeWXX56Oe8ghhxSf+MQnOvrMzlF+3Ws5JyOHsjMdjzzySPI6\nEUoKA4WNwk6eTEjo9y233LK84447BoWc2M2TTjopecGHH364XHvttZP3qjOz\n7VDlf+Waa645w/MPPvhgedtttw0cI0LXq666qtxxxx0H2NtgbFvB63fffXfX\nzHKVx5Z33XVXvjiyx3zxQIFDXkbUzRMiXngfRfj9998/DdTyu7k6PA3PF9DK\n5b28LU0sb0Z5gxXtBJVRN22/MpaSR/zzn/+cPO8aa6yR+iff9ra3Ja9o/KWB\nXptvvnnanmKJuCE0uAceeGBx2GGHJWnf73//+8ToGuiFJcb0dhJFEOFnjCxe\n+uUvf1kd4BX5qxga9KNGeUyaNKk466yzEpsbwGAyDMV7GtbGkR/+VpaIkFBY\nSQiPPV199dUHbav9S1Efa2pYMyP5wAc+UIwePXqG0gcBO+NYeeWVEwO7wgor\nJLkdXa2ey9/85jcp1GaoYJ+f//zni7XWWit9Hiwuo9WjacylNjIidq8ZEu18\nHUNpxudyMwowyNVWWy3J9t797ncPa8RmxiBMy6FsByROle+l8LPOmFb53rD2\nK+ysjCbtq5FsOfvss8sVV1yxrPLO8vjjj0/kULsif2XE5SWXXJIImirnLCtv\nXFbGV8pUbrzxxrRN5VkTE4wEakTlzcv777+/rG4CTQUOlecsjzzyyKYEkHC+\nypPTzzqqG0Bihok3MjIrO1NUQZXnKG+99da2xssYujFWBilnvOWWWwY9v/PO\nO5df+cpXBvLTKrRMhhG48MILk9ExtEDl9crTTz89KXbWXXfdlOt6D0MLVKFu\nucsuuwwYkL8ZPlThbLnJJpuUlfdOr++1117lRRddNPDefffdN+Wp3cD+q4gi\nsc0XXHBBed999+WLKRvmzAVvUPdgPM7GG29cVjla2/fZrl6zZEA81aGHHpoM\nYurUqeVjjz3W1GtNnjy5rHLGcrvttiurcHmgJvnb3/42EUBwzjnnpBIKMqbK\neQcRS+qRVSg68PeXvvSltE2UUn7xi1+UVa6a6qQIrjBanvLoo48e1ve1ww47\npNptRjbMmYoPfvCDTfWnPE+j9rSOb37zm4nFZKBVbp+eo1fdbLPNkqGvscYa\n5Z133pmetx+srXD3Qx/6UFnlr8kjCnXrIeV6662XjIyXrfK8ZOBqpFVOOkg4\nwBsecsgh5Te+8Y20Xw/htIhg++23T6/vvvvuZZXfptcCV1xxRRIiNMJNqFUN\nNSOzsiMKbViV8Qy5XXVxJzZVd4bey8CWW245iBBqBCYXwYKswZzq5NCorJlY\naxVm1PPIGn2aGNyXv/zlqeVKx4htNE4b1QGVF0rbVaFmIpZI9rC0iCZ1Ub2W\nnjPgS80Vq6udC+Fz4oknJvKGDtbzSJ7qBpBqrPUBXdVNKMn1tJYFEETVjaOo\nbgaptpox8uhbw8Q0ujgV7gOdLnWH4aSf1bLFmAJKFe985zvT74y2sa3qM5/5\nTFGFmkk44OJmGIxOT+WUKVOSkfzoRz9KhvvhD384tXDRz1ZeNAkLiAlsR3yO\nXXX+ZgWZmEdbqwSjpMOYsLMmFGBxGaebBoEDo/vud7+b2NVTTjklCekdyz5p\ncKu79Qyf181CKQXD61yIFOhwvc/nGSnQ+9IAZ/SxwECud9hhh83AJtYhf4vi\nfbfQNiVfqwM5JGTUptUOiJ1FF100iRCcH0KoMqpyjz32SIIG4fDyyy9fVkZd\nnnvuuYn8IQ64/PLLB/ZRGXi54IILDggOkEZyWe9DxpD8eW/9mBjdILOQTnXc\ndNNNZeWJy+pGkIgu54XYaff9dQsywpyL5hxzSCBH6ES7AQMZM2ZM6u8MokdO\nGT+VQuo5IhInyJt6/ianDEORCzICOaPShNeXW265RAa5kP084YQTksHWyxjX\nXnttyhltj62VY1ZeO53HpptuWlbeaWD7K6+8MjGzUEUBafs6iNiVjBBUladM\nSiE3jIyZY5h5tEj7aGJAWNAp5JyK+9rEFOSFpeutt17Svvo7IBRV1Lc98YDJ\n6t5DMXTRRRfNMNDLuTgPeSBFD9EBrawQV94qj7Q/+9h2220HBA7EBPJGogNL\nyBNGyGnty5hMiwzF+Qh5hbvCfEoi4Su9L9FEIyiI5MfUQYaTSQOE0EQTzvHJ\nJ59MvaHy33bQxmYsiu8gYwD9MVrEReMC6HZquYu322lxcsJPfepTSaqHZKGi\nOf3005MKJ2BpArmaC9lrDIqsTq4J5vUgeiiA4ubAgIjVGbDc1NhK8rmJEyem\n9yNvGJGcN0T2ZIByz+233z4J0Z0XQ7Xsn5GSV199dXH++eenm4P3uBEwUPti\nvHJaBt1UMlblpr7PAw44oNhvv/2K8847L21LAuinz91qimAdPidjzpgLc0zt\nTUTbrSCs3GCDDVJYN1wIKxXgo6xx8803D/xeDyMrI0hlkMpDDTwv3CRUUN5o\nVoKQI6ob2kY+d9xxx5XVBZ8EBUJktUY5nr+/+tWvJmWPEo08svKe6byixCGc\nls+uuuqqScgQn50Qf9ddd025pvdWhpvGmiibjB8/fpBSR42VAIIgP8QTjUol\n4brST+SyjfBZHDOjD0PZCy64IJUVdOK3CkmVIGg5R2JeqvBNqcI4EmNJsKwW\nl+UteEbnoowgBIw2LR7b+7bZZpvkyehQeTsaW+CxhKM+g5CXR8Oq8ih0qCbb\nrb322om5xOSacmAyge2wubygKQxCTCErj4w99lN4K/QlruedsMV+N3ialxb6\nGp+CNTbFwCAuMEVPCUkUQFsrPD344INTJMATd7LKNS9ND8ybZ/RZKOvCamWU\nEZLq+ujFKCN/qoPonMG4mF14jJLhqwfq3ABli3rvpM4SwnQXs3OpPF4KIdUX\nXeg6UeSmQlQGzbiFivI8Rmx7RibEJJavvG4qzegMceNhTHpDPafHU4eIwdLm\nAAlvb7vttnSOShyMj5ErpQibdcWobzL4GCjt2N7vOOb/LLfccqmDxvn6zLav\nQ23V0oB1uNnYTt4MztUNJmNo5Jk/7W5bTzyRBAOK+tGdwSPJ8RoX8+GNGUC9\nubkOnSGWWPd+Nwh5nBqgOT2K9Yxx5513Tt0kDFAHi5uN+qOLmTflwXhk7+Ft\nkTRuSoyIt/M3j+gYjI8IwrnaD6PinXlKntvfapdED4gi3tP5mzDvBqNOa/Ys\n4yVu2G677dIiRry5PNd73LAYJI+sBiqn9DkHLq7qxmS/yKfIS52PY/rZicfN\nOWbGDKA1pTtVz5TfgSboaDo2AiSkde0gx6pC3pTrkrvpVlGjVH6Qn8r5KiNK\nrxkfqSl6mWWWSaUQ+Z+c0u9LLbVUWYWk5bhx45Jkz/uqiz/lmkoj8sEVVlih\n3GqrrQbpc+lridLpaO+5556Ub6tLqtFW3izVPHWxOIYyCc2sz7vYYoulzye/\njNzSzxCk27fzCSF+u9lBdZAe6jzJyJK8GYCRpKxpB3d0Chr5oZwSMJAxMY/q\nhirGGI9mII8TzvFepqTzLpa0E2bKDY8++uhUnuBR5KQamnkiobFFhkjeeEZL\nIvCq+h552upGkXI/Ch65pbKHRYDknbyiUJO0kIc24iR6Ocn3eDFeHTMsb4yl\nHOS9vC1vaUreMccck8o2wk/7jlXFlHF47MibnW8sfttpqmCfzZZlaAXHE573\nE/q2UZphCqfqUwZaQRirFsmolDBCDysPjJzJGEh1RfK4AMmb8M6cWKGj/dDZ\nImvkkwyKBlVZAtHjRqDux5AQWnJQEjUGIHQ2OcEx9txzzyT/k49a7t0+GLXQ\nkizPzYRcD7GDsEFQOSZDti/hqdxRuaX6/095I2Nx42Cgu+yySzoOgyQRRCqF\n0clxhdckfcJix6XT9Xr9s7eDfLXTbaPc5bsLUqoPMG2uNkwXnHym2cBiBEon\nRllndpEYLvp6HunO72J1sRF71/MmxIv3rbLKKgOTB5Zffvl0XF7ShU14wBCQ\nNjwhr8jwbMfjMd7QsvLAbgpYVUytXNHNRd1QbookkpuKBBiYfap9GsSlDio/\nZagYVfmn4ztvrKvPxhvzgMTvbgJqmgguUwrqUUR9igFjcb6O5zxnBvrMKOd+\nwzzyyCOTNxJG9gqe0GS88DrIj2BbeR1FeeFqlZMlj+NiduG7UJEyLnoGGyAA\nt2oXI0Gi8D5BLPEMtiUQ5zGpb1z0iBgGwnMJeRkO8FYMWJkmVgTz074J7Hk8\nDDJmV8jtM2BjscOmt9vW+XuOoUdYHe9n9G4CZhS5GREN1G9yxpm4MYkihMAx\nC6kXYUbGYMOcq8kfZIsi+XBgCgBSBCGCfKlys/S8CQPVBZu0q8ghBAvhOl2q\n3ko9lFU4OYMO1vs0OhMeEBTccMMNaXoeVHlnEgQYK0KgoOCPeKFTReogiAxf\nNp+WqJ0jRwARttuWaN34EARNFV4m/SsyyeuVEQ0SSQBiZ5tttklie6SWKQjO\nhX63Mtq0/8o4U9M0EcdGG2005PdlP76TViC+GM40A4RTs/Eocxv5M1eXS/Qk\nxrIDvSK8rTCSBxZ2yiuVJPyNcFHeED7yPFFH5EFpT+WLvCTwWuqfHjyQIVjy\nSLVEuSUvppZo9S7e1r55KaWY6LcUcvKmvCRv5T3CZCGs7ZBUQlThMrmc8FQ+\nqp4oT7ZfIgelme9///vJW8ud1WuFzcgtrWXCY96YBxVG8q4Io6GAtGq3NDwy\nS60UedULhP5qwqSEuVwyh4LX0RLVDDyR7pFuR//rDFlppZUGtVhFGUEJpAp7\nUwvVaaedltqs6qNEeKbKcFNble2ULMjljAThRXk5UMaoLu7ksU499dSyMqD0\ne3SD8DjGhOgQMQaEHLEKJVPHSWXUqZxi2vpaa62VJhloIavC2uRReUBeWqeJ\n/YkqeHv7J+EL6Z7ySZVPpv2YhSsK4K0iAvB7s/KIESZkhM3gmCYt+O68t5eW\nMd6yPmFhbvWYc3WOSQZWZxQbyRw5nXxwqLmo8rtQ3bhT8yDKHXVgO3kfORai\nRV7GOyjSEwfYHhkl91RmCeWMY2Nk5a28FHLFuWGN5ZO2QyLJM3lEHtzxeR2N\nyzGOEpkj13McbGxMLfATw2p/XvNeJI38VBTAc/PkShLOH7GjmZoHVhr59Kc/\nnVYM8zxWV9kGyUQNxNPXiaCAUo2cVQ4uXxW1OFcssvxZucl3Y4SnKKMbOF4r\nEUfOMfsMPAAvxMNsvfXWyQvzeHXI4yrDTXNz5LW8o6l0IO/j0eRu5vIYrBUC\nBj2QZgEdfvjhycOZ60Oo7nc53XzzzVeuttpqqUeS8FwUQKROPG8eUBVqpiZo\nuS9v7FzPOOOMJJInauCJndc+++yTptaFt+HV5anEDATwlcEOTOaTr7p3VQaV\nPDLvLM8++eSTUw7MW8pdW4EH59nkpSHw53HrHtI+8noouVF6RFB5jEQC6cqo\nL9gTEGLqAnFhIobCABkVo3Thu+CRN+a9MggGG6MokTLCWwZEkWNWLGXN6quv\nntRCDE44apykG4Qbhe4QKiD71Vxtf36nrqEaogiiVGJQVD1UPpVnTESS/Qqr\nGQzSKsJ64azVwAzpQmIhhJBOiJ0IzQ0jMyKz8qgpNNZFUuW2qRG83k3j9Yxs\nmD2BMViNazjMbXjHAK9qv8BL8RAMQA7IEzEebV2N0j3GgoGtwu/kSU1QkOuZ\nTsBwGR6PxlB51v322y9t78E7VmFoueyyy6bjXHzxxWmspvOQ05nIZzsGc/DB\nByeWWY7J8xpbIn+Mti9envcPb83w3BSivc5xjSghF5S/8vBuXMaDBBi9Y3Yi\nv+PRef6MPpfk1aHTXt2uDsyp3A8wndqdmkENEwMqn1V3lEOC3IywAIi/1UPB\n9AHSN7miQWCY0BgIpplZzhnTCahy5H/yOpMHPLwuN3Q8MjusLEkgpliu6byJ\nIEjoiBJsg83FIPucOkYI0rGwzoUy6aCDDkoN2xhhggSvEaWTAmKD5bOeo17C\n0soXfR7srr/lk2qmWGIMtC4XebK8WQ4ZrHQ7EDGE2D0jd5ckuDAbQXXDWBkO\nsoaxIFAQGQgN5RKlCBcngkfR30XvQrdYkO0ZqQtUqUHbFiNG8CBylFcU/pE2\npH3ECcgUr3uNQehqQXR4v6XfGTBjcxEr/Gsxo4WleUX4KIfYJ5KIighxRBHk\ngkdg+Rz24SYThBFiBxFkyXgjShA/pHqkfl6nFCIf1Bqm88QNwPFMRTC1QFeL\nz07I4Nw9kFZBuNmO5tb+Y4xJM9guo0/KJcOB0C8K8QG5lrzK9IAJEyYM5J3y\nMyUNE8vlZbo3kCXyOnmZ5QK8F5kjPJT/ydGEfdYlEZrKG4W4yCDdGkoYQlAd\nKELUCHvlmY4h5EX2GMTlNQSPY5lghxBC2JiAXhl9Gp6lNDT//PMPlI+Ejc5P\nCUNpRAgrV1QeqZcjfAemw8dUdx0q8kZdKvVySSy8i3zyEBY7N3krIqjdUn1y\nZWWhZvB+YbzvsBP4HJ12ueQccy5DkCQMytRzUAPEbDJUhMuoUaMSi6puaEyk\nuqn8z0rODJI6Rr6oXmmiufySYcYyCJZvV+M0ZpLRI1+CTGJQapaObeqd+6t6\nJWIHW4vciSnpSCJGz8CpeRwPQeN5xFJMlJcDI4vcVLC+cluKH0ZZhxuS/LIZ\nMLDy0VBdUT61Y28DPkerqe6+a/lnPXdtBecqJ3bTyDnmXAqhan14lzwzphPE\n9HVhnzAQDNOiqZWjCX+FwcJJelj7EeJphpavEY7bB8G4+qE8UH5qf9GQLDz2\nGiWNPE1eGdPQtYMJKW0nhBTq6iZxTPldKH+iXkuwL3xWw7QfnSq21eFhol2E\nkvJZLWPCV7ms0F3eafIBBZLPIZ8Uwts2WtrUPCP8p0oC7xXyNi5H2AzqqvUG\n6zqomuh5fWdDQdjve6hPks+h7BwCd1O1u2Z3ZuWOCIPoSJU1AsI9Xo7CRy2y\nfgfHcvKE9XCKWgYwq0JK4LWofAxT5mGjxodBFWZiX4XDmpQxqjysWqSVoZUi\nrDqm9scLVUaZPCXvqKmaFpZH5DmVWZRGhM62s75JZUxpwJcyCA0tz6gUEkoj\ndVolHKomg7B5cKyruinwzPU5spqxzb31uZWQ1CkdLxYjohv2/kZoLhcKN1s4\nKaOPQ1kXvRCyEfJE4WIUvRlNs6X3GK6JcPULywUqzBTmya3kasKv2D7yM2Gj\n8oJaICGBEFOZxc1CDmqyujBVScOx5YrkawxbbdGw5SlTppRLLrlkMrIFFlgg\nGTUpoFIGQyVKF64yMOG0h5xY+ClkZBQhfrdPNxClDnXXPffcM4XS8lfGTiJo\nESI3Hp/HdpF3K8PUF1aSRzLSmP7nM9u3z+9mFs0EjikFsB/bDDWVPpdL+gQm\nywk7G6GdC4MZKz5rgVKyqJdFhLOYVkLy+qAt82ExoEJZEjmiceyp8JQ8zeQA\nMF0A+yqsVdLAopLyCVENy8LOYkuVJoS9wk3yNQwsVlcYinUl9xOqmj5nAoGH\nSQbE4xqbha5CP2yskNk5K29ga5U1NFOTGCq1EKZjVQnXCcuVSITfxPdCTKUa\njLB9my/kM2mqVmqxXQBDazKD+UBARqhlTWmFWF/5yPfgnLDgQmXT/Ij3pQ0Z\nmZXtCe7+QspYl7IOz5kVW18zk4fBNgr5IgT0UzEfsJSUOuFhMLCIHt6P6sd7\nhYKkeoQEiCGv+S8THgttvY5g4hWxsLyc1zG9QlEhKXY4mFhzbu0PeGrhMgg/\neVLnxIPx5EJhBJF9Eglgap0vD+6z8Zba3SideNRGQkhEIfqQIjiXWCaiDl7T\nNo5ZX8szYy5v+xpJIErUFZsB6aHFrN5EjKDhVT14CmJy3tTEOjN9eBPeiYdW\nY+SdeTotX2A6gdof0oVH3HvvvZOnsh1vyptpC1NHJcY3IQ9JRGjPS3ofL69O\nifjhlbR38YAIHecDhOXOQT2UR7dP73HOIgSfiWe1L6SSfWk5E1H4PIQMpioQ\nzCN8NKbH0g72q26q9kvkoA6qHhpNA34ilIgtnId9ZvSZx0Sl99pg687erjZm\nv0F6xPb1nwgPpQ9Cc1I4EjYlFF5FU7T/BvmcHFVuSFxORxulBvmgnA7Gjh2b\nao9qljw1wkbuqM5HVmdfUWOVp5LdIW7sA2HFE0cuyoPKUwnVeVL5d0xzr8P7\nEFfgnHi/xhovKMPQ7srPeW0lIgQTXbH3IYkav0d/I93q0UZGH5E/Ljj9kUFG\ndAOkSKOutd0NADvJUAgBXKjRiYJgYoAmFXgwLLpWDK3QUP1QuMyYhJGAaBK6\nYoKJ4BmbfTIwBoyFZeh+x7gyOuQPFlmHC+II4+t5+ls1UmSVThHPCWedExED\nVjc6TALRAaM2S2yPIFOjbHWD0iOKXMNgM15iiRAfNLvhterrzIbZRx5TvsNz\nKEl0A/lflDYYkItejsfAKW3q632EITMsXmn06NEpZ9QBwrjkVJhbXkr+x0Pa\nlxyRoTBMhmYOrHP2Hs/bD+aXiFz+h5Wl6tEE7T3KO56zbf1BaeTB+LG+GF+5\nKiPyOZwPj+WYto+l+CiDeGXlHbkv4+HV3FyaecsAob7SjTLPULC+iptMZmb7\nOMeMKWvyNOxnNwgxeojbQW6neE9ArjnaPi0nd8YZZ6SRHnJOTC3mUYFeId+g\nLXkXLSmBgLwVeymv1ORM7C1fxbA6puFZ2FqFegJxeSMBvNcIAYzYwMLGytMY\nV8V1LCwGVg7nuFhfIzSJFwgSTFw3CzYmwhuXomEcy2tfzg0TjAHWHG0ftpVv\nym8dV+7sbwx0HZhjeSimWv4od5QPNxvx4jPYh/POyKxsTyB1ixWvGhE1OuGy\nrzRYUH2QPKOcUH0QMJSY2MpYys033zzlh1hN+SHhg5yTdwXexP54XD+NK+Gt\nnnrqqQGmmLflxYSQthGOesSAL+DV5ZJyTeKDymjSvkJ/Kh+MRW95VOenXkrg\nYHu1Uh6WNNB0dvVMq5IJh8H3QkIYzdAhifO7CKWefwvFc3tXDmVHDMJBKpsw\nCrA8nRzJhe4Cjlk+seycUI2xyhOJw4HAmxjABavsIH8kMJf/CVOpexgKsohB\n0N7S4DJW+xGSKoMIbe1fGCvcpRpimLY99thjk4jBDUGJhq6WwQuNlVfsm3EJ\nwZ0vIYOwFggKQsSu1BNN1z67UombEOVQ6HbD2ITunczwoefNzdNDG2bfTGI3\n8p8GVGG/F2hZMkdVWGYuj/KBNi8lDosDmShH16n4H8sJKNwLB4WyNLLKC8JJ\n+lHhnhKI2Tn2pdzhp/0pG9iHkJRelphA2Et4IPS1tILSiCl3ZtTah3KEljNT\n+vRWCiFtp+zivISitKS0vOYWKfoLlYkYHNOxlEWUc/RiEmEQGRBdmCgvZPe3\n70Crl+UAtalNnTo1hcDO03crhK7Dd+6zxXdCyNFuZbaM/zfzp29yTLnUULml\nnkbGUV/9OaDRmPolJqr7aUSlC7HVqlVyPIYqX7N9DM+S4xkT6TU3DPmjC5co\n3ehLOZxzISxnGHojGQJjNsxKTiZHpCKS3xJuywspcwjU3QjklYxPrmd4FmPy\nmnzVzUEOrHGasVm2QV4r32N4VEO+K/VT+bLje915e00ea79W8pK7Es7bVt2V\nsYd43s1ATh9LDXYDtV3nSKmVc8w+h1qePKwbyN/klEoIRjMKPwNyLSWTUL1Q\n1ggr6WWJy6N9TElCvqnOJycVokZdUKkD+0qEHuEwCHGVSoSrFEB0qsJb2ykL\nBYOsLIMFtp3/brmoeqXzFqqqgxqrQsUTfaT1uqSyjHwSSyxsloPS0lI6YZSF\n5OCzRFlEbh3Cfcy0QWVDIWYTBaQGse/MyuZJBh3rNnnWCBGFkthXHg4TK9wV\n3vGYJhHwqpQ2RoUI/3glCh5KHCGiUJKqhjelnIn2Ml6rMqgUJocmFyh9sJ+O\nz/vxSFQ6hiFT5QhjKXmEwHS5xkTy2sJhHo4XotLRnsbr88ZC45NOOilNOQj2\nWuQgUqDeEfIaf8k7GrliDIr9CLuFq9haExCcv3MQ3kc7XCfrYDpPkxMCRqf0\n9SrU2WP2BvpRSh71PQROeEUMJHWPDhMTBngsTcDRgsWj6SxRd8S20qJqy+K1\nTMdDIBmazCOpBfJaOj+QPzwSFhbZ5DhYVV7SfyO2FDHjfLRxIaCQPLy2Omyd\nLeZ5eUFAHNknhpUaKRqjedn4XUcIrx0srGPEOp66YbC1dfbaZw/YxtILGZmV\nnSVw8bcadxGtXsoZjMPYDGFqsJIYUkynkgkIPaOFCtNLNCCk1QspDDROhJBd\nWKhDnwpJWKk8wXiEoQxJSMtQHVNY6obAgITJBATEBAxS6UR5BstLbGCfZHfe\n12xaoBuKEJgsjxhB2Eq1hB1uHBmC0Q121r4ctx6CZ3RmmH05wQAJE+Fit1A0\nF+5qeSIYqLxDCt8aSSQho9ARc6vr32pYiW6bNi2JyJEkQkJtV1quIoQWcgpr\nkVWEBMJJogAMr/YrYS0iBSmE5CGc0FpGBFDldYnMMfzKupqmAiCGtGoJe4Wu\n3i+0RBoJXwnpsbCIJeG1cF6YXofWM8wsIYT9WqEMYYXgaWS5CS8mT56cfo+1\nYzDF3QBJ1Wox4H5BXxqmHCzYw26hz1LnSMDFpw+zDvlWKHX22WefZFgBxmzZ\nBnmhvM1oDgZs9L+czf4YAZaTMTE2ZRH7cxNg4Moa8jElHD2QLnxKHIbFWI0a\nYXR6PRktJlUe66ZiFIoJfs6N4WN2Ga6bhf143Y3GjcL4EH2gbgrOQ5mDYTJs\nDK0lELxXGQecszw5lh20cJG1OSmduoESjH1l5U+fQag5lHBarkcM0Kj28ZyQ\nL/oHva57pFEvqgtEHhh5X51tbOxdpOahRzWBLsQJ8kH6WdvL0WhYhcT6HzGs\nhmUJQ+WIJvdREGFJhZje4/2YTiGxKXnYYuE3UQFlT31JQbAsoNeFwPYjBI7e\nTO/F1noInbGnBBdAwED0IM8OFVQeG5JzzJkGeRSCRu4mtwqDYWT1jghGIF9r\nBvmiTo8QwAcYjQlydSgvIIUYSMBxLWXg/slYGB8BPsNkjHJGpRUEknOgJNKh\noglaecP5I5E8p5k6JsO7ETAszdekeFQ88kUgHbQvx1ZO8dNx3Wx0objhQHTo\nuEG5GcQqYY2wrzo5lJHLJcOCMFLJABTniQuEccojyh9yNOFo0PpCOmUFypaA\n1bOUR4TN0QQsdJTDxdQ34aaRHsQGICcNeE7uJxz1uzCRksi+hKME5oQJGqOp\neZwbUQG1T4gihKTOXXgp9xS+KmEYjyLXVsZxTh5gBIn9aJRWRiFqN+1PqK25\nWwgMoeQR1mrOrkOYLc/0WeS+zQQbGTmUHTZ4yMZGXmWMaF4GA68aPaf1RYgJ\n6uDhiAPqQgEsrNBSWUTxvz7LlRAAa7rIIoskTa3iPpG6Y/NUtK5KJQTntuFR\nhaSEErxZnLcQGJMbYXc0PBvwZe0VJZrGcJ8GVkTAMyvd8LqNnr4ZMLyasOtr\ng2Kg8+peOZTtGXIk5Yv6DBphbCzGqkTCGJRC6rllbC/X0i0S5QIhZV1Z1Gzi\nuAZk4nUqG0OY6ytmOY4cUzcIcTuDk/PpKAlQHClJMHD5r9BUOKthuZ7PCm0Z\ndXR3+BxyW3/H5HmNzY03IZ9TiSU6UAKm3TUuZQ+ar+uqHd+NG0nj0oWdwHs1\nb/dZ3poNsxHqcC50FwQyxp1evU9eB+avRp7F6+iUqHf0I0ZiyFWAocjX5HGx\nWlbkoAgc9UkXfn3QF6+j9cpUAu9HsugIIb0zMZ0Ra2KOnDG8qyZl9U8GTeCg\nzqjO6TMxOJ+pbiCOyeB5acQQT4f0cZxo12IU6qPIpDrcMHTbIJHqrzn3xkZp\n31W7ButWcNNCcLXKYbNh9iGM0aiTMUDJE8bFy7joGycYYD3rhXoXME8mtHPh\nR7+i0I4xUd7wcHVPxeiQJsQBvJyL38XuRkEkEOtbukm4cAkYkDOh7mFMMSYE\n6aMVrB1LHYQXssffhl0Lc8M4HLtZW5e+T94+xBIjDcYsYunFqLNhzqWQYzWO\nvXDBx4VMBdNouKBvse4ZeQsXNS8sl+OxwgMwzmajHQO8sZA0+iUZT8zy0YNJ\nkWOUCeN1I4nw2nNyT16axweGr7RRF6rHxe9m4rxJDRuh1zJyZQ3RFu4NCIPD\ns8pv9XNmZMN8UcEj9XIhChOFtiBnbJSs8XoImbgRmNUTi/UwZJI8z9OhxkQ8\nNwtGw7iEwMJY+2XQsVSBpRkWXnjhAXlgwE3DHKGYeStUlj/Wc+zwlrxvvUk6\nYD6QcLvV4kAZ3RnmPMk6i2LxzE/PGpjrSs6nx1H/o7IE1Q71T8Bc15h8rjfT\nPFsTzhubkKMrQ8eHWUQakvVlKsUoi1AIUe0ohVikSEcJWZ0yDmVQIyh9SBXt\nx/a6RGIy/VBQxtGnGbOVRgpKS7p06pPv+wBPZI/ZBXioZvNq5I71NSXbQbjH\nqzUCy8r7RY8m8MbIprr3aoTcj3fkBTHKwlyhq/A4BAXOjzccKk8Tkir7II4w\nyDxsszAdQ9wtel23UmjtnPrNY+Zl+LoA79ZMw0lcbm2OTmBtEqKDRijq054S\nlOvhtJ0ivr7GxhWvCR6IA8LL6QOloSWKICIgMCAMMO0A9FHyPMcee2yaVkAc\noXezugAG7ZdIggie93YuscRgHbxpvW8yVrYO6M008a8O2/jMelU7aTCgww0Y\nv9KXq01njzl88E4h2WsGpAvWtV0dT70Tu6psYdiV3shWsMRdDISW76kvyj3J\n6XgzdVSeN2qrck5eUP6nX1K+iPWte1Dnrx2NfK8TYJblusok9VqpXsxghuuE\nmXNoZK+bQfubNrecY+Ycc5bA0CwtVyR2rbpWtFCRvQ0FEj7b8yZyQHI5LV5y\nSR0q8lOeNzyebg3eNFbn4tW8pz4DiSfUfrbOOuskmZ0JCLx4faZuHSYfyG95\n94ycY85SUPmYidNpDkW+Vl9+QZlEnbFRxN4KBAdqka2WIGj00thakwWoddp5\nJlI8wZHXAHtKLtgOxO+xMlizCIAwgpB+KO/XqBbKyOWSYcPFq/jfCdQ7Xawx\n/DkuYOFeK2KILpbR1EkkSh8lDe+x/ge1T7MFdKNcY/GhoVQxQl/nFuSLc63r\nWKM+WidnhmqNC+N343GecSOrS+eEuXmsSDbMFw0uYBdqt+oUF7IFfupgZKGv\npbyxCFDUF4GErt6CFswpryw3bQZqnhAZQJynGqdRJ+AGEB6wm89Bfuhz8PJ6\nP7uRzuUVvrJh9gRhbJQc2kEoaUBWs1XEeCcqnVbLKwQMulLYHwpmACmNEBzU\nywi8okcjGHHjCl4M0MAwpRWhM5AWInQYVzOhfSuvGUsFMmY3gE6N2rEMH0NK\nZWTD7AqYS1rWTvI9UrjGi9JFyzCEdEMxksLBViFr5I9kcTwSL6VNrF4PVYOs\nt4sFKIhirivvakIBT8zDOee60QpnGW2nNVmhfq81RswwljpPO8iG2TF4vpEI\ns5AnzdbpULJo5Yl1fzRqWXkzxohIYUiMnChe5wi9bn1Qcivo+GCMYfxuBBaV\nHQ4YVTasmWOYWWDQBKRwCvXDBdGBqQeNMISr8sSpw18ZpQ5Dmq0x0ih3M1HP\nMuleV+ZQDlFeUQoxaWAo7LvvvmmynoFdYEl3UxFM6QuYZuDcOoW1Ugy6zhh5\n5DpmE9x5551p7OJI6z5roo40TV0t0AS9kTqOiXkM1kiRRphkp5ZpQaOAkSFG\nj5iQB6bwUQ1ZV6UT0PBa5IhWdyg4Pm1wt2uT9msdMxvmHAqjKAkBiAACBAIM\nxcjMoWB2j1GZPGh9H0ZNMrT9999/SAE7o3aDYXABc4m8r3FZBMZOOG/piIyh\nDTOHsiOESZMmJQ84s8AbmtMaoS/ljzVJ6uD5OjFKih2raTEWKiCgbxVeM3j6\n207WcGF8daM009aKX7pSGnHggQem4dIZnSFPyRshuEg7WTynVwittXOFIRCo\nNxOZd2KU2r7OOuusQYZtwh+RueXmTULvBWR+JvA1kx3ab0bOMfsmnGVclj5o\npcFthAVqrTJmGQarc+nRNA4zxmdm5FA2Y5iwFJ+lCzRJQ9nQxlWHMBMLrJFa\nGMwoYfz48alFLCOHshk16JNkUHW2tFNYIwUDa7Vna6Dok9Sr2QxCYCWSMMh6\nbjwzQ/CMHMrOkbCYLW+miXk40FxsH7HSVkYOZTNaQCnB0gVCzlYYO3ZsCi1N\nD/BT3tgLrCC2++67tw1n5yRgheeWz9ILsmHOZMM0doRCphWs66GxmchgzJgx\nXYWVLtwwZO+XQ9ZrkjMb1EhC4ZmBgw8+OJWIsmFmjHwCP++8SR1j4dehoPSB\nXe3GsFy4W2yxxYv2+dQ7g3gaaYgkVl555ZxjZjMaPhToeUcDtGYFDLmSWxp0\nZbHajJxjZjSBAnssTzcrIHwlwzP5LiN7zIzZCLSpBiJ3IjCQkxpdSczeTZ6s\nDKM0Myvz1+wxM140XHPNNcXEiROHtQ+5aaeqH4vkmj+r06ObPNKMW/XWjFmH\nbJgvIniidqWUkYYlDCZMmNDxsgdA43riiSf2JIDIyKFsRkYOZTO6w7hx41LX\nxZwM7WHyzYwcys41WHXVVdMU9nbQuKz08fzzz8+WRrnhhhumxuqMWRTKTp8+\n3be9RPWYnr+OmQNqnhgn0gyECAr1O+20U3HeeeclJVCv0rwRv0DmmSfJ48z2\nGTVqVMo1+1kqNwug4fbR/xNgACOrCwUNTjNiAAAAAElFTkSuQmCC\n","encoding":"base64"}},"public":true,"created_at":"2012-09-08T23:22:57Z","updated_at":"2022-10-20T11:58:30Z","description":"Canvas Geometric Zooming","comments":0,"user":null,"comments_enabled":true,"comments_url":"https://api.github.com/gists/3680958/comments","owner":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"fork_of":{"url":"https://api.github.com/gists/3680957","forks_url":"https://api.github.com/gists/3680957/forks","commits_url":"https://api.github.com/gists/3680957/commits","id":"3680957","node_id":"MDQ6R2lzdDM2ODA5NTc=","git_pull_url":"https://gist.github.com/3680957.git","git_push_url":"https://gist.github.com/3680957.git","html_url":"https://gist.github.com/mbostock/3680957","files":{},"public":true,"created_at":"2012-09-08T23:22:52Z","updated_at":"2023-04-16T06:17:14Z","description":"SVG Semantic Zooming","comments":1,"user":null,"comments_enabled":true,"comments_url":"https://api.github.com/gists/3680957/comments","owner":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false}},"forks":[{"url":"https://api.github.com/gists/3681006","user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false,"name":"Mike Bostock","company":"@observablehq ","blog":"https://observablehq.com/@mbostock","location":"San Francisco, CA","email":"mike@ocks.org","hireable":null,"bio":"Building a better computational medium. Co-founder @observablehq. Creator @d3. Former @nytgraphics. Pronounced BOSS-tock.","twitter_username":"mbostock","public_repos":88,"public_gists":1043,"followers":23371,"following":0,"created_at":"2010-03-25T22:02:56Z","updated_at":"2026-04-10T07:01:19Z"},"id":"3681006","created_at":"2012-09-08T23:27:12Z","updated_at":"2017-08-30T13:26:15Z"},{"url":"https://api.github.com/gists/6939014","user":{"login":"eweitnauer","id":53043,"node_id":"MDQ6VXNlcjUzMDQz","avatar_url":"https://avatars.githubusercontent.com/u/53043?v=4","gravatar_id":"","url":"https://api.github.com/users/eweitnauer","html_url":"https://github.com/eweitnauer","followers_url":"https://api.github.com/users/eweitnauer/followers","following_url":"https://api.github.com/users/eweitnauer/following{/other_user}","gists_url":"https://api.github.com/users/eweitnauer/gists{/gist_id}","starred_url":"https://api.github.com/users/eweitnauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eweitnauer/subscriptions","organizations_url":"https://api.github.com/users/eweitnauer/orgs","repos_url":"https://api.github.com/users/eweitnauer/repos","events_url":"https://api.github.com/users/eweitnauer/events{/privacy}","received_events_url":"https://api.github.com/users/eweitnauer/received_events","type":"User","user_view_type":"public","site_admin":false,"name":"Erik Weitnauer","company":null,"blog":"","location":"Bielefeld, Germany","email":"username at gmail dot com","hireable":null,"bio":null,"twitter_username":null,"public_repos":42,"public_gists":25,"followers":93,"following":5,"created_at":"2009-02-09T15:48:03Z","updated_at":"2026-03-06T20:10:38Z"},"id":"6939014","created_at":"2013-10-11T17:46:09Z","updated_at":"2015-12-25T07:28:55Z"},{"url":"https://api.github.com/gists/8792726","user":{"login":"planetbeing","id":7919,"node_id":"MDQ6VXNlcjc5MTk=","avatar_url":"https://avatars.githubusercontent.com/u/7919?v=4","gravatar_id":"","url":"https://api.github.com/users/planetbeing","html_url":"https://github.com/planetbeing","followers_url":"https://api.github.com/users/planetbeing/followers","following_url":"https://api.github.com/users/planetbeing/following{/other_user}","gists_url":"https://api.github.com/users/planetbeing/gists{/gist_id}","starred_url":"https://api.github.com/users/planetbeing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/planetbeing/subscriptions","organizations_url":"https://api.github.com/users/planetbeing/orgs","repos_url":"https://api.github.com/users/planetbeing/repos","events_url":"https://api.github.com/users/planetbeing/events{/privacy}","received_events_url":"https://api.github.com/users/planetbeing/received_events","type":"User","user_view_type":"public","site_admin":false,"name":null,"company":null,"blog":"","location":null,"email":null,"hireable":null,"bio":null,"twitter_username":null,"public_repos":52,"public_gists":7,"followers":857,"following":6,"created_at":"2008-04-19T14:25:09Z","updated_at":"2026-02-05T04:54:29Z"},"id":"8792726","created_at":"2014-02-03T21:25:14Z","updated_at":"2015-08-29T13:56:00Z"},{"url":"https://api.github.com/gists/07fa2b42b3858b752075","user":{"login":"rtsao","id":780408,"node_id":"MDQ6VXNlcjc4MDQwOA==","avatar_url":"https://avatars.githubusercontent.com/u/780408?v=4","gravatar_id":"","url":"https://api.github.com/users/rtsao","html_url":"https://github.com/rtsao","followers_url":"https://api.github.com/users/rtsao/followers","following_url":"https://api.github.com/users/rtsao/following{/other_user}","gists_url":"https://api.github.com/users/rtsao/gists{/gist_id}","starred_url":"https://api.github.com/users/rtsao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtsao/subscriptions","organizations_url":"https://api.github.com/users/rtsao/orgs","repos_url":"https://api.github.com/users/rtsao/repos","events_url":"https://api.github.com/users/rtsao/events{/privacy}","received_events_url":"https://api.github.com/users/rtsao/received_events","type":"User","user_view_type":"public","site_admin":false,"name":"Ryan Tsao","company":null,"blog":"ryantsao.com","location":"San Francisco, USA","email":null,"hireable":null,"bio":"\r\n    Software engineer building web/JS things\r\n","twitter_username":"rtsao","public_repos":230,"public_gists":11,"followers":452,"following":43,"created_at":"2011-05-11T00:39:22Z","updated_at":"2026-04-02T00:51:59Z"},"id":"07fa2b42b3858b752075","created_at":"2014-10-27T22:22:47Z","updated_at":"2015-08-29T14:08:15Z"},{"url":"https://api.github.com/gists/66dcf3e6f3b5204ce9b1d9e15c29098d","user":{"login":"uxcotulat","id":9629180,"node_id":"MDQ6VXNlcjk2MjkxODA=","avatar_url":"https://avatars.githubusercontent.com/u/9629180?v=4","gravatar_id":"","url":"https://api.github.com/users/uxcotulat","html_url":"https://github.com/uxcotulat","followers_url":"https://api.github.com/users/uxcotulat/followers","following_url":"https://api.github.com/users/uxcotulat/following{/other_user}","gists_url":"https://api.github.com/users/uxcotulat/gists{/gist_id}","starred_url":"https://api.github.com/users/uxcotulat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uxcotulat/subscriptions","organizations_url":"https://api.github.com/users/uxcotulat/orgs","repos_url":"https://api.github.com/users/uxcotulat/repos","events_url":"https://api.github.com/users/uxcotulat/events{/privacy}","received_events_url":"https://api.github.com/users/uxcotulat/received_events","type":"User","user_view_type":"public","site_admin":false,"name":null,"company":null,"blog":"","location":null,"email":null,"hireable":null,"bio":null,"twitter_username":null,"public_repos":81,"public_gists":5,"followers":0,"following":0,"created_at":"2014-11-08T18:56:04Z","updated_at":"2021-04-26T04:56:52Z"},"id":"66dcf3e6f3b5204ce9b1d9e15c29098d","created_at":"2016-10-10T08:55:27Z","updated_at":"2016-10-10T08:55:27Z"},{"url":"https://api.github.com/gists/16d34341a50c037e72513b35cbba9e3d","user":{"login":"pkerpedjiev","id":2143629,"node_id":"MDQ6VXNlcjIxNDM2Mjk=","avatar_url":"https://avatars.githubusercontent.com/u/2143629?v=4","gravatar_id":"","url":"https://api.github.com/users/pkerpedjiev","html_url":"https://github.com/pkerpedjiev","followers_url":"https://api.github.com/users/pkerpedjiev/followers","following_url":"https://api.github.com/users/pkerpedjiev/following{/other_user}","gists_url":"https://api.github.com/users/pkerpedjiev/gists{/gist_id}","starred_url":"https://api.github.com/users/pkerpedjiev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkerpedjiev/subscriptions","organizations_url":"https://api.github.com/users/pkerpedjiev/orgs","repos_url":"https://api.github.com/users/pkerpedjiev/repos","events_url":"https://api.github.com/users/pkerpedjiev/events{/privacy}","received_events_url":"https://api.github.com/users/pkerpedjiev/received_events","type":"User","user_view_type":"public","site_admin":false,"name":"Peter Kerpedjiev","company":null,"blog":"http://www.emptypipes.org","location":null,"email":"pkerpedjiev@gmail.com","hireable":null,"bio":null,"twitter_username":null,"public_repos":117,"public_gists":24,"followers":95,"following":19,"created_at":"2012-08-13T09:49:10Z","updated_at":"2026-03-07T17:39:40Z"},"id":"16d34341a50c037e72513b35cbba9e3d","created_at":"2017-05-03T15:51:46Z","updated_at":"2017-05-03T16:03:16Z"}],"history":[{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"98c8758940d2266554edf95cbe0e01f2e4ed3a72","committed_at":"2017-08-30T13:25:20Z","change_status":{"total":6,"additions":3,"deletions":3},"url":"https://api.github.com/gists/3680958/98c8758940d2266554edf95cbe0e01f2e4ed3a72"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"ad41e740fd94889ef6c3102051131284d791a9a7","committed_at":"2017-08-30T13:19:31Z","change_status":{"total":56,"additions":19,"deletions":37},"url":"https://api.github.com/gists/3680958/ad41e740fd94889ef6c3102051131284d791a9a7"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"96fc15e5aeada3578237dca4d3183dc28cf5b67d","committed_at":"2016-02-09T01:33:44Z","change_status":{"total":1,"additions":1,"deletions":0},"url":"https://api.github.com/gists/3680958/96fc15e5aeada3578237dca4d3183dc28cf5b67d"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"f55d1fbc68407efba277b6ccaf1fdcb05e3e3ef3","committed_at":"2015-10-31T00:59:21Z","change_status":{"total":2,"additions":1,"deletions":1},"url":"https://api.github.com/gists/3680958/f55d1fbc68407efba277b6ccaf1fdcb05e3e3ef3"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"522546ae42f4cd3e7d455f6a84367a14a54df89a","committed_at":"2015-06-11T19:36:17Z","change_status":{"total":2,"additions":1,"deletions":1},"url":"https://api.github.com/gists/3680958/522546ae42f4cd3e7d455f6a84367a14a54df89a"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"7762781411ad810bb365b100fb7b2260a85ad8c1","committed_at":"2014-01-29T23:01:58Z","change_status":{"total":2,"additions":1,"deletions":1},"url":"https://api.github.com/gists/3680958/7762781411ad810bb365b100fb7b2260a85ad8c1"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"a12d3d5476b2b0a38a64159b825883fbcb84154b","committed_at":"2012-10-12T03:57:15Z","change_status":{"total":0,"additions":0,"deletions":0},"url":"https://api.github.com/gists/3680958/a12d3d5476b2b0a38a64159b825883fbcb84154b"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"7106dc78a73c3f01e400f3b1fe3bbda9c718aedf","committed_at":"2012-09-08T23:30:56Z","change_status":{"total":6,"additions":6,"deletions":0},"url":"https://api.github.com/gists/3680958/7106dc78a73c3f01e400f3b1fe3bbda9c718aedf"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"a752f4382ca424956a412040dd0c937ce3d360c9","committed_at":"2012-09-08T23:23:13Z","change_status":{"total":34,"additions":20,"deletions":14},"url":"https://api.github.com/gists/3680958/a752f4382ca424956a412040dd0c937ce3d360c9"},{"user":{"login":"mbostock","id":230541,"node_id":"MDQ6VXNlcjIzMDU0MQ==","avatar_url":"https://avatars.githubusercontent.com/u/230541?v=4","gravatar_id":"","url":"https://api.github.com/users/mbostock","html_url":"https://github.com/mbostock","followers_url":"https://api.github.com/users/mbostock/followers","following_url":"https://api.github.com/users/mbostock/following{/other_user}","gists_url":"https://api.github.com/users/mbostock/gists{/gist_id}","starred_url":"https://api.github.com/users/mbostock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbostock/subscriptions","organizations_url":"https://api.github.com/users/mbostock/orgs","repos_url":"https://api.github.com/users/mbostock/repos","events_url":"https://api.github.com/users/mbostock/events{/privacy}","received_events_url":"https://api.github.com/users/mbostock/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"b0fef3e32b3e4bb40d80d9e7263e0306e40f952e","committed_at":"2012-09-08T23:22:52Z","change_status":{"total":51,"additions":51,"deletions":0},"url":"https://api.github.com/gists/3680958/b0fef3e32b3e4bb40d80d9e7263e0306e40f952e"}],"truncated":false}