voraui
blockbtc-rainbow-chartsource: ok · hit
BTC Rainbow Chart
Bitcoin rainbow log-regression chart with Binance history and a bundled 2010-2017 seed.
npx shadcn add "https://voraui.vercel.app/r/btc-rainbow-chart.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightlightweight-chartsnext-themes
Registry dependencies
buttonutils
Files7 · source cached 10/14/2026, 7:22:44 PM
registry/voraui/btc-rainbow-chart/index.ts
export { BtcRainbowChart, BtcRainbowLegend, type BtcRainbowChartProps } from "./btc-rainbow-chart";
export { BtcRainbowChartSkeleton } from "./components/skeleton";
export type { RainbowPoint } from "./hooks/use-btc-history";
registry/voraui/btc-rainbow-chart/btc-rainbow-chart.tsx
"use client";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTheme } from "next-themes";
import { BtcRainbowChartSkeleton } from "./components/skeleton";
import type { IChartApi, ISeriesApi, Time, UTCTimestamp } from "lightweight-charts";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
import { RainbowBandsPrimitive, DEFAULT_RAINBOW_BANDS } from "./lib/rainbow-bands";
import { createRainbowTooltip, compactUsdTick, type RainbowTooltip } from "./lib/rainbow-tooltip";
import { useBtcHistory, type RainbowPoint } from "./hooks/use-btc-history";
export interface BtcRainbowChartProps {
/** Provide your own daily BTC series to bypass the bundled fetcher. */
data?: RainbowPoint[];
className?: string;
}
type Preset = "1Y" | "5Y" | "10Y" | "ALL";
const PRESETS: Preset[] = ["1Y", "5Y", "10Y", "ALL"];
type ChartPoint = { time: UTCTimestamp; value: number };
export function BtcRainbowChart({ data, className }: BtcRainbowChartProps) {
const { resolvedTheme } = useTheme();
const fetched = useBtcHistory({ enabled: data === undefined });
const series = data ?? fetched.data;
const loading = data === undefined && fetched.loading;
const error = data === undefined ? fetched.error : null;
const containerRef = useRef<HTMLDivElement | null>(null);
const tooltipRef = useRef<RainbowTooltip | null>(null);
const chartRef = useRef<IChartApi | null>(null);
const seriesRef = useRef<ISeriesApi<"Line", Time> | null>(null);
const primitiveRef = useRef<RainbowBandsPrimitive | null>(null);
const [preset, setPreset] = useState<Preset>("ALL");
const lineData = useMemo<ChartPoint[]>(() => {
return (series ?? [])
.filter((p) => Number.isFinite(p.time) && Number.isFinite(p.price) && p.time > 0 && p.price > 0)
.map((p) => ({ time: p.time as UTCTimestamp, value: p.price }));
}, [series]);
const lineDataRef = useRef<ChartPoint[]>(lineData);
const presetRef = useRef<Preset>(preset);
const hasLineData = lineData.length > 0;
const applyVisibleRange = useCallback(() => {
const chart = chartRef.current;
const points = lineDataRef.current;
if (!chart || points.length === 0) return;
if (presetRef.current === "ALL") {
chart.timeScale().fitContent();
return;
}
const first = points[0].time as number;
const last = points[points.length - 1].time as number;
const yearSeconds = 365 * 86_400;
const years = presetRef.current === "1Y" ? 1 : presetRef.current === "5Y" ? 5 : 10;
const from = Math.max(first, last - years * yearSeconds);
chart.timeScale().setVisibleRange({
from: from as UTCTimestamp,
to: last as UTCTimestamp,
});
}, []);
const applyLatestData = useCallback(() => {
const lineSeries = seriesRef.current;
const chart = chartRef.current;
const points = lineDataRef.current;
if (!lineSeries || !chart || points.length === 0) return;
lineSeries.setData(points);
applyVisibleRange();
primitiveRef.current?.requestUpdate();
}, [applyVisibleRange]);
useEffect(() => {
lineDataRef.current = lineData;
applyLatestData();
}, [lineData, applyLatestData]);
useEffect(() => {
presetRef.current = preset;
applyVisibleRange();
}, [preset, applyVisibleRange]);
// Mount once per theme; data updates live in a separate effect.
useEffect(() => {
if (!hasLineData) return;
let disposed = false;
let ro: ResizeObserver | null = null;
let chartInitialized = false;
const initChart = async (container: HTMLDivElement) => {
const lwc = await import("lightweight-charts");
if (disposed) return;
const isDark = resolvedTheme === "dark";
const textColor = isDark ? "#9CA3AF" : "#52525b";
const gridColor = isDark ? "rgba(148,163,184,0.10)" : "rgba(0,0,0,0.05)";
const lineColor = isDark ? "#fafafa" : "#111111";
const chart = lwc.createChart(container, {
width: container.clientWidth,
height: container.clientHeight,
autoSize: false,
layout: {
background: { type: lwc.ColorType.Solid, color: "rgba(0,0,0,0)" },
textColor,
},
grid: {
vertLines: { color: gridColor },
horzLines: { color: gridColor },
},
rightPriceScale: {
mode: lwc.PriceScaleMode.Logarithmic,
borderVisible: false,
// Default scaleMargins (top 20% / bottom 10%) add ~3 empty decades in log
// space, pushing the top edge label to a nonsense price ("$280M") and, on
// narrow panes, collapsing the tick marks entirely (blank scale on mobile).
scaleMargins: { top: 0.05, bottom: 0.05 },
},
timeScale: {
borderVisible: false,
timeVisible: false,
secondsVisible: false,
rightOffset: 2,
barSpacing: 4,
fixLeftEdge: true,
fixRightEdge: true,
lockVisibleTimeRangeOnResize: true,
},
crosshair: { mode: 0 },
handleScroll: {
mouseWheel: true,
pressedMouseMove: true,
horzTouchDrag: true,
vertTouchDrag: false,
},
handleScale: {
mouseWheel: true,
pinch: true,
axisPressedMouseMove: false,
axisDoubleClickReset: true,
},
});
const lineSeries = chart.addSeries(lwc.LineSeries, {
color: lineColor,
lineWidth: 2,
priceLineVisible: false,
lastValueVisible: false,
crosshairMarkerVisible: true,
crosshairMarkerRadius: 4,
priceFormat: {
type: "custom",
// Compact ("$63.1K") so the price scale stays narrow; full-length labels
// ("63100.00") force a wide scale that overflows and clips on mobile.
formatter: compactUsdTick,
},
});
const primitive = new RainbowBandsPrimitive(DEFAULT_RAINBOW_BANDS, 0.45);
primitiveRef.current = primitive;
lineSeries.attachPrimitive(primitive);
chartRef.current = chart;
seriesRef.current = lineSeries;
applyLatestData();
const tooltip = createRainbowTooltip(container, () => seriesRef.current);
tooltipRef.current = tooltip;
chart.subscribeCrosshairMove(tooltip.onCrosshairMove);
};
if (containerRef.current) {
ro = new ResizeObserver((entries) => {
const rect = entries[0].contentRect;
if (rect.width > 0 && rect.height > 0 && !chartInitialized) {
chartInitialized = true;
initChart(containerRef.current!);
} else if (chartInitialized && chartRef.current) {
chartRef.current.applyOptions({
width: rect.width,
height: rect.height,
});
}
});
ro.observe(containerRef.current);
}
return () => {
disposed = true;
if (ro) ro.disconnect();
tooltipRef.current?.dispose();
tooltipRef.current = null;
if (chartRef.current) {
chartRef.current.remove();
chartRef.current = null;
}
seriesRef.current = null;
primitiveRef.current = null;
};
}, [applyLatestData, hasLineData, resolvedTheme]);
if (loading) {
return <BtcRainbowChartSkeleton className={className} />;
}
if (!hasLineData) {
return (
<div
role="alert"
className={cn(
"flex h-[220px] items-center justify-center rounded-md border border-dashed border-border text-xs text-muted-foreground",
className,
)}
>
BTC price history is unavailable{error ? ` (${error})` : ""}.
</div>
);
}
return (
<div className={cn("space-y-2", className)}>
<div className="flex items-center justify-end gap-1">
{PRESETS.map((p) => (
<Button
key={p}
size="sm"
variant={preset === p ? "default" : "outline"}
className="h-7 px-2.5 text-[11px] font-medium"
onClick={() => setPreset(p)}
>
{p}
</Button>
))}
</div>
<div
ref={containerRef}
className={cn("relative h-[360px] w-full overflow-hidden sm:h-[420px]", "[&_canvas]:!touch-pan-y")}
/>
</div>
);
}
export function BtcRainbowLegend() {
return (
<div className="space-y-2">
<div className="grid grid-cols-1 gap-1.5 sm:grid-cols-3">
{DEFAULT_RAINBOW_BANDS.map((b) => (
<div key={b.key} className="flex items-center gap-2 text-[11px]">
<span
className="h-2.5 w-2.5 shrink-0 rounded-sm"
style={{ backgroundColor: b.color }}
aria-hidden
/>
<span className="truncate text-muted-foreground">{b.label}</span>
</div>
))}
</div>
<p className="font-mono text-[10px] text-muted-foreground">
Log-regression model. Binance history plus a bundled 2010-2017 seed.
</p>
</div>
);
}
registry/voraui/btc-rainbow-chart/components/skeleton.tsx
"use client";
import { useMemo } from "react";
import { cn } from "@/lib/utils";
import { DEFAULT_RAINBOW_BANDS } from "../lib/rainbow-bands";
export interface BtcRainbowChartSkeletonProps {
className?: string;
}
const PRESET_COUNT = 4;
const VIEW_WIDTH = 400;
const VIEW_HEIGHT = 200;
const CURVE_STEPS = 24;
const PRICE_LINE_POINTS = 70;
// Ceiling y per band at x=0 (compressed) and x=VIEW_WIDTH (fanned out),
// top to bottom; mirrors the live chart's log-regression fan shape.
const BOUNDARY_Y0 = [150, 154, 158, 162, 166, 170, 174, 178, 182];
const BOUNDARY_Y1 = [14, 36, 58, 80, 102, 124, 146, 168, 190];
function boundaryPoints(index: number): [number, number][] {
const points: [number, number][] = [];
for (let s = 0; s <= CURVE_STEPS; s++) {
const t = s / CURVE_STEPS;
const x = t * VIEW_WIDTH;
const curve = Math.log10(1 + 9 * t); // 0 at t=0, 1 at t=1
const y = BOUNDARY_Y0[index] + (BOUNDARY_Y1[index] - BOUNDARY_Y0[index]) * curve;
points.push([x, y]);
}
return points;
}
function pointsAttr(points: [number, number][]): string {
return points.map(([x, y]) => `${x.toFixed(1)},${y.toFixed(1)}`).join(" ");
}
/** Deterministic wavy price line; Math.random would cause a hydration mismatch. */
function pricePoints(): [number, number][] {
const points: [number, number][] = [];
for (let i = 0; i < PRICE_LINE_POINTS; i++) {
const t = i / (PRICE_LINE_POINTS - 1);
const x = t * VIEW_WIDTH;
const curve = Math.log10(1 + 9 * t);
// Drifts from the b7 boundary toward b4, like BTC's real path.
const trend = BOUNDARY_Y0[6] + (BOUNDARY_Y1[3] - BOUNDARY_Y0[6]) * curve;
const noise = Math.sin(i * 1.3) * 5 + Math.sin(i * 0.47) * 9 + Math.sin(i * 2.9) * 2.2;
points.push([x, trend + noise]);
}
return points;
}
export function BtcRainbowChartSkeleton({ className }: BtcRainbowChartSkeletonProps) {
const bandFills = useMemo(() => {
const boundaries = DEFAULT_RAINBOW_BANDS.map((_, i) => boundaryPoints(i));
return DEFAULT_RAINBOW_BANDS.slice(0, -1).map((_, i) => ({
color: DEFAULT_RAINBOW_BANDS[i + 1].color,
points: pointsAttr(boundaries[i].concat([...boundaries[i + 1]].reverse())),
}));
}, []);
const pricePath = useMemo(() => pointsAttr(pricePoints()), []);
return (
<div className={cn("space-y-2", className)} role="status">
<span className="sr-only">Loading BTC price history</span>
<style href="voraui-btc-rainbow-chart-skeleton" precedence="low">{`
@keyframes voraui-btc-rainbow-chart-skeleton-shimmer {
from { transform: translateX(-100%); }
to { transform: translateX(100%); }
}
.voraui-btc-rainbow-chart-skeleton-shimmer::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.25), transparent);
animation: voraui-btc-rainbow-chart-skeleton-shimmer 1.8s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
.voraui-btc-rainbow-chart-skeleton-shimmer::after {
animation: none;
}
}
`}</style>
<div className="flex items-center justify-end gap-1">
{Array.from({ length: PRESET_COUNT }, (_, i) => (
<div key={i} className="h-7 w-10 rounded-md bg-muted" />
))}
</div>
<div className="voraui-btc-rainbow-chart-skeleton-shimmer relative h-[360px] w-full overflow-hidden rounded-md bg-muted/30 sm:h-[420px]">
<svg
viewBox={`0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`}
preserveAspectRatio="none"
className="absolute inset-0 h-full w-full"
aria-hidden="true"
>
{bandFills.map((band, i) => (
<polygon key={i} points={band.points} fill={band.color} opacity={0.22} />
))}
<polyline
points={pricePath}
fill="none"
stroke="currentColor"
strokeWidth={2}
strokeLinejoin="round"
strokeLinecap="round"
className="text-muted-foreground/55"
/>
</svg>
</div>
</div>
);
}
registry/voraui/btc-rainbow-chart/hooks/use-btc-history.ts
"use client";
import { useEffect, useState } from "react";
import { BTC_DAILY_SEED } from "../lib/btc-seed";
export interface RainbowPoint {
/** Unix seconds (UTC day open). */
time: number;
/** Daily close in USD. */
price: number;
}
const BINANCE_KLINES_URL = "https://api.binance.com/api/v3/klines";
// First Binance BTCUSDT spot candle: 2017-08-17 00:00 UTC.
const BINANCE_BTCUSDT_START_MS = 1_502_928_000_000;
const DAY_MS = 86_400_000;
/** Merge seed and Binance series; Binance wins on any overlapping day. */
export function mergeBtcHistory(
seed: ReadonlyArray<readonly [number, number]>,
binance: RainbowPoint[],
): RainbowPoint[] {
const byTime = new Map<number, number>();
for (const [time, price] of seed) byTime.set(time, price);
for (const point of binance) byTime.set(point.time, point.price);
return [...byTime.entries()]
.map(([time, price]) => ({ time, price }))
.sort((a, b) => a.time - b.time);
}
/** Paginate Binance daily klines forward from 2017-08-17 in 1000-candle batches. */
export async function fetchBinanceDailyCloses(signal?: AbortSignal): Promise<RainbowPoint[]> {
const out: RainbowPoint[] = [];
let cursorMs = BINANCE_BTCUSDT_START_MS;
// Hard cap on iterations; 20 batches of 1000 daily candles is ~54 years.
for (let i = 0; i < 20; i++) {
const params = new URLSearchParams({
symbol: "BTCUSDT",
interval: "1d",
startTime: String(cursorMs),
limit: "1000",
});
const res = await fetch(`${BINANCE_KLINES_URL}?${params}`, { signal });
if (!res.ok) throw new Error(`Binance klines request failed: ${res.status}`);
const batch = (await res.json()) as unknown[][];
if (!Array.isArray(batch) || batch.length === 0) break;
for (const k of batch) {
const openMs = Number(k[0]);
const close = Number(k[4]);
if (Number.isFinite(openMs) && Number.isFinite(close)) {
out.push({ time: Math.floor(openMs / 1000), price: close });
}
}
if (batch.length < 1000) break;
cursorMs = Number(batch[batch.length - 1][0]) + DAY_MS;
}
return out;
}
export function useBtcHistory(options: { enabled?: boolean } = {}) {
const { enabled = true } = options;
const [data, setData] = useState<RainbowPoint[] | null>(null);
const [loading, setLoading] = useState(enabled);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
if (!enabled) return;
const controller = new AbortController();
const load = async () => {
try {
const binance = await fetchBinanceDailyCloses(controller.signal);
if (controller.signal.aborted) return;
setData(mergeBtcHistory(BTC_DAILY_SEED, binance));
setError(null);
setLoading(false);
} catch (err) {
if (controller.signal.aborted || (err as Error).name === "AbortError") return;
setError(err instanceof Error ? err.message : "Binance klines request failed");
setLoading(false);
}
};
load();
return () => controller.abort();
}, [enabled]);
return { data, loading, error };
}
registry/voraui/btc-rainbow-chart/lib/rainbow-bands.ts
/**
* lightweight-charts series primitive painting the 9 log-regression band
* ceilings (A * log10(days_since_genesis) + B + offset) as 8 filled strips.
* Below the lowest band the chart stays transparent by design.
*/
import type {
AutoscaleInfo,
IChartApiBase,
IPrimitivePaneRenderer,
IPrimitivePaneView,
ISeriesApi,
ISeriesPrimitive,
SeriesAttachedParameter,
SeriesType,
Time,
} from "lightweight-charts";
// Structural subset of fancy-canvas's CanvasRenderingTarget2D (not a direct dependency).
interface MediaScope {
context: CanvasRenderingContext2D;
mediaSize: { width: number; height: number };
}
interface CanvasRenderingTarget2D {
useMediaCoordinateSpace<T>(fn: (scope: MediaScope) => T): T;
}
const A = 5.84;
const B = -17.01;
const BTC_GENESIS_MS = Date.UTC(2009, 0, 3);
const DAY_MS = 86_400_000;
export interface RainbowBand {
key: string;
label: string;
offset: number;
color: string;
}
// Ordered top -> bottom (most expensive -> cheapest).
export const DEFAULT_RAINBOW_BANDS: RainbowBand[] = [
{ key: "b1", label: "Maximum Bubble Territory", offset: 0.5, color: "#dc2626" },
{ key: "b2", label: "Sell. Seriously, SELL!", offset: 0.36, color: "#f97316" },
{ key: "b3", label: "FOMO intensifies", offset: 0.22, color: "#f59e0b" },
{ key: "b4", label: "Is this a bubble?", offset: 0.08, color: "#eab308" },
{ key: "b5", label: "HODL!", offset: -0.06, color: "#84cc16" },
{ key: "b6", label: "Still cheap", offset: -0.2, color: "#22c55e" },
{ key: "b7", label: "Accumulate", offset: -0.34, color: "#14b8a6" },
{ key: "b8", label: "BUY!", offset: -0.48, color: "#0ea5e9" },
{ key: "b9", label: "Basically a Fire Sale", offset: -0.62, color: "#2563eb" },
];
export function rainbowPriceAt(dateMs: number, offset: number): number {
const days = Math.max((dateMs - BTC_GENESIS_MS) / DAY_MS, 1);
return Math.pow(10, A * Math.log10(days) + B + offset);
}
/** Band the price sits inside, or null if below every ceiling. */
export function findActiveBand(
price: number,
dateMs: number,
bands: RainbowBand[] = DEFAULT_RAINBOW_BANDS,
): RainbowBand | null {
// Walk top→bottom; the first ceiling crossed is the visible band.
const sorted = [...bands].sort((a, b) => b.offset - a.offset);
for (const band of sorted) {
const ceiling = rainbowPriceAt(dateMs, band.offset);
if (price >= ceiling) {
return band;
}
}
return null;
}
class RainbowBandsRenderer implements IPrimitivePaneRenderer {
constructor(
private chart: IChartApiBase<Time> | null,
private series: ISeriesApi<SeriesType, Time> | null,
private bands: RainbowBand[],
private fillOpacity: number,
) {}
draw(target: CanvasRenderingTarget2D): void {
const chart = this.chart;
const series = this.series;
if (!chart || !series) return;
target.useMediaCoordinateSpace(({ context: ctx, mediaSize }) => {
const width = mediaSize.width;
if (width <= 0) return;
const timeScale = chart.timeScale();
// Sample every ~6 CSS px: smooth enough, cheap on zoom/resize.
const STEP = 6;
const sampleCount = Math.max(2, Math.ceil(width / STEP));
const xs: number[] = [];
const dates: number[] = [];
for (let i = 0; i < sampleCount; i++) {
const x = (i / (sampleCount - 1)) * width;
const t = timeScale.coordinateToTime(x);
if (t === null) continue;
const ms = timeToMs(t);
if (ms === null) continue;
xs.push(x);
dates.push(ms);
}
if (xs.length < 2) return;
// Sort bands top -> bottom (highest offset first).
const sorted = [...this.bands].sort((a, b) => b.offset - a.offset);
// Precompute ceiling y-coords for every band at every sample x.
const ceilingYs: number[][] = sorted.map(() => new Array(xs.length).fill(NaN));
for (let s = 0; s < xs.length; s++) {
const dateMs = dates[s];
for (let b = 0; b < sorted.length; b++) {
const price = rainbowPriceAt(dateMs, sorted[b].offset);
const y = series.priceToCoordinate(price);
if (y !== null) ceilingYs[b][s] = y;
}
}
// Each strip between consecutive ceilings gets the lower band's color.
ctx.save();
ctx.globalAlpha = this.fillOpacity;
for (let b = 0; b < sorted.length - 1; b++) {
const topYs = ceilingYs[b];
const bottomYs = ceilingYs[b + 1];
ctx.fillStyle = sorted[b + 1].color;
ctx.beginPath();
let started = false;
for (let s = 0; s < xs.length; s++) {
const y = topYs[s];
if (!Number.isFinite(y)) continue;
if (!started) {
ctx.moveTo(xs[s], y);
started = true;
} else {
ctx.lineTo(xs[s], y);
}
}
for (let s = xs.length - 1; s >= 0; s--) {
const y = bottomYs[s];
if (!Number.isFinite(y)) continue;
ctx.lineTo(xs[s], y);
}
ctx.closePath();
ctx.fill();
}
ctx.restore();
});
}
}
class RainbowBandsPaneView implements IPrimitivePaneView {
constructor(private primitive: RainbowBandsPrimitive) {}
zOrder() {
return "bottom" as const;
}
renderer(): IPrimitivePaneRenderer | null {
return new RainbowBandsRenderer(
this.primitive.chart,
this.primitive.series,
this.primitive.bands,
this.primitive.fillOpacity,
);
}
}
export class RainbowBandsPrimitive implements ISeriesPrimitive<Time> {
chart: IChartApiBase<Time> | null = null;
series: ISeriesApi<SeriesType, Time> | null = null;
bands: RainbowBand[];
fillOpacity: number;
private paneView: RainbowBandsPaneView;
private requestChartUpdate: (() => void) | null = null;
constructor(bands: RainbowBand[] = DEFAULT_RAINBOW_BANDS, fillOpacity = 0.45) {
this.bands = bands;
this.fillOpacity = fillOpacity;
this.paneView = new RainbowBandsPaneView(this);
}
requestUpdate(): void {
this.requestChartUpdate?.();
}
attached(param: SeriesAttachedParameter<Time, SeriesType>): void {
this.chart = param.chart;
this.series = param.series;
this.requestChartUpdate = param.requestUpdate;
}
detached(): void {
this.chart = null;
this.series = null;
this.requestChartUpdate = null;
}
updateAllViews(): void {
// No internal state; values are computed at draw time.
}
paneViews(): readonly IPrimitivePaneView[] {
return [this.paneView];
}
autoscaleInfo(): AutoscaleInfo | null {
if (!this.chart || this.bands.length === 0) return null;
const range = this.chart.timeScale().getVisibleRange();
if (!range) return null;
const fromMs = timeToMs(range.from);
const toMs = timeToMs(range.to);
if (fromMs === null || toMs === null) return null;
const sorted = [...this.bands].sort((a, b) => b.offset - a.offset);
const startMs = Math.min(fromMs, toMs);
const endMs = Math.max(fromMs, toMs);
const minValue = rainbowPriceAt(startMs, sorted[sorted.length - 1].offset);
const maxValue = rainbowPriceAt(endMs, sorted[0].offset);
if (!Number.isFinite(minValue) || !Number.isFinite(maxValue) || minValue <= 0 || maxValue <= minValue) {
return null;
}
return {
priceRange: { minValue, maxValue },
margins: { above: 12, below: 12 },
};
}
}
/** Time to UTC ms; handles number, string, and business-day shapes. */
function timeToMs(t: Time): number | null {
if (typeof t === "number") return t * 1000;
if (typeof t === "string") {
const parsed = Date.parse(t);
return Number.isFinite(parsed) ? parsed : null;
}
if (t && typeof t === "object" && "year" in t) {
const bd = t as { year: number; month: number; day: number };
return Date.UTC(bd.year, bd.month - 1, bd.day);
}
return null;
}
registry/voraui/btc-rainbow-chart/lib/rainbow-tooltip.ts
import type { ISeriesApi, MouseEventParams, Time } from "lightweight-charts";
import { DEFAULT_RAINBOW_BANDS, findActiveBand, type RainbowBand } from "./rainbow-bands";
export function compactUsd(n: number): string {
if (!Number.isFinite(n) || n === 0) return "-";
if (n >= 1e9) return `$${(n / 1e9).toFixed(2)}B`;
if (n >= 1e6) return `$${(n / 1e6).toFixed(2)}M`;
if (n >= 1e3) return `$${(n / 1e3).toFixed(2)}K`;
if (n >= 1) return `$${n.toFixed(2)}`;
return `$${n.toFixed(4)}`;
}
/**
* Compact price for axis ticks: like {@link compactUsd} but drops trailing
* ".00" so labels stay short (e.g. "$280M" not "$280000000.00"). Full-length
* labels force a price scale wide enough to overflow and clip on mobile.
*/
export function compactUsdTick(n: number): string {
if (!Number.isFinite(n) || n === 0) return "-";
const trim = (v: number) => v.toFixed(2).replace(/\.?0+$/, "");
if (n >= 1e9) return `$${trim(n / 1e9)}B`;
if (n >= 1e6) return `$${trim(n / 1e6)}M`;
if (n >= 1e3) return `$${trim(n / 1e3)}K`;
if (n >= 1) return `$${trim(n)}`;
return `$${n.toFixed(4).replace(/0+$/, "")}`;
}
function escapeHtml(value: string): string {
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
}
/** Pure renderer for the tooltip body; exported for tests. */
export function renderRainbowTooltipHtml(
dateStr: string,
price: number,
band: RainbowBand | null,
): string {
return `
<div class="text-zinc-400">${dateStr}</div>
<div class="mt-1 font-semibold text-white tabular-nums">${compactUsd(price)}</div>
${band
? `<div class="mt-1.5 flex items-center gap-1.5">
<span class="h-2 w-2 shrink-0 rounded-full" style="background-color:${band.color}"></span>
<span class="text-[11px] text-zinc-300">${escapeHtml(band.label)}</span>
</div>`
: ""}
`;
}
export interface RainbowTooltip {
/** Pass to chart.subscribeCrosshairMove. */
onCrosshairMove: (param: MouseEventParams<Time>) => void;
dispose: () => void;
}
export function createRainbowTooltip(
container: HTMLElement,
getSeries: () => ISeriesApi<"Line", Time> | null,
): RainbowTooltip {
const tooltip = document.createElement("div");
tooltip.style.position = "absolute";
tooltip.style.zIndex = "30";
tooltip.style.pointerEvents = "none";
tooltip.style.display = "none";
tooltip.className =
"rounded-lg border border-zinc-800 bg-zinc-900/95 px-3 py-2 text-xs shadow-xl backdrop-blur-sm";
container.appendChild(tooltip);
const hide = () => {
tooltip.style.display = "none";
};
const onCrosshairMove = (param: MouseEventParams<Time>) => {
const series = getSeries();
if (
!series ||
!param.point ||
!param.time ||
param.point.x < 0 ||
param.point.y < 0 ||
param.point.x > container.clientWidth ||
param.point.y > container.clientHeight
) {
hide();
return;
}
const priceData = param.seriesData.get(series) as { value: number } | undefined;
if (!priceData) {
hide();
return;
}
const ts = typeof param.time === "number" ? param.time * 1000 : NaN;
if (!Number.isFinite(ts)) {
hide();
return;
}
const dateStr = new Date(ts).toISOString().slice(0, 10);
const band = findActiveBand(priceData.value, ts, DEFAULT_RAINBOW_BANDS);
tooltip.innerHTML = renderRainbowTooltipHtml(dateStr, priceData.value, band);
tooltip.style.display = "block";
const ttWidth = tooltip.offsetWidth || 140;
const ttHeight = tooltip.offsetHeight || 60;
let left = param.point.x + 12;
let top = param.point.y - ttHeight - 12;
if (left + ttWidth > container.clientWidth - 4) {
left = param.point.x - ttWidth - 12;
}
if (top < 4) top = param.point.y + 12;
tooltip.style.left = `${left}px`;
tooltip.style.top = `${top}px`;
};
return {
onCrosshairMove,
dispose: () => tooltip.remove(),
};
}
registry/voraui/btc-rainbow-chart/lib/btc-seed.ts
// Generated by scripts/generate-btc-seed.mjs. Do not edit by hand.
// BTC daily closes 2010-07-18 .. 2017-08-16 as [unixSeconds, closeUsd].
// Source: Coin Metrics community data (historical closes never change).
export const BTC_DAILY_SEED: ReadonlyArray<readonly [number, number]> = [
[1279411200, 0.0858],
[1279497600, 0.0808],
[1279584000, 0.0747],
[1279670400, 0.0792],
[1279756800, 0.0585],
[1279843200, 0.0606],
[1279929600, 0.0545],
[1280016000, 0.0505],
[1280102400, 0.056],
[1280188800, 0.0586],
[1280275200, 0.0589],
[1280361600, 0.0699],
[1280448000, 0.0647],
[1280534400, 0.0675],
[1280620800, 0.0611],
[1280707200, 0.06],
[1280793600, 0.06],
[1280880000, 0.057],
[1280966400, 0.061],
[1281052800, 0.0617],
[1281139200, 0.059],
[1281225600, 0.0609],
[1281312000, 0.0704],
[1281398400, 0.0693],
[1281484800, 0.067],
[1281571200, 0.07],
[1281657600, 0.0645],
[1281744000, 0.067],
[1281830400, 0.0651],
[1281916800, 0.0655],
[1282003200, 0.07],
[1282089600, 0.068],
[1282176000, 0.0667],
[1282262400, 0.0655],
[1282348800, 0.0664],
[1282435200, 0.0659],
[1282521600, 0.0649],
[1282608000, 0.065],
[1282694400, 0.0648],
[1282780800, 0.0641],
[1282867200, 0.065],
[1282953600, 0.0646],
[1283040000, 0.064],
[1283126400, 0.065],
[1283212800, 0.06],
[1283299200, 0.062],
[1283385600, 0.0634],
[1283472000, 0.0609],
[1283558400, 0.0622],
[1283644800, 0.0617],
[1283731200, 0.0616],
[1283817600, 0.0612],
[1283904000, 0.061],
[1283990400, 0.0611],
[1284076800, 0.061],
[1284163200, 0.0636],
[1284249600, 0.0615],
[1284336000, 0.0622],
[1284422400, 0.062],
[1284508800, 0.0604],
[1284595200, 0.0619],
[1284681600, 0.06],
[1284768000, 0.061],
[1284854400, 0.0627],
[1284940800, 0.0621],
[1285027200, 0.0626],
[1285113600, 0.0619],
[1285200000, 0.0622],
[1285286400, 0.0622],
[1285372800, 0.062],
[1285459200, 0.062],
[1285545600, 0.0622],
[1285632000, 0.0619],
[1285718400, 0.0619],
[1285804800, 0.0619],
[1285891200, 0.062],
[1285977600, 0.0614],
[1286064000, 0.0611],
[1286150400, 0.0613],
[1286236800, 0.0614],
[1286323200, 0.0628],
[1286409600, 0.067],
[1286496000, 0.0845],
[1286582400, 0.0938],
[1286668800, 0.0971],
[1286755200, 0.095],
[1286841600, 0.0949],
[1286928000, 0.1049],
[1287014400, 0.102],
[1287100800, 0.105],
[1287187200, 0.101],
[1287273600, 0.102],
[1287360000, 0.1024],
[1287446400, 0.0975],
[1287532800, 0.099],
[1287619200, 0.107],
[1287705600, 0.1025],
[1287792000, 0.1046],
[1287878400, 0.115],
[1287964800, 0.1391],
[1288051200, 0.151],
[1288137600, 0.1877],
[1288224000, 0.1731],
[1288310400, 0.19],
[1288396800, 0.1976],
[1288483200, 0.1925],
[1288569600, 0.1945],
[1288656000, 0.1938],
[1288742400, 0.1931],
[1288828800, 0.2293],
[1288915200, 0.2591],
[1289001600, 0.401],
[1289088000, 0.34],
[1289174400, 0.2432],
[1289260800, 0.2173],
[1289347200, 0.2295],
[1289433600, 0.2231],
[1289520000, 0.2682],
[1289606400, 0.276],
[1289692800, 0.279],
[1289779200, 0.2685],
[1289865600, 0.225],
[1289952000, 0.2419],
[1290038400, 0.2691],
[1290124800, 0.2783],
[1290211200, 0.283],
[1290297600, 0.2767],
[1290384000, 0.285],
[1290470400, 0.2829],
[1290556800, 0.2829],
[1290643200, 0.28],
[1290729600, 0.2844],
[1290816000, 0.283],
[1290902400, 0.2714],
[1290988800, 0.2306],
[1291075200, 0.2082],
[1291161600, 0.2275],
[1291248000, 0.255],
[1291334400, 0.2511],
[1291420800, 0.205],
[1291507200, 0.2029],
[1291593600, 0.204],
[1291680000, 0.2334],
[1291766400, 0.2388],
[1291852800, 0.2],
[1291939200, 0.204],
[1292025600, 0.228],
[1292112000, 0.2199],
[1292198400, 0.2276],
[1292284800, 0.2467],
[1292371200, 0.24],
[1292457600, 0.25],
[1292544000, 0.2427],
[1292630400, 0.241],
[1292716800, 0.2401],
[1292803200, 0.267],
[1292889600, 0.2414],
[1292976000, 0.25],
[1293062400, 0.25],
[1293148800, 0.248],
[1293235200, 0.2499],
[1293321600, 0.265],
[1293408000, 0.2648],
[1293494400, 0.281],
[1293580800, 0.3],
[1293667200, 0.3],
[1293753600, 0.3],
[1293840000, 0.3],
[1293926400, 0.3],
[1294012800, 0.295],
[1294099200, 0.2989],
[1294185600, 0.2989],
[1294272000, 0.298],
[1294358400, 0.32],
[1294444800, 0.3229],
[1294531200, 0.323],
[1294617600, 0.3266],
[1294704000, 0.3266],
[1294790400, 0.3188],
[1294876800, 0.3176],
[1294963200, 0.4],
[1295049600, 0.386],
[1295136000, 0.3868],
[1295222400, 0.3495],
[1295308800, 0.313],
[1295395200, 0.313],
[1295481600, 0.39],
[1295568000, 0.4199],
[1295654400, 0.44],
[1295740800, 0.4424],
[1295827200, 0.4199],
[1295913600, 0.41],
[1296000000, 0.4151],
[1296086400, 0.4212],
[1296172800, 0.4445],
[1296259200, 0.439],
[1296345600, 0.4771],
[1296432000, 0.5251],
[1296518400, 0.7075],
[1296604800, 0.7254],
[1296691200, 0.6939],
[1296777600, 0.811],
[1296864000, 0.9117],
[1296950400, 0.898],
[1297036800, 0.8894],
[1297123200, 0.918],
[1297209600, 1.0161],
[1297296000, 0.9797],
[1297382400, 1.0541],
[1297468800, 1.0787],
[1297555200, 1.05],
[1297641600, 1.07],
[1297728000, 1.05],
[1297814400, 1.0317],
[1297900800, 1.0399],
[1297987200, 0.899],
[1298073600, 0.944],
[1298160000, 0.865],
[1298246400, 0.8357],
[1298332800, 0.877],
[1298419200, 0.9],
[1298505600, 0.9891],
[1298592000, 0.9147],
[1298678400, 0.958],
[1298764800, 0.895],
[1298851200, 0.8602],
[1298937600, 0.9211],
[1299024000, 0.9399],
[1299110400, 0.9391],
[1299196800, 0.9011],
[1299283200, 0.9078],
[1299369600, 0.8848],
[1299456000, 0.8776],
[1299542400, 0.8661],
[1299628800, 0.86],
[1299715200, 0.9207],
[1299801600, 0.88],
[1299888000, 0.9178],
[1299974400, 0.8925],
[1300060800, 0.8939],
[1300147200, 0.8722],
[1300233600, 0.8512],
[1300320000, 0.8254],
[1300406400, 0.802],
[1300492800, 0.765],
[1300579200, 0.7415],
[1300665600, 0.759],
[1300752000, 0.8091],
[1300838400, 0.8497],
[1300924800, 0.8724],
[1301011200, 0.8838],
[1301097600, 0.8552],
[1301184000, 0.822],
[1301270400, 0.7947],
[1301356800, 0.7925],
[1301443200, 0.7897],
[1301529600, 0.7846],
[1301616000, 0.7741],
[1301702400, 0.782],
[1301788800, 0.779],
[1301875200, 0.68],
[1301961600, 0.7157],
[1302048000, 0.74],
[1302134400, 0.7538],
[1302220800, 0.75],
[1302307200, 0.7341],
[1302393600, 0.7332],
[1302480000, 0.7701],
[1302566400, 0.8614],
[1302652800, 0.9303],
[1302739200, 0.9986],
[1302825600, 0.9837],
[1302912000, 1.0466],
[1302998400, 1.0981],
[1303084800, 1.1494],
[1303171200, 1.1852],
[1303257600, 1.1421],
[1303344000, 1.2073],
[1303430400, 1.4045],
[1303516800, 1.8289],
[1303603200, 1.632],
[1303689600, 1.5645],
[1303776000, 1.7708],
[1303862400, 1.9032],
[1303948800, 2.2857],
[1304035200, 2.8506],
[1304121600, 3.5],
[1304208000, 3.0942],
[1304294400, 3.2],
[1304380800, 3.3606],
[1304467200, 3.4087],
[1304553600, 3.3437],
[1304640000, 3.4551],
[1304726400, 3.6413],
[1304812800, 3.8487],
[1304899200, 3.8041],
[1304985600, 5.6517],
[1305072000, 5.4398],
[1305158400, 6.3349],
[1305244800, 8.139],
[1305331200, 7.0072],
[1305417600, 6.9249],
[1305504000, 7.8851],
[1305590400, 7.2572],
[1305676800, 6.7632],
[1305763200, 6.8901],
[1305849600, 5.6181],
[1305936000, 6.0848],
[1306022400, 6.712],
[1306108800, 7.0653],
[1306195200, 7.4027],
[1306281600, 8.5693],
[1306368000, 8.7822],
[1306454400, 8.5287],
[1306540800, 8.3493],
[1306627200, 8.401],
[1306713600, 8.7793],
[1306800000, 8.7216],
[1306886400, 9.6238],
[1306972800, 10.7028],
[1307059200, 14.2646],
[1307145600, 18.3127],
[1307232000, 16.5433],
[1307318400, 18.4021],
[1307404800, 23.2379],
[1307491200, 29.0299],
[1307577600, 28.7905],
[1307664000, 24.0494],
[1307750400, 14.7497],
[1307836800, 18.8501],
[1307923200, 19.5423],
[1308009600, 19.2577],
[1308096000, 19.4641],
[1308182400, 17.9294],
[1308268800, 15.4364],
[1308355200, 16.8754],
[1308441600, 17.5107],
[1308528000, 17.5107],
[1308614400, 17.5107],
[1308700800, 17.5107],
[1308787200, 17.5107],
[1308873600, 17.5107],
[1308960000, 17.5107],
[1309046400, 16.3613],
[1309132800, 16.7523],
[1309219200, 16.9618],
[1309305600, 16.8546],
[1309392000, 16.1853],
[1309478400, 15.4204],
[1309564800, 15.3828],
[1309651200, 15.4576],
[1309737600, 13.8528],
[1309824000, 12.9648],
[1309910400, 14.7148],
[1309996800, 14.7973],
[1310083200, 14.299],
[1310169600, 14.3815],
[1310256000, 14.6229],
[1310342400, 14.3102],
[1310428800, 14.0213],
[1310515200, 13.9715],
[1310601600, 13.998],
[1310688000, 13.8064],
[1310774400, 13.7131],
[1310860800, 13.2581],
[1310947200, 13.6305],
[1311033600, 13.8248],
[1311120000, 13.6783],
[1311206400, 13.6118],
[1311292800, 13.6985],
[1311379200, 13.6817],
[1311465600, 13.9925],
[1311552000, 14.0334],
[1311638400, 13.878],
[1311724800, 13.8782],
[1311811200, 13.4916],
[1311897600, 13.5123],
[1311984000, 13.5403],
[1312070400, 13.3729],
[1312156800, 13.0191],
[1312243200, 12.2142],
[1312329600, 9.2864],
[1312416000, 10.7685],
[1312502400, 9.7302],
[1312588800, 6.9642],
[1312675200, 8.5018],
[1312761600, 7.7753],
[1312848000, 9.8025],
[1312934400, 10.0513],
[1313020800, 9.4384],
[1313107200, 9.453],
[1313193600, 10.004],
[1313280000, 10.8068],
[1313366400, 11.1307],
[1313452800, 10.992],
[1313539200, 10.964],
[1313625600, 10.8585],
[1313712000, 11.6705],
[1313798400, 11.4597],
[1313884800, 11.3545],
[1313971200, 10.9209],
[1314057600, 10.9172],
[1314144000, 10.8704],
[1314230400, 9.5461],
[1314316800, 8.1269],
[1314403200, 8.5965],
[1314489600, 9.0309],
[1314576000, 8.9612],
[1314662400, 8.8099],
[1314748800, 8.1992],
[1314835200, 8.2343],
[1314921600, 8.6214],
[1315008000, 8.4497],
[1315094400, 8.2035],
[1315180800, 7.5973],
[1315267200, 6.8465],
[1315353600, 7.163],
[1315440000, 6.6782],
[1315526400, 4.9868],
[1315612800, 4.7428],
[1315699200, 5.8529],
[1315785600, 6.0906],
[1315872000, 5.8025],
[1315958400, 5.5974],
[1316044800, 4.8678],
[1316131200, 4.8312],
[1316217600, 4.7753],
[1316304000, 5.2367],
[1316390400, 5.5204],
[1316476800, 6.1467],
[1316563200, 5.5971],
[1316649600, 5.475],
[1316736000, 5.5634],
[1316822400, 5.4579],
[1316908800, 5.3412],
[1316995200, 4.8738],
[1317081600, 4.9112],
[1317168000, 4.7634],
[1317254400, 4.7777],
[1317340800, 5.1437],
[1317427200, 5.0341],
[1317513600, 5.0071],
[1317600000, 5.0228],
[1317686400, 4.9568],
[1317772800, 4.8851],
[1317859200, 4.7302],
[1317945600, 4.276],
[1318032000, 3.9813],
[1318118400, 4.1116],
[1318204800, 4.075],
[1318291200, 4.0089],
[1318377600, 4.1662],
[1318464000, 4.037],
[1318550400, 3.9863],
[1318636800, 3.8373],
[1318723200, 3.6097],
[1318809600, 2.5812],
[1318896000, 2.4223],
[1318982400, 2.2173],
[1319068800, 2.3561],
[1319155200, 2.5701],
[1319241600, 3.1555],
[1319328000, 3.1478],
[1319414400, 2.5229],
[1319500800, 2.8019],
[1319587200, 2.7775],
[1319673600, 3.0454],
[1319760000, 3.1796],
[1319846400, 3.5692],
[1319932800, 3.2574],
[1320019200, 3.2651],
[1320105600, 3.171],
[1320192000, 3.2558],
[1320278400, 3.1683],
[1320364800, 3.1201],
[1320451200, 2.9778],
[1320537600, 2.9627],
[1320624000, 3.0178],
[1320710400, 3.0566],
[1320796800, 2.9196],
[1320883200, 2.8567],
[1320969600, 3.0679],
[1321056000, 3.0255],
[1321142400, 2.9864],
[1321228800, 2.2242],
[1321315200, 2.3224],
[1321401600, 2.5468],
[1321488000, 2.2791],
[1321574400, 2.1051],
[1321660800, 2.2035],
[1321747200, 2.202],
[1321833600, 2.2799],
[1321920000, 2.3225],
[1322006400, 2.3303],
[1322092800, 2.4389],
[1322179200, 2.4962],
[1322265600, 2.4718],
[1322352000, 2.4776],
[1322438400, 2.5412],
[1322524800, 2.7577],
[1322611200, 2.966],
[1322697600, 3.0826],
[1322784000, 3.1004],
[1322870400, 2.8039],
[1322956800, 2.8197],
[1323043200, 2.8748],
[1323129600, 3.0254],
[1323216000, 2.9855],
[1323302400, 2.9919],
[1323388800, 2.9558],
[1323475200, 3.069],
[1323561600, 3.2493],
[1323648000, 3.1873],
[1323734400, 3.2411],
[1323820800, 3.1551],
[1323907200, 3.2031],
[1323993600, 3.2091],
[1324080000, 3.1925],
[1324166400, 3.194],
[1324252800, 3.5258],
[1324339200, 3.9526],
[1324425600, 3.889],
[1324512000, 3.9031],
[1324598400, 3.938],
[1324684800, 3.9394],
[1324771200, 4.2339],
[1324857600, 3.9991],
[1324944000, 4.0955],
[1325030400, 4.2073],
[1325116800, 4.1734],
[1325203200, 4.3106],
[1325289600, 4.7143],
[1325376000, 5.2948],
[1325462400, 5.2049],
[1325548800, 4.8705],
[1325635200, 5.5857],
[1325721600, 6.874],
[1325808000, 6.6833],
[1325894400, 6.7962],
[1325980800, 7.0967],
[1326067200, 6.2885],
[1326153600, 6.5285],
[1326240000, 6.8891],
[1326326400, 6.7736],
[1326412800, 6.4544],
[1326499200, 6.7617],
[1326585600, 7.0469],
[1326672000, 6.7156],
[1326758400, 5.5996],
[1326844800, 5.9002],
[1326931200, 6.3157],
[1327017600, 6.5015],
[1327104000, 6.1806],
[1327190400, 6.303],
[1327276800, 6.3749],
[1327363200, 6.2745],
[1327449600, 5.8105],
[1327536000, 5.3672],
[1327622400, 5.3031],
[1327708800, 5.6598],
[1327795200, 5.3914],
[1327881600, 5.5035],
[1327968000, 5.5382],
[1328054400, 6.0752],
[1328140800, 6.0996],
[1328227200, 5.9516],
[1328313600, 5.8954],
[1328400000, 5.6781],
[1328486400, 5.4827],
[1328572800, 5.662],
[1328659200, 5.6185],
[1328745600, 5.8357],
[1328832000, 5.9378],
[1328918400, 5.6121],
[1329004800, 5.5191],
[1329091200, 5.3484],
[1329177600, 4.4837],
[1329264000, 4.3255],
[1329350400, 4.2552],
[1329436800, 4.3915],
[1329523200, 4.2701],
[1329609600, 4.3896],
[1329696000, 4.3651],
[1329782400, 4.3151],
[1329868800, 4.4193],
[1329955200, 5.0395],
[1330041600, 5.0256],
[1330128000, 4.7726],
[1330214400, 4.9264],
[1330300800, 4.9525],
[1330387200, 4.8573],
[1330473600, 4.8727],
[1330560000, 4.9221],
[1330646400, 4.7148],
[1330732800, 4.6282],
[1330819200, 4.8341],
[1330905600, 4.9824],
[1330992000, 4.9878],
[1331078400, 4.9491],
[1331164800, 4.935],
[1331251200, 4.8723],
[1331337600, 4.8414],
[1331424000, 4.892],
[1331510400, 4.9108],
[1331596800, 5.2909],
[1331683200, 5.3905],
[1331769600, 5.3408],
[1331856000, 5.3396],
[1331942400, 5.236],
[1332028800, 5.2701],
[1332115200, 4.6787],
[1332201600, 4.8308],
[1332288000, 4.8172],
[1332374400, 4.7296],
[1332460800, 4.6916],
[1332547200, 4.652],
[1332633600, 4.5523],
[1332720000, 4.6327],
[1332806400, 4.8113],
[1332892800, 4.7906],
[1332979200, 4.7941],
[1333065600, 4.8614],
[1333152000, 4.8898],
[1333238400, 4.7933],
[1333324800, 4.983],
[1333411200, 4.9562],
[1333497600, 4.9178],
[1333584000, 4.9208],
[1333670400, 4.9491],
[1333756800, 4.7097],
[1333843200, 4.7788],
[1333929600, 4.8525],
[1334016000, 4.8414],
[1334102400, 4.9153],
[1334188800, 4.9012],
[1334275200, 4.9344],
[1334361600, 4.9564],
[1334448000, 4.9616],
[1334534400, 4.9508],
[1334620800, 4.9687],
[1334707200, 5.1244],
[1334793600, 5.1309],
[1334880000, 5.3665],
[1334966400, 5.2826],
[1335052800, 5.1956],
[1335139200, 5.1109],
[1335225600, 5.0879],
[1335312000, 5.1488],
[1335398400, 5.0974],
[1335484800, 5.0959],
[1335571200, 4.9707],
[1335657600, 4.9026],
[1335744000, 4.9421],
[1335830400, 4.9871],
[1335916800, 5.0534],
[1336003200, 5.1189],
[1336089600, 5.0855],
[1336176000, 5.0566],
[1336262400, 5.0478],
[1336348800, 5.0676],
[1336435200, 5.0235],
[1336521600, 5.0413],
[1336608000, 4.9275],
[1336694400, 4.9637],
[1336780800, 4.9465],
[1336867200, 4.9448],
[1336953600, 5.0114],
[1337040000, 5.0336],
[1337126400, 5.0878],
[1337212800, 5.0897],
[1337299200, 5.1183],
[1337385600, 5.1125],
[1337472000, 5.0942],
[1337558400, 5.0942],
[1337644800, 5.0891],
[1337731200, 5.1289],
[1337817600, 5.1192],
[1337904000, 5.1373],
[1337990400, 5.104],
[1338076800, 5.1346],
[1338163200, 5.1363],
[1338249600, 5.1485],
[1338336000, 5.1383],
[1338422400, 5.1816],
[1338508800, 5.2669],
[1338595200, 5.2436],
[1338681600, 5.2127],
[1338768000, 5.2588],
[1338854400, 5.426],
[1338940800, 5.4462],
[1339027200, 5.5872],
[1339113600, 5.6225],
[1339200000, 5.557],
[1339286400, 5.4579],
[1339372800, 5.587],
[1339459200, 5.7275],
[1339545600, 5.9093],
[1339632000, 5.962],
[1339718400, 6.5234],
[1339804800, 6.4442],
[1339891200, 6.2],
[1339977600, 6.3108],
[1340064000, 6.4948],
[1340150400, 6.6936],
[1340236800, 6.6723],
[1340323200, 6.5638],
[1340409600, 6.4475],
[1340496000, 6.3505],
[1340582400, 6.3175],
[1340668800, 6.4329],
[1340755200, 6.6157],
[1340841600, 6.5901],
[1340928000, 6.6588],
[1341014400, 6.6804],
[1341100800, 6.6269],
[1341187200, 6.7435],
[1341273600, 6.45],
[1341360000, 6.5148],
[1341446400, 6.6424],
[1341532800, 6.6722],
[1341619200, 6.8083],
[1341705600, 6.7963],
[1341792000, 7.0324],
[1341878400, 7.1786],
[1341964800, 7.1851],
[1342051200, 7.5559],
[1342137600, 7.6309],
[1342224000, 7.5801],
[1342310400, 7.6272],
[1342396800, 8.4934],
[1342483200, 8.752],
[1342569600, 9.0952],
[1342656000, 8.8795],
[1342742400, 8.5325],
[1342828800, 8.8756],
[1342915200, 8.5066],
[1343001600, 8.5312],
[1343088000, 8.5746],
[1343174400, 8.7693],
[1343260800, 8.8758],
[1343347200, 8.8915],
[1343433600, 8.8426],
[1343520000, 8.7477],
[1343606400, 9.0883],
[1343692800, 9.321],
[1343779200, 9.568],
[1343865600, 10.551],
[1343952000, 10.9159],
[1344038400, 10.9197],
[1344124800, 10.8051],
[1344211200, 10.8694],
[1344297600, 10.9413],
[1344384000, 11.0704],
[1344470400, 11.1037],
[1344556800, 11.4476],
[1344643200, 11.5425],
[1344729600, 11.5926],
[1344816000, 11.985],
[1344902400, 12.1871],
[1344988800, 13.1701],
[1345075200, 13.4508],
[1345161600, 12.077],
[1345248000, 11.5775],
[1345334400, 7.8306],
[1345420800, 9.9799],
[1345507200, 9.903],
[1345593600, 9.7726],
[1345680000, 10.0887],
[1345766400, 10.594],
[1345852800, 10.5837],
[1345939200, 10.5455],
[1346025600, 10.9004],
[1346112000, 10.933],
[1346198400, 10.8678],
[1346284800, 10.7277],
[1346371200, 10.1024],
[1346457600, 10.0065],
[1346544000, 10.2261],
[1346630400, 10.4971],
[1346716800, 10.364],
[1346803200, 11.0255],
[1346889600, 11.1608],
[1346976000, 11.0761],
[1347062400, 11.0433],
[1347148800, 11.0621],
[1347235200, 11.1253],
[1347321600, 11.2681],
[1347408000, 11.3153],
[1347494400, 11.3803],
[1347580800, 11.7301],
[1347667200, 11.7184],
[1347753600, 11.8869],
[1347840000, 11.9083],
[1347926400, 12.2597],
[1348012800, 12.5049],
[1348099200, 12.3672],
[1348185600, 12.3337],
[1348272000, 12.2137],
[1348358400, 12.1655],
[1348444800, 12.1136],
[1348531200, 12.1824],
[1348617600, 12.3198],
[1348704000, 12.3188],
[1348790400, 12.3815],
[1348876800, 12.4048],
[1348963200, 12.3916],
[1349049600, 12.3894],
[1349136000, 12.8072],
[1349222400, 12.9554],
[1349308800, 12.8624],
[1349395200, 12.7522],
[1349481600, 12.5051],
[1349568000, 11.874],
[1349654400, 11.7333],
[1349740800, 11.8287],
[1349827200, 12.1092],
[1349913600, 12.0676],
[1350000000, 12.0281],
[1350086400, 11.9268],
[1350172800, 11.6506],
[1350259200, 11.9083],
[1350345600, 11.848],
[1350432000, 11.9194],
[1350518400, 11.9259],
[1350604800, 11.7575],
[1350691200, 11.6944],
[1350777600, 11.6574],
[1350864000, 11.7411],
[1350950400, 11.7078],
[1351036800, 11.6344],
[1351123200, 10.7536],
[1351209600, 10.1306],
[1351296000, 10.4582],
[1351382400, 10.71],
[1351468800, 10.6307],
[1351555200, 10.8593],
[1351641600, 11.1461],
[1351728000, 10.6135],
[1351814400, 10.5305],
[1351900800, 10.6507],
[1351987200, 10.7969],
[1352073600, 10.7408],
[1352160000, 10.8682],
[1352246400, 10.9541],
[1352332800, 10.8927],
[1352419200, 10.8159],
[1352505600, 10.8633],
[1352592000, 10.8418],
[1352678400, 11.0313],
[1352764800, 10.998],
[1352851200, 10.959],
[1352937600, 11.1751],
[1353024000, 11.705],
[1353110400, 11.75],
[1353196800, 11.6656],
[1353283200, 11.7505],
[1353369600, 11.6992],
[1353456000, 11.7291],
[1353542400, 12.292],
[1353628800, 12.2803],
[1353715200, 12.4132],
[1353801600, 12.5297],
[1353888000, 12.1846],
[1353974400, 12.1593],
[1354060800, 12.3317],
[1354147200, 12.4977],
[1354233600, 12.5861],
[1354320000, 12.5924],
[1354406400, 12.4979],
[1354492800, 12.657],
[1354579200, 13.3696],
[1354665600, 13.3128],
[1354752000, 13.4779],
[1354838400, 13.4773],
[1354924800, 13.5],
[1355011200, 13.3465],
[1355097600, 13.4923],
[1355184000, 13.6154],
[1355270400, 13.6682],
[1355356800, 13.7553],
[1355443200, 13.6009],
[1355529600, 13.5309],
[1355616000, 13.3329],
[1355702400, 13.3201],
[1355788800, 13.272],
[1355875200, 13.5385],
[1355961600, 13.57],
[1356048000, 13.429],
[1356134400, 13.4272],
[1356220800, 13.3181],
[1356307200, 13.4267],
[1356393600, 13.3656],
[1356480000, 13.4547],
[1356566400, 13.3993],
[1356652800, 13.4555],
[1356739200, 13.374],
[1356825600, 13.445],
[1356912000, 13.5456],
[1356998400, 13.3314],
[1357084800, 13.2806],
[1357171200, 13.3841],
[1357257600, 13.4517],
[1357344000, 13.4594],
[1357430400, 13.5045],
[1357516800, 13.5561],
[1357603200, 13.7804],
[1357689600, 13.821],
[1357776000, 14.1232],
[1357862400, 14.2276],
[1357948800, 14.2143],
[1358035200, 14.1608],
[1358121600, 14.318],
[1358208000, 14.3136],
[1358294400, 14.7078],
[1358380800, 15.5986],
[1358467200, 15.7158],
[1358553600, 15.5881],
[1358640000, 15.7196],
[1358726400, 16.781],
[1358812800, 17.3002],
[1358899200, 17.5364],
[1358985600, 16.9011],
[1359072000, 17.4072],
[1359158400, 17.5536],
[1359244800, 17.8646],
[1359331200, 18.7943],
[1359417600, 19.5147],
[1359504000, 19.7374],
[1359590400, 20.5116],
[1359676800, 20.4431],
[1359763200, 19.6359],
[1359849600, 20.5789],
[1359936000, 20.4405],
[1360022400, 20.6593],
[1360108800, 21.2086],
[1360195200, 22.1178],
[1360281600, 22.7874],
[1360368000, 23.7339],
[1360454400, 23.9003],
[1360540800, 24.4973],
[1360627200, 24.9797],
[1360713600, 24.6417],
[1360800000, 27.2824],
[1360886400, 27.1713],
[1360972800, 27.3462],
[1361059200, 26.9273],
[1361145600, 26.9289],
[1361232000, 29.4136],
[1361318400, 29.8198],
[1361404800, 29.8181],
[1361491200, 30.4727],
[1361577600, 29.8065],
[1361664000, 29.8828],
[1361750400, 30.352],
[1361836800, 31.1555],
[1361923200, 31.2403],
[1362009600, 33.3753],
[1362096000, 34.6063],
[1362182400, 34.1435],
[1362268800, 34.4517],
[1362355200, 36.3763],
[1362441600, 40.673],
[1362528000, 43.285],
[1362614400, 41.9474],
[1362700800, 43.9029],
[1362787200, 46.8886],
[1362873600, 46.066],
[1362960000, 48.2751],
[1363046400, 44.4135],
[1363132800, 47.0162],
[1363219200, 46.9256],
[1363305600, 46.9025],
[1363392000, 47.157],
[1363478400, 47.3335],
[1363564800, 51.3654],
[1363651200, 59.4986],
[1363737600, 63.6875],
[1363824000, 70.9175],
[1363910400, 69.8461],
[1363996800, 64.3831],
[1364083200, 71.6904],
[1364169600, 74.3141],
[1364256000, 78.6142],
[1364342400, 88.8521],
[1364428800, 87.6732],
[1364515200, 90.2957],
[1364601600, 92.19],
[1364688000, 93.8992],
[1364774400, 103.5803],
[1364860800, 116.6799],
[1364947200, 131.3848],
[1365033600, 133.0071],
[1365120000, 142.6261],
[1365206400, 143.0818],
[1365292800, 162.8522],
[1365379200, 186.3512],
[1365465600, 230.683],
[1365552000, 161.1929],
[1365638400, 82.9016],
[1365724800, 111.4764],
[1365811200, 97.6091],
[1365897600, 88.8615],
[1365984000, 80.8747],
[1366070400, 68.2831],
[1366156800, 92.864],
[1366243200, 108.6283],
[1366329600, 119.0123],
[1366416000, 128.2083],
[1366502400, 118.4832],
[1366588800, 126.3143],
[1366675200, 142.1272],
[1366761600, 154.1333],
[1366848000, 141.0087],
[1366934400, 137.2096],
[1367020800, 128.2267],
[1367107200, 134.6236],
[1367193600, 143.8104],
[1367280000, 139.1296],
[1367366400, 116.1138],
[1367452800, 106.341],
[1367539200, 96.3168],
[1367625600, 112.4976],
[1367712000, 116.4887],
[1367798400, 112.1186],
[1367884800, 111.6092],
[1367971200, 113.1361],
[1368057600, 111.9745],
[1368144000, 117.691],
[1368230400, 115.4998],
[1368316800, 114.8857],
[1368403200, 117.4045],
[1368489600, 107.8656],
[1368576000, 108.9869],
[1368662400, 112.9179],
[1368748800, 117.2846],
[1368835200, 118.1699],
[1368921600, 117.0339],
[1369008000, 117.8186],
[1369094400, 117.252],
[1369180800, 118.9782],
[1369267200, 123.7262],
[1369353600, 128.9711],
[1369440000, 128.8449],
[1369526400, 130.1586],
[1369612800, 126.3929],
[1369699200, 125.9046],
[1369785600, 129.5648],
[1369872000, 126.5131],
[1369958400, 127.8165],
[1370044800, 128.7912],
[1370131200, 122.6267],
[1370217600, 122.9492],
[1370304000, 120.19],
[1370390400, 120.8699],
[1370476800, 119.054],
[1370563200, 110.1977],
[1370649600, 109.1785],
[1370736000, 99.9036],
[1370822400, 104.3576],
[1370908800, 107.5075],
[1370995200, 106.3781],
[1371081600, 101.3239],
[1371168000, 99.2132],
[1371254400, 99.875],
[1371340800, 99.0384],
[1371427200, 100.1263],
[1371513600, 104.2892],
[1371600000, 104.4172],
[1371686400, 104.3235],
[1371772800, 101.4169],
[1371859200, 100.0395],
[1371945600, 100.3147],
[1372032000, 99.0457],
[1372118400, 97.8328],
[1372204800, 98.6517],
[1372291200, 96.8039],
[1372377600, 89.4245],
[1372464000, 88.7973],
[1372550400, 89.4809],
[1372636800, 82.8676],
[1372723200, 87.8165],
[1372809600, 77.6913],
[1372896000, 79.1349],
[1372982400, 67.4476],
[1373068800, 66.3417],
[1373155200, 72.1095],
[1373241600, 73.9886],
[1373328000, 74.8919],
[1373414400, 85.0137],
[1373500800, 87.4975],
[1373587200, 90.0467],
[1373673600, 91.5926],
[1373760000, 89.8923],
[1373846400, 93.7962],
[1373932800, 91.781],
[1374019200, 91.0314],
[1374105600, 84.9617],
[1374192000, 86.2388],
[1374278400, 84.9109],
[1374364800, 85.6644],
[1374451200, 85.649],
[1374537600, 86.9771],
[1374624000, 88.1517],
[1374710400, 90.1661],
[1374796800, 89.984],
[1374883200, 88.1653],
[1374969600, 92.7458],
[1375056000, 93.2987],
[1375142400, 96.6596],
[1375228800, 98.0244],
[1375315200, 96.568],
[1375401600, 96.0745],
[1375488000, 95.5067],
[1375574400, 96.3655],
[1375660800, 97.5271],
[1375747200, 97.6712],
[1375833600, 97.0542],
[1375920000, 94.2573],
[1376006400, 92.4728],
[1376092800, 93.2936],
[1376179200, 94.2713],
[1376265600, 95.4465],
[1376352000, 97.7591],
[1376438400, 99.1213],
[1376524800, 98.1063],
[1376611200, 98.291],
[1376697600, 99.6305],
[1376784000, 99.178],
[1376870400, 102.784],
[1376956800, 104.5002],
[1377043200, 110.8016],
[1377129600, 109.5232],
[1377216000, 107.6976],
[1377302400, 108.8827],
[1377388800, 113.0826],
[1377475200, 112.1181],
[1377561600, 117.7598],
[1377648000, 118.3174],
[1377734400, 118.8356],
[1377820800, 124.8854],
[1377907200, 128.378],
[1377993600, 130.5364],
[1378080000, 129.5654],
[1378166400, 129.1828],
[1378252800, 122.5292],
[1378339200, 122.3701],
[1378425600, 117.8611],
[1378512000, 119.815],
[1378598400, 118.0574],
[1378684800, 121.2593],
[1378771200, 122.2155],
[1378857600, 127.0882],
[1378944000, 126.7807],
[1379030400, 127.4077],
[1379116800, 124.3485],
[1379203200, 125.0764],
[1379289600, 126.2047],
[1379376000, 126.8973],
[1379462400, 126.9038],
[1379548800, 124.181],
[1379635200, 122.9216],
[1379721600, 123.5083],
[1379808000, 123.1249],
[1379894400, 122.8657],
[1379980800, 123.7974],
[1380067200, 123.6141],
[1380153600, 124.6857],
[1380240000, 126.6053],
[1380326400, 126.7966],
[1380412800, 127.1086],
[1380499200, 126.0903],
[1380585600, 127.5754],
[1380672000, 104.1051],
[1380758400, 117.5755],
[1380844800, 121.9303],
[1380931200, 121.3934],
[1381017600, 122.4753],
[1381104000, 123.9069],
[1381190400, 124.7665],
[1381276800, 125.9335],
[1381363200, 126.7047],
[1381449600, 127.2553],
[1381536000, 127.8513],
[1381622400, 132.4157],
[1381708800, 135.3392],
[1381795200, 141.4939],
[1381881600, 138.3279],
[1381968000, 143.7471],
[1382054400, 152.7756],
[1382140800, 165.7727],
[1382227200, 166.5002],
[1382313600, 179.9106],
[1382400000, 190.4028],
[1382486400, 204.6004],
[1382572800, 194.41],
[1382659200, 185.6438],
[1382745600, 179.8082],
[1382832000, 194.5461],
[1382918400, 196.2747],
[1383004800, 204.4282],
[1383091200, 197.9006],
[1383177600, 203.2836],
[1383264000, 203.0371],
[1383350400, 204.7929],
[1383436800, 210.2754],
[1383523200, 228.791],
[1383609600, 243.6417],
[1383696000, 263.2096],
[1383782400, 290.1242],
[1383868800, 333.7507],
[1383955200, 331.0511],
[1384041600, 327.5587],
[1384128000, 342.6977],
[1384214400, 354.6455],
[1384300800, 394.5045],
[1384387200, 416.7063],
[1384473600, 408.3988],
[1384560000, 435.7984],
[1384646400, 485.3366],
[1384732800, 657.7785],
[1384819200, 546.8784],
[1384905600, 595.3391],
[1384992000, 720.7644],
[1385078400, 802.9169],
[1385164800, 834.2953],
[1385251200, 807.1667],
[1385337600, 816.2434],
[1385424000, 916.0972],
[1385510400, 962.9106],
[1385596800, 1007.3872],
[1385683200, 1128.7255],
[1385769600, 1119.2967],
[1385856000, 964.4858],
[1385942400, 1040.8082],
[1386028800, 1053.621],
[1386115200, 1134.9322],
[1386201600, 1027.4118],
[1386288000, 824.5817],
[1386374400, 703.7484],
[1386460800, 783.5733],
[1386547200, 896.0793],
[1386633600, 977.1654],
[1386720000, 875.464],
[1386806400, 873.3248],
[1386892800, 879.1561],
[1386979200, 852.8561],
[1387065600, 864.0617],
[1387152000, 677.8941],
[1387238400, 682.6268],
[1387324800, 526.121],
[1387411200, 685.5251],
[1387497600, 600.217],
[1387584000, 597.0335],
[1387670400, 615.013],
[1387756800, 657.9266],
[1387843200, 650.6647],
[1387929600, 678.2902],
[1388016000, 749.9966],
[1388102400, 722.5706],
[1388188800, 715.8524],
[1388275200, 727.2712],
[1388361600, 735.742],
[1388448000, 729.5576],
[1388534400, 752.4045],
[1388620800, 784.9549],
[1388707200, 807.2229],
[1388793600, 828.6021],
[1388880000, 902.4874],
[1388966400, 914.46],
[1389052800, 803.3518],
[1389139200, 820.69],
[1389225600, 831.3348],
[1389312000, 853.2989],
[1389398400, 889.5558],
[1389484800, 845.1913],
[1389571200, 822.877],
[1389657600, 815.2936],
[1389744000, 841.0899],
[1389830400, 815.8548],
[1389916800, 792.8295],
[1390003200, 809.7835],
[1390089600, 838.4285],
[1390176000, 828.8852],
[1390262400, 823.818],
[1390348800, 818.9764],
[1390435200, 810.9224],
[1390521600, 781.0425],
[1390608000, 804.4032],
[1390694400, 814.4994],
[1390780800, 742.7014],
[1390867200, 790.1764],
[1390953600, 793.3844],
[1391040000, 799.4745],
[1391126400, 803.2376],
[1391212800, 813.2195],
[1391299200, 814.4909],
[1391385600, 806.9974],
[1391472000, 800.0782],
[1391558400, 784.4737],
[1391644800, 763.5694],
[1391731200, 711.5713],
[1391817600, 677.6823],
[1391904000, 687.4061],
[1391990400, 685.4575],
[1392076800, 671.8997],
[1392163200, 653.7658],
[1392249600, 612.9184],
[1392336000, 668.7886],
[1392422400, 654.3771],
[1392508800, 623.2503],
[1392595200, 631.3346],
[1392681600, 627.2718],
[1392768000, 623.5401],
[1392854400, 563.7686],
[1392940800, 580.3243],
[1393027200, 607.1246],
[1393113600, 610.0823],
[1393200000, 542.2667],
[1393286400, 533.7076],
[1393372800, 587.5786],
[1393459200, 585.3939],
[1393545600, 551.2948],
[1393632000, 567.5342],
[1393718400, 558.5277],
[1393804800, 676.5057],
[1393891200, 674.5114],
[1393977600, 670.3389],
[1394064000, 667.7128],
[1394150400, 631.7703],
[1394236800, 621.5241],
[1394323200, 640.5789],
[1394409600, 628.1512],
[1394496000, 633.7338],
[1394582400, 634.6468],
[1394668800, 643.4321],
[1394755200, 628.3086],
[1394841600, 636.2187],
[1394928000, 634.1689],
[1395014400, 622.7602],
[1395100800, 614.3095],
[1395187200, 610.5112],
[1395273600, 586.6076],
[1395360000, 569.6945],
[1395446400, 564.7],
[1395532800, 558.9589],
[1395619200, 585.0233],
[1395705600, 583.7712],
[1395792000, 579.2439],
[1395878400, 483.164],
[1395964800, 498.6613],
[1396051200, 489.517],
[1396137600, 458.9663],
[1396224000, 455.3554],
[1396310400, 479.0085],
[1396396800, 439.0115],
[1396483200, 449.4412],
[1396569600, 449.7199],
[1396656000, 461.6753],
[1396742400, 458.6335],
[1396828800, 448.6553],
[1396915200, 452.8031],
[1397001600, 442.838],
[1397088000, 366.9119],
[1397174400, 421.9435],
[1397260800, 424.2742],
[1397347200, 416.3623],
[1397433600, 461.1082],
[1397520000, 521.6153],
[1397606400, 531.4818],
[1397692800, 499.8376],
[1397779200, 483.02],
[1397865600, 504.3656],
[1397952000, 501.5572],
[1398038400, 498.0845],
[1398124800, 489.5035],
[1398211200, 490.633],
[1398297600, 503.2918],
[1398384000, 466.4262],
[1398470400, 459.2267],
[1398556800, 438.7094],
[1398643200, 441.5478],
[1398729600, 447.7099],
[1398816000, 448.8757],
[1398902400, 460.1947],
[1398988800, 452.2398],
[1399075200, 438.9786],
[1399161600, 436.6754],
[1399248000, 432.3382],
[1399334400, 430.1282],
[1399420800, 442.1829],
[1399507200, 440.4028],
[1399593600, 452.698],
[1399680000, 456.7558],
[1399766400, 439.1145],
[1399852800, 441.281],
[1399939200, 439.0058],
[1400025600, 444.8482],
[1400112000, 446.9616],
[1400198400, 448.7422],
[1400284800, 449.2223],
[1400371200, 446.9626],
[1400457600, 447.4049],
[1400544000, 490.3356],
[1400630400, 493.9335],
[1400716800, 526.8143],
[1400803200, 523.6993],
[1400889600, 527.6912],
[1400976000, 573.3125],
[1401062400, 584.848],
[1401148800, 573.9283],
[1401235200, 579.1893],
[1401321600, 570.3493],
[1401408000, 620.8464],
[1401494400, 627.8924],
[1401580800, 630.075],
[1401667200, 663.5057],
[1401753600, 672.3879],
[1401840000, 643.8874],
[1401926400, 661.5036],
[1402012800, 650.1333],
[1402099200, 656.8003],
[1402185600, 657.82],
[1402272000, 648.3363],
[1402358400, 650.9366],
[1402444800, 631.489],
[1402531200, 591.9751],
[1402617600, 597.045],
[1402704000, 575.5595],
[1402790400, 589.7246],
[1402876800, 590.5675],
[1402963200, 609.08],
[1403049600, 607.6298],
[1403136000, 595.7515],
[1403222400, 591.5315],
[1403308800, 592.7643],
[1403395200, 599.6346],
[1403481600, 589.5523],
[1403568000, 579.9737],
[1403654400, 562.2368],
[1403740800, 580.7492],
[1403827200, 600.6383],
[1403913600, 594.3903],
[1404000000, 600.8405],
[1404086400, 638.9461],
[1404172800, 642.9566],
[1404259200, 651.2983],
[1404345600, 646.4134],
[1404432000, 630.6355],
[1404518400, 630.4683],
[1404604800, 634.6727],
[1404691200, 622.855],
[1404777600, 624.8943],
[1404864000, 621.9391],
[1404950400, 616.5228],
[1405036800, 634.4944],
[1405123200, 636.924],
[1405209600, 629.8758],
[1405296000, 619.1975],
[1405382400, 621.9346],
[1405468800, 616.3519],
[1405555200, 624.2593],
[1405641600, 630.7501],
[1405728000, 629.1734],
[1405814400, 625.2487],
[1405900800, 621.3053],
[1405987200, 619.8233],
[1406073600, 619.7728],
[1406160000, 602.8796],
[1406246400, 601.5785],
[1406332800, 594.7026],
[1406419200, 591.5754],
[1406505600, 587.493],
[1406592000, 584.1124],
[1406678400, 562.9146],
[1406764800, 581.9756],
[1406851200, 596.5068],
[1406937600, 589.7573],
[1407024000, 586.7537],
[1407110400, 587.6083],
[1407196800, 581.882],
[1407283200, 582.2484],
[1407369600, 586.0466],
[1407456000, 589.0244],
[1407542400, 588.9785],
[1407628800, 589.3735],
[1407715200, 573.4415],
[1407801600, 568.3075],
[1407888000, 548.3702],
[1407974400, 505.1075],
[1408060800, 500.3231],
[1408147200, 521.748],
[1408233600, 497.7647],
[1408320000, 468.9579],
[1408406400, 486.7944],
[1408492800, 515.1204],
[1408579200, 519.3079],
[1408665600, 516.1594],
[1408752000, 497.1258],
[1408838400, 508.4307],
[1408924800, 501.6103],
[1409011200, 511.8523],
[1409097600, 510.1623],
[1409184000, 506.2852],
[1409270400, 508.8666],
[1409356800, 501.2757],
[1409443200, 478.5114],
[1409529600, 474.5415],
[1409616000, 474.4307],
[1409702400, 473.9592],
[1409788800, 489.5552],
[1409875200, 478.7498],
[1409961600, 480.6425],
[1410048000, 478.3655],
[1410134400, 468.9755],
[1410220800, 473.512],
[1410307200, 477.7784],
[1410393600, 477.2707],
[1410480000, 473.9973],
[1410566400, 477.961],
[1410652800, 475.6481],
[1410739200, 472.6556],
[1410825600, 464.1778],
[1410912000, 456.3399],
[1410998400, 426.8801],
[1411084800, 393.8939],
[1411171200, 411.0413],
[1411257600, 400.4045],
[1411344000, 400.8816],
[1411430400, 438.4918],
[1411516800, 423.7001],
[1411603200, 409.5377],
[1411689600, 405.2983],
[1411776000, 400.5993],
[1411862400, 375.55],
[1411948800, 373.0646],
[1412035200, 389.264],
[1412121600, 382.9094],
[1412208000, 372.5257],
[1412294400, 357.6657],
[1412380800, 328.8261],
[1412467200, 322.8263],
[1412553600, 326.8035],
[1412640000, 333.5702],
[1412726400, 354.4073],
[1412812800, 361.7164],
[1412899200, 358.8904],
[1412985600, 361.9084],
[1413072000, 377.8712],
[1413158400, 391.9942],
[1413244800, 400.8806],
[1413331200, 394.6259],
[1413417600, 382.3215],
[1413504000, 382.2008],
[1413590400, 391.2932],
[1413676800, 388.6845],
[1413763200, 381.1909],
[1413849600, 385.2046],
[1413936000, 380.7788],
[1414022400, 357.3448],
[1414108800, 357.4884],
[1414195200, 345.8112],
[1414281600, 353.082],
[1414368000, 350.0157],
[1414454400, 354.6538],
[1414540800, 333.5994],
[1414627200, 344.6094],
[1414713600, 337.1829],
[1414800000, 324.3713],
[1414886400, 324.2486],
[1414972800, 325.3619],
[1415059200, 329.6577],
[1415145600, 338.8058],
[1415232000, 349.6899],
[1415318400, 342.1333],
[1415404800, 345.7163],
[1415491200, 363.6101],
[1415577600, 365.5023],
[1415664000, 367.8255],
[1415750400, 422.5914],
[1415836800, 421.9145],
[1415923200, 398.3889],
[1416009600, 377.9938],
[1416096000, 390.2058],
[1416182400, 387.501],
[1416268800, 373.8646],
[1416355200, 377.6134],
[1416441600, 356.1813],
[1416528000, 350.7489],
[1416614400, 352.4555],
[1416700800, 367.7732],
[1416787200, 376.9942],
[1416873600, 376.7556],
[1416960000, 367.5302],
[1417046400, 369.5302],
[1417132800, 377.8969],
[1417219200, 376.0763],
[1417305600, 378.6904],
[1417392000, 379.112],
[1417478400, 382.9468],
[1417564800, 375.916],
[1417651200, 368.8456],
[1417737600, 378.4283],
[1417824000, 375.138],
[1417910400, 376.6398],
[1417996800, 363.2157],
[1418083200, 351.1068],
[1418169600, 347.8814],
[1418256000, 348.593],
[1418342400, 353.1906],
[1418428800, 349.2429],
[1418515200, 356.0797],
[1418601600, 347.0952],
[1418688000, 328.6133],
[1418774400, 320.2976],
[1418860800, 313.5117],
[1418947200, 318.2429],
[1419033600, 330.0658],
[1419120000, 320.9927],
[1419206400, 331.8426],
[1419292800, 336.0841],
[1419379200, 323.0323],
[1419465600, 318.9961],
[1419552000, 329.2103],
[1419638400, 315.9684],
[1419724800, 317.0105],
[1419811200, 313.0655],
[1419897600, 310.442],
[1419984000, 320.6623],
[1420070400, 314.7765],
[1420156800, 315.9427],
[1420243200, 285.6473],
[1420329600, 263.3346],
[1420416000, 275.0039],
[1420502400, 287.5495],
[1420588800, 297.5356],
[1420675200, 284.3424],
[1420761600, 292.5011],
[1420848000, 276.2305],
[1420934400, 268.7555],
[1421020800, 268.6172],
[1421107200, 224.1081],
[1421193600, 175.6376],
[1421280000, 212.341],
[1421366400, 207.5952],
[1421452800, 199.8248],
[1421539200, 211.1325],
[1421625600, 216.8947],
[1421712000, 211.9199],
[1421798400, 227.9042],
[1421884800, 233.6474],
[1421971200, 233.1329],
[1422057600, 249.0821],
[1422144000, 254.5179],
[1422230400, 273.9522],
[1422316800, 264.7538],
[1422403200, 235.7358],
[1422489600, 233.9574],
[1422576000, 228.8962],
[1422662400, 217.3322],
[1422748800, 227.1113],
[1422835200, 240.0924],
[1422921600, 227.7757],
[1423008000, 226.7811],
[1423094400, 217.0112],
[1423180800, 222.725],
[1423267200, 228.6471],
[1423353600, 224.036],
[1423440000, 220.7685],
[1423526400, 220.8882],
[1423612800, 219.4959],
[1423699200, 222.5832],
[1423785600, 236.5554],
[1423872000, 257.6277],
[1423958400, 234.4458],
[1424044800, 235.0861],
[1424131200, 243.9058],
[1424217600, 235.9952],
[1424304000, 241.8723],
[1424390400, 245.5308],
[1424476800, 245.596],
[1424563200, 236.6907],
[1424649600, 239.066],
[1424736000, 239.8693],
[1424822400, 238.2361],
[1424908800, 237.0444],
[1424995200, 255.1168],
[1425081600, 254.9484],
[1425168000, 260.6513],
[1425254400, 276.3226],
[1425340800, 282.7059],
[1425427200, 273.4475],
[1425513600, 276.2688],
[1425600000, 273.3181],
[1425686400, 276.4034],
[1425772800, 275.338],
[1425859200, 290.1301],
[1425945600, 292.3204],
[1426032000, 296.6933],
[1426118400, 295.8003],
[1426204800, 285.911],
[1426291200, 283.6083],
[1426377600, 287.2701],
[1426464000, 291.3921],
[1426550400, 285.2484],
[1426636800, 257.2862],
[1426723200, 262.0929],
[1426809600, 262.9665],
[1426896000, 261.1843],
[1426982400, 268.8994],
[1427068800, 266.778],
[1427155200, 246.8351],
[1427241600, 246.7191],
[1427328000, 249.533],
[1427414400, 247.3789],
[1427500800, 253.2316],
[1427587200, 242.9676],
[1427673600, 248.3369],
[1427760000, 244.7125],
[1427846400, 247.1858],
[1427932800, 253.6301],
[1428019200, 254.8332],
[1428105600, 253.9458],
[1428192000, 261.1121],
[1428278400, 256.3674],
[1428364800, 254.8319],
[1428451200, 245.8252],
[1428537600, 243.8606],
[1428624000, 235.8719],
[1428710400, 237.4091],
[1428796800, 237.141],
[1428883200, 225.5056],
[1428969600, 219.7572],
[1429056000, 223.3139],
[1429142400, 228.4938],
[1429228800, 222.7851],
[1429315200, 223.398],
[1429401600, 223.2841],
[1429488000, 224.8949],
[1429574400, 234.9394],
[1429660800, 233.8224],
[1429747200, 235.9333],
[1429833600, 231.4586],
[1429920000, 226.446],
[1430006400, 220.5034],
[1430092800, 227.326],
[1430179200, 225.5494],
[1430265600, 225.6693],
[1430352000, 236.328],
[1430438400, 232.7466],
[1430524800, 235.5401],
[1430611200, 240.4642],
[1430697600, 238.9767],
[1430784000, 236.0234],
[1430870400, 229.4812],
[1430956800, 237.1307],
[1431043200, 244.3835],
[1431129600, 242.706],
[1431216000, 240.7315],
[1431302400, 242.2498],
[1431388800, 242.2091],
[1431475200, 236.5503],
[1431561600, 236.9489],
[1431648000, 237.4845],
[1431734400, 235.8121],
[1431820800, 236.9637],
[1431907200, 232.8838],
[1431993600, 231.9744],
[1432080000, 234.1903],
[1432166400, 235.5538],
[1432252800, 240.3232],
[1432339200, 238.9633],
[1432425600, 240.7118],
[1432512000, 237.0035],
[1432598400, 236.7963],
[1432684800, 237.2036],
[1432771200, 236.9569],
[1432857600, 236.6465],
[1432944000, 232.7888],
[1433030400, 229.4505],
[1433116800, 223.2827],
[1433203200, 225.3208],
[1433289600, 225.2131],
[1433376000, 223.5401],
[1433462400, 224.7311],
[1433548800, 225.1605],
[1433635200, 223.4117],
[1433721600, 228.7743],
[1433808000, 229.3705],
[1433894400, 228.5885],
[1433980800, 229.5844],
[1434067200, 229.8112],
[1434153600, 233.0153],
[1434240000, 232.5071],
[1434326400, 236.791],
[1434412800, 251.4327],
[1434499200, 247.9693],
[1434585600, 249.0125],
[1434672000, 244.8035],
[1434758400, 245.5825],
[1434844800, 244.3003],
[1434931200, 247.0179],
[1435017600, 244.1848],
[1435104000, 240.4515],
[1435190400, 242.3479],
[1435276800, 242.968],
[1435363200, 251.5293],
[1435449600, 249.0583],
[1435536000, 256.6502],
[1435622400, 263.8544],
[1435708800, 258.0426],
[1435795200, 254.7471],
[1435881600, 256.087],
[1435968000, 260.5092],
[1436054400, 271.3025],
[1436140800, 269.1379],
[1436227200, 266.4699],
[1436313600, 270.5761],
[1436400000, 269.6803],
[1436486400, 285.5588],
[1436572800, 293.9175],
[1436659200, 311.4819],
[1436745600, 292.6492],
[1436832000, 287.741],
[1436918400, 285.9229],
[1437004800, 278.5327],
[1437091200, 280.0647],
[1437177600, 277.3546],
[1437264000, 275.282],
[1437350400, 279.1144],
[1437436800, 276.6524],
[1437523200, 277.7644],
[1437609600, 276.8116],
[1437696000, 289.306],
[1437782400, 289.5076],
[1437868800, 293.3148],
[1437955200, 294.4268],
[1438041600, 295.4101],
[1438128000, 289.8558],
[1438214400, 288.2363],
[1438300800, 284.5973],
[1438387200, 281.6688],
[1438473600, 282.423],
[1438560000, 282.1851],
[1438646400, 285.2866],
[1438732800, 282.3389],
[1438819200, 278.9957],
[1438905600, 279.4887],
[1438992000, 261.4503],
[1439078400, 266.342],
[1439164800, 264.9288],
[1439251200, 271.4217],
[1439337600, 268.1439],
[1439424000, 264.6916],
[1439510400, 266.3559],
[1439596800, 261.9368],
[1439683200, 258.9308],
[1439769600, 258.0094],
[1439856000, 217.8859],
[1439942400, 227.2183],
[1440028800, 235.5239],
[1440115200, 232.8006],
[1440201600, 230.6392],
[1440288000, 228.6731],
[1440374400, 211.9559],
[1440460800, 222.655],
[1440547200, 226.1167],
[1440633600, 224.9399],
[1440720000, 232.1708],
[1440806400, 229.8262],
[1440892800, 229.0196],
[1440979200, 230.6895],
[1441065600, 227.9556],
[1441152000, 229.5022],
[1441238400, 227.1071],
[1441324800, 231.1776],
[1441411200, 235.903],
[1441497600, 240.8055],
[1441584000, 240.6336],
[1441670400, 244.175],
[1441756800, 238.7225],
[1441843200, 238.7505],
[1441929600, 240.845],
[1442016000, 236.3518],
[1442102400, 230.5488],
[1442188800, 230.9488],
[1442275200, 230.3986],
[1442361600, 229.0433],
[1442448000, 233.2027],
[1442534400, 233.1751],
[1442620800, 232.2416],
[1442707200, 231.3623],
[1442793600, 226.7734],
[1442880000, 230.6263],
[1442966400, 230.1324],
[1443052800, 234.3199],
[1443139200, 235.5382],
[1443225600, 234.5918],
[1443312000, 233.2433],
[1443398400, 240.0173],
[1443484800, 237.3362],
[1443571200, 236.7398],
[1443657600, 238.2298],
[1443744000, 237.937],
[1443830400, 239.7359],
[1443916800, 239.5169],
[1444003200, 240.9612],
[1444089600, 246.9405],
[1444176000, 243.7345],
[1444262400, 243.0296],
[1444348800, 244.4489],
[1444435200, 245.9559],
[1444521600, 248.5282],
[1444608000, 246.0936],
[1444694400, 250.4713],
[1444780800, 253.1423],
[1444867200, 254.693],
[1444953600, 262.7374],
[1445040000, 271.9309],
[1445126400, 263.4817],
[1445212800, 264.3627],
[1445299200, 270.8322],
[1445385600, 268.0402],
[1445472000, 275.415],
[1445558400, 278.6128],
[1445644800, 283.6111],
[1445731200, 286.0497],
[1445817600, 286.7034],
[1445904000, 295.5629],
[1445990400, 304.4421],
[1446076800, 314.8795],
[1446163200, 328.4923],
[1446249600, 314.1195],
[1446336000, 329.8542],
[1446422400, 364.6166],
[1446508800, 400.9231],
[1446595200, 405.4817],
[1446681600, 384.3412],
[1446768000, 372.9754],
[1446854400, 386.5046],
[1446940800, 372.4001],
[1447027200, 380.4956],
[1447113600, 337.8305],
[1447200000, 308.9222],
[1447286400, 337.523],
[1447372800, 337.279],
[1447459200, 333.0471],
[1447545600, 319.928],
[1447632000, 331.1327],
[1447718400, 335.8498],
[1447804800, 335.7445],
[1447891200, 326.2321],
[1447977600, 321.9405],
[1448064000, 325.9052],
[1448150400, 323.717],
[1448236800, 323.0126],
[1448323200, 319.9614],
[1448409600, 328.9605],
[1448496000, 356.2553],
[1448582400, 359.2688],
[1448668800, 356.5673],
[1448755200, 371.7076],
[1448841600, 377.3898],
[1448928000, 362.5324],
[1449014400, 359.2224],
[1449100800, 361.2101],
[1449187200, 363.2416],
[1449273600, 389.363],
[1449360000, 393.3191],
[1449446400, 395.3466],
[1449532800, 413.7987],
[1449619200, 417.6327],
[1449705600, 415.7299],
[1449792000, 453.8615],
[1449878400, 435.8557],
[1449964800, 434.4035],
[1450051200, 442.9917],
[1450137600, 464.6179],
[1450224000, 454.1425],
[1450310400, 456.2401],
[1450396800, 463.1758],
[1450483200, 461.3999],
[1450569600, 442.154],
[1450656000, 437.6401],
[1450742400, 435.2684],
[1450828800, 442.6657],
[1450915200, 455.8787],
[1451001600, 455.7188],
[1451088000, 418.2215],
[1451174400, 422.7059],
[1451260800, 421.0529],
[1451347200, 431.34],
[1451433600, 426.0436],
[1451520000, 429.6772],
[1451606400, 434.678],
[1451692800, 434.4399],
[1451779200, 430.1362],
[1451865600, 433.449],
[1451952000, 432.6695],
[1452038400, 430.6779],
[1452124800, 459.2089],
[1452211200, 454.1344],
[1452297600, 449.8452],
[1452384000, 448.5802],
[1452470400, 449.0331],
[1452556800, 441.7682],
[1452643200, 432.3106],
[1452729600, 429.8232],
[1452816000, 367.8232],
[1452902400, 388.0712],
[1452988800, 382.4821],
[1453075200, 384.8652],
[1453161600, 378.1617],
[1453248000, 420.6229],
[1453334400, 409.2985],
[1453420800, 381.0465],
[1453507200, 386.3706],
[1453593600, 403.4469],
[1453680000, 391.9861],
[1453766400, 391.1429],
[1453852800, 394.6275],
[1453939200, 378.901],
[1454025600, 379],
[1454112000, 377.2628],
[1454198400, 366.3417],
[1454284800, 371.2234],
[1454371200, 372.9276],
[1454457600, 368.0982],
[1454544000, 389.7231],
[1454630400, 384.3984],
[1454716800, 374.6316],
[1454803200, 375.1539],
[1454889600, 370.8144],
[1454976000, 373.5116],
[1455062400, 379.0826],
[1455148800, 377.6392],
[1455235200, 382.2945],
[1455321600, 389.5984],
[1455408000, 406.1507],
[1455494400, 399.2676],
[1455580800, 407.0353],
[1455667200, 415.3241],
[1455753600, 421.2897],
[1455840000, 419.6265],
[1455926400, 440.1958],
[1456012800, 438.7186],
[1456099200, 437.5353],
[1456185600, 420.0326],
[1456272000, 423.9951],
[1456358400, 424.0909],
[1456444800, 431.7622],
[1456531200, 432.9478],
[1456617600, 433.1023],
[1456704000, 437.7759],
[1456790400, 432.8079],
[1456876800, 423.0798],
[1456963200, 419.2688],
[1457049600, 407.9902],
[1457136000, 397.3145],
[1457222400, 403.7052],
[1457308800, 413.2294],
[1457395200, 411.426],
[1457481600, 412.5407],
[1457568000, 416.3409],
[1457654400, 419.5119],
[1457740800, 410.2642],
[1457827200, 411.8059],
[1457913600, 415.027],
[1458000000, 415.2664],
[1458086400, 417.0241],
[1458172800, 418.6054],
[1458259200, 408.9016],
[1458345600, 409.1244],
[1458432000, 412.057],
[1458518400, 411.6018],
[1458604800, 416.5817],
[1458691200, 417.3783],
[1458777600, 413.5602],
[1458864000, 416.3732],
[1458950400, 416.8231],
[1459036800, 425.455],
[1459123200, 422.9174],
[1459209600, 415.8638],
[1459296000, 412.7777],
[1459382400, 415.9568],
[1459468800, 417.2007],
[1459555200, 419.7631],
[1459641600, 420.0736],
[1459728000, 419.5407],
[1459814400, 422.5014],
[1459900800, 421.9072],
[1459987200, 421.4672],
[1460073600, 418.6435],
[1460160000, 418.7586],
[1460246400, 421.9545],
[1460332800, 423.273],
[1460419200, 427.4277],
[1460505600, 424.8725],
[1460592000, 425.8566],
[1460678400, 430.7244],
[1460764800, 432.2163],
[1460851200, 429.34],
[1460937600, 429.6569],
[1461024000, 437.5687],
[1461110400, 442.6617],
[1461196800, 452.1647],
[1461283200, 448.1344],
[1461369600, 453.9147],
[1461456000, 463.3829],
[1461542400, 465.316],
[1461628800, 469.6088],
[1461715200, 445.7411],
[1461801600, 451.0601],
[1461888000, 457.01],
[1461974400, 449.9005],
[1462060800, 455.0107],
[1462147200, 444.9331],
[1462233600, 451.6289],
[1462320000, 448.368],
[1462406400, 449.3361],
[1462492800, 461.6939],
[1462579200, 461.3618],
[1462665600, 461.3789],
[1462752000, 463.4622],
[1462838400, 451.0797],
[1462924800, 453.8963],
[1463011200, 455.6073],
[1463097600, 457.2419],
[1463184000, 458.1195],
[1463270400, 460.8577],
[1463356800, 455.2241],
[1463443200, 453.5458],
[1463529600, 454.4862],
[1463616000, 437.7242],
[1463702400, 442.3968],
[1463788800, 444.0782],
[1463875200, 440.5587],
[1463961600, 444.2051],
[1464048000, 445.6745],
[1464134400, 450.5495],
[1464220800, 454.4337],
[1464307200, 471.8201],
[1464393600, 530.9106],
[1464480000, 527.5497],
[1464566400, 533.4931],
[1464652800, 530.9437],
[1464739200, 537.6137],
[1464825600, 538.7712],
[1464912000, 570.176],
[1464998400, 574.2662],
[1465084800, 575.1376],
[1465171200, 585.8571],
[1465257600, 578.4692],
[1465344000, 583.0976],
[1465430400, 577.1017],
[1465516800, 579.815],
[1465603200, 605.4496],
[1465689600, 670.3924],
[1465776000, 704.3218],
[1465862400, 684.9483],
[1465948800, 695.0015],
[1466035200, 767.42],
[1466121600, 750.0146],
[1466208000, 758.2888],
[1466294400, 766.7671],
[1466380800, 722.4975],
[1466467200, 669.6042],
[1466553600, 594.833],
[1466640000, 627.6779],
[1466726400, 664.127],
[1466812800, 668.8727],
[1466899200, 630.4342],
[1466985600, 652.2448],
[1467072000, 647.2188],
[1467158400, 638.5863],
[1467244800, 674.2848],
[1467331200, 677.5124],
[1467417600, 702.7393],
[1467504000, 662.5501],
[1467590400, 679.8425],
[1467676800, 668.166],
[1467763200, 677.6513],
[1467849600, 640.0532],
[1467936000, 665.0517],
[1468022400, 651.9419],
[1468108800, 649.9593],
[1468195200, 650.2726],
[1468281600, 670.0231],
[1468368000, 658.3336],
[1468454400, 660.906],
[1468540800, 666.7587],
[1468627200, 665.2756],
[1468713600, 681.0896],
[1468800000, 675.1186],
[1468886400, 674.6604],
[1468972800, 667.3054],
[1469059200, 666.8517],
[1469145600, 650.5629],
[1469232000, 657.3779],
[1469318400, 661.394],
[1469404800, 655.1196],
[1469491200, 654.6263],
[1469577600, 656.2751],
[1469664000, 656.1965],
[1469750400, 657.5576],
[1469836800, 655.3617],
[1469923200, 624.8045],
[1470009600, 606.5092],
[1470096000, 526.9811],
[1470182400, 570.347],
[1470268800, 583.5422],
[1470355200, 581.2798],
[1470441600, 590.7954],
[1470528000, 594.7323],
[1470614400, 591.6293],
[1470700800, 587.9321],
[1470787200, 589.9688],
[1470873600, 589.5859],
[1470960000, 587.1916],
[1471046400, 585.3636],
[1471132800, 571.3871],
[1471219200, 566.5644],
[1471305600, 578.4149],
[1471392000, 573.6637],
[1471478400, 573.2632],
[1471564800, 573.9585],
[1471651200, 581.7971],
[1471737600, 580.7922],
[1471824000, 584.9719],
[1471910400, 582.6277],
[1471996800, 578.7018],
[1472083200, 576.0334],
[1472169600, 578.8747],
[1472256000, 570.201],
[1472342400, 575.1052],
[1472428800, 573.4293],
[1472515200, 575.6957],
[1472601600, 572.2728],
[1472688000, 572.2217],
[1472774400, 576.8468],
[1472860800, 600.3744],
[1472947200, 610.5389],
[1473033600, 607.527],
[1473120000, 612.9955],
[1473206400, 615.6598],
[1473292800, 630.5502],
[1473379200, 622.9779],
[1473465600, 624.7526],
[1473552000, 608.2467],
[1473638400, 607.7074],
[1473724800, 608.6943],
[1473811200, 609.4131],
[1473897600, 607.0703],
[1473984000, 607.8064],
[1474070400, 607.3814],
[1474156800, 611.5335],
[1474243200, 608.8713],
[1474329600, 608.3717],
[1474416000, 596.9458],
[1474502400, 595.5647],
[1474588800, 602.3788],
[1474675200, 602.6874],
[1474761600, 600.6101],
[1474848000, 606.7788],
[1474934400, 605.1516],
[1475020800, 604.6865],
[1475107200, 605.2026],
[1475193600, 608.8658],
[1475280000, 615.4085],
[1475366400, 611.7486],
[1475452800, 612.5903],
[1475539200, 610.0079],
[1475625600, 612.1478],
[1475712000, 611.7609],
[1475798400, 617.9057],
[1475884800, 619.301],
[1475971200, 617.101],
[1476057600, 618.0852],
[1476144000, 642.9814],
[1476230400, 636.5979],
[1476316800, 635.4441],
[1476403200, 639.5861],
[1476489600, 637.2838],
[1476576000, 642.913],
[1476662400, 639.1375],
[1476748800, 635.5765],
[1476835200, 629.6407],
[1476921600, 628.5989],
[1477008000, 630.9062],
[1477094400, 654.5086],
[1477180800, 651.962],
[1477267200, 650.0272],
[1477353600, 655.7925],
[1477440000, 675.1099],
[1477526400, 686.5233],
[1477612800, 690.3907],
[1477699200, 715.4455],
[1477785600, 699.3334],
[1477872000, 698.8977],
[1477958400, 730.5785],
[1478044800, 740.3671],
[1478131200, 689.9392],
[1478217600, 705.432],
[1478304000, 706.8193],
[1478390400, 715.8969],
[1478476800, 706.1812],
[1478563200, 711.8358],
[1478649600, 721.5015],
[1478736000, 713.4076],
[1478822400, 715.7033],
[1478908800, 703.8476],
[1478995200, 703.6264],
[1479081600, 705.6436],
[1479168000, 712.3472],
[1479254400, 742.0501],
[1479340800, 735.3181],
[1479427200, 749.5787],
[1479513600, 751.2138],
[1479600000, 730.3508],
[1479686400, 736.507],
[1479772800, 747.9977],
[1479859200, 741.2403],
[1479945600, 737.355],
[1480032000, 739.6852],
[1480118400, 734.6529],
[1480204800, 727.7411],
[1480291200, 730.0825],
[1480377600, 731.6464],
[1480464000, 742.2045],
[1480550400, 753.6749],
[1480636800, 772.3024],
[1480723200, 766.1105],
[1480809600, 766.3801],
[1480896000, 752.6707],
[1480982400, 759.1173],
[1481068800, 764.9877],
[1481155200, 767.6592],
[1481241600, 771.9023],
[1481328000, 775.4746],
[1481414400, 770.4962],
[1481500800, 778.5066],
[1481587200, 778.9307],
[1481673600, 776.964],
[1481760000, 776.1768],
[1481846400, 782.2302],
[1481932800, 789.6029],
[1482019200, 790.633],
[1482105600, 790.279],
[1482192000, 799.7775],
[1482278400, 828.4837],
[1482364800, 858.5014],
[1482451200, 915.5624],
[1482537600, 891.1553],
[1482624000, 896.0033],
[1482710400, 903.2012],
[1482796800, 925.9508],
[1482883200, 979.961],
[1482969600, 973.4626],
[1483056000, 961.1827],
[1483142400, 968.9706],
[1483228800, 997.2574],
[1483315200, 1017.0779],
[1483401600, 1032.6091],
[1483488000, 1134.4964],
[1483574400, 1000.4981],
[1483660800, 892.464],
[1483747200, 903.4533],
[1483833600, 912.485],
[1483920000, 903.5087],
[1484006400, 906.4989],
[1484092800, 788.3147],
[1484179200, 807.1098],
[1484265600, 826.7469],
[1484352000, 820.0452],
[1484438400, 824.5471],
[1484524800, 830.838],
[1484611200, 906.0268],
[1484697600, 881.2598],
[1484784000, 902.2639],
[1484870400, 895.1745],
[1484956800, 924.4683],
[1485043200, 922.4671],
[1485129600, 919.1157],
[1485216000, 887.7432],
[1485302400, 895.69],
[1485388800, 916.6675],
[1485475200, 920.4545],
[1485561600, 922.7749],
[1485648000, 915.632],
[1485734400, 920.3133],
[1485820800, 968.4991],
[1485907200, 987.5326],
[1485993600, 1007.7044],
[1486080000, 1015.302],
[1486166400, 1033.786],
[1486252800, 1014.5679],
[1486339200, 1023.3175],
[1486425600, 1053.6245],
[1486512000, 1052.3676],
[1486598400, 982.7519],
[1486684800, 996.6502],
[1486771200, 1011.3753],
[1486857600, 1006.2965],
[1486944000, 999.9532],
[1487030400, 1012.2135],
[1487116800, 1013.9038],
[1487203200, 1036.8069],
[1487289600, 1058.6699],
[1487376000, 1060.6688],
[1487462400, 1058.7864],
[1487548800, 1088.6884],
[1487635200, 1128.8553],
[1487721600, 1129.7018],
[1487808000, 1188.8618],
[1487894400, 1185.4889],
[1487980800, 1151.6047],
[1488067200, 1181.7109],
[1488153600, 1194.1525],
[1488240000, 1188.3999],
[1488326400, 1228.4597],
[1488412800, 1262.9315],
[1488499200, 1289.3632],
[1488585600, 1268.9407],
[1488672000, 1276.2737],
[1488758400, 1282.2547],
[1488844800, 1234.4765],
[1488931200, 1152.1394],
[1489017600, 1193.4555],
[1489104000, 1098.5301],
[1489190400, 1176.8229],
[1489276800, 1231.7484],
[1489363200, 1239.3963],
[1489449600, 1246.5366],
[1489536000, 1258.6514],
[1489622400, 1178.0208],
[1489708800, 1072.0825],
[1489795200, 962.5691],
[1489881600, 1020.2203],
[1489968000, 1037.7563],
[1490054400, 1111.8183],
[1490140800, 1037.3026],
[1490227200, 1028.1729],
[1490313600, 935.0635],
[1490400000, 968.5433],
[1490486400, 962.9581],
[1490572800, 1042.9192],
[1490659200, 1045.1629],
[1490745600, 1039.6886],
[1490832000, 1037.9877],
[1490918400, 1081.7435],
[1491004800, 1089.5248],
[1491091200, 1105.563],
[1491177600, 1144.6648],
[1491264000, 1141.9219],
[1491350400, 1135.8116],
[1491436800, 1194.5965],
[1491523200, 1191.7315],
[1491609600, 1184.4177],
[1491696000, 1213.6341],
[1491782400, 1211.6499],
[1491868800, 1229.7849],
[1491955200, 1216.1144],
[1492041600, 1172.5583],
[1492128000, 1174.3332],
[1492214400, 1175.5622],
[1492300800, 1173.6914],
[1492387200, 1191.9012],
[1492473600, 1202.1315],
[1492560000, 1209.5609],
[1492646400, 1235.8031],
[1492732800, 1247.3361],
[1492819200, 1243.5504],
[1492905600, 1250.0015],
[1492992000, 1257.2394],
[1493078400, 1279.8647],
[1493164800, 1296.4855],
[1493251200, 1345.89],
[1493337600, 1347.9852],
[1493424000, 1357.7153],
[1493510400, 1381.9564],
[1493596800, 1436.9415],
[1493683200, 1463.8191],
[1493769600, 1519.4089],
[1493856000, 1539.8301],
[1493942400, 1529.8504],
[1494028800, 1573.2855],
[1494115200, 1526.2678],
[1494201600, 1685.0865],
[1494288000, 1719.228],
[1494374400, 1782.499],
[1494460800, 1835.4875],
[1494547200, 1704.6616],
[1494633600, 1779.8403],
[1494720000, 1794.5936],
[1494806400, 1736.8828],
[1494892800, 1757.0269],
[1494979200, 1808.7461],
[1495065600, 1894.2473],
[1495152000, 1967.5455],
[1495238400, 2048.1177],
[1495324800, 2045.2225],
[1495411200, 2078.9435],
[1495497600, 2257.2884],
[1495584000, 2415.0072],
[1495670400, 2319.6014],
[1495756800, 2279.4186],
[1495843200, 2044.3005],
[1495929600, 2225.7009],
[1496016000, 2284.7158],
[1496102400, 2167.2645],
[1496188800, 2299.4326],
[1496275200, 2399.8876],
[1496361600, 2479.4239],
[1496448000, 2549.552],
[1496534400, 2524.9938],
[1496620800, 2685.3189],
[1496707200, 2871.3417],
[1496793600, 2706.76],
[1496880000, 2802.5635],
[1496966400, 2804.8723],
[1497052800, 2916.3279],
[1497139200, 2974.2146],
[1497225600, 2665.4333],
[1497312000, 2707.1378],
[1497398400, 2443.8245],
[1497484800, 2409.8868],
[1497571200, 2476.3591],
[1497657600, 2652.7554],
[1497744000, 2508.2142],
[1497830400, 2589.6422],
[1497916800, 2733.2266],
[1498003200, 2639.2613],
[1498089600, 2686.6475],
[1498176000, 2685.8705],
[1498262400, 2562.1891],
[1498348800, 2497.7289],
[1498435200, 2426.3651],
[1498521600, 2530.3455],
[1498608000, 2562.7923],
[1498694400, 2540.443],
[1498780800, 2452.7121],
[1498867200, 2412.3662],
[1498953600, 2518.8722],
[1499040000, 2551.9274],
[1499126400, 2599.7447],
[1499212800, 2608.1049],
[1499299200, 2603.1955],
[1499385600, 2495.7809],
[1499472000, 2553.4942],
[1499558400, 2506.1732],
[1499644800, 2319.3669],
[1499731200, 2319.1674],
[1499817600, 2374.8863],
[1499904000, 2343.7383],
[1499990400, 2214.8252],
[1500076800, 1989.6332],
[1500163200, 1910.7495],
[1500249600, 2215.7463],
[1500336000, 2303.7611],
[1500422400, 2257.0652],
[1500508800, 2823.8979],
[1500595200, 2666.1397],
[1500681600, 2829.7541],
[1500768000, 2753.2439],
[1500854400, 2755.1595],
[1500940800, 2558.693],
[1501027200, 2522.3246],
[1501113600, 2665.1475],
[1501200000, 2793.8335],
[1501286400, 2706.4508],
[1501372800, 2749.3845],
[1501459200, 2862.6113],
[1501545600, 2727.3892],
[1501632000, 2690.1457],
[1501718400, 2789.7463],
[1501804800, 2860.2728],
[1501891200, 3237.4234],
[1501977600, 3230.1167],
[1502064000, 3392.5624],
[1502150400, 3425.6766],
[1502236800, 3347.2154],
[1502323200, 3437.0322],
[1502409600, 3660.5205],
[1502496000, 3871.0824],
[1502582400, 4063.8011],
[1502668800, 4304.6039],
[1502755200, 4160.0305],
[1502841600, 4364.6786],
];