implement new monitoring values based on max_power limits from winISD

This commit is contained in:
Silas Oettinghaus
2026-05-14 13:05:08 +02:00
parent 53b011ee16
commit 2342caeb0a
6 changed files with 1658 additions and 24 deletions

244
lspower/winisd.py Normal file
View File

@@ -0,0 +1,244 @@
from __future__ import annotations
import math
import re
from dataclasses import dataclass
from pathlib import Path
import numpy as np
HEADROOM_OK_DB = 6.0
HEADROOM_LIMIT_DB = 0.0
DEFAULT_HEADROOM_EPS_W = 1e-12
@dataclass(frozen=True)
class ExcursionSanityResult:
ok: bool
median_ratio: float
expected_ratio: float
relative_error: float
message: str
def headroom_status(headroom_db: float) -> str:
if not math.isfinite(headroom_db):
return "DISABLED"
if headroom_db <= HEADROOM_LIMIT_DB:
return "LIMIT EXCEEDED"
if headroom_db <= HEADROOM_OK_DB:
return "WARNING"
return "OK"
class WinISDLimitCurve:
"""Frequency-dependent WinISD maximum-power protection curve."""
def __init__(
self,
frequency_hz: np.ndarray,
pmax_w: np.ndarray,
source: Path | None = None,
eps_w: float = DEFAULT_HEADROOM_EPS_W,
):
if frequency_hz.ndim != 1 or pmax_w.ndim != 1:
raise ValueError("WinISD limit arrays must be one-dimensional")
if len(frequency_hz) != len(pmax_w):
raise ValueError("WinISD limit arrays must have the same length")
if len(frequency_hz) < 2:
raise ValueError("WinISD limit curve needs at least two points")
if eps_w <= 0.0:
raise ValueError("eps_w must be positive")
valid = np.isfinite(frequency_hz) & np.isfinite(pmax_w)
valid &= frequency_hz > 0.0
valid &= pmax_w > eps_w
if np.count_nonzero(valid) < 2:
raise ValueError("WinISD limit curve has fewer than two valid points")
frequency_hz = frequency_hz[valid].astype(np.float64)
pmax_w = pmax_w[valid].astype(np.float64)
order = np.argsort(frequency_hz)
frequency_hz = frequency_hz[order]
pmax_w = pmax_w[order]
unique_frequency, unique_indices = np.unique(frequency_hz, return_index=True)
self.frequency_hz = unique_frequency
self.pmax_w = pmax_w[unique_indices]
self.source = source
self.eps_w = float(eps_w)
@classmethod
def from_file(cls, path: str | Path, eps_w: float = DEFAULT_HEADROOM_EPS_W) -> "WinISDLimitCurve":
path = Path(path)
frequency_hz, values = load_two_column_curve(path)
return cls(frequency_hz, values, source=path, eps_w=eps_w)
def interpolate(self, frequencies_hz: np.ndarray) -> np.ndarray:
frequencies_hz = np.asarray(frequencies_hz, dtype=np.float64)
pmax = np.full_like(frequencies_hz, np.nan, dtype=np.float64)
valid = np.isfinite(frequencies_hz) & (frequencies_hz > 0.0)
if not np.any(valid):
return pmax
interp_f = np.clip(frequencies_hz[valid], self.frequency_hz[0], self.frequency_hz[-1])
pmax[valid] = np.interp(
np.log(interp_f),
np.log(self.frequency_hz),
self.pmax_w,
left=self.pmax_w[0],
right=self.pmax_w[-1],
)
return pmax
def compute_headroom(self, p_bin: np.ndarray, f_bins: np.ndarray) -> dict:
p_bin = np.asarray(p_bin, dtype=np.float64)
f_bins = np.asarray(f_bins, dtype=np.float64)
if p_bin.shape != f_bins.shape:
raise ValueError("p_bin and f_bins must have the same shape")
pmax = self.interpolate(f_bins)
protected_power = np.maximum(p_bin, 0.0)
valid = np.isfinite(pmax) & (pmax > self.eps_w) & np.isfinite(protected_power)
valid &= np.isfinite(f_bins) & (f_bins > 0.0)
utilization = np.zeros_like(protected_power, dtype=np.float64)
headroom = np.full_like(protected_power, np.inf, dtype=np.float64)
utilization[valid] = protected_power[valid] / pmax[valid]
headroom[valid] = 10.0 * np.log10(pmax[valid] / np.maximum(protected_power[valid], self.eps_w))
if not np.any(valid):
worst = float("nan")
critical_index = 0
critical_frequency = float("nan")
critical_power = float("nan")
critical_pmax = float("nan")
else:
valid_indices = np.flatnonzero(valid)
critical_index = int(valid_indices[np.argmin(headroom[valid])])
worst = float(headroom[critical_index])
critical_frequency = float(f_bins[critical_index])
critical_power = float(protected_power[critical_index])
critical_pmax = float(pmax[critical_index])
return {
"utilization_bin": utilization,
"headroom_db_bin": headroom,
"worst_headroom_db": worst,
"critical_frequency_hz": critical_frequency,
"critical_power_w": critical_power,
"critical_pmax_w": critical_pmax,
"over_limit_bool": bool(math.isfinite(worst) and worst <= HEADROOM_LIMIT_DB),
"status": headroom_status(worst),
}
def load_two_column_curve(path: str | Path) -> tuple[np.ndarray, np.ndarray]:
path = Path(path)
try:
text = path.read_text(encoding="utf-8-sig", errors="replace")
except OSError as exc:
raise ValueError(f"Could not read WinISD curve '{path}': {exc}") from exc
rows: list[tuple[float, float]] = []
for line in text.splitlines():
stripped = line.strip()
if not stripped or stripped.startswith(("#", "*")):
continue
values = _parse_numeric_line(stripped)
if len(values) >= 2:
rows.append((values[0], values[1]))
if not rows:
raise ValueError(f"No two-column numeric data found in WinISD curve '{path}'")
data = np.asarray(rows, dtype=np.float64)
return data[:, 0], data[:, 1]
def check_excursion_scaling(
excursion_10w_path: str | Path,
excursion_100w_path: str | Path,
tolerance: float = 0.10,
) -> ExcursionSanityResult:
f10, x10 = load_two_column_curve(excursion_10w_path)
f100, x100 = load_two_column_curve(excursion_100w_path)
valid_10 = np.isfinite(f10) & np.isfinite(x10) & (f10 > 0.0) & (x10 > 0.0)
valid_100 = np.isfinite(f100) & np.isfinite(x100) & (f100 > 0.0) & (x100 > 0.0)
f10 = f10[valid_10]
x10 = x10[valid_10]
f100 = f100[valid_100]
x100 = x100[valid_100]
if len(f10) < 2 or len(f100) < 2:
raise ValueError("Excursion sanity check needs at least two valid rows per file")
order = np.argsort(f10)
f10 = f10[order]
x10 = x10[order]
in_range = (f100 >= f10[0]) & (f100 <= f10[-1])
if np.count_nonzero(in_range) < 2:
raise ValueError("Excursion files do not overlap enough in frequency")
x10_interp = np.interp(np.log(f100[in_range]), np.log(f10), x10)
ratios = x100[in_range] / x10_interp
ratios = ratios[np.isfinite(ratios) & (ratios > 0.0)]
if len(ratios) == 0:
raise ValueError("Excursion sanity check produced no valid ratios")
expected = math.sqrt(10.0)
median_ratio = float(np.median(ratios))
relative_error = abs(median_ratio - expected) / expected
ok = relative_error <= tolerance
if ok:
message = (
f"Excursion scaling OK: median ratio {median_ratio:.3f}, "
f"expected {expected:.3f}."
)
else:
message = (
f"Excursion scaling warning: median ratio {median_ratio:.3f}, "
f"expected {expected:.3f}, error {relative_error * 100.0:.1f}%."
)
return ExcursionSanityResult(ok, median_ratio, expected, relative_error, message)
def run_self_test() -> None:
frequencies = np.array([20.0, 100.0, 1000.0], dtype=np.float64)
limit = WinISDLimitCurve(frequencies, np.full_like(frequencies, 100.0))
bins = np.array([20.0, 50.0, 100.0], dtype=np.float64)
cases = (
(50.0, 3.010299956639812, False),
(100.0, 0.0, True),
(200.0, -3.010299956639812, True),
)
for power, expected_headroom, expected_over_limit in cases:
p_bin = np.array([0.0, power, 0.0], dtype=np.float64)
result = limit.compute_headroom(p_bin, bins)
actual = result["worst_headroom_db"]
if not math.isclose(actual, expected_headroom, abs_tol=1e-6):
raise AssertionError(f"headroom for {power:g} W: expected {expected_headroom}, got {actual}")
if result["over_limit_bool"] is not expected_over_limit:
raise AssertionError(
f"over-limit for {power:g} W: expected {expected_over_limit}, got {result['over_limit_bool']}"
)
def _parse_numeric_line(line: str) -> list[float]:
if ";" in line:
parts = line.split(";")
else:
parts = re.split(r"[\t, ]+", line)
values: list[float] = []
for part in parts:
token = part.strip()
if not token:
continue
token = token.replace(",", ".")
try:
values.append(float(token))
except ValueError:
return []
return values

View File

@@ -25,6 +25,7 @@ from lspower.audio import (
) )
from lspower.impedance import ImpedanceCurve from lspower.impedance import ImpedanceCurve
from lspower.power import PowerEstimator, PowerFrame, VoltageSpectrumEstimator, VoltageSpectrumFrame, WayConfig from lspower.power import PowerEstimator, PowerFrame, VoltageSpectrumEstimator, VoltageSpectrumFrame, WayConfig
from lspower.winisd import WinISDLimitCurve, check_excursion_scaling, headroom_status, run_self_test
np = None np = None
@@ -45,6 +46,12 @@ DEFAULT_POWER_UPDATE_INTERVAL_S = 0.25
DEFAULT_AMP_GAIN_DB = 32.0 DEFAULT_AMP_GAIN_DB = 32.0
DEFAULT_POWER_WARNING_W = 400.0 DEFAULT_POWER_WARNING_W = 400.0
DEFAULT_POWER_CRITICAL_W = 550.0 DEFAULT_POWER_CRITICAL_W = 550.0
WINISD_MAX_POWER_FILE = Path("winisd/max_power.csv")
WINISD_EXCURSION_10W_FILE = Path("winisd/excursion_10w.csv")
WINISD_EXCURSION_100W_FILE = Path("winisd/excursion_100w.csv")
ENABLE_WINISD_HEADROOM = True
HEADROOM_EPS_W = 1e-12
HEADROOM_SMOOTHING_ALPHA = 0.9
# Convert sounddevice's normalized floating-point samples to volts. # Convert sounddevice's normalized floating-point samples to volts.
# #
@@ -252,6 +259,21 @@ def format_levels(
return " | ".join(parts) return " | ".join(parts)
def smooth_headroom_db(previous: float | None, raw: float, alpha: float) -> float:
if previous is None or not math.isfinite(previous) or not math.isfinite(raw) or alpha <= 0.0:
return raw
return alpha * previous + (1.0 - alpha) * raw
def format_headroom(headroom: dict | None) -> str:
if not headroom:
return "WinISD headroom disabled"
return (
f"WinISD headroom={headroom['worst_headroom_db']:+6.2f} dB "
f"@ {headroom['critical_frequency_hz']:7.1f} Hz | {headroom['status']}"
)
class PowerConsoleRunner: class PowerConsoleRunner:
"""Live console runner for estimated amplifier output power.""" """Live console runner for estimated amplifier output power."""
@@ -276,6 +298,8 @@ class PowerConsoleRunner:
) )
self.estimators: dict[str, PowerEstimator] = {} self.estimators: dict[str, PowerEstimator] = {}
self.buffers: dict[str, object] = {} self.buffers: dict[str, object] = {}
self.headroom_curves: dict[str, WinISDLimitCurve] = {}
self.headroom_smoothed_db: dict[str, float] = {}
self.hop_size = 0 self.hop_size = 0
@staticmethod @staticmethod
@@ -379,10 +403,30 @@ class PowerConsoleRunner:
way.name: np.zeros(0, dtype=np.float64) way.name: np.zeros(0, dtype=np.float64)
for way in self.ways for way in self.ways
} }
self._create_headroom_curves()
@staticmethod def _create_headroom_curves(self) -> None:
def format_power_line(name: str, frame: PowerFrame) -> str: self.headroom_curves = {}
return ( self.headroom_smoothed_db = {}
if self.args.disable_winisd_headroom:
return
path = Path(self.args.winisd_max_power)
lf_ways = [way for way in self.ways if way.name.upper() == "LF"]
if not lf_ways:
return
try:
curve = WinISDLimitCurve.from_file(path, eps_w=HEADROOM_EPS_W)
except Exception as exc:
print(f"WinISD headroom disabled: {exc}", file=sys.stderr)
return
for way in lf_ways:
self.headroom_curves[way.name] = curve
def format_power_line(self, name: str, frame: PowerFrame) -> str:
headroom = self._compute_headroom(name, frame)
line = (
f"{name}: " f"{name}: "
f"Vdsp={frame.rms_input_v:9.4f} Vrms, " f"Vdsp={frame.rms_input_v:9.4f} Vrms, "
f"Vamp={frame.rms_amp_v:9.2f} Vrms, " f"Vamp={frame.rms_amp_v:9.2f} Vrms, "
@@ -390,6 +434,26 @@ class PowerConsoleRunner:
f"Q={frame.total_q_var:10.2f} var, " f"Q={frame.total_q_var:10.2f} var, "
f"Sapp={frame.total_s_va:10.2f} VA" f"Sapp={frame.total_s_va:10.2f} VA"
) )
if headroom:
line += ", " + format_headroom(headroom)
return line
def _compute_headroom(self, name: str, frame: PowerFrame) -> dict | None:
curve = self.headroom_curves.get(name)
if curve is None:
return None
headroom = curve.compute_headroom(frame.p_w_per_bin, frame.frequencies_hz)
raw = float(headroom["worst_headroom_db"])
smoothed = smooth_headroom_db(
self.headroom_smoothed_db.get(name),
raw,
self.args.headroom_smoothing_alpha,
)
self.headroom_smoothed_db[name] = smoothed
headroom["worst_headroom_db"] = smoothed
headroom["status"] = headroom_status(smoothed)
headroom["over_limit_bool"] = bool(math.isfinite(smoothed) and smoothed <= 0.0)
return headroom
def run(self) -> int: def run(self) -> int:
try: try:
@@ -410,6 +474,15 @@ class PowerConsoleRunner:
) )
print(f"Input voltage scale: {self.args.input_volts_per_sample_unit:g} V / sample unit") print(f"Input voltage scale: {self.args.input_volts_per_sample_unit:g} V / sample unit")
print("Assumption: ideal linear amplifier voltage gain per way.") print("Assumption: ideal linear amplifier voltage gain per way.")
if self.headroom_curves:
print(f"WinISD headroom: {Path(self.args.winisd_max_power)}")
if WINISD_EXCURSION_10W_FILE.exists() and WINISD_EXCURSION_100W_FILE.exists():
try:
print(check_excursion_scaling(WINISD_EXCURSION_10W_FILE, WINISD_EXCURSION_100W_FILE).message)
except Exception as exc:
print(f"Excursion check skipped: {exc}")
else:
print("WinISD headroom: disabled")
for way in self.ways: for way in self.ways:
curve = self.impedances[way.name] curve = self.impedances[way.name]
print( print(
@@ -617,6 +690,8 @@ class LevelMonitorGUI:
self.power_rows: dict[str, dict] = {} self.power_rows: dict[str, dict] = {}
self.power_history: dict[str, list[tuple[float, float, float]]] = {} self.power_history: dict[str, list[tuple[float, float, float]]] = {}
self.power_max_hold_w: dict[str, float] = {} self.power_max_hold_w: dict[str, float] = {}
self.headroom_curves: dict[str, WinISDLimitCurve] = {}
self.headroom_smoothed_db: dict[str, float] = {}
self.power_history_start_s: float | None = None self.power_history_start_s: float | None = None
self.power_hop_size = 0 self.power_hop_size = 0
self.level_rows: list[dict] = [] self.level_rows: list[dict] = []
@@ -646,6 +721,10 @@ class LevelMonitorGUI:
self.power_fft_size_var = tk.StringVar(value=str(DEFAULT_POWER_FFT_SIZE)) self.power_fft_size_var = tk.StringVar(value=str(DEFAULT_POWER_FFT_SIZE))
self.power_overlap_var = tk.StringVar(value=f"{DEFAULT_POWER_OVERLAP:g}") self.power_overlap_var = tk.StringVar(value=f"{DEFAULT_POWER_OVERLAP:g}")
self.power_smoothing_var = tk.StringVar(value=f"{DEFAULT_POWER_SMOOTHING_ALPHA:g}") self.power_smoothing_var = tk.StringVar(value=f"{DEFAULT_POWER_SMOOTHING_ALPHA:g}")
self.winisd_enabled_var = tk.BooleanVar(value=not args.disable_winisd_headroom and ENABLE_WINISD_HEADROOM)
self.winisd_max_power_var = tk.StringVar(value=str(args.winisd_max_power or WINISD_MAX_POWER_FILE))
self.headroom_smoothing_var = tk.StringVar(value=f"{args.headroom_smoothing_alpha:g}")
self.winisd_status_var = tk.StringVar(value="WinISD headroom uses per-bin P/Pmax for LF.")
self.lf_enabled_var = tk.BooleanVar(value=True) self.lf_enabled_var = tk.BooleanVar(value=True)
self.lf_channel_var = tk.StringVar(value="1") self.lf_channel_var = tk.StringVar(value="1")
self.lf_impedance_var = tk.StringVar(value="impedance.txt" if Path("impedance.txt").exists() else "") self.lf_impedance_var = tk.StringVar(value="impedance.txt" if Path("impedance.txt").exists() else "")
@@ -776,19 +855,49 @@ class LevelMonitorGUI:
ttk.Entry(self.power_frame, textvariable=self.power_smoothing_var, width=8).grid( ttk.Entry(self.power_frame, textvariable=self.power_smoothing_var, width=8).grid(
row=1, column=5, sticky="w", padx=(8, 16) row=1, column=5, sticky="w", padx=(8, 16)
) )
ttk.Checkbutton(self.power_frame, text="WinISD", variable=self.winisd_enabled_var).grid(
row=2, column=0, sticky="w", pady=(8, 0)
)
ttk.Entry(self.power_frame, textvariable=self.winisd_max_power_var, width=44).grid(
row=2, column=1, columnspan=3, sticky="ew", padx=(8, 12), pady=(8, 0)
)
ttk.Label(self.power_frame, text="Headroom smooth").grid(row=2, column=4, sticky="e", pady=(8, 0))
ttk.Entry(self.power_frame, textvariable=self.headroom_smoothing_var, width=8).grid(
row=2, column=5, sticky="w", padx=(8, 16), pady=(8, 0)
)
ttk.Label(self.power_frame, textvariable=self.winisd_status_var).grid(
row=2, column=6, columnspan=9, sticky="w", pady=(8, 0)
)
headings = ("Way", "On", "Ch", "Impedance file", "Gain dB", "Vdsp", "Vamp", "P", "Q", "Sapp", "P meter", "", "Max P") headings = (
"Way",
"On",
"Ch",
"Impedance file",
"Gain dB",
"Vdsp",
"Vamp",
"P",
"Q",
"Sapp",
"Headroom",
"Crit Hz",
"Limit",
"P meter",
"",
"Max P",
)
for col, heading in enumerate(headings): for col, heading in enumerate(headings):
ttk.Label(self.power_frame, text=heading).grid( ttk.Label(self.power_frame, text=heading).grid(
row=2, row=3,
column=col, column=col,
sticky="w" if col <= 4 else "e", sticky="w" if col <= 4 else "e",
pady=(8, 0), pady=(8, 0),
padx=(0, 12 if col < 9 else 0), padx=(0, 12 if col < 9 else 0),
) )
self._build_power_config_row("LF", 3, self.lf_enabled_var, self.lf_channel_var, self.lf_impedance_var, self.lf_gain_var) self._build_power_config_row("LF", 4, self.lf_enabled_var, self.lf_channel_var, self.lf_impedance_var, self.lf_gain_var)
self._build_power_config_row("HF", 4, self.hf_enabled_var, self.hf_channel_var, self.hf_impedance_var, self.hf_gain_var) self._build_power_config_row("HF", 5, self.hf_enabled_var, self.hf_channel_var, self.hf_impedance_var, self.hf_gain_var)
plots_frame = ttk.Frame(outer) plots_frame = ttk.Frame(outer)
plots_frame.pack(fill="both", expand=True, pady=(12, 0)) plots_frame.pack(fill="both", expand=True, pady=(12, 0))
@@ -892,9 +1001,12 @@ class LevelMonitorGUI:
"p": self.tk.StringVar(value="-"), "p": self.tk.StringVar(value="-"),
"q": self.tk.StringVar(value="-"), "q": self.tk.StringVar(value="-"),
"s": self.tk.StringVar(value="-"), "s": self.tk.StringVar(value="-"),
"headroom": self.tk.StringVar(value="-"),
"crit_hz": self.tk.StringVar(value="-"),
"limit": self.tk.StringVar(value="-"),
"max_p": self.tk.StringVar(value="-"), "max_p": self.tk.StringVar(value="-"),
} }
for offset, key in enumerate(("vdsp", "vamp", "p", "q", "s"), start=5): for offset, key in enumerate(("vdsp", "vamp", "p", "q", "s", "headroom", "crit_hz", "limit"), start=5):
ttk.Label(self.power_frame, textvariable=vars_by_metric[key], width=12, anchor="e").grid( ttk.Label(self.power_frame, textvariable=vars_by_metric[key], width=12, anchor="e").grid(
row=row, column=offset, sticky="e", padx=(0, 12 if offset < 9 else 0), pady=4 row=row, column=offset, sticky="e", padx=(0, 12 if offset < 9 else 0), pady=4
) )
@@ -906,12 +1018,12 @@ class LevelMonitorGUI:
style="PowerOk.Horizontal.TProgressbar", style="PowerOk.Horizontal.TProgressbar",
length=150, length=150,
) )
meter.grid(row=row, column=10, sticky="ew", padx=(8, 8), pady=4) meter.grid(row=row, column=13, sticky="ew", padx=(8, 8), pady=4)
light = self.tk.Canvas(self.power_frame, width=18, height=18, highlightthickness=0) light = self.tk.Canvas(self.power_frame, width=18, height=18, highlightthickness=0)
light.grid(row=row, column=11, sticky="w", padx=(0, 6), pady=4) light.grid(row=row, column=14, sticky="w", padx=(0, 6), pady=4)
light_id = light.create_oval(3, 3, 15, 15, fill="#22a447", outline="#555555") light_id = light.create_oval(3, 3, 15, 15, fill="#22a447", outline="#555555")
ttk.Label(self.power_frame, textvariable=vars_by_metric["max_p"], width=12, anchor="e").grid( ttk.Label(self.power_frame, textvariable=vars_by_metric["max_p"], width=12, anchor="e").grid(
row=row, column=12, sticky="e", pady=4 row=row, column=15, sticky="e", pady=4
) )
vars_by_metric["meter"] = meter vars_by_metric["meter"] = meter
vars_by_metric["light"] = light vars_by_metric["light"] = light
@@ -972,12 +1084,15 @@ class LevelMonitorGUI:
fft_size = int(self.power_fft_size_var.get()) fft_size = int(self.power_fft_size_var.get())
overlap = float(self.power_overlap_var.get()) overlap = float(self.power_overlap_var.get())
smoothing = float(self.power_smoothing_var.get()) smoothing = float(self.power_smoothing_var.get())
headroom_smoothing = float(self.headroom_smoothing_var.get())
if fft_size <= 0 or fft_size % 2: if fft_size <= 0 or fft_size % 2:
raise ValueError("power FFT size must be a positive even number") raise ValueError("power FFT size must be a positive even number")
if not 0.0 <= overlap < 1.0: if not 0.0 <= overlap < 1.0:
raise ValueError("power overlap must be >= 0 and < 1") raise ValueError("power overlap must be >= 0 and < 1")
if not 0.0 <= smoothing < 1.0: if not 0.0 <= smoothing < 1.0:
raise ValueError("power smoothing must be >= 0 and < 1") raise ValueError("power smoothing must be >= 0 and < 1")
if not 0.0 <= headroom_smoothing < 1.0:
raise ValueError("headroom smoothing must be >= 0 and < 1")
hop_size = int(round(fft_size * (1.0 - overlap))) hop_size = int(round(fft_size * (1.0 - overlap)))
if hop_size <= 0: if hop_size <= 0:
@@ -1011,9 +1126,10 @@ class LevelMonitorGUI:
names = {way.name for way in ways} names = {way.name for way in ways}
for name, row in self.power_rows.items(): for name, row in self.power_rows.items():
if name not in names: if name not in names:
for key in ("vdsp", "vamp", "p", "q", "s", "max_p"): for key in ("vdsp", "vamp", "p", "q", "s", "headroom", "crit_hz", "limit", "max_p"):
row[key].set("-") row[key].set("-")
row["meter"]["value"] = 0.0 row["meter"]["value"] = 0.0
row["meter"]["maximum"] = DEFAULT_POWER_CRITICAL_W
row["meter"].configure(style="PowerOk.Horizontal.TProgressbar") row["meter"].configure(style="PowerOk.Horizontal.TProgressbar")
row["light"].itemconfigure(row["light_id"], fill="#22a447") row["light"].itemconfigure(row["light_id"], fill="#22a447")
@@ -1021,6 +1137,8 @@ class LevelMonitorGUI:
self.power_buffers = {} self.power_buffers = {}
self.power_history = {} self.power_history = {}
self.power_max_hold_w = {} self.power_max_hold_w = {}
self.headroom_curves = {}
self.headroom_smoothed_db = {}
self.power_history_start_s = None self.power_history_start_s = None
self.power_hop_size = hop_size self.power_hop_size = hop_size
self.input_spectrum_estimators = {} self.input_spectrum_estimators = {}
@@ -1050,6 +1168,42 @@ class LevelMonitorGUI:
self.power_history[way.name] = [] self.power_history[way.name] = []
self.power_max_hold_w[way.name] = 0.0 self.power_max_hold_w[way.name] = 0.0
self._load_gui_winisd_curves()
def _load_gui_winisd_curves(self) -> None:
self.headroom_curves = {}
self.headroom_smoothed_db = {}
if not self.winisd_enabled_var.get():
self.winisd_status_var.set("WinISD headroom disabled.")
return
lf_estimator = self.power_estimators.get("LF")
if lf_estimator is None:
self.winisd_status_var.set("WinISD headroom disabled: LF way is not active.")
return
path = Path(self.winisd_max_power_var.get().strip() or WINISD_MAX_POWER_FILE)
try:
curve = WinISDLimitCurve.from_file(path, eps_w=HEADROOM_EPS_W)
except Exception as exc:
self.winisd_status_var.set(f"WinISD headroom disabled: {exc}")
return
self.headroom_curves["LF"] = curve
status = (
f"WinISD headroom active: {path}, "
f"{curve.frequency_hz[0]:.1f}-{curve.frequency_hz[-1]:.1f} Hz."
)
excursion_10w = WINISD_EXCURSION_10W_FILE
excursion_100w = WINISD_EXCURSION_100W_FILE
if excursion_10w.exists() and excursion_100w.exists():
try:
check = check_excursion_scaling(excursion_10w, excursion_100w)
status += " " + check.message
except Exception as exc:
status += f" Excursion check skipped: {exc}"
self.winisd_status_var.set(status)
def _process_input_spectrum_block(self, block) -> None: def _process_input_spectrum_block(self, block) -> None:
if np is None or not self.input_spectrum_estimators: if np is None or not self.input_spectrum_estimators:
return return
@@ -1109,20 +1263,64 @@ class LevelMonitorGUI:
row["p"].set(f"{latest.total_p_w:.1f} W") row["p"].set(f"{latest.total_p_w:.1f} W")
row["q"].set(f"{latest.total_q_var:.1f} var") row["q"].set(f"{latest.total_q_var:.1f} var")
row["s"].set(f"{latest.total_s_va:.1f} VA") row["s"].set(f"{latest.total_s_va:.1f} VA")
self._update_power_meter(name, latest.total_p_w) headroom = self._compute_gui_headroom(name, latest)
if headroom is None:
row["headroom"].set("-")
row["crit_hz"].set("-")
row["limit"].set("-")
else:
row["headroom"].set(f"{headroom['worst_headroom_db']:+.1f} dB")
row["crit_hz"].set(f"{headroom['critical_frequency_hz']:.1f}")
row["limit"].set(headroom["status"])
self._update_power_meter(name, latest.total_p_w, headroom)
self._append_power_history(name, latest) self._append_power_history(name, latest)
self.draw_power_history() self.draw_power_history()
def _update_power_meter(self, name: str, power_w: float) -> None: def _compute_gui_headroom(self, name: str, frame: PowerFrame) -> dict | None:
curve = self.headroom_curves.get(name)
if curve is None:
return None
headroom = curve.compute_headroom(frame.p_w_per_bin, frame.frequencies_hz)
raw = float(headroom["worst_headroom_db"])
try:
alpha = float(self.headroom_smoothing_var.get())
except ValueError:
alpha = HEADROOM_SMOOTHING_ALPHA
alpha = min(max(alpha, 0.0), 0.999999)
smoothed = smooth_headroom_db(self.headroom_smoothed_db.get(name), raw, alpha)
self.headroom_smoothed_db[name] = smoothed
headroom["worst_headroom_db"] = smoothed
headroom["status"] = headroom_status(smoothed)
headroom["over_limit_bool"] = bool(math.isfinite(smoothed) and smoothed <= 0.0)
return headroom
def _update_power_meter(self, name: str, power_w: float, headroom: dict | None = None) -> None:
row = self.power_rows.get(name) row = self.power_rows.get(name)
if row is None: if row is None:
return return
max_hold = max(self.power_max_hold_w.get(name, 0.0), float(power_w)) max_hold = max(self.power_max_hold_w.get(name, 0.0), float(power_w))
self.power_max_hold_w[name] = max_hold self.power_max_hold_w[name] = max_hold
meter_value = min(max(float(power_w), 0.0), DEFAULT_POWER_CRITICAL_W)
if headroom is not None and math.isfinite(float(headroom["critical_pmax_w"])):
critical_pmax = max(float(headroom["critical_pmax_w"]), HEADROOM_EPS_W)
critical_power = max(float(headroom["critical_power_w"]), 0.0)
meter_value = min((critical_power / critical_pmax) * 100.0, 100.0)
row["meter"]["maximum"] = 100.0
status = headroom["status"]
if status == "LIMIT EXCEEDED":
color = "#d62728"
style = "PowerCritical.Horizontal.TProgressbar"
elif status == "WARNING":
color = "#e6a400"
style = "PowerWarn.Horizontal.TProgressbar"
else:
color = "#22a447"
style = "PowerOk.Horizontal.TProgressbar"
else:
meter_value = min(max(float(power_w), 0.0), DEFAULT_POWER_CRITICAL_W)
row["meter"]["maximum"] = DEFAULT_POWER_CRITICAL_W
if power_w >= DEFAULT_POWER_CRITICAL_W: if power_w >= DEFAULT_POWER_CRITICAL_W:
color = "#d62728" color = "#d62728"
style = "PowerCritical.Horizontal.TProgressbar" style = "PowerCritical.Horizontal.TProgressbar"
@@ -1505,15 +1703,18 @@ class LevelMonitorGUI:
self.power_buffers = {} self.power_buffers = {}
self.power_history = {} self.power_history = {}
self.power_max_hold_w = {} self.power_max_hold_w = {}
self.headroom_curves = {}
self.headroom_smoothed_db = {}
self.power_history_start_s = None self.power_history_start_s = None
self.power_hop_size = 0 self.power_hop_size = 0
for row in self.input_metric_rows.values(): for row in self.input_metric_rows.values():
for value_var in row.values(): for value_var in row.values():
value_var.set("-") value_var.set("-")
for row in self.power_rows.values(): for row in self.power_rows.values():
for key in ("vdsp", "vamp", "p", "q", "s", "max_p"): for key in ("vdsp", "vamp", "p", "q", "s", "headroom", "crit_hz", "limit", "max_p"):
row[key].set("-") row[key].set("-")
row["meter"]["value"] = 0.0 row["meter"]["value"] = 0.0
row["meter"]["maximum"] = DEFAULT_POWER_CRITICAL_W
row["meter"].configure(style="PowerOk.Horizontal.TProgressbar") row["meter"].configure(style="PowerOk.Horizontal.TProgressbar")
row["light"].itemconfigure(row["light_id"], fill="#22a447") row["light"].itemconfigure(row["light_id"], fill="#22a447")
self.draw_spectrum_grid() self.draw_spectrum_grid()
@@ -1830,6 +2031,27 @@ def build_arg_parser() -> argparse.ArgumentParser:
default=DEFAULT_POWER_UPDATE_INTERVAL_S, default=DEFAULT_POWER_UPDATE_INTERVAL_S,
help=f"Power estimator console update interval. Default: {DEFAULT_POWER_UPDATE_INTERVAL_S:g}.", help=f"Power estimator console update interval. Default: {DEFAULT_POWER_UPDATE_INTERVAL_S:g}.",
) )
parser.add_argument(
"--winisd-max-power",
default=str(WINISD_MAX_POWER_FILE),
help=f"WinISD frequency-dependent max-power CSV for LF headroom. Default: {WINISD_MAX_POWER_FILE}.",
)
parser.add_argument(
"--disable-winisd-headroom",
action="store_true",
help="Disable WinISD max-power headroom monitoring.",
)
parser.add_argument(
"--headroom-smoothing-alpha",
type=float,
default=HEADROOM_SMOOTHING_ALPHA,
help=f"WinISD headroom smoothing alpha. Default: {HEADROOM_SMOOTHING_ALPHA:g}.",
)
parser.add_argument(
"--self-test-winisd",
action="store_true",
help="Run synthetic WinISD headroom tests and exit.",
)
parser.add_argument( parser.add_argument(
"--list-devices", "--list-devices",
action="store_true", action="store_true",
@@ -1869,9 +2091,21 @@ def main(argv: list[str] | None = None) -> int:
parser.error("--power-overlap must be >= 0 and < 1") parser.error("--power-overlap must be >= 0 and < 1")
if not 0.0 <= args.power_smoothing_alpha < 1.0: if not 0.0 <= args.power_smoothing_alpha < 1.0:
parser.error("--power-smoothing-alpha must be >= 0 and < 1") parser.error("--power-smoothing-alpha must be >= 0 and < 1")
if not 0.0 <= args.headroom_smoothing_alpha < 1.0:
parser.error("--headroom-smoothing-alpha must be >= 0 and < 1")
if args.samplerate is not None and args.samplerate <= 0: if args.samplerate is not None and args.samplerate <= 0:
parser.error("--samplerate must be positive") parser.error("--samplerate must be positive")
if args.self_test_winisd:
run_self_test()
for path in (Path(args.winisd_max_power), WINISD_EXCURSION_10W_FILE, WINISD_EXCURSION_100W_FILE):
if path.exists():
WinISDLimitCurve.from_file(path, eps_w=HEADROOM_EPS_W)
if WINISD_EXCURSION_10W_FILE.exists() and WINISD_EXCURSION_100W_FILE.exists():
print(check_excursion_scaling(WINISD_EXCURSION_10W_FILE, WINISD_EXCURSION_100W_FILE).message)
print("WinISD self-test OK")
return 0
sd = load_dependencies() sd = load_dependencies()
if args.list_devices: if args.list_devices:

124
winisd/excursion_100w.csv Normal file
View File

@@ -0,0 +1,124 @@
21,026346153846156; 12,256386445096123
22,587500000000002; 12,048781362007169
24,14865384615385; 11,842111436950148
25,70980769230769; 11,621414141414142
27,270961538461542; 11,411003584229391
28,832115384615385; 11,184695340501792
30,39326923076923; 10,958387096774194
31,954423076923078; 10,732078853046595
33,51557692307692; 10,505770609318997
35,00576923076923; 10,286663082437276
36,49596153846154; 10,053154121863798
37,98615384615385; 9,829931899641576
39,40538461538462; 9,609795698924732
40,824615384615385; 9,384516129032258
42,24384615384616; 9,158207885304659
43,66307692307693; 8,926756272401434
45,082307692307694; 8,696333333333333
46,43057692307693; 8,473568299482277
47,565961538461536; 8,279426523297492
49,69480769230769; 7,9367356359291845
51,043076923076924; 7,678974910394266
52,39134615384616; 7,442608522500995
53,66865384615385; 7,214014336917563
54,94596153846154; 6,983134209478296
56,152307692307694; 6,760112007168459
57,35865384615385; 6,5350896057347665
58,565000000000005; 6,304923835125448
59,70038461538462; 6,08633064516129
60,83576923076923; 5,8664516129032265
61,97115384615385; 5,644000896057348
63,10653846153846; 5,41769265232975
64,24192307692309; 5,18752688172043
65,3773076923077; 4,954789426523298
66,5126923076923; 4,720766129032258
67,57711538461538; 4,498315412186379
68,64153846153846; 4,273293010752688
69,70596153846154; 4,045698924731182
70,77038461538461; 3,8181048387096777
71,83480769230769; 3,593082437275985
72,82826923076924; 3,377060931899642
73,82173076923078; 3,1610394265232973
74,81519230769231; 2,9450179211469525
75,80865384615385; 2,7289964157706095
76,87307692307692; 2,5065456989247306
78,00846153846155; 2,266093189964158
79,14384615384616; 2,035927419354838
80,27923076923076; 1,8134767025089609
81,48557692307693; 1,5883114297092789
82,83384615384617; 1,3639462365591388
84,32403846153846; 1,1738286086673178
85,88519230769231; 1,0531932225480602
87,44634615384615; 1,0335549038774854
89,0075; 1,099951124144674
90,56865384615384; 1,2486412512218958
92,12980769230771; 1,440348647768003
93,69096153846155; 1,6479537308569583
95,2521153846154; 1,8574291300097752
96,81326923076924; 2,0612935809710002
98,37442307692308; 2,2501955034213097
99,93557692307692; 2,4260052134245687
101,49673076923077; 2,584982078853047
103,05788461538461; 2,7224503095470833
104,61903846153848; 2,847761485826002
106,18019230769232; 2,950628869338546
107,74134615384617; 3,0385337243401747
109,30250000000001; 3,1096057347670243
110,86365384615385; 3,1675855327468234
112,4248076923077; 3,2049918540241116
113,98596153846154; 3,236787227109806
115,54711538461538; 3,253620071684587
117,10826923076922; 3,253620071684587
118,6694230769231; 3,253620071684587
120,23057692307694; 3,2377223851417405
121,79173076923078; 3,216213750407297
123,35288461538462; 3,185353535353535
124,91403846153847; 3,1507526881720427
126,47519230769231; 3,1114760508308894
128,03634615384615; 3,0665884652981426
129,5975; 3,020765721733463
131,15865384615384; 2,967461713913327
132,7198076923077; 2,9141577060931905
134,28096153846155; 2,8580482241772565
135,8421153846154; 2,80100358422939
137,40326923076924; 2,740218312153795
138,96442307692308; 2,680368198110134
140,52557692307693; 2,6186477680026066
142,08673076923077; 2,556927337895079
143,6478846153846; 2,495206907787553
145,20903846153846; 2,4316161616161605
146,7701923076923; 2,3698957315086346
148,33134615384614; 2,308175301401107
149,8925; 2,2464548712935795
151,45365384615386; 2,1847344411860536
153,0148076923077; 2,124884327142391
154,57596153846154; 2,0650342130987305
156,13711538461538; 2,003313782991203
157,69826923076923; 1,9472043010752689
159,25942307692307; 1,8910948191593349
160,8205769230769; 1,83405017921147
162,38173076923076; 1,7770055392636035
163,94288461538463; 1,724636689475398
165,50403846153847; 1,6713326816552634
167,0651923076923; 1,6198989898989904
168,62634615384616; 1,5684652981427174
170,1875; 1,5189019224503078
171,74865384615384; 1,4693385467579017
173,3098076923077; 1,4244509612251548
174,87096153846153; 1,3758227435646795
176,43211538461537; 1,3309351580319309
177,99326923076924; 1,2888530465949817
179,5544230769231; 1,2449006190941674
181,11557692307693; 1,203753665689149
182,67673076923077; 1,1626067122841324
184,23788461538462; 1,1242652329749099
185,79903846153846; 1,0859237536656892
187,3601923076923; 1,048517432388401
188,92134615384614; 1,0129814271749762
190,4825; 0,9783805799934822
192,04365384615386; 0,9437797328119917
193,6048076923077; 0,9138546757901587
195,16596153846154; 0,8792538286086682
196,7271153846154; 0,8502639296187677
198,28826923076923; 0,8175333985011406
199,4946153846154; 0,7968040621266432
1 21 026346153846156; 12 256386445096123
2 22 587500000000002; 12 048781362007169
3 24 14865384615385; 11 842111436950148
4 25 70980769230769; 11 621414141414142
5 27 270961538461542; 11 411003584229391
6 28 832115384615385; 11 184695340501792
7 30 39326923076923; 10 958387096774194
8 31 954423076923078; 10 732078853046595
9 33 51557692307692; 10 505770609318997
10 35 00576923076923; 10 286663082437276
11 36 49596153846154; 10 053154121863798
12 37 98615384615385; 9 829931899641576
13 39 40538461538462; 9 609795698924732
14 40 824615384615385; 9 384516129032258
15 42 24384615384616; 9 158207885304659
16 43 66307692307693; 8 926756272401434
17 45 082307692307694; 8 696333333333333
18 46 43057692307693; 8 473568299482277
19 47 565961538461536; 8 279426523297492
20 49 69480769230769; 7 9367356359291845
21 51 043076923076924; 7 678974910394266
22 52 39134615384616; 7 442608522500995
23 53 66865384615385; 7 214014336917563
24 54 94596153846154; 6 983134209478296
25 56 152307692307694; 6 760112007168459
26 57 35865384615385; 6 5350896057347665
27 58 565000000000005; 6 304923835125448
28 59 70038461538462; 6 08633064516129
29 60 83576923076923; 5 8664516129032265
30 61 97115384615385; 5 644000896057348
31 63 10653846153846; 5 41769265232975
32 64 24192307692309; 5 18752688172043
33 65 3773076923077; 4 954789426523298
34 66 5126923076923; 4 720766129032258
35 67 57711538461538; 4 498315412186379
36 68 64153846153846; 4 273293010752688
37 69 70596153846154; 4 045698924731182
38 70 77038461538461; 3 8181048387096777
39 71 83480769230769; 3 593082437275985
40 72 82826923076924; 3 377060931899642
41 73 82173076923078; 3 1610394265232973
42 74 81519230769231; 2 9450179211469525
43 75 80865384615385; 2 7289964157706095
44 76 87307692307692; 2 5065456989247306
45 78 00846153846155; 2 266093189964158
46 79 14384615384616; 2 035927419354838
47 80 27923076923076; 1 8134767025089609
48 81 48557692307693; 1 5883114297092789
49 82 83384615384617; 1 3639462365591388
50 84 32403846153846; 1 1738286086673178
51 85 88519230769231; 1 0531932225480602
52 87 44634615384615; 1 0335549038774854
53 89 0075; 1 099951124144674
54 90 56865384615384; 1 2486412512218958
55 92 12980769230771; 1 440348647768003
56 93 69096153846155; 1 6479537308569583
57 95 2521153846154; 1 8574291300097752
58 96 81326923076924; 2 0612935809710002
59 98 37442307692308; 2 2501955034213097
60 99 93557692307692; 2 4260052134245687
61 101 49673076923077; 2 584982078853047
62 103 05788461538461; 2 7224503095470833
63 104 61903846153848; 2 847761485826002
64 106 18019230769232; 2 950628869338546
65 107 74134615384617; 3 0385337243401747
66 109 30250000000001; 3 1096057347670243
67 110 86365384615385; 3 1675855327468234
68 112 4248076923077; 3 2049918540241116
69 113 98596153846154; 3 236787227109806
70 115 54711538461538; 3 253620071684587
71 117 10826923076922; 3 253620071684587
72 118 6694230769231; 3 253620071684587
73 120 23057692307694; 3 2377223851417405
74 121 79173076923078; 3 216213750407297
75 123 35288461538462; 3 185353535353535
76 124 91403846153847; 3 1507526881720427
77 126 47519230769231; 3 1114760508308894
78 128 03634615384615; 3 0665884652981426
79 129 5975; 3 020765721733463
80 131 15865384615384; 2 967461713913327
81 132 7198076923077; 2 9141577060931905
82 134 28096153846155; 2 8580482241772565
83 135 8421153846154; 2 80100358422939
84 137 40326923076924; 2 740218312153795
85 138 96442307692308; 2 680368198110134
86 140 52557692307693; 2 6186477680026066
87 142 08673076923077; 2 556927337895079
88 143 6478846153846; 2 495206907787553
89 145 20903846153846; 2 4316161616161605
90 146 7701923076923; 2 3698957315086346
91 148 33134615384614; 2 308175301401107
92 149 8925; 2 2464548712935795
93 151 45365384615386; 2 1847344411860536
94 153 0148076923077; 2 124884327142391
95 154 57596153846154; 2 0650342130987305
96 156 13711538461538; 2 003313782991203
97 157 69826923076923; 1 9472043010752689
98 159 25942307692307; 1 8910948191593349
99 160 8205769230769; 1 83405017921147
100 162 38173076923076; 1 7770055392636035
101 163 94288461538463; 1 724636689475398
102 165 50403846153847; 1 6713326816552634
103 167 0651923076923; 1 6198989898989904
104 168 62634615384616; 1 5684652981427174
105 170 1875; 1 5189019224503078
106 171 74865384615384; 1 4693385467579017
107 173 3098076923077; 1 4244509612251548
108 174 87096153846153; 1 3758227435646795
109 176 43211538461537; 1 3309351580319309
110 177 99326923076924; 1 2888530465949817
111 179 5544230769231; 1 2449006190941674
112 181 11557692307693; 1 203753665689149
113 182 67673076923077; 1 1626067122841324
114 184 23788461538462; 1 1242652329749099
115 185 79903846153846; 1 0859237536656892
116 187 3601923076923; 1 048517432388401
117 188 92134615384614; 1 0129814271749762
118 190 4825; 0 9783805799934822
119 192 04365384615386; 0 9437797328119917
120 193 6048076923077; 0 9138546757901587
121 195 16596153846154; 0 8792538286086682
122 196 7271153846154; 0 8502639296187677
123 198 28826923076923; 0 8175333985011406
124 199 4946153846154; 0 7968040621266432

226
winisd/excursion_10w.csv Normal file
View File

@@ -0,0 +1,226 @@
20,19701646455929; 3,9154911544506223
21,050168068474605; 3,879470281827402
21,903283539505352; 3,844592011309437
22,756471276305234; 3,80742853658096
23,609677079547396; 3,7696937607998553
24,462792550578143; 3,7348154902818904
25,316016420262592; 3,6965094134481573
26,169204157062474; 3,6593459387196807
27,022391893862352; 3,6221824639912037
27,875615763546797; 3,5838763871574706
28,72887576611581; 3,5444277082184814
29,582027370031124; 3,5084068355952605
30,435341571926983; 3,4672442534983867
31,28863770738056; 3,426652972454142
32,14175317841131; 3,391774701936177
32,99506738030717; 3,3506121198393037
33,84838158220303; 3,30944953774243
34,70169578409889; 3,268286955645557
35,555009985994744; 3,2271243735486834
36,40832418789061; 3,1859617914518097
37,26163838978647; 3,144799209354937
38,114952591682325; 3,103636627258063
38,96826679357818; 3,06247404516119
39,82158099547404; 3,021311463064316
40,60378568054524; 2,9835790961421824
41,31507596636845; 2,9431068930264046
42,09730233117039; 2,904688964841117
42,95061653306625; 2,8635263827442436
43,732972976252626; 2,8209950869800338
44,51524270051605; 2,7812060362684385
45,29751242477947; 2,7414169855568438
46,07986886796585; 2,698885689792634
46,86218195169075; 2,6577255165547315
47,64449503541566; 2,616565343316829
48,426894838063504; 2,572662925026312
49,13807672523302; 2,5356185282263026
49,92043316841939; 2,4930872324620927
50,70283297106725; 2,4491848141715757
51,41410157715971; 2,409398172318952
52,12537018325217; 2,3696115304663277
52,83663878934463; 2,329824888613704
53,54790739543711; 2,29003824676108
54,25921936099104; 2,248880482382148
54,970531326544986; 2,2077227180032173
55,68184329209893; 2,1665649536242855
56,39319861711435; 2,124036066719047
57,10455394212977; 2,081507179813808
57,815865907683715; 2,040349415434877
58,527221232699134; 1,9978205285296382
59,23859823744529; 1,9546060803612457
59,95001860165293; 1,9100205096665457
60,59024815004564; 1,8714360088834119
61,23053189776519; 1,831137604942394
61,94195226197283; 1,786552034247694
62,65337262618047; 1,7419664635529943
63,36479299038811; 1,6973808928582943
64,00510383777109; 1,6562255373383339
64,64541468515408; 1,6150701818183735
65,28572553253706; 1,573914826298413
65,85495396275881; 1,5353327343742502
66,4241281936537; 1,4984645456079715
66,99330242454862; 1,4615963568416928
67,56253085477037; 1,4230142649175295
68,13170508566527; 1,3861460761512507
68,70093351588702; 1,347563984227088
69,27016194610877; 1,308981892302925
69,83939037633053; 1,2703998003787618
70,40859170688886; 1,2326746600335405
70,97782013711061; 1,1940925681093777
71,54710276665921; 1,1537965730273307
72,11624989789068; 1,117785335839994
72,68547832811244; 1,0792032439158312
73,25481515698789; 1,0371933456758997
73,82401648754622; 0,9994682053306789
74,39324491776797; 0,9608861134065156
74,96252754731657; 0,9205901183244682
75,5317288778749; 0,8828649779792475
76,10095730809664; 0,8442828860550842
76,6701857383184; 0,8057007941309218
77,23941416854015; 0,7671187022067585
77,80858839943505; 0,7302505134404793
78,44889924681803; 0,6890951579205193
79,08921009420101; 0,6479398024005585
79,729520941584; 0,6067844468805985
80,44087626659942; 0,5642555599753596
81,15223159161484; 0,5217266730701215
81,8635001977073; 0,48194003121749684
82,64576992197073; 0,44215098050590207
83,49902992453974; 0,40270230156691333
84,35203699691678; 0,3712518373647171
85,20482727198645; 0,34665698579405824
86,05732848397959; 0,33120295106544795
86,90952256645392; 0,3254610342315143
87,76142758585172; 0,3288599342396301
88,61302547573072; 0,34197095214242346
89,4643523689755; 0,36365148583463824
90,31549859779743; 0,3910450300531334
91,16653642796567; 0,42186638058739767
92,01748392592249; 0,45554423638480124
92,86839529099475; 0,4903646942874609
93,71923439029788; 0,5274703564006327
94,57009155604331; 0,5640047174611773
95,42098485467328; 0,599396476416465
96,27187815330326; 0,6347882353717527
97,12282565126009; 0,6684660911691571
97,9737912156592; 0,7015726459139326
98,82481097938515; 0,732965297500825
99,67588494243796; 0,7626440459298331
100,52695890549076; 0,7923227943588396
101,37814126719728; 0,8185737364720787
102,22937782823061; 0,8431107754274336
103,08065052214855; 0,8665052122775316
103,93201354827787; 0,8870431438644903
104,7833765744072; 0,9075810754514482
105,63477573342108; 0,9269764049331508
106,48628329108868; 0,9429439280990843
107,33779084875627; 0,9589114512650179
108,189370672193; 0,9725937702204392
109,04098662851428; 0,9851334870706046
109,89271098348927; 0,9942453976050007
110,74439920557967; 1,004499910244654
111,59615969343923; 1,012469218673795
112,4479924470679; 1,0181533228924229
113,29982520069659; 1,0238374271110517
114,15169408720982; 1,0283789292244245
115,00363523949221; 1,0306352271272843
115,85564865754371; 1,0306063208196319
116,70766207559522; 1,0305774145119795
117,55967549364672; 1,030548508204327
118,41168891169823; 1,0305196018966747
119,26370232974973; 1,0304906955890223
120,11580608001265; 1,0276052840182297
120,96794596316013; 1,023577270342181
121,82008584630762; 1,0195492566661324
122,67224379589739; 1,0149499419374557
123,52441981192943; 1,009779326156151
124,37663196084604; 1,0034661082695902
125,22886217620496; 0,9965815893304004
126,08109239156384; 0,9896970703912116
126,93332260692274; 0,9828125514520218
127,78557088872392; 0,975356731460205
128,63785530340968; 0,9667583093631311
129,49012165165314; 0,9587311883186871
130,34242413278116; 0,9495614651689852
131,19470854746692; 0,9409630430719114
132,04702909503723; 0,9312220188695823
132,89933157616525; 0,9220522957198805
133,75165212373557; 0,9123112715175514
134,60397267130588; 0,9025702473152206
135,45632935176076; 0,8916866210076355
136,30864989933107; 0,8819455968053056
137,16100657978595; 0,8710619704977214
138,01332712735626; 0,8613209462953915
138,86568380781114; 0,8504373199878064
139,71800435538145; 0,8406962957854756
140,57036103583633; 0,8298126694778905
141,42273578273347; 0,8183577421176764
142,27509246318837; 0,8074741158100913
143,12741301075866; 0,7977330916077605
143,97980582409812; 0,7857068631949193
144,832162504553; 0,7748232368873342
145,6844830521233; 0,7650822126850043
146,53683973257816; 0,7541985863774192
147,38921447947533; 0,7427436590172052
148,2415711599302; 0,7318600327096201
149,09389170750055; 0,7221190085072893
149,9462483879554; 0,7112353821997042
150,79860506841027; 0,7003517558921182
151,65096174886517; 0,6894681295845322
152,50331842932005; 0,678584503276948
153,3555667111212; 0,6711286832851302
154,25047347644028; 0,6618432546095203
155,0602620055887; 0,6499327317225863
155,91267288537043; 0,637335202257117
156,7649934329407; 0,6275941780547871
157,6173501133956; 0,616710551747202
158,46963452808134; 0,6081121296501282
159,32195507565166; 0,5983711054477983
160,17431175610653; 0,587487479140214
161,02661423723455; 0,5783177559905122
161,87893478480487; 0,5685767317881831
162,73125533237518; 0,5588357075858523
163,5835397470609; 0,5502372854887794
164,43586029463123; 0,5404962612864495
165,28816277575928; 0,5313265381367485
166,14044719044503; 0,5227281160396746
166,99276773801532; 0,5129870918373456
167,84503408625878; 0,5049599707929007
168,69733656738683; 0,4957902476431988
169,5496029156303; 0,48776312659875387
170,4019053967583; 0,478593403449052
171,25417174500177; 0,4705662824046071
172,10643809324523; 0,46253916136016127
172,95870444148872; 0,45451204031571635
173,81098885617445; 0,4459136182186425
174,6632732708602; 0,43731519612156955
175,51553961910366; 0,42928807507712463
176,36776983446256; 0,4224035561379358
177,220036182706; 0,41437643509349
178,0723025309495; 0,40634931404904506
178,9245327463084; 0,39946479510985533
179,7767629616673; 0,3925802761706665
180,62902930991072; 0,3845531551262207
181,48125952526962; 0,37766863618703184
182,33348974062855; 0,3707841172478421
183,18571995598745; 0,36389959830865415
184,03795017134632; 0,3570150793694644
184,89018038670523; 0,3501305604302756
185,74241060206413; 0,34324604149108673
186,59460468453847; 0,33750412465715307
187,44683489989734; 0,33061960571796334
188,29902898237168; 0,32487768888403057
189,15125919773058; 0,31799316994484084
190,00345328020492; 0,31225125311090896
190,85564736267924; 0,3065093362769762
191,70784144515358; 0,3007674194430425
192,5600535940702; 0,2944542015564817
193,41226574298682; 0,2881409836699209
194,26442369257657; 0,28354166894124333
195,1166177750509; 0,27779975210731056
195,9687757246407; 0,273200437378633
196,82098787355727; 0,26688721949207217
197,67316388958935; 0,26171660371076744
198,52532183917913; 0,25711728898209163
199,37747978876888; 0,25251797425341405
199,8746863468307; 0,24621680066170804
1 20 19701646455929; 3 9154911544506223
2 21 050168068474605; 3 879470281827402
3 21 903283539505352; 3 844592011309437
4 22 756471276305234; 3 80742853658096
5 23 609677079547396; 3 7696937607998553
6 24 462792550578143; 3 7348154902818904
7 25 316016420262592; 3 6965094134481573
8 26 169204157062474; 3 6593459387196807
9 27 022391893862352; 3 6221824639912037
10 27 875615763546797; 3 5838763871574706
11 28 72887576611581; 3 5444277082184814
12 29 582027370031124; 3 5084068355952605
13 30 435341571926983; 3 4672442534983867
14 31 28863770738056; 3 426652972454142
15 32 14175317841131; 3 391774701936177
16 32 99506738030717; 3 3506121198393037
17 33 84838158220303; 3 30944953774243
18 34 70169578409889; 3 268286955645557
19 35 555009985994744; 3 2271243735486834
20 36 40832418789061; 3 1859617914518097
21 37 26163838978647; 3 144799209354937
22 38 114952591682325; 3 103636627258063
23 38 96826679357818; 3 06247404516119
24 39 82158099547404; 3 021311463064316
25 40 60378568054524; 2 9835790961421824
26 41 31507596636845; 2 9431068930264046
27 42 09730233117039; 2 904688964841117
28 42 95061653306625; 2 8635263827442436
29 43 732972976252626; 2 8209950869800338
30 44 51524270051605; 2 7812060362684385
31 45 29751242477947; 2 7414169855568438
32 46 07986886796585; 2 698885689792634
33 46 86218195169075; 2 6577255165547315
34 47 64449503541566; 2 616565343316829
35 48 426894838063504; 2 572662925026312
36 49 13807672523302; 2 5356185282263026
37 49 92043316841939; 2 4930872324620927
38 50 70283297106725; 2 4491848141715757
39 51 41410157715971; 2 409398172318952
40 52 12537018325217; 2 3696115304663277
41 52 83663878934463; 2 329824888613704
42 53 54790739543711; 2 29003824676108
43 54 25921936099104; 2 248880482382148
44 54 970531326544986; 2 2077227180032173
45 55 68184329209893; 2 1665649536242855
46 56 39319861711435; 2 124036066719047
47 57 10455394212977; 2 081507179813808
48 57 815865907683715; 2 040349415434877
49 58 527221232699134; 1 9978205285296382
50 59 23859823744529; 1 9546060803612457
51 59 95001860165293; 1 9100205096665457
52 60 59024815004564; 1 8714360088834119
53 61 23053189776519; 1 831137604942394
54 61 94195226197283; 1 786552034247694
55 62 65337262618047; 1 7419664635529943
56 63 36479299038811; 1 6973808928582943
57 64 00510383777109; 1 6562255373383339
58 64 64541468515408; 1 6150701818183735
59 65 28572553253706; 1 573914826298413
60 65 85495396275881; 1 5353327343742502
61 66 4241281936537; 1 4984645456079715
62 66 99330242454862; 1 4615963568416928
63 67 56253085477037; 1 4230142649175295
64 68 13170508566527; 1 3861460761512507
65 68 70093351588702; 1 347563984227088
66 69 27016194610877; 1 308981892302925
67 69 83939037633053; 1 2703998003787618
68 70 40859170688886; 1 2326746600335405
69 70 97782013711061; 1 1940925681093777
70 71 54710276665921; 1 1537965730273307
71 72 11624989789068; 1 117785335839994
72 72 68547832811244; 1 0792032439158312
73 73 25481515698789; 1 0371933456758997
74 73 82401648754622; 0 9994682053306789
75 74 39324491776797; 0 9608861134065156
76 74 96252754731657; 0 9205901183244682
77 75 5317288778749; 0 8828649779792475
78 76 10095730809664; 0 8442828860550842
79 76 6701857383184; 0 8057007941309218
80 77 23941416854015; 0 7671187022067585
81 77 80858839943505; 0 7302505134404793
82 78 44889924681803; 0 6890951579205193
83 79 08921009420101; 0 6479398024005585
84 79 729520941584; 0 6067844468805985
85 80 44087626659942; 0 5642555599753596
86 81 15223159161484; 0 5217266730701215
87 81 8635001977073; 0 48194003121749684
88 82 64576992197073; 0 44215098050590207
89 83 49902992453974; 0 40270230156691333
90 84 35203699691678; 0 3712518373647171
91 85 20482727198645; 0 34665698579405824
92 86 05732848397959; 0 33120295106544795
93 86 90952256645392; 0 3254610342315143
94 87 76142758585172; 0 3288599342396301
95 88 61302547573072; 0 34197095214242346
96 89 4643523689755; 0 36365148583463824
97 90 31549859779743; 0 3910450300531334
98 91 16653642796567; 0 42186638058739767
99 92 01748392592249; 0 45554423638480124
100 92 86839529099475; 0 4903646942874609
101 93 71923439029788; 0 5274703564006327
102 94 57009155604331; 0 5640047174611773
103 95 42098485467328; 0 599396476416465
104 96 27187815330326; 0 6347882353717527
105 97 12282565126009; 0 6684660911691571
106 97 9737912156592; 0 7015726459139326
107 98 82481097938515; 0 732965297500825
108 99 67588494243796; 0 7626440459298331
109 100 52695890549076; 0 7923227943588396
110 101 37814126719728; 0 8185737364720787
111 102 22937782823061; 0 8431107754274336
112 103 08065052214855; 0 8665052122775316
113 103 93201354827787; 0 8870431438644903
114 104 7833765744072; 0 9075810754514482
115 105 63477573342108; 0 9269764049331508
116 106 48628329108868; 0 9429439280990843
117 107 33779084875627; 0 9589114512650179
118 108 189370672193; 0 9725937702204392
119 109 04098662851428; 0 9851334870706046
120 109 89271098348927; 0 9942453976050007
121 110 74439920557967; 1 004499910244654
122 111 59615969343923; 1 012469218673795
123 112 4479924470679; 1 0181533228924229
124 113 29982520069659; 1 0238374271110517
125 114 15169408720982; 1 0283789292244245
126 115 00363523949221; 1 0306352271272843
127 115 85564865754371; 1 0306063208196319
128 116 70766207559522; 1 0305774145119795
129 117 55967549364672; 1 030548508204327
130 118 41168891169823; 1 0305196018966747
131 119 26370232974973; 1 0304906955890223
132 120 11580608001265; 1 0276052840182297
133 120 96794596316013; 1 023577270342181
134 121 82008584630762; 1 0195492566661324
135 122 67224379589739; 1 0149499419374557
136 123 52441981192943; 1 009779326156151
137 124 37663196084604; 1 0034661082695902
138 125 22886217620496; 0 9965815893304004
139 126 08109239156384; 0 9896970703912116
140 126 93332260692274; 0 9828125514520218
141 127 78557088872392; 0 975356731460205
142 128 63785530340968; 0 9667583093631311
143 129 49012165165314; 0 9587311883186871
144 130 34242413278116; 0 9495614651689852
145 131 19470854746692; 0 9409630430719114
146 132 04702909503723; 0 9312220188695823
147 132 89933157616525; 0 9220522957198805
148 133 75165212373557; 0 9123112715175514
149 134 60397267130588; 0 9025702473152206
150 135 45632935176076; 0 8916866210076355
151 136 30864989933107; 0 8819455968053056
152 137 16100657978595; 0 8710619704977214
153 138 01332712735626; 0 8613209462953915
154 138 86568380781114; 0 8504373199878064
155 139 71800435538145; 0 8406962957854756
156 140 57036103583633; 0 8298126694778905
157 141 42273578273347; 0 8183577421176764
158 142 27509246318837; 0 8074741158100913
159 143 12741301075866; 0 7977330916077605
160 143 97980582409812; 0 7857068631949193
161 144 832162504553; 0 7748232368873342
162 145 6844830521233; 0 7650822126850043
163 146 53683973257816; 0 7541985863774192
164 147 38921447947533; 0 7427436590172052
165 148 2415711599302; 0 7318600327096201
166 149 09389170750055; 0 7221190085072893
167 149 9462483879554; 0 7112353821997042
168 150 79860506841027; 0 7003517558921182
169 151 65096174886517; 0 6894681295845322
170 152 50331842932005; 0 678584503276948
171 153 3555667111212; 0 6711286832851302
172 154 25047347644028; 0 6618432546095203
173 155 0602620055887; 0 6499327317225863
174 155 91267288537043; 0 637335202257117
175 156 7649934329407; 0 6275941780547871
176 157 6173501133956; 0 616710551747202
177 158 46963452808134; 0 6081121296501282
178 159 32195507565166; 0 5983711054477983
179 160 17431175610653; 0 587487479140214
180 161 02661423723455; 0 5783177559905122
181 161 87893478480487; 0 5685767317881831
182 162 73125533237518; 0 5588357075858523
183 163 5835397470609; 0 5502372854887794
184 164 43586029463123; 0 5404962612864495
185 165 28816277575928; 0 5313265381367485
186 166 14044719044503; 0 5227281160396746
187 166 99276773801532; 0 5129870918373456
188 167 84503408625878; 0 5049599707929007
189 168 69733656738683; 0 4957902476431988
190 169 5496029156303; 0 48776312659875387
191 170 4019053967583; 0 478593403449052
192 171 25417174500177; 0 4705662824046071
193 172 10643809324523; 0 46253916136016127
194 172 95870444148872; 0 45451204031571635
195 173 81098885617445; 0 4459136182186425
196 174 6632732708602; 0 43731519612156955
197 175 51553961910366; 0 42928807507712463
198 176 36776983446256; 0 4224035561379358
199 177 220036182706; 0 41437643509349
200 178 0723025309495; 0 40634931404904506
201 178 9245327463084; 0 39946479510985533
202 179 7767629616673; 0 3925802761706665
203 180 62902930991072; 0 3845531551262207
204 181 48125952526962; 0 37766863618703184
205 182 33348974062855; 0 3707841172478421
206 183 18571995598745; 0 36389959830865415
207 184 03795017134632; 0 3570150793694644
208 184 89018038670523; 0 3501305604302756
209 185 74241060206413; 0 34324604149108673
210 186 59460468453847; 0 33750412465715307
211 187 44683489989734; 0 33061960571796334
212 188 29902898237168; 0 32487768888403057
213 189 15125919773058; 0 31799316994484084
214 190 00345328020492; 0 31225125311090896
215 190 85564736267924; 0 3065093362769762
216 191 70784144515358; 0 3007674194430425
217 192 5600535940702; 0 2944542015564817
218 193 41226574298682; 0 2881409836699209
219 194 26442369257657; 0 28354166894124333
220 195 1166177750509; 0 27779975210731056
221 195 9687757246407; 0 273200437378633
222 196 82098787355727; 0 26688721949207217
223 197 67316388958935; 0 26171660371076744
224 198 52532183917913; 0 25711728898209163
225 199 37747978876888; 0 25251797425341405
226 199 8746863468307; 0 24621680066170804

658
winisd/max_power.csv Normal file
View File

@@ -0,0 +1,658 @@
20,07332894765222; 41,2018918697496
20,499908332075144; 42,3559513231113
20,92648771649807; 42,81757510445607
21,353067100920992; 42,81757510445607
21,779646485343914; 43,27919888580084
22,20622586976684; 44,202446448490264
22,632805254189762; 44,202446448490264
23,059384638612684; 44,202446448490264
23,485964023035606; 45,58731779252446
23,912543407458532; 45,58731779252446
24,339122791881458; 45,58731779252446
24,76570217630438; 46,510565355213885
25,192281560727302; 46,972189136558654
25,618860945150224; 46,972189136558654
26,04544032957315; 48,35706048059285
26,472019713996072; 48,35706048059285
26,898599098418998; 48,35706048059285
27,32517848284192; 49,741931824627045
27,751757867264843; 49,741931824627045
28,178337251687765; 50,203555605971815
28,60491663611069; 51,12680316866124
29,031496020533616; 51,12680316866124
29,45807540495654; 52,511674512695436
29,88465478937946; 52,511674512695436
30,311234173802383; 53,43492207538475
30,737813558225305; 53,89654585672952
31,16439294264823; 54,3581696380744
31,590972327071153; 55,28141720076371
32,01755171149408; 55,28141720076371
32,444131095917; 56,66628854479791
32,87071048033992; 56,66628854479791
33,297289864762845; 58,0511598888321
33,72386924918577; 58,0511598888321
34,1504486336087; 59,4360312328663
34,57702801803162; 59,4360312328663
35,00360740245454; 60,820902576900494
35,43018678687747; 61,28252635824526
35,85676617130039; 62,20577392093469
36,283345555723315; 63,129021483624115
36,70992494014624; 63,590645264968884
37,13650432456916; 64,97551660900308
37,56308370899208; 65,43714039034785
37,989663093415004; 66,36038795303716
38,416242477837926; 67,28363551572659
38,84282186226085; 68,20688307841613
39,26940124668378; 69,13013064110555
39,6959806311067; 70,05337820379498
40,12256001552962; 70,97662576648452
40,54913939995255; 71,89987332917394
40,97571878437547; 73,28474467320814
41,402298168798396; 74,20799223589756
41,82887755322132; 75,1312397985871
42,25545693764424; 76,5161111426213
42,68203632206716; 77,43935870531061
43,108615706490085; 78,8242300493448
43,53519509091301; 80,209101393379
43,961774475335936; 81,13234895606843
44,38835385975886; 82,51722030010262
44,81493324418178; 83,90209164413682
45,24151262860471; 85,28696298817101
45,66809201302763; 86,67183433220521
46,094671397450554; 88,05670567623929
46,521250781873476; 89,44157702027348
46,9478301662964; 90,82644836430768
47,37440955071932; 92,67294348968665
47,80098893514224; 94,51943861506561
48,22756831956517; 95,9043099590998
48,654147703988095; 97,75080508447866
49,08072708841102; 99,13567642851285
49,50730647283394; 101,44379533523659
49,93388585725686; 103,29029046061532
50,36046524167978; 104,67516180464952
50,78704462610271; 106,98328071137325
51,213624010525635; 108,8297758367521
51,64020339494856; 111,36870663414811
52,06678277937148; 113,90763743154423
52,4933621637944; 115,98494444759547
52,919941548217324; 118,52387524499136
53,34652093264025; 121,06280604238736
53,773100317063175; 123,60173683978348
54,1996797014861; 126,14066763717938
54,62625908590902; 128,91041032524777
55,05283847033194; 131,91096490398854
55,47941785475487; 135,1423313734016
55,90599723917779; 138,14288595214236
56,332576623600715; 141,6050643122278
56,75915600802364; 144,83643078164084
57,18573539244656; 148,76023292307104
57,61231477686948; 151,9915993924842
58,03889416129241; 155,68458964324202
58,465473545715334; 159,8392036753445
58,892052930138256; 163,99381770744708
59,31863231456118; 167,68680795820478
59,603018570843126; 172,30304577165214
60,02959795526605; 176,45765980375472
60,420629057653734; 180,95849167186577
60,83535901473157; 185,6901354306492
61,16714298039385; 189,8447494627518
61,451529236675796; 194,46098727619903
61,842560339063475; 198,61560130830162
62,16249487738067; 203,69346290309363
62,446881133662615; 207,8480769351961
62,73126738994457; 212,0026909672987
62,96825593684619; 216,15730499940128
63,300039902508466; 220,77354281284852
63,584426158790414; 226,3130281889853
63,86881241507236; 231,3908897837772
64,15319867135432; 236,00712759722455
64,43758492763627; 241,54661297336133
64,72197118391821; 247,086098349498
64,95895973081983; 252,16395994429
65,29074369648211; 259,3768315278014
65,14855056834114; 254,70289074168602
65,52773224338372; 264,62780204059766
65,81211849966569; 271,32134687009625
65,71732308090503; 267,16673283799366
66,09650475594763; 278,2457035902671
66,00170933718698; 274,0910895581645
66,38089101222958; 285,170060310438
66,28609559346893; 281,0154462783355
66,66527726851153; 292,09441703060895
66,57048184975088; 287,93980299850637
66,92596467010331; 298,3263380787628
66,85486810603282; 294,86415971867734
67,06815779824429; 302,48095211086536
67,21035092638526; 306,63556614296783
67,35254405452623; 310,7901801750704
67,49473718266722; 314,944794207173
67,6369303108082; 319,0994082392755
67,77912343894917; 323,25402227137806
67,99241313116062; 328,3318838661701
68,13460625930159; 332,9481216796173
68,27679938744257; 338,0259832744093
68,41899251558354; 342,64222108785657
68,56118564372451; 347,7200826826486
68,63228220779501; 351,6438848240788
68,84557190000646; 357,0102612822112
68,98776502814744; 362,9536674670246
69,05886159221794; 366,8774696084548
69,22475357504908; 371,49370742190206
69,36694670319005; 377,0331927980387
69,50913983133103; 382,5726781741755
69,651332959472; 388,80459922232933
69,79352608761297; 394,8057083798109
69,93571921575395; 401,268441318637
70,07791234389492; 407,2695504761185
70,26750318141622; 414,3093131416256
70,40969630955719; 421,23366986179644
70,55188943769816; 428,1580265819674
70,69408256583914; 435,0823833021383
70,83627569398011; 442,00674002230915
70,97846882212109; 448,9310967424801
71,07326424088174; 455,27842373597014
71,19175851433255; 461,74115667479634
71,33395164247352; 470,0503847390014
71,33395164247352; 465,8957707068988
71,26285507840304; 458,2789783147108
71,4761447706145; 478,35961280320646
71,4761447706145; 474,204998771104
71,61833789875547; 486,66884086741163
71,61833789875547; 482,51422683530905
71,76053102689644; 494,9780689316167
71,76053102689644; 490,8234548995141
71,9738207191079; 504,2105445585113
71,90272415503742; 499,13268296371916
72,11601384724888; 511,9427428960354
71,9738207191079; 507,44191102792433
72,25820697538985; 522,2138720309556
72,18711041131937; 517,1360104361636
72,35300239415051; 529,1382287511265
72,25820697538985; 525,4452385003688
72,49519552229148; 538,8323281593658
72,47149666760131; 534,1006844005824
72,63738865043246; 549,4496751302945
72,61368979574229; 544,1410016448301
72,77958177857343; 559,6053983198785
72,75588292388326; 554,5275367250865
72,96917261609474; 570,7997750174882
72,89807605202424; 564,9140718053429
73,11136574423571; 581,8787457697616
73,04026918016521; 575,9930425576163
73,25355887237669; 592,9577165220351
73,18246230830619; 587,0720133098898
73,34835429113733; 603,4596575476276
73,32465543644716; 598,1509840621633
73,46684856458813; 614,0770045185564
73,46684856458813; 609,9223904864539
73,63274054741927; 627,0024703962088
73,60904169272911; 621,6937969107444
73,60904169272911; 617,8854007146504
73,53794512865863; 606,4602121263683
73,82233138494058; 638,5430649298269
73,75123482087008; 633,4652033350349
73,96452451308156; 650,4298772994537
73,89342794901106; 644,5441740873084
73,82233138494058; 641,77443139924
73,82233138494058; 630,0030249749495
74,10671764122253; 664,8556204664765
74,03562107715203; 659,7777588716845
74,03562107715203; 655,6231448395818
74,20151305998317; 675,9345912187498
74,177814205293; 670,8567296239578
74,10671764122253; 668,0869869358894
74,34370618812414; 690,7065522217811
74,32000733343398; 685,3978787363168
74,32000733343398; 681,2432647042142
74,48589931626512; 705,0168894434677
74,46220046157495; 699,9390278486757
74,46220046157495; 695,7844138165731
74,67549015378643; 720,3658801731799
74,60439358971593; 714,4801769610347
74,60439358971593; 710,325562928932
74,77028557254707; 735,022435230875
74,7465867178569; 729,7137617454106
74,7465867178569; 725,559147713308
74,88877984599789; 749,7943962339062
74,88877984599789; 745,6397822018037
74,88877984599789; 741,4851681697012
75,03097297413886; 766,4128523623165
75,03097297413886; 762,2582383302139
75,03097297413886; 758,1036242981113
75,03097297413886; 753,9490102660088
74,95987641006838; 738,0229898096156
75,24426266635032; 783,9545560534161
75,17316610227984; 778,8766944586241
75,17316610227984; 774,7220804265215
75,17316610227984; 770,567466394419
75,33905808511096; 799,188140837792
75,31535923042081; 794,110279243
75,31535923042081; 789,9556652108976
75,24426266635032; 787,1859225228292
75,48125121325195; 817,1914683102365
75,45755235856178; 812,1136067154445
75,45755235856178; 807,9589926833419
75,45755235856178; 804,1505964872479
75,62344434139293; 835,1947957826808
75,59974548670276; 830,1169341878888
75,59974548670276; 825,9623201557863
75,59974548670276; 822,1539239596923
75,7656374695339; 854,1213708178146
75,74193861484373; 848,8126973323504
75,74193861484373; 844,6580833002478
75,74193861484373; 840,5034692681452
75,8841317429847; 873,0479458529485
75,8841317429847; 868,8933318208459
75,8841317429847; 864,7387177887433
75,8841317429847; 860,5841037566408
76,05002372581585; 894,282639794806
76,02632487112568; 888,9739663093416
76,02632487112568; 884,819352277239
76,02632487112568; 880,6647382451365
76,02632487112568; 876,8563420490425
75,9552283070552; 857,1219253965554
76,19221685395682; 912,747591048595
76,16851799926665; 907,669729453803
76,16851799926665; 903,5151154217004
76,16851799926665; 899,360501389598
76,3344099820978; 934,9055325531419
76,31071112740763; 929,8276709583499
76,31071112740763; 925,6730569262475
76,31071112740763; 921,5184428941449
76,31071112740763; 917,7100466980509
76,47660311023877; 957,0634740576888
76,4529042555486; 951,9856124628968
76,4529042555486; 947,8309984307944
76,4529042555486; 943,6763843986918
76,4529042555486; 939,8679882025978
76,61879623837974; 980,1446631249253
76,59509738368958; 974,8359896394609
76,59509738368958; 970,6813756073583
76,59509738368958; 966,5267615752558
76,59509738368958; 962,3721475431532
76,80838707590104; 999,7636738320762
76,73729051183055; 994,9166241279565
76,73729051183055; 990,762010095854
76,73729051183055; 986,6073960637515
76,80838707590104; 983,1452177036659
77,23496646032396; 1001,1485451761104
77,66154584474688; 1001,1485451761104
78,0881252291698; 1001,1485451761104
78,51470461359273; 1001,1485451761104
78,94128399801565; 1001,1485451761104
79,36786338243857; 1001,1485451761104
79,7944427668615; 1001,1485451761104
80,22102215128442; 1001,1485451761104
80,64760153570734; 1001,1485451761104
81,07418092013029; 1001,1485451761104
81,50076030455321; 1001,1485451761104
81,92733968897613; 1001,1485451761104
82,35391907339906; 1001,1485451761104
82,78049845782198; 1001,1485451761104
83,2070778422449; 1001,1485451761104
83,63365722666782; 1001,1485451761104
84,06023661109074; 1001,1485451761104
84,48681599551367; 1001,1485451761104
84,91339537993659; 1001,1485451761104
85,33997476435951; 1001,1485451761104
85,76655414878243; 1001,1485451761104
86,19313353320535; 1001,1485451761104
86,61971291762828; 1001,1485451761104
87,0462923020512; 1001,1485451761104
87,47287168647412; 1001,1485451761104
87,89945107089704; 1001,1485451761104
88,32603045531997; 1001,1485451761104
88,75260983974289; 1001,1485451761104
89,17918922416581; 1001,1485451761104
89,60576860858873; 1001,1485451761104
90,03234799301165; 1001,1485451761104
90,45892737743458; 1001,1485451761104
90,88550676185753; 1001,1485451761104
91,31208614628045; 1001,1485451761104
91,73866553070337; 1001,1485451761104
92,1652449151263; 1001,1485451761104
92,59182429954922; 1001,1485451761104
93,01840368397214; 1001,1485451761104
93,44498306839506; 1001,1485451761104
93,87156245281798; 1001,1485451761104
94,2981418372409; 1001,1485451761104
94,72472122166383; 1001,1485451761104
95,15130060608675; 1001,1485451761104
95,57787999050967; 1001,1485451761104
96,0044593749326; 1001,1485451761104
96,43103875935552; 1001,1485451761104
96,85761814377844; 1001,1485451761104
97,28419752820136; 1001,1485451761104
97,71077691262428; 1001,1485451761104
98,1373562970472; 1001,1485451761104
98,56393568147013; 1001,1485451761104
98,99051506589305; 1001,1485451761104
99,41709445031597; 1001,1485451761104
99,8436738347389; 1001,1485451761104
100,27025321916184; 1001,1485451761104
100,69683260358477; 1001,1485451761104
101,05231542393719; 999,0712381600591
101,05231542393719; 994,9166241279565
101,05231542393719; 990,762010095854
101,21820740676833; 985,6841485010619
101,19450855207816; 980,3754750155977
101,3604005349093; 975,0668015301333
101,31300282552897; 969,5273161539965
101,50259366305028; 963,9878307778598
101,47889480836011; 958,9099691830678
101,64478679119125; 953,8321075882758
101,62108793650108; 948,86965193882
101,78697991933223; 944,1380081800365
101,76328106464206; 939,1755525305807
101,9291730474732; 934,4439087717972
101,90547419278303; 929,4814531223415
102,07136617561417; 924,7498093635579
102,047667320924; 919,7873537141021
102,18986044906498; 914,2478683379654
102,33205357720595; 909,0546007978372
102,33205357720595; 904,8999867657346
102,47424670534693; 900,7453727336322
102,47424670534693; 896,5907587015296
102,6164398334879; 892,436144669427
102,6164398334879; 888,2815306373245
102,75863296162888; 884,1269166052219
102,75863296162888; 879,9723025731194
102,90082608976985; 875,8176885410169
102,90082608976985; 871,6630745089143
103,04301921791082; 867,5084604768117
103,04301921791082; 863,7000642807177
103,20891120074197; 858,737608631262
103,11411578198133; 855,7370540525212
103,32740547419277; 852,2748756924357
103,32740547419277; 848,4664794963418
103,46959860233375; 842,926994120205
103,61179173047472; 836,0026374000341
103,7539848586157; 829,0782806798632
103,91987684144684; 822,7309536863731
104,06206996958781; 816,7298445288917
104,20426309772878; 810,2671115900655
104,34645622586976; 804,2660024325841
104,48864935401073; 797,8032694937579
104,6308424821517; 792,0329722269488
104,77303561029268; 786,4934868508121
104,91522873843365; 780,9540014746754
105,05742186657463; 775,4145160985386
105,1996149947156; 769,8750307224019
105,34180812285658; 764,3355453462652
105,53139896037789; 758,4498421341199
105,67359208851886; 752,5641389219746
105,81578521665983; 747,9479011085273
106,00537605418114; 741,946791951046
106,14756918232212; 737,3305541375986
106,31346116515326; 733,175940105496
106,45565429329423; 729,0213260733935
106,5978474214352; 724,866712041291
106,74004054957618; 720,7120980091884
106,88223367771715; 716,9037018130944
107,02442680585813; 713,4415234530089
107,1666199339991; 709,633127256915
107,30881306214008; 705,824731060821
107,47470504497119; 701,3238991927099
107,735392446563; 697,1692851606074
107,735392446563; 693,7071068005218
107,99607984815478; 689,7833046590916
108,23306839505639; 684,7054430642997
108,470056941958; 679,165957688163
108,70704548885965; 674,5497198747157
108,9914317451416; 670,395105842613
109,22842029204321; 665,3172442478211
109,51280654832516; 660,7010064343739
109,7971928046071; 656,5463924022713
110,08157906088908; 651,4685308074793
110,4370618812415; 648,0063524473939
110,65035157345298; 644,0825503059637
110,98213553911523; 639,9279362738612
111,36131721415785; 636,2349460231032
111,78789659858077; 632,0803319910008
112,2144759830037; 627,9257179588982
112,64105536742662; 624,001915817468
113,06763475184954; 621,2321731293996
113,49421413627246; 618,4624304413313
113,92079352069538; 616,1543115346076
114,3473729051183; 614,0770045185564
114,77395228954123; 612,2305093931775
115,20053167396415; 610,8456380491433
115,62711105838707; 609,4607667051091
116,05369044281; 608,9991429237643
116,48026982723292; 607,8450834704025
116,90684921165584; 607,8450834704025
117,33342859607876; 607,8450834704025
117,76000798050168; 607,8450834704025
118,1865873649246; 609,2299548144367
118,61316674934753; 609,2299548144367
119,03974613377045; 610,6148261584709
119,46632551819337; 611,5380737211603
119,89290490261632; 612,9229450651945
120,31948428703924; 614,7694401905735
120,74606367146217; 616,6159353159524
121,17264305588509; 619,1548661133484
121,59922244030801; 621,462985020072
122,02580182473093; 624,2327277081404
122,45238120915386; 627,0024703962088
122,87896059357678; 629,772213084277
123,3055399779997; 633,2343914443625
123,73211936242262; 636,4657579137756
124,15869874684554; 640,3895600552058
124,58527813126847; 644,5441740873084
125,01185751569139; 648,6987881194109
125,43843690011431; 652,8534021515135
125,86501628453723; 657,0080161836161
126,24419795957982; 660,7010064343739
126,5759819252421; 665,3172442478211
126,95516360028469; 669,0102344985789
127,28694756594697; 673,6264723120262
127,67797866833467; 678,1273041801373
128,1045580527576; 683,666789556274
128,53113743718052; 688,8600570964022
128,8510719754977; 693,9379186911942
129,13545823177964; 698,5541565046415
129,4909410521321; 702,708770536744
129,7990261631042; 707,786632131536
130,08341241938615; 711,9412461636387
130,41519638504843; 716,5574839770859
130,69958264133038; 721,6353455718779
130,936571188232; 725,7899596039804
131,26835515389428; 730,4061974174276
131,55274141017622; 735,4840590122196
131,83712766645817; 740,100296825667
132,0741162133598; 745,1781584204589
132,40590017902207; 749,7943962339062
132,69028643530402; 755,3338816100429
132,97467269158597; 760,8733669861797
133,2590589478679; 766,4128523623165
133,54344520414986; 771,9523377384531
133,8278314604318; 777,4918231145899
134,11221771671376; 783,0313084907266
134,3966039729957; 788,5707938668634
134,68099022927765; 794,110279243
134,9653764855596; 799,6497646191368
135,17866617777108; 804,1505964872479
135,39195586998252; 809,1707551093718
135,62894441688414; 814,4217256221681
135,96072838254642; 821,6345972056795
135,81853525440545; 816,9606564195641
136,19771692944803; 826,8855677184757
136,48210318572998; 833,5791125479743
136,38730776696934; 829,4244985158717
136,81388715139227; 841,022796022158
136,6716940232513; 836,3488552360427
137,02717684360374; 845,6967368082734
137,19306882643485; 850,1975686763844
137,4774550827168; 857,1219253965554
137,38265966395616; 852,9673113644528
137,76184133899878; 864,0462821167263
137,6670459202381; 859,8916680846237
138,04622759528073; 870,9706388368973
137,95143217652006; 866,8160248047947
138,33061385156267; 877,8949955570681
138,235818432802; 873,7403815249655
138,59130125315446; 884,1269166052219
138,52020468908395; 880,6647382451365
138,7571932359856; 888,9739663093416
139,01788063757738; 895,2058873574954
138,94678407350688; 891,74370899741
139,18377262040852; 900,052937061615
139,4444600220003; 906,2848581097688
139,37336345792983; 902,8226797496834
139,58665315014127; 910,4394721418714
139,75254513297241; 915,286521845991
140,0132325345642; 921,5184428941449
139,94213597049372; 918,0562645340594
140,15542566270517; 925,6730569262475
140,29761879084614; 929,8276709583499
140,43981191898712; 933,9822849904525
140,5820050471281; 938,1368990225551
140,72419817526907; 942,2915130546576
140,8900901581002; 947,1385627587772
141,2218741237625; 954,2937313696206
141,07968099562152; 949,9083054468456
141,36406725190346; 958,9099691830678
141,43516381597394; 963,0645832151704
141,5773569441149; 967,2191972472729
141,71955007225588; 971,3738112793754
141,86174320039686; 975,528425311478
142,00393632853783; 979,6830393435805
142,1461294566788; 983,8376533756831
142,35941914889028; 988,9155149704751
142,43051571296076; 992,8393171119053
142,64380540517223; 998,0325846520334
143,07038478959515; 1001,1485451761104
143,49696417401807; 1001,1485451761104
143,923543558441; 1001,1485451761104
144,35012294286392; 1001,1485451761104
144,77670232728684; 1001,1485451761104
145,20328171170976; 1001,1485451761104
145,6298610961327; 1001,1485451761104
146,0564404805556; 1001,1485451761104
146,48301986497853; 1001,1485451761104
146,90959924940145; 1001,1485451761104
147,33617863382437; 1001,1485451761104
147,7627580182473; 1001,1485451761104
148,18933740267022; 1001,1485451761104
148,61591678709314; 1001,1485451761104
149,04249617151606; 1001,1485451761104
149,46907555593899; 1001,1485451761104
149,8956549403619; 1001,1485451761104
150,32223432478483; 1001,1485451761104
150,74881370920775; 1001,1485451761104
151,17539309363067; 1001,1485451761104
151,60197247805363; 1001,1485451761104
152,02855186247655; 1001,1485451761104
152,45513124689947; 1001,1485451761104
152,8817106313224; 1001,1485451761104
153,3082900157453; 1001,1485451761104
153,73486940016824; 1001,1485451761104
154,16144878459116; 1001,1485451761104
154,58802816901408; 1001,1485451761104
155,014607553437; 1001,1485451761104
155,44118693785992; 1001,1485451761104
155,86776632228285; 1001,1485451761104
156,29434570670577; 1001,1485451761104
156,7209250911287; 1001,1485451761104
157,1475044755516; 1001,1485451761104
157,57408385997454; 1001,1485451761104
158,00066324439746; 1001,1485451761104
158,42724262882038; 1001,1485451761104
158,8538220132433; 1001,1485451761104
159,28040139766622; 1001,1485451761104
159,70698078208915; 1001,1485451761104
160,13356016651207; 1001,1485451761104
160,560139550935; 1001,1485451761104
160,98671893535794; 1001,1485451761104
161,41329831978086; 1001,1485451761104
161,8398777042038; 1001,1485451761104
162,2664570886267; 1001,1485451761104
162,69303647304963; 1001,1485451761104
163,11961585747255; 1001,1485451761104
163,54619524189548; 1001,1485451761104
163,9727746263184; 1001,1485451761104
164,39935401074132; 1001,1485451761104
164,82593339516424; 1001,1485451761104
165,25251277958716; 1001,1485451761104
165,6790921640101; 1001,1485451761104
166,105671548433; 1001,1485451761104
166,53225093285593; 1001,1485451761104
166,95883031727885; 1001,1485451761104
167,38540970170178; 1001,1485451761104
167,8119890861247; 1001,1485451761104
168,23856847054762; 1001,1485451761104
168,66514785497054; 1001,1485451761104
169,09172723939346; 1001,1485451761104
169,5183066238164; 1001,1485451761104
169,9448860082393; 1001,1485451761104
170,37146539266223; 1001,1485451761104
170,79804477708518; 1001,1485451761104
171,2246241615081; 1001,1485451761104
171,65120354593103; 1001,1485451761104
172,07778293035395; 1001,1485451761104
172,50436231477687; 1001,1485451761104
172,9309416991998; 1001,1485451761104
173,35752108362271; 1001,1485451761104
173,78410046804564; 1001,1485451761104
174,21067985246856; 1001,1485451761104
174,63725923689148; 1001,1485451761104
175,0638386213144; 1001,1485451761104
175,49041800573733; 1001,1485451761104
175,91699739016025; 1001,1485451761104
176,34357677458317; 1001,1485451761104
176,7701561590061; 1001,1485451761104
177,196735543429; 1001,1485451761104
177,62331492785194; 1001,1485451761104
178,04989431227486; 1001,1485451761104
178,47647369669778; 1001,1485451761104
178,9030530811207; 1001,1485451761104
179,32963246554363; 1001,1485451761104
179,75621184996655; 1001,1485451761104
180,18279123438947; 1001,1485451761104
180,60937061881242; 1001,1485451761104
181,03595000323534; 1001,1485451761104
181,46252938765826; 1001,1485451761104
181,8891087720812; 1001,1485451761104
182,3156881565041; 1001,1485451761104
182,74226754092703; 1001,1485451761104
183,16884692534995; 1001,1485451761104
183,59542630977288; 1001,1485451761104
184,0220056941958; 1001,1485451761104
184,44858507861872; 1001,1485451761104
184,87516446304164; 1001,1485451761104
185,30174384746456; 1001,1485451761104
185,7283232318875; 1001,1485451761104
186,1549026163104; 1001,1485451761104
186,58148200073333; 1001,1485451761104
187,00806138515625; 1001,1485451761104
187,43464076957918; 1001,1485451761104
187,8612201540021; 1001,1485451761104
188,28779953842502; 1001,1485451761104
188,71437892284794; 1001,1485451761104
189,14095830727086; 1001,1485451761104
189,5675376916938; 1001,1485451761104
189,9941170761167; 1001,1485451761104
190,42069646053966; 1001,1485451761104
190,84727584496258; 1001,1485451761104
191,2738552293855; 1001,1485451761104
191,70043461380843; 1001,1485451761104
192,12701399823135; 1001,1485451761104
192,55359338265427; 1001,1485451761104
192,9801727670772; 1001,1485451761104
193,40675215150011; 1001,1485451761104
193,83333153592304; 1001,1485451761104
194,25991092034596; 1001,1485451761104
194,68649030476888; 1001,1485451761104
195,1130696891918; 1001,1485451761104
195,53964907361473; 1001,1485451761104
195,96622845803765; 1001,1485451761104
196,39280784246057; 1001,1485451761104
196,8193872268835; 1001,1485451761104
197,24596661130641; 1001,1485451761104
197,67254599572934; 1001,1485451761104
198,09912538015226; 1001,1485451761104
198,52570476457518; 1001,1485451761104
198,9522841489981; 1001,1485451761104
199,37886353342103; 1001,1485451761104
199,80544291784398; 1001,1485451761104
200,08982917412592; 1001,1485451761104
1 20 07332894765222; 41 2018918697496
2 20 499908332075144; 42 3559513231113
3 20 92648771649807; 42 81757510445607
4 21 353067100920992; 42 81757510445607
5 21 779646485343914; 43 27919888580084
6 22 20622586976684; 44 202446448490264
7 22 632805254189762; 44 202446448490264
8 23 059384638612684; 44 202446448490264
9 23 485964023035606; 45 58731779252446
10 23 912543407458532; 45 58731779252446
11 24 339122791881458; 45 58731779252446
12 24 76570217630438; 46 510565355213885
13 25 192281560727302; 46 972189136558654
14 25 618860945150224; 46 972189136558654
15 26 04544032957315; 48 35706048059285
16 26 472019713996072; 48 35706048059285
17 26 898599098418998; 48 35706048059285
18 27 32517848284192; 49 741931824627045
19 27 751757867264843; 49 741931824627045
20 28 178337251687765; 50 203555605971815
21 28 60491663611069; 51 12680316866124
22 29 031496020533616; 51 12680316866124
23 29 45807540495654; 52 511674512695436
24 29 88465478937946; 52 511674512695436
25 30 311234173802383; 53 43492207538475
26 30 737813558225305; 53 89654585672952
27 31 16439294264823; 54 3581696380744
28 31 590972327071153; 55 28141720076371
29 32 01755171149408; 55 28141720076371
30 32 444131095917; 56 66628854479791
31 32 87071048033992; 56 66628854479791
32 33 297289864762845; 58 0511598888321
33 33 72386924918577; 58 0511598888321
34 34 1504486336087; 59 4360312328663
35 34 57702801803162; 59 4360312328663
36 35 00360740245454; 60 820902576900494
37 35 43018678687747; 61 28252635824526
38 35 85676617130039; 62 20577392093469
39 36 283345555723315; 63 129021483624115
40 36 70992494014624; 63 590645264968884
41 37 13650432456916; 64 97551660900308
42 37 56308370899208; 65 43714039034785
43 37 989663093415004; 66 36038795303716
44 38 416242477837926; 67 28363551572659
45 38 84282186226085; 68 20688307841613
46 39 26940124668378; 69 13013064110555
47 39 6959806311067; 70 05337820379498
48 40 12256001552962; 70 97662576648452
49 40 54913939995255; 71 89987332917394
50 40 97571878437547; 73 28474467320814
51 41 402298168798396; 74 20799223589756
52 41 82887755322132; 75 1312397985871
53 42 25545693764424; 76 5161111426213
54 42 68203632206716; 77 43935870531061
55 43 108615706490085; 78 8242300493448
56 43 53519509091301; 80 209101393379
57 43 961774475335936; 81 13234895606843
58 44 38835385975886; 82 51722030010262
59 44 81493324418178; 83 90209164413682
60 45 24151262860471; 85 28696298817101
61 45 66809201302763; 86 67183433220521
62 46 094671397450554; 88 05670567623929
63 46 521250781873476; 89 44157702027348
64 46 9478301662964; 90 82644836430768
65 47 37440955071932; 92 67294348968665
66 47 80098893514224; 94 51943861506561
67 48 22756831956517; 95 9043099590998
68 48 654147703988095; 97 75080508447866
69 49 08072708841102; 99 13567642851285
70 49 50730647283394; 101 44379533523659
71 49 93388585725686; 103 29029046061532
72 50 36046524167978; 104 67516180464952
73 50 78704462610271; 106 98328071137325
74 51 213624010525635; 108 8297758367521
75 51 64020339494856; 111 36870663414811
76 52 06678277937148; 113 90763743154423
77 52 4933621637944; 115 98494444759547
78 52 919941548217324; 118 52387524499136
79 53 34652093264025; 121 06280604238736
80 53 773100317063175; 123 60173683978348
81 54 1996797014861; 126 14066763717938
82 54 62625908590902; 128 91041032524777
83 55 05283847033194; 131 91096490398854
84 55 47941785475487; 135 1423313734016
85 55 90599723917779; 138 14288595214236
86 56 332576623600715; 141 6050643122278
87 56 75915600802364; 144 83643078164084
88 57 18573539244656; 148 76023292307104
89 57 61231477686948; 151 9915993924842
90 58 03889416129241; 155 68458964324202
91 58 465473545715334; 159 8392036753445
92 58 892052930138256; 163 99381770744708
93 59 31863231456118; 167 68680795820478
94 59 603018570843126; 172 30304577165214
95 60 02959795526605; 176 45765980375472
96 60 420629057653734; 180 95849167186577
97 60 83535901473157; 185 6901354306492
98 61 16714298039385; 189 8447494627518
99 61 451529236675796; 194 46098727619903
100 61 842560339063475; 198 61560130830162
101 62 16249487738067; 203 69346290309363
102 62 446881133662615; 207 8480769351961
103 62 73126738994457; 212 0026909672987
104 62 96825593684619; 216 15730499940128
105 63 300039902508466; 220 77354281284852
106 63 584426158790414; 226 3130281889853
107 63 86881241507236; 231 3908897837772
108 64 15319867135432; 236 00712759722455
109 64 43758492763627; 241 54661297336133
110 64 72197118391821; 247 086098349498
111 64 95895973081983; 252 16395994429
112 65 29074369648211; 259 3768315278014
113 65 14855056834114; 254 70289074168602
114 65 52773224338372; 264 62780204059766
115 65 81211849966569; 271 32134687009625
116 65 71732308090503; 267 16673283799366
117 66 09650475594763; 278 2457035902671
118 66 00170933718698; 274 0910895581645
119 66 38089101222958; 285 170060310438
120 66 28609559346893; 281 0154462783355
121 66 66527726851153; 292 09441703060895
122 66 57048184975088; 287 93980299850637
123 66 92596467010331; 298 3263380787628
124 66 85486810603282; 294 86415971867734
125 67 06815779824429; 302 48095211086536
126 67 21035092638526; 306 63556614296783
127 67 35254405452623; 310 7901801750704
128 67 49473718266722; 314 944794207173
129 67 6369303108082; 319 0994082392755
130 67 77912343894917; 323 25402227137806
131 67 99241313116062; 328 3318838661701
132 68 13460625930159; 332 9481216796173
133 68 27679938744257; 338 0259832744093
134 68 41899251558354; 342 64222108785657
135 68 56118564372451; 347 7200826826486
136 68 63228220779501; 351 6438848240788
137 68 84557190000646; 357 0102612822112
138 68 98776502814744; 362 9536674670246
139 69 05886159221794; 366 8774696084548
140 69 22475357504908; 371 49370742190206
141 69 36694670319005; 377 0331927980387
142 69 50913983133103; 382 5726781741755
143 69 651332959472; 388 80459922232933
144 69 79352608761297; 394 8057083798109
145 69 93571921575395; 401 268441318637
146 70 07791234389492; 407 2695504761185
147 70 26750318141622; 414 3093131416256
148 70 40969630955719; 421 23366986179644
149 70 55188943769816; 428 1580265819674
150 70 69408256583914; 435 0823833021383
151 70 83627569398011; 442 00674002230915
152 70 97846882212109; 448 9310967424801
153 71 07326424088174; 455 27842373597014
154 71 19175851433255; 461 74115667479634
155 71 33395164247352; 470 0503847390014
156 71 33395164247352; 465 8957707068988
157 71 26285507840304; 458 2789783147108
158 71 4761447706145; 478 35961280320646
159 71 4761447706145; 474 204998771104
160 71 61833789875547; 486 66884086741163
161 71 61833789875547; 482 51422683530905
162 71 76053102689644; 494 9780689316167
163 71 76053102689644; 490 8234548995141
164 71 9738207191079; 504 2105445585113
165 71 90272415503742; 499 13268296371916
166 72 11601384724888; 511 9427428960354
167 71 9738207191079; 507 44191102792433
168 72 25820697538985; 522 2138720309556
169 72 18711041131937; 517 1360104361636
170 72 35300239415051; 529 1382287511265
171 72 25820697538985; 525 4452385003688
172 72 49519552229148; 538 8323281593658
173 72 47149666760131; 534 1006844005824
174 72 63738865043246; 549 4496751302945
175 72 61368979574229; 544 1410016448301
176 72 77958177857343; 559 6053983198785
177 72 75588292388326; 554 5275367250865
178 72 96917261609474; 570 7997750174882
179 72 89807605202424; 564 9140718053429
180 73 11136574423571; 581 8787457697616
181 73 04026918016521; 575 9930425576163
182 73 25355887237669; 592 9577165220351
183 73 18246230830619; 587 0720133098898
184 73 34835429113733; 603 4596575476276
185 73 32465543644716; 598 1509840621633
186 73 46684856458813; 614 0770045185564
187 73 46684856458813; 609 9223904864539
188 73 63274054741927; 627 0024703962088
189 73 60904169272911; 621 6937969107444
190 73 60904169272911; 617 8854007146504
191 73 53794512865863; 606 4602121263683
192 73 82233138494058; 638 5430649298269
193 73 75123482087008; 633 4652033350349
194 73 96452451308156; 650 4298772994537
195 73 89342794901106; 644 5441740873084
196 73 82233138494058; 641 77443139924
197 73 82233138494058; 630 0030249749495
198 74 10671764122253; 664 8556204664765
199 74 03562107715203; 659 7777588716845
200 74 03562107715203; 655 6231448395818
201 74 20151305998317; 675 9345912187498
202 74 177814205293; 670 8567296239578
203 74 10671764122253; 668 0869869358894
204 74 34370618812414; 690 7065522217811
205 74 32000733343398; 685 3978787363168
206 74 32000733343398; 681 2432647042142
207 74 48589931626512; 705 0168894434677
208 74 46220046157495; 699 9390278486757
209 74 46220046157495; 695 7844138165731
210 74 67549015378643; 720 3658801731799
211 74 60439358971593; 714 4801769610347
212 74 60439358971593; 710 325562928932
213 74 77028557254707; 735 022435230875
214 74 7465867178569; 729 7137617454106
215 74 7465867178569; 725 559147713308
216 74 88877984599789; 749 7943962339062
217 74 88877984599789; 745 6397822018037
218 74 88877984599789; 741 4851681697012
219 75 03097297413886; 766 4128523623165
220 75 03097297413886; 762 2582383302139
221 75 03097297413886; 758 1036242981113
222 75 03097297413886; 753 9490102660088
223 74 95987641006838; 738 0229898096156
224 75 24426266635032; 783 9545560534161
225 75 17316610227984; 778 8766944586241
226 75 17316610227984; 774 7220804265215
227 75 17316610227984; 770 567466394419
228 75 33905808511096; 799 188140837792
229 75 31535923042081; 794 110279243
230 75 31535923042081; 789 9556652108976
231 75 24426266635032; 787 1859225228292
232 75 48125121325195; 817 1914683102365
233 75 45755235856178; 812 1136067154445
234 75 45755235856178; 807 9589926833419
235 75 45755235856178; 804 1505964872479
236 75 62344434139293; 835 1947957826808
237 75 59974548670276; 830 1169341878888
238 75 59974548670276; 825 9623201557863
239 75 59974548670276; 822 1539239596923
240 75 7656374695339; 854 1213708178146
241 75 74193861484373; 848 8126973323504
242 75 74193861484373; 844 6580833002478
243 75 74193861484373; 840 5034692681452
244 75 8841317429847; 873 0479458529485
245 75 8841317429847; 868 8933318208459
246 75 8841317429847; 864 7387177887433
247 75 8841317429847; 860 5841037566408
248 76 05002372581585; 894 282639794806
249 76 02632487112568; 888 9739663093416
250 76 02632487112568; 884 819352277239
251 76 02632487112568; 880 6647382451365
252 76 02632487112568; 876 8563420490425
253 75 9552283070552; 857 1219253965554
254 76 19221685395682; 912 747591048595
255 76 16851799926665; 907 669729453803
256 76 16851799926665; 903 5151154217004
257 76 16851799926665; 899 360501389598
258 76 3344099820978; 934 9055325531419
259 76 31071112740763; 929 8276709583499
260 76 31071112740763; 925 6730569262475
261 76 31071112740763; 921 5184428941449
262 76 31071112740763; 917 7100466980509
263 76 47660311023877; 957 0634740576888
264 76 4529042555486; 951 9856124628968
265 76 4529042555486; 947 8309984307944
266 76 4529042555486; 943 6763843986918
267 76 4529042555486; 939 8679882025978
268 76 61879623837974; 980 1446631249253
269 76 59509738368958; 974 8359896394609
270 76 59509738368958; 970 6813756073583
271 76 59509738368958; 966 5267615752558
272 76 59509738368958; 962 3721475431532
273 76 80838707590104; 999 7636738320762
274 76 73729051183055; 994 9166241279565
275 76 73729051183055; 990 762010095854
276 76 73729051183055; 986 6073960637515
277 76 80838707590104; 983 1452177036659
278 77 23496646032396; 1001 1485451761104
279 77 66154584474688; 1001 1485451761104
280 78 0881252291698; 1001 1485451761104
281 78 51470461359273; 1001 1485451761104
282 78 94128399801565; 1001 1485451761104
283 79 36786338243857; 1001 1485451761104
284 79 7944427668615; 1001 1485451761104
285 80 22102215128442; 1001 1485451761104
286 80 64760153570734; 1001 1485451761104
287 81 07418092013029; 1001 1485451761104
288 81 50076030455321; 1001 1485451761104
289 81 92733968897613; 1001 1485451761104
290 82 35391907339906; 1001 1485451761104
291 82 78049845782198; 1001 1485451761104
292 83 2070778422449; 1001 1485451761104
293 83 63365722666782; 1001 1485451761104
294 84 06023661109074; 1001 1485451761104
295 84 48681599551367; 1001 1485451761104
296 84 91339537993659; 1001 1485451761104
297 85 33997476435951; 1001 1485451761104
298 85 76655414878243; 1001 1485451761104
299 86 19313353320535; 1001 1485451761104
300 86 61971291762828; 1001 1485451761104
301 87 0462923020512; 1001 1485451761104
302 87 47287168647412; 1001 1485451761104
303 87 89945107089704; 1001 1485451761104
304 88 32603045531997; 1001 1485451761104
305 88 75260983974289; 1001 1485451761104
306 89 17918922416581; 1001 1485451761104
307 89 60576860858873; 1001 1485451761104
308 90 03234799301165; 1001 1485451761104
309 90 45892737743458; 1001 1485451761104
310 90 88550676185753; 1001 1485451761104
311 91 31208614628045; 1001 1485451761104
312 91 73866553070337; 1001 1485451761104
313 92 1652449151263; 1001 1485451761104
314 92 59182429954922; 1001 1485451761104
315 93 01840368397214; 1001 1485451761104
316 93 44498306839506; 1001 1485451761104
317 93 87156245281798; 1001 1485451761104
318 94 2981418372409; 1001 1485451761104
319 94 72472122166383; 1001 1485451761104
320 95 15130060608675; 1001 1485451761104
321 95 57787999050967; 1001 1485451761104
322 96 0044593749326; 1001 1485451761104
323 96 43103875935552; 1001 1485451761104
324 96 85761814377844; 1001 1485451761104
325 97 28419752820136; 1001 1485451761104
326 97 71077691262428; 1001 1485451761104
327 98 1373562970472; 1001 1485451761104
328 98 56393568147013; 1001 1485451761104
329 98 99051506589305; 1001 1485451761104
330 99 41709445031597; 1001 1485451761104
331 99 8436738347389; 1001 1485451761104
332 100 27025321916184; 1001 1485451761104
333 100 69683260358477; 1001 1485451761104
334 101 05231542393719; 999 0712381600591
335 101 05231542393719; 994 9166241279565
336 101 05231542393719; 990 762010095854
337 101 21820740676833; 985 6841485010619
338 101 19450855207816; 980 3754750155977
339 101 3604005349093; 975 0668015301333
340 101 31300282552897; 969 5273161539965
341 101 50259366305028; 963 9878307778598
342 101 47889480836011; 958 9099691830678
343 101 64478679119125; 953 8321075882758
344 101 62108793650108; 948 86965193882
345 101 78697991933223; 944 1380081800365
346 101 76328106464206; 939 1755525305807
347 101 9291730474732; 934 4439087717972
348 101 90547419278303; 929 4814531223415
349 102 07136617561417; 924 7498093635579
350 102 047667320924; 919 7873537141021
351 102 18986044906498; 914 2478683379654
352 102 33205357720595; 909 0546007978372
353 102 33205357720595; 904 8999867657346
354 102 47424670534693; 900 7453727336322
355 102 47424670534693; 896 5907587015296
356 102 6164398334879; 892 436144669427
357 102 6164398334879; 888 2815306373245
358 102 75863296162888; 884 1269166052219
359 102 75863296162888; 879 9723025731194
360 102 90082608976985; 875 8176885410169
361 102 90082608976985; 871 6630745089143
362 103 04301921791082; 867 5084604768117
363 103 04301921791082; 863 7000642807177
364 103 20891120074197; 858 737608631262
365 103 11411578198133; 855 7370540525212
366 103 32740547419277; 852 2748756924357
367 103 32740547419277; 848 4664794963418
368 103 46959860233375; 842 926994120205
369 103 61179173047472; 836 0026374000341
370 103 7539848586157; 829 0782806798632
371 103 91987684144684; 822 7309536863731
372 104 06206996958781; 816 7298445288917
373 104 20426309772878; 810 2671115900655
374 104 34645622586976; 804 2660024325841
375 104 48864935401073; 797 8032694937579
376 104 6308424821517; 792 0329722269488
377 104 77303561029268; 786 4934868508121
378 104 91522873843365; 780 9540014746754
379 105 05742186657463; 775 4145160985386
380 105 1996149947156; 769 8750307224019
381 105 34180812285658; 764 3355453462652
382 105 53139896037789; 758 4498421341199
383 105 67359208851886; 752 5641389219746
384 105 81578521665983; 747 9479011085273
385 106 00537605418114; 741 946791951046
386 106 14756918232212; 737 3305541375986
387 106 31346116515326; 733 175940105496
388 106 45565429329423; 729 0213260733935
389 106 5978474214352; 724 866712041291
390 106 74004054957618; 720 7120980091884
391 106 88223367771715; 716 9037018130944
392 107 02442680585813; 713 4415234530089
393 107 1666199339991; 709 633127256915
394 107 30881306214008; 705 824731060821
395 107 47470504497119; 701 3238991927099
396 107 735392446563; 697 1692851606074
397 107 735392446563; 693 7071068005218
398 107 99607984815478; 689 7833046590916
399 108 23306839505639; 684 7054430642997
400 108 470056941958; 679 165957688163
401 108 70704548885965; 674 5497198747157
402 108 9914317451416; 670 395105842613
403 109 22842029204321; 665 3172442478211
404 109 51280654832516; 660 7010064343739
405 109 7971928046071; 656 5463924022713
406 110 08157906088908; 651 4685308074793
407 110 4370618812415; 648 0063524473939
408 110 65035157345298; 644 0825503059637
409 110 98213553911523; 639 9279362738612
410 111 36131721415785; 636 2349460231032
411 111 78789659858077; 632 0803319910008
412 112 2144759830037; 627 9257179588982
413 112 64105536742662; 624 001915817468
414 113 06763475184954; 621 2321731293996
415 113 49421413627246; 618 4624304413313
416 113 92079352069538; 616 1543115346076
417 114 3473729051183; 614 0770045185564
418 114 77395228954123; 612 2305093931775
419 115 20053167396415; 610 8456380491433
420 115 62711105838707; 609 4607667051091
421 116 05369044281; 608 9991429237643
422 116 48026982723292; 607 8450834704025
423 116 90684921165584; 607 8450834704025
424 117 33342859607876; 607 8450834704025
425 117 76000798050168; 607 8450834704025
426 118 1865873649246; 609 2299548144367
427 118 61316674934753; 609 2299548144367
428 119 03974613377045; 610 6148261584709
429 119 46632551819337; 611 5380737211603
430 119 89290490261632; 612 9229450651945
431 120 31948428703924; 614 7694401905735
432 120 74606367146217; 616 6159353159524
433 121 17264305588509; 619 1548661133484
434 121 59922244030801; 621 462985020072
435 122 02580182473093; 624 2327277081404
436 122 45238120915386; 627 0024703962088
437 122 87896059357678; 629 772213084277
438 123 3055399779997; 633 2343914443625
439 123 73211936242262; 636 4657579137756
440 124 15869874684554; 640 3895600552058
441 124 58527813126847; 644 5441740873084
442 125 01185751569139; 648 6987881194109
443 125 43843690011431; 652 8534021515135
444 125 86501628453723; 657 0080161836161
445 126 24419795957982; 660 7010064343739
446 126 5759819252421; 665 3172442478211
447 126 95516360028469; 669 0102344985789
448 127 28694756594697; 673 6264723120262
449 127 67797866833467; 678 1273041801373
450 128 1045580527576; 683 666789556274
451 128 53113743718052; 688 8600570964022
452 128 8510719754977; 693 9379186911942
453 129 13545823177964; 698 5541565046415
454 129 4909410521321; 702 708770536744
455 129 7990261631042; 707 786632131536
456 130 08341241938615; 711 9412461636387
457 130 41519638504843; 716 5574839770859
458 130 69958264133038; 721 6353455718779
459 130 936571188232; 725 7899596039804
460 131 26835515389428; 730 4061974174276
461 131 55274141017622; 735 4840590122196
462 131 83712766645817; 740 100296825667
463 132 0741162133598; 745 1781584204589
464 132 40590017902207; 749 7943962339062
465 132 69028643530402; 755 3338816100429
466 132 97467269158597; 760 8733669861797
467 133 2590589478679; 766 4128523623165
468 133 54344520414986; 771 9523377384531
469 133 8278314604318; 777 4918231145899
470 134 11221771671376; 783 0313084907266
471 134 3966039729957; 788 5707938668634
472 134 68099022927765; 794 110279243
473 134 9653764855596; 799 6497646191368
474 135 17866617777108; 804 1505964872479
475 135 39195586998252; 809 1707551093718
476 135 62894441688414; 814 4217256221681
477 135 96072838254642; 821 6345972056795
478 135 81853525440545; 816 9606564195641
479 136 19771692944803; 826 8855677184757
480 136 48210318572998; 833 5791125479743
481 136 38730776696934; 829 4244985158717
482 136 81388715139227; 841 022796022158
483 136 6716940232513; 836 3488552360427
484 137 02717684360374; 845 6967368082734
485 137 19306882643485; 850 1975686763844
486 137 4774550827168; 857 1219253965554
487 137 38265966395616; 852 9673113644528
488 137 76184133899878; 864 0462821167263
489 137 6670459202381; 859 8916680846237
490 138 04622759528073; 870 9706388368973
491 137 95143217652006; 866 8160248047947
492 138 33061385156267; 877 8949955570681
493 138 235818432802; 873 7403815249655
494 138 59130125315446; 884 1269166052219
495 138 52020468908395; 880 6647382451365
496 138 7571932359856; 888 9739663093416
497 139 01788063757738; 895 2058873574954
498 138 94678407350688; 891 74370899741
499 139 18377262040852; 900 052937061615
500 139 4444600220003; 906 2848581097688
501 139 37336345792983; 902 8226797496834
502 139 58665315014127; 910 4394721418714
503 139 75254513297241; 915 286521845991
504 140 0132325345642; 921 5184428941449
505 139 94213597049372; 918 0562645340594
506 140 15542566270517; 925 6730569262475
507 140 29761879084614; 929 8276709583499
508 140 43981191898712; 933 9822849904525
509 140 5820050471281; 938 1368990225551
510 140 72419817526907; 942 2915130546576
511 140 8900901581002; 947 1385627587772
512 141 2218741237625; 954 2937313696206
513 141 07968099562152; 949 9083054468456
514 141 36406725190346; 958 9099691830678
515 141 43516381597394; 963 0645832151704
516 141 5773569441149; 967 2191972472729
517 141 71955007225588; 971 3738112793754
518 141 86174320039686; 975 528425311478
519 142 00393632853783; 979 6830393435805
520 142 1461294566788; 983 8376533756831
521 142 35941914889028; 988 9155149704751
522 142 43051571296076; 992 8393171119053
523 142 64380540517223; 998 0325846520334
524 143 07038478959515; 1001 1485451761104
525 143 49696417401807; 1001 1485451761104
526 143 923543558441; 1001 1485451761104
527 144 35012294286392; 1001 1485451761104
528 144 77670232728684; 1001 1485451761104
529 145 20328171170976; 1001 1485451761104
530 145 6298610961327; 1001 1485451761104
531 146 0564404805556; 1001 1485451761104
532 146 48301986497853; 1001 1485451761104
533 146 90959924940145; 1001 1485451761104
534 147 33617863382437; 1001 1485451761104
535 147 7627580182473; 1001 1485451761104
536 148 18933740267022; 1001 1485451761104
537 148 61591678709314; 1001 1485451761104
538 149 04249617151606; 1001 1485451761104
539 149 46907555593899; 1001 1485451761104
540 149 8956549403619; 1001 1485451761104
541 150 32223432478483; 1001 1485451761104
542 150 74881370920775; 1001 1485451761104
543 151 17539309363067; 1001 1485451761104
544 151 60197247805363; 1001 1485451761104
545 152 02855186247655; 1001 1485451761104
546 152 45513124689947; 1001 1485451761104
547 152 8817106313224; 1001 1485451761104
548 153 3082900157453; 1001 1485451761104
549 153 73486940016824; 1001 1485451761104
550 154 16144878459116; 1001 1485451761104
551 154 58802816901408; 1001 1485451761104
552 155 014607553437; 1001 1485451761104
553 155 44118693785992; 1001 1485451761104
554 155 86776632228285; 1001 1485451761104
555 156 29434570670577; 1001 1485451761104
556 156 7209250911287; 1001 1485451761104
557 157 1475044755516; 1001 1485451761104
558 157 57408385997454; 1001 1485451761104
559 158 00066324439746; 1001 1485451761104
560 158 42724262882038; 1001 1485451761104
561 158 8538220132433; 1001 1485451761104
562 159 28040139766622; 1001 1485451761104
563 159 70698078208915; 1001 1485451761104
564 160 13356016651207; 1001 1485451761104
565 160 560139550935; 1001 1485451761104
566 160 98671893535794; 1001 1485451761104
567 161 41329831978086; 1001 1485451761104
568 161 8398777042038; 1001 1485451761104
569 162 2664570886267; 1001 1485451761104
570 162 69303647304963; 1001 1485451761104
571 163 11961585747255; 1001 1485451761104
572 163 54619524189548; 1001 1485451761104
573 163 9727746263184; 1001 1485451761104
574 164 39935401074132; 1001 1485451761104
575 164 82593339516424; 1001 1485451761104
576 165 25251277958716; 1001 1485451761104
577 165 6790921640101; 1001 1485451761104
578 166 105671548433; 1001 1485451761104
579 166 53225093285593; 1001 1485451761104
580 166 95883031727885; 1001 1485451761104
581 167 38540970170178; 1001 1485451761104
582 167 8119890861247; 1001 1485451761104
583 168 23856847054762; 1001 1485451761104
584 168 66514785497054; 1001 1485451761104
585 169 09172723939346; 1001 1485451761104
586 169 5183066238164; 1001 1485451761104
587 169 9448860082393; 1001 1485451761104
588 170 37146539266223; 1001 1485451761104
589 170 79804477708518; 1001 1485451761104
590 171 2246241615081; 1001 1485451761104
591 171 65120354593103; 1001 1485451761104
592 172 07778293035395; 1001 1485451761104
593 172 50436231477687; 1001 1485451761104
594 172 9309416991998; 1001 1485451761104
595 173 35752108362271; 1001 1485451761104
596 173 78410046804564; 1001 1485451761104
597 174 21067985246856; 1001 1485451761104
598 174 63725923689148; 1001 1485451761104
599 175 0638386213144; 1001 1485451761104
600 175 49041800573733; 1001 1485451761104
601 175 91699739016025; 1001 1485451761104
602 176 34357677458317; 1001 1485451761104
603 176 7701561590061; 1001 1485451761104
604 177 196735543429; 1001 1485451761104
605 177 62331492785194; 1001 1485451761104
606 178 04989431227486; 1001 1485451761104
607 178 47647369669778; 1001 1485451761104
608 178 9030530811207; 1001 1485451761104
609 179 32963246554363; 1001 1485451761104
610 179 75621184996655; 1001 1485451761104
611 180 18279123438947; 1001 1485451761104
612 180 60937061881242; 1001 1485451761104
613 181 03595000323534; 1001 1485451761104
614 181 46252938765826; 1001 1485451761104
615 181 8891087720812; 1001 1485451761104
616 182 3156881565041; 1001 1485451761104
617 182 74226754092703; 1001 1485451761104
618 183 16884692534995; 1001 1485451761104
619 183 59542630977288; 1001 1485451761104
620 184 0220056941958; 1001 1485451761104
621 184 44858507861872; 1001 1485451761104
622 184 87516446304164; 1001 1485451761104
623 185 30174384746456; 1001 1485451761104
624 185 7283232318875; 1001 1485451761104
625 186 1549026163104; 1001 1485451761104
626 186 58148200073333; 1001 1485451761104
627 187 00806138515625; 1001 1485451761104
628 187 43464076957918; 1001 1485451761104
629 187 8612201540021; 1001 1485451761104
630 188 28779953842502; 1001 1485451761104
631 188 71437892284794; 1001 1485451761104
632 189 14095830727086; 1001 1485451761104
633 189 5675376916938; 1001 1485451761104
634 189 9941170761167; 1001 1485451761104
635 190 42069646053966; 1001 1485451761104
636 190 84727584496258; 1001 1485451761104
637 191 2738552293855; 1001 1485451761104
638 191 70043461380843; 1001 1485451761104
639 192 12701399823135; 1001 1485451761104
640 192 55359338265427; 1001 1485451761104
641 192 9801727670772; 1001 1485451761104
642 193 40675215150011; 1001 1485451761104
643 193 83333153592304; 1001 1485451761104
644 194 25991092034596; 1001 1485451761104
645 194 68649030476888; 1001 1485451761104
646 195 1130696891918; 1001 1485451761104
647 195 53964907361473; 1001 1485451761104
648 195 96622845803765; 1001 1485451761104
649 196 39280784246057; 1001 1485451761104
650 196 8193872268835; 1001 1485451761104
651 197 24596661130641; 1001 1485451761104
652 197 67254599572934; 1001 1485451761104
653 198 09912538015226; 1001 1485451761104
654 198 52570476457518; 1001 1485451761104
655 198 9522841489981; 1001 1485451761104
656 199 37886353342103; 1001 1485451761104
657 199 80544291784398; 1001 1485451761104
658 200 08982917412592; 1001 1485451761104

148
winisd/tops.wpr Normal file
View File

@@ -0,0 +1,148 @@
[ProjectInfo]
Description=
Creator=Silas
CreateDate=20260513
ModifyDate=20260514
[Driver]
Brand=B&C Speaker
Model=14NDL76
Manufacturer=
ProvidedBy=loudspeakerdatabase.com
Comment=loudspeakerdatabase.com/BC/14NDL76
DateAdded=20260513
DateModified=20260513
Qts=0,3
Znom=8
Fs=41
Pe=1000
SPL=0
Re=5
Le=0,0011
fLe=0
KLe=0
BL=19
Xmax=0,008
Cms=0,000173
Qms=8,2
Qes=0,31
Rms=2,67
Mms=0,085
Sd=0,0707
Vas=0,123
Dia=0
Vd=0,0005656
no=0
Dd=0,3
EBP=0
numVC=1
Hc=0
Hg=0
SPLmax=0
SPLmaxLF=0
USPL=0
alfaVC=0,0039
Rt=0
Ct=0
gamma=0
Rme=0
Mpow=0
Mcost=0
Gloss=0
VCCon=2
c=343,684120962153
roo=1,20095217714682
Thick=0
Depth=0
MagDepth=0
Magnet=0
Basket=0
Outer=0
Vcd=0
DVol=0
ParState=EEECEENNEENEEEEEEEEEEECENNCCCNNNCCCCECNNNNNNNNECC
[Box]
BType=1
Vf=0
Ff=0
Qlf=10
Qaf=100
Qpf=100
Vr=0,062
Fr=47
Qlr=10
Qar=100
Qpr=100
Vc=0
Fc=0
Qlc=0
Qac=0
Qpc=0
Qiclfr=100
Qiclfc=0
Qiclcr=0
T=293,15
p=101325
phi=0,3
d=1
Med=0
Nd=1
Angle=0
Isobarik=0
alfaVC=0,0039
dTVC=0
Sdfport=0
Sdrport=0,0117
[VentFront]
Num=1
Shape=1
Fb=0
Vb=0
dia1=0,102
dia2=0,102
carea=0
len=0
endcorrection=0,732
crosscalc=1
[VentRear]
Num=2
Shape=2
Fb=47
Vb=0,062
dia1=0,13
dia2=0,045
carea=0,00585
len=0,19242329054228
endcorrection=0,732
crosscalc=1
[VentIntra]
Num=1
Shape=1
Fb=0
Vb=0
dia1=0,102
dia2=0,102
carea=0
len=0
endcorrection=0,732
crosscalc=1
[PlotSettings]
Color=16744448
Width=1
[SignalSource]
Rg=0,1
P=10,082
[Filters]
Count=0
[SimulatorOptions]
VCInd=0
FlatResponse=0
TLPorts=0