From 4aaf6ce058d015dcb37563fa6c0df83b6c951b78 Mon Sep 17 00:00:00 2001 From: jakee417 Date: Sat, 15 Jun 2024 12:31:54 -0700 Subject: [PATCH] organize js and img --- .DS_Store | Bin 12292 -> 12292 bytes .vscode/settings.json | 8 +- _config.yml | 2 +- _drafts/2024-06-14-distances.md | 16 + _includes/.DS_Store | Bin 6148 -> 8196 bytes _includes/hamiltonian.py | 125 -- _includes/html/gp.html | 24 + _includes/{ => html}/hamiltonian_0.html | 0 _includes/{ => html}/hamiltonian_1.html | 0 _includes/{ => html}/hamiltonian_value.html | 0 _includes/ising_model.ipynb | 589 ------ _includes/ising_model_speed.ipynb | 1856 ----------------- _includes/ising_model_speed_2.ipynb | 221 -- _includes/ising_model_speed_2.md-e | 122 -- _includes/ising_model_speed_3.ipynb | 206 -- _includes/{ => markdown}/coin_problem.md | 0 _includes/{ => markdown}/ising_model.md | 0 _includes/{ => markdown}/ising_model_speed.md | 0 .../{ => markdown}/ising_model_speed_2.md | 0 .../{ => markdown}/ising_model_speed_3.md | 0 .../{ => markdown}/rent_vs_buy_blog_post.md | 0 _includes/{ => markdown}/tabular.md | 0 _posts/2023-01-04-interval-detector.md | 4 +- .../2023-06-16-my-ios-development_journey.md | 12 +- .../2024-02-04-least-action-least-squares.md | 8 +- _posts/2024-02-13-hamiltonian-mechanics.md | 14 +- _posts/2024-02-14-ising-model_theory.md | 2 +- _posts/2024-02-19-ising-model-computation.md | 4 +- _posts/2024-02-23-raspberry-pi-pico.md | 2 +- _posts/2024-03-04-ising-model-speed.md | 8 +- _posts/2024-03-09-buy-vs-rent.md | 4 +- _posts/2024-03-23-coin-problem.md | 4 +- _posts/2024-04-15-ugm-tabular.md | 4 +- _posts/2024-05-01-theoretical-minimum-1.md | 24 +- _posts/2024-05-30-theoretical-minimum-2.md | 8 +- assets/.DS_Store | Bin 10244 -> 10244 bytes ...2-7DF5-4946-A06D-44375A421438_1_102_o.jpeg | Bin ...9-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg | Bin ...3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg | Bin ...8-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg | Bin assets/img/{ => custom}/B1L1.png | Bin assets/img/{ => custom}/B1L10.png | Bin assets/img/{ => custom}/B1L11.png | Bin assets/img/{ => custom}/B1L2.png | Bin assets/img/{ => custom}/B1L3.png | Bin assets/img/{ => custom}/B1L4.png | Bin assets/img/{ => custom}/B1L5.png | Bin assets/img/{ => custom}/B1L6.png | Bin assets/img/{ => custom}/B1L7.png | Bin assets/img/{ => custom}/B1L8.png | Bin assets/img/{ => custom}/B1L9.png | Bin assets/img/{ => custom}/B2L1.png | Bin assets/img/{ => custom}/B2L2.png | Bin assets/img/{ => custom}/B2L3.png | Bin ...D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg | Bin ...8-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg | Bin ...5-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg | Bin assets/img/{ => custom}/IMG_0020.png | Bin assets/img/{ => custom}/IMG_0021.png | Bin assets/img/{ => custom}/IMG_0022.png | Bin assets/img/{ => custom}/PS3.png | Bin assets/img/{ => custom}/coin_flipping.png | Bin .../img/{ => custom}/hamiltonian.excalidraw | 0 assets/img/{ => custom}/hamiltonian.png | Bin assets/img/{ => custom}/headshot.jpeg | Bin assets/img/{ => custom}/hmc0.png | Bin assets/img/{ => custom}/hmc1.png | Bin assets/img/{ => custom}/image.png | Bin assets/img/{ => custom}/image_2.png | Bin assets/img/{ => custom}/image_3.png | Bin assets/img/{ => custom}/interval_detector.png | Bin assets/img/{ => custom}/ios_apps.excalidraw | 0 assets/img/{ => custom}/ios_apps.png | Bin assets/img/{ => custom}/ising.excalidraw | 0 assets/img/{ => custom}/ising.png | Bin assets/img/{ => custom}/ising_computation.png | Bin .../ising_model_out/ising_model_4_1.png | Bin .../ising_model_out/ising_model_5_0.png | Bin .../ising_model_out/ising_model_5_1.png | Bin assets/img/{ => custom}/ising_speed.png | Bin assets/img/{ => custom}/kernels.png | Bin assets/img/{ => custom}/kl_minimization.png | Bin .../least_squares_action.excalidraw | 0 .../img/{ => custom}/least_squares_action.png | Bin assets/img/{ => custom}/mindmap.png | Bin assets/img/{ => custom}/numpy_financial.png | Bin assets/img/{ => custom}/path_minimization.png | Bin assets/img/{ => custom}/pico.png | Bin assets/img/{ => custom}/ugm.png | Bin assets/js/custom/gp/bundle.js | 2 + assets/js/custom/gp/bundle.js.map | 1 + 91 files changed, 100 insertions(+), 3170 deletions(-) create mode 100644 _drafts/2024-06-14-distances.md delete mode 100644 _includes/hamiltonian.py create mode 100755 _includes/html/gp.html rename _includes/{ => html}/hamiltonian_0.html (100%) rename _includes/{ => html}/hamiltonian_1.html (100%) rename _includes/{ => html}/hamiltonian_value.html (100%) delete mode 100644 _includes/ising_model.ipynb delete mode 100644 _includes/ising_model_speed.ipynb delete mode 100644 _includes/ising_model_speed_2.ipynb delete mode 100644 _includes/ising_model_speed_2.md-e delete mode 100644 _includes/ising_model_speed_3.ipynb rename _includes/{ => markdown}/coin_problem.md (100%) rename _includes/{ => markdown}/ising_model.md (100%) rename _includes/{ => markdown}/ising_model_speed.md (100%) rename _includes/{ => markdown}/ising_model_speed_2.md (100%) rename _includes/{ => markdown}/ising_model_speed_3.md (100%) rename _includes/{ => markdown}/rent_vs_buy_blog_post.md (100%) rename _includes/{ => markdown}/tabular.md (100%) rename assets/img/{ => custom}/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg (100%) rename assets/img/{ => custom}/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg (100%) rename assets/img/{ => custom}/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg (100%) rename assets/img/{ => custom}/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg (100%) rename assets/img/{ => custom}/B1L1.png (100%) rename assets/img/{ => custom}/B1L10.png (100%) rename assets/img/{ => custom}/B1L11.png (100%) rename assets/img/{ => custom}/B1L2.png (100%) rename assets/img/{ => custom}/B1L3.png (100%) rename assets/img/{ => custom}/B1L4.png (100%) rename assets/img/{ => custom}/B1L5.png (100%) rename assets/img/{ => custom}/B1L6.png (100%) rename assets/img/{ => custom}/B1L7.png (100%) rename assets/img/{ => custom}/B1L8.png (100%) rename assets/img/{ => custom}/B1L9.png (100%) rename assets/img/{ => custom}/B2L1.png (100%) rename assets/img/{ => custom}/B2L2.png (100%) rename assets/img/{ => custom}/B2L3.png (100%) rename assets/img/{ => custom}/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg (100%) rename assets/img/{ => custom}/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg (100%) rename assets/img/{ => custom}/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg (100%) rename assets/img/{ => custom}/IMG_0020.png (100%) rename assets/img/{ => custom}/IMG_0021.png (100%) rename assets/img/{ => custom}/IMG_0022.png (100%) rename assets/img/{ => custom}/PS3.png (100%) rename assets/img/{ => custom}/coin_flipping.png (100%) rename assets/img/{ => custom}/hamiltonian.excalidraw (100%) rename assets/img/{ => custom}/hamiltonian.png (100%) rename assets/img/{ => custom}/headshot.jpeg (100%) rename assets/img/{ => custom}/hmc0.png (100%) rename assets/img/{ => custom}/hmc1.png (100%) rename assets/img/{ => custom}/image.png (100%) rename assets/img/{ => custom}/image_2.png (100%) rename assets/img/{ => custom}/image_3.png (100%) rename assets/img/{ => custom}/interval_detector.png (100%) rename assets/img/{ => custom}/ios_apps.excalidraw (100%) rename assets/img/{ => custom}/ios_apps.png (100%) rename assets/img/{ => custom}/ising.excalidraw (100%) rename assets/img/{ => custom}/ising.png (100%) rename assets/img/{ => custom}/ising_computation.png (100%) rename assets/img/{ => custom}/ising_model_out/ising_model_4_1.png (100%) rename assets/img/{ => custom}/ising_model_out/ising_model_5_0.png (100%) rename assets/img/{ => custom}/ising_model_out/ising_model_5_1.png (100%) rename assets/img/{ => custom}/ising_speed.png (100%) rename assets/img/{ => custom}/kernels.png (100%) rename assets/img/{ => custom}/kl_minimization.png (100%) rename assets/img/{ => custom}/least_squares_action.excalidraw (100%) rename assets/img/{ => custom}/least_squares_action.png (100%) rename assets/img/{ => custom}/mindmap.png (100%) rename assets/img/{ => custom}/numpy_financial.png (100%) rename assets/img/{ => custom}/path_minimization.png (100%) rename assets/img/{ => custom}/pico.png (100%) rename assets/img/{ => custom}/ugm.png (100%) create mode 100644 assets/js/custom/gp/bundle.js create mode 100644 assets/js/custom/gp/bundle.js.map diff --git a/.DS_Store b/.DS_Store index ad8533e6ea460bac211d118bae5c26cd597fc6bf..f48da791e79959ce13470e3d35fa55d85e4cf542 100644 GIT binary patch delta 679 zcmZokXh~3DU|?W$DortDV9)?EIe-{M3-B;7uy8RjC~$97;AGj%s>;MXS)2WcB0EDo zLkdF?Ln1>OLkUB1PP$=maz4liAO->s?#+T4;w+ohd7dyc>TeccnangS#Q9&3O@w1bQQ0yGuK4qOioC$IxBR3V&+ zTU9{@AHuaDyTFmdr1FAY=`th=(8FD2+5wO{HW0xIB7n(>8%Ve!C#lVX9PgPY^UJ)N NoT<`?(qN|wp7 zqH-{1qv*=|VunnH5{A^Abi?4}{M-VNQ&_C_$pI-=hIj_3EV4_MiOfA$#(c~XT}2Aq zt=Lr*WFXn#oB-4gvSG8PST-Ybo1FjT>EfwOy%Q$?6W`0iG;N~O}k^S{RJ*6v`5$rD{d4#X9$s_xTIp)IVW(8+P76wM&ca!y$ uk@VLk2?$LoP#3Qh9MfQcivnQ0I=Mf}G6a5(9&4j7-cdtZeKY>>S)2 zvB4Sn<-sM1C8fnqiAB*MUPyj^P7;irm=ucQViA`43?-b;^5@qj2Doot~RqU*HJJuHmKE6sJ1jR&`~fkGpViR2HZnA>4w3{`MCvPNtF;_=pf{B^IcrPo~;Ll zmwl|5AUpptM^ptV5Cu5o3o?)m2ipO+xGcCRFDE}Q9cUiNp&Y=_O=Kuy$Yw}k$Y&^L z$U}BmJ!8-H^Vk%@T?jNlc$J+X7sP=WhUMlX9EwjJvV$3W4S-fMa55AyOm1c8pDe}x zc4GqvlOQul6qtCpfrKk40c{rK_|80;U&M2=KMw~7&@-U4#V|RZXZqwuc43GGba+|dT?lLX@ uFT%K(or6P=8K?>f1h|2OD@en}!tczJ`DHvo+8LN2MuALc*c{I@hZz77 + + + + + + + + +
+ +
+
+ +
+ A bivariate normal distribution in the center. + On the left you can see the result of marginalizing this distribution for Y, akin to integrating along the X axis. + On the right you can see the distribution conditioned on a given X, which is similar to a cut through the original + distribution. The Gaussian distribution and the conditioned variable can be changed by dragging the handles. +
+
+ + + \ No newline at end of file diff --git a/_includes/hamiltonian_0.html b/_includes/html/hamiltonian_0.html similarity index 100% rename from _includes/hamiltonian_0.html rename to _includes/html/hamiltonian_0.html diff --git a/_includes/hamiltonian_1.html b/_includes/html/hamiltonian_1.html similarity index 100% rename from _includes/hamiltonian_1.html rename to _includes/html/hamiltonian_1.html diff --git a/_includes/hamiltonian_value.html b/_includes/html/hamiltonian_value.html similarity index 100% rename from _includes/hamiltonian_value.html rename to _includes/html/hamiltonian_value.html diff --git a/_includes/ising_model.ipynb b/_includes/ising_model.ipynb deleted file mode 100644 index 0c54056374b..00000000000 --- a/_includes/ising_model.ipynb +++ /dev/null @@ -1,589 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ising Model Code\n", - "Code inspired by [this post](https://jakevdp.github.io/blog/2017/12/11/live-coding-cython-ising-model/) by [@Jake VanderPlas](https://github.com/jakevdp) which compares Python against cPython." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import plotly.express as px\n", - "import plotly.graph_objects as go\n", - "from IPython.display import display, Markdown\n", - "from typing import List\n", - "\n", - "np.random.seed(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### MCMC Implementations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Below I copy+pasted the functions directly from [@Jake VanderPlas](https://github.com/jakevdp) blog post. Looking back to the update equations for MH, MCMC:\n", - "\n", - "$$\n", - "A(x' | x) = \\min{\\big[ 1, \\exp{-2\\beta x_n \\sum_m J_{n,m} x_m + h} \\big ]}\n", - "$$\n", - "\n", - "We recognize the original blog post's update as a MH, MCMC step." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Functions from Jake VanderPlas's blog post.\n", - "def random_spin_field(N, M):\n", - " return np.random.choice([-1, 1], size=(N, M))\n", - "\n", - "\n", - "# Add an `update_fn` arg.\n", - "def ising_step(field, update_fn, beta=0.4):\n", - " N, M = field.shape\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, N, 2):\n", - " for m in range(m_offset, M, 2):\n", - " update_fn(field, n, m, beta)\n", - " return field\n", - "\n", - "\n", - "def _ising_update(field, n, m, beta):\n", - " total = 0\n", - " N, M = field.shape\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[n, m] *= -1\n", - " elif np.exp(-dE * beta) > np.random.rand():\n", - " field[n, m] *= -1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also add in the Gibbs Sampling step:\n", - "\n", - "$$\n", - "P(x_n = 1 | \\{x_i\\}_{i \\neq n}) = \\sigma(2\\beta\\sum_{m}J_{n, m}x_m + h)\n", - "$$" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Also make a random stepping Ising update.\n", - "def sigmoid(x: float) -> float:\n", - " # 700 seems to be the magic number where numpy will overflow.\n", - " # In this case, analytically handle the probability\n", - " if -x > 700:\n", - " return 0.0\n", - " return float(1 / (1 + np.exp(-x)))\n", - "\n", - "\n", - "def _ising_update_gibbs(field: np.ndarray, n: int, m: int, beta: float) -> None:\n", - " total = 0\n", - " N, M = field.shape\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " dE = 2 * beta * total\n", - " if sigmoid(dE) > np.random.rand():\n", - " field[n, m] = 1\n", - " else:\n", - " field[n, m] = -1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plotting Helpers\n", - "A couple helper functions so that we can plot to markdown." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plotting helper functions.\n", - "def render_plotly_html(fig: go.Figure) -> None:\n", - " \"\"\"Display a Plotly figure in markdown with HTML.\"\"\"\n", - " # Ensure frame is square\n", - " display(\n", - " Markdown(\n", - " fig.to_html(\n", - " include_plotlyjs=\"cdn\",\n", - " )\n", - " )\n", - " )\n", - "\n", - "\n", - "def _grid_to_long(grid: np.ndarray) -> np.ndarray:\n", - " \"\"\"Convert a N x M matrix into a (N x M, 2) long vector.\"\"\"\n", - " # x coordinate, y coordinate, spin of the coordinate.\n", - " return np.vstack(\n", - " [*map(lambda x: x.flatten(), np.indices(grid.shape)), grid.flatten()]\n", - " ).T\n", - "\n", - "\n", - "def grids_to_long(grids: List[np.ndarray]) -> pd.DataFrame:\n", - " \"\"\"Convert a n-list of grid matrices into a long-format DataFrame.\n", - "\n", - " Args:\n", - " grids: List of grid matrices ordered by time.\n", - "\n", - " Returns:\n", - " DataFrame with each N x M matrix converted to a (N x M, 2) section.\n", - " Each section is indexed by the order in `grids`.\n", - " \"\"\"\n", - " t = np.array([[i] * np.prod(grid.shape) for i, grid in enumerate(grids)])\n", - " df = pd.DataFrame(np.concatenate([_grid_to_long(i) for i in grids]))\n", - " df[\"t\"] = t.flatten()\n", - " df.columns = [\"x\", \"y\", \"spin\", \"t\"]\n", - " return df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Sampling\n", - "Now we can sample both MH MCMC and Gibbs Sampling and compare the results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "N, M = 40, 40\n", - "STEPS = 500\n", - "BETA = 0.25\n", - "# Start from the same random initial configuration.\n", - "images = [random_spin_field(N, M)]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mh_images = images.copy()\n", - "for i in range(STEPS):\n", - " mh_images.append(ising_step(mh_images[-1].copy(), beta=BETA, update_fn=_ising_update))\n", - "mh_steps = grids_to_long(mh_images)\n", - "mh_steps[\"sampler\"] = \"MH\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gibbs_images = images.copy()\n", - "for i in range(STEPS):\n", - " gibbs_images.append(ising_step(gibbs_images[-1].copy(), beta=BETA, update_fn=_ising_update_gibbs))\n", - "gibbs_steps = grids_to_long(gibbs_images)\n", - "gibbs_steps[\"sampler\"] = \"Gibbs\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Plots" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot the simulation as a time lapse in Plotly.\n", - "fig = px.scatter(\n", - " mh_steps,\n", - " x=\"x\",\n", - " y=\"y\",\n", - " color=\"spin\",\n", - " color_continuous_scale=\"thermal\",\n", - " animation_frame=\"t\",\n", - " hover_name=\"t\",\n", - ")\n", - "fig.update(layout_coloraxis_showscale=False)\n", - "# Ensure frame is square\n", - "fig.update_yaxes(\n", - " scaleanchor=\"x\",\n", - " scaleratio=1,\n", - ")\n", - "render_plotly_html(fig)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Plot the simulation as a time lapse in Plotly.\n", - "fig = px.scatter(\n", - " gibbs_steps,\n", - " x=\"x\",\n", - " y=\"y\",\n", - " color=\"spin\",\n", - " color_continuous_scale=\"thermal\",\n", - " animation_frame=\"t\",\n", - " hover_name=\"t\",\n", - ")\n", - "fig.update(layout_coloraxis_showscale=False)\n", - "# Ensure frame is square\n", - "fig.update_yaxes(\n", - " scaleanchor=\"x\",\n", - " scaleratio=1,\n", - ")\n", - "render_plotly_html(fig)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Magnetism\n", - "For magnetism, we are interested in:\n", - "\n", - "$$\n", - "m = \\frac{1}{N}\\sum_n x_n\n", - "$$\n", - "\n", - "This is simply a `groupby` on our datasets." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "average_magnetism = (\n", - " pd.concat([mh_steps, gibbs_steps])\n", - " .groupby([\"sampler\", \"t\"])\n", - " .spin.mean()\n", - " .reset_index()\n", - ")\n", - "\n", - "magnetism = px.line(\n", - " average_magnetism, x=\"t\", y=\"spin\", color=\"sampler\", title=\"Average Magnetism\"\n", - ")\n", - "render_plotly_html(magnetism)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "magnetism.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "magnetism_hist = px.histogram(\n", - " average_magnetism, x=\"spin\", color=\"sampler\", title=\"Average Magnetism Distribution\", opacity=0.7\n", - ")\n", - "render_plotly_html(magnetism_hist)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "magnetism_hist.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "magnetism_std = px.line(\n", - " pd.concat([mh_steps, gibbs_steps])\n", - " .groupby([\"sampler\", \"t\"])\n", - " .spin.std()\n", - " .reset_index(),\n", - " x=\"t\",\n", - " y=\"spin\",\n", - " color=\"sampler\",\n", - " title=\"Magnetism Std Dev\"\n", - ")\n", - "render_plotly_html(magnetism_std)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "magnetism_std.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The average magnetism and std dev of magnetism are comparable, with Gibbs Sampling having slower convergence." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Energy\n", - "Recalling our Hamiltonian from the Ising Model from before:\n", - "\n", - "$$\n", - "H(x; J, h) = -\\frac{1}{2}\\sum_{n, m}J_{n, m}x_nx_m - \\sum_n h x_n\n", - "$$\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def energy(field: np.ndarray) -> np.ndarray:\n", - " N, M = field.shape\n", - " energies = np.zeros_like(field)\n", - " for n in range(N):\n", - " for m in range(M):\n", - " energy_position(energies, field, n, m)\n", - " return energies\n", - "\n", - "\n", - "def energy_position(energies: np.ndarray, field: np.ndarray, n: int, m: int) -> None:\n", - " total = 0\n", - " N, M = field.shape\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[n, m] * field[i % N, j % M]\n", - " energies[n, m] = -0.5 * total" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "mh_energies = np.array(list(map(energy, mh_images)))\n", - "gibbs_energies = np.array(list(map(energy, gibbs_images)))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t = list(range(len(mh_images)))\n", - "energies = pd.DataFrame(\n", - " {\n", - " \"t\": t + t,\n", - " \"sampler\": [\"MH\"] * len(mh_images) + [\"Gibbs\"] * len(gibbs_images),\n", - " \"energy\": np.vstack(\n", - " [mh_energies.mean((1, 2)), gibbs_energies.mean((1, 2))]\n", - " ).flatten(),\n", - " \"std_energy\": np.vstack(\n", - " [mh_energies.std((1, 2)), gibbs_energies.std((1, 2))]\n", - " ).flatten(),\n", - " }\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energies_fig = px.line(\n", - " energies,\n", - " x=\"t\",\n", - " y=\"energy\",\n", - " color=\"sampler\",\n", - " title=\"Average Energy\"\n", - ")\n", - "render_plotly_html(energies_fig)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energies_fig.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energy_hist = px.histogram(\n", - " energies, x=\"energy\", color=\"sampler\", title=\"Average Energy Distribution\", opacity=0.7\n", - ")\n", - "render_plotly_html(energy_hist)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energy_hist.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energies_std = px.line(\n", - " energies, x=\"t\", y=\"std_energy\", color=\"sampler\", title=\"Std Dev Energy\"\n", - ")\n", - "render_plotly_html(energies_std)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "energies_std.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Energy is also pretty comparable, again, with Gibbs having slower convergence." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Summary\n", - "Instead of evaluating the partition function $Z_\\beta$ directly, we can estimate some of the statistical properties with MCMC samples. Its interesting to me that despite the MH and Gibbs simulations looking quite different the average and variability of the energy and magnetism seem to converge to the same value. This indicates that both MH and Gibbs are sampling from the same long term distribution." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# A little magic to automatically write my blog :)\n", - "import subprocess\n", - "\n", - "subprocess.run([\"jupyter\", \"nbconvert\", \"--to\", \"markdown\", \"ising_model.ipynb\"])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/_includes/ising_model_speed.ipynb b/_includes/ising_model_speed.ipynb deleted file mode 100644 index efc6a090679..00000000000 --- a/_includes/ising_model_speed.ipynb +++ /dev/null @@ -1,1856 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python ~ 140ms\n", - "Without changing [@Jake VanderPlas](https://github.com/jakevdp)'s code, lets rerun a vanilla Python for-loop and see how this speed compares with the speed from 2017 in the [original blogpost](https://jakevdp.github.io/blog/2017/12/11/live-coding-cython-ising-model/)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import plotly.express as px\n", - "import plotly.graph_objects as go\n", - "from IPython.display import display, Markdown\n", - "\n", - "np.random.seed(1)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Plotting helper functions.\n", - "def render_plotly_html(fig: go.Figure) -> None:\n", - " \"\"\"Display a Plotly figure in markdown with HTML.\"\"\"\n", - " # Ensure frame is square\n", - " display(\n", - " Markdown(\n", - " fig.to_html(\n", - " include_plotlyjs=\"cdn\",\n", - " )\n", - " )\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Functions from Jake VanderPlas's blog post.\n", - "def random_spin_field(N, M):\n", - " return np.random.choice([-1, 1], size=(N, M))\n", - "\n", - "\n", - "# Add an `update_fn` arg.\n", - "def ising_step(field, beta=0.4):\n", - " N, M = field.shape\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, N, 2):\n", - " for m in range(m_offset, M, 2):\n", - " _ising_update(field, n, m, beta)\n", - " return field\n", - "\n", - "\n", - "def _ising_update(field, n, m, beta):\n", - " total = 0\n", - " N, M = field.shape\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[n, m] *= -1\n", - " elif np.exp(-dE * beta) > np.random.rand():\n", - " field[n, m] *= -1" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "N, M = 200, 200\n", - "field = random_spin_field(N, M)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "140 ms ± 1.74 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%timeit ising_step(field)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It appears Python has some (2x) inherent speedup over time." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Unrolling For-Loops\n", - "For small for-loops (like iterating over the neighbors in `_ising_update`), we can use a trick called [unrolling the for-loop](https://en.wikipedia.org/wiki/Loop_unrolling). Basically, we rewrite the for-loop as an explicit calculation. I have seen this used successively in Micropython as well. In Mojo, there is even a [for-loop decorator](https://docs.modular.com/mojo/manual/decorators/unroll) for this. For what follows, we can achieve a 10-20% speedup by rewriting the two most inner for-loops:\n", - "\n", - "```python\n", - "for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " ...\n", - "```\n", - "With the unrolled version:\n", - "```python\n", - "dE = (\n", - " 2\n", - " * field[n, m]\n", - " # Unrolled for-loop over 8 neighbors.\n", - " * (\n", - " field[(n - 1) % N, (m - 1) % M]\n", - " + field[(n - 1) % N, m]\n", - " + field[(n - 1) % N, (m + 1) % M]\n", - " + field[n, (m - 1) % M]\n", - " + field[n, (m + 1) % M]\n", - " + field[(n + 1) % N, (m - 1) % M]\n", - " + field[(n + 1) % N, m]\n", - " + field[(n + 1) % N, (m + 1) % M]\n", - " )\n", - ")\n", - "```\n", - "> For the fun of it, I will stick with the \"rolled\" version to keep comparisons fair and the blog a little shorter. If you are interested in squeezing out every ms of speed, I recommend unrolling as many small loops as possible.\n", - "{: .prompt-info }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cython ~ 580 µs\n", - "And similarly, for the Cython code from the original blog." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext Cython" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "%%cython\n", - "\n", - "cimport cython\n", - "\n", - "import numpy as np\n", - "cimport numpy as np\n", - "\n", - "from libc.math cimport exp\n", - "from libc.stdlib cimport rand\n", - "cdef extern from \"limits.h\":\n", - " int RAND_MAX\n", - "\n", - "\n", - "@cython.boundscheck(False)\n", - "@cython.wraparound(False)\n", - "def cy_ising_step(np.int64_t[:, :] field, float beta=0.4):\n", - " cdef int N = field.shape[0]\n", - " cdef int M = field.shape[1]\n", - " cdef int n_offset, m_offset, n, m\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, N, 2):\n", - " for m in range(m_offset, M, 2):\n", - " _cy_ising_update(field, n, m, beta)\n", - " return np.array(field)\n", - "\n", - "\n", - "@cython.boundscheck(False)\n", - "@cython.wraparound(False)\n", - "cdef _cy_ising_update(np.int64_t[:, :] field, int n, int m, float beta):\n", - " cdef int total = 0\n", - " cdef int N = field.shape[0]\n", - " cdef int M = field.shape[1]\n", - " cdef int i, j\n", - " for i in range(n-1, n+2):\n", - " for j in range(m-1, m+2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " cdef float dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[n, m] *= -1\n", - " elif exp(-dE * beta) * RAND_MAX > rand():\n", - " field[n, m] *= -1" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "584 µs ± 5.11 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" - ] - } - ], - "source": [ - "%timeit cy_ising_step(field)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Cython also has become faster (4x) since 2017." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Numba ~ 1.1ms\n", - "[@Jake VanderPlas](https://github.com/jakevdp) also mentions [another blog](https://matthewrocklin.com/blog/work/2015/02/28/Ising) that used [Numba](https://numba.readthedocs.io/en/stable/index.html) to speed things up. Lets stick with our original implementation and see how far we can get." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Naive @njit ~ 1.1ms\n", - "To use basic Numba, we just need to rewrite our update function and add the [`@njit`](https://numba.readthedocs.io/en/stable/user/jit.html) decorator to the function." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "from numba import njit" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "@njit\n", - "def numba_ising_step(field, beta=0.4):\n", - " N, M = field.shape\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, N, 2):\n", - " for m in range(m_offset, M, 2):\n", - " total = 0\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[n, m] *= -1\n", - " elif np.exp(-dE * beta) > np.random.rand():\n", - " field[n, m] *= -1\n", - " return field" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.09 ms ± 5.59 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" - ] - } - ], - "source": [ - "# Precompile numba_ising_step\n", - "numba_ising_step(field)\n", - "# Time the code\n", - "%timeit numba_ising_step(field)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although faster than Python, it is still ~2x slower than Cython." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### @njit(parallel=True) ~ 650µs\n", - "Before trying to speed this up, lets first understand a common exploit of the Ising Model. First, lets extract our outer for-loops and simply keep record of the `n`'s, `m`s, and offset." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "ns = []\n", - "ms = []\n", - "offsets = []\n", - "for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, 10, 2):\n", - " for m in range(m_offset, 10, 2):\n", - " ns.append(n)\n", - " ms.append(m)\n", - " offsets.append((n_offset, m_offset))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, lets plot them colored by their offset. I include the index which is the order of our traversal." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "\n", - "\n", - "\n", - "
\n", - "
\n", - "\n", - "" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = px.scatter(\n", - " pd.DataFrame({\"n\": ns, \"m\": ms, \"offset\": offsets}).reset_index(),\n", - " x=\"n\",\n", - " y=\"m\",\n", - " color=\"offset\",\n", - " title=\"Order of n vs. m\",\n", - " text=\"index\",\n", - ")\n", - "fig.update_traces(textposition=\"bottom right\")\n", - "render_plotly_html(fig)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "offset=(0, 0)
n=%{x}
m=%{y}
index=%{text}", - "legendgroup": "(0, 0)", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers+text", - "name": "(0, 0)", - "orientation": "v", - "showlegend": true, - "text": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ], - "textposition": "bottom right", - "type": "scatter", - "x": [ - 0, - 0, - 0, - 0, - 0, - 2, - 2, - 2, - 2, - 2, - 4, - 4, - 4, - 4, - 4, - 6, - 6, - 6, - 6, - 6, - 8, - 8, - 8, - 8, - 8 - ], - "xaxis": "x", - "y": [ - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8 - ], - "yaxis": "y" - }, - { - "hovertemplate": "offset=(0, 1)
n=%{x}
m=%{y}
index=%{text}", - "legendgroup": "(0, 1)", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers+text", - "name": "(0, 1)", - "orientation": "v", - "showlegend": true, - "text": [ - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49 - ], - "textposition": "bottom right", - "type": "scatter", - "x": [ - 0, - 0, - 0, - 0, - 0, - 2, - 2, - 2, - 2, - 2, - 4, - 4, - 4, - 4, - 4, - 6, - 6, - 6, - 6, - 6, - 8, - 8, - 8, - 8, - 8 - ], - "xaxis": "x", - "y": [ - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9 - ], - "yaxis": "y" - }, - { - "hovertemplate": "offset=(1, 0)
n=%{x}
m=%{y}
index=%{text}", - "legendgroup": "(1, 0)", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers+text", - "name": "(1, 0)", - "orientation": "v", - "showlegend": true, - "text": [ - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74 - ], - "textposition": "bottom right", - "type": "scatter", - "x": [ - 1, - 1, - 1, - 1, - 1, - 3, - 3, - 3, - 3, - 3, - 5, - 5, - 5, - 5, - 5, - 7, - 7, - 7, - 7, - 7, - 9, - 9, - 9, - 9, - 9 - ], - "xaxis": "x", - "y": [ - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8, - 0, - 2, - 4, - 6, - 8 - ], - "yaxis": "y" - }, - { - "hovertemplate": "offset=(1, 1)
n=%{x}
m=%{y}
index=%{text}", - "legendgroup": "(1, 1)", - "marker": { - "color": "#ab63fa", - "symbol": "circle" - }, - "mode": "markers+text", - "name": "(1, 1)", - "orientation": "v", - "showlegend": true, - "text": [ - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99 - ], - "textposition": "bottom right", - "type": "scatter", - "x": [ - 1, - 1, - 1, - 1, - 1, - 3, - 3, - 3, - 3, - 3, - 5, - 5, - 5, - 5, - 5, - 7, - 7, - 7, - 7, - 7, - 9, - 9, - 9, - 9, - 9 - ], - "xaxis": "x", - "y": [ - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9, - 1, - 3, - 5, - 7, - 9 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "offset" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Order of n vs. m" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "n" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "m" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you click on any one of the offsets, you'll notice that when that offset disappears, all of its neighbors stay intact. Because the markov blanket of each cell in the Ising Model are the immediate neighbors, this means these update steps are independent, and we can do them in parallel using Numba's [`parallel=True`](https://numba.readthedocs.io/en/stable/user/parallel.html)." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "from numba import prange" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "@njit(parallel=True)\n", - "def numba_parallel_ising_step(field, beta=0.4):\n", - " N, M = field.shape\n", - "\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " ns = np.arange(n_offset, N, 2)\n", - " for n in prange(len(ns)):\n", - " n = ns[n]\n", - " ms = np.arange(m_offset, M, 2)\n", - " for m in prange(len(ms)):\n", - " m = ms[m]\n", - " total = 0\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[n, m] *= -1\n", - " elif np.exp(-dE * beta) > np.random.rand():\n", - " field[n, m] *= -1\n", - " return field" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "643 µs ± 13.4 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" - ] - } - ], - "source": [ - "numba_parallel_ising_step(field)\n", - "%timeit numba_parallel_ising_step(field)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`prange` also has some ability to detect parallel-eligible code itself." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " \n", - "================================================================================\n", - " Parallel Accelerator Optimizing: Function numba_parallel_ising_step, \n", - "/var/folders/1j/7lmy8byj4sv720g4hf67kkmm0000gn/T/ipykernel_41034/3547723262.py \n", - "(1) \n", - "================================================================================\n", - "\n", - "\n", - "Parallel loop listing for Function numba_parallel_ising_step, /var/folders/1j/7lmy8byj4sv720g4hf67kkmm0000gn/T/ipykernel_41034/3547723262.py (1) \n", - "-------------------------------------------------------------------|loop #ID\n", - "@njit(parallel=True) | \n", - "def numba_parallel_ising_step(field, beta=0.4): | \n", - " N, M = field.shape | \n", - " | \n", - " for n_offset in range(2): | \n", - " for m_offset in range(2): | \n", - " ns = np.arange(n_offset, N, 2) | \n", - " for n in prange(len(ns)):------------------------------| #3\n", - " n = ns[n] | \n", - " ms = np.arange(m_offset, M, 2) | \n", - " for m in prange(len(ms)):--------------------------| #2\n", - " m = ms[m] | \n", - " total = 0 | \n", - " for i in range(n - 1, n + 2): | \n", - " for j in range(m - 1, m + 2): | \n", - " if i == n and j == m: | \n", - " continue | \n", - " total += field[i % N, j % M] | \n", - " dE = 2 * field[n, m] * total | \n", - " if dE <= 0: | \n", - " field[n, m] *= -1 | \n", - " elif np.exp(-dE * beta) > np.random.rand(): | \n", - " field[n, m] *= -1 | \n", - " return field | \n", - "------------------------------ After Optimisation ------------------------------\n", - "Parallel region 0:\n", - "+--3 (parallel)\n", - " +--1 (serial, fused with loop(s): 2)\n", - " +--2 (serial)\n", - "\n", - "\n", - "Parallel region 1:\n", - "+--0 (parallel)\n", - " +--1 (serial)\n", - "\n", - "\n", - " \n", - "Parallel region 0 (loop #3) had 1 loop(s) fused and 2 loop(s) serialized as part\n", - " of the larger parallel loop (#3).\n", - " \n", - "Parallel region 1 (loop #0) had 0 loop(s) fused and 1 loop(s) serialized as part\n", - " of the larger parallel loop (#0).\n", - "--------------------------------------------------------------------------------\n", - "--------------------------------------------------------------------------------\n", - " \n" - ] - } - ], - "source": [ - "numba_parallel_ising_step.parallel_diagnostics(level=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With `parallel=True`, we are now in the neighborhood of Cython." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook ising_model_speed.ipynb to markdown\n", - "/Users/jakeetaylor/opt/anaconda3/lib/python3.9/site-packages/nbconvert/filters/datatypefilter.py:39: UserWarning: Your element with mimetype(s) dict_keys(['application/vnd.plotly.v1+json']) is not able to be represented.\n", - " warn(\"Your element with mimetype(s) {mimetypes}\"\n", - "[NbConvertApp] Writing 22602 bytes to ising_model_speed.md\n" - ] - }, - { - "data": { - "text/plain": [ - "CompletedProcess(args=['jupyter', 'nbconvert', '--to', 'markdown', 'ising_model_speed.ipynb'], returncode=0)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A little magic to automatically write my blog :)\n", - "import subprocess\n", - "\n", - "subprocess.run([\"jupyter\", \"nbconvert\", \"--to\", \"markdown\", \"ising_model_speed.ipynb\"])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/_includes/ising_model_speed_2.ipynb b/_includes/ising_model_speed_2.ipynb deleted file mode 100644 index 12a49270d2b..00000000000 --- a/_includes/ising_model_speed_2.ipynb +++ /dev/null @@ -1,221 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Mojo ~ 1.27ms\n", - "[Mojo](https://docs.modular.com/mojo/) is a relatively newcomer to the scientific computing scene, but is quickly gaining popularity.\n", - "\n", - "> Mojo codeblocks display as Python since markdown does not yet support Mojo highlighting.\n", - "{: .prompt-info }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we will need to import a variety of items from the standard library." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from tensor import Tensor, TensorSpec, TensorShape\n", - "from utils.index import Index\n", - "from random import rand, random_float64\n", - "from math import exp\n", - "from benchmark import Report\n", - "import benchmark\n", - "\n", - "alias data_type = DType.float32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can rewrite our functions in Mojo. First, we start with the `random_spin_field`:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn random_spin_field(N: Int, M: Int) -> Tensor[data_type]:\n", - " var t = rand[data_type](N, M)\n", - " for i in range(N):\n", - " for j in range(M):\n", - " if t[i, j] < 0.5:\n", - " t[Index(i, j)] = -1\n", - " else:\n", - " t[Index(i, j)] = 1\n", - " return t" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, the internal `_ising_update` which takes the summation over the neighbors:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "@always_inline\n", - "fn _ising_update(inout field: Tensor[data_type], n: Int, m: Int, beta: Float32 = 0.4) -> None:\n", - " var total = SIMD[data_type, 1]()\n", - " var shape = field.shape()\n", - " var N = shape[0]\n", - " var M = shape[1]\n", - " for i in range(n - 1, n + 2):\n", - " for j in range(m - 1, m + 2):\n", - " if i == n and j == m:\n", - " continue\n", - " total += field[i % N, j % M]\n", - " var dE = 2 * field[n, m] * total\n", - " if dE <= 0:\n", - " field[Index(n, m)] *= -1\n", - " elif exp(-dE * beta) > random_float64().cast[field.dtype]():\n", - " field[Index(n, m)] *= -1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, we can define the `ising_step`:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "fn ising_step(inout field: Tensor[data_type]) -> None:\n", - " var shape = field.shape()\n", - " var N = shape[0]\n", - " var M = shape[1]\n", - " for n_offset in range(2):\n", - " for m_offset in range(2):\n", - " for n in range(n_offset, N, 2):\n", - " for m in range(m_offset, M, 2):\n", - " _ising_update(field, n, m)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can define a small benchmark function." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "@always_inline\n", - "fn bench() -> Report:\n", - " var N = 200\n", - " var M = 200\n", - " var field = random_spin_field(N, M)\n", - "\n", - " @always_inline\n", - " @parameter\n", - " fn ising_step_fn():\n", - " ising_step(field)\n", - "\n", - " return benchmark.run[ising_step_fn](max_runtime_secs=5)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---------------------\n", - "Benchmark Report (ms)\n", - "---------------------\n", - "Mean: 1.2608148342977381\n", - "Total: 2396.8090000000002\n", - "Iters: 1901\n", - "Warmup Mean: 1.492\n", - "Warmup Total: 2.984\n", - "Warmup Iters: 2\n", - "Fastest Mean: 1.2608148342977381\n", - "Slowest Mean: 1.2608148342977381\n", - "\n" - ] - } - ], - "source": [ - "var report = bench()\n", - "# Print a report in Milliseconds\n", - "report.print(\"ms\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that Mojo runs a little bit slower than Numba without optimization." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook ising_model_speed_2.ipynb to markdown\n", - "[NbConvertApp] Writing 3056 bytes to ising_model_speed_2.md\n" - ] - } - ], - "source": [ - "%%python\n", - "# A little magic to automatically write my blog :)\n", - "import subprocess\n", - "\n", - "subprocess.run([\"jupyter\", \"nbconvert\", \"--to\", \"markdown\", \"ising_model_speed_2.ipynb\"])\n", - "subprocess.run(\"sed -i'' -e 's/```mojo/```python/g' ising_model_speed_2.md\", shell=True)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/_includes/ising_model_speed_2.md-e b/_includes/ising_model_speed_2.md-e deleted file mode 100644 index 266a0c4acf2..00000000000 --- a/_includes/ising_model_speed_2.md-e +++ /dev/null @@ -1,122 +0,0 @@ -## Mojo ~ 1.27ms -[Mojo](https://docs.modular.com/mojo/) is a relatively newcomer to the scientific computing scene, but is quickly gaining popularity. - -> Mojo codeblocks display as Python since markdown does not yet support Mojo highlighting. -{: .prompt-info } - -First, we will need to import a variety of items from the standard library. - - -```mojo -from tensor import Tensor, TensorSpec, TensorShape -from utils.index import Index -from random import rand, random_float64 -from math import exp -from benchmark import Report -import benchmark - -alias data_type = DType.float32 -``` - -Now, we can rewrite our functions in Mojo. First, we start with the `random_spin_field`: - - -```mojo -fn random_spin_field(N: Int, M: Int) -> Tensor[data_type]: - var t = rand[data_type](N, M) - for i in range(N): - for j in range(M): - if t[i, j] < 0.5: - t[Index(i, j)] = -1 - else: - t[Index(i, j)] = 1 - return t -``` - -Next, the internal `_ising_update` which takes the summation over the neighbors: - - -```mojo -@always_inline -fn _ising_update(inout field: Tensor[data_type], n: Int, m: Int, beta: Float32 = 0.4) -> None: - var total = SIMD[data_type, 1]() - var shape = field.shape() - var N = shape[0] - var M = shape[1] - for i in range(n - 1, n + 2): - for j in range(m - 1, m + 2): - if i == n and j == m: - continue - total += field[i % N, j % M] - var dE = 2 * field[n, m] * total - if dE <= 0: - field[Index(n, m)] *= -1 - elif exp(-dE * beta) > random_float64().cast[field.dtype](): - field[Index(n, m)] *= -1 -``` - -Lastly, we can define the `ising_step`: - - -```mojo -fn ising_step(inout field: Tensor[data_type]) -> None: - var shape = field.shape() - var N = shape[0] - var M = shape[1] - for n_offset in range(2): - for m_offset in range(2): - for n in range(n_offset, N, 2): - for m in range(m_offset, M, 2): - _ising_update(field, n, m) -``` - -We can define a small benchmark function. - - -```mojo -@always_inline -fn bench() -> Report: - var N = 200 - var M = 200 - var field = random_spin_field(N, M) - - @always_inline - @parameter - fn ising_step_fn(): - ising_step(field) - - return benchmark.run[ising_step_fn](max_runtime_secs=5) -``` - - -```mojo -var report = bench() -# Print a report in Milliseconds -report.print("ms") -``` - - --------------------- - Benchmark Report (ms) - --------------------- - Mean: 1.2608148342977381 - Total: 2396.8090000000002 - Iters: 1901 - Warmup Mean: 1.492 - Warmup Total: 2.984 - Warmup Iters: 2 - Fastest Mean: 1.2608148342977381 - Slowest Mean: 1.2608148342977381 - - - -We see that Mojo runs a little bit slower than Numba without optimization. - - -```mojo -%%python -# A little magic to automatically write my blog :) -import subprocess - -subprocess.run(["jupyter", "nbconvert", "--to", "markdown", "ising_model_speed_2.ipynb"]) -subprocess.run("sed -i'' -e 's/```mojo/```python/g' ising_model_speed_2.md", shell=True) -``` diff --git a/_includes/ising_model_speed_3.ipynb b/_includes/ising_model_speed_3.ipynb deleted file mode 100644 index 04747378438..00000000000 --- a/_includes/ising_model_speed_3.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Julia ~ 850μs \n", - "Lastly, we look at [Julia](https://docs.julialang.org/en/v1/), another member of the [LLVM](https://en.wikipedia.org/wiki/LLVM) family." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "random_spin_field (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function random_spin_field(N:: Integer, M:: Integer)::Matrix{Int8}\n", - " return rand([-1, 1], N, M)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ising_step (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function ising_step(field::Matrix{Int8}, beta::Float32, func)::Matrix{Int8}\n", - " N, M = size(field)\n", - " for n_offset in 1:2\n", - " for m_offset in 1:2\n", - " for n in n_offset:2:N-1\n", - " for m in m_offset:2:M-1\n", - " func(field, n, m, beta)\n", - " end\n", - " end\n", - " end\n", - " end\n", - " return field\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Julia translates pretty closely from Python, just take note of 1-indexed arrays instead of 0-indexed arrays." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "_ising_step (generic function with 1 method)" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "function _ising_step(field::Matrix{Int8}, n::Integer, m::Integer, beta::Float32)\n", - " total = 0\n", - " N, M = size(field)\n", - " for i in n-1:n+1\n", - " for j in m-1:m+1\n", - " if i == n && j == m\n", - " continue\n", - " end\n", - " # Convert to 0-indexing\n", - " i -= 1\n", - " j -= 1\n", - " # Take the remainder and convert back to 1-indexing.\n", - " total += field[abs(i % N) + 1, abs(j % M) + 1]\n", - " end\n", - " end\n", - " dE = 2 * field[n, m] * total\n", - " if dE <= 0\n", - " field[n, m] *= -1\n", - " elseif exp(-dE * beta) > rand()\n", - " field[n, m] *= -1\n", - " end\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(200, 200)\n" - ] - } - ], - "source": [ - "N, M = 200, 200\n", - "field = random_spin_field(N, M)\n", - "ising_step(field, 0.04f0, _ising_step)\n", - "println(size(field))" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 853.750 μs (0 allocations: 0 bytes)\n", - "\n" - ] - } - ], - "source": [ - "using BenchmarkTools\n", - "@btime ising_step(field, 0.04f0, _ising_step)\n", - "println(\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Which almost runs as fast as Cython" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook ising_model_speed_3.ipynb to markdown\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Writing 1923 bytes to ising_model_speed_3.md\n" - ] - }, - { - "data": { - "text/plain": [ - "Process(`\u001b[4mjupyter\u001b[24m \u001b[4mnbconvert\u001b[24m \u001b[4m--to\u001b[24m \u001b[4mmarkdown\u001b[24m \u001b[4mising_model_speed_3.ipynb\u001b[24m`, ProcessExited(0))" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "run(`jupyter nbconvert --to markdown ising_model_speed_3.ipynb`)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.10.2", - "language": "julia", - "name": "julia-1.10" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.10.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/_includes/coin_problem.md b/_includes/markdown/coin_problem.md similarity index 100% rename from _includes/coin_problem.md rename to _includes/markdown/coin_problem.md diff --git a/_includes/ising_model.md b/_includes/markdown/ising_model.md similarity index 100% rename from _includes/ising_model.md rename to _includes/markdown/ising_model.md diff --git a/_includes/ising_model_speed.md b/_includes/markdown/ising_model_speed.md similarity index 100% rename from _includes/ising_model_speed.md rename to _includes/markdown/ising_model_speed.md diff --git a/_includes/ising_model_speed_2.md b/_includes/markdown/ising_model_speed_2.md similarity index 100% rename from _includes/ising_model_speed_2.md rename to _includes/markdown/ising_model_speed_2.md diff --git a/_includes/ising_model_speed_3.md b/_includes/markdown/ising_model_speed_3.md similarity index 100% rename from _includes/ising_model_speed_3.md rename to _includes/markdown/ising_model_speed_3.md diff --git a/_includes/rent_vs_buy_blog_post.md b/_includes/markdown/rent_vs_buy_blog_post.md similarity index 100% rename from _includes/rent_vs_buy_blog_post.md rename to _includes/markdown/rent_vs_buy_blog_post.md diff --git a/_includes/tabular.md b/_includes/markdown/tabular.md similarity index 100% rename from _includes/tabular.md rename to _includes/markdown/tabular.md diff --git a/_posts/2023-01-04-interval-detector.md b/_posts/2023-01-04-interval-detector.md index f827e367ad8..84fe09d96e1 100644 --- a/_posts/2023-01-04-interval-detector.md +++ b/_posts/2023-01-04-interval-detector.md @@ -7,7 +7,7 @@ tags: [statistics, machine learning] math: true mermaid: true image: - path: /assets/img/interval_detector.png + path: /assets/img/custom/interval_detector.png alt: Single Detection and Multiple Detections forming an Interval. --- You have a statistical detector capable of raising alerts on time series data (i.e. number of crashes in an hour or average bandwidth for a fleet of servers) and received a question from the engineering team: @@ -280,7 +280,7 @@ $$ We can then compute the updating equation of $$\eqref{eqn:generic_recursion_independence}$$ with numerical methods like [this](https://www.jstor.org/stable/1390838) one. -Different kernels +Different kernels The picture above demonstrates how the choice of $\rho$ impacts $FWER(\alpha)$ in the simple setting of $d=2$ and $T=10$. Specifically, setting $\rho = 0$ will revert $$\eqref{eqn:generic_recursion_independence}$$ back to the full independence case of $$\eqref{eqn:independent_recursion}$$, $$\rho > 0$$ will give more conservative corrections than $$\rho = 0$$, but less stringent than the Bonferroni correction. diff --git a/_posts/2023-06-16-my-ios-development_journey.md b/_posts/2023-06-16-my-ios-development_journey.md index 2df6f11f40f..1329045f4dd 100644 --- a/_posts/2023-06-16-my-ios-development_journey.md +++ b/_posts/2023-06-16-my-ios-development_journey.md @@ -6,7 +6,7 @@ categories: [Software Engineering] tags: [iOS, swift] math: true image: - path: /assets/img/ios_apps.png + path: /assets/img/custom/ios_apps.png alt: Rail Yard, Pro Roller, aiMessages --- I started becoming interested in iOS development in 2021 as a way to learn a compiled language. My background at the time was mostly in Python & R, with undergraduate courses in Java and C++. Initially, I used the [Swift Playgrounds App](https://developer.apple.com/swift-playgrounds/) because it seemed more approachable than Xcode. As my ideas grew, so did the codebase, so I switched to Xcode and purchased my own developer subscription so I could start sharing my app with friends. @@ -22,7 +22,7 @@ I had already started [a project](https://github.com/jakee417/Pico-Train-Switchi Home Screen | Yard Devices | Yard Settings - | - | - -![alt](assets/img/IMG_0021.png){: .shadow } | ![alt](assets/img/IMG_0020.png){: .shadow } | ![alt](assets/img/IMG_0022.png){: .shadow } +![alt](assets/img/custom/IMG_0021.png){: .shadow } | ![alt](assets/img/custom/IMG_0020.png){: .shadow } | ![alt](assets/img/custom/IMG_0022.png){: .shadow } ### Highlights - Networking was a large component of this App. As such, I relied alot on `URLSession`: @@ -64,7 +64,7 @@ Where `DevicesJSON` is some `Decodable` `struct` that holds the states of GPIO p Network Scan | Credentials - | - -![alt text](assets/img/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg){: .shadow } | ![alt text](assets/img/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg){: .shadow } +![alt text](assets/img/custom/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg){: .shadow } | ![alt text](assets/img/custom/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg){: .shadow } Scanning the network on the pico was straightforward, but I needed a way to know if the App was on the pico's lan network (meaning the pico still needed credentials) or if the App was on the same home network as the pico, indicating credentials had already been passed. Inside my `DeviceNetworkManager` class, I used an API offered through `NEHotspotNetwork`: ```swift @@ -145,7 +145,7 @@ For my next App, I wanted to make a general purpose dice simulator capable of pl Game Boards | Simulations | Simulation - | - | - -![Game Boards](assets/img/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg){: .shadow } | ![Simulations](assets/img/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg){: .shadow } | ![Simulation Definition](assets/img/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg){: .shadow } +![Game Boards](assets/img/custom/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg){: .shadow } | ![Simulations](assets/img/custom/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg){: .shadow } | ![Simulation Definition](assets/img/custom/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg){: .shadow } ### Highlights - For the simulations, I created a `SimulationManager` that allowed users to specify custom "simulations" based on the state of the board. I took inspiration from the Shortcuts App, which allows you to build a flowchart-style dependency of actions. Instead of dependencies, the simulation should take a conjunctions of various "Where" clauses like "Exactly 2 D6 Dice Equals 1 in Value" or "Sum of 3 D6 Dice Less Than Or Equal To 5". The basic components of a where clause are: @@ -279,7 +279,7 @@ This pairing, we believed, would allow users to interact with multiple Generativ Text-to-Text | Text-to-Image | Image Editing - | - | - -![alt text](assets/img/image.png){: .shadow } | ![alt text](assets/img/image_2.png){: .shadow } | ![alt text](assets/img/image_3.png){: .shadow } +![alt text](assets/img/custom/image.png){: .shadow } | ![alt text](assets/img/custom/image_2.png){: .shadow } | ![alt text](assets/img/custom/image_3.png){: .shadow } ### Highlights @@ -363,7 +363,7 @@ Once in SwiftUI, the rest seemed to fall into place: Image Editing | Image Masking - | - -![alt text](assets/img/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg){: .shadow } | ![alt text](assets/img/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg){: .shadow } +![alt text](assets/img/custom/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg){: .shadow } | ![alt text](assets/img/custom/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg){: .shadow } - I took advantage of iOS 17's [`VNGenerateForegroundInstanceMaskRequest`](https://developer.apple.com/documentation/vision/vngenerateforegroundinstancemaskrequest) to "lift" subjects out of the foreground for image editing and sticker generation. - I even created a `Trie` class to quickly find images inside the user's history from a keyword search: diff --git a/_posts/2024-02-04-least-action-least-squares.md b/_posts/2024-02-04-least-action-least-squares.md index 07fbc6c586a..8fd6493412f 100644 --- a/_posts/2024-02-04-least-action-least-squares.md +++ b/_posts/2024-02-04-least-action-least-squares.md @@ -7,13 +7,13 @@ tags: [statistics, physics, least squares, least action] math: true mermaid: true image: - path: /assets/img/least_squares_action.png + path: /assets/img/custom/least_squares_action.png alt: Least Action (Top) vs. Least Squares (Bottom) --- In this post I want to describe two methods that both use the word "Least" to describe them. Both of these concepts are foundational in their respective field (physics and statistics), and I find it interesting to compare/contrast their formulation. ## Path Minimization -![Path Minimization](assets/img/path_minimization.png) +![Path Minimization](assets/img/custom/path_minimization.png) We start with a path. A path consists of $(x, y(x))$ points in space. When we vary $x + \delta x$, we can move to the corresponding $y$ coordinate along the step defined by $y'(x) = \frac{dy}{dx}$. We can encode this entire relation inside a *functional*: $$ @@ -137,7 +137,7 @@ Another property of the Lagrangian is that $\frac{\partial L}{\partial \dot q}$ {: .prompt-info } ## KL Divergence Minimization -![KL Divergence Minimization](assets/img/kl_minimization.png) +![KL Divergence Minimization](assets/img/custom/kl_minimization.png) Now, lets switch tracks. Instead of a path between two points, lets abstract the discussion to two probability distributions. Our goal is now to find the smallest distance between two probability distributions. Instead of taking a path integral like before, we will use tools from Information Theory to define a notion of "distance": - *Entropy* - best possible long term average bits per message (optimal) that can be achieved under a symbol distribution $P(X)$ by using an encoding scheme (possibly unknown) specifically designed for $P(X)$. @@ -181,7 +181,7 @@ $$ I remember from [CS229 PS3](https://cs229.stanford.edu/summer2020/ps3.pdf), there was a problem asking us to prove that minimizing the KL Divergence between a parameterized distribution $$P_\theta$$ (i.e. Normal, Bernoulli, Binomial etc.) and the empirical distribution of the population $$\hat P$$, this is equivalent with maximizing likelihood estimate for $$\theta$$. We are looking for single expression that, when satisfied, is equivalent with minimizing the KL divergence between two distributions:
CS 229 Problem Set 3 2.C -CS 229 Problem Set 3 2.C +CS 229 Problem Set 3 2.C
First, lets define the empirical distribution: diff --git a/_posts/2024-02-13-hamiltonian-mechanics.md b/_posts/2024-02-13-hamiltonian-mechanics.md index 64505591572..a4c17d87077 100644 --- a/_posts/2024-02-13-hamiltonian-mechanics.md +++ b/_posts/2024-02-13-hamiltonian-mechanics.md @@ -7,7 +7,7 @@ tags: [statistics, physics, hamiltonian mechanics, hmc] math: true mermaid: true image: - path: /assets/img/hamiltonian.png + path: /assets/img/custom/hamiltonian.png alt: Reversibility, Conservation, & Volume Preservation --- In this post, I discuss the physics behind Hamiltonian Monte Carlo (HMC), Hamiltonian Mechanics. @@ -50,9 +50,9 @@ There are some practical considerations like using the leapfrog integrator and c And if you don't believe me, then check out [this hw assignment](https://github.com/jakee417/Stats271/blob/main/assignments/hw3/hw3_taylor.ipynb) that I completed as part of Stanford's Stats 271 course. HMC gives similar estimates as MCMC, but with a much higher [effective sample size](https://mc-stan.org/docs/2_18/reference-manual/effective-sample-size-section.html) (ESS): -HMC Posterior Trace | HMC Posterior Histogram -- | - -![Trace Plot](assets/img/hmc0.png) | ![Histogram](assets/img/hmc1.png) +| HMC Posterior Trace | HMC Posterior Histogram | +| ---------------------------------- | --------------------------------- | +| ![Trace Plot](assets/img/custom/hmc0.png) | ![Histogram](assets/img/custom/hmc1.png) | ## Hamiltonian Mechanics While taking Stats 271, I didn't have time to look too deeply into the physics formulation. But, building off my [recent post about Lagrangian Mechanics](https://jakee417.github.io/posts/least-action-least-squares/), I now have the proper groundwork to understand Hamiltonian Mechanics. @@ -292,18 +292,18 @@ Now we can go back to the HMC example from my Stats271 class, and try to visuali ### Conservation For conservation, we can view the value of the Hamiltonian after each iteration's leapfrog step: -{% include hamiltonian_value.html %} +{% include html/hamiltonian_value.html %} ### Phase Space To visualize the $(p, q)$ phase space, we need two separate plots since the entire vector in this example is $[q_1, q_2, p_1, p_2]$. Normally, in a HMC trace plot, you only show the *last* $(p, q)$ state after the leapfrog integrator and acceptance step have been taken. Instead, I logged the trace of each iteration's leapfrog steps, to show the dynamics of each individual iteration. The height of each sample is equal to $\exp{-H(p, q)}$ which converts the energy function to a probability. I also show the (scaled) kde of the frequency of $(p, q)$, to help see the marginal density of this stepping process. $(p_1, q_1)$ : -{% include hamiltonian_0.html %} +{% include html/hamiltonian_0.html %} $(p_2, q_2)$ : -{% include hamiltonian_1.html %} +{% include html/hamiltonian_1.html %} Plot Summary : diff --git a/_posts/2024-02-14-ising-model_theory.md b/_posts/2024-02-14-ising-model_theory.md index bb5eed65876..ac6d58a0a58 100644 --- a/_posts/2024-02-14-ising-model_theory.md +++ b/_posts/2024-02-14-ising-model_theory.md @@ -7,7 +7,7 @@ tags: [physics] math: true mermaid: true image: - path: /assets/img/ising.png + path: /assets/img/custom/ising.png alt: Undirected Graphical Model of Ising Model --- A post about the theory of the [Ising Model](https://en.wikipedia.org/wiki/Ising_model). diff --git a/_posts/2024-02-19-ising-model-computation.md b/_posts/2024-02-19-ising-model-computation.md index 61ebbf05155..b4097a26e9b 100644 --- a/_posts/2024-02-19-ising-model-computation.md +++ b/_posts/2024-02-19-ising-model-computation.md @@ -7,9 +7,9 @@ tags: [physics] math: true mermaid: true image: - path: /assets/img/ising_computation.png + path: /assets/img/custom/ising_computation.png alt: Metropolis Hastings MCMC Samples of Average Energy --- A post about the computation of the [Ising Model](https://en.wikipedia.org/wiki/Ising_model). -{% include ising_model.md %} \ No newline at end of file +{% include markdown/ising_model.md %} \ No newline at end of file diff --git a/_posts/2024-02-23-raspberry-pi-pico.md b/_posts/2024-02-23-raspberry-pi-pico.md index 5e21e50fa48..36a2be90eef 100644 --- a/_posts/2024-02-23-raspberry-pi-pico.md +++ b/_posts/2024-02-23-raspberry-pi-pico.md @@ -5,7 +5,7 @@ date: 2024-02-23 12:00:00 +0800 categories: [Software Engineering] tags: [raspberry pi, micropython] image: - path: /assets/img/pico.png + path: /assets/img/custom/pico.png alt: Stock Image of a Raspberry Pi Pico W (image credit Amazon) --- Tips & Tricks I learned along the way for using Micropython with a [Raspberry Pi Pico W](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html) (Pico). This is a 0 to 1 post for starting a project on the Pico. The particular use case is not as important (for me, this was [controlling model train layouts](https://github.com/jakee417/Pico-Train-Switching/tree/main)), as this approach is valid for a **wide range of IoT projects**. diff --git a/_posts/2024-03-04-ising-model-speed.md b/_posts/2024-03-04-ising-model-speed.md index 0e586bbd24d..da50d96549e 100644 --- a/_posts/2024-03-04-ising-model-speed.md +++ b/_posts/2024-03-04-ising-model-speed.md @@ -7,7 +7,7 @@ tags: [physics] math: true mermaid: true image: - path: /assets/img/ising_speed.png + path: /assets/img/custom/ising_speed.png alt: Ising Model with Checkerboard Coloring --- A post about the *speed* of the computation of the [Ising Model](https://en.wikipedia.org/wiki/Ising_model). I compare Python, Cython, Numba, Mojo, & Julia on the Ising Model. @@ -25,8 +25,8 @@ A post about the *speed* of the computation of the [Ising Model](https://en.wiki | Julia | 0.850ms | 3 | -{% include ising_model_speed.md %} -{% include ising_model_speed_2.md %} -{% include ising_model_speed_3.md %} +{% include markdown/ising_model_speed.md %} +{% include markdown/ising_model_speed_2.md %} +{% include markdown/ising_model_speed_3.md %} ## Summary The naive translation of each language beats Python by ~100x, which is pretty good for basic applications. If you are a fan of Swift, then Mojo will come very naturally since both are [syntactic sugar for LLVM](https://news.ycombinator.com/item?id=21832060). If you come from R, then Julia has similar syntax and emphasis on scientific computing. Numba can be applied with a simple decorator, making it a great first pass attempt on existing code. Cython provides the most speed, but at the highest development cost (IMO). \ No newline at end of file diff --git a/_posts/2024-03-09-buy-vs-rent.md b/_posts/2024-03-09-buy-vs-rent.md index 710cd46813e..996a17c02ec 100644 --- a/_posts/2024-03-09-buy-vs-rent.md +++ b/_posts/2024-03-09-buy-vs-rent.md @@ -7,8 +7,8 @@ tags: [finance, numpy] # math: true # mermaid: true image: - path: /assets/img/numpy_financial.png + path: /assets/img/custom/numpy_financial.png alt: Numpy Financial Package --- Should you rent or buy your next home? `NumPy` rewrite of this [New York Times Calculator](https://www.nytimes.com/interactive/2014/upshot/buy-rent-calculator.html). You can find notebook [here](https://github.com/jakee417/mortgage_forecast/blob/master/rent_vs_buy_blog_post.ipynb) which uses `NumPy` and [`numpy-financial`](https://numpy.org/numpy-financial/). -{% include rent_vs_buy_blog_post.md %} \ No newline at end of file +{% include markdown/rent_vs_buy_blog_post.md %} \ No newline at end of file diff --git a/_posts/2024-03-23-coin-problem.md b/_posts/2024-03-23-coin-problem.md index bac093d63c2..db58007d99b 100644 --- a/_posts/2024-03-23-coin-problem.md +++ b/_posts/2024-03-23-coin-problem.md @@ -7,8 +7,8 @@ tags: [probability, mathematics] math: true mermaid: true image: - path: /assets/img/coin_flipping.png + path: /assets/img/custom/coin_flipping.png alt: Flipping a fair coin to see who wins a game --- I saw this interesting math problem from a coworker and decided to make a post discussing the computation. -{% include coin_problem.md %} \ No newline at end of file +{% include markdown/coin_problem.md %} \ No newline at end of file diff --git a/_posts/2024-04-15-ugm-tabular.md b/_posts/2024-04-15-ugm-tabular.md index a2926ab80d4..9a1335a50ac 100644 --- a/_posts/2024-04-15-ugm-tabular.md +++ b/_posts/2024-04-15-ugm-tabular.md @@ -7,9 +7,9 @@ tags: [statistics, probabilistic graphical models, undirected graphical models] math: true mermaid: true image: - path: /assets/img/ugm.png + path: /assets/img/custom/ugm.png alt: Converting a tabular dataset into a graphical model --- A post about modeling tabular datasets using Undirected Graphical Models with a python package called [pgmpy](https://github.com/pgmpy/pgmpy). -{% include tabular.md %} \ No newline at end of file +{% include markdown/tabular.md %} \ No newline at end of file diff --git a/_posts/2024-05-01-theoretical-minimum-1.md b/_posts/2024-05-01-theoretical-minimum-1.md index 04d3f20e503..34e9b76b19d 100644 --- a/_posts/2024-05-01-theoretical-minimum-1.md +++ b/_posts/2024-05-01-theoretical-minimum-1.md @@ -7,40 +7,40 @@ tags: [theoretical minimum] math: false mermaid: false image: - path: /assets/img/mindmap.png + path: /assets/img/custom/mindmap.png alt: A mindmap can help collect your thoughts --- My mind map for [Theoretical Minimum, Classical Mechanics](https://theoreticalminimum.com/courses/classical-mechanics/2011/fall). ## Lecture 1 - The Nature of Classical Physics -![alt](assets/img/B1L1.png) +![alt](assets/img/custom/B1L1.png) ## Lecture 2 - Motion -![alt](assets/img/B1L2.png) +![alt](assets/img/custom/B1L2.png) ## Lecture 3 - Dynamics -![alt](assets/img/B1L3.png) +![alt](assets/img/custom/B1L3.png) ## Lecture 4 - Systems of More Than One Particle -![alt](assets/img/B1L4.png) +![alt](assets/img/custom/B1L4.png) ## Lecture 5 - Energy -![alt](assets/img/B1L5.png) +![alt](assets/img/custom/B1L5.png) ## Lecture 6 - The Principle of Least Action -![alt](assets/img/B1L6.png) +![alt](assets/img/custom/B1L6.png) ## Lecture 7 - Symmetries and Conservation Laws -![alt](assets/img/B1L7.png) +![alt](assets/img/custom/B1L7.png) ## Lecture 8 - Hamiltonian Mechanics and Time-Translation Invariance -![alt](assets/img/B1L8.png) +![alt](assets/img/custom/B1L8.png) ## Lecture 9 - The Phase Space Fluid and the Gibbs - Liouville Theorem -![alt](assets/img/B1L9.png) +![alt](assets/img/custom/B1L9.png) ## Lecture 10 - Poisson Brackets, Angular Momentum, and Symmetries -![alt](assets/img/B1L10.png) +![alt](assets/img/custom/B1L10.png) ## Lecture 11 - Electric and Magnetic Forces -![alt](assets/img/B1L11.png) \ No newline at end of file +![alt](assets/img/custom/B1L11.png) \ No newline at end of file diff --git a/_posts/2024-05-30-theoretical-minimum-2.md b/_posts/2024-05-30-theoretical-minimum-2.md index 03937e1130a..0b33e9c9a51 100644 --- a/_posts/2024-05-30-theoretical-minimum-2.md +++ b/_posts/2024-05-30-theoretical-minimum-2.md @@ -7,19 +7,19 @@ tags: [theoretical minimum] math: false mermaid: false image: - path: /assets/img/mindmap.png + path: /assets/img/custom/mindmap.png alt: A mindmap can help collect your thoughts --- My mind map for [Theoretical Minimum, Special Relativity And Classical Field Theory](https://theoreticalminimum.com/courses/special-relativity-and-electrodynamics/2012/spring). ## Lecture 1 - The Lorentz Transformation -![alt](assets/img/B2L1.png) +![alt](assets/img/custom/B2L1.png) ## Lecture 2 - Velocities & 4-Vectors -![alt](assets/img/B2L2.png) +![alt](assets/img/custom/B2L2.png) ## Lecture 3 - Relativistic Laws of Motion -![alt](assets/img/B2L3.png) +![alt](assets/img/custom/B2L3.png) > Following lectures are still under construction 🚧 {: .prompt-warning } \ No newline at end of file diff --git a/assets/.DS_Store b/assets/.DS_Store index b31c712aae6c6d66be4aeda955f0699398f4d1a5..89c287b46f9cf9154df16399618a478889ebbb3f 100644 GIT binary patch literal 10244 zcmeHMYitx%6uxKL(iuC@+ggMz#V(YW*g(reCiSgWfXX&&R6O1vK%uVK= zx#!$-?woJWnLFn$Aq1MTT0J3QLWqnPqg2K2FB+4xYeJJeP6bjxeNrDw+3CRv^8!YI zK!8AiK!8AiK!CuVg8=T?tjQ&U27Q1)fIxu2O$6BcA&eKJ5swZF%3mGW@e%-OA+mYH zd&+K*hCLeb=&+zD!3IJVsZa&4!~mg={IEAK;?ZG2g*pMR_yBKZ@G2DGtE2repH3hm zXwU};1PDw-fYt5=Bt;zJnEhkw_jRL^wB6jCH0>mEog@Yy=>HB+h#I< zpGbBY`cNOOh}xE$Ff2X86%0+sDLcCjOS6ZX?5w3ZTsI~JvLY*eG<5LblBLUP!%OPx z4%LPa)-PY)P#a#cV#T3DiafPu@#^-zy=L07pF=mXf%n!Slg0REe;DsPcl_`{<%!ci ziIa;8M++MAj$X+-s@zqgPF6d+y5nk3+(_A0%s8O;(NYJ!-HgL+89j$ycBgDJo3@-j zT9!(fsjQiB^+wZVlaW{Iq%yW?ZnGW3HEe4~+|~EFc|&7F@gB#{xKVDbkJ7B8x9e!j z$mz{!5lxk|)!GJ`8K+CnI7n+Eb;4og_>^f?v*s>bysTkubYn}~NGUBVzq>+Jdk|X7 zHFg_%rgO;9+<_elC#74OVfA-23!87VEJ<&!a>1Yt*(*FpjL_FAyyjQaRfUOYLe-B z`4P5uYr=8c26Zd{RFTjIS?+NL5*fX12;(oWu|<~oPl$Y`vR*S>JHs7sMNf7xQ;nLY zYqIb=v^^A)=_S;mhLtlg;t_Qb_)1M=l>omcve3H`gb)s?!ZO(3*iJf=%p)st&+Z_* ziA^3ShsjZLlAI+UkqhK9`GH&`zmOZ`55T|%2}+;>rouFs4zpl3%z?SE1Xja?um(0m zJH((9x}X;{(4ij&APqSfg8gs+hT$1_77oMn@DjWVN8xpN1Kx#G@Bw@XXW%?sgiG)> zd}l`T1|^EU&L_Ud>l@~ToJ?jYpbiNgefY9b@kOM zEx-g+xbE^=9D+A!Sf#485K~bZnGvd-uC7xX70iE1_|#}K8e(}R|JxCMkz65H$#wE8 zxdD?fwkcG@0$2pgU@dHbP0#|ZuoWXZ4m}vvJ9$(aum|>ni;=yLNA?r&Bs>LAV|>2= zFJg2b!RUSsqx(&G3y#Bk@IIV?lW-P3hI8;Kd~>vLhGESf*|DBZuXZMD~o^*^7EN=K207 zD0r;Juw`fBijCI;JB2NA>@oT*?6> literal 10244 zcmeHMU2GIp6uxI#+L__+^0$=bZ=@2Tsg#9cLH@Sw7E=XE*wU6CS$22Ec3^g9-I?7* zn#RT-42X{q|02E+K@%Q~C?+Q0gGLiyKtjL>AyFfbYD|bedG5WlFl`YZOjP3BWbT=J z&OP_u^X+%`?!8M0fwrO^BSa&F$oMcxCt!7#!tCrBQzTzA9VMVYi6yg6E3RP%!G zl)a$Td>QxUu#jlM0>Txga0UN}0m2>in%^((%V8mfI|2Xj0shS3pHP6$j^k^*JAt^6 zVI3k6A}|&Kc6P5KS>h7c>K}1_Uw_Ava}tS+TwxWZy@hwFa&FJ*@eG;HW%1 ztB6T*q(4)3^Zux3GkME&y`@VpgH%;LuBKM5mB-6ZCI_5y(o1_qw=G@R$y(ixV`VDu z=}eDllv8wiyJLH4(>4m+!PE`xva8p$b*J3s6m8w*zDZ$_6#Vxgq zIHg;aIImRVRMhcmvRm!xGqaAJG!GalI@!fQJF&T?V3aVx-mGI4bGDnJQ?h9*TeQ-i z(P~+&v)ktx`#tuy!*vQ?JMWmHwCEaJ4eV!@j0E;Z*QsozuDoYDw%cPAT$J_kr6LgJ z^n@AF`Spt)Ue>avwWD*>rHPX!(&fdxj4+drm~%rQLN>&LRs)Gg(8nknKb#WpacZCCA7Ka+-Wh&XF(41#+2OAy>&aj?4alH?3e#XdXz&0uKoi7Z87zl2&u zQ1C~>Vr*B^#4Y(rFXiu=3>zL(JO9;WxH>`5f71<_ckKB{02(Q46LtFBitdnw_~Xj?QPV;a!E!Ov6V zeR7tZCto2yuOl;Wl3PHKlarth<{>8+Ks_vkB|a;gVJ)nKIA`WY*aTg$1-8OY*af>G zh3wqR*=a)=_QL@fgdsQxFTo)=3`gK79D`TkHFyL0dIH{s_eQbs@sTWqPwucVxS`EG ze(={*)t`$Ejc-gj=gx*U)*9Tm=?Vq@o);9U0W$0~FAe!I z+BJOk;KK^*H!LJ~!HQqUqvY4|*kIT3i|}E6{c9%v9`|*_LUMQP!`)H-Lw^R`>oP1n M|A*)Q|H1kH50nqe0RR91 diff --git a/assets/img/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg b/assets/img/custom/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg similarity index 100% rename from assets/img/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg rename to assets/img/custom/0276F762-7DF5-4946-A06D-44375A421438_1_102_o.jpeg diff --git a/assets/img/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg b/assets/img/custom/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg similarity index 100% rename from assets/img/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg rename to assets/img/custom/1B523B09-1A30-47D3-8AA2-530823B22378_1_102_o.jpeg diff --git a/assets/img/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg b/assets/img/custom/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg similarity index 100% rename from assets/img/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg rename to assets/img/custom/39B72D17-3F15-4DEA-8991-9FE7549C7637_1_102_o-1.jpeg diff --git a/assets/img/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg b/assets/img/custom/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg similarity index 100% rename from assets/img/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg rename to assets/img/custom/42E2FD08-41C8-4784-B48F-2A892EB0BC50_1_102_o.jpeg diff --git a/assets/img/B1L1.png b/assets/img/custom/B1L1.png similarity index 100% rename from assets/img/B1L1.png rename to assets/img/custom/B1L1.png diff --git a/assets/img/B1L10.png b/assets/img/custom/B1L10.png similarity index 100% rename from assets/img/B1L10.png rename to assets/img/custom/B1L10.png diff --git a/assets/img/B1L11.png b/assets/img/custom/B1L11.png similarity index 100% rename from assets/img/B1L11.png rename to assets/img/custom/B1L11.png diff --git a/assets/img/B1L2.png b/assets/img/custom/B1L2.png similarity index 100% rename from assets/img/B1L2.png rename to assets/img/custom/B1L2.png diff --git a/assets/img/B1L3.png b/assets/img/custom/B1L3.png similarity index 100% rename from assets/img/B1L3.png rename to assets/img/custom/B1L3.png diff --git a/assets/img/B1L4.png b/assets/img/custom/B1L4.png similarity index 100% rename from assets/img/B1L4.png rename to assets/img/custom/B1L4.png diff --git a/assets/img/B1L5.png b/assets/img/custom/B1L5.png similarity index 100% rename from assets/img/B1L5.png rename to assets/img/custom/B1L5.png diff --git a/assets/img/B1L6.png b/assets/img/custom/B1L6.png similarity index 100% rename from assets/img/B1L6.png rename to assets/img/custom/B1L6.png diff --git a/assets/img/B1L7.png b/assets/img/custom/B1L7.png similarity index 100% rename from assets/img/B1L7.png rename to assets/img/custom/B1L7.png diff --git a/assets/img/B1L8.png b/assets/img/custom/B1L8.png similarity index 100% rename from assets/img/B1L8.png rename to assets/img/custom/B1L8.png diff --git a/assets/img/B1L9.png b/assets/img/custom/B1L9.png similarity index 100% rename from assets/img/B1L9.png rename to assets/img/custom/B1L9.png diff --git a/assets/img/B2L1.png b/assets/img/custom/B2L1.png similarity index 100% rename from assets/img/B2L1.png rename to assets/img/custom/B2L1.png diff --git a/assets/img/B2L2.png b/assets/img/custom/B2L2.png similarity index 100% rename from assets/img/B2L2.png rename to assets/img/custom/B2L2.png diff --git a/assets/img/B2L3.png b/assets/img/custom/B2L3.png similarity index 100% rename from assets/img/B2L3.png rename to assets/img/custom/B2L3.png diff --git a/assets/img/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg b/assets/img/custom/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg similarity index 100% rename from assets/img/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg rename to assets/img/custom/CBB4185D-144A-4B3C-882F-AEEE2A258D6C_1_102_o.jpeg diff --git a/assets/img/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg b/assets/img/custom/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg similarity index 100% rename from assets/img/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg rename to assets/img/custom/D1001C48-CA81-408F-A16D-B0F28EA00E2B_1_102_o.jpeg diff --git a/assets/img/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg b/assets/img/custom/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg similarity index 100% rename from assets/img/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg rename to assets/img/custom/F69F6C15-A587-4ECB-9195-AFDA5658BCB9_1_102_o.jpeg diff --git a/assets/img/IMG_0020.png b/assets/img/custom/IMG_0020.png similarity index 100% rename from assets/img/IMG_0020.png rename to assets/img/custom/IMG_0020.png diff --git a/assets/img/IMG_0021.png b/assets/img/custom/IMG_0021.png similarity index 100% rename from assets/img/IMG_0021.png rename to assets/img/custom/IMG_0021.png diff --git a/assets/img/IMG_0022.png b/assets/img/custom/IMG_0022.png similarity index 100% rename from assets/img/IMG_0022.png rename to assets/img/custom/IMG_0022.png diff --git a/assets/img/PS3.png b/assets/img/custom/PS3.png similarity index 100% rename from assets/img/PS3.png rename to assets/img/custom/PS3.png diff --git a/assets/img/coin_flipping.png b/assets/img/custom/coin_flipping.png similarity index 100% rename from assets/img/coin_flipping.png rename to assets/img/custom/coin_flipping.png diff --git a/assets/img/hamiltonian.excalidraw b/assets/img/custom/hamiltonian.excalidraw similarity index 100% rename from assets/img/hamiltonian.excalidraw rename to assets/img/custom/hamiltonian.excalidraw diff --git a/assets/img/hamiltonian.png b/assets/img/custom/hamiltonian.png similarity index 100% rename from assets/img/hamiltonian.png rename to assets/img/custom/hamiltonian.png diff --git a/assets/img/headshot.jpeg b/assets/img/custom/headshot.jpeg similarity index 100% rename from assets/img/headshot.jpeg rename to assets/img/custom/headshot.jpeg diff --git a/assets/img/hmc0.png b/assets/img/custom/hmc0.png similarity index 100% rename from assets/img/hmc0.png rename to assets/img/custom/hmc0.png diff --git a/assets/img/hmc1.png b/assets/img/custom/hmc1.png similarity index 100% rename from assets/img/hmc1.png rename to assets/img/custom/hmc1.png diff --git a/assets/img/image.png b/assets/img/custom/image.png similarity index 100% rename from assets/img/image.png rename to assets/img/custom/image.png diff --git a/assets/img/image_2.png b/assets/img/custom/image_2.png similarity index 100% rename from assets/img/image_2.png rename to assets/img/custom/image_2.png diff --git a/assets/img/image_3.png b/assets/img/custom/image_3.png similarity index 100% rename from assets/img/image_3.png rename to assets/img/custom/image_3.png diff --git a/assets/img/interval_detector.png b/assets/img/custom/interval_detector.png similarity index 100% rename from assets/img/interval_detector.png rename to assets/img/custom/interval_detector.png diff --git a/assets/img/ios_apps.excalidraw b/assets/img/custom/ios_apps.excalidraw similarity index 100% rename from assets/img/ios_apps.excalidraw rename to assets/img/custom/ios_apps.excalidraw diff --git a/assets/img/ios_apps.png b/assets/img/custom/ios_apps.png similarity index 100% rename from assets/img/ios_apps.png rename to assets/img/custom/ios_apps.png diff --git a/assets/img/ising.excalidraw b/assets/img/custom/ising.excalidraw similarity index 100% rename from assets/img/ising.excalidraw rename to assets/img/custom/ising.excalidraw diff --git a/assets/img/ising.png b/assets/img/custom/ising.png similarity index 100% rename from assets/img/ising.png rename to assets/img/custom/ising.png diff --git a/assets/img/ising_computation.png b/assets/img/custom/ising_computation.png similarity index 100% rename from assets/img/ising_computation.png rename to assets/img/custom/ising_computation.png diff --git a/assets/img/ising_model_out/ising_model_4_1.png b/assets/img/custom/ising_model_out/ising_model_4_1.png similarity index 100% rename from assets/img/ising_model_out/ising_model_4_1.png rename to assets/img/custom/ising_model_out/ising_model_4_1.png diff --git a/assets/img/ising_model_out/ising_model_5_0.png b/assets/img/custom/ising_model_out/ising_model_5_0.png similarity index 100% rename from assets/img/ising_model_out/ising_model_5_0.png rename to assets/img/custom/ising_model_out/ising_model_5_0.png diff --git a/assets/img/ising_model_out/ising_model_5_1.png b/assets/img/custom/ising_model_out/ising_model_5_1.png similarity index 100% rename from assets/img/ising_model_out/ising_model_5_1.png rename to assets/img/custom/ising_model_out/ising_model_5_1.png diff --git a/assets/img/ising_speed.png b/assets/img/custom/ising_speed.png similarity index 100% rename from assets/img/ising_speed.png rename to assets/img/custom/ising_speed.png diff --git a/assets/img/kernels.png b/assets/img/custom/kernels.png similarity index 100% rename from assets/img/kernels.png rename to assets/img/custom/kernels.png diff --git a/assets/img/kl_minimization.png b/assets/img/custom/kl_minimization.png similarity index 100% rename from assets/img/kl_minimization.png rename to assets/img/custom/kl_minimization.png diff --git a/assets/img/least_squares_action.excalidraw b/assets/img/custom/least_squares_action.excalidraw similarity index 100% rename from assets/img/least_squares_action.excalidraw rename to assets/img/custom/least_squares_action.excalidraw diff --git a/assets/img/least_squares_action.png b/assets/img/custom/least_squares_action.png similarity index 100% rename from assets/img/least_squares_action.png rename to assets/img/custom/least_squares_action.png diff --git a/assets/img/mindmap.png b/assets/img/custom/mindmap.png similarity index 100% rename from assets/img/mindmap.png rename to assets/img/custom/mindmap.png diff --git a/assets/img/numpy_financial.png b/assets/img/custom/numpy_financial.png similarity index 100% rename from assets/img/numpy_financial.png rename to assets/img/custom/numpy_financial.png diff --git a/assets/img/path_minimization.png b/assets/img/custom/path_minimization.png similarity index 100% rename from assets/img/path_minimization.png rename to assets/img/custom/path_minimization.png diff --git a/assets/img/pico.png b/assets/img/custom/pico.png similarity index 100% rename from assets/img/pico.png rename to assets/img/custom/pico.png diff --git a/assets/img/ugm.png b/assets/img/custom/ugm.png similarity index 100% rename from assets/img/ugm.png rename to assets/img/custom/ugm.png diff --git a/assets/js/custom/gp/bundle.js b/assets/js/custom/gp/bundle.js new file mode 100644 index 00000000000..c80c12382e4 --- /dev/null +++ b/assets/js/custom/gp/bundle.js @@ -0,0 +1,2 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=26)}([function(t,e,n){"use strict";const r=n(3),i={number:n(6),string:n(7),object:n(8)},a=({validators:t=[],predicates:e=i,type:n=null}={})=>{const s=new Proxy(function(){},{get:(i,o)=>{if(o===r.validate)return(e,r="argument")=>{if(!n)return new Erroar("missing required type specifier");for(let i=0;i{throw new Error(`invalid use of functional predicate "${o}"`)},apply:(e,r,i)=>(t.push({key:o,fn:n(...i)}),s)}):s}},apply:(t,e,n)=>{if(2!==n.length&&3!==n.length)throw new Error('invalid number of arguments to "ow"');n[1][r.validate](n[0],n[2])}});return s};t.exports=a()},function(t,e,n){"use strict";const r=Object.prototype.toString;t.exports=function(t){return r.call(t).endsWith("Array]")}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n2?n-2:0),i=2;it>0,negative:t=>t<0,nonNegative:t=>t>=0,integer:t=>t===(0|t),[r]:{is:t=>t,eq:t=>e=>e===t,gt:t=>e=>e>t,gte:t=>e=>e>=t,lt:t=>e=>ee=>e<=t}};t.exports={predicates:i,validator:t=>"number"==typeof t}},function(t,e,n){"use strict";const{func:r}=n(3),i={empty:t=>""===t,nonEmpty:t=>""!==t,[r]:{is:t=>t,eq:t=>e=>e===t,length:t=>e=>e.length===t,minLength:t=>e=>e.length>=t,maxLength:t=>e=>e.length<=t,matches:t=>e=>t.test(e),startsWith:t=>e=>e.startsWith(t),endsWith:t=>e=>e.endsWith(t)}};t.exports={predicates:i,validator:t=>"string"==typeof t}},function(t,e,n){"use strict";const{func:r}=n(3),i={plain:t=>{if("object"!=typeof t)return!1;const e=Object.getPrototypeOf(t);return null===e||e===Object.getPrototypeOf({})},empty:t=>0===Object.keys(t).length,nonEmpty:t=>Object.keys(t).length>0,[r]:{is:t=>t,instanceOf:t=>e=>e instanceof t}};t.exports={predicates:i,validator:t=>"object"==typeof t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=c(n(2)),a=c(n(10)),s=c(n(11)),o=c(n(12));function c(t){return t&&t.__esModule?t:{default:t}}var u={xor128:a.default,function:s.default,default:o.default};e.default=function(){for(var t=arguments.length,e=Array(t),n=0;n>>19^t^t>>>8,(this.w>>>0)/4294967296}},{key:"seed",value:function(t,e){this.x=this._seed(t,e);for(var n=0;n<64;++n)this.next()}},{key:"clone",value:function(t,n){return new e(t,n)}},{key:"name",get:function(){return"xor128"}}]),e}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n=.5}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,a.default)(e,a.default.number),(0,a.default)(n,a.default.number),function(){var r=void 0,i=void 0,a=void 0;do{a=(r=2*t.next()-1)*r+(i=2*t.next()-1)*i}while(!a||a>1);return e+n*i*Math.sqrt(-2*Math.log(a)/a)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:.5;return(0,a.default)(e,a.default.number.gte(0).lt(1)),function(){return t.next()+e|0}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5;return(0,a.default)(e,a.default.number.positive.integer),(0,a.default)(n,a.default.number.gte(0).lte(1)),function(){for(var r=0,i=0;r++1&&void 0!==arguments[1]?arguments[1]:.5;(0,a.default)(e,a.default.number.gt(0).lte(1));var n=1/Math.log(1-e);return function(){return 1+Math.log(t.next())*n|0}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};var s=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469],o=function(t){return s[t]};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if((0,a.default)(e,a.default.number.positive),e<10){var n=Math.exp(-e);return function(){for(var r=n,i=0,a=t.next();a>r;)a-=r,r=e*r/++i;return i}}var r=Math.sqrt(e),i=.931+2.53*r,s=.02483*i-.059,c=1.1239+1.1328/(i-3.4),u=.9277-3.6224/(i-2);return function(){for(;;){var n=void 0,a=t.next();if(a<=.86*u)return n=a/u-.43,Math.floor((2*s/(.5-Math.abs(n))+i)*n+e+.445);a>=u?n=t.next()-.5:(n=((n=a/u-.93)<0?-.5:.5)-n,a=t.next()*u);var f=.5-Math.abs(n);if(!(f<.013&&a>f)){var l=0|Math.floor((2*s/f+i)*n+e+.445);if(a=a*c/(s/(f*f)+i),l>=10){var h=(l+.5)*Math.log(e/l)-e-.9189385332046727+l-(1/12-(1/360-1/(1260*l*l))/(l*l))/l;if(Math.log(a*r)<=h)return l}else if(l>=0&&Math.log(a)<=l*Math.log(e)-e-o(l))return l}}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return(0,a.default)(e,a.default.number.positive),function(){return-Math.log(1-t.next())/e}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return(0,a.default)(e,a.default.number.integer.gte(0)),function(){for(var n=0,r=0;r1&&void 0!==arguments[1]?arguments[1]:1;(0,a.default)(e,a.default.number.integer.positive);var n=t.irwinHall(e);return function(){return n()/e}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(0),a=(r=i)&&r.__esModule?r:{default:r};e.default=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;(0,a.default)(e,a.default.number.gte(0));var n=1/e;return function(){return 1/Math.pow(1-t.next(),n)}}},function(t,e,n){"use strict";function r(){}function i(t,e){for(var n in e)t[n]=e[n];return t}function a(t,e){for(var n in e)t[n]=1;return t}function s(t,e){t.appendChild(e)}function o(t,e,n){t.insertBefore(e,n)}function c(t){t.parentNode.removeChild(t)}function u(t,e){for(var n=0;ne?1:t>=e?0:NaN},z=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return j(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var q=z(j),D=q.right,L=(q.left,D);var O=Array.prototype,I=(O.slice,O.map,function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),a=new Array(i);++r0)return[t];if((r=e0)for(t=Math.ceil(t/s),e=Math.floor(e/s),a=new Array(i=Math.ceil(e-t+1));++o=0?(a>=U?10:a>=V?5:a>=B?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=U?10:a>=V?5:a>=B?2:1)}function $(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=U?i*=10:a>=V?i*=5:a>=B&&(i*=2),e=0;)for(e=(r=t[i]).length;--e>=0;)n[--s]=r[e];return n};function G(t){return t.length}var W=function(){return function(t){if(!(i=t.length))return[];for(var e=-1,n=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a=n)for(r=n;++an&&(r=n)}else for(;++a=n)for(r=n;++an&&(r=n);return r}(t,G),r=new Array(n);++e=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),s=-1,o=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s0)for(var n,r,i=new Array(n),a=0;a=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),dt.hasOwnProperty(e)?{space:dt[e],local:t}:t};var pt=function(t){var e=gt(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===ht&&e.documentElement.namespaceURI===ht?e.createElement(t):e.createElementNS(n,t)}})(e)};function vt(){}var mt=function(t){return null==t?vt:function(){return this.querySelector(t)}};function xt(){return[]}var bt=function(t){return null==t?xt:function(){return this.querySelectorAll(t)}},yt=function(t){return function(){return this.matches(t)}},_t=function(t){return new Array(t.length)};function wt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}wt.prototype={constructor:wt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Mt="$";function kt(t,e,n,r,i,a){for(var s,o=0,c=e.length,u=a.length;oe?1:t>=e?0:NaN}var Pt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Ct(t,e){return t.style.getPropertyValue(e)||Pt(t).getComputedStyle(t,null).getPropertyValue(e)}function Nt(t){return t.trim().split(/^|\s+/)}function Tt(t){return t.classList||new Et(t)}function Et(t){this._node=t,this._names=Nt(t.getAttribute("class")||"")}function Rt(t,e){for(var n=Tt(t),r=-1,i=e.length;++r=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function zt(){this.textContent=""}function qt(){this.innerHTML=""}function Dt(){this.nextSibling&&this.parentNode.appendChild(this)}function Lt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ot(){return null}function It(){var t=this.parentNode;t&&t.removeChild(this)}function Ut(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function Vt(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var Bt={},Ft=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Bt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Yt(t,e,n){return t=$t(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function $t(t,e,n){return function(r){var i=Ft;Ft=r;try{t.call(this,this.__data__,e,n)}finally{Ft=i}}}function Ht(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r=_&&(_=y+1);!(b=m[_])&&++_=0;)(r=i[a])&&(s&&4^r.compareDocumentPosition(s)&&s.parentNode.insertBefore(r,s),s=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=At);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a1?this.each((null==e?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof e?function(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}:function(t,e,n){return function(){this.style.setProperty(t,e,n)}})(t,e,null==n?"":n)):Ct(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?function(t){return function(){delete this[t]}}:"function"==typeof e?function(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}:function(t,e){return function(){this[t]=e}})(t,e)):this.node()[t]},classed:function(t,e){var n=Nt(t+"");if(arguments.length<2){for(var r=Tt(this.node()),i=-1,a=n.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),s=a.length;if(!(arguments.length<2)){for(o=e?Gt:Ht,null==n&&(n=!1),r=0;rl}c.mouse("drag")}function p(){te(Ft.view).on("mousemove.drag mouseup.drag",null),fe(Ft.view,n),ce(),c.mouse("end")}function v(){if(i.apply(this,arguments)){var t,e,n=Ft.changedTouches,r=a.apply(this,arguments),s=n.length;for(t=0;t>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):(e=Se.exec(t))?ze(parseInt(e[1],16)):(e=Ae.exec(t))?new Oe(e[1],e[2],e[3],1):(e=Pe.exec(t))?new Oe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ce.exec(t))?qe(e[1],e[2],e[3],e[4]):(e=Ne.exec(t))?qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Te.exec(t))?Ue(e[1],e[2]/100,e[3]/100,1):(e=Ee.exec(t))?Ue(e[1],e[2]/100,e[3]/100,e[4]):Re.hasOwnProperty(t)?ze(Re[t]):"transparent"===t?new Oe(NaN,NaN,NaN,0):null}function ze(t){return new Oe(t>>16&255,t>>8&255,255&t,1)}function qe(t,e,n,r){return r<=0&&(t=e=n=NaN),new Oe(t,e,n,r)}function De(t){return t instanceof ye||(t=je(t)),t?new Oe((t=t.rgb()).r,t.g,t.b,t.opacity):new Oe}function Le(t,e,n,r){return 1===arguments.length?De(t):new Oe(t,e,n,null==r?1:r)}function Oe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Ie(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Ue(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Be(t,e,n,r)}function Ve(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof Be)return new Be(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=je(t)),!t)return new Be;if(t instanceof Be)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),s=NaN,o=a-i,c=(a+i)/2;return o?(s=e===a?(n-r)/o+6*(n0&&c<1?0:s,new Be(s,o,c,t.opacity)}(t):new Be(t,e,n,null==r?1:r)}function Be(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Fe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}xe(ye,je,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),xe(Oe,Le,be(ye,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Oe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+Ie(this.r)+Ie(this.g)+Ie(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),xe(Be,Ve,be(ye,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Be(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Be(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Oe(Fe(t>=240?t-240:t+120,i,r),Fe(t,i,r),Fe(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Ye=Math.PI/180,$e=180/Math.PI,He=.96422,Ge=1,We=.82521,Xe=4/29,Ke=6/29,Ze=3*Ke*Ke,Qe=Ke*Ke*Ke;function Je(t){if(t instanceof en)return new en(t.l,t.a,t.b,t.opacity);if(t instanceof un){if(isNaN(t.h))return new en(t.l,0,0,t.opacity);var e=t.h*Ye;return new en(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof Oe||(t=De(t));var n,r,i=sn(t.r),a=sn(t.g),s=sn(t.b),o=nn((.2225045*i+.7168786*a+.0606169*s)/Ge);return i===a&&a===s?n=r=o:(n=nn((.4360747*i+.3850649*a+.1430804*s)/He),r=nn((.0139322*i+.0971045*a+.7141733*s)/We)),new en(116*o-16,500*(n-o),200*(o-r),t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Je(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function nn(t){return t>Qe?Math.pow(t,1/3):t/Ze+Xe}function rn(t){return t>Ke?t*t*t:Ze*(t-Xe)}function an(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function sn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function on(t){if(t instanceof un)return new un(t.h,t.c,t.l,t.opacity);if(t instanceof en||(t=Je(t)),0===t.a&&0===t.b)return new un(NaN,0,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*$e;return new un(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function cn(t,e,n,r){return 1===arguments.length?on(t):new un(t,e,n,null==r?1:r)}function un(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}xe(en,tn,be(ye,{brighter:function(t){return new en(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new en(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Oe(an(3.1338561*(e=He*rn(e))-1.6168667*(t=Ge*rn(t))-.4906146*(n=We*rn(n))),an(-.9787684*e+1.9161415*t+.033454*n),an(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),xe(un,cn,be(ye,{brighter:function(t){return new un(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new un(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Je(this).rgb()}}));var fn=-.29227,ln=-.90649,hn=1.97294,dn=hn*ln,gn=1.78277*hn,pn=1.78277*fn- -.14861*ln;function vn(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof mn)return new mn(t.h,t.s,t.l,t.opacity);t instanceof Oe||(t=De(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(pn*r+dn*e-gn*n)/(pn+dn-gn),a=r-i,s=(hn*(n-i)-fn*a)/ln,o=Math.sqrt(s*s+a*a)/(hn*i*(1-i)),c=o?Math.atan2(s,a)*$e-120:NaN;return new mn(c<0?c+360:c,o,i,t.opacity)}(t):new mn(t,e,n,null==r?1:r)}function mn(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function xn(t,e,n,r,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*r+s*i)/6}xe(mn,vn,be(ye,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new mn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new mn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Ye,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new Oe(255*(e+n*(-.14861*r+1.78277*i)),255*(e+n*(fn*r+ln*i)),255*(e+n*(hn*r)),this.opacity)}}));var bn=function(t){return function(){return t}};function yn(t,e){return function(n){return t+n*e}}function _n(t,e){var n=e-t;return n?yn(t,n>180||n<-180?n-360*Math.round(n/360):n):bn(isNaN(t)?e:t)}function wn(t){return 1==(t=+t)?Mn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):bn(isNaN(e)?n:e)}}function Mn(t,e){var n=e-t;return n?yn(t,n):bn(isNaN(t)?e:t)}var kn=function t(e){var n=wn(e);function r(t,e){var r=n((t=Le(t)).r,(e=Le(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),s=Mn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=s(e),t+""}}return r.gamma=t,r}(1);function Sn(t){return function(e){var n,r,i=e.length,a=new Array(i),s=new Array(i),o=new Array(i);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],s=r>0?t[r-1]:2*i-a,o=ra&&(i=e.slice(a,i),o[s]?o[s]+=i:o[++s]=i),(n=n[0])===(r=r[0])?o[s]?o[s]+=r:o[++s]=r:(o[++s]=null,c.push({i:s,x:Pn(n,r)})),a=Nn.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Pn(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,s.rotate,o,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Pn(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,s.skewX,o,c),function(t,e,n,r,a,s){if(t!==n||e!==r){var o=a.push(i(a)+"scale(",null,",",null,")");s.push({i:o-4,x:Pn(t,n)},{i:o-2,x:Pn(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,c),a=s=null,function(t){for(var e,n=-1,r=c.length;++n=0&&e._call.call(null,t),e=e._next;--Xn}()}finally{Xn=0,function(){var t,e,n=Gn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Gn=e);Wn=t,fr(r)}(),tr=0}}function ur(){var t=nr.now(),e=t-Jn;e>Qn&&(er-=e,Jn=t)}function fr(t){Xn||(Kn&&(Kn=clearTimeout(Kn)),t-tr>24?(t<1/0&&(Kn=setTimeout(cr,t-nr.now()-er)),Zn&&(Zn=clearInterval(Zn))):(Zn||(Jn=nr.now(),Zn=setInterval(ur,Qn)),Xn=1,rr(cr)))}sr.prototype=or.prototype={constructor:sr,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?ir():+n)+(null==e?0:+e),this._next||Wn===this||(Wn?Wn._next=this:Gn=this,Wn=this),this._call=t,this._time=n,fr()},stop:function(){this._call&&(this._call=null,this._time=1/0,fr())}};var lr=function(t,e,n){var r=new sr;return e=null==e?0:+e,r.restart(function(n){r.stop(),t(n+e)},e,n),r},hr=lt("start","end","cancel","interrupt"),dr=[],gr=0,pr=1,vr=2,mr=3,xr=4,br=5,yr=6,_r=function(t,e,n,r,i,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,f,l,h;if(n.state!==pr)return o();for(u in i)if((h=i[u]).name===n.name){if(h.state===mr)return lr(a);h.state===xr?(h.state=yr,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[u]):+ugr)throw new Error("too late; already scheduled");return n}function Mr(t,e){var n=kr(t,e);if(n.state>mr)throw new Error("too late; already running");return n}function kr(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var Sr=function(t,e){var n,r,i,a=t.__transition,s=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>vr&&n.state=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?wr:Mr;return function(){var s=a(this,t),o=s.on;o!==r&&(i=(r=o).copy()).on(e,n),s.on=i}}(n,t,e))},attr:function(t,e){var n=gt(t),r="transform"===n?Bn:Pr;return this.attrTween(t,"function"==typeof e?(n.local?function(t,e,n){var r,i,a;return function(){var s,o,c=n(this);if(null!=c)return(s=this.getAttributeNS(t.space,t.local))===(o=c+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,c));this.removeAttributeNS(t.space,t.local)}}:function(t,e,n){var r,i,a;return function(){var s,o,c=n(this);if(null!=c)return(s=this.getAttribute(t))===(o=c+"")?null:s===r&&o===i?a:(i=o,a=e(r=s,c));this.removeAttribute(t)}})(n,r,Ar(this,"attr."+t,e)):null==e?(n.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(n):(n.local?function(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttributeNS(t.space,t.local);return s===a?null:s===r?i:i=e(r=s,n)}}:function(t,e,n){var r,i,a=n+"";return function(){var s=this.getAttribute(t);return s===a?null:s===r?i:i=e(r=s,n)}})(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=gt(t);return this.tween(n,(r.local?function(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e(n))}}(t,i)),n}return i._value=e,i}:function(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e(n))}}(t,i)),n}return i._value=e,i})(r,e))},style:function(t,e,n){var r="transform"==(t+="")?Vn:Pr;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=Ct(this,t),s=(this.style.removeProperty(t),Ct(this,t));return a===s?null:a===n&&s===r?i:i=e(n=a,r=s)}}(t,r)).on("end.style."+t,Nr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var s=Ct(this,t),o=n(this),c=o+"";return null==o&&(this.style.removeProperty(t),c=o=Ct(this,t)),s===c?null:s===r&&c===i?a:(i=c,a=e(r=s,o))}}(t,r,Ar(this,"style."+t,e))).each(function(t,e){var n,r,i,a,s="style."+e,o="end."+s;return function(){var c=Mr(this,t),u=c.on,f=null==c.value[s]?a||(a=Nr(e)):void 0;u===n&&i===f||(r=(n=u).copy()).on(o,i=f),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var s=Ct(this,t);return s===a?null:s===r?i:i=e(r=s,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&function(t,e,n){return function(r){this.style.setProperty(t,e(r),n)}}(t,a,n)),r}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Ar(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=kr(this.node(),n).tween,a=0,s=i.length;a1e-6)if(Math.abs(f*o-c*u)>1e-6&&i){var h=n-a,d=r-s,g=o*o+c*c,p=h*h+d*d,v=Math.sqrt(g),m=Math.sqrt(l),x=i*Math.tan((Or-Math.acos((g+l-p)/(2*v*m)))/2),b=x/m,y=x/v;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*u)+","+(e+b*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>u*d)+","+(this._x1=t+y*o)+","+(this._y1=e+y*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e;var s=(n=+n)*Math.cos(r),o=n*Math.sin(r),c=t+s,u=e+o,f=1^a,l=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-u)>1e-6)&&(this._+="L"+c+","+u),n&&(l<0&&(l=l%Ir+Ir),l>Ur?this._+="A"+n+","+n+",0,1,"+f+","+(t-s)+","+(e-o)+"A"+n+","+n+",0,1,"+f+","+(this._x1=c)+","+(this._y1=u):l>1e-6&&(this._+="A"+n+","+n+",0,"+ +(l>=Or)+","+f+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Fr=Br;function Yr(){}function $r(t,e){var n=new Yr;if(t instanceof Yr)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i=a?c=!0:(r=t.charCodeAt(s++))===Jr?u=!0:r===ti&&(u=!0,t.charCodeAt(s)===Jr&&++s),t.slice(i+1,e-1).replace(/""/g,'"')}for(;s=(a=(p+m)/2))?p=a:m=a,(f=n>=(s=(v+x)/2))?v=s:x=s,i=d,!(d=d[l=f<<1|u]))return i[l]=g,t;if(o=+t._x.call(null,d.data),c=+t._y.call(null,d.data),e===o&&n===c)return g.next=d,i?i[l]=g:t._root=g,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(u=e>=(a=(p+m)/2))?p=a:m=a,(f=n>=(s=(v+x)/2))?v=s:x=s}while((l=f<<1|u)==(h=(c>=s)<<1|o>=a));return i[h]=d,i[l]=g,t}var hi=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function di(t){return t[0]}function gi(t){return t[1]}function pi(t,e,n){var r=new vi(null==e?di:e,null==n?gi:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function vi(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function mi(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var xi=pi.prototype=vi.prototype;xi.copy=function(){var t,e,n=new vi(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=mi(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=mi(e));return n},xi.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return li(this.cover(e,n),e,n,t)},xi.addAll=function(t){var e,n,r,i,a=t.length,s=new Array(a),o=new Array(a),c=1/0,u=1/0,f=-1/0,l=-1/0;for(n=0;nf&&(f=r),il&&(l=i));for(ft||t>i||r>e||e>a))return this;var s,o,c=i-n,u=this._root;switch(o=(e<(r+a)/2)<<1|t<(n+i)/2){case 0:do{(s=new Array(4))[o]=u,u=s}while(a=r+(c*=2),t>(i=n+c)||e>a);break;case 1:do{(s=new Array(4))[o]=u,u=s}while(a=r+(c*=2),(n=i-c)>t||e>a);break;case 2:do{(s=new Array(4))[o]=u,u=s}while(r=a-(c*=2),t>(i=n+c)||r>e);break;case 3:do{(s=new Array(4))[o]=u,u=s}while(r=a-(c*=2),(n=i-c)>t||r>e)}this._root&&this._root.length&&(this._root=u)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this},xi.data=function(){var t=[];return this.visit(function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)}),t},xi.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},xi.find=function(t,e,n){var r,i,a,s,o,c,u,f=this._x0,l=this._y0,h=this._x1,d=this._y1,g=[],p=this._root;for(p&&g.push(new hi(p,f,l,h,d)),null==n?n=1/0:(f=t-n,l=e-n,h=t+n,d=e+n,n*=n);c=g.pop();)if(!(!(p=c.node)||(i=c.x0)>h||(a=c.y0)>d||(s=c.x1)=m)<<1|t>=v)&&(c=g[g.length-1],g[g.length-1]=g[g.length-1-u],g[g.length-1-u]=c)}else{var x=t-+this._x.call(null,p.data),b=e-+this._y.call(null,p.data),y=x*x+b*b;if(y=(o=(g+v)/2))?g=o:v=o,(f=s>=(c=(p+m)/2))?p=c:m=c,e=d,!(d=d[l=f<<1|u]))return this;if(!d.length)break;(e[l+1&3]||e[l+2&3]||e[l+3&3])&&(n=e,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[l]=i:delete e[l],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},xi.removeAll=function(t){for(var e=0,n=t.length;e1?r[0]+r.slice(2):r,+t.slice(n+1)]},yi=function(t){return(t=bi(Math.abs(t)))?t[1]:NaN},_i=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function wi(t){return new Mi(t)}function Mi(t){if(!(e=_i.exec(t)))throw new Error("invalid format: "+t);var e;this.fill=e[1]||" ",this.align=e[2]||">",this.sign=e[3]||"-",this.symbol=e[4]||"",this.zero=!!e[5],this.width=e[6]&&+e[6],this.comma=!!e[7],this.precision=e[8]&&+e[8].slice(1),this.trim=!!e[9],this.type=e[10]||""}wi.prototype=Mi.prototype,Mi.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ki,Si,Ai,Pi,Ci=function(t){t:for(var e,n=t.length,r=1,i=-1;r0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(e+1):t},Ni=function(t,e){var n=bi(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Ti={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Ni(100*t,e)},r:Ni,s:function(t,e){var n=bi(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(ki=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,s=r.length;return a===s?r:a>s?r+new Array(a-s+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+bi(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Ei=function(t){return t},Ri=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];Si=function(t){var e,n,r=t.grouping&&t.thousands?(e=t.grouping,n=t.thousands,function(t,r){for(var i=t.length,a=[],s=0,o=e[0],c=0;i>0&&o>0&&(c+o+1>r&&(o=Math.max(1,r-c)),a.push(t.substring(i-=o,i+o)),!((c+=o+1)>r));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}):Ei,i=t.currency,a=t.decimal,s=t.numerals?function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(t.numerals):Ei,o=t.percent||"%";function c(t){var e=(t=wi(t)).fill,n=t.align,c=t.sign,u=t.symbol,f=t.zero,l=t.width,h=t.comma,d=t.precision,g=t.trim,p=t.type;"n"===p?(h=!0,p="g"):Ti[p]||(null==d&&(d=12),g=!0,p="g"),(f||"0"===e&&"="===n)&&(f=!0,e="0",n="=");var v="$"===u?i[0]:"#"===u&&/[boxX]/.test(p)?"0"+p.toLowerCase():"",m="$"===u?i[1]:/[%p]/.test(p)?o:"",x=Ti[p],b=/[defgprs%]/.test(p);function y(t){var i,o,u,y=v,_=m;if("c"===p)_=x(t)+_,t="";else{var w=(t=+t)<0;if(t=x(Math.abs(t),d),g&&(t=Ci(t)),w&&0==+t&&(w=!1),y=(w?"("===c?c:"-":"-"===c||"("===c?"":c)+y,_=("s"===p?Ri[8+ki/3]:"")+_+(w&&"("===c?")":""),b)for(i=-1,o=t.length;++i(u=t.charCodeAt(i))||u>57){_=(46===u?a+t.slice(i+1):t.slice(i))+_,t=t.slice(0,i);break}}h&&!f&&(t=r(t,1/0));var M=y.length+t.length+_.length,k=M>1)+y+t+_+k.slice(M);break;default:t=k+y+t+_}return s(t)}return d=null==d?6:/[gprs]/.test(p)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),y.toString=function(){return t+""},y}return{format:c,formatPrefix:function(t,e){var n=c(((t=wi(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(yi(e)/3))),i=Math.pow(10,-r),a=Ri[8+r/3];return function(t){return n(i*t)+a}}}}({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),Ai=Si.format,Pi=Si.formatPrefix;var ji=function(){return new zi};function zi(){this.reset()}zi.prototype={constructor:zi,reset:function(){this.s=this.t=0},add:function(t){Di(qi,t,this.t),Di(this,qi.s,this.s),this.s?this.t+=qi.t:this.s=qi.t},valueOf:function(){return this.s}};var qi=new zi;function Di(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var Li=1e-6,Oi=Math.PI,Ii=Oi/2,Ui=Oi/4,Vi=2*Oi,Bi=Oi/180,Fi=Math.abs,Yi=Math.atan,$i=Math.atan2,Hi=Math.cos,Gi=(Math.ceil,Math.exp),Wi=(Math.floor,Math.log),Xi=(Math.pow,Math.sin),Ki=(Math.sign,Math.sqrt),Zi=Math.tan;function Qi(t){return t>1?0:t<-1?Oi:Math.acos(t)}function Ji(t){return t>1?Ii:t<-1?-Ii:Math.asin(t)}function ta(){}ji(),ji();function ea(t){var e=t[0],n=t[1],r=Hi(n);return[r*Hi(e),r*Xi(e),Xi(n)]}function na(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function ra(t){var e=Ki(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}ji();function ia(t,e){return[Fi(t)>Oi?t+Math.round(-t/Vi)*Vi:t,e]}ia.invert=ia;var aa=function(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:ta,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},sa=function(t,e){return Fi(t[0]-e[0])=0;--a)i.point((f=u[a])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}u=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function ua(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r=0?1:-1,S=k*M,A=S>Oi,P=p*_;if(fa.add($i(P*k*Xi(S),v*w+P*Hi(S))),s+=A?M+k*Vi:M,A^d>=n^b>=n){var C=na(ea(h),ea(x));ra(C);var N=na(a,C);ra(N);var T=(A^M>=0?-1:1)*Ji(N[2]);(r>T||r===T&&(C[0]||C[1]))&&(o+=A^M>=0?1:-1)}}return(s<-Li||s0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),s.push(h.filter(da))}return h}};function da(t){return t.length>1}function ga(t,e){return((t=t.x)[0]<0?t[1]-Ii-Li:Ii-t[1])-((e=e.x)[0]<0?e[1]-Ii-Li:Ii-e[1])}ha(function(){return!0},function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,s){var o=a>0?Oi:-Oi,c=Fi(a-n);Fi(c-Oi)0?Ii:-Ii),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),t.point(a,r),e=0):i!==o&&c>=Oi&&(Fi(n-i)Li?Yi((Xi(e)*(a=Hi(r))*Xi(n)-Xi(r)*(i=Hi(e))*Xi(t))/(i*a*s)):(e+r)/2}(n,r,a,s),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),e=0),t.point(n=a,r=s),i=o},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}},function(t,e,n,r){var i;if(null==t)i=n*Ii,r.point(-Oi,i),r.point(0,i),r.point(Oi,i),r.point(Oi,0),r.point(Oi,-i),r.point(0,-i),r.point(-Oi,-i),r.point(-Oi,0),r.point(-Oi,i);else if(Fi(t[0]-e[0])>Li){var a=t[0]Li&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};function za(t,e){return[Hi(e)*Xi(t),Xi(e)]}za.invert=_a(Ji);function qa(t,e){var n=Hi(e),r=1+Hi(t)*n;return[n*Xi(t)/r,Xi(e)/r]}qa.invert=_a(function(t){return 2*Yi(t)});function Da(t,e){return[Wi(Zi((Ii+e)/2)),-t]}Da.invert=function(t,e){return[-e,2*Yi(Gi(t))-Ii]};function La(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function Oa(t,e){var n,r,i,a,s,o=new Ba(t),c=+t.value&&(o.value=t.value),u=[o];for(null==e&&(e=Ia);n=u.pop();)if(c&&(n.value=+n.data.value),(i=e(n.data))&&(s=i.length))for(n.children=new Array(s),a=s-1;a>=0;--a)u.push(r=n.children[a]=new Ba(i[a])),r.parent=n,r.depth=n.depth+1;return o.eachBefore(Va)}function Ia(t){return t.children}function Ua(t){t.data=t.data.data}function Va(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Ba(t){this.data=t,this.depth=this.height=0,this.parent=null}Ba.prototype=Oa.prototype={constructor:Ba,count:function(){return this.eachAfter(La)},each:function(t){var e,n,r,i,a=this,s=[a];do{for(e=s.reverse(),s=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter(function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each(function(e){t.push(e)}),t},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e},copy:function(){return Oa(this).eachBefore(Ua)}};Array.prototype.slice;var Fa=function(t,e,n,r,i){for(var a,s=t.children,o=-1,c=s.length,u=t.value&&(r-e)/t.value;++oh&&(h=o),v=f*f*p,(d=Math.max(h/v,v/l))>g){f-=o;break}g=d}m.push(s={value:f,dice:c1?e:1)},n})(Ha),function t(e){function n(t,n,r,i,a){if((s=t._squarify)&&s.ratio===e)for(var s,o,c,u,f,l=-1,h=s.length,d=t.value;++l1?e:1)},n}(Ha);var Wa=function(){return Math.random()},Xa=(function t(e){function n(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return e()*n+t}}return n.source=t,n}(Wa),function t(e){function n(t,n){var r,i;return t=null==t?0:+t,n=null==n?1:+n,function(){var a;if(null!=r)a=r,r=null;else do{r=2*e()-1,a=2*e()-1,i=r*r+a*a}while(!i||i>1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Wa)),Ka=(function t(e){function n(){var t=Xa.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Wa),function t(e){function n(t){return function(){for(var n=0,r=0;rr&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function cs(t,e,n){var r=t[0],i=t[1],a=e[0],s=e[1];return i2?us:cs,i=a=null,l}function l(e){return isNaN(e=+e)?n:(i||(i=r(s.map(t),o,c)))(t(u(e)))}return l.invert=function(n){return u(e((a||(a=r(o,s.map(t),Pn)))(n)))},l.domain=function(t){return arguments.length?(s=ts.call(t,rs),u===as||(u=os(s)),f()):s.slice()},l.range=function(t){return arguments.length?(o=es.call(t),f()):o.slice()},l.rangeRound=function(t){return o=es.call(t),c=Dn,f()},l.clamp=function(t){return arguments.length?(u=t?os(s):as,l):u!==as},l.interpolate=function(t){return arguments.length?(c=t,f()):c},l.unknown=function(t){return arguments.length?(n=t,l):n},function(n,r){return t=n,e=r,f()}}function hs(t,e){return ls()(t,e)}var ds=function(t,e,n,r){var i,a=$(t,e,n);switch((r=wi(null==r?",f":r)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(yi(e)/3)))-yi(Math.abs(t)))}(a,s))||(r.precision=i),Pi(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,yi(e)-yi(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-yi(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return Ai(r)};function gs(t){var e=t.domain;return t.ticks=function(t){var n=e();return F(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ds(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,s=i.length-1,o=i[a],c=i[s];return c0?r=Y(o=Math.floor(o/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=Y(o=Math.ceil(o*r)/r,c=Math.floor(c*r)/r,n)),r>0?(i[a]=Math.floor(o/r)*r,i[s]=Math.ceil(c/r)*r,e(i)):r<0&&(i[a]=Math.ceil(o*r)/r,i[s]=Math.floor(c*r)/r,e(i)),t},t}function ps(){var t=hs(as,as);return t.copy=function(){return fs(t,ps())},Za.apply(t,arguments),gs(t)}var vs=new Date,ms=new Date;function xs(t,e,n,r){function i(e){return t(e=new Date(+e)),e}return i.floor=i,i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e0))return o;do{o.push(s=new Date(+n)),e(n,a),t(n)}while(s=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(i.count=function(e,r){return vs.setTime(+e),ms.setTime(+r),t(vs),t(ms),Math.floor(n(vs,ms))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var bs=xs(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});bs.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?xs(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):bs:null};bs.range;var ys=6e4,_s=6048e5,ws=xs(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(+t+1e3*e)},function(t,e){return(e-t)/1e3},function(t){return t.getUTCSeconds()}),Ms=(ws.range,xs(function(t){t.setTime(Math.floor(t/ys)*ys)},function(t,e){t.setTime(+t+e*ys)},function(t,e){return(e-t)/ys},function(t){return t.getMinutes()})),ks=(Ms.range,xs(function(t){var e=t.getTimezoneOffset()*ys%36e5;e<0&&(e+=36e5),t.setTime(36e5*Math.floor((+t-e)/36e5)+e)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getHours()})),Ss=(ks.range,xs(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ys)/864e5},function(t){return t.getDate()-1})),As=Ss;Ss.range;function Ps(t){return xs(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ys)/_s})}var Cs=Ps(0),Ns=Ps(1),Ts=Ps(2),Es=Ps(3),Rs=Ps(4),js=Ps(5),zs=Ps(6),qs=(Cs.range,Ns.range,Ts.range,Es.range,Rs.range,js.range,zs.range,xs(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),Ds=(qs.range,xs(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()}));Ds.every=function(t){return isFinite(t=Math.floor(t))&&t>0?xs(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null};var Ls=Ds,Os=(Ds.range,xs(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*ys)},function(t,e){return(e-t)/ys},function(t){return t.getUTCMinutes()})),Is=(Os.range,xs(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+36e5*e)},function(t,e){return(e-t)/36e5},function(t){return t.getUTCHours()})),Us=(Is.range,xs(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/864e5},function(t){return t.getUTCDate()-1})),Vs=Us;Us.range;function Bs(t){return xs(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/_s})}var Fs=Bs(0),Ys=Bs(1),$s=Bs(2),Hs=Bs(3),Gs=Bs(4),Ws=Bs(5),Xs=Bs(6),Ks=(Fs.range,Ys.range,$s.range,Hs.range,Gs.range,Ws.range,Xs.range,xs(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()})),Zs=(Ks.range,xs(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));Zs.every=function(t){return isFinite(t=Math.floor(t))&&t>0?xs(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null};var Qs=Zs;Zs.range;function Js(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function to(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function eo(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}var no,ro,io,ao={"-":"",_:" ",0:"0"},so=/^\s*\d+/,oo=/^%/,co=/[\\^$*+?|[\]().{}]/g;function uo(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a68?1900:2e3),n+r[0].length):-1}function _o(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function wo(t,e,n){var r=so.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Mo(t,e,n){var r=so.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function ko(t,e,n){var r=so.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function So(t,e,n){var r=so.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ao(t,e,n){var r=so.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Po(t,e,n){var r=so.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Co(t,e,n){var r=so.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function No(t,e,n){var r=so.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function To(t,e,n){var r=oo.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Eo(t,e,n){var r=so.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Ro(t,e,n){var r=so.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function jo(t,e){return uo(t.getDate(),e,2)}function zo(t,e){return uo(t.getHours(),e,2)}function qo(t,e){return uo(t.getHours()%12||12,e,2)}function Do(t,e){return uo(1+As.count(Ls(t),t),e,3)}function Lo(t,e){return uo(t.getMilliseconds(),e,3)}function Oo(t,e){return Lo(t,e)+"000"}function Io(t,e){return uo(t.getMonth()+1,e,2)}function Uo(t,e){return uo(t.getMinutes(),e,2)}function Vo(t,e){return uo(t.getSeconds(),e,2)}function Bo(t){var e=t.getDay();return 0===e?7:e}function Fo(t,e){return uo(Cs.count(Ls(t),t),e,2)}function Yo(t,e){var n=t.getDay();return t=n>=4||0===n?Rs(t):Rs.ceil(t),uo(Rs.count(Ls(t),t)+(4===Ls(t).getDay()),e,2)}function $o(t){return t.getDay()}function Ho(t,e){return uo(Ns.count(Ls(t),t),e,2)}function Go(t,e){return uo(t.getFullYear()%100,e,2)}function Wo(t,e){return uo(t.getFullYear()%1e4,e,4)}function Xo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+uo(e/60|0,"0",2)+uo(e%60,"0",2)}function Ko(t,e){return uo(t.getUTCDate(),e,2)}function Zo(t,e){return uo(t.getUTCHours(),e,2)}function Qo(t,e){return uo(t.getUTCHours()%12||12,e,2)}function Jo(t,e){return uo(1+Vs.count(Qs(t),t),e,3)}function tc(t,e){return uo(t.getUTCMilliseconds(),e,3)}function ec(t,e){return tc(t,e)+"000"}function nc(t,e){return uo(t.getUTCMonth()+1,e,2)}function rc(t,e){return uo(t.getUTCMinutes(),e,2)}function ic(t,e){return uo(t.getUTCSeconds(),e,2)}function ac(t){var e=t.getUTCDay();return 0===e?7:e}function sc(t,e){return uo(Fs.count(Qs(t),t),e,2)}function oc(t,e){var n=t.getUTCDay();return t=n>=4||0===n?Gs(t):Gs.ceil(t),uo(Gs.count(Qs(t),t)+(4===Qs(t).getUTCDay()),e,2)}function cc(t){return t.getUTCDay()}function uc(t,e){return uo(Ys.count(Qs(t),t),e,2)}function fc(t,e){return uo(t.getUTCFullYear()%100,e,2)}function lc(t,e){return uo(t.getUTCFullYear()%1e4,e,4)}function hc(){return"+0000"}function dc(){return"%"}function gc(t){return+t}function pc(t){return Math.floor(+t/1e3)}!function(t){no=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,s=t.shortDays,o=t.months,c=t.shortMonths,u=lo(i),f=ho(i),l=lo(a),h=ho(a),d=lo(s),g=ho(s),p=lo(o),v=ho(o),m=lo(c),x=ho(c),b={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:jo,e:jo,f:Oo,H:zo,I:qo,j:Do,L:Lo,m:Io,M:Uo,p:function(t){return i[+(t.getHours()>=12)]},Q:gc,s:pc,S:Vo,u:Bo,U:Fo,V:Yo,w:$o,W:Ho,x:null,X:null,y:Go,Y:Wo,Z:Xo,"%":dc},y={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:Ko,e:Ko,f:ec,H:Zo,I:Qo,j:Jo,L:tc,m:nc,M:rc,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:gc,s:pc,S:ic,u:ac,U:sc,V:oc,w:cc,W:uc,x:null,X:null,y:fc,Y:lc,Z:hc,"%":dc},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=g[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=l.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=x[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=p.exec(e.slice(n));return r?(t.m=v[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return k(t,e,n,r)},d:Mo,e:Mo,f:No,H:So,I:So,j:ko,L:Co,m:wo,M:Ao,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=f[r[0].toLowerCase()],n+r[0].length):-1},Q:Eo,s:Ro,S:Po,u:po,U:vo,V:mo,w:go,W:xo,x:function(t,e,r){return k(t,n,e,r)},X:function(t,e,n){return k(t,r,e,n)},y:yo,Y:bo,Z:_o,"%":To};function w(t,e){return function(n){var r,i,a,s=[],o=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++o53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=to(eo(a.y))).getUTCDay(),r=i>4||0===i?Ys.ceil(r):Ys(r),r=Vs.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=e(eo(a.y))).getDay(),r=i>4||0===i?Ns.ceil(r):Ns(r),r=As.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?to(eo(a.y)).getUTCDay():e(eo(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,to(a)):e(a)}}function k(t,e,n,r){for(var i,a,s=0,o=e.length,c=n.length;s=c)return-1;if(37===(i=e.charCodeAt(s++))){if(i=e.charAt(s++),!(a=_[i in ao?e.charAt(s++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),y.x=w(n,y),y.X=w(r,y),y.c=w(e,y),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=M(t+="",Js);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",y);return e.toString=function(){return t},e},utcParse:function(t){var e=M(t,to);return e.toString=function(){return t},e}}}(t),no.format,no.parse,ro=no.utcFormat,io=no.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||ro("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||io("%Y-%m-%dT%H:%M:%S.%LZ");function vc(){var t,e,n,r,i,a=0,s=1,o=as,c=!1;function u(e){return isNaN(e=+e)?i:o(0===n?.5:(e=(r(e)-t)*n,c?Math.max(0,Math.min(1,e)):e))}return u.domain=function(i){return arguments.length?(t=r(a=+i[0]),e=r(s=+i[1]),n=t===e?0:1/(e-t),u):[a,s]},u.clamp=function(t){return arguments.length?(c=!!t,u):c},u.interpolator=function(t){return arguments.length?(o=t,u):o},u.unknown=function(t){return arguments.length?(i=t,u):i},function(i){return r=i,t=i(a),e=i(s),n=t===e?0:1/(e-t),u}}function mc(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function xc(){var t=gs(vc()(as));return t.copy=function(){return mc(t,xc())},Qa.apply(t,arguments)}var bc=function(t){for(var e=t.length/6|0,n=new Array(e),r=0;r=f;--l)o.point(v[l],m[l]);o.lineEnd(),o.areaEnd()}p&&(v[u]=+t(h,u,c),m[u]=+n(h,u,c),o.point(e?+e(h,u,c):v[u],r?+r(h,u,c):m[u]))}if(d)return o=null,d+""||null}function u(){return jc().defined(i).curve(s).context(a)}return c.x=function(n){return arguments.length?(t="function"==typeof n?n:Sc(+n),e=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:Sc(+e),c):t},c.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:Sc(+t),c):e},c.y=function(t){return arguments.length?(n="function"==typeof t?t:Sc(+t),r=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:Sc(+t),c):n},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:Sc(+t),c):r},c.lineX0=c.lineY0=function(){return u().x(t).y(n)},c.lineY1=function(){return u().x(t).y(r)},c.lineX1=function(){return u().x(e).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:Sc(!!t),c):i},c.curve=function(t){return arguments.length?(s=t,null!=a&&(o=s(a)),c):s},c.context=function(t){return arguments.length?(null==t?a=o=null:o=s(a=t),c):a},c};Dc(Tc);function qc(t){this._curve=t}function Dc(t){function e(e){return new qc(t(e))}return e._curve=t,e}qc.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};Array.prototype.slice;Math.sqrt(1/3);var Lc=Math.sin(Pc/10)/Math.sin(7*Pc/10),Oc=(Math.sin(Cc/10),Math.cos(Cc/10),Math.sqrt(3),Math.sqrt(3),Math.sqrt(12),function(){});function Ic(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Uc(t){this._context=t}Uc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ic(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ic(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Vc(t){this._context=t}Vc.prototype={areaStart:Oc,areaEnd:Oc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Ic(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Bc(t){this._context=t}Bc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:Ic(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Fc(t,e){this._basis=new Uc(t),this._beta=e}Fc.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],s=t[n]-i,o=e[n]-a,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*s),this._beta*e[c]+(1-this._beta)*(a+r*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};(function t(e){function n(t){return 1===e?new Uc(t):new Fc(t,e)}return n.beta=function(e){return t(+e)},n})(.85);function Yc(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function $c(t,e){this._context=t,this._k=(1-e)/6}$c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Yc(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Yc(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new $c(t,e)}return n.tension=function(e){return t(+e)},n})(0);function Hc(t,e){this._context=t,this._k=(1-e)/6}Hc.prototype={areaStart:Oc,areaEnd:Oc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Yc(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new Hc(t,e)}return n.tension=function(e){return t(+e)},n})(0);function Gc(t,e){this._context=t,this._k=(1-e)/6}Gc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Yc(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return new Gc(t,e)}return n.tension=function(e){return t(+e)},n})(0);function Wc(t,e,n){var r=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Ac){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Ac){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*u+t._y1*t._l23_2a-n*t._l12_2a)/f}t._context.bezierCurveTo(r,i,a,s,t._x2,t._y2)}function Xc(t,e){this._context=t,this._alpha=e}Xc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Wc(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new Xc(t,e):new $c(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function Kc(t,e){this._context=t,this._alpha=e}Kc.prototype={areaStart:Oc,areaEnd:Oc,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Wc(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new Kc(t,e):new Hc(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function Zc(t,e){this._context=t,this._alpha=e}Zc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Wc(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function n(t){return e?new Zc(t,e):new Gc(t,0)}return n.alpha=function(e){return t(+e)},n})(.5);function Qc(t){this._context=t}Qc.prototype={areaStart:Oc,areaEnd:Oc,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Jc(t){return t<0?-1:1}function tu(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),s=(n-t._y1)/(i||r<0&&-0),o=(a*i+s*r)/(r+i);return(Jc(a)+Jc(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function eu(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function nu(t,e,n){var r=t._x0,i=t._y0,a=t._x1,s=t._y1,o=(a-r)/3;t._context.bezierCurveTo(r+o,i+o*e,a-o,s-o*n,a,s)}function ru(t){this._context=t}function iu(t){this._context=new au(t)}function au(t){this._context=t}function su(t){this._context=t}function ou(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};function uu(t){return new cu(t,0)}function fu(){this._=null}function lu(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function hu(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function du(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function gu(t){for(;t.L;)t=t.L;return t}fu.prototype={constructor:fu,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=gu(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(hu(this,n),n=(t=n).U),n.C=!1,r.C=!0,du(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(du(this,n),n=(t=n).U),n.C=!1,r.C=!0,hu(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,a=t.L,s=t.R;if(n=a?s?gu(s):a:s,i?i.L===t?i.L=n:i.R=n:this._=n,a&&s?(r=n.C,n.C=t.C,n.L=a,a.U=n,n!==s?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=s,s.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,hu(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,du(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,hu(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,du(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,hu(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,du(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var pu=fu;function vu(t,e,n,r){var i=[null,null],a=Uu.push(i)-1;return i.left=t,i.right=e,n&&xu(i,t,e,n),r&&xu(i,e,t,r),Ou[t.index].halfedges.push(a),Ou[e.index].halfedges.push(a),i}function mu(t,e,n){var r=[e,n];return r.left=t,r}function xu(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function bu(t,e,n,r,i){var a,s=t[0],o=t[1],c=s[0],u=s[1],f=0,l=1,h=o[0]-c,d=o[1]-u;if(a=e-c,h||!(a>0)){if(a/=h,h<0){if(a0){if(a>l)return;a>f&&(f=a)}if(a=r-c,h||!(a<0)){if(a/=h,h<0){if(a>l)return;a>f&&(f=a)}else if(h>0){if(a0)){if(a/=d,d<0){if(a0){if(a>l)return;a>f&&(f=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>l)return;a>f&&(f=a)}else if(d>0){if(a0||l<1)||(f>0&&(t[0]=[c+f*h,u+f*d]),l<1&&(t[1]=[c+l*h,u+l*d]),!0)}}}}}function yu(t,e,n,r,i){var a=t[1];if(a)return!0;var s,o,c=t[0],u=t.left,f=t.right,l=u[0],h=u[1],d=f[0],g=f[1],p=(l+d)/2,v=(h+g)/2;if(g===h){if(p=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[p,n];a=[p,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(n-o)/s,n];a=[(i-o)/s,i]}else{if(c){if(c[1]=r)return}else c=[e,s*e+o];a=[r,s*r+o]}else{if(c){if(c[0]=-Bu)){var d=c*c+u*u,g=f*f+l*l,p=(l*d-u*g)/h,v=(c*g-f*d)/h,m=Su.pop()||new Au;m.arc=t,m.site=i,m.x=p+s,m.y=(m.cy=v+o)+Math.sqrt(p*p+v*v),t.circle=m;for(var x=null,b=Iu._;b;)if(m.yVu)o=o.L;else{if(!((i=a-Du(o,s))>Vu)){r>-Vu?(e=o.P,n=o):i>-Vu?(e=o,n=o.N):e=n=o;break}if(!o.R){e=o;break}o=o.R}!function(t){Ou[t.index]={site:t,halfedges:[]}}(t);var c=Eu(t);if(Lu.insert(e,c),e||n){if(e===n)return Cu(e),n=Eu(e.site),Lu.insert(c,n),c.edge=n.edge=vu(e.site,c.site),Pu(e),void Pu(n);if(n){Cu(e),Cu(n);var u=e.site,f=u[0],l=u[1],h=t[0]-f,d=t[1]-l,g=n.site,p=g[0]-f,v=g[1]-l,m=2*(h*v-d*p),x=h*h+d*d,b=p*p+v*v,y=[(v*x-d*b)/m+f,(h*b-p*x)/m+l];xu(n.edge,u,g,y),c.edge=vu(u,t,null,y),n.edge=vu(t,g,null,y),Pu(e),Pu(n)}else c.edge=vu(e.site,c.site)}}function qu(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var s=t.P;if(!s)return-1/0;var o=(n=s.site)[0],c=n[1],u=c-e;if(!u)return o;var f=o-r,l=1/a-1/u,h=f/u;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*u)-c+u/2+i-a/2)))/l+r:(r+o)/2}function Du(t,e){var n=t.N;if(n)return qu(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var Lu,Ou,Iu,Uu,Vu=1e-6,Bu=1e-12;function Fu(t,e){return e[1]-t[1]||e[0]-t[0]}function Yu(t,e){var n,r,i,a=t.sort(Fu).pop();for(Uu=[],Ou=new Array(t.length),Lu=new pu,Iu=new pu;;)if(i=ku,a&&(!i||a[1]Vu||Math.abs(i[0][1]-i[1][1])>Vu)||delete Uu[a]}(s,o,c,u),function(t,e,n,r){var i,a,s,o,c,u,f,l,h,d,g,p,v=Ou.length,m=!0;for(i=0;iVu||Math.abs(p-h)>Vu)&&(c.splice(o,0,Uu.push(mu(s,d,Math.abs(g-t)Vu?[t,Math.abs(l-t)Vu?[Math.abs(h-r)Vu?[n,Math.abs(l-n)Vu?[Math.abs(h-e)=o)return null;var c=t-i.site[0],u=e-i.site[1],f=c*c+u*u;do{i=a.cells[r=s],s=null,i.halfedges.forEach(function(n){var r=a.edges[n],o=r.left;if(o!==i.site&&o||(o=r.right)){var c=t-o[0],u=e-o[1],l=c*c+u*u;le&&(e=t[n]);return e};var Qu=function(t){if(!Ku()(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");for(var e=t[0],n=1;n1&&void 0!==arguments[1]?arguments[1]:{};if(!Ku()(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==n.output){if(!Ku()(n.output))throw new TypeError("output option must be an array if specified");e=n.output}else e=new Array(t.length);var r=Qu(t),i=Zu(t);if(r===i)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var a=n.min,s=void 0===a?n.autoMinMax?r:0:a,o=n.max,c=void 0===o?n.autoMinMax?i:1:o;if(s>=c)throw new RangeError("min option must be smaller than max option");for(var u=(c-s)/(i-r),f=0;fMath.abs(c[i])&&(i=e);if(i!==n){for(r=0;r=0;i--){for(r=0;ra?t[i][a]:i===a?1:0;return r}get upperTriangularMatrix(){for(var t=this.LU,e=t.rows,n=t.columns,r=new Sf(e,n),i=0;iMath.abs(e)?(n=e/t,Math.abs(t)*Math.sqrt(1+n*n)):0!==e?(n=t/e,Math.abs(e)*Math.sqrt(1+n*n)):0}function nf(t,e,n){for(var r=new Array(t),i=0;i=0;t--)if(0!==g[t]){for(let e=t+1;e=0;t--){if(t<_&&0!==m[t])for(let e=t+1;e0;){let t,e;for(t=M-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+S*Math.abs(g[t]+Math.abs(g[t+1]));if(Math.abs(m[t])<=e||Number.isNaN(m[t])){m[t]=0;break}}if(t===M-2)e=4;else{let n;for(n=M-1;n>=t&&n!==t;n--){let e=(n!==M?Math.abs(m[n]):0)+(n!==t+1?Math.abs(m[n-1]):0);if(Math.abs(g[n])<=S*e){g[n]=0;break}}n===t?e=3:n===M-1?e=1:(e=2,t=n)}switch(t++,e){case 1:{let e=m[M-2];m[M-2]=0;for(let n=M-2;n>=t;n--){let i=ef(g[n],e),a=g[n]/i,s=e/i;if(g[n]=i,n!==t&&(e=-s*m[n-1],m[n-1]=a*m[n-1]),u)for(let t=0;t=g[t+1]);){let e=g[t];if(g[t]=g[t+1],g[t+1]=e,u&&te?i[a][n]=t[a][n]/this.s[n]:i[a][n]=0;var a=this.U,s=a.length,o=a[0].length,c=new Sf(n,s);for(let t=0;tt&&e++;return e}get diagonal(){return this.s}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return Sf.isMatrix(this.U)||(this.U=new Sf(this.U)),this.U}get rightSingularVectors(){return Sf.isMatrix(this.V)||(this.V=new Sf(this.V)),this.V}get diagonalMatrix(){return Sf.diag(this.s)}}function af(t,e,n){var r=n?t.rows:t.rows-1;if(e<0||e>r)throw new RangeError("Row index out of range")}function sf(t,e,n){var r=n?t.columns:t.columns-1;if(e<0||e>r)throw new RangeError("Column index out of range")}function of(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function cf(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function uf(t,e,n){return{row:ff(t,e),column:lf(t,n)}}function ff(t,e){if("object"!=typeof e)throw new TypeError("unexpected type for row indices");if(e.some(e=>e<0||e>=t.rows))throw new RangeError("row indices are out of range");return Array.isArray(e)||(e=Array.from(e)),e}function lf(t,e){if("object"!=typeof e)throw new TypeError("unexpected type for column indices");if(e.some(e=>e<0||e>=t.columns))throw new RangeError("column indices are out of range");return Array.isArray(e)||(e=Array.from(e)),e}function hf(t,e,n,r,i){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(df("startRow",e),df("endRow",n),df("startColumn",r),df("endColumn",i),e>n||r>i||e<0||e>=t.rows||n<0||n>=t.rows||r<0||r>=t.columns||i<0||i>=t.columns)throw new RangeError("Submatrix indices are out of range")}function df(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}class gf extends(kf()){constructor(t,e,n){super(),this.matrix=t,this.rows=e,this.columns=n}static get[Symbol.species](){return Sf}}class pf extends gf{constructor(t){super(t,t.columns,t.rows)}set(t,e,n){return this.matrix.set(e,t,n),this}get(t,e){return this.matrix.get(e,t)}}class vf extends gf{constructor(t,e){super(t,1,t.columns),this.row=e}set(t,e,n){return this.matrix.set(this.row,e,n),this}get(t,e){return this.matrix.get(this.row,e)}}class mf extends gf{constructor(t,e,n,r,i){hf(t,e,n,r,i),super(t,n-e+1,i-r+1),this.startRow=e,this.startColumn=r}set(t,e,n){return this.matrix.set(this.startRow+t,this.startColumn+e,n),this}get(t,e){return this.matrix.get(this.startRow+t,this.startColumn+e)}}class xf extends gf{constructor(t,e,n){var r=uf(t,e,n);super(t,r.row.length,r.column.length),this.rowIndices=r.row,this.columnIndices=r.column}set(t,e,n){return this.matrix.set(this.rowIndices[t],this.columnIndices[e],n),this}get(t,e){return this.matrix.get(this.rowIndices[t],this.columnIndices[e])}}class bf extends gf{constructor(t,e){super(t,(e=ff(t,e)).length,t.columns),this.rowIndices=e}set(t,e,n){return this.matrix.set(this.rowIndices[t],e,n),this}get(t,e){return this.matrix.get(this.rowIndices[t],e)}}class yf extends gf{constructor(t,e){e=lf(t,e),super(t,t.rows,e.length),this.columnIndices=e}set(t,e,n){return this.matrix.set(t,this.columnIndices[e],n),this}get(t,e){return this.matrix.get(t,this.columnIndices[e])}}class _f extends gf{constructor(t,e){super(t,t.rows,1),this.column=e}set(t,e,n){return this.matrix.set(t,this.column,n),this}get(t){return this.matrix.get(t,this.column)}}class wf extends gf{constructor(t){super(t,t.rows,t.columns)}set(t,e,n){return this.matrix.set(this.rows-t-1,e,n),this}get(t,e){return this.matrix.get(this.rows-t-1,e)}}class Mf extends gf{constructor(t){super(t,t.rows,t.columns)}set(t,e,n){return this.matrix.set(t,this.columns-e-1,n),this}get(t,e){return this.matrix.get(t,this.columns-e-1)}}function kf(t){void 0===t&&(t=Object);class e extends t{static get[Symbol.species](){return this}static from1DArray(t,e,n){if(t*e!==n.length)throw new RangeError("Data length does not match given dimensions");for(var r=new this(t,e),i=0;it&&(t=this.get(e,n));return t}maxIndex(){for(var t=this.get(0,0),e=[0,0],n=0;nt&&(t=this.get(n,r),e[0]=n,e[1]=r);return e}min(){for(var t=this.get(0,0),e=0;ee&&(e=this.get(t,n));return e}maxRowIndex(t){af(this,t);for(var e=this.get(t,0),n=[t,0],r=1;re&&(e=this.get(t,r),n[1]=r);return n}minRow(t){af(this,t);for(var e=this.get(t,0),n=1;ne&&(e=this.get(n,t));return e}maxColumnIndex(t){sf(this,t);for(var e=this.get(0,t),n=[0,t],r=1;re&&(e=this.get(r,t),n[0]=r);return n}minColumn(t){sf(this,t);for(var e=this.get(0,t),n=1;n=(e=void 0===e?1:e))throw new RangeError("min should be strictly smaller than max");for(var n=this.constructor.empty(this.rows,this.columns),r=0;r=(e=void 0===e?1:e))throw new RangeError("min should be strictly smaller than max");for(var n=this.constructor.empty(this.rows,this.columns),r=0;rn||e<0||e>=this.columns||n<0||n>=this.columns)throw new RangeError("Argument out of range");for(var r=new this.constructor[Symbol.species](t.length,n-e+1),i=0;i=this.rows)throw new RangeError(`Row index out of range: ${t[i]}`);r.set(i,a-e,this.get(t[i],a))}return r}subMatrixColumn(t,e,n){if(void 0===e&&(e=0),void 0===n&&(n=this.rows-1),e>n||e<0||e>=this.rows||n<0||n>=this.rows)throw new RangeError("Argument out of range");for(var r=new this.constructor[Symbol.species](n-e+1,t.length),i=0;i=this.columns)throw new RangeError(`Column index out of range: ${t[i]}`);r.set(a-e,i,this.get(a,t[i]))}return r}setSubMatrix(t,e,n){hf(this,e,e+(t=this.constructor.checkMatrix(t)).rows-1,n,n+t.columns-1);for(var r=0;rt?i[a]=1/i[a]:i[a]=0;return i=this.constructor[Symbol.species].diag(i),r.mmul(i.mmul(n.transposeView()))}clone(){for(var t=new this.constructor[Symbol.species](this.rows,this.columns),e=0;e>","signPropagatingRightShift"],[">>>","rightShift","zeroFillRightShift"]]){var o=a(k("\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n",{name:s[1],op:s[0]})),c=a(k("\n(function %name%S(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% value);\n }\n }\n return this;\n})\n",{name:`${s[1]}S`,op:s[0]})),u=a(k("\n(function %name%M(matrix) {\n matrix = this.constructor.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% matrix.get(i, j));\n }\n }\n return this;\n})\n",{name:`${s[1]}M`,op:s[0]})),f=a(k("\n(function %name%(matrix, value) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%(value);\n})\n",{name:s[1]}));for(r=1;r0){if(super(t),!(Number.isInteger(e)&&e>0))throw new TypeError("nColumns must be a positive integer");for(n=0;n=0;a--){for(i=0;i=0;n--){for(t=0;t0;o--){for(l=0,s=0,u=0;u0&&(a=-a),e[o]=l*a,s-=i*a,n[o-1]=i-a,c=0;cu){0;do{for(1,i=n[u],l=(n[u+1]-i)/(2*e[u]),h=ef(l,1),l<0&&(h=-h),n[u]=e[u]/(l+h),n[u+1]=e[u]*(l+h),d=n[u+1],a=i-n[u],s=u+2;s=u;s--)for(v=p,p=g,b=x,i=g*e[s],a=g*l,h=ef(l,e[s]),e[s+1]=x*h,x=e[s]/h,l=(g=l/h)*n[s]-x*i,n[s+1]=a+x*(g*i+x*n[s]),c=0;cw*_)}n[u]=n[u]+y,e[u]=0}for(s=0;s=u;o--)n[o]=e[o][u-1]/f,s+=n[o]*n[o];for(a=Math.sqrt(s),n[u]>0&&(a=-a),s-=n[u]*a,n[u]=n[u]-a,c=u;c=u;o--)i+=n[o]*e[o][c];for(i/=s,o=u;o<=l;o++)e[o][c]-=i*n[o]}for(o=0;o<=l;o++){for(i=0,c=l;c>=u;c--)i+=n[c]*e[o][c];for(i/=s,c=u;c<=l;c++)e[o][c]-=i*n[c]}n[u]=f*n[u],e[u][u-1]=f*a}}for(o=0;o=1;u--)if(0!==e[u][u-1]){for(o=u+1;o<=l;o++)n[o]=e[o][u-1];for(c=u;c<=l;c++){for(a=0,o=u;o<=l;o++)a+=n[o]*r[o][c];for(a=a/n[u]/e[u][u-1],o=u;o<=l;o++)r[o][c]+=a*n[o]}}}(a,f,l,s),function(t,e,n,r,i){var a,s,o,c,u,f,l,h,d,g,p,v,m,x,b,y=t-1,_=t-1,w=Number.EPSILON,M=0,k=0,S=0,A=0,P=0,C=0,N=0,T=0;for(a=0;a_)&&(n[a]=i[a][a],e[a]=0),s=Math.max(a-1,0);s=0;){for(c=y;c>0&&(0===(C=Math.abs(i[c-1][c-1])+Math.abs(i[c][c]))&&(C=k),!(Math.abs(i[c][c-1])=0){for(N=S>=0?S+N:S-N,n[y-1]=h+N,n[y]=n[y-1],0!==N&&(n[y]=h-l/N),e[y-1]=0,e[y]=0,h=i[y][y-1],C=Math.abs(h)+Math.abs(N),S=h/C,A=N/C,P=Math.sqrt(S*S+A*A),S/=P,A/=P,s=y-1;s0){for(C=Math.sqrt(C),d=c&&(N=i[u][u],S=((P=h-N)*(C=d-N)-l)/i[u+1][u]+i[u][u+1],A=i[u+1][u+1]-N-P-C,P=i[u+2][u+1],C=Math.abs(S)+Math.abs(A)+Math.abs(P),S/=C,A/=C,P/=C,u!==c)&&!(Math.abs(i[u][u-1])*(Math.abs(A)+Math.abs(P))u+2&&(i[a][a-3]=0);for(o=u;o<=y-1&&(x=o!==y-1,o!==u&&(S=i[o][o-1],A=i[o+1][o-1],P=x?i[o+2][o-1]:0,0!==(h=Math.abs(S)+Math.abs(A)+Math.abs(P))&&(S/=h,A/=h,P/=h)),0!==h);o++)if(C=Math.sqrt(S*S+A*A+P*P),S<0&&(C=-C),0!==C){for(o!==u?i[o][o-1]=-C*h:c!==u&&(i[o][o-1]=-i[o][o-1]),h=(S+=C)/C,d=A/C,N=P/C,A/=S,P/=S,s=o;s=0;y--)if(S=n[y],0===(A=e[y]))for(c=y,i[y][y]=1,a=y-1;a>=0;a--){for(l=i[a][a]-S,P=0,s=c;s<=y;s++)P+=i[a][s]*i[s][y];if(e[a]<0)N=l,C=P;else if(c=a,0===e[a]?i[a][y]=0!==l?-P/l:-P/(w*k):(h=i[a][a+1],d=i[a+1][a],A=(n[a]-S)*(n[a]-S)+e[a]*e[a],f=(h*C-N*P)/A,i[a][y]=f,i[a+1][y]=Math.abs(h)>Math.abs(N)?(-P-l*f)/h:(-C-d*f)/N),f=Math.abs(i[a][y]),w*f*f>1)for(s=a;s<=y;s++)i[s][y]=i[s][y]/f}else if(A<0)for(c=y-1,Math.abs(i[y][y-1])>Math.abs(i[y-1][y])?(i[y-1][y-1]=A/i[y][y-1],i[y-1][y]=-(i[y][y]-S)/i[y][y-1]):(b=Ef(0,-i[y-1][y],i[y-1][y-1]-S,A),i[y-1][y-1]=b[0],i[y-1][y]=b[1]),i[y][y-1]=0,i[y][y]=1,a=y-2;a>=0;a--){for(g=0,p=0,s=c;s<=y;s++)g+=i[a][s]*i[s][y-1],p+=i[a][s]*i[s][y];if(l=i[a][a]-S,e[a]<0)N=l,P=g,C=p;else if(c=a,0===e[a]?(b=Ef(-g,-p,l,A),i[a][y-1]=b[0],i[a][y]=b[1]):(h=i[a][a+1],d=i[a+1][a],v=(n[a]-S)*(n[a]-S)+e[a]*e[a]-A*A,m=2*(n[a]-S)*A,0===v&&0===m&&(v=w*k*(Math.abs(l)+Math.abs(A)+Math.abs(h)+Math.abs(d)+Math.abs(N))),b=Ef(h*P-N*g+A*p,h*C-N*p-A*g,v,m),i[a][y-1]=b[0],i[a][y]=b[1],Math.abs(h)>Math.abs(N)+Math.abs(A)?(i[a+1][y-1]=(-g-l*i[a][y-1]+A*i[a][y])/h,i[a+1][y]=(-p-l*i[a][y]-A*i[a][y-1])/h):(b=Ef(-P-d*i[a][y-1],-C-d*i[a][y],N,A),i[a+1][y-1]=b[0],i[a+1][y]=b[1])),f=Math.max(Math.abs(i[a][y-1]),Math.abs(i[a][y])),w*f*f>1)for(s=a;s<=y;s++)i[s][y-1]=i[s][y-1]/f,i[s][y]=i[s][y]/f}for(a=0;a_)for(s=a;s=0;s--)for(a=0;a<=_;a++){for(N=0,o=0;o<=Math.min(s,_);o++)N+=r[a][o]*i[o][s];r[a][s]=N}}(a,c,o,s,f)}this.n=a,this.e=c,this.d=o,this.V=s}get realEigenvalues(){return this.d}get imaginaryEigenvalues(){return this.e}get eigenvectorMatrix(){return Sf.isMatrix(this.V)||(this.V=new Sf(this.V)),this.V}get diagonalMatrix(){var t,e,n=this.n,r=this.e,i=this.d,a=new Sf(n,n);for(t=0;t0?a[t][t+1]=r[t]:r[t]<0&&(a[t][t-1]=r[t])}return a}}function Ef(t,e,n,r){var i,a;return Math.abs(n)>Math.abs(r)?[(t+(i=r/n)*e)/(a=n+i*r),(e-i*t)/a]:[((i=n/r)*t+e)/(a=r+i*n),(i*e-t)/a]}class Rf{constructor(t){if(!(t=Af.checkMatrix(t)).isSymmetric())throw new Error("Matrix is not symmetric");var e,n,r,i=t,a=i.rows,s=new Sf(a,a),o=!0;for(n=0;n0,s[n][n]=Math.sqrt(Math.max(u,0)),r=n+1;r=0;a--)for(i=0;i0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=2*e*e;return function(e,r){var i=Math.pow(e-r,2);return t*t*Math.exp(-i/n)}}function If(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1.4,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,r=e*e;return function(e,i){var a=Math.abs(e-i,2),s=Math.pow(Math.sin(Math.PI*a/n),2);return t*t*Math.exp(-2*s/r)}}function Uf(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return function(r,i){return e+t*t*(r-n)*(i-n)}}function Vf(t){return function(e,n){return t.map(function(t){return t.apply(null,[e,n])}).reduce(function(t,e){return t+e},1)}}function Bf(t,e){for(var n=t.length,r=new Sf(n,n),i=0;i{(function(){const{curve:t,mean:e,sdPlus:n,sdMinus:r,sdArea:i}=this.get(),a=te(this.refs.graph);a.append("path").data([t]).attr("class","sdArea").attr("stroke","none").attr("fill","rgba(253,224,221,0.6").attr("d",i),a.append("path").data([t]).attr("class","curve").attr("fill","none").attr("stroke","#c51b8a").attr("stroke-width","2px").attr("d",e),a.append("path").data([t]).attr("class","sdPlus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",n),a.append("path").data([t]).attr("class","sdMinus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",r)}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Jf.prototype,R),i(Jf.prototype,Hf),Jf.prototype._recompute=function(t,e){t.context&&(this._differs(e.mean,e.mean=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.mean=!0),this._differs(e.sdPlus,e.sdPlus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdPlus=!0),this._differs(e.sdMinus,e.sdMinus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]-2*e[2]))}(e))&&(t.sdMinus=!0),this._differs(e.sdArea,e.sdArea=function({context:t}){return zc().x(e=>t.u(e[0])).y0(e=>t.v(e[1]-2*e[2])).y1(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdArea=!0)),(t.context||t.trainingPoints)&&this._differs(e.curve,e.curve=function({context:t,trainingPoints:e}){const[n,r]=t.xDomain(),i=(r-n)/75,a=I(n,r+i,i),s=e.filter(t=>t.active),o=s.map(t=>t.x),c=s.map(t=>t.y),u=Ff(Of(),a,o,c),f=u.getMean(),l=u.getSd();return W(a,f,l)}(e))&&(t.curve=!0)};var tl=Jf;function el(t,e,n){return Math.min(Math.max(t,e),n)}function nl(t,e,n){const r=Object.create(t);return r.r=e[n],r.idx=n,r}function rl(t,e){var n,r,i,a;return{c(){v(n=l("ellipse"),"rx",r=e.r.x),v(n,"ry",i=e.r.y),v(n,"fill",a=e.color(e.idx)),v(n,"transform",e.transform),v(n,"vector-effect","non-scaling-stroke")},m(t,e){o(t,n,e)},p(t,e){t.radii&&r!==(r=e.r.x)&&v(n,"rx",r),t.radii&&i!==(i=e.r.y)&&v(n,"ry",i),t.color&&a!==(a=e.color(e.idx))&&v(n,"fill",a),t.transform&&v(n,"transform",e.transform)},d(t){t&&c(n)}}}function il(t){S(this,t),this._state=i({context:new Wu(300,300,[-4,4],[-4,4]),gaussian:new Df([0,0],[[1,.7],[.7,2]]),contours:[Math.sqrt(4.61),Math.sqrt(3.22),Math.sqrt(2.41),Math.sqrt(1.83),Math.sqrt(1.39),Math.sqrt(1.02),Math.sqrt(.731),Math.sqrt(.446),Math.sqrt(.211)]},t.data),this._recompute({gaussian:1,context:1,contours:1},this._state),this._intro=!0,this._fragment=function(t,e){for(var n,r=e.radii,i=[],a=0;a({x:t.u(e)-t.u(0),y:t.v(0)-t.v(e)}))}(e))&&(t.radii=!0),t.contours&&this._differs(e.color,e.color=function({contours:t}){return xc(wc).domain([0,t.length-1])}(e))&&(t.color=!0)};var al=il;const sl=t=>Math.sqrt(t[0]*t[0]+t[1]*t[1]);function ol(t){var e,n,r,u,h,d,g,p,m,x,b,y,_,w,k,A,P,C,N,T,E,R,j,z,q,D,L,O,I,U;S(this,t),this.refs={},this._state=i(function(){const t=new Df([0,0],[[1,0],[0,2]]),e=new Tf(t.cov),n=Math.sqrt(e.realEigenvalues[0]),r=Math.sqrt(e.realEigenvalues[1]);return{eig:{e1:{x:e.eigenvectorMatrix.get(0,0)*n,y:e.eigenvectorMatrix.get(1,0)*n},e2:{x:e.eigenvectorMatrix.get(0,1)*r,y:e.eigenvectorMatrix.get(1,1)*r}},mean:t.mean,context:new Wu(300,300,[-3,3],[-3,3])}}(),t.data),this._recompute({eig:1,mean:1},this._state),this._intro=!0,document.getElementById("svelte-wzalzu-style")||((e=f("style")).id="svelte-wzalzu-style",e.textContent=".handleInvisible.svelte-wzalzu{fill:rgba(245, 181, 62, 0);cursor:grab}.handle.svelte-wzalzu{fill:rgb(245, 181, 62)}.handle.svelte-wzalzu:hover{stroke:gray;stroke-width:2px}",s(document.head,e)),this._fragment=(n=this,r=this._state,I={width:r.context.width,height:r.context.height,context:r.context,gaussian:r.gaussian},U=new al({root:n.root,store:n.store,data:I}),{c(){u=l("svg"),U._fragment.c(),h=l("circle"),p=l("circle"),b=l("line"),A=l("line"),E=l("circle"),z=l("circle"),v(h,"class","handle svelte-wzalzu"),v(h,"cx",d=r.context.u(r.eig.e1.x)),v(h,"cy",g=r.context.v(r.eig.e1.y)),v(h,"r","4"),v(p,"class","handle svelte-wzalzu"),v(p,"cx",m=r.context.u(r.eig.e2.x)),v(p,"cy",x=r.context.v(r.eig.e2.y)),v(p,"r","4"),v(b,"x1",y=r.context.u(r.gaussian.mean[0])),v(b,"y1",_=r.context.v(r.gaussian.mean[1])),v(b,"x2",w=r.context.u(r.eig.e1.x)),v(b,"y2",k=r.context.v(r.eig.e1.y)),v(b,"stroke","rgb(245, 181, 62)"),v(b,"stroke-width","2"),v(A,"x1",P=r.context.u(r.gaussian.mean[0])),v(A,"y1",C=r.context.v(r.gaussian.mean[1])),v(A,"x2",N=r.context.u(r.eig.e2.x)),v(A,"y2",T=r.context.v(r.eig.e2.y)),v(A,"stroke","rgb(245, 181, 62)"),v(A,"stroke-width","2"),v(E,"class","handleInvisible svelte-wzalzu"),v(E,"cx",R=r.context.u(r.eig.e1.x)),v(E,"cy",j=r.context.v(r.eig.e1.y)),v(E,"r","44"),v(z,"class","handleInvisible svelte-wzalzu"),v(z,"cx",q=r.context.u(r.eig.e2.x)),v(z,"cy",D=r.context.v(r.eig.e2.y)),v(z,"r","44"),v(u,"width",L=r.context.width),v(u,"height",O=r.context.height)},m(t,e){o(t,u,e),U._mount(u,null),s(u,h),s(u,p),s(u,b),s(u,A),s(u,E),n.refs.e1=E,s(u,z),n.refs.e2=z},p(t,e){var n={};t.context&&(n.width=e.context.width),t.context&&(n.height=e.context.height),t.context&&(n.context=e.context),t.gaussian&&(n.gaussian=e.gaussian),U._set(n),(t.context||t.eig)&&d!==(d=e.context.u(e.eig.e1.x))&&v(h,"cx",d),(t.context||t.eig)&&g!==(g=e.context.v(e.eig.e1.y))&&v(h,"cy",g),(t.context||t.eig)&&m!==(m=e.context.u(e.eig.e2.x))&&v(p,"cx",m),(t.context||t.eig)&&x!==(x=e.context.v(e.eig.e2.y))&&v(p,"cy",x),(t.context||t.gaussian)&&y!==(y=e.context.u(e.gaussian.mean[0]))&&v(b,"x1",y),(t.context||t.gaussian)&&_!==(_=e.context.v(e.gaussian.mean[1]))&&v(b,"y1",_),(t.context||t.eig)&&w!==(w=e.context.u(e.eig.e1.x))&&v(b,"x2",w),(t.context||t.eig)&&k!==(k=e.context.v(e.eig.e1.y))&&v(b,"y2",k),(t.context||t.gaussian)&&P!==(P=e.context.u(e.gaussian.mean[0]))&&v(A,"x1",P),(t.context||t.gaussian)&&C!==(C=e.context.v(e.gaussian.mean[1]))&&v(A,"y1",C),(t.context||t.eig)&&N!==(N=e.context.u(e.eig.e2.x))&&v(A,"x2",N),(t.context||t.eig)&&T!==(T=e.context.v(e.eig.e2.y))&&v(A,"y2",T),(t.context||t.eig)&&R!==(R=e.context.u(e.eig.e1.x))&&v(E,"cx",R),(t.context||t.eig)&&j!==(j=e.context.v(e.eig.e1.y))&&v(E,"cy",j),(t.context||t.eig)&&q!==(q=e.context.u(e.eig.e2.x))&&v(z,"cx",q),(t.context||t.eig)&&D!==(D=e.context.v(e.eig.e2.y))&&v(z,"cy",D),t.context&&L!==(L=e.context.width)&&v(u,"width",L),t.context&&O!==(O=e.context.height)&&v(u,"height",O)},d(t){t&&c(u),U.destroy(),n.refs.e1===E&&(n.refs.e1=null),n.refs.e2===z&&(n.refs.e2=null)}}),this.root._oncreate.push(()=>{(function(){te(this.refs.e1).call(me().on("drag",()=>{const{context:t,eig:e}=this.get(),n=e.e2.x*e.e2.x+e.e2.y*e.e2.y,r=t.x(el(Ft.x,10,t.width-10)),i=t.y(el(Ft.y,10,t.height-10));e.e1={x:r,y:i},e.e2={x:-i*Math.sqrt(n)/sl([r,i]),y:r*Math.sqrt(n)/sl([r,i])},this.set({eig:e})})),te(this.refs.e2).call(me().on("drag",()=>{const{context:t,eig:e}=this.get(),n=e.e1.x*e.e1.x+e.e1.y*e.e1.y,r=t.x(el(Ft.x,10,t.width-10)),i=t.y(el(Ft.y,10,t.height-10));e.e2={x:r,y:i},e.e1={x:i*Math.sqrt(n)/sl([r,i]),y:-r*Math.sqrt(n)/sl([r,i])},this.set({eig:e})}))}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(ol.prototype,R),ol.prototype._recompute=function(t,e){(t.eig||t.mean)&&this._differs(e.gaussian,e.gaussian=function({eig:t,mean:e}){const n=new Sf([[t.e1.x,t.e2.x],[t.e1.y,t.e2.y]]);return new Df([e[0],e[1]],n.mmul(n.transpose()))}(e))&&(t.gaussian=!0)};var cl=ol;function ul(t){var e,n,r,a,u,d,g,p,x,b,y,_,w,M,k,A,P,C,N;S(this,t),this._state=i({sigma1:1,sigma2:1,corr:.5},t.data),this._intro=!0,document.getElementById("svelte-134p43-style")||((e=f("style")).id="svelte-134p43-style",e.textContent=".entry.svelte-134p43{font-size:14px;fill:rgba(0,0,0,0.8);text-anchor:middle;alignment-baseline:center}.entryBox.svelte-134p43{fill:hsl(200, 20%, 97%);stroke-width:1;stroke:rgba(0,0,0,0.2)}",s(document.head,e)),this._fragment=(n=this._state,{c(){r=l("svg"),a=l("g"),u=l("rect"),d=l("text"),g=h(n.sigma1),p=l("g"),x=l("rect"),b=l("text"),y=h(n.corr),_=l("g"),w=l("rect"),M=l("text"),k=h(n.corr),A=l("g"),P=l("rect"),C=l("text"),N=h(n.sigma2),v(u,"x","0"),v(u,"y","0"),v(u,"width","50"),v(u,"height","35"),v(u,"rx","5"),v(u,"ry","5"),v(u,"class","entryBox svelte-134p43"),v(d,"x","25"),v(d,"y","23"),v(d,"class","entry svelte-134p43"),v(a,"transform","translate(1,1)"),v(x,"x","0"),v(x,"y","0"),v(x,"width","50"),v(x,"height","35"),v(x,"rx","5"),v(x,"ry","5"),v(x,"class","entryBox svelte-134p43"),v(b,"x","25"),v(b,"y","23"),v(b,"class","entry svelte-134p43"),v(p,"transform","translate(61,1)"),v(w,"x","0"),v(w,"y","0"),v(w,"width","50"),v(w,"height","35"),v(w,"rx","5"),v(w,"ry","5"),v(w,"class","entryBox svelte-134p43"),v(M,"x","25"),v(M,"y","23"),v(M,"class","entry svelte-134p43"),v(_,"transform","translate(1,46)"),v(P,"x","0"),v(P,"y","0"),v(P,"width","50"),v(P,"height","35"),v(P,"rx","5"),v(P,"ry","5"),v(P,"class","entryBox svelte-134p43"),v(C,"x","25"),v(C,"y","23"),v(C,"class","entry svelte-134p43"),v(A,"transform","translate(61,46)"),v(r,"height","82"),v(r,"width","112")},m(t,e){o(t,r,e),s(r,a),s(a,u),s(a,d),s(d,g),s(r,p),s(p,x),s(p,b),s(b,y),s(r,_),s(_,w),s(_,M),s(M,k),s(r,A),s(A,P),s(A,C),s(C,N)},p(t,e){t.sigma1&&m(g,e.sigma1),t.corr&&(m(y,e.corr),m(k,e.corr)),t.sigma2&&m(N,e.sigma2)},d(t){t&&c(r)}}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor))}i(ul.prototype,R);var fl=ul;let ll=0;function hl({_changed:t,current:e,_previous:n}){const r=e.size-e.margin.top-e.margin.bottom,i=ps().domain(e.colorScale.domain()).range([r,0]),a=(s=i,at(Q,s)).tickFormat(Ai(".2f")).ticks(5);var s;te(this.refs.colorBar).call(a)}function dl(t,e,n){const r=Object.create(t);return r.v=e[n],r}function gl(t,e){var n,r;return{c(){v(n=l("stop"),"offset",r=e.v.offset+"%"),x(n,"stop-color",e.v.color),x(n,"stop-opacity","1")},m(t,e){o(t,n,e)},p(t,e){t.colorValues&&r!==(r=e.v.offset+"%")&&v(n,"offset",r),t.colorValues&&x(n,"stop-color",e.v.color)},d(t){t&&c(n)}}}function pl(t){S(this,t),this.refs={},this._state=i((ll+=1,{colorScale:xc(Mc),size:150,margin:{top:5,right:12,bottom:5,left:18},id:ll}),t.data),this._recompute({colorScale:1},this._state),this._intro=!0,this._handlers.state=[hl],hl.call(this,{changed:a({},this._state),current:this._state}),this._fragment=function(t,e){for(var n,r,i,a,f,h,d,g,p,m,x,b=e.colorValues,y=[],_=0;_{this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(pl.prototype,R),pl.prototype._recompute=function(t,e){t.colorScale&&this._differs(e.colorValues,e.colorValues=function({colorScale:t}){const e=t.domain(),n=(e[1]-e[0])/11;return I(e[0],e[1]+n,n).map((e,n)=>({offset:n/11*100,color:t(e)}))}(e))&&(t.colorValues=!0)};var vl=pl;function ml(t){return Math.round(100*t)/100}function xl(t){var e;S(this,t),this.refs={},this._state=i({scale:xc(wc).domain([0,.2]),context:new Wu(200,200,[-2,2],[-2,2]),gaussian:new Df([0,0],[[1,.7],[.7,2]])},t.data),this._intro=!0,document.getElementById("svelte-1gc1gg1-style")||((e=f("style")).id="svelte-1gc1gg1-style",e.textContent="svg.svelte-1gc1gg1{width:100%;height:auto}.gauss-grid.svelte-1gc1gg1{display:inline-grid;grid-template-columns:1fr 2fr;grid-auto-rows:min-content;text-align:center}@media only screen and (max-width: 1168px){.gauss-grid.svelte-1gc1gg1{display:inline-grid;grid-template-columns:1fr;grid-auto-rows:min-content;text-align:center}}.grid-item.svelte-1gc1gg1{margin:5px}.plot.svelte-1gc1gg1{float:left}",s(document.head,e)),this._fragment=function(t,e){var n,r,i,a,u,d,g,p,m,x,b,y,_,w,M,k,S,A,P,C,N,T,E,R,j,z,q,D,L,O,I={sigma1:e.gaussian.cov.get(0,0),sigma2:e.gaussian.cov.get(1,1),cov:e.gaussian.cov.get(0,1),context:e.context},U=new cl({root:t.root,store:t.store,data:I});t.refs.gauss=U;var V={colorScale:e.scale},B=new vl({root:t.root,store:t.store,data:V}),F={sigma1:ml(e.gaussian.cov.get(0,0)),sigma2:ml(e.gaussian.cov.get(1,1)),corr:ml(e.gaussian.cov.get(0,1))},Y=new fl({root:t.root,store:t.store,data:F});return{c(){n=f("div"),r=f("div"),i=l("svg"),U._fragment.c(),g=h("\n "),p=f("div"),m=l("svg"),x=l("g"),B._fragment.c(),b=l("text"),y=l("tspan"),_=h("Covariance matrix (Σ)"),w=l("g"),Y._fragment.c(),M=l("text"),k=h("By dragging the handles you \n "),S=l("tspan"),A=h("can adjust the variance along"),P=l("tspan"),C=h("each dimension, as well as the"),N=l("tspan"),T=h("correlation between the two"),E=l("tspan"),R=h("random variables. "),j=l("tspan"),z=h("Violet"),q=l("tspan"),D=h("values show a high probability"),L=l("tspan"),O=h("inside the distribution."),v(i,"width",a=e.context.width),v(i,"height",u=e.context.height),v(i,"viewBox",d="0 0 "+e.context.width+" "+e.context.height),v(i,"class","plot svelte-1gc1gg1"),r.className="grid-item svelte-1gc1gg1",v(x,"transform","translate(0,20)"),v(y,"font-weight","bold"),v(b,"x","70"),v(b,"y","40"),v(b,"class","annotation"),v(w,"transform","translate(82,50)"),v(S,"x","230"),v(S,"dy","1.5em"),v(P,"x","230"),v(P,"dy","1.5em"),v(N,"x","230"),v(N,"dy","1.5em"),v(j,"fill","rgb(73, 0, 106)"),v(j,"font-style","italic"),v(E,"x","230"),v(E,"dy","1.5em"),v(q,"x","230"),v(q,"dy","1.5em"),v(L,"x","230"),v(L,"dy","1.5em"),v(M,"x","230"),v(M,"y","30"),v(M,"class","annotation"),v(m,"width","450"),v(m,"height","200"),v(m,"class","svelte-1gc1gg1"),p.className="grid-item svelte-1gc1gg1",n.className="gauss-grid svelte-1gc1gg1"},m(t,e){o(t,n,e),s(n,r),s(r,i),U._mount(i,null),s(n,g),s(n,p),s(p,m),s(m,x),B._mount(x,null),s(m,b),s(b,y),s(y,_),s(m,w),Y._mount(w,null),s(m,M),s(M,k),s(M,S),s(S,A),s(M,P),s(P,C),s(M,N),s(N,T),s(M,E),s(E,R),s(E,j),s(j,z),s(M,q),s(q,D),s(M,L),s(L,O)},p(t,e){var n={};t.gaussian&&(n.sigma1=e.gaussian.cov.get(0,0)),t.gaussian&&(n.sigma2=e.gaussian.cov.get(1,1)),t.gaussian&&(n.cov=e.gaussian.cov.get(0,1)),t.context&&(n.context=e.context),U._set(n),t.context&&a!==(a=e.context.width)&&v(i,"width",a),t.context&&u!==(u=e.context.height)&&v(i,"height",u),t.context&&d!==(d="0 0 "+e.context.width+" "+e.context.height)&&v(i,"viewBox",d);var r={};t.scale&&(r.colorScale=e.scale),B._set(r);var s={};t.gaussian&&(s.sigma1=ml(e.gaussian.cov.get(0,0))),t.gaussian&&(s.sigma2=ml(e.gaussian.cov.get(1,1))),t.gaussian&&(s.corr=ml(e.gaussian.cov.get(0,1))),Y._set(s)},d(e){e&&c(n),U.destroy(),t.refs.gauss===U&&(t.refs.gauss=null),B.destroy(),Y.destroy()}}}(this,this._state),this.root._oncreate.push(()=>{(function(){this.refs.gauss.on("update",({_changed:t,current:e,_previous:n})=>{this.set({gaussian:e.gaussian})})}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(xl.prototype,R);var bl=xl;function yl(t){var e,n,r,u,d,g,p,m,x,b,y,_,w,k,A,P,C,N,T,E,R,j,z,q,D,L,O,I,U,V,B,F,Y,$,H,G,W,X,K,Z,Q,J,tt,et,nt,rt,it,at,st,ot,ct,ut,ft,lt,ht,dt,gt,pt,vt,mt,xt,bt,yt,_t,wt,Mt,kt,St,At,Pt,Ct,Nt,Tt,Et,Rt,jt,zt,qt,Dt,Lt,Ot,It,Ut,Vt;S(this,t),this.refs={},this._state=i({gaussian:new Df([0,0],[[1,.5],[.5,1]]),context:new Wu(200,200,[-2,2],[-2,2]),sample:{x1:1,x2:.5}},t.data),this._intro=!0,document.getElementById("svelte-f4p2f-style")||((e=f("style")).id="svelte-f4p2f-style",e.textContent=".plot.svelte-f4p2f{width:100%;height:auto}.svelte-ref-zero.svelte-f4p2f{stroke:rgba(0,0,0,0.2);stroke-width:1px}.point.svelte-f4p2f{fill:rgb(245, 181, 62)}.ss.svelte-f4p2f{baseline-shift:sub;font-size:11px}.gauss-grid.svelte-f4p2f{display:inline-grid;grid-template-columns:auto auto;text-align:center}.grid-item.svelte-f4p2f{margin:0.3em}.handleInvisible.svelte-f4p2f{fill:rgba(245, 181, 62, 0);cursor:grab}.handle.svelte-f4p2f{fill:rgb(245, 181, 62)}.handle.svelte-f4p2f:hover{stroke:gray;stroke-width:2px}",s(document.head,e)),this._fragment=(n=this,r=this._state,Ut={width:r.context.width,height:r.context.height,context:r.context,gaussian:r.gaussian},Vt=new al({root:n.root,store:n.store,data:Ut}),{c(){u=f("div"),d=f("div"),g=l("svg"),Vt._fragment.c(),p=l("text"),m=h("x"),x=l("tspan"),b=h("1"),w=l("text"),k=h("x"),A=l("tspan"),P=h("2"),N=l("line"),j=l("line"),O=l("circle"),V=l("circle"),G=h("\n "),W=f("div"),X=l("svg"),K=l("text"),Z=h("μ"),J=l("text"),tt=h("x"),et=l("tspan"),nt=h("1"),at=l("text"),st=h("x"),ot=l("tspan"),ct=h("2"),lt=l("line"),pt=l("line"),yt=l("line"),St=l("circle"),Ct=l("circle"),Et=l("circle"),zt=l("circle"),v(x,"class","ss svelte-f4p2f"),v(p,"x",y=r.context.u(r.sample.x1)+5),v(p,"y",_=r.context.height-5),v(p,"class","annotation point svelte-f4p2f"),v(A,"class","ss svelte-f4p2f"),v(w,"x","5"),v(w,"y",C=r.context.v(r.sample.x2)-5),v(w,"class","annotation point svelte-f4p2f"),v(N,"x1","0"),v(N,"y1",T=r.context.v(r.sample.x2)),v(N,"x2",E=r.context.u(r.sample.x1)),v(N,"y2",R=r.context.v(r.sample.x2)),v(N,"stroke","rgb(245, 181, 62)"),v(N,"stroke-width","2"),v(j,"x1",z=r.context.u(r.sample.x1)),v(j,"y1",q=r.context.height),v(j,"x2",D=r.context.u(r.sample.x1)),v(j,"y2",L=r.context.v(r.sample.x2)),v(j,"stroke","rgb(245, 181, 62)"),v(j,"stroke-width","2"),v(O,"class","handleInvisible svelte-f4p2f"),v(O,"cx",I=r.context.u(r.sample.x1)),v(O,"cy",U=r.context.v(r.sample.x2)),v(O,"r","44"),v(V,"class","handle svelte-f4p2f"),v(V,"cx",B=r.context.u(r.sample.x1)),v(V,"cy",F=r.context.v(r.sample.x2)),v(V,"r","4"),v(g,"width",Y=r.context.width),v(g,"height",$=r.context.height),v(g,"viewBox",H="0 0 "+r.context.width+" "+r.context.height),v(g,"class","plot svelte-f4p2f"),d.className="grid-item svelte-f4p2f",v(K,"x","5"),v(K,"y",Q=r.context.v(0)-5),v(K,"class","annotation"),v(et,"class","ss svelte-f4p2f"),v(J,"x",rt=r.context.width/3+5),v(J,"y",it=r.context.height-5),v(J,"class","annotation point svelte-f4p2f"),v(ot,"class","ss svelte-f4p2f"),v(at,"x",ut=r.context.width/3*2+5),v(at,"y",ft=r.context.height-5),v(at,"class","annotation point svelte-f4p2f"),v(lt,"x1","0"),v(lt,"y1",ht=r.context.v(0)),v(lt,"x2",dt=r.context.width),v(lt,"y2",gt=r.context.v(0)),v(lt,"class","svelte-f4p2f svelte-ref-zero"),v(pt,"x1",vt=r.context.width/3),v(pt,"y1",mt=r.context.height),v(pt,"x2",xt=r.context.width/3),v(pt,"y2",bt=r.context.v(r.sample.x1)),v(pt,"stroke","rgb(245, 181, 62)"),v(pt,"stroke-width","2"),v(yt,"x1",_t=r.context.width/3*2),v(yt,"y1",wt=r.context.height),v(yt,"x2",Mt=r.context.width/3*2),v(yt,"y2",kt=r.context.v(r.sample.x2)),v(yt,"stroke","rgb(245, 181, 62)"),v(yt,"stroke-width","2"),v(St,"class","handle svelte-f4p2f"),v(St,"cx",At=r.context.width/3),v(St,"cy",Pt=r.context.v(r.sample.x1)),v(St,"r","4"),v(Ct,"class","handle svelte-f4p2f"),v(Ct,"cx",Nt=r.context.width/3*2),v(Ct,"cy",Tt=r.context.v(r.sample.x2)),v(Ct,"r","4"),v(Et,"class","handleInvisible svelte-f4p2f"),v(Et,"cx",Rt=r.context.width/3),v(Et,"cy",jt=r.context.v(r.sample.x1)),v(Et,"r","44"),v(zt,"class","handleInvisible svelte-f4p2f"),v(zt,"cx",qt=r.context.width/3*2),v(zt,"cy",Dt=r.context.v(r.sample.x2)),v(zt,"r","44"),v(X,"width",Lt=r.context.width),v(X,"height",Ot=r.context.height),v(X,"viewBox",It="0 0 "+r.context.width+" "+r.context.height),v(X,"class","plot svelte-f4p2f"),W.className="grid-item svelte-f4p2f",u.className="gauss-grid svelte-f4p2f"},m(t,e){o(t,u,e),s(u,d),s(d,g),Vt._mount(g,null),s(g,p),s(p,m),s(p,x),s(x,b),s(g,w),s(w,k),s(w,A),s(A,P),s(g,N),s(g,j),s(g,O),n.refs.xy=O,s(g,V),s(u,G),s(u,W),s(W,X),s(X,K),s(K,Z),s(X,J),s(J,tt),s(J,et),s(et,nt),s(X,at),s(at,st),s(at,ot),s(ot,ct),s(X,lt),n.refs.zero=lt,s(X,pt),s(X,yt),s(X,St),s(X,Ct),s(X,Et),n.refs.x1=Et,s(X,zt),n.refs.x2=zt},p(t,e){var n={};t.context&&(n.width=e.context.width),t.context&&(n.height=e.context.height),t.context&&(n.context=e.context),t.gaussian&&(n.gaussian=e.gaussian),Vt._set(n),(t.context||t.sample)&&y!==(y=e.context.u(e.sample.x1)+5)&&v(p,"x",y),t.context&&_!==(_=e.context.height-5)&&v(p,"y",_),(t.context||t.sample)&&C!==(C=e.context.v(e.sample.x2)-5)&&v(w,"y",C),(t.context||t.sample)&&T!==(T=e.context.v(e.sample.x2))&&v(N,"y1",T),(t.context||t.sample)&&E!==(E=e.context.u(e.sample.x1))&&v(N,"x2",E),(t.context||t.sample)&&R!==(R=e.context.v(e.sample.x2))&&v(N,"y2",R),(t.context||t.sample)&&z!==(z=e.context.u(e.sample.x1))&&v(j,"x1",z),t.context&&q!==(q=e.context.height)&&v(j,"y1",q),(t.context||t.sample)&&D!==(D=e.context.u(e.sample.x1))&&v(j,"x2",D),(t.context||t.sample)&&L!==(L=e.context.v(e.sample.x2))&&v(j,"y2",L),(t.context||t.sample)&&I!==(I=e.context.u(e.sample.x1))&&v(O,"cx",I),(t.context||t.sample)&&U!==(U=e.context.v(e.sample.x2))&&v(O,"cy",U),(t.context||t.sample)&&B!==(B=e.context.u(e.sample.x1))&&v(V,"cx",B),(t.context||t.sample)&&F!==(F=e.context.v(e.sample.x2))&&v(V,"cy",F),t.context&&Y!==(Y=e.context.width)&&v(g,"width",Y),t.context&&$!==($=e.context.height)&&v(g,"height",$),t.context&&H!==(H="0 0 "+e.context.width+" "+e.context.height)&&v(g,"viewBox",H),t.context&&Q!==(Q=e.context.v(0)-5)&&v(K,"y",Q),t.context&&rt!==(rt=e.context.width/3+5)&&v(J,"x",rt),t.context&&it!==(it=e.context.height-5)&&v(J,"y",it),t.context&&ut!==(ut=e.context.width/3*2+5)&&v(at,"x",ut),t.context&&ft!==(ft=e.context.height-5)&&v(at,"y",ft),t.context&&ht!==(ht=e.context.v(0))&&v(lt,"y1",ht),t.context&&dt!==(dt=e.context.width)&&v(lt,"x2",dt),t.context&>!==(gt=e.context.v(0))&&v(lt,"y2",gt),t.context&&vt!==(vt=e.context.width/3)&&v(pt,"x1",vt),t.context&&mt!==(mt=e.context.height)&&v(pt,"y1",mt),t.context&&xt!==(xt=e.context.width/3)&&v(pt,"x2",xt),(t.context||t.sample)&&bt!==(bt=e.context.v(e.sample.x1))&&v(pt,"y2",bt),t.context&&_t!==(_t=e.context.width/3*2)&&v(yt,"x1",_t),t.context&&wt!==(wt=e.context.height)&&v(yt,"y1",wt),t.context&&Mt!==(Mt=e.context.width/3*2)&&v(yt,"x2",Mt),(t.context||t.sample)&&kt!==(kt=e.context.v(e.sample.x2))&&v(yt,"y2",kt),t.context&&At!==(At=e.context.width/3)&&v(St,"cx",At),(t.context||t.sample)&&Pt!==(Pt=e.context.v(e.sample.x1))&&v(St,"cy",Pt),t.context&&Nt!==(Nt=e.context.width/3*2)&&v(Ct,"cx",Nt),(t.context||t.sample)&&Tt!==(Tt=e.context.v(e.sample.x2))&&v(Ct,"cy",Tt),t.context&&Rt!==(Rt=e.context.width/3)&&v(Et,"cx",Rt),(t.context||t.sample)&&jt!==(jt=e.context.v(e.sample.x1))&&v(Et,"cy",jt),t.context&&qt!==(qt=e.context.width/3*2)&&v(zt,"cx",qt),(t.context||t.sample)&&Dt!==(Dt=e.context.v(e.sample.x2))&&v(zt,"cy",Dt),t.context&&Lt!==(Lt=e.context.width)&&v(X,"width",Lt),t.context&&Ot!==(Ot=e.context.height)&&v(X,"height",Ot),t.context&&It!==(It="0 0 "+e.context.width+" "+e.context.height)&&v(X,"viewBox",It)},d(t){t&&c(u),Vt.destroy(),n.refs.xy===O&&(n.refs.xy=null),n.refs.zero===lt&&(n.refs.zero=null),n.refs.x1===Et&&(n.refs.x1=null),n.refs.x2===zt&&(n.refs.x2=null)}}),this.root._oncreate.push(()=>{(function(){te(this.refs.xy).call(me().on("drag",()=>{const{context:t}=this.get();let{sample:e}=this.get();e={x1:t.x(el(Ft.x,20,t.width-20)),x2:t.y(el(Ft.y,20,t.height-20))},this.set({sample:e})})),te(this.refs.x1).call(me().on("drag",()=>{const{context:t}=this.get();let{sample:e}=this.get();e={x1:t.y(el(Ft.y,20,t.width-20)),x2:e.x2},this.set({sample:e})})),te(this.refs.x2).call(me().on("drag",()=>{const{context:t}=this.get();let{sample:e}=this.get();const n=t.y(el(Ft.y,20,t.width-20));e={x1:e.x1,x2:n},this.set({sample:e})}))}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(yl.prototype,R);var _l=yl;const wl=.1;function Ml(t){return Math.round(100*t)/100}function kl(t,e){return t.v(e)}function Sl(t){var e,n,r,u,d,g,p,x,b,y,_,w,k,A,P,C,N,T,E,R,j,z,q,D,L,O,I,U,V,B,F,Y,$,H,G,W,X,K,Z,Q,J,tt,et,nt,rt,it,at,st,ot,ct,ut,ft,lt,ht,dt,gt,pt,vt,mt,xt,bt,yt,_t,wt,Mt,kt,St,At,Pt,Ct,Nt,Tt,Et,Rt,jt,zt,qt,Dt,Lt,Ot,It,Ut,Vt;S(this,t),this.refs={},this._state=i({limits:{sigma1:{from:.8,to:1.8},sigma2:{from:.8,to:1.8},cov:{from:-.8,to:.8}},context:new Wu(250,250,[-4,4],[-4,4]),cond:1.2,gaussian:new Df([0,0],[[1,.8],[.8,1.4]]),sideWidth:200},t.data),this._recompute({context:1,cond:1,gaussian:1,sideWidth:1},this._state),this._intro=!0,document.getElementById("svelte-ypowvq-style")||((e=f("style")).id="svelte-ypowvq-style",e.textContent=".gauss-grid.svelte-ypowvq{display:inline-grid;grid-template-columns:0.81fr 1fr 0.81fr;text-align:center}.grid-item.svelte-ypowvq{margin:0.3em}.line.svelte-ypowvq{fill:none;stroke:#c51b8a;stroke-width:2px}.handleInvisible.svelte-ypowvq{fill:rgba(0, 0, 0, 0);cursor:grab}.curve.svelte-ypowvq{fill:none;stroke:rgba(0,0,0,0.6);stroke-width:2px}.handle.svelte-ypowvq{fill:#c51b8a}.ss.svelte-ypowvq{baseline-shift:sub;font-size:11px}",s(document.head,e)),this._fragment=(n=this,r=this._state,zt=Ml(r.cond),qt=Ml(r.marginalizedGauss.mean.get(0,0)),Dt=Ml(r.marginalizedGauss.cov.get(0,0)),Lt=Ml(r.cond),Ot=Ml(r.conditionedGauss.mean.get(0,0)),It=Ml(r.marginalizedGauss.cov.get(0,0)),Ut={context:r.context,sigma1:r.gaussian.cov.get(0,0),sigma2:r.gaussian.cov.get(1,1),cov:r.gaussian.cov.get(0,1),limits:r.limits},Vt=new cl({root:n.root,store:n.store,data:Ut}),n.refs.gauss=Vt,{c(){u=f("div"),(d=f("div")).innerHTML="

Marginalization (Y)

",g=h("\n "),p=f("div"),x=h("\n "),b=f("div"),y=f("h4"),_=h("Conditioning (X = "),w=h(zt),k=h(")"),A=h("\n "),P=f("div"),C=l("svg"),N=l("path"),T=l("text"),E=h("μ"),R=l("tspan"),j=h("Y"),z=h(" = "),q=h(qt),O=l("text"),I=h("σ"),U=l("tspan"),V=h("Y"),B=h(" = "),F=h(Dt),G=h("\n "),W=f("div"),X=l("svg"),Vt._fragment.c(),K=l("line"),tt=l("circle"),rt=l("text"),it=h("X = "),at=h(Lt),ct=l("circle"),gt=h("\n "),pt=f("div"),vt=l("svg"),mt=l("path"),xt=l("text"),bt=h("μ"),yt=l("tspan"),_t=h("Y|X"),wt=h(" = "),Mt=h(Ot),St=l("text"),At=h("σ"),Pt=l("tspan"),Ct=h("Y|X"),Nt=h(" = "),Tt=h(It),d.className="grid-item svelte-ypowvq",p.className="grid-item svelte-ypowvq",b.className="grid-item svelte-ypowvq",v(N,"d",r.marginalizedPath),v(N,"class","curve svelte-ypowvq"),v(R,"class","ss svelte-ypowvq"),v(T,"x",D=r.sideWidth-42),v(T,"y",L=kl(r.context,r.marginalizedGauss.mean.get(0,0))),v(T,"class","annotation"),v(U,"class","ss svelte-ypowvq"),v(O,"x","5"),v(O,"y",Y=r.context.height-10),v(O,"class","annotation"),v(C,"width",r.sideWidth),v(C,"height",$=r.context.height),v(C,"viewBox",H="0 0 "+r.sideWidth+" "+r.context.height),v(C,"class","plot"),P.className="grid-item svelte-ypowvq",v(K,"class","line svelte-ypowvq"),v(K,"x1",Z=r.condPos[0]),v(K,"y1","0"),v(K,"x2",Q=r.condPos[0]),v(K,"y2",J=r.context.height),v(tt,"class","handle svelte-ypowvq"),v(tt,"cx",et=r.condPos[0]),v(tt,"cy",nt=r.condPos[1]),v(tt,"r","4"),v(rt,"x",st=r.condPos[0]+5),v(rt,"y",ot=r.condPos[1]),v(rt,"class","annotation handle svelte-ypowvq"),v(ct,"class","handleInvisible svelte-ypowvq"),v(ct,"cx",ut=r.condPos[0]),v(ct,"cy",ft=r.condPos[1]),v(ct,"r","44"),v(X,"width",lt=r.context.width),v(X,"height",ht=r.context.height),v(X,"viewBox",dt="0 0 "+r.context.width+" "+r.context.height),v(X,"class","plot"),W.className="grid-item svelte-ypowvq",v(mt,"d",r.conditionedPath),v(mt,"class","line svelte-ypowvq"),v(yt,"class","ss svelte-ypowvq"),v(xt,"x","5"),v(xt,"y",kt=kl(r.context,r.conditionedGauss.mean.get(0,0))),v(xt,"class","annotation"),v(Pt,"class","ss svelte-ypowvq"),v(St,"x","5"),v(St,"y",Et=r.context.height-10),v(St,"class","annotation"),v(vt,"width",r.sideWidth),v(vt,"height",Rt=r.context.height),v(vt,"viewBox",jt="0 0 "+r.sideWidth+" "+r.context.height),v(vt,"class","plot"),pt.className="grid-item svelte-ypowvq",u.className="gauss-grid svelte-ypowvq"},m(t,e){o(t,u,e),s(u,d),s(u,g),s(u,p),s(u,x),s(u,b),s(b,y),s(y,_),s(y,w),s(y,k),s(u,A),s(u,P),s(P,C),s(C,N),s(C,T),s(T,E),s(T,R),s(R,j),s(T,z),s(T,q),s(C,O),s(O,I),s(O,U),s(U,V),s(O,B),s(O,F),s(u,G),s(u,W),s(W,X),Vt._mount(X,null),s(X,K),s(X,tt),s(X,rt),s(rt,it),s(rt,at),s(X,ct),n.refs.handle=ct,s(u,gt),s(u,pt),s(pt,vt),s(vt,mt),s(vt,xt),s(xt,bt),s(xt,yt),s(yt,_t),s(xt,wt),s(xt,Mt),s(vt,St),s(St,At),s(St,Pt),s(Pt,Ct),s(St,Nt),s(St,Tt)},p(t,e){t.cond&&zt!==(zt=Ml(e.cond))&&m(w,zt),t.marginalizedPath&&v(N,"d",e.marginalizedPath),t.marginalizedGauss&&qt!==(qt=Ml(e.marginalizedGauss.mean.get(0,0)))&&m(q,qt),t.sideWidth&&D!==(D=e.sideWidth-42)&&v(T,"x",D),(t.context||t.marginalizedGauss)&&L!==(L=kl(e.context,e.marginalizedGauss.mean.get(0,0)))&&v(T,"y",L),t.marginalizedGauss&&Dt!==(Dt=Ml(e.marginalizedGauss.cov.get(0,0)))&&m(F,Dt),t.context&&Y!==(Y=e.context.height-10)&&v(O,"y",Y),t.sideWidth&&v(C,"width",e.sideWidth),t.context&&$!==($=e.context.height)&&v(C,"height",$),(t.sideWidth||t.context)&&H!==(H="0 0 "+e.sideWidth+" "+e.context.height)&&v(C,"viewBox",H);var n={};t.context&&(n.context=e.context),t.gaussian&&(n.sigma1=e.gaussian.cov.get(0,0)),t.gaussian&&(n.sigma2=e.gaussian.cov.get(1,1)),t.gaussian&&(n.cov=e.gaussian.cov.get(0,1)),t.limits&&(n.limits=e.limits),Vt._set(n),t.condPos&&Z!==(Z=e.condPos[0])&&v(K,"x1",Z),t.condPos&&Q!==(Q=e.condPos[0])&&v(K,"x2",Q),t.context&&J!==(J=e.context.height)&&v(K,"y2",J),t.condPos&&et!==(et=e.condPos[0])&&v(tt,"cx",et),t.condPos&&nt!==(nt=e.condPos[1])&&v(tt,"cy",nt),t.cond&&Lt!==(Lt=Ml(e.cond))&&m(at,Lt),t.condPos&&st!==(st=e.condPos[0]+5)&&v(rt,"x",st),t.condPos&&ot!==(ot=e.condPos[1])&&v(rt,"y",ot),t.condPos&&ut!==(ut=e.condPos[0])&&v(ct,"cx",ut),t.condPos&&ft!==(ft=e.condPos[1])&&v(ct,"cy",ft),t.context&<!==(lt=e.context.width)&&v(X,"width",lt),t.context&&ht!==(ht=e.context.height)&&v(X,"height",ht),t.context&&dt!==(dt="0 0 "+e.context.width+" "+e.context.height)&&v(X,"viewBox",dt),t.conditionedPath&&v(mt,"d",e.conditionedPath),t.conditionedGauss&&Ot!==(Ot=Ml(e.conditionedGauss.mean.get(0,0)))&&m(Mt,Ot),(t.context||t.conditionedGauss)&&kt!==(kt=kl(e.context,e.conditionedGauss.mean.get(0,0)))&&v(xt,"y",kt),t.marginalizedGauss&&It!==(It=Ml(e.marginalizedGauss.cov.get(0,0)))&&m(Tt,It),t.context&&Et!==(Et=e.context.height-10)&&v(St,"y",Et),t.sideWidth&&v(vt,"width",e.sideWidth),t.context&&Rt!==(Rt=e.context.height)&&v(vt,"height",Rt),(t.sideWidth||t.context)&&jt!==(jt="0 0 "+e.sideWidth+" "+e.context.height)&&v(vt,"viewBox",jt)},d(t){t&&c(u),Vt.destroy(),n.refs.gauss===Vt&&(n.refs.gauss=null),n.refs.handle===ct&&(n.refs.handle=null)}}),this.root._oncreate.push(()=>{(function(){this.refs.gauss.on("state",({_changed:t,current:e,_previous:n})=>{this.set({gaussian:e.gaussian})});const{context:t}=this.get();te(this.refs.handle).call(me().on("drag",()=>{const e=t.width-10;let{cond:n}=this.get();n=t.x(el(Ft.x,10,e)),this.set({cond:n})}))}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Sl.prototype,R),Sl.prototype._recompute=function(t,e){(t.context||t.cond)&&this._differs(e.condPos,e.condPos=function({context:t,cond:e}){return[t.u(e),50]}(e))&&(t.condPos=!0),(t.gaussian||t.cond)&&this._differs(e.conditionedGauss,e.conditionedGauss=function({gaussian:t,cond:e}){return t.condition([e])}(e))&&(t.conditionedGauss=!0),(t.context||t.gaussian||t.cond||t.sideWidth)&&this._differs(e.conditionedPath,e.conditionedPath=function({context:t,gaussian:e,cond:n,sideWidth:r}){const i=ps().domain(t.xDomain()).range([t.height,0]),a=ps().domain([.8,0]).range([r,0]),s=e.condition([n]),o=I(t.yDomain()[0],t.yDomain()[1]+wl,wl),c=o.map(t=>s.at([t])),u=W(o,c);return jc().x(t=>a(t[1])).y(t=>i(t[0]))(u)}(e))&&(t.conditionedPath=!0),t.gaussian&&this._differs(e.marginalizedGauss,e.marginalizedGauss=function({gaussian:t}){return t.marginalize(1)[1]}(e))&&(t.marginalizedGauss=!0),(t.context||t.gaussian||t.sideWidth)&&this._differs(e.marginalizedPath,e.marginalizedPath=function({context:t,gaussian:e,sideWidth:n}){const r=ps().domain(t.xDomain()).range([0,t.height]),i=ps().domain([0,.5]).range([n,0]),a=e.marginalize(1)[1],s=I(t.yDomain()[0],t.yDomain()[1]+wl,wl),o=s.map(t=>a.at([t])),c=W(s,o);return jc().x(t=>i(t[1])).y(t=>r(t[0]))(c)}(e))&&(t.marginalizedPath=!0)};var Al=Sl;var Pl={mouseOverHover(t,e){e.selectAll(".covSelectedRect").style("opacity",1),e.selectAll(".covSelectedRectRow").style("opacity",1),this.hoverGrid(t,e);const n=t;let r;const i=e.selectAll(".covRect").filter(function(e){return e.row===t.row&&(r=e.row),e.row===t.row}).data();this.set({colorsRow:i,hoveredRow:n,hoveredRowIdx:r,shouldResample:!1})},updateSlider(t,e,n){this.set({shouldResample:!0}),this.root.resample(),this.root.set({currentSelectedParameter:t,currentSelectedKernel:e,currentSelectedRef:n,shadows:[]})},getValue(t){const{params:e}=this.get();return t>e.max?e.max:tt.row?i=Math.min(t.column,t.row):t.columnr+e*(n+r)).attr("y",r+i*(n+r))},returnColor(t,e){let n;const{colorScale:r,axisScale:i}=this.get();return n=r(e?i.invert(t):i(t))},updateCovMat(){const t=this,{showText:e,covMatrix:n,grid:r,gridNode:i}=t.get(),a=te(this.refs.covMat),s=n;let o=0;for(let t=0;tt.returnColor(e.cov)),this.set({gridNode:i}),1===e&&a.selectAll("text").data(r).text(function(t){return Math.round(10*t.cov)/10})},externalCov(t){this.set({covMatrix:t}),this.updateCovMat()},internalCov(){const{n:t,params:e,kernel:n}=this.get();let{xs:r}=this.get();r=I(0,t).map(ps().domain([0,t]).range([-5,5]));const i=e.map(t=>t.value),a=Bf(r,n.apply(null,i));this.set({covMatrix:a,xs:r}),this.updateCovMat()}};function Cl({_changed:t,_current:e,_previous:n}){const{n:r,params:i,kernel:a,external:s}=this.get();if(!s){let{xs:t}=this.get();const e=-5,n=5;t=I(0,r).map(ps().domain([0,r]).range([e,n]));const s=i.map(t=>t.value),o=Bf(t,a.apply(null,s));this.set({covMatrix:o,xs:t,shouldResample:!1}),this.updateCovMat()}}function Nl(t){const{component:e,ctx:n}=this._svelte;e.updateSlider(n.p,n.name,this)}function Tl(t,e,n){const r=Object.create(t);return r.p=e[n],r.each_value=e,r.p_index=n,r}function El(t,e){for(var n,r=e.params,i=[],a=0;a{(function(){const{params:t,kernel:e,n:n}=this.get(),r=this;let{xs:i}=this.get();i=I(0,n).map(ps().domain([0,n]).range([-5,5]));const a=t.map(t=>t.value),s=Bf(i,e.apply(null,a)),{gridSize:o,offset:c,width:u,height:f,interaction:l,showText:h,grid:d}=r.get();let{gridNode:g}=r.get();const p=te(this.refs.covMat).attr("width",u+c).attr("height",f+c),v=s;let m=0;for(let t=0;tc+t.column*(o+c)).attr("y",t=>c+t.row*(o+c)).style("fill",function(t){return r.returnColor(t.cov)}),x.style("fill",function(t){return r.returnColor(t.cov)}),g=p.selectAll(".covRect"),this.set({gridNode:g}),1===h){const t=p.selectAll("text").data(d);t.exit().remove(),t.enter().append("text").attr("class","covText").style("font-size",Math.min(2*o/3,2*o/3-8)+"px").attr("x",t=>t.column*(o+c)+o/2).attr("y",t=>t.row*(o+c)+o/2).style("dominant-baseline","central").style("alignment-baseline","central").style("text-anchor","middle").text(function(t){return Math.round(10*t.cov)/10}),t.text(function(t){return Math.round(10*t.cov)/10})}l&&(p.append("rect").classed("covSelectedRect",!0).attr("width",o+c).attr("height",o+c).style("stroke-width","1px").style("stroke-opacity","1").style("stroke","black").style("opacity",0).style("fill","none"),p.selectAll("covSelectedRectRow").data(Array.from(Array(n).keys())).enter().append("rect").classed("covSelectedRectRow",!0).attr("width",o+c).attr("height",o+c).style("stroke-width","1px").style("stroke-opacity","0.5").style("stroke","black").style("opacity",0).style("fill","none"),p.selectAll(".covRect").on("mouseover",function(t){const e=te(te(this).node().parentNode.parentNode);r.mouseOverHover(t,e)}),p.on("mouseleave",function(){const t=te(te(this).node().parentNode.parentNode);t.selectAll(".covSelectedRect").style("opacity",0),t.selectAll(".covSelectedRectRow").style("opacity",0),r.set({colorsRow:[],hoveredRow:-1,hoveredRowIdx:-1,shouldResample:!1})}))}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(jl.prototype,R),i(jl.prototype,Pl),jl.prototype._recompute=function(t,e){t.colorScale&&this._differs(e.axisScale,e.axisScale=function({colorScale:t}){return ps().domain(t.domain()).range([0,1])}(e))&&(t.axisScale=!0),t.n&&this._differs(e.grid,e.grid=function({n:t}){return new Array(t*t)}(e))&&(t.grid=!0)};var zl=jl;const ql={kernel:Of,name:"RBF Kernel",equation:"\\sigma^2 \\exp \\left( - \\frac{||t-t'||^2}{2 l^2} \\right)",params:[{name:"Variance σ",description:"the average distance away from the function's mean.",value:.8,min:0,max:1},{name:"Length l",description:"the reach of influence on neighbors.",value:.8,min:.01,max:2}]},Dl={kernel:If,name:"Periodic",equation:"\\sigma^2 \\exp \\left( - \\frac{2 \\sin^2(\\pi |t-t'| / p)}{l^2} \\right)",params:[{name:"Variance σ",description:"the average distance away from the function's mean.",value:.8,min:0,max:1},{name:"Length l",description:"the reach of influence on neighbors.",value:.8,min:.01,max:2},{name:"Periodicity p",description:"the distance between repetitions.",value:.5,min:0,max:Math.PI}]},Ll={kernel:Uf,name:"Linear",equation:"\\sigma_b^2 + \\sigma^2 (t - c)(t' - c)",params:[{name:"Variance σ",description:"the average distance away from the function's mean.",value:.3,min:0,max:1},{name:"Variance σ_b",description:"the certainty around C.",value:.8,min:0,max:1},{name:"Offset c",description:"the intersection point of all functions.",value:0,min:-2,max:2}]};var Ol={resample(){}};function Il({_changed:t,current:e,_previous:n}){const r=te(this.refs.annotations),{currentSelectedRef:i}=this.get();if(""!=i){const t=i.getBoundingClientRect(),n=t.left-this.refs.annotations.getBoundingClientRect().left+t.width/2,a=t.top-this.refs.annotations.getBoundingClientRect().top-t.height;r.select(".lineConnector").attr("d",function(){return e.connectedline([[n,a-5],[n,a-20],[30,a-20],[30,15],[40,15]])}),te(this.refs.description).style("opacity",1)}}function Ul(t,e,n){const r=Object.create(t);return r.k=e[n],r}function Vl(t,e){var n,r,i,a,u,l,d,g,p,v,x=e.k.name,b=e.k.equation,y={kernel:e.k.kernel,params:e.k.params,name:e.k.name},_=new zl({root:t.root,store:t.store,data:y});return{c(){n=f("div"),r=f("div"),i=f("h4"),a=h(x),u=h("\n "),l=f("div"),d=f("d-math"),g=h(b),p=h("\n "),v=f("div"),_._fragment.c(),l.className="equation svelte-u41dg9",n.className="grid-item svelte-u41dg9"},m(t,e){o(t,n,e),s(n,r),s(r,i),s(i,a),s(n,u),s(n,l),s(l,d),s(d,g),s(n,p),s(n,v),_._mount(v,null)},p(t,e){t.kernels&&x!==(x=e.k.name)&&m(a,x),t.kernels&&b!==(b=e.k.equation)&&m(g,b);var n={};t.kernels&&(n.kernel=e.k.kernel),t.kernels&&(n.params=e.k.params),t.kernels&&(n.name=e.k.name),_._set(n)},d(t){t&&c(n),_.destroy()}}}function Bl(t){var e;S(this,t),this.refs={},this._state=i({kernels:[ql,Dl,Ll],scale:xc(_c),currentSelectedParameter:{description:"...",name:"..."},currentSelectedKernel:"",currentSelectedRef:""},t.data),this._recompute({_context:1},this._state),this._intro=!0,this._handlers.update=[Il],document.getElementById("svelte-u41dg9-style")||((e=f("style")).id="svelte-u41dg9-style",e.textContent=".svelte-ref-annotations.svelte-u41dg9{pointer-events:none;overflow:visible;display:block;width:100%;margin-left:-10%}@media only screen and (min-width: 1168px){.svelte-ref-annotations.svelte-u41dg9{position:absolute;pointer-events:none;margin:1em;right:-200px;bottom:5px;margin-left:0;overflow:visible;width:300px}}.svelte-ref-padder.svelte-u41dg9{padding-top:108px\n }.kernel-grid.svelte-u41dg9{display:inline-grid;grid-template-columns:2fr 2fr 2fr 1fr}.grid-item.svelte-u41dg9{margin:0.5em}.equation.svelte-u41dg9{padding-bottom:1em;height:36px}",s(document.head,e)),this._fragment=function(t,e){for(var n,r,i,a,d,g,p,x,b,y,_,w,M,k,S,A,P,C,N,T=e.currentSelectedParameter.name,E=e.currentSelectedParameter.description,R=e.kernels,j=[],z=0;z{(function(){te(this.refs.annotations).append("path").classed("lineConnector",!0).attr("stroke","rgba(0, 0, 0, 0.2)").attr("fill","transparent").style("stroke-width","2px").style("stroke-dasharray",4),te(this.refs.description).style("opacity",0)}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Bl.prototype,R),i(Bl.prototype,Ol),Bl.prototype._recompute=function(t,e){t._context&&this._differs(e.connectedline,e.connectedline=function({_context:t}){return jc().curve(uu).x(t=>t[0]).y(t=>t[1])}(e))&&(t.connectedline=!0)};var Fl=Bl;const Yl=xc(wc).domain([-1,10]);function $l(t){return Yl(t)}function Hl(t,e,n){const r=Object.create(t);return r.x=e[n],r}function Gl(t,e,n){const r=Object.create(t);return r.x=e[n],r}function Wl(t,e,n){const r=Object.create(t);return r.x=e[n],r}function Xl(t,e){var n,r,i,a,u,f,d;return{c(){n=l("text"),r=l("tspan"),i=h("f(x) = ?"),u=l("line"),v(r,"font-weight","bold"),v(n,"x",a=20*e.x+6),v(n,"y","90"),v(n,"class","annotation"),v(u,"class","dashed svelte-1j42j92"),v(u,"x1",f=20*e.x+e.bs/2+6),v(u,"y1","158"),v(u,"x2",d=20*e.x+e.bs/2+6),v(u,"y2","95"),v(u,"stroke","grey")},m(t,e){o(t,n,e),s(n,r),s(r,i),o(t,u,e)},p(t,e){t.xs&&a!==(a=20*e.x+6)&&v(n,"x",a),(t.xs||t.bs)&&f!==(f=20*e.x+e.bs/2+6)&&v(u,"x1",f),(t.xs||t.bs)&&d!==(d=20*e.x+e.bs/2+6)&&v(u,"x2",d)},d(t){t&&(c(n),c(u))}}}function Kl(t,e){var n,r,i,a=5==e.x&&Xl(0,e);return{c(){a&&a.c(),v(n=l("rect"),"x",r=20*e.x+6),v(n,"y","158"),v(n,"width",e.bs),v(n,"height",e.bs),v(n,"fill",i=$l(e.x))},m(t,e){a&&a.m(t,e),o(t,n,e)},p(t,e){5==e.x?a?a.p(t,e):((a=Xl(0,e)).c(),a.m(n.parentNode,n)):a&&(a.d(1),a=null),t.xs&&r!==(r=20*e.x+6)&&v(n,"x",r),t.bs&&(v(n,"width",e.bs),v(n,"height",e.bs)),t.xs&&i!==(i=$l(e.x))&&v(n,"fill",i)},d(t){a&&a.d(t),t&&c(n)}}}function Zl(t,e){var n,r,i,a,s,u;return{c(){n=l("rect"),a=l("rect"),v(n,"x",r=12*e.x+12),v(n,"y","0"),v(n,"width",e.bs),v(n,"height",e.bs),v(n,"fill",i=$l(e.x)),v(a,"x","0"),v(a,"y",s=12*e.x+12),v(a,"width",e.bs),v(a,"height",e.bs),v(a,"fill",u=$l(e.x))},m(t,e){o(t,n,e),o(t,a,e)},p(t,e){t.xs&&r!==(r=12*e.x+12)&&v(n,"x",r),t.bs&&(v(n,"width",e.bs),v(n,"height",e.bs)),t.xs&&i!==(i=$l(e.x))&&v(n,"fill",i),t.xs&&s!==(s=12*e.x+12)&&v(a,"y",s),t.bs&&(v(a,"width",e.bs),v(a,"height",e.bs)),t.xs&&u!==(u=$l(e.x))&&v(a,"fill",u)},d(t){t&&(c(n),c(a))}}}function Ql(t,e){var n,r,i,a,s,u,f,h,d,g,p;return{c(){n=l("line"),s=l("circle"),d=l("rect"),v(n,"class","dashed svelte-1j42j92"),v(n,"x1",r=20*e.x+e.bs/2+6),v(n,"y1","158"),v(n,"x2",i=20*e.x+e.bs/2+6),v(n,"y2",a=20*e.Math.sin(e.x/2)+90),v(n,"stroke","grey"),v(s,"cx",u=20*e.x+e.bs/2+6),v(s,"cy",f=20*e.Math.sin(e.x/2)+90),v(s,"r",h=e.bs/4),v(s,"fill","grey"),v(d,"x",g=20*e.x+6),v(d,"y","158"),v(d,"width",e.bs),v(d,"height",e.bs),v(d,"fill",p=$l(e.x))},m(t,e){o(t,n,e),o(t,s,e),o(t,d,e)},p(t,e){(t.xs||t.bs)&&r!==(r=20*e.x+e.bs/2+6)&&v(n,"x1",r),(t.xs||t.bs)&&i!==(i=20*e.x+e.bs/2+6)&&v(n,"x2",i),(t.Math||t.xs)&&a!==(a=20*e.Math.sin(e.x/2)+90)&&v(n,"y2",a),(t.xs||t.bs)&&u!==(u=20*e.x+e.bs/2+6)&&v(s,"cx",u),(t.Math||t.xs)&&f!==(f=20*e.Math.sin(e.x/2)+90)&&v(s,"cy",f),t.bs&&h!==(h=e.bs/4)&&v(s,"r",h),t.xs&&g!==(g=20*e.x+6)&&v(d,"x",g),t.bs&&(v(d,"width",e.bs),v(d,"height",e.bs)),t.xs&&p!==(p=$l(e.x))&&v(d,"fill",p)},d(t){t&&(c(n),c(s),c(d))}}}function Jl(t){var e;S(this,t),this.refs={},this._state=i(i({Math:Math},{bs:8,xs:I(0,10)}),t.data),this._intro=!0,document.getElementById("svelte-1j42j92-style")||((e=f("style")).id="svelte-1j42j92-style",e.textContent=".svelte-ref-parent.svelte-1j42j92{width:100%;height:auto}.dashed.svelte-1j42j92{stroke:rgba(0,0,0,0.4);stroke-dasharray:4}",s(document.head,e)),this._fragment=function(t,e){for(var n,r,i,a,f,d,g,p,m,x,b,y,_,w,M,k,S,A,P,C,N,T,E,R,j,z,q,D,L,O,I,U,V,B,F,Y,$,H,G,W,X,K,Z,Q,J,tt,et,nt,rt,it,at,st,ot,ct,ut,ft,lt,ht,dt,gt,pt,vt,mt,xt,bt,yt=e.xs,_t=[],wt=0;wt{this.resample()},1e3)),this.set({active:!t})},switchKernel(t,e){this.set({kernel:t,params:e,curve:[],shadows:[]}),this.refs.covMat.set({kernel:t,params:e}),this.resample()},switchRBF(){this.switchKernel(gh.kernel,gh.params)},switchPeriodic(){this.switchKernel(ph.kernel,ph.params)},switchLinear(){this.switchKernel(vh,mh)},resample(){const{context:t,curve:e,shadows:n,countDimensions:r,params:i,kernel:a}=this.get();e.length>0&&(n.length>30&&n.shift(),n.push(e));const s=r,[o,c]=t.xDomain(),u=(c-o)/(s-1),f=I(o,c+u,u),l=i.map(t=>t.value),h=Ff(a.apply(null,l),f),d=h.sample(),g=h.getSd(),p=h.getMean(),v=W(f,d,g),m=W(f,p,g);this.set({curve:v,shadows:n,meanCurve:m})}};function yh(){clearInterval(this.interval)}function _h({_changed:t,current:e,_previous:n}){const r=te(this.refs.svgArea).transition();r.select(".curve").duration(750).attr("d",e.line(e.curve)),r.select(".zero").transition().duration(750).attr("d",e.zero(e.meanCurve)),r.select(".sdArea").transition().duration(750).attr("d",e.sdArea(e.meanCurve)),r.select(".sdPlus").transition().duration(750).attr("d",e.sdPlus(e.meanCurve)),r.select(".sdMinus").transition().duration(750).attr("d",e.sdMinus(e.meanCurve)),te(this.refs.plus).transition().duration(750).attr("y",e.context.v(2*e.params[0].value)-10),te(this.refs.minus).transition().duration(750).attr("y",e.context.v(2*-e.params[0].value)+15)}function wh(t,e,n){const r=Object.create(t);return r.sp=e[n],r}function Mh(t,e){var n,r;return{c(){v(n=l("path"),"d",r=e.sp),v(n,"class","shadowLine svelte-suja6o")},m(t,e){o(t,n,e)},p(t,e){t.shadowPaths&&r!==(r=e.sp)&&v(n,"d",r)},d(t){t&&c(n)}}}function kh(t,e){var n,r,i;return{c(){n=l("text"),r=l("tspan"),i=h("(click to start)"),v(r,"fill","rgb(245, 181, 62)"),v(r,"font-style","italic"),v(n,"x","5"),v(n,"y","15"),v(n,"class","annotation")},m(t,e){o(t,n,e),s(n,r),s(r,i)},d(t){t&&c(n)}}}function Sh(t,e){var n,r,i;return{c(){n=l("text"),r=l("tspan"),i=h("(click to pause)"),v(r,"fill","rgb(245, 181, 62)"),v(r,"font-style","italic"),v(n,"x","5"),v(n,"y","15"),v(n,"class","annotation")},m(t,e){o(t,n,e),s(n,r),s(r,i)},d(t){t&&c(n)}}}function Ah(t){var e;S(this,t),this.refs={},this._state=i({context:new Wu(500,350,[-5,5],[-10,10]),curve:[],shadows:[],active:!1,countDimensions:100,kernel:gh.kernel,name:"RBF Kernel",params:gh.params,meanCurve:[]},t.data),this._recompute({context:1,shadows:1,line:1},this._state),this._intro=!0,this._handlers.update=[_h],this._handlers.destroy=[yh],document.getElementById("svelte-suja6o-style")||((e=f("style")).id="svelte-suja6o-style",e.textContent=".svelte-ref-svgArea.svelte-suja6o{width:100%;height:auto}.kernel-grid.svelte-suja6o{display:inline-grid;grid-template-columns:1fr}@media only screen and (min-width: 1168px){.kernel-grid.svelte-suja6o{display:inline-grid;grid-template-columns:4fr 1.5fr}}.grid-item.svelte-suja6o{margin:0.5em}.shadowLine.svelte-suja6o{fill:none;stroke:rgba(0,0,0,0.1);stroke-width:2px}",s(document.head,e)),this._fragment=function(t,e){var n,r,i,a,d,m,x,b,y,_,w,M,k,S,A,P,C,N,T,E,R,j,z,q,D,L,O,I,U,V,B,F={};function Y(e){t.switchRBF()}function $(e){t.switchPeriodic()}function H(e){t.switchLinear()}for(var G=e.shadowPaths,W=[],X=0;X{et._bind({kernel:1,params:1},et.get())}),t.refs.covMat=et,{c(){n=f("div"),r=f("input"),i=h("\n "),(a=f("label")).textContent="RBF",d=h(" \n "),m=f("input"),x=h("\n "),(b=f("label")).textContent="Periodic",y=h(" \n "),_=f("input"),w=h("\n "),(M=f("label")).textContent="Linear",k=h("\n"),S=f("div"),A=f("div"),P=l("svg"),C=l("g");for(var t=0;t{(function(){this.resample();const{curve:t,line:e,meanCurve:n,sdArea:r,zero:i,sdPlus:a,sdMinus:s}=this.get(),o=te(this.refs.svgArea);o.append("path").data([n]).attr("class","sdArea").attr("stroke","none").attr("fill","rgba(0,0,0,0.05)").style("opacity",.5).attr("d",r),o.append("path").data([n]).attr("class","zero").attr("fill","none").attr("stroke","rgba(0,0,0,0.2)").attr("stroke-width","2px").attr("d",i),o.append("path").data([n]).attr("class","sdPlus").attr("fill","none").attr("stroke","rgba(0,0,0,0.2)").attr("stroke-dasharray","4").attr("stroke-width","2px").attr("d",a),o.append("path").data([n]).attr("class","sdMinus").attr("fill","none").attr("stroke","rgba(0,0,0,0.2)").attr("stroke-dasharray","4").attr("stroke-width","2px").attr("d",s),o.append("path").data([t]).attr("class","curve").attr("fill","none").attr("stroke","#c51b8a").attr("stroke-width","2px").attr("d",e)}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Ah.prototype,R),i(Ah.prototype,bh),Ah.prototype._recompute=function(t,e){t.context&&(this._differs(e.line,e.line=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.line=!0),this._differs(e.zero,e.zero=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.zero=!0),this._differs(e.sdPlus,e.sdPlus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdPlus=!0),this._differs(e.sdMinus,e.sdMinus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]-2*e[2]))}(e))&&(t.sdMinus=!0),this._differs(e.sdArea,e.sdArea=function({context:t}){return zc().x(e=>t.u(e[0])).y0(e=>t.v(e[1]-2*e[2])).y1(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdArea=!0)),(t.shadows||t.line)&&this._differs(e.shadowPaths,e.shadowPaths=function({shadows:t,line:e}){return t.map(e)}(e))&&(t.shadowPaths=!0)};var Ph=Ah;function Ch(t,e){return t.v(e)}function Nh(t,e){return t.u(e)}var Th={fakeHover(){const{n:t}=this.refs.covMat.get(),e=te(this.refs.covMat.refs.covMat),n={column:Math.ceil(t/2),row:Math.ceil(t/2)};this.refs.covMat.mouseOverHover(n,e),this.refs.covMat.set({shouldResample:!0})},selectSzenario(t){const{hoveredRow:e}=this.refs.covMat.get();let{trainingPoints:n}=this.get();n=t,this.refs.covMat.set({shouldResample:!0}),this.set({trainingPoints:n}),-1!=e&&this.fakeHover()},colorBar(){const t=te(this.refs.covScale),e=this.refs.covMat,{colorsRow:n}=e.get(),{countDimensions:r}=this.get(),i=t.selectAll(".rects");let a=[];return n.length>1?i.style("stroke-width","1px").style("stroke","black").each(function(t,r){const i=n[r],s=e.returnColor(i.cov);a.push(s)}):(i.style("stroke-width","0px").style("stroke","#9A8B7A"),a=Array(r).fill("rgba(0,0,0,0.2)")),a},colorGradient(t,e){const{countDimensions:n}=this.get(),r=te(this.refs.covScale),i=r.selectAll(".gradient > stop"),a=r.selectAll(".gradientBackground > stop");e.length>0?(i.attr("offset",function(t,e){return 100/n*e+"%"}).attr("stop-color",function(e,n){return t[n]}).attr("stop-opacity",1),a.attr("offset",function(t,e){return 100/n*e+"%"}).attr("stop-opacity",function(t,n){return 2*e[n].cov})):(i.attr("stop-opacity",0),a.attr("stop-opacity",1))},resampleFake(){const{curves:t}=this.get();this.set({curves:t})},resample(t){const{context:e,trainingPoints:n,countDimensions:r}=this.get(),{curves:i}=this.get(),a=r,[s,o]=e.xDomain(),c=(o-s)/(a-1),u=I(s,o+c,c),f=n.filter(t=>t.active),l=f.map(t=>t.x),h=f.map(t=>t.y),{params:d,kernel:g,covMatrix:p}=this.refs.covMat.get(),v=d.map(t=>t.value),m=Ff(g.apply(null,v),u,l,h),x=m.sample(),b=m.getSd(),y=m.getMean();this.refs.covMat.externalCov(m.cov),this.refs.covMat.set({covMatrix:p});const _=W(u,x,b),w=W(u,y,b);i[t]=_,this.set({curves:i,meanCurve:w})},toggle(t){const{trainingPoints:e}=this.get();e[t].active=!e[t].active,this.set({trainingPoints:e}),this.refs.covMat.set({shouldResample:!0})},createVis(){const{meanCurve:t,sdPlus:e,sdMinus:n,sdArea:r,zero:i,curves:a,line:s,context:o,connectedline:c,countDimensions:u,circleSize:f}=this.get(),l=te(this.refs.graph),h=te(this.refs.covScale);l.append("path").data([t]).attr("class","sdArea").attr("stroke","none").attr("fill","rgba(255,224,255,0.6)").style("fill","url(#masterBackground)").style("opacity",.5).attr("d",r),l.append("path").data([t]).attr("class","zero").attr("fill","none").attr("stroke","#c51b8a").attr("stroke-width","2px").attr("d",i),l.append("path").data([t]).attr("class","sdPlus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",e),l.append("path").data([t]).attr("class","sdMinus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",n);const d=l.selectAll("g.circles").data(a);d.exit().remove(),d.enter().append("g").classed("circles",!0).selectAll(".samples").data(function(t){return t}).enter().append("circle").classed("samples",!0).attr("cx",t=>o.u(t[0])).attr("cy",t=>o.v(t[1])).attr("r",f).style("fill","none").style("stroke","black").style("stroke-with",1),h.selectAll("g.lineConnectors").data([t]).exit().remove(),h.selectAll(".lineConnector").data(t).enter().append("path").classed("lineConnector",!0).attr("stroke","black").attr("fill","transparent").style("stroke-width","1px").style("stroke-dasharray",4).attr("d",function(t){const e=o.u(t[0]),n=o.v(t[1]+2*t[2]);return c([[e+1,n],[e+1,12],[e+o.width,12],[e+o.width,10]])});const g=h.append("linearGradient").classed("gradient",!0).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%").attr("id","master"),p=h.append("linearGradient").classed("gradientBackground",!0).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%").attr("id","masterBackground");let v=0;for(let t=0;to.u(t[0])).attr("y",o.y(0)).attr("width",o.width/u).attr("height",o.width/u).style("fill","transparent").style("stroke","black").style("stroke-width","1px").style("stroke-opacity",0),l.selectAll(".curve").data(a).enter().append("path").attr("class","curve").attr("fill","none").attr("stroke","rgba(0,0,0,0.2)").attr("stroke-width","2px").attr("d",s)},updateLines(){const{meanCurve:t,curves:e,zero:n,sdArea:r,sdPlus:i,sdMinus:a,line:s}=this.get(),o=te(this.refs.graph);o.select(".zero").transition().duration(750).attr("d",n(t)),o.select(".sdArea").transition().duration(750).attr("d",r(t)),o.select(".sdPlus").transition().duration(750).attr("d",i(t)),o.select(".sdMinus").transition().duration(750).attr("d",a(t)),o.selectAll(".curve").data(e).transition().transition().duration(750).attr("d",s)},updateCircles(){const{curves:t,context:e}=this.get(),{hoveredRowIdx:n,colorsRow:r}=this.refs.covMat.get();te(this.refs.graph).selectAll("g.circles").data(t).selectAll(".samples").data(function(t){return t}).transition().duration(750).attr("cx",t=>e.u(t[0])).attr("cy",t=>e.v(t[1])).attr("stroke-opacity",function(t,e){return r.length>1?r[e].cov:0}).attr("stroke-with",function(t,e){return n===e?"4px":"1px"})},updateGradient(){const t=te(this.refs.covScale),{hoveredRowIdx:e,colorsRow:n,offset:r,gridSize:i}=this.refs.covMat.get(),{meanCurve:a,context:s,countDimensions:o,connectedline:c}=this.get(),u=this.colorBar();t.selectAll(".lineConnector").data(a).attr("d",function(t,n){const a=s.u(t[0]),u=s.v(t[1]+2*t[2]),f=37+i/2+(i+r)*n,l=a+s.width-s.width/(o-1)*n;return c([[a+1,u],[a+1,-16],[l+f,-16],[l+f,e*i]])}).style("stroke-dasharray",function(t,n){return e===n?"none":"4"}).style("stroke-opacity",function(t,r){return n.length>1?e===r?1:n[r].cov:0}).style("stroke-width",function(t,n){return e===n?"2px":"1px"}),this.colorGradient(u,n)}};function Eh({_changed:t,_current:e,_previous:n}){const{shouldResample:r}=this.refs.covMat.get(),{countSamples:i}=this.get(),a=document.getElementById("Posterior").getBoundingClientRect().x,s=this.refs.grid.getBoundingClientRect().left;if(this.refs.annotations.style.left=s-a+"px",r)for(let t=0;t{(function(){this.resample(0),this.createVis(),this.refs.covMat.on("update",()=>{this.resampleFake()})}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Dh.prototype,R),i(Dh.prototype,Th),Dh.prototype._recompute=function(t,e){t._context&&this._differs(e.connectedline,e.connectedline=function({_context:t}){return jc().curve(uu).x(t=>t[0]).y(t=>t[1])}(e))&&(t.connectedline=!0),t.context&&(this._differs(e.line,e.line=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.line=!0),this._differs(e.zero,e.zero=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.zero=!0),this._differs(e.sdPlus,e.sdPlus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdPlus=!0),this._differs(e.sdMinus,e.sdMinus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]-2*e[2]))}(e))&&(t.sdMinus=!0),this._differs(e.sdArea,e.sdArea=function({context:t}){return zc().x(e=>t.u(e[0])).y0(e=>t.v(e[1]-2*e[2])).y1(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdArea=!0))};var Lh=Dh;function Oh(t,e){return t.v(e)}var Ih={createTrainingSet(){const{name:t,i:e}=this.get();let n,r;"Periodic"===t[e]?(n=[-Math.PI,0,Math.PI],r=n.map(t=>Math.sin(.5*Math.PI*t)+.5*t)):"Linear"===t[e]?(n=[-Math.PI,Math.PI],r=[-Math.PI/2,Math.PI/2]):(n=[2*-Math.PI,-Math.PI,0,Math.PI,2*Math.PI],r=n.map(t=>Math.sin(.5*Math.PI*t)+.5*t));const i=n.map((t,e)=>({x:n[e],y:r[e]}));this.set({trainingPoints:i})},resample(t){this.createTrainingSet();const{context:e,countDimensions:n,kernel:r,curves:i,trainingPoints:a}=this.get(),s=n,[o,c]=e.xDomain(),u=(c-o)/(s-1),f=I(o,c+u,u),l=Ff(r,f,a.map(t=>t.x),a.map(t=>t.y)),h=l.sample(),d=l.getMean(),g=l.getSd(),p=W(f,h,g),v=W(f,d,g);i[t]=p,this.set({curves:i,meanCurve:v})}};function Uh(t){var e,n,r,u,d,g,p,m,x,b,y,_,w,k,A;S(this,t),this.refs={},this._state=i({context:new Wu(200,200,[-10,10],[-10,10]),curve:[],countDimensions:100,meanCurve:[],curves:[],trainingPoints:[]},t.data),this._recompute({context:1},this._state),this._intro=!0,document.getElementById("svelte-tqpsvp-style")||((e=f("style")).id="svelte-tqpsvp-style",e.textContent=".svelte-ref-svgArea.svelte-tqpsvp{width:100%;height:auto}.svelte-ref-zero.svelte-tqpsvp{stroke:rgba(0,0,0,0.2);stroke-width:1px}",s(document.head,e)),this._fragment=(n=this,r=this._state,{c(){u=l("svg"),d=l("g"),g=l("text"),p=h("y = 0"),x=l("line"),v(g,"x","5"),v(g,"y",m=Oh(r.context,0)-5),v(g,"class","annotation"),v(x,"x1","0"),v(x,"y1",b=Oh(r.context,0)),v(x,"x2",y=r.context.width),v(x,"y2",_=Oh(r.context,0)),v(x,"class","svelte-tqpsvp svelte-ref-zero"),v(u,"class","plot svelte-tqpsvp svelte-ref-svgArea"),v(u,"width",w=r.context.width),v(u,"height",k=r.context.height),v(u,"viewBox",A="0 0 "+r.context.width+" "+r.context.height)},m(t,e){o(t,u,e),s(u,d),s(d,g),s(g,p),s(d,x),n.refs.zero=x,n.refs.graph=d,n.refs.svgArea=u},p(t,e){t.context&&m!==(m=Oh(e.context,0)-5)&&v(g,"y",m),t.context&&b!==(b=Oh(e.context,0))&&v(x,"y1",b),t.context&&y!==(y=e.context.width)&&v(x,"x2",y),t.context&&_!==(_=Oh(e.context,0))&&v(x,"y2",_),t.context&&w!==(w=e.context.width)&&v(u,"width",w),t.context&&k!==(k=e.context.height)&&v(u,"height",k),t.context&&A!==(A="0 0 "+e.context.width+" "+e.context.height)&&v(u,"viewBox",A)},d(t){t&&c(u),n.refs.zero===x&&(n.refs.zero=null),n.refs.graph===d&&(n.refs.graph=null),n.refs.svgArea===u&&(n.refs.svgArea=null)}}),this.root._oncreate.push(()=>{(function(){this.resample(0);const{meanCurve:t,zero:e}=this.get();te(this.refs.svgArea).append("path").data([t]).attr("class","zero").attr("fill","none").attr("stroke","#c51b8a").attr("stroke-width","2px").attr("d",e)}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(Uh.prototype,R),i(Uh.prototype,Ih),Uh.prototype._recompute=function(t,e){t.context&&(this._differs(e.line,e.line=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.line=!0),this._differs(e.zero,e.zero=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.zero=!0),this._differs(e.sdPlus,e.sdPlus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdPlus=!0),this._differs(e.sdMinus,e.sdMinus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]-2*e[2]))}(e))&&(t.sdMinus=!0),this._differs(e.sdArea,e.sdArea=function({context:t}){return zc().x(e=>t.u(e[0])).y0(e=>t.v(e[1]-2*e[2])).y1(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdArea=!0))};var Vh=Uh;const Bh=If(.8,2.1,2),Fh=Uf(.3,.5,0),Yh=($h=[Fh,Bh],function(t,e){return $h.map(function(n){return n.apply(null,[t,e])}).reduce(function(t,e){return t*e},1)});var $h;const Hh=Vf([Fh,Bh]);function Gh(t,e,n){const r=Object.create(t);return r.k=e[n],r.i=n,r}function Wh(t,e){var n,r,i,a,u,l=e.names[e.i],d={kernel:e.k,name:e.names,id:"",i:e.i},g=new Vh({root:t.root,store:t.store,data:d});return{c(){n=f("div"),g._fragment.c(),r=h("\n "),i=f("label"),a=h(l),u=h("\n "),i.className="annotation",v(i,"font-weight","bold"),n.className="grid-item svelte-1s9627g"},m(t,e){o(t,n,e),g._mount(n,null),s(n,r),s(n,i),s(i,a),s(n,u)},p(t,e){var n={};t.kernels&&(n.kernel=e.k),t.names&&(n.name=e.names),g._set(n),t.names&&l!==(l=e.names[e.i])&&m(a,l)},d(t){t&&c(n),g.destroy()}}}function Xh(t){var e;S(this,t),this._state=i({kernels:[Fh,Bh,Hh,Yh],names:["Linear","Periodic","Linear + Periodic","Linear ⋅ Periodic"]},t.data),this._intro=!0,document.getElementById("svelte-1s9627g-style")||((e=f("style")).id="svelte-1s9627g-style",e.textContent=".kernel-grid.svelte-1s9627g{display:inline-grid;grid-template-columns:1fr 1fr}@media only screen and (min-width: 1168px){.kernel-grid.svelte-1s9627g{display:inline-grid;grid-template-columns:1fr 1fr 1fr 1fr}}.grid-item.svelte-1s9627g{margin:1em}",s(document.head,e)),this._fragment=function(t,e){for(var n,r=e.kernels,i=[],a=0;aMath.sin(6*t)+2*t),r=t.map((r,i)=>({x:t[i],y:n[i],active:e[i]}));this.set({trainingPoints:r})},fkt(){let t=1;const e=Of(),n=If(1,3,.8),r=Uf(.5,.5,0),i=[],{kernels:a}=this.get();return a[0].active&&(t=e,i[0]=a[0]),a[1].active&&(t=n,i[0]=a[1]),a[2].active&&(t=r,i[0]=a[2]),a[0].active&&a[1].active&&(t=Vf([e,n]),i[0]=a[0],i[1]=a[1]),a[1].active&&a[2].active&&(t=Vf([r,n]),i[0]=a[1],i[1]=a[2]),a[0].active&&a[2].active&&(t=Vf([r,e]),i[0]=a[0],i[1]=a[2]),a[0].active&&a[1].active&&a[2].active&&(t=Vf([r,n,e]),i[0]=a[0],i[1]=a[1],i[2]=a[2]),this.set({currentParams:i}),t},resample(t){const{context:e,trainingPoints:n}=this.get(),{countDimensions:r,currentKernel:i,curves:a}=this.get(),s=r,[o,c]=e.xDomain(),u=(c-o)/(s-1),f=I(o,c+u,u),l=n.filter(t=>t.active),h=Ff(i,f,l.map(t=>t.x),l.map(t=>t.y)),d=h.sample(),g=h.getMean(),p=h.getSd();this.refs.covMat.externalCov(h.cov),this.refs.covMat.set({covMatrix:h.cov,kernel:i});const v=W(f,d,p),m=W(f,g,p);a[t]=v,this.set({curves:a,meanCurve:m})},toggle(t){const{trainingPoints:e}=this.get();e[t].active=!e[t].active,this.set({trainingPoints:e})},setFirstClick(t){this.set({firstClick:t})}};function td({_changed:t,current:e,_previous:n}){const r=this.fkt();e.currentKernel=r;const i=te(this.refs.graph);if(1!=r){this.set({currentKernel:r});const{shouldResample:t}=this.refs.covMat.get(),{countSamples:n}=this.get();if(t)for(let t=0;tt.active).length>0?"visible":"hidden"),v(A,"class","svelte-c95rte"),v(d,"class","plot svelte-c95rte svelte-ref-svgArea"),v(d,"width",z=e.context.width),v(d,"height",q=e.context.height),v(d,"viewBox",D="0 0 "+e.context.width+" "+e.context.height),a.className="grid-item svelte-c95rte",O.className="grid-item svelte-c95rte",i.className="kernel-grid svelte-c95rte"},m(e,c){o(e,n,c);for(var u=0;ut.active).length>0?"visible":"hidden")&&v(A,"visibility",j),e.context&&z!==(z=r.context.width)&&v(d,"width",z),e.context&&q!==(q=r.context.height)&&v(d,"height",q),e.context&&D!==(D="0 0 "+r.context.width+" "+r.context.height)&&v(d,"viewBox",D);var a={};e.countDimensions&&(a.n=r.countDimensions),X._set(a)},d(e){e&&c(n),u(U,e),e&&(c(r),c(i)),t.refs.graph===m&&(t.refs.graph=null),u(F,e),t.refs.zero===w&&(t.refs.zero=null),Y&&Y.d(),u(H,e),p(A,"mouseover",G),t.refs.svgArea===d&&(t.refs.svgArea=null),X.destroy(),t.refs.covMat===X&&(t.refs.covMat=null)}}}(this,this._state),this.root._oncreate.push(()=>{(function(){const t=this.fkt();this.set({currentKernel:t}),this.createTrainingSet();const{meanCurve:e,sdPlus:n,sdMinus:r,sdArea:i,zero:a,curves:s,line:o}=this.get(),c=te(this.refs.graph);c.append("path").data([e]).attr("class","sdArea").attr("stroke","none").attr("fill","rgba(255,224,255,0.6)").attr("d",i),c.append("path").data([e]).attr("class","zero").attr("fill","none").attr("stroke","#c51b8a").attr("stroke-width","2px").attr("d",a),c.append("path").data([e]).attr("class","sdPlus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",n),c.append("path").data([e]).attr("class","sdMinus").attr("fill","none").attr("stroke","#fa9fb5").attr("stroke-width","1px").attr("d",r),c.selectAll(".curve").data(s).enter().append("path").attr("class","curve").attr("fill","none").attr("stroke","rgba(0,0,0,0.2)").attr("stroke-width","2px").attr("d",o)}).call(this),this.fire("update",{changed:a({},this._state),current:this._state})}),t.target&&(this._fragment.c(),this._mount(t.target,t.anchor),M(this))}i(hd.prototype,R),i(hd.prototype,Jh),hd.prototype._recompute=function(t,e){t.context&&(this._differs(e.line,e.line=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.line=!0),this._differs(e.zero,e.zero=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]))}(e))&&(t.zero=!0),this._differs(e.sdPlus,e.sdPlus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdPlus=!0),this._differs(e.sdMinus,e.sdMinus=function({context:t}){return jc().x(e=>t.u(e[0])).y(e=>t.v(e[1]-2*e[2]))}(e))&&(t.sdMinus=!0),this._differs(e.sdArea,e.sdArea=function({context:t}){return zc().x(e=>t.u(e[0])).y0(e=>t.v(e[1]-2*e[2])).y1(e=>t.v(e[1]+2*e[2]))}(e))&&(t.sdArea=!0))};var dd=hd;new tl({target:document.querySelector("#Teaser")}),new bl({target:document.querySelector("#Multivariate")}),new _l({target:document.querySelector("#DimensionSwap")}),new Al({target:document.querySelector("#MarginalizationConditioning")}),new Fl({target:document.querySelector("#MultipleKernels")}),new th({target:document.querySelector("#PriorFigure")}),new dh({target:document.querySelector("#PosteriorFigure")}),new Ph({target:document.querySelector("#Prior")}),new Lh({target:document.querySelector("#Posterior")}),new Kh({target:document.querySelector("#KernelCombinationsStatic")}),new dd({target:document.querySelector("#KernelCombinations")})}]); +//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/assets/js/custom/gp/bundle.js.map b/assets/js/custom/gp/bundle.js.map new file mode 100644 index 00000000000..d8a933c0eb6 --- /dev/null +++ b/assets/js/custom/gp/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/ow-lite/index.js","webpack:///./node_modules/is-any-array/src/index.js","webpack:///./node_modules/random/dist/rng.js","webpack:///./node_modules/ow-lite/lib/symbols.js","webpack:///./node_modules/random/index.js","webpack:///./node_modules/random/dist/random.js","webpack:///./node_modules/ow-lite/lib/number.js","webpack:///./node_modules/ow-lite/lib/string.js","webpack:///./node_modules/ow-lite/lib/object.js","webpack:///./node_modules/random/dist/rng-factory.js","webpack:///./node_modules/random/dist/generators/xor128.js","webpack:///./node_modules/random/dist/generators/function.js","webpack:///./node_modules/random/dist/generators/math-random.js","webpack:///./node_modules/random/dist/distributions/uniform.js","webpack:///./node_modules/random/dist/distributions/uniform-int.js","webpack:///./node_modules/random/dist/distributions/uniform-boolean.js","webpack:///./node_modules/random/dist/distributions/normal.js","webpack:///./node_modules/random/dist/distributions/log-normal.js","webpack:///./node_modules/random/dist/distributions/bernoulli.js","webpack:///./node_modules/random/dist/distributions/binomial.js","webpack:///./node_modules/random/dist/distributions/geometric.js","webpack:///./node_modules/random/dist/distributions/poisson.js","webpack:///./node_modules/random/dist/distributions/exponential.js","webpack:///./node_modules/random/dist/distributions/irwin-hall.js","webpack:///./node_modules/random/dist/distributions/bates.js","webpack:///./node_modules/random/dist/distributions/pareto.js","webpack:///./node_modules/svelte/shared.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/src/transpose.js","webpack:///./node_modules/d3-array/src/zip.js","webpack:///./node_modules/d3-array/src/min.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.js","webpack:///./node_modules/d3-drag/src/constant.js","webpack:///./node_modules/d3-drag/src/event.js","webpack:///./node_modules/d3-drag/src/drag.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-ease/src/poly.js","webpack:///./node_modules/d3-ease/src/sin.js","webpack:///./node_modules/d3-ease/src/back.js","webpack:///./node_modules/d3-ease/src/elastic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/symbol/diamond.js","webpack:///./node_modules/d3-shape/src/symbol/circle.js","webpack:///./node_modules/d3-shape/src/symbol/star.js","webpack:///./node_modules/d3-shape/src/noop.js","webpack:///./node_modules/d3-shape/src/symbol/triangle.js","webpack:///./node_modules/d3-shape/src/symbol/wye.js","webpack:///./node_modules/d3-shape/src/curve/basis.js","webpack:///./node_modules/d3-shape/src/curve/basisClosed.js","webpack:///./node_modules/d3-shape/src/curve/basisOpen.js","webpack:///./node_modules/d3-shape/src/curve/bundle.js","webpack:///./node_modules/d3-shape/src/curve/cardinal.js","webpack:///./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///./node_modules/d3-shape/src/curve/catmullRom.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///./node_modules/d3-shape/src/curve/linearClosed.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-shape/src/curve/natural.js","webpack:///./node_modules/d3-shape/src/curve/step.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./src/components/util/context.js","webpack:///./node_modules/ml-array-max/lib-es6/index.js","webpack:///./node_modules/ml-array-min/lib-es6/index.js","webpack:///./node_modules/ml-array-rescale/lib-es6/index.js","webpack:///./node_modules/ml-matrix/src/dc/lu.js","webpack:///./node_modules/ml-matrix/src/dc/util.js","webpack:///./node_modules/ml-matrix/src/dc/svd.js","webpack:///./node_modules/ml-matrix/src/util.js","webpack:///./node_modules/ml-matrix/src/views/base.js","webpack:///./node_modules/ml-matrix/src/views/transpose.js","webpack:///./node_modules/ml-matrix/src/views/row.js","webpack:///./node_modules/ml-matrix/src/views/sub.js","webpack:///./node_modules/ml-matrix/src/views/selection.js","webpack:///./node_modules/ml-matrix/src/views/rowSelection.js","webpack:///./node_modules/ml-matrix/src/views/columnSelection.js","webpack:///./node_modules/ml-matrix/src/views/column.js","webpack:///./node_modules/ml-matrix/src/views/flipRow.js","webpack:///./node_modules/ml-matrix/src/views/flipColumn.js","webpack:///./node_modules/ml-matrix/src/abstractMatrix.js","webpack:///./node_modules/ml-matrix/src/matrix.js","webpack:///./node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","webpack:///./node_modules/ml-matrix/src/dc/qr.js","webpack:///./node_modules/ml-matrix/src/decompositions.js","webpack:///./node_modules/ml-matrix/src/dc/evd.js","webpack:///./node_modules/ml-matrix/src/dc/cholesky.js","webpack:///./src/gaussian/index.js","webpack:///./src/gp/index.js","webpack:///./src/components/Teaser.html","webpack:///./src/components/util/limit.js","webpack:///./src/components/GaussianContours.html","webpack:///./src/components/InteractiveGaussian.html","webpack:///./src/components/CovMat2x2.html","webpack:///./src/components/ColorScale.html","webpack:///./src/components/Multivariate.html","webpack:///./src/components/DimensionSwapFigure.html","webpack:///./src/components/MarginalizationConditioning.html","webpack:///./src/components/KernelCovMat.html","webpack:///./src/components/MultipleKernels.html","webpack:///./src/components/PriorFigure.html","webpack:///./src/components/PosteriorFigure.html","webpack:///./src/components/PriorSampling.html","webpack:///./src/components/Posterior.html","webpack:///./src/components/PriorSample.html","webpack:///./src/components/KernelCombinationsStatic.html","webpack:///./src/components/KernelCombinations.html","webpack:///./src/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","symbols","typePredicates","number","string","createOw","validators","predicates","type","ow","Proxy","obj","validate","label","Error","length","validator","fn","predicate","push","func","apply","thisArg","args","toString","endsWith","_createClass","defineProperties","target","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","RNG","instance","TypeError","_classCallCheck","this","_seed","opts","seed","strSeed","k","charCodeAt","default","_owLite2","_interopRequireDefault","_rng3","_rngFactory2","_uniform3","_uniformInt3","_uniformBoolean3","_normal3","_logNormal3","_bernoulli3","_binomial3","_geometric3","_poisson3","_exponential3","_irwinHall3","_bates3","_pareto3","Random","rng","instanceOf","_cache","use","_rng","clone","arguments","undefined","_patch","Math","random","uniform","next","min","max","uniformInt","uniformBoolean","_memoize","mu","sigma","lambda","alpha","_len","Array","_key","join","distribution","concat","numberPredicates","positive","negative","nonNegative","integer","[object Object]","is","eq","v","gt","gte","lt","lte","stringPredicates","empty","nonEmpty","minLength","maxLength","matches","test","startsWith","objectPredicates","plain","proto","getPrototypeOf","keys","_typeof","iterator","constructor","_rng2","_xor2","_function2","_mathRandom2","PRNG_BUILTINS","xor128","function","_args$","arg0","rest","slice","PRNG","Function","arr","isArray","arr2","from","_toConsumableArray","RNGXOR128","_RNG","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","x","y","z","w","subClass","superClass","setPrototypeOf","_inherits","RNGFunction","RNGMathRandom","_owLite","sqrt","log","normal","exp","invLogP","logFactorialTable","logFactorial","expMean","u","smu","b","a","invAlpha","vR","floor","abs","us","sum","irwinHall","pow","noop","shared_assign","tar","src","assignTrue","append","node","appendChild","insert","anchor","insertBefore","detachNode","parentNode","removeChild","destroyEach","iterations","detach","createElement","document","createSvgElement","createElementNS","createText","data","createTextNode","createComment","addListener","event","handler","options","addEventListener","removeListener","removeEventListener","setAttribute","attribute","removeAttribute","setData","text","setStyle","style","setProperty","blankObject","destroy","fire","set","_fragment","_state","_differs","eventName","handlers","_handlers","__calling","flush","component","_lock","callAll","_beforecreate","_oncreate","_aftercreate","shared_init","_slots","_bind","_staged","root","store","shared_on","cancel","index","indexOf","splice","newState","_set","oldState","changed","dirty","_recompute","current","previous","_stage","fns","shift","_mount","on","ascending","NaN","bisector","compare","f","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisect","array_array","src_range","map","start","stop","step","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","power","LN10","error","tickStep","step0","step1","src_merge","arrays","merged","array","j","transpose_length","zip","matrix","values","valueof","src_min","transpose","row","src_transpose","array_slice","src_identity","axis_top","axis_right","axis_bottom","axis_left","epsilon","translateX","translateY","entering","__axis","axis_axis","orient","scale","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","axis","context","domain","format","spacing","range0","range1","position","bandwidth","offset","round","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","attr","line","select","merge","transition","getAttribute","remove","filter","each","_","tickSize","dispatch_noop","dispatch","Dispatch","dispatch_get","dispatch_set","callback","typename","types","T","trim","split","that","src_dispatch","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creator","fullname","ownerDocument","uri","namespaceURI","documentElement","none","src_selector","selector","querySelector","selectorAll_empty","selectorAll","querySelectorAll","matcher","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","child","keyPrefix","bindIndex","group","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","sort_ascending","src_window","defaultView","styleValue","getPropertyValue","getComputedStyle","classArray","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","contains","textRemove","textContent","htmlRemove","innerHTML","raise","nextSibling","lower","previousSibling","firstChild","constantNull","remove_remove","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","on_event","mouseenter","mouseleave","filterContextListener","listener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","capture","onAdd","wrap","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","selection_root","Selection","groups","parents","_groups","_parents","selection_selection","subgroups","subnode","subgroup","match","size","enterGroup","updateGroup","i0","i1","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","sort","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","removeAttributeNS","setAttributeNS","priority","removeProperty","classed","html","before","deep","typenames","on_parseTypenames","src_selection","src_select","nextId","Local","id","source","src_point","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","mouse","changedTouches","src_touch","touches","identifier","touch","nopropagation","stopImmediatePropagation","noevent","preventDefault","nodrag","view","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","d3_drag_src_constant","DragEvent","subject","active","dx","dy","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","src_drag","mousedownx","mousedowny","mousemoving","touchending","container","touchable","gestures","listeners","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","clearTimeout","sublisteners","p0","clickDistance","define","factory","extend","definition","Color","reI","reN","reP","reHex3","reHex6","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_color","toLowerCase","exec","Rgb","parseInt","rgbn","rgba","hsla","g","rgbConvert","rgb","opacity","color_rgb","hex","h","Hsl","hsl","hslConvert","hsl2rgb","m2","displayable","brighter","darker","isNaN","deg2rad","PI","rad2deg","Xn","Yn","Zn","lab_t0","lab_t1","lab_t2","t3","labConvert","Lab","Hcl","cos","sin","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","C","cubehelix_D","cubehelix_E","ED","EB","BC_DA","cubehelix_cubehelix","Cubehelix","bl","cubehelixConvert","basis","t1","v0","v1","v2","v3","t2","cosh","sinh","d3_interpolate_src_constant","color_linear","color_hue","gamma","nogamma","exponential","src_rgb","rgbGamma","color","end","rgbSpline","spline","colors","rgbBasis","src_number","reA","reB","cssNode","cssRoot","cssView","svgNode","src_string","am","bm","bs","bi","lastIndex","q","one","string_zero","src_value","Date","setTime","nb","na","valueOf","src_round","degrees","decompose_identity","rotate","skewX","scaleX","scaleY","decompose","e","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","SQRT2","hsl_hsl","hue","hcl_hcl","src_cubehelix_cubehelix","cubehelixGamma","cubehelix","cubehelixLong","taskHead","taskTail","timer_frame","timeout","timer_interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","Infinity","sleep","nap","poke","clearInterval","setInterval","src_timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","transition_schedule","timing","schedules","__transition","tween","state","duration","ease","schedule_create","schedule_init","schedule","schedule_get","schedule_set","interrupt","tweenValue","_id","transition_interpolate","selection_Selection","style_styleRemove","transition_id","Transition","_name","newId","selection_prototype","children","inherit","id0","id1","on0","on1","sit","every","on_start","onFunction","attrTween","interpolate","string00","string10","interpolate0","string0","string1","value1","_value","attrInterpolateNS","attrInterpolate","styleTween","styleNull","style_styleFunction","listener0","styleMaybeRemove","style_styleConstant","styleInterpolate","text_textFunction","text_textConstant","tween0","tween1","easeConstant","Promise","resolve","reject","custom","polyIn","exponent","polyOut","polyInOut","backIn","overshoot","backOut","backInOut","tau","defaultTiming","asin","elasticIn","amplitude","period","elasticOut","elasticInOut","transition_inherit","brush_type","path_pi","path_tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path_path","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","src_path","Map","map_map","has","clear","entries","src_map","Set","set_proto","set_set","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","JSON","stringify","dsv","delimiter","reFormat","DELIMITER","parseRows","rows","N","I","eof","eol","token","replace","formatRow","formatValue","convert","customConverter","columnSet","forEach","column","inferColumns","formatRows","csv","csvParse","tsv","tsvParse","responseText","response","ok","status","statusText","src_text","input","init","fetch","then","dsvParse","parser","DOMParser","parseFromString","add_add","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","src_quad","x_defaultX","y_defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","xz","yz","visit","extent","find","radius","x3","y3","quads","d2","retainer","removeAll","visitAfter","formatDecimal","toExponential","coefficient","src_exponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","prefixExponent","defaultLocale_locale","defaultLocale_format","defaultLocale_formatPrefix","formatTrim","out","formatRounded","formatTypes","%","toFixed","toPrecision","X","toUpperCase","d3_format_src_identity","prefixes","locale","grouping","thousands","substring","currency","decimal","numerals","formatNumerals","percent","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","padding","formatPrefix","src_locale","adder","Adder","reset","adder_add","adder_temp","bv","av","math_epsilon","src_math_pi","src_math_halfPi","quarterPi","src_math_tau","radians","math_cos","math_sin","noop_noop","cartesian_cartesian","spherical","phi","cosPhi","cartesianCross","cartesianNormalizeInPlace","rotationIdentity","invert","clip_buffer","lines","lineStart","lineEnd","rejoin","result","pointEqual","Intersection","points","other","entry","segments","compareIntersection","startInside","stream","clip","segment","p1","rejoin_link","isSubject","polygonContains_sum","polygonContains","polygon","sinPhi","angle","winding","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","delta","absDelta","antimeridian","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","polygonStart","pointRing","ringStart","ringEnd","polygonEnd","clip_compareIntersection","sphere","pointLine","clean","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","direction","PathContext","_context","_radius","pointRadius","_line","_point","PathString","_string","string_circle","_circle","transformer","methods","TransformStream","azimuthalRaw","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","equirectangularRaw","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi2","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","count_count","hierarchy","childs","Node","valued","defaultChildren","depth","eachBefore","computeHeight","copyData","height","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","dice","TreeNode","A","treemap_slice","squarify_phi","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","squarify","resquarify","_squarify","src_defaultSource","src_normal","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","randomBates","sourceRandomExponential","randomExponential","initRange","initInterpolator","interpolator","d3_scale_src_array_array","array_map","d3_scale_src_array_slice","d3_scale_src_constant","d3_scale_src_number","unit","continuous_identity","normalize","clamper","bimap","d0","d1","r0","r1","polymap","clamp","unknown","continuous_transformer","untransform","piecewise","output","rescale","rangeRound","continuous","src_tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","src_linear_linear","interval_t0","interval_t1","newInterval","floori","offseti","field","interval","date","millisecond_millisecond","durationMinute","durationWeek","second_second","getUTCSeconds","minute_minute","getMinutes","hour_hour","getTimezoneOffset","getHours","day_day","setHours","setDate","getDate","src_day","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month_month","setMonth","getMonth","getFullYear","year_year","setFullYear","src_year","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","src_utcDay","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","src_utcYear","localDate","H","S","L","utcDate","UTC","newYear","src_defaultLocale_locale","utcFormat","utcParse","pads","-","0","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","getMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","getSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","locale_formatYear","formatFullYear","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","B","Y","utcFormats","parses","parseSpecifier","charAt","newParse","newDate","week","formatLocale","defaultLocale_defaultLocale","toISOString","sequential_transformer","k10","sequential_copy","sequential","src_colors","ramp","scheme","GnBu","RdPu","Greys","viridis_ramp","d3_shape_src_constant","src_math_epsilon","d3_shape_src_math_pi","d3_shape_src_math_tau","Linear","areaStart","areaEnd","curve_linear","point_x","point_y","src_line","defined","curve","buffer","defined0","d3_shape_src_area","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","curveRadial","Radial","_curve","radial","kr","d3_shape_src_noop","basis_point","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","bundle","cardinal_point","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","catmullRom_point","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","monotone_sign","slope3","h0","h1","s0","s1","slope2","monotone_point","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","_t0","px","py","Step","_t","stepBefore","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","src_RedBlackTree","createEdge","edge","Diagram_edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","Diagram_epsilon2","ha","hc","circle","Diagram_circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","Diagram_epsilon","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","edges","polygons","triangles","e1","_found","vx","vy","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","Context","_ref","_ref2","_ref3","_slicedToArray","xmin","xmax","_ref4","ymin","ymax","xToViewport","d3","yToViewport","lib_es6","src_default","ml_array_min_lib_es6","ml_array_rescale_lib_es6","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","lu_LuDecomposition","LUcolj","kmax","lu","WrapperMatrix2D_WrapperMatrix2D","checkMatrix","pivotVector","pivotSign","LU","col","matrix_Matrix","isSingular","subMatrixRow","determinant","isSquare","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","getFilled2DArray","svd_SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","console","warn","nu","ni","work","si","nct","nrt","mrc","pp","eps","Number","EPSILON","kase","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","tmp","threshold","scols","Ls","zeros","rightSingularVectors","VL","mmul","vrows","urows","VLU","solve","diag","vcols","ucols","condition","norm2","rank","tol","ii","diagonal","leftSingularVectors","isMatrix","diagonalMatrix","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","checkColumnIndices","some","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","base_BaseView","AbstractMatrix","super","static","species","transpose_MatrixTransposeView","rowIndex","columnIndex","row_MatrixRowView","sub_MatrixSubView","selection_MatrixSelectionView","indices","rowSelection_MatrixRowSelectionView","columnSelection_MatrixColumnSelectionView","column_MatrixColumnView","flipRow_MatrixFlipRowView","flipColumn_MatrixFlipColumnView","superCtor","Matrix","newRows","newColumns","newData","newMatrix","matrix1","matrix2","klass","jj","rowRep","colRep","setSubMatrix","mulS","rowVector","getRow","row1","row2","temp","columnVector","getColumn","column1","column2","idx","sumByRow","sumByColumn","sumAll","prod","vector2","vector1","dot","Bcolj","a11","b11","a12","b12","a21","b21","a22","b22","m3","m4","m5","c00","c01","c10","c11","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m6","m7","m8","m9","m12","m13","m14","m15","m16","m17","m18","c02","c12","c20","c21","c22","c1","r2","c2","embed","mat","cols","resultat","blockMult","halfRows","halfCols","subMatrix","sub","scaled","setRow","setColumn","compareFunction","compareNumbers","trace","subMatrix0","subMatrix1","subMatrix2","selectionView","det","svdSolution","transposeView","rand","identity","eye","negate","neg","tensorProduct","kroneckerProduct","staticMethodWithArgs","eval2","eval","operator","inplaceOp","fillTemplateFunction","op","inplaceOpS","inplaceOpM","staticOp","method","mathMethod","inplaceMeth","staticMeth","methodWithArg","inplaceMethWithArgs","staticMethWithArgs","tmplVar","inplaceMethod2","inplaceMethodS","inplaceMethodM","staticMethod2","template","nRows","nColumns","isInteger","qr_QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","useSVD","leftHandSide","rightHandSide","evd_EigenvalueDecomposition","assumeSymmetric","isSymmetric","hh","tred2","dl1","c3","el1","s2","tst1","tql2","ort","high","low","orthes","nn","ra","sa","vr","vi","notlast","cdivres","exshift","norm","iter","cdiv","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","xr","xi","yr","yi","cholesky_CholeskyDecomposition","dimension","positiveDefinite","Lrowj","Lrowk","Gaussian","mean","cov","gaussian_classCallCheck","diff","mul","aMean","sliceMat","bMean","aCov","bCov","Exx","Exy","Eyx","Eyy","Lxx","mLy","transformationMatrix","j1","i2","j2","rbf","ss2","sqdist","periodic","dist","sin2","linear","sigmaB","combineKernelsAddition","kernels","reduce","acc","covMatrix","kernel","dim","kernelMatrix","gaussianProcess","xtest","xtrain","ytrain","xs","gp","gauss","trainingPoints","firstClick","_changed","_previous","refs","graph","sdArea","sdPlus","sdMinus","toggle","ctx","toU","pt","toV","create_if_block_1","context_Context","create_if_block","xDomain","activePoints","xsTrain","ysTrain","process","gp_rbf","ys","getMean","sd","getSd","num","gaussian","gaussian_Gaussian","contours","radii","mx","my","magnitude","l1","eig","limit_clamp","sigma1","sigma2","corr","staticId","margin","tickScale","colorScale","axisGen","colorBar","colorValues","twoDecimals","sample","xy","STEP","text4","text5","text6","div3","svg0","path0","text11","text7","tspan0","text8","text9","text10","text11_x_value","text11_y_value","text16","text12","tspan1","text13","text14","text15","text16_y_value","svg0_height_value","svg0_viewBox_value","text17","div4","svg1","line_x__value","line_x__value_1","line_y__value","circle0","circle0_cx_value","circle0_cy_value","text20","text18","text19","text20_x_value","text20_y_value","circle1","circle1_cx_value","circle1_cy_value","svg1_width_value","svg1_height_value","svg1_viewBox_value","text21","div5","svg2","path1","text26","text22","tspan2","text23","text24","text25","text26_y_value","text31","text27","tspan3","text28","text29","text30","text31_y_value","svg2_height_value","svg2_viewBox_value","text10_value","text15_value","text19_value","text25_value","text30_value","limits","cond","sideWidth","MarginalizationConditioning_twoDecimals","marginalizedGauss","conditionedGauss","marginalizedPath","MarginalizationConditioning_toV","condPos","conditionedPath","handle","upperLimit","yDomain","at","pts","marginalize","hoverGrid","hoveredRow","hoveredRowIdx","result2","colorsRow","shouldResample","ref","resample","currentSelectedParameter","currentSelectedKernel","currentSelectedRef","shadows","currData","gridSize","_d","axisScale","currentObject","showText","grid","gridNode","covMat","covarianceMat","gridD3","returnColor","updateCovMat","paramValues","gp_covMatrix","_current","external","updateSlider","input0","input1","input2","interaction","slider","invertColor","KernelCovMat_create_if_block","gridText","mouseOverHover","MultipleKernels_rbf","equation","description","MultipleKernels_periodic","gp_periodic","MultipleKernels_linear","gp_linear","annotations","labelRect","positionX1","positionY1","connectedline","text0","text1","div1","d_math","text2","text3","div2","text2_value","tspan4","text8_value","PriorFigure_color","PriorFigure_create_if_block","idxColor","PosteriorFigure_color","PosteriorFigure_create_if_block_1","PosteriorFigure_idxColor","PosteriorFigure_create_if_block","xst","PriorSampling_rbf","PriorSampling_periodic","PriorSampling_linear","switchKernel","countDimensions","ysMean","ptsMean","meanCurve","svgArea","plus","minus","switchRBF","switchPeriodic","switchLinear","shadowPaths","PriorSampling_create_if_block","toggleOnOff","PriorSampling_toV","fakeHover","covScale","currentComponent","rects","colorArray","newColor","gradient","gradient2","curves","externalCov","circleSize","matScale","circles","xConv","yConv","stopId","offsetRight","offsetLeft","colorGradient","countSamples","xPosOuter","getElementById","xPos","updateLines","updateCircles","updateGradient","Posterior_toU","Posterior_toV","Posterior_create_if_block","selectSzenario","createVis","resampleFake","xTrain","yTrain","createTrainingSet","PriorSample_toV","KernelCombinationsStatic_periodic","KernelCombinationsStatic_linear","multiplication","addition","isActive","solution","paramsList","currentParams","currentKernel","fkt","checked","KernelCombinations_toU","KernelCombinations_toV","KernelCombinations_create_if_block_1","pList","useTrainingData","KernelCombinations_create_if_block","setFirstClick","Teaser","Multivariate","DimensionSwap","MarginalizationConditioning","MultipleKernels","PriorFigure","PosteriorFigure","PriorSampling","Posterior","KernelCombinationsStatic","KernelCombinations"],"mappings":"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3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCESC,GAZE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACAuL,IAAM+yC,KCASC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KXESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,MYESI,ICAAH,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KJESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,MKESK,ICAAJ,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KNESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,MOESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCESC,GAVE,IAAA3+C,MAAA,GAAAI,OACjB,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACAuL,IAAM+yC,KCRSvsB,GAAyBjF,GAAS,UAAiBA,IAAS,WCAzDiF,GAAyBjF,IAAS,aAAoBA,GAAS,YAE/DiF,GAAyBjF,GAAS,aAAmBA,GAAS,YAExEA,KCLAzC,KACRvr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","file":"js/bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 26);\n","'use strict'\n\nconst symbols = require('./lib/symbols')\nconst number = require('./lib/number')\nconst string = require('./lib/string')\nconst object = require('./lib/object')\n\nconst typePredicates = {\n number,\n string,\n object\n}\n\nconst createOw = ({\n validators = [],\n predicates = typePredicates,\n type = null\n} = { }) => {\n const ow = new Proxy(function () { }, {\n get: (obj, key) => {\n if (key === symbols.validate) {\n return (value, label = 'argument') => {\n if (!type) {\n return new Error('missing required type specifier')\n }\n\n for (let i = 0; i < validators.length; ++i) {\n const validator = validators[i]\n const result = validator.fn(value)\n\n if (!result) {\n if (i === 0) {\n throw new Error(`Expected ${label} \\`${value}\\` to be of type \\`${type}\\`, but received type \\`${typeof value}\\``)\n } else {\n throw new Error(`Expected ${type} \\`${label}\\` \\`${value}\\` failed predicate \\`${validator.key}\\``)\n }\n }\n }\n }\n }\n\n const predicate = predicates[key]\n\n if (predicate) {\n if (typeof predicate === 'function') {\n validators.push({\n key,\n fn: predicate\n })\n\n return ow\n } else {\n return createOw({\n type: key,\n validators: [\n {\n key,\n fn: predicate.validator\n }\n ],\n predicates: predicate.predicates\n })\n }\n } else {\n const fn = predicates[symbols.func] && predicates[symbols.func][key]\n\n if (fn) {\n return new Proxy(function () { }, {\n get: () => {\n throw new Error(`invalid use of functional predicate \"${key}\"`)\n },\n\n apply: (obj, thisArg, args) => {\n validators.push({\n key,\n fn: fn(...args)\n })\n\n return ow\n }\n })\n } else {\n if (key === 'default' || key === '__esModule') {\n return ow\n }\n\n return ow\n // throw new Error(`unrecognized predicate \"${key}\"`)\n }\n }\n },\n\n apply: (obj, thisArg, args) => {\n if (args.length !== 2 && args.length !== 3) {\n throw new Error('invalid number of arguments to \"ow\"')\n } else {\n args[1][symbols.validate](args[0], args[2])\n }\n }\n })\n\n return ow\n}\n\nmodule.exports = createOw()\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RNG = function () {\n function RNG() {\n _classCallCheck(this, RNG);\n }\n\n _createClass(RNG, [{\n key: 'next',\n value: function next() {\n throw new Error('RNG.next must be overridden');\n }\n }, {\n key: 'seed',\n value: function seed(_seed, opts) {\n throw new Error('RNG.seed must be overridden');\n }\n }, {\n key: 'clone',\n value: function clone(seed, opts) {\n throw new Error('RNG.clone must be overridden');\n }\n }, {\n key: '_seed',\n value: function _seed(seed, opts) {\n // TODO: add entropy and stuff\n\n if (seed === (seed | 0)) {\n return seed;\n } else {\n var strSeed = '' + seed;\n var s = 0;\n\n for (var k = 0; k < strSeed.length; ++k) {\n s ^= strSeed.charCodeAt(k) | 0;\n }\n\n return s;\n }\n }\n }, {\n key: 'name',\n get: function get() {\n throw new Error('RNG.name must be overridden');\n }\n }]);\n\n return RNG;\n}();\n\nexports.default = RNG;\n//# sourceMappingURL=rng.js.map","'use strict'\n\nexports.func = Symbol('func')\nexports.validate = Symbol('validate')\n","'use strict'\n\nmodule.exports = require('./dist/random').default\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nvar _rng2 = require('./rng');\n\nvar _rng3 = _interopRequireDefault(_rng2);\n\nvar _rngFactory = require('./rng-factory');\n\nvar _rngFactory2 = _interopRequireDefault(_rngFactory);\n\nvar _uniform2 = require('./distributions/uniform');\n\nvar _uniform3 = _interopRequireDefault(_uniform2);\n\nvar _uniformInt2 = require('./distributions/uniform-int');\n\nvar _uniformInt3 = _interopRequireDefault(_uniformInt2);\n\nvar _uniformBoolean2 = require('./distributions/uniform-boolean');\n\nvar _uniformBoolean3 = _interopRequireDefault(_uniformBoolean2);\n\nvar _normal2 = require('./distributions/normal');\n\nvar _normal3 = _interopRequireDefault(_normal2);\n\nvar _logNormal2 = require('./distributions/log-normal');\n\nvar _logNormal3 = _interopRequireDefault(_logNormal2);\n\nvar _bernoulli2 = require('./distributions/bernoulli');\n\nvar _bernoulli3 = _interopRequireDefault(_bernoulli2);\n\nvar _binomial2 = require('./distributions/binomial');\n\nvar _binomial3 = _interopRequireDefault(_binomial2);\n\nvar _geometric2 = require('./distributions/geometric');\n\nvar _geometric3 = _interopRequireDefault(_geometric2);\n\nvar _poisson2 = require('./distributions/poisson');\n\nvar _poisson3 = _interopRequireDefault(_poisson2);\n\nvar _exponential2 = require('./distributions/exponential');\n\nvar _exponential3 = _interopRequireDefault(_exponential2);\n\nvar _irwinHall2 = require('./distributions/irwin-hall');\n\nvar _irwinHall3 = _interopRequireDefault(_irwinHall2);\n\nvar _bates2 = require('./distributions/bates');\n\nvar _bates3 = _interopRequireDefault(_bates2);\n\nvar _pareto2 = require('./distributions/pareto');\n\nvar _pareto3 = _interopRequireDefault(_pareto2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Seedable random number generator supporting many common distributions.\n *\n * Defaults to Math.random as its underlying pseudorandom number generator.\n *\n * @name Random\n * @class\n *\n * @param {RNG|function} [rng=Math.random] - Underlying pseudorandom number generator.\n */\nvar Random = function () {\n function Random(rng) {\n _classCallCheck(this, Random);\n\n if (rng) (0, _owLite2.default)(rng, _owLite2.default.object.instanceOf(_rng3.default));\n\n this._cache = {};\n this.use(rng);\n }\n\n /**\n * @member {RNG} Underlying pseudo-random number generator\n */\n\n\n _createClass(Random, [{\n key: 'clone',\n\n\n /**\n * Creates a new `Random` instance, optionally specifying parameters to\n * set a new seed.\n *\n * @see RNG.clone\n *\n * @param {string} [seed] - Optional seed for new RNG.\n * @param {object} [opts] - Optional config for new RNG options.\n * @return {Random}\n */\n value: function clone() {\n var _rng;\n\n return new Random((_rng = this.rng).clone.apply(_rng, arguments));\n }\n\n /**\n * Sets the underlying pseudorandom number generator used via\n * either an instance of `seedrandom`, a custom instance of RNG\n * (for PRNG plugins), or a string specifying the PRNG to use\n * along with an optional `seed` and `opts` to initialize the\n * RNG.\n *\n * @example\n * const random = require('random')\n *\n * random.use('xor128', 'foobar')\n * // or\n * random.use(seedrandom('kittens'))\n * // or\n * random.use(Math.random)\n *\n * @param {...*} args\n */\n\n }, {\n key: 'use',\n value: function use() {\n this._rng = _rngFactory2.default.apply(undefined, arguments);\n }\n\n /**\n * Patches `Math.random` with this Random instance's PRNG.\n */\n\n }, {\n key: 'patch',\n value: function patch() {\n if (this._patch) {\n throw new Error('Math.random already patched');\n }\n\n this._patch = Math.random;\n Math.random = this.uniform();\n }\n\n /**\n * Restores a previously patched `Math.random` to its original value.\n */\n\n }, {\n key: 'unpatch',\n value: function unpatch() {\n if (this._patch) {\n Math.random = this._patch;\n delete this._patch;\n }\n }\n\n // --------------------------------------------------------------------------\n // Uniform utility functions\n // --------------------------------------------------------------------------\n\n /**\n * Convenience wrapper around `this.rng.next()`\n *\n * Returns a floating point number in [0, 1).\n *\n * @return {number}\n */\n\n }, {\n key: 'next',\n value: function next() {\n return this._rng.next();\n }\n\n /**\n * Samples a uniform random floating point number, optionally specifying\n * lower and upper bounds.\n *\n * Convence wrapper around `random.uniform()`\n *\n * @param {number} [min=0] - Lower bound (float, inclusive)\n * @param {number} [max=1] - Upper bound (float, exclusive)\n * @return {number}\n */\n\n }, {\n key: 'float',\n value: function float(min, max) {\n return this.uniform(min, max)();\n }\n\n /**\n * Samples a uniform random integer, optionally specifying lower and upper\n * bounds.\n *\n * Convence wrapper around `random.uniformInt()`\n *\n * @param {number} [min=0] - Lower bound (integer, inclusive)\n * @param {number} [max=1] - Upper bound (integer, inclusive)\n * @return {number}\n */\n\n }, {\n key: 'int',\n value: function int(min, max) {\n return this.uniformInt(min, max)();\n }\n\n /**\n * Samples a uniform random integer, optionally specifying lower and upper\n * bounds.\n *\n * Convence wrapper around `random.uniformInt()`\n *\n * @alias `random.int`\n *\n * @param {number} [min=0] - Lower bound (integer, inclusive)\n * @param {number} [max=1] - Upper bound (integer, inclusive)\n * @return {number}\n */\n\n }, {\n key: 'integer',\n value: function integer(min, max) {\n return this.uniformInt(min, max)();\n }\n\n /**\n * Samples a uniform random boolean value.\n *\n * Convence wrapper around `random.uniformBoolean()`\n *\n * @alias `random.boolean`\n *\n * @return {boolean}\n */\n\n }, {\n key: 'bool',\n value: function bool() {\n return this.uniformBoolean()();\n }\n\n /**\n * Samples a uniform random boolean value.\n *\n * Convence wrapper around `random.uniformBoolean()`\n *\n * @return {boolean}\n */\n\n }, {\n key: 'boolean',\n value: function boolean() {\n return this.uniformBoolean()();\n }\n\n // --------------------------------------------------------------------------\n // Uniform distributions\n // --------------------------------------------------------------------------\n\n /**\n * Generates a [Continuous uniform distribution](https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)).\n *\n * @param {number} [min=0] - Lower bound (float, inclusive)\n * @param {number} [max=1] - Upper bound (float, exclusive)\n * @return {function}\n */\n\n }, {\n key: 'uniform',\n value: function uniform(min, max) {\n return this._memoize('uniform', _uniform3.default, min, max);\n }\n\n /**\n * Generates a [Discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution).\n *\n * @param {number} [min=0] - Lower bound (integer, inclusive)\n * @param {number} [max=1] - Upper bound (integer, inclusive)\n * @return {function}\n */\n\n }, {\n key: 'uniformInt',\n value: function uniformInt(min, max) {\n return this._memoize('uniformInt', _uniformInt3.default, min, max);\n }\n\n /**\n * Generates a [Discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution),\n * with two possible outcomes, `true` or `false.\n *\n * This method is analogous to flipping a coin.\n *\n * @return {function}\n */\n\n }, {\n key: 'uniformBoolean',\n value: function uniformBoolean() {\n return this._memoize('uniformBoolean', _uniformBoolean3.default);\n }\n\n // --------------------------------------------------------------------------\n // Normal distributions\n // --------------------------------------------------------------------------\n\n /**\n * Generates a [Normal distribution](https://en.wikipedia.org/wiki/Normal_distribution).\n *\n * @param {number} [mu=0] - Mean\n * @param {number} [sigma=1] - Standard deviation\n * @return {function}\n */\n\n }, {\n key: 'normal',\n value: function normal(mu, sigma) {\n return (0, _normal3.default)(this, mu, sigma);\n }\n\n /**\n * Generates a [Log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_distribution).\n *\n * @param {number} [mu=0] - Mean of underlying normal distribution\n * @param {number} [sigma=1] - Standard deviation of underlying normal distribution\n * @return {function}\n */\n\n }, {\n key: 'logNormal',\n value: function logNormal(mu, sigma) {\n return (0, _logNormal3.default)(this, mu, sigma);\n }\n\n // --------------------------------------------------------------------------\n // Bernoulli distributions\n // --------------------------------------------------------------------------\n\n /**\n * Generates a [Bernoulli distribution](https://en.wikipedia.org/wiki/Bernoulli_distribution).\n *\n * @param {number} [p=0.5] - Success probability of each trial.\n * @return {function}\n */\n\n }, {\n key: 'bernoulli',\n value: function bernoulli(p) {\n return (0, _bernoulli3.default)(this, p);\n }\n\n /**\n * Generates a [Binomial distribution](https://en.wikipedia.org/wiki/Binomial_distribution).\n *\n * @param {number} [n=1] - Number of trials.\n * @param {number} [p=0.5] - Success probability of each trial.\n * @return {function}\n */\n\n }, {\n key: 'binomial',\n value: function binomial(n, p) {\n return (0, _binomial3.default)(this, n, p);\n }\n\n /**\n * Generates a [Geometric distribution](https://en.wikipedia.org/wiki/Geometric_distribution).\n *\n * @param {number} [p=0.5] - Success probability of each trial.\n * @return {function}\n */\n\n }, {\n key: 'geometric',\n value: function geometric(p) {\n return (0, _geometric3.default)(this, p);\n }\n\n // --------------------------------------------------------------------------\n // Poisson distributions\n // --------------------------------------------------------------------------\n\n /**\n * Generates a [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution).\n *\n * @param {number} [lambda=1] - Mean (lambda > 0)\n * @return {function}\n */\n\n }, {\n key: 'poisson',\n value: function poisson(lambda) {\n return (0, _poisson3.default)(this, lambda);\n }\n\n /**\n * Generates an [Exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution).\n *\n * @param {number} [lambda=1] - Inverse mean (lambda > 0)\n * @return {function}\n */\n\n }, {\n key: 'exponential',\n value: function exponential(lambda) {\n return (0, _exponential3.default)(this, lambda);\n }\n\n // --------------------------------------------------------------------------\n // Misc distributions\n // --------------------------------------------------------------------------\n\n /**\n * Generates an [Irwin Hall distribution](https://en.wikipedia.org/wiki/Irwin%E2%80%93Hall_distribution).\n *\n * @param {number} [n=1] - Number of uniform samples to sum (n >= 0)\n * @return {function}\n */\n\n }, {\n key: 'irwinHall',\n value: function irwinHall(n) {\n return (0, _irwinHall3.default)(this, n);\n }\n\n /**\n * Generates a [Bates distribution](https://en.wikipedia.org/wiki/Bates_distribution).\n *\n * @param {number} [n=1] - Number of uniform samples to average (n >= 1)\n * @return {function}\n */\n\n }, {\n key: 'bates',\n value: function bates(n) {\n return (0, _bates3.default)(this, n);\n }\n\n /**\n * Generates a [Pareto distribution](https://en.wikipedia.org/wiki/Pareto_distribution).\n *\n * @param {number} [alpha=1] - Alpha\n * @return {function}\n */\n\n }, {\n key: 'pareto',\n value: function pareto(alpha) {\n return (0, _pareto3.default)(this, alpha);\n }\n\n // --------------------------------------------------------------------------\n // Internal\n // --------------------------------------------------------------------------\n\n /**\n * Memoizes distributions to ensure they're only created when necessary.\n *\n * Returns a thunk which that returns independent, identically distributed\n * samples from the specified distribution.\n *\n * @private\n *\n * @param {string} label - Name of distribution\n * @param {function} getter - Function which generates a new distribution\n * @param {...*} args - Distribution-specific arguments\n *\n * @return {function}\n */\n\n }, {\n key: '_memoize',\n value: function _memoize(label, getter) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var key = '' + args.join(';');\n var value = this._cache[label];\n\n if (value === undefined || value.key !== key) {\n value = { key: key, distribution: getter.apply(undefined, [this].concat(args)) };\n this._cache[label] = value;\n }\n\n return value.distribution;\n }\n }, {\n key: 'rng',\n get: function get() {\n return this._rng;\n }\n }]);\n\n return Random;\n}();\n\n// defaults to Math.random as its RNG\n\n\nexports.default = new Random();\n//# sourceMappingURL=random.js.map","'use strict'\n\nconst { func } = require('./symbols')\n\nconst numberPredicates = {\n positive: (value) => (value > 0),\n negative: (value) => (value < 0),\n nonNegative: (value) => (value >= 0),\n integer: (value) => (value === (value | 0)),\n\n [func]: {\n is: (fn) => fn,\n eq: (v) => (value) => (value === v),\n gt: (v) => (value) => (value > v),\n gte: (v) => (value) => (value >= v),\n lt: (v) => (value) => (value < v),\n lte: (v) => (value) => (value <= v)\n }\n}\n\nmodule.exports = {\n predicates: numberPredicates,\n validator: (value) => {\n return typeof value === 'number'\n }\n}\n","'use strict'\n\nconst { func } = require('./symbols')\n\nconst stringPredicates = {\n empty: (value) => (value === ''),\n nonEmpty: (value) => (value !== ''),\n\n [func]: {\n is: (fn) => fn,\n eq: (v) => (value) => (value === v),\n length: (v) => (value) => (value.length === v),\n minLength: (v) => (value) => (value.length >= v),\n maxLength: (v) => (value) => (value.length <= v),\n matches: (v) => (value) => v.test(value),\n startsWith: (v) => (value) => value.startsWith(v),\n endsWith: (v) => (value) => value.endsWith(v)\n }\n}\n\nmodule.exports = {\n predicates: stringPredicates,\n validator: (value) => {\n return typeof value === 'string'\n }\n}\n","'use strict'\n\nconst { func } = require('./symbols')\n\nconst objectPredicates = {\n plain: (value) => {\n if (typeof value !== 'object') return false\n\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.getPrototypeOf({})\n },\n empty: (value) => Object.keys(value).length === 0,\n nonEmpty: (value) => Object.keys(value).length > 0,\n\n [func]: {\n is: (fn) => fn,\n instanceOf: (v) => (value) => (value instanceof v)\n }\n}\n\nmodule.exports = {\n predicates: objectPredicates,\n validator: (value) => {\n return typeof value === 'object'\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _rng = require('./rng');\n\nvar _rng2 = _interopRequireDefault(_rng);\n\nvar _xor = require('./generators/xor128');\n\nvar _xor2 = _interopRequireDefault(_xor);\n\nvar _function = require('./generators/function');\n\nvar _function2 = _interopRequireDefault(_function);\n\nvar _mathRandom = require('./generators/math-random');\n\nvar _mathRandom2 = _interopRequireDefault(_mathRandom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar PRNG_BUILTINS = {\n // TODO: add more prng from C++11 lib\n 'xor128': _xor2.default,\n 'function': _function2.default,\n 'default': _mathRandom2.default\n};\n\nexports.default = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _args$ = args[0],\n arg0 = _args$ === undefined ? 'default' : _args$,\n rest = args.slice(1);\n\n\n switch (typeof arg0 === 'undefined' ? 'undefined' : _typeof(arg0)) {\n case 'object':\n if (arg0 instanceof _rng2.default) {\n return arg0;\n }\n break;\n\n case 'function':\n return new _function2.default(arg0);\n\n case 'string':\n var PRNG = PRNG_BUILTINS[arg0];\n if (PRNG) {\n return new (Function.prototype.bind.apply(PRNG, [null].concat(_toConsumableArray(rest))))();\n }\n break;\n }\n\n throw new Error('invalid RNG \"' + arg0 + '\"');\n};\n//# sourceMappingURL=rng-factory.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _rng = require('../rng');\n\nvar _rng2 = _interopRequireDefault(_rng);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar RNGXOR128 = function (_RNG) {\n _inherits(RNGXOR128, _RNG);\n\n function RNGXOR128(seed, opts) {\n _classCallCheck(this, RNGXOR128);\n\n var _this = _possibleConstructorReturn(this, (RNGXOR128.__proto__ || Object.getPrototypeOf(RNGXOR128)).call(this));\n\n _this.x = 0;\n _this.y = 0;\n _this.z = 0;\n _this.w = 0;\n\n _this.seed(seed, opts);\n return _this;\n }\n\n _createClass(RNGXOR128, [{\n key: 'next',\n value: function next() {\n var t = this.x ^ this.x << 1;\n this.x = this.y;\n this.y = this.z;\n this.z = this.w;\n this.w = this.w ^ (this.w >>> 19 ^ t ^ t >>> 8);\n return (this.w >>> 0) / 0x100000000;\n }\n }, {\n key: 'seed',\n value: function seed(_seed, opts) {\n // this._rng = seedrandom(this._seed(seed, opts))\n\n this.x = this._seed(_seed, opts);\n\n // discard an initial batch of 64 values\n for (var i = 0; i < 64; ++i) {\n this.next();\n }\n }\n }, {\n key: 'clone',\n value: function clone(seed, opts) {\n return new RNGXOR128(seed, opts);\n }\n }, {\n key: 'name',\n get: function get() {\n return 'xor128';\n }\n }]);\n\n return RNGXOR128;\n}(_rng2.default);\n\nexports.default = RNGXOR128;\n//# sourceMappingURL=xor128.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nvar _rng = require('../rng');\n\nvar _rng2 = _interopRequireDefault(_rng);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar RNGFunction = function (_RNG) {\n _inherits(RNGFunction, _RNG);\n\n function RNGFunction(seed, opts) {\n _classCallCheck(this, RNGFunction);\n\n var _this = _possibleConstructorReturn(this, (RNGFunction.__proto__ || Object.getPrototypeOf(RNGFunction)).call(this));\n\n _this.seed(seed, opts);\n return _this;\n }\n\n _createClass(RNGFunction, [{\n key: 'next',\n value: function next() {\n return this._rng();\n }\n }, {\n key: 'seed',\n value: function seed(_seed) {\n (0, _owLite2.default)(_seed, _owLite2.default.function);\n this._rng = _seed;\n }\n }, {\n key: 'clone',\n value: function clone(seed, opts) {\n return new RNGFunction(seed, opts);\n }\n }, {\n key: 'name',\n get: function get() {\n return 'function';\n }\n }]);\n\n return RNGFunction;\n}(_rng2.default);\n\nexports.default = RNGFunction;\n//# sourceMappingURL=function.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _rng = require('../rng');\n\nvar _rng2 = _interopRequireDefault(_rng);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar RNGMathRandom = function (_RNG) {\n _inherits(RNGMathRandom, _RNG);\n\n function RNGMathRandom() {\n _classCallCheck(this, RNGMathRandom);\n\n return _possibleConstructorReturn(this, (RNGMathRandom.__proto__ || Object.getPrototypeOf(RNGMathRandom)).apply(this, arguments));\n }\n\n _createClass(RNGMathRandom, [{\n key: 'next',\n value: function next() {\n return Math.random();\n }\n }, {\n key: 'seed',\n value: function seed(_seed, opts) {\n // intentionally empty\n }\n }, {\n key: 'clone',\n value: function clone() {\n return new RNGMathRandom();\n }\n }, {\n key: 'name',\n get: function get() {\n return 'default';\n }\n }]);\n\n return RNGMathRandom;\n}(_rng2.default);\n\nexports.default = RNGMathRandom;\n//# sourceMappingURL=math-random.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random, min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n\n (0, _owLite2.default)(min, _owLite2.default.number);\n (0, _owLite2.default)(max, _owLite2.default.number);\n\n return function () {\n return random.next() * (max - min) + min;\n };\n};\n//# sourceMappingURL=uniform.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random, min, max) {\n if (max === undefined) {\n max = min === undefined ? 1 : min;\n min = 0;\n }\n\n (0, _owLite2.default)(min, _owLite2.default.number.integer);\n (0, _owLite2.default)(max, _owLite2.default.number.integer);\n\n return function () {\n return random.next() * (max - min + 1) + min | 0;\n };\n};\n//# sourceMappingURL=uniform-int.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (random) {\n return function () {\n return random.next() >= 0.5;\n };\n};\n//# sourceMappingURL=uniform-boolean.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var mu = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var sigma = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n (0, _owLite2.default)(mu, _owLite2.default.number);\n (0, _owLite2.default)(sigma, _owLite2.default.number);\n\n return function () {\n var x = void 0,\n y = void 0,\n r = void 0;\n\n do {\n x = random.next() * 2 - 1;\n y = random.next() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n};\n//# sourceMappingURL=normal.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (random) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var normal = random.normal.apply(random, args);\n\n return function () {\n return Math.exp(normal());\n };\n};\n//# sourceMappingURL=log-normal.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var p = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;\n\n (0, _owLite2.default)(p, _owLite2.default.number.gte(0).lt(1));\n\n return function () {\n return random.next() + p | 0;\n };\n};\n//# sourceMappingURL=bernoulli.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var p = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.5;\n\n (0, _owLite2.default)(n, _owLite2.default.number.positive.integer);\n (0, _owLite2.default)(p, _owLite2.default.number.gte(0).lte(1));\n\n return function () {\n var i = 0;\n var x = 0;\n\n while (i++ < n) {\n x += random.next() < p;\n }\n\n return x;\n };\n};\n//# sourceMappingURL=binomial.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var p = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;\n\n (0, _owLite2.default)(p, _owLite2.default.number.gt(0).lte(1));\n var invLogP = 1.0 / Math.log(1.0 - p);\n\n return function () {\n return 1 + Math.log(random.next()) * invLogP | 0;\n };\n};\n//# sourceMappingURL=geometric.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar logFactorialTable = [0.0, 0.0, 0.69314718055994529, 1.7917594692280550, 3.1780538303479458, 4.7874917427820458, 6.5792512120101012, 8.5251613610654147, 10.604602902745251, 12.801827480081469];\n\nvar logFactorial = function logFactorial(k) {\n return logFactorialTable[k];\n};\n\nvar logSqrt2PI = 0.91893853320467267;\n\nexports.default = function (random) {\n var lambda = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n (0, _owLite2.default)(lambda, _owLite2.default.number.positive);\n\n if (lambda < 10) {\n // inversion method\n var expMean = Math.exp(-lambda);\n\n return function () {\n var p = expMean;\n var x = 0;\n var u = random.next();\n\n while (u > p) {\n u = u - p;\n p = lambda * p / ++x;\n }\n\n return x;\n };\n } else {\n // generative method\n var smu = Math.sqrt(lambda);\n var b = 0.931 + 2.53 * smu;\n var a = -0.059 + 0.02483 * b;\n var invAlpha = 1.1239 + 1.1328 / (b - 3.4);\n var vR = 0.9277 - 3.6224 / (b - 2);\n\n return function () {\n while (true) {\n var u = void 0;\n var v = random.next();\n\n if (v <= 0.86 * vR) {\n u = v / vR - 0.43;\n return Math.floor((2 * a / (0.5 - Math.abs(u)) + b) * u + lambda + 0.445);\n }\n\n if (v >= vR) {\n u = random.next() - 0.5;\n } else {\n u = v / vR - 0.93;\n u = (u < 0 ? -0.5 : 0.5) - u;\n v = random.next() * vR;\n }\n\n var us = 0.5 - Math.abs(u);\n if (us < 0.013 && v > us) {\n continue;\n }\n\n var k = Math.floor((2 * a / us + b) * u + lambda + 0.445) | 0;\n v = v * invAlpha / (a / (us * us) + b);\n\n if (k >= 10) {\n var t = (k + 0.5) * Math.log(lambda / k) - lambda - logSqrt2PI + k - (1 / 12.0 - (1 / 360.0 - 1 / (1260.0 * k * k)) / (k * k)) / k;\n\n if (Math.log(v * smu) <= t) {\n return k;\n }\n } else if (k >= 0) {\n if (Math.log(v) <= k * Math.log(lambda) - lambda - logFactorial(k)) {\n return k;\n }\n }\n }\n };\n }\n};\n//# sourceMappingURL=poisson.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var lambda = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n (0, _owLite2.default)(lambda, _owLite2.default.number.positive);\n\n return function () {\n return -Math.log(1 - random.next()) / lambda;\n };\n};\n//# sourceMappingURL=exponential.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n (0, _owLite2.default)(n, _owLite2.default.number.integer.gte(0));\n\n return function () {\n var sum = 0;\n for (var i = 0; i < n; ++i) {\n sum += random.next();\n }\n\n return sum;\n };\n};\n//# sourceMappingURL=irwin-hall.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n (0, _owLite2.default)(n, _owLite2.default.number.integer.positive);\n var irwinHall = random.irwinHall(n);\n\n return function () {\n return irwinHall() / n;\n };\n};\n//# sourceMappingURL=bates.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _owLite = require('ow-lite');\n\nvar _owLite2 = _interopRequireDefault(_owLite);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (random) {\n var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n (0, _owLite2.default)(alpha, _owLite2.default.number.gte(0));\n var invAlpha = 1.0 / alpha;\n\n return function () {\n return 1.0 / Math.pow(1.0 - random.next(), invAlpha);\n };\n};\n//# sourceMappingURL=pareto.js.map","function noop() {}\n\nfunction assign(tar, src) {\n\tfor (var k in src) tar[k] = src[k];\n\treturn tar;\n}\n\nfunction assignTrue(tar, src) {\n\tfor (var k in src) tar[k] = 1;\n\treturn tar;\n}\n\nfunction isPromise(value) {\n\treturn value && typeof value.then === 'function';\n}\n\nfunction callAfter(fn, i) {\n\tif (i === 0) fn();\n\treturn () => {\n\t\tif (!--i) fn();\n\t};\n}\n\nfunction addLoc(element, file, line, column, char) {\n\telement.__svelte_meta = {\n\t\tloc: { file, line, column, char }\n\t};\n}\n\nfunction exclude(src, prop) {\n\tconst tar = {};\n\tfor (const k in src) k === prop || (tar[k] = src[k]);\n\treturn tar;\n}\n\nfunction run(fn) {\n\tfn();\n}\n\nfunction append(target, node) {\n\ttarget.appendChild(node);\n}\n\nfunction insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor);\n}\n\nfunction detachNode(node) {\n\tnode.parentNode.removeChild(node);\n}\n\nfunction detachBetween(before, after) {\n\twhile (before.nextSibling && before.nextSibling !== after) {\n\t\tbefore.parentNode.removeChild(before.nextSibling);\n\t}\n}\n\nfunction detachBefore(after) {\n\twhile (after.previousSibling) {\n\t\tafter.parentNode.removeChild(after.previousSibling);\n\t}\n}\n\nfunction detachAfter(before) {\n\twhile (before.nextSibling) {\n\t\tbefore.parentNode.removeChild(before.nextSibling);\n\t}\n}\n\nfunction reinsertBetween(before, after, target) {\n\twhile (before.nextSibling && before.nextSibling !== after) {\n\t\ttarget.appendChild(before.parentNode.removeChild(before.nextSibling));\n\t}\n}\n\nfunction reinsertChildren(parent, target) {\n\twhile (parent.firstChild) target.appendChild(parent.firstChild);\n}\n\nfunction reinsertAfter(before, target) {\n\twhile (before.nextSibling) target.appendChild(before.nextSibling);\n}\n\nfunction reinsertBefore(after, target) {\n\tvar parent = after.parentNode;\n\twhile (parent.firstChild !== after) target.appendChild(parent.firstChild);\n}\n\nfunction destroyEach(iterations, detach) {\n\tfor (var i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detach);\n\t}\n}\n\nfunction createFragment() {\n\treturn document.createDocumentFragment();\n}\n\nfunction createElement(name) {\n\treturn document.createElement(name);\n}\n\nfunction createSvgElement(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\nfunction createText(data) {\n\treturn document.createTextNode(data);\n}\n\nfunction createComment() {\n\treturn document.createComment('');\n}\n\nfunction addListener(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n}\n\nfunction removeListener(node, event, handler, options) {\n\tnode.removeEventListener(event, handler, options);\n}\n\nfunction setAttribute(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse node.setAttribute(attribute, value);\n}\n\nfunction setAttributes(node, attributes) {\n\tfor (var key in attributes) {\n\t\tif (key === 'style') {\n\t\t\tnode.style.cssText = attributes[key];\n\t\t} else if (key in node) {\n\t\t\tnode[key] = attributes[key];\n\t\t} else {\n\t\t\tsetAttribute(node, key, attributes[key]);\n\t\t}\n\t}\n}\n\nfunction setCustomElementData(node, prop, value) {\n\tif (prop in node) {\n\t\tnode[prop] = value;\n\t} else {\n\t\tsetAttribute(node, prop, value);\n\t}\n}\n\nfunction setXlinkAttribute(node, attribute, value) {\n\tnode.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\nfunction getBindingGroupValue(group) {\n\tvar value = [];\n\tfor (var i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) value.push(group[i].__value);\n\t}\n\treturn value;\n}\n\nfunction toNumber(value) {\n\treturn value === '' ? undefined : +value;\n}\n\nfunction timeRangesToArray(ranges) {\n\tvar array = [];\n\tfor (var i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\treturn array;\n}\n\nfunction children (element) {\n\treturn Array.from(element.childNodes);\n}\n\nfunction claimElement (nodes, name, attributes, svg) {\n\tfor (var i = 0; i < nodes.length; i += 1) {\n\t\tvar node = nodes[i];\n\t\tif (node.nodeName === name) {\n\t\t\tfor (var j = 0; j < node.attributes.length; j += 1) {\n\t\t\t\tvar attribute = node.attributes[j];\n\t\t\t\tif (!attributes[attribute.name]) node.removeAttribute(attribute.name);\n\t\t\t}\n\t\t\treturn nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n\t\t}\n\t}\n\n\treturn svg ? createSvgElement(name) : createElement(name);\n}\n\nfunction claimText (nodes, data) {\n\tfor (var i = 0; i < nodes.length; i += 1) {\n\t\tvar node = nodes[i];\n\t\tif (node.nodeType === 3) {\n\t\t\tnode.data = data;\n\t\t\treturn nodes.splice(i, 1)[0];\n\t\t}\n\t}\n\n\treturn createText(data);\n}\n\nfunction setData(text, data) {\n\ttext.data = '' + data;\n}\n\nfunction setInputType(input, type) {\n\ttry {\n\t\tinput.type = type;\n\t} catch (e) {}\n}\n\nfunction setStyle(node, key, value) {\n\tnode.style.setProperty(key, value);\n}\n\nfunction selectOption(select, value) {\n\tfor (var i = 0; i < select.options.length; i += 1) {\n\t\tvar option = select.options[i];\n\n\t\tif (option.__value === value) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nfunction selectOptions(select, value) {\n\tfor (var i = 0; i < select.options.length; i += 1) {\n\t\tvar option = select.options[i];\n\t\toption.selected = ~value.indexOf(option.__value);\n\t}\n}\n\nfunction selectValue(select) {\n\tvar selectedOption = select.querySelector(':checked') || select.options[0];\n\treturn selectedOption && selectedOption.__value;\n}\n\nfunction selectMultipleValue(select) {\n\treturn [].map.call(select.querySelectorAll(':checked'), function(option) {\n\t\treturn option.__value;\n\t});\n}\n\nfunction addResizeListener(element, fn) {\n\tif (getComputedStyle(element).position === 'static') {\n\t\telement.style.position = 'relative';\n\t}\n\n\tconst object = document.createElement('object');\n\tobject.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n\tobject.type = 'text/html';\n\n\tlet win;\n\n\tobject.onload = () => {\n\t\twin = object.contentDocument.defaultView;\n\t\twin.addEventListener('resize', fn);\n\t};\n\n\tif (/Trident/.test(navigator.userAgent)) {\n\t\telement.appendChild(object);\n\t\tobject.data = 'about:blank';\n\t} else {\n\t\tobject.data = 'about:blank';\n\t\telement.appendChild(object);\n\t}\n\n\treturn {\n\t\tcancel: () => {\n\t\t\twin && win.removeEventListener && win.removeEventListener('resize', fn);\n\t\t\telement.removeChild(object);\n\t\t}\n\t};\n}\n\nfunction toggleClass(element, name, toggle) {\n\telement.classList[toggle ? 'add' : 'remove'](name);\n}\n\nfunction linear(t) {\n\treturn t;\n}\n\nfunction generateRule({ a, b, delta, duration }, ease, fn) {\n\tconst step = 16.666 / duration;\n\tlet keyframes = '{\\n';\n\n\tfor (let p = 0; p <= 1; p += step) {\n\t\tconst t = a + delta * ease(p);\n\t\tkeyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n\t}\n\n\treturn keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n}\n\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn hash >>> 0;\n}\n\nfunction wrapTransition(component, node, fn, params, intro) {\n\tlet obj = fn.call(component, node, params);\n\tlet duration;\n\tlet ease;\n\tlet cssText;\n\n\tlet initialised = false;\n\n\treturn {\n\t\tt: intro ? 0 : 1,\n\t\trunning: false,\n\t\tprogram: null,\n\t\tpending: null,\n\n\t\trun(b, callback) {\n\t\t\tif (typeof obj === 'function') {\n\t\t\t\ttransitionManager.wait().then(() => {\n\t\t\t\t\tobj = obj();\n\t\t\t\t\tthis._run(b, callback);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._run(b, callback);\n\t\t\t}\n\t\t},\n\n\t\t_run(b, callback) {\n\t\t\tduration = obj.duration || 300;\n\t\t\tease = obj.easing || linear;\n\n\t\t\tconst program = {\n\t\t\t\tstart: window.performance.now() + (obj.delay || 0),\n\t\t\t\tb,\n\t\t\t\tcallback: callback || noop\n\t\t\t};\n\n\t\t\tif (intro && !initialised) {\n\t\t\t\tif (obj.css && obj.delay) {\n\t\t\t\t\tcssText = node.style.cssText;\n\t\t\t\t\tnode.style.cssText += obj.css(0, 1);\n\t\t\t\t}\n\n\t\t\t\tif (obj.tick) obj.tick(0, 1);\n\t\t\t\tinitialised = true;\n\t\t\t}\n\n\t\t\tif (!b) {\n\t\t\t\tprogram.group = outros.current;\n\t\t\t\toutros.current.remaining += 1;\n\t\t\t}\n\n\t\t\tif (obj.delay) {\n\t\t\t\tthis.pending = program;\n\t\t\t} else {\n\t\t\t\tthis.start(program);\n\t\t\t}\n\n\t\t\tif (!this.running) {\n\t\t\t\tthis.running = true;\n\t\t\t\ttransitionManager.add(this);\n\t\t\t}\n\t\t},\n\n\t\tstart(program) {\n\t\t\tcomponent.fire(`${program.b ? 'intro' : 'outro'}.start`, { node });\n\n\t\t\tprogram.a = this.t;\n\t\t\tprogram.delta = program.b - program.a;\n\t\t\tprogram.duration = duration * Math.abs(program.b - program.a);\n\t\t\tprogram.end = program.start + program.duration;\n\n\t\t\tif (obj.css) {\n\t\t\t\tif (obj.delay) node.style.cssText = cssText;\n\n\t\t\t\tconst rule = generateRule(program, ease, obj.css);\n\t\t\t\ttransitionManager.addRule(rule, program.name = '__svelte_' + hash(rule));\n\n\t\t\t\tnode.style.animation = (node.style.animation || '')\n\t\t\t\t\t.split(', ')\n\t\t\t\t\t.filter(anim => anim && (program.delta < 0 || !/__svelte/.test(anim)))\n\t\t\t\t\t.concat(`${program.name} ${program.duration}ms linear 1 forwards`)\n\t\t\t\t\t.join(', ');\n\t\t\t}\n\n\t\t\tthis.program = program;\n\t\t\tthis.pending = null;\n\t\t},\n\n\t\tupdate(now) {\n\t\t\tconst program = this.program;\n\t\t\tif (!program) return;\n\n\t\t\tconst p = now - program.start;\n\t\t\tthis.t = program.a + program.delta * ease(p / program.duration);\n\t\t\tif (obj.tick) obj.tick(this.t, 1 - this.t);\n\t\t},\n\n\t\tdone() {\n\t\t\tconst program = this.program;\n\t\t\tthis.t = program.b;\n\n\t\t\tif (obj.tick) obj.tick(this.t, 1 - this.t);\n\n\t\t\tcomponent.fire(`${program.b ? 'intro' : 'outro'}.end`, { node });\n\n\t\t\tif (!program.b && !program.invalidated) {\n\t\t\t\tprogram.group.callbacks.push(() => {\n\t\t\t\t\tprogram.callback();\n\t\t\t\t\tif (obj.css) transitionManager.deleteRule(node, program.name);\n\t\t\t\t});\n\n\t\t\t\tif (--program.group.remaining === 0) {\n\t\t\t\t\tprogram.group.callbacks.forEach(run);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (obj.css) transitionManager.deleteRule(node, program.name);\n\t\t\t}\n\n\t\t\tthis.running = !!this.pending;\n\t\t},\n\n\t\tabort(reset) {\n\t\t\tif (this.program) {\n\t\t\t\tif (reset && obj.tick) obj.tick(1, 0);\n\t\t\t\tif (obj.css) transitionManager.deleteRule(node, this.program.name);\n\t\t\t\tthis.program = this.pending = null;\n\t\t\t\tthis.running = false;\n\t\t\t}\n\t\t},\n\n\t\tinvalidate() {\n\t\t\tif (this.program) {\n\t\t\t\tthis.program.invalidated = true;\n\t\t\t}\n\t\t}\n\t};\n}\n\nlet outros = {};\n\nfunction groupOutros() {\n\toutros.current = {\n\t\tremaining: 0,\n\t\tcallbacks: []\n\t};\n}\n\nvar transitionManager = {\n\trunning: false,\n\ttransitions: [],\n\tbound: null,\n\tstylesheet: null,\n\tactiveRules: {},\n\tpromise: null,\n\n\tadd(transition) {\n\t\tthis.transitions.push(transition);\n\n\t\tif (!this.running) {\n\t\t\tthis.running = true;\n\t\t\trequestAnimationFrame(this.bound || (this.bound = this.next.bind(this)));\n\t\t}\n\t},\n\n\taddRule(rule, name) {\n\t\tif (!this.stylesheet) {\n\t\t\tconst style = createElement('style');\n\t\t\tdocument.head.appendChild(style);\n\t\t\ttransitionManager.stylesheet = style.sheet;\n\t\t}\n\n\t\tif (!this.activeRules[name]) {\n\t\t\tthis.activeRules[name] = true;\n\t\t\tthis.stylesheet.insertRule(`@keyframes ${name} ${rule}`, this.stylesheet.cssRules.length);\n\t\t}\n\t},\n\n\tnext() {\n\t\tthis.running = false;\n\n\t\tconst now = window.performance.now();\n\t\tlet i = this.transitions.length;\n\n\t\twhile (i--) {\n\t\t\tconst transition = this.transitions[i];\n\n\t\t\tif (transition.program && now >= transition.program.end) {\n\t\t\t\ttransition.done();\n\t\t\t}\n\n\t\t\tif (transition.pending && now >= transition.pending.start) {\n\t\t\t\ttransition.start(transition.pending);\n\t\t\t}\n\n\t\t\tif (transition.running) {\n\t\t\t\ttransition.update(now);\n\t\t\t\tthis.running = true;\n\t\t\t} else if (!transition.pending) {\n\t\t\t\tthis.transitions.splice(i, 1);\n\t\t\t}\n\t\t}\n\n\t\tif (this.running) {\n\t\t\trequestAnimationFrame(this.bound);\n\t\t} else if (this.stylesheet) {\n\t\t\tlet i = this.stylesheet.cssRules.length;\n\t\t\twhile (i--) this.stylesheet.deleteRule(i);\n\t\t\tthis.activeRules = {};\n\t\t}\n\t},\n\n\tdeleteRule(node, name) {\n\t\tnode.style.animation = node.style.animation\n\t\t\t.split(', ')\n\t\t\t.filter(anim => anim && anim.indexOf(name) === -1)\n\t\t\t.join(', ');\n\t},\n\n\twait() {\n\t\tif (!transitionManager.promise) {\n\t\t\ttransitionManager.promise = Promise.resolve();\n\t\t\ttransitionManager.promise.then(() => {\n\t\t\t\ttransitionManager.promise = null;\n\t\t\t});\n\t\t}\n\n\t\treturn transitionManager.promise;\n\t}\n};\n\nfunction wrapAnimation(node, from, fn, params) {\n\tif (!from) return;\n\n\tconst to = node.getBoundingClientRect();\n\tif (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) return;\n\n\tconst info = fn(node, { from, to }, params);\n\n\tconst duration = 'duration' in info ? info.duration : 300;\n\tconst delay = 'delay' in info ? info.delay : 0;\n\tconst ease = info.easing || linear;\n\tconst start = window.performance.now() + delay;\n\tconst end = start + duration;\n\n\tconst program = {\n\t\ta: 0,\n\t\tt: 0,\n\t\tb: 1,\n\t\tdelta: 1,\n\t\tduration,\n\t\tstart,\n\t\tend\n\t};\n\n\tconst cssText = node.style.cssText;\n\n\tconst animation = {\n\t\tpending: delay ? program : null,\n\t\tprogram: delay ? null : program,\n\t\trunning: true,\n\n\t\tstart() {\n\t\t\tif (info.css) {\n\t\t\t\tif (delay) node.style.cssText = cssText;\n\n\t\t\t\tconst rule = generateRule(program, ease, info.css);\n\t\t\t\tprogram.name = `__svelte_${hash(rule)}`;\n\n\t\t\t\ttransitionManager.addRule(rule, program.name);\n\n\t\t\t\tnode.style.animation = (node.style.animation || '')\n\t\t\t\t\t.split(', ')\n\t\t\t\t\t.filter(anim => anim && (program.delta < 0 || !/__svelte/.test(anim)))\n\t\t\t\t\t.concat(`${program.name} ${program.duration}ms linear 1 forwards`)\n\t\t\t\t\t.join(', ');\n\t\t\t}\n\n\t\t\tanimation.program = program;\n\t\t\tanimation.pending = null;\n\t\t},\n\n\t\tupdate: now => {\n\t\t\tconst p = now - program.start;\n\t\t\tconst t = program.a + program.delta * ease(p / program.duration);\n\t\t\tif (info.tick) info.tick(t, 1 - t);\n\t\t},\n\n\t\tdone() {\n\t\t\tif (info.tick) info.tick(1, 0);\n\t\t\tanimation.stop();\n\t\t},\n\n\t\tstop() {\n\t\t\tif (info.css) transitionManager.deleteRule(node, program.name);\n\t\t\tanimation.running = false;\n\t\t}\n\t};\n\n\ttransitionManager.add(animation);\n\n\tif (info.tick) info.tick(0, 1);\n\n\tif (delay) {\n\t\tif (info.css) node.style.cssText += info.css(0, 1);\n\t} else {\n\t\tanimation.start();\n\t}\n\n\treturn animation;\n}\n\nfunction fixPosition(node) {\n\tconst style = getComputedStyle(node);\n\n\tif (style.position !== 'absolute' && style.position !== 'fixed') {\n\t\tconst { width, height } = style;\n\t\tconst a = node.getBoundingClientRect();\n\t\tnode.style.position = 'absolute';\n\t\tnode.style.width = width;\n\t\tnode.style.height = height;\n\t\tconst b = node.getBoundingClientRect();\n\n\t\tif (a.left !== b.left || a.top !== b.top) {\n\t\t\tconst style = getComputedStyle(node);\n\t\t\tconst transform = style.transform === 'none' ? '' : style.transform;\n\n\t\t\tnode.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n\t\t}\n\t}\n}\n\nfunction handlePromise(promise, info) {\n\tvar token = info.token = {};\n\n\tfunction update(type, index, key, value) {\n\t\tif (info.token !== token) return;\n\n\t\tinfo.resolved = key && { [key]: value };\n\n\t\tconst child_ctx = assign(assign({}, info.ctx), info.resolved);\n\t\tconst block = type && (info.current = type)(info.component, child_ctx);\n\n\t\tif (info.block) {\n\t\t\tif (info.blocks) {\n\t\t\t\tinfo.blocks.forEach((block, i) => {\n\t\t\t\t\tif (i !== index && block) {\n\t\t\t\t\t\tgroupOutros();\n\t\t\t\t\t\tblock.o(() => {\n\t\t\t\t\t\t\tblock.d(1);\n\t\t\t\t\t\t\tinfo.blocks[i] = null;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tinfo.block.d(1);\n\t\t\t}\n\n\t\t\tblock.c();\n\t\t\tblock[block.i ? 'i' : 'm'](info.mount(), info.anchor);\n\n\t\t\tinfo.component.root.set({}); // flush any handlers that were created\n\t\t}\n\n\t\tinfo.block = block;\n\t\tif (info.blocks) info.blocks[index] = block;\n\t}\n\n\tif (isPromise(promise)) {\n\t\tpromise.then(value => {\n\t\t\tupdate(info.then, 1, info.value, value);\n\t\t}, error => {\n\t\t\tupdate(info.catch, 2, info.error, error);\n\t\t});\n\n\t\t// if we previously had a then/catch block, destroy it\n\t\tif (info.current !== info.pending) {\n\t\t\tupdate(info.pending, 0);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tif (info.current !== info.then) {\n\t\t\tupdate(info.then, 1, info.value, promise);\n\t\t\treturn true;\n\t\t}\n\n\t\tinfo.resolved = { [info.value]: promise };\n\t}\n}\n\nfunction destroyBlock(block, lookup) {\n\tblock.d(1);\n\tlookup[block.key] = null;\n}\n\nfunction outroAndDestroyBlock(block, lookup) {\n\tblock.o(function() {\n\t\tdestroyBlock(block, lookup);\n\t});\n}\n\nfunction fixAndOutroAndDestroyBlock(block, lookup) {\n\tblock.f();\n\toutroAndDestroyBlock(block, lookup);\n}\n\nfunction updateKeyedEach(old_blocks, component, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, intro_method, next, get_context) {\n\tvar o = old_blocks.length;\n\tvar n = list.length;\n\n\tvar i = o;\n\tvar old_indexes = {};\n\twhile (i--) old_indexes[old_blocks[i].key] = i;\n\n\tvar new_blocks = [];\n\tvar new_lookup = {};\n\tvar deltas = {};\n\n\tvar i = n;\n\twhile (i--) {\n\t\tvar child_ctx = get_context(ctx, list, i);\n\t\tvar key = get_key(child_ctx);\n\t\tvar block = lookup[key];\n\n\t\tif (!block) {\n\t\t\tblock = create_each_block(component, key, child_ctx);\n\t\t\tblock.c();\n\t\t} else if (dynamic) {\n\t\t\tblock.p(changed, child_ctx);\n\t\t}\n\n\t\tnew_blocks[i] = new_lookup[key] = block;\n\n\t\tif (key in old_indexes) deltas[key] = Math.abs(i - old_indexes[key]);\n\t}\n\n\tvar will_move = {};\n\tvar did_move = {};\n\n\tfunction insert(block) {\n\t\tblock[intro_method](node, next);\n\t\tlookup[block.key] = block;\n\t\tnext = block.first;\n\t\tn--;\n\t}\n\n\twhile (o && n) {\n\t\tvar new_block = new_blocks[n - 1];\n\t\tvar old_block = old_blocks[o - 1];\n\t\tvar new_key = new_block.key;\n\t\tvar old_key = old_block.key;\n\n\t\tif (new_block === old_block) {\n\t\t\t// do nothing\n\t\t\tnext = new_block.first;\n\t\t\to--;\n\t\t\tn--;\n\t\t}\n\n\t\telse if (!new_lookup[old_key]) {\n\t\t\t// remove old block\n\t\t\tdestroy(old_block, lookup);\n\t\t\to--;\n\t\t}\n\n\t\telse if (!lookup[new_key] || will_move[new_key]) {\n\t\t\tinsert(new_block);\n\t\t}\n\n\t\telse if (did_move[old_key]) {\n\t\t\to--;\n\n\t\t} else if (deltas[new_key] > deltas[old_key]) {\n\t\t\tdid_move[new_key] = true;\n\t\t\tinsert(new_block);\n\n\t\t} else {\n\t\t\twill_move[old_key] = true;\n\t\t\to--;\n\t\t}\n\t}\n\n\twhile (o--) {\n\t\tvar old_block = old_blocks[o];\n\t\tif (!new_lookup[old_block.key]) destroy(old_block, lookup);\n\t}\n\n\twhile (n) insert(new_blocks[n - 1]);\n\n\treturn new_blocks;\n}\n\nfunction measure(blocks) {\n\tconst rects = {};\n\tlet i = blocks.length;\n\twhile (i--) rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n\treturn rects;\n}\n\nfunction animate(blocks, rects, fn, params) {\n\tlet i = blocks.length;\n\twhile (i--) {\n\t\tconst block = blocks[i];\n\t\tconst from = rects[block.key];\n\n\t\tif (!from) continue;\n\t\tconst to = block.node.getBoundingClientRect();\n\n\t\tif (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom) continue;\n\n\n\t}\n}\n\nfunction getSpreadUpdate(levels, updates) {\n\tvar update = {};\n\n\tvar to_null_out = {};\n\tvar accounted_for = {};\n\n\tvar i = levels.length;\n\twhile (i--) {\n\t\tvar o = levels[i];\n\t\tvar n = updates[i];\n\n\t\tif (n) {\n\t\t\tfor (var key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\n\t\t\tfor (var key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (var key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\n\treturn update;\n}\n\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nconst invalidAttributeNameCharacter = /[\\s'\">\\/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n\nfunction spread(args) {\n\tconst attributes = Object.assign({}, ...args);\n\tlet str = '';\n\n\tObject.keys(attributes).forEach(name => {\n\t\tif (invalidAttributeNameCharacter.test(name)) return;\n\n\t\tconst value = attributes[name];\n\t\tif (value === undefined) return;\n\t\tif (value === true) str += \" \" + name;\n\n\t\tconst escaped = String(value)\n\t\t\t.replace(/\"/g, '"')\n\t\t\t.replace(/'/g, ''');\n\n\t\tstr += \" \" + name + \"=\" + JSON.stringify(escaped);\n\t});\n\n\treturn str;\n}\n\nconst escaped = {\n\t'\"': '"',\n\t\"'\": ''',\n\t'&': '&',\n\t'<': '<',\n\t'>': '>'\n};\n\nfunction escape(html) {\n\treturn String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\n\nfunction each(items, assign, fn) {\n\tlet str = '';\n\tfor (let i = 0; i < items.length; i += 1) {\n\t\tstr += fn(assign(items[i], i));\n\t}\n\treturn str;\n}\n\nconst missingComponent = {\n\t_render: () => ''\n};\n\nfunction validateSsrComponent(component, name) {\n\tif (!component || !component._render) {\n\t\tif (name === 'svelte:component') name += ' this={...}';\n\t\tthrow new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n\t}\n\n\treturn component;\n}\n\nfunction debug(file, line, column, values) {\n\tconsole.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`);\n\tconsole.log(values);\n\treturn '';\n}\n\nfunction blankObject() {\n\treturn Object.create(null);\n}\n\nfunction destroy(detach) {\n\tthis.destroy = noop;\n\tthis.fire('destroy');\n\tthis.set = noop;\n\n\tthis._fragment.d(detach !== false);\n\tthis._fragment = null;\n\tthis._state = {};\n}\n\nfunction destroyDev(detach) {\n\tdestroy.call(this, detach);\n\tthis.destroy = function() {\n\t\tconsole.warn('Component was already destroyed');\n\t};\n}\n\nfunction _differs(a, b) {\n\treturn a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\n\nfunction _differsImmutable(a, b) {\n\treturn a != a ? b == b : a !== b;\n}\n\nfunction fire(eventName, data) {\n\tvar handlers =\n\t\teventName in this._handlers && this._handlers[eventName].slice();\n\tif (!handlers) return;\n\n\tfor (var i = 0; i < handlers.length; i += 1) {\n\t\tvar handler = handlers[i];\n\n\t\tif (!handler.__calling) {\n\t\t\ttry {\n\t\t\t\thandler.__calling = true;\n\t\t\t\thandler.call(this, data);\n\t\t\t} finally {\n\t\t\t\thandler.__calling = false;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction flush(component) {\n\tcomponent._lock = true;\n\tcallAll(component._beforecreate);\n\tcallAll(component._oncreate);\n\tcallAll(component._aftercreate);\n\tcomponent._lock = false;\n}\n\nfunction get() {\n\treturn this._state;\n}\n\nfunction init(component, options) {\n\tcomponent._handlers = blankObject();\n\tcomponent._slots = blankObject();\n\tcomponent._bind = options._bind;\n\tcomponent._staged = {};\n\n\tcomponent.options = options;\n\tcomponent.root = options.root || component;\n\tcomponent.store = options.store || component.root.store;\n\n\tif (!options.root) {\n\t\tcomponent._beforecreate = [];\n\t\tcomponent._oncreate = [];\n\t\tcomponent._aftercreate = [];\n\t}\n}\n\nfunction on(eventName, handler) {\n\tvar handlers = this._handlers[eventName] || (this._handlers[eventName] = []);\n\thandlers.push(handler);\n\n\treturn {\n\t\tcancel: function() {\n\t\t\tvar index = handlers.indexOf(handler);\n\t\t\tif (~index) handlers.splice(index, 1);\n\t\t}\n\t};\n}\n\nfunction set(newState) {\n\tthis._set(assign({}, newState));\n\tif (this.root._lock) return;\n\tflush(this.root);\n}\n\nfunction _set(newState) {\n\tvar oldState = this._state,\n\t\tchanged = {},\n\t\tdirty = false;\n\n\tnewState = assign(this._staged, newState);\n\tthis._staged = {};\n\n\tfor (var key in newState) {\n\t\tif (this._differs(newState[key], oldState[key])) changed[key] = dirty = true;\n\t}\n\tif (!dirty) return;\n\n\tthis._state = assign(assign({}, oldState), newState);\n\tthis._recompute(changed, this._state);\n\tif (this._bind) this._bind(changed, this._state);\n\n\tif (this._fragment) {\n\t\tthis.fire(\"state\", { changed: changed, current: this._state, previous: oldState });\n\t\tthis._fragment.p(changed, this._state);\n\t\tthis.fire(\"update\", { changed: changed, current: this._state, previous: oldState });\n\t}\n}\n\nfunction _stage(newState) {\n\tassign(this._staged, newState);\n}\n\nfunction setDev(newState) {\n\tif (typeof newState !== 'object') {\n\t\tthrow new Error(\n\t\t\tthis._debugName + '.set was called without an object of data key-values to update.'\n\t\t);\n\t}\n\n\tthis._checkReadOnly(newState);\n\tset.call(this, newState);\n}\n\nfunction callAll(fns) {\n\twhile (fns && fns.length) fns.shift()();\n}\n\nfunction _mount(target, anchor) {\n\tthis._fragment[this._fragment.i ? 'i' : 'm'](target, anchor || null);\n}\n\nvar PENDING = {};\nvar SUCCESS = {};\nvar FAILURE = {};\n\nfunction removeFromStore() {\n\tthis.store._remove(this);\n}\n\nvar proto = {\n\tdestroy,\n\tget,\n\tfire,\n\ton,\n\tset,\n\t_recompute: noop,\n\t_set,\n\t_stage,\n\t_mount,\n\t_differs\n};\n\nvar protoDev = {\n\tdestroy: destroyDev,\n\tget,\n\tfire,\n\ton,\n\tset: setDev,\n\t_recompute: noop,\n\t_set,\n\t_stage,\n\t_mount,\n\t_differs\n};\n\nexport { blankObject, destroy, destroyDev, _differs, _differsImmutable, fire, flush, get, init, on, set, _set, _stage, setDev, callAll, _mount, PENDING, SUCCESS, FAILURE, removeFromStore, proto, protoDev, wrapAnimation, fixPosition, handlePromise, append, insert, detachNode, detachBetween, detachBefore, detachAfter, reinsertBetween, reinsertChildren, reinsertAfter, reinsertBefore, destroyEach, createFragment, createElement, createSvgElement, createText, createComment, addListener, removeListener, setAttribute, setAttributes, setCustomElementData, setXlinkAttribute, getBindingGroupValue, toNumber, timeRangesToArray, children, claimElement, claimText, setData, setInputType, setStyle, selectOption, selectOptions, selectValue, selectMultipleValue, addResizeListener, toggleClass, destroyBlock, outroAndDestroyBlock, fixAndOutroAndDestroyBlock, updateKeyedEach, measure, animate, getSpreadUpdate, invalidAttributeNameCharacter, spread, escaped, escape, each, missingComponent, validateSsrComponent, debug, linear, generateRule, hash, wrapTransition, outros, groupOutros, transitionManager, noop, assign, assignTrue, isPromise, callAfter, addLoc, exclude, run };\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag\";\nimport noevent, {nopropagation} from \"./noevent\";\nimport constant from \"./constant\";\nimport DragEvent from \"./event\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return \"ontouchstart\" in this;\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex3 = /^#([0-9a-f]{3})$/,\n reHex6 = /^#([0-9a-f]{6})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: function() {\n return this.rgb().hex();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nexport default function color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: function() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n}\n","import {basis} from \"./basis\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","import value from \"./value\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","export default function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {tweenValue} from \"./tween\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i(t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i(t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {get, init} from \"./schedule\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport BrushEvent from \"./event\";\nimport noevent, {nopropagation} from \"./noevent\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nvar X = {\n name: \"x\",\n handles: [\"e\", \"w\"].map(type),\n input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n input: function(xy) { return xy; },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n listeners = dispatch(brush, \"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n .on(\"mousedown.brush touchstart.brush\", started);\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && empty(selection1) ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 && selection1 ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 == null || empty(selection1) ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args) {\n return that.__brush.emitter || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); }\n else if (touchending) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx,\n dy,\n moving,\n shifting = signX && signY && event.shiftKey,\n lockX,\n lockY,\n point0 = mouse(that),\n point = point0,\n emit = emitter(that, arguments).beforestart();\n\n if (type === \"overlay\") {\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n group\n .on(\"touchmove.brush\", moved, true)\n .on(\"touchend.brush touchcancel.brush\", ended, true);\n } else {\n var view = select(event.view)\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = mouse(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = extent.apply(this, arguments);\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return text == null ? \"\"\n : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : text;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatRows = tsv.formatRows;\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, inherit the existing extent.\n if (x1 < x0) x0 = this._x0, x1 = this._x1;\n if (y1 < y0) y0 = this._y0, y1 = this._y1;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else if (x0 > x || x > x1 || y0 > y || y > y1) {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {\n case 0: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);\n break;\n }\n case 1: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);\n break;\n }\n case 2: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);\n break;\n }\n case 3: {\n do parent = new Array(4), parent[i] = node, node = parent;\n while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);\n break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n // If the quadtree covers the point already, just return.\n else return this;\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (!isNaN(node.fx)) node.x = node.fx;\n if (!isNaN(node.fy)) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n this.fill = match[1] || \" \";\n this.align = match[2] || \">\";\n this.sign = match[3] || \"-\";\n this.symbol = match[4] || \"\";\n this.zero = !!match[5];\n this.width = match[6] && +match[6];\n this.comma = !!match[7];\n this.precision = match[8] && +match[8].slice(1);\n this.trim = !!match[9];\n this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n var lambda = point[0],\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = point0[0],\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = point1[0],\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newYear(d.y)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = newDate(newYear(d.y)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var slice = Array.prototype.slice;\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default function() {}\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n return node.__zoom || identity;\n}\n","import * as d3 from 'd3';\n\nexport class Context {\n constructor(width, height, [xmin, xmax], [ymin, ymax]) {\n this.width = width;\n this.height = height;\n this.xmin = xmin;\n this.xmax = xmax;\n this.xToViewport = d3.scaleLinear().domain([xmin, xmax]).range([0,width]);\n this.yToViewport = d3.scaleLinear().domain([ymin, ymax]).range([height,0]);\n }\n\n x(u) {\n return this.xToViewport.invert(u);\n }\n\n y(v) {\n return this.yToViewport.invert(v);\n }\n\n u(x) {\n return this.xToViewport(x);\n }\n\n v(y) {\n return this.yToViewport(y);\n }\n\n xDomain() {\n return this.xToViewport.domain();\n }\n\n yDomain() {\n return this.yToViewport.domain();\n }\n}\n\n","import isArray from 'is-any-array';\n\n/**\n * Computes the maximum of the given values\n * @param {Array} input\n * @return {number}\n */\n\nfunction max(input) {\n if (!isArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var max = input[0];\n\n for (var i = 1; i < input.length; i++) {\n if (input[i] > max) max = input[i];\n }\n\n return max;\n}\n\nexport default max;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the minimum of the given values\n * @param {Array} input\n * @return {number}\n */\n\nfunction min(input) {\n if (!isArray(input)) {\n throw new TypeError('input must be an array');\n }\n\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var min = input[0];\n\n for (var i = 1; i < input.length; i++) {\n if (input[i] < min) min = input[i];\n }\n\n return min;\n}\n\nexport default min;\n","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport isArray from 'is-any-array';\n\nfunction rescale(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!isArray(input)) {\n throw new TypeError('input must be an array');\n } else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n\n var output;\n\n if (options.output !== undefined) {\n if (!isArray(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n\n output = options.output;\n } else {\n output = new Array(input.length);\n }\n\n var currentMin = min(input);\n var currentMax = max(input);\n\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n\n var _options$min = options.min,\n minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n _options$max = options.max,\n maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n\n var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n for (var i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n\n return output;\n}\n\nexport default rescale;\n","import { Matrix, WrapperMatrix2D } from '../index';\n\n/**\n * @class LuDecomposition\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/LuDecomposition.cs\n * @param {Matrix} matrix\n */\nexport default class LuDecomposition {\n constructor(matrix) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n var lu = matrix.clone();\n var rows = lu.rows;\n var columns = lu.columns;\n var pivotVector = new Array(rows);\n var pivotSign = 1;\n var i, j, k, p, s, t, v;\n var LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n /**\n *\n * @return {boolean}\n */\n isSingular() {\n var data = this.LU;\n var col = data.columns;\n for (var j = 0; j < col; j++) {\n if (data[j][j] === 0) {\n return true;\n }\n }\n return false;\n }\n\n /**\n *\n * @param {Matrix} value\n * @return {Matrix}\n */\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n var lu = this.LU;\n var rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n var count = value.columns;\n var X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n var columns = lu.columns;\n var i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X[i][j] -= X[k][j] * lu[i][k];\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X[k][j] /= lu[k][k];\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X[i][j] -= X[k][j] * lu[i][k];\n }\n }\n }\n return X;\n }\n\n /**\n *\n * @return {number}\n */\n get determinant() {\n var data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n var determinant = this.pivotSign;\n var col = data.columns;\n for (var j = 0; j < col; j++) {\n determinant *= data[j][j];\n }\n return determinant;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get lowerTriangularMatrix() {\n var data = this.LU;\n var rows = data.rows;\n var columns = data.columns;\n var X = new Matrix(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n if (i > j) {\n X[i][j] = data[i][j];\n } else if (i === j) {\n X[i][j] = 1;\n } else {\n X[i][j] = 0;\n }\n }\n }\n return X;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get upperTriangularMatrix() {\n var data = this.LU;\n var rows = data.rows;\n var columns = data.columns;\n var X = new Matrix(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n if (i <= j) {\n X[i][j] = data[i][j];\n } else {\n X[i][j] = 0;\n }\n }\n }\n return X;\n }\n\n /**\n *\n * @return {Array}\n */\n get pivotPermutationVector() {\n return this.pivotVector.slice();\n }\n}\n","export function hypotenuse(a, b) {\n var r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n\nexport function getFilled2DArray(rows, columns, value) {\n var array = new Array(rows);\n for (var i = 0; i < rows; i++) {\n array[i] = new Array(columns);\n for (var j = 0; j < columns; j++) {\n array[i][j] = value;\n }\n }\n return array;\n}\n","import { Matrix, WrapperMatrix2D } from '../index';\n\nimport { hypotenuse, getFilled2DArray } from './util';\n\n/**\n * @class SingularValueDecomposition\n * @see https://github.com/accord-net/framework/blob/development/Sources/Accord.Math/Decompositions/SingularValueDecomposition.cs\n * @param {Matrix} value\n * @param {object} [options]\n * @param {boolean} [options.computeLeftSingularVectors=true]\n * @param {boolean} [options.computeRightSingularVectors=true]\n * @param {boolean} [options.autoTranspose=false]\n */\nexport default class SingularValueDecomposition {\n constructor(value, options = {}) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n var m = value.rows;\n var n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false\n } = options;\n\n var wantu = Boolean(computeLeftSingularVectors);\n var wantv = Boolean(computeRightSingularVectors);\n\n var swapped = false;\n var a;\n if (m < n) {\n if (!autoTranspose) {\n a = value.clone();\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose'\n );\n } else {\n a = value.transpose();\n m = a.rows;\n n = a.columns;\n swapped = true;\n var aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n a = value.clone();\n }\n\n var nu = Math.min(m, n);\n var ni = Math.min(m + 1, n);\n var s = new Array(ni);\n var U = getFilled2DArray(m, nu, 0);\n var V = getFilled2DArray(n, n, 0);\n\n var e = new Array(n);\n var work = new Array(m);\n\n var si = new Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n var nct = Math.min(m - 1, n);\n var nrt = Math.max(0, Math.min(n - 2, m));\n var mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], a[i][k]);\n }\n if (s[k] !== 0) {\n if (a[k][k] < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n a[i][k] /= s[k];\n }\n a[k][k] += 1;\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += a[i][k] * a[i][j];\n }\n t = -t / a[k][k];\n for (let i = k; i < m; i++) {\n a[i][j] += t * a[i][k];\n }\n }\n e[j] = a[k][j];\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U[i][k] = a[i][k];\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = hypotenuse(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * a[i][j];\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n a[i][j] += t * work[i];\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V[i][k] = e[i];\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = a[nct][nct];\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = a[nrt][p - 1];\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U[i][j] = 0;\n }\n U[j][j] = 1;\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U[i][k] * U[i][j];\n }\n t = -t / U[k][k];\n for (let i = k; i < m; i++) {\n U[i][j] += t * U[i][k];\n }\n }\n for (let i = k; i < m; i++) {\n U[i][k] = -U[i][k];\n }\n U[k][k] = 1 + U[k][k];\n for (let i = 0; i < k - 1; i++) {\n U[i][k] = 0;\n }\n } else {\n for (let i = 0; i < m; i++) {\n U[i][k] = 0;\n }\n U[k][k] = 1;\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V[i][k] * V[i][j];\n }\n t = -t / V[k + 1][k];\n for (let i = k + 1; i < n; i++) {\n V[i][j] += t * V[i][k];\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V[i][k] = 0;\n }\n V[k][k] = 1;\n }\n }\n\n var pp = p - 1;\n var iter = 0;\n var eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V[i][j] + sn * V[i][p - 1];\n V[i][p - 1] = -sn * V[i][j] + cs * V[i][p - 1];\n V[i][j] = t;\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U[i][j] + sn * U[i][k - 1];\n U[i][k - 1] = -sn * U[i][j] + cs * U[i][k - 1];\n U[i][j] = t;\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k])\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V[i][j] + sn * V[i][j + 1];\n V[i][j + 1] = -sn * V[i][j] + cs * V[i][j + 1];\n V[i][j] = t;\n }\n }\n t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U[i][j] + sn * U[i][j + 1];\n U[i][j + 1] = -sn * U[i][j] + cs * U[i][j + 1];\n U[i][j] = t;\n }\n }\n }\n e[p - 2] = f;\n iter = iter + 1;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V[i][k] = -V[i][k];\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V[i][k + 1];\n V[i][k + 1] = V[i][k];\n V[i][k] = t;\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U[i][k + 1];\n U[i][k + 1] = U[i][k];\n U[i][k] = t;\n }\n }\n k++;\n }\n iter = 0;\n p--;\n break;\n }\n // no default\n }\n }\n\n if (swapped) {\n var tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n /**\n * Solve a problem of least square (Ax=b) by using the SVD. Useful when A is singular. When A is not singular, it would be better to use qr.solve(value).\n * Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use :\n * var svd = SingularValueDecomposition(A);\n * var x = svd.solve(b);\n * @param {Matrix} value - Matrix 1D which is the vector b (in the equation Ax = b)\n * @return {Matrix} - The vector x\n */\n solve(value) {\n var Y = value;\n var e = this.threshold;\n var scols = this.s.length;\n var Ls = Matrix.zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls[i][i] = 0;\n } else {\n Ls[i][i] = 1 / this.s[i];\n }\n }\n\n var U = this.U;\n var V = this.rightSingularVectors;\n\n var VL = V.mmul(Ls);\n var vrows = V.rows;\n var urows = U.length;\n var VLU = Matrix.zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL[i][k] * U[j][k];\n }\n VLU[i][j] = sum;\n }\n }\n\n return VLU.mmul(Y);\n }\n\n /**\n *\n * @param {Array} value\n * @return {Matrix}\n */\n solveForDiagonal(value) {\n return this.solve(Matrix.diag(value));\n }\n\n /**\n * Get the inverse of the matrix. We compute the inverse of a matrix using SVD when this matrix is singular or ill-conditioned. Example :\n * var svd = SingularValueDecomposition(A);\n * var inverseA = svd.inverse();\n * @return {Matrix} - The approximation of the inverse of the matrix\n */\n inverse() {\n var V = this.V;\n var e = this.threshold;\n var vrows = V.length;\n var vcols = V[0].length;\n var X = new Matrix(vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X[i][j] = V[i][j] / this.s[j];\n } else {\n X[i][j] = 0;\n }\n }\n }\n\n var U = this.U;\n\n var urows = U.length;\n var ucols = U[0].length;\n var Y = new Matrix(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X[i][k] * U[j][k];\n }\n Y[i][j] = sum;\n }\n }\n\n return Y;\n }\n\n /**\n *\n * @return {number}\n */\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n /**\n *\n * @return {number}\n */\n get norm2() {\n return this.s[0];\n }\n\n /**\n *\n * @return {number}\n */\n get rank() {\n var tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n var r = 0;\n var s = this.s;\n for (var i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n /**\n *\n * @return {Array}\n */\n get diagonal() {\n return this.s;\n }\n\n /**\n *\n * @return {number}\n */\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n\n /**\n *\n * @return {Matrix}\n */\n get leftSingularVectors() {\n if (!Matrix.isMatrix(this.U)) {\n this.U = new Matrix(this.U);\n }\n return this.U;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get rightSingularVectors() {\n if (!Matrix.isMatrix(this.V)) {\n this.V = new Matrix(this.V);\n }\n return this.V;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get diagonalMatrix() {\n return Matrix.diag(this.s);\n }\n}\n","import Matrix from './matrix';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n var max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n var max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns'\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n return {\n row: checkRowIndices(matrix, rowIndices),\n column: checkColumnIndices(matrix, columnIndices)\n };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n if (typeof rowIndices !== 'object') {\n throw new TypeError('unexpected type for row indices');\n }\n\n var rowOut = rowIndices.some((r) => {\n return r < 0 || r >= matrix.rows;\n });\n\n if (rowOut) {\n throw new RangeError('row indices are out of range');\n }\n\n if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n if (typeof columnIndices !== 'object') {\n throw new TypeError('unexpected type for column indices');\n }\n\n var columnOut = columnIndices.some((c) => {\n return c < 0 || c >= matrix.columns;\n });\n\n if (columnOut) {\n throw new RangeError('column indices are out of range');\n }\n if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n return columnIndices;\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nexport function getRange(from, to) {\n var arr = new Array(to - from + 1);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = from + i;\n }\n return arr;\n}\n\nexport function sumByRow(matrix) {\n var sum = Matrix.zeros(matrix.rows, 1);\n for (var i = 0; i < matrix.rows; ++i) {\n for (var j = 0; j < matrix.columns; ++j) {\n sum.set(i, 0, sum.get(i, 0) + matrix.get(i, j));\n }\n }\n return sum;\n}\n\nexport function sumByColumn(matrix) {\n var sum = Matrix.zeros(1, matrix.columns);\n for (var i = 0; i < matrix.rows; ++i) {\n for (var j = 0; j < matrix.columns; ++j) {\n sum.set(0, j, sum.get(0, j) + matrix.get(i, j));\n }\n }\n return sum;\n}\n\nexport function sumAll(matrix) {\n var v = 0;\n for (var i = 0; i < matrix.rows; i++) {\n for (var j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n","import AbstractMatrix from '../abstractMatrix';\nimport Matrix from '../matrix';\n\nexport default class BaseView extends AbstractMatrix() {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n\n static get [Symbol.species]() {\n return Matrix;\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixRowView extends BaseView {\n constructor(matrix, row) {\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n","import { checkRange } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSubView extends BaseView {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex\n );\n }\n}\n","import { checkIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSelectionView extends BaseView {\n constructor(matrix, rowIndices, columnIndices) {\n var indices = checkIndices(matrix, rowIndices, columnIndices);\n super(matrix, indices.row.length, indices.column.length);\n this.rowIndices = indices.row;\n this.columnIndices = indices.column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex]\n );\n }\n}\n","import { checkRowIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixRowSelectionView extends BaseView {\n constructor(matrix, rowIndices) {\n rowIndices = checkRowIndices(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n","import { checkColumnIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixColumnSelectionView extends BaseView {\n constructor(matrix, columnIndices) {\n columnIndices = checkColumnIndices(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixColumnView extends BaseView {\n constructor(matrix, column) {\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixFlipRowView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n","import BaseView from './base';\n\nexport default class MatrixFlipColumnView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n","import rescale from 'ml-array-rescale';\n\nimport LuDecomposition from './dc/lu';\nimport SvDecomposition from './dc/svd';\nimport {\n checkRowVector, checkRowIndex, checkColumnIndex, checkColumnVector,\n checkRange, checkIndices,\n sumByRow, sumByColumn, sumAll\n} from './util';\nimport MatrixTransposeView from './views/transpose';\nimport MatrixRowView from './views/row';\nimport MatrixSubView from './views/sub';\nimport MatrixSelectionView from './views/selection';\nimport MatrixRowSelectionView from './views/rowSelection';\nimport MatrixColumnSelectionView from './views/columnSelection';\nimport MatrixColumnView from './views/column';\nimport MatrixFlipRowView from './views/flipRow';\nimport MatrixFlipColumnView from './views/flipColumn';\n\nexport default function AbstractMatrix(superCtor) {\n if (superCtor === undefined) superCtor = Object;\n\n /**\n * Real matrix\n * @class Matrix\n * @param {number|Array|Matrix} nRows - Number of rows of the new matrix,\n * 2D array containing the data or Matrix instance to clone\n * @param {number} [nColumns] - Number of columns of the new matrix\n */\n class Matrix extends superCtor {\n static get [Symbol.species]() {\n return this;\n }\n\n /**\n * Constructs a Matrix with the chosen dimensions from a 1D array\n * @param {number} newRows - Number of rows\n * @param {number} newColumns - Number of columns\n * @param {Array} newData - A 1D array containing data for the matrix\n * @return {Matrix} - The new matrix\n */\n static from1DArray(newRows, newColumns, newData) {\n var length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('Data length does not match given dimensions');\n }\n var newMatrix = new this(newRows, newColumns);\n for (var row = 0; row < newRows; row++) {\n for (var column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n /**\n * Creates a row vector, a matrix with only one row.\n * @param {Array} newData - A 1D array containing data for the vector\n * @return {Matrix} - The new matrix\n */\n static rowVector(newData) {\n var vector = new this(1, newData.length);\n for (var i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n /**\n * Creates a column vector, a matrix with only one column.\n * @param {Array} newData - A 1D array containing data for the vector\n * @return {Matrix} - The new matrix\n */\n static columnVector(newData) {\n var vector = new this(newData.length, 1);\n for (var i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n /**\n * Creates an empty matrix with the given dimensions. Values will be undefined. Same as using new Matrix(rows, columns).\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static empty(rows, columns) {\n return new this(rows, columns);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be set to zero.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static zeros(rows, columns) {\n return this.empty(rows, columns).fill(0);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be set to one.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @return {Matrix} - The new matrix\n */\n static ones(rows, columns) {\n return this.empty(rows, columns).fill(1);\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be randomly set.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @param {function} [rng=Math.random] - Random number generator\n * @return {Matrix} The new matrix\n */\n static rand(rows, columns, rng) {\n if (rng === undefined) rng = Math.random;\n var matrix = this.empty(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n matrix.set(i, j, rng());\n }\n }\n return matrix;\n }\n\n /**\n * Creates a matrix with the given dimensions. Values will be random integers.\n * @param {number} rows - Number of rows\n * @param {number} columns - Number of columns\n * @param {number} [maxValue=1000] - Maximum value\n * @param {function} [rng=Math.random] - Random number generator\n * @return {Matrix} The new matrix\n */\n static randInt(rows, columns, maxValue, rng) {\n if (maxValue === undefined) maxValue = 1000;\n if (rng === undefined) rng = Math.random;\n var matrix = this.empty(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n var value = Math.floor(rng() * maxValue);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n /**\n * Creates an identity matrix with the given dimension. Values of the diagonal will be 1 and others will be 0.\n * @param {number} rows - Number of rows\n * @param {number} [columns=rows] - Number of columns\n * @param {number} [value=1] - Value to fill the diagonal with\n * @return {Matrix} - The new identity matrix\n */\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n var min = Math.min(rows, columns);\n var matrix = this.zeros(rows, columns);\n for (var i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n /**\n * Creates a diagonal matrix based on the given array.\n * @param {Array} data - Array containing the data for the diagonal\n * @param {number} [rows] - Number of rows (Default: data.length)\n * @param {number} [columns] - Number of columns (Default: rows)\n * @return {Matrix} - The new diagonal matrix\n */\n static diag(data, rows, columns) {\n var l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n var min = Math.min(l, rows, columns);\n var matrix = this.zeros(rows, columns);\n for (var i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n /**\n * Returns a matrix whose elements are the minimum between matrix1 and matrix2\n * @param {Matrix} matrix1\n * @param {Matrix} matrix2\n * @return {Matrix}\n */\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n var rows = matrix1.rows;\n var columns = matrix1.columns;\n var result = new this(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n /**\n * Returns a matrix whose elements are the maximum between matrix1 and matrix2\n * @param {Matrix} matrix1\n * @param {Matrix} matrix2\n * @return {Matrix}\n */\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n var rows = matrix1.rows;\n var columns = matrix1.columns;\n var result = new this(rows, columns);\n for (var i = 0; i < rows; i++) {\n for (var j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n /**\n * Check that the provided value is a Matrix and tries to instantiate one if not\n * @param {*} value - The value to check\n * @return {Matrix}\n */\n static checkMatrix(value) {\n return Matrix.isMatrix(value) ? value : new this(value);\n }\n\n /**\n * Returns true if the argument is a Matrix, false otherwise\n * @param {*} value - The value to check\n * @return {boolean}\n */\n static isMatrix(value) {\n return (value != null) && (value.klass === 'Matrix');\n }\n\n /**\n * @prop {number} size - The number of elements in the matrix.\n */\n get size() {\n return this.rows * this.columns;\n }\n\n /**\n * Applies a callback for each element of the matrix. The function is called in the matrix (this) context.\n * @param {function} callback - Function that will be called with two parameters : i (row) and j (column)\n * @return {Matrix} this\n */\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n var ii = this.rows;\n var jj = this.columns;\n for (var i = 0; i < ii; i++) {\n for (var j = 0; j < jj; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n /**\n * Returns a new 1D array filled row by row with the matrix values\n * @return {Array}\n */\n to1DArray() {\n var array = new Array(this.size);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n array[i * this.columns + j] = this.get(i, j);\n }\n }\n return array;\n }\n\n /**\n * Returns a 2D array containing a copy of the data\n * @return {Array}\n */\n to2DArray() {\n var copy = new Array(this.rows);\n for (var i = 0; i < this.rows; i++) {\n copy[i] = new Array(this.columns);\n for (var j = 0; j < this.columns; j++) {\n copy[i][j] = this.get(i, j);\n }\n }\n return copy;\n }\n\n /**\n * @return {boolean} true if the matrix has one row\n */\n isRowVector() {\n return this.rows === 1;\n }\n\n /**\n * @return {boolean} true if the matrix has one column\n */\n isColumnVector() {\n return this.columns === 1;\n }\n\n /**\n * @return {boolean} true if the matrix has one row or one column\n */\n isVector() {\n return (this.rows === 1) || (this.columns === 1);\n }\n\n /**\n * @return {boolean} true if the matrix has the same number of rows and columns\n */\n isSquare() {\n return this.rows === this.columns;\n }\n\n /**\n * @return {boolean} true if the matrix is square and has the same values on both sides of the diagonal\n */\n isSymmetric() {\n if (this.isSquare()) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n /**\n * Sets a given element of the matrix. mat.set(3,4,1) is equivalent to mat[3][4]=1\n * @abstract\n * @param {number} rowIndex - Index of the row\n * @param {number} columnIndex - Index of the column\n * @param {number} value - The new value for the element\n * @return {Matrix} this\n */\n set(rowIndex, columnIndex, value) { // eslint-disable-line no-unused-vars\n throw new Error('set method is unimplemented');\n }\n\n /**\n * Returns the given element of the matrix. mat.get(3,4) is equivalent to matrix[3][4]\n * @abstract\n * @param {number} rowIndex - Index of the row\n * @param {number} columnIndex - Index of the column\n * @return {number}\n */\n get(rowIndex, columnIndex) { // eslint-disable-line no-unused-vars\n throw new Error('get method is unimplemented');\n }\n\n /**\n * Creates a new matrix that is a repetition of the current matrix. New matrix has rowRep times the number of\n * rows of the matrix, and colRep times the number of columns of the matrix\n * @param {number} rowRep - Number of times the rows should be repeated\n * @param {number} colRep - Number of times the columns should be re\n * @return {Matrix}\n * @example\n * var matrix = new Matrix([[1,2]]);\n * matrix.repeat(2); // [[1,2],[1,2]]\n */\n repeat(rowRep, colRep) {\n rowRep = rowRep || 1;\n colRep = colRep || 1;\n var matrix = new this.constructor[Symbol.species](this.rows * rowRep, this.columns * colRep);\n for (var i = 0; i < rowRep; i++) {\n for (var j = 0; j < colRep; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n /**\n * Fills the matrix with a given value. All elements will be set to this value.\n * @param {number} value - New value\n * @return {Matrix} this\n */\n fill(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n /**\n * Negates the matrix. All elements will be multiplied by (-1)\n * @return {Matrix} this\n */\n neg() {\n return this.mulS(-1);\n }\n\n /**\n * Returns a new array from the given row index\n * @param {number} index - Row index\n * @return {Array}\n */\n getRow(index) {\n checkRowIndex(this, index);\n var row = new Array(this.columns);\n for (var i = 0; i < this.columns; i++) {\n row[i] = this.get(index, i);\n }\n return row;\n }\n\n /**\n * Returns a new row vector from the given row index\n * @param {number} index - Row index\n * @return {Matrix}\n */\n getRowVector(index) {\n return this.constructor.rowVector(this.getRow(index));\n }\n\n /**\n * Sets a row at the given index\n * @param {number} index - Row index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n setRow(index, array) {\n checkRowIndex(this, index);\n array = checkRowVector(this, array);\n for (var i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n /**\n * Swaps two rows\n * @param {number} row1 - First row index\n * @param {number} row2 - Second row index\n * @return {Matrix} this\n */\n swapRows(row1, row2) {\n checkRowIndex(this, row1);\n checkRowIndex(this, row2);\n for (var i = 0; i < this.columns; i++) {\n var temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n /**\n * Returns a new array from the given column index\n * @param {number} index - Column index\n * @return {Array}\n */\n getColumn(index) {\n checkColumnIndex(this, index);\n var column = new Array(this.rows);\n for (var i = 0; i < this.rows; i++) {\n column[i] = this.get(i, index);\n }\n return column;\n }\n\n /**\n * Returns a new column vector from the given column index\n * @param {number} index - Column index\n * @return {Matrix}\n */\n getColumnVector(index) {\n return this.constructor.columnVector(this.getColumn(index));\n }\n\n /**\n * Sets a column at the given index\n * @param {number} index - Column index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n setColumn(index, array) {\n checkColumnIndex(this, index);\n array = checkColumnVector(this, array);\n for (var i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n /**\n * Swaps two columns\n * @param {number} column1 - First column index\n * @param {number} column2 - Second column index\n * @return {Matrix} this\n */\n swapColumns(column1, column2) {\n checkColumnIndex(this, column1);\n checkColumnIndex(this, column2);\n for (var i = 0; i < this.rows; i++) {\n var temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n /**\n * Adds the values of a vector to each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n addRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n /**\n * Subtracts the values of a vector from each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n subRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n /**\n * Multiplies the values of a vector with each row\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n mulRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n /**\n * Divides the values of each row by those of a vector\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n divRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n /**\n * Adds the values of a vector to each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n addColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n /**\n * Subtracts the values of a vector from each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n subColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n /**\n * Multiplies the values of a vector with each column\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n mulColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n /**\n * Divides the values of each column by those of a vector\n * @param {Array|Matrix} vector - Array or vector\n * @return {Matrix} this\n */\n divColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n /**\n * Multiplies the values of a row with a scalar\n * @param {number} index - Row index\n * @param {number} value\n * @return {Matrix} this\n */\n mulRow(index, value) {\n checkRowIndex(this, index);\n for (var i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n /**\n * Multiplies the values of a column with a scalar\n * @param {number} index - Column index\n * @param {number} value\n * @return {Matrix} this\n */\n mulColumn(index, value) {\n checkColumnIndex(this, index);\n for (var i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n /**\n * Returns the maximum value of the matrix\n * @return {number}\n */\n max() {\n var v = this.get(0, 0);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the maximum value\n * @return {Array}\n */\n maxIndex() {\n var v = this.get(0, 0);\n var idx = [0, 0];\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n /**\n * Returns the minimum value of the matrix\n * @return {number}\n */\n min() {\n var v = this.get(0, 0);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n }\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the minimum value\n * @return {Array}\n */\n minIndex() {\n var v = this.get(0, 0);\n var idx = [0, 0];\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n /**\n * Returns the maximum value of one row\n * @param {number} row - Row index\n * @return {number}\n */\n maxRow(row) {\n checkRowIndex(this, row);\n var v = this.get(row, 0);\n for (var i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the maximum value of one row\n * @param {number} row - Row index\n * @return {Array}\n */\n maxRowIndex(row) {\n checkRowIndex(this, row);\n var v = this.get(row, 0);\n var idx = [row, 0];\n for (var i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n /**\n * Returns the minimum value of one row\n * @param {number} row - Row index\n * @return {number}\n */\n minRow(row) {\n checkRowIndex(this, row);\n var v = this.get(row, 0);\n for (var i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the maximum value of one row\n * @param {number} row - Row index\n * @return {Array}\n */\n minRowIndex(row) {\n checkRowIndex(this, row);\n var v = this.get(row, 0);\n var idx = [row, 0];\n for (var i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n /**\n * Returns the maximum value of one column\n * @param {number} column - Column index\n * @return {number}\n */\n maxColumn(column) {\n checkColumnIndex(this, column);\n var v = this.get(0, column);\n for (var i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the maximum value of one column\n * @param {number} column - Column index\n * @return {Array}\n */\n maxColumnIndex(column) {\n checkColumnIndex(this, column);\n var v = this.get(0, column);\n var idx = [0, column];\n for (var i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n /**\n * Returns the minimum value of one column\n * @param {number} column - Column index\n * @return {number}\n */\n minColumn(column) {\n checkColumnIndex(this, column);\n var v = this.get(0, column);\n for (var i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n /**\n * Returns the index of the minimum value of one column\n * @param {number} column - Column index\n * @return {Array}\n */\n minColumnIndex(column) {\n checkColumnIndex(this, column);\n var v = this.get(0, column);\n var idx = [0, column];\n for (var i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n /**\n * Returns an array containing the diagonal values of the matrix\n * @return {Array}\n */\n diag() {\n var min = Math.min(this.rows, this.columns);\n var diag = new Array(min);\n for (var i = 0; i < min; i++) {\n diag[i] = this.get(i, i);\n }\n return diag;\n }\n\n /**\n * Returns the sum by the argument given, if no argument given,\n * it returns the sum of all elements of the matrix.\n * @param {string} by - sum by 'row' or 'column'.\n * @return {Matrix|number}\n */\n sum(by) {\n switch (by) {\n case 'row':\n return sumByRow(this);\n case 'column':\n return sumByColumn(this);\n default:\n return sumAll(this);\n }\n }\n\n /**\n * Returns the mean of all elements of the matrix\n * @return {number}\n */\n mean() {\n return this.sum() / this.size;\n }\n\n /**\n * Returns the product of all elements of the matrix\n * @return {number}\n */\n prod() {\n var prod = 1;\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n prod *= this.get(i, j);\n }\n }\n return prod;\n }\n\n /**\n * Returns the norm of a matrix.\n * @param {string} type - \"frobenius\" (default) or \"max\" return resp. the Frobenius norm and the max norm.\n * @return {number}\n */\n norm(type = 'frobenius') {\n var result = 0;\n if (type === 'max') {\n return this.max();\n } else if (type === 'frobenius') {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n result = result + this.get(i, j) * this.get(i, j);\n }\n }\n return Math.sqrt(result);\n } else {\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n /**\n * Computes the cumulative sum of the matrix elements (in place, row by row)\n * @return {Matrix} this\n */\n cumulativeSum() {\n var sum = 0;\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n /**\n * Computes the dot (scalar) product between the matrix and another\n * @param {Matrix} vector2 vector\n * @return {number}\n */\n dot(vector2) {\n if (Matrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n var vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n var dot = 0;\n for (var i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n /**\n * Returns the matrix product between this and other\n * @param {Matrix} other\n * @return {Matrix}\n */\n mmul(other) {\n other = this.constructor.checkMatrix(other);\n if (this.columns !== other.rows) {\n // eslint-disable-next-line no-console\n console.warn('Number of columns of left matrix are not equal to number of rows of right matrix.');\n }\n\n var m = this.rows;\n var n = this.columns;\n var p = other.columns;\n\n var result = new this.constructor[Symbol.species](m, p);\n\n var Bcolj = new Array(n);\n for (var j = 0; j < p; j++) {\n for (var k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (var i = 0; i < m; i++) {\n var s = 0;\n for (k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n strassen2x2(other) {\n var result = new this.constructor[Symbol.species](2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n var result = new this.constructor[Symbol.species](3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n /**\n * Returns the matrix product between x and y. More efficient than mmul(other) only when we multiply squared matrix and when the size of the matrix is > 1000.\n * @param {Matrix} y\n * @return {Matrix}\n */\n mmulStrassen(y) {\n var x = this.clone();\n var r1 = x.rows;\n var c1 = x.columns;\n var r2 = y.rows;\n var c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(`Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`);\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n var r = mat.rows;\n var c = mat.columns;\n if ((r === rows) && (c === cols)) {\n return mat;\n } else {\n var resultat = Matrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n var r = Math.max(r1, r2);\n var c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if ((rows % 2 === 1) && (cols % 2 === 1)) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n var halfRows = parseInt(a.rows / 2, 10);\n var halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n var a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n var b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n var a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n var b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n var a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n var b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n var a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n var b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n var m1 = blockMult(Matrix.add(a11, a22), Matrix.add(b11, b22), halfRows, halfCols);\n var m2 = blockMult(Matrix.add(a21, a22), b11, halfRows, halfCols);\n var m3 = blockMult(a11, Matrix.sub(b12, b22), halfRows, halfCols);\n var m4 = blockMult(a22, Matrix.sub(b21, b11), halfRows, halfCols);\n var m5 = blockMult(Matrix.add(a11, a12), b22, halfRows, halfCols);\n var m6 = blockMult(Matrix.sub(a21, a11), Matrix.add(b11, b12), halfRows, halfCols);\n var m7 = blockMult(Matrix.sub(a12, a22), Matrix.add(b21, b22), halfRows, halfCols);\n\n // Combine intermediate values into the output.\n var c11 = Matrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n var c12 = Matrix.add(m3, m5);\n var c21 = Matrix.add(m2, m4);\n var c22 = Matrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n var resultat = Matrix.zeros(2 * c11.rows, 2 * c11.columns);\n resultat = resultat.setSubMatrix(c11, 0, 0);\n resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n }\n return blockMult(x, y, r, c);\n }\n\n /**\n * Returns a row-by-row scaled matrix\n * @param {number} [min=0] - Minimum scaled value\n * @param {number} [max=1] - Maximum scaled value\n * @return {Matrix} - The scaled matrix\n */\n scaleRows(min, max) {\n min = min === undefined ? 0 : min;\n max = max === undefined ? 1 : max;\n if (min >= max) {\n throw new RangeError('min should be strictly smaller than max');\n }\n var newMatrix = this.constructor.empty(this.rows, this.columns);\n for (var i = 0; i < this.rows; i++) {\n var scaled = rescale(this.getRow(i), { min, max });\n newMatrix.setRow(i, scaled);\n }\n return newMatrix;\n }\n\n /**\n * Returns a new column-by-column scaled matrix\n * @param {number} [min=0] - Minimum scaled value\n * @param {number} [max=1] - Maximum scaled value\n * @return {Matrix} - The new scaled matrix\n * @example\n * var matrix = new Matrix([[1,2],[-1,0]]);\n * var scaledMatrix = matrix.scaleColumns(); // [[1,1],[0,0]]\n */\n scaleColumns(min, max) {\n min = min === undefined ? 0 : min;\n max = max === undefined ? 1 : max;\n if (min >= max) {\n throw new RangeError('min should be strictly smaller than max');\n }\n var newMatrix = this.constructor.empty(this.rows, this.columns);\n for (var i = 0; i < this.columns; i++) {\n var scaled = rescale(this.getColumn(i), {\n min: min,\n max: max\n });\n newMatrix.setColumn(i, scaled);\n }\n return newMatrix;\n }\n\n\n /**\n * Returns the Kronecker product (also known as tensor product) between this and other\n * See https://en.wikipedia.org/wiki/Kronecker_product\n * @param {Matrix} other\n * @return {Matrix}\n */\n kroneckerProduct(other) {\n other = this.constructor.checkMatrix(other);\n\n var m = this.rows;\n var n = this.columns;\n var p = other.rows;\n var q = other.columns;\n\n var result = new this.constructor[Symbol.species](m * p, n * q);\n for (var i = 0; i < m; i++) {\n for (var j = 0; j < n; j++) {\n for (var k = 0; k < p; k++) {\n for (var l = 0; l < q; l++) {\n result[p * i + k][q * j + l] = this.get(i, j) * other.get(k, l);\n }\n }\n }\n }\n return result;\n }\n\n /**\n * Transposes the matrix and returns a new one containing the result\n * @return {Matrix}\n */\n transpose() {\n var result = new this.constructor[Symbol.species](this.columns, this.rows);\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n /**\n * Sorts the rows (in place)\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\n * @return {Matrix} this\n */\n sortRows(compareFunction) {\n if (compareFunction === undefined) compareFunction = compareNumbers;\n for (var i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n /**\n * Sorts the columns (in place)\n * @param {function} compareFunction - usual Array.prototype.sort comparison function\n * @return {Matrix} this\n */\n sortColumns(compareFunction) {\n if (compareFunction === undefined) compareFunction = compareNumbers;\n for (var i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n /**\n * Returns a subset of the matrix\n * @param {number} startRow - First row index\n * @param {number} endRow - Last row index\n * @param {number} startColumn - First column index\n * @param {number} endColumn - Last column index\n * @return {Matrix}\n */\n subMatrix(startRow, endRow, startColumn, endColumn) {\n checkRange(this, startRow, endRow, startColumn, endColumn);\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, endColumn - startColumn + 1);\n for (var i = startRow; i <= endRow; i++) {\n for (var j = startColumn; j <= endColumn; j++) {\n newMatrix[i - startRow][j - startColumn] = this.get(i, j);\n }\n }\n return newMatrix;\n }\n\n /**\n * Returns a subset of the matrix based on an array of row indices\n * @param {Array} indices - Array containing the row indices\n * @param {number} [startColumn = 0] - First column index\n * @param {number} [endColumn = this.columns-1] - Last column index\n * @return {Matrix}\n */\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if ((startColumn > endColumn) || (startColumn < 0) || (startColumn >= this.columns) || (endColumn < 0) || (endColumn >= this.columns)) {\n throw new RangeError('Argument out of range');\n }\n\n var newMatrix = new this.constructor[Symbol.species](indices.length, endColumn - startColumn + 1);\n for (var i = 0; i < indices.length; i++) {\n for (var j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n /**\n * Returns a subset of the matrix based on an array of column indices\n * @param {Array} indices - Array containing the column indices\n * @param {number} [startRow = 0] - First row index\n * @param {number} [endRow = this.rows-1] - Last row index\n * @return {Matrix}\n */\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if ((startRow > endRow) || (startRow < 0) || (startRow >= this.rows) || (endRow < 0) || (endRow >= this.rows)) {\n throw new RangeError('Argument out of range');\n }\n\n var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, indices.length);\n for (var i = 0; i < indices.length; i++) {\n for (var j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n /**\n * Set a part of the matrix to the given sub-matrix\n * @param {Matrix|Array< Array >} matrix - The source matrix from which to extract values.\n * @param {number} startRow - The index of the first row to set\n * @param {number} startColumn - The index of the first column to set\n * @return {Matrix}\n */\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = this.constructor.checkMatrix(matrix);\n var endRow = startRow + matrix.rows - 1;\n var endColumn = startColumn + matrix.columns - 1;\n checkRange(this, startRow, endRow, startColumn, endColumn);\n for (var i = 0; i < matrix.rows; i++) {\n for (var j = 0; j < matrix.columns; j++) {\n this[startRow + i][startColumn + j] = matrix.get(i, j);\n }\n }\n return this;\n }\n\n /**\n * Return a new matrix based on a selection of rows and columns\n * @param {Array} rowIndices - The row indices to select. Order matters and an index can be more than once.\n * @param {Array} columnIndices - The column indices to select. Order matters and an index can be use more than once.\n * @return {Matrix} The new matrix\n */\n selection(rowIndices, columnIndices) {\n var indices = checkIndices(this, rowIndices, columnIndices);\n var newMatrix = new this.constructor[Symbol.species](rowIndices.length, columnIndices.length);\n for (var i = 0; i < indices.row.length; i++) {\n var rowIndex = indices.row[i];\n for (var j = 0; j < indices.column.length; j++) {\n var columnIndex = indices.column[j];\n newMatrix[i][j] = this.get(rowIndex, columnIndex);\n }\n }\n return newMatrix;\n }\n\n /**\n * Returns the trace of the matrix (sum of the diagonal elements)\n * @return {number}\n */\n trace() {\n var min = Math.min(this.rows, this.columns);\n var trace = 0;\n for (var i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n /*\n Matrix views\n */\n\n /**\n * Returns a view of the transposition of the matrix\n * @return {MatrixTransposeView}\n */\n transposeView() {\n return new MatrixTransposeView(this);\n }\n\n /**\n * Returns a view of the row vector with the given index\n * @param {number} row - row index of the vector\n * @return {MatrixRowView}\n */\n rowView(row) {\n checkRowIndex(this, row);\n return new MatrixRowView(this, row);\n }\n\n /**\n * Returns a view of the column vector with the given index\n * @param {number} column - column index of the vector\n * @return {MatrixColumnView}\n */\n columnView(column) {\n checkColumnIndex(this, column);\n return new MatrixColumnView(this, column);\n }\n\n /**\n * Returns a view of the matrix flipped in the row axis\n * @return {MatrixFlipRowView}\n */\n flipRowView() {\n return new MatrixFlipRowView(this);\n }\n\n /**\n * Returns a view of the matrix flipped in the column axis\n * @return {MatrixFlipColumnView}\n */\n flipColumnView() {\n return new MatrixFlipColumnView(this);\n }\n\n /**\n * Returns a view of a submatrix giving the index boundaries\n * @param {number} startRow - first row index of the submatrix\n * @param {number} endRow - last row index of the submatrix\n * @param {number} startColumn - first column index of the submatrix\n * @param {number} endColumn - last column index of the submatrix\n * @return {MatrixSubView}\n */\n subMatrixView(startRow, endRow, startColumn, endColumn) {\n return new MatrixSubView(this, startRow, endRow, startColumn, endColumn);\n }\n\n /**\n * Returns a view of the cross of the row indices and the column indices\n * @example\n * // resulting vector is [[2], [2]]\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).selectionView([0, 0], [1])\n * @param {Array} rowIndices\n * @param {Array} columnIndices\n * @return {MatrixSelectionView}\n */\n selectionView(rowIndices, columnIndices) {\n return new MatrixSelectionView(this, rowIndices, columnIndices);\n }\n\n /**\n * Returns a view of the row indices\n * @example\n * // resulting vector is [[1,2,3], [1,2,3]]\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).rowSelectionView([0, 0])\n * @param {Array} rowIndices\n * @return {MatrixRowSelectionView}\n */\n rowSelectionView(rowIndices) {\n return new MatrixRowSelectionView(this, rowIndices);\n }\n\n /**\n * Returns a view of the column indices\n * @example\n * // resulting vector is [[2, 2], [5, 5]]\n * var matrix = new Matrix([[1,2,3], [4,5,6]]).columnSelectionView([1, 1])\n * @param {Array} columnIndices\n * @return {MatrixColumnSelectionView}\n */\n columnSelectionView(columnIndices) {\n return new MatrixColumnSelectionView(this, columnIndices);\n }\n\n\n /**\n * Calculates and returns the determinant of a matrix as a Number\n * @example\n * new Matrix([[1,2,3], [4,5,6]]).det()\n * @return {number}\n */\n det() {\n if (this.isSquare()) {\n var a, b, c, d;\n if (this.columns === 2) {\n // 2 x 2 matrix\n a = this.get(0, 0);\n b = this.get(0, 1);\n c = this.get(1, 0);\n d = this.get(1, 1);\n\n return a * d - (b * c);\n } else if (this.columns === 3) {\n // 3 x 3 matrix\n var subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = this.selectionView([1, 2], [1, 2]);\n subMatrix1 = this.selectionView([1, 2], [0, 2]);\n subMatrix2 = this.selectionView([1, 2], [0, 1]);\n a = this.get(0, 0);\n b = this.get(0, 1);\n c = this.get(0, 2);\n\n return a * subMatrix0.det() - b * subMatrix1.det() + c * subMatrix2.det();\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(this).determinant;\n }\n } else {\n throw Error('Determinant can only be calculated for a square matrix.');\n }\n }\n\n /**\n * Returns inverse of a matrix if it exists or the pseudoinverse\n * @param {number} threshold - threshold for taking inverse of singular values (default = 1e-15)\n * @return {Matrix} the (pseudo)inverted matrix.\n */\n pseudoInverse(threshold) {\n if (threshold === undefined) threshold = Number.EPSILON;\n var svdSolution = new SvDecomposition(this, { autoTranspose: true });\n\n var U = svdSolution.leftSingularVectors;\n var V = svdSolution.rightSingularVectors;\n var s = svdSolution.diagonal;\n\n for (var i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n // convert list to diagonal\n s = this.constructor[Symbol.species].diag(s);\n return V.mmul(s.mmul(U.transposeView()));\n }\n\n /**\n * Creates an exact and independent copy of the matrix\n * @return {Matrix}\n */\n clone() {\n var newMatrix = new this.constructor[Symbol.species](this.rows, this.columns);\n for (var row = 0; row < this.rows; row++) {\n for (var column = 0; column < this.columns; column++) {\n newMatrix.set(row, column, this.get(row, column));\n }\n }\n return newMatrix;\n }\n }\n\n Matrix.prototype.klass = 'Matrix';\n\n function compareNumbers(a, b) {\n return a - b;\n }\n\n /*\n Synonyms\n */\n\n Matrix.random = Matrix.rand;\n Matrix.diagonal = Matrix.diag;\n Matrix.prototype.diagonal = Matrix.prototype.diag;\n Matrix.identity = Matrix.eye;\n Matrix.prototype.negate = Matrix.prototype.neg;\n Matrix.prototype.tensorProduct = Matrix.prototype.kroneckerProduct;\n Matrix.prototype.determinant = Matrix.prototype.det;\n\n /*\n Add dynamically instance and static methods for mathematical operations\n */\n\n var inplaceOperator = `\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n`;\n\n var inplaceOperatorScalar = `\n(function %name%S(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% value);\n }\n }\n return this;\n})\n`;\n\n var inplaceOperatorMatrix = `\n(function %name%M(matrix) {\n matrix = this.constructor.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) %op% matrix.get(i, j));\n }\n }\n return this;\n})\n`;\n\n var staticOperator = `\n(function %name%(matrix, value) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%(value);\n})\n`;\n\n var inplaceMethod = `\n(function %name%() {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j)));\n }\n }\n return this;\n})\n`;\n\n var staticMethod = `\n(function %name%(matrix) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%();\n})\n`;\n\n var inplaceMethodWithArgs = `\n(function %name%(%args%) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), %args%));\n }\n }\n return this;\n})\n`;\n\n var staticMethodWithArgs = `\n(function %name%(matrix, %args%) {\n var newMatrix = new this[Symbol.species](matrix);\n return newMatrix.%name%(%args%);\n})\n`;\n\n\n var inplaceMethodWithOneArgScalar = `\n(function %name%S(value) {\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), value));\n }\n }\n return this;\n})\n`;\n var inplaceMethodWithOneArgMatrix = `\n(function %name%M(matrix) {\n matrix = this.constructor.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (var i = 0; i < this.rows; i++) {\n for (var j = 0; j < this.columns; j++) {\n this.set(i, j, %method%(this.get(i, j), matrix.get(i, j)));\n }\n }\n return this;\n})\n`;\n\n var inplaceMethodWithOneArg = `\n(function %name%(value) {\n if (typeof value === 'number') return this.%name%S(value);\n return this.%name%M(value);\n})\n`;\n\n var staticMethodWithOneArg = staticMethodWithArgs;\n\n var operators = [\n // Arithmetic operators\n ['+', 'add'],\n ['-', 'sub', 'subtract'],\n ['*', 'mul', 'multiply'],\n ['/', 'div', 'divide'],\n ['%', 'mod', 'modulus'],\n // Bitwise operators\n ['&', 'and'],\n ['|', 'or'],\n ['^', 'xor'],\n ['<<', 'leftShift'],\n ['>>', 'signPropagatingRightShift'],\n ['>>>', 'rightShift', 'zeroFillRightShift']\n ];\n\n var i;\n var eval2 = eval; // eslint-disable-line no-eval\n for (var operator of operators) {\n var inplaceOp = eval2(fillTemplateFunction(inplaceOperator, { name: operator[1], op: operator[0] }));\n var inplaceOpS = eval2(fillTemplateFunction(inplaceOperatorScalar, { name: `${operator[1]}S`, op: operator[0] }));\n var inplaceOpM = eval2(fillTemplateFunction(inplaceOperatorMatrix, { name: `${operator[1]}M`, op: operator[0] }));\n var staticOp = eval2(fillTemplateFunction(staticOperator, { name: operator[1] }));\n for (i = 1; i < operator.length; i++) {\n Matrix.prototype[operator[i]] = inplaceOp;\n Matrix.prototype[`${operator[i]}S`] = inplaceOpS;\n Matrix.prototype[`${operator[i]}M`] = inplaceOpM;\n Matrix[operator[i]] = staticOp;\n }\n }\n\n var methods = [['~', 'not']];\n\n [\n 'abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'cbrt', 'ceil',\n 'clz32', 'cos', 'cosh', 'exp', 'expm1', 'floor', 'fround', 'log', 'log1p',\n 'log10', 'log2', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc'\n ].forEach(function (mathMethod) {\n methods.push([`Math.${mathMethod}`, mathMethod]);\n });\n\n for (var method of methods) {\n var inplaceMeth = eval2(fillTemplateFunction(inplaceMethod, { name: method[1], method: method[0] }));\n var staticMeth = eval2(fillTemplateFunction(staticMethod, { name: method[1] }));\n for (i = 1; i < method.length; i++) {\n Matrix.prototype[method[i]] = inplaceMeth;\n Matrix[method[i]] = staticMeth;\n }\n }\n\n var methodsWithArgs = [['Math.pow', 1, 'pow']];\n\n for (var methodWithArg of methodsWithArgs) {\n var args = 'arg0';\n for (i = 1; i < methodWithArg[1]; i++) {\n args += `, arg${i}`;\n }\n if (methodWithArg[1] !== 1) {\n var inplaceMethWithArgs = eval2(fillTemplateFunction(inplaceMethodWithArgs, {\n name: methodWithArg[2],\n method: methodWithArg[0],\n args: args\n }));\n var staticMethWithArgs = eval2(fillTemplateFunction(staticMethodWithArgs, { name: methodWithArg[2], args: args }));\n for (i = 2; i < methodWithArg.length; i++) {\n Matrix.prototype[methodWithArg[i]] = inplaceMethWithArgs;\n Matrix[methodWithArg[i]] = staticMethWithArgs;\n }\n } else {\n var tmplVar = {\n name: methodWithArg[2],\n args: args,\n method: methodWithArg[0]\n };\n var inplaceMethod2 = eval2(fillTemplateFunction(inplaceMethodWithOneArg, tmplVar));\n var inplaceMethodS = eval2(fillTemplateFunction(inplaceMethodWithOneArgScalar, tmplVar));\n var inplaceMethodM = eval2(fillTemplateFunction(inplaceMethodWithOneArgMatrix, tmplVar));\n var staticMethod2 = eval2(fillTemplateFunction(staticMethodWithOneArg, tmplVar));\n for (i = 2; i < methodWithArg.length; i++) {\n Matrix.prototype[methodWithArg[i]] = inplaceMethod2;\n Matrix.prototype[`${methodWithArg[i]}M`] = inplaceMethodM;\n Matrix.prototype[`${methodWithArg[i]}S`] = inplaceMethodS;\n Matrix[methodWithArg[i]] = staticMethod2;\n }\n }\n }\n\n function fillTemplateFunction(template, values) {\n for (var value in values) {\n template = template.replace(new RegExp(`%${value}%`, 'g'), values[value]);\n }\n return template;\n }\n\n return Matrix;\n}\n","import AbstractMatrix from './abstractMatrix';\nimport {\n checkColumnIndex,\n checkColumnVector,\n checkRowIndex,\n checkRowVector\n} from './util';\n\nexport default class Matrix extends AbstractMatrix(Array) {\n constructor(nRows, nColumns) {\n var i;\n if (arguments.length === 1 && typeof nRows === 'number') {\n return new Array(nRows);\n }\n if (Matrix.isMatrix(nRows)) {\n return nRows.clone();\n } else if (Number.isInteger(nRows) && nRows > 0) {\n // Create an empty matrix\n super(nRows);\n if (Number.isInteger(nColumns) && nColumns > 0) {\n for (i = 0; i < nRows; i++) {\n this[i] = new Array(nColumns);\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n } else if (Array.isArray(nRows)) {\n // Copy the values from the 2D array\n const matrix = nRows;\n nRows = matrix.length;\n nColumns = matrix[0].length;\n if (typeof nColumns !== 'number' || nColumns === 0) {\n throw new TypeError(\n 'Data must be a 2D array with at least one element'\n );\n }\n super(nRows);\n for (i = 0; i < nRows; i++) {\n if (matrix[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n this[i] = [].concat(matrix[i]);\n }\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array'\n );\n }\n this.rows = nRows;\n this.columns = nColumns;\n return this;\n }\n\n set(rowIndex, columnIndex, value) {\n this[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this[rowIndex][columnIndex];\n }\n\n /**\n * Removes a row from the given index\n * @param {number} index - Row index\n * @return {Matrix} this\n */\n removeRow(index) {\n checkRowIndex(this, index);\n if (this.rows === 1) {\n throw new RangeError('A matrix cannot have less than one row');\n }\n this.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n /**\n * Adds a row at the given index\n * @param {number} [index = this.rows] - Row index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n checkRowIndex(this, index, true);\n array = checkRowVector(this, array, true);\n this.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n /**\n * Removes a column from the given index\n * @param {number} index - Column index\n * @return {Matrix} this\n */\n removeColumn(index) {\n checkColumnIndex(this, index);\n if (this.columns === 1) {\n throw new RangeError('A matrix cannot have less than one column');\n }\n for (var i = 0; i < this.rows; i++) {\n this[i].splice(index, 1);\n }\n this.columns -= 1;\n return this;\n }\n\n /**\n * Adds a column at the given index\n * @param {number} [index = this.columns] - Column index\n * @param {Array|Matrix} array - Array or vector\n * @return {Matrix} this\n */\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n checkColumnIndex(this, index, true);\n array = checkColumnVector(this, array);\n for (var i = 0; i < this.rows; i++) {\n this[i].splice(index, 0, array[i]);\n }\n this.columns += 1;\n return this;\n }\n}\n","import AbstractMatrix from '../abstractMatrix';\nimport Matrix from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix() {\n /**\n * @class WrapperMatrix2D\n * @param {Array>} data\n */\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n static get [Symbol.species]() {\n return Matrix;\n }\n}\n","import { Matrix, WrapperMatrix2D } from '../index';\n\nimport { hypotenuse } from './util';\n\n/**\n * @class QrDecomposition\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/QrDecomposition.cs\n * @param {Matrix} value\n */\nexport default class QrDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n var qr = value.clone();\n var m = value.rows;\n var n = value.columns;\n var rdiag = new Array(n);\n var i, j, k, s;\n\n for (k = 0; k < n; k++) {\n var nrm = 0;\n for (i = k; i < m; i++) {\n nrm = hypotenuse(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n /**\n * Solve a problem of least square (Ax=b) by using the QR decomposition. Useful when A is rectangular, but not working when A is singular.\n * Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use :\n * var qr = QrDecomposition(A);\n * var x = qr.solve(b);\n * @param {Matrix} value - Matrix 1D which is the vector b (in the equation Ax = b)\n * @return {Matrix} - The vector x\n */\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n var qr = this.QR;\n var m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n var count = value.columns;\n var X = value.clone();\n var n = qr.columns;\n var i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr[i][k] * X[i][j];\n }\n s = -s / qr[k][k];\n for (i = k; i < m; i++) {\n X[i][j] += s * qr[i][k];\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X[k][j] /= this.Rdiag[k];\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X[i][j] -= X[k][j] * qr[i][k];\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n /**\n *\n * @return {boolean}\n */\n isFullRank() {\n var columns = this.QR.columns;\n for (var i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get upperTriangularMatrix() {\n var qr = this.QR;\n var n = qr.columns;\n var X = new Matrix(n, n);\n var i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X[i][j] = qr[i][j];\n } else if (i === j) {\n X[i][j] = this.Rdiag[i];\n } else {\n X[i][j] = 0;\n }\n }\n }\n return X;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get orthogonalMatrix() {\n var qr = this.QR;\n var rows = qr.rows;\n var columns = qr.columns;\n var X = new Matrix(rows, columns);\n var i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X[i][k] = 0;\n }\n X[k][k] = 1;\n for (j = k; j < columns; j++) {\n if (qr[k][k] !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr[i][k] * X[i][j];\n }\n\n s = -s / qr[k][k];\n\n for (i = k; i < rows; i++) {\n X[i][j] += s * qr[i][k];\n }\n }\n }\n }\n return X;\n }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\n\nimport { Matrix, WrapperMatrix2D } from './index';\n\n/**\n * Computes the inverse of a Matrix\n * @param {Matrix} matrix\n * @param {boolean} [useSVD=false]\n * @return {Matrix}\n */\nexport function inverse(matrix, useSVD = false) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (useSVD) {\n return new SingularValueDecomposition(matrix).inverse();\n } else {\n return solve(matrix, Matrix.eye(matrix.rows));\n }\n}\n\n/**\n *\n * @param {Matrix} leftHandSide\n * @param {Matrix} rightHandSide\n * @param {boolean} [useSVD = false]\n * @return {Matrix}\n */\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n if (useSVD) {\n return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n : new QrDecomposition(leftHandSide).solve(rightHandSide);\n }\n}\n","import { Matrix, WrapperMatrix2D } from '../index';\n\nimport { hypotenuse, getFilled2DArray } from './util';\n\n/**\n * @class EigenvalueDecomposition\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/EigenvalueDecomposition.cs\n * @param {Matrix} matrix\n * @param {object} [options]\n * @param {boolean} [options.assumeSymmetric=false]\n */\nexport default class EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n var n = matrix.columns;\n var V = getFilled2DArray(n, n, 0);\n var d = new Array(n);\n var e = new Array(n);\n var value = matrix;\n var i, j;\n\n var isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V[i][j] = value.get(i, j);\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n } else {\n var H = getFilled2DArray(n, n, 0);\n var ort = new Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H[i][j] = value.get(i, j);\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n /**\n *\n * @return {Array}\n */\n get realEigenvalues() {\n return this.d;\n }\n\n /**\n *\n * @return {Array}\n */\n get imaginaryEigenvalues() {\n return this.e;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get eigenvectorMatrix() {\n if (!Matrix.isMatrix(this.V)) {\n this.V = new Matrix(this.V);\n }\n return this.V;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get diagonalMatrix() {\n var n = this.n;\n var e = this.e;\n var d = this.d;\n var X = new Matrix(n, n);\n var i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X[i][j] = 0;\n }\n X[i][i] = d[i];\n if (e[i] > 0) {\n X[i][i + 1] = e[i];\n } else if (e[i] < 0) {\n X[i][i - 1] = e[i];\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n var f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V[n - 1][j];\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V[i - 1][j];\n V[i][j] = 0;\n V[j][i] = 0;\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V[j][i] = f;\n g = e[j] + V[j][j] * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V[k][j] * d[k];\n e[k] += V[k][j] * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V[k][j] -= f * e[k] + g * d[k];\n }\n d[j] = V[i - 1][j];\n V[i][j] = 0;\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V[n - 1][i] = V[i][i];\n V[i][i] = 1;\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V[k][i + 1] / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V[k][i + 1] * V[k][j];\n }\n for (k = 0; k <= i; k++) {\n V[k][j] -= g * d[k];\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V[k][i + 1] = 0;\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V[n - 1][j];\n V[n - 1][j] = 0;\n }\n\n V[n - 1][n - 1] = 1;\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n var g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2, iter;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n var f = 0;\n var tst1 = 0;\n var eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n iter = 0;\n do {\n iter = iter + 1;\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = hypotenuse(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = hypotenuse(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V[k][i + 1];\n V[k][i + 1] = s * V[k][i] + c * h;\n V[k][i] = c * V[k][i] - s * h;\n }\n }\n\n p = -s * s2 * c3 * el1 * e[l] / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V[j][i];\n V[j][i] = V[j][k];\n V[j][k] = p;\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n var low = 0;\n var high = n - 1;\n var f, g, h, i, j, m;\n var scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H[i][m - 1]);\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H[i][m - 1] / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H[i][j];\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H[i][j] -= f * ort[i];\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H[i][j];\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H[i][j] -= f * ort[j];\n }\n }\n\n ort[m] = scale * ort[m];\n H[m][m - 1] = scale * g;\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V[i][j] = i === j ? 1 : 0;\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H[m][m - 1] !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H[i][m - 1];\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V[i][j];\n }\n\n g = g / ort[m] / H[m][m - 1];\n for (i = m; i <= high; i++) {\n V[i][j] += g * ort[i];\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n var n = nn - 1;\n var low = 0;\n var high = nn - 1;\n var eps = Number.EPSILON;\n var exshift = 0;\n var norm = 0;\n var p = 0;\n var q = 0;\n var r = 0;\n var s = 0;\n var z = 0;\n var iter = 0;\n var i, j, k, l, m, t, w, x, y;\n var ra, sa, vr, vi;\n var notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H[i][i];\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H[i][j]);\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H[l - 1][l - 1]) + Math.abs(H[l][l]);\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H[l][l - 1]) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H[n][n] = H[n][n] + exshift;\n d[n] = H[n][n];\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H[n][n - 1] * H[n - 1][n];\n p = (H[n - 1][n - 1] - H[n][n]) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H[n][n] = H[n][n] + exshift;\n H[n - 1][n - 1] = H[n - 1][n - 1] + exshift;\n x = H[n][n];\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H[n][n - 1];\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H[n - 1][j];\n H[n - 1][j] = q * z + p * H[n][j];\n H[n][j] = q * H[n][j] - p * z;\n }\n\n for (i = 0; i <= n; i++) {\n z = H[i][n - 1];\n H[i][n - 1] = q * z + p * H[i][n];\n H[i][n] = q * H[i][n] - p * z;\n }\n\n for (i = low; i <= high; i++) {\n z = V[i][n - 1];\n V[i][n - 1] = q * z + p * V[i][n];\n V[i][n] = q * V[i][n] - p * z;\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H[n][n];\n y = 0;\n w = 0;\n if (l < n) {\n y = H[n - 1][n - 1];\n w = H[n][n - 1] * H[n - 1][n];\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H[i][i] -= x;\n }\n s = Math.abs(H[n][n - 1]) + Math.abs(H[n - 1][n - 2]);\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H[i][i] -= s;\n }\n exshift += s;\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H[m][m];\n r = x - z;\n s = y - z;\n p = (r * s - w) / H[m + 1][m] + H[m][m + 1];\n q = H[m + 1][m + 1] - z - r - s;\n r = H[m + 2][m + 1];\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H[m][m - 1]) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H[m - 1][m - 1]) +\n Math.abs(z) +\n Math.abs(H[m + 1][m + 1])))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H[i][i - 2] = 0;\n if (i > m + 2) {\n H[i][i - 3] = 0;\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H[k][k - 1];\n q = H[k + 1][k - 1];\n r = notlast ? H[k + 2][k - 1] : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H[k][k - 1] = -s * x;\n } else if (l !== m) {\n H[k][k - 1] = -H[k][k - 1];\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H[k][j] + q * H[k + 1][j];\n if (notlast) {\n p = p + r * H[k + 2][j];\n H[k + 2][j] = H[k + 2][j] - p * z;\n }\n\n H[k][j] = H[k][j] - p * x;\n H[k + 1][j] = H[k + 1][j] - p * y;\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H[i][k] + y * H[i][k + 1];\n if (notlast) {\n p = p + z * H[i][k + 2];\n H[i][k + 2] = H[i][k + 2] - p * r;\n }\n\n H[i][k] = H[i][k] - p;\n H[i][k + 1] = H[i][k + 1] - p * q;\n }\n\n for (i = low; i <= high; i++) {\n p = x * V[i][k] + y * V[i][k + 1];\n if (notlast) {\n p = p + z * V[i][k + 2];\n V[i][k + 2] = V[i][k + 2] - p * r;\n }\n\n V[i][k] = V[i][k] - p;\n V[i][k + 1] = V[i][k + 1] - p * q;\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H[n][n] = 1;\n for (i = n - 1; i >= 0; i--) {\n w = H[i][i] - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H[i][j] * H[j][n];\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H[i][n] = w !== 0 ? -r / w : -r / (eps * norm);\n } else {\n x = H[i][i + 1];\n y = H[i + 1][i];\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H[i][n] = t;\n H[i + 1][n] =\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z;\n }\n\n t = Math.abs(H[i][n]);\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H[j][n] = H[j][n] / t;\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H[n][n - 1]) > Math.abs(H[n - 1][n])) {\n H[n - 1][n - 1] = q / H[n][n - 1];\n H[n - 1][n] = -(H[n][n] - p) / H[n][n - 1];\n } else {\n cdivres = cdiv(0, -H[n - 1][n], H[n - 1][n - 1] - p, q);\n H[n - 1][n - 1] = cdivres[0];\n H[n - 1][n] = cdivres[1];\n }\n\n H[n][n - 1] = 0;\n H[n][n] = 1;\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H[i][j] * H[j][n - 1];\n sa = sa + H[i][j] * H[j][n];\n }\n\n w = H[i][i] - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H[i][n - 1] = cdivres[0];\n H[i][n] = cdivres[1];\n } else {\n x = H[i][i + 1];\n y = H[i + 1][i];\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi\n );\n H[i][n - 1] = cdivres[0];\n H[i][n] = cdivres[1];\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H[i + 1][n - 1] = (-ra - w * H[i][n - 1] + q * H[i][n]) / x;\n H[i + 1][n] = (-sa - w * H[i][n] - q * H[i][n - 1]) / x;\n } else {\n cdivres = cdiv(-r - y * H[i][n - 1], -s - y * H[i][n], z, q);\n H[i + 1][n - 1] = cdivres[0];\n H[i + 1][n] = cdivres[1];\n }\n }\n\n t = Math.max(Math.abs(H[i][n - 1]), Math.abs(H[i][n]));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H[j][n - 1] = H[j][n - 1] / t;\n H[j][n] = H[j][n] / t;\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V[i][j] = H[i][j];\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V[i][k] * H[k][j];\n }\n V[i][j] = z;\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n var r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n","import { Matrix, WrapperMatrix2D } from '../index';\n\n/**\n * @class CholeskyDecomposition\n * @link https://github.com/lutzroeder/Mapack/blob/master/Source/CholeskyDecomposition.cs\n * @param {Matrix} value\n */\nexport default class CholeskyDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n var a = value;\n var dimension = a.rows;\n var l = new Matrix(dimension, dimension);\n var positiveDefinite = true;\n var i, j, k;\n\n for (j = 0; j < dimension; j++) {\n var Lrowj = l[j];\n var d = 0;\n for (k = 0; k < j; k++) {\n var Lrowk = l[k];\n var s = 0;\n for (i = 0; i < k; i++) {\n s += Lrowk[i] * Lrowj[i];\n }\n Lrowj[k] = s = (a.get(j, k) - s) / l[k][k];\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &= d > 0;\n l[j][j] = Math.sqrt(Math.max(d, 0));\n for (k = j + 1; k < dimension; k++) {\n l[j][k] = 0;\n }\n }\n\n if (!positiveDefinite) {\n throw new Error('Matrix is not positive definite');\n }\n\n this.L = l;\n }\n\n /**\n *\n * @param {Matrix} value\n * @return {Matrix}\n */\n solve(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n var l = this.L;\n var dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n\n var count = value.columns;\n var B = value.clone();\n var i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B[k][j] -= B[i][j] * l[k][i];\n }\n B[k][j] /= l[k][k];\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B[k][j] -= B[i][j] * l[i][k];\n }\n B[k][j] /= l[k][k];\n }\n }\n\n return B;\n }\n\n /**\n *\n * @return {Matrix}\n */\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n","import * as m from 'ml-matrix';\nimport random from 'random';\n\nexport class Gaussian {\n constructor(mean, cov) {\n // TODO: Consider saving the dimension\n if ((mean instanceof m.Matrix) && (cov instanceof m.Matrix)) {\n this.mean = mean;\n this.cov = cov;\n } else {\n this.mean = new m.Matrix([mean]).transpose();\n this.cov = new m.Matrix(cov);\n }\n }\n\n at(x) {\n const diff = (new m.Matrix([x])).transpose().sub(this.mean);\n const n = diff.transpose().mmul(m.inverse(this.cov)).mmul(diff).mul(-0.5).exp();\n const d = Math.sqrt(Math.pow(2*Math.PI, this.mean.rows)*this.cov.det());\n return (n * (1 / d));\n }\n\n // idx is the first row of b\n marginalize(idx) {\n // FIXME: Rewrite with Array.slice() for speed\n const aMean = sliceMat(this.mean,0,0,idx,1);\n const bMean = sliceMat(this.mean,idx,0,this.mean.rows,1);\n const aCov = sliceMat(this.cov,0,0,idx,idx);\n const bCov = sliceMat(this.cov,idx,idx,this.mean.rows,this.mean.rows);\n return [new Gaussian(aMean, aCov), new Gaussian(bMean, bCov)];\n }\n\n // Also refer to: https://stats.stackexchange.com/questions/232959/simulating-the-posterior-of-a-gaussian-process\n // FIXME: Currently only works with \\mu_e = 0\n condition(X) {\n const idx = X.length;\n const x0 = new m.Matrix([X]).transpose();\n const Exx = sliceMat(this.cov,0,0,idx,idx);\n const Exy = sliceMat(this.cov,0,idx,idx,this.mean.rows);\n const Eyx = Exy.transpose();\n const Eyy = sliceMat(this.cov,idx,idx,this.mean.rows,this.mean.rows);\n\n // Compute new zero\n const Lxx = new m.CholeskyDecomposition(Exx).lowerTriangularMatrix;\n const mLy = m.solve(Lxx, x0);\n const Lk = m.solve(Lxx, Exy);\n const condMean = Lk.transpose().mmul(mLy); // Hack\n\n // FIXME: Make this more performant (use cholesky and slove instead of inverse)\n const condCov = Eyy.sub(Eyx.mmul(m.inverse(Exx)).mmul(Exy));\n return new Gaussian(condMean, condCov);\n }\n\n // Uses Eigenvalue decomposition to compute t from Cov = tt^T\n transformationMatrix() {\n const e = new m.EigenvalueDecomposition(this.cov);\n const r = e.eigenvectorMatrix;\n const d = m.Matrix.zeros(r.rows, r.columns);\n for(let i = 0; i < d.rows; ++i) {\n d.set(i,i, Math.sqrt(e.realEigenvalues[i]));\n }\n return r.mmul(d);\n }\n\n sample() {\n const z = m.Matrix.zeros(this.mean.rows, 1);\n const normal = random.normal();\n for(let i = 0; i < this.mean.rows; ++i)\n z.set(i,0,normal());\n\n const samples = m.Matrix.add(this.mean, this.transformationMatrix().mmul(z));\n return samples;\n }\n\n getMean() {\n return this.mean.transpose()[0];\n }\n\n getSd() {\n return this.cov.diag().map(s2 => Math.sqrt(s2));\n }\n}\n\n// ranges from [i1,i2) & [j1,j2)\nfunction sliceMat(mat,i1,j1,i2,j2) {\n const result = new m.Matrix(i2-i1,j2-j1);\n for(let i = i1; i < i2; ++i) \n for(let j = j1; j < j2; ++j) {\n result.set(i-i1, j-j1, mat.get(i,j)); \n }\n return result;\n}\n","import * as gauss from '../gaussian';\nimport * as m from 'ml-matrix';\n\nexport function rbf(sigma = 1, l = 1) {\n const ss2 = 2 * l * l;\n return (x1, x2) => {\n const sqdist = Math.pow(x1-x2,2);\n return sigma * sigma * Math.exp(-sqdist / ss2);\n };\n}\n\nexport function periodic(sigma = 1, l = 1.4, p = 2) {\n const l2 = l * l;\n return (x1, x2) => {\n const dist = Math.abs(x1-x2,2);\n const sin2 = Math.pow(Math.sin((Math.PI * dist/ p)),2);\n return sigma*sigma*Math.exp(-(2*sin2)/l2);\n };\n}\n\nexport function linear(sigma = 1, sigmaB = 0, c = 0) {\n return (x1, x2) => {\n return sigmaB + sigma * sigma * (x1 - c) * (x2 - c);\n };\n}\n\nexport function combineKernelsMultiplication(kernels) {\n return (x1, x2) => {\n const results = kernels.map(k => k.apply(null, [x1, x2]));\n return results.reduce((acc, x) => acc * x, 1);\n };\n}\n\nexport function combineKernelsAddition(kernels) {\n return (x1, x2) => {\n const results = kernels.map(k => k.apply(null, [x1, x2]));\n return results.reduce((acc, x) => acc + x, 1);\n };\n}\n\n\nexport function covMatrix(v, kernel) {\n const dim = v.length;\n const kernelMatrix = new m.Matrix(dim, dim);\n for(let i = 0; i < dim; ++i) {\n for(let j = i; j < dim; ++j) {\n kernelMatrix[i][j] = kernelMatrix[j][i] = kernel(v[i], v[j]); \n }\n }\n return kernelMatrix;\n}\n\n// xtrain and ytrain can be omitted to obtain the prior distribution\nexport function gaussianProcess(kernel, xtest, xtrain, ytrain) {\n if(xtrain == undefined && ytrain == undefined) xtrain = [];\n const xs = xtrain.concat(xtest);\n const cov = covMatrix(xs, kernel);\n const eps = m.Matrix.eye(xs.length).mul(1e-6);\n cov.add(eps);\n const mean = m.Matrix.zeros(xs.length, 1); // TODO: Currently assumes zero mean\n const gp = new gauss.Gaussian(mean, cov);\n return (xs.length == xtest.length ? gp : gp.condition(ytrain));\n}\n","\n \n y = 0\n \n \n \n {#each trainingPoints as pt, idx}\n {#if pt.active}\n \n {/if}\n \n {/each}\n \n \n Regression is used to find a function (line)\n that represents a set of data points as closely\n as possible\n \n \n A Gaussian process is a probabilistic\n method that gives a confidence\n (shaded) for the predicted function\n \n {#if firstClick}\n \n (click to enable)\n \n {/if}\n\n\n\n\n\n","export function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\n\n","{#each radii as r, idx}\n\n{/each}\n\n\n","\n \n \n \n \n \n \n \n\n\n\n\n\n","\n \n \n {sigma1}\n \n \n \n {corr}\n \n \n \n {corr}\n \n \n \n {sigma2}\n \n\n\n\n\n\n","\n \n \n {#each colorValues as v}\n \n {/each}\n \n \n \n \n \n \n\n\n\n","
\n
\n \n \n \n
\n
\n \n \n \n \n Covariance matrix (Σ)\n \n \n \n \n By dragging the handles you \n can adjust the variance along\n each dimension, as well as the\n correlation between the two\n random variables. Violet\n values show a high probability\n inside the distribution.\n \n \n
\n
\n\n\n\n\n","
\n
\n \n \n x1\n x2\n \n \n \n \n \n
\n
\n \n μ\n x1\n x2\n \n \n \n \n \n \n \n \n
\n
\n\n\n\n\n","
\n
\n

Marginalization (Y)

\n
\n
\n
\n
\n

Conditioning (X = {twoDecimals(cond)})

\n
\n
\n \n \n μY = {twoDecimals(marginalizedGauss.mean.get(0,0))}\n σY = {twoDecimals(marginalizedGauss.cov.get(0,0))}\n \n
\n
\n \n \n \n \n X = {twoDecimals(cond)}\n \n \n
\n
\n \n \n μY|X = {twoDecimals(conditionedGauss.mean.get(0,0))}\n σY|X = {twoDecimals(marginalizedGauss.cov.get(0,0))}\n \n
\n
\n\n\n\n\n","
\n
\n \n
\n{#if slider}\n
\n{#each params as p}\n

=

\n \n{/each}\n
\n{/if}\n
\n\n\n\n","
\n{#each kernels as k}\n
\n

{k.name}

\n
{k.equation}
\n
\n \n
\n
\n{/each}\n
\n
\n
\n
\n\n \n For the\n {currentSelectedKernel}\n kernel\n \n the parameter\n {currentSelectedParameter.name}\n determines\n \n {currentSelectedParameter.description}\n \n\n\n\n\n\n","\n \n \n {#each xs as x}\n {#if x == 5}\n f(x) = ?\n \n {/if}\n \n {/each}\n \n We are interested in predicting the\n function values for 10 different\n x values from [,] without\n knowing about training points.\n \n \n\n \n Covariance matrix\n \n \n \n \n = k(,)\n 10x10\n \n \n {#each xs as x}\n \n \n {/each}\n \n \n \n The covariance matrix is\n created by pairwise evaluation\n of the kernel function resulting\n in a 10-dimensional distribution.\n \n \n\n \n \n {#each xs as x}\n \n \n \n {/each}\n \n Sampling from this distribution\n results in a 10-dimensional vector\n where each entry represents\n one function value.\n \n \n\n\n\n\n\n","\n \n \n {#each xs as x}\n {#if x == 4}\n f(x) = ?\n \n {/if}\n \n {/each}\n\n \n \n \n\n \n \n \n\n \n Adding training points () changes\n the number of dimensions of the\n multivariate Guassian distribution.\n \n \n\n \n Covariance matrix\n \n \n \n \n = k(,)\n \n 12x12\n \n {#each xst as x}\n {#if x < 2}\n \n \n {:else}\n \n \n {/if}\n {/each}\n \n \n \n The covariance matrix is\n created by pairwise evaluation\n of the kernel function resulting\n in a 12-dimensional distribution.\n \n \n\n \n Covariance matrix\n \n conditioning\n \n 10x10\n \n {#each xs as x}\n \n \n {/each}\n \n \n Through conditioning we obtain\n the distribution that describes\n the prediction of the function\n values for the given x values.\n \n \n\n\n\n\n\n","
\n \n \n \n \n \n \n
\n
\n
\n \n \n {#each shadowPaths as sp}\n \n {/each}\n \n y = 0\n μ + 2σ\n μ - 2σ\n {#if active}\n (click to pause)\n {:else}\n (click to start)\n {/if}\n \n
\n
\n \n
\n
\n\n\n\n\n","
\n
\n
\n \n \n \n \n \n {#each trainingPoints as pt, idx}\n {#if pt.active}\n \n {/if}\n \n {/each}\n \n y = 0\n \n \n \n \n μ + 2σ\n \n μ - 2σ\n \n (click to resample)\n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n\n
\n Without any activated training data ,\n this figure shows the prior distribution of a Gaussian process with a RBF kernel.\n When hovering over the covariance matrix, the opacity of the gradient shows the influence of a function\n value on its neighbours.\n The distribution changes when we observe training data.\n Individual points can be activated by clicking on them.\n The Gaussian process is then constrained to make functions, that intersect these data points, more probable.\n The best explanation of the training data is given by the updated mean function.\n
\n\n\n\n\n\n","\n \n y = 0\n \n \n \n \n \n \n \n\n\n\n\n\n\n","
\n {#each kernels as k,i}\n
\n \n \n
\n {/each}\n
\n\n\n\n\n\n","
{#each kernels as k}\n \n {/each}\n
\n
\n
\n \n \n \n \n {#each trainingPoints as pt, idx}\n {#if pt.active}\n \n {/if}\n \n {/each}\n \n y = 0\n \n \n \n \n \n \n p.active).length > 0 ? 'visible' : 'hidden'}\"\n on:mouseover=\"setFirstClick(false)\">\n \n \n \n \n {#if firstClick}\n (hover for information)\n {/if}\n \n \n \n {#each currentParams as pList}\n \n {pList.name}:\n {#each pList.params as p,i}\n \n {p.name} = {p.value +', '}\n \n {/each}\n \n {/each}\n \n \n \n \n \n
\n
\n \n
\n
\n\n\n\n\n\n","import Teaser from './components/Teaser.html';\nconst TeaserComponent = new Teaser({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#Teaser')\n});\n\nimport Multivariate from './components/Multivariate.html';\nconst MultivariateComponent = new Multivariate({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#Multivariate')\n});\n\nimport DimensionSwap from './components/DimensionSwapFigure.html';\nconst DimensionSwapComponent = new DimensionSwap({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#DimensionSwap')\n});\n\nimport MarginalizationConditioning from './components/MarginalizationConditioning.html';\nconst MarginalizationConditioningComponent = new MarginalizationConditioning({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#MarginalizationConditioning')\n});\n\nimport MultipleKernels from './components/MultipleKernels.html';\nconst MultipleKernelsComponent = new MultipleKernels({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#MultipleKernels')\n});\n\nimport PriorFigure from './components/PriorFigure.html';\nconst PriorFigureComponent = new PriorFigure({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#PriorFigure')\n});\n\nimport PosteriorFigure from './components/PosteriorFigure.html';\nconst PosteriorFigureComponent = new PosteriorFigure({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#PosteriorFigure')\n});\n\nimport PriorSampling from './components/PriorSampling.html';\nconst PriorSamplingComponent = new PriorSampling({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#Prior')\n});\n\nimport Posterior from './components/Posterior.html';\nconst PosteriorComponent = new Posterior({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#Posterior')\n});\n\nimport KernelCombinationsStatic from './components/KernelCombinationsStatic.html';\nconst KernelCombinationsStaticComponent = new KernelCombinationsStatic({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#KernelCombinationsStatic')\n});\n\nimport KernelCombinations from './components/KernelCombinations.html';\nconst KernelCombinationsComponent = new KernelCombinations({ // eslint-disable-line no-unused-vars\n target: document.querySelector('#KernelCombinations')\n});\n\n"],"sourceRoot":""} \ No newline at end of file