changeset 0:e9212adafd7a draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc commit d5065f0bdf2d38c2344d96d68537223c1096daab
author iuc
date Thu, 15 May 2025 12:55:13 +0000
parents
children
files maplot.py maplot.xml test-data/ma_plot_testdata_4.csv test-data/output_matplotlib.pdf test-data/output_plotly.pdf
diffstat 5 files changed, 1324 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/maplot.py	Thu May 15 12:55:13 2025 +0000
@@ -0,0 +1,515 @@
+import argparse
+from typing import Dict, List, Tuple
+
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+import plotly.graph_objects as go
+import plotly.io as pio
+import plotly.subplots as sp
+import statsmodels.api as sm  # to build a LOWESS model
+from scipy.stats import gaussian_kde
+
+
+# subplot titles
+def make_subplot_titles(sample_names: List[str]) -> List[str]:
+    """Generates subplot titles for the MA plot.
+
+    Args:
+        sample_names (list): List of sample names.
+
+    Returns:
+        list: List of subplot titles.
+    """
+    subplot_titles = []
+    num_samples = len(sample_names)
+    for i in range(num_samples):
+        for j in range(num_samples):
+            if i == j:
+                subplot_titles.append(f"{sample_names[i]}")
+            else:
+                subplot_titles.append(f"{sample_names[i]} vs. {sample_names[j]}")
+    return subplot_titles
+
+
+def densities(x: np.ndarray, y: np.ndarray) -> np.ndarray:
+    """Calculates the density of points for a scatter plot.
+
+    Args:
+        x (array-like): X-axis values.
+        y (array-like): Y-axis values.
+
+    Returns:
+        array: Density values for the points.
+    """
+    values = np.vstack([x, y])
+    return gaussian_kde(values)(values)
+
+
+def movingaverage(data: np.ndarray, window_width: int) -> np.ndarray:
+    """Calculates the moving average of the data.
+
+    Args:
+        data (array-like): Input data.
+        window_width (int): Width of the moving window.
+
+    Returns:
+        array: Moving average values.
+    """
+    cumsum_vec = np.cumsum(np.insert(data, 0, 0))
+    ma_vec = (cumsum_vec[window_width:] - cumsum_vec[:-window_width]) / window_width
+    return ma_vec
+
+
+def update_max(current: float, values: np.ndarray) -> float:
+    """Updates the maximum value.
+
+    Args:
+        current (float): Current maximum value.
+        values (array-like): Array of values to compare.
+
+    Returns:
+        float: Updated maximum value.
+    """
+    return max(current, np.max(values))
+
+
+def get_indices(
+    num_samples: int, num_cols: int, plot_num: int
+) -> Tuple[int, int, int, int]:
+    """Calculates the indices for subplot placement.
+
+    Args:
+        num_samples (int): Number of samples.
+        num_cols (int): Number of columns in the subplot grid.
+        plot_num (int): Plot number.
+
+    Returns:
+        tuple: Indices for subplot placement (i, j, col, row).
+    """
+    i = plot_num // num_samples
+    j = plot_num % num_samples
+    col = plot_num % num_cols + 1
+    row = plot_num // num_cols + 1
+    return i, j, col, row
+
+
+def create_subplot_data(
+    frac: float,
+    it: int,
+    num_bins: int,
+    window_width: int,
+    samples: pd.DataFrame,
+    i: int,
+    j: int,
+) -> Dict:
+    """Creates data for a single subplot.
+
+    Args:
+        frac (float): LOESS smoothing parameter.
+        it (int): Number of iterations for LOESS smoothing.
+        num_bins (int): Number of bins for histogram.
+        window_width (int): Window width for moving average.
+        samples (DataFrame): DataFrame containing sample data.
+        i (int): Index of the first sample.
+        j (int): Index of the second sample.
+
+    Returns:
+        dict: Data for the subplot.
+    """
+    subplot_data = {}
+    subplot_data["mean"] = np.log(samples.iloc[:, [i, j]].mean(axis=1))
+    if i == j:
+        counts, bins = np.histogram(subplot_data["mean"], bins=num_bins)
+        subplot_data["bins"] = bins
+        subplot_data["counts"] = counts
+        subplot_data["counts_smoothed"] = movingaverage(counts, window_width)
+        subplot_data["max_counts"] = np.max(counts)
+    else:
+        subplot_data["log_fold_change"] = np.log2(
+            samples.iloc[:, i] / samples.iloc[:, j]
+        )
+        subplot_data["max_log_fold_change"] = np.max(subplot_data["log_fold_change"])
+        subplot_data["densities"] = densities(
+            subplot_data["mean"], subplot_data["log_fold_change"]
+        )
+        subplot_data["regression"] = sm.nonparametric.lowess(
+            subplot_data["log_fold_change"], subplot_data["mean"], frac=frac, it=it
+        )
+    return subplot_data
+
+
+def create_plot_data(
+    frac: float,
+    it: int,
+    num_bins: int,
+    window_width: int,
+    samples: pd.DataFrame,
+    num_samples: int,
+    num_plots: int,
+    num_cols: int,
+) -> List[Dict]:
+    """Creates data for all subplots.
+
+    Args:
+        frac (float): LOESS smoothing parameter.
+        it (int): Number of iterations for LOESS smoothing.
+        num_bins (int): Number of bins for histogram.
+        window_width (int): Window width for moving average.
+        samples (DataFrame): DataFrame containing sample data.
+        num_samples (int): Number of samples.
+        num_plots (int): Number of plots.
+        num_cols (int): Number of columns in the subplot grid.
+
+    Returns:
+        list: List of data for each subplot.
+    """
+    plots_data = []
+    for plot_num in range(num_plots):
+        i, j, _, _ = get_indices(num_samples, num_cols, plot_num)
+        subplot_data = create_subplot_data(
+            frac, it, num_bins, window_width, samples, i, j
+        )
+        plots_data.append(subplot_data)
+    return plots_data
+
+
+def ma_plots_plotly(
+    num_rows: int,
+    num_cols: int,
+    num_plots: int,
+    plots_data: List[Dict],
+    sample_names: List[str],
+    size: int,
+    ylim_hist: float,
+    ylim_ma: float,
+    features: np.ndarray,
+) -> go.Figure:
+    """Generates MA plots using Plotly.
+
+    Args:
+        num_rows (int): Number of rows in the subplot grid.
+        num_cols (int): Number of columns in the subplot grid.
+        num_plots (int): Number of plots.
+        plots_data (list): List of data for each subplot.
+        sample_names (list): List of sample names.
+        size (int): Size of the plot.
+        ylim_hist (float): Y-axis limit for histograms.
+        ylim_ma (float): Y-axis limit for MA plots.
+        features (array-like): Feature names.
+
+    Returns:
+        Figure: Plotly figure object.
+    """
+    fig = sp.make_subplots(
+        rows=num_rows,
+        cols=num_cols,
+        shared_xaxes="all",
+        subplot_titles=make_subplot_titles(sample_names),
+    )
+
+    for plot_num in range(num_plots):
+        i, j, col, row = get_indices(len(sample_names), num_cols, plot_num)
+        subplot_data = plots_data[plot_num]
+
+        mean = subplot_data["mean"]
+
+        if i == j:
+            # Plot histogram on the diagonal
+            hist_bar = go.Bar(
+                x=subplot_data["bins"],
+                y=subplot_data["counts"],
+            )
+            fig.add_trace(hist_bar, row=row, col=col)
+
+            hist_line = go.Scatter(
+                x=subplot_data["bins"],
+                y=subplot_data["counts_smoothed"],
+                marker=dict(
+                    color="red",
+                ),
+            )
+            fig.add_trace(hist_line, row=row, col=col)
+            fig.update_yaxes(
+                title_text="Counts",
+                range=[0, ylim_hist],
+                matches="y1",
+                showticklabels=True,
+                row=row,
+                col=col,
+            )
+        else:
+            log_fold_change = subplot_data["log_fold_change"]
+            scatter = go.Scatter(
+                x=mean,
+                y=log_fold_change,
+                mode="markers",
+                marker=dict(
+                    color=subplot_data["densities"], symbol="circle", colorscale="jet"
+                ),
+                name=f"{sample_names[i]} vs {sample_names[j]}",
+                text=features,
+                hovertemplate="<b>%{text}</b><br>Log Mean: %{x}<br>Log2 Fold Change: %{y}<extra></extra>",
+            )
+            fig.add_trace(scatter, row=row, col=col)
+
+            regression = subplot_data["regression"]
+            line = go.Scatter(
+                x=regression[:, 0],
+                y=regression[:, 1],
+                mode="lines",
+                line=dict(color="red"),
+                name=f"LOWESS {sample_names[i]} vs. {sample_names[j]}",
+            )
+            fig.add_trace(line, row=row, col=col)
+
+            fig.update_yaxes(
+                title_text="Log2 Fold Change",
+                range=[-ylim_ma, ylim_ma],
+                matches="y2",
+                showticklabels=True,
+                row=row,
+                col=col,
+            )
+        fig.update_xaxes(
+            title_text="Log Mean Intensity", showticklabels=True, row=row, col=col
+        )
+
+    # Update layout for the entire figure
+    fig.update_layout(
+        height=size * num_rows,
+        width=size * num_cols,
+        showlegend=False,
+        template="simple_white",  # Apply the 'plotly_white' template
+    )
+    return fig
+
+
+def ma_plots_matplotlib(
+    num_rows: int,
+    num_cols: int,
+    num_plots: int,
+    pots_data: List[Dict],
+    sample_names: List[str],
+    size: int,
+    ylim_hist: float,
+    ylim_ma: float,
+    window_width: int,
+) -> plt.Figure:
+    """Generates MA plots using Matplotlib.
+
+    Args:
+        num_rows (int): Number of rows in the subplot grid.
+        num_cols (int): Number of columns in the subplot grid.
+        num_plots (int): Number of plots.
+        pots_data (list): List of data for each subplot.
+        sample_names (list): List of sample names.
+        size (int): Size of the plot.
+        ylim_hist (float): Y-axis limit for histograms.
+        ylim_ma (float): Y-axis limit for MA plots.
+        window_width (int): Window width for moving average.
+
+    Returns:
+        Figure: Matplotlib figure object.
+    """
+    subplot_titles = make_subplot_titles(sample_names)
+    fig, axes = plt.subplots(
+        num_rows,
+        num_cols,
+        figsize=(size * num_cols / 100, size * num_rows / 100),
+        dpi=300,
+        sharex="all",
+    )
+    axes = axes.flatten()
+
+    for plot_num in range(num_plots):
+        i, j, _, _ = get_indices(len(sample_names), num_cols, plot_num)
+        subplot_data = pots_data[plot_num]
+
+        mean = subplot_data["mean"]
+
+        ax = axes[plot_num]
+
+        if i == j:
+            # Plot histogram on the diagonal
+            ax.bar(
+                subplot_data["bins"][:-1],
+                subplot_data["counts"],
+                width=np.diff(subplot_data["bins"]),
+                edgecolor="black",
+                align="edge",
+            )
+
+            # Plot moving average line
+            ax.plot(
+                subplot_data["bins"][window_width // 2: -window_width // 2],
+                subplot_data["counts_smoothed"],
+                color="red",
+            )
+
+            ax.set_ylabel("Counts")
+            ax.set_ylim(0, ylim_hist)
+        else:
+            # Scatter plot
+            ax.scatter(
+                mean,
+                subplot_data["log_fold_change"],
+                c=subplot_data["densities"],
+                cmap="jet",
+                edgecolor="black",
+                label=f"{sample_names[i]} vs {sample_names[j]}",
+            )
+
+            # Regression line
+            regression = subplot_data["regression"]
+            ax.plot(
+                regression[:, 0],
+                regression[:, 1],
+                color="red",
+                label=f"LOWESS {sample_names[i]} vs. {sample_names[j]}",
+            )
+
+            ax.set_ylabel("Log2 Fold Change")
+            ax.set_ylim(-ylim_ma, ylim_ma)
+
+        ax.set_xlabel("Log Mean Intensity")
+        ax.tick_params(labelbottom=True)  # Force showing x-tick labels
+        ax.set_title(subplot_titles[plot_num])  # Add subplot title
+
+    # Adjust layout
+    plt.tight_layout()
+    return fig
+
+
+def main():
+    """Main function to generate MA plots."""
+    parser = argparse.ArgumentParser(description="Generate MA plots.")
+    parser.add_argument("--file_path", type=str, help="Path to the input CSV file")
+    parser.add_argument("--file_extension", type=str, help="File extension")
+    parser.add_argument(
+        "--frac", type=float, default=4 / 5, help="LOESS smoothing parameter"
+    )
+    parser.add_argument(
+        "--it", type=int, default=5, help="Number of iterations for LOESS smoothing"
+    )
+    parser.add_argument(
+        "--num_bins", type=int, default=100, help="Number of bins for histogram"
+    )
+    parser.add_argument(
+        "--window_width", type=int, default=5, help="Window width for moving average"
+    )
+    parser.add_argument("--size", type=int, default=500, help="Size of the plot")
+    parser.add_argument(
+        "--scale", type=int, default=3, help="Scale factor for the plot"
+    )
+    parser.add_argument(
+        "--y_scale_factor", type=float, default=1.1, help="Y-axis scale factor"
+    )
+    parser.add_argument(
+        "--max_num_cols",
+        type=int,
+        default=100,
+        help="Maximum number of columns in the plot",
+    )
+    parser.add_argument(
+        "--interactive",
+        action="store_true",
+        help="Generate interactive plot using Plotly",
+    )
+    parser.add_argument(
+        "--output_format",
+        type=str,
+        default="pdf",
+        choices=["pdf", "png", "html"],
+        help="Output format for the plot",
+    )
+    parser.add_argument(
+        "--output_file",
+        type=str,
+        default="ma_plot",
+        help="Output file name without extension",
+    )
+
+    args = parser.parse_args()
+
+    # Load the data
+    file_extension = args.file_extension.lower()
+    if file_extension == "csv":
+        data = pd.read_csv(args.file_path)
+    elif file_extension in ["txt", "tsv", "tabular"]:
+        data = pd.read_csv(args.file_path, sep="\t")
+    elif file_extension == "parquet":
+        data = pd.read_parquet(args.file_path)
+    else:
+        raise ValueError(f"Unsupported file format: {file_extension}")
+
+    features = data.iloc[:, 0]  # Assuming the first column is the feature names
+    samples = data.iloc[:, 1:]  # and the rest are samples
+
+    # Create a subplot figure
+    num_samples = samples.shape[1]
+    sample_names = samples.columns
+    num_plots = num_samples**2
+    num_cols = min(num_samples, args.max_num_cols)
+    num_rows = int(np.ceil(num_plots / num_cols))
+
+    plots_data = create_plot_data(
+        args.frac,
+        args.it,
+        args.num_bins,
+        args.window_width,
+        samples,
+        num_samples,
+        num_plots,
+        num_cols,
+    )
+
+    count_max = np.max([x.get("max_counts", 0) for x in plots_data])
+    log_fold_change_max = np.max([x.get("max_log_fold_change", 0) for x in plots_data])
+
+    ylim_hist = count_max * args.y_scale_factor
+    ylim_ma = log_fold_change_max * args.y_scale_factor
+
+    if args.interactive:
+        fig = ma_plots_plotly(
+            num_rows,
+            num_cols,
+            num_plots,
+            plots_data,
+            sample_names,
+            args.size,
+            ylim_hist,
+            ylim_ma,
+            features,
+        )
+        fig.show()
+        if args.output_format == "html":
+            fig.write_html(f"{args.output_file}")
+        else:
+            pio.write_image(
+                fig,
+                f"{args.output_file}",
+                format=args.output_format,
+                width=args.size * num_cols,
+                height=args.size * num_rows,
+                scale=args.scale,
+            )
+    else:
+        fig = ma_plots_matplotlib(
+            num_rows,
+            num_cols,
+            num_plots,
+            plots_data,
+            sample_names,
+            args.size,
+            ylim_hist,
+            ylim_ma,
+            args.window_width,
+        )
+        plt.show()
+        fig.savefig(f"{args.output_file}", format=args.output_format, dpi=300)
+    return 0
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/maplot.xml	Thu May 15 12:55:13 2025 +0000
@@ -0,0 +1,142 @@
+<tool id="maplot" name="MA plot" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.01" license="MIT">
+    <description>Generate MA plots for visualizing data distributions.</description>
+    <macros>
+        <token name="@TOOL_VERSION@">1.0.0</token>
+        <token name="@VERSION_SUFFIX@">0</token>
+    </macros>
+    <edam_topics>
+        <edam_topic>topic_0092</edam_topic>
+    </edam_topics>
+    <edam_operations>
+        <edam_operation>operation_0337</edam_operation>
+    </edam_operations>
+    <requirements>
+        <requirement type="package" version="6.0.0">plotly</requirement>
+        <requirement type="package" version="1.13.1">scipy</requirement>
+        <requirement type="package" version="2.2.3">pandas</requirement>
+        <requirement type="package" version="0.14.4">statsmodels</requirement>
+        <requirement type="package" version="3.9.4">matplotlib-base</requirement>
+        <requirement type="package" version="0.2.1">python-kaleido</requirement>
+    </requirements>
+    <creator>
+        <person
+            givenName="Helge"
+            familyName="Hecht"
+            url="https://github.com/hechth"
+            identifier="0000-0001-6744-996X" />
+        <organization
+            url="https://www.recetox.muni.cz/"
+            email="GalaxyToolsDevelopmentandDeployment@space.muni.cz"
+            name="RECETOX MUNI" />
+    </creator>
+    <command detect_errors="exit_code"><![CDATA[
+    python3 '$__tool_directory__/maplot.py'
+        --file_path '$file_path'
+        --file_extension '$file_path.ext'
+        --frac $frac
+        --it $it
+        --num_bins $num_bins
+        --window_width $window_width
+        --size $size
+        --scale $scale
+        --y_scale_factor $y_scale_factor
+        --max_num_cols $max_num_cols
+        #if $backend_conditional.backend == "plotly"
+        --interactive
+        #end if
+        --output_format '$output_format'
+        --output_file '$output_file'
+    ]]></command>
+
+    <inputs>
+        <param argument="--file_path" type="data" label="Input File" format="csv,tsv,tabular,parquet" help="The input file containing the data to be visualized." />
+        <param argument="--frac" type="float" value="0.8" label="LOESS Smoothing Fraction" help="The fraction of data points used for LOESS smoothing. This controls the degree of smoothing applied to the data." />
+        <param argument="--it" type="integer" value="5" label="Number of Iterations" help="The number of iterations for LOESS smoothing. Increasing this value may improve accuracy but will also increase computation time." />
+        <param argument="--num_bins" type="integer" value="100" label="Number of Bins" help="The number of bins to use for the histogram. This determines the granularity of the histogram visualization." />
+        <param argument="--window_width" type="integer" value="5" label="Window Width" help="The width of the moving average window. This affects how the data is smoothed over a range of values." />
+        <param argument="--size" type="integer" value="500" label="Plot Size" help="The size of the plot in pixels. Larger values produce higher-resolution plots." />
+        <param argument="--scale" type="integer" value="3" label="Scale Factor" help="The scale factor for the plot. This controls the resolution of the output plot." />
+        <param argument="--y_scale_factor" type="float" value="1.1" label="Y-Axis Scale Factor" help="A factor to scale the Y-axis. This can be used to adjust the vertical range of the plot." />
+        <param argument="--max_num_cols" type="integer" value="100" label="Maximum Number of Columns" help="The maximum number of columns to display in the plot. This limits the number of subplots in the visualization." />
+
+        <conditional name="backend_conditional">
+            <param name="backend" type="select" label="Backend for Plotting" help="Choose the backend for generating the plot. Plotly supports interactive plots, while Matplotlib generates static plots.">
+                <option value="plotly" selected="true">Plotly</option>
+                <option value="matplotlib">Matplotlib</option>
+            </param>
+            <when value="plotly">
+                <param argument="--output_format" type="select" label="Output Format" help="The output format for the plot when using Plotly. Options include PDF, PNG, and HTML.">
+                    <option value="pdf" selected="true">PDF</option>
+                    <option value="png">PNG</option>
+                    <option value="html">HTML</option>
+                </param>
+            </when>
+            <when value="matplotlib">
+                <param argument="--output_format" type="select" label="Output Format" help="The output format for the plot when using Matplotlib. Options include PDF and PNG.">
+                    <option value="pdf" selected="true">PDF</option>
+                    <option value="png">PNG</option>
+                </param>
+            </when>
+        </conditional>
+    </inputs>
+    <outputs>
+        <data name="output_file" format="pdf" label="MA plot with ${backend_conditional.backend} on ${on_string}">
+            <change_format>
+                <when input="output_format" value="png" format="png" />
+                <when input="output_format" value="html" format="html" />
+            </change_format>
+        </data>
+    </outputs>
+    <tests>
+        <test>
+            <param name="file_path" value="ma_plot_testdata_4.csv" />
+            <conditional name="backend_conditional">
+                <param name="backend" value="plotly" />
+                <param name="output_format" value="pdf" />
+            </conditional>
+            <output name="output_file" file="output_plotly.pdf" />
+        </test>
+    
+        <!-- Test case for Matplotlib backend with default parameters -->
+        <test>
+            <param name="file_path" value="ma_plot_testdata_4.csv" />
+            <conditional name="backend_conditional">
+                <param name="backend" value="matplotlib" />
+                <param name="output_format" value="pdf" />
+            </conditional>
+            <output name="output_file" file="output_matplotlib.pdf" />
+        </test>
+    </tests>
+    <help><![CDATA[
+.. class:: infomark
+
+**What it does**
+
+This tool generates MA plots for visualizing data distributions. It supports two backends for plotting: Plotly and Matplotlib. Users can customize various parameters such as smoothing, binning, and scaling to tailor the visualization to their needs.
+
+**Input**
+
+- **Input File**: A CSV, TSV, tabular, or Parquet file containing the data to be visualized.
+
+**Parameters**
+
+- **LOESS Smoothing Fraction**: Fraction of data points used for LOESS smoothing.
+- **Number of Iterations**: Number of iterations for LOESS smoothing.
+- **Number of Bins**: Number of bins for the histogram.
+- **Window Width**: Width of the moving average window.
+- **Plot Size**: Size of the plot in pixels.
+- **Scale Factor**: Scale factor for the plot resolution.
+- **Y-Axis Scale Factor**: Factor to scale the Y-axis.
+- **Maximum Number of Columns**: Maximum number of columns to display in the plot.
+- **Backend for Plotting**: Choose between Plotly and Matplotlib.
+- **Output Format**: Format of the output plot (PDF, PNG, or HTML).
+
+**Output**
+
+The tool generates a plot in the specified format (PDF, PNG, or HTML).
+    ]]></help>
+    <citations>
+        <citation type="doi">10.2307/2987937</citation>
+        <citation type="doi">10.1016/S0140-6736(86)90837-8</citation>
+    </citations>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ma_plot_testdata_4.csv	Thu May 15 12:55:13 2025 +0000
@@ -0,0 +1,667 @@
+,11_qc_8x_dil_milliq,18_qc_2x_dil_milliq,19_qc_4x_dil_milliq,20_qc_8x_dil_milliq
+C001,825602069.471457,6841926617.68507,3495838261.59415,1622523147.76126
+C002,723408.81037537,4831346.96157894,1788032.62816502,640795.843947452
+C003,136378479.936738,397485855.124068,86666570.700872,53170013.4054381
+C004,59923635.2683013,403591765.378911,161932726.197182,56984554.5654063
+C005,284650326.294548,1634639800.52803,716503847.712881,276995489.653881
+C006,166507523.406581,824604043.995038,362788104.55347,159691119.961467
+C007,19456210.1910098,63215963.4517072,33953156.2561005,23627403.6847447
+C008,3160475.47802609,15117813.4996536,5348098.43518815,2676130.11133333
+C009,978783.589475395,6405810.82525194,2260351.91819805,818778.720581346
+C010,5889521.56880125,41903823.6003721,16343289.8569915,6122125.60449193
+C011,3636435.75142038,4664966.53723467,5833018.88310524,3202117.84304701
+C012,5363177.34503922,41455804.6463667,15087932.9899938,5485651.5268171
+C013,152377948.835161,764328397.260434,347446605.045943,140756315.894966
+C014,14690344.3770585,104875250.65202,73380007.1813723,13803342.094887
+C015,48326764.9643576,190889041.456073,100955856.348986,45664904.6369003
+C016,285969.191133343,340616.638239711,1179928.47883999,14848.3372078916
+C017,63407409.5499573,469855399.834858,174355439.54458,60513837.8307332
+C018,39577583.2923801,211380462.705106,98066708.048938,25433059.8454813
+C019,124413060.025709,542718498.900448,260514030.935251,115728094.595096
+C020,257156983.196035,1145306199.36524,551436345.160302,179901253.688827
+C021,44800573.7335226,315340389.819491,96021202.8736825,63528967.9736323
+C022,4716464.8768336,15926051.9415363,8792750.14828011,3895494.91273838
+C023,155132828.637097,820355084.919369,358036654.598234,142818675.028134
+C024,182067.025807565,793425.760352309,472259.084249592,97469.7983996576
+C025,51665753.315303,330320273.849306,120911230.211985,48863699.0623918
+C026,290270504.603199,1624981444.87807,707769596.002777,282699424.414588
+C027,13465.231191136,2454453.02005059,778655.543580098,364241.708071714
+C028,3795980.73484676,7526722.57699134,7577933.23446375,1045489.94758604
+C029,51024631.332881,227103823.264292,100447343.192145,41002142.8418608
+C030,1658093.35753262,5312762.9481504,6593737.14933014,1004963.96098301
+C031,1442925.45943462,10801762.8778958,11650200.9298595,772302.74049455
+C032,3048496.45865952,18095262.6481102,6488096.55963112,2505521.91766769
+C033,871690.259378738,2566061.72809389,1731790.4342449,600085.617184655
+C034,4227045.76685994,3746846.58900908,3887098.08421489,2932598.53627807
+C035,85068420.3738863,276804490.20956,174554718.514344,82336623.0989073
+C036,2021783.03077262,10272591.715928,3352095.52092199,1340872.20409817
+C037,590870.989560898,5655330.29856603,2349551.17376158,572121.024863596
+C038,2112020.05173081,32368.4060645215,6211116.29676342,3010819.41112325
+C039,150018963.503646,622372274.034583,317434476.120699,139141065.463767
+C040,40344.0787210257,23012.9132954171,40754.3653384815,72326.9278615093
+C041,13241197.2651698,87451214.0136311,39189224.8864096,13780643.0952772
+C042,108091.732423943,428385.398510599,200317.119776663,48396.2376376502
+C043,146189896.840341,692476976.352405,360365038.276377,134945793.249613
+C044,9884994.68024827,55412337.6828766,23407784.2427795,9003813.24587183
+C045,4111070.79111804,26526428.1734409,6501464.83644605,6804967.72802344
+C046,1949142.45271643,12867621.0539167,4923582.39587532,1896166.99014736
+C047,812464.348852524,4503481.66952022,1386336.54303969,940225.737965033
+C048,9199233.70015548,8064177.23498212,8046936.92949284,9139358.42613038
+C049,3081880.39308657,16477970.4191567,7298527.83862049,3486883.05107354
+C050,11497856.5657752,60434245.6440637,27510227.1240658,10645092.8063981
+C051,33095897.2566657,164988926.564564,91653335.4725894,38996533.4531382
+C052,65145775.941217,309134870.703429,114731630.721583,61934791.4599925
+C053,4854860.16922326,22338821.155133,23986781.4229352,14477810.5109307
+C054,1859295.57249428,10820944.9331804,2905107.75618986,902443.72007786
+C055,41914.7323485226,340162.013599905,254898.569221211,39776.1635328245
+C056,19633204.9234124,77861521.4571212,32159221.8687703,21050223.3975686
+C057,1230480.70854194,9433077.25794911,4150129.67451673,1408688.83078779
+C058,4555509.74487756,6252242.046229,4590646.81268525,8842301.69166718
+C059,148950679.156048,0.0159313672530652,1043.87419877033,89076379.9962308
+C060,67927283.273218,329540123.801329,137499480.353297,65936532.1075893
+C061,235569674.559871,1375829128.67991,498867654.023016,219235915.446503
+C062,25763640.4035669,154874616.099022,31013.5875414556,1121589.83200012
+C063,27921030.1958689,120821162.65268,57802879.0713544,26648353.6354235
+C064,423421.480176578,10228775.6084363,486869.471114563,16226217.1779642
+C065,14044486.6563457,18474275.4775734,8893366.24970824,19006850.9723174
+C066,250347.348957151,2002910.81707985,398201.773621324,3293043.26153045
+C067,261217135.00208,1164751076.74348,555494752.766913,237636508.622297
+C068,1341.99972762931,3728935.33346045,5838.46337419638,4685.76708168737
+C069,834159.230119821,6068610.02274738,185172.122454357,1486657.9123308
+C070,11938367.2665246,34360045.4857232,25326933.8393555,7101972.90042822
+C071,13794194.4767365,297993.161176739,24156862.8172507,13258390.8312064
+C072,1058231.68976024,7375397.11195722,2040300.73777111,1062054.22772579
+C073,2753355.28063654,7908385.08793756,4814942.76218424,3869498.26451926
+C074,6900704.19546456,34120451.81739,13154927.696482,6925330.53478353
+C075,1927734.25838358,10776466.4577983,887769.51159922,1183826.5090775
+C076,11285878.0539912,36773126.6210056,31605682.9652592,6527388.4516076
+C077,2218.16899661474,186692.551280758,37033.0518150659,18512.2244448977
+C078,947245.282677012,7950807.94460341,958677.327182852,1607334.5832094
+C079,328970.337878653,3085316.26126201,950650.55064754,2230.8021768836
+C080,677525.481693946,2379882.5618858,486223.500861596,470784.064102462
+C081,16977506.2611472,10956577.4033208,13991943.4997018,20318993.6060792
+C082,66181921.9280646,409181369.411805,162451529.459043,65484311.6690465
+C083,738582.142731573,520297767.517721,238527418.208036,264480.348183304
+C084,118302191.131653,531107685.531043,250529335.257217,111744678.995282
+C085,3333725.59101449,144956738.229497,39274314.7098356,5085506.47212387
+C086,483807117.444171,1597874526.54125,848626471.238556,320478018.137407
+C087,147536.416782641,4621955.09321717,157164.63638156,541827.079209248
+C088,229322.264605312,53543656.6675626,257757.062329353,210935.00441106
+C089,915203.315128971,953246.157984271,905449.352209557,814512.063658318
+C090,11102677.5602547,69734045.9542321,15529585.4661749,10514466.6540927
+C091,712712674.665779,3362191137.3015,1525763092.44777,680783517.412866
+C092,3460199.9075173,388417.990688758,605482.413864984,2618057.87183711
+C093,326282.503606194,1136328.75609405,628113.787383907,110183.857223312
+C094,130092.899716964,476855.092021838,233723.197401787,149906.355964063
+C095,271937.926558153,3186471.15968949,464748.078899774,463935.188457058
+C096,1589759.89870606,5901157.40858636,103051.197620033,1031559.1727086
+C097,186691.117224501,2561231.01686772,273861.318491058,91280.5777751701
+C098,18564258.4805797,11980.2304320909,28987286.5183128,29591643.2784037
+C099,3578233.95496936,79299055.1527006,28893906.4385506,3244773.93167723
+C100,22758192.6170205,145063180.087854,56822621.3900059,23126165.3286106
+C101,463130.570154418,3338234.84457304,916029.362248607,626026.962598358
+C102,35861360.4001001,63603204.5183218,79081712.9327911,34305056.6576563
+C103,1030675.54038764,58834900.9378851,46378524.0979088,23685455.7993924
+C104,2407876.90528549,10441153.4328102,4405136.25319086,1885611.27037033
+C105,40092.0863577722,88717520.5906696,38640619.822788,243672.166577072
+C106,4578198.18507262,26210589.085835,10347943.014916,126643.946611537
+C107,557232.594020045,3084245.84541777,1229558.78519069,429615.023077827
+C108,118028.99079813,1876131.62805209,369803.009035265,133808.949484796
+C109,299356.464288177,2123989.58172741,567355.082653677,253610.98024751
+C110,66696.3898047993,10279673.0356254,133738.428047265,6004707.15354707
+C111,601360.184679797,3688666.50131975,1338400.2279983,528194.326839279
+C112,1041759.81801141,10511809.8812865,9579905.35114307,497083.651789048
+C113,2991373.5382621,7720421.78868929,6061687.39511773,5605168.57532306
+C114,2896604.02583178,2385161.64035682,425610.73683746,1829004.29838858
+C115,11230.3384305535,110654.117945243,26371.0634312752,5483.73366232521
+C116,754154.890004376,3919762.25616191,1763956.40581204,77547.6697186768
+C117,996871.466962179,448619.943170555,4419659.10692123,465725.770091542
+C118,10450761.2277886,8761956.43789138,4455648.17846434,2510821.88887272
+C119,1113076602.85097,4693522411.2768,2360168750.56629,1016066262.92135
+C120,5047406.30970447,5751036.39785806,7451983.23944818,7774735.58065101
+C121,6548.20628852904,2031001.34100263,1719.39971449066,1105870.08035445
+C122,49510.4467343101,3668006.90963489,97649.8482016697,207908.517483463
+C123,4181957.67183641,13848526.7424435,7036816.20744276,4163946.02135347
+C124,24411.6410048277,18452145.7259831,0.00701764420840404,3719555.09666454
+C125,4646544.75383173,15201497.9421707,7540097.8372135,4218767.57564275
+C126,22846298.4439321,18289431.5189156,12225356.7898112,5416034.50686828
+C127,502733.283543964,602560.797767713,546846.66143648,447930.190569083
+C128,4449335.9239666,67966516.056755,6999234.06787106,3909934.20488066
+C129,11365399.4562682,55390611.8515891,24234389.4338252,10754253.1752271
+C130,57604988.6538862,298899959.379984,124603612.880133,56008440.0277521
+C131,2902314.47636538,15947927.9308496,7549789.3973073,1928629.71203184
+C132,790218.121657412,9590481.57410883,7939533.72669867,4418022.88328355
+C133,2373390.99892283,15381244.058881,5985355.94868781,2323370.27559057
+C134,40509.1780440877,1133376.25632211,121518.242109288,69172.7913283344
+C135,198139.554171425,619579.582523787,243169.989087038,158599.762105202
+C136,0.0111331651600244,34764.4696967513,115268.278647678,29.4292982144994
+C137,483056.89625547,1234936.60249748,147836.296396442,54669.6623449063
+C138,19157.4345295245,3493101.82563572,48402.695289474,32311.520619395
+C139,3445248.33071633,4987976.55591843,6146638.47646102,1880498.69993503
+C140,84.0488352424609,81420241.2345236,90251.8041296294,2420.49417957252
+C141,785376.134207897,2379008.33748506,469254.054005716,605563.096233168
+C142,2740685.83908547,47952053.733212,4334366.4032461,10451056.4273765
+C143,13443941.8934006,71295995.7357575,31506814.629678,13024218.1755596
+C144,3849989.02247864,1575416.74912191,1063721.67782484,470209.545585124
+C145,3750532.81632489,7782967.89808867,3028182.1754664,3847902.51274196
+C146,3030098.93510375,2599284.47187159,4167332.90060648,2357231.66596947
+C147,188615.973427983,9759.04004638548,5566.477014291,197974.847411068
+C148,3016027.27444835,2836134.39352203,7284612.98612408,1174631.23427827
+C149,14665751.6616116,44150941.8992392,13847211.9932948,14366101.7324965
+C150,341942.857913936,576712248.119779,522752.78255197,218342.828460851
+C151,8688250.78846653,69747193.5574036,27366031.4964259,4950061.37288898
+C152,55724016.8916397,246868198.670976,119636497.576968,53777326.6602081
+C153,2174495453.02767,9259934402.18539,4527514923.79246,2055290185.41428
+C154,3549728.61135274,8542120.56666387,217903.252937856,2325602.54957126
+C155,8672347.07678705,3705467.58903207,8010995.77691888,8359038.99804365
+C156,627973.805047486,33080919.819028,13275342.5863776,490215.331525813
+C157,401262.684175438,3591127.05449197,3164500.89992018,268778.357137113
+C158,17485307.2610651,39371389.9211207,18196417.9150388,12050233.5310809
+C159,1826833.50942444,84589131.4294495,1445620.85672743,8684939.12053098
+C160,23051690.2905547,87698390.7776987,38776761.6875966,18868755.3450761
+C161,195047.74152569,0.00319873154282078,102.387111730509,138246.387298068
+C162,1233972.11732541,1879013.00407733,881827.612103609,1409160.03932212
+C163,0.0108154979390694,2431950.9465323,3895.81774441167,80713.6049211448
+C164,541053.977785887,1458721.84875427,629044.535463928,544289.493694039
+C165,438856.158379867,143977.321078295,942294.199200771,710614.279083617
+C166,1258267.95043044,3621806.3938712,1636787.69381929,1054003.99018527
+C167,310571.315031604,24434835.6130507,499096.789032345,3375483.0166438
+C168,1022976.72432719,2254893.32968111,229821.762780771,842153.216497277
+C169,9180182.17069938,20200790.1626885,2649080.16389491,657286.046734061
+C170,5600823.1189977,6527241.39041629,5224770.09688511,2017721.58616642
+C171,7246757.56558334,13243918.3434674,7427866.54165811,8323193.18934847
+C172,2614371.79642122,293461.311072506,2194765.92010498,1935256.2033879
+C173,290577.094259326,10672354.0319484,4411735.62809884,222476.291565135
+C174,2792.25896390306,1085015.68295863,168180.301984535,20986.2192258976
+C175,1751708.64686536,1469522.26029832,3900444.00302917,5534232.22160889
+C176,45502.8742710531,228.029962029991,4827.37838032623,740576.071586393
+C177,1059544.70520956,29337784.7187062,689226.181418638,557215.76572958
+C178,4074578.75392541,21517221.4336305,8281796.6517321,764052.083429423
+C179,108081.912362153,93616.3919358371,241610.751065622,188571.275688046
+C180,2152501.81748032,5208.06914589765,3450694.44124641,2544109.45717288
+C181,16890427.7537417,15670768.6980366,17567284.4902918,16077543.4226715
+C182,217327396.512981,33858.810590567,322846.391435303,422390084.213357
+C183,5905930.05610078,284906.615623142,4294547.61289669,4156391.72942469
+C184,234014.11969576,5528190.01126158,9831155.79619908,767525.184299713
+C185,562275.138562073,152505609.448029,574363.253632493,87111.7367303721
+C186,8411425.32349895,32513847.0348212,14474017.5672289,6750780.91955586
+C187,323.897369636457,191763.251714663,1748.3171940012,24758.6705669791
+C188,271795.145333759,3296099.20458153,440397.092226316,465010.934719897
+C189,503171.747333329,4920334.07460094,901976.987333217,411486.750040737
+C190,3461830.31437084,43978565.9626024,3396811.92709032,1826067.81254151
+C191,42287.5188059055,0.0118446218661038,14388.1690894316,28189.0940223675
+C192,321581.351235925,6844869.17428157,2259724.10847871,182237.921828032
+C193,5857943.26518084,787341.522757775,13592701.0576817,5552012.46260552
+C194,242259.022468717,20689479.6345437,19918134.0105788,1223759.04167008
+C195,18854.2445661852,1905136.87515102,148832.363957336,62755.0744049743
+C196,481562.90963727,1252697.70775013,703677.02633835,263788.496692756
+C197,873542.226952976,2160285.41028866,1454394.53486779,1134091.82510815
+C198,1534289.30814801,4103376.8802323,2362068.02963823,1704288.63898949
+C199,1963237.91330464,114639801.25833,50199138.5411078,20332485.7279234
+C200,15421253.3251269,77586803.4745662,37769444.7443421,4422615.21291122
+C201,896332.56483836,16539903.6234061,1627253.68255039,1390913.57627268
+C202,184925.750602232,1300678.71395521,385370.427390518,487546.418224163
+C203,1633406.32066855,11789888.7875973,3698624.39575223,1602606.62000157
+C204,546876.049563326,58469.9421759684,11784.1585187593,492432.034685162
+C205,1021705.23276552,8888802.56808572,2672554.32879976,282689.742119869
+C206,904812.487011889,2434661.61597402,627828.744016529,971482.963574764
+C207,182360.649308771,152114717.356711,1002048.53964039,167404.032719258
+C208,942486.800155914,1963702.78500208,218158.666701495,81839.0603402225
+C209,1383906.86769105,5067952.01004284,2389350.74131393,1081440.41257069
+C210,2959133.90638264,8926664.83966182,6096795.9271909,3469508.18216594
+C211,18993580.6831263,594924.787905035,307665.301585492,440522.134607173
+C212,5859304.58178862,964427.893175893,2544912.57375783,5539658.58396821
+C213,300551.107205758,381266.100173098,321189.604339171,293305.476003188
+C214,12593978.7314447,91763839.5581305,37862276.2989032,11881494.1156069
+C215,2504651.37267374,1081381.92422318,203093.496262689,1784838.06849086
+C216,117320.762208052,3313617.99607708,987837.121148243,51483.0217133488
+C217,63955852.1490843,438201257.407298,146725865.808279,76939209.4425632
+C218,209156.304520648,59616760.8725864,440168.754341586,6338710.86486156
+C219,1420153.63733851,30820.733239141,5956.17289561436,5943.36081854625
+C220,611682.428546217,1073816.56091461,878.877912183816,777414.903365279
+C221,683563.998346451,1114668.61805218,20797018.6693977,607233.897836033
+C222,79264003.2353963,988341.052568241,2852799.64963106,92618372.6320838
+C223,58459734.8320381,2066473.04450301,52256232.537918,44073459.9471183
+C224,14126893.5518968,17871993.4665165,14615054.1481085,16228678.2990159
+C225,1743.2658341684,0.00327996833514479,0.0120922866744233,18031.2898860486
+C226,106995193.764602,437942489.415469,227439988.248494,98460526.9254833
+C227,4822493.44632043,147827481.570539,71852167.6174504,30605090.7640847
+C228,5264790.43972549,12507792.7757515,6103528.34613853,4296450.89394611
+C229,1167050.18636161,4833538.36380123,2081533.60093226,905743.142623782
+C230,339437.236668238,138729.939126172,213888.83030921,323161.389342986
+C231,126402837.651039,575928910.37315,270795270.006231,120962765.731642
+C232,310909.32227665,953348.267302126,397262.038347326,231878.035117009
+C233,4677.42830529046,5623.06689550297,1603.01771557862,25680.4772944513
+C234,1528621.51588539,1680867.23190162,718890.165965974,489667.095369017
+C235,545556.437256642,391430.130529156,16.0421837543213,62346.420574891
+C236,32897.5780106726,564056.946802873,298454.395612309,187972.974187838
+C237,73372.7244991251,2304689.26903825,709752.388317145,416983.917013963
+C238,16512233.6269649,20256049.0046559,7007801.12072752,16273455.0309781
+C239,99769.5322373369,2327947.12475815,311880.110367532,228016.223883075
+C240,520082.307525598,6052629.14859054,979181.406279563,556642.457711128
+C241,317351.677849719,502866.21064294,1705094.62601341,495744.275937456
+C242,382006340.340953,1800712176.32735,788273924.654956,352093269.614743
+C243,61442.642392705,2998666.72343259,183585.898987933,1042518.95710909
+C244,6023.46240070502,2465682.71956463,92679.5682452157,5573.33745576258
+C245,230085.017324834,6239109.04865891,1712061.8523979,1250506.48007411
+C246,3478133.63234352,19821438.3956107,8318821.29754918,3358917.00852101
+C247,8868.36389324443,32590692.2086014,648422.789365782,360837.063156104
+C248,15529290.9673745,114174705.143537,25174413.1583911,10457644.3153443
+C249,17729.4339492866,1271874.72927199,6045581.40662478,8266.82652279288
+C250,651228.37403647,1126697.69974739,4516895.7739066,490107.000205469
+C251,385992.028948942,1878610.09184138,1013117.63938608,373949.904348484
+C252,322380.905435458,1036198.00286611,549767.882797587,0.0153224523331805
+C253,148462.456359817,380049.273979889,16091.172384545,23125.7733502179
+C254,206.180804082453,411575.232216587,296547.239181029,0.00752082744545826
+C255,575617.305262422,2577892.29373052,923000.613658731,454076.126026844
+C256,815346.444612568,411420.122240675,1933178.11805736,766672.712341176
+C257,228495.35112314,672528.136728371,763835.816603277,182919.519268229
+C258,325651.288616578,4154233.66304291,791782.038626175,43576.3497157864
+C259,9056.02111968591,166417.795289842,11351.6164965343,121109.602926583
+C260,1040115.88533803,2474096.29661758,3638499.95498785,1005.89238284925
+C261,3084809.31968254,4688512.77038463,1417296.85067423,3455998.88485944
+C262,892973.739047573,6966112.46903073,2922306.22131644,1941165.88932417
+C263,585550.941989543,1704006.46206654,545675.517375642,48118.9947223241
+C264,24199.4080933023,1535461.87410153,595374.047190564,23755.7184827295
+C265,74668.7769475309,1820137.27354291,695173.561761848,454624.130681883
+C266,676770.009937771,731228.469974997,4618337.34518385,903280.370503172
+C267,4471843.23422599,15210598.3514077,2599819.35472046,56845.4933075745
+C268,2389.04029283303,4230218.99932835,18128.7846958193,2055.97037791828
+C269,1468597.17470087,0.0103188772171913,135299.52018132,2860390.78019149
+C270,23560097.8938789,17883219.5866503,7010537.73729304,22996735.309243
+C271,2778791.81823791,3496463.11446402,3933615.34478269,2881960.00861578
+C272,13985711.2262859,364464.939415849,4969846.41108227,4649170.21498742
+C273,5442770.29521485,0.0149299365911002,1718140.83894757,816975.866324084
+C274,49221.4485268453,4190235.52491328,1970113.14321079,316607.472892914
+C275,485969.556514059,1830339.93582999,8761817.00366738,1636920.4959874
+C276,568.665444873168,677408.720227729,622.521149801921,672399.309963167
+C277,76767.7154607429,532263.022671394,220291.944109525,95546.8522799262
+C278,25537.6480786286,25944433.0666159,116542.964583648,34501.9629414116
+C279,1446175.11745973,7812716.00822115,1258192.3693023,114575.539897098
+C280,2031244.74861587,593045.960132657,3088655.38796674,1794394.08093368
+C281,13461269.7437549,51059243.4809928,18072928.1166108,12902022.9497077
+C282,290693.496517052,716828.10270212,630815.936217045,541913.761704103
+C283,3437773.82699793,61465155.955356,7642246.7065696,8124518.59240053
+C284,534582.68059982,3902642.7481517,1975899.29953137,2017213.0668896
+C285,5608351.02554363,30837611.3153515,15818247.1072258,5438617.42963644
+C286,761238.645035325,3636413.22389289,722351.522590502,8411.65214426892
+C287,497985.452903025,1788150.94387386,998741.892404659,1133866.04998133
+C288,2947685.43524483,38815357.096752,19463768.2392475,9466983.87113184
+C289,2288418.81705397,13552968.540939,6261684.94509195,2093817.21300474
+C290,5782791.74034467,243099634.073863,5036044.90941516,2480616.8113575
+C291,3687793.57034902,14842.9622954739,3665951.05116356,4203196.34581652
+C292,26171165.5213283,488.332348488639,0.00848780912890274,3491104.92122449
+C293,2282311.65125131,629758.958418007,2424204.32338483,884728.465231972
+C294,1259410.1989935,23146114.243929,7702948.32361425,1502005.3765825
+C295,151481108.052427,5432419.88982401,5642643.01412956,154692866.645442
+C296,3950083.06988693,421439.662489653,4573697.0230049,1828105.11266079
+C297,6469219.71045713,37100.0505585639,463924.742895393,2202591.83966706
+C298,276180.101436867,320.067987420941,969419.629335128,9563.30674581909
+C299,1733947.33619362,670785.090287534,517476.775029863,1031869.81165767
+C300,4588174.45399222,14812543.4681289,3133608.66857453,1417706.31152291
+C301,6644877.20517044,11391924.7205915,7393916.75205192,4466240.91507423
+C302,63.8607366977451,0.0148971125278045,4386.00567040759,1426694.87067076
+C303,1051229.32090468,11330604.8754687,3090792.07175685,4306612.54862986
+C304,2946441.46660598,0.00915477917835739,399517.558425432,1658919.57791993
+C305,1056985.26579089,284974.976931113,654166.64728146,1687580.9479661
+C306,884203.181739414,382340.198246364,143097.702270448,461235.563188409
+C307,4175100.67870651,4894749.23144925,2502661.48338763,357805.273680698
+C308,372772.74375094,1515145.61570412,983086.420067171,910020.289784198
+C309,170615.189737496,1781343.88962949,244560.91782249,11505.4842830068
+C310,5818.16939816182,231102.057702587,119354.126973821,32255.6852793326
+C311,1447558.2800632,80393.5896216234,1514109.08535618,580170.761088234
+C312,420386.425405292,9547476.40538577,1174311.92595843,373087.548513022
+C313,27727.8286903739,971.07420456153,64234.1417116083,100208.576574201
+C314,151772.171026653,4547222.10935812,1806366.26008597,124597.427648006
+C315,2163391.32824076,6951459.05885795,1376381.99607008,526676.577806464
+C316,7704.2811540077,14455.2111127725,0.0110752974526956,12550.7033179171
+C317,64879.2903455283,111950647.572545,47926825.0626325,11150966.6014204
+C318,488974.089787024,155620.244746136,173814.949433281,616103.945738172
+C319,2221940.65677923,6980496.01478687,2980566.39035032,21.8245185636371
+C320,1640.76484925494,36239.3062169117,454.918036376575,0.00283854896987708
+C321,9183089.97543003,42342388.1753587,19228637.4305057,6157700.0096637
+C322,6859071.00582542,50869835.348415,13609427.2083146,127918.761764643
+C323,3906661.83809472,23102123.2820177,8568840.85819989,4621096.79612177
+C324,628726.430444545,3181630.37038517,45120.7831148333,303275.998981712
+C325,95964.141769456,1847849.22175771,2240601.99839476,904.783221244087
+C326,7405676.91914549,17998894.9040026,15485191.7683257,6660691.98494958
+C327,274116.657570308,1426892.29995696,391665.861338752,9620845.0115358
+C328,6569226.0240076,23387733.0856957,11837605.8112398,5428924.48702106
+C329,16075968.2427662,90026657.3664327,40383122.1100208,4413657.27277136
+C330,1764457.52043571,34427530.6211052,15681567.8670415,2955829.9307331
+C331,253602.616541277,12974879.6277674,1798251.28903921,524633.109660785
+C332,101072.706284193,86172.3892931215,926960.260500765,4547.57139822252
+C333,9606.55614806446,3959088.34367097,39797.7899372993,11150.1936434663
+C334,1222411.71193817,4585595.18608094,1729106.27908977,1512177.29248892
+C335,2384610.73518187,15132648.873995,5157509.57391041,2073002.02843836
+C336,25148.3201003233,246999.880342694,166630.042008029,313750.281196147
+C337,903443.654638669,15114.9509713356,1376937.23135037,670672.291616579
+C338,105.010562519628,961640.813173579,23766449.4819823,115.865131498497
+C339,11578.5239552872,1481.04334683633,573.145124718747,136310.668743496
+C340,136459.916613137,421941.837172232,154228.058245713,303269.293057967
+C341,66663.6759254646,2607593.43121315,289375.096506877,145954.515293822
+C342,7021.13746265546,4664.95321768653,5931851.71252161,17201.243452168
+C343,110185.937576999,36139.1480115457,29638.6751223102,13788.3971492167
+C344,493.302642524683,1532840.27161749,58508.2800242186,51022.7021944157
+C345,2662.172351103,283319.12005685,94907.8202653869,4634.04900434011
+C346,12422.6657846775,47014.516560329,10304.4187150261,116582.789095542
+C347,1422328.79421627,7196519.945028,6434564.29185172,1503920.9045327
+C348,339340.66381285,828875.749613007,354376.955755628,739752.154939756
+C349,883.639064153154,8793900.60230002,3092916.77045527,991696.061133725
+C350,7098.01274124412,111429.67632826,5745.37220712194,1499.16143600155
+C351,5588.22696314719,64038.1492149275,15734.9412254636,36745.8624876071
+C352,930735.559733319,7521455.20098675,3954712.43690415,990903.706071721
+C353,5956083.58499448,3860040.07014099,352093.950420705,189673.987837624
+C354,12660.7246193333,34847.7320560216,22411.1174153333,13743.9109290198
+C355,3342217.13945588,3015216.29290816,109015.799298345,4366408.8190496
+C356,6886789.20597145,9509560.6285636,9761297.40053521,3500231.07890694
+C357,2181752.86391465,1805602.15346695,719072.542152669,1089968.63098998
+C358,78264.3473730343,2503562.7347712,0.0102037538890742,210171.269951444
+C359,9029538.94235098,67120838.6017803,10493660.8427992,4306094.00903468
+C360,8445835.72826418,8934793.49950574,7559036.68324364,2253243.4510278
+C361,6977130.9174852,5129363.48725658,2598340.61155769,3700777.61036647
+C362,2534961.96689683,3322661.05561522,5689871.5387791,6785083.36964395
+C363,16986417.7955999,14582209.1466632,8701942.76249276,2067022.21583253
+C364,2698684.56180752,800663.250755631,0.00694491340623789,268613.069162716
+C365,3385484.47546138,1253494.99573002,1293725.11322391,2273670.32360079
+C366,19473004.1508845,110203.218978722,521612.61504134,9574178.85060188
+C367,12704.8265726466,14525.2785166129,2376522.07499105,493143.610588921
+C368,1537093.4257716,9538135.64946994,3573133.8415361,1445342.59328085
+C369,64620.2630721765,3016495.29500811,1541461.36269271,3868.76342208967
+C370,30540.6002058533,6177168.6526351,80673736.5263502,1622.40272493885
+C371,262420.610097622,6155801.55963764,2044970.90715309,170515.890858786
+C372,539447.342238581,134553.522416043,608776.053708024,538931.381265974
+C373,176406.216786663,2596121.29072829,724578.923496637,267457.751383005
+C374,920099.326133911,31779817.639552,19219756.0478419,782600.792863486
+C375,4940117.01485037,81125131.8272938,13966195.832088,7443740.39608903
+C376,20243.6836240237,642513.940058051,46469.8136392532,18364.8669022492
+C377,111413.180173925,2659921.06228522,928548.88166271,195309.537384441
+C378,555769.311268535,5665239.77622009,284119.139109104,218886.296225334
+C379,284043.883096065,3462990.24828796,909314.791778986,302008.661837257
+C380,1456028.70646781,4244581.05156274,4162443.57060363,999965.601444268
+C381,309114.360579141,341874.608171003,20600.0504237061,80081.674343991
+C382,5744386.91385449,2611571.01256943,2215314.50995976,5089354.01565439
+C383,4450310.40879179,28559510.4841349,16870863.4194609,4254539.05555345
+C384,576175.130078998,6280149.85675919,2788781.8757926,439093.077361131
+C385,705728.392854128,3559.02674337029,0.00867627649644164,199045.488636943
+C386,480710.115090167,34341.5421899676,571635.535323763,1677703.88587425
+C387,4232022.11918736,7748183.89752959,5754493.31818105,3529729.47429516
+C388,9266.44764273706,246809.293292798,267792.701799173,19995.4310675012
+C389,231207.779118298,311405.964904547,286569.473726455,191007.948863101
+C390,2571026.01450707,104593.781278572,139408.826831074,2529190.88453007
+C391,5409431.4297708,11281.8910168448,8204147.13179097,8749904.72723586
+C392,223678.464378008,243000.395815614,318363.329866857,3150292.67028878
+C393,0.00411792519753698,0.00725815674588114,0.00299976313968703,0.00652755893761705
+C394,43981.4169744796,24279.5509938446,24795.6995917878,21719131.3344485
+C395,754346.362155919,780840.683276417,849873.668240429,5280682.93499213
+C396,514072.704893423,1411269.14000275,627066.362349972,1002352.31562042
+C397,5381378.00057095,0.00807414364010007,4813452.36066053,3276188.67522341
+C398,951304.643238424,16840.8578655401,0.0161652932002596,3180110.3194703
+C399,309137.664063453,1479367.43427891,5981311.50898063,3113991.96430523
+C400,1132715.28739131,2581078.79822165,1486758.17988555,9023150.9988284
+C401,1961229.14232799,929991.380165461,4556115.37385527,1947487.40509419
+C402,2483423.64805766,883176.716707599,2853895.8704002,2478985.36651481
+C403,1931605.21481455,1563079.01291184,2343424.9110782,2538031.20633869
+C404,846332.650245446,29658767.192077,9824321.07281836,1806286.38595303
+C405,314288.778692817,20723556.9532527,6736119.01530968,291822.254307166
+C406,7664880.08998382,7094623.03714775,8403122.63527254,7257589.98679289
+C407,83424.0753499424,382282.177338669,9268.94831679799,94036.0550240787
+C408,0.0101247147822124,5282232.7203879,5835894.5400192,2977640.5951662
+C409,90566.8491529097,60749.7589678632,59610.6529133515,251338.844854545
+C410,328139.80715102,5178789.49433894,37951.7477664324,602932.009276779
+C411,1802416.26717434,47219.1165159631,5292.74886502728,1913425.2998258
+C412,69952.6335400787,1114672.59280214,302137.996137152,69198.3041904812
+C413,204761.984854815,2433235.13340979,822492.97928012,0.00974481781691947
+C414,1387.09533766183,38277.1635982362,16581.1052183132,23618.5550868776
+C415,293805.006141576,17276.3355954401,407596.585304146,1630511.62203468
+C416,7240.48986797616,150492.024967655,4398079.3768693,617712.68793954
+C417,1716587.51477248,3833678.98459376,14376492.9711392,3015499.75812468
+C418,1622398.12352864,1916735.24505619,3012579.00626637,1481958.91965975
+C419,17088210.6231422,22352455.323768,14747498.9531455,16305404.7520503
+C420,116195.426197754,131580.118540114,19387.1457451341,117676.784220341
+C421,1155.20286817682,0.0149218799331437,0.00769233288807443,15158.2493340465
+C422,43717.0733245397,50999.3831521321,31224.7826388115,31610.6619262839
+C423,55303.4187854015,10348.7092768905,9736.47488257852,45119.7992690862
+C424,0.0114921308656547,1097643.28304452,736702.988955243,777113.173003565
+C425,25740.6089569733,580890.904405749,70.2850711428513,1941209.73945644
+C426,739809.353373507,4137698.92225748,1565354.9725031,671672.540725094
+C427,348088.869208975,5669589.58556933,4807876.20478408,986921.317804086
+C428,1033505.72245332,7119170.66463439,10275209.7009341,841831.93653871
+C429,146796.312441255,5037859.49560401,2084807.27585956,215609.295197564
+C430,1722.96537547852,34688811.4299725,16988469.2284285,7767814.14905527
+C431,171595.423578954,2511311.43364002,597547.576653739,133998.059936266
+C432,127430.100241454,1226630.78395678,903577.233765877,234015.054387905
+C433,292.650801839239,6662957.57796136,248397.247081708,325179.574024819
+C434,120655.245978826,2670005.12127846,543699.244758566,221213.06993656
+C435,2425065.53512332,5189668.63786836,2532119.65890133,740244.197116739
+C436,9855264.88613118,44490212.2780493,20484478.7020338,594042.367814541
+C437,4134790.45126542,16006504.2204706,7760457.23737772,4208794.53547082
+C438,109184.963045431,9851829.83534822,5858369.47579471,146947.372596601
+C439,0.0170171070900788,6154276.08979257,2362160.45934533,72909.8429068374
+C440,338728.551810381,724865.026005163,281182.554899589,89367.8149904348
+C441,338203.834640358,226871.575274853,583530.98750621,18959.4302201426
+C442,3129166.74246599,31907991.2851035,15837287.9030624,4914397.09336327
+C443,0.0171842463200024,0.00788356389789084,1132.24998239736,753.291926412794
+C444,62091.7035380203,2757997.77459536,116059.173755972,52852.5451151726
+C445,98.6094355205709,2668717.06352553,1413712.60526464,86.9458848446824
+C446,0.0183358726535607,22747118.627093,0.00515224781997399,0.0141136145724683
+C447,18390659.5512,442.486310803198,184.522989864778,738863.885839682
+C448,301816.416971501,211204.546888588,5586.29524619337,0.0127925821376226
+C449,296647.101503752,72136.5202222399,92597.2969402715,53545.1728564952
+C450,7652.7265746607,831210.781004945,537884.715302559,7386.57221059703
+C451,921.564685172038,1662489.21035072,2567.26076426049,1859.97464305339
+C452,0.00946571238984852,415692.009499877,1156.32168242142,9278.02042037057
+C453,85559.1303040724,803417.460202856,211861.47020162,114632.790975342
+C454,185291.765703606,710960.911253002,437474.883739891,86269.8893299248
+C455,13412.5924252775,137846.386360512,93980.9152741996,7957.08506081899
+C456,0.0108948739916131,19501.2142842547,24487.0196634392,48333.6711189566
+C457,393302.811403958,83231069.1099384,562577.987551603,16069937.0525636
+C458,830123.45620998,2773203.46484573,1164649.35553094,820669.440543272
+C459,70977.7423280718,528966.38548573,16594.41650891,70085.1785431085
+C460,1924.360407878,1103640.28484984,9660.08880855734,1877.91729686657
+C461,36386.0350016435,2201159.23524703,247979.433276592,14881.2691085486
+C462,4703.43497855968,44219.0125843379,15967.6747320217,3429.6289105197
+C463,22040.663252523,218747.287985616,35066.4440622686,14167.5855206883
+C464,683756.466820886,1758964.59419704,104331.071769287,1571592.86186083
+C465,17180215.5557976,1057565.45145327,8098348.06339169,10217900.6673586
+C466,273931.742939355,0.00713912523643204,315396.820597773,573973.629868142
+C467,50474.6306395437,1162720.59813481,4827932.65106743,977833.266311812
+C468,1422789.26931052,4465314.16559809,0.003753423179457,922561.553574222
+C469,3655056.92152512,25245175.8519955,13920689.2816188,2841063.43744049
+C470,13172567.1855857,163220363.745354,76395850.6823647,28638930.6754039
+C471,94054.4457630575,6977254.45321083,795023.928404592,0.0107056900429165
+C472,5012129.9058413,1389732.58837474,3296240.7048559,2229705.92978586
+C473,1714791.54263887,39053.1846049759,4546664.14030197,1719775.47073807
+C474,1891554.49769864,776567.354683446,1378612.78327341,2517881.88690881
+C475,536348.229080638,1133174.05666174,430263.053233284,1585470.02068875
+C476,21649169.2161237,38711.3413476261,6088017.41451091,19914795.0583065
+C477,1526363.64382995,117811.636508621,102881.714461817,12252417.195312
+C478,855880.996386972,0.0179820613967146,1641382.22134477,2286402.13342772
+C479,2517985.66601421,1756159.65191065,20406317.4527436,6698874.03924661
+C480,10396730.8880831,6908982.05824332,23192609.1690964,9036211.31242879
+C481,2416788.04695841,2713538.61045483,2253671.30518407,1912510.97842165
+C482,0.00628904765902335,0.0127208133492931,0.0100922834419682,982659.962308336
+C483,228034.808603223,56146848.6880878,177391.033007516,6619.85640512975
+C484,0.00450368057594451,34791.5998114844,280.885785618819,0.0139366579291616
+C485,1139151.29974106,10180146.1020011,3489106.80420904,64358738.1305637
+C486,83011.6299349853,17274337.9939077,7102078.6859213,113365.135042023
+C487,1953435.0529799,0.00559676909328827,0.00600274868131781,1977888.6599798
+C488,59304.436939788,12944.0640590408,14615555.4231102,430616.688705729
+C489,201710.607042464,13155181.6967193,93180.4649916369,167283.208475772
+C490,389756.366110231,0.016661797729709,0.0118491746741073,444400.680396733
+C491,928418.661240117,767885.884546573,1147984.64274679,707989.18232285
+C492,0.00785350124969872,756.70018410437,19957.9059834061,27666.0123867947
+C493,11034472.0217853,45131191.0396537,23715258.4534024,9991324.60741749
+C494,628339.011410192,32201.8664972543,1388099.13347536,764637.648334982
+C495,1261155.03774252,458117.067921012,1002902.06157425,2088158.18356775
+C496,2128158.06414101,10285621.3099959,4270566.30098191,78770.8322761123
+C497,394306.836398124,6087991.38587337,446708.650319146,2082518.26473544
+C498,88153.0493679547,105480.734911024,84448.222995189,34258.4530469157
+C499,3942650.54838417,22829.8025461867,67316.6259557471,15280.7730654679
+C500,85765.0174918166,271326.570639637,239943.231112466,0.00405847282773215
+C501,53320.7092231745,2997185.61949862,0.0111162205211857,49589.8617575974
+C502,3320523.15338246,1065998.60109479,7990052.10653691,1711126.71254197
+C503,697809.63825616,0.00710031371857684,0.00836197748540467,1257237.43003342
+C504,290404.280766165,2696769.45175367,716930.121624002,386997.860250197
+C505,988636.562360837,1020437.25723522,8115.77587323695,1109372.81141943
+C506,0.0043295795620076,8591094.39971421,3715299.9671272,0.0137587619076905
+C507,15747123.090474,7747151.48064738,32342798.2887944,15973653.4679252
+C508,169000.60036915,0.0112349567559677,16175.920891132,226933.450688867
+C509,233845.743174915,8298771.75967832,530427.306244029,31283.5217697093
+C510,896053919.669946,4568352370.44954,2099150003.34383,824135794.114673
+C511,1461302.56306807,19090196.5825281,735427.88293855,691012.012900534
+C512,33137609.1451455,42446403.246814,855523.829739322,264057.906375096
+C513,98220.7007331728,1045746.94979595,248760.163771716,1664069.98793654
+C514,172017513.379015,87.3680581493814,157.264476114252,110735571.441153
+C515,600338.726280924,339818.343781772,240662.73251962,1150603.99776454
+C516,897308.543966585,3415038.9427137,479000.335401586,1444459.76386749
+C517,2474816.72319843,555150.226903633,24481605.9474883,2194037.33431299
+C518,182275.161814438,24945201.1336352,37029040.8568995,8368685.17321672
+C519,5625928.0056828,21479.9628999218,27999.3948616666,13531057.8420201
+C520,1449754.3438816,0.0136017687085483,0.0131329046802313,890926.256730487
+C521,1083586.11879965,11565289.7822254,124459.994936748,1438737.34642251
+C522,3527923.06369355,1396312.80771751,5837807.31953024,3715660.17727193
+C523,74082948.0791028,71925184.536222,65253195.7427914,67789189.3974815
+C524,7411841.44681003,19424711.2667674,11649945.9760286,8452080.27314368
+C525,7689296.841675,712321.552068963,9074086.11560141,9828019.78708899
+C526,57076327.3120091,0.0126582521914227,3335971.2276263,23531430.7246111
+C527,1414607.84060915,1116365.93296278,0.00720903519402937,0.0124609842838552
+C528,2712730.30128557,8605.63700653353,0.00607344718465822,1458821.34314086
+C529,5726665.70350969,57970.0787190707,13114082.9133165,8244703.26748953
+C530,4300120.0026913,5387736.20797144,7152674.29302699,2543186.65829035
+C531,5608694.16284037,5710948.37220943,5659901.65251401,5317539.99479643
+C532,2250594.62776818,2236656.61166023,2636305.86406478,2113081.71935925
+C533,2549729.11229814,2606851.05667275,2919439.45149265,2571393.75825643
+C534,2780700.22800177,649688.003719791,622480.727701675,10152218.1690847
+C535,8144464.87668467,1149095.06571648,762725.118603661,1244509.88053719
+C536,66595.2250468833,168982.980418997,188469.446704652,1145830.80179891
+C537,10669087.9907128,4736176.48234043,8042189.8152621,6506798.22213045
+C538,1872110.92229452,12356055.1092834,2119794.19433848,1844919.43240557
+C539,6084048.31204968,1892450.54749304,1556910.38698278,2575204.76808008
+C540,966309.603356879,0.0155745598966918,3767249.8643096,4536937.00972879
+C541,698266.417806423,4987240.148617,184144.595300807,373912.144771796
+C542,3897580.02150978,361271.705664367,113831.058695102,4118849.31580654
+C543,5987.76127315355,0.0152682797982552,0.0144454895071765,3863.13370135995
+C544,4376952.27520841,2537557.05695585,25926784.057424,43558.5911688863
+C545,5468334.97415803,35541183.2881418,6066982.27577897,5178941.41747399
+C546,182068.737325173,656439.490949091,315470.994305162,352140.68503273
+C547,1970574.55689444,1515.10412116568,0.0107633818152676,0.0112164300211987
+C548,1435034.90372758,39970.1210018646,895450.3386377,5382164.12831992
+C549,0.0115055434263926,174386.745194573,277798.317809798,190.868549430664
+C550,1798700.17562891,4794085.5237258,3329984.55471451,1496998.06567594
+C551,551549631.544996,2481949399.25045,1177411743.07182,541692108.899706
+C552,1595763.4562952,101146.4920849,808468.458077121,7745736.85191569
+C553,2627600.33920993,21944.5421874534,18874.1797433246,14158.9243549319
+C554,229678.513351457,225441.978776167,247954.74247295,3850494.91727097
+C555,2827216.16307309,2278139.0956473,2633384.93183803,2832936.4866278
+C556,4469473.3076635,2565443.12551014,1670785.69052627,4429666.71199149
+C557,238257.914155112,625758.280392365,1170420.13215031,103739.583704496
+C558,371235.763864977,9031241.76137895,831364.482015203,540167.020120185
+C559,9119430.1596411,47550309.2585911,14683538.4903905,8698462.01920687
+C560,1091000.37305996,4112249.72973186,2842358.87028259,4866413.0043457
+C561,89096.7328007408,905641.76396665,109726.349852647,115950.741466197
+C562,201236.479307758,167156.576821722,166444.526768838,123908.540155985
+C563,5816481.41064036,5688.2880856297,241956.95355927,1001071.1833884
+C564,30.2447498905032,14645215.2853418,1954.91640035527,0.0176633591477418
+C565,0.00833722146994464,230701.925421238,8297.91725200818,13775.6565591132
+C566,927726.798356154,3369832.99817258,4529537.47673101,2388558.45498348
+C567,4032433.65405726,7790341.23688833,2783042.16635534,4166381.57763083
+C568,0.347317300466469,39360.1414615855,0.0141972202010656,9.67379101341165
+C569,1135495.21782715,2426345.01759181,1200826.6053118,326040.923548175
+C570,0.00608409014890559,0.0036338841381608,0.0136210490325597,0.0176314903023473
+C571,71436.6462632807,813685.643124361,85909.9392822997,86670.9666891879
+C572,2091.69563590059,3028929.69283097,15533.0276913163,2414.65444276073
+C573,2323.22814739485,109154.947659968,902990.623072808,3399.22831684019
+C574,1965814.22184248,2246543.4492402,2314390.37167766,469570.200488901
+C575,376916.673264154,3816094.14744556,761451.103941285,974539.93322325
+C576,342986.446241144,3662178.43803744,2664707.99313105,168.14895442343
+C577,1464.05909364028,0.0133913212222102,1568589.64903521,833095.920203403
+C578,1358369.73618375,4112364.78658431,1463595.59454612,196752.482255395
+C579,596422.229357503,4189182.24263661,2199685.61681256,590861.444495202
+C580,37.1372513513155,801195.427392262,67121.0645062233,0.00924341321386428
+C581,408781.91249052,125347.34245257,16977.1461763774,0.0116975008443525
+C582,3976.03251690558,1128267.20435541,388410.187507038,782.733344977055
+C583,135018.554797696,2000795.85460405,394095.293835331,1127160.74231665
+C584,773259.024113778,729684.062315986,2258887.74359207,556049.724747908
+C585,3470398.55848423,0.00577431280874189,4151581.89533147,1801535.52026905
+C586,7141138.88483777,46438942.348136,23388427.4040984,4577963.27502923
+C587,8961216.73459125,46838184.5395549,25625351.5512924,8362349.55273373
+C588,6979421.0561199,128482669.689223,77707674.9179738,52280160.4473419
+C589,99210.0023036158,647744.439861035,349192.590380514,1813496.90558744
+C590,452829.752661981,522695.076597765,520703.681256633,423988.775235223
+C591,1541743.0012677,797161.004301416,976475.693377083,433967.228391634
+C592,374498.847255458,370015.86932689,408514.199082864,357566.142284292
+C593,1336978.20454153,1322147.89967722,1340309.36450323,1206512.50241809
+C594,2653282.19642745,4652830.86653202,596772.714554914,1112.44632497958
+C595,505033.553692387,21860636.985826,1594414.67027784,177311.227996761
+C596,10500.5481843826,24166644.6783688,42327.6271542218,34739.5900041506
+C597,441910.295077089,5959437.83690973,2891520.56213157,4219932.62460685
+C598,0.00256798599038242,0.00883625975734525,0.0106562182104529,0.00501090115624745
+C599,0.00842157183340179,1928841.16119261,109272.974018998,0.00953089440301218
+C600,414204.773167765,723148.271445539,877747.289916854,644419.450584417
+C601,0.00685091579587955,747348.822368827,3727303.94505017,2314122.74945922
+C602,317463.37283014,173332.933128695,106818.589677581,9212.99289927667
+C603,83633.5917911434,551187.234292817,88969.2404134988,27527.6984243798
+C604,303189.472229889,408521.544074149,264316.000772787,492330.815870075
+C605,1537591.19377738,89676.0520481272,0.0127557971806593,1628403.52999501
+C606,114749.888569542,373667.067168978,1.23832818246129,563.748695918106
+C607,0.008202825958083,3088602.21988255,535887.06819015,0.00929099675551123
+C608,0.00310834696615588,0.0113704234779789,679223.610190532,877406.932127669
+C609,765690.056804119,7125712.60563122,3394934.21705277,1110762.43447565
+C610,498179.527999298,7041441.01852592,4500016.58176827,2427855.2653551
+C611,7358776.92155487,46222691.7575764,2006914.59209602,876909.439163468
+C612,1089550.78824091,5577325.76619777,904997.917863327,381168.83661451
+C613,0.00859504827143523,0.00899415135752134,134676.606440205,5542.68411485256
+C614,26330137.8989707,198122735.969041,71383367.7480536,28147562.2542536
+C615,5143652.57234382,18488468.3606988,3923749.15139416,2229297.23676306
+C616,480622.292960615,17623662.8006343,48966.4445819753,6467.08775163789
+C617,1298449.77174115,0.0125000308256034,96689.649980624,897184.165782133
+C618,4466068.98454919,152790.798424755,230227.086298611,1863377.34620147
+C619,26456142.0311162,184836874.348603,56911738.2524085,26119392.9634939
+C620,2049632.67125668,7208736.57828439,7843283.79258307,735646.534092135
+C621,393231.876306677,81089.9013738394,0.00692973115690143,408521.163626125
+C622,35675.8866513674,36477664.7599655,16719604.91156,3891791.57218869
+C623,1067861.88002183,6375656.23797235,2001353.65765582,1380.85477347869
+C624,67896.646998957,87502.6842455358,1405050.87394603,5196111.4474088
+C625,6637.61844418122,87936.0010013923,0.0140188703587921,2836.64833045957
+C626,102067.9454494,31621.7113938845,211691.834532684,404487.41587832
+C627,621566.680069895,3798122.24720507,1720889.23237219,74973.4653809846
+C628,265125.904193438,1122565.17122717,656784.489454199,177574.97096524
+C629,14261.8202163989,71577.7407262114,53970.8868339356,5275.49351629141
+C630,22246.5817095109,2449.19621189967,0.0068191825838601,16610.6488991853
+C631,269473.81998055,127059.505271305,31096.2717352708,11224.5295069932
+C632,474711.443028894,3073019.83040519,767943.357527715,267347.407273473
+C633,142790.284112631,928100.306089812,445252.906017197,22698.0757718206
+C634,4625168.50162766,0.0104882335266358,0.0105512955989765,1267482.39120351
+C635,4552635.37995212,253134.952375646,284085.184616403,5522946.35096282
+C636,597907.714611748,41017.6431455669,19935.0944261572,555372.069691882
+C637,1039.23254182595,6248.6997838017,1109247.14552309,31628.3654102266
+C638,172123.569212938,1101851.90366746,786383.052783115,300754.643151411
+C639,4314.02993525134,1802615.90748979,561347.984199292,2754.82998501558
+C640,156691.589045981,118010.779866013,4683.59926705131,172667.095122799
+C641,0.0146710953667959,2600707.23949274,8838.25686717221,9086.20377636995
+C642,1253232.10487781,2.61965361796999,2.36048294028399,41126.3760956029
+C643,0.0122796289944642,7206245.58378624,743270.022572483,0.00587135248791983
+C644,374365.423847768,1642721.50462445,781299.228562438,421981.632413429
+C645,0.00889742712109075,765190.097195597,116951.13659933,43463.4710097403
+C646,16887.1519433172,125064.558334736,54629.3216497533,240.672222189225
+C647,0.0144411652221299,116.982625155648,23406.9696023289,10261.2839914196
+C648,1744.5829770907,42420.1653395394,10181.3140001696,1491.79293696951
+C649,165470.200051827,2705040.44271246,629797.541733396,87866.4390998445
+C650,200370.98193111,1488411.38775004,565381.393146601,458847.478602867
+C651,5969681.55379134,16511416.8066198,14775576.9239009,5518874.10300539
+C652,389586.933850814,3888542.30701777,3107248.43229514,293695.511931958
+C653,3361.15789655922,661929.054561074,7386.97183817026,17994.0218138932
+C654,3028.71802717009,2584881.57319534,34785.6692627107,263804.197608796
+C655,2818.50172948531,3037040.09465542,978.930757198066,153.481498169151
+C656,162.887750335302,2857154.6225485,807.215678613639,209.708941218493
+C657,260544.199476954,1480225.29895945,847641.364814322,523111.394330861
+C658,221053.402057452,5661.6408034625,70705.818318497,3060.67422395952
+C659,216263.339636225,2312077.52648562,10371845.7082411,35584.3482039653
+C660,1291431.64548607,35782754.9330197,1537505.46603347,4769980.27132575
+C661,10276608.7453963,75657096.7816655,27896024.2998661,10538446.7763811
+C662,436734.987711774,20437.7527749732,2224790.4379144,647279.594154766
+C663,24885.3796367772,4031535.74058063,0.00623072831768732,0.00662055227907849
+C664,9540.38640101986,116306.016063776,33775.5608281023,10329.6871159259
+C665,171132.393589018,536751.743920658,1028.16828967176,11976.8535063089
+C666,0.0122522399683024,12736191.1245182,0.00575863052270972,0.00778989413667249
Binary file test-data/output_matplotlib.pdf has changed
Binary file test-data/output_plotly.pdf has changed