From ee21dc65044bcd1cf7d1f40004caca30af0ce121 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 5 Jun 2026 18:12:34 +0100 Subject: [PATCH 01/32] Setup nightingale-distribution-track package --- .../nightingale-distribution-track/README.md | 7 + .../package.json | 40 ++ .../src/index.ts | 3 + .../src/nightingale-distribution-track.ts | 482 ++++++++++++++++++ .../mockData/sample-distribution-data.json | 32 ++ .../nightingale-distribution-track.test.ts | 7 + .../tsconfig.json | 7 + .../NightingaleDistributionTrack.stories.mdx | 35 ++ .../NightingaleDistributionTrack.stories.ts | 175 +++++++ 9 files changed, 788 insertions(+) create mode 100644 packages/nightingale-distribution-track/README.md create mode 100644 packages/nightingale-distribution-track/package.json create mode 100644 packages/nightingale-distribution-track/src/index.ts create mode 100644 packages/nightingale-distribution-track/src/nightingale-distribution-track.ts create mode 100644 packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json create mode 100644 packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts create mode 100644 packages/nightingale-distribution-track/tsconfig.json create mode 100644 stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx create mode 100644 stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts diff --git a/packages/nightingale-distribution-track/README.md b/packages/nightingale-distribution-track/README.md new file mode 100644 index 000000000..5bded2528 --- /dev/null +++ b/packages/nightingale-distribution-track/README.md @@ -0,0 +1,7 @@ +# nightingale-distribution-track + +[![Published on NPM](https://img.shields.io/npm/v/@nightingale-elements/nightingale-distribution-track.svg)](https://www.npmjs.com/package/@nightingale-elements/nightingale-distribution-track) + +The `nightingale-distribution-track` component ... + +TODO: diff --git a/packages/nightingale-distribution-track/package.json b/packages/nightingale-distribution-track/package.json new file mode 100644 index 000000000..05686d6e1 --- /dev/null +++ b/packages/nightingale-distribution-track/package.json @@ -0,0 +1,40 @@ +{ + "name": "@nightingale-elements/nightingale-distribution-track", + "version": "5.6.0", + "description": "Track for showing distribution of a variable on each residue position.", + "files": [ + "dist", + "src" + ], + "main": "dist/index.js", + "module": "dist/index.js", + "type": "module", + "types": "dist/index.d.ts", + "scripts": { + "build": "rollup --config ../../rollup.config.mjs", + "test": "../../node_modules/.bin/jest --config ../../jest.config.js ./tests/*" + }, + "keywords": [ + "nightingale", + "webcomponents", + "customelements" + ], + "repository": { + "type": "git", + "url": "https://github.com/ebi-webcomponents/nightingale.git" + }, + "bugs": { + "url": "https://github.com/ebi-webcomponents/nightingale/issues" + }, + "homepage": "https://ebi-webcomponents.github.io/nightingale/", + "author": "Adam Midlik ", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "sideEffects": false, + "dependencies": { + "@nightingale-elements/nightingale-new-core": "^5.6.0", + "d3": "7.9.0" + } +} diff --git a/packages/nightingale-distribution-track/src/index.ts b/packages/nightingale-distribution-track/src/index.ts new file mode 100644 index 000000000..a32bca1a0 --- /dev/null +++ b/packages/nightingale-distribution-track/src/index.ts @@ -0,0 +1,3 @@ +import NightingaleDistributionTrack, { } from "./nightingale-distribution-track"; + +export { NightingaleDistributionTrack as default }; diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts new file mode 100644 index 000000000..2632720fa --- /dev/null +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -0,0 +1,482 @@ +import NightingaleElement, { + BinarySearch, + createEvent, + customElementOnce, + Refresher, + Stamp, + withCanvas, + withDimensions, + withHighlight, + withManager, + withMargin, + withPosition, + withResizable, + withZoom, +} from "@nightingale-elements/nightingale-new-core"; +import { BaseType, select, Selection } from "d3"; +import { html, PropertyValues } from "lit"; +import { property } from "lit/decorators.js"; + + +const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ + "length", "width", "height", + "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", + "font-family", "min-font-size", "fade-font-size", "max-font-size", +] satisfies (keyof NightingaleDistributionTrack)[]; +const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = ["letter-order"] satisfies (keyof NightingaleDistributionTrack)[]; + +/** Order of amino acids in a column (top-to-bottom) */ +const AMINO_ACID_ORDER = Array.from("HYAVLIMFWSTQNKRDEPCG"); // Old Protvista order: HYSTQNAVLIMFWDEPKRCG +/** Color to be used for unknown amino acids */ +const DEFAULT_COLOR = "#AAAAAA"; +/** Colors for amino acid groups, based on Clustal (https://www.jalview.org/help/html/colourSchemes/clustal.html) */ +const AMINO_GROUP_COLOR = { + aromatic: "#15A4A4", + hydrophobic: "#80A0F0", + polar: "#15C015", + positive: "#F01505", + negative: "#C048C0", + proline: "#C0C000", + cysteine: "#F08080", + glycine: "#F09048", +}; +/** Colors for individual amino acids, based on Clustal (https://www.jalview.org/help/html/colourSchemes/clustal.html) */ +const AMINO_ACID_COLOR = { + H: AMINO_GROUP_COLOR.aromatic, + Y: AMINO_GROUP_COLOR.aromatic, + A: AMINO_GROUP_COLOR.hydrophobic, + V: AMINO_GROUP_COLOR.hydrophobic, + L: AMINO_GROUP_COLOR.hydrophobic, + I: AMINO_GROUP_COLOR.hydrophobic, + M: AMINO_GROUP_COLOR.hydrophobic, + F: AMINO_GROUP_COLOR.hydrophobic, + W: AMINO_GROUP_COLOR.hydrophobic, + S: AMINO_GROUP_COLOR.polar, + T: AMINO_GROUP_COLOR.polar, + N: AMINO_GROUP_COLOR.polar, + Q: AMINO_GROUP_COLOR.polar, + K: AMINO_GROUP_COLOR.positive, + R: AMINO_GROUP_COLOR.positive, + D: AMINO_GROUP_COLOR.negative, + E: AMINO_GROUP_COLOR.negative, + P: AMINO_GROUP_COLOR.proline, + C: AMINO_GROUP_COLOR.cysteine, + G: AMINO_GROUP_COLOR.glycine, +}; +/** Color for rectangle stroke */ +const STROKE_COLOR = "#D3D3D3"; +/** Line width for rectangle stroke */ +const LINE_WIDTH = 1; +/** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ +const MAX_REL_LINE_WIDTH = 0.2; + + +/** Amino acid probability for each amino acid for each position */ +interface Probabilities { [letter: string]: number[] } + +/** Vertical position for each amino acid for each position */ +interface YPositions { + start: { [letter: string]: number[] }, + end: { [letter: string]: number[] }, +} + +type LetterOrder = "default" | "probability"; + +/** Type for `NightingaleDistributionTrack.data`` */ +export interface DistributionData { + /** Sequence number for each position */ + index: number[], + /** Amino acid probability for each amino acid for each position */ + probabilities: Probabilities, +} + + +@customElementOnce("nightingale-distribution-track") +export default class NightingaleDistributionTrack extends withCanvas( + withManager( + withZoom( + withResizable( + withMargin( + withPosition(withDimensions(withHighlight(NightingaleElement))) + ) + ) + ) + ) +) { + /** Order of amino acids within a column (top-to-bottom). default = fixed order based on amino acid groups, probability = on every position sort by descending probability */ + @property({ type: String }) + "letter-order": LetterOrder = "default"; + + /** Font family for labels (can be a list of multiple font families separated by comma, like in CSS) */ + @property({ type: String }) + "font-family": string = "Helvetica,sans-serif"; + + /** Font size below which labels are hidden */ + @property({ type: Number }) + "min-font-size": number = 6; + + /** Column width below which labels are shown with lower opacity */ + @property({ type: Number }) + "fade-font-size": number = 12; + + /** Maximum font size for labels */ + @property({ type: Number }) + "max-font-size": number = 24; + + + #data?: DistributionData; + private yPositions?: YPositions; + protected highlighted?: Selection; + + + override connectedCallback() { + super.connectedCallback(); + if (this.data) this.createTrack(); + } + + /** Distribution data, e.g. TODO: example */ + get data(): DistributionData | undefined { + return this.#data; + } + set data(data: DistributionData | undefined) { + this.#data = data; + if (data) { + if (this["letter-order"] === "probability") { + this.yPositions = computeYPositions_ProbabilityOrder(data.probabilities); + } else { + this.yPositions = computeYPositions_FixedOrder(data.probabilities, AMINO_ACID_ORDER); + } + } else { + this.yPositions = undefined + } + this.createTrack(); + } + + override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { + super.attributeChangedCallback(name, oldValue, newValue); + if (ATTRIBUTES_THAT_TRIGGER_DATA_RESET.includes(name)) { + // Calling `this.data` setter to recompute `this.positions` and run `this.createTrack()` + this.data = this.data; // eslint-disable-line no-self-assign + } else if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { + this.onDimensionsChange(); + this.createTrack(); + } + } + + protected createTrack() { + if (this.svg) { + this.svg.selectAll("g").remove(); + this.unbindEvents(this.svg); + } + this.svg = select(this as unknown as NightingaleElement) + .selectAll("svg") + .attr("width", this.width) + .attr("height", this.height); + if (this.svg) { // this check is necessary because `svg` setter does not always set + this.bindEvents(this.svg); + this.highlighted = this.svg.append("g").attr("class", "highlighted"); + } + } + + refresh() { + this.requestDraw(); + this.updateHighlight(); + } + + private readonly _drawStamp = new Stamp(() => { + const stamp: Record = { + "data": this["data"], + "canvasCtx": this["canvasCtx"], + "canvasScale": this["canvasScale"], + "display-start": this["display-start"], + "display-end": this["display-end"], + }; + for (const attr of ATTRIBUTES_THAT_TRIGGER_DATA_RESET) { + stamp[attr] = this.getAttribute(attr); + } + for (const attr of ATTRIBUTES_THAT_TRIGGER_REFRESH) { + stamp[attr] = this.getAttribute(attr); + } + return stamp; + }); + + /** Request canvas redraw. */ + private requestDraw = () => this._drawer.requestRefresh(); + private readonly _drawer = Refresher(() => this._draw()); + /** Do not call directly! Call `requestDraw` instead to avoid browser freezing. */ + private _draw(): void { + if (!this._drawStamp.update().changed) return; + this.adjustCanvasCtxLogicalSize(); + this.clearCanvas(); + this.drawColumns(); + this.drawMargins(); + } + + private clearCanvas() { + const ctx = this.canvasCtx; + if (!ctx) return; + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + } + + private drawColumns() { + const ctx = this.canvasCtx; + if (!ctx) return; + if (!this.data) return; + + const scale = this.canvasScale; + const baseWidthInCss = this.getSingleBaseWidth(); + const baseWidth = scale * baseWidthInCss; + const fontOpacity = this.getFontOpacity(baseWidthInCss); + const columnOffset = scale * this["margin-top"]; + const columnHeight = scale * (this["height"] - this["margin-top"] - this["margin-bottom"]); + + ctx.lineWidth = scale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * baseWidthInCss); + ctx.strokeStyle = STROKE_COLOR; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + + const leftEdgeSeq = this.getSeqPositionFromX(0 - 0.5 * LINE_WIDTH) ?? -Infinity; + const rightEdgeSeq = this.getSeqPositionFromX(this.width + 0.5 * LINE_WIDTH) ?? Infinity; + const iFrom = Math.max(0, BinarySearch.firstGteqIndex(this.data.index, leftEdgeSeq - 1, x => x)); + const iTo = Math.min(this.data.index.length, BinarySearch.firstGteqIndex(this.data.index, rightEdgeSeq, x => x)); + + for (let i = iFrom; i < iTo; i++) { + const x = scale * this.getXFromSeqPosition(this.data.index[i]); + const textX = x + 0.5 * baseWidth; + + for (const letter in this.yPositions?.start) { + const relStart = Math.min(this.yPositions.start[letter][i], 1); + const relEnd = Math.min(this.yPositions.end[letter][i], 1); + const start = relStart * columnHeight + columnOffset; + const end = relEnd * columnHeight + columnOffset; + const height = end - start; + + // Draw rectangle + ctx.globalAlpha = 1; + ctx.fillStyle = AMINO_ACID_COLOR[letter as keyof typeof AMINO_ACID_COLOR] ?? DEFAULT_COLOR; + ctx.fillRect(x, start, baseWidth, height); + ctx.strokeRect(x, start, baseWidth, height); + + // Draw letter + if (fontOpacity === 0) continue; + const fontSize = Math.min(baseWidth, height, scale * this["max-font-size"]); + if (fontSize < scale * this["min-font-size"]) continue; + const textY = start + 0.5 * height; + ctx.globalAlpha = fontOpacity; + ctx.fillStyle = "black"; + ctx.font = `${fontSize}px ${this["font-family"]}`; + ctx.fillText(letter, textX, textY); + } + } + } + + private drawMargins() { + const ctx = this.canvasCtx; + if (!ctx) return; + + const canvasWidth = ctx.canvas.width; + const canvasHeight = ctx.canvas.height; + const marginLeft = this["margin-left"] * this.canvasScale; + const marginRight = this["margin-right"] * this.canvasScale; + const marginTop = this["margin-top"] * this.canvasScale; + const marginBottom = this["margin-bottom"] * this.canvasScale; + + ctx.globalAlpha = 1; + ctx.fillStyle = this["margin-color"]; + ctx.fillRect(0, 0, marginLeft, canvasHeight); + ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); + ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); + ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); + } + + private getFontOpacity(baseWidthInCss: number): number { + if (baseWidthInCss < this["min-font-size"]) { + return 0; + } else if (baseWidthInCss < this["fade-font-size"]) { + return (baseWidthInCss - this["min-font-size"]) / (this["fade-font-size"] - this["min-font-size"]); + } else { + return 1; + } + } + + protected updateHighlight() { + if (!this.highlighted) return; + const highlights = this.highlighted + .selectAll("rect") + .data(this.highlightedRegion.segments); + + highlights + .enter() + .append("rect") + .style("pointer-events", "none") + .merge(highlights) + .attr("fill", this["highlight-color"]) + .attr("height", this.height) + .attr("x", d => this.getXFromSeqPosition(d.start)) + .attr("width", d => Math.max(0, this.getSingleBaseWidth() * (d.end - d.start + 1))); + + highlights.exit().remove(); + } + + override zoomRefreshed() { + super.zoomRefreshed(); + if (this.getWidthWithMargins() > 0) this.refresh(); + } + + override firstUpdated(_changedProperties: PropertyValues) { + super.firstUpdated(_changedProperties); + this.createTrack(); + } + + override render() { + return html` +
+
+ + +
+
+ `; + } + + override onCanvasScaleChange() { + super.onCanvasScaleChange(); + this.refresh(); + } + + + private bindEvents(target: Selection): void { + target.on("click.NightingaleDistributionTrack", (event: MouseEvent) => this.handleClick(event)); + target.on("mousemove.NightingaleDistributionTrack", (event: MouseEvent) => this.handleMousemove(event)); + target.on("mouseout.NightingaleDistributionTrack", (event: MouseEvent) => this.handleMouseout(event)); + } + + private unbindEvents(target: Selection): void { + target.on("click.NightingaleDistributionTrack", null); + target.on("mousemove.NightingaleDistributionTrack", null); + target.on("mouseout.NightingaleDistributionTrack", null); + } + + private handleClick(event: MouseEvent): void { + const pointed = this.getPointedAminoAcid(event.offsetX, event.offsetY); + if (pointed === undefined) { + return; + } + const withHighlight = this.getAttribute("highlight-event") === "onclick"; + const customEvent = createEvent( + "click", + pointed, + withHighlight, + true, + pointed.position, + pointed.position, + event.target instanceof HTMLElement ? event.target : undefined, + event, + this, + ); + this.dispatchEvent(customEvent); + } + + private handleMousemove(event: MouseEvent): void { + const pointed = this.getPointedAminoAcid(event.offsetX, event.offsetY); + if (pointed === undefined) { + return this.handleMouseout(event); + } + const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; + const customEvent = createEvent( + "mouseover", + pointed, + withHighlight, + false, + pointed.position, + pointed.position, + event.target instanceof HTMLElement ? event.target : undefined, + event, + this, + ); + this.dispatchEvent(customEvent); + } + + private handleMouseout(event: MouseEvent): void { + const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; + const customEvent = createEvent( + "mouseout", + null, + withHighlight, + undefined, + undefined, + undefined, + event.target instanceof HTMLElement ? event.target : undefined, + event, + this + ); + this.dispatchEvent(customEvent); + } + + private getPointedAminoAcid(svgX: number, svgY: number): { position: number, aa: string, probability: number } | undefined { + if (!this.data) return undefined; + if (!this.yPositions) return undefined; + const continuousPosition = this.getSeqPositionFromX(svgX); + if (continuousPosition === undefined) return undefined; + const position = Math.floor(continuousPosition); + const i = BinarySearch.firstEqIndex(this.data.index, position, x => x); + if (i === undefined) return undefined; + const relativeY = (svgY - this["margin-top"]) / (this["height"] - this["margin-top"] - this["margin-bottom"]); + for (const letter in this.yPositions.start) { + if (relativeY >= this.yPositions.start[letter][i] && relativeY < this.yPositions.end[letter][i]) { + return { position, aa: letter, probability: this.data.probabilities[letter][i] ?? 0 }; + } + } + return undefined; + } +} + + +function computeYPositions_FixedOrder(probabilities: Probabilities, order: string[]): YPositions { + const normalizedOrder = normalizeOrder(Object.keys(probabilities), order); + const start: { [letter: string]: number[] } = {}; + const end: { [letter: string]: number[] } = {}; + for (const letter of normalizedOrder) { + start[letter] = []; + end[letter] = []; + } + const n = Math.max(0, ...normalizedOrder.map(letter => probabilities[letter].length)); + for (let i = 0; i < n; i++) { + let cum = 0; + for (const letter of normalizedOrder) { + start[letter].push(cum); + cum += probabilities[letter][i] ?? 0; + end[letter].push(cum); + } + } + return { start, end }; +} + +function computeYPositions_ProbabilityOrder(probabilities: Probabilities): YPositions { + const alphabet = Object.keys(probabilities); + const start: { [letter: string]: number[] } = {}; + const end: { [letter: string]: number[] } = {}; + for (const letter of alphabet) { + start[letter] = []; + end[letter] = []; + } + const n = Math.max(0, ...alphabet.map(letter => probabilities[letter].length)); + for (let i = 0; i < n; i++) { + let cum = 0; + alphabet.sort((a, b) => (probabilities[b][i] ?? 0) - (probabilities[a][i] ?? 0)); + for (const letter of alphabet) { + start[letter].push(cum); + cum += probabilities[letter][i] ?? 0; + end[letter].push(cum); + } + } + return { start, end }; +} + +function normalizeOrder(present: string[], order: string[]) { + const presentSet = new Set(present); + const orderSet = new Set(order); + const ordered = order.filter(s => presentSet.has(s)); + const rest = present.filter(s => !orderSet.has(s)); + return ordered.concat(rest); +} diff --git a/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json b/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json new file mode 100644 index 000000000..8c64aa59c --- /dev/null +++ b/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json @@ -0,0 +1,32 @@ +{ + "__comment__": "This is real data coming from https://www.ebi.ac.uk/pdbe/graph-api/pdb/sequence_conservation/1tqn/1", + "identifier": "1tqn", + "main_track_color": "#808080", + "sub_track_color": "#d3d3d3", + "data": { + "index": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483], + "conservation_score": [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 4.0, 1.0, 0.0, 0.0, 4.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0, 2.0, 0.0, 1.0, 3.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 2.0, 1.0, 3.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 4.0, 1.0, 2.0, 5.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 0.0, 2.0, 2.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 4.0, 1.0, 3.0, 1.0, 3.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 5.0, 2.0, 0.0, 4.0, 1.0, 2.0, 0.0, 7.0, 1.0, 4.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + "probability_A": [0.089, 0.067, 0.045, 0.086, 0.081, 0.081, 0.083, 0.077, 0.077, 0.077, 0.076, 0.074, 0.071, 0.072, 0.075, 0.058, 0.046, 0.052, 0.049, 0.062, 0.084, 0.055, 0.049, 0.045, 0.045, 0.047, 0.05, 0.076, 0.054, 0.066, 0.051, 0.065, 0.06, 0.066, 0.062, 0.08, 0.064, 0.069, 0.064, 0.089, 0.07, 0.057, 0.156, 0.066, 0.051, 0.041, 0.047, 0.048, 0.048, 0.049, 0.053, 0.046, 0.057, 0.051, 0.053, 0.058, 0.049, 0.053, 0.084, 0.041, 0.058, 0.057, 0.099, 0.042, 0.096, 0.071, 0.164, 0.189, 0.058, 0.07, 0.115, 0.04, 0.073, 0.055, 0.046, 0.114, 0.06, 0.097, 0.075, 0.06, 0.118, 0.049, 0.053, 0.061, 0.071, 0.066, 0.095, 0.091, 0.078, 0.075, 0.05, 0.052, 0.059, 0.066, 0.08, 0.041, 0.093, 0.08, 0.187, 0.041, 0.039, 0.079, 0.056, 0.034, 0.077, 0.067, 0.061, 0.01, 0.065, 0.085, 0.108, 0.116, 0.055, 0.204, 0.03, 0.059, 0.072, 0.085, 0.113, 0.047, 0.073, 0.089, 0.042, 0.076, 0.06, 0.073, 0.037, 0.089, 0.071, 0.065, 0.187, 0.067, 0.072, 0.057, 0.067, 0.077, 0.065, 0.042, 0.087, 0.076, 0.093, 0.216, 0.081, 0.088, 0.055, 0.069, 0.087, 0.047, 0.046, 0.053, 0.063, 0.058, 0.078, 0.067, 0.075, 0.095, 0.1, 0.162, 0.084, 0.046, 0.058, 0.061, 0.114, 0.065, 0.103, 0.233, 0.038, 0.047, 0.051, 0.042, 0.05, 0.05, 0.091, 0.048, 0.056, 0.058, 0.066, 0.055, 0.061, 0.071, 0.056, 0.097, 0.067, 0.125, 0.103, 0.062, 0.081, 0.106, 0.073, 0.094, 0.071, 0.077, 0.082, 0.089, 0.07, 0.086, 0.07, 0.07, 0.072, 0.09, 0.066, 0.075, 0.078, 0.052, 0.056, 0.054, 0.054, 0.067, 0.05, 0.054, 0.064, 0.061, 0.073, 0.056, 0.051, 0.08, 0.091, 0.082, 0.081, 0.086, 0.067, 0.065, 0.097, 0.082, 0.078, 0.059, 0.066, 0.064, 0.065, 0.087, 0.068, 0.077, 0.069, 0.063, 0.062, 0.082, 0.099, 0.067, 0.081, 0.084, 0.065, 0.079, 0.065, 0.07, 0.06, 0.055, 0.067, 0.05, 0.056, 0.046, 0.058, 0.086, 0.043, 0.044, 0.061, 0.166, 0.066, 0.053, 0.099, 0.072, 0.058, 0.073, 0.054, 0.071, 0.047, 0.055, 0.094, 0.033, 0.045, 0.038, 0.066, 0.04, 0.059, 0.099, 0.194, 0.048, 0.151, 0.066, 0.067, 0.04, 0.032, 0.075, 0.601, 0.086, 0.055, 0.033, 0.039, 0.035, 0.319, 0.093, 0.199, 0.046, 0.111, 0.058, 0.248, 0.041, 0.098, 0.091, 0.026, 0.266, 0.062, 0.029, 0.031, 0.06, 0.097, 0.04, 0.137, 0.063, 0.178, 0.043, 0.158, 0.031, 0.047, 0.054, 0.153, 0.105, 0.048, 0.072, 0.051, 0.05, 0.103, 0.054, 0.054, 0.06, 0.066, 0.082, 0.082, 0.052, 0.087, 0.05, 0.03, 0.035, 0.023, 0.033, 0.035, 0.405, 0.088, 0.038, 0.032, 0.012, 0.125, 0.026, 0.005, 0.023, 0.059, 0.048, 0.083, 0.207, 0.058, 0.084, 0.041, 0.083, 0.029, 0.078, 0.266, 0.068, 0.071, 0.04, 0.065, 0.034, 0.026, 0.079, 0.027, 0.03, 0.04, 0.023, 0.041, 0.195, 0.024, 0.086, 0.05, 0.038, 0.064, 0.071, 0.064, 0.114, 0.071, 0.293, 0.109, 0.047, 0.026, 0.027, 0.064, 0.097, 0.046, 0.02, 0.063, 0.036, 0.152, 0.045, 0.07, 0.017, 0.028, 0.027, 0.039, 0.016, 0.024, 0.068, 0.054, 0.081, 0.061, 0.077, 0.091, 0.072, 0.066, 0.05, 0.067, 0.052, 0.205, 0.026, 0.045, 0.121, 0.005, 0.037, 0.206, 0.016, 0.064, 0.025, 0.099, 0.013, 0.054, 0.042, 0.099, 0.068, 0.021, 0.64, 0.034, 0.107, 0.035, 0.115, 0.054, 0.066, 0.189, 0.052, 0.355, 0.084, 0.027, 0.05, 0.057, 0.067, 0.025, 0.038, 0.029, 0.057, 0.067, 0.121, 0.067, 0.055, 0.074, 0.063, 0.066, 0.054, 0.059, 0.061, 0.066, 0.076, 0.07, 0.075, 0.084, 0.073, 0.065, 0.075, 0.068, 0.089, 0.07, 0.066, 0.071, 0.07, 0.079, 0.071, 0.081, 0.074, 0.083, 0.062, 0.078, 0.091, 0.094, 0.091, 0.104, 0.104, 0.097, 0.086], + "probability_C": [0.014, 0.014, 0.011, 0.014, 0.014, 0.011, 0.009, 0.013, 0.007, 0.016, 0.016, 0.006, 0.006, 0.012, 0.006, 0.013, 0.005, 0.008, 0.006, 0.006, 0.007, 0.012, 0.009, 0.011, 0.011, 0.007, 0.008, 0.013, 0.011, 0.006, 0.011, 0.005, 0.004, 0.004, 0.007, 0.024, 0.005, 0.012, 0.006, 0.009, 0.004, 0.048, 0.009, 0.004, 0.005, 0.009, 0.004, 0.004, 0.012, 0.023, 0.01, 0.012, 0.005, 0.01, 0.01, 0.007, 0.008, 0.005, 0.022, 0.01, 0.02, 0.012, 0.028, 0.007, 0.006, 0.005, 0.011, 0.017, 0.004, 0.004, 0.023, 0.02, 0.005, 0.004, 0.003, 0.027, 0.005, 0.006, 0.01, 0.013, 0.01, 0.006, 0.004, 0.005, 0.005, 0.009, 0.005, 0.006, 0.009, 0.005, 0.009, 0.009, 0.006, 0.009, 0.012, 0.008, 0.009, 0.012, 0.011, 0.004, 0.004, 0.003, 0.004, 0.01, 0.003, 0.003, 0.007, 0.001, 0.004, 0.009, 0.047, 0.004, 0.003, 0.008, 0.007, 0.005, 0.004, 0.004, 0.005, 0.009, 0.004, 0.006, 0.011, 0.009, 0.005, 0.011, 0.011, 0.012, 0.004, 0.054, 0.035, 0.01, 0.014, 0.013, 0.038, 0.005, 0.008, 0.011, 0.007, 0.005, 0.01, 0.027, 0.005, 0.008, 0.005, 0.007, 0.006, 0.019, 0.007, 0.016, 0.009, 0.004, 0.013, 0.023, 0.008, 0.033, 0.031, 0.011, 0.02, 0.007, 0.01, 0.008, 0.113, 0.01, 0.069, 0.038, 0.011, 0.004, 0.01, 0.008, 0.03, 0.007, 0.054, 0.009, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005, 0.01, 0.01, 0.004, 0.007, 0.015, 0.005, 0.005, 0.014, 0.013, 0.005, 0.008, 0.007, 0.011, 0.011, 0.005, 0.006, 0.012, 0.011, 0.009, 0.009, 0.014, 0.007, 0.012, 0.012, 0.005, 0.008, 0.012, 0.01, 0.005, 0.011, 0.009, 0.004, 0.008, 0.008, 0.003, 0.008, 0.052, 0.005, 0.009, 0.009, 0.004, 0.004, 0.014, 0.007, 0.004, 0.012, 0.016, 0.004, 0.004, 0.013, 0.014, 0.005, 0.004, 0.011, 0.005, 0.004, 0.006, 0.005, 0.009, 0.004, 0.005, 0.008, 0.008, 0.005, 0.008, 0.006, 0.006, 0.006, 0.013, 0.01, 0.005, 0.024, 0.015, 0.011, 0.007, 0.008, 0.01, 0.004, 0.006, 0.005, 0.004, 0.005, 0.003, 0.004, 0.004, 0.004, 0.006, 0.008, 0.004, 0.003, 0.003, 0.003, 0.009, 0.013, 0.009, 0.008, 0.081, 0.01, 0.005, 0.006, 0.007, 0.006, 0.003, 0.003, 0.006, 0.002, 0.003, 0.006, 0.005, 0.008, 0.009, 0.011, 0.028, 0.012, 0.037, 0.015, 0.01, 0.021, 0.009, 0.031, 0.01, 0.007, 0.002, 0.003, 0.023, 0.007, 0.003, 0.004, 0.026, 0.007, 0.003, 0.003, 0.008, 0.007, 0.005, 0.012, 0.033, 0.004, 0.005, 0.005, 0.007, 0.006, 0.008, 0.016, 0.007, 0.004, 0.006, 0.009, 0.005, 0.003, 0.025, 0.003, 0.007, 0.017, 0.005, 0.036, 0.099, 0.021, 0.015, 0.001, 0.018, 0.006, 0.002, 0.016, 0.015, 0.004, 0.005, 0.006, 0.007, 0.008, 0.006, 0.003, 0.003, 0.018, 0.072, 0.003, 0.008, 0.002, 0.063, 0.005, 0.008, 0.019, 0.002, 0.013, 0.006, 0.007, 0.003, 0.003, 0.002, 0.013, 0.012, 0.017, 0.014, 0.022, 0.029, 0.009, 0.009, 0.01, 0.013, 0.008, 0.005, 0.005, 0.003, 0.003, 0.01, 0.006, 0.003, 0.004, 0.01, 0.004, 0.006, 0.006, 0.007, 0.005, 0.003, 0.002, 0.005, 0.005, 0.003, 0.005, 0.004, 0.007, 0.004, 0.005, 0.011, 0.004, 0.004, 0.009, 0.013, 0.007, 0.01, 0.005, 0.002, 0.003, 0.007, 0.002, 0.002, 0.003, 0.003, 0.895, 0.005, 0.002, 0.002, 0.002, 0.006, 0.004, 0.003, 0.01, 0.003, 0.007, 0.006, 0.016, 0.013, 0.009, 0.019, 0.012, 0.007, 0.01, 0.005, 0.03, 0.013, 0.005, 0.008, 0.007, 0.008, 0.059, 0.004, 0.004, 0.006, 0.006, 0.01, 0.005, 0.012, 0.005, 0.012, 0.007, 0.014, 0.006, 0.013, 0.014, 0.018, 0.01, 0.007, 0.006, 0.006, 0.006, 0.018, 0.012, 0.034, 0.007, 0.024, 0.007, 0.008, 0.008, 0.008, 0.012, 0.015, 0.014, 0.015, 0.016, 0.016, 0.016], + "probability_D": [0.033, 0.023, 0.018, 0.039, 0.038, 0.044, 0.052, 0.036, 0.068, 0.023, 0.021, 0.055, 0.06, 0.04, 0.058, 0.008, 0.031, 0.03, 0.031, 0.034, 0.033, 0.01, 0.016, 0.006, 0.006, 0.025, 0.042, 0.007, 0.011, 0.082, 0.01, 0.075, 0.057, 0.091, 0.036, 0.041, 0.05, 0.026, 0.098, 0.033, 0.087, 0.008, 0.029, 0.058, 0.04, 0.015, 0.034, 0.102, 0.008, 0.005, 0.029, 0.006, 0.036, 0.028, 0.016, 0.039, 0.041, 0.055, 0.009, 0.005, 0.008, 0.005, 0.03, 0.262, 0.02, 0.163, 0.028, 0.005, 0.04, 0.085, 0.008, 0.006, 0.049, 0.067, 0.112, 0.084, 0.098, 0.102, 0.055, 0.031, 0.051, 0.114, 0.044, 0.048, 0.055, 0.024, 0.063, 0.055, 0.037, 0.077, 0.033, 0.039, 0.05, 0.104, 0.043, 0.007, 0.02, 0.012, 0.026, 0.144, 0.095, 0.14, 0.065, 0.006, 0.028, 0.042, 0.013, 0.004, 0.031, 0.006, 0.004, 0.037, 0.029, 0.026, 0.004, 0.028, 0.043, 0.06, 0.027, 0.007, 0.049, 0.087, 0.007, 0.027, 0.078, 0.019, 0.009, 0.064, 0.099, 0.026, 0.017, 0.158, 0.05, 0.005, 0.013, 0.095, 0.053, 0.006, 0.072, 0.061, 0.07, 0.035, 0.093, 0.078, 0.06, 0.054, 0.051, 0.019, 0.268, 0.006, 0.049, 0.172, 0.041, 0.006, 0.034, 0.037, 0.004, 0.011, 0.005, 0.36, 0.004, 0.004, 0.006, 0.071, 0.005, 0.006, 0.004, 0.05, 0.038, 0.132, 0.012, 0.173, 0.053, 0.036, 0.131, 0.123, 0.076, 0.095, 0.17, 0.056, 0.016, 0.017, 0.082, 0.061, 0.016, 0.058, 0.064, 0.011, 0.015, 0.047, 0.025, 0.115, 0.018, 0.01, 0.101, 0.053, 0.014, 0.021, 0.02, 0.035, 0.025, 0.092, 0.024, 0.009, 0.051, 0.046, 0.014, 0.028, 0.048, 0.02, 0.023, 0.071, 0.026, 0.018, 0.065, 0.03, 0.046, 0.037, 0.023, 0.063, 0.052, 0.095, 0.013, 0.093, 0.116, 0.022, 0.01, 0.074, 0.068, 0.032, 0.017, 0.089, 0.064, 0.021, 0.037, 0.099, 0.058, 0.035, 0.054, 0.086, 0.171, 0.059, 0.076, 0.058, 0.107, 0.048, 0.069, 0.496, 0.016, 0.011, 0.194, 0.03, 0.01, 0.011, 0.176, 0.042, 0.044, 0.105, 0.088, 0.062, 0.149, 0.088, 0.122, 0.107, 0.073, 0.074, 0.045, 0.011, 0.093, 0.327, 0.106, 0.117, 0.008, 0.011, 0.131, 0.057, 0.02, 0.033, 0.088, 0.024, 0.003, 0.006, 0.019, 0.01, 0.014, 0.335, 0.014, 0.004, 0.011, 0.025, 0.003, 0.003, 0.024, 0.005, 0.003, 0.003, 0.008, 0.027, 0.003, 0.009, 0.039, 0.048, 0.021, 0.191, 0.008, 0.007, 0.091, 0.023, 0.003, 0.015, 0.093, 0.047, 0.004, 0.292, 0.055, 0.009, 0.013, 0.05, 0.124, 0.119, 0.066, 0.075, 0.03, 0.086, 0.025, 0.213, 0.295, 0.01, 0.064, 0.06, 0.006, 0.038, 0.004, 0.003, 0.158, 0.019, 0.003, 0.003, 0.049, 0.017, 0.004, 0.003, 0.002, 0.004, 0.023, 0.029, 0.005, 0.007, 0.011, 0.02, 0.01, 0.032, 0.019, 0.019, 0.005, 0.037, 0.054, 0.43, 0.061, 0.045, 0.004, 0.139, 0.071, 0.009, 0.059, 0.003, 0.025, 0.023, 0.07, 0.061, 0.036, 0.003, 0.008, 0.004, 0.034, 0.006, 0.016, 0.028, 0.003, 0.021, 0.021, 0.462, 0.039, 0.105, 0.011, 0.003, 0.092, 0.323, 0.041, 0.188, 0.05, 0.003, 0.206, 0.007, 0.147, 0.012, 0.008, 0.055, 0.147, 0.086, 0.105, 0.036, 0.178, 0.059, 0.027, 0.146, 0.068, 0.048, 0.034, 0.007, 0.006, 0.01, 0.001, 0.015, 0.023, 0.007, 0.02, 0.016, 0.02, 0.002, 0.003, 0.005, 0.028, 0.042, 0.003, 0.006, 0.031, 0.014, 0.022, 0.003, 0.022, 0.003, 0.004, 0.003, 0.012, 0.021, 0.003, 0.003, 0.027, 0.037, 0.004, 0.2, 0.005, 0.045, 0.029, 0.05, 0.094, 0.123, 0.061, 0.071, 0.031, 0.122, 0.019, 0.067, 0.03, 0.065, 0.026, 0.057, 0.022, 0.01, 0.009, 0.044, 0.04, 0.073, 0.065, 0.063, 0.01, 0.037, 0.01, 0.053, 0.012, 0.054, 0.055, 0.036, 0.097, 0.068, 0.043, 0.041, 0.062, 0.061, 0.051, 0.056], + "probability_E": [0.051, 0.04, 0.029, 0.068, 0.066, 0.076, 0.09, 0.064, 0.097, 0.042, 0.038, 0.108, 0.098, 0.068, 0.089, 0.015, 0.05, 0.06, 0.049, 0.064, 0.058, 0.016, 0.028, 0.011, 0.011, 0.041, 0.077, 0.012, 0.019, 0.101, 0.014, 0.073, 0.081, 0.083, 0.057, 0.059, 0.091, 0.04, 0.083, 0.062, 0.188, 0.013, 0.054, 0.128, 0.104, 0.024, 0.056, 0.078, 0.011, 0.01, 0.056, 0.011, 0.055, 0.032, 0.019, 0.075, 0.077, 0.063, 0.034, 0.009, 0.01, 0.009, 0.043, 0.078, 0.035, 0.251, 0.018, 0.009, 0.113, 0.249, 0.012, 0.009, 0.057, 0.082, 0.115, 0.063, 0.09, 0.095, 0.068, 0.042, 0.068, 0.072, 0.067, 0.078, 0.073, 0.031, 0.075, 0.084, 0.053, 0.075, 0.035, 0.043, 0.077, 0.072, 0.034, 0.009, 0.013, 0.019, 0.041, 0.147, 0.069, 0.23, 0.116, 0.011, 0.053, 0.091, 0.024, 0.011, 0.049, 0.011, 0.008, 0.046, 0.067, 0.082, 0.008, 0.046, 0.061, 0.086, 0.051, 0.01, 0.082, 0.117, 0.022, 0.149, 0.107, 0.034, 0.019, 0.121, 0.223, 0.174, 0.038, 0.141, 0.099, 0.016, 0.028, 0.148, 0.083, 0.013, 0.126, 0.132, 0.132, 0.056, 0.158, 0.094, 0.067, 0.145, 0.109, 0.02, 0.128, 0.012, 0.073, 0.151, 0.068, 0.009, 0.06, 0.066, 0.011, 0.016, 0.013, 0.094, 0.009, 0.008, 0.011, 0.113, 0.009, 0.011, 0.008, 0.051, 0.095, 0.096, 0.015, 0.119, 0.091, 0.063, 0.139, 0.113, 0.118, 0.131, 0.107, 0.141, 0.033, 0.028, 0.205, 0.098, 0.025, 0.107, 0.141, 0.018, 0.03, 0.106, 0.056, 0.101, 0.031, 0.024, 0.082, 0.074, 0.022, 0.027, 0.032, 0.051, 0.019, 0.065, 0.027, 0.011, 0.052, 0.038, 0.015, 0.029, 0.061, 0.021, 0.036, 0.107, 0.046, 0.031, 0.078, 0.04, 0.062, 0.066, 0.043, 0.076, 0.085, 0.192, 0.018, 0.084, 0.113, 0.039, 0.013, 0.095, 0.14, 0.075, 0.02, 0.139, 0.158, 0.042, 0.078, 0.24, 0.118, 0.077, 0.062, 0.201, 0.125, 0.082, 0.136, 0.112, 0.113, 0.084, 0.084, 0.063, 0.018, 0.017, 0.078, 0.03, 0.018, 0.014, 0.162, 0.086, 0.108, 0.102, 0.105, 0.107, 0.198, 0.083, 0.248, 0.087, 0.11, 0.13, 0.078, 0.019, 0.066, 0.137, 0.171, 0.331, 0.011, 0.029, 0.073, 0.169, 0.017, 0.013, 0.061, 0.009, 0.006, 0.016, 0.046, 0.016, 0.026, 0.331, 0.021, 0.007, 0.02, 0.027, 0.008, 0.006, 0.098, 0.009, 0.005, 0.005, 0.015, 0.158, 0.005, 0.009, 0.064, 0.039, 0.043, 0.274, 0.024, 0.041, 0.192, 0.065, 0.006, 0.036, 0.267, 0.675, 0.006, 0.092, 0.136, 0.022, 0.015, 0.074, 0.087, 0.109, 0.091, 0.093, 0.039, 0.089, 0.115, 0.23, 0.106, 0.018, 0.095, 0.104, 0.008, 0.084, 0.008, 0.005, 0.12, 0.027, 0.005, 0.006, 0.088, 0.855, 0.006, 0.007, 0.006, 0.005, 0.034, 0.028, 0.007, 0.013, 0.01, 0.029, 0.008, 0.059, 0.04, 0.116, 0.007, 0.065, 0.218, 0.097, 0.015, 0.184, 0.007, 0.065, 0.056, 0.023, 0.052, 0.005, 0.054, 0.08, 0.042, 0.048, 0.05, 0.005, 0.016, 0.006, 0.021, 0.009, 0.019, 0.034, 0.006, 0.028, 0.033, 0.042, 0.166, 0.176, 0.031, 0.006, 0.144, 0.163, 0.022, 0.235, 0.237, 0.005, 0.043, 0.008, 0.431, 0.019, 0.01, 0.08, 0.139, 0.186, 0.102, 0.106, 0.134, 0.077, 0.042, 0.084, 0.056, 0.07, 0.095, 0.011, 0.008, 0.017, 0.002, 0.032, 0.031, 0.008, 0.036, 0.029, 0.029, 0.003, 0.006, 0.008, 0.106, 0.072, 0.005, 0.011, 0.075, 0.02, 0.451, 0.012, 0.078, 0.012, 0.006, 0.005, 0.028, 0.072, 0.006, 0.006, 0.049, 0.066, 0.006, 0.159, 0.008, 0.182, 0.044, 0.058, 0.129, 0.173, 0.109, 0.145, 0.054, 0.1, 0.033, 0.131, 0.097, 0.093, 0.045, 0.087, 0.032, 0.018, 0.017, 0.087, 0.069, 0.128, 0.102, 0.088, 0.018, 0.073, 0.018, 0.095, 0.022, 0.125, 0.096, 0.065, 0.116, 0.09, 0.067, 0.062, 0.076, 0.07, 0.059, 0.064], + "probability_F": [0.041, 0.048, 0.135, 0.036, 0.031, 0.027, 0.022, 0.062, 0.016, 0.057, 0.096, 0.012, 0.012, 0.024, 0.014, 0.045, 0.011, 0.016, 0.016, 0.031, 0.012, 0.056, 0.032, 0.155, 0.095, 0.015, 0.009, 0.058, 0.072, 0.024, 0.109, 0.025, 0.017, 0.012, 0.085, 0.032, 0.021, 0.142, 0.063, 0.031, 0.009, 0.044, 0.031, 0.009, 0.009, 0.063, 0.009, 0.008, 0.041, 0.214, 0.023, 0.102, 0.049, 0.103, 0.068, 0.025, 0.019, 0.012, 0.061, 0.033, 0.069, 0.036, 0.018, 0.006, 0.025, 0.007, 0.036, 0.03, 0.007, 0.016, 0.041, 0.1, 0.014, 0.006, 0.007, 0.052, 0.104, 0.014, 0.062, 0.278, 0.014, 0.013, 0.013, 0.02, 0.026, 0.183, 0.022, 0.021, 0.048, 0.017, 0.143, 0.046, 0.014, 0.011, 0.021, 0.071, 0.156, 0.109, 0.013, 0.013, 0.008, 0.007, 0.016, 0.028, 0.014, 0.021, 0.024, 0.002, 0.006, 0.081, 0.053, 0.007, 0.009, 0.034, 0.485, 0.021, 0.041, 0.01, 0.009, 0.031, 0.009, 0.009, 0.128, 0.076, 0.008, 0.037, 0.108, 0.013, 0.008, 0.024, 0.02, 0.009, 0.022, 0.095, 0.032, 0.008, 0.028, 0.062, 0.015, 0.01, 0.029, 0.014, 0.012, 0.009, 0.015, 0.01, 0.013, 0.113, 0.009, 0.059, 0.035, 0.02, 0.039, 0.193, 0.047, 0.032, 0.136, 0.02, 0.131, 0.007, 0.026, 0.031, 0.039, 0.009, 0.047, 0.031, 0.468, 0.007, 0.027, 0.007, 0.208, 0.014, 0.032, 0.054, 0.01, 0.013, 0.015, 0.049, 0.018, 0.009, 0.24, 0.047, 0.01, 0.018, 0.071, 0.024, 0.022, 0.059, 0.09, 0.016, 0.159, 0.02, 0.139, 0.05, 0.021, 0.011, 0.176, 0.167, 0.042, 0.03, 0.058, 0.026, 0.066, 0.253, 0.013, 0.157, 0.066, 0.055, 0.016, 0.077, 0.053, 0.013, 0.063, 0.064, 0.014, 0.046, 0.027, 0.03, 0.157, 0.018, 0.008, 0.022, 0.054, 0.021, 0.009, 0.217, 0.097, 0.017, 0.012, 0.037, 0.044, 0.01, 0.011, 0.035, 0.013, 0.009, 0.012, 0.017, 0.022, 0.007, 0.011, 0.014, 0.01, 0.009, 0.014, 0.024, 0.011, 0.006, 0.24, 0.052, 0.009, 0.034, 0.078, 0.032, 0.015, 0.017, 0.013, 0.014, 0.015, 0.013, 0.012, 0.014, 0.012, 0.021, 0.016, 0.024, 0.021, 0.092, 0.013, 0.014, 0.013, 0.015, 0.03, 0.024, 0.016, 0.02, 0.027, 0.083, 0.027, 0.244, 0.142, 0.202, 0.006, 0.006, 0.06, 0.006, 0.007, 0.013, 0.012, 0.014, 0.019, 0.026, 0.015, 0.125, 0.075, 0.122, 0.077, 0.06, 0.02, 0.016, 0.007, 0.021, 0.004, 0.004, 0.02, 0.026, 0.004, 0.004, 0.015, 0.019, 0.004, 0.004, 0.017, 0.009, 0.006, 0.028, 0.112, 0.006, 0.008, 0.008, 0.009, 0.013, 0.023, 0.009, 0.1, 0.006, 0.007, 0.031, 0.01, 0.005, 0.027, 0.004, 0.076, 0.023, 0.006, 0.007, 0.069, 0.042, 0.009, 0.003, 0.016, 0.054, 0.001, 0.066, 0.063, 0.005, 0.028, 0.021, 0.068, 0.061, 0.069, 0.042, 0.005, 0.023, 0.016, 0.01, 0.005, 0.006, 0.058, 0.014, 0.071, 0.006, 0.004, 0.069, 0.099, 0.043, 0.004, 0.004, 0.004, 0.009, 0.02, 0.032, 0.085, 0.049, 0.018, 0.038, 0.046, 0.019, 0.024, 0.012, 0.022, 0.004, 0.005, 0.007, 0.065, 0.25, 0.006, 0.006, 0.007, 0.02, 0.005, 0.713, 0.008, 0.014, 0.015, 0.003, 0.443, 0.019, 0.005, 0.006, 0.007, 0.016, 0.016, 0.055, 0.031, 0.009, 0.006, 0.158, 0.018, 0.276, 0.058, 0.01, 0.868, 0.007, 0.057, 0.002, 0.005, 0.008, 0.026, 0.005, 0.018, 0.002, 0.014, 0.028, 0.283, 0.011, 0.02, 0.02, 0.01, 0.024, 0.086, 0.032, 0.114, 0.072, 0.023, 0.009, 0.05, 0.057, 0.013, 0.01, 0.526, 0.005, 0.251, 0.009, 0.023, 0.015, 0.008, 0.008, 0.01, 0.008, 0.031, 0.009, 0.041, 0.011, 0.059, 0.013, 0.069, 0.021, 0.053, 0.054, 0.043, 0.014, 0.017, 0.01, 0.011, 0.013, 0.065, 0.029, 0.049, 0.013, 0.062, 0.014, 0.016, 0.017, 0.016, 0.02, 0.028, 0.031, 0.024, 0.027, 0.036, 0.042], + "probability_G": [0.034, 0.023, 0.019, 0.058, 0.031, 0.032, 0.035, 0.03, 0.065, 0.027, 0.027, 0.034, 0.034, 0.029, 0.122, 0.017, 0.02, 0.385, 0.019, 0.026, 0.13, 0.017, 0.021, 0.02, 0.014, 0.48, 0.024, 0.018, 0.021, 0.036, 0.019, 0.086, 0.039, 0.124, 0.032, 0.035, 0.034, 0.026, 0.027, 0.024, 0.027, 0.016, 0.03, 0.025, 0.023, 0.018, 0.489, 0.034, 0.012, 0.02, 0.112, 0.014, 0.025, 0.027, 0.414, 0.085, 0.032, 0.021, 0.018, 0.011, 0.015, 0.013, 0.032, 0.086, 0.018, 0.027, 0.018, 0.012, 0.021, 0.019, 0.016, 0.016, 0.039, 0.036, 0.028, 0.078, 0.05, 0.043, 0.027, 0.034, 0.046, 0.083, 0.058, 0.055, 0.032, 0.017, 0.112, 0.036, 0.024, 0.157, 0.041, 0.07, 0.178, 0.078, 0.27, 0.018, 0.054, 0.019, 0.03, 0.029, 0.4, 0.022, 0.022, 0.01, 0.024, 0.019, 0.014, 0.005, 0.028, 0.012, 0.015, 0.027, 0.026, 0.054, 0.01, 0.065, 0.048, 0.124, 0.028, 0.029, 0.023, 0.061, 0.013, 0.024, 0.056, 0.017, 0.011, 0.028, 0.032, 0.018, 0.062, 0.034, 0.025, 0.01, 0.014, 0.034, 0.028, 0.011, 0.036, 0.036, 0.026, 0.061, 0.049, 0.052, 0.344, 0.05, 0.036, 0.015, 0.019, 0.011, 0.048, 0.029, 0.015, 0.011, 0.07, 0.026, 0.013, 0.022, 0.034, 0.024, 0.016, 0.011, 0.147, 0.031, 0.014, 0.064, 0.01, 0.478, 0.027, 0.029, 0.017, 0.121, 0.049, 0.04, 0.051, 0.062, 0.078, 0.041, 0.038, 0.039, 0.024, 0.029, 0.028, 0.04, 0.049, 0.035, 0.038, 0.027, 0.027, 0.048, 0.04, 0.06, 0.047, 0.033, 0.067, 0.06, 0.05, 0.043, 0.034, 0.059, 0.028, 0.055, 0.04, 0.022, 0.039, 0.038, 0.023, 0.042, 0.049, 0.05, 0.036, 0.051, 0.057, 0.022, 0.067, 0.042, 0.044, 0.05, 0.03, 0.039, 0.033, 0.031, 0.018, 0.029, 0.05, 0.018, 0.016, 0.035, 0.043, 0.025, 0.016, 0.029, 0.029, 0.016, 0.022, 0.025, 0.049, 0.037, 0.029, 0.045, 0.07, 0.08, 0.059, 0.048, 0.065, 0.056, 0.043, 0.029, 0.027, 0.02, 0.057, 0.02, 0.013, 0.012, 0.033, 0.044, 0.033, 0.047, 0.056, 0.059, 0.049, 0.054, 0.047, 0.09, 0.164, 0.05, 0.098, 0.013, 0.032, 0.02, 0.027, 0.018, 0.014, 0.018, 0.084, 0.022, 0.032, 0.03, 0.04, 0.011, 0.009, 0.056, 0.096, 0.687, 0.019, 0.024, 0.012, 0.009, 0.048, 0.046, 0.034, 0.008, 0.054, 0.032, 0.062, 0.011, 0.013, 0.013, 0.006, 0.042, 0.019, 0.012, 0.014, 0.032, 0.007, 0.009, 0.02, 0.013, 0.008, 0.011, 0.019, 0.013, 0.007, 0.018, 0.044, 0.016, 0.029, 0.285, 0.107, 0.077, 0.104, 0.038, 0.024, 0.03, 0.022, 0.029, 0.03, 0.009, 0.04, 0.032, 0.007, 0.017, 0.008, 0.007, 0.028, 0.035, 0.008, 0.007, 0.011, 0.009, 0.047, 0.009, 0.004, 0.006, 0.031, 0.036, 0.015, 0.077, 0.039, 0.137, 0.024, 0.047, 0.015, 0.015, 0.012, 0.026, 0.037, 0.082, 0.016, 0.014, 0.009, 0.186, 0.575, 0.012, 0.013, 0.008, 0.016, 0.044, 0.572, 0.014, 0.025, 0.006, 0.06, 0.019, 0.024, 0.017, 0.05, 0.074, 0.015, 0.1, 0.012, 0.012, 0.02, 0.026, 0.01, 0.039, 0.109, 0.014, 0.015, 0.025, 0.016, 0.006, 0.011, 0.016, 0.035, 0.009, 0.01, 0.026, 0.079, 0.081, 0.085, 0.111, 0.053, 0.065, 0.038, 0.056, 0.037, 0.046, 0.039, 0.009, 0.01, 0.042, 0.004, 0.507, 0.124, 0.89, 0.024, 0.012, 0.049, 0.006, 0.007, 0.881, 0.014, 0.051, 0.006, 0.091, 0.013, 0.011, 0.017, 0.025, 0.03, 0.009, 0.036, 0.007, 0.055, 0.024, 0.007, 0.008, 0.021, 0.034, 0.008, 0.016, 0.009, 0.022, 0.017, 0.034, 0.057, 0.104, 0.053, 0.041, 0.023, 0.029, 0.018, 0.031, 0.031, 0.052, 0.028, 0.17, 0.137, 0.019, 0.019, 0.035, 0.027, 0.035, 0.049, 0.09, 0.02, 0.027, 0.02, 0.034, 0.022, 0.033, 0.034, 0.03, 0.042, 0.066, 0.042, 0.041, 0.055, 0.081, 0.056, 0.058], + "probability_H": [0.021, 0.019, 0.033, 0.025, 0.025, 0.042, 0.03, 0.06, 0.029, 0.024, 0.021, 0.029, 0.028, 0.028, 0.03, 0.012, 0.016, 0.031, 0.015, 0.018, 0.018, 0.018, 0.013, 0.01, 0.01, 0.017, 0.062, 0.011, 0.087, 0.035, 0.016, 0.056, 0.023, 0.032, 0.04, 0.097, 0.054, 0.036, 0.038, 0.036, 0.028, 0.014, 0.1, 0.023, 0.019, 0.07, 0.018, 0.02, 0.009, 0.012, 0.035, 0.01, 0.056, 0.013, 0.01, 0.03, 0.025, 0.03, 0.016, 0.009, 0.029, 0.008, 0.026, 0.041, 0.025, 0.019, 0.021, 0.008, 0.043, 0.047, 0.008, 0.01, 0.024, 0.03, 0.06, 0.05, 0.048, 0.032, 0.032, 0.023, 0.025, 0.027, 0.034, 0.029, 0.025, 0.023, 0.034, 0.027, 0.019, 0.026, 0.023, 0.024, 0.026, 0.035, 0.024, 0.01, 0.012, 0.011, 0.019, 0.037, 0.03, 0.036, 0.048, 0.132, 0.038, 0.045, 0.087, 0.038, 0.022, 0.012, 0.007, 0.037, 0.051, 0.029, 0.008, 0.093, 0.025, 0.022, 0.037, 0.01, 0.02, 0.029, 0.018, 0.03, 0.036, 0.023, 0.009, 0.031, 0.028, 0.045, 0.013, 0.034, 0.032, 0.01, 0.015, 0.025, 0.042, 0.007, 0.031, 0.027, 0.041, 0.017, 0.027, 0.021, 0.021, 0.021, 0.017, 0.01, 0.021, 0.009, 0.04, 0.039, 0.042, 0.009, 0.033, 0.032, 0.011, 0.008, 0.008, 0.015, 0.007, 0.006, 0.008, 0.023, 0.008, 0.007, 0.008, 0.014, 0.036, 0.024, 0.011, 0.034, 0.025, 0.02, 0.028, 0.032, 0.021, 0.026, 0.06, 0.03, 0.014, 0.019, 0.035, 0.033, 0.011, 0.028, 0.026, 0.011, 0.012, 0.03, 0.022, 0.023, 0.027, 0.013, 0.025, 0.022, 0.019, 0.02, 0.022, 0.024, 0.013, 0.019, 0.02, 0.014, 0.019, 0.018, 0.013, 0.016, 0.028, 0.02, 0.016, 0.028, 0.021, 0.02, 0.049, 0.019, 0.025, 0.02, 0.022, 0.034, 0.035, 0.025, 0.017, 0.031, 0.028, 0.023, 0.014, 0.032, 0.023, 0.026, 0.012, 0.021, 0.03, 0.079, 0.022, 0.021, 0.03, 0.034, 0.017, 0.024, 0.024, 0.023, 0.023, 0.017, 0.077, 0.026, 0.022, 0.013, 0.012, 0.011, 0.031, 0.025, 0.011, 0.01, 0.024, 0.032, 0.026, 0.036, 0.024, 0.02, 0.024, 0.018, 0.02, 0.02, 0.076, 0.018, 0.022, 0.008, 0.02, 0.026, 0.023, 0.028, 0.01, 0.016, 0.027, 0.032, 0.01, 0.009, 0.01, 0.013, 0.007, 0.006, 0.009, 0.006, 0.168, 0.042, 0.007, 0.005, 0.008, 0.023, 0.006, 0.005, 0.015, 0.019, 0.005, 0.005, 0.04, 0.053, 0.004, 0.016, 0.036, 0.266, 0.012, 0.05, 0.018, 0.012, 0.021, 0.013, 0.004, 0.046, 0.017, 0.013, 0.02, 0.018, 0.021, 0.021, 0.009, 0.016, 0.029, 0.033, 0.019, 0.02, 0.01, 0.014, 0.026, 0.017, 0.038, 0.009, 0.027, 0.032, 0.007, 0.03, 0.012, 0.007, 0.043, 0.016, 0.005, 0.005, 0.058, 0.005, 0.005, 0.01, 0.005, 0.017, 0.161, 0.011, 0.007, 0.01, 0.021, 0.016, 0.012, 0.021, 0.133, 0.016, 0.006, 0.019, 0.023, 0.014, 0.008, 0.024, 0.007, 0.025, 0.01, 0.056, 0.065, 0.005, 0.013, 0.011, 0.014, 0.018, 0.023, 0.005, 0.021, 0.006, 0.025, 0.025, 0.038, 0.02, 0.007, 0.333, 0.134, 0.031, 0.013, 0.019, 0.04, 0.015, 0.021, 0.019, 0.01, 0.055, 0.015, 0.005, 0.019, 0.006, 0.019, 0.04, 0.019, 0.013, 0.017, 0.016, 0.028, 0.016, 0.023, 0.03, 0.021, 0.074, 0.027, 0.057, 0.023, 0.078, 0.009, 0.01, 0.004, 0.015, 0.047, 0.003, 0.017, 0.125, 0.022, 0.002, 0.005, 0.002, 0.013, 0.079, 0.006, 0.005, 0.015, 0.021, 0.019, 0.005, 0.032, 0.007, 0.005, 0.005, 0.033, 0.054, 0.005, 0.006, 0.065, 0.07, 0.011, 0.029, 0.007, 0.026, 0.016, 0.022, 0.023, 0.022, 0.032, 0.026, 0.019, 0.022, 0.013, 0.025, 0.016, 0.028, 0.022, 0.03, 0.016, 0.013, 0.014, 0.033, 0.024, 0.027, 0.033, 0.024, 0.016, 0.028, 0.014, 0.029, 0.016, 0.03, 0.03, 0.027, 0.029, 0.026, 0.025, 0.023, 0.024, 0.023, 0.022, 0.029], + "probability_I": [0.087, 0.11, 0.048, 0.058, 0.065, 0.046, 0.036, 0.055, 0.025, 0.079, 0.076, 0.021, 0.023, 0.046, 0.019, 0.194, 0.02, 0.021, 0.035, 0.029, 0.019, 0.084, 0.042, 0.21, 0.24, 0.028, 0.015, 0.122, 0.072, 0.018, 0.115, 0.024, 0.018, 0.016, 0.055, 0.042, 0.036, 0.058, 0.041, 0.059, 0.015, 0.073, 0.028, 0.013, 0.033, 0.037, 0.014, 0.011, 0.24, 0.079, 0.023, 0.149, 0.019, 0.096, 0.04, 0.019, 0.035, 0.015, 0.105, 0.175, 0.123, 0.21, 0.027, 0.01, 0.031, 0.013, 0.081, 0.22, 0.011, 0.02, 0.235, 0.052, 0.069, 0.012, 0.011, 0.021, 0.019, 0.028, 0.08, 0.042, 0.021, 0.016, 0.019, 0.024, 0.034, 0.076, 0.031, 0.037, 0.112, 0.023, 0.077, 0.066, 0.014, 0.014, 0.041, 0.208, 0.083, 0.093, 0.036, 0.012, 0.01, 0.01, 0.023, 0.033, 0.011, 0.022, 0.059, 0.004, 0.01, 0.175, 0.125, 0.02, 0.014, 0.038, 0.05, 0.013, 0.021, 0.012, 0.039, 0.138, 0.016, 0.015, 0.057, 0.059, 0.011, 0.155, 0.205, 0.03, 0.013, 0.055, 0.07, 0.016, 0.057, 0.062, 0.152, 0.011, 0.03, 0.145, 0.019, 0.018, 0.028, 0.042, 0.014, 0.02, 0.011, 0.015, 0.03, 0.171, 0.015, 0.15, 0.017, 0.013, 0.079, 0.105, 0.015, 0.015, 0.062, 0.047, 0.056, 0.009, 0.23, 0.428, 0.042, 0.017, 0.113, 0.08, 0.043, 0.009, 0.066, 0.012, 0.1, 0.011, 0.015, 0.063, 0.016, 0.016, 0.026, 0.023, 0.026, 0.028, 0.083, 0.132, 0.017, 0.034, 0.104, 0.028, 0.021, 0.129, 0.107, 0.024, 0.069, 0.029, 0.083, 0.097, 0.027, 0.027, 0.087, 0.08, 0.072, 0.042, 0.131, 0.032, 0.105, 0.089, 0.017, 0.06, 0.094, 0.099, 0.012, 0.124, 0.056, 0.014, 0.063, 0.065, 0.013, 0.108, 0.03, 0.065, 0.081, 0.028, 0.014, 0.023, 0.157, 0.044, 0.016, 0.091, 0.158, 0.032, 0.018, 0.1, 0.242, 0.02, 0.018, 0.101, 0.087, 0.015, 0.02, 0.026, 0.073, 0.017, 0.016, 0.034, 0.022, 0.026, 0.016, 0.02, 0.058, 0.015, 0.096, 0.112, 0.013, 0.084, 0.075, 0.181, 0.015, 0.039, 0.03, 0.029, 0.022, 0.018, 0.017, 0.032, 0.018, 0.021, 0.014, 0.024, 0.022, 0.088, 0.013, 0.023, 0.054, 0.02, 0.254, 0.146, 0.027, 0.042, 0.104, 0.137, 0.076, 0.089, 0.162, 0.136, 0.013, 0.011, 0.05, 0.01, 0.017, 0.046, 0.023, 0.057, 0.042, 0.153, 0.022, 0.032, 0.102, 0.119, 0.043, 0.026, 0.079, 0.073, 0.02, 0.007, 0.007, 0.009, 0.183, 0.036, 0.009, 0.013, 0.095, 0.023, 0.008, 0.008, 0.306, 0.022, 0.013, 0.115, 0.128, 0.01, 0.009, 0.011, 0.023, 0.031, 0.123, 0.018, 0.046, 0.011, 0.015, 0.143, 0.015, 0.007, 0.04, 0.012, 0.039, 0.089, 0.009, 0.012, 0.122, 0.351, 0.007, 0.003, 0.062, 0.044, 0.003, 0.079, 0.028, 0.009, 0.133, 0.064, 0.07, 0.054, 0.155, 0.023, 0.008, 0.066, 0.044, 0.043, 0.009, 0.008, 0.119, 0.036, 0.228, 0.007, 0.006, 0.063, 0.036, 0.459, 0.007, 0.008, 0.006, 0.025, 0.08, 0.205, 0.124, 0.184, 0.02, 0.139, 0.036, 0.028, 0.218, 0.009, 0.012, 0.009, 0.007, 0.011, 0.137, 0.024, 0.01, 0.006, 0.012, 0.007, 0.019, 0.023, 0.054, 0.043, 0.006, 0.006, 0.025, 0.064, 0.011, 0.014, 0.012, 0.043, 0.016, 0.017, 0.091, 0.012, 0.009, 0.016, 0.031, 0.032, 0.166, 0.025, 0.007, 0.012, 0.044, 0.004, 0.038, 0.008, 0.121, 0.006, 0.254, 0.003, 0.047, 0.012, 0.072, 0.019, 0.049, 0.061, 0.026, 0.13, 0.016, 0.163, 0.122, 0.129, 0.047, 0.022, 0.178, 0.109, 0.009, 0.008, 0.033, 0.01, 0.141, 0.022, 0.041, 0.042, 0.013, 0.013, 0.018, 0.018, 0.129, 0.016, 0.099, 0.018, 0.072, 0.03, 0.074, 0.019, 0.089, 0.127, 0.104, 0.027, 0.029, 0.019, 0.019, 0.02, 0.152, 0.057, 0.125, 0.025, 0.126, 0.027, 0.029, 0.031, 0.029, 0.036, 0.057, 0.074, 0.043, 0.046, 0.064, 0.056], + "probability_K": [0.062, 0.046, 0.033, 0.071, 0.074, 0.084, 0.1, 0.068, 0.103, 0.052, 0.045, 0.184, 0.181, 0.09, 0.098, 0.018, 0.066, 0.053, 0.046, 0.141, 0.079, 0.024, 0.033, 0.015, 0.014, 0.043, 0.062, 0.016, 0.032, 0.074, 0.021, 0.1, 0.193, 0.084, 0.059, 0.059, 0.093, 0.051, 0.064, 0.068, 0.14, 0.025, 0.064, 0.234, 0.258, 0.025, 0.056, 0.129, 0.014, 0.014, 0.092, 0.012, 0.096, 0.022, 0.022, 0.064, 0.118, 0.074, 0.018, 0.011, 0.012, 0.011, 0.052, 0.056, 0.037, 0.102, 0.018, 0.011, 0.287, 0.071, 0.011, 0.013, 0.079, 0.233, 0.112, 0.075, 0.076, 0.088, 0.082, 0.058, 0.091, 0.109, 0.094, 0.093, 0.073, 0.033, 0.073, 0.081, 0.054, 0.081, 0.038, 0.049, 0.113, 0.087, 0.033, 0.014, 0.014, 0.013, 0.039, 0.07, 0.051, 0.079, 0.13, 0.013, 0.235, 0.124, 0.036, 0.08, 0.264, 0.04, 0.009, 0.051, 0.063, 0.045, 0.01, 0.051, 0.079, 0.12, 0.193, 0.016, 0.229, 0.084, 0.015, 0.039, 0.074, 0.033, 0.012, 0.072, 0.099, 0.079, 0.03, 0.084, 0.099, 0.015, 0.024, 0.124, 0.143, 0.013, 0.113, 0.15, 0.09, 0.058, 0.104, 0.1, 0.069, 0.163, 0.057, 0.015, 0.054, 0.011, 0.12, 0.087, 0.037, 0.01, 0.068, 0.096, 0.01, 0.016, 0.012, 0.05, 0.01, 0.009, 0.013, 0.108, 0.013, 0.011, 0.01, 0.044, 0.12, 0.091, 0.014, 0.069, 0.058, 0.048, 0.097, 0.092, 0.084, 0.095, 0.07, 0.085, 0.022, 0.033, 0.111, 0.07, 0.018, 0.143, 0.145, 0.016, 0.023, 0.109, 0.042, 0.063, 0.032, 0.036, 0.076, 0.073, 0.027, 0.035, 0.046, 0.068, 0.03, 0.07, 0.04, 0.019, 0.067, 0.052, 0.027, 0.056, 0.108, 0.035, 0.078, 0.139, 0.083, 0.073, 0.123, 0.063, 0.12, 0.114, 0.052, 0.097, 0.184, 0.123, 0.024, 0.087, 0.104, 0.039, 0.021, 0.106, 0.19, 0.064, 0.024, 0.177, 0.126, 0.047, 0.183, 0.1, 0.099, 0.108, 0.083, 0.11, 0.084, 0.081, 0.101, 0.188, 0.09, 0.113, 0.112, 0.049, 0.021, 0.026, 0.063, 0.039, 0.022, 0.016, 0.09, 0.072, 0.102, 0.098, 0.092, 0.195, 0.096, 0.074, 0.09, 0.074, 0.079, 0.155, 0.093, 0.017, 0.049, 0.053, 0.079, 0.069, 0.017, 0.069, 0.051, 0.039, 0.01, 0.044, 0.02, 0.008, 0.007, 0.007, 0.027, 0.016, 0.03, 0.033, 0.022, 0.008, 0.021, 0.032, 0.007, 0.007, 0.035, 0.01, 0.006, 0.007, 0.031, 0.022, 0.006, 0.01, 0.159, 0.043, 0.045, 0.066, 0.03, 0.022, 0.134, 0.368, 0.006, 0.054, 0.094, 0.032, 0.008, 0.071, 0.066, 0.028, 0.019, 0.079, 0.086, 0.14, 0.062, 0.07, 0.028, 0.051, 0.043, 0.062, 0.054, 0.024, 0.118, 0.202, 0.009, 0.13, 0.023, 0.007, 0.089, 0.041, 0.006, 0.006, 0.284, 0.016, 0.007, 0.007, 0.027, 0.028, 0.032, 0.029, 0.007, 0.011, 0.013, 0.021, 0.008, 0.05, 0.057, 0.081, 0.008, 0.092, 0.159, 0.037, 0.011, 0.094, 0.008, 0.069, 0.042, 0.039, 0.058, 0.006, 0.079, 0.344, 0.06, 0.027, 0.066, 0.007, 0.008, 0.006, 0.021, 0.009, 0.019, 0.036, 0.007, 0.026, 0.048, 0.032, 0.079, 0.131, 0.022, 0.007, 0.079, 0.064, 0.024, 0.052, 0.124, 0.006, 0.13, 0.008, 0.036, 0.03, 0.01, 0.034, 0.093, 0.099, 0.068, 0.149, 0.096, 0.109, 0.091, 0.1, 0.102, 0.055, 0.078, 0.01, 0.024, 0.017, 0.002, 0.027, 0.039, 0.007, 0.086, 0.032, 0.049, 0.005, 0.007, 0.005, 0.128, 0.071, 0.007, 0.011, 0.072, 0.026, 0.033, 0.007, 0.233, 0.031, 0.007, 0.007, 0.017, 0.075, 0.007, 0.007, 0.065, 0.11, 0.008, 0.091, 0.009, 0.149, 0.051, 0.048, 0.124, 0.102, 0.084, 0.119, 0.05, 0.081, 0.03, 0.172, 0.043, 0.112, 0.053, 0.087, 0.033, 0.022, 0.02, 0.112, 0.095, 0.142, 0.154, 0.087, 0.023, 0.088, 0.021, 0.166, 0.026, 0.122, 0.107, 0.132, 0.093, 0.085, 0.081, 0.073, 0.077, 0.067, 0.063, 0.067], + "probability_L": [0.112, 0.19, 0.083, 0.086, 0.081, 0.065, 0.051, 0.076, 0.04, 0.123, 0.11, 0.035, 0.037, 0.127, 0.044, 0.152, 0.029, 0.031, 0.044, 0.047, 0.033, 0.33, 0.063, 0.202, 0.219, 0.038, 0.028, 0.304, 0.27, 0.068, 0.232, 0.05, 0.042, 0.043, 0.101, 0.09, 0.09, 0.087, 0.124, 0.119, 0.027, 0.298, 0.036, 0.031, 0.032, 0.061, 0.022, 0.019, 0.136, 0.077, 0.057, 0.249, 0.029, 0.228, 0.085, 0.04, 0.04, 0.046, 0.1, 0.228, 0.107, 0.192, 0.036, 0.016, 0.064, 0.019, 0.219, 0.107, 0.019, 0.03, 0.12, 0.437, 0.062, 0.022, 0.018, 0.032, 0.042, 0.04, 0.077, 0.058, 0.04, 0.024, 0.039, 0.04, 0.052, 0.128, 0.045, 0.068, 0.143, 0.041, 0.146, 0.21, 0.031, 0.028, 0.078, 0.292, 0.165, 0.143, 0.086, 0.019, 0.018, 0.019, 0.059, 0.049, 0.028, 0.043, 0.156, 0.008, 0.017, 0.218, 0.276, 0.066, 0.038, 0.078, 0.179, 0.056, 0.047, 0.027, 0.025, 0.313, 0.044, 0.036, 0.16, 0.081, 0.02, 0.161, 0.106, 0.051, 0.029, 0.042, 0.065, 0.033, 0.08, 0.394, 0.167, 0.029, 0.047, 0.354, 0.057, 0.035, 0.064, 0.054, 0.031, 0.034, 0.02, 0.028, 0.028, 0.114, 0.024, 0.24, 0.047, 0.027, 0.167, 0.195, 0.042, 0.068, 0.218, 0.049, 0.248, 0.017, 0.087, 0.11, 0.084, 0.051, 0.151, 0.133, 0.12, 0.016, 0.056, 0.018, 0.141, 0.022, 0.038, 0.252, 0.027, 0.03, 0.034, 0.043, 0.035, 0.038, 0.145, 0.132, 0.039, 0.067, 0.139, 0.049, 0.042, 0.232, 0.223, 0.036, 0.104, 0.037, 0.114, 0.21, 0.039, 0.038, 0.127, 0.112, 0.18, 0.087, 0.182, 0.058, 0.124, 0.161, 0.037, 0.097, 0.322, 0.15, 0.024, 0.179, 0.223, 0.028, 0.096, 0.224, 0.026, 0.139, 0.063, 0.089, 0.124, 0.046, 0.029, 0.03, 0.156, 0.053, 0.026, 0.108, 0.238, 0.042, 0.029, 0.099, 0.127, 0.031, 0.036, 0.129, 0.058, 0.027, 0.039, 0.062, 0.156, 0.028, 0.025, 0.043, 0.036, 0.028, 0.023, 0.037, 0.05, 0.016, 0.198, 0.364, 0.037, 0.192, 0.366, 0.352, 0.031, 0.087, 0.085, 0.073, 0.055, 0.051, 0.041, 0.066, 0.034, 0.036, 0.026, 0.047, 0.044, 0.381, 0.023, 0.023, 0.081, 0.025, 0.283, 0.117, 0.032, 0.07, 0.146, 0.195, 0.13, 0.271, 0.297, 0.171, 0.017, 0.015, 0.04, 0.015, 0.02, 0.042, 0.029, 0.04, 0.142, 0.458, 0.034, 0.055, 0.121, 0.306, 0.161, 0.18, 0.606, 0.191, 0.08, 0.015, 0.016, 0.018, 0.073, 0.179, 0.018, 0.027, 0.39, 0.052, 0.016, 0.015, 0.235, 0.055, 0.026, 0.105, 0.227, 0.019, 0.024, 0.029, 0.04, 0.092, 0.107, 0.033, 0.092, 0.018, 0.029, 0.327, 0.066, 0.016, 0.491, 0.016, 0.101, 0.462, 0.024, 0.036, 0.057, 0.175, 0.045, 0.006, 0.056, 0.537, 0.005, 0.442, 0.037, 0.013, 0.077, 0.07, 0.166, 0.14, 0.272, 0.04, 0.016, 0.056, 0.084, 0.081, 0.013, 0.011, 0.087, 0.046, 0.259, 0.033, 0.01, 0.069, 0.069, 0.145, 0.015, 0.012, 0.01, 0.022, 0.071, 0.133, 0.177, 0.136, 0.066, 0.149, 0.068, 0.058, 0.187, 0.061, 0.045, 0.027, 0.013, 0.026, 0.123, 0.03, 0.015, 0.012, 0.018, 0.074, 0.029, 0.046, 0.044, 0.043, 0.021, 0.009, 0.033, 0.324, 0.022, 0.032, 0.02, 0.035, 0.026, 0.036, 0.115, 0.018, 0.023, 0.041, 0.059, 0.112, 0.264, 0.026, 0.015, 0.026, 0.065, 0.005, 0.024, 0.014, 0.042, 0.008, 0.215, 0.004, 0.043, 0.024, 0.366, 0.024, 0.161, 0.188, 0.03, 0.256, 0.038, 0.281, 0.115, 0.426, 0.042, 0.056, 0.436, 0.464, 0.051, 0.022, 0.061, 0.015, 0.165, 0.05, 0.154, 0.07, 0.028, 0.024, 0.031, 0.03, 0.128, 0.024, 0.235, 0.03, 0.142, 0.039, 0.142, 0.031, 0.13, 0.166, 0.276, 0.048, 0.043, 0.035, 0.033, 0.033, 0.183, 0.078, 0.214, 0.039, 0.157, 0.04, 0.054, 0.049, 0.044, 0.051, 0.07, 0.085, 0.054, 0.057, 0.085, 0.08], + "probability_M": [0.034, 0.047, 0.026, 0.034, 0.032, 0.027, 0.023, 0.031, 0.019, 0.039, 0.039, 0.016, 0.016, 0.028, 0.016, 0.038, 0.013, 0.014, 0.017, 0.027, 0.013, 0.032, 0.022, 0.028, 0.031, 0.016, 0.012, 0.062, 0.038, 0.022, 0.062, 0.017, 0.014, 0.013, 0.024, 0.021, 0.026, 0.025, 0.025, 0.055, 0.014, 0.059, 0.019, 0.011, 0.014, 0.02, 0.01, 0.009, 0.04, 0.091, 0.016, 0.046, 0.014, 0.066, 0.031, 0.022, 0.02, 0.012, 0.056, 0.03, 0.05, 0.024, 0.021, 0.008, 0.017, 0.008, 0.07, 0.037, 0.01, 0.01, 0.039, 0.067, 0.022, 0.009, 0.009, 0.012, 0.012, 0.012, 0.021, 0.02, 0.015, 0.011, 0.016, 0.02, 0.02, 0.036, 0.016, 0.026, 0.04, 0.02, 0.031, 0.053, 0.013, 0.011, 0.034, 0.042, 0.029, 0.059, 0.024, 0.009, 0.008, 0.008, 0.016, 0.017, 0.011, 0.019, 0.081, 0.003, 0.009, 0.067, 0.072, 0.037, 0.017, 0.025, 0.038, 0.017, 0.043, 0.01, 0.024, 0.084, 0.014, 0.019, 0.157, 0.036, 0.009, 0.044, 0.123, 0.015, 0.011, 0.018, 0.026, 0.013, 0.023, 0.113, 0.055, 0.011, 0.016, 0.061, 0.016, 0.014, 0.02, 0.022, 0.013, 0.012, 0.008, 0.012, 0.012, 0.034, 0.011, 0.098, 0.02, 0.013, 0.048, 0.098, 0.028, 0.016, 0.059, 0.031, 0.073, 0.008, 0.037, 0.059, 0.052, 0.015, 0.068, 0.042, 0.065, 0.008, 0.02, 0.011, 0.037, 0.01, 0.026, 0.037, 0.011, 0.011, 0.012, 0.02, 0.012, 0.014, 0.04, 0.04, 0.014, 0.035, 0.061, 0.025, 0.019, 0.069, 0.064, 0.022, 0.039, 0.02, 0.049, 0.057, 0.02, 0.02, 0.041, 0.047, 0.041, 0.028, 0.048, 0.023, 0.045, 0.039, 0.016, 0.026, 0.044, 0.046, 0.01, 0.033, 0.04, 0.014, 0.028, 0.039, 0.012, 0.049, 0.021, 0.027, 0.035, 0.023, 0.015, 0.013, 0.059, 0.025, 0.011, 0.039, 0.058, 0.033, 0.015, 0.033, 0.043, 0.015, 0.015, 0.07, 0.025, 0.013, 0.016, 0.022, 0.043, 0.013, 0.013, 0.017, 0.014, 0.012, 0.012, 0.02, 0.024, 0.007, 0.056, 0.064, 0.011, 0.046, 0.125, 0.076, 0.012, 0.026, 0.041, 0.022, 0.018, 0.014, 0.013, 0.017, 0.014, 0.014, 0.012, 0.015, 0.015, 0.096, 0.009, 0.019, 0.021, 0.011, 0.058, 0.035, 0.022, 0.044, 0.059, 0.07, 0.028, 0.094, 0.092, 0.044, 0.007, 0.007, 0.022, 0.006, 0.009, 0.019, 0.013, 0.019, 0.032, 0.084, 0.019, 0.023, 0.038, 0.126, 0.038, 0.028, 0.107, 0.052, 0.025, 0.006, 0.006, 0.007, 0.024, 0.082, 0.008, 0.01, 0.028, 0.015, 0.007, 0.005, 0.026, 0.018, 0.01, 0.02, 0.035, 0.007, 0.011, 0.007, 0.012, 0.02, 0.023, 0.01, 0.044, 0.007, 0.016, 0.039, 0.022, 0.008, 0.211, 0.006, 0.016, 0.052, 0.014, 0.074, 0.019, 0.045, 0.019, 0.003, 0.02, 0.108, 0.002, 0.079, 0.018, 0.008, 0.016, 0.014, 0.056, 0.039, 0.051, 0.027, 0.007, 0.038, 0.019, 0.034, 0.007, 0.006, 0.04, 0.017, 0.021, 0.019, 0.005, 0.026, 0.014, 0.019, 0.006, 0.006, 0.005, 0.022, 0.047, 0.028, 0.081, 0.053, 0.024, 0.032, 0.021, 0.019, 0.114, 0.023, 0.037, 0.03, 0.005, 0.008, 0.018, 0.012, 0.006, 0.006, 0.008, 0.021, 0.011, 0.012, 0.02, 0.013, 0.009, 0.004, 0.019, 0.037, 0.007, 0.013, 0.008, 0.014, 0.01, 0.014, 0.032, 0.012, 0.01, 0.021, 0.017, 0.035, 0.1, 0.013, 0.004, 0.007, 0.024, 0.002, 0.012, 0.007, 0.068, 0.003, 0.025, 0.002, 0.075, 0.01, 0.06, 0.01, 0.1, 0.145, 0.034, 0.173, 0.016, 0.052, 0.047, 0.052, 0.017, 0.049, 0.063, 0.033, 0.014, 0.01, 0.019, 0.007, 0.035, 0.011, 0.028, 0.021, 0.012, 0.013, 0.019, 0.02, 0.036, 0.011, 0.084, 0.015, 0.052, 0.018, 0.042, 0.016, 0.043, 0.047, 0.067, 0.027, 0.03, 0.017, 0.016, 0.015, 0.047, 0.038, 0.064, 0.02, 0.047, 0.018, 0.02, 0.019, 0.019, 0.022, 0.028, 0.029, 0.021, 0.02, 0.025, 0.024], + "probability_N": [0.037, 0.028, 0.026, 0.046, 0.044, 0.05, 0.07, 0.046, 0.073, 0.031, 0.031, 0.057, 0.061, 0.05, 0.079, 0.014, 0.032, 0.033, 0.028, 0.041, 0.036, 0.017, 0.02, 0.015, 0.012, 0.028, 0.322, 0.013, 0.022, 0.048, 0.015, 0.06, 0.054, 0.075, 0.041, 0.043, 0.045, 0.03, 0.045, 0.035, 0.056, 0.018, 0.036, 0.057, 0.04, 0.021, 0.036, 0.064, 0.021, 0.01, 0.032, 0.011, 0.05, 0.031, 0.029, 0.061, 0.051, 0.053, 0.02, 0.01, 0.019, 0.01, 0.106, 0.058, 0.023, 0.041, 0.038, 0.017, 0.044, 0.04, 0.01, 0.012, 0.048, 0.075, 0.096, 0.056, 0.042, 0.08, 0.053, 0.025, 0.041, 0.123, 0.04, 0.045, 0.044, 0.027, 0.061, 0.043, 0.029, 0.056, 0.028, 0.05, 0.062, 0.11, 0.054, 0.012, 0.032, 0.048, 0.033, 0.102, 0.051, 0.043, 0.05, 0.01, 0.03, 0.055, 0.022, 0.009, 0.052, 0.016, 0.008, 0.095, 0.044, 0.033, 0.008, 0.064, 0.052, 0.063, 0.062, 0.015, 0.048, 0.064, 0.017, 0.025, 0.043, 0.018, 0.012, 0.073, 0.043, 0.04, 0.028, 0.066, 0.048, 0.009, 0.015, 0.057, 0.069, 0.009, 0.045, 0.056, 0.049, 0.034, 0.061, 0.075, 0.068, 0.051, 0.034, 0.013, 0.136, 0.009, 0.045, 0.052, 0.017, 0.013, 0.088, 0.059, 0.01, 0.018, 0.04, 0.149, 0.034, 0.009, 0.019, 0.048, 0.011, 0.013, 0.008, 0.048, 0.035, 0.07, 0.012, 0.119, 0.039, 0.025, 0.092, 0.121, 0.039, 0.065, 0.078, 0.038, 0.014, 0.019, 0.046, 0.088, 0.018, 0.064, 0.052, 0.024, 0.021, 0.062, 0.032, 0.073, 0.031, 0.025, 0.076, 0.049, 0.022, 0.034, 0.036, 0.057, 0.024, 0.08, 0.033, 0.016, 0.043, 0.032, 0.023, 0.028, 0.043, 0.021, 0.023, 0.048, 0.054, 0.027, 0.112, 0.037, 0.04, 0.035, 0.036, 0.053, 0.055, 0.045, 0.015, 0.056, 0.11, 0.018, 0.013, 0.053, 0.056, 0.032, 0.012, 0.054, 0.051, 0.025, 0.039, 0.053, 0.06, 0.043, 0.044, 0.056, 0.09, 0.073, 0.064, 0.057, 0.067, 0.052, 0.07, 0.046, 0.014, 0.012, 0.047, 0.023, 0.011, 0.013, 0.06, 0.04, 0.054, 0.126, 0.06, 0.053, 0.051, 0.059, 0.055, 0.071, 0.07, 0.051, 0.041, 0.013, 0.064, 0.06, 0.045, 0.067, 0.019, 0.015, 0.043, 0.101, 0.027, 0.026, 0.061, 0.023, 0.014, 0.018, 0.016, 0.014, 0.025, 0.024, 0.031, 0.011, 0.018, 0.117, 0.012, 0.007, 0.033, 0.049, 0.008, 0.006, 0.012, 0.043, 0.005, 0.009, 0.066, 0.228, 0.019, 0.043, 0.007, 0.008, 0.038, 0.026, 0.005, 0.016, 0.041, 0.023, 0.01, 0.041, 0.046, 0.021, 0.011, 0.034, 0.112, 0.067, 0.043, 0.038, 0.017, 0.055, 0.021, 0.044, 0.04, 0.007, 0.067, 0.105, 0.007, 0.033, 0.008, 0.007, 0.092, 0.041, 0.005, 0.006, 0.102, 0.011, 0.01, 0.007, 0.005, 0.006, 0.037, 0.052, 0.011, 0.013, 0.018, 0.056, 0.033, 0.035, 0.019, 0.02, 0.019, 0.042, 0.036, 0.039, 0.009, 0.038, 0.006, 0.104, 0.047, 0.012, 0.03, 0.005, 0.021, 0.021, 0.069, 0.02, 0.049, 0.005, 0.023, 0.008, 0.223, 0.026, 0.019, 0.027, 0.012, 0.127, 0.039, 0.128, 0.022, 0.06, 0.04, 0.006, 0.03, 0.139, 0.016, 0.063, 0.027, 0.005, 0.131, 0.007, 0.027, 0.024, 0.007, 0.028, 0.076, 0.049, 0.153, 0.035, 0.053, 0.114, 0.024, 0.086, 0.06, 0.048, 0.042, 0.014, 0.013, 0.016, 0.003, 0.042, 0.03, 0.006, 0.026, 0.019, 0.087, 0.004, 0.005, 0.005, 0.035, 0.127, 0.006, 0.008, 0.033, 0.047, 0.042, 0.008, 0.029, 0.007, 0.012, 0.006, 0.013, 0.066, 0.006, 0.006, 0.031, 0.124, 0.007, 0.064, 0.008, 0.034, 0.024, 0.037, 0.055, 0.059, 0.049, 0.052, 0.028, 0.055, 0.018, 0.057, 0.029, 0.058, 0.033, 0.055, 0.029, 0.019, 0.019, 0.052, 0.041, 0.056, 0.082, 0.05, 0.018, 0.05, 0.017, 0.06, 0.02, 0.055, 0.056, 0.044, 0.066, 0.061, 0.046, 0.043, 0.055, 0.051, 0.044, 0.047], + "probability_P": [0.02, 0.017, 0.013, 0.022, 0.021, 0.022, 0.037, 0.021, 0.026, 0.019, 0.018, 0.024, 0.024, 0.023, 0.041, 0.137, 0.458, 0.015, 0.429, 0.098, 0.19, 0.013, 0.443, 0.016, 0.009, 0.014, 0.017, 0.011, 0.046, 0.026, 0.013, 0.042, 0.052, 0.054, 0.094, 0.059, 0.03, 0.016, 0.017, 0.016, 0.014, 0.01, 0.013, 0.015, 0.016, 0.01, 0.02, 0.213, 0.019, 0.008, 0.016, 0.009, 0.015, 0.046, 0.02, 0.088, 0.025, 0.255, 0.008, 0.008, 0.01, 0.011, 0.012, 0.012, 0.338, 0.016, 0.008, 0.007, 0.015, 0.017, 0.008, 0.008, 0.013, 0.016, 0.026, 0.028, 0.028, 0.028, 0.024, 0.024, 0.059, 0.03, 0.039, 0.104, 0.175, 0.018, 0.034, 0.124, 0.017, 0.05, 0.03, 0.025, 0.031, 0.022, 0.015, 0.013, 0.013, 0.014, 0.052, 0.043, 0.023, 0.084, 0.019, 0.007, 0.011, 0.015, 0.008, 0.004, 0.012, 0.015, 0.006, 0.012, 0.294, 0.027, 0.007, 0.011, 0.077, 0.036, 0.012, 0.01, 0.016, 0.021, 0.007, 0.011, 0.221, 0.01, 0.007, 0.012, 0.014, 0.011, 0.008, 0.012, 0.013, 0.007, 0.007, 0.025, 0.011, 0.007, 0.019, 0.018, 0.016, 0.034, 0.028, 0.029, 0.019, 0.02, 0.199, 0.01, 0.022, 0.044, 0.022, 0.055, 0.017, 0.007, 0.015, 0.017, 0.007, 0.013, 0.007, 0.011, 0.007, 0.007, 0.007, 0.011, 0.007, 0.007, 0.007, 0.01, 0.013, 0.038, 0.028, 0.02, 0.023, 0.012, 0.014, 0.02, 0.149, 0.022, 0.022, 0.158, 0.01, 0.017, 0.019, 0.014, 0.011, 0.017, 0.015, 0.009, 0.01, 0.02, 0.022, 0.029, 0.014, 0.015, 0.026, 0.173, 0.012, 0.02, 0.061, 0.047, 0.021, 0.058, 0.029, 0.021, 0.325, 0.018, 0.014, 0.034, 0.271, 0.014, 0.06, 0.064, 0.027, 0.032, 0.063, 0.027, 0.029, 0.026, 0.013, 0.096, 0.02, 0.021, 0.01, 0.014, 0.019, 0.011, 0.007, 0.012, 0.021, 0.012, 0.008, 0.012, 0.015, 0.01, 0.015, 0.017, 0.018, 0.024, 0.017, 0.039, 0.034, 0.047, 0.058, 0.033, 0.037, 0.052, 0.053, 0.016, 0.012, 0.014, 0.016, 0.015, 0.011, 0.009, 0.016, 0.015, 0.018, 0.018, 0.031, 0.038, 0.03, 0.067, 0.035, 0.04, 0.051, 0.034, 0.061, 0.016, 0.033, 0.03, 0.019, 0.009, 0.006, 0.007, 0.012, 0.009, 0.006, 0.008, 0.007, 0.006, 0.005, 0.006, 0.012, 0.006, 0.01, 0.008, 0.014, 0.015, 0.016, 0.014, 0.008, 0.005, 0.009, 0.005, 0.005, 0.005, 0.006, 0.006, 0.005, 0.006, 0.008, 0.01, 0.61, 0.012, 0.006, 0.005, 0.011, 0.016, 0.005, 0.007, 0.007, 0.007, 0.015, 0.011, 0.013, 0.006, 0.008, 0.131, 0.03, 0.027, 0.024, 0.159, 0.245, 0.019, 0.022, 0.018, 0.012, 0.008, 0.066, 0.011, 0.01, 0.329, 0.006, 0.006, 0.02, 0.009, 0.006, 0.005, 0.008, 0.005, 0.005, 0.005, 0.003, 0.005, 0.007, 0.533, 0.233, 0.129, 0.188, 0.021, 0.021, 0.244, 0.012, 0.011, 0.042, 0.073, 0.03, 0.065, 0.008, 0.025, 0.032, 0.025, 0.016, 0.007, 0.03, 0.006, 0.553, 0.059, 0.008, 0.007, 0.038, 0.005, 0.006, 0.06, 0.122, 0.086, 0.025, 0.018, 0.007, 0.007, 0.007, 0.007, 0.387, 0.01, 0.005, 0.006, 0.212, 0.012, 0.534, 0.008, 0.007, 0.004, 0.007, 0.707, 0.008, 0.005, 0.01, 0.01, 0.087, 0.057, 0.038, 0.05, 0.039, 0.03, 0.035, 0.064, 0.235, 0.018, 0.017, 0.006, 0.016, 0.48, 0.002, 0.007, 0.007, 0.004, 0.254, 0.007, 0.009, 0.003, 0.217, 0.004, 0.008, 0.055, 0.005, 0.005, 0.008, 0.012, 0.008, 0.005, 0.014, 0.005, 0.01, 0.006, 0.027, 0.008, 0.005, 0.005, 0.012, 0.008, 0.005, 0.014, 0.007, 0.012, 0.214, 0.08, 0.096, 0.039, 0.038, 0.064, 0.04, 0.201, 0.033, 0.029, 0.048, 0.029, 0.034, 0.023, 0.023, 0.014, 0.018, 0.03, 0.224, 0.042, 0.03, 0.159, 0.015, 0.029, 0.014, 0.021, 0.017, 0.022, 0.054, 0.02, 0.028, 0.028, 0.025, 0.024, 0.028, 0.03, 0.031, 0.03], + "probability_Q": [0.04, 0.034, 0.027, 0.051, 0.051, 0.058, 0.065, 0.05, 0.07, 0.036, 0.032, 0.072, 0.068, 0.056, 0.062, 0.015, 0.038, 0.044, 0.032, 0.045, 0.043, 0.015, 0.023, 0.012, 0.012, 0.031, 0.046, 0.013, 0.02, 0.155, 0.019, 0.057, 0.069, 0.062, 0.047, 0.045, 0.073, 0.038, 0.062, 0.069, 0.083, 0.018, 0.052, 0.095, 0.085, 0.02, 0.036, 0.047, 0.012, 0.012, 0.053, 0.013, 0.071, 0.024, 0.017, 0.066, 0.099, 0.046, 0.021, 0.01, 0.014, 0.009, 0.035, 0.04, 0.029, 0.064, 0.017, 0.01, 0.068, 0.096, 0.011, 0.012, 0.059, 0.06, 0.102, 0.054, 0.052, 0.053, 0.037, 0.028, 0.047, 0.044, 0.049, 0.055, 0.055, 0.026, 0.049, 0.049, 0.03, 0.046, 0.025, 0.037, 0.056, 0.056, 0.027, 0.012, 0.014, 0.015, 0.036, 0.049, 0.033, 0.067, 0.068, 0.012, 0.057, 0.099, 0.14, 0.018, 0.051, 0.018, 0.01, 0.066, 0.06, 0.039, 0.009, 0.041, 0.052, 0.06, 0.058, 0.014, 0.066, 0.077, 0.046, 0.05, 0.054, 0.025, 0.028, 0.092, 0.093, 0.051, 0.027, 0.081, 0.075, 0.012, 0.019, 0.083, 0.061, 0.01, 0.067, 0.07, 0.069, 0.04, 0.073, 0.062, 0.047, 0.085, 0.041, 0.014, 0.04, 0.009, 0.088, 0.062, 0.023, 0.009, 0.089, 0.042, 0.01, 0.013, 0.013, 0.039, 0.009, 0.008, 0.014, 0.06, 0.013, 0.01, 0.009, 0.033, 0.054, 0.051, 0.012, 0.048, 0.042, 0.074, 0.056, 0.059, 0.049, 0.088, 0.059, 0.059, 0.022, 0.026, 0.081, 0.054, 0.023, 0.075, 0.063, 0.021, 0.03, 0.067, 0.035, 0.062, 0.026, 0.027, 0.072, 0.052, 0.022, 0.022, 0.048, 0.048, 0.018, 0.051, 0.031, 0.014, 0.044, 0.029, 0.018, 0.031, 0.045, 0.019, 0.032, 0.067, 0.033, 0.043, 0.054, 0.036, 0.056, 0.061, 0.031, 0.06, 0.064, 0.066, 0.018, 0.056, 0.065, 0.028, 0.016, 0.075, 0.074, 0.047, 0.017, 0.078, 0.076, 0.038, 0.059, 0.085, 0.067, 0.052, 0.044, 0.072, 0.057, 0.045, 0.097, 0.059, 0.056, 0.054, 0.052, 0.032, 0.013, 0.012, 0.115, 0.03, 0.016, 0.014, 0.072, 0.045, 0.118, 0.06, 0.054, 0.058, 0.064, 0.045, 0.062, 0.048, 0.05, 0.067, 0.054, 0.014, 0.036, 0.042, 0.062, 0.089, 0.012, 0.024, 0.036, 0.138, 0.016, 0.02, 0.02, 0.014, 0.009, 0.012, 0.019, 0.012, 0.061, 0.027, 0.017, 0.007, 0.017, 0.025, 0.017, 0.007, 0.046, 0.015, 0.006, 0.006, 0.02, 0.032, 0.006, 0.01, 0.079, 0.037, 0.056, 0.054, 0.037, 0.334, 0.103, 0.054, 0.006, 0.21, 0.104, 0.035, 0.026, 0.055, 0.076, 0.017, 0.013, 0.047, 0.051, 0.048, 0.052, 0.054, 0.023, 0.047, 0.027, 0.051, 0.059, 0.018, 0.079, 0.111, 0.008, 0.042, 0.011, 0.006, 0.103, 0.057, 0.006, 0.007, 0.057, 0.011, 0.007, 0.068, 0.011, 0.007, 0.026, 0.022, 0.009, 0.015, 0.03, 0.031, 0.014, 0.046, 0.029, 0.05, 0.009, 0.045, 0.088, 0.027, 0.011, 0.064, 0.007, 0.045, 0.028, 0.036, 0.039, 0.006, 0.029, 0.038, 0.023, 0.035, 0.061, 0.006, 0.024, 0.009, 0.032, 0.036, 0.026, 0.03, 0.01, 0.066, 0.036, 0.025, 0.03, 0.051, 0.027, 0.007, 0.032, 0.044, 0.016, 0.039, 0.058, 0.005, 0.038, 0.007, 0.04, 0.017, 0.008, 0.028, 0.045, 0.044, 0.047, 0.05, 0.056, 0.054, 0.032, 0.059, 0.054, 0.034, 0.044, 0.011, 0.027, 0.018, 0.006, 0.028, 0.022, 0.005, 0.035, 0.026, 0.053, 0.003, 0.008, 0.003, 0.124, 0.085, 0.008, 0.009, 0.051, 0.051, 0.096, 0.011, 0.058, 0.012, 0.007, 0.006, 0.014, 0.052, 0.006, 0.007, 0.186, 0.049, 0.007, 0.045, 0.008, 0.063, 0.029, 0.034, 0.06, 0.056, 0.066, 0.097, 0.028, 0.052, 0.025, 0.069, 0.038, 0.061, 0.032, 0.059, 0.026, 0.019, 0.021, 0.104, 0.049, 0.07, 0.071, 0.059, 0.02, 0.052, 0.018, 0.072, 0.022, 0.074, 0.067, 0.062, 0.067, 0.058, 0.051, 0.046, 0.049, 0.044, 0.04, 0.043], + "probability_R": [0.047, 0.036, 0.027, 0.05, 0.054, 0.071, 0.061, 0.05, 0.066, 0.043, 0.04, 0.08, 0.094, 0.095, 0.061, 0.018, 0.041, 0.035, 0.031, 0.102, 0.055, 0.02, 0.025, 0.015, 0.014, 0.031, 0.041, 0.016, 0.028, 0.05, 0.023, 0.087, 0.096, 0.057, 0.055, 0.048, 0.084, 0.047, 0.041, 0.069, 0.079, 0.03, 0.068, 0.101, 0.104, 0.019, 0.033, 0.067, 0.017, 0.014, 0.127, 0.015, 0.111, 0.023, 0.022, 0.083, 0.125, 0.075, 0.037, 0.012, 0.019, 0.011, 0.059, 0.038, 0.036, 0.049, 0.014, 0.011, 0.141, 0.049, 0.011, 0.012, 0.054, 0.07, 0.076, 0.062, 0.05, 0.05, 0.039, 0.053, 0.049, 0.077, 0.257, 0.146, 0.05, 0.03, 0.063, 0.051, 0.045, 0.068, 0.027, 0.039, 0.075, 0.057, 0.024, 0.012, 0.013, 0.016, 0.04, 0.054, 0.035, 0.039, 0.086, 0.013, 0.241, 0.173, 0.093, 0.772, 0.225, 0.022, 0.011, 0.053, 0.051, 0.027, 0.014, 0.056, 0.072, 0.097, 0.123, 0.033, 0.144, 0.064, 0.018, 0.045, 0.049, 0.05, 0.083, 0.081, 0.08, 0.041, 0.027, 0.076, 0.082, 0.015, 0.023, 0.113, 0.112, 0.011, 0.116, 0.118, 0.056, 0.035, 0.061, 0.052, 0.043, 0.074, 0.038, 0.013, 0.039, 0.012, 0.083, 0.06, 0.026, 0.012, 0.073, 0.171, 0.011, 0.013, 0.013, 0.038, 0.01, 0.009, 0.015, 0.144, 0.011, 0.012, 0.01, 0.033, 0.067, 0.161, 0.015, 0.041, 0.04, 0.035, 0.066, 0.062, 0.051, 0.062, 0.047, 0.059, 0.02, 0.049, 0.073, 0.056, 0.02, 0.089, 0.093, 0.019, 0.02, 0.122, 0.034, 0.07, 0.042, 0.043, 0.063, 0.054, 0.036, 0.038, 0.049, 0.059, 0.035, 0.063, 0.049, 0.025, 0.07, 0.051, 0.031, 0.062, 0.075, 0.046, 0.055, 0.122, 0.067, 0.092, 0.117, 0.058, 0.09, 0.075, 0.043, 0.079, 0.197, 0.083, 0.027, 0.078, 0.079, 0.036, 0.033, 0.17, 0.089, 0.059, 0.034, 0.095, 0.158, 0.094, 0.115, 0.07, 0.077, 0.254, 0.075, 0.059, 0.046, 0.053, 0.063, 0.097, 0.069, 0.197, 0.067, 0.027, 0.016, 0.017, 0.042, 0.049, 0.018, 0.017, 0.067, 0.04, 0.087, 0.054, 0.046, 0.075, 0.046, 0.04, 0.046, 0.037, 0.057, 0.078, 0.075, 0.021, 0.048, 0.058, 0.055, 0.041, 0.013, 0.094, 0.043, 0.03, 0.009, 0.02, 0.014, 0.007, 0.007, 0.007, 0.022, 0.011, 0.052, 0.02, 0.014, 0.007, 0.02, 0.028, 0.007, 0.007, 0.056, 0.013, 0.006, 0.007, 0.018, 0.034, 0.007, 0.009, 0.153, 0.055, 0.033, 0.061, 0.011, 0.039, 0.086, 0.212, 0.006, 0.277, 0.056, 0.021, 0.011, 0.117, 0.109, 0.016, 0.029, 0.045, 0.078, 0.109, 0.166, 0.047, 0.02, 0.044, 0.024, 0.03, 0.035, 0.076, 0.065, 0.107, 0.012, 0.054, 0.019, 0.008, 0.094, 0.047, 0.007, 0.007, 0.079, 0.012, 0.007, 0.011, 0.902, 0.019, 0.062, 0.019, 0.007, 0.011, 0.012, 0.052, 0.013, 0.061, 0.532, 0.071, 0.008, 0.06, 0.091, 0.024, 0.011, 0.045, 0.008, 0.057, 0.023, 0.041, 0.07, 0.007, 0.055, 0.06, 0.027, 0.022, 0.082, 0.006, 0.014, 0.006, 0.016, 0.014, 0.036, 0.021, 0.007, 0.019, 0.393, 0.04, 0.034, 0.093, 0.036, 0.007, 0.029, 0.052, 0.016, 0.037, 0.099, 0.006, 0.146, 0.008, 0.028, 0.766, 0.009, 0.022, 0.061, 0.061, 0.08, 0.074, 0.048, 0.065, 0.111, 0.052, 0.097, 0.055, 0.052, 0.011, 0.019, 0.013, 0.002, 0.017, 0.03, 0.007, 0.195, 0.591, 0.065, 0.006, 0.007, 0.005, 0.129, 0.109, 0.007, 0.009, 0.134, 0.053, 0.019, 0.007, 0.094, 0.01, 0.007, 0.007, 0.026, 0.121, 0.008, 0.007, 0.175, 0.203, 0.009, 0.105, 0.01, 0.084, 0.042, 0.032, 0.054, 0.052, 0.05, 0.064, 0.043, 0.05, 0.026, 0.074, 0.034, 0.065, 0.044, 0.062, 0.027, 0.02, 0.025, 0.091, 0.048, 0.063, 0.072, 0.053, 0.021, 0.058, 0.021, 0.094, 0.025, 0.083, 0.077, 0.225, 0.058, 0.059, 0.06, 0.055, 0.058, 0.052, 0.05, 0.055], + "probability_S": [0.064, 0.049, 0.039, 0.081, 0.07, 0.082, 0.086, 0.065, 0.097, 0.058, 0.057, 0.084, 0.079, 0.066, 0.081, 0.033, 0.045, 0.075, 0.051, 0.071, 0.076, 0.04, 0.048, 0.028, 0.031, 0.042, 0.088, 0.034, 0.034, 0.095, 0.034, 0.067, 0.08, 0.089, 0.055, 0.07, 0.066, 0.09, 0.067, 0.059, 0.07, 0.037, 0.132, 0.058, 0.055, 0.03, 0.046, 0.076, 0.027, 0.039, 0.11, 0.041, 0.068, 0.037, 0.035, 0.115, 0.065, 0.066, 0.044, 0.022, 0.058, 0.033, 0.21, 0.164, 0.051, 0.068, 0.038, 0.029, 0.048, 0.051, 0.022, 0.027, 0.079, 0.089, 0.074, 0.089, 0.066, 0.134, 0.054, 0.056, 0.146, 0.105, 0.066, 0.062, 0.076, 0.052, 0.095, 0.077, 0.045, 0.083, 0.039, 0.054, 0.082, 0.126, 0.093, 0.023, 0.099, 0.069, 0.156, 0.071, 0.055, 0.062, 0.06, 0.021, 0.061, 0.058, 0.047, 0.01, 0.084, 0.028, 0.046, 0.146, 0.078, 0.068, 0.019, 0.211, 0.146, 0.102, 0.095, 0.03, 0.069, 0.129, 0.048, 0.06, 0.081, 0.044, 0.023, 0.07, 0.07, 0.075, 0.091, 0.073, 0.06, 0.026, 0.035, 0.076, 0.075, 0.022, 0.077, 0.082, 0.081, 0.116, 0.093, 0.119, 0.077, 0.09, 0.079, 0.027, 0.06, 0.022, 0.096, 0.069, 0.032, 0.034, 0.114, 0.073, 0.033, 0.123, 0.077, 0.069, 0.058, 0.031, 0.123, 0.127, 0.048, 0.068, 0.021, 0.096, 0.081, 0.135, 0.041, 0.069, 0.177, 0.047, 0.089, 0.092, 0.075, 0.073, 0.099, 0.065, 0.035, 0.042, 0.066, 0.08, 0.057, 0.073, 0.07, 0.047, 0.051, 0.076, 0.063, 0.102, 0.063, 0.062, 0.113, 0.086, 0.051, 0.054, 0.057, 0.124, 0.045, 0.075, 0.058, 0.036, 0.059, 0.06, 0.04, 0.057, 0.058, 0.042, 0.043, 0.075, 0.049, 0.042, 0.07, 0.054, 0.071, 0.061, 0.048, 0.069, 0.059, 0.064, 0.037, 0.07, 0.082, 0.039, 0.028, 0.059, 0.066, 0.078, 0.027, 0.06, 0.057, 0.04, 0.052, 0.059, 0.108, 0.048, 0.056, 0.075, 0.085, 0.091, 0.08, 0.085, 0.077, 0.065, 0.062, 0.064, 0.034, 0.032, 0.127, 0.058, 0.027, 0.028, 0.084, 0.127, 0.059, 0.062, 0.133, 0.069, 0.064, 0.083, 0.063, 0.128, 0.063, 0.074, 0.089, 0.023, 0.229, 0.043, 0.054, 0.042, 0.02, 0.033, 0.098, 0.049, 0.074, 0.046, 0.068, 0.023, 0.022, 0.038, 0.031, 0.052, 0.122, 0.033, 0.064, 0.142, 0.275, 0.178, 0.08, 0.034, 0.187, 0.052, 0.043, 0.021, 0.046, 0.032, 0.014, 0.103, 0.063, 0.045, 0.035, 0.055, 0.023, 0.016, 0.055, 0.03, 0.013, 0.025, 0.049, 0.028, 0.017, 0.049, 0.117, 0.028, 0.027, 0.06, 0.106, 0.085, 0.08, 0.067, 0.039, 0.123, 0.041, 0.11, 0.071, 0.022, 0.092, 0.099, 0.018, 0.051, 0.017, 0.021, 0.055, 0.075, 0.018, 0.013, 0.057, 0.013, 0.151, 0.018, 0.006, 0.014, 0.064, 0.082, 0.063, 0.071, 0.06, 0.085, 0.033, 0.073, 0.026, 0.046, 0.086, 0.087, 0.063, 0.044, 0.026, 0.054, 0.019, 0.064, 0.039, 0.021, 0.047, 0.013, 0.035, 0.04, 0.029, 0.11, 0.061, 0.013, 0.069, 0.026, 0.162, 0.06, 0.049, 0.135, 0.031, 0.049, 0.034, 0.076, 0.056, 0.088, 0.03, 0.013, 0.069, 0.046, 0.036, 0.047, 0.072, 0.011, 0.033, 0.014, 0.063, 0.015, 0.017, 0.086, 0.066, 0.085, 0.098, 0.068, 0.067, 0.084, 0.043, 0.093, 0.075, 0.051, 0.083, 0.035, 0.03, 0.065, 0.004, 0.176, 0.088, 0.014, 0.071, 0.027, 0.096, 0.01, 0.017, 0.012, 0.055, 0.073, 0.014, 0.06, 0.035, 0.037, 0.059, 0.029, 0.053, 0.033, 0.033, 0.016, 0.092, 0.099, 0.016, 0.016, 0.075, 0.067, 0.017, 0.085, 0.018, 0.105, 0.052, 0.08, 0.079, 0.061, 0.079, 0.069, 0.046, 0.075, 0.045, 0.081, 0.05, 0.114, 0.06, 0.085, 0.06, 0.052, 0.047, 0.083, 0.066, 0.079, 0.077, 0.072, 0.041, 0.064, 0.039, 0.077, 0.045, 0.081, 0.089, 0.058, 0.081, 0.085, 0.082, 0.075, 0.099, 0.088, 0.078, 0.073], + "probability_T": [0.059, 0.053, 0.036, 0.065, 0.106, 0.063, 0.075, 0.06, 0.062, 0.066, 0.06, 0.06, 0.057, 0.057, 0.055, 0.042, 0.036, 0.041, 0.039, 0.081, 0.064, 0.044, 0.037, 0.034, 0.045, 0.037, 0.055, 0.063, 0.042, 0.051, 0.04, 0.049, 0.058, 0.05, 0.056, 0.058, 0.057, 0.068, 0.053, 0.073, 0.044, 0.042, 0.049, 0.04, 0.071, 0.032, 0.036, 0.04, 0.055, 0.034, 0.095, 0.058, 0.047, 0.048, 0.035, 0.071, 0.085, 0.071, 0.112, 0.032, 0.043, 0.064, 0.108, 0.048, 0.041, 0.041, 0.064, 0.034, 0.034, 0.072, 0.032, 0.041, 0.08, 0.1, 0.067, 0.052, 0.04, 0.056, 0.055, 0.035, 0.095, 0.043, 0.046, 0.046, 0.06, 0.053, 0.058, 0.058, 0.063, 0.054, 0.041, 0.047, 0.056, 0.071, 0.05, 0.036, 0.066, 0.137, 0.086, 0.053, 0.035, 0.039, 0.062, 0.024, 0.037, 0.051, 0.034, 0.01, 0.045, 0.051, 0.052, 0.122, 0.058, 0.107, 0.024, 0.129, 0.068, 0.053, 0.041, 0.034, 0.041, 0.055, 0.039, 0.054, 0.045, 0.076, 0.033, 0.055, 0.044, 0.046, 0.089, 0.053, 0.057, 0.04, 0.053, 0.047, 0.048, 0.03, 0.045, 0.051, 0.049, 0.047, 0.051, 0.098, 0.036, 0.063, 0.073, 0.037, 0.054, 0.035, 0.067, 0.044, 0.039, 0.054, 0.089, 0.05, 0.069, 0.322, 0.066, 0.032, 0.078, 0.053, 0.097, 0.061, 0.137, 0.081, 0.026, 0.028, 0.062, 0.046, 0.047, 0.037, 0.063, 0.042, 0.063, 0.054, 0.051, 0.045, 0.047, 0.049, 0.037, 0.046, 0.052, 0.055, 0.095, 0.049, 0.053, 0.048, 0.059, 0.058, 0.053, 0.062, 0.052, 0.054, 0.06, 0.059, 0.045, 0.045, 0.047, 0.054, 0.046, 0.083, 0.049, 0.032, 0.036, 0.038, 0.042, 0.049, 0.038, 0.064, 0.053, 0.046, 0.046, 0.039, 0.047, 0.045, 0.054, 0.052, 0.046, 0.052, 0.042, 0.047, 0.05, 0.093, 0.05, 0.046, 0.038, 0.045, 0.043, 0.067, 0.04, 0.044, 0.044, 0.054, 0.041, 0.04, 0.072, 0.038, 0.047, 0.041, 0.042, 0.104, 0.043, 0.054, 0.048, 0.043, 0.063, 0.038, 0.032, 0.044, 0.062, 0.06, 0.027, 0.032, 0.045, 0.053, 0.045, 0.046, 0.056, 0.045, 0.043, 0.124, 0.038, 0.089, 0.039, 0.048, 0.079, 0.042, 0.195, 0.048, 0.055, 0.035, 0.029, 0.055, 0.044, 0.064, 0.067, 0.047, 0.18, 0.027, 0.033, 0.046, 0.027, 0.021, 0.138, 0.026, 0.66, 0.528, 0.082, 0.168, 0.283, 0.044, 0.167, 0.04, 0.131, 0.061, 0.036, 0.033, 0.019, 0.045, 0.078, 0.028, 0.027, 0.033, 0.038, 0.022, 0.044, 0.034, 0.019, 0.038, 0.035, 0.02, 0.02, 0.033, 0.076, 0.053, 0.038, 0.037, 0.055, 0.041, 0.052, 0.052, 0.034, 0.252, 0.029, 0.046, 0.065, 0.04, 0.044, 0.029, 0.023, 0.067, 0.027, 0.137, 0.073, 0.024, 0.049, 0.022, 0.034, 0.009, 0.312, 0.019, 0.005, 0.021, 0.039, 0.051, 0.06, 0.053, 0.056, 0.067, 0.064, 0.053, 0.022, 0.076, 0.137, 0.147, 0.054, 0.048, 0.162, 0.15, 0.021, 0.035, 0.022, 0.07, 0.117, 0.017, 0.024, 0.028, 0.019, 0.361, 0.111, 0.022, 0.05, 0.052, 0.033, 0.081, 0.043, 0.057, 0.069, 0.031, 0.038, 0.024, 0.037, 0.058, 0.036, 0.016, 0.052, 0.034, 0.022, 0.039, 0.082, 0.014, 0.021, 0.017, 0.036, 0.012, 0.019, 0.046, 0.054, 0.047, 0.052, 0.044, 0.049, 0.057, 0.047, 0.049, 0.038, 0.033, 0.067, 0.025, 0.06, 0.052, 0.004, 0.021, 0.051, 0.008, 0.04, 0.022, 0.051, 0.008, 0.021, 0.008, 0.028, 0.047, 0.018, 0.026, 0.046, 0.07, 0.046, 0.046, 0.053, 0.064, 0.08, 0.043, 0.074, 0.112, 0.039, 0.023, 0.048, 0.047, 0.019, 0.079, 0.025, 0.067, 0.059, 0.061, 0.049, 0.046, 0.155, 0.052, 0.05, 0.05, 0.056, 0.073, 0.059, 0.077, 0.075, 0.062, 0.06, 0.148, 0.075, 0.065, 0.059, 0.057, 0.061, 0.053, 0.053, 0.065, 0.051, 0.066, 0.057, 0.071, 0.061, 0.049, 0.063, 0.065, 0.081, 0.066, 0.069, 0.067, 0.061, 0.058], + "probability_V": [0.106, 0.116, 0.055, 0.075, 0.079, 0.06, 0.048, 0.07, 0.036, 0.097, 0.091, 0.031, 0.032, 0.059, 0.03, 0.138, 0.028, 0.03, 0.044, 0.036, 0.029, 0.094, 0.049, 0.124, 0.147, 0.036, 0.022, 0.105, 0.07, 0.023, 0.11, 0.033, 0.027, 0.027, 0.049, 0.048, 0.048, 0.067, 0.044, 0.055, 0.021, 0.067, 0.037, 0.019, 0.028, 0.045, 0.021, 0.017, 0.24, 0.157, 0.03, 0.132, 0.027, 0.088, 0.051, 0.028, 0.062, 0.028, 0.197, 0.306, 0.293, 0.264, 0.034, 0.015, 0.044, 0.021, 0.093, 0.211, 0.019, 0.031, 0.254, 0.056, 0.158, 0.021, 0.02, 0.032, 0.032, 0.028, 0.101, 0.043, 0.044, 0.027, 0.027, 0.028, 0.051, 0.071, 0.038, 0.046, 0.123, 0.033, 0.063, 0.058, 0.023, 0.02, 0.05, 0.15, 0.091, 0.096, 0.066, 0.022, 0.018, 0.02, 0.044, 0.041, 0.024, 0.032, 0.062, 0.005, 0.016, 0.111, 0.112, 0.046, 0.027, 0.053, 0.051, 0.021, 0.029, 0.02, 0.035, 0.151, 0.04, 0.022, 0.064, 0.103, 0.021, 0.135, 0.14, 0.06, 0.023, 0.077, 0.148, 0.027, 0.066, 0.074, 0.222, 0.019, 0.041, 0.096, 0.025, 0.024, 0.033, 0.062, 0.027, 0.033, 0.019, 0.03, 0.075, 0.284, 0.035, 0.179, 0.039, 0.023, 0.101, 0.091, 0.029, 0.026, 0.083, 0.089, 0.063, 0.014, 0.293, 0.129, 0.063, 0.022, 0.131, 0.135, 0.05, 0.015, 0.083, 0.016, 0.116, 0.02, 0.024, 0.063, 0.023, 0.023, 0.032, 0.031, 0.031, 0.037, 0.078, 0.179, 0.031, 0.033, 0.12, 0.041, 0.03, 0.112, 0.107, 0.034, 0.065, 0.035, 0.077, 0.11, 0.037, 0.037, 0.08, 0.073, 0.075, 0.046, 0.13, 0.036, 0.11, 0.072, 0.025, 0.048, 0.077, 0.095, 0.018, 0.098, 0.06, 0.021, 0.07, 0.054, 0.018, 0.082, 0.036, 0.08, 0.064, 0.047, 0.019, 0.029, 0.18, 0.048, 0.025, 0.073, 0.123, 0.025, 0.024, 0.078, 0.202, 0.023, 0.021, 0.094, 0.066, 0.024, 0.023, 0.027, 0.064, 0.026, 0.023, 0.047, 0.031, 0.03, 0.033, 0.025, 0.071, 0.017, 0.074, 0.104, 0.017, 0.104, 0.067, 0.104, 0.02, 0.041, 0.032, 0.025, 0.026, 0.03, 0.025, 0.04, 0.026, 0.026, 0.02, 0.03, 0.038, 0.069, 0.015, 0.023, 0.046, 0.023, 0.126, 0.166, 0.035, 0.035, 0.13, 0.112, 0.085, 0.067, 0.094, 0.119, 0.022, 0.015, 0.055, 0.017, 0.021, 0.083, 0.049, 0.064, 0.077, 0.077, 0.033, 0.041, 0.084, 0.111, 0.054, 0.036, 0.061, 0.087, 0.023, 0.01, 0.011, 0.016, 0.295, 0.049, 0.017, 0.014, 0.175, 0.047, 0.015, 0.012, 0.203, 0.026, 0.018, 0.357, 0.167, 0.016, 0.015, 0.019, 0.033, 0.05, 0.127, 0.034, 0.054, 0.016, 0.026, 0.126, 0.026, 0.011, 0.043, 0.041, 0.047, 0.094, 0.015, 0.017, 0.413, 0.223, 0.011, 0.005, 0.131, 0.043, 0.003, 0.061, 0.027, 0.015, 0.221, 0.195, 0.074, 0.057, 0.148, 0.036, 0.015, 0.158, 0.146, 0.057, 0.028, 0.011, 0.189, 0.094, 0.173, 0.011, 0.01, 0.102, 0.078, 0.205, 0.012, 0.018, 0.01, 0.056, 0.087, 0.452, 0.099, 0.216, 0.036, 0.12, 0.041, 0.073, 0.145, 0.014, 0.016, 0.012, 0.013, 0.022, 0.168, 0.031, 0.02, 0.011, 0.032, 0.011, 0.067, 0.029, 0.031, 0.035, 0.01, 0.007, 0.029, 0.036, 0.026, 0.023, 0.021, 0.052, 0.024, 0.032, 0.116, 0.02, 0.02, 0.026, 0.058, 0.05, 0.102, 0.048, 0.008, 0.013, 0.05, 0.007, 0.039, 0.012, 0.086, 0.009, 0.111, 0.006, 0.024, 0.021, 0.06, 0.039, 0.04, 0.084, 0.04, 0.124, 0.035, 0.149, 0.17, 0.126, 0.094, 0.034, 0.116, 0.159, 0.015, 0.02, 0.042, 0.021, 0.11, 0.043, 0.078, 0.114, 0.031, 0.03, 0.039, 0.036, 0.154, 0.028, 0.115, 0.034, 0.076, 0.042, 0.094, 0.033, 0.091, 0.133, 0.105, 0.042, 0.041, 0.034, 0.033, 0.031, 0.156, 0.085, 0.159, 0.037, 0.172, 0.047, 0.042, 0.042, 0.041, 0.051, 0.074, 0.096, 0.061, 0.063, 0.08, 0.068], + "probability_W": [0.008, 0.009, 0.027, 0.008, 0.008, 0.024, 0.005, 0.008, 0.005, 0.009, 0.069, 0.004, 0.004, 0.006, 0.004, 0.007, 0.003, 0.003, 0.004, 0.026, 0.006, 0.06, 0.009, 0.013, 0.009, 0.008, 0.004, 0.015, 0.018, 0.008, 0.016, 0.008, 0.004, 0.004, 0.013, 0.017, 0.014, 0.018, 0.006, 0.014, 0.005, 0.089, 0.006, 0.003, 0.003, 0.008, 0.003, 0.002, 0.006, 0.037, 0.005, 0.01, 0.08, 0.007, 0.007, 0.01, 0.006, 0.004, 0.011, 0.006, 0.008, 0.005, 0.004, 0.002, 0.007, 0.003, 0.006, 0.009, 0.003, 0.002, 0.005, 0.008, 0.003, 0.002, 0.002, 0.005, 0.008, 0.003, 0.005, 0.008, 0.004, 0.005, 0.009, 0.007, 0.007, 0.019, 0.005, 0.004, 0.005, 0.004, 0.042, 0.006, 0.005, 0.004, 0.004, 0.005, 0.01, 0.016, 0.004, 0.004, 0.003, 0.002, 0.003, 0.505, 0.003, 0.006, 0.009, 0.001, 0.002, 0.006, 0.011, 0.003, 0.002, 0.003, 0.006, 0.002, 0.002, 0.002, 0.003, 0.004, 0.002, 0.005, 0.01, 0.009, 0.004, 0.007, 0.007, 0.011, 0.006, 0.005, 0.004, 0.003, 0.003, 0.009, 0.005, 0.003, 0.009, 0.072, 0.007, 0.005, 0.014, 0.014, 0.004, 0.005, 0.006, 0.002, 0.003, 0.007, 0.003, 0.008, 0.011, 0.004, 0.07, 0.013, 0.003, 0.011, 0.014, 0.004, 0.008, 0.002, 0.004, 0.004, 0.009, 0.003, 0.005, 0.004, 0.013, 0.002, 0.004, 0.002, 0.007, 0.002, 0.004, 0.005, 0.003, 0.002, 0.004, 0.003, 0.003, 0.002, 0.029, 0.007, 0.003, 0.007, 0.009, 0.005, 0.004, 0.007, 0.006, 0.005, 0.016, 0.004, 0.018, 0.013, 0.006, 0.006, 0.037, 0.029, 0.023, 0.019, 0.011, 0.017, 0.019, 0.038, 0.008, 0.079, 0.035, 0.02, 0.02, 0.032, 0.017, 0.009, 0.046, 0.019, 0.004, 0.012, 0.024, 0.007, 0.02, 0.009, 0.006, 0.006, 0.013, 0.009, 0.003, 0.019, 0.009, 0.005, 0.006, 0.011, 0.006, 0.004, 0.003, 0.007, 0.003, 0.002, 0.004, 0.007, 0.005, 0.003, 0.003, 0.006, 0.004, 0.002, 0.003, 0.002, 0.002, 0.002, 0.007, 0.008, 0.003, 0.016, 0.006, 0.005, 0.003, 0.002, 0.004, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.009, 0.002, 0.003, 0.003, 0.003, 0.006, 0.007, 0.005, 0.007, 0.003, 0.015, 0.003, 0.003, 0.007, 0.01, 0.002, 0.002, 0.003, 0.001, 0.002, 0.003, 0.004, 0.009, 0.004, 0.003, 0.002, 0.353, 0.005, 0.012, 0.039, 0.009, 0.003, 0.003, 0.002, 0.003, 0.002, 0.003, 0.046, 0.017, 0.002, 0.007, 0.003, 0.004, 0.002, 0.001, 0.003, 0.002, 0.002, 0.004, 0.013, 0.002, 0.002, 0.002, 0.003, 0.011, 0.015, 0.003, 0.057, 0.002, 0.005, 0.004, 0.002, 0.002, 0.004, 0.002, 0.01, 0.004, 0.008, 0.01, 0.004, 0.004, 0.004, 0.001, 0.003, 0.005, 0.001, 0.05, 0.022, 0.001, 0.003, 0.004, 0.023, 0.007, 0.004, 0.008, 0.002, 0.005, 0.003, 0.002, 0.002, 0.002, 0.005, 0.006, 0.012, 0.002, 0.001, 0.017, 0.011, 0.006, 0.001, 0.001, 0.001, 0.032, 0.011, 0.003, 0.02, 0.014, 0.011, 0.005, 0.185, 0.009, 0.003, 0.002, 0.008, 0.002, 0.001, 0.002, 0.015, 0.368, 0.002, 0.002, 0.004, 0.006, 0.001, 0.029, 0.008, 0.003, 0.012, 0.001, 0.255, 0.003, 0.002, 0.005, 0.003, 0.006, 0.003, 0.002, 0.005, 0.002, 0.002, 0.024, 0.005, 0.044, 0.013, 0.003, 0.019, 0.002, 0.015, 0.001, 0.002, 0.005, 0.002, 0.001, 0.005, 0.001, 0.007, 0.006, 0.005, 0.002, 0.02, 0.005, 0.003, 0.003, 0.014, 0.004, 0.008, 0.008, 0.003, 0.006, 0.006, 0.004, 0.039, 0.004, 0.013, 0.004, 0.131, 0.002, 0.009, 0.004, 0.003, 0.003, 0.003, 0.004, 0.006, 0.005, 0.012, 0.003, 0.01, 0.005, 0.007, 0.005, 0.009, 0.008, 0.008, 0.006, 0.004, 0.003, 0.003, 0.004, 0.009, 0.025, 0.008, 0.004, 0.012, 0.004, 0.005, 0.005, 0.005, 0.006, 0.008, 0.007, 0.006, 0.007, 0.008, 0.01], + "probability_Y": [0.04, 0.032, 0.27, 0.028, 0.03, 0.034, 0.021, 0.059, 0.018, 0.079, 0.035, 0.016, 0.016, 0.023, 0.017, 0.025, 0.012, 0.023, 0.014, 0.016, 0.015, 0.044, 0.018, 0.031, 0.024, 0.016, 0.018, 0.03, 0.035, 0.013, 0.07, 0.023, 0.013, 0.013, 0.035, 0.032, 0.018, 0.057, 0.032, 0.025, 0.019, 0.033, 0.051, 0.011, 0.011, 0.433, 0.011, 0.011, 0.031, 0.096, 0.026, 0.052, 0.091, 0.021, 0.016, 0.015, 0.018, 0.014, 0.026, 0.033, 0.034, 0.016, 0.022, 0.008, 0.055, 0.01, 0.036, 0.027, 0.014, 0.019, 0.017, 0.055, 0.012, 0.01, 0.013, 0.014, 0.08, 0.012, 0.044, 0.069, 0.016, 0.02, 0.027, 0.035, 0.019, 0.077, 0.027, 0.017, 0.027, 0.011, 0.077, 0.022, 0.03, 0.019, 0.013, 0.018, 0.015, 0.02, 0.016, 0.077, 0.015, 0.011, 0.051, 0.024, 0.014, 0.018, 0.022, 0.004, 0.008, 0.018, 0.019, 0.009, 0.015, 0.018, 0.035, 0.012, 0.017, 0.008, 0.02, 0.016, 0.009, 0.011, 0.123, 0.037, 0.018, 0.027, 0.018, 0.018, 0.01, 0.056, 0.013, 0.012, 0.022, 0.02, 0.016, 0.01, 0.033, 0.018, 0.02, 0.011, 0.029, 0.016, 0.015, 0.01, 0.011, 0.012, 0.012, 0.017, 0.009, 0.019, 0.029, 0.015, 0.049, 0.043, 0.019, 0.036, 0.108, 0.012, 0.029, 0.008, 0.014, 0.013, 0.022, 0.012, 0.037, 0.014, 0.07, 0.007, 0.056, 0.01, 0.089, 0.014, 0.055, 0.026, 0.02, 0.013, 0.014, 0.027, 0.011, 0.014, 0.072, 0.03, 0.015, 0.024, 0.033, 0.024, 0.015, 0.021, 0.019, 0.018, 0.047, 0.011, 0.044, 0.021, 0.013, 0.013, 0.052, 0.051, 0.034, 0.023, 0.057, 0.015, 0.041, 0.066, 0.02, 0.051, 0.038, 0.026, 0.023, 0.037, 0.024, 0.017, 0.045, 0.031, 0.013, 0.025, 0.019, 0.018, 0.042, 0.016, 0.012, 0.019, 0.022, 0.02, 0.011, 0.063, 0.028, 0.022, 0.015, 0.023, 0.027, 0.014, 0.014, 0.022, 0.017, 0.011, 0.026, 0.017, 0.019, 0.01, 0.012, 0.013, 0.013, 0.01, 0.023, 0.021, 0.015, 0.007, 0.046, 0.025, 0.015, 0.035, 0.041, 0.018, 0.01, 0.016, 0.025, 0.024, 0.012, 0.012, 0.015, 0.016, 0.011, 0.013, 0.026, 0.018, 0.024, 0.029, 0.012, 0.011, 0.014, 0.013, 0.019, 0.024, 0.019, 0.016, 0.011, 0.017, 0.009, 0.021, 0.045, 0.019, 0.006, 0.005, 0.045, 0.007, 0.007, 0.009, 0.011, 0.012, 0.009, 0.01, 0.011, 0.054, 0.009, 0.012, 0.234, 0.098, 0.009, 0.011, 0.009, 0.091, 0.005, 0.007, 0.032, 0.049, 0.006, 0.006, 0.009, 0.058, 0.006, 0.005, 0.01, 0.009, 0.007, 0.017, 0.026, 0.006, 0.008, 0.013, 0.009, 0.01, 0.011, 0.007, 0.139, 0.006, 0.009, 0.028, 0.011, 0.007, 0.014, 0.007, 0.538, 0.011, 0.009, 0.011, 0.011, 0.013, 0.031, 0.003, 0.008, 0.014, 0.002, 0.052, 0.214, 0.006, 0.01, 0.01, 0.019, 0.015, 0.014, 0.015, 0.011, 0.036, 0.011, 0.011, 0.007, 0.006, 0.036, 0.013, 0.072, 0.009, 0.005, 0.284, 0.067, 0.015, 0.007, 0.006, 0.006, 0.011, 0.019, 0.01, 0.037, 0.052, 0.019, 0.023, 0.184, 0.011, 0.014, 0.017, 0.036, 0.006, 0.005, 0.01, 0.13, 0.134, 0.007, 0.007, 0.007, 0.024, 0.006, 0.055, 0.018, 0.012, 0.014, 0.004, 0.038, 0.018, 0.006, 0.008, 0.009, 0.012, 0.012, 0.022, 0.021, 0.011, 0.01, 0.138, 0.02, 0.2, 0.018, 0.008, 0.037, 0.006, 0.041, 0.002, 0.008, 0.013, 0.023, 0.005, 0.009, 0.002, 0.02, 0.019, 0.041, 0.007, 0.059, 0.019, 0.006, 0.011, 0.038, 0.041, 0.015, 0.014, 0.013, 0.023, 0.01, 0.02, 0.042, 0.015, 0.17, 0.009, 0.016, 0.01, 0.015, 0.017, 0.014, 0.013, 0.025, 0.014, 0.026, 0.012, 0.028, 0.014, 0.036, 0.017, 0.037, 0.017, 0.023, 0.025, 0.028, 0.018, 0.017, 0.014, 0.015, 0.016, 0.045, 0.033, 0.027, 0.017, 0.035, 0.017, 0.018, 0.018, 0.018, 0.02, 0.024, 0.026, 0.023, 0.025, 0.031, 0.038] + }, + "length": 482, + "seq_id": "f605e37dc591194cfc8a9a7b94c629c5" +} \ No newline at end of file diff --git a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts new file mode 100644 index 000000000..882524c80 --- /dev/null +++ b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts @@ -0,0 +1,7 @@ +describe("nightingale-distribution-track tests", () => { + test("foo", () => { + expect(2+2).toEqual(4); + }); +}); + +// TODO tests diff --git a/packages/nightingale-distribution-track/tsconfig.json b/packages/nightingale-distribution-track/tsconfig.json new file mode 100644 index 000000000..6a62dbc48 --- /dev/null +++ b/packages/nightingale-distribution-track/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["./src"] +} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx new file mode 100644 index 000000000..785841335 --- /dev/null +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx @@ -0,0 +1,35 @@ +import { Meta, Description } from "@storybook/addon-docs"; + +import Readme from "../../packages/nightingale-conservation-track/README.md"; +import ParentReadme from "../../packages/nightingale-new-core/src/nightingale-base-element.md"; +import dimensionsReadme from "../../packages/nightingale-new-core/src/mixins/withDimensions/README.md"; +import highlightReadme from "../../packages/nightingale-new-core/src/mixins/withHighlight/README.md"; +import managerReadme from "../../packages/nightingale-new-core/src/mixins/withManager/README.md"; +import marginReadme from "../../packages/nightingale-new-core/src/mixins/withMargin/README.md"; +import positionReadme from "../../packages/nightingale-new-core/src/mixins/withPosition/README.md"; +import resizableReadme from "../../packages/nightingale-new-core/src/mixins/withResizable/README.md"; +import zoomReadme from "../../packages/nightingale-new-core/src/mixins/withZoom/README.md"; + + + +{Readme} + +
+ +

Mixins

+ +

+ This component implement the following mixins, and therefore it includes their + attributes and properties. +

+{dimensionsReadme} +{highlightReadme} +{managerReadme} +{marginReadme} +{positionReadme} +{resizableReadme} +{zoomReadme} + +

Parent Class

+ +{ParentReadme} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts new file mode 100644 index 000000000..9f077d725 --- /dev/null +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -0,0 +1,175 @@ +import { type ArgTypes, Meta, Story } from "@storybook/web-components"; +import { html } from "lit-html"; +import "../../packages/nightingale-distribution-track/src/index"; +import { type DistributionData } from "../../packages/nightingale-distribution-track/src/nightingale-distribution-track"; +import sampleDistributionData from "../../packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json"; + + +export default { title: "Components/Tracks/Distribution Track" } as Meta; + + +const DefaultArgs = { + "letter-order": "default", + "min-width": 400, + "height": 200, + "highlight-event": "onmouseover", + "highlight-color": "#EB3BFF22", + "margin-color": "#ffffffdd", +}; +type Args = typeof DefaultArgs; + +const ArgumentTypes: Partial> = { + "highlight-event": { control: "select", options: ["onmouseover", "onclick"] }, + "letter-order": { control: "select", options: ["default", "probability"] }, +}; + + +const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIAEDEEWKRLRSLLSPTFTSGKLKEMVPIIAQYGDVLVRNLRREAETGKPVTLKDVFGAYSMDVITSTSFGVNIDSLNNPQDPFVENTKKLLRFDFLDPFFLSITVFPFLIPILEVLNICVFPREVTNFLRKSVKRMKESRLEDTQKHRVDFLQLMIDSQNSKETESHKALSDLELVAQSIIFIFAGYETTSSVLSFIMYELATHPDVQQKLQEEIDAVLPNKAPPTYDTVLQMEYLDMVVNETLRLFPIAMRLERVCKKDVEINGMFIPKGVVVMIPSYALHRDPKYWTEPEKFLPERFSKKNKDNIDPYIYTPFGSGPRNCIGMRFALMNMKLALIRVLQNFSFKPCKETQIPLKLSLGGLLQPEKPVVLKVESRDGTVSGAHHHH"; + +function prepareDistributionData(data: typeof sampleDistributionData): DistributionData { + const out: DistributionData = { + index: data.data.index, + probabilities: {}, + }; + for (const field in data.data) { + if (data.data.hasOwnProperty(field) && field.startsWith('probability_')) { + const letter = field.slice('probability_'.length); + out.probabilities[letter] = data.data[field as keyof typeof data.data]; + } + } + return out; +} + +function prepareLinegraphData(data: typeof sampleDistributionData) { + const chart1 = { + name: "chart1", + color: "#707070", + fill: "#808080", + lineCurve: "curveStep", + range: [0, 10], + values: data.data.index.map((position, i) => ({ position, value: data.data.conservation_score[i] })), + }; + return [chart1]; +} + + +function nightingaleNavigation(args: Args & { length: number }) { + return html` +
+
+ + +
`; +} + +function nightingaleSequence(args: Args & { length: number }) { + const sequence = sampleSequence; + return html` +
+
+ + +
`; +} + +function nightingaleLinegraphTrack(args: Args & { length: number, id: number }) { + return html` +
+
Linegraph
+ + + +
`; +} + +function nightingaleDistributionTrack(args: Args & { length: number, id: number }) { + return html` +
+
Distribution
+ + +
`; +} + + +function makeStory(options: { length: number }): Story { + const template: Story = (args: Args) => { + return html` + + Use Ctrl+scroll to zoom. +
+ + +
+ ${nightingaleNavigation({ ...args, length: options.length })} + ${nightingaleSequence({ ...args, length: options.length })} + ${nightingaleLinegraphTrack({ ...args, length: options.length, id: 0 })} + ${nightingaleDistributionTrack({ ...args, length: options.length, id: 0 })} +
+
+
`; + } + + const story: Story = template.bind({}); + story.args = { ...DefaultArgs }; + story.argTypes = ArgumentTypes; + story.play = async () => { + await customElements.whenDefined("nightingale-linegraph-track"); + for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { + (track as any).data = prepareLinegraphData(sampleDistributionData); + } + await customElements.whenDefined("nightingale-distribution-track"); + for (const track of document.getElementsByTagName("nightingale-distribution-track")) { + (track as any).data = prepareDistributionData(sampleDistributionData); + } + }; + return story; +} + + +export const LinegraphAndDistribution = makeStory({ + length: sampleSequence.length, +}); From dc3cb2089a8cac96cc63f36b4d794bed4ac27f79 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 9 Jun 2026 16:26:22 +0100 Subject: [PATCH 02/32] Squashed commit of the following: commit edb0f14568c102e4596c4e5fddee46fb18130427 Author: Adam Midlik Date: Tue Jun 9 16:22:10 2026 +0100 nightingale-distribution-track: remove old mock data commit 123d5515c6a4d0eaa19059e956bea3d0545b2892 Author: Adam Midlik Date: Tue Jun 9 16:11:12 2026 +0100 nightingale-distribution-track: clip mock data commit 7c19d493c72607fb08bce6d319e1725f6abf7296 Author: Adam Midlik Date: Tue Jun 9 16:05:48 2026 +0100 nightingale-distribution-track: minify mock data commit 0d814e9bd941fce622188a2e64ccb9eb1b6d2155 Author: Adam Midlik Date: Tue Jun 9 15:47:59 2026 +0100 nightingale-distribution-track: proper y-scaling, show outliers commit 9d13c4435714fe53c3f6b6a6ca410aea43ed7b60 Author: Adam Midlik Date: Mon Jun 8 16:12:00 2026 +0100 nightingale-distribution-track: support multiple datasets commit fd05f2f6d54054444598d65abfd21925ff57d84b Author: Adam Midlik Date: Mon Jun 8 15:49:18 2026 +0100 nightingale-distribution-track: basic rendering --- .../src/nightingale-conservation-track.ts | 2 + .../src/nightingale-distribution-track.ts | 391 +++++++++-------- .../tests/mockData/sample-1.json | 404 ++++++++++++++++++ .../mockData/sample-distribution-data.json | 32 -- .../nightingale-distribution-track.test.ts | 84 +++- .../NightingaleDistributionTrack.stories.mdx | 4 +- .../NightingaleDistributionTrack.stories.ts | 84 +++- 7 files changed, 769 insertions(+), 232 deletions(-) create mode 100644 packages/nightingale-distribution-track/tests/mockData/sample-1.json delete mode 100644 packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json diff --git a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts index f46389a0c..c2afb68bb 100644 --- a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts +++ b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts @@ -187,6 +187,8 @@ export default class NightingaleConservationTrack extends withCanvas( const stamp: Record = { "data": this["data"], "canvasCtx": this["canvasCtx"], + "canvasWidth": this["width"], + "canvasHeight": this["height"], "canvasScale": this["canvasScale"], "display-start": this["display-start"], "display-end": this["display-end"], diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 2632720fa..bad0f5fe1 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -13,7 +13,7 @@ import NightingaleElement, { withResizable, withZoom, } from "@nightingale-elements/nightingale-new-core"; -import { BaseType, select, Selection } from "d3"; +import { BaseType, select, Selection, color, scaleLinear, randomNormal, randomUniform, randomLcg } from "d3"; import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; @@ -22,47 +22,11 @@ const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", "font-family", "min-font-size", "fade-font-size", "max-font-size", + "y-min", "y-max", "hide-outliers", ] satisfies (keyof NightingaleDistributionTrack)[]; -const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = ["letter-order"] satisfies (keyof NightingaleDistributionTrack)[]; - -/** Order of amino acids in a column (top-to-bottom) */ -const AMINO_ACID_ORDER = Array.from("HYAVLIMFWSTQNKRDEPCG"); // Old Protvista order: HYSTQNAVLIMFWDEPKRCG -/** Color to be used for unknown amino acids */ -const DEFAULT_COLOR = "#AAAAAA"; -/** Colors for amino acid groups, based on Clustal (https://www.jalview.org/help/html/colourSchemes/clustal.html) */ -const AMINO_GROUP_COLOR = { - aromatic: "#15A4A4", - hydrophobic: "#80A0F0", - polar: "#15C015", - positive: "#F01505", - negative: "#C048C0", - proline: "#C0C000", - cysteine: "#F08080", - glycine: "#F09048", -}; -/** Colors for individual amino acids, based on Clustal (https://www.jalview.org/help/html/colourSchemes/clustal.html) */ -const AMINO_ACID_COLOR = { - H: AMINO_GROUP_COLOR.aromatic, - Y: AMINO_GROUP_COLOR.aromatic, - A: AMINO_GROUP_COLOR.hydrophobic, - V: AMINO_GROUP_COLOR.hydrophobic, - L: AMINO_GROUP_COLOR.hydrophobic, - I: AMINO_GROUP_COLOR.hydrophobic, - M: AMINO_GROUP_COLOR.hydrophobic, - F: AMINO_GROUP_COLOR.hydrophobic, - W: AMINO_GROUP_COLOR.hydrophobic, - S: AMINO_GROUP_COLOR.polar, - T: AMINO_GROUP_COLOR.polar, - N: AMINO_GROUP_COLOR.polar, - Q: AMINO_GROUP_COLOR.polar, - K: AMINO_GROUP_COLOR.positive, - R: AMINO_GROUP_COLOR.positive, - D: AMINO_GROUP_COLOR.negative, - E: AMINO_GROUP_COLOR.negative, - P: AMINO_GROUP_COLOR.proline, - C: AMINO_GROUP_COLOR.cysteine, - G: AMINO_GROUP_COLOR.glycine, -}; +const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleDistributionTrack)[]; + + /** Color for rectangle stroke */ const STROKE_COLOR = "#D3D3D3"; /** Line width for rectangle stroke */ @@ -70,26 +34,38 @@ const LINE_WIDTH = 1; /** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ const MAX_REL_LINE_WIDTH = 0.2; - -/** Amino acid probability for each amino acid for each position */ -interface Probabilities { [letter: string]: number[] } - -/** Vertical position for each amino acid for each position */ -interface YPositions { - start: { [letter: string]: number[] }, - end: { [letter: string]: number[] }, +/** Default fill color for boxes (stroke color will be derived from this) */ +const DEFAULT_DATA_COLOR = "#cccccc"; +/** Gap between columns relative to base width */ +const COLUMN_GAP = 0.2; +/** Gap between boxes within a column relative to box width */ +const BOX_GAP = 0.1; +/** Whisker width relative to box width */ +const WHISKER_REL_WIDTH = 0.6; +/** Outlier jitter width relative to box width */ +const JITTER_REL_WIDTH = 0.4; +/** Radius for the circles representing outliers */ +const OUTLIER_RADIUS = 2; + + +interface Distribution { + position: number, + values: number[], } -type LetterOrder = "default" | "probability"; +export interface DistributionDataset { + name: string, + color?: string, + positions: Distribution[], +} /** Type for `NightingaleDistributionTrack.data`` */ -export interface DistributionData { - /** Sequence number for each position */ - index: number[], - /** Amino acid probability for each amino acid for each position */ - probabilities: Probabilities, -} +export type DistributionData = DistributionDataset[]; +const OptionalNumber = (str: string | null) => { + if (str) return Number(str); + return undefined; +}; @customElementOnce("nightingale-distribution-track") export default class NightingaleDistributionTrack extends withCanvas( @@ -103,10 +79,6 @@ export default class NightingaleDistributionTrack extends withCanvas( ) ) ) { - /** Order of amino acids within a column (top-to-bottom). default = fixed order based on amino acid groups, probability = on every position sort by descending probability */ - @property({ type: String }) - "letter-order": LetterOrder = "default"; - /** Font family for labels (can be a list of multiple font families separated by comma, like in CSS) */ @property({ type: String }) "font-family": string = "Helvetica,sans-serif"; @@ -123,9 +95,21 @@ export default class NightingaleDistributionTrack extends withCanvas( @property({ type: Number }) "max-font-size": number = 24; + /** Bottom limit for Y-axis (default: minimum computed from data) */ + @property({ converter: OptionalNumber }) + "y-min"?: number; + + /** Top limit for Y-axis (default: maximum computed from data) */ + @property({ converter: OptionalNumber }) + "y-max"?: number; + + /** Turns off rendering of outliers */ + @property({ type: Boolean }) + "hide-outliers"?: boolean; + #data?: DistributionData; - private yPositions?: YPositions; + private preprocessedData?: PreprocessedData; protected highlighted?: Selection; @@ -134,23 +118,20 @@ export default class NightingaleDistributionTrack extends withCanvas( if (this.data) this.createTrack(); } - /** Distribution data, e.g. TODO: example */ get data(): DistributionData | undefined { return this.#data; } set data(data: DistributionData | undefined) { this.#data = data; - if (data) { - if (this["letter-order"] === "probability") { - this.yPositions = computeYPositions_ProbabilityOrder(data.probabilities); - } else { - this.yPositions = computeYPositions_FixedOrder(data.probabilities, AMINO_ACID_ORDER); - } - } else { - this.yPositions = undefined - } + this.preprocessedData = data ? preprocessData(data) : undefined; this.createTrack(); } + /** Return the range of Y values corresponding to bottom and top of the viewport (excluding margins) */ + getYLimits(): [yMin: number, yMax: number] { + const yMin = this["y-min"] ?? this.preprocessedData?.yLimits.min ?? 0; + const yMax = this["y-max"] ?? this.preprocessedData?.yLimits.max ?? 100; + return [yMin, yMax]; + } override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { super.attributeChangedCallback(name, oldValue, newValue); @@ -187,6 +168,8 @@ export default class NightingaleDistributionTrack extends withCanvas( const stamp: Record = { "data": this["data"], "canvasCtx": this["canvasCtx"], + "canvasWidth": this["width"], + "canvasHeight": this["height"], "canvasScale": this["canvasScale"], "display-start": this["display-start"], "display-end": this["display-end"], @@ -208,7 +191,7 @@ export default class NightingaleDistributionTrack extends withCanvas( if (!this._drawStamp.update().changed) return; this.adjustCanvasCtxLogicalSize(); this.clearCanvas(); - this.drawColumns(); + this.drawBoxplot(); this.drawMargins(); } @@ -218,54 +201,102 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); } - private drawColumns() { + private drawBoxplot() { const ctx = this.canvasCtx; if (!ctx) return; - if (!this.data) return; + if (!this.data || !this.preprocessedData) return; + + const nData = this.data.length; const scale = this.canvasScale; const baseWidthInCss = this.getSingleBaseWidth(); const baseWidth = scale * baseWidthInCss; - const fontOpacity = this.getFontOpacity(baseWidthInCss); const columnOffset = scale * this["margin-top"]; const columnHeight = scale * (this["height"] - this["margin-top"] - this["margin-bottom"]); + const xColumnOffset = baseWidth * 0.5 * COLUMN_GAP; + const xColumnWidth = baseWidth * (1 - COLUMN_GAP); + const xBoxWidth = xColumnWidth / nData * (1 - BOX_GAP); + const yScale = scaleLinear(this.getYLimits(), [columnOffset + columnHeight, columnOffset]); + const outlierRadius = scale * OUTLIER_RADIUS; + + const yMedianExtra = scale * 1; ctx.lineWidth = scale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * baseWidthInCss); ctx.strokeStyle = STROKE_COLOR; ctx.textAlign = "center"; ctx.textBaseline = "middle"; - const leftEdgeSeq = this.getSeqPositionFromX(0 - 0.5 * LINE_WIDTH) ?? -Infinity; - const rightEdgeSeq = this.getSeqPositionFromX(this.width + 0.5 * LINE_WIDTH) ?? Infinity; - const iFrom = Math.max(0, BinarySearch.firstGteqIndex(this.data.index, leftEdgeSeq - 1, x => x)); - const iTo = Math.min(this.data.index.length, BinarySearch.firstGteqIndex(this.data.index, rightEdgeSeq, x => x)); - - for (let i = iFrom; i < iTo; i++) { - const x = scale * this.getXFromSeqPosition(this.data.index[i]); - const textX = x + 0.5 * baseWidth; + const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); + const end = Math.floor(this.getSeqPositionFromX(this.width) ?? 1); + for (let iData = 0; iData < nData; iData++) { + const dataset = this.preprocessedData.datasets[iData]; + if (!dataset) continue; + + const dataColor = this.data[iData].color ?? DEFAULT_DATA_COLOR; + const boxFill = dataColor; + const boxStroke = color(boxFill)!.darker(2).formatHex(); + + const xBoxOffset = xColumnOffset + xColumnWidth * (iData + 0.5 * BOX_GAP) / nData; + const xCenter = xBoxOffset + 0.5 * xBoxWidth; + const xWhiskerHalfWidth = 0.5 * WHISKER_REL_WIDTH * xBoxWidth; + const xWhiskerOffset = xCenter - xWhiskerHalfWidth; + const xWhiskerEnd = xCenter + xWhiskerHalfWidth; + const xJitterHalfWidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; + + for (let i = start; i <= end; i++) { + const datum = dataset[i]; + if (!datum) continue; + + const x = scale * this.getXFromSeqPosition(i); + const yMedian = yScale(datum.median); + const yBoxLow = yScale(datum.boxLow); + const yBoxHigh = yScale(datum.boxHigh); + const yWhiskerLow = yScale(datum.whiskerLow); + const yWhiskerHigh = yScale(datum.whiskerHigh); - for (const letter in this.yPositions?.start) { - const relStart = Math.min(this.yPositions.start[letter][i], 1); - const relEnd = Math.min(this.yPositions.end[letter][i], 1); - const start = relStart * columnHeight + columnOffset; - const end = relEnd * columnHeight + columnOffset; - const height = end - start; - - // Draw rectangle ctx.globalAlpha = 1; - ctx.fillStyle = AMINO_ACID_COLOR[letter as keyof typeof AMINO_ACID_COLOR] ?? DEFAULT_COLOR; - ctx.fillRect(x, start, baseWidth, height); - ctx.strokeRect(x, start, baseWidth, height); - - // Draw letter - if (fontOpacity === 0) continue; - const fontSize = Math.min(baseWidth, height, scale * this["max-font-size"]); - if (fontSize < scale * this["min-font-size"]) continue; - const textY = start + 0.5 * height; - ctx.globalAlpha = fontOpacity; - ctx.fillStyle = "black"; - ctx.font = `${fontSize}px ${this["font-family"]}`; - ctx.fillText(letter, textX, textY); + + // Whiskers + ctx.strokeStyle = boxStroke; + ctx.beginPath(); + ctx.moveTo(x + xWhiskerOffset, yWhiskerHigh); + ctx.lineTo(x + xWhiskerEnd, yWhiskerHigh); + ctx.moveTo(x + xWhiskerOffset, yWhiskerLow); + ctx.lineTo(x + xWhiskerEnd, yWhiskerLow); + ctx.moveTo(x + xCenter, yWhiskerHigh); + ctx.lineTo(x + xCenter, yWhiskerLow); + ctx.stroke(); + + // Box + ctx.fillStyle = boxFill; + ctx.strokeStyle = boxStroke; + ctx.fillRect(x + xBoxOffset, yBoxHigh, xBoxWidth, yBoxLow - yBoxHigh); + ctx.strokeRect(x + xBoxOffset, yBoxHigh, xBoxWidth, yBoxLow - yBoxHigh); + + // Median + ctx.fillStyle = boxStroke; + ctx.strokeStyle = boxStroke; + ctx.fillRect(x + xBoxOffset, yMedian - yMedianExtra, xBoxWidth, 2 * yMedianExtra); + ctx.strokeRect(x + xBoxOffset, yMedian - yMedianExtra, xBoxWidth, 2 * yMedianExtra); + + // Outliers + if (!this["hide-outliers"]) { + const xJitter = xJitterHalfWidth !== 0 ? + randomUniform.source(randomLcg(i * nData + iData))(xCenter - xJitterHalfWidth, xCenter + xJitterHalfWidth) + : () => xCenter; + ctx.globalAlpha = 0.25; + ctx.fillStyle = boxStroke; + for (const outlier of datum.outliersHigh) { + ctx.beginPath(); + ctx.arc(x + xJitter(), yScale(outlier), outlierRadius, 0, 2 * Math.PI); + ctx.fill(); + } + for (const outlier of datum.outliersLow) { + ctx.beginPath(); + ctx.arc(x + xJitter(), yScale(outlier), outlierRadius, 0, 2 * Math.PI); + ctx.fill(); + } + } } } } @@ -289,16 +320,6 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); } - private getFontOpacity(baseWidthInCss: number): number { - if (baseWidthInCss < this["min-font-size"]) { - return 0; - } else if (baseWidthInCss < this["fade-font-size"]) { - return (baseWidthInCss - this["min-font-size"]) / (this["fade-font-size"] - this["min-font-size"]); - } else { - return 1; - } - } - protected updateHighlight() { if (!this.highlighted) return; const highlights = this.highlighted @@ -358,14 +379,14 @@ export default class NightingaleDistributionTrack extends withCanvas( } private handleClick(event: MouseEvent): void { - const pointed = this.getPointedAminoAcid(event.offsetX, event.offsetY); + const pointed = this.getPointedDatum(event.offsetX, event.offsetY); if (pointed === undefined) { return; } const withHighlight = this.getAttribute("highlight-event") === "onclick"; const customEvent = createEvent( "click", - pointed, + null, // TODO: pass (pointed.datum ?? null), withHighlight, true, pointed.position, @@ -378,14 +399,14 @@ export default class NightingaleDistributionTrack extends withCanvas( } private handleMousemove(event: MouseEvent): void { - const pointed = this.getPointedAminoAcid(event.offsetX, event.offsetY); + const pointed = this.getPointedDatum(event.offsetX, event.offsetY); if (pointed === undefined) { - return this.handleMouseout(event); + return; } const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; const customEvent = createEvent( "mouseover", - pointed, + null, // TODO: pass (pointed.datum ?? null), withHighlight, false, pointed.position, @@ -413,70 +434,100 @@ export default class NightingaleDistributionTrack extends withCanvas( this.dispatchEvent(customEvent); } - private getPointedAminoAcid(svgX: number, svgY: number): { position: number, aa: string, probability: number } | undefined { - if (!this.data) return undefined; - if (!this.yPositions) return undefined; + private getPointedDatum(svgX: number, svgY: number): { position: number, datum: PreprocessedDatum | undefined } | undefined { const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); - const i = BinarySearch.firstEqIndex(this.data.index, position, x => x); - if (i === undefined) return undefined; - const relativeY = (svgY - this["margin-top"]) / (this["height"] - this["margin-top"] - this["margin-bottom"]); - for (const letter in this.yPositions.start) { - if (relativeY >= this.yPositions.start[letter][i] && relativeY < this.yPositions.end[letter][i]) { - return { position, aa: letter, probability: this.data.probabilities[letter][i] ?? 0 }; - } - } - return undefined; + const datum = this.preprocessedData?.datasets[0][position]; // TODO: consider multiple datasets + return { position, datum }; } } -function computeYPositions_FixedOrder(probabilities: Probabilities, order: string[]): YPositions { - const normalizedOrder = normalizeOrder(Object.keys(probabilities), order); - const start: { [letter: string]: number[] } = {}; - const end: { [letter: string]: number[] } = {}; - for (const letter of normalizedOrder) { - start[letter] = []; - end[letter] = []; +type PreprocessedData = ReturnType; + +function preprocessData(data: DistributionData) { + const preprocessedDatasets = data.map(preprocessDataset); + return { + datasets: preprocessedDatasets, + yLimits: getExtremes(preprocessedDatasets), } - const n = Math.max(0, ...normalizedOrder.map(letter => probabilities[letter].length)); - for (let i = 0; i < n; i++) { - let cum = 0; - for (const letter of normalizedOrder) { - start[letter].push(cum); - cum += probabilities[letter][i] ?? 0; - end[letter].push(cum); - } +} + +function preprocessDataset(dataset: DistributionDataset) { + const out: { [position: number]: PreprocessedDatum } = {}; + for (const datum of dataset.positions) { + out[datum.position] = preprocessDatum(datum); } - return { start, end }; + return out; +} + +interface PreprocessedDatum { + position: number, + values: number[], + median: number, + boxLow: number, + boxHigh: number, + whiskerLow: number, + whiskerHigh: number, + outliersLow: number[], + outliersHigh: number[], + minimum: number, + maximum: number, +} + +function preprocessDatum(datum: Distribution): PreprocessedDatum { + const sorted = datum.values.slice().sort((a, b) => a - b); + const median = getQuantile(sorted, 0.5); + const q1 = getQuantile(sorted, 0.25); + const q3 = getQuantile(sorted, 0.75); + const iqr = q3 - q1; + /** Index of the first value >= q1 - 1.5 * IQR (low whisker) */ + const iWhiskerLow = BinarySearch.firstGteqIndex(sorted, q1 - 1.5 * iqr, x => x) + const stop = BinarySearch.firstGteqIndex(sorted, q3 + 1.5 * iqr, x => x); + /** Index of the last value <= q3 + 1.5 * IQR (high whisker) */ + const iWhiskerHigh = (stop >= sorted.length || sorted[stop] > q3 + 1.5 * iqr) ? stop - 1 : stop; + + return { + position: datum.position, + values: sorted, + median, + boxLow: q1, + boxHigh: q3, + whiskerLow: sorted[iWhiskerLow], + whiskerHigh: sorted[iWhiskerHigh], + outliersLow: sorted.slice(0, iWhiskerLow), + outliersHigh: sorted.slice(iWhiskerHigh + 1, undefined), + minimum: sorted[0], + maximum: sorted[sorted.length - 1], + }; } -function computeYPositions_ProbabilityOrder(probabilities: Probabilities): YPositions { - const alphabet = Object.keys(probabilities); - const start: { [letter: string]: number[] } = {}; - const end: { [letter: string]: number[] } = {}; - for (const letter of alphabet) { - start[letter] = []; - end[letter] = []; +export function getQuantile(sortedValues: number[], p: number) { + const i_ = (sortedValues.length - 1) * p; + if (i_ >= sortedValues.length - 1) { + return sortedValues[sortedValues.length - 1]; } - const n = Math.max(0, ...alphabet.map(letter => probabilities[letter].length)); - for (let i = 0; i < n; i++) { - let cum = 0; - alphabet.sort((a, b) => (probabilities[b][i] ?? 0) - (probabilities[a][i] ?? 0)); - for (const letter of alphabet) { - start[letter].push(cum); - cum += probabilities[letter][i] ?? 0; - end[letter].push(cum); + const i = Math.floor(i_); + const q = i_ - i; + return sortedValues[i] * (1 - q) + sortedValues[i + 1] * q; +} + +/** Gets the Y-axis limits for the given preprocessed data */ +function getExtremes(data: { [position: number]: PreprocessedDatum }[]) { + let min = Infinity; + let max = -Infinity; + + for (const dataset of data) { + for (const position in dataset) { + const datum = dataset[position]; + if (datum.minimum < min) min = datum.minimum; + if (datum.maximum > max) max = datum.maximum; } } - return { start, end }; -} -function normalizeOrder(present: string[], order: string[]) { - const presentSet = new Set(present); - const orderSet = new Set(order); - const ordered = order.filter(s => presentSet.has(s)); - const rest = present.filter(s => !orderSet.has(s)); - return ordered.concat(rest); + return { + min: min === Infinity ? undefined : min, + max: max === -Infinity ? undefined : max, + }; } diff --git a/packages/nightingale-distribution-track/tests/mockData/sample-1.json b/packages/nightingale-distribution-track/tests/mockData/sample-1.json new file mode 100644 index 000000000..4a05c399c --- /dev/null +++ b/packages/nightingale-distribution-track/tests/mockData/sample-1.json @@ -0,0 +1,404 @@ +{ + "positions": [ + { + "position": 1, + "values": [289.8,123.6,75.6,244.3,135.4,245.9,247.3,302.5,64.4,218.0,243.6,231.0,245.3,133.1,287.9,291.0,246.7,242.5,27.5,105.4,249.4,236.2] + }, + { + "position": 2, + "values": [117.2,134.0,89.6,60.0,151.5,85.2,119.9,139.4,86.7,188.4,106.3,133.5,152.0,115.2,134.3,118.2,123.7,118.3,114.2,111.8,111.0,80.3,191.0,131.0,160.8,113.2,151.3,69.5,77.2,161.9,108.1,53.3,112.7,136.9,126.4,91.6,209.3,116.4,76.2,122.0,69.5,137.4,135.5,119.1,122.2,110.6,117.0,16.2,148.0,187.1,118.4,73.7,121.7,126.0,55.4,119.7,88.0,106.6,109.0] + }, + { + "position": 3, + "values": [267.6,125.8,113.2,89.5,129.8,86.1,143.6,189.8,120.1,187.4,272.6,141.4,179.5,173.1,189.4,268.4,196.9,228.0,199.4,180.0,201.5,189.7,124.8,239.8,253.0,201.4,234.5,124.8,240.7,217.9,189.6,241.5,238.5,185.2,178.4,198.2,143.3,174.7,203.1,92.2,238.0,264.5,192.6,177.1,155.3,198.3,122.1,267.2,183.1,136.6,240.8,109.9,120.7,109.1,207.5,79.6,133.9,189.8,95.9,186.4,232.0,159.6,87.2,124.2,194.4,210.0,116.5,87.0,232.0,190.2,60.4,206.3,212.9,122.2,261.1,96.0,171.8,102.0,188.2,269.9,252.2,190.0,223.8,155.8,189.7,238.6,173.4,174.2,119.6,185.2,132.4,111.5,234.5,224.3,55.3,222.4,213.4,105.4,79.2,191.4,160.8,198.8,244.7,288.5,206.2,240.4,236.5,124.5,266.5,188.9,192.3,191.2,182.5,180.3,207.2,95.2,195.5,191.8,117.2,168.8,187.0,158.0,153.7,193.3,173.1,193.7,189.8,188.0,212.2,257.2,237.6,264.4,201.3,238.6,234.3,186.4,169.8,192.6,179.8,138.8,200.6,198.4,165.3,78.4,172.6,234.9,261.3,113.6,180.6,253.9,245.5,143.4,246.8,252.6,159.8,182.2,240.4,188.1,187.4,154.6,151.8,203.1,79.4,201.7,61.6,234.5,179.4,251.9,160.8,256.2,193.9,156.7,182.3,229.7,258.0,190.4,238.9,155.5,248.0,269.4,79.7,187.3,155.0,240.7,89.1,110.2,214.0,107.7,211.1,179.7,239.9,235.6,239.0,123.4,166.6,254.6,133.7,206.4,137.6,121.6,55.1,238.8,181.1,83.1,139.5,198.6,265.4,207.0,191.3,182.9,168.7,122.2,236.4,198.9,126.3,112.9,121.1,204.8,249.6,89.1,98.4,195.4,95.7,180.5,196.9,286.2,254.1,226.4,248.5,91.8,131.2,214.9,178.8,243.2,225.2,180.4,128.4,271.9,191.2,127.8,250.2,238.5,121.4,228.8,194.5,83.6,176.5,195.2,127.0,120.6,147.7,184.1,124.5,122.3,80.0,96.2,196.9,183.5,62.7,176.2,220.3,218.6,219.4,193.9,176.4,189.4,182.8,120.5,182.5,187.3,237.8,196.1,191.0,224.4,198.2,228.0,174.3,251.0,183.0,125.5,141.9,240.9,126.1,262.2,130.9,134.6,237.9,120.6,159.1,180.4,221.1,195.7,267.6,243.7,247.8,240.1,194.1,134.0,189.3,238.9,250.1,104.7,197.6,191.6,259.2,262.4,96.3,202.1,235.7,230.2,229.2,229.4,184.7,205.5,178.4,117.5,190.5,44.0,184.9,192.5,112.4,191.3,171.9,199.6,195.8,53.9,220.1,173.6,216.0,170.6,81.6,169.7,205.5,263.0,91.8,163.2,254.5,122.0,168.6,189.4,247.5,125.5,211.2,124.7,182.7,190.3,141.1,196.9,196.8,126.0,248.1] + }, + { + "position": 4, + "values": [253.5,221.2,111.6,203.2,104.1,242.3,160.7,136.2,183.7,138.8,134.4,68.4,188.3,232.2,174.4,116.5,190.7,189.4,65.5,215.8,140.9,106.9,232.6,154.0,115.9,119.8,207.2,121.0,25.7,87.8,168.3,193.0,161.3,118.6,191.3,210.3,102.9,99.7,108.7,233.3,238.8,159.2,153.8,161.0,187.4,179.5,218.8,168.5,227.3,237.4,106.0,101.1,144.1,159.7,247.8,106.6,187.7,184.4,212.8,241.2,108.2,172.5,145.5,99.5,171.5,240.1,193.1,129.0,230.0,104.9,52.1,143.7,243.5,215.2,79.7,186.9,206.6,222.7,66.7,110.1,203.6,83.2,234.3,152.2,115.0,140.7,105.0,219.2,243.5,147.7,142.5,99.9,132.7,171.1,209.9,137.9,188.4,102.0,200.3,197.6,221.0,208.7,47.4,100.5,185.1,188.1,116.2,168.7,107.1,138.3,198.3,108.6,147.0,151.3,114.2,212.0,161.0,200.8,45.0,105.9,86.9,144.6,134.4,115.4,169.1,176.0,211.5,141.0,241.3,99.7,147.8,141.4,219.2,111.4,97.4,146.4,141.7,241.6,104.2,146.4,110.2,144.2,135.4,214.8,189.4,109.4,177.5,217.2,135.2,198.6,109.1,159.0,136.1,163.9,222.4,230.7,182.6,103.5,138.0,208.0,142.3,88.2,187.5,137.5,98.8,182.2,102.2,249.1,233.9,124.0,206.2,200.8,145.2,168.3,151.4,143.5,112.4,239.6,233.8,110.0,55.3,182.2,136.3,143.9,99.6,138.4,155.5,155.3,234.9,121.1,243.4,237.2,149.3,170.1,236.0,88.4,110.0,174.7,159.1,176.8,172.2,136.9,241.6,137.7,201.1,209.1,106.8,135.8,188.2,208.6,85.0,229.9,143.3,211.1,198.0,109.1,248.0,171.7,171.0,197.4,111.0,185.2,240.8,219.0,154.1,90.3,134.2,183.7,245.6,99.7,248.0,223.1,186.6,100.9,159.6,186.6,101.9,169.1,164.0,250.9,196.8,193.3,176.5,216.2,224.5,105.9,65.4,192.2,148.1,67.8,181.2,109.7,103.3,243.3,241.6,65.2,184.0,242.2,199.0,235.3,72.6,69.7,184.2,106.3,176.3,104.7,130.5,135.6,184.5,107.4,111.1,133.1,173.8,169.7,197.4,205.0,107.8,239.6,110.3,108.4,121.3,121.0,68.8,160.0,235.4,135.6,249.9,146.4,98.8,238.0,133.8,153.1,158.2,148.0,178.5,100.0,176.1,135.0,66.6,217.8,164.0,152.0,167.5,168.1,183.2,151.6,100.0,170.8,71.7,138.7,102.0,173.1,194.5,108.0,109.7,71.1,189.2,214.7,158.6,66.6,144.8,156.9,153.9,88.3,168.7,173.1,106.8,99.5,238.8,168.6,228.3,248.5,138.4,146.2,124.0,207.0,143.4,155.3,109.7,173.6,139.5,49.1,112.5,111.1,157.9,158.5,177.8,224.1,186.9,184.8,231.1,225.1,237.8,102.8,109.5,123.0,99.9,109.9,130.5,219.2,156.4,192.0,184.4,158.6,113.3,194.7,212.6,215.7,233.7,96.7,202.2,49.4,157.3,100.0,179.1,84.1,128.2,124.7,228.4,114.0,115.7,69.1,138.2,243.1,181.7,181.7,210.0,196.6,233.7,110.4,100.5,115.2,199.4,105.3,104.3,105.1,153.5,119.3,147.2,116.3,245.3,109.1,243.3,248.0,214.9,162.4,120.2,246.6,102.5,152.6,211.8,161.4,239.0,196.7,158.4,146.5,226.2,134.2,226.9,238.3,202.1,101.8,161.2,67.4,171.4,135.0,191.2,219.0,217.6,110.2,189.1,142.4,143.9,149.4,247.0,239.2,242.9,176.3,224.5,154.7,103.7,109.7,87.5,119.3,120.0,134.0,153.6,136.2,114.7,96.3,193.6,122.8,143.1,240.1,239.9,115.0,104.3,147.8,217.8,222.4,107.3,85.6,100.7,154.4,176.8,199.1,184.0,147.1,250.9,197.8,105.8,179.4,120.0,130.2,89.5,205.3,226.4,111.7,227.5,157.8,195.4,55.0,106.8,228.0,240.2,138.5,77.7,235.7,152.5,104.7,138.6,46.8,213.1,165.4,215.8,99.1,182.6,148.8,106.0,122.6,165.7,108.6,186.2,176.1,183.1,224.0,134.3,148.3,181.9,199.2,144.1,108.4,190.0,112.4,192.7,112.0,170.8,177.3,172.7,98.7,193.9,184.1,197.6,189.9,237.0,233.8,230.2,239.9,107.6,176.6,154.6,142.3,112.5,110.8,183.4,216.5,72.6,117.9,105.6,147.6,202.6,161.7,106.4,106.7,200.3,231.2,153.6,111.4,153.9,166.1,106.7,199.4,170.0,66.3,97.9,187.6,100.4,192.9,235.6,148.6,218.4,179.9,141.1,196.8,237.1,105.9,152.0,103.9,163.2,111.7,178.8,172.0,174.6,114.1,183.8,107.3,189.0,174.6,136.8,214.0,193.1,165.2,216.1,147.3,171.5,63.8,173.4,200.6,107.9,219.0,92.6,247.0,113.9,225.1,208.1,199.4,171.1,201.6,133.7,143.4,158.2,148.0,178.7,112.2,175.3,182.0,169.8,154.7,64.3,105.4,151.6,114.0,134.4,107.8,149.6,166.0,192.8,146.4,97.1,168.0,107.2,107.7,254.6,202.9,186.0,178.7,235.3,181.8,181.5,87.5,248.1,122.4,143.8,110.3,244.8,119.9,241.2,244.3,102.0,148.9,108.0,242.3,166.6,110.7,250.9,189.1,233.0,146.7,112.7,183.3,231.0,139.9,151.2,119.4,88.7,141.3,224.3,174.3,107.8,171.5,179.8,132.4,182.7,142.9,169.8,217.6,169.0,142.3,205.9,168.2,65.8,182.5,159.5,225.3,113.9,225.8,171.5,104.9,112.8,142.5,247.3,201.9,128.8,111.7,176.0,62.7,150.2,97.5,73.4,109.7,185.1,52.5,187.3,193.8,171.1,182.5,106.2,243.5,166.0,214.9,214.2,105.7,144.1,184.6,150.5,108.7,66.9,163.7,115.8,101.9,108.2,147.5,187.3,66.3,246.1,190.7,108.8,115.9,144.1,149.4,106.6,249.9,209.1,195.2,186.7,158.7,186.8,240.8,170.0,231.3,144.8,193.3,244.6,147.3,111.3,255.9,108.2,124.2,161.0,108.9,247.4,183.2,71.4,146.5,175.6,194.8,139.6,100.6,177.7,163.7,107.6,70.6,243.6,108.2,128.5,64.7,119.7,182.6,121.0,184.0,182.3,180.8,139.2,104.9,149.8,227.6,109.3,232.7,169.0,174.2,206.7,107.3,187.0,135.5,108.2,195.1,206.4,154.3,203.4,108.0,144.6,153.4,43.8,202.7,162.6,221.5,139.9,196.5,171.8,140.1,102.0,115.8,194.5,238.3,183.1,208.7,169.7,166.6,103.9,65.3,237.6,67.2,199.4,182.4,151.1,158.4,134.7,108.5,113.4,252.6,106.4,144.2,149.4,177.7,140.0,244.6,148.3,105.5,225.3,96.3,131.3,241.0,195.6,96.6,99.1,66.4,177.0,143.5,213.4,150.7,201.9,166.4,105.7,191.2,189.3,191.5,216.3,140.4,87.3,73.1,113.6,160.7,88.3,222.0,180.7,220.1,115.9,152.7,244.4,108.3,189.8,247.5,228.5,96.9,166.6,183.5,110.6,186.9,222.8,131.6,112.2,170.8,150.2,181.7,229.0,101.6,202.6,134.8,165.3,151.9,178.3,178.3,110.5,65.6,197.4,142.6,131.5,183.9,203.9,94.6,139.7,73.2,119.2,173.6,86.0,245.4,136.3,115.8,155.5,156.5,187.0,188.6,129.0,87.4,144.3,150.1,184.1,146.0,137.7,210.9,184.5,197.4,152.7,199.5,104.7,235.7,108.4,157.6,225.2,144.8,182.1,183.4,114.3,64.4,217.2,187.3,232.3,190.3,137.3,160.8,194.1,124.6,143.4,176.8,239.1,190.6,232.9,203.2] + }, + { + "position": 5, + "values": [44.7,43.8,44.0,30.1,38.3,50.3,27.4,32.4,76.4,36.3,29.5,25.5,30.2,37.4,50.6,30.3,42.9,32.1,50.5,40.9,48.7,33.4,43.0,46.3,38.6,43.1,57.8,40.8,39.4,31.0,33.0,43.7,31.2,48.4,31.7,40.9,41.1,30.2,38.7,26.7,42.7,56.4,47.9,37.4,34.1,33.3,45.9,72.3,36.0,47.0,36.7,48.8,48.1,30.6,59.1,29.2,39.0,51.4,54.6,32.3,50.3,38.4,43.5,45.7,34.2,32.7,33.3,54.3,40.1,43.1,35.5,49.3,35.5,33.1,54.4,36.5,50.3,42.9,30.5,36.5,43.2,37.9,43.1,43.1,36.7,38.2,38.5,48.2,33.6,34.3,29.0,36.3,42.0,37.4,71.5,40.5,67.9,30.3,39.2,42.9,32.7,41.5,27.5,34.8,37.4,41.5,75.5,43.0,37.9,41.6,27.2,42.6,43.9,43.8,50.2,42.7,42.5,36.6,30.4,51.6,34.8,37.0,41.6,37.8,39.9,41.2,73.7,34.9,37.5,32.2,36.5,31.2,36.7,71.1,26.7,32.7,48.7,46.8,36.4,36.9,38.5,48.9,51.4,30.6,39.0,28.7,52.0,41.9,32.8,41.5,34.1,25.3,40.1,36.3,36.6,50.9,37.5,73.5,26.8,49.5,28.5,37.9,31.6,35.8,40.2,39.2,37.5,41.7,35.2,28.3,35.7,34.7,29.1,27.9,26.8,30.7,31.0,40.1,53.8,42.1,41.0,38.4,34.5,196.5,37.5,31.9,39.9,41.0,38.9,73.6,41.9,54.7,47.9,34.8,36.2,26.8,39.2,39.0,36.5,48.4,49.4,50.1,49.3,35.0,62.7,46.3,27.0,37.7,32.0,40.8,45.3,43.6,38.4,44.2,31.8,37.0,36.4,27.7,34.7,38.3,35.7,32.0,40.5,41.9,29.2,51.4,36.0,41.3,35.4,36.5,35.4,37.1,31.9,41.2,40.9,35.7,36.9,27.0,41.9,41.2,34.4,50.0,39.3,37.3,36.3,25.7,40.6,26.8,31.0,54.0,36.5,35.5,34.4,41.4,44.5,37.4,29.3,48.5,38.7,42.6,36.9,42.0,54.7,30.6,50.2,39.1,40.5,42.5,41.9,41.6,43.9,40.5,47.3,36.0,35.3,39.1,35.9,25.6,32.3,40.8,42.3,42.3,38.1,38.7,37.2,35.9,49.0,51.0,49.6,42.4,42.3,34.1,47.8,42.2,61.3,57.6,45.6,38.7,28.3,36.3,55.2,29.8,49.7,35.7,50.3,29.8,52.4,34.8,31.1,37.1,48.9,37.9,71.4,34.4,37.0,34.3,36.1,33.7,33.6,34.2,39.4,32.0,54.4,27.5,36.7,36.7,52.2,32.0,44.2,38.4,39.5,49.3,40.9,29.0,55.7,42.2,37.7,32.6,35.6,35.1,30.0,47.4,35.5,49.8,45.2,32.8,33.5,70.8,31.8,37.1,29.4,33.4,42.6,33.1,30.7,42.3,40.7,43.6,38.2,38.8,35.1,40.5,27.6,34.5,47.1,40.8,30.8,35.8,53.7,31.9,26.8,36.3,45.2,32.3,32.1,69.2,39.8,36.9,30.1,27.5,43.9,49.5,38.7,44.9,34.1,28.7,44.4,31.5,30.3,67.5,36.5,27.2,26.6,38.4,49.5,33.2,43.4,37.2,70.7,40.7,36.2,52.4,52.9,44.9,43.2,36.9,43.7,30.5,42.0,60.7,42.2,33.3,30.6,34.1,38.2,36.2,47.2,33.6,40.7,34.7,45.5,44.2,77.0,41.6,77.0,24.5,47.5,50.6,43.0,136.9,38.1,58.0,46.1,40.2,76.6,35.3,42.0,28.0,34.0,38.3,50.8,33.7,55.2,26.9,26.7,41.8,68.9,26.8,36.0,36.1,76.7,42.2,40.4,47.7,36.6,32.7,33.9,28.6,45.4,41.0,49.7,78.1,48.9,75.4,49.8,32.9,44.3,35.2,28.5,32.8,49.2,23.9,40.4,33.7,27.4,35.7,74.7,39.3,71.4,32.4,32.7,40.5,31.3,50.4,32.0,35.3,36.6,59.4,38.1,34.1,37.9,30.0,42.2,35.6,43.3,103.3,31.1,51.0,44.8,53.7,40.8,74.4,29.6,33.4,25.7,54.2,51.0,39.1,52.4,51.9,28.0,56.8,34.5,52.5,42.2,28.9,48.6,38.4,28.2,42.5,33.8,38.3,60.4,35.9,30.6,36.8,28.2,37.1,32.8,35.2,43.9,38.6,43.6,39.5,52.3,36.1,50.8,43.8,33.0,42.1,39.4,32.5,41.5,35.1,35.3,44.2,57.0,27.6,36.5,24.7,42.2,39.6,31.0,34.9,49.5,43.4,42.1,54.6,54.6,74.2,50.1,36.9,34.5,37.2,32.5,41.7,43.8,39.3,42.1,35.6,33.0,52.5,30.2,42.2,31.1,35.3,41.0,48.8,35.9,37.2,43.6,42.2,44.5,35.8,36.5,31.6,48.8,27.6,33.5,40.0,34.8,40.2,30.8,44.9,39.0,29.5,37.8,70.3,41.0,35.0,33.7,27.2,32.7,41.6,36.7,32.8,37.9,43.8,41.0,49.3,40.1,36.3,35.1,41.5,47.9,32.6,31.6,40.9,80.0,49.0,48.5,41.9,39.6,46.6,25.9,42.3,53.9,47.3,47.9,34.9,51.2,35.4,35.6,38.9,34.8,26.4,34.6,26.3,38.3,33.2,41.3,34.3,33.8,41.4,39.2,27.0,32.0,41.9,31.9,35.5,31.1,36.5,33.6,33.1,38.9,34.6,30.8,36.5,48.6,53.4,39.5,37.4,36.1,42.8,26.8,47.7,33.5,28.1,61.6,44.7,51.0,36.1,50.2,69.3,49.8,34.4,34.7,37.4,40.7,38.2,32.6,44.4,28.8,42.4,41.9,44.2,39.4,39.3,30.6,28.1,35.3,38.3,33.5,47.6,70.6,33.6,38.6,41.0,36.6,27.8,43.0,35.8,34.2,33.8,26.1,36.3,44.8,46.9,42.5,37.0,39.3,45.6,38.5,46.8,35.8,36.3,34.3,28.5,51.1,44.9,36.9,50.6,44.1,41.2,34.9,30.4,44.6,42.1,39.5,40.7,49.7,71.9,41.0,36.7,35.4,29.4,44.1,23.8,41.8,42.7,30.7,38.7,33.7,29.4,48.6,40.7,40.8,42.9,41.3,36.5,39.3,38.4,44.5,49.2,50.4,37.5,29.1,32.3,25.9,38.3,57.6,42.5,35.1,40.6,31.8,41.1,41.9,51.4,47.9,32.7,37.4,43.1,35.1,51.2,43.3,50.8,30.9,33.6,42.7,62.0,38.8,35.8,40.0,53.4,33.3,35.7,36.5,37.9,35.8,34.8,41.8,32.1,49.7,43.5,35.1,44.8,36.0,42.8,47.2,70.3,39.5,35.0,37.1,27.7,29.5,34.0,39.1,36.1,40.4,37.5,42.8,35.7,35.5,52.1,25.7,51.0,45.7,37.5,43.7,29.8,31.6,29.3,48.7,39.9,41.6,37.4,45.3,47.1,30.7,40.4,40.2,40.1,33.0,36.8,48.3,51.8,35.9,42.9,30.7,42.4,36.2,41.0,43.0,39.7,40.4,44.9,34.2,30.9,41.9,41.7,35.4,42.2,37.5,41.2,62.8,32.5,33.6,33.4,39.1,33.0,33.2,48.9,30.2,41.7,41.7,36.2,29.9,34.2,49.4,37.4,36.8,37.4,31.8,41.1,31.7,41.9,35.6,42.2,39.9,40.2,36.6,22.2,39.8,36.5,41.5,38.6,48.9,38.7,28.2,45.8,50.2,30.2,42.3,41.5,39.4,112.1,26.8,25.5,39.6,38.4,45.7,38.0,34.7,42.9,32.5,33.0,34.9,48.2,26.6,35.9,34.3,39.9,37.7,31.7,78.8,37.3,43.9,51.0,43.4,36.4,26.6,40.6,35.6,31.7,27.6,62.8,50.8,37.7,73.6,32.4,37.4,40.8,50.1,34.6,33.4,38.6,41.6,36.4,31.4,29.0,31.7,31.6,40.0,84.3,28.1,32.1,63.5,49.2,36.8,53.2,59.5,36.5,35.6,70.9,35.6,43.1,38.9,41.8,37.2,48.4,74.6,33.5,43.2,43.0,40.7,42.1,38.2,41.4,48.9,42.0,30.9,37.0,37.5,28.6,37.1,39.3,34.7,42.4,51.6,49.5] + }, + { + "position": 6, + "values": [10.1,10.8,10.2,11.2,11.1,10.7,9.0,10.5,12.5,10.3,10.1,10.8,10.0,10.4,12.0,10.1,10.7,10.3,11.2,10.3,10.0,10.5,10.7,10.4,11.1,11.3,11.8,11.6,10.3,10.5,10.4,11.3,11.4,12.3,10.6,10.0,12.5,11.7,10.6,10.8,9.2,9.9,10.7,9.8,9.4,10.7,12.2,11.0,10.5,11.3,10.2,12.3,11.7,10.8,9.5,10.3,10.9,12.3,10.7,11.5,11.0,10.8,10.7,11.6,11.6,9.8,10.2,9.8,9.0,12.4,12.0,11.0,9.7,11.2,11.0,10.8,10.9,9.4,10.4,10.3,11.0,10.3,9.9,10.1,9.5,10.1,11.8,9.9,10.2,11.2,10.1,8.8,9.8,12.2,12.4,11.1,13.2,9.2,11.1,10.2,9.9,9.6,10.3,9.8,9.9,9.4,9.8,13.5,10.7,9.7,9.7,11.5,10.4,10.5,11.5,11.9,9.9,10.9,11.1,11.2,10.6,11.2,9.7,9.9,11.2,9.7,11.6,13.0,10.2,10.7,9.9,10.4,11.1,11.7,11.2,10.2,12.2,10.8,10.8,9.8,10.3,10.9,10.7,11.3,10.2,10.3,11.6,9.9,10.9,10.0,10.9,8.6,9.5,9.8,9.5,11.4,10.6,13.3,9.1,11.8,11.4,10.1,10.2,11.1,9.8,10.2,10.8,9.9,10.1,9.7,10.0,9.6,9.8,9.8,9.6,10.0,10.4,9.5,11.2,12.3,10.2,10.4,10.1,66.6,10.7,7.9,10.5,10.4,9.5,13.0,10.2,12.2,10.6,10.4,10.3,9.1,11.6,17.8,10.3,11.6,16.2,10.5,11.6,9.7,13.0,10.8,9.4,10.3,9.9,9.9,10.4,10.9,10.3,11.3,9.8,9.7,10.2,9.9,11.7,9.8,9.7,10.3,10.4,9.9,10.1,11.4,10.1,10.3,9.7,10.8,9.4,10.2,10.3,10.2,9.5,10.4,9.9,8.9,11.1,10.1,11.5,12.1,10.2,10.0,9.9,11.1,10.0,9.1,10.2,11.8,10.7,10.4,10.1,11.3,9.7,10.1,9.8,10.7,11.3,10.8,10.0,10.2,10.9,11.7,11.4,9.6,10.7,9.9,10.0,10.1,10.0,10.9,10.4,10.7,11.3,9.7,11.4,9.3,11.9,11.0,9.8,10.0,11.7,10.5,10.0,11.2,10.6,11.1,9.9,11.8,10.8,9.8,10.7,10.3,12.8,12.3,9.6,10.4,10.1,10.7,11.7,11.1,10.2,12.3,11.4,9.1,9.9,11.2,10.1,10.1,11.2,10.6,14.0,10.1,11.6,9.9,9.9,10.1,10.4,12.1,10.1,12.4,9.3,11.9,11.0,10.8,11.1,10.5,10.1,10.3,10.3,11.8,10.6,9.5,11.6,11.6,8.5,10.6,9.4,11.0,9.4,10.8,10.6,10.7,11.0,10.6,10.2,12.3,11.6,10.2,9.9,10.1,10.1,10.4,10.4,9.7,9.8,10.6,11.0,10.6,10.1,9.9,8.4,10.1,9.9,10.1,11.4,10.7,10.4,10.3,9.1,8.8,10.2,9.9,10.7,11.1,12.8,11.2,9.7,9.4,11.0,11.3,10.3,12.0,9.5,9.5,11.2,10.0,10.9,11.6,10.5,9.6,9.4,11.1,12.4,9.3,10.1,9.8,12.7,11.3,10.4,9.9,10.7,10.6,11.0,12.0,9.8,11.2,10.0,10.6,10.7,11.0,11.4,12.1,12.0,11.4,10.4,10.7,9.9,11.7,10.5,10.5,13.3,10.7,13.7,8.4,10.2,10.8,53.0,11.7,10.3,12.2,11.2,8.7,13.7,11.2,10.0,9.2,10.2,9.9,11.6,9.9,11.9,9.5,10.7,13.8,9.8,10.4,12.8,9.1,9.7,11.0,9.9,11.8,11.1,14.0,10.8,9.6,10.1,10.4,10.6,12.8,11.3,13.0,12.0,11.4,10.0,10.7,10.4,10.5,10.8,8.1,9.0,10.7,10.4,10.8,12.3,11.1,12.3,11.0,12.8,9.8,10.8,10.8,9.3,11.2,11.4,10.1,9.9,11.4,10.5,10.8,8.9,11.3,14.3,11.8,10.7,10.4,12.0,11.1,11.5,19.1,10.7,9.9,9.5,11.6,11.5,11.3,10.0,10.0,11.1,11.3,11.7,10.0,11.3,10.2,9.3,10.9,11.1,10.1,10.7,9.4,11.2,10.1,9.1,10.4,10.2,9.9,10.3,11.3,10.1,11.0,10.4,11.1,12.1,10.1,11.6,11.2,10.4,11.4,10.1,10.6,10.2,10.6,10.6,10.2,10.8,9.4,8.2,10.4,10.3,9.8,9.5,9.9,11.2,11.1,28.3,10.0,10.6,14.0,11.0,10.7,11.1,9.6,9.7,9.9,9.8,9.9,11.2,9.3,12.0,11.0,10.3,9.4,9.8,11.4,10.2,11.0,9.8,9.0,10.9,10.2,11.6,10.8,10.3,10.1,9.9,10.8,10.8,9.5,9.8,10.3,10.5,9.4,11.6,11.3,10.2,11.4,12.9,9.0,11.3,10.9,9.6,11.0,9.5,10.3,9.6,11.1,11.3,10.5,10.6,10.6,9.7,11.5,9.8,12.3,9.6,10.7,9.8,12.4,15.6,10.9,11.4,10.2,9.3,9.9,10.1,10.9,11.2,11.6,10.0,11.1,10.2,9.3,11.1,11.5,10.3,10.7,10.7,10.6,10.1,10.0,10.0,10.0,9.3,10.1,9.4,9.2,11.1,11.1,10.7,10.4,10.2,10.9,10.8,11.0,11.6,10.0,10.0,12.2,11.2,9.7,10.0,10.2,11.9,9.6,10.8,9.2,11.6,11.9,11.6,10.8,12.3,11.3,11.9,10.8,11.2,10.7,11.4,9.6,11.3,10.4,9.9,11.1,11.3,10.9,10.8,9.9,9.3,10.2,9.4,9.9,10.5,10.2,12.3,13.4,10.7,10.0,10.0,10.2,11.5,9.7,10.1,9.5,11.0,10.8,11.5,10.8,10.1,9.7,10.1,10.0,10.0,10.5,10.9,10.1,11.4,10.9,9.6,10.5,11.4,10.3,11.3,11.0,10.4,10.5,9.4,10.1,10.0,10.0,11.5,10.6,12.7,10.0,10.5,10.0,10.0,10.3,7.6,10.1,10.4,9.9,10.2,11.9,9.9,11.4,10.0,11.1,9.9,10.2,10.5,10.7,9.8,10.2,10.6,11.2,10.0,9.7,10.7,11.3,9.2,10.1,11.5,9.7,9.9,9.6,9.5,10.6,12.5,10.7,10.7,10.7,9.7,11.6,10.7,10.4,10.9,11.4,11.3,10.1,9.7,10.0,9.9,10.6,10.8,10.9,10.1,10.0,9.8,11.0,10.6,10.0,10.0,10.3,10.9,10.0,10.4,11.5,9.9,12.1,10.1,9.8,11.3,10.6,9.1,11.2,10.0,11.5,9.6,10.1,10.3,10.9,9.9,9.7,11.3,8.7,12.2,11.2,10.2,10.5,11.0,10.9,10.0,11.9,9.6,9.9,10.9,15.9,11.0,10.7,9.7,11.1,11.2,11.4,13.5,11.2,11.7,10.0,10.4,11.4,10.1,11.0,10.1,9.9,10.2,9.4,11.0,10.1,10.6,10.2,10.3,8.9,9.7,9.9,10.4,11.3,9.9,9.5,10.0,10.4,9.6,11.1,11.6,10.4,10.3,11.6,10.1,10.3,11.0,10.9,11.0,10.1,9.9,10.4,10.5,10.2,10.0,10.2,10.9,9.8,9.8,11.6,8.0,10.1,10.0,9.2,10.4,11.2,10.4,29.7,9.2,11.7,10.7,9.8,10.1,10.7,10.1,19.4,9.5,10.5,11.1,10.2,11.0,9.7,9.8,10.1,9.6,10.5,10.2,11.2,9.7,10.1,11.6,11.4,10.2,10.7,14.3,9.0,10.5,10.2,11.0,10.1,12.6,9.5,10.0,10.3,9.0,11.6,11.5,11.1,10.4,10.1,13.7,11.3,11.4,10.7,10.7,12.0,10.9,9.9,9.8,9.7,10.0,10.1,10.1,9.2,14.1,10.7,11.4,11.1,10.4,11.4,9.7,10.3,9.9,13.2,11.3,10.0,9.7,10.0,12.4,11.6,12.8,11.3,10.7,9.9,10.1,10.3,10.6,11.3,11.7,11.8,9.7,10.0,10.8,10.2,10.7,9.3,10.0,10.6,10.7,11.2] + }, + { + "position": 7, + "values": [50.7,46.2,50.3,46.2,48.5,48.5,46.6,47.2,57.8,48.6,48.2,49.6,47.1,46.2,49.9,48.6,46.0,48.4,46.3,47.3,47.6,49.8,46.0,46.8,50.8,43.9,46.4,48.3,48.5,49.7,46.6,48.5,50.1,47.6,46.7,45.8,51.5,50.9,43.6,43.2,48.8,47.9,49.1,46.0,40.4,44.2,45.1,48.0,48.4,46.2,46.4,48.8,50.3,49.3,46.5,43.9,48.0,47.0,50.9,45.9,54.1,47.7,47.7,45.8,49.3,49.2,47.4,51.5,46.7,50.1,50.0,53.2,43.5,49.7,50.5,48.8,50.9,49.9,44.9,45.8,50.6,48.7,47.8,47.1,47.6,48.5,48.7,47.7,48.3,47.0,49.2,44.0,46.6,54.9,51.1,50.1,53.7,47.7,48.6,44.9,47.8,45.2,49.6,47.0,48.4,49.4,50.1,50.5,49.6,48.3,48.8,44.0,43.9,46.6,47.3,47.6,49.5,49.7,48.9,50.7,48.4,46.5,46.5,45.1,47.7,54.4,48.9,50.7,46.5,46.8,45.7,47.8,49.1,49.4,49.1,45.0,50.6,47.1,46.1,52.9,45.5,45.5,46.7,50.2,49.0,47.7,49.9,45.6,49.4,48.1,49.8,47.3,45.5,43.7,41.5,46.0,47.6,50.5,45.7,50.7,50.1,49.6,47.5,49.2,47.1,43.4,49.4,49.1,48.3,48.3,47.1,45.6,46.6,49.9,50.9,48.3,48.7,44.6,47.5,49.0,51.1,48.6,48.6,47.8,231.2,49.8,43.4,46.6,49.2,50.9,48.2,43.7,51.9,49.7,48.9,48.1,48.7,45.9,48.2,50.9,48.3,46.9,40.9,57.6,48.9,47.1,48.9,45.4,50.3,42.4,50.6,47.5,52.9,48.2,52.7,50.2,52.1,50.1,49.1,48.2,48.5,49.9,42.7,50.2,46.7,48.9,46.3,45.1,43.7,44.2,46.5,47.7,50.9,44.0,45.4,46.3,47.4,49.8,47.8,51.3,48.3,47.6,47.9,47.7,50.2,46.5,47.0,49.0,47.4,48.4,46.3,45.2,46.5,48.8,44.5,47.8,47.8,50.3,45.8,46.7,46.5,45.7,51.7,47.9,46.0,46.7,48.9,50.0,45.3,46.1,45.8,51.9,50.0,49.6,44.1,50.7,47.6,53.5,49.4,45.5,49.0,44.8,45.2,47.1,45.0,49.5,44.7,45.5,50.4,46.2,43.9,47.2,44.5,50.1,51.4,49.8,48.4,50.0,50.7,45.3,51.6,51.0,49.2,42.7,48.7,50.7,50.3,49.7,45.8,46.1,48.6,46.4,51.4,48.4,41.5,45.1,47.5,45.8,49.2,48.9,46.3,46.7,50.7,50.6,44.2,44.3,49.7,49.5,47.2,45.1,46.2,46.0,47.1,50.1,50.4,44.1,45.2,51.1,46.9,50.4,50.0,49.1,50.3,53.3,46.7,45.3,50.4,51.5,49.5,47.1,50.2,43.7,46.4,51.4,46.3,48.4,46.9,47.8,46.9,43.3,49.1,44.4,47.8,46.4,47.0,50.3,49.5,46.5,47.3,48.8,44.0,45.9,45.7,47.4,48.1,47.3,45.9,48.8,48.4,45.1,51.4,51.9,50.7,48.2,45.3,46.2,46.8,51.6,55.8,49.7,49.2,50.4,47.3,47.1,50.1,48.2,46.9,49.6,49.6,46.3,47.0,50.7,48.0,47.8,45.8,46.6,49.3,47.3,46.4,46.9,47.7,47.6,54.0,52.9,45.7,46.3,44.9,45.1,50.9,46.8,47.9,48.3,49.0,49.2,50.9,44.7,47.8,92.3,52.5,48.1,49.8,49.0,49.4,43.7,47.8,47.3,50.8,48.1,46.5,46.0,49.3,46.4,50.2,49.8,48.8,51.4,45.4,43.3,49.7,42.9,44.9,48.4,45.7,48.6,46.4,49.9,49.4,44.7,49.3,47.7,47.8,50.0,46.1,52.4,49.6,46.3,46.6,44.5,48.8,46.4,43.5,47.2,44.7,50.2,49.6,46.9,48.5,52.8,53.8,50.8,50.0,47.1,44.3,50.2,50.1,46.6,47.8,48.9,51.1,49.0,41.6,51.1,44.6,68.3,51.4,47.8,50.5,50.4,45.8,50.1,50.7,47.1,48.7,50.6,52.6,49.6,46.8,45.2,50.7,44.5,49.8,45.6,49.8,49.2,45.2,42.7,45.9,50.2,46.4,45.2,43.6,46.3,43.3,47.8,48.9,44.5,47.3,46.4,49.8,47.0,51.1,47.8,49.3,49.3,49.8,50.4,45.9,47.8,51.4,47.4,49.2,45.6,45.7,48.9,49.6,48.6,42.0,47.9,47.5,48.0,49.2,49.2,50.4,44.7,45.8,46.2,47.2,51.1,45.7,46.8,48.1,48.1,48.5,45.0,46.9,44.9,48.3,44.7,41.7,46.9,44.7,46.8,45.8,49.2,51.6,45.8,49.7,48.2,47.1,47.9,50.4,45.4,48.0,46.2,45.6,48.2,45.7,50.2,49.4,47.7,46.6,47.5,46.9,50.2,48.5,48.8,47.6,44.9,50.0,49.5,50.2,46.1,47.9,48.0,45.8,48.7,46.1,44.0,45.7,49.1,46.1,48.5,52.7,49.9,42.0,46.8,49.2,78.5,49.5,48.6,44.6,47.5,46.3,48.5,45.2,44.7,45.9,51.3,45.8,47.5,42.1,47.2,45.8,47.2,51.6,46.3,53.7,49.0,46.0,49.0,45.6,44.8,44.2,47.8,53.1,45.4,44.3,49.3,45.8,46.7,47.0,44.9,49.8,43.2,50.2,50.1,48.4,46.7,49.1,45.0,46.4,46.4,50.8,48.9,51.2,47.3,43.3,52.8,50.7,53.8,51.1,49.9,52.1,48.8,52.1,43.8,50.4,46.3,48.7,48.5,46.4,50.6,47.6,44.8,47.0,48.5,50.8,49.0,44.6,46.1,45.7,47.5,50.6,49.4,47.8,42.9,50.8,49.2,47.3,46.6,45.7,50.2,48.2,49.9,45.8,45.1,50.5,48.4,48.3,47.1,44.7,48.0,47.8,46.9,49.8,44.8,47.9,47.6,50.1,51.7,45.5,47.6,49.9,47.8,38.9,52.4,50.8,48.5,45.5,50.8,45.2,50.9,46.8,48.1,45.8,49.5,40.7,49.6,44.8,45.4,49.0,50.2,49.3,50.6,46.6,49.8,46.8,46.6,48.9,48.5,46.3,44.7,48.1,49.3,43.2,49.2,47.6,43.3,51.0,48.3,49.5,46.1,44.0,47.0,48.2,48.3,48.8,46.5,48.8,47.4,46.1,44.7,48.5,44.9,47.3,47.7,51.1,45.7,50.3,44.5,45.9,47.4,49.5,44.8,47.2,47.2,48.9,51.3,49.3,44.0,44.1,47.3,47.8,48.3,51.2,41.4,46.1,46.0,49.8,49.3,47.8,45.6,47.8,48.8,42.5,49.2,47.9,47.9,48.8,46.2,46.9,48.0,45.6,45.3,47.7,48.5,48.4,43.6,47.0,49.9,45.7,45.4,47.6,44.3,45.6,44.7,46.3,45.8,48.5,49.2,49.0,46.4,53.8,49.8,48.5,45.3,43.9,48.2,45.2,48.8,49.5,47.2,48.6,49.1,50.6,48.6,43.1,49.4,44.8,46.7,44.4,46.9,45.1,47.8,49.3,47.0,54.1,47.5,45.9,50.8,47.9,49.0,53.1,50.7,49.9,49.2,49.4,49.6,45.8,49.8,46.1,49.0,45.3,46.7,47.5,45.0,48.7,45.9,43.5,53.2,47.1,45.4,48.9,44.5,47.9,46.6,47.1,72.1,47.9,47.4,48.6,50.6,43.0,50.7,47.1,49.5,47.9,50.3,49.6,48.8,45.2,47.9,45.2,47.7,47.4,47.8,50.4,45.0,47.3,50.0,48.9,48.3,45.9,50.4,49.6,48.4,45.0,44.8,45.6,44.9,49.8,51.2,47.0,48.5,45.2,47.7,48.0,49.3,46.9,48.5,51.9,50.0,48.8,46.0,45.3,51.5,50.0,47.0,45.2,49.4,46.2,49.9,48.1,50.7,44.9,48.9,49.5,47.3,49.4,43.3,50.1,40.7,47.7,48.9,51.9,45.0,45.3,47.1,46.3,47.0,48.8,49.3,48.1,48.7,45.4,52.3,49.2,46.3,49.1,48.7,48.2,49.0,46.7,47.8,50.6,47.3,45.2,46.8,50.7,52.7] + }, + { + "position": 8, + "values": [34.3,47.0,34.9,38.1,36.4,35.3,38.7,35.7,34.5,38.7,37.6,36.4,37.4,39.0,37.0,38.0,39.1,36.5,38.3,34.2,39.1,38.0,39.8,35.0,34.8,27.9,37.6,38.3,36.1,34.4,37.1,37.5,34.3,38.4,37.6,35.7,37.4,38.9,35.3,39.8,36.0,35.5,34.7,35.8,37.8,42.2,36.7,38.5,37.8,36.3,37.7,35.3,37.2,37.9,36.1,33.3,34.9,35.8,35.7,37.3,37.8,38.6,39.0,38.9,36.0,37.3,32.8,37.6,36.0,33.3,37.1,37.8,38.9,36.2,40.1,35.6,36.6,36.6,36.5,38.1,35.7,33.4,37.4,38.7,40.2,37.5,35.3,35.5,38.1,35.8,39.4,35.0,34.5,37.1,33.8,37.5,35.9,36.7,38.1,38.4,41.2,37.2,38.5,38.3,37.5,34.4,36.0,37.0,35.8,28.8,28.6,39.0,38.8,37.6,37.1,31.7,36.8,36.5,37.0,36.0,34.4,39.8,35.8,36.1,40.2,40.3,35.7,36.3,37.0,36.6,38.7,33.5,40.7,35.5,37.7,36.7,34.4,42.3,38.7,37.7,32.6,35.3,37.4,37.8,38.3,35.3,37.1,38.6,35.9,37.9,33.2,33.3,33.2,38.6,36.0,39.2,32.6,34.8,36.0,27.2,37.4,38.8,36.9,36.4,38.1,37.6,37.9,38.8,37.0,36.4,38.9,38.6,30.7,36.8,37.5,36.0,35.4,38.5,37.6,37.9,36.8,37.4,48.9,36.8,38.0,35.0,42.8,37.8,34.7,35.9,38.0,34.3,36.6,37.8,37.0,35.2,36.2,52.0,36.6,36.1,40.2,37.7,37.4,35.0,35.4,41.3,37.7,38.4,37.7,36.6,36.2,33.6,38.1,39.3,41.2,37.9,40.0,35.4,38.4,37.3,36.1,37.6,35.1,34.8,44.5,35.2,39.7,34.8,39.1,38.5,37.5,37.1,38.2,37.2,34.9,36.2,36.5,36.5,38.8,33.6,35.1,37.5,38.2,35.7,37.5,37.8,36.8,37.7,37.3,40.9,31.8,35.3,37.9,30.3,31.3,38.0,35.1,37.2,39.0,38.2,38.8,36.9,36.9,38.1,34.9,36.4,35.4,43.0,39.6,37.8,36.1,43.7,33.6,35.7,35.5,37.5,37.6,33.2,44.1,37.5,36.1,39.3,40.4,36.7,35.4,38.8,35.1,38.1,39.2,29.3,37.3,37.7,40.0,40.5,37.8,34.0,34.5,38.1,38.0,40.1,39.8,36.8,37.6,33.0,28.8,31.9,39.5,37.9,32.9,38.0,39.6,37.4,39.9,40.9,33.9,43.3,35.8,36.9,37.1,35.5,37.3,42.0,37.8,33.8,37.9,39.7,36.5,38.0,34.6,37.5,38.5,39.4,35.7,37.1,35.2,39.4,34.4,35.2,38.2,39.8,36.5,35.2,37.8,39.3,35.6,32.2,35.8,36.1,38.6,38.7,37.4,34.4,39.6,40.2,34.5,35.4,37.0,38.6,35.6,36.5,39.7,30.1,36.4,34.6,38.1,37.2,36.1,37.3,34.2,29.2,36.7,37.9,37.5,34.5,27.1,37.8,44.0,37.4,34.4,33.6,37.1,41.2,39.6,33.9,34.4,33.9,43.9,36.7,38.8,32.1,35.7,37.1,37.1,36.5,36.3,39.1,38.2,39.7,38.3,42.2,36.2,38.6,34.7,39.8,38.8,33.9,35.8,36.4,37.6,37.6,42.7,36.9,36.7,38.3,37.3,46.5,36.5,32.8,36.6,36.5,34.6,35.7,35.4,34.6,34.6,35.2,38.3,36.0,28.5,36.7,37.7,34.6,36.6,37.4,35.2,37.0,35.4,33.4,37.1,36.0,35.3,35.3,36.9,37.9,37.5,33.2,35.5,35.9,31.0,35.5,38.1,35.9,37.0,35.5,36.5,39.2,36.1,37.0,43.5,36.9,38.5,34.5,37.9,35.1,37.4,36.2,36.7,38.3,41.4,35.0,39.0,35.0,33.5,33.7,35.7,35.3,34.4,38.4,39.3,33.8,41.7,35.9,35.1,42.7,35.4,38.7,38.5,37.3,36.9,36.2,34.3,33.3,28.5,37.5,37.5,68.8,35.2,37.2,39.2,38.9,33.2,37.6,32.8,36.4,38.4,37.5,36.0,36.2,40.6,37.7,38.2,37.0,37.1,32.2,36.2,37.0,35.4,47.4,37.9,37.6,36.9,41.8,37.9,33.9,39.3,43.2,36.8,30.9,38.9,35.8,33.2,40.1,35.4,37.7,37.4,27.3,37.6,37.1,37.4,35.9,36.6,39.7,37.0,39.5,38.9,36.8,34.9,38.0,37.5,38.7,37.0,38.1,36.3,37.2,39.2,38.0,33.7,38.1,37.6,37.2,42.6,32.3,37.0,36.0,35.9,38.0,36.6,37.1,36.1,37.3,38.0,31.0,28.8,34.4,37.0,37.3,39.0,37.9,37.9,28.6,36.2,39.4,37.8,36.7,37.5,36.2,40.4,34.3,37.3,38.7,38.8,37.2,34.5,39.8,37.0,37.2,39.7,32.7,36.0,35.0,38.8,36.0,37.2,38.1,29.8,36.2,34.8,41.2,39.0,38.0,39.9,38.2,37.6,34.2,34.2,35.3,39.8,35.2,38.7,39.6,40.2,36.0,40.4,35.3,37.0,38.0,39.8,37.1,37.7,39.2,35.9,38.8,36.4,37.4,38.7,35.6,36.6,45.4,38.8,35.2,34.9,36.2,36.6,37.7,38.7,38.0,40.7,32.2,34.5,34.6,39.2,37.6,35.6,37.5,36.8,38.2,37.5,35.9,39.2,36.5,36.7,28.7,37.5,36.9,35.8,32.4,36.2,36.0,37.8,36.8,36.6,34.9,38.2,35.7,36.3,37.0,40.8,36.2,33.9,33.1,37.7,36.7,37.5,38.1,39.2,40.2,37.1,37.2,28.6,37.3,31.1,38.3,38.4,37.7,32.4,34.4,36.2,38.3,39.7,35.7,38.7,35.2,38.6,33.6,38.5,38.6,35.1,33.7,38.6,40.4,37.1,38.3,26.9,37.1,38.6,36.0,35.7,35.0,36.9,36.5,38.3,36.6,37.9,34.7,37.7,40.9,33.0,37.0,40.5,39.2,33.7,34.1,37.6,41.5,38.6,38.3,32.5,33.3,37.3,36.4,36.0,36.6,39.0,37.9,42.1,36.1,34.4,37.9,37.2,36.6,37.9,30.0,39.5,36.4,37.3,39.7,36.7,37.4,30.1,37.2,36.6,29.6,39.5,35.6,37.7,36.9,37.2,39.2,37.4,38.3,38.3,37.2,39.8,36.2,38.1,37.9,38.3,34.5,37.6,37.6,41.2,36.7,35.0,37.7,32.8,38.1,38.6,30.5,33.2,35.8,37.9,38.4,38.3,37.6,36.0,34.2,29.3,37.6,37.9,38.0,38.6,32.6,35.1,38.0,36.2,35.7,39.3,37.2,37.6,36.9,33.2,36.1,36.4,40.5,34.5,35.5,35.6,38.0,38.0,38.7,37.1,39.7,38.1,39.5,38.7,37.7,43.4,36.6,39.4,37.2,40.6,43.0,38.3,37.2,39.8,37.7,38.0,37.6,40.7,38.7,36.9,41.4,38.7,37.1,36.7,36.8,37.0,38.4,38.1,38.7,36.1,37.3,39.3,38.3,38.1,37.5,37.9,40.2,36.1,37.1,36.7,34.3,38.1,38.8,33.1,36.8,34.5,34.5,37.9,39.3,35.6,37.3,37.5,36.7,36.6,38.0,39.6,38.6,39.0,36.6,35.7,36.3,36.0,37.1,29.8,37.0,37.9,35.4,39.3,39.0,36.7,35.4,33.8,39.5,34.2,40.0,38.1,37.8,31.2,33.2,33.9,37.0,36.6,39.6,38.0,35.7,37.7,36.3,37.1,38.0,38.5,37.9,38.3,38.5,35.7,37.1,38.4,38.7,38.9,34.4,37.9,41.6,34.7,39.0,39.7,27.0,35.6,44.9,37.5,38.5,37.7,39.1,43.5,38.8,36.8,37.6,37.3,35.1,37.4,33.2,34.9,34.7,38.9,34.7,35.1,36.0,37.2,30.5,37.6,36.9,37.6,38.4,41.3,48.4,35.5,36.5,37.2,33.4,37.9,34.1,36.3,35.9,37.5,35.9,37.7,34.4,31.7,41.9,35.8,35.1,35.9,37.2,28.6,37.0,39.7,34.4,38.6,36.0,37.4,37.9,36.2] + }, + { + "position": 9, + "values": [178.4,71.7,61.0,201.8,212.4,201.7,169.2,147.6,143.9,167.7,223.7,176.0,100.7,159.9,189.3,156.5,69.4,194.3,95.0,58.4,58.7,169.2,64.0,207.7,150.5,169.1,67.9,187.0,180.8,166.4,158.8,73.0,148.9,176.9,195.1,145.0,199.2,168.8,170.5,60.1,56.9,193.9,212.1,146.3,58.7,68.2,160.3,164.7,177.1,114.9,147.6,180.9,169.1,163.7,176.4,109.4,148.9,209.5,176.9,165.9,187.8,150.1,166.1,197.1,134.8,155.3,193.1,119.7,161.8,180.2,147.1,159.2,183.9,117.9,62.6,206.1,167.2,145.4,166.6,175.4,168.9,199.8,59.0,63.3,179.5,166.0,190.6,175.8,203.3,199.3,146.8,185.9,153.1,163.3,200.2,159.9,176.9,186.9,219.3,158.3,154.0,174.9,159.0,166.7,59.8,195.8,177.9,176.1,161.1,135.5,134.0,69.4,162.4,173.0,55.4,235.5,58.6,148.4,152.4,165.6,61.5,167.8,60.5,150.9,60.2,134.9,163.5,125.0,148.2,168.6,147.6,151.4,200.5,186.4,175.9,171.3,174.8,146.2,200.9,152.2,157.4,168.2,181.2,60.0,146.5,158.5,133.6,58.3,163.0,60.8,192.2,182.6,173.4,151.1,198.5,49.2,153.6,195.2,201.2,134.5,83.8,176.2,194.0,171.5,55.8,166.6,155.3,60.5,220.9,176.4,167.7,144.8,188.7,168.5,59.4,154.3,181.5,26.5,146.6,174.6,81.0,169.4,139.7,140.5,158.3,53.1,93.0,160.1,190.2,195.2,62.9,175.9,60.8,188.6,186.5,183.1,193.0,162.4,56.4,201.1,57.1,222.3,105.9,154.0,188.5,131.9,156.0,60.5,153.5,163.9,158.5,125.0,203.3,180.0,179.3,188.3,182.4,124.0,162.1,174.4,183.4,71.8,184.9,36.3,178.9,49.8,171.1,160.6,152.1,155.5,75.0,167.2,178.4,182.9,177.9,165.4,153.9,163.2,153.1,183.1,110.1,180.0,70.3,144.8,170.4,174.3,161.7,60.8,152.9,177.1,92.0,173.2,60.9,167.2,131.1,165.5,190.0,152.1,164.3,170.1,76.8,155.0,163.5,178.4,166.3,154.7,64.8,222.3,159.3,67.7,98.9,158.5,104.8,150.5,165.2,180.0,143.3,175.9,150.3,151.9,62.3,60.6,178.4,183.5,122.6,160.8,186.6,63.5,61.3,151.5,59.1,95.2,69.8,61.6,183.8,177.0,179.1,180.5,209.8,152.1,168.5,169.3,66.9,233.7,122.6,109.1,196.7,156.9,59.7,149.9,149.5,181.6,147.1,56.8,185.7,112.2,208.1,68.0,150.9,174.6,174.1,134.0,208.4,153.7,176.1,164.0,57.5,156.0,156.5,97.8,209.1,143.4,60.3,169.4,181.5,104.6,170.6,167.5,174.9,144.5,182.0,207.6,170.0,171.8,202.9,139.7,155.9,184.7,159.1,177.6,178.4,91.1,61.9,198.3,193.8,93.3,71.0,58.9,155.4,167.2,191.7,59.1,54.7,59.2,187.0,183.0,146.5,187.5,139.3,223.8,165.0,68.4,185.9,178.1,122.2,146.2,60.2,213.9,182.3,187.0,191.0,194.0,146.2,170.0,126.5,185.1,63.3,191.0,179.2,182.8,179.9,142.3,213.4,152.2,195.4,57.7,61.1,57.8,172.0,222.9,57.0,55.2,170.0,56.6,172.4,167.8,185.9,186.4,59.8,56.8,224.6,164.2,184.4,185.6,193.1,69.6,144.1,197.3,165.1,120.7,161.8,183.8,166.5,186.8,194.1,145.4,97.9,171.6,181.7,84.4,173.4,176.9,221.2,185.0,148.1,168.7,48.9,158.4,194.3,192.1,174.4,191.9,175.1,59.1,175.7,176.7,54.1,151.5,68.5,171.7,128.9,180.0,62.8,157.0,137.7,185.9,191.7,177.9,177.7,151.7,217.3,166.3,166.4,153.3,163.1,136.4,145.2,94.1,190.1,96.4,176.4,47.1,198.6,215.9,147.6,198.6,144.8,177.0,173.1,178.0,188.3,192.3,204.6,221.9,159.3,181.2,203.2,56.3,194.2,136.2,174.7,125.8,170.5,237.1,91.8,170.8,188.1,165.1,141.3,59.6,185.3,178.2,182.6,136.8,208.3,165.7,155.8,184.6,158.5,157.2,174.5,139.7,182.8,204.6,194.0,222.2,70.2,178.9,60.6,159.1,59.7,60.2,156.4,180.7,176.4,209.2,166.7,189.1,143.0,54.8,165.1,141.5,60.9,185.2,161.4,149.0,123.7,202.1,60.5,107.7,176.3,60.2,165.0,75.5,149.4,162.3,178.1,58.3,186.1,181.1,58.7,58.6,168.8,226.0,176.0,153.5,95.8,165.4,165.6,188.7,220.2,181.1,151.6,156.9,128.7,70.2,57.1,172.6,175.8,228.5,81.3,56.5,139.5,151.5,152.6,175.7,61.3,59.7,142.9,151.7,67.8,104.6,59.7,160.8,178.5,71.0,61.7,170.0,167.3,149.3,171.0,156.2,182.3,187.6,188.5,167.4,192.0,184.3,148.2,172.9,172.0,77.9,203.4,57.9,141.1,201.4,93.8,168.4,189.5,162.3,180.9,157.3,164.8,154.1,166.9,56.2,165.7,162.3,194.3,218.5,57.0,152.7,166.8,59.4,53.9,184.0,96.0,195.0,166.2,172.4,159.6,184.2,178.7,223.8,166.1,194.5,161.9,153.4,57.0,67.5,165.9,73.5,48.3,60.0,57.8,134.4,222.4,181.4,152.5,179.0,187.2,150.4,163.2,150.6,171.2,131.3,187.8,173.1,215.4,160.2,64.1,173.3,162.1,175.1,173.2,176.1,209.8,175.1,180.0,183.1,178.9,170.9,149.4,181.4,177.7,199.4,58.6,165.8,199.7,166.6,153.8,194.2,178.7,200.8,200.8,57.6,173.6,66.1,187.6,192.7,168.1,177.1,154.5,175.6,166.6,191.9,59.3,77.4,202.0,181.2,203.2,204.3,191.6,168.6,182.9,154.8,185.9,170.2,57.9,182.8,148.1,146.7,94.5,145.9,158.3,143.6,168.4,189.4,172.0,159.7,182.6,59.4,156.2,137.1,176.4,162.1,129.3,56.8,64.1,170.2,60.8,166.4,153.3,57.6,161.2,171.4,212.3,48.0,151.0,147.8,197.5,143.3,180.6,151.1,70.1,57.1,140.3,231.9,60.0,150.7,166.2,178.1,157.5,164.1,160.5,59.1,167.6,151.2,177.9,80.6,53.3,111.1,175.8,160.1,176.6,210.2,197.1,179.4,171.4,158.0,146.4,151.2,150.5,157.6,175.0,59.9,165.9,174.7,62.5,168.9,61.0,159.2,198.2,170.5,174.4,164.5,131.9,157.9,196.9,175.2,61.4,225.0,58.9,242.5,176.1,108.0,217.0,74.7,63.1,172.7,188.7,159.3,69.9,211.7,165.1,153.8,132.9,195.3,161.8,152.5,136.1,64.8,132.2,171.7,191.4,49.1,169.0,186.8,69.1,152.7,178.8,54.9,166.5,62.1,167.2,172.3,111.7,186.3,177.7,179.7,160.9,217.0,134.8,182.2,61.3,158.7,69.2,56.6,175.4,145.7,103.3,59.4,153.5,58.0,163.7,164.9,167.1,192.5,61.8,59.2,190.4,186.1,159.0,58.5,160.0,53.8,173.6,169.6,212.7,202.1,113.3,190.1,201.6,171.8,179.4,185.4,189.0,149.5,61.0,209.5,60.0,174.3,108.5,127.3,170.4,185.8,59.7,217.0,212.2,181.6,197.4,155.4,54.1,73.8,153.0,155.1,158.2,198.0,179.0,181.0,188.3,206.4,165.6,60.1,138.5,176.7,173.5,54.3,190.8,199.7,177.5,161.5,214.0,179.7,61.5,182.2,176.4,161.6,159.4,112.1,214.7,211.3,144.7,159.1,190.4,134.7,185.5,63.2,147.1,148.0,172.7,103.6,192.0,171.4,61.1,140.6,203.5,153.0,173.0,149.6,61.0,184.0,225.2,59.3,48.5,58.2,138.2,211.6,65.2,167.2,159.4,180.0,155.0,204.6,169.6,190.8,168.7,96.8,168.5,185.3,171.2,157.6,218.9,93.1,175.4,218.2,68.2,191.5,193.1,62.6,115.5,200.1,156.7,158.9,61.3,176.5,126.6,61.0,176.7,192.1,179.9,164.1,224.6,175.4,88.3,110.3,190.3,151.0,206.1,169.9,58.2] + }, + { + "position": 10, + "values": [139.4,174.2,165.3,164.2,155.1,150.0,131.0,118.0,134.5,150.3,159.2,59.6,127.9,132.6,153.5,126.4,119.8,154.3,131.4,146.9,163.6,152.0,164.1,153.8,113.3,169.1,143.0,147.3,131.3,129.1,108.2,125.9,122.1,138.6,152.9,145.5,117.3,139.4,164.7,157.8,146.8,153.8,162.4,115.0,164.1,148.8,125.6,110.1,150.8,151.2,119.9,150.6,144.3,148.0,141.5,157.8,124.3,153.9,134.9,151.2,120.7,122.4,126.7,145.8,144.2,122.8,146.5,109.7,130.1,149.2,146.6,123.1,138.4,144.0,164.8,149.9,137.3,129.0,121.6,148.0,135.6,151.9,154.4,171.2,133.2,131.2,159.8,132.8,145.5,151.3,155.9,151.7,155.5,119.2,156.2,128.8,153.9,122.7,148.6,125.2,127.5,144.1,111.6,163.1,135.3,146.2,139.5,147.1,136.9,130.0,132.5,127.7,147.8,133.6,162.1,101.9,157.3,135.2,145.2,131.1,126.2,166.6,164.4,114.3,161.5,126.0,143.0,148.2,120.4,131.4,148.7,123.3,153.4,151.4,132.6,145.1,148.8,125.4,143.8,122.6,116.7,137.3,151.5,162.1,133.9,147.8,125.7,163.3,131.1,167.1,147.6,144.3,131.3,143.6,160.9,123.0,151.7,150.4,154.4,140.6,143.9,133.7,149.4,129.6,160.2,132.0,145.3,162.7,159.3,140.7,126.6,156.5,140.2,132.0,147.5,110.2,137.9,181.3,118.9,137.8,165.2,138.0,140.8,124.9,127.0,66.0,173.2,139.8,154.6,148.0,167.5,154.8,126.1,161.4,147.4,129.4,161.4,162.5,122.1,157.6,161.8,159.9,128.3,146.2,142.0,126.1,108.6,165.0,122.1,131.9,126.4,135.5,151.5,136.2,131.3,148.8,133.5,130.8,140.7,118.7,146.8,152.1,149.2,179.9,139.5,162.9,131.8,125.3,121.7,129.3,152.5,139.8,122.6,148.5,136.5,123.0,122.1,133.5,122.4,150.8,148.7,137.2,146.9,115.8,129.3,154.8,128.2,164.5,140.4,133.9,139.1,143.4,164.4,148.2,136.5,129.1,137.0,117.0,136.9,140.9,165.9,124.8,124.9,138.5,151.4,122.6,145.4,157.1,163.4,143.3,122.9,143.5,143.5,146.6,147.6,136.0,144.0,143.0,143.0,128.3,159.1,164.6,149.1,137.4,171.7,149.6,126.8,165.7,168.1,134.4,164.0,121.7,147.0,155.7,149.4,137.8,146.8,134.9,145.3,110.8,181.3,125.5,136.0,111.3,132.4,149.8,162.4,163.5,136.8,118.9,107.3,133.3,126.2,163.3,153.1,160.4,146.9,155.2,121.2,143.4,140.2,146.9,127.7,146.8,156.7,131.9,110.0,164.3,131.9,119.3,158.0,129.7,137.2,129.9,137.2,116.1,129.8,153.5,120.0,156.2,151.4,153.5,146.9,152.1,134.8,120.6,120.0,152.7,139.8,147.0,139.6,132.5,167.6,153.6,160.6,140.0,150.0,164.6,122.9,132.0,149.9,139.4,175.4,156.1,166.9,146.3,126.7,138.4,121.2,81.4,112.1,155.5,137.7,135.0,103.9,116.0,148.2,164.7,143.4,133.5,137.1,147.3,140.2,122.8,131.8,144.8,157.6,142.0,139.9,141.3,152.3,144.4,152.4,155.9,160.8,156.7,166.1,164.2,151.9,155.1,142.5,160.9,134.9,130.6,155.0,140.2,140.6,152.7,165.8,158.6,152.3,149.8,149.4,150.4,156.6,113.6,169.0,135.9,134.5,142.1,123.4,157.8,149.8,143.5,157.5,119.5,138.8,139.8,66.2,143.4,127.6,155.3,137.0,118.7,152.4,128.5,162.8,152.4,126.0,145.6,148.8,146.6,143.5,155.4,135.9,149.8,153.5,141.4,146.5,151.2,127.6,130.6,173.7,129.8,146.5,138.0,140.5,135.1,147.8,134.8,155.7,151.5,123.5,140.4,148.2,123.3,135.6,143.8,52.6,160.3,137.6,153.0,139.5,118.0,163.2,156.2,116.8,148.8,149.0,139.4,143.2,141.4,143.0,151.9,126.0,135.7,159.5,150.8,144.0,144.3,127.6,101.9,126.7,144.1,159.0,150.6,135.8,156.0,139.1,162.8,141.6,241.9,134.2,142.6,103.1,149.0,144.3,136.4,136.4,130.4,120.2,135.1,147.3,140.5,163.3,178.5,151.8,147.5,170.6,144.0,165.2,134.7,124.2,165.0,157.5,130.1,137.7,132.5,165.4,149.9,157.2,131.7,167.1,146.4,157.1,131.7,152.8,114.6,167.4,142.3,118.8,136.2,161.9,118.5,151.7,131.3,130.5,123.8,163.0,144.0,138.6,160.1,160.4,136.5,167.4,133.7,126.6,162.6,134.9,135.7,154.5,149.5,155.6,145.6,115.0,125.0,150.8,164.9,129.7,75.9,130.5,99.1,160.4,148.9,121.6,127.1,133.9,165.6,163.1,121.0,151.1,149.6,116.1,165.6,142.6,132.9,145.8,150.4,117.1,147.6,120.3,132.2,123.6,145.6,141.2,146.8,129.4,151.0,154.6,150.5,127.3,130.8,143.6,172.2,160.5,153.2,133.4,152.2,131.0,137.6,135.4,148.5,124.0,127.0,145.5,138.3,129.1,122.3,162,172.5,142.1,150.4,124.6,134.6,164.1,132.1,164.8,134.7,139.9,134.0,134.9,121.9,137.0,157.2,160.8,132.1,154.8,125.2,170.4,162.2,107.5,129.9,156.0,155.6,162.1,162.7,146.9,155.1,136.7,148.1,146.5,139.2,123.0,121.3,122.7,124.6,145.3,141.9,154.5,155.8,116.7,144.9,158.1,125.7,139.5,146.5,167.3,143.5,143.7,142.3,148.0,133.0,146.9,118.8,152.1,146.5,150.4,178.3,145.7,147.8,154.1,109.4,150.8,135.0,149.4,140.7,156.1,128.8,138.2,148.9,129.3,147.9,131.8,124.6,142.1,136.4,146.1,161.2,150.8,142.6,160.8,135.7,147.1,152.6,137.2,137.0,144.8,129.3,143.2,152.9,126.4,132.9,137.8,154.8,122.9,102.8,122.7,142.4,143.7,139.4,131.8,146.0,162.8,166.4,120.1,141.9,105.9,158.4,162.0,151.3,138.8,153.7,166.0,119.0,146.3,130.0,116.5,164.6,161.9,118.9,117.4,134.6,140.6,151.6,120.0,164.8,148.0,129.5,164.8,61.3,126.5,129.8,116.6,140.2,137.4,127.3,162.9,147.8,121.9,76.4,135.0,120.8,160.8,132.8,129.4,149.4,132.2,153.7,150.0,143.2,128.1,118.1,120.4,118.9,124.0,134.6,165.7,141.2,165.8,150.2,128.6,164.5,123.3,149.3,131.2,160.0,135.7,123.5,151.4,121.4,150.4,165.5,192.7,165.2,165.4,139.4,132.6,78.1,151.2,135.8,168.8,148.7,127.1,144.3,151.9,131.2,137.5,157.3,143.6,127.8,120.5,143.3,125.7,150.1,135.8,147.6,161.1,133.2,140.7,118.2,144.7,142.4,159.5,132.1,162.6,132.5,129.5,59.6,136.6,138.1,129.0,130.1,157.6,154.5,146.2,160.7,124.0,145.5,161.8,132.8,118.5,145.4,151.8,123.2,148.6,123.8,133.7,130.8,169.4,138.6,162.5,153.1,144.0,163.0,129.8,128.5,160.8,135.2,132.9,142.2,142.3,151.6,158.3,149.4,133.7,146.9,134.3,137.1,147.6,154.9,151.3,159.8,129.3,182.5,143.4,142.3,163.8,135.5,158.3,141.9,143.9,156.3,114.9,150.8,127.9,152.7,123.8,125.4,134.2,145.5,121.9,140.2,148.4,118.3,142.1,162.9,131.8,136.2,149.9,137.4,150.7,158.7,133.0,154.6,138.4,166.1,143.3,141.9,124.1,124.5,138.3,153.3,153.9,137.1,120.9,119.8,154.3,144.9,168.4,119.4,110.8,130.3,154.4,131.9,126.8,141.9,154.6,142.9,122.2,154.8,120.0,166.7,145.8,156.3,160.5,147.4,162.2,143.7,159.7,148.8,136.8,148.2,163.2,122.0,157.3,146.5,129.8,133.8,146.6,140.7,139.8,129.3,125.5,152.3,139.8,158.3,149.5,147.0,135.8,168.2,157.9,114.9,153.2,127.2,129.8,165.7,142.5,157.0,150.4,165.8,159.7,110.5,152.3,96.0,136.9,142.9,124.3,125.1,137.1,134.3,155.0,163.6] + }, + { + "position": 11, + "values": [37.8,39.2,42.1,39.8,38.2,37.3,40.3,37.1,49.1,43.0,36.4,41.2,39.8,40.5,41.0,34.6,36.9,39.0,37.0,35.2,34.0,38.2,44.0,34.8,38.3,39.9,40.6,38.6,33.2,40.4,39.4,38.9,33.2,41.6,40.1,43.5,36.3,39.5,45.7,42.9,38.0,34.6,36.6,32.9,38.6,33.7,48.2,33.7,42.1,38.5,38.3,40.2,38.6,39.8,47.5,39.6,39.0,37.1,39.8,37.3,43.1,39.6,36.8,39.8,39.4,37.9,38.7,39.7,36.5,31.1,42.8,36.8,37.6,37.8,36.0,37.1,40.3,37.1,32.8,42.1,38.4,38.5,36.7,39.6,38.8,40.1,32.3,39.8,35.6,39.8,37.6,36.8,38.3,39.0,50.4,39.4,54.9,32.1,40.6,37.5,39.2,38.0,34.4,42.5,39.7,37.7,50.8,38.1,37.5,34.7,32.9,39.5,38.8,41.9,38.0,25.8,39.1,39.3,40.6,40.4,38.3,37.9,34.2,35.5,34.2,41.8,39.6,51.9,39.3,37.4,36.7,39.8,40.2,52.3,38.5,42.1,38.5,40.3,30.4,41.9,34.5,38.3,38.4,39.7,50.2,35.8,39.6,39.5,39.1,39.0,36.9,38.2,36.5,46.0,40.4,39.2,40.2,52.9,36.8,33.9,42.5,38.0,40.1,38.2,34.1,46.5,39.9,37.5,35.7,40.7,42.0,38.7,40.0,38.9,34.0,39.4,33.4,35.8,38.8,37.9,40.2,39.5,42.5,41.2,124.9,38.2,49.9,38.4,37.7,53.4,41.5,35.2,37.4,41.9,37.7,33.0,41.3,37.5,42.9,40.3,41.3,38.4,39.2,40.9,39.2,38.8,34.1,40.9,41.0,38.1,41.1,39.3,38.3,39.2,39.9,39.3,39.4,40.2,37.8,34.0,38.1,40.0,37.7,36.2,37.1,39.4,40.0,37.6,40.1,41.1,36.6,40.8,32.5,38.0,37.6,38.7,39.3,38.2,38.9,38.2,36.4,44.5,39.6,38.2,36.5,38.5,36.0,36.8,42.4,41.6,35.3,41.3,40.6,40.1,39.5,40.0,32.3,36.3,40.1,39.2,36.1,35.9,41.2,36.4,39.5,38.6,37.7,39.6,39.1,37.7,36.3,38.6,39.9,36.9,37.5,40.7,39.3,38.0,46.5,37.4,37.3,39.7,41.6,39.2,42.7,35.9,39.6,41.4,41.3,38.6,33.8,38.4,42.8,35.2,39.3,55.7,38.1,40.5,37.3,38.1,37.4,34.4,43.2,28.9,41.8,39.4,39.8,36.5,37.2,41.2,34.5,38.9,51.8,38.0,40.3,34.3,38.1,40.7,40.3,34.4,35.5,45.9,35.7,37.1,41.9,39.4,38.1,33.5,38.2,32.9,41.6,35.6,33.6,39.8,39.9,42.7,31.9,42.2,35.6,38.8,31.7,37.3,43.7,36.9,40.3,39.1,38.2,49.4,38.4,39.9,40.7,35.1,42.6,41.7,41.4,38.8,39.5,40.2,40.5,38.7,41.2,37.0,40.1,38.7,34.3,39.9,35.7,38.7,38.9,23.0,33.9,34.5,36.8,40.9,34.3,48.4,39.1,39.6,38.7,33.6,40.1,38.6,38.7,38.9,37.1,36.1,35.9,37.2,33.7,51.9,39.0,38.2,37.8,38.7,39.8,37.2,38.9,38.8,50.0,40.9,36.6,33.4,38.9,38.1,39.6,36.8,39.1,40.0,38.9,41.4,48.2,39.1,42.2,41.7,44.0,38.2,39.8,32.2,39.2,39.5,38.0,37.3,49.7,37.7,51.5,34.7,41.5,37.6,72.6,40.5,40.5,38.2,38.8,35.3,50.9,39.1,36.8,37.7,39.8,40.4,36.7,36.1,57.3,33.8,38.9,53.3,35.3,37.2,39.4,50.4,40.0,37.3,34.1,38.2,32.4,33.5,55.8,38.3,39.0,39.5,38.4,51.1,51.6,35.2,40.8,41.1,38.2,41.2,34.0,42.2,43.1,34.4,45.7,32.4,37.1,37.0,47.3,39.6,53.7,38.0,41.9,37.5,34.0,39.5,41.7,41.3,40.9,48.9,39.1,38.5,39.5,23.1,38.7,39.8,93.2,38.8,38.0,38.3,39.4,38.6,37.5,66.8,33.4,37.9,33.2,40.1,39.2,36.6,36.8,37.7,42.9,41.4,38.7,38.1,40.3,41.9,37.9,38.9,36.1,38.4,41.0,30.7,50.5,39.3,44.4,38.4,36.4,34.5,37.5,38.0,40.7,41.2,42.3,40.8,37.7,41.9,41.1,35.3,37.0,39.2,38.6,37.1,40.9,42.4,37.5,35.9,47.2,34.0,38.6,37.4,40.7,37.3,37.8,37.4,65.8,36.5,40.1,43.9,37.0,37.5,52.1,39.2,38.7,38.9,31.6,38.0,39.0,39.5,39.0,34.9,47.9,22.5,38.6,38.0,38.4,37.1,39.2,38.8,35.3,40.2,37.4,38.6,42.7,40.5,42.2,39.3,39.5,34.4,34.0,32.9,32.1,38.8,38.0,36.5,42.8,37.3,36.1,40.7,50.3,35.5,37.8,37.6,34.2,46.0,37.1,39.8,36.7,37.7,42.2,41.4,43.3,46.2,40.4,35.9,35.5,43.6,40.6,37.2,37.5,47.6,50.6,33.9,39.2,36.9,41.1,35.1,34.0,40.1,39.6,41.7,43.2,37.1,40.2,41.7,35.9,38.2,38.9,38.4,38.5,36.9,33.2,35.1,39.6,34.6,42.2,37.3,39.7,38.4,29.9,39.9,39.7,33.1,38.3,37.3,37.5,30.9,40.0,34.2,39.0,41.2,33.5,34.6,39.0,38.5,39.9,40.2,39.4,32.2,42.0,45.0,41.8,37.1,38.1,40.8,51.8,37.1,38.0,38.9,38.0,38.3,38.4,34.0,36.1,39.6,40.0,32.1,37.7,35.7,34.6,36.7,37.8,35.7,42.0,40.2,41.3,49.2,41.4,40.6,34.2,40.0,41.1,39.1,38.5,41.4,40.9,40.2,40.0,34.6,41.6,34.6,39.3,34.7,40.3,41.6,37.1,33.3,35.7,38.4,37.4,37.0,39.5,37.0,40.2,39.1,41.3,38.9,31.6,40.7,39.1,33.7,35.0,41.0,48.3,35.8,42.4,34.5,33.9,38.4,35.5,34.7,37.7,42.2,35.9,35.6,37.9,39.4,35.8,41.2,39.8,41.9,36.2,41.1,33.1,42.4,37.5,36.9,40.9,36.3,37.6,21.9,39.6,39.6,35.7,39.8,33.9,37.8,31.5,37.1,38.5,37.6,37.8,39.8,39.1,39.6,40.8,40.5,38.4,43.0,47.9,40.5,38.6,38.3,40.3,39.0,37.5,36.8,39.2,34.2,40.6,38.3,39.3,40.1,38.4,37.3,38.1,37.1,40.2,21.8,38.3,40.3,46.6,39.6,40.2,40.4,38.1,36.8,38.5,38.5,39.8,40.6,38.8,34.8,40.0,39.5,39.0,37.0,38.2,40.4,39.6,39.2,38.6,36.7,38.2,38.8,32.6,39.1,38.0,65.0,38.7,42.6,35.1,38.9,41.7,38.3,43.2,35.6,40.1,38.1,40.4,40.3,42.5,34.7,33.9,34.5,38.8,34.1,38.1,40.1,38.8,41.3,35.8,39.8,40.3,41.0,42.2,47.9,35.7,40.0,39.6,38.3,37.0,39.0,42.8,35.8,38.8,37.2,37.8,41.8,33.8,34.2,40.2,34.8,40.6,41.3,36.4,40.8,41.0,40.0,38.8,34.3,35.7,39.5,28.0,33.5,39.8,33.2,39.8,39.7,44.0,38.9,31.3,36.5,36.7,35.0,42.2,37.1,39.4,51.1,34.5,40.4,38.3,36.5,32.9,40.4,39.3,40.2,37.5,38.9,39.0,39.3,34.6,40.6,35.2,37.9,40.9,32.4,51.8,38.1,42.6,37.3,34.4,41.3,42.5,37.9,39.3,23.3,49.6,38.3,39.6,39.4,39.5,39.3,52.7,38.6,41.4,34.8,37.7,38.8,39.0,38.2,38.0,33.6,40.1,40.0,36.5,52.8,34.2,39.0,47.8,41.1,37.3,35.9,47.7,38.0,35.9,51.9,37.5,40.3,37.5,40.0,38.2,50.5,40.0,37.7,38.7,38.3,35.2,39.0,37.9,40.3,39.2,41.1,32.1,22.1,39.8,34.6,40.4,38.7,39.6,41.3,37.3,35.2] + }, + { + "position": 12, + "values": [10.2,11.6,9.1,9.0,7.7,7.9,9.2,9.1,10.0,7.0,9.8,9.5,9.4,7.6,7.6,9.7,8.7,9.4,8.9,9.4,9.5,9.5,9.0,9.3,7.4,9.6,8.8,9.2,8.9,8.7,9.1,6.8,7.2,7.8,9.6,6.9,7.6,6.7,9.1,7.6,9.2,6.6,7.6,7.1,8.9,8.3,9.3,10.2,6.9,8.6,9.1,8.4,7.9,7.6,8.9,7.0,7.7,7.5,7.7,8.8,9.1,9.6,7.4,9.3,7.9,9.4,8.7,9.9,8.0,9.0,8.2,9.3,9.5,8.1,10.1,7.9,7.6,7.3,7.4,6.9,7.2,7.6,9.7,9.8,9.7,9.0,8.5,8.9,9.1,9.6,7.8,8.9,9.1,7.3,7.4,7.8,8.2,8.9,8.5,7.0,8.9,9.7,9.8,9.2,9.7,9.5,8.0,7.3,10.6,9.4,10.0,9.5,9.0,8.8,9.2,9.0,8.9,9.3,7.7,9.3,9.2,9.9,8.4,7.2,9.8,10.5,7.6,8.1,9.2,7.0,9.5,9.3,9.5,7.9,7.5,8.0,9.3,11.3,8.1,7.9,9.2,7.0,10.3,9.7,7.8,9.3,9.4,8.9,7.1,9.4,7.1,7.0,9.3,7.3,6.5,7.1,9.4,8.0,7.4,7.3,9.5,9.6,9.1,9.5,9.1,9.2,7.0,10.2,9.5,9.1,9.4,7.1,9.1,9.5,9.1,7.2,9.4,7.5,9.2,10.1,7.6,8.6,60.7,6.9,9.7,6.8,9.4,7.2,9.7,7.7,9.2,6.9,9.4,9.9,7.5,9.3,7.3,10.6,9.0,9.6,8.7,8.4,6.5,8.4,10.0,9.1,8.9,9.1,9.3,7.6,8.5,10.2,11.2,8.9,9.3,9.7,9.8,7.3,8.3,9.2,7.5,9.2,9.7,9.7,8.2,9.4,7.4,7.5,9.4,8.7,9.0,7.5,9.0,9.6,6.8,8.8,9.4,7.6,9.3,9.7,8.0,9.9,9.0,8.8,9.2,10.5,7.4,9.4,9.4,9.2,9.1,6.8,9.3,8.9,10.1,8.9,9.0,9.5,7.1,9.1,9.1,7.4,9.1,7.9,6.8,9.2,8.5,7.0,11.2,8.9,9.2,6.8,7.1,7.9,7.2,8.9,7.9,9.3,10.8,7.7,9.4,10.2,9.1,9.1,9.1,8.9,6.7,9.6,7.7,8.9,8.9,8.9,9.3,9.6,8.2,7.1,9.8,9.5,10.2,10.2,11.0,7.6,7.6,9.6,7.7,6.6,6.8,10.1,10.2,9.4,9.5,8.7,10.1,9.7,7.6,8.3,8.6,9.6,9.1,8.1,9.1,11.6,9.6,6.9,7.6,9.2,9.2,9.1,7.2,9.0,7.8,9.5,6.6,9.1,6.8,6.8,8.9,7.2,8.9,10.1,7.1,7.4,7.1,7.4,10.0,9.1,6.5,7.8,8.1,9.5,9.5,7.7,8.9,9.5,7.5,7.0,9.3,9.1,7.1,9.1,7.1,6.5,6.9,6.8,9.6,8.9,9.1,9.6,9.1,8.6,9.2,8.9,8.9,9.0,9.2,8.8,9.7,9.8,7.4,9.9,8.9,9.6,10.1,7.7,7.2,10.1,10.0,9.4,10.4,7.2,7.3,7.3,9.8,9.4,7.7,10.1,9.2,7.7,57.3,7.5,9.1,8.5,9.1,9.1,9.4,7.7,9.0,9.4,7.6,9.1,8.9,7.5,9.3,7.3,7.9,7.9,9.2,8.6,8.6,9.1,7.9,7.7,9.7,8.6,9.6,7.9,6.5,8.9,9.7,23.8,7.4,9.5,10.1,6.9,8.3,7.2,9.0,9.5,9.1,9.4,9.8,7.0,9.3,8.7,9.8,7.3,7.7,9.5,8.3,7.1,8.6,8.6,9.2,9.0,8.7,7.7,10.2,9.2,7.5,7.8,7.6,8.6,8.0,7.8,9.0,7.9,8.7,9.3,8.1,6.6,10.2,9.4,6.7,7.4,8.7,9.1,7.6,8.3,8.8,8.3,8.2,9.6,9.6,7.8,9.4,9.4,8.8,9.2,8.8,9.1,7.9,6.3,9.4,9.2,9.3,8.3,21.8,10.0,7.6,7.9,9.0,10.3,15.8,9.6,7.3,8.8,7.3,9.5,10.1,9.0,10.7,8.9,8.9,8.0,9.3,9.4,9.5,9.6,8.0,9.3,7.5,8.9,9.4,9.0,9.5,7.0,9.3,9.4,8.6,9.3,9.0,7.9,9.3,9.6,7.4,9.8,9.2,9.5,9.5,9.5,9.4,9.6,7.3,9.2,9.1,9.7,9.9,7.4,10.0,9.1,8.8,9.7,9.8,9.7,9.6,8.4,9.2,9.5,6.9,7.6,7.7,8.2,9.4,7.9,9.5,9.0,8.7,9.3,9.1,9.4,9.4,8.4,9.3,9.0,9.0,7.1,10.5,9.7,9.1,9.7,9.2,9.5,9.1,6.8,9.2,9.2,9.4,8.7,10.4,9.0,10.0,7.7,9.4,7.0,8.9,6.7,9.8,9.3,7.2,8.0,8.3,7.9,9.7,10.0,9.5,10.0,7.6,8.6,9.5,9.1,9.2,9.8,7.3,9.1,9.8,10.0,8.1,8.1,9.1,9.6,9.2,12.0,9.9,6.8,7.7,8.3,9.0,9.0,9.3,9.0,9.7,9.0,8.9,9.5,7.3,9.3,9.7,8.7,8.9,8.3,9.7,9.1,7.5,9.4,7.1,9.6,8.8,9.0,6.9,8.1,7.6,9.0,9.5,9.2,6.3,9.3,8.4,8.4,8.2,9.0,10.3,9.0,7.3,9.3,9.4,8.2,7.2,11.1,9.0,9.2,7.1,7.5,8.6,6.8,9.9,7.8,9.7,7.9,8.8,10.1,8.7,8.7,9.1,7.3,7.8,9.3,8.1,8.2,9.4,6.7,9.4,8.7,8.7,9.2,9.5,7.1,8.2,8.8,8.8,10.5,9.7,9.2,9.1,7.2,9.3,9.4,7.7,9.7,9.6,9.3,7.4,9.6,9.9,8.8,9.1,9.3,8.8,8.4,6.7,9.5,9.7,10.2,9.6,9.4,9.2,6.6,8.9,9.9,6.6,9.7,10.5,8.9,9.1,7.4,9.3,8.5,8.9,9.0,7.3,6.5,9.5,6.4,9.5,9.3,8.4,9.8,10.0,8.5,7.0,8.9,8.7,9.0,9.7,8.9,6.7,9.2,7.8,9.0,7.6,9.2,8.7,9.6,9.6,8.7,6.7,9.7,9.1,8.4,8.6,10.1,9.2,7.3,9.7,9.0,6.6,9.8,9.2,9.4,7.5,9.6,9.0,9.6,9.0,9.1,7.5,9.5,9.0,9.2,9.2,9.8,7.5,7.0,9.0,9.6,8.5,9.1,7.1,6.6,7.8,9.7,9.6,9.1,9.1,9.7,9.2,9.6,7.5,8.5,9.1,7.6,9.5,9.4,8.0,6.7,8.7,9.2,7.2,7.2,9.2,9.6,8.6,9.4,7.5,9.9,7.9,9.4,8.7,8.7,8.5,9.2,9.2,9.0,10.0,9.2,7.6,8.0,9.8,9.5,8.6,8.4,9.5,8.8,9.2,10.0,9.4,9.3,9.1,7.3,9.2,9.2,9.2,8.8,9.7,9.1,8.9,10.0,9.0,7.7,10.3,9.1,8.2,9.5,9.6,9.5,9.4,6.8,9.7,10.5,9.5,7.8,10.3,9.5,7.6,9.8,9.4,7.5,9.2,9.0,9.6,8.6,8.6,8.8,9.8,8.9,7.0,6.9,9.4,9.3,8.8,17.6,9.5,8.4,7.5,7.8,8.8,6.3,10.2,9.3,8.1,8.8,7.0,8.6,7.9,9.3,9.6,9.0,9.1,9.4,8.9,9.9,9.1,9.5,10.3,9.9,8.9,10.2,8.2,9.8,9.4,9.0,9.5,6.7,8.7,7.6,7.8,9.6,9.8,7.5,9.1,11.0,10.8,9.5,9.2,8.5,9.4,9.8,6.8,9.2,7.3,7.5,7.0,9.2,9.0,9.3,7.6,9.5,7.5,7.2,9.2,6.6,9.2,9.7,8.6,9.6,8.7,9.9,9.7,8.2,9.0,7.6,7.8,9.1,7.6,7.0,9.2,7.7,6.9,9.1,6.5,7.2,9.8,7.6,9.1,7.1,9.3,9.8,10.6,7.1,9.3,7.9,9.1,7.9,9.2] + }, + { + "position": 13, + "values": [29.2,25.9,28.5,23.2,23.4,24.7,29.3,24.8,27.8,23.1,24.8,26.6,27.5,25.6,26.5,25.0,26.9,26.8,24.8,25.0,27.2,29.3,26.1,25.6,25.6,27.4,23.8,27.0,25.9,29.6,25.2,26.1,24.5,24.3,26.1,26.5,25.3,23.7,25.0,26.1,25.9,24.6,25.6,24.7,24.9,24.9,26.2,25.1,23.6,27.8,27.8,25.3,26.1,23.5,26.8,23.4,24.4,24.9,23.0,24.6,24.4,24.8,25.6,28.2,26.3,27.1,24.4,26.3,27.7,26.2,26.6,25.8,25.7,26.5,32.0,25.2,25.3,24.3,27.8,23.6,27.5,27.0,25.4,26.2,25.7,31.2,27.0,25.4,25.7,26.5,26.1,23.3,25.9,24.3,23.4,25.6,27.3,27.2,25.3,23.8,26.1,27.4,26.7,25.3,29.1,24.3,24.5,24.0,25.5,28.1,26.4,25.5,23.6,25.1,25.1,29.4,29.4,28.3,22.7,26.6,26.8,29.1,24.0,24.9,28.9,29.0,25.8,27.0,24.5,26.4,25.2,24.0,29.2,27.6,22.8,25.9,24.5,25.4,24.3,27.9,27.6,24.1,26.4,24.7,25.0,25.5,28.2,24.9,27.9,27.6,24.4,25.4,23.6,23.1,22.0,24.9,28.9,25.4,23.6,26.5,28.2,23.1,25.7,26.2,29.2,24.8,21.4,28.1,24.5,26.0,25.2,24.4,26.5,28.8,26.1,27.4,25.6,25.1,24.8,24.4,25.9,23.9,26.0,104.4,27.0,24.7,28.7,29.1,25.6,23.9,30.0,23.7,29.3,27.8,25.2,23.9,23.2,24.0,32.3,25.6,23.9,24.5,26.0,23.8,29.3,28.5,24.5,25.4,26.0,28.1,23.6,30.9,24.5,25.9,29.3,27.8,27.4,26.5,28.2,28.1,25.6,30.3,26.6,25,26.0,25.4,27.6,23.1,27.5,24.7,25.5,25.2,26.1,27.0,24.7,24.8,24.8,26.0,25.2,27.8,27.2,27.2,26.9,25.5,24.3,26.3,25.8,29.1,26.9,25.9,24.9,25.4,24.8,24.3,25.4,29.0,25.5,25.2,24.9,28.4,25.4,25.0,24.6,23.8,27.1,24.5,24.9,25.4,27.1,24.4,25.5,25.8,22.9,25.4,22.1,23.8,23.0,29.9,28.1,26.0,27.1,24.4,25.3,28.0,25.9,27.6,23.3,25.0,28.7,26.1,24.6,27.8,25.9,24.6,25.2,22.4,27.1,28.9,26.6,27.0,23.9,23.4,30.8,21.4,20.9,23.5,25.8,28.7,28.1,25.3,25.3,28.8,28.6,26.6,25.7,25.3,25.1,24.4,26.2,26.5,25.5,23.6,25.5,31.6,22.9,29.2,29.3,26.4,23.2,25.2,22.4,27.5,23.9,24.8,21.9,22.9,26.3,22.2,24.8,24.6,25.9,26.1,21.5,25.8,26.9,28.7,23.7,26.4,23.1,28.9,28.3,25.8,24.8,28.2,24.3,25.2,30.8,29.7,27.1,27.2,23.4,24.7,24.9,25.5,21.4,25.9,28.5,24.5,24.6,25.7,25.9,24.6,24.7,23.3,30.0,25.0,25.7,25.6,26.2,27.8,26.7,26.6,26.1,28.3,26.7,25.2,27.5,25.3,26.7,23.4,21.8,26.6,28.5,26.0,26.2,27.1,28.0,57.2,25.5,23.7,25.2,27.0,25.3,26.1,29.8,27.3,24.3,25.0,24.8,31.6,26.4,29.3,24.8,22.5,22.7,23.2,25.8,24.5,23.7,28.3,26.5,23.2,23.7,24.8,26.2,21.2,25.2,24.2,27.6,37.7,27.5,28.2,22.2,26.0,22.9,24.9,24.8,26.3,25.1,27.6,24.3,23.0,26.2,24.3,25.7,23.2,26.5,25.3,25.3,24.4,25.3,28.0,26.4,27.5,27.2,24.5,24.8,25.5,26.5,24.7,25.8,24.8,27.8,26.3,25.8,25.4,26.6,24.3,24.3,21.0,27.8,25.7,24.6,24.1,24.8,26.3,24.4,24.1,25.0,28.2,25.7,25.3,25.4,26.2,25.0,31.8,25.7,24.7,25.4,26.5,25.3,27.3,26.5,26.2,21.1,45.1,25.7,25.3,27.3,25.2,24.5,28.3,33.2,26.0,27.6,25.4,27.6,25.2,24.5,28.3,24.0,30.4,24.2,25.8,25.9,28.8,24.7,27.6,26.3,26.8,26.2,29.9,27.2,25.6,23.5,24.2,29.1,27.5,24.7,28.2,25.6,25.1,24.8,30.2,29.7,25.8,28.9,25.9,25.2,26.4,24.0,25.0,26.0,26.2,24.5,28.1,28.0,27.1,28.5,25.1,25.3,27.7,29.1,25.6,30.7,23.7,24.8,24.6,24.1,24.0,26.4,24.5,24.6,25.7,25.5,26.0,22.7,29.8,24.2,25.7,23.7,25.4,25.1,24.6,30.0,24.6,26.8,27.7,25.4,26.9,25.5,25.8,25.2,22.9,27.5,26.3,29.1,24.4,26.2,24.7,26.6,24.7,26.7,26.8,25.4,26.3,26.6,29.0,30.4,21.6,24.7,25.9,26.7,26.4,26.6,29.7,26.9,27.3,25.1,25.4,28.2,25.3,24.9,25.5,26.1,26.6,26.0,27.2,26.7,22.8,25.1,37.8,26.1,24.7,24.7,25.5,24.1,25.3,28.5,25.2,25.8,25.2,25.3,23.5,20.7,24.8,24.9,24.9,24.2,24.0,25.5,25.9,26.0,25.7,27.9,24.9,30.3,26.4,26.8,23.3,24.1,25.9,26.7,25.0,22.1,26.0,28.4,26.5,25.9,24.3,26.3,24.8,25.1,26.4,27.5,25.3,26.9,27.4,26.6,24.4,27.0,28.3,24.1,25.6,22.3,24.1,28.6,23.8,24.5,24.6,24.5,23.2,26.0,24.8,22.7,27.7,25.2,25.0,25.3,22.8,26.4,25.0,25.1,24.7,26.6,22.7,23.8,25.3,26.9,25.7,25.8,25.8,25.8,30.8,25.7,26.7,23.0,25.3,28.1,25.4,25.8,25.8,24.9,23.9,28.7,25.5,25.5,26.1,19.3,25.1,27.4,27.4,27.0,27.1,25.2,24.1,25.1,23.9,23.9,25.7,26.9,24.1,25.5,27.4,26.4,26.0,25.6,23.3,24.0,24.7,26.3,26.1,25.7,25.8,28.4,26.3,25.9,25.0,22.8,29.8,27.1,25.3,24.3,23.9,24.4,25.3,26.0,26.0,27.3,25.7,25.3,24.9,28.5,24.7,24.0,27.4,27.3,24.8,25.3,26.3,27.2,24.8,26.1,26.0,25.6,24.0,26.4,30.8,22.6,29.7,26.3,28.5,24.6,25.8,25.2,27.0,29.3,25.4,27.2,25.8,23.5,23.2,25.8,28.7,28.5,25.5,25.2,24.6,23.7,26.4,23.6,25.4,26.7,25.6,30.2,24.9,22.7,25.8,26.3,25.0,28.3,26.1,24.0,24.4,26.6,24.5,24.4,29.0,25.1,26.7,24.9,25.5,23.1,25.8,23.0,27.5,24.1,29.8,24.6,26.3,25.4,25.2,26.7,24.7,24.7,22.6,26.0,26.4,24.3,27,24.0,24.6,24.5,26.5,25.0,27.2,27.6,24.7,27.8,28.2,29.2,27.1,28.2,27.4,26.4,25.2,25.7,24.8,28.1,25.5,27.2,24.0,26.4,26.9,29.7,27.6,25.6,25.0,21.0,24.8,25.7,24.8,24.9,26.0,28.0,24.1,25.1,24.9,27.1,24.9,25.1,24.9,25.9,26.0,23.4,30.7,24.3,25.6,25.7,28.3,66.8,24.3,24.6,24.6,23.6,24.6,26.9,27.4,23.0,28.0,25.2,25.8,26.2,24.5,27.4,26.8,31.2,29.0,25.1,28.8,26.4,26.2,27.2,25.5,26.0,25.3,26.5,25.9,26.0,24.8,24.3,24.6,27.9,26.2,24.6,26.6,28.4,25.4,25.5,25.4,27.7,26.9,28.5,27.8,25.2,25.0,26.3,28.7,24.4,25.9,23.3,26.5,27.0,24.1,25.5,23.1,23.4,25.0,27.5,24.9,25.3,26.4,23.6,25.8,23.8,26.3,28.6,29.7,24.7,24.6,30.9,24.3,24.4,23.1,26.4,25.5,23.6,27.9,23.3,27.8,25.3,26.9,25.9,25.7,27.2,28.3,26.9,23.0,24.6,29.3,26.2,24.9,26.0] + }, + { + "position": 14, + "values": [158.5,139.5,117.7,142.1,77.1,77.6,153.2,131.7,148.9,71.4,129.5,146.2,154.1,66.8,70.2,133.3,158.3,134.1,130.0,131.9,137.7,155.6,130.9,131.1,68.7,129.4,153.1,130.9,128.8,150.7,126.3,61.1,63.3,69.6,149.5,64.6,63.1,63.1,131.8,74.8,60.4,130.8,74.8,69.4,128.5,79.0,129.6,135.3,77.4,127.8,154.3,71.3,75.6,67.0,152.9,52.8,73.9,70.4,65.4,98.3,129.1,130.0,74.7,138.5,69.8,131.3,124.1,133.6,147.1,74.1,85.9,129.8,132.8,64.4,93.5,80.1,73.8,67.9,78.6,82.4,67.2,135.1,73.3,130.0,132.6,55.4,74.5,127.5,84.4,69.0,132.0,129.1,129.9,71.6,75.7,75.9,75.6,131.7,81.1,65.3,127.8,129.9,161.3,129.2,160.0,129.0,73.5,67.8,125.1,149.2,129.9,134.6,133.0,127.0,132.4,153.2,157.8,139.0,77.4,129.3,137.3,142.1,122.5,67.0,130.8,55.5,76.6,67.1,127.9,68.0,130.6,127.4,153.8,73.2,77.3,132.8,74.5,128.2,76.0,143.0,68.6,69.4,129.6,140.3,64.1,78.3,131.7,128.5,65.7,131.5,73.3,66.4,133.0,70.3,63.4,71.2,156.0,68.2,74.2,68.5,132.4,135.2,128.5,130.9,145.8,128.9,75.9,131.8,131.6,130.2,126.2,65.8,131.8,142.5,131.0,68.0,129.7,77.1,132.2,129.1,70.1,94.0,130.6,64.9,156.1,67.8,54.7,64.7,74.1,124.9,153.1,60.3,62.9,155.9,126.3,79.8,66.2,71.6,125.6,125.8,118.5,77.1,57.3,129.3,146.6,152.8,128.2,130.0,142.5,68.6,128.3,29.3,78.8,128.6,151.4,136.8,135.5,72.1,66.3,138.7,77.1,149.0,149.9,132.2,78.2,73.4,133.0,74.8,148.4,126.9,142.5,125.1,67.4,131.6,67.5,126.6,129.5,73.6,128.5,137.3,65.6,156.0,129.8,126.8,127.4,140.4,71.9,149.7,127.3,128.9,151.9,61.7,129.5,127.4,155.5,132.2,129.7,130.1,62.6,135.9,156.1,72.8,127.7,83.2,61.0,132.8,75.9,63.0,134.0,132.7,84.8,65.8,62.7,73.2,73.9,129.3,78.4,177.6,142.0,71.4,131.1,130.5,136.0,149.3,135.4,70.2,155.8,132.6,71.7,145.1,106.9,124.8,136.0,128.0,73.4,61.0,180.8,131.0,140.4,131.3,48.1,71.9,75.8,125.2,70.1,60.4,129.1,156.6,66.0,124.9,135.3,140.3,150.2,129.6,70.1,78.9,136.7,127.7,129.4,79.8,130.5,30.8,65.3,127.9,76.3,157.4,55.7,127.1,84.5,133.3,170.5,67.1,66.2,128.1,62.7,63.6,139.6,130.5,130.8,74.6,64.4,73.2,75.5,74.7,122.2,155.9,63.6,76.7,104.4,161.0,154.9,76.4,131.2,159.8,67.8,64.8,153.6,93.0,66.0,136.0,70.1,64.6,66.0,71.0,136.6,126.6,132.9,156.9,129.0,128.6,128.4,129.9,133.0,132.7,44.5,127.2,84.5,130.8,71.0,156.1,144.6,85.5,134.1,66.1,71.7,124.7,127.6,126.4,140.2,79.1,79.0,63.7,139.6,129.4,133.4,69.0,135.7,71.3,41.0,76.8,78.2,136.7,131.7,136.4,130.8,152.5,66.1,132.6,71.1,153.6,154.3,77.7,68.5,71.9,83.4,72.2,80.6,125.1,124.8,147.8,68.4,76.8,118.1,74.0,133.4,73.1,63.7,131.9,178.5,76.8,74.8,132.7,63.7,132.5,69.8,78.9,128.2,127.3,139.4,128.3,124.0,68.4,128.3,85.3,127.8,71.8,68.9,129.6,76.9,168.3,73.0,131.8,134.2,130.7,128.0,65.5,135.2,126.2,70.7,68.4,73.8,79.6,72.9,139.3,76.2,71.9,142.5,133.0,72.0,72.5,70.1,136.4,68.0,65.5,125.2,131.7,76.8,127.2,75.2,81.2,132.7,93.4,126.3,73.0,80.7,152.9,131.7,127.8,131.1,128.3,72.5,129.9,114.0,69.8,134.8,151.0,75.8,140.1,74.0,82.3,127.4,149.4,75.4,135.3,73.0,66.9,137.0,134.4,139.4,126.8,137.5,129.3,131.3,71.5,148.3,134.9,96.0,138.0,70.2,86.5,66.5,154.7,137.7,128.7,132.0,58.9,142.9,77.5,134.7,136.8,125.3,71.1,127.5,62.9,92.5,135.5,143.7,134.8,124.8,131.6,136.8,126.0,69.5,131.4,128.3,151.1,155.3,68.4,160.3,140.4,129.7,145.3,137.7,134.8,149.8,63.1,129.0,124.9,56.9,69.0,71.5,73.1,79.6,74.4,128.8,128.6,123.1,148.4,132.1,124.2,131.5,126.0,132.5,129.2,147.2,70.7,132.5,131.8,129.8,127.0,131.0,134.8,125.5,63.6,131.6,128.6,148.6,134.5,129.5,131.9,129.9,70.8,131.0,64.5,126.6,61.5,127.0,147.5,64.7,85.0,70.5,124.0,128.4,130.8,53.5,153.2,70.2,144.7,133.2,145.7,133.6,132.6,71.1,131.7,132.3,135.1,72.3,130.2,166.1,121.9,129.9,100.8,130.9,67.0,64.8,118.3,131.8,129.9,152.6,128.8,133.0,132.4,127.9,77.8,121.7,128.7,131.9,123.3,127.3,130.1,133.9,85.0,72.6,162.8,72.5,126.9,156.9,79.9,64.0,77.7,76.3,158.5,133.2,131.0,69.9,127.6,76.0,155.9,77.1,121.6,158.4,128.0,75.0,123.2,140.3,82.5,66.0,152.2,132.6,156.3,56.8,72.6,142.3,124.8,64.7,77.0,181.1,85.3,129.1,132.2,127.7,97.6,126.9,72.7,84.1,153.5,70.5,134.2,129.9,130.3,83.0,131.8,134.8,126.9,125.6,72.9,73.8,126.2,131.7,129.2,131.9,129.5,132.3,131.7,69.3,149.1,80.6,129.6,153.1,127.5,90.3,129.0,131.5,130.5,154.3,128.5,132.8,93.4,68.6,128.4,179.8,145.7,129.3,104.7,131.1,51.9,129.2,135.5,56.5,131.9,129.5,63.2,132.2,68.2,128.5,137.0,78.2,130.0,68.1,64.6,127.6,59.7,130.9,77.6,128.0,126.5,131.7,136.2,65.6,157.1,92.2,128.7,128.9,66.5,133.7,129.8,75.9,132.8,67.5,131.7,129.4,132.1,125.5,149.1,67.1,151.2,133.8,81.0,121.0,136.2,129.5,66.4,128.3,131.5,65.5,134.0,132.0,56.9,74.4,132.2,161.0,127.1,130.1,128.3,70.2,130.5,143.7,129.4,138.8,131.1,78.0,73.7,133.1,79.9,81.7,108.7,76.4,58.6,84.9,135.8,128.4,123.7,133.6,132.8,182.8,134.7,82.2,154.8,68.9,82.8,133.5,131.4,70.6,67.1,130.0,128.7,69.0,71.8,141.3,130.3,121.9,138.2,76.9,133.2,67.3,62.8,149.6,132.9,72.1,158.5,126.5,132.5,123.5,78.3,64.8,86.9,127.0,131.0,138.6,129.2,131.6,127.9,123.7,135.9,125.6,153.2,129.9,74.7,128.7,149.0,138.2,153.0,135.0,153.9,127.1,134.7,129.4,71.5,157.3,130.3,65.0,131.6,180.7,128.4,129.9,141.8,129.6,155.8,68.2,71.5,128.6,131.5,72.7,55.2,126.5,59.8,126.5,128.3,128.9,76.2,74.3,133.0,135.2,135.6,71.1,153.3,69.9,129.8,130.9,135.0,136.7,126.7,81.9,78.6,132.2,127.7,64.0,138.1,79.7,147.4,69.4,78.1,73.3,127.8,180.1,157.9,93.8,150.2,129.2,133.8,131.7,133.1,145.3,134.9,126.7,140.1,128.5,129.7,77.6,131.6,59.1,127.5,145.2,73.1,66.4,136.4,56.6,127.7,73.7,132.8,132.1,160.7,137.5,79.4,78.4,129.0,65.0,107.9,68.5,72.4,68.7,131.5,127.0,71.6,127.6,70.3,131.1,70.4,132.7,54.0,134.4,126.8,132.3,143.0,80.5,82.1,141.2,72.5,129.7,72.7,92.7,66.8,77.1,68.1,128.3,73.0,67.2,133.7,52.6,134.7,69.1,69.0,69.7,131.1,134.5,140.3,132.4,73.3,156.3,75.7,131.0,76.6,127.5] + }, + { + "position": 15, + "values": [60.0,69.4,60.1,53.7,47.7,50.0,61.6,56.4,51.8,57.5,60.2,65.0,60.0,52.9,44.2,51.1,58.6,59.0,53.9,58.7,55.7,60.4,60.8,56.5,41.9,61.2,52.8,57.9,56.3,53.1,37.2,61.1,47.5,58.3,59.8,42.2,51.3,50.8,64.4,51.4,55.1,45.0,50.9,43.9,59.7,55.3,60.7,61.2,55.2,54.8,62.1,55.0,46.8,54.7,54.8,40.3,51.8,50.0,59.0,56.0,64.9,64.4,47.3,61.3,49.0,59.8,58.0,54.8,61.2,62.4,54.9,55.8,62.1,52.0,60.8,51.2,49.0,45.5,49.2,58.0,48.0,50.3,56.6,58.4,61.1,57.5,57.6,51.7,59.5,60.1,53.8,51.3,60.7,55.4,48.4,52.1,51.4,57.9,56.0,48.8,58.0,59.2,59.3,60.5,60.9,55.9,51.4,43.2,66.3,59.4,58.4,60.3,55.2,55.0,56.3,57.8,61.1,58.9,52.4,58.1,58.0,57.5,56.2,46.2,58.3,65.5,48.5,57.6,59.4,43.7,61.8,60.1,61.9,47.7,53.6,60.4,56.4,68.4,50.8,63.6,47.6,47.5,62.0,60.1,53.6,58.3,38.9,60.7,45.8,61.8,49.6,45.4,55.8,51.9,46.1,45.2,60.8,57.1,43.8,54.7,58.5,57.2,60.2,59.2,57.0,63.2,49.8,62.5,59.3,61.8,58.2,48.8,60.3,60.7,57.2,45.5,58.8,51.9,55.4,60.1,49.4,64.1,64.8,45.7,114.2,69.2,47.1,50.4,54.9,60.2,61.3,49.4,62.0,64.1,58.5,55.9,52.7,50.1,57.5,59.8,54.1,53.4,38.7,57.6,62.0,48.9,55.8,49.7,58.2,61.2,54.6,56.9,56.6,65.4,59.5,58.3,56.0,46.9,52.7,56.0,54.0,61.7,61.6,57.2,58.0,49.0,57.2,51.8,62.0,54.6,60.7,57.3,52.8,58.9,43.1,55.1,62.6,48.8,58.8,59.7,52.7,59.9,56.8,58.6,56.3,63.8,49.5,60.4,63.1,60.5,58.5,46.4,61.7,54.4,62.3,56.5,55.6,58.3,47.4,57.0,53.1,48.3,59.5,51.8,44.0,59.1,45.9,62.6,56.7,53.3,42.9,61.3,47.3,51.5,54.9,54.0,57.4,60.1,60.2,47.6,61.6,60.5,58.4,60.1,53.2,54.7,56.5,57.4,47.3,59.4,60.7,54.6,55.5,59.2,53.3,54.2,61.6,58.7,62.1,50.4,49.4,52.3,98.0,72.3,62.8,43.2,44.3,63.7,61.0,62.5,54.4,57.9,64.5,62.2,52.6,52.7,56.4,62.0,62.0,47.7,55.4,57.0,55.6,52.2,60.7,64.0,59.7,57.2,48.8,53.3,62.3,55.3,42.9,55.0,53.3,41.2,62.6,57.4,61.0,53.1,44.0,47.5,58.3,46.8,61.0,58.3,41.7,52.1,62.8,61.4,60.5,61.0,61.8,58.6,49.5,49.0,60.2,57.9,44.2,55.2,47.0,43.2,48.2,46.6,59.7,58.2,58.2,59.5,58.4,56.1,58.4,55.4,53.0,53.2,92.8,60.9,61.8,56.3,46.4,60.2,56.6,60.2,59.8,50.6,60.6,52.2,59.9,60.0,62.3,50.2,57.9,44.6,59.6,59.0,50.8,61.4,58.6,133.1,50.6,52.5,58.1,49.4,51.5,50.6,55.8,57.4,53.1,59.7,50.2,61.0,61.5,56.3,47.8,53.7,59.0,50.6,55.5,57.9,55.4,60.9,51.6,58.3,65.8,53.6,57.9,56.0,50.0,53.8,61.6,75.0,51.2,59.2,53.0,62.5,44.6,52.8,55.1,59.9,59.5,64.1,64.5,50.7,58.0,46.4,56.2,53.5,58.2,46.6,48.7,55.5,58.7,56.0,56.8,55.9,48.9,50.4,62.6,59.3,47.5,48.2,50.6,56.5,50.8,53.1,53.7,50.7,51.4,54.6,53.5,51.0,85.4,55.9,46.7,53.9,56.6,56.4,53.6,54.4,54.4,54.9,58.4,57.5,55.9,55.8,46.5,58.1,56.4,58.5,52.6,57.5,51.5,61.9,52.5,58.1,46.2,54.0,109.6,50.9,60.1,51.0,56.8,66.8,56.4,58.1,48.7,57.2,41.3,59.1,57.2,58.7,73.2,56.4,53.0,52.8,61.5,58.3,59.0,59.1,57.1,50.4,60.3,45.1,51.6,62.6,58.1,48.4,52.8,55.2,50.9,58.3,51.9,59.5,54.4,61.7,54.8,60.4,62.7,60.1,57.0,56.5,58.2,53.5,47.3,63.5,58.8,61.2,60.6,47.8,60.5,62.5,53.4,60.8,58.9,59.3,61.6,55.8,64.2,51.2,43.4,47.9,50.4,50.9,57.4,61.0,51.7,56.6,52.1,60.5,58.5,59.4,51.6,43.9,61.3,56.5,59.1,45.9,60.0,63.5,57.6,61.1,57.0,56.7,61.2,41.2,62.7,56.4,55.8,52.6,63.2,52.2,60.0,50.6,57.5,45.4,57.4,46.0,57.1,56.0,48.8,58.3,50.5,55.9,56.9,58.5,66.4,59.9,46.4,51.2,58.5,59.6,55.5,62.0,50.6,60.7,60.2,50.9,59.2,52.3,57.8,54.4,57.5,74.8,58.2,44.6,45.5,62.1,51.2,55.1,60.8,54.7,61.2,52.7,55.0,58.8,57.1,58.4,58.8,55.6,53.8,56.3,61.6,55.7,48.7,60.8,50.7,61.6,61.4,53.3,54.4,57.5,53.3,59.5,60.8,62.4,56.7,51.9,62.0,53.2,52.3,59.1,60.0,57.9,48.4,60.2,62.1,56.2,48.7,72.5,57.6,54.7,52.6,59.5,56.6,60.4,51.8,55.9,58.7,58.8,57.8,63.5,56.1,62.7,54.5,46.6,55.1,57.5,48.8,45.2,58.6,56.4,41.6,55.3,56.6,62.0,62.8,55.0,46.4,56.4,62.7,66.0,57.5,56.0,59.8,49.1,60.7,55.8,56.4,59.1,61.2,65.3,51.7,65.1,57.7,53.0,59.4,59.2,53.7,57.0,48.8,58.1,61.8,62.1,58.7,59.6,45.3,54.7,54.2,72.8,46.7,59.1,63.1,54.2,47.4,56.2,55.3,62.2,52.5,54.0,52.7,46.8,59.3,41.9,55.5,57.7,60.1,59.6,56.0,51.9,52.7,49.8,61.3,55.5,60.1,45.0,54.3,52.1,55.7,61.7,47.8,54.4,55.5,57.8,65.5,55.7,43.0,64.2,57.0,54.4,51.3,62.9,53.6,45.8,62.8,60.7,59.8,43.4,60.1,59.4,54.2,60.8,59.7,60.2,59.2,60.5,47.5,58.0,59.3,57.7,58.9,60.7,55.6,58.8,59.4,64.1,58.6,56.7,54.7,41.0,56.8,55.6,59.5,53.6,69.8,58.3,59.2,62.5,54.2,52.7,56.9,48.8,60.3,60.1,44.5,56.5,52.9,55.3,44.5,56.6,45.1,62.4,54.6,54.6,54.4,61.9,58.7,54.6,53.2,56.2,54.4,61.2,57.6,54.7,56.1,57.5,51.8,62.9,57.2,55.7,52.5,56.7,48.7,55.1,60.5,58.3,57.4,57.3,56.2,50.8,57.4,60.8,59.7,61.1,59.8,61.5,62.4,67.1,61.2,51.7,56.7,65.5,56.3,56.5,51.3,59.4,58.6,65.2,57.9,59.9,54.2,49.1,62.5,57.0,50.6,69.7,64.6,46.2,61.4,60.5,56.9,56.5,53.2,53.8,56.3,41.5,45.2,62.2,47.7,61.6,55.1,59.9,56.0,52.1,51.7,49.9,43.9,60.2,62.2,55.6,56.3,54.9,44.5,53.7,61.4,56.8,57.4,54.6,60.5,60.5,54.2,60.6,55.4,57.7,67.3,59.9,53.9,62.9,52.9,63.2,58.8,59.0,58.4,43.8,58.4,47.5,48.8,57.7,56.3,47.8,58.8,64.4,66.5,61.1,58.9,51.5,59.5,58.2,45.2,60.5,56.9,51.4,45.0,61.1,60.3,62.2,49.5,49.1,57.4,45.0,56.0,40.7,55.2,61.4,51.5,59.7,57.2,59.7,51.3,62.4,60.0,48.9,53.7,59.7,51.3,49.0,50.8,55.5,45.5,58.0,46.9,51.5,59.8,49.9,51.4,58.2,60.5,64.0,58.5,45.1,61.9,51.9,52.8,55.6,57.2] + }, + { + "position": 16, + "values": [20.1,19.1,19.7,20.1,18.9,19.5,18.9,18.7,21.9,20.0,18.8,19.7,18.5,19.8,19.8,19.3,19.1,18.9,19.7,19.2,18.8,19.7,19.5,18.4,19.1,19.7,20.6,19.4,19.1,19.1,18.5,20.9,21.8,21.4,19.0,19.5,20.3,20.6,19.9,18.9,18.6,18.6,19.4,18.9,18.5,19.2,19.5,19.7,19.5,19.8,19.3,20.7,19.7,20.2,18.5,21.1,20.0,19.3,22.0,19.7,21.1,19.5,19.2,19.0,20.0,19.1,18.8,19.2,20.4,20.5,19.7,23.0,19.0,20.7,21.3,21.2,19.6,18.9,17.5,19.9,19.7,19.3,19.6,19.4,19.1,19.5,19.6,18.3,18.8,20.7,20.6,19.2,18.2,21.6,19.9,19.5,19.6,19.3,19.2,18.9,18.2,19.4,18.9,20.2,19.1,19.2,19.2,21.2,20.1,19.2,19.7,19.5,19.5,20.1,19.6,19.8,19.2,19.4,20.3,19.6,19.6,20.4,18.1,19.1,23.4,19.4,20.8,20.8,19.4,19.3,19.6,19.5,20.0,20.4,21.7,19.0,21.2,19.5,19.8,19.5,21.1,18.7,19.1,21.2,18.6,20.4,18.8,19.0,19.3,18.8,19.1,17.2,19.3,18.2,17.8,19.4,19.9,20.5,18.3,21.0,19.3,20.1,18.6,19.4,19.1,19.3,20.1,19.5,18.8,19.9,19.1,19.6,20.7,19.3,18.8,19.3,19.0,18.2,20.0,21.3,20.9,20.4,20.0,19.6,193.2,18.3,19.1,19.8,20.5,19.2,18.9,21.0,19.4,19.9,19.2,18.7,19.5,22.8,20.5,19.7,21.1,19.5,20.4,19.7,26.3,19.2,19.8,19.1,18.9,20.9,19.2,20.7,19.3,20.9,18.7,19.5,19.7,21.9,19.4,18.7,19.1,18.8,19.4,19.5,19.4,19.4,19.3,19.9,20.2,19.9,18.1,19.6,18.9,19.2,19.2,19.2,19.1,19.0,19.7,19.0,21.5,19.4,19.7,18.7,20.6,21.4,19.2,18.9,20.6,20.0,19.4,18.5,18.7,19.0,19.3,19.6,18.6,18.9,21.3,19.5,21.0,20.0,20.5,20.8,19.6,18.1,19.7,19.1,20.0,19.9,20.3,19.4,19.2,20.6,19.8,19.3,20.7,18.0,21.0,19.8,19.3,19.0,20.5,20.6,20.6,19.9,18.8,20.0,19.4,18.7,19.4,18.9,21.1,19.0,19.4,21.0,19.3,20.2,19.4,19.9,21.8,21.3,18.7,19.2,20.7,19.9,20.4,20.5,19.1,19.7,19.2,18.5,21.9,19.8,21.0,18.9,19.4,18.6,19.1,21.1,19.0,20.1,20.2,18.6,20.4,19.5,19.4,19.2,18.5,18.9,19.6,21.1,19.2,19.1,20.9,19.4,19.5,19.6,18.2,19.4,18.4,19.3,19.9,19.2,21.7,19.7,18.1,19.7,20.8,19.3,20.1,18.7,19.2,19.3,20.8,19.1,18.8,19.1,20.9,20.2,19.2,18.0,18.2,19.9,18.0,19.9,18.9,20.9,19.4,19.9,19.2,18.2,20.2,19.0,19.2,19.1,19.0,19.1,19.2,18.7,19.3,21.0,21.8,20.5,18.6,19.8,20.6,18.8,21.0,18.5,19.8,19.4,19.2,19.1,19.1,20.5,19.0,18.4,39.7,18.7,19.5,19.0,18.5,20.1,21.8,19.6,19.6,19.3,21.1,19.0,20.2,19.9,19.9,19.5,21.4,21.4,19.5,19.1,18.4,18.5,21.1,20.6,19.1,19.8,19.1,21.1,19.6,20.0,19.1,20.0,29.8,19.2,19.4,20.6,21.8,18.2,19.3,19.8,19.1,19.1,20.4,19.0,19.0,20.0,19.2,21.9,21.3,19.4,18.1,18.7,20.8,18.3,20.5,18.7,18.9,20.7,18.3,21.9,19.3,19.7,20.4,19.6,21.9,19.3,20.7,21.0,19.5,20.4,20.0,21.9,18.1,21.3,18.2,18.5,18.7,19.8,20.8,19.4,17.7,21.4,22.9,19.4,19.3,19.8,19.9,19.9,20.0,18.9,19.2,19.1,20.5,19.4,19.6,20.7,16.8,72.8,21.7,20.6,19.3,20.8,19.7,21.5,19.8,19.1,19.2,19.0,19.8,21.6,20.0,18.8,17.9,20.0,19.7,20.9,19.8,20.4,19.1,19.1,18.7,19.9,19.2,19.2,19.1,19.4,19.2,20.2,19.2,20.7,19.2,19.4,20.9,19.4,19.8,21.0,20.2,20.1,19.6,21.2,19.2,20.0,18.7,19.8,19.3,18.5,19.9,20.0,18.8,19.0,19.4,19.2,18.5,18.3,19.0,18.9,19.3,27.8,19.1,20.2,20.2,19.0,20.6,20.0,19.8,19.8,20.4,18.9,17.6,19.0,18.9,19.2,19.0,20.2,19.3,19.2,19.0,20.0,20.5,21.0,18.7,19.4,20.1,18.8,18.6,19.4,19.5,20.4,19.2,18.0,19.4,19.3,20.1,20.5,19.1,20.1,21.0,20.4,18.6,19.0,19.6,19.8,19.0,20.7,19.3,19.6,19.3,19.1,20.4,18.5,19.5,19.2,20.6,19.2,20.5,19.5,19.4,19.8,21.1,17.2,18.9,19.4,19.9,38.0,19.4,20.0,19.0,18.6,17.9,19.0,19.3,19.4,21.1,19.8,19.7,18.9,19.0,18.9,19.4,18.7,19.1,19.6,19.1,19.2,19.1,19.1,19.1,18.4,19.0,19.6,21.8,19.4,20.9,18.9,19.1,19.3,19.1,19.2,17.8,21.5,19.8,18.9,20.5,19.8,18.5,19.2,19.5,21.1,19.0,21.1,18.8,19.8,20.3,21.0,18.5,19.5,20.5,18.2,19.1,20.5,18.8,21.5,18.0,20.1,19.3,18.8,21.6,19.5,19.3,18.9,18.9,18.4,19.0,19.0,19.3,19.4,19.1,20.2,21.4,18.9,19.5,18.7,19.7,19.5,19.4,18.4,19.1,19.9,21.4,18.6,21.1,19.9,19.0,19.5,19.0,19.4,18.7,19.0,19.0,21.5,16.0,19.3,19.0,20.2,19.4,18.9,20.5,19.2,19.2,18.8,17.2,19.1,19.4,18.6,19.7,20.3,19.4,19.2,19.7,20.2,20.8,18.4,19.4,19.1,19.2,20.5,19.1,19.4,19.6,18.8,21.1,19.3,18.8,20.6,19.4,17.5,19.0,19.6,19.9,18.7,19.2,19.0,21.0,18.6,18.9,19.7,18.6,18.8,18.9,19.6,16.5,20.3,19.2,19.8,19.6,19.0,18.7,19.1,19.2,19.3,19.7,20.4,19.3,19.2,18.2,19.4,19.4,19.0,19.3,19.3,19.4,19.1,21.3,19.7,18.8,22.6,19.1,19.5,18.7,19.6,20.4,20.0,19.9,19.0,18.8,18.4,19.3,18.3,19.5,18.3,19.7,21.4,20.6,19.2,20.0,19.2,21.3,21.2,17.5,19.4,19.9,19.6,17.8,18.5,20.7,19.4,20.6,19.6,19.6,18.9,24.7,18.9,18.4,21.1,18.2,19.3,20.2,22.1,19.5,21.8,19.4,18.8,19.3,19.3,19.5,19.3,19.6,19.1,19.7,19.5,21.1,20.2,18.7,18.9,18.5,19.4,19.0,20.1,18.9,18.8,20.6,27.7,21.1,18.7,19.0,20.1,20.8,18.5,20.2,21.0,19.0,20.6,19.1,21.4,19.0,19.7,19.8,19.4,18.7,19.0,19.7,19.6,18.7,18.4,19.6,16.4,19.4,19.2,19.2,20.0,20.3,19.5,18.1,19.8,19.4,22.1,20.2,18.8,19.1,24.8,19.5,19.3,19.3,19.4,19.0,19.4,19.9,19.3,18.7,19.2,20.5,19.6,19.6,20.7,19.2,20.9,19.7,20.2,19.7,20.6,19.2,19.1,19.1,19.4,22.2,19.4,19.2,19.4,18.7,19.2,19.0,23.7,20.6,19.4,18.8,19.5,18.9,19.1,19.1,21.6,19.7,19.0,18.1,19.6,20.5,18.5,19.0,21.1,18.1,19.3,20.5,19.5,19.9,19.1,19.3,19.3,19.2,19.2,20.3,19.1,18.6,18.8,20.5,19.9,20.5,20.6,19.8,18.1,18.9,18.8,20.2,19.7,20.5,18.1,18.3,19.2,19.5,20.4,20.0,18.2,19.6,20.3,20.8,19.1] + }, + { + "position": 17, + "values": [59.4,56.2,58.8,64.5,59.0,56.2,58.9,56.6,61.0,61.6,58.4,59.9,63.9,66.3,60.9,58.0,59.3,57.0,59.0,55.1,59.2,59.7,59.8,57.9,58.8,64.3,57.8,58.7,59.2,55.4,59.9,58.5,57.6,59.8,55.4,63.0,61.7,62.1,59.3,60.5,59.0,58.3,57.7,59.0,57.4,57.7,59.7,58.4,58.5,63.9,56.9,62.9,63.8,59.5,58.5,57.7,58.7,59.5,57.0,58.3,66.8,57.2,57.3,60.1,59.2,59.3,59.1,58.1,59.8,61.0,68.8,57.8,58.3,57.7,60.8,57.7,60.3,56.9,60.1,60.4,58.8,58.5,58.7,59.2,57.8,57.3,55.1,59.7,59.8,59.9,58.5,68.8,57.2,58.7,57.8,58.2,64.4,60.3,56.5,58.6,58.8,56.4,58.9,59.1,59.8,58.0,58.8,61.2,55.5,58.1,58.2,58.7,58.9,58.1,58.7,59.0,58.8,60.2,61.5,59.4,58.2,58.2,56.6,59.2,57.0,63.0,65.7,57.6,58.8,58.3,57.3,56.7,59.5,61.2,60.0,60.9,58.1,59.3,57.3,59.8,61.1,60.0,59.7,58.6,54.6,59.8,57.1,57.3,58.2,59.0,58.3,56.3,60.1,59.3,54.7,58.8,58.7,65.5,56.6,59.7,61.6,61.1,58.5,58.2,58.4,60.3,58.4,60.1,58.6,58.6,60.1,61.8,59.4,60.2,59.1,59.3,59.3,58.2,60.6,61.1,61.2,54.2,115.1,58.0,60.0,58.4,52.6,57.6,58.0,64.1,59.9,59.3,58.7,59.7,58.3,59.2,60.9,57.9,58.7,58.9,58.0,55.9,59.8,64.7,67.2,61.1,58.0,60.5,58.5,57.9,60.4,60.4,56.3,55.1,59.9,59.2,59.5,58.0,57.9,58.9,58.0,58.1,59.1,59.6,57.7,59.2,58.5,58.2,56.9,61.0,57.1,57.5,57.7,60.0,59.3,59.3,59.6,58.8,59.0,58.3,61.1,58.0,60.2,58.1,59.2,60.1,60.8,58.2,62.5,59.1,59.8,59.0,59.1,57.2,61.3,59.8,57.3,58.0,57.8,59.7,58.3,59.6,58.3,62.6,59.4,58.3,59.5,58.4,56.5,58.3,58.3,58.2,61.2,57.9,58.2,58.7,63.6,57.7,58.1,57.6,59.6,58.2,60.0,59.2,56.3,60.4,58.7,59.2,59.8,59.5,58.0,57.7,61.6,59.2,59.7,59.5,60.0,59.8,57.3,59.4,57.3,58.2,73.5,52.4,58.0,59.8,61.3,54.9,60.3,59.2,59.4,55.5,57.6,59.1,55.7,59.6,58.5,57.9,57.8,56.7,58.2,59.5,57.2,58.0,62.7,60.0,59.0,57.7,61.2,56.4,58.8,61.1,59.7,59.3,57.2,56.8,58.7,58.6,58.0,58.0,56.0,58.2,60.9,58.3,60.0,59.1,57.5,61.0,64.7,60.6,60.4,59.6,58.4,62.3,58.4,58.6,59.2,58.1,58.0,58.4,58.0,59.2,57.3,58.8,57.4,56.4,59.5,57.4,59.5,60.9,58.8,59.5,59.5,57.2,58.9,58.5,58.4,58.4,57.0,58.6,60.6,59.3,60.0,58.7,58.5,59.7,58.9,59.6,60.0,63.3,58.6,58.7,57.8,59.0,57.1,59.2,58.9,88.7,58.3,62.8,55.9,59.2,59.9,58.6,57.0,61.4,58.7,58.7,59.6,58.8,57.6,56.3,54.3,60.3,63.3,59.8,57.9,56.8,59.9,58.9,57.8,58.5,65.7,59.4,61.4,60.6,59.6,59.2,58.0,62.6,58.9,55.9,59.1,59.4,57.1,61.2,58.2,58.5,64.2,58.5,59.6,60.4,57.0,63.2,58.5,58.8,60.2,59.4,57.6,58.0,69.0,56.9,62.4,57.1,58.6,57.9,58.4,58.8,58.1,58.5,60.6,56.4,62.1,60.4,62.5,58.3,61.9,62.9,58.3,59.5,74.5,60.9,58.6,55.5,60.8,56.6,58.6,56.7,58.8,68.1,67.6,60.0,57.1,59.4,59.0,56.9,61.9,58.1,60.9,59.0,58.2,59.4,60.7,60.0,58.9,101.5,59.5,58.4,63.2,56.9,58.0,55.2,57.1,57.7,58.7,59.6,59.3,60.6,58.7,62.4,60.0,58.9,59.1,59.1,58.7,60.2,59.3,72.1,56.5,56.5,59.2,59.2,58.2,58.5,58.6,56.2,58.0,59.6,62.6,57.6,56.5,58.0,59.6,60.1,64.1,59.6,58.4,60.2,57.1,57.7,57.3,59.3,57.6,58.3,58.4,58.0,59.8,60.0,57.9,57.2,59.4,55.7,59.1,59.1,58.3,57.6,56.0,57.8,56.7,56.1,57.6,63.1,56.2,56.4,58.0,58.5,57.4,59.2,59.3,59.3,58.8,52.0,62.0,57.1,58.6,60.3,59.4,58.4,57.7,58.7,57.6,57.9,58.5,56.8,60.1,60.1,56.0,58.0,58.8,58.7,60.0,57.3,56.9,58.1,56.9,62.3,55.6,59.0,59.2,61.0,58.1,58.8,58.6,60.2,50.3,59.4,59.3,57.3,58.9,62.6,61.1,56.0,60.6,58.4,58.1,63.4,59.3,54.8,61.1,59.5,59.7,85.2,58.7,60.0,57.9,58.7,58.5,62.7,59.0,60.1,59.9,59.3,59.7,59.3,57.0,60.3,59.4,57.8,59.6,57.8,58.6,55.1,59.5,57.9,57.8,58.9,58.2,61.7,57.0,58.7,62.5,58.8,57.0,57.6,60.1,58.8,57.7,56.9,57.7,59.8,63.7,59.3,58.2,58.1,58.4,58.1,60.8,58.8,59.0,58.4,59.7,58.5,54.8,58.0,60.1,61.3,56.9,62.0,57.9,61.4,55.7,56.0,57.5,57.9,59.6,57.5,58.6,59.1,58.3,57.7,59.3,59.2,58.3,57.8,59.6,58.4,65.4,57.8,58.6,62.3,58.9,58.0,58.8,57.5,59.4,59.5,57.9,59.9,59.6,60.4,58.8,55.7,58.3,59.1,58.9,57.7,60.0,57.8,58.8,59.0,57.7,56.1,58.8,57.8,58.1,61.4,59.1,60.2,61.0,58.1,58.3,58.6,60.6,59.5,59.1,60.7,59.7,59.6,56.5,57.4,57.6,62.9,61.4,60.5,59.8,58.1,58.4,59.1,60.2,59.1,54.9,60.1,58.9,58.8,59.0,56.1,57.9,58.3,58.3,59.3,58.3,59.4,59.7,66.9,59.8,57.4,58.9,57.2,57.4,60.2,58.0,60.8,57.9,57.7,59.0,57.8,58.4,58.4,58.8,56.9,57.6,58.4,59.1,58.3,58.1,58.8,58.5,59.1,58.3,56.4,59.0,60.5,58.8,70.4,57.3,58.9,57.7,61.5,58.8,57.8,57.9,58.0,58.1,57.2,58.0,57.4,60.7,59.3,58.0,58.1,61.2,59.7,55.9,61.2,55.6,59.6,56.9,58.0,58.1,60.5,57.6,58.8,63.8,58.4,61.1,56.0,58.9,56.8,56.6,59.9,58.4,56.9,58.6,56.1,59.4,67.8,59.8,60.8,60.1,57.9,60.7,58.5,58.6,59.6,59.4,58.3,58.7,59.4,59.1,59.2,58.5,58.7,59.6,57.6,59.5,58.8,57.8,58.3,63.3,63.3,55.8,57.7,61.1,52.4,59.1,59.7,59.0,56.7,58.1,57.5,58.3,58.7,59.6,55.8,70.7,59.0,58.4,58.0,54.2,55.8,58.4,57.8,58.5,58.0,59.2,58.3,58.3,59.1,59.1,66.9,59.8,58.2,59.5,57.0,58.1,58.2,59.6,60.3,59.0,57.9,58.9,57.0,59.2,59.7,56.3,57.6,58.4,59.5,59.1,61.8,57.9,60.1,57.1,59.1,58.3,59.2,62.9,59.0,58.1,58.5,59.0,57.9,58.1,61.8,58.9,56.7,68.4,57.1,58.4,57.8,65.4,56.9,58.0,58.8,56.6,59.0,57.9,58.1,63.8,58.5,58.6,57.3,63.1,58.5,59.2,58.3,69.6,58.1,58.3,63.3,59.8,58.8,58.3,57.7,56.6,59.1,58.4,62.5,58.2,58.1,55.8,59.1,60.9,58.1,59.3,59.8,58.4,58.8,60.7,64.4,57.9,56.8,58.9,57.5,59.5,59.0,62.1,58.2,58.3,57.3,57.7,59.4,53.5] + }, + { + "position": 18, + "values": [99.3,96.7,97.8,103.2,100.0,96.8,99.8,100.3,95.4,101.7,98.0,106.3,92.1,103.1,97.8,95.6,97.9,96.4,96.3,99.3,93.4,102.7,99.0,98.4,95.7,95.3,97.5,98.4,96.9,104.5,94.7,98.1,98.1,99.0,98.9,96.4,98.7,102.5,95.8,99.2,98.2,95.6,99.8,96.7,98.0,96.1,99.2,100.0,97.1,97.0,100.5,96.9,98.3,98.2,99.5,95.2,95.6,99.7,102.5,104.1,97.4,101.3,98.6,97.3,95.8,98.1,96.8,100.5,96.8,100.6,105.3,97.7,100.8,98.1,98.3,96.7,102.8,94.4,90.1,99.1,97.3,98.3,98.6,96.9,96.2,96.3,95.5,97.5,100.9,97.2,101.6,104.4,97.7,99.7,92.2,97.7,89.9,95.7,99.3,99.7,101.7,100.7,96.1,102.5,99.2,96.0,98.0,94.8,96.8,97.4,98.4,102.1,98.2,95.3,97.5,98.0,102.9,97.6,99.8,101.6,101.1,98.9,104.0,95.7,97.8,106.1,98.4,92.2,98.1,97.5,100.7,101.2,103.6,93.3,102.1,100.5,95.3,100.2,95.9,96.8,99.9,98.2,96.4,100.4,100.5,97.6,96.7,97.5,97.3,101.2,95.5,94.7,98.2,92.0,93.4,98.8,99.9,96.0,97.7,102.8,96.4,94.0,99.6,98.9,104.1,97.4,95.5,99.8,95.4,98.5,96.8,97.3,97.1,98.6,97.6,96.3,95.9,96.3,98.7,100.5,102.0,97.8,96.7,99.5,140.4,111.8,97.5,97.8,99.0,92.8,98.7,98.6,98.9,101.5,94.9,93.4,97.6,97.8,99.7,100.0,108.6,97.7,97.8,97.8,105.6,93.7,97.3,99.3,102.0,97.9,97.1,99.5,101.2,99.1,95.7,98.2,98.3,100.1,96.9,95.5,98.3,99.0,98.9,99.5,97.8,98.1,98.1,95.2,97.5,100.8,96.3,101.1,93.5,97.1,98.9,97.0,98.0,98.2,96.5,99.1,102.5,97.0,102.9,102.4,99.4,97.3,96.5,102.6,98.0,102.9,99.8,98.5,97.9,95.7,96.1,95.9,91.2,97.4,99.3,99.6,100.1,98.4,97.6,94.3,99.7,94.0,99.8,100.2,98.8,95.9,98.8,96.6,99.4,96.5,101.1,97.4,98.8,98.4,100.5,99.8,101.0,99.0,99.4,101.3,93.8,98.7,99.4,98.0,97.6,97.6,95.8,96.9,98.8,98.9,90.7,101.6,98.2,103.4,99.1,96.1,46.2,101.0,97.6,100.8,102.7,97.7,99.5,100.6,98.0,97.1,96.8,97.3,106.0,99.7,96.0,95.9,93.3,100.1,96.6,92.3,95.9,93.0,97.0,97.9,103.9,98.0,98.5,94.1,95.3,96.3,101.1,97.7,98.8,97.1,97.2,99.1,94.6,98.7,92.7,99.5,99.1,97.1,97.9,95.2,105.3,94.7,94.2,88.6,100.6,103.7,100.0,96.1,97.7,98.5,98.5,98.3,98.5,97.5,100.7,97.0,99.0,96.1,95.5,95.5,99.0,99.3,106.7,101.2,96.8,99.2,96.6,99.7,96.8,95.9,148.0,97.8,98.1,97.3,99.8,96.9,97.2,104.4,99.6,99.8,95.7,100.6,97.5,100.3,99.5,91.9,99.3,101.0,97.7,95.8,97.2,99.1,98.2,101.8,37.1,87.1,98.6,107.2,95.7,97.2,99.8,103.0,99.9,97.0,98.7,97.0,101.4,106.3,101.5,101.2,101.4,97.3,98.8,94.3,94.6,97.4,100.2,89.0,104.8,93.1,96.7,100.8,89.7,97.0,99.4,98.8,98.2,99.6,100.1,99.7,96.8,91.9,96.4,102.9,99.7,97.0,95.1,98.5,102.9,96.5,101.4,102.3,100.4,96.9,91.3,96.6,93.5,98.1,102.8,107.7,99.0,101.0,98.7,95.7,99.2,97.9,103.5,98.9,95.9,99.6,97.0,100.1,95.6,105.0,99.7,82.6,96.0,99.3,98.3,102.5,95.3,100.3,97.9,94.8,98.3,98.5,97.9,103.9,96.2,98.7,98.8,98.5,96.9,98.2,97.2,96.0,100.9,98.4,110.2,92.9,96.5,148.0,101.2,102.7,99.4,100.3,97.1,93.9,97.3,96.8,100.4,98.2,97.3,102.5,99.7,100.1,110.0,97.1,96.3,101.4,95.6,101.9,100.0,98.5,38.4,88.4,97.4,97.9,85.3,97.5,98.2,94.9,95.1,103.4,101.2,98.4,101.2,99.4,99.3,105.0,101.2,98.2,99.5,102.9,97.4,100.3,97.7,96.9,98.1,99.4,97.6,98.6,99.1,97.5,97.7,96.3,92.1,98.6,98.7,100.6,96.9,99.9,93.9,98.9,99.0,100.0,99.2,94.9,98.3,98.7,100.3,95.4,97.1,96.7,97.9,99.4,73.9,108.0,95.3,99.1,99.4,101.3,99.9,97.5,99.4,104.1,98.9,98.3,97.0,99.1,101.4,95.2,96.3,94.4,100.1,94.8,99.1,95.1,95.7,98.5,103.6,90.8,99.9,97.8,99.2,84.9,101.4,103.6,95.8,97.2,86.2,98.3,100.8,98.6,94.5,100.4,99.0,96.2,95.2,98.1,98.1,98.4,98.1,97.3,98.0,93.0,97.1,125.7,99.5,98.3,97.4,98.4,96.6,108.1,100.8,95.3,102.3,96.6,99.8,95.8,100.8,100.7,97.0,97.0,96.9,96.8,97.0,110.6,98.8,98.2,97.9,97.1,97.9,98.5,93.9,101.1,98.3,94.6,97.5,99.2,96.8,97.3,95.7,96.7,98.0,97.4,102.9,99.6,99.8,98.3,97.7,102.6,99.2,99.6,94.7,92.7,100.0,99.5,88.3,99.5,98.5,88.7,98.2,103.5,97.2,98.5,98.3,102.0,95.3,95.1,102.7,98.5,99.9,95.4,96.7,97.1,98.1,98.3,98.1,97.6,97.3,93.8,96.6,99.6,98.9,98.8,99.0,99.3,94.8,101.1,98.5,98.7,102.8,98.2,101.6,96.8,97.0,101.0,98.4,96.5,99.4,99.6,97.7,106.1,96.2,95.9,98.9,102.1,99.4,95.1,99.2,96.2,97.9,100.3,98.6,98.1,97.7,99.7,97.8,97.9,97.9,97.0,96.0,100.5,95.6,97.8,98.8,108.0,100.3,101.0,97.3,97.9,97.1,97.4,100.4,99.7,98.4,101.4,101.4,94.7,97.3,98.5,97.6,97.8,97.7,96.3,101.2,98.9,101.0,116.9,98.1,99.4,98.5,98.4,91.6,99.6,100.1,96.4,99.7,97.8,94.4,99.4,98.3,96.4,100.4,96.1,99.0,98.9,98.7,97.5,102.2,94.9,100.5,98.5,97.0,97.8,97.2,100.1,97.8,160.6,98.9,97.0,95.6,101.1,98.7,101.1,99.5,97.8,94.6,97.4,100.1,95.7,96.4,91.5,100.9,99.5,101.9,93.9,98.2,97.2,100.0,100.5,95.0,96.5,95.4,102.5,93.3,96.2,99.8,97.9,100.9,98.5,96.4,97.2,101.4,92.3,101.7,95.3,102.9,100.2,97.3,105.5,104.1,95.6,95.9,96.9,100.7,94.1,98.2,99.0,98.3,97.1,98.8,102.8,96.6,98.1,96.8,97.3,95.3,98.2,98.2,100.2,97.4,98.0,99.0,103.2,96.3,100.3,99.0,102.4,100.0,96.7,98.6,98.4,100.3,92.7,97.6,97.4,100.9,53.6,97.6,98.0,97.3,96.2,97.3,98.4,98.7,96.0,95.3,71.6,96.1,96.6,99.0,98.3,99.0,99.4,104.7,90.5,95.7,97.5,97.7,94.5,96.3,96.9,97.8,103.6,97.0,97.9,92.5,96.7,99.0,96.2,98.7,98.5,97.9,101.8,95.8,93.6,98.0,97.7,97.2,96.4,98.5,88.7,99.6,97.1,97.5,97.1,101.3,100.7,97.3,98.2,96.8,97.7,99.2,98.7,100.4,97.1,99.8,98.7,98.0,96.9,97.9,98.1,97.8,98.8,97.2,100.7,102.8,95.4,96.5,91.2,99.5,98.3,96.4,95.8,96.3,100.9,94.8,102.2,98.7,96.6,89.0,99.7,96.1,99.3,97.2,93.9,94.4,101.1,98.9,99.7,94.9,97.3,98.0,96.7,103.3,95.0,94.8,91.3,101.5,102.3,95.4,101.1,92.9,98.8,98.3,97.5,103.3] + }, + { + "position": 19, + "values": [102.6,96.9,104.1,104.8,106.7,102.4,97.1,99.8,102.5,92.6,85.7,104.8,96.9,76.0,107.7,98.5,98.4,99.2,95.2,99.7,104.0,95.0,98.7,98.9,97.9,90.6,97.2,105.4,107.3,98.4,98.7,99.2,102.6,99.4,85.6,97.5,89.6,107.9,101.3,103.1,105.8,90.0,97.7,98.0,100.5,99.5,99.4,108.7,90.8,97.1,71.5,102.2,103.2,101.5,98.3,103.5,77.0,99.2,102.1,92.7,100.5,70.8,101.4,99.3,98.5,98.0,105.6,99.3,99.9,101.6,96.8,108.9,100.4,100.0,92.5,100.1,100.7,94.7,68.0,99.3,98.9,103.6,97.8,106.6,96.6,100.4,104.4,108.4,87.1,102.7,98.6,101.0,91.1,107.4,102.2,85.9,107.4,108.1,83.1,96.6,97.2,97.6,100.6,93.6,99.9,102.7,103.0,96.6,101.1,100.9,104.7,105.4,99.3,90.4,101.6,91.2,106.5,97.8,104.3,106.0,102.8,102.6,101.2,100.7,84.6,98.0,94.1,103.0,97.0,100.1,92.3,71.8,92.6,100.8,95.4,96.8,97.2,101.4,80.8,101.4,70.4,103.4,98.8,95.8,68.7,94.7,101.5,101.2,101.6,104.1,91.8,99.1,103.5,84.0,100.8,72.0,99.7,110.7,98.8,103.8,97.8,101.0,96.5,104.3,101.2,94.9,98.0,100.9,86.2,98.1,80.3,89.8,101.7,103.4,95.0,106.6,107.2,94.5,102.6,102.9,97.5,102.8,63.5,72.9,90.0,97.1,65.0,100.3,100.0,97.5,101.6,99.7,105.7,94.8,105.1,95.2,97.4,87.8,103.7,103.1,90.4,100.6,105.4,106.9,113.9,104.6,103.5,99.0,89.9,105.4,90.5,86.8,102.6,85.5,104.4,100.7,101.1,107.0,101.6,97.8,99.6,98.9,100.8,99.1,104.3,103.4,97.7,108.2,71.5,106.5,95.6,79.2,103.1,102.2,99.2,105.0,100.7,104.5,99.1,100.6,103.0,109.8,97.1,99.2,98.2,96.1,90.0,97.7,97.2,101.4,87.9,97.9,96.0,94.6,99.9,98.1,103.6,103.0,98.1,108.3,102.8,93.0,105.9,106.2,103.0,104.5,103.4,96.8,103.9,96.8,101.0,98.0,103.0,98.7,96.3,91.7,107.2,100.5,95.5,101.4,102.5,102.5,100.6,97.7,83.5,94.9,87.4,99.7,110.4,103.0,99.3,104.6,105.9,97.9,99.1,106.2,96.9,105.2,103.2,102.3,89.8,100.8,104.3,105.8,99.9,95.5,103.2,103.3,99.1,71.0,101.2,99.5,106.4,94.0,107.0,98.0,67.6,97.7,96.4,83.6,85.8,92.5,94.7,95.4,91.8,73.2,107.2,103.9,98.8,98.2,104.3,99.2,103.2,103.1,99.2,86.1,90.7,90.6,92.3,88.7,102.8,96.0,104.1,103.0,93.7,97.8,99.5,103.4,105.1,99.0,103.0,98.2,103.2,93.5,101.2,107.1,100.1,108.5,106.0,102.4,97.4,91.0,90.8,103.4,97.6,98.6,99.6,94.4,94.6,98.2,104.4,91.1,104.5,92.9,101.0,103.5,99.1,98.2,103.4,100.4,97.6,100.8,102.7,100.6,96.8,102.2,98.8,105.9,96.6,106.3,96.6,66.2,103.0,75.4,107.9,100.8,99.0,115.2,87.4,94.6,85.3,96.1,99.3,95.9,102.6,89.0,100.6,105.3,100.4,100.1,106.6,76.3,103.2,103.6,104.6,102.9,105.5,88.9,105.9,105.8,99.3,99.8,107.8,102.0,99.9,103.6,102.9,105.0,101.0,87.9,97.7,101.7,97.8,103.0,95.6,106.6,95.5,100.6,99.5,104.5,101.9,99.9,76.7,90.3,100.7,94.5,103.5,101.2,100.6,96.2,100.3,97.7,100.0,96.2,94.9,95.7,90.6,94.4,100.3,98.7,105.2,102.1,104.7,92.4,95.8,99.6,100.0,103.1,99.8,98.7,103.8,104.7,100.3,107.4,99.8,67.5,101.0,94.4,100.4,103.6,114.0,101.9,96.9,102.7,70.4,103.0,98.6,100.4,104.3,101.0,100.9,75.4,92.6,84.9,100.4,101.6,79.0,101.6,104.7,104.3,105.4,98.8,91.6,101.5,107.1,101.5,102.5,100.2,101.0,103.6,88.0,97.2,105.3,98.8,105.3,98.4,112.1,110.2,87.8,84.1,106.5,101.1,96.3,107.1,99.6,102.8,102.1,104.9,91.9,88.5,104.4,98.1,102.6,101.8,106.4,101.0,68.7,98.6,96.7,97.4,98.9,95.4,99.3,99.1,67.5,102.9,97.8,104.5,101.5,97.8,93.2,69.0,101.0,96.6,100.8,102.2,101.5,101.9,100.6,92.9,103.2,97.1,103.3,104.3,99.4,105.8,97.7,100.2,100.9,100.2,101.2,40.6,102.3,103.4,91.9,93.5,96.4,104.8,101.8,96.1,101.9,96.8,101.9,86.1,103.1,106.9,98.5,96.2,99.9,94.9,100.9,80.7,98.6,104.3,103.9,102.9,100.2,83.7,100.2,101.6,103.6,99.1,100.0,103.3,104.6,100.2,71.4,96.5,101.2,104.3,95.7,101.2,87.2,70.6,81.3,98.2,100.3,101.4,101.2,98.2,109.7,101.5,100.2,103.1,92.2,100.2,104.9,103.8,98.4,103.0,103.1,100.8,96.7,85.3,104.4,87.0,100.9,89.2,98.3,97.0,99.4,84.4,99.9,100.6,99.4,98.9,98.1,98.8,93.3,105.3,106.3,105.8,100.9,73.0,99.2,102.9,101.9,100.8,81.0,107.5,98.5,103.4,87.5,98.7,75.1,102.5,101.2,102.1,102.5,81.2,102.4,86.7,98.4,98.5,100.9,100.4,99.5,100.6,89.9,98.7,93.8,97.9,101.8,96.1,96.3,101.8,92.4,103.3,89.6,94.2,100.0,68.5,104.7,102.4,99.2,106.6,99.7,102.1,74.4,98.7,99.7,70.2,97.8,103.5,103.0,101.8,92.7,87.3,73.2,94.9,100.8,97.8,99.1,101.4,99.6,100.1,93.8,99.6,99.8,102.8,100.7,104.6,100.0,97.1,101.7,99.7,100.6,81.6,88.6,101.8,100.3,83.8,101.9,105.9,97.6,75.0,97.9,98.3,102.4,96.9,103.7,94.0,87.5,100.0,101.1,104.4,102.4,101.2,101.1,101.7,104.3,93.3,100.0,95.4,99.5,96.4,102.0,97.6,100.8,101.1,100.4,101.5,98.4,104.8,91.7,70.6,102.4,95.6,76.9,96.9,99.3,103.6,72.7,98.2,97.9,102.3,101.8,106.1,103.4,106.4,101.2,89.5,95.8,72.4,100.9,103.8,100.9,72.0,70.9,100.7,96.0,96.5,99.5,108.8,105.9,100.2,95.8,105.2,94.3,88.8,102.4,101.7,100.1,94.1,98.8,98.2,105.2,106.0,99.1,100.0,100.4,104.9,99.4,95.8,102.1,91.4,100.6,97.5,103.8,106.2,93.9,97.8,103.3,97.1,97.0,85.9,97.6,101.5,99.4,91.9,98.9,96.3,101.6,85.3,100.5,108.6,94.7,99.4,96.5,100.3,102.8,94.2,95.9,99.5,104.3,102.3,100.3,99.1,103.6,98.3,101.9,107.4,102.5,106.1,99.4,72.6,98.1,101.9,93.2,172.8,98.8,98.9,99.2,105.2,94.7,98.9,102.8,102.5,104.4,87.5,102.2,96.1,98.0,105.0,108.7,90.1,96.2,103.2,100.6,98.6,95.6,97.3,101.8,71.6,98.2,99.9,97.2,99.5,100.7,108.7,94.4,103.8,78.4,100.7,103.7,97.8,104.1,100.1,74.3,104.8,55.5,101.5,99.0,98.1,95.0,94.5,104.5,97.8,100.6,101.7,95.2,103.5,99.4,87.2,101.5,70.2,102.0,94.3,86.9,106.1,93.5,99.6,95.1,103.4,100.6,99.3,90.1,106.0,103.4,104.2,92.5,102.4,71.5,98.3,87.2,97.8,105.1,98.9,105.5,99.4,94.9,97.9,91.0,98.1,101.0,95.7,99.8,101.0,102.6,102.9,101.7,91.0,95.8,99.7,93.4,97.3,100.4,107.2,101.7,101.5,103.5,102.3,104.5,102.9,102.4,100.8,98.3,91.9,102.6,108.4,103.6,106.9,100.4,107.5,85.1,71.7,104.9,93.1,92.3,103.7,102.5,95.9,95.0] + }, + { + "position": 20, + "values": [39.1,37.1,37.6,35.9,41.4,37.9,37.1,29.1,47.1,35.9,27.7,38.5,38.6,40.4,27.4,38.1,35.3,28.7,36.3,36.3,37.1,22.2,39.7,36.0,36.3,37.6,34.0,37.5,37.6,39.0,28.6,38.3,43.6,40.7,38.2,37.4,32.8,40.0,39.3,36.2,37.8,37.1,35.9,36.7,35.9,38.5,37.4,37.4,37.1,34.6,27.1,39.4,37.8,42.3,37.1,41.5,32.9,36.1,41.9,43.4,36.3,27.8,34.1,35.5,41.8,34.1,36.7,37.6,38.6,39.6,44.0,37.5,36.8,42.4,40.2,39.5,37.4,37.6,31.0,36.7,36.2,38.1,37.2,38.6,35.5,37.8,36.8,40.9,26.9,41.9,37.7,34.1,39.3,40.1,39.3,32.3,39.0,37.2,32.7,37.6,33.6,37.1,37.5,36.4,36.4,34.5,39.3,41.0,39.7,37.1,37.8,37.5,38.1,36.0,37.7,38.9,28.2,38.0,40.4,38.6,36.8,37.0,36.2,36.1,37.8,41.2,42.6,41.2,35.4,35.3,30.5,27.2,38.6,44.3,41.0,30.3,40.0,37.0,30.6,38.9,26.7,37.4,37.9,41.1,37.0,39.9,26.8,38.7,36.1,36.4,34.6,36.9,36.6,34.0,36.0,36.2,27.0,36.6,36.0,37.4,36.4,38.8,28.7,37.8,38.5,35.2,35.6,38.7,28.0,36.0,32.2,39.5,36.4,35.7,38.0,35.4,36.2,36.9,38.2,40.3,39.0,40.3,27.4,34.1,91.1,36.0,37.5,39.0,39.1,36.5,38.4,38.2,38.9,34.7,37.6,35.8,37.0,39.8,34.4,37.1,42.2,38.8,38.6,42.7,48.5,38.2,36.6,38.4,36.8,34.8,35.7,36.8,32.2,41.0,35.9,35.5,35.1,43.9,37.2,34.8,36.0,28.6,38.0,36.3,37.0,36.9,34.6,40.3,26.8,37.4,35.4,28.1,36.6,37.1,37.9,36.5,36.4,37.4,35.4,37.0,41.0,41.6,37.4,36.3,38.8,40.1,37.8,38.1,39.7,35.1,36.5,33.6,34.1,33.9,38.2,38.7,36.8,36.3,39.6,38.5,38.9,37.8,39.9,41.7,36.4,37.4,37.2,38.1,36.8,36.6,37.0,37.8,41.6,40.5,35.6,36.8,43.7,36.2,37.5,37.1,37.6,37.2,38.2,36.0,34.7,36.6,35.8,36.5,36.8,38.3,38.4,37.0,39.0,36.4,39.6,41.7,40.2,37.3,37.1,37.0,45.5,35.7,40.5,40.2,37.7,41.8,37.8,40.3,35.7,27.1,36.4,35.1,41.6,33.9,46.0,36.2,25.7,35.7,34.9,40.5,35.7,36.4,37.3,41.4,36.2,25.7,37.8,36.1,38.4,35.5,38.6,39.3,37.7,36.8,41.5,33.6,39.5,34.1,36.4,36.4,40.7,36.2,37.5,35.8,39.8,36.0,34.8,40.4,43.4,35.0,38.0,36.2,39.4,33.6,40.0,37.2,38.0,39.6,40.1,36.6,38.5,35.8,37.9,36.7,36.8,39.4,38.2,39.0,37.4,37.6,36.7,35.3,34.1,37.3,36.2,28.4,36.3,35.3,36.1,37.6,34.3,40.5,38.6,37.4,35.8,38.0,38.6,28.9,40.1,41.8,36.0,31.5,37.0,32.1,41.7,37.7,37.5,33.6,53.3,37.6,33.3,36.4,35.1,37.5,37.3,35.3,37.4,37.6,39.9,37.9,41.5,39.3,27.6,39.6,43.8,39.8,27.8,38.3,36.1,36.1,42.4,39.1,35.9,38.3,36.6,41.7,38.7,37.3,36.6,34.1,34.3,36.3,39.9,35.8,38.1,41.4,34.4,38.4,36.7,32.0,41.8,37.3,28.0,38.0,37.5,40.9,37.2,38.4,35.4,37.4,40.0,37.8,37.7,38.4,40.2,40.5,39.9,33.0,35.7,38.8,39.1,38.7,43.5,43.3,35.6,41.0,38.8,42.4,38.5,40.6,38.6,38.7,34.6,40.0,36.0,37.1,40.3,33.2,37.9,43.8,36.3,44.2,36.0,37.1,36.7,39.2,34.2,35.7,36.7,36.3,41.7,34.6,37.2,27.0,38.8,33.1,39.8,37.4,39.7,38.4,38.7,41.3,39.2,35.3,38.1,35.7,37.9,39.7,37.1,37.1,38.9,35.6,37.0,41.8,38.4,39.7,39.2,35.8,34.5,28.3,37.4,36.5,37.4,36.8,36.7,36.9,32.8,38.7,37.3,33.5,40.5,36.3,36.8,41.7,40.4,40.3,26.1,40.0,34.7,36.4,36.4,39.3,36.4,38.3,33.7,37.1,26.8,35.6,37.3,35.6,36.9,26.2,30.0,38.0,37.3,37.9,36.3,46.7,39.1,37.7,37.7,40.5,39.1,37.6,40.0,38.4,33.7,38.5,36.9,34.4,37.7,18.0,37.4,37.5,32.6,38.9,39.6,39.1,36.5,36.2,35.3,38.2,38.6,33.6,40.3,40.4,34.0,34.0,36.6,40.5,36.0,38.4,34.9,38.1,35.2,37.2,32.7,27.0,38.6,40.1,38.0,41.2,35.9,36.9,36.6,38.4,27.7,34.4,35.1,38.8,31.5,37.6,35.4,26.3,28.0,40.0,37.3,34.1,36.6,34.8,55.1,37.3,37.0,37.2,36.9,37.9,34.7,39.5,37.6,37.3,40.3,35.6,37.1,33.2,37.9,28.1,38.3,38.1,36.5,36.6,38.9,37.6,37.6,35.1,36.4,38.3,38.5,40.1,37.9,40.7,41.0,37.6,28.3,26.9,36.0,37.4,36.3,41.1,32.6,33.8,38.0,38.5,37.3,37.2,27.8,38.8,37.7,39.0,37.7,38.4,34.3,34.3,35.0,38.7,37.1,39.9,36.0,42.5,35.2,39.4,36.0,39.6,38.1,38.1,41.1,36.7,36.4,38.7,36.8,36.0,36.0,39.0,29.7,36.9,31.7,41.2,41.3,38.1,36.6,38.6,27.9,25.9,33.6,32.9,37.2,38.7,40.0,27.5,37.6,36.5,38.3,37.6,36.1,36.8,36.0,35.5,35.5,41.3,36.8,37.2,36.7,38.3,36.5,37.8,37.9,38.9,36.4,31.0,33.0,36.9,36.5,34.4,38.7,41.4,37.5,27.3,35.9,38.0,39.3,35.6,37.2,35.9,37.6,43.7,30.6,37.4,32.1,35.4,38.9,38.6,38.1,37.0,38.1,36.6,38.3,37.9,37.9,37.4,37.0,35.3,36.2,38.0,37.6,35.7,26.2,36.8,37.3,37.4,36.6,39.0,36.7,35.8,27.1,39.8,36.4,35.4,37.2,38.2,39.2,41.5,37.4,35.3,36.7,27.5,36.6,36.7,35.9,27.1,26.4,41.6,36.7,33.9,39.1,41.7,36.7,36.9,35.6,40.0,37.2,37.1,38.3,37.1,34.3,34.9,36.9,36.8,40.2,34.5,43.0,37.6,39.0,37.0,42.4,39.1,35.5,37.9,35.6,34.9,37.9,36.5,36.4,35.7,41.7,39.3,37.9,39.1,35.2,37.0,46.7,37.2,30.8,37.4,36.1,33.7,41.7,46.1,36.5,38.6,36.0,39.6,36.0,35.5,36.1,37.3,37.0,38.7,39.3,39.3,36.8,37.4,37.8,37.5,38.1,37.5,38.7,27.5,39.6,36.4,36.8,40.5,36.4,36.3,38.3,38.3,38.1,37.0,36.1,33.6,41.0,37.4,35.7,39.5,38.4,35.3,37.1,28.5,35.5,39.1,37.0,37.7,34.9,40.0,37.5,37.4,38.2,36.4,37.0,37.0,35.6,52.9,37.6,34.1,37.5,44.5,38.3,37.7,35.6,37.3,37.1,20.5,35.2,39.2,34.4,35.9,34.1,37.7,34.0,36.4,38.2,36.2,37.4,40.0,26.8,39.7,38.7,29.4,35.7,41.8,38.2,37.3,38.7,34.9,39.2,37.2,34.9,38.1,36.1,38.8,36.4,45.3,26.7,28.1,41.4,32.8,37.7,37.4,37.7,41.0,34.6,37.7,29.0,37.2,28.7,40.4,37.3,30.8,37.4,35.9,38.6,36.6,36.9,36.1,38.6,37.5,36.4,43.3,27.7,39.1,35.9,41.8,38.1,41.5,43.3,36.5,36.9,37.3,35.6,40.2,36.0,44.0,42.1,34.7,39.0,37.4,26.8,38.2,37.0,38.1,37.3,38.3,40.9,40.9] + }, + { + "position": 21, + "values": [92.1,89.5,92.8,85.1,89.5,89.5,91.0,89.1,85.9,88.6,87.8,85.3,86.1,89.8,90.1,88.1,85.4,88.6,87.8,87.2,85.4,91.2,91.5,88.6,85.7,86.2,91.3,87.8,86.2,88.6,88.9,89.3,89.4,90.4,89.4,89.3,85.8,91.0,91.9,87.6,86.0,81.8,89.3,85.1,90.5,85.4,89.2,90.9,85.4,87.1,89.7,92.5,87.6,94.2,88.8,87.4,88.5,88.4,91.8,87.9,95.8,91.0,86.0,88.5,90.5,88.4,84.1,88.6,87.5,88.9,88.9,96.0,88.6,91.4,85.1,87.8,93.9,86.7,90.4,87.3,89.3,91.3,88.2,85.6,89.4,89.9,89.6,83.2,87.3,91.1,88.5,82.7,84.4,93.7,90.6,87.8,85.1,84.4,87.0,89.6,90.5,88.4,88.9,87.1,89.2,90.9,86.6,88.1,87.3,87.6,89.8,87.3,86.9,88.3,86.3,87.3,87.0,87.4,91.6,87.3,86.6,88.7,83.4,86.3,93.4,89.3,88.1,86.2,87.4,85.8,89.3,87.9,89.8,88.4,91.2,88.3,90.0,88.3,86.9,85.0,92.6,91.6,90.0,88.2,70.9,89.5,86.9,89.5,86.1,90.0,88.0,82.2,87.2,88.8,82.6,88.9,89.8,91.6,84.4,86.7,87.7,90.4,87.8,88.4,88.5,85.0,88.3,91.4,88.0,89.5,86.0,86.2,86.8,88.4,86.8,87.7,86.4,90.9,88.5,91.4,88.8,84.8,66.2,89.1,88.0,69.0,91.4,87.7,91.0,87.9,89.2,85.6,87.3,89.3,91.6,83.8,87.8,88.6,83.3,88.6,90.3,90.1,85.6,85.7,100.1,84.3,80.6,90.5,86.8,89.7,85.5,88.7,86.9,86.8,88.3,89.1,86.6,87.9,87.5,86.4,90.1,89.0,88.1,88.3,88.8,88.8,87.6,86.6,88.4,85.9,89.7,80.7,91.0,88.8,84.0,86.7,87.9,88.6,87.0,88.8,90.0,89.0,89.2,86.2,89.5,86.7,91.0,89.3,82.5,87.9,84.3,88.5,89.5,85.6,84.6,90.4,79.8,87.7,90.9,86.4,90.5,91.3,87.3,93.1,87.3,83.6,87.6,90.2,92.5,87.0,91.3,84.9,94.3,90.0,85.6,87.2,91.2,86.9,80.0,88.6,90.7,89.3,84.8,85.4,84.9,85.7,85.9,88.1,89.9,91.0,83.7,89.8,89.1,88.9,90.9,88.2,91.7,89.6,88.4,86.3,91.6,92.0,102.6,92.3,86.6,81.5,89.0,88.4,87.5,86.1,86.7,87.0,91.2,87.1,89.0,87.2,85.1,88.3,85.9,84.0,85.0,88.2,88.1,90.7,87.0,85.8,86.4,82.4,86.7,83.5,86.3,89.1,82.2,85.5,89.1,89.6,88.0,87.8,85.6,88.1,93.1,88.5,82.0,90.6,88.1,85.8,86.6,83.8,92.1,88.9,89.7,83.7,89.7,89.0,92.6,86.3,90.4,85.8,87.5,87.0,87.2,91.7,89.8,88.4,89.8,84.1,89.8,88.7,87.4,87.1,81.6,84.0,87.5,82.7,84.6,83.0,92.6,91.8,87.6,90.9,86.7,93.8,90.8,91.1,90.6,88.6,88.9,88.6,89.1,79.8,87.3,87.3,87.3,87.8,89.3,89.4,88.5,92.2,89.8,84.1,87.7,84.7,87.2,85.1,86.1,87.6,91.1,90.3,89.5,87.0,87.5,88.3,84.1,88.9,96.8,90.0,85.4,86.4,81.6,87.9,86.7,83.8,93.0,86.7,90.1,92.3,87.8,87.4,88.7,97.9,89.2,86.3,88.9,87.6,87.8,87.8,83.5,89.9,90.2,88.4,89.0,91.3,87.7,85.9,90.2,90.7,88.7,88.3,88.1,86.2,90.5,90.6,83.1,87.4,90.1,89.1,89.4,82.3,88.7,84.9,85.5,89.0,87.4,81.8,85.1,89.5,88.3,87.9,87.1,88.1,108.5,90.6,89.7,64.4,82.7,91.0,85.1,86.1,86.6,88.1,89.0,95.6,87.1,88.7,88.6,82.8,87.8,87.4,88.1,87.0,86.9,102.3,89.4,88.4,86.3,99.3,92.0,92.1,89.2,87.3,86.3,88.4,94.1,86.2,87.7,81.9,90.1,89.3,91.6,87.3,86.0,101.5,86.7,90.1,84.6,88.9,86.7,90.8,87.8,88.0,88.6,87.6,85.7,89.6,83.6,84.4,84.2,89.8,87.0,88.1,88.3,85.5,86.5,94.2,93.7,89.0,87.9,89.6,81.7,88.0,91.2,86.5,88.8,88.5,88.2,88.9,89.2,89.2,90.3,87.2,87.3,91.7,90.5,92.5,86.4,93.0,80.3,90.2,87.2,90.6,88.4,87.0,88.8,89.0,91.0,84.0,87.4,89.3,88.5,86.2,82.2,73.9,89.9,80.0,87.1,97.3,88.9,91.0,89.1,89.1,89.1,90.4,88.4,89.6,79.6,89.0,84.8,89.1,89.8,86.7,90.6,86.2,87.3,85.1,87.7,89.9,89.2,88.9,86.8,92.1,84.5,89.1,87.3,90.6,86.4,90.8,93.1,89.1,90.6,86.4,89.5,89.4,89.5,86.0,88.6,88.3,91.4,85.0,87.4,87.6,87.1,100.8,91.3,86.2,83.2,89.1,89.1,84.2,87.9,88.5,89.4,82.1,88.3,85.2,85.0,88.0,88.4,89.7,87.5,86.6,85.2,88.5,90.8,89.7,87.9,89.4,90.0,85.9,92.2,93.6,92.4,82.9,88.3,87.6,86.8,86.7,86.0,86.6,88.1,96.0,87.7,83.6,89.0,89.0,89.8,92.8,90.9,90.8,84.4,88.3,91.3,86.8,83.2,88.7,88.1,87.6,88.7,88.8,85.3,89.8,88.4,85.2,83.9,85.7,92.4,89.1,89.5,87.9,85.3,81.8,88.4,91.3,87.5,88.8,89.3,93.4,89.5,88.2,89.0,90.3,91.2,88.2,87.8,87.8,88.5,91.6,91.0,89.3,87.1,89.1,86.1,86.8,88.4,87.3,85.5,88.5,86.0,91.9,88.0,86.4,88.5,88.4,85.4,90.1,88.3,86.8,86.1,86.2,86.9,90.0,89.1,89.0,85.3,89.1,88.2,86.3,88.6,89.0,84.0,88.0,86.8,87.3,87.9,85.6,90.2,85.3,89.5,88.0,85.2,88.8,88.1,87.1,90.1,89.3,88.7,88.3,88.2,91.4,89.5,84.4,90.3,90.2,89.6,85.0,86.6,88.0,87.9,89.8,88.6,88.9,87.0,88.2,88.0,87.5,86.7,88.1,83.8,83.6,89.8,89.2,84.0,87.8,91.5,86.7,89.3,86.9,88.1,86.6,85.5,87.1,88.4,85.3,91.6,97.6,89.1,85.6,88.5,88.5,89.6,89.9,88.9,87.5,80.6,87.4,84.9,87.2,91.3,82.3,87.6,88.1,96.1,84.6,87.5,89.0,85.9,89.8,89.0,89.4,84.6,89.5,87.3,85.8,92.4,91.5,89.8,89.3,87.1,83.9,92.2,89.6,88.7,85.6,87.5,88.8,85.6,96.0,88.2,85.6,84.9,93.9,87.5,87.6,86.8,91.2,86.3,87.5,86.7,88.3,89.8,87.0,90.0,88.1,88.2,88.6,89.6,91.1,88.0,90.4,88.3,107.8,85.3,88.0,87.3,88.9,82.6,91.7,91.6,89.1,87.3,86.3,90.2,90.4,89.5,88.8,87.3,85.7,89.5,88.7,87.2,89.7,89.4,83.4,89.9,88.8,85.5,89.4,91.4,89.1,86.5,87.7,87.0,83.5,89.2,89.3,87.7,90.7,90.5,84.2,91.4,84.6,87.3,88.5,87.9,89.3,88.2,84.7,85.8,86.9,86.1,91.2,84.4,84.8,86.2,84.0,86.3,84.5,89.4,87.2,87.8,86.9,84.5,90.7,85.5,89.8,93.3,87.0,89.6,90.9,86.6,88.2,91.1,88.4,90.0,87.0,87.8,91.1,83.8,91.4,93.0,89.1,87.4,90.1,88.9,88.6,87.8,90.6,88.4,89.0,87.6,82.4,89.3,88.1,86.8,90.0,87.2,84.4,87.0,84.0,89.1,89.0,87.5,82.1,89.8,90.3,89.4,89.6,88.7,88.9,87.9,84.6,89.7,87.5,83.3,83.2,87.7,90.7,91.5,89.6,83.5,86.1,89.9,89.4,82.7] + }, + { + "position": 22, + "values": [39.0,50.1,36.8,46.9,40.1,37.4,35.9,47.6,39.3,36.3,36.0,38.1,35.6,41.8,39.0,41.3,41.6,37.7,39.5,36.9,38.3,37.9,38.3,38.4,45.4,37.5,40.5,37.7,34.7,33.5,40.3,46.4,45.6,42.0,36.0,48.3,48.0,49.3,38.1,38.6,45.6,42.1,36.8,36.4,37.6,37.3,38.9,38.3,36.3,40.7,40.7,41.2,37.1,40.2,46.8,41.2,41.1,37.3,36.2,39.3,51.5,39.8,35.2,46.7,41.7,48.1,43.1,35.1,34.0,35.3,38.9,52.9,41.6,37.4,40.1,40.2,37.0,39.6,36.8,38.1,36.8,38.3,37.4,37.9,37.7,46.8,35.9,41.9,38.0,46.9,39.2,34.6,37.7,40.7,43.2,36.9,43.5,35.6,36.1,36.0,36.2,37.4,38.7,38.2,37.6,35.2,49.6,41.0,33.0,37.6,37.5,47.2,38.1,40.5,37.1,36.8,37.8,45.4,45.6,37.6,36.5,39.6,36.1,48.4,38.5,52.7,44.0,40.1,47.2,37.3,38.7,34.4,38.7,42.0,41.7,39.8,52.9,46.3,35.3,38.3,51.2,35.3,37.6,36.0,37.4,37.2,41.2,37.2,37.1,44.7,41.4,34.6,37.2,37.8,38.4,41.8,43.5,40.1,34.8,48.5,38.8,48.5,48.0,46.6,50.1,47.5,38.9,37.5,36.8,36.8,39.2,39.8,36.4,37.6,36.3,36.1,42.2,36.2,51.0,47.8,41.7,31.8,49.9,22.5,38.3,46.5,48.1,39.4,33.4,47.6,45.9,38.1,38.4,53.4,39.6,33.8,36.3,36.1,50.5,44.4,44.1,37.5,38.1,40.7,47.9,40.6,51.6,36.9,54.2,48.2,44.9,38.2,36.7,37.6,42.7,47.6,37.8,38.2,40.2,48.1,38.1,46.5,34.8,37.3,37.9,38.1,37.7,43.8,46.6,39.5,48.5,37.7,35.1,38.3,38.0,39.3,46.1,36.6,36.0,36.3,41.2,49.9,47.4,35.9,49.2,36.1,49.8,38.0,40.5,43.7,48.1,39.8,38.1,36.0,48.3,38.7,40.9,45.4,41.0,38.7,40.6,54.7,49.3,38.7,46.3,36.4,37.8,36.5,39.9,40.8,43.5,36.9,46.9,44.0,40.7,39.7,46.7,35.5,52.8,37.7,38.1,37.0,44.8,39.4,38.7,45.2,34.4,42.4,37.9,37.4,38.0,48.8,42.3,38.7,37.1,40.9,38.0,37.6,49.2,37.1,38.2,36.8,44.6,37.9,46.0,35.0,47.0,46.7,41.1,38.8,38.4,47.3,51.6,45.2,44.8,37.8,38.0,38.2,37.5,38.4,48.6,44.8,36.4,40.3,36.6,47.8,39.0,44.8,39.4,49.5,47.0,46.9,36.9,45.7,39.3,42.2,35.0,38.1,37.0,38.6,39.5,37.0,41.0,37.0,38.2,36.5,37.3,41.1,54.7,47.8,38.3,37.0,36.1,43.7,40.7,49.2,37.7,37.8,39.9,38.9,45.6,35.3,47.5,35.8,36.9,37.1,38.2,46.6,49.7,31.8,34.8,39.1,34.6,40.6,46.4,36.3,37.7,36.8,35.8,37.0,37.2,40.2,40.4,38.7,36.6,38.3,41.5,36.9,36.6,40.7,36.2,37.3,36.9,36.1,38.6,37.6,36.2,37.5,41.4,42.1,36.8,41.9,38.0,40.4,41.6,38.1,44.3,38.3,42.8,37.4,50.9,38.7,35.8,38.4,42.4,37.8,39.0,50.3,35.5,37.9,38.0,41.7,37.1,40.3,40.7,33.7,36.2,40.2,36.4,42.0,36.0,39.4,36.7,36.3,44.7,33.6,49.3,45.6,48.1,37.4,35.8,39.1,35.9,40.5,37.3,38.4,37.2,40.6,43.0,35.4,37.8,44.9,46.5,46.9,45.5,42.3,40.4,44.3,46.0,41.8,40.1,37.6,39.3,39.4,45.7,45.1,28.4,44.5,37.1,54.0,43.8,41.8,47.0,35.5,43.6,35.9,36.4,43.7,42.8,44.1,40.2,38.1,45.3,40.4,37.2,37.8,33.7,37.6,36.0,36.3,41.2,38.6,39.7,38.8,42.3,37.7,51.4,36.7,36.0,33.9,37.2,36.5,47.5,37.1,37.7,41.2,38.3,48.6,34.2,37.6,49.6,59.3,40.1,42.0,38.5,46.0,43.1,42.6,36.6,52.7,44.8,37.2,38.8,36.6,37.7,44.9,43.4,51.9,48.4,37.5,40.5,44.5,40.4,39.0,44.5,37.4,36.0,43.2,47.5,39.0,35.2,36.7,38.1,37.0,40.1,38.5,52.1,38.5,37.3,46.3,41.3,37.5,36.5,37.5,34.7,39.3,37.0,37.3,38.6,37.7,37.1,40.0,38.4,40.6,38.0,33.3,38.3,39.0,38.1,36.2,49.9,39.9,37.4,37.2,44.8,47.9,37.5,39.3,37.1,36.6,35.7,41.1,36.7,42.2,40.1,39.1,46.7,37.7,37.0,38.0,40.0,38.4,38.6,44.3,41.8,41.4,33.5,37.3,40.2,42.2,39.3,49.8,37.1,38.5,40.3,36.8,39.3,36.3,37.7,46.3,40.5,44.1,41.6,36.5,37.2,37.9,40.3,36.8,47.0,36.6,36.1,66.3,36.6,42.8,43.7,44.6,39.6,37.2,43.4,39.8,42.9,50.1,38.7,40.8,36.7,37.4,39.1,53.0,39.1,42.5,37.3,37.9,48.7,37.5,47.8,36.8,37.5,50.4,47.2,40.1,47.2,35.9,35.6,38.1,40.7,37.8,36.6,39.9,36.9,39.8,42.5,37.6,41.9,36.9,39.0,41.2,37.9,34.8,42.7,41.6,37.4,36.6,34.9,36.3,46.9,35.8,36.3,36.3,51.2,36.9,36.3,37.2,38.8,49.8,40.8,37.1,35.2,38.2,37.6,36.0,37.6,48.8,38.5,37.1,46.4,39.8,38.5,38.7,37.9,41.5,37.2,35.8,45.4,36.9,40.4,38.3,39.7,39.3,38.3,47.1,36.6,39.8,47.9,40.1,34.1,35.9,51.5,35.1,45.0,37.0,35.7,34.5,37.1,37.2,38.7,43.8,45.6,51.6,37.2,37.5,37.7,45.8,39.2,37.2,39.6,41.9,37.9,41.0,40.1,47.4,37.8,36.5,48.5,41.5,35.9,46.4,37.7,38.2,46.8,38.3,47.9,39.0,37.0,36.5,40.9,37.2,40.0,37.2,38.0,37.5,37.6,43.0,45.2,37.5,35.7,48.3,48.1,47.4,36.1,35.7,46.7,39.1,40.8,39.1,46.9,38.9,41.9,39.8,46.0,43.9,48.5,36.9,37.0,39.4,43.3,37.3,40.4,37.3,36.6,45.8,37.9,43.0,37.1,41.6,37.0,36.4,37.9,44.9,36.1,46.3,40.4,36.3,50.9,34.7,50.5,36.5,40.6,42.0,50.2,38.8,41.3,36.9,35.6,48.7,37.8,39.9,34.1,37.7,45.9,36.9,40.6,37.6,43.5,51.5,36.7,38.5,39.6,46.8,46.8,46.6,35.3,35.4,40.2,37.4,39.1,40.1,37.3,47.5,34.7,36.8,37.8,45.4,39.2,38.3,38.2,49.8,37.5,43.2,36.9,37.5,38.0,47.9,34.9,36.8,51.0,37.1,39.0,36.7,37.6,43.9,34.7,35.2,46.7,49.4,40.1,45.1,37.5,42.4,43.2,39.4,37.1,36.9,44.5,40.7,37.6,45.8,46.7,40.3,37.3,36.9,37.1,49.8,35.9,39.8,47.7,46.5,36.2,48.6,37.1,37.5,39.5,41.2,42.1,37.4,38.0,36.8,45.0,45.4,39.4,47.2,37.8,36.7,47.6,40.5,48.2,47.4,37.9,35.5,45.6,39.1,47.8,38.3,43.5,48.1,32.4,38.8,38.5,38.0,45.4,36.8,55.7,38.5,48.3,37.3,44.3,45.3,43.4,36.3,36.3,47.6,46.0,38.7,36.2,44.2,38.4,36.9,36.8,38.1,52.5,36.8,35.7,36.6,34.6,48.0,39.4,48.3,37.6,36.3,48.3,45.8,38.5,40.1,39.5,36.4,46.3,50.1,49.2,38.0,37.4,37.9,37.1,38.0,41.1,43.2,40.0,37.4,36.0,49.8,42.2,51.2,49.0,37.8,49.8,34.7,35.9,40.2,37.8,38.4,44.7,36.2,40.0,41.0,34.2] + }, + { + "position": 23, + "values": [20.2,19.3,19.6,19.2,19.6,18.8,19.1,19.4,20.8,18.7,18.8,18.0,20.6,20.1,18.9,19.1,18.5,18.9,19.1,19.2,18.5,19.6,20.0,19.2,19.1,18.9,21.4,19.0,18.2,13.2,19.0,19.7,18.7,19.5,18.7,19.2,21.4,21.4,18.3,20.1,17.6,19.6,19.2,19.2,19.2,19.2,19.3,19.1,18.6,19.5,19.0,19.8,18.9,20.4,18.2,19.0,19.8,20.2,19.1,22.8,18.9,19.1,19.0,19.4,20.3,18.8,17.8,19.3,18.8,18.1,24.1,19.2,18.7,19.5,20.6,18.6,20.5,19.0,19.0,18.7,18.9,19.5,18.9,19.4,19.0,18.8,18.4,17.9,19.8,20.3,18.5,18.4,19.0,22.2,20.0,19.2,20.7,18.5,18.5,18.3,17.7,18.9,18.9,18.1,19.1,18.7,20.8,19.5,19.8,19.1,19.2,19.0,19.8,19.2,19.5,19.8,18.9,19.1,19.6,19.4,18.9,18.4,18.1,18.7,19.3,21.3,20.5,20.5,18.5,19.3,18.4,18.8,19.8,20.0,20.5,19.0,19.5,19.2,18.3,18.9,20.1,19.1,19.6,19.3,19.3,18.6,19.6,18.9,19.2,19.1,17.4,19.0,19.8,18.4,17.2,19.3,19.2,17.9,19.8,19.5,19.7,19.7,19.0,18.9,18.7,18.9,19.3,19.2,19.1,19.2,19.1,19.3,15.0,19.3,18.6,18.8,18.3,19.0,19.5,19.7,19.5,19.5,19.5,55.2,19.0,18.7,20.5,18.5,18.8,20.4,19.0,19.4,19.5,18.9,18.0,17.9,19.9,19.0,18.7,18.5,18.9,18.9,19.8,17.9,23.4,18.8,18.7,19.2,19.8,18.3,18.4,20.1,18.5,19.8,18.9,19.4,19.0,20.2,19.3,18.8,19.3,18.9,18.8,18.9,18.8,19.3,18.9,19.1,18.7,19.6,18.7,18.9,18.3,19.2,18.7,18.8,18.5,18.5,19.0,18.7,19.6,19.9,18.9,18.6,19.1,19.6,19.2,18.5,19.5,19.3,19.3,18.5,19.6,18.6,19.9,19.0,17.2,18.5,20.9,19.6,18.9,19.5,18.9,20.7,19.3,18.3,18.8,19.0,19.6,19.4,19.4,18.8,19.9,20.0,18.8,18.7,20.7,18.7,19.9,18.7,19.4,18.8,18.7,18.9,19.6,18.9,18.9,18.9,19.2,19.1,18.6,19.4,20.5,19.1,19.4,19.0,18.6,19.7,19.3,19.8,18.9,20.2,20.1,18.5,19.9,20.7,19.5,19.9,18.7,19.2,19.8,18.9,19.1,19.6,20.8,19.4,18.6,18.4,18.7,19.4,18.9,20.3,18.9,18.9,19.3,18.5,19.5,18.6,19.5,19.0,18.8,19.8,19.8,18.3,19.4,21.5,18.9,18.4,19.4,19.6,17.1,19.0,18.2,20.7,19.2,19.1,17.9,20.0,22.8,19.4,18.9,18.9,19.1,19.3,20.3,18.6,19.3,19.3,19.5,18.8,19.7,18.5,18.9,19.4,18.0,19.2,18.7,20.4,18.8,18.9,18.2,18.4,19.5,19.2,19.0,18.7,18.9,19.6,18.3,19.4,18.8,20.1,19.8,20.8,19.1,19.3,20.8,18.7,19.5,21.5,18.6,19.0,19.1,19,19.0,18.5,18.9,26.0,18.3,19.0,18.7,18.7,18.5,20.1,18.8,18.8,20.8,19.5,19.5,19.6,18.6,19.6,18.8,18.9,23.5,20.5,18.3,19.2,18.1,18.6,19.7,20.2,21.0,18.5,19.6,19.2,20.3,19.5,18.8,21.7,19.3,19.0,18.7,19.6,21.1,18.2,18.6,19.1,19.1,19.3,18.3,19.8,18.7,17.9,19.1,20.7,19.3,20.7,18.7,21.4,18.0,18.6,19.3,19.7,19.1,20.4,20.0,17.5,18.5,19.2,18.4,18.8,19.6,19.3,18.9,19.9,18.3,19.9,20.4,19.1,22.8,20.1,18.5,20.1,18.4,19.1,20.5,17.9,19.3,20.2,19.1,23.4,18.4,18.7,21.0,19.4,19.8,18.3,19.1,19.0,20.2,19.8,18.2,19.2,19.5,35.7,20.2,20.2,19.1,20.2,19.1,19.5,19.0,19.0,18.3,19.4,18.9,20.3,19.4,18.1,20.5,19.0,19.0,20.4,19.3,19.6,18.9,18.9,19.9,19.4,18.6,18.6,19.2,18.7,19.3,18.8,18.0,19.8,18.7,19.4,18.2,20.2,19.1,20.5,21.9,18.6,19.5,19.9,18.2,18.8,19.2,20.3,19.0,19.2,18.9,18.4,19.2,19.2,19.3,18.8,18.0,19.4,19.5,18.9,18.4,20.2,19.3,18.5,18.9,18.8,18.8,18.9,18.7,18.9,20.3,18.1,17.9,19.6,19.1,18.6,18.4,19.4,19.2,18.7,19.1,19.9,19.6,20.4,19.2,18.5,19.3,18.7,18.6,21.5,20.0,18.9,18.7,19.0,18.8,19.4,19.3,19.9,18.8,18.8,18.2,17.4,12.5,19.1,18.8,20.0,18.5,20.2,19.2,19.8,18.4,18.9,19.6,18.8,19.4,19.0,19.2,19.7,20.0,18.7,18.8,19.8,20.2,17.1,19.4,19.5,19.1,30.5,19.0,19.1,17.8,18.7,19.2,19.2,19.1,19.9,20.1,18.8,19.0,18.5,17.4,18.9,18.8,18.7,18.8,19.3,18.8,19.1,19.3,19.4,19.5,19.3,19.1,21.1,18.9,18.2,20.3,18.5,18.6,19.0,18.8,19.1,20.5,18.2,19.2,18.1,19.7,18.4,19.0,18.7,19.1,20.5,19.5,19.6,18.1,19.5,20.5,19.3,18.9,18.9,19.0,19.3,18.9,20.4,19.2,20.0,18.7,19.0,18.8,19.0,21.2,18.9,19.1,19.2,18.5,18.8,18.9,18.7,18.5,19.0,19.5,20.5,20.3,19.4,19.1,19.6,19.6,19.1,18.5,19.1,18.9,19.8,20.4,19.5,19.8,18.9,19.1,18.5,19.0,19.1,17.8,18.4,19.1,20.4,17.8,18.3,19.0,19.9,19.0,19.2,20.1,19.0,18.8,19.2,19.1,19.2,19.4,18.1,19.1,20.6,19.0,19.1,19.3,19.3,18.5,18.5,19.0,18.9,18.9,20.4,18.5,19.0,19.5,19.2,20.1,19.2,19.0,18.9,19.6,18.9,19.5,18.9,19.0,19.3,19.3,19.0,19.4,19.8,18.8,18.9,19.0,18.5,18.7,18.6,18.3,19.9,18.7,19.5,18.9,18.7,18.6,19.1,19.0,19.4,19.4,18.9,19.1,19.0,19.5,18.9,19.3,18.6,18.6,18.4,18.6,21.1,18.9,18.9,19.4,21.2,18.6,19.0,19.3,20.2,18.4,19.2,19.2,18.8,18.6,18.6,18.6,18.8,20.0,17.1,18.6,19.4,20.3,18.5,19.3,18.5,18.7,19.6,17.7,19.3,18.9,19.0,18.7,18.7,20.1,19.8,20.1,19.1,18.8,18.9,18.6,19.8,18.3,20.2,18.2,18.7,19.7,23.6,19.0,19.2,18.8,19.2,19.0,19.2,19.3,19.2,18.8,18.1,18.8,19.3,21.4,18.3,19.3,19.7,19.4,18.5,19.3,19.6,18.8,19.3,18.9,22.6,18.6,18.8,20.1,19.4,19.9,19.2,18.2,19.7,20.4,20.1,19.0,20.2,19.3,20.2,19.1,18.6,18.9,19.2,19.3,18.8,19.5,18.7,19.9,19.1,19.8,19.2,19.8,19.8,19.0,18.9,23.2,18.2,20.6,18.9,19.8,18.8,19.2,18.3,19.7,18.9,19.3,19.2,18.0,18.7,18.7,19.0,19.2,18.3,18.8,20.4,18.8,18.8,19.8,18.8,20.4,18.9,19.4,18.7,21.4,18.9,19.4,19.0,19.4,21.7,19.4,19.0,19.7,18.2,18.6,19.0,22.4,18.9,18.9,20.5,19.6,18.8,18.4,19.4,22.4,19.2,19.3,19.1,17.6,21.0,18.8,18.9,19.4,19.9,19.2,19.2,19.4,19.1,18.5,18.6,19.4,19.2,18.8,21.2,19.1,19.0,18.3,19.3,20.7,20.5,19.3,19.4,18.7,18.5,20.0,19.3,18.8,18.8,20.0,18.0,18.7,19.5,18.9,19.7,18.1,18.5,19.9,19.1,19.0] + }, + { + "position": 24, + "values": [145.1,139.1,172.6,148.5,144.8,143.4,137.6,141.9,143.9,142.3,137.3,150.0,155.5,145.6,174.6,139.0,142.9,141.6,143.9,142.0,140.8,143.8,152.5,142.2,142.1,145.7,149.0,140.3,136.5,143.8,143.1,144.1,140.0,150.7,139.5,141.6,146.5,154.9,151.1,145.5,136.6,134.6,144.1,140.8,141.5,143.1,142.0,146.1,138.6,139.3,144.1,148.7,154.3,145.0,142.6,139.4,126.2,146.7,140.2,154.4,140.5,137.4,140.7,148.0,145.5,141.0,142.0,133.3,142.6,138.0,141.9,167.1,144.0,143.6,152.2,142.5,145.8,136.2,144.4,135.7,140.6,142.9,142.4,141.3,140.4,140.2,136.6,134.5,145.9,139.7,141.5,168.8,135.0,137.4,131.2,144.2,153.3,140.0,140.6,137.6,138.2,145.0,137.0,143.0,144.9,139.3,142.6,154.4,152.2,140.2,142.1,142.2,143.7,142.8,142.3,145.6,144.2,148.1,151.9,143.7,141.2,143.7,137.7,138.1,144.7,149.9,143.9,146.2,140.7,137.1,142.4,138.5,143.4,146.3,148.7,142.7,145.4,139.9,137.7,147.4,145.1,143.1,142.9,137.1,143.4,141.0,135.9,140.7,142.6,151.3,138.5,144.6,138.7,144.9,133.8,143.4,140.5,140.8,151.6,153.7,149.3,136.4,144.4,140.2,146.8,148.9,143.9,142.6,144.6,140.2,139.2,143.0,105.5,144.3,139.3,144.1,138.6,146.4,143.4,151.2,148.4,147.6,213.9,151.4,147.8,148.6,142.2,135.9,141.1,151.4,145.5,138.5,138.3,148.9,140.7,142.3,150.5,144.9,141.8,137.7,142.3,142.8,144.3,146.8,149.4,147.4,144.7,148.1,139.6,143.9,141.5,145.2,142.1,141.3,137.4,142.3,141.4,141.2,143.9,142.0,143.2,147.0,139.7,136.8,141.2,139.8,143.2,117.0,144.0,142.4,141.0,142.4,135.9,146.7,140.3,142.5,147.3,140.7,146.2,138.0,140.9,133.8,142.0,145.1,138.1,143.1,144.1,153.0,150.5,146.4,137.2,145.5,143.1,143.6,150.8,142.1,134.2,146.5,140.8,141.2,146.6,140.7,143.9,156.1,138.9,142.2,141.4,142.3,142.9,146.7,144.5,141.5,136.7,142.1,136.4,142.5,166.3,143.5,147.3,140.4,141.3,140.6,149.7,144.7,143.4,139.9,144.4,128.7,141.9,149.0,145.5,137.2,150.9,147.1,130.7,139.4,144.9,140.1,145.8,144.1,152.0,144.2,145.1,139.7,130.6,135.6,139.0,149.1,144.0,146.5,142.4,136.9,137.5,142.8,132.7,142.0,137.4,143.6,143.4,139.1,140.7,141.1,144.2,139.9,143.9,142.8,140.9,141.8,134.5,140.6,140.3,143.6,144.1,140.0,137.8,138.0,141.7,136.8,146.5,144.0,136.0,143.9,143.9,142.6,146.5,138.5,139.2,148.6,161.1,143.6,145.8,142.6,145.0,144.7,139.9,148.0,145.2,140.4,143.7,138.7,141.6,139.5,138.5,131.9,142.1,141.2,152.2,143.3,147.0,143.0,140.0,142.1,135.0,148.3,150.1,145.0,141.2,141.7,138.8,149.3,143.2,145.2,144.6,146.2,145.6,143.8,150.3,139.0,140.4,147.8,138.1,141.7,144.1,141.7,142.0,133.4,139.9,76.4,140.8,144.2,142.3,140.1,147.5,146.2,145.2,144.1,142.7,142.2,150.9,139.3,143.8,142.5,134.0,148.3,167.3,149.5,139.4,146.1,140.4,138.0,144.3,134.7,141.2,140.4,151.9,147.5,142.6,147.9,145.6,153.2,141.7,136.0,145.3,138.6,149.4,134.5,137.1,166.7,144.6,141.5,137.9,140.5,138.5,155.2,141.7,144.9,141.3,149.4,157.0,139.0,137.5,141.8,151.5,149.3,139.0,149.0,143.9,136.1,137.1,136.6,143.6,143.3,147.7,135.9,143.9,151.6,140.4,142.5,150.8,161.8,144.0,150.7,138.9,144.5,147.0,137.6,141.6,141.4,141.0,153.4,162.8,144.8,140.2,143.4,141.0,147.6,141.8,144.1,141.7,142.9,142.8,142.2,153.7,147.7,142.9,145.7,145.7,145.6,150.2,136.7,146.9,134.7,138.3,141.4,144.1,145.2,142.5,148.8,154.5,140.6,145.8,153.8,143.0,141.2,142.7,141.5,138.1,138.8,143.9,140.5,144.9,140.7,139.4,138.3,140.9,131.7,145.4,146.0,140.1,138.1,139.5,143.5,142.9,147.1,166.1,140.5,140.8,149.7,134.4,136.8,140.2,140.9,142.1,143.4,141.7,138.9,152.0,147.1,141.7,139.3,141.5,144.5,142.7,140.0,138.4,140.1,145.4,137.3,133.2,136.1,140.9,149.8,137.0,142.3,137.1,142.8,140.9,143.8,140.6,139.9,146.1,145.1,122.3,146.0,138.5,140.9,147.4,142.5,147.9,144.9,141.0,139.2,142.7,138.0,143.3,143.9,144.9,140.8,146.3,142.9,143.3,143.2,139.3,142.4,133.3,145.9,143.6,139.2,143.5,148.8,144.3,144.8,140.1,148.9,144.3,147.4,147.5,140.9,138.2,153.1,148.0,147.9,148.5,142.5,137.4,146.1,151.7,142.2,136.0,141.7,143.9,183.8,148.2,141.5,140.8,148.1,141.4,148.6,143.3,145.2,146.0,140.7,141.0,135.3,131.6,139.2,143.7,143.6,143.3,134.2,138.2,142.7,141.0,142.2,142.0,148.1,145.5,142.4,142.9,146.7,157.6,138.8,137.5,142.3,140.3,142.4,141.2,135.6,142.5,142.7,137.7,135.5,139.4,142.7,141.7,149.5,148.9,143.7,134.3,141.7,143.5,139.1,139.3,143.5,142.5,145.7,141.0,143.9,139.9,142.5,138.1,130.6,143.1,144.5,147.6,141.3,145.2,140.1,135.2,141.5,142.9,141.3,139.6,143.3,145.2,150.3,142.3,146.6,154.3,153.6,142.4,136.9,142.5,141.2,146.4,143.4,141.7,137.4,138.5,145.8,145.4,136.4,144.1,150.4,148.5,139.8,143.0,145.6,152.4,137.9,145.7,150.3,140.2,141.0,143.9,141.3,143.1,144.4,137.3,141.1,140.0,141.2,143.6,147.0,142.7,139.9,147.6,147.5,118.7,138.0,139.9,139.4,144.1,144.3,140.7,141.2,141.1,140.5,143.1,145.1,145.2,133.5,139.8,141.2,144.5,141.9,141.2,142.4,139.2,141.2,148.4,149.4,170.0,144.4,142.7,138.0,140.2,142.8,144.5,138.8,139.2,140.4,141.6,142.5,139.2,140.3,141.3,139.3,151.1,148.6,140.4,140.4,141.7,150.2,146.2,140.6,143.6,142.5,138.3,145.1,137.2,144.5,143.5,161.9,137.7,141.6,141.1,144.6,138.5,139.9,140.2,147.9,140.7,138.6,144.2,140.2,152.2,139.5,144.0,137.7,146.1,137.6,145.4,137.2,135.7,148.9,134.1,133.3,139.5,144.0,141.9,145.7,159.5,143.1,147.4,145.9,133.6,141.7,151.8,150.6,145.0,140.1,141.9,142.6,146.1,165.0,143.4,144.9,142.5,147.2,147.0,146.8,142.4,143.2,144.2,138.1,140.8,145.9,142.4,140.2,151.7,140.1,141.4,137.9,143.5,148.7,139.7,141.8,162.8,141.6,147.7,136.8,133.9,126.9,147.5,141.8,144.1,140.4,137.0,141.7,143.0,147.1,151.6,141.6,129.7,141.7,142.2,150.9,141.4,141.9,144.4,135.2,146.5,137.2,144.1,146.8,146.4,143.2,139.6,146.4,144.5,140.3,133.6,146.5,142.4,148.9,145.6,139.4,139.0,141.8,142.3,142.9,129.8,146.3,135.6,140.5,145.4,141.1,143.1,145.1,138.4,141.9,141.5,137.0,148.4,142.4,160.9,140.1,146.1,142.1,140.1,138.8,144.0,145.1,143.9,143.5,105.5,140.4,143.9,144.8,152.4,148.5,142.9,137.0,143.0,143.1,142.5,142.5,163.0,145.1,143.7,148.8,140.8,148.2,142.3,140.4,149.8,138.6,139.3,156.4,147.3,143.8,143.7,137.6,143.7,142.5,155.7,143.5,142.0,145.6,138.4,129.1,137.7,133.1,144.4,144.4,138.7,138.5,138.3,162.5,141.4,135.2,135.7,138.5,141.5,154.8,143.8,148.4,139.6,139.8,143.8,149.9,131.6] + }, + { + "position": 25, + "values": [23.5,21.9,24.9,23.6,27.3,23.1,21.8,21.7,23.7,26.1,22.0,20.5,23.8,22.6,24.3,22.0,21.0,22.5,22.2,22.5,23.2,22.8,26.8,21.0,22.2,24.3,23.7,22.3,20.7,23.1,20.9,22.9,24.2,25.2,21.3,21.6,24.6,27.4,26.3,23.3,20.9,23.9,22.6,22.8,22.5,21.6,25.6,22.2,26.4,22.8,23.5,21.7,22.9,25.7,20.8,24.6,25.0,22.5,26.1,27.6,22.3,23.1,22.9,24.6,22.6,21.6,22.1,22.0,22.2,22.5,30.7,22.1,25.5,24.5,27.0,24.0,22.4,21.6,22.8,21.7,22.5,22.6,22.1,22.4,22.3,22.1,24.5,20.2,21.0,24.1,23.2,21.2,22.8,28.4,23.0,22.5,24.5,22.2,21.7,23.0,23.0,23.7,22.7,22.7,22.1,22.0,24.1,21.0,25.4,22.1,22.9,22.6,22.2,22.9,22.7,23.8,21.5,21.7,24.8,22.1,23.5,22.8,21.4,20.3,23.2,23.1,23.6,24.4,20.8,23.3,24.7,21.7,22.7,23.7,25.0,23.3,23.3,21.2,22.6,25.2,21.8,23.2,22.7,22.7,22.2,22.6,21.9,21.4,22.9,25.0,22.3,20.3,23.7,25.3,21.2,22.3,23.6,23.8,21.4,22.8,23.2,23.5,21.6,21.4,23.3,24.4,27.9,22.7,23.8,22.7,22.4,27.1,22.1,22.8,21.6,21.6,20.3,22.8,21.4,24.7,23.1,21.7,25.6,23.9,45.7,20.6,24.1,20.8,20.8,21.3,21.0,24.9,22.0,22.8,23.2,22.6,23.4,22.3,21.3,21.7,22.7,23.0,22.2,22.5,25.7,22.0,23.6,24.3,22.5,22.3,21.7,23.5,22.1,23.7,20.7,22.1,23.0,23.7,21.9,21.3,22.5,22.2,21.5,23.3,22.1,22.4,22.1,21.8,24.4,21.7,21.2,20.9,22.8,23.3,22.1,21.6,21.2,22.0,22.1,22.4,22.7,23.0,21.7,22.8,22.7,21.0,21.1,26.1,22.0,24.8,21.9,24.3,22.3,24.2,22.2,22.8,19.8,20.6,23.5,22.4,22.6,21.5,22.5,25.9,21.7,23.5,22.9,22.1,22.9,24.1,22.2,20.8,21.7,25.5,21.8,23.5,25.8,21.6,24.5,22.6,22.4,22.6,22.1,25.1,23.5,22.8,25.5,24.7,21.7,22.4,24.2,21.1,25.2,24.8,22.6,26.7,22.3,23.7,21.1,22.7,21.4,24.5,23.7,23.7,23.1,23.7,21.7,25.1,21.4,25.8,23.0,21.8,19.5,22.5,24.3,23.0,21.7,22.2,23.0,24.4,20.9,26.4,23.9,22.0,26.1,21.5,22.4,20.0,20.3,21.7,21.8,25.2,23.0,20.6,26.0,29.8,22.7,26.4,22.4,25.5,21.9,22.5,24.9,24.7,23.0,22.1,20.7,22.7,31.6,22.7,22.0,21.5,23.9,24.3,23.7,24.5,22.2,22.2,22.2,22.3,24.2,20.9,20.3,21.2,22.7,22.5,23.8,20.8,24.4,21.8,20.0,21.2,24.6,22.1,24.6,23.1,21.6,22.5,22.4,22.8,23.0,23.7,23.2,25.8,22.3,23.6,26.8,21.9,22.0,23.3,27.1,22.8,22.4,22.6,22.9,23.4,22.3,22.0,26.5,21.6,22.6,19.7,22.1,22.6,22.3,23.6,25.8,22.4,23.1,21.7,22.7,22.4,24.4,23.9,29.7,25.3,21.7,22.4,21.5,22.0,23.9,22.9,24.2,24.4,22.4,22.7,24.3,24.8,22.4,26.6,22.4,22.9,25.4,21.5,20.9,24.1,20.8,22.4,22.8,22.0,24.2,21.9,22.1,26.7,22.2,24.5,23.2,23.1,22.1,20.9,21.5,24.5,23.2,21.3,24.7,24.6,20.4,23.5,21.3,23.3,23.6,23.0,22.5,23.0,21.2,24.9,23.9,25.7,24.2,23.0,26.7,25.4,20.4,22.9,23.5,21.8,24.4,20.9,23.7,22.6,22.0,27.7,20.5,22.5,23.7,21.8,23.8,23.9,21.9,22.2,23.5,22.6,22.2,25.4,22.5,43.5,24.6,22.6,23.4,23.7,24.0,22.6,21.3,22.4,22.9,23.1,22.7,22.8,21.1,23.4,22.1,22.4,21.8,23.0,25.9,22.3,22.3,26.7,25.9,21.5,20.8,22.2,22.2,22.3,22.2,21.0,23.6,22.9,19.6,22.3,21.6,23.5,22.3,25.0,25.6,23.1,22.4,23.6,21.5,22.6,21.1,23.5,23.0,22.5,24.1,22.6,22.2,22.4,22.2,21.0,22.0,25.0,22.4,22.7,20.9,24.3,22.5,21.4,21.9,21.3,22.3,23.8,22.1,23.1,23.3,22.9,21.3,22.7,21.9,21.7,22.7,25.1,23.9,23.8,21.6,21.9,24.3,23.3,24.0,24.9,22.4,21.8,21.9,29.8,23.0,21.6,21.4,21.6,26.1,22.2,22.5,23.0,22.0,20.9,20.9,21.4,22.3,22.2,22.5,22.7,21.8,24.0,22.2,23.3,25.7,24.1,24.1,21.0,21.9,24.3,23.8,23.9,26.8,24.3,21.8,23.2,23.3,23.4,20.9,20.4,35.1,22.3,26.0,22.2,22.1,19.9,25.4,23.5,22.3,22.2,24.2,22.0,22.0,25.6,25.0,22.4,22.7,21.7,21.8,23.5,21.7,22.6,20.9,21.1,23.1,22.1,25.5,22.4,25.0,25.1,25.1,21.2,21.4,23.0,22.7,22.7,21.0,24.0,22.6,21.9,22.2,19.9,22.7,22.1,23.1,24.7,23.2,23.0,20.3,21.2,26.3,22.8,22.6,21.5,24.8,24.6,21.9,23.6,21.5,22.7,21.6,22.7,22.6,21.0,25.2,22.2,22.4,23.3,21.7,21.1,22.0,20.1,22.3,22.0,21.3,23.1,21.9,24.4,23.0,25.4,21.7,22.0,22.5,23.2,21.6,23.7,24.8,22.1,25.6,22.1,21.8,22.9,20.6,24.0,22.8,22.2,21.7,24.2,21.2,21.7,22.1,22.3,22.4,22.2,23.1,20.4,20.7,21.7,21.5,22.6,22.5,24.9,22.8,22.7,21.9,22.6,25.6,24.5,21.1,20.8,22.6,22.4,23.6,21.2,22.4,21.1,22.1,22.5,26.4,21.3,21.6,22.7,23.3,20.4,22.2,22.1,22.6,21.8,22.7,21.9,25.8,24.6,22.9,21.9,22.1,22.1,21.3,21.6,24.6,23.7,20.4,22.7,23.2,24.2,22.2,21.5,26.6,22.3,24.6,21.2,23.3,21.9,24.4,23.0,23.3,22.1,22.4,22.5,23.3,22.4,23.1,24.9,21.9,31.7,22.5,21.2,22.3,21.3,22.1,21.7,24.7,22.2,22.0,19.8,21.3,22.8,25.6,19.6,23.3,22.0,23.2,21.7,23.3,22.1,21.2,24.6,20.4,22.0,21.0,22.7,21.7,23.0,25.8,21.3,26.6,25.1,21.8,21.0,22.9,23.1,23.9,21.7,21.4,23.1,23.9,31.8,22.3,23.0,22.4,23.5,22.7,23.8,24.3,22.9,21.2,22.3,22.5,24.7,22.3,22.1,26.1,21.2,22.5,22.5,22.3,25.0,22.5,22.5,22.0,22.1,20.2,21.1,24.6,24.5,24.3,25.3,22.3,21.8,21.7,23.3,22.2,24.6,25.7,22.4,24.0,21.7,21.3,22.5,27.1,22.9,23.0,20.4,21.7,22.5,21.6,24.3,22.6,22.0,22.3,22.6,24.0,19.9,24.0,22.8,23.6,23.8,23.1,21.5,23.7,20.7,22.9,21.8,24.1,21.3,21.0,23.2,24.4,21.7,20.7,24.2,21.6,23.2,22.8,20.8,25.6,24.0,23.1,24.5,21.5,21.6,22.3,21.9,23.7,26.1,22.4,21.3,24.5,21.9,21.7,20.8,25.0,22.1,24.5,23.4,22.9,22.7,23.0,22.3,25.9,22.5,22.1,24.1,26.6,21.7,24.1,22.3,21.3,21.2,21.7,26.1,21.8,23.4,23.3,23.5,22.3,20.0,21.5,22.9,21.9,23.0,24.2,21.8,24.4,22.3,22.2,22.7,19.4,22.4,21.9,23.2,22.2,24.5,21.1,22.3,22.1,22.8,24.7,22.7,21.5,22.0,28.0,22.6,22.8] + }, + { + "position": 26, + "values": [104.2,104.1,109.1,109.4,111.5,105.7,106.4,102.8,107.4,98.6,105.7,109.1,103.7,119.2,104.2,104.5,111.2,102.4,105.8,103.7,105.9,109.0,118.2,106.0,109.1,105.6,104.3,110.1,98.1,109.2,101.8,106.8,105.1,125.1,103.8,100.6,105.9,90.7,111.4,106.3,113.5,108.1,104.5,110.8,100.1,106.9,107.0,110.7,97.4,103.1,105.5,117.4,110.5,100.4,101.7,106.5,122.9,108.6,120.1,106.4,102.0,104.2,108.5,103.3,108.4,110.8,102.6,106.7,100.6,107.9,97.8,106.0,108.2,109.5,117.7,103.3,108.8,111.0,106.6,113.1,104.5,104.2,108.4,100.2,97.0,106.3,118.6,100.3,107.6,112.4,111.8,98.0,104.2,106.9,102.2,104.7,109.1,104.0,103.1,109.3,104.1,107.8,107.0,105.6,101.4,112.3,113.0,114.0,115.7,107.5,107.4,107.3,105.1,106.2,103.9,108.5,101.6,107.9,99.7,109.4,109.4,105.2,109.9,103.6,103.3,111.5,112.8,115.4,100.4,111.9,108.7,104.9,110.2,122.0,110.4,112.6,115.4,102.6,109.7,108.3,108.0,110.1,107.5,103.9,96.4,104.1,106.7,100.6,114.2,110.9,97.7,106.5,101.2,93.8,109.3,103.9,105.4,119.2,103.2,110.6,103.8,109.0,105.7,108.0,108.3,106.7,105.1,109.5,107.3,100.1,108.5,111.0,101.2,113.8,100.6,99.9,99.1,111.2,105.4,118.2,110.7,112.9,98.6,84.6,106.8,123.7,101.7,98.6,88.7,106.9,99.5,105.0,130.1,128.8,117.5,100.0,114.4,105.8,105.1,108.2,113.2,104.3,105.7,107.5,74.0,95.8,105.9,108.8,114.2,112.9,110.3,110.6,115.7,102.2,95.7,109.9,111.4,108.8,109.6,112.0,110.3,101.6,107.1,107.4,106.3,102.6,110.5,106.3,108.7,106.0,104.8,100.0,103.1,110.8,113.0,106.0,102.9,110.8,110.7,105.0,112.6,105.9,107.9,113.7,101.3,110.7,104.4,117.7,102.4,106.7,92.3,106.1,102.3,101.1,109.4,106.4,101.5,104.7,103.2,105.0,104.7,111.8,103.9,107.1,105.9,100.2,109.4,105.1,105.2,105.6,102.8,112.5,107.4,112.7,88.4,103.9,97.7,104.0,102.7,106.9,104.8,111.7,100.5,109.3,97.8,103.8,106.1,103.1,104.6,106.5,102.9,111.3,109.8,107.6,111.4,127.6,108.2,110.0,109.2,105.7,109.9,106.6,109.0,102.6,105.3,118.0,106.4,113.8,109.7,109.6,107.8,105.6,105.9,111.1,118.6,110.1,107.2,101.5,102.9,114.3,106.1,107.9,117.1,123.1,119.3,94.2,96.8,101.9,99.6,102.8,109.2,125.0,114.1,106.6,124.1,64.3,109.0,98.1,108.9,104.1,92.7,104.0,97.3,105.7,112.5,107.9,105.0,111.6,102.4,101.8,110.5,103.9,104.5,107.3,110.0,112.5,100.8,105.3,109.1,106.6,112.1,111.1,94.7,107.6,106.0,113.0,99.7,116.5,107.5,107.4,96.1,111.8,104.2,106.4,153.2,103.6,106.3,104.2,110.1,105.4,106.4,107.2,113.1,139.7,104.6,109.2,116.9,107.1,102.4,97.9,101.3,112.0,111.5,103.1,112.2,104.5,109.0,102.4,77.7,118.9,104.7,107.2,99.4,139.7,99.7,107.4,111.9,105.5,99.0,108.2,103.2,101.7,111.1,112.5,99.0,101.7,103.4,103.5,100.4,103.6,111.4,100.9,99.2,121.9,110.8,104.0,111.6,107.7,109.9,106.7,112.8,108.0,104.7,125.0,121.5,116.2,99.1,102.5,106.7,107.5,107.8,112.8,107.4,125.0,104.6,110.6,107.3,116.9,100.5,110.6,102.5,103.4,112.4,103.1,116.2,105.7,105.8,102.2,110.9,116.9,113.6,103.6,125.5,108.4,116.8,116.4,86.2,109.3,112.5,139.0,102.9,112.3,102.6,103.3,109.0,106.4,103.1,100.6,117.3,115.1,108.3,112.0,105.0,109.7,102.1,107.7,113.6,105.7,107.7,111.5,108.8,106.1,105.7,103.4,98.3,114.7,110.9,108.3,105.7,117.4,109.1,100.9,102.1,108.1,111.3,109.3,106.9,112.4,112.3,98.1,106.0,105.8,106.0,111.5,114.0,99.9,107.4,110.4,119.9,103.7,100.4,115.1,107.4,105.8,114.8,91.3,110.3,110.4,102.0,106.7,112.3,106.0,107.0,111.3,79.6,108.7,104.4,108.0,107.1,105.7,109.0,102.8,107.8,100.9,107.8,109.0,111.0,105.6,111.6,105.9,105.1,104.4,105.3,107.4,97.8,116.0,106.1,77.9,80.2,105.7,119.7,103.8,101.7,107.3,107.3,101.0,103.2,102.6,104.4,112.4,114.5,97.7,106.7,106.7,105.5,117.5,117.1,111.5,102.9,113.8,105.3,107.3,101.9,64.3,102.8,104.2,108.4,105.4,115.2,112.3,107.6,107.9,106.2,110.0,108.5,99.3,111.7,109.6,106.5,139.0,104.5,112.3,113.1,109.5,154.1,104.8,112.7,109.1,109.2,104.0,114.0,103.4,99.4,107.9,105.7,108.3,106.8,100.8,106.9,109.9,103.5,127.1,115.8,107.9,115.6,108.1,96.1,107.3,106.6,101.9,115.2,98.4,111.8,94.9,95.2,106.2,107.6,107.8,105.9,104.6,106.2,105.6,106.3,108.5,105.8,109.8,103.1,115.0,109.5,107.8,106.2,96.0,108.1,105.3,109.6,109.6,106.2,115.3,107.2,112.5,102.5,97.8,111.4,107.3,103.0,116.1,108.0,111.5,109.9,111.8,105.9,96.2,105.8,104.8,115.4,123.5,107.5,108.6,103.7,103.4,107.1,114.4,109.7,109.9,110.3,106.8,111.6,103.7,108.6,102.9,107.9,105.6,102.6,101.0,100.9,96.7,109.5,103.9,108.7,111.1,101.2,106.4,107.3,113.6,104.1,92.4,107.7,110.0,99.4,104.3,107.1,102.6,107.7,100.5,108.4,106.7,105.9,122.2,101.0,104.6,107.4,98.6,107.1,103.7,110.1,100.8,107.9,109.7,103.3,104.8,106.7,102.9,100.1,105.2,105.3,110.7,107.3,109.4,100.2,100.4,111.5,108.9,99.0,108.9,103.9,107.3,102.9,105.3,129.0,103.8,99.2,111.7,119.1,108.6,104.7,105.6,104.7,99.9,110.2,109.8,109.1,118.5,103.5,107.6,106.3,110.2,108.9,102.6,109.1,111.3,106.5,109.5,102.6,105.5,105.2,104.9,118.1,107.0,99.7,104.3,108.7,99.9,104.5,104.2,108.1,109.3,105.8,100.9,104.8,106.1,103.4,100.0,101.7,149.6,103.1,101.0,108.1,100.2,111.0,109.6,106.1,107.4,103.0,103.2,113.1,104.3,106.1,96.2,113.0,105.6,108.4,102.9,116.1,99.8,112.8,104.8,100.5,100.7,103.0,103.5,105.3,108.9,97.6,104.4,131.2,108.9,103.8,108.2,107.1,115.8,106.9,105.7,100.9,107.7,114.8,91.6,113.0,114.3,109.6,102.0,109.9,98.9,106.8,110.1,103.3,106.0,105.8,111.1,113.8,112.9,100.5,114.6,92.2,102.4,107.0,109.1,104.6,106.2,106.5,99.6,109.4,106.6,105.7,148.8,113.4,98.4,104.5,126.7,105.6,112.7,105.4,106.3,117.7,102.1,102.7,119.6,100.4,121.3,107.3,107.5,106.2,105.5,106.0,103.7,112.6,106.6,106.0,105.0,109.5,108.5,109.0,90.3,101.3,103.5,105.3,103.2,110.4,108.3,110.9,105.4,106.3,99.1,98.6,110.1,108.0,104.7,109.8,100.8,107.9,111.6,119.7,106.9,106.2,104.9,98.1,100.1,117.3,118.3,107.7,99.6,103.6,119.6,103.8,111.4,124.1,107.3,105.5,103.5,100.7,99.7,128.2,106.3,108.7,114.0,104.9,103.2,104.5,100.7,95.8,105.6,113.5,108.9,118.7,112.9,100.8,106.9,124.2,103.8,109.6,70.1,102.6,104.2,106.7,110.8,101.8,103.8,109.3,108.8,100.1,109.4,104.1,122.9,103.8,104.2,107.4,105.4,105.2,108.7,98.5,100.5,106.1,121.5,101.1,116.7,106.5,104.5,117.4,107.2,116.5,100.3,108.6,122.0,112.4] + }, + { + "position": 27, + "values": [39.5,35.8,38.6,38.8,40.3,89.0,37.0,39.4,47.8,34.2,38.7,34.4,35.8,38.9,40.9,37.9,35.9,37.5,37.1,39.6,37.4,44.2,39.0,37.7,36.7,36.9,40.4,40.2,38.3,35.9,38.4,38.1,37.3,38.7,36.5,37.1,38.3,45.6,40.2,39.0,34.9,38.9,37.5,37.0,37.0,38.0,37.4,38.5,34.7,38.2,36.8,37.9,41.3,37.6,39.2,35.3,38.6,38.8,36.3,48.4,37.5,37.4,38.3,38.5,38.6,38.5,36.7,39.9,38.3,33.3,42.0,37.1,37.1,37.3,40.9,87.7,40.5,35.1,38.3,39.6,37.0,38.8,37.6,37.9,37.8,41.1,39.7,40.0,38.0,40.7,37.7,34.4,37.9,42.3,40.9,37.2,40.3,39.7,87.9,39.0,36.0,37.7,37.7,39.6,37.2,35.8,37.6,38.6,40.1,37.9,38.3,39.5,39.4,37.6,38.7,44.5,39.6,45.0,37.4,37.7,37.0,38.4,36.7,36.9,34.7,42.2,39.2,40.8,37.6,36.9,37.1,36.9,44.7,41.6,42.0,43.1,40.3,39.6,37.9,38.7,38.7,39.9,40.8,38.3,86.3,41.3,39.2,36.9,38.4,39.5,34.9,37.0,37.5,34.0,33.6,37.8,38.5,37.8,37.2,41.1,40.3,39.1,42.9,37.4,37.7,36.9,35.2,38.9,37.5,37.2,39.3,39.5,37.2,37.8,39.8,40.4,40.1,37.6,37.9,40.0,41.2,38.4,39.3,192.1,87.3,35.7,84.7,38.6,46.5,40.0,39.1,37.4,42.5,38.9,38.8,38.4,36.0,37.5,36.3,38.0,36.3,87.2,39.1,38.7,53.1,37.7,36.1,41.1,39.6,38.5,37.0,41.2,38.5,39.4,86.8,37.8,38.0,40.0,37.8,35.2,38.2,39.8,38.2,39.9,37.5,37.2,38.7,35.9,38.6,39.5,35.8,37.4,38.4,38.3,38.7,35.7,38.3,37.2,38.0,38.5,39.3,38.3,37.0,41.9,40.9,37.9,37.0,34.8,37.0,87.4,33.5,35.1,36.9,37.1,38.4,39.4,39.1,37.4,41.1,39.0,39.5,37.4,37.4,40.9,38.1,40.1,38.8,87.2,37.6,37.8,37.5,38.2,40.2,38.4,34.3,36.5,43.3,36.4,45.2,38.3,37.6,38.5,97.1,39.8,37.6,43.5,35.3,38.1,41.8,40.4,39.6,38.9,39.7,38.5,41.2,40.6,35.4,37.5,39.2,37.7,36.5,40.3,40.7,85.3,39.8,37.9,38.5,37.5,39.9,37.7,37.6,37.0,37.5,38.7,38.7,37.4,37.6,36.4,38.9,41.3,36.0,40.2,36.8,39.5,35.5,38.2,38.5,36.7,37.7,35.6,37.9,40.1,38.1,36.1,37.6,34.9,35.6,41.3,35.5,33.0,47.0,37.2,33.8,40.0,37.0,37.5,34.6,41.7,46.0,38.5,38.5,38.5,40.9,38.2,40.1,36.2,40.2,38.1,38.6,37.3,42.0,35.9,37.1,39.2,37.7,37.3,36.6,37.6,38.9,47.6,38.8,34.4,38.4,37.1,79.1,35.2,37.8,38.0,37.0,37.4,36.7,91.1,39.7,39.7,36.8,38.1,39.7,38.4,40.9,34.3,34.9,37.3,37.8,37.6,36.5,43.1,38.2,100.1,38.1,41.7,87.7,36.3,36.0,38.8,35.8,39.7,81.5,38.3,40.4,37.9,39.3,33.6,88.2,37.9,44.4,41.4,37.1,35.5,38.0,37.2,39.3,37.4,40.1,37.9,36.6,40.4,38.3,37.6,36.9,39.5,37.3,37.5,40.3,38.5,36.9,37.4,34.6,35.1,38.3,38.1,37.9,41.3,36.5,31.6,37.7,40.9,43.0,38.1,40.4,35.8,36.0,37.8,36.8,35.6,113.8,40.3,38.4,40.1,37.5,35.9,38.6,87.2,40.7,39.4,39.4,42.0,49.4,38.0,38.3,48.2,34.7,39.9,36.0,49.7,39.5,37.0,37.8,35.6,34.5,37.7,44.8,37.3,37.6,88.3,44.8,38.1,38.1,37.3,37.7,37.0,39.5,38.3,42.1,42.6,36.0,41.9,70.9,37.4,39.6,39.4,39.2,41.0,34.0,39.0,38.0,37.4,36.8,40.7,37.9,38.5,37.0,38.2,37.5,39.2,37.7,38.1,35.9,41.9,37.8,38.9,38.3,37.8,37.7,37.2,37.8,52.5,37.9,40.1,36.4,37.1,39.4,36.0,37.7,43.0,41.2,40.3,35.8,41.9,36.6,35.9,38.0,39.2,38.3,39.0,37.2,36.9,39.9,38.2,38.2,38.2,35.6,38.0,38.1,38.4,40.3,39.9,41.0,38.3,36.2,37.7,38.6,38.7,88.0,40.3,38.0,38.5,35.0,38.5,38.1,37.9,36.9,38.0,39.2,41.1,36.9,37.6,40.9,39.3,42.2,38.4,38.0,36.7,38.5,34.9,42.5,39.8,37.9,36.3,38.1,39.0,37.1,39.2,35.8,36.0,37.3,38.3,38.7,37.0,37.9,41.7,43.8,39.6,36.6,37.9,78.9,38.4,37.7,37.3,38.3,42.5,39.3,37.5,36.7,38.3,38.7,38.3,40.6,37.8,37.9,33.4,37.7,61.5,39.1,38.8,36.5,35.2,39.5,38.0,37.6,37.2,40.2,37.6,37.6,33.9,89.6,38.3,38.1,36.7,36.5,37.6,37.8,36.4,37.4,37.8,37.3,40.8,39.2,38.0,43.2,41.1,39.8,37.6,38.8,38.1,39.3,37.7,37.0,39.6,37.6,37.1,45.8,37.4,38.6,37.4,38.4,42.1,37.4,39.2,35.7,37.1,46.1,40.8,35.6,38.8,40.8,41.4,37.0,38.5,37.8,40.9,36.6,36.5,38.3,37.8,40.5,35.6,38.3,33.1,38.2,35.4,37.0,36.8,37.5,38.7,40.1,40.6,39.4,47.1,38.1,38.5,37.5,36.6,129.9,37.1,38.1,37.6,41.8,40.6,39.5,39.2,39.1,39.0,36.8,37.2,80.8,37.7,35.7,39.9,34.6,36.0,36.7,40.4,38.8,38.1,40.1,37.6,36.8,37.2,38.9,38.1,37.7,37.9,35.9,41.5,36.5,37.7,37.9,37.3,38.5,35.6,37.4,37.8,40.5,40.0,38.3,37.3,38.2,38.1,37.3,84.7,38.2,36.7,40.0,35.7,38.9,87.9,36.8,38.5,38.7,35.9,39.0,42.0,37.2,36.8,38.2,36.6,38.3,89.0,37.0,40.7,36.1,39.1,37.3,37.6,36.0,40.6,38.6,38.2,37.9,41.5,37.8,39.8,38.8,38.2,38.1,37.7,38.0,37.6,38.0,38.1,41.4,33.9,38.4,42.9,38.4,37.5,37.9,40.1,43.1,38.2,37.5,37.8,37.9,38.3,38.3,37.3,40.2,37.9,89.4,38.2,39.7,39.9,38.8,38.5,36.2,37.5,35.2,37.6,39.1,38.3,38.1,35.5,41.2,39.4,40.2,35.6,37.7,36.5,38.2,35.6,36.0,36.1,38.6,86.7,38.0,47.2,38.8,38.6,36.3,39.1,84.5,37.5,37.5,39.0,38.0,38.5,36.7,44.8,37.5,37.9,37.3,40.2,38.1,38.0,39.0,39.3,38.1,39.3,37.0,38.2,37.0,35.9,38.1,38.6,33.9,38.4,40.3,37.2,36.3,38.7,38.0,38.2,41.4,46.6,38.0,36.4,38.2,39.6,37.8,87.7,38.2,35.6,40.6,38.0,37.4,40.2,37.1,39.3,37.7,36.2,38.2,38.7,39.1,87.9,39.2,39.3,40.1,36.8,39.4,40.7,36.7,37.6,47.8,35.6,36.3,38.7,39.1,39.6,36.8,40.5,38.5,39.0,39.4,38.0,41.0,36.4,35.9,38.3,41.3,38.4,37.3,39.7,40.7,38.5,40.3,38.2,39.5,37.9,38.1,40.7,39.2,37.0,38.0,44.2,87.7,37.9,38.9,38.9,43.0,37.2,36.9,43.2,41.0,37.8,40.9,45.7,37.8,36.7,37.7,39.5,39.1,37.9,36.5,36.7,40.2,36.5,37.3,41.7,40.4,38.2,44.3,37.7,40.4,41.4,38.1,38.0,35.7,37.8,38.4,43.2,39.8,42.8,39.0,38.4,37.2,38.4,37.5,37.6,36.9,37.7,40.2,37.9,37.7] + }, + { + "position": 28, + "values": [17.6,16.9,17.0,16.6,16.9,16.5,16.6,17.1,18.5,17.8,16.6,15.7,16.9,17.1,16.6,16.9,16.4,16.6,16.7,16.5,17.0,17.8,17.6,16.3,17.1,18.7,16.7,17.2,16.4,15.8,16.5,17.3,16.8,18.0,16.6,17.0,16.7,18.6,16.8,17.8,17.1,15.3,16.8,17.4,16.4,16.6,17.0,17.1,17.7,17.2,16.5,17.7,16.6,17.7,16.1,19.1,17.9,18.3,16.7,16.4,21.0,16.8,17.4,17.7,17.4,17.2,16.5,16.0,18.3,17.6,19.9,16.5,16.8,16.7,18.6,16.3,17.6,16.4,17.3,17.7,17.0,17.5,16.6,17.0,16.6,17.3,17.2,16.2,17.0,17.9,17.8,15.9,16.9,18.7,18.2,16.8,18.1,17.0,16.1,17.0,16.4,16.8,17.5,16.9,17.6,15.8,17.2,17.4,17.6,16.9,17.3,17.3,17.4,16.7,17.0,17.8,16.7,17.2,17.1,16.1,16.5,17.4,15.9,16.6,19.8,16.9,17.5,18.3,16.6,17.6,17.9,16.8,17.1,17.7,18.9,17.0,18.4,17.1,16.6,17.9,16.7,17.0,17.0,17.9,16.7,16.9,18.0,16.5,17.2,17.1,16.6,16.5,15.0,17.2,15.7,17.0,16.8,17.8,15.7,18.1,17.3,17.4,16.9,17.0,16.5,16.4,17.9,17.5,17.1,16.7,16.8,16.9,18.2,17.4,16.8,16.9,16.5,17.7,16.6,18.2,17.7,17.2,16.5,17.3,59.3,16.5,17.1,16.4,17.7,16.8,17.0,18.1,17.4,18.0,16.9,16.1,16.9,16.5,17.9,17.2,16.5,16.4,16.8,15.8,23.7,16.5,16.6,16.6,17.3,17.6,16.4,19.0,16.0,18.6,16.5,17.7,17.7,17.1,17.9,17.0,17.2,16.8,16.7,17.2,16.9,17.1,17.3,16.5,16.7,17.0,16.4,16.5,17.0,17.4,17.4,16.1,16.7,16.7,16.7,17.1,18.2,17.1,16.8,16.2,16.5,17.7,16.9,16.3,16.6,16.6,18.0,16.7,16.9,16.7,17.3,17.4,16.3,16.4,18.3,17.5,16.6,17.9,16.6,17.2,17.5,16.8,17.1,16.4,17.2,17.1,16.9,16.2,18.1,17.8,17.5,16.7,18.6,16.4,18.4,17.0,17.2,17.0,16.2,17.1,17.2,17.5,16.3,16.9,16.9,17.7,17.1,16.8,18.2,17.0,17.5,17.9,16.4,17.7,17.2,17.5,16.2,18.2,16.9,16.4,17.6,17.9,17.2,17.8,17.1,16.9,17.2,17.6,17.5,17.3,18.8,17.2,16.6,16.2,16.6,18.1,16.5,17.0,17.5,16.7,18.7,16.5,16.6,17.0,16.5,17.0,16.7,17.9,17.6,16.1,17.8,17.1,16.8,17.1,19.0,16.5,15.6,16.7,17.7,16.8,19.0,17.1,15.3,17.8,19.9,16.9,17.6,16.8,16.9,17.4,17.6,16.3,16.9,17.0,16.2,16.8,16.7,16.3,16.3,17.1,16.7,17.0,16.6,18.0,16.8,17.0,16.5,17.2,15.9,17.1,17.5,17.0,16.6,16.4,16.5,17.0,16.8,18.0,18.5,18.4,17.0,16.5,17.9,16.8,17.7,18.1,17.6,17.4,17.3,16.9,18.0,17.1,17.1,16.1,17.2,17.4,16.4,16.9,15.6,16.1,17.7,17.0,18.4,17.2,17.5,17.3,16.5,16.5,17.0,17.2,19.4,18.3,17.1,16.0,16.5,16.5,18.1,16.9,16.2,18.1,17.2,16.4,17.8,17.0,16.8,19.6,17.0,17.4,17.8,16.6,18.3,16.6,16.6,17.3,16.8,16.3,16.5,18.4,16.8,16.0,16.8,18.3,16.9,17.9,17.6,16.4,15.9,16.0,18.3,16.2,17.9,16.9,17.9,16.1,16.8,17.4,17.7,16.5,17.7,17.0,17.9,17.6,16.0,17.1,17.2,19.3,16.5,18.1,16.3,16.6,16.8,16.4,17.9,16.3,18.0,18.0,16.9,21.4,16.4,17.3,16.2,17.1,17.6,16.4,17.0,18.0,17.0,17.2,17.1,18.3,15.2,54.9,17.9,16.9,17.5,17.5,16.7,17.3,16.5,17.0,16.6,17.4,17.0,17.9,17.1,16.0,16.7,17.2,16.7,18.1,17.1,18.0,17.1,16.4,17.2,17.1,16.7,16.8,17.7,17.1,17.0,14.2,17.2,18.0,17.3,16.9,16.3,18.0,16.8,18.0,18.1,17.8,16.6,17.8,16.8,17.3,16.3,18.2,17.2,16.7,16.4,16.8,17.0,17.0,17.0,16.3,16.9,16.9,17.0,17.1,16.7,16.8,18.0,17.1,17.5,16.7,16.7,18.8,16.3,17.2,17.7,16.1,15.0,17.2,16.9,16.6,16.6,16.7,17.0,16.8,17.2,17.3,17.1,18.4,16.6,16.5,16.9,16.4,16.4,17.1,18.0,16.5,17.2,16.3,16.9,17.8,17.4,16.8,17.2,16.7,15.8,16.8,16.1,17.2,16.5,17.4,17.9,16.1,17.0,17.3,17.1,17.0,17.6,16.3,17.3,17.0,17.6,17.3,17.8,16.5,16.9,17.2,18.6,14.5,17.2,17.3,16.8,36.5,16.7,16.7,17.0,16.5,15.9,16.7,16.7,16.7,17.8,17,16.8,16.5,16.0,16.8,17.4,16.6,16.3,17.2,16.7,16.8,17.3,17.1,16.8,16.6,16.9,17.0,15.8,19.4,17.3,16.6,16.8,16.5,16.8,17.2,16.6,17.9,17.0,16.1,16.1,16.9,17.1,16.6,16.8,17.9,17.1,18.0,16.3,16.7,18.2,17.0,16.8,16.8,18.2,17.9,16.8,18.4,17.7,17.9,16.1,16.8,16.7,17.5,18.2,16.8,16.9,16.7,16.7,16.9,16.1,16.1,16.0,16.5,17.3,17.3,17.8,16.6,17.4,16.6,17.2,16.4,16.4,16.7,16.9,17.6,18.1,18.7,16.9,17.2,16.5,16.4,17.1,16.1,16.8,16.8,17.0,17.2,14.9,16.3,17.3,16.7,17.2,16.9,16.9,17.0,16.4,17.0,15.9,17.0,16.8,16.9,17.1,18.0,16.5,17.1,16.9,17.1,17.3,16.3,17.1,16.9,18.0,17.0,16.6,17.0,17.0,17.2,17.9,17.2,17.0,17.1,17.8,16.9,16.3,16.4,16.6,16.7,17.5,17.1,17.7,16.8,16.9,16.7,16.9,16.5,17.0,16.4,16.1,18.1,16.4,17.0,16.8,16.5,16.1,17.3,16.7,17.6,16.9,16.7,17.0,16.8,16.7,16.8,16.7,17.1,16.8,16.6,16.8,16.7,19.6,18.1,16.8,19.3,17.1,16.3,17.0,17.7,16.3,17.1,17.3,16.7,16.3,16.6,16.5,17.2,17.8,15.0,16.6,17.3,17.7,16.8,17.8,16.7,17.2,17.1,15.2,17.2,16.9,16.8,15.9,17.4,17.0,17.1,18.3,16.9,17.1,16.6,16.7,16.7,16.4,17.4,16.0,16.4,17.3,21.0,16.7,16.9,16.7,16.6,17.8,16.2,17.0,17.4,16.8,16.9,16.3,17.3,19.1,17.0,16.8,17.5,17.1,16.3,16.9,17.4,16.8,17.4,17.0,16.2,16.9,16.3,16.5,18.4,17.7,16.7,16.5,16.8,17.6,17.7,16.6,17.7,17.0,17.0,18.2,16.3,16.7,17.4,16.8,16.3,16.9,16.4,17.6,16.7,17.5,17.0,17.1,17.3,16.7,17.2,17.5,16.8,17.2,16.4,16.7,16.8,17.2,17.2,17.8,16.7,16.8,16.7,15.4,16.9,16.8,16.7,17.1,16.7,18.3,16.4,16.5,16.8,17.6,17.0,17.3,17.7,17.2,17.1,17.9,16.8,17.2,17.6,17.2,17.9,17.3,17.4,17.0,16.4,16.0,16.8,19.2,16.5,16.8,17.1,16.6,17.1,16.5,16.8,19.0,16.8,16.7,16.4,17.0,16.5,18.3,17.3,18.5,16.4,17.2,17.5,17.0,16.3,16.3,17.1,17.3,16.9,17.2,17.6,16.7,16.5,16.9,18.8,17.4,18.9,17.1,17.1,16.3,17.0,16.4,17.2,16.4,18.0,17.1,16.1,17.2,16.7,16.7,17.3,15.9,16.7,17.8,16.6,17.0] + }, + { + "position": 29, + "values": [10.0,9.8,9.4,9.7,9.4,9.6,9.6,9.5,10.6,9.9,9.5,10.1,9.1,9.6,9.9,9.5,9.3,9.6,9.6,9.8,9.4,10.0,10.2,9.8,9.4,9.5,11.1,9.7,9.4,9.3,10.0,9.4,9.2,10.2,9.8,9.5,9.7,10.6,10.3,8.9,9.7,9.7,9.6,9.6,9.5,9.7,9.9,9.7,9.8,10.0,9.4,11.2,10.0,9.7,9.2,10.4,10.2,9.6,10.7,10.9,9.6,9.8,9.8,9.7,10.2,9.7,9.4,10.1,9.4,10.3,9.5,10.4,9.5,10.5,10.7,9.6,10.4,9.2,9.7,9.6,9.6,9.7,9.5,9.7,9.4,9.6,9.4,10.2,9.6,10.2,10.6,9.2,9.7,10.7,10.0,9.6,10.7,9.9,9.5,9.6,9.2,9.8,9.6,9.2,9.9,9.6,12.1,9.8,10.2,9.6,9.7,9.8,9.7,9.7,9.7,9.6,10.1,9.8,9.5,9.3,9.7,9.2,9.0,9.5,9.9,11.2,7.5,10.7,9.4,10.0,10.2,9.8,10.0,11.0,10.6,9.7,11.1,9.8,9.5,10.3,9.4,9.6,10.4,9.8,9.6,10.6,9.7,9.7,9.8,9.7,9.5,8.4,9.2,9.9,9.8,9.5,8.9,10.4,9.1,10.8,9.6,10.0,9.5,9.7,9.4,9.1,10.1,9.8,9.7,9.7,9.6,10.8,9.4,9.9,9.5,9.7,9.5,9.5,10.0,10.8,10.1,10.0,82.1,9.3,9.7,9.6,9.4,9.5,9.7,10.7,9.7,10.7,9.9,9.8,9.6,9.4,9.7,12.9,9.4,9.8,9.7,9.7,10.0,8.8,14.4,9.7,9.5,9.7,10.2,9.1,9.4,11.1,9.4,11.1,9.4,10.0,10.1,10.8,9.6,9.7,9.6,9.6,9.4,9.9,9.8,9.7,9.8,9.4,9.7,9.7,9.3,9.7,9.5,9.9,9.8,9.4,9.6,9.4,9.5,9.7,10.9,9.9,9.3,9.2,9.6,10.5,9.9,9.6,10.4,10.0,9.8,9.5,9.7,9.7,9.8,9.7,9.5,9.4,10.4,9.5,9.9,10.1,9.4,9.7,9.8,9.4,9.7,9.9,9.8,9.7,9.8,9.3,10.8,10.3,9.5,9.7,10.3,9.3,11.2,9.7,9.8,9.5,9.2,9.5,10.2,10.2,9.2,9.5,10.5,9.7,9.7,9.9,10.2,9.6,9.8,10.7,10.0,9.6,9.9,10.0,9.6,10.4,9.5,9.9,10.4,10.9,10.0,9.9,9.8,9.5,9.6,9.9,10.6,9.7,10.9,9.8,9.1,9.2,9.5,10.8,9.5,9.8,9.6,10.3,10.3,9.5,9.6,9.5,9.3,9.6,9.4,11.1,9.9,9.4,10.6,9.6,9.6,10.6,9.4,9.6,9.6,9.5,10.1,10.7,9.5,9.9,8.8,10.1,10.7,9.6,10.3,9.8,9.7,9.9,10.2,9.4,9.6,9.6,9.5,9.7,9.5,9.4,9.4,9.7,9.7,9.7,9.7,10.5,9.4,9.9,9.5,9.2,9.7,9.6,10.3,9.5,9.7,9.8,9.2,9.6,9.9,10.5,10.3,10.5,9.4,9.6,10.2,9.7,10.5,9.8,9.9,9.6,9.6,9.8,10.3,9.7,9.5,9.0,9.2,9.9,9.5,9.2,9.7,10.2,9.0,10.5,9.8,9.6,10.5,9.6,9.4,9.7,12.0,9.6,10.9,10.2,10.1,8.8,9.5,9.3,11.1,9.5,8.6,11.2,9.7,10.6,9.3,9.5,9.6,11.6,9.5,9.6,10.6,9.8,9.5,13.4,9.6,9.7,9.6,9.7,9.5,10.2,9.8,9.7,9.5,10.4,14.0,9.8,9.5,9.6,9.0,9.1,10.3,9.4,9.7,10.3,10.4,9.5,9.7,9.5,10.0,9.6,10.5,10.3,9.4,10.0,9.7,10.5,9.7,8.7,10.2,10.2,9.3,9.3,9.4,9.5,10.3,9.3,10.4,9.8,11.6,9.9,9.6,9.6,11.2,9.9,9.8,9.8,9.4,10.8,9.6,9.9,9.6,10.3,8.2,17.4,10.3,9.7,10.1,10.1,9.6,10.0,9.7,9.2,9.6,9.8,9.8,10.3,9.3,9.6,9.6,9.4,9.5,10.7,9.8,10.6,9.9,9.2,9.7,9.7,9.4,9.6,9.9,9.7,9.8,8.7,9.8,10.4,10.2,9.8,9.4,10.5,9.7,10.0,10.3,10.4,9.4,10.1,9.7,9.4,10.1,10.6,10.0,9.6,9.5,9.6,9.9,9.6,9.7,9.4,9.8,9.6,9.8,9.6,9.7,9.5,9.5,10.2,10.4,9.7,11.0,9.6,9.6,11.8,9.5,9.3,8.8,9.8,9.6,9.1,9.4,9.6,9.8,9.7,9.8,10.2,10.3,10.5,9.6,9.4,9.4,9.2,9.3,9.6,9.6,10.3,9.9,9.3,9.7,10.7,9.7,10.0,9.9,9.4,9.3,10.5,9.3,9.7,9.8,10.6,10.5,9.2,9.8,9.8,10.2,9.6,10.1,9.4,9.9,9.9,9.7,9.7,10.2,9.6,9.5,9.6,10.9,8.1,9.8,9.6,21.0,9.7,9.6,9.8,9.9,9.6,9.4,9.6,9.2,9.6,10.2,9.9,9.6,8.7,9.5,9.7,9.9,9.4,9.4,9.7,9.5,10.0,9.8,9.5,9.7,9.5,9.5,10.7,9.7,9.8,9.8,10.0,9.5,9.8,9.4,9.7,10.7,9.3,9.8,9.6,9.3,10.0,9.5,9.5,9.6,10.3,9.8,10.6,9.2,9.3,10.9,9.5,9.4,9.5,10.5,9.8,9.7,10.8,9.9,10.8,9.2,9.8,9.6,9.7,10.5,9.9,9.9,9.7,9.5,9.4,9.7,9.3,9.1,9.6,9.7,10.0,10.9,9.5,9.5,9.8,9.8,9.9,9.3,9.5,9.6,9.4,10.5,9.8,9.7,10.4,9.1,9.6,9.5,9.7,9.4,9.7,9.7,10.3,8.2,9.5,10.0,9.6,9.8,9.8,9.7,9.9,9.3,9.8,9.3,9.8,9.6,10.5,9.7,9.7,9.5,9.8,9.7,9.8,10.3,9.5,9.6,9.5,9.6,9.4,10.6,9.7,9.8,9.6,10.7,9.5,10.0,9.7,10.5,9.4,9.5,9.6,9.7,9.7,9.7,9.7,9.7,10.2,10.0,9.9,9.3,9.4,9.6,9.7,9.2,10.7,9.6,9.5,9.7,9.5,9.9,9.3,9.3,10.0,9.3,9.4,9.5,9.6,9.5,9.6,9.8,9.6,9.6,9.4,9.6,9.4,11.0,10.2,9.6,10.1,9.8,9.5,9.6,9.9,10.0,9.6,9.5,9.6,9.3,9.5,9.3,9.5,9.9,8.9,9.7,10.9,10.2,9.8,10.1,9.5,10.4,9.8,8.6,9.7,9.7,9.3,9.2,9.5,9.5,9.8,10.8,9.9,9.4,9.6,9.7,10.1,9.6,9.1,10.2,9.7,10.1,10.7,9.3,10.2,9.6,9.6,10.0,9.5,10.0,9.8,9.7,9.2,9.6,10.6,9.8,9.6,9.7,10.0,9.4,9.5,9.7,9.7,9.5,9.5,9.4,9.6,9.5,9.4,10.2,10.1,10.3,9.6,9.7,10.2,10.4,10.2,9.4,9.7,9.8,9.7,9.5,9.5,9.5,9.7,9.9,9.5,9.7,9.2,10.5,9.5,9.8,9.7,9.4,9.7,9.5,10.1,14.6,9.5,9.8,9.6,9.6,9.6,10.0,9.6,10.1,9.4,9.8,9.7,9.6,8.5,9.7,9.3,9.6,9.8,9.3,10.3,9.6,9.8,10.3,9.8,10.4,9.7,11.6,9.8,9.6,9.5,9.8,9.5,9.6,9.8,9.8,9.9,10.0,9.0,9.5,9.8,10.8,10.1,9.5,9.5,9.7,9.8,9.3,9.7,10.3,9.6,9.5,9.4,9.9,9.3,10.4,9.7,11.2,9.4,9.7,10.2,9.7,9.5,9.3,9.7,9.6,9.7,10.7,9.9,9.7,9.5,9.6,10.4,10.1,10.4,9.8,9.9,9.5,9.3,9.4,9.8,9.5,10.5,9.4,9.2,10.0,9.6,9.6,10.6,9.0,9.6,9.9,9.7,10.2] + }, + { + "position": 30, + "values": [12.6,12.1,12.1,12.9,12.1,11.8,12.0,12.1,12.3,12.5,12.2,11.5,12.6,12.8,12.0,12.3,12.1,11.9,12.2,12.2,12.0,12.6,12.8,11.9,12.4,12.2,13.6,12.3,12.2,12.1,11.8,12.5,11.6,13.5,12.2,12.2,11.4,14.0,12.1,11.7,12.8,12.2,11.9,12.2,12.1,11.9,12.3,12.0,12.5,11.8,11.9,13.6,12.0,13.2,11.8,13.3,13.4,11.9,13.5,14.8,12.1,12.3,12.2,12.1,13.0,12.3,11.8,13.3,12.0,14.0,11.9,14.6,11.8,14.7,13.1,11.8,13.6,11.7,12.3,12.3,11.9,12.3,11.9,12.2,11.7,12.3,12.6,12.1,12.9,12.3,12.7,11.9,12.0,14.5,13.6,11.8,13.0,12.6,11.7,12.5,12.3,12.1,12.4,11.8,12.0,12.2,12.6,14.3,13.4,12.0,12.2,12.2,12.1,12.1,12.5,12.1,12.7,12.4,13.0,12.3,11.7,11.7,11.7,11.8,12.0,14.0,10.8,13.1,11.8,12.2,12.6,11.9,12.3,14.4,13.7,13.7,12.2,12.1,11.3,11.8,13.0,12.4,12.2,13.6,11.9,12.4,14.1,12.1,12.4,12.2,11.8,10.7,12.6,11.9,11.7,12.0,12.0,11.4,14.0,13.7,12.1,13.0,12.1,12.1,11.8,11.3,12.2,12.5,12.1,12.2,12.3,11.9,13.8,12.4,12.0,12.3,12.1,11.9,12.4,13.8,13.6,13.8,11.9,12.5,62.0,12.0,12.1,11.9,13.4,12.1,12.2,12.1,14.0,12.3,12.3,11.9,13.5,11.9,12.8,12.1,12.0,11.7,12.4,11.6,16.3,12.3,11.9,12.1,11.9,13.7,12.1,14.4,11.6,12.0,13.9,12.6,12.6,13.7,12.3,12.2,12.3,12.3,12.5,12.1,12.1,12.1,12.6,13.3,12.4,11.8,11.8,12.0,12.1,12.5,12.4,11.9,11.9,12.0,11.9,12.3,13.3,12.0,11.9,11.7,12.0,13.5,12.2,11.8,12.0,11.5,13.2,11.6,12.1,12.2,12.2,12.5,12.1,11.6,13.7,12.3,12.6,12.6,11.9,13.0,12.3,11.9,12.2,11.8,12.2,12.3,12.2,12.2,13.1,12.6,12.9,12.0,14.2,11.8,14.8,12.0,12.2,12.1,12.2,12.4,12.9,11.9,12.4,11.9,12.8,11.9,12.2,12.2,13.0,12.0,13.7,13.1,12.7,12.3,11.8,12.5,12.1,11.8,13.6,13.3,12.1,12.7,12.3,12.3,12.8,12.1,12.1,12.4,13.8,11.9,13.0,12.3,12.0,11.8,12.0,13.4,12.2,12.0,12.8,13.1,12.9,12.0,12.1,12.3,13.2,12.1,11.7,13.8,12.3,11.9,13.5,13.5,12.2,11.9,12.9,11.8,11.9,11.8,12.3,11.8,13.3,12.1,11.4,14.1,14.3,12.3,12.5,12.4,12.2,12.1,13.2,11.7,12.2,12.2,11.9,12.2,11.6,11.8,12.0,12.3,12.7,12.7,12.4,12.2,13.8,12.2,12.1,12.2,11.9,12.4,12.4,12.1,12.2,12.2,11.7,12.1,11.9,12.8,12.9,14.1,12.1,12.2,13.1,12.2,13.6,12.1,12.7,12.2,12.3,12.1,13.3,12.4,12.2,11.4,15.4,12.3,11.8,12.3,11.3,11.5,12.7,12.3,14.1,12.2,13.0,12.2,11.7,13.9,11.8,13.0,13.8,13.1,12.2,11.4,12.0,11.9,13.7,13.1,12.0,14.5,12.4,13.1,11.8,12.2,11.8,14.1,11.8,12.5,13.4,12.3,11.9,15.9,11.9,12.0,12.0,12.3,13.2,12.2,12.1,12.4,12.0,13.9,12.2,15.0,11.2,11.7,11.7,12.7,12.7,12.0,12.3,14.6,11.9,13.6,12.1,12.7,13.0,11.7,14.0,13.5,12.1,13.8,14.0,12.5,13.4,13.6,11.5,13.0,11.9,12.0,11.9,12.0,13.6,12.0,14.1,13.8,15.3,12.2,12.0,12.3,11.8,13.3,12.8,11.9,12.1,13.3,12.1,12.0,12.4,13.5,10.8,19.5,13.7,12.0,13.7,13.4,12.1,13.2,12.1,12.1,11.7,11.8,12.1,13.7,12.1,12.1,12.3,12.0,12.2,13.0,12.2,13.1,12.2,12.1,13.1,12.0,11.9,12.0,12.0,11.9,12.2,12.1,12.3,12.8,12.6,12.4,13.0,11.9,12.1,13.0,13.2,14.0,11.9,13.5,12.3,12.0,12.5,13.6,12.1,12.2,11.8,11.9,12.2,12.0,12.1,12.0,12.1,12.3,12.3,12.2,12.4,12.0,12.1,13.5,13.1,11.7,11.9,14.9,11.8,12.5,14.3,12.0,11.3,12.2,12.0,12.0,11.8,12.2,12.0,12.1,12.5,12.6,13.7,13.0,12.0,12.1,12.1,11.9,11.9,13.5,12.9,12.0,12.3,11.9,12.1,12.7,12.1,12.3,12.4,11.9,12.4,11.8,11.7,12.0,12.2,14.9,11.3,13.1,12.4,12.3,12.3,12.2,12.7,11.8,12.4,12.0,12.1,12.2,12.2,11.8,12.2,13.7,12.3,12.1,12.4,10.5,11.9,23.0,12.0,12.4,12.5,11.9,12.2,12.0,11.6,12.1,13.8,11.9,12.0,11.0,12.0,12.3,12.1,12.0,12.0,12.1,12.2,12.2,12.1,12.1,12.4,12.1,12.0,12.2,12.4,13.6,13.3,12.1,12.1,12.0,11.9,12.0,13.4,12.0,12.1,12.0,12.6,12.2,12.2,11.9,12.1,13.8,12.6,13.5,11.9,11.9,13.0,11.8,11.8,13.0,11.9,13.3,11.8,13.4,11.9,14.0,11.5,13.7,12.1,12.4,13.7,12.1,12.1,12.3,12.2,12.2,11.8,11.6,11.8,11.9,12.1,13.2,12.5,11.7,12.5,12.1,12.4,11.8,12.1,12.1,12.8,12.2,13.6,12.2,13.9,12.2,12.1,12.0,12.0,11.7,12.1,12.1,12.3,13.5,11.4,11.8,11.9,13.6,12.5,12.1,13.3,12.2,12.0,12.2,12.3,12.1,12.0,13.0,12.3,13.5,12.0,12.3,12.0,12.2,12.8,12.1,12.2,12.3,12.1,12.2,13.3,12.2,12.1,12.0,13.1,11.8,11.9,13.3,12.3,11.9,12.1,11.8,12.0,12.2,12.3,12.0,13.7,12.1,12.8,12.4,11.7,11.7,12.2,11.8,11.7,14.4,12.0,12.3,12.1,12.1,11.9,12.4,11.9,12.2,12.5,12.0,11.9,12.2,12.0,11.8,12.1,12.0,12.3,11.8,13.8,11.9,12.0,12.6,12.2,13.1,12.2,11.8,12.1,13.1,12.2,12.0,12.3,11.9,11.7,12.2,12.4,11.8,13.3,11.0,13.6,11.8,12.9,12.0,12.9,12.8,11.8,12.3,11.0,12.1,12.1,12.0,11.7,12.2,12.9,12.2,13.4,12.0,12.1,12.0,12.0,11.3,12.1,12.7,11.6,11.8,13.4,14.4,11.8,13.0,12.2,12.1,12.5,11.8,12.6,12.5,12.2,11.9,12.1,13.4,12.2,12.8,12.1,12.0,11.8,11.8,12.2,12.6,11.8,12.1,12.0,11.8,14.7,12.0,12.0,13.8,13.7,13.3,11.9,11.8,11.6,12.6,11.9,13.2,12.1,11.9,12.2,12.3,11.9,12.2,12.2,11.8,12.4,11.9,13.4,12.2,12.4,12.2,12.1,12.3,12.1,12.3,12.3,11.9,13.0,11.8,11.4,12.1,12.5,12.2,13.4,12.0,12.4,12.2,10.3,12.0,12.1,11.9,12.2,12.3,12.0,13.1,12.0,11.8,13.6,12.5,13.8,12.4,12.3,15.0,12.6,12.0,12.0,12.2,12.3,13.2,12.6,12.2,12.0,11.6,11.9,12.0,13.2,12.2,12.0,13.6,12.2,11.9,11.6,12.2,13.4,11.9,12.4,12.0,13.4,13.2,11.7,13.4,12.0,12.0,12.1,13.0,12.1,12.3,11.8,12.4,12.3,12.3,12.3,13.5,12.2,12.0,12.7,12.1,13.3,13.0,12.4,12.2,12.1,11.7,13.0,11.6,12.2,13.2,11.8,11.8,12.3,12.1,12.1,13.5,12.2,11.7,12.3,13.6,12.4] + }, + { + "position": 31, + "values": [15.3,14.6,14.6,15.0,15.1,14.5,14.5,15.0,15.6,14.2,14.7,13.9,15.1,14.8,14.9,14.8,15.2,14.4,14.9,14.9,14.9,15.7,15.7,15.1,14.6,14.9,16.5,15.2,15.0,15.1,14.7,15.3,14.8,15.9,15.1,15.0,15.2,17.4,16.2,14.8,14.3,14.6,14.6,14.8,14.4,15.1,14.8,14.8,15.3,15.2,14.7,15.6,15.0,15.2,14.0,15.7,15.2,14.6,16.2,17.4,14.8,15.0,14.8,14.7,15.8,14.7,14.7,16.2,14.6,16.2,17.4,14.7,14.9,16.0,16.3,14.5,16.2,14.3,15.2,15.3,14.8,15.1,14.5,15.0,14.6,15.2,14.7,14.8,14.8,15.4,16.0,14.0,14.8,17.4,15.6,14.6,14.6,15.1,14.4,14.8,14.4,14.6,14.6,15.3,14.7,14.3,16.1,15.4,16.0,14.7,15.1,14.7,15.2,14.9,14.9,15.8,15.1,15.4,15.1,14.8,14.6,14.8,14.3,14.7,14.8,17.5,16.2,15.2,14.8,15.0,15.2,14.8,15.6,17.2,16.2,15.2,16.2,14.8,14.1,15.1,15.7,14.8,16.1,14.8,14.5,15.6,14.9,15.0,15.0,15.0,14.6,13.3,15.5,14.8,13.8,14.6,14.8,15.6,13.8,16.1,15.8,15.5,15.0,14.9,14.5,14.6,14.5,15.2,14.8,14.8,14.9,16.6,14.7,14.9,15.0,15.3,15.0,14.5,15.4,16.3,16.4,15.9,34.7,15.2,15.4,14.5,14.5,14.9,15.7,14.6,15.0,16.6,15.1,15.0,15.1,14.7,15.1,27.4,15.2,14.9,14.9,14.4,14.8,13.9,19.0,14.8,14.9,14.9,16.1,14.7,14.8,16.6,14.8,14.2,16.3,15.3,15.4,14.8,16.8,14.6,14.8,15.1,14.8,14.6,14.9,14.7,15.6,15.4,15.1,15.0,14.1,14.7,15.1,15.1,15.0,14.7,14.9,14.3,15.0,15.1,16.6,15.4,14.9,13.4,15.1,16.1,15.0,14.9,15.4,13.5,14.6,14.6,14.7,14.8,14.9,15.2,14.4,14.4,16.1,13.7,15.1,15.5,15.2,15.8,14.9,15.0,14.9,14.5,14.7,15.0,14.8,14.5,15.2,15.5,14.8,14.7,16.1,14.4,17.3,14.9,14.8,15.0,14.2,15.3,15.0,14.3,14.8,15.6,14.9,14.7,15.0,15.1,16.1,14.5,16.3,15.3,14.4,14.9,15.3,15.2,14.5,16.2,15.2,12.8,15.8,16.0,15.1,16.1,14.6,15.1,14.6,15.1,16.6,14.9,15.7,15.0,14.3,14.4,14.8,16.3,14.7,14.5,16.9,15.3,14.6,15.1,14.8,15.0,14.8,14.9,14.3,16.4,15.3,14.5,16.3,15.5,14.8,14.8,14.4,15.3,14.8,14.7,14.5,16.3,14.6,15.0,13.9,16.7,17.5,15.0,15.4,14.9,15.2,15.2,16.1,14.6,15.1,14.9,14.9,15.2,14.5,14.4,14.4,14.5,14.9,15.5,14.8,16.2,14.9,14.2,15.0,15.1,15.0,14.0,14.7,14.6,14.8,14.8,14.5,14.6,14.7,15.8,17.0,15.7,14.6,15.0,15.6,15.1,16.1,15.5,14.4,14.8,14.9,14.7,15.8,14.9,14.9,16.4,14.2,14.5,14.5,14.2,14.8,15.1,17.0,13.7,15.3,15.0,16.2,15.0,14.8,14.5,15.5,14.9,16.3,16.3,14.4,14.6,14.7,14.6,16.5,15.9,14.0,15.8,14.9,15.2,14.6,14.9,14.6,16.8,14.8,15.2,14.6,16.3,16.0,14.5,14.5,15.0,14.9,15.2,15.7,14.8,15.1,15.1,14.8,16.4,16.8,14.9,15.2,14.7,13.9,14.3,15.4,14.4,15.8,15.5,16.0,14.6,14.8,16.0,15.8,14.3,16.6,16.2,14.8,16.2,14.1,15.2,15.6,13.9,15.7,16.1,14.4,14.5,14.8,14.7,16.0,14.5,15.8,15.5,14.7,17.9,14.7,14.5,14.5,15.4,14.9,14.8,14.7,14.9,16.2,14.3,13.2,16.0,15.2,16.1,22.5,16.2,14.7,16.3,15.0,16.1,14.5,14.9,14.3,14.8,14.9,16.3,14.7,14.9,15.2,15.0,14.8,15.9,15.0,15.5,14.4,14.3,15.6,14.8,14.9,14.5,15.0,14.8,14.4,15.0,15.5,15.5,15.6,14.9,15.6,14.5,14.8,16.1,16.0,14.7,16.4,16.1,14.8,15.1,14.4,15.9,14.8,14.9,15.1,14.8,14.9,14.6,14.9,14.5,15.1,15.0,14.9,14.8,14.9,16.1,14.8,15.0,15.1,14.4,14.3,15.7,14.5,14.6,15.5,14.8,13.7,15.0,14.6,14.9,15.0,15.1,14.5,14.8,14.9,15.7,15.7,16.1,15.0,14.8,14.9,14.2,14.8,15.5,16.1,15.6,15.2,14.4,14.9,15.8,14.7,15.3,15.1,15.0,14.9,13.9,14.9,14.9,15.0,15.7,15.7,14.2,15.3,15.0,14.4,14.7,15.2,15.0,14.5,14.7,15.3,14.8,14.8,14.8,14.8,14.9,16.5,13.0,14.8,15.5,14.7,29.3,14.7,15.1,15.1,13.9,15.1,14.8,14.4,14.8,16.2,14.8,14.7,14.0,14.5,14.5,14.9,14.6,14.6,14.6,14.5,14.8,14.9,14.6,15.0,14.7,14.7,15.2,15.5,16.4,15.3,14.6,14.9,15.1,14.8,14.7,14.6,16.0,14.7,15.1,15.7,14.7,15.0,14.3,14.8,16.0,15.1,16.3,14.5,13.7,16.7,14.7,13.7,16.6,15.1,14.8,14.6,15.9,14.4,16.3,14.2,16.2,14.9,14.9,16.3,14.6,14.9,14.9,14.6,14.2,14.7,14.6,14.5,14.7,15.0,16.4,15.0,14.4,14.7,15.2,15.3,14.4,14.5,14.4,14.9,15.4,16.3,15.3,16.3,15.0,15.3,14.6,14.7,14.9,14.5,15.0,15.0,16.4,13.2,14.2,14.5,16.6,15.2,14.6,14.8,15.1,14.7,14.9,13.9,14.6,14.7,15.4,14.9,15.6,14.8,14.9,14.9,15.0,15.0,14.6,14.9,14.9,14.9,14.7,16.5,14.9,14.8,14.9,16.1,14.0,14.9,15.1,16.0,14.7,15.0,14.7,14.5,14.9,14.7,15.0,14.9,16.1,15.3,15.5,14.4,14.5,14.8,14.5,14.6,16.8,14.6,14.9,15.1,14.5,14.4,15.3,14.7,15.0,15.1,15.0,15.0,14.8,15.0,14.8,14.8,14.8,15.3,15.0,15.0,14.7,16.9,14.4,14.9,15.1,14.9,14.6,14.8,15.3,14.4,14.9,15.1,14.6,14.8,14.6,15.4,14.4,15.6,13.3,16.6,14.7,15.5,15.3,15.4,14.4,15.7,14.9,13.4,14.8,15.1,14.8,14.0,14.7,15.5,14.6,15.9,15.0,14.9,14.9,14.9,14.9,15.0,14.4,15.8,14.4,16.0,17.3,14.9,15.7,15.2,14.9,15.5,13.5,14.7,15.1,14.8,14.9,14.6,16.5,15.1,15.0,15.0,15.6,14.5,14.4,15.1,15.5,14.7,15.1,15.0,14.4,14.4,14.4,15.9,16.1,16.4,14.5,14.9,16.0,14.7,15.6,14.6,14.7,16.0,14.8,15.0,15.1,14.7,15.3,15.2,14.5,14.7,14.3,15.1,14.9,15.1,15.1,14.8,15.2,14.9,15.2,14.8,15.1,14.7,14.4,14.6,15.0,15.4,15.0,16.2,14.4,14.9,14.6,13.8,14.6,14.6,14.7,15.2,14.1,15.7,14.7,14.5,14.9,16.1,14.9,16.8,15.0,15.3,14.8,15.2,15.1,14.8,14.7,14.9,15.9,15.1,15.2,14.9,14.2,14.8,14.7,16.0,14.9,14.7,16.7,14.8,14.6,14.7,15.0,16.5,14.7,14.7,15.0,16.6,16.1,14.7,14.7,15.2,14.2,15.0,15.7,15.0,14.8,14.4,15.0,14.5,15.0,15.9,14.7,15.1,14.4,15.0,15.3,16.0,15.4,14.9,15.3,14.8,14.3,14.6,15.3,15.0,16.1,14.2,15.0,14.5,15.3,15.1,15.9,14.3,14.9,16.1,15.2,15.5] + }, + { + "position": 32, + "values": [33.4,33.0,34.1,32.9,35.9,33.6,32.5,33.3,35.9,31.0,32.6,32.6,32.0,37.4,32.9,33.0,32.3,32.4,33.5,33.2,34.0,34.3,34.4,33.7,31.7,33.4,37.4,33.5,32.8,32.3,32.9,33.1,32.2,35.9,32.9,33.7,31.9,39.0,35.3,33.8,32.7,33.0,32.8,33.8,32.5,32.5,32.7,33.9,33.2,33.7,32.5,33.3,37.5,32.6,34.2,34.6,36.8,35.5,33.1,32.6,37.1,33.9,33.0,33.6,36.3,32.4,32.6,35.2,37.7,32.1,32.5,38.9,32.6,34.8,38.4,33.8,35.3,33.1,32.8,32.2,33.1,33.6,33.0,33.2,32.9,33.9,33.2,32.4,34.4,32.2,36.8,33.2,31.0,41.9,36.8,32.9,36.8,33.7,33.6,33.0,32.6,32.3,33.7,32.8,32.2,34.4,35.2,36.5,36.6,32.6,32.6,33.7,33.0,34.0,33.5,32.6,34.7,34.0,38.9,31.8,32.7,32.2,32.4,32.9,33.6,36.9,37.1,33.9,32.8,33.0,33.0,32.8,34.1,34.5,36.6,33.6,36.6,32.9,33.3,33.1,34.6,33.2,33.2,35.8,35.4,33.4,35.5,32.6,32.1,33.0,32.4,29.8,35.4,33.6,32.9,32.9,31.7,37.2,31.2,33.4,34.7,36.7,33.3,33.6,32.1,32.7,32.6,33.4,33.5,34.1,32.6,39.1,34.1,32.6,32.9,33.6,32.3,33.5,35.2,39.4,37.3,35.5,34.0,33.1,36.0,33.6,33.9,31.7,37.5,32.3,33.1,35.4,32.7,32.9,32.8,32.6,37.3,32.4,33.3,32.9,32.6,33.7,32.9,32.5,41.6,34.2,34.5,33.1,35.0,30.9,33.9,36.1,33.5,35.1,32.7,34.0,34.5,36.9,32.4,32.9,32.4,32.3,33.4,33.0,32.8,34.5,32.9,37.4,33.9,33.5,32.6,32.9,33.3,33.3,34.5,32.5,33.5,32.6,33.1,32.0,37.2,35.2,32.1,30.1,33.4,36.7,33.4,33.4,31.9,33.5,36.6,33.3,33.5,33.9,32.5,31.6,32.5,32.2,36.4,32.2,33.0,34.5,33.5,37.4,33.0,33.8,31.7,34.0,33.9,33.1,31.5,32.4,35.3,35.8,33.4,33.7,39.4,32.4,39.7,33.4,34.0,32.1,39.7,34.7,35.3,33.9,32.7,33.0,34.2,33.1,34.2,34.3,34.7,33.3,37.3,37.2,33.1,33.1,34.2,34.2,46.1,36.2,31.7,36.8,34.9,43.1,33.1,35.1,32.4,32.8,33.7,33.8,35.7,32.5,35.4,34.1,32.1,32.3,32.2,35.5,32.8,38.1,31.8,32.9,32.4,33.5,33.2,32.7,34.9,33.9,33.4,37.3,33.6,32.8,37.0,30.6,33.7,31.2,40.2,32.6,30.3,32.8,31.6,32.9,35.1,33.0,31.0,34.9,39.3,33.2,33.4,32.3,33.3,32.9,37.1,33.2,32.3,32.8,33.1,32.0,33.3,33.1,32.4,33.6,33.0,33.7,36.1,33.8,32.5,32.5,32.4,33.0,31.0,33.5,37.3,32.8,33.2,32.0,33.1,32.2,32.4,35.7,37.8,33.3,32.4,33.3,33.7,33.8,36.6,38.2,31.7,32.9,32.9,32.1,34.7,32.1,32.0,31.6,36.1,38.4,33.4,33.8,32.8,36.1,34.0,37.8,34.5,33.0,39.8,33.1,33.5,33.9,33.8,36.8,37.9,37.9,33.4,31.9,32.3,31.9,36.7,39.4,35.1,35.7,32.2,37.3,33.2,32.8,33.2,32.7,37.2,33.7,37.1,32.8,34.6,34.8,33.4,33.4,34.1,32.7,33.4,34.9,33.4,33.1,32.5,35.9,32.9,36.6,35.8,30.9,32.3,32.4,33.4,31.6,32.4,35.2,36.7,32.6,32.1,33.9,36.1,33.6,35.7,33.5,32.4,35.6,29.6,33.0,39.7,39.5,34.8,34.7,32.7,32.8,32.6,32.5,37.6,32.5,36.8,36.2,32.8,38.6,32.7,33.1,34.0,32.3,34.0,32.2,33.7,32.3,36.1,33.1,34.3,36.4,35.5,36.0,26.4,33.3,35.3,35.4,33.4,37.1,32.8,33.6,32.7,34.1,33.8,35.5,31.2,32.1,33.9,35.8,32.8,36.8,33.2,36.1,32.6,34.9,33.9,33.4,33.4,32.5,33.6,32.2,33.6,33.4,34.2,34.1,34.7,33.1,33.1,35.3,38.4,37.5,35.1,35.8,33.9,35.4,32.2,32.9,34.0,35.8,33.1,33.4,34.4,32.1,32.6,32.5,32.9,33.5,32.9,32.4,32.2,33.7,32.5,33.5,33.4,36.4,36.9,32.0,35.7,32.5,34.0,36.4,33.6,32.4,31.1,33.4,32.3,32.4,32.7,32.8,32.6,33.3,32.2,34.3,36.0,33.8,33.2,32.4,32.4,31.4,30.6,32.2,35.1,35.0,33.2,32.3,33.0,35.6,32.7,33.4,34.4,32.4,32.3,33.0,32.7,33.4,32.3,40.7,32.5,35.8,32.9,32.7,39.5,32.1,33.7,32.0,32.5,32.8,34.1,34.5,35.6,33.3,33.6,33.5,36.2,29.4,34.5,32.1,52.7,32.4,32.7,34.2,32.2,32.7,33.4,33.5,32.0,33.4,35.8,34.3,32.7,32.5,31.8,33.9,32.6,34.3,32.9,33.4,33.5,34.7,32.9,33.7,32.9,32.4,32.3,34.7,32.9,35.8,38.4,33.7,32.3,33.0,32.5,34.2,37.0,31.5,32.7,32.8,37.2,34.5,31.6,33.4,33.0,36.9,34.2,36.9,34.3,40.8,32.9,33.4,32.6,39.9,32.7,39.0,32.0,37.5,34.0,37.6,31.5,36.9,33.1,33.6,36.3,33.9,33.0,33.7,33.2,32.3,33.1,32.6,32.1,33.2,33.3,35.1,36.7,39.5,33.0,34.2,33.3,32.1,33.0,33.2,33.2,34.0,36.4,33.5,33.3,36.8,32.9,32.7,32.3,32.9,34.7,33.3,34.4,34.9,34.0,32.7,32.9,33.7,34.2,32.8,33.1,35.7,32.4,33.7,37.6,33.5,33.4,38.5,33.9,34.0,32.3,34.4,34.3,33.2,38.1,33.1,32.7,32.5,33.2,35.5,33.7,32.8,33.1,33.5,36.4,33.4,39.8,33.0,35.8,33.7,33.1,33.8,32.3,33.4,32.5,33.0,33.7,35.3,34.3,34.5,32.7,32.6,31.8,33.7,32.3,38.5,32.9,32.1,32.6,32.7,31.6,33.1,33.4,33.1,37.4,32.8,33.9,32.5,33.8,33.9,33.4,33.1,33.9,32.3,32.9,32.2,37.3,32.0,33.1,33.6,33.4,33.2,33.1,36.0,35.5,32.3,31.9,33.3,32.8,32.4,34.4,32.0,36.7,30.7,33.6,37.9,33.5,33.4,34.6,41.4,36.0,32.5,30.5,33.0,31.6,32.9,32.4,33.2,37.2,33.5,36.8,34.1,32.8,32.9,34.6,33.5,33.0,32.2,32.4,33.4,35.2,38.3,32.3,34.8,35.7,33.4,31.7,35.6,33.7,33.7,32.8,33.6,32.4,39.5,32.5,33.1,34.2,31.9,33.8,33.3,34.4,33.4,32.7,33.5,34.0,33.4,34.9,32.9,32.3,34.3,31.2,39.1,36.0,32.6,33.9,34.7,33.1,33.4,35.1,38.9,33.7,33.1,33.3,33.8,34.4,32.2,33.6,33.0,36.9,33.3,34.2,33.4,32.9,33.4,32.4,35,33.8,33.4,35.3,33.6,33.7,33.3,31.6,33.5,38.3,32.2,33.2,32.3,34.1,32.2,32.5,33.7,33.7,31.6,32.4,33.8,32.8,33.5,36.8,34.1,35.2,35.5,33.1,32.6,34.2,33.4,32.1,33.2,34.8,34.7,32.8,34.0,34.6,31.8,32.5,32.9,44.4,35.6,32.1,32.9,33.4,32.6,32.1,33.5,37.3,32.6,34.1,32.7,39.7,32.3,37.5,42.4,31.9,33.0,32.6,33.9,33.6,32.3,32.1,32.9,32.9,33.5,33.5,35.1,32.9,32.6,33.0,37.2,36.0,36.7,33.2,33.0,32.3,33.3,35.7,31.7,33.3,36.0,33.3,32.6,33.6,34.6,33.3,36.5,33.9,33.7,32.9,37.3,34.1] + }, + { + "position": 33, + "values": [15.9,15.2,15.5,15.1,15.8,15.3,15.4,14.7,16.7,14.5,15.4,14.7,14.4,15.1,15.6,15.2,15.2,14.9,15.1,15.5,15.4,15.9,16.0,14.5,15.2,15.3,16.4,15.2,14.8,15.8,15.2,15.7,15.2,17.3,15.0,14.8,16.7,17.8,17.0,15.1,15.4,14.9,15.5,15.1,15.4,14.8,15.4,15.4,16.1,15.3,15.1,17.0,15.7,17.6,15.2,16.8,15.4,18.2,15.0,14.8,19.6,15.4,15.7,15.2,15.7,15.1,15.2,16.6,14.8,17.1,20.9,15.0,15.2,15.8,16.7,15.4,16.5,14.7,15.6,15.3,15.2,15.8,14.9,15.3,14.9,15.4,15.1,15.1,16.9,15.4,16.2,15.4,14.3,17.6,16.1,15.1,17.2,15.6,15.1,15.1,14.9,15.1,15.4,15.9,15.1,14.9,17.4,15.6,16.5,15.2,15.4,15.4,15.6,15.1,15.7,15.7,15.2,15.8,15.7,15.6,14.5,15.0,14.4,15.1,17.7,15.7,16.9,16.0,15.2,15.1,15.4,15.5,16.0,15.3,15.8,15.4,17.9,15.2,14.7,16.2,15.2,14.9,15.4,17.1,15.0,18.5,15.5,15.3,15.5,15.6,13.5,14.8,15.3,15.2,13.7,15.2,15.4,17.1,14.3,15.6,17.4,15.3,15.2,15.4,15.0,15.5,14.6,15.6,15.5,15.1,15.5,15.4,17.3,15.7,15.0,15.4,15.2,15.8,15.0,17.6,16.4,16.2,14.7,15.7,28.9,14.9,15.0,14.6,14.9,16.4,15.4,15.4,16.6,15.5,15.5,15.3,15.6,16.5,15.1,15.3,15.5,15.4,15.3,16.0,24.4,13.9,15.2,15.2,15.3,16.2,14.7,15.6,15.1,17.0,15.7,15.5,16.0,15.3,16.7,14.9,15.3,15.5,15.9,15.5,15.3,15.4,15.7,14.9,15.5,15.7,14.9,15.3,15.1,15.6,15.3,14.7,15.1,15.1,15.4,15.5,16.0,16.4,15.2,14.4,15.1,17.2,15.4,15.3,15.6,14.7,15.9,15.4,15.4,15.4,15.5,15.3,14.4,15.0,17.1,14.2,15.4,15.5,15.2,16.8,15.2,14.9,15.6,15.4,15.1,15.3,15.3,15.0,16.2,16.4,19.8,14.9,18.1,14.9,17.0,15.6,15.6,15.1,15.4,15.3,15.9,15.2,14.9,15.4,15.5,15.0,15.3,15.4,16.4,15.3,18.0,16.4,15.1,15.3,16.0,15.9,16.4,17.3,14.9,14.5,17.7,17.2,15.2,15.7,16.2,15.2,15.3,15.6,16.7,15.7,16.6,15.3,14.3,14.8,15.1,16.1,15.2,15.0,17.1,14.8,15.3,15.1,15.3,15.4,15.0,15.4,18.0,15.4,15.2,14.7,16.7,16.3,15.5,16.1,14.7,15.4,14.6,15.2,17.3,16.9,15.2,15.6,13.7,16.6,17.6,15.3,15.7,15.2,15.3,15.8,16.8,14.9,15.3,15.4,15.2,15.0,15.4,14.7,14.7,16.3,15.2,14.5,15.6,16.5,15.6,17.0,14.9,14.3,15.5,15.1,16.2,15.1,15.0,15.5,15.0,15.0,15.3,16.6,17.5,16.2,15.0,15.2,15.7,15.9,16.9,16.0,14.4,15.4,15.5,15.1,16.8,15.0,15.5,14.8,17.8,15.4,15.1,15.2,15.6,15.0,17.5,15.0,15.8,15.2,16.0,15.5,15.6,16.8,15.3,15.3,18.7,17.2,15.6,14.8,15.1,14.9,16.4,16.8,15.4,16.4,15.0,15.6,16.1,15.2,15.0,16.7,15.3,15.4,17.1,15.3,16.1,14.6,15.4,15.4,15.5,15.4,15.4,16.5,15.4,15.1,15.3,16.1,16.8,15.2,14.3,14.5,14.9,17.2,15.4,15.5,16.4,16.1,15.0,16.2,15.2,15.5,16.7,15.2,16.2,16.2,15.0,16.6,18.2,16.8,15.4,15.3,16.2,16.4,14.9,15.3,15.0,14.7,16.4,16.8,14.6,16.7,15.2,17.6,15.3,15.3,14.3,15.3,15.5,15.2,15.1,15.4,16.4,15.6,15.0,17.2,13.5,16.3,13.1,15.2,16.5,16.4,15.3,16.6,15.0,15.5,14.5,15.3,15.5,16.0,15.3,14.9,15.1,15.3,15.2,16.3,15.2,16.5,15.2,15.3,14.5,15.0,15.4,15.2,15.2,15.5,14.8,15.0,15.6,16.0,15.9,15.3,14.7,16.6,17.4,16.4,17.8,16.8,15.5,16.3,15.2,14.5,15.9,15.7,14.9,15.3,15.4,15.5,15.3,15.2,15.5,15.0,16.4,15.5,15.0,15.4,15.1,16.3,15.6,15.2,16.8,14.9,16.4,15.2,15.3,15.7,16.3,14.8,14.0,15.6,15.2,15.0,15.1,15.3,15.3,15.2,15.5,15.7,16.2,16.1,15.2,14.9,15.2,14.6,15.2,16.3,16.2,16.1,15.1,14.6,15.1,16.7,15.6,15.0,15.5,14.6,15.3,15.9,15.0,15.5,15.4,17.2,16.5,14.5,15.3,15.5,15.9,15.0,15.7,15.5,14.4,15.3,15.3,15.1,16.3,15.3,15.4,15.8,15.3,13.1,15.0,15.9,15.3,31.8,15.1,14.8,14.6,16.4,15.3,14.6,14.7,15.2,15.9,15.7,15.1,14.7,17.9,15.4,15.4,15.4,14.4,15.2,15.1,15.4,15.2,15.0,15.4,15.1,15.1,15.3,14.7,17.2,15.6,15.5,15.5,15.5,15.2,15.3,14.8,16.3,15.4,14.6,15.7,15.6,14.8,15.2,15.5,16.7,15.7,17.1,15.4,18.5,15.5,14.7,14.1,17.0,15.3,18.2,15.0,16.3,15.7,16.4,14.5,16.2,14.9,15.1,16.1,15.7,15.4,15.2,14.8,15.1,14.7,14.5,14.2,15.5,15.7,16.7,17.3,16.0,15.5,16.0,15.2,15.1,14.8,15.1,15.1,15.5,16.1,15.6,16.7,15.7,15.3,15.0,15.4,15.0,15.4,15.5,15.4,16.2,12.6,14.8,15.1,15.9,15.8,15.3,15.3,15.3,14.6,15.1,15.3,15.3,15.1,15.6,15.3,16.3,14.8,16.1,15.5,15.2,16.4,14.9,15.4,15.4,15.3,15.5,15.4,15.4,15.4,15.3,16.7,15.7,15.4,15.1,21.5,14.4,15.2,15.0,15.3,15.2,15.2,15.2,16.2,15.2,15.6,15.0,14.8,14.8,15.3,15.2,14.8,17.0,14.4,15.6,15.3,15.1,15.2,14.6,14.9,15.6,15.8,15.2,15.2,15.4,15.2,15.4,15.3,15.4,15.5,14.9,15.4,15.0,17.7,17.9,15.3,15.8,15.3,15.3,15.4,15.1,15.0,14.8,15.4,15.0,15.3,14.7,15.5,15.0,16.0,17.2,16.3,15.3,15.8,15.7,16.0,16.0,15.7,15.3,13.7,15.3,15.6,15.2,14.4,14.7,15.9,15.5,21.5,15.6,15.1,15.3,15.2,14.9,15.3,14.6,15.6,15.4,16.3,18.6,15.0,15.8,14.7,15.2,15.9,15.1,16.5,15.4,15.2,15.4,14.7,15.3,17.6,15.4,15.8,15.3,15.1,15.1,15.3,15.7,15.1,15.3,15.8,16.2,14.7,14.5,15.8,15.9,16.5,15.0,15.5,16.9,17.2,16.7,15.2,16.7,15.0,15.6,16.3,14.3,15.2,15.8,15.5,15.1,15.0,14.8,15.8,15.1,15.9,15.7,15.3,15.6,14.8,35.2,15.7,14.7,14.8,15.3,15.4,16.0,15.8,15.6,17.1,16.5,15.2,15.2,14.8,15.1,15.1,15.7,15.2,16.4,14.6,16.2,15.6,15.2,16.5,15.3,15.6,16.2,15.7,15.5,15.2,15.3,15.2,15.2,15.5,15.5,16.9,15.5,15.6,15.2,14.6,15.4,16.2,15.8,15.3,15.5,15.4,15.5,14.6,15.3,16.9,15.4,14.8,15.0,17.6,14.9,17.2,14.5,15.3,17.2,15.7,16.7,14.7,15.6,14.6,15.5,15.8,15.2,16.5,15.6,15.4,15.0,16.9,15.4,16.2,15.4,15.6,15.5,15.4,14.4,14.7,13.6,15.6,16.5,15.5,15.3,15.6,15.4,15.6,15.9,15.5,14.0,16.4,15.1,16.4] + }, + { + "position": 34, + "values": [56.8,48.5,54.5,59.6,51.9,43.1,57.3,56.3,61.9,56.0,59.8,47.3,45.5,58.0,51.8,59.9,59.9,58.2,55.9,59.2,52.0,57.0,54.8,56.0,55.9,57.3,59.6,58.5,50.1,43.0,59.4,56.2,55.7,60.9,59.2,59.7,56.9,66.3,56.0,53.1,54.4,56.9,52.5,58.8,55.8,58.8,58.2,60.1,56.2,53.4,47.1,58.2,57.0,60.2,51.5,52.8,57.6,52.7,54.9,54.1,60.4,50.4,59.9,54.0,53.2,54.0,49.5,53.1,52.5,57.2,64.1,58.3,54.6,57.0,59.7,60.1,43.5,48.6,56.5,54.0,51.8,60.1,45.7,64.5,51.8,55.9,54.3,48.8,60.0,55.2,55.3,54.2,51.9,59.4,56.4,51.9,54.0,52.4,42.3,56.9,54.3,58.9,61.5,55.2,55.2,54.9,57.8,53.0,48.9,61.6,61.1,54.9,58.2,56.9,57.7,55.9,54.7,57.0,54.7,57.2,56.1,59.4,56.2,57.6,52.3,58.8,54.5,53.4,55.5,57.4,58.8,56.6,59.2,58.8,56.9,56.8,55.2,59.7,51.1,53.7,57.6,54.6,57.2,58.8,51.8,60.6,56.0,58.4,59.7,56.6,59.2,55.9,43.0,57.9,57.9,52.7,51.0,58.0,48.1,57.9,55.5,58.3,58.0,57.5,53.3,55.0,57.2,58.4,54.8,52.7,60.1,56.1,56.4,61.0,56.5,55.0,53.8,54.6,54.0,52.3,55.7,52.9,41.6,44.3,52.0,48.1,50.9,54.0,49.7,55.1,52.1,62.3,61.6,54.5,57.6,59.9,57.3,56.0,58.2,57.2,53.8,42.9,51.5,41.7,69.6,52.3,52.6,53.8,63.1,62.8,55.7,52.8,55.4,42.3,57.9,57.4,58.5,57.7,57.7,50.6,56.8,55.0,57.3,56.3,58.9,59.9,54.4,50.9,59.4,51.2,54.4,51.6,51.5,59.1,52.5,57.5,54.1,59.2,54.3,60.9,53.9,55.6,56.9,56.4,51.3,59.6,55.1,53.3,57.6,57.0,51.4,53.1,57.8,61.7,58.9,58.9,50.7,58.0,55.4,48.3,61.6,58.0,50.5,55.2,48.4,52.6,43.3,56.1,54.3,59.2,57.1,54.2,49.6,55.6,58.7,52.0,61.6,56.4,51.1,59.4,60.1,57.5,51.0,46.0,53.2,49.5,40.8,54.8,61.9,58.2,58.0,56.6,61.0,58.1,55.6,55.5,60.9,50.7,58.7,64.9,53.4,56.4,58.5,56.9,53.8,52.2,56.2,49.7,56.2,53.7,61.5,52.8,56.2,55.8,60.6,54.5,55.3,60.6,56.7,54.6,60.1,57.0,60.3,50.9,55.4,52.8,62.1,54.5,50.4,58.6,56.8,55.2,53.1,59.2,56.9,53.8,51.7,47.2,51.9,55.1,30.9,53.2,55.6,53.2,57.6,57.2,57.0,55.7,59.5,56.5,59.7,60.8,53.7,56.6,59.6,55.9,53.3,61.0,54.3,59.6,58.8,55.2,48.9,49.4,57.6,62.5,54.9,59.2,49.1,54.1,58.5,59.0,51.9,57.3,49.4,46.6,55.9,60.6,57.1,54.8,55.3,45.5,59.2,58.7,60.2,54.4,57.1,54.6,57.7,54.5,50.8,59.1,54.4,58.7,61.8,47.1,58.1,59.2,65.4,51.9,42.6,56.0,58.3,40.5,50.2,58.5,58.7,61.3,58.4,49.5,53.5,55.7,42.5,58.1,64.2,50.6,45.6,53.1,56.2,58.3,53.5,51.5,41.9,51.5,52.9,56.3,55.7,60.3,52.1,53.9,51.3,57.1,56.5,57.4,56.1,57.0,60.2,55.0,60.5,55.0,57.0,52.7,54.6,45.6,60.7,57.6,56.3,56.0,52.0,55.6,57.6,56.8,54.2,53.3,47.1,54.2,62.6,57.0,57.5,59.3,55.9,43.4,56.9,58.4,58.9,54.4,42.8,56.6,53.5,42.8,55.5,60.8,54.2,52.6,57.3,43.0,50.3,51.3,53.2,59.4,65.1,59.2,54.3,58.1,58.6,42.9,50.0,54.0,54.9,60.0,55.8,53.2,56.1,51.4,59.1,32.2,58.6,49.1,52.6,53.4,58.4,56.9,49.7,62.0,55.4,55.3,60.1,50.9,47.7,54.1,51.2,54.7,58.8,53.6,53.5,56.0,56.7,52.5,52.5,47.2,59.6,52.1,60.0,50.4,55.4,49.8,54.9,63.3,62.9,57.2,53.1,54.3,7.0,54.4,54.3,54.6,45.5,58.1,56.0,52.8,56.2,59.6,55.3,56.2,55.1,56.9,58.2,58.6,55.9,54.5,53.7,52.5,53.8,57.3,49.1,54.7,55.3,58.6,48.9,58.4,57.7,55.3,42.6,53.7,49.6,52.2,56.2,63.5,54.0,57.2,59.0,48.9,59.5,56.3,50.4,60.9,57.2,59.5,54.2,58.9,57.0,55.6,57.9,53.8,53.1,57.4,48.0,51.9,58.4,51.6,55.5,59.6,53.9,57.7,52.0,57.0,55.0,54.5,55.5,49.8,57.2,54.8,57.3,62.0,49.2,57.2,57.4,58.5,58.8,64.2,56.2,55.3,58.2,53.6,56.6,54.5,54.0,61.1,56.0,54.4,71.6,60.2,57.3,59.4,60.7,56.1,56.7,45.2,55.5,53.4,52.4,57.3,58.5,46.8,48.9,57.8,53.4,44.0,58.9,46.3,61.2,52.1,57.4,58.5,51.2,53.8,57.4,59.7,43.6,61.3,54.2,55.1,55.3,54.7,60.3,58.5,59.3,54.5,59.1,46.7,48.7,58.8,59.4,50.4,52.8,59.1,56.7,48.4,58.9,52.5,50.6,44.7,52.0,44.2,60.3,56.1,54.7,53.0,57.1,54.0,51.6,51.0,50.5,57.2,55.6,43.0,60.2,56.0,56.4,55.0,58.2,54.5,51.2,54.8,53.8,51.6,54.3,55.1,55.8,55.1,60.1,56.4,55.0,58.6,53.9,48.7,56.7,54.6,55.8,49.0,60.4,54.0,56.6,59.1,43.6,49.9,57.7,57.2,52.8,57.7,52.5,52.9,55.2,58.9,60.7,57.5,57.8,59.4,50.0,55.4,54.8,52.8,61.3,56.1,58.5,54.0,57.8,60.8,56.0,51.1,60.3,52.0,57.7,51.3,56.2,58.2,59.7,58.8,55.7,44.3,51.4,56.8,57.5,55.6,58.0,59.0,43.1,56.5,59.1,57.5,56.2,54.7,63.6,54.8,54.0,55.9,54.4,43.3,51.9,55.7,51.5,58.0,52.8,50.6,58.3,57.8,54.1,60.1,58.6,54.5,57.4,49.8,56.3,53.8,59.3,51.6,59.1,57.2,53.5,58.6,54.7,53.9,55.7,52.3,53.6,63.1,60.4,59.5,52.2,57.8,61.3,58.0,63.4,51.7,57.5,51.7,59.3,53.3,43.5,54.6,57.1,60.0,60.8,53.2,55.7,62.7,56.5,60.0,52.6,60.0,50.3,59.9,61.5,54.5,58.5,52.4,57.6,53.0,50.6,57.3,52.6,52.3,57.2,42.9,58.1,61.0,58.7,56.4,53.2,57.2,56.2,53.6,56.7,59.5,56.5,54.1,56.8,59.3,58.2,60.0,55.4,56.4,57.9,56.6,55.6,51.0,59.1,54.5,51.1,51.0,57.6,61.8,52.8,56.6,54.8,56.0,58.2,48.0,48.7,52.4,56.1,52.7,55.7,57.1,62.7,52.7,55.7,54.7,52.8,43.1,56.9,56.0,60.8,60.1,58.6,55.8,54.3,52.6,57.1,51.9,52.9,50.1,45.4,43.6,55.9,56.0,53.1,53.5,57.9,59.3,55.4,55.2,52.3,67.4,54.5,51.3,54.8,50.1,57.8,58.0,57.1,55.1,50.7,59.3,49.8,56.3,58.1,55.2,52.9,54.6,57.6,57.4,48.6,57.0,56.4,51.8,54.7,56.7,58.9,53.5,58.6,57.5,53.5,51.1,42.5,60.3,53.0,55.5,62.2,50.4,52.9,56.0,49.6,59.6,54.7,61.3,52.7,51.9,59.6,53.1,58.2,59.1,56.8,57.8,57.8,58.0,53.7,55.1,62.2,57.2,59.1,57.9,58.4,52.7,59.7,61.8,54.1,57.3,57.8,57.3,38.2,60.6,61.5,50.7,52.5,54.3,57.8,56.9,57.1,53.9,60.5,61.3,53.6] + }, + { + "position": 35, + "values": [44.2,40.3,38.5,47.2,40.4,42.3,40.6,40.2,43.4,39.4,42.1,37.0,39.6,42.7,41.0,41.9,38.7,42.5,40.6,41.6,40.6,40.0,38.7,37.6,42.1,40.5,43.8,42.7,37.8,58.6,40.0,42.2,39.6,44.3,40.3,39.7,47.3,49.0,40.3,39.8,57.6,38.7,40.8,39.8,39.7,38.7,41.2,41.7,40.1,40.1,41.6,44.6,42.2,45.3,61.2,41.5,41.9,39.1,43.9,41.7,50.2,41.0,39.1,41.3,42.7,41.6,39.9,43.8,38.3,43.0,42.2,50.2,39.5,42.1,42.3,45.5,42.9,37.9,41.8,39.8,39.7,43.2,37.9,41.3,38.9,44.1,41.9,38.1,40.2,42.3,42.2,38.3,41.6,47.5,43.3,40.1,41.1,38.6,41.8,39.6,42.3,41.6,40.8,38.7,41.7,41.0,41.4,40.4,42.6,42.2,41.7,44.5,42.0,40.6,40.3,37.2,39.9,39.3,46.0,41.0,43.1,42.0,38.7,38.6,43.2,45.7,44.7,41.5,39.9,41.0,40.5,42.0,40.5,42.3,40.7,39.2,39.0,42.8,39.7,42.2,40.6,41.7,44.2,42.1,46.3,41.9,40.2,38.7,41.9,39.7,44.8,40.8,39.1,42.2,37.4,41.3,43.1,41.5,40.1,42.0,42.1,44.9,39.5,40.3,38.8,42.6,40.6,42.1,41.3,37.5,42.4,57.5,37.7,42.2,37.5,38.8,39.4,39.8,37.8,43.3,45.0,44.0,40.1,39.9,39.2,38.9,50.9,40.4,40.8,41.8,39.0,41.3,42.8,39.4,43.7,38.6,42.8,41.3,39.8,41.9,40.2,44.5,41.5,63.5,46.9,38.3,36.9,37.0,45.8,42.6,38.8,45.8,43.3,44.8,40.2,38.6,41.5,41.9,42.2,35.8,42.4,40.1,42.9,43.0,41.5,42.2,38.3,44.0,41.5,45.3,37.4,42.1,37.3,41.9,39.0,41.9,41.1,43.4,41.1,41.4,42.2,43.8,40.5,39.0,41.4,44.4,38.8,37.1,17.6,40.5,40.6,41.2,39.3,37.5,42.1,43.4,36.3,39.7,43.5,49.8,42.3,41.1,41.2,44.2,39.8,38.2,39.9,44.6,42.1,42.4,40.4,40.2,44.5,40.0,41.8,43.1,43.5,40.0,50.5,41.7,40.1,41.0,58.0,38.9,41.2,55.8,42.5,41.4,41.3,40.2,38.7,37.7,44.4,42.2,40.4,43.4,41.5,42.3,41.0,44.8,44.5,73.3,40.9,22.9,44.6,45.1,40.4,42.5,42.0,42.5,43.0,39.8,39.9,39.9,43.5,38.4,40.6,38.3,41.6,40.5,38.8,43.3,40.5,55.6,40.3,42.0,37.1,42.9,45.4,39.6,41.8,44.1,41.3,41.8,43.2,43.3,37.0,38.5,39.3,39.1,47.0,40.2,38.7,42.6,39.6,41.6,39.7,40.0,49.4,40.0,42.7,41.7,37.2,39.9,44.5,39.3,40.8,41.2,42.7,43.3,41.1,39.8,37.7,41.7,40.5,38.5,57.5,38.1,43.2,55.8,39.1,41.4,42.2,38.3,41.8,39.5,40.4,42.7,41.9,40.7,41.0,44.4,45.1,44.0,39.7,41.1,43.6,41.0,43.2,40.1,41.9,42.4,41.6,42.4,42.4,37.4,43.0,41.1,49.5,39.4,43.6,37.4,41.8,45.1,61.3,39.2,38.0,42.8,45.1,39.8,42.8,43.8,44.5,43.5,47.9,44.0,42.8,40.0,40.9,42.1,40.6,45.6,45.1,41.7,41.9,39.2,42.0,42.0,41.8,40.8,40.7,39.7,43.4,39.7,41.5,42.0,38.3,42.4,40.2,43.0,40.8,45.6,42.2,34.0,42.9,42.4,40.4,40.9,38.9,39.6,39.5,38.2,39.8,41.7,42.0,59.0,39.4,42.9,39.8,42.0,45.0,44.4,43.9,40.8,41.6,45.1,50.1,42.3,43.3,43.2,53.5,43.4,37.7,46.9,38.4,40.6,43.9,41.6,35.5,43.4,41.2,53.6,41.7,40.9,44.6,45.0,41.0,39.4,40.1,41.5,41.4,51.0,41.2,43.8,40.6,121.6,45.3,44.2,38.9,44.2,38.2,41.9,38.5,41.2,41.0,39.8,43.0,45.4,42.8,36.9,61.2,38.2,42.8,42.4,40.8,42.4,50.2,41.2,39.5,37.2,39.1,41.4,41.6,37.7,40.1,60.7,42.3,43.0,40.4,39.9,42.7,41.3,47.4,39.1,49.3,41.4,42.0,46.5,39.6,37.0,40.2,42.9,41.2,37.5,37.2,42.6,42.2,41.2,42.0,39.8,39.8,42.7,40.1,41.1,38.3,37.6,40.6,43.0,42.2,41.6,41.0,40.2,44.2,40.3,43.4,38.1,40.2,41.8,40.1,39.9,54.1,41.4,39.5,37.9,41.2,41.4,42.5,44.6,37.1,41.3,44.1,41.3,43.3,39.6,38.4,38.6,38.4,36.4,42.1,41.0,41.6,41.8,38.5,40.9,42.7,47.2,40.8,41.3,42.3,39.6,39.8,42.2,41.3,41.7,34.0,42.5,40.5,41.1,38.9,44.7,41.8,44.9,42.7,43.1,39.5,40.4,41.3,40.1,38.1,40.5,40.1,56.4,41.0,41.8,39.6,36.3,37.5,39.8,42.3,41.3,44.7,38.0,42.0,42.5,40.9,40.7,39.2,36.8,40.9,38.1,41.0,41.2,42.0,40.0,42.3,38.1,39.5,44.0,40.9,42.8,46.0,39.7,41.9,42.4,41.6,41.7,40.3,43.6,40.2,40.9,39.5,40.2,39.7,41.1,41.9,44.3,44.2,44.5,38.0,40.4,59.6,43.2,41.6,56.3,42.7,41.1,41.4,42.7,41.9,43.7,39.6,43.7,39.4,40.3,41.8,41.4,41.1,36.3,39.8,38.7,40.6,40.7,39.5,40.9,40.1,44.7,40.4,54.2,43.7,37.9,41.7,39.5,37.8,40.4,40.1,41.0,41.1,41.4,44.3,39.8,39.1,42.6,42.1,54.7,42.1,40.0,38.5,41.2,37.9,40.8,40.2,46.2,39.7,42.3,42.3,46.2,41.4,40.0,42.8,40.2,39.9,43.9,38.6,42.6,41.6,39.7,40.8,42.6,42.9,38.4,41.8,38.2,41.5,42.2,37.5,41.7,41.6,39.7,41.4,48.7,39.6,41.0,43.2,42.8,38.3,44.1,42.5,37.4,41.6,38.2,36.0,44.1,41.0,38.8,40.0,40.5,41.1,44.5,37.2,40.6,39.3,42.5,41.2,41.3,40.9,43.3,39.7,43.2,43.9,60.2,40.4,42.1,37.9,40.2,44.8,41.3,41.1,39.6,43.2,42.6,44.1,39.8,37.0,49.7,41.6,39.8,41.8,44.3,57.0,40.1,41.5,41.3,44.3,37.9,36.7,40.4,42.4,39.6,43.3,42.9,43.6,38.9,41.0,31.8,41.7,43.5,39.2,41.8,42.0,41.6,36.6,41.8,45.3,40.2,43.0,44.5,41.4,40.2,37.0,38.5,41.3,43.5,37.3,44.8,42.4,51.6,40.9,39.5,38.1,37.6,17.4,37.0,39.0,42.0,41.4,40.8,41.9,41.7,45.1,41.8,46.0,38.1,39.3,41.4,38.0,41.2,40.8,39.8,38.3,57.2,40.2,37.0,43.2,43.4,42.7,43.6,42.2,43.1,38.8,41.5,40.7,45.1,40.2,38.7,50.4,39.7,39.7,37.0,41.2,40.8,43.4,38.5,43.9,41.1,40.5,40.6,40.4,40.1,42.7,50.0,39.7,38.8,41.6,42.6,37.9,40.3,41.3,38.2,43.6,39.3,39.3,40.4,40.3,38.0,42.3,38.5,39.0,37.8,41.4,44.3,40.5,41.1,44.1,39.2,37.9,42.7,42.1,39.5,42.5,38.0,43.2,41.4,41.7,45.9,41.4,37.9,44.9,39.6,40.1,42.7,41.4,42.0,41.5,41.9,41.8,43.6,39.3,37.6,48.3,40.8,40.2,37.1,56.3,38.9,45.0,41.7,39.0,40.9,41.8,45.1,40.5,41.8,40.6,45.0,43.7,38.3,38.9,39.6,38.9,41.9,42.8,41.9,41.5,43.2,41.8,41.4,37.5,42.6,44.2,59.4,41.3,40.7,40.4,36.8,41.1,42.4,42.2,44.2,38.7,40.0,44.0,42.3,38.8] + }, + { + "position": 36, + "values": [164.4,116.3,165.0,162.4,134.8,110.2,167.1,157.2,169.2,155.4,161.0,118.9,141.0,153.9,139.5,178.6,164.9,166.3,167.8,173.7,147.3,163.2,156.9,167.7,171.8,165.8,155.3,166.3,159.3,171.5,171.6,154.1,147.5,148.9,162.7,159.6,165.1,163.1,148.3,169.8,158.2,164.9,169.5,162.5,160.1,173.8,154.7,163.0,154.8,158.4,128.7,155.0,165.1,156.9,168.9,144.1,164.2,146.3,153.9,169.3,167.5,127.1,168.9,153.0,153.0,168.4,153.4,156.0,152.0,157.4,159.7,170.9,148.3,146.9,172.9,110.5,162.8,144.6,168.0,158.0,170.7,168.1,121.5,178.8,154.9,159.6,154.1,153.6,164.0,150.7,162.0,152.7,151.5,174.5,151.2,170.5,155.1,159.6,109.4,166.2,158.7,168.6,157.8,173.5,154.3,161.5,145.0,153.4,155.6,177.6,168.1,162.7,173.7,160.5,164.4,156.8,158.9,156.0,162.1,166.1,147.4,172.0,157.8,161.4,155.7,163.9,153.9,150.7,151.1,170.1,161.1,140.2,160.7,160.1,150.2,147.2,159.7,164.7,130.2,159.2,154.0,161.0,161.6,161.1,137.5,153.7,155.8,158.3,171.7,156.9,164.0,169.8,155.8,151.3,134.4,161.3,140.2,167.0,154.2,156.1,157.6,165.3,162.0,157.6,149.2,156.4,157.2,171.1,160.1,169.3,153.9,182.1,150.1,174.5,144.5,155.4,158.8,161.5,165.4,155.2,164.2,166.1,185.8,102.3,145.7,161.0,135.0,158.7,146.9,156.8,154.6,178.0,158.3,158.9,167.0,160.5,157.3,154.6,156.8,161.8,152.1,109.5,171.6,124.5,172.7,156.1,151.5,174.5,164.3,146.4,163.1,151.6,107.0,151.7,156.2,158.6,170.6,155.9,173.1,131.0,173.3,153.9,160.5,162.5,166.5,173.9,155.3,168.7,166.6,130.8,124.3,144.3,159.5,170.4,153.6,157.4,152.8,175.6,167.5,160.6,152.2,147.8,162.2,161.1,151.7,160.7,136.6,154.2,150.8,154.4,112.7,156.7,172.1,159.7,165.2,168.9,152.7,156.0,151.2,150.5,175.4,162.7,149.1,153.5,164.3,158.7,109.1,171.1,166.6,171.9,170.3,165.3,158.6,150.6,151.2,169.3,164.0,160.4,145.5,164.5,172.8,171.7,160.3,124.0,147.4,146.0,182.3,158.8,149.2,163.8,154.9,163.9,174.0,163.4,156.7,148.6,147.8,167.7,169.2,172.2,167.8,170.9,164.1,80.1,151.3,141.4,163.8,165.7,150.2,153.0,169.5,165.4,151.0,167.3,148.5,162.3,157.9,147.1,149.2,151.6,158.5,169.6,158.3,166.6,155.8,154.1,166.7,156.6,163.3,170.5,147.0,164.1,170.5,172.2,155.6,161.0,129.8,156.5,166.0,150.1,98.6,166.3,153.9,171.0,171.1,175.5,166.2,155.5,164.1,172.8,149.1,176.5,147.7,161.2,161.8,148.2,149.6,167.1,139.7,176.0,160.0,170.2,122.8,152.5,157.8,159.1,155.3,159.1,164.8,168.4,163.2,174.4,151.5,170.7,132.5,118.2,171.2,174.6,163.0,161.7,162.0,113.7,172.8,157.6,171.3,165.0,162.2,161.0,156.3,155.4,150.1,171.3,170.3,164.4,129.8,154.8,165.1,171.3,165.3,144.5,108.2,161.4,168.5,157.6,180.3,157.0,157.9,170.7,154.6,149.0,152.7,107.9,157.0,156.4,158.1,152.5,138.8,153.7,161.9,175.2,151.7,165.9,146.7,148.7,160.3,155.0,156.2,166.2,162.0,152.3,171.7,154.4,151.9,156.3,152.0,161.8,160.0,151.9,174.8,150.3,155.9,153.9,168.8,98.4,174.3,156.0,162.4,155.8,168.7,164.7,159.1,159.0,170.4,160.4,154.1,150.5,158.8,155.0,161.2,149.8,159.2,109.3,161.4,163.3,151.1,158.2,157.1,168.5,156.6,147.1,160.1,175.0,139.1,149.1,151.7,167.1,152.4,146.0,148.7,156.6,165.3,165.9,174.0,107.3,157.7,171.5,165.3,165.4,154.9,170.7,152.4,155.4,168.0,158.6,158.3,174.6,155.9,155.3,137.5,152.6,160.0,158.6,131.4,149.5,166.6,161.9,166.6,155.8,159.1,165.8,162.1,150.9,173.0,149.2,152.1,144.3,123.2,171.1,163.8,156.3,168.8,156.8,176.4,154.7,169.9,128.1,167.7,166.3,170.2,158.8,152.6,158.6,177.4,158.3,163.7,120.7,147.9,163.3,162.6,155.8,158.8,156.8,160.3,153.7,147.6,161.2,167.9,170.6,172.9,136.0,153.7,143.7,165.9,167.1,160.5,161.4,150.1,148.9,158.2,172.5,157.9,157.6,106.7,155.6,150.3,161.0,169.0,170.6,135.6,161.3,154.9,177.3,177.6,157.7,158.6,168.1,156.4,168.8,149.8,173.5,165.0,168.9,156.5,161.0,160.4,158.7,162.8,145.0,169.8,149.8,168.0,169.0,159.4,163.9,160.7,162.2,157.5,170.8,158.8,151.1,150.9,164.1,168.3,169.2,113.4,171.1,154.4,167.2,169.6,164.1,175.1,159.4,153.9,136.7,167.2,160.7,155.3,168.5,165.3,152.5,166.3,162.7,173.9,166.4,153.3,159.5,151.2,157.1,154.9,168.0,157.7,159.5,170.1,148.0,112.7,144.3,156.2,122.9,167.5,115.5,159.4,168.9,171.5,175.2,147.0,165.8,147.0,165.3,132.0,170.4,157.0,158.9,158.6,142.0,165.8,171.2,172.6,156.7,166.2,160.8,155.4,165.8,152.7,139.4,142.1,156.4,171.4,151.1,155.5,183.7,142.0,169.9,168.7,163.1,164.7,155.7,161.6,153.7,157.7,150.6,161.8,156.0,154.3,162.4,156.1,117.0,174.1,155.8,161.6,168.0,168.5,168.2,142.4,144.2,145.5,150.9,152.9,171.0,146.4,177.1,153.1,152.4,124.1,165.3,163.7,171.5,154.9,153.1,147.1,154.5,161.7,137.6,171.4,171.9,165.3,160.3,163.8,156.8,158.9,166.0,157.4,155.8,149.7,171.4,170.9,168.4,170.8,169.4,163.2,168.0,170.1,152.7,155.9,156.8,170.1,131.9,170.6,171.7,151.3,124.0,170.9,145.1,163.8,152.9,160.5,169.8,169.6,169.7,144.6,142.7,147.9,170.0,149.5,164.6,172.4,110.3,162.9,157.4,169.1,172.1,154.4,157.9,158.6,129.7,147.9,153.5,164.5,109.4,153.3,138.7,163.4,162.7,131.8,143.6,160.0,171.5,148.7,175.8,159.3,165.8,159.6,168.0,163.1,139.1,160.2,163.5,171.1,154.7,168.2,131.7,152.4,156.5,155.3,165.7,169.0,179.0,171.9,166.0,164.6,167.7,163.7,171.8,178.3,152.8,143.8,160.5,161.2,160.4,151.6,110.9,170.8,159.7,158.2,121.1,146.9,168.6,165.7,167.5,172.7,173.1,127.8,161.2,165.0,159.1,151.2,157.8,178.8,172.1,123.7,153.3,145.5,153.6,164.8,109.7,153.0,175.0,168.0,155.9,153.5,152.3,160.3,118.4,149.0,176.3,169.1,153.3,169.4,157.5,172.5,176.0,161.0,166.1,156.1,153.1,154.3,144.0,158.7,166.9,168.1,150.1,154.7,158.4,155.8,151.4,156.6,152.1,166.4,165.1,154.9,150.3,168.2,164.4,153.1,171.4,159.6,150.1,159.0,149.0,154.2,108.7,162.4,159.3,165.8,180.1,164.5,158.9,159.2,146.5,168.9,136.2,167.2,150.5,150.4,109.7,142.2,155.0,160.6,162.2,151.0,160.1,166.2,166.3,169.3,148.6,166.8,134.4,161.6,153.4,168.3,170.8,162.3,153.3,157.3,158.3,130.7,158.5,136.3,170.7,154.9,149.1,161.2,162.6,124.0,169.6,154.7,156.2,160.2,165.6,154.0,155.6,151.1,129.8,164.0,158.2,108.7,162.7,149.7,154.8,166.9,170.6,137.5,153.4,154.2,162.0,150.1,173.3,146.4,160.7,174.1,155.1,164.5,165.6,170.8,180.3,167.9,167.7,151.7,162.1,159.2,150.6,173.6,152.0,152.6,152.9,171.7,173.5,160.3,166.5,168.9,168.5,158.2,149.4,165.3,154.9,165.6,146.9,161.9,156.6,157.6,156.9,165.7,162.0,138.3] + }, + { + "position": 37, + "values": [88.1,107.3,94.5,108.9,103.1,89.9,102.1,105.6,103.4,101.2,105.8,99.8,77.5,104.4,98.4,104.3,98.6,106.1,100.2,110.4,108.2,102.4,103.8,102.2,100.9,105.0,109.1,103.0,98.5,75.9,102.4,98.3,105.4,97.9,88.2,88.4,112.8,109.3,104.2,80.8,96.4,97.7,81.9,89.5,103.9,79.5,107.9,103.7,101.2,103.2,104.4,100.5,98.2,106.2,83.3,111.8,106.0,97.7,88.5,102.4,106.7,110.6,112.7,105.1,100.4,100.1,95.9,100.5,98.6,100.8,107.0,109.6,101.0,98.6,107.4,89.6,101.8,86.1,94.6,102.4,79.3,107.5,102.5,95.3,102.5,106.3,98.2,94.3,103.2,103.8,98.2,105.9,89.8,98.6,94.6,83.6,99.6,99.2,86.5,105.3,84.2,107.3,105.9,89.2,103.2,92.2,91.1,95.1,84.7,100.4,106.6,100.8,104.7,98.2,101.8,106.8,96.6,106.5,96.9,103.5,98.1,105.4,99.5,99.4,103.7,108.5,95.0,99.3,103.1,105.5,101.0,109.6,109.5,99.6,96.7,105.8,103.0,108.5,90.2,92.7,105.8,98.7,91.9,107.3,79.3,104.0,99.4,104.0,106.2,107.4,100.7,93.2,107.1,105.5,90.2,98.6,108.9,86.9,101.9,112.5,102.7,104.5,107.3,90.3,109.4,107.2,106.3,104.0,97.9,101.3,105.3,100.9,94.0,105.8,102.0,103.6,104.3,85.9,97.5,100.2,104.9,77.1,39.9,91.5,86.7,83.0,83.6,104.6,89.1,96.0,99.9,103.9,90.9,105.7,101.3,103.2,97.8,94.3,96.8,103.8,99.1,91.1,97.5,73.1,98.2,100.0,97.7,102.1,104.5,110.2,102.3,99.8,104.9,89.8,103.4,101.1,109.0,104.7,101.8,98.4,85.8,107.3,94.8,91.1,105.1,89.3,100.0,102.1,107.4,105.3,102.0,104.0,98.5,104.1,101.7,103.3,91.4,98.3,92.8,105.2,99.8,104.2,95.0,104.9,88.4,96.8,88.6,102.0,93.7,111.2,66.8,101.5,101.0,105.3,101.2,91.6,100.5,102.5,92.3,84.9,108.5,93.4,89.8,102.6,100.1,97.5,106.0,81.5,90.2,106.3,92.7,105.0,96.7,97.2,98.3,107.7,97.2,105.2,95.9,105.5,101.6,106.1,83.3,99.3,95.8,84.8,87.3,97.5,105.5,106.4,108.3,100.6,105.5,105.5,105.7,101.6,107.2,105.0,91.7,111.0,89.1,102.9,88.1,94.4,104.1,102.7,104.0,93.0,81.3,107.4,106.9,101.8,93.1,90.6,101.7,91.7,106.9,101.7,109.6,95.1,106.5,86.7,103.1,104.3,98.4,108.2,98.0,112.3,93.2,86.7,105.0,103.9,96.0,104.4,99.3,102.1,89.6,103.3,98.6,96.5,87.4,80.9,87.6,80.1,111.0,109.6,103.1,94.8,107.8,107.4,106.2,108.4,101.4,104.3,90.7,107.1,106.7,95.4,105.2,104.9,107.2,83.6,85.5,92.5,104.9,102.2,109.1,100.9,85.4,75.3,99.9,89.8,105.0,104.9,68.1,84.8,107.3,87.1,101.5,87.9,103.5,91.7,88.4,102.9,103.4,91.5,105.7,99.4,91.6,97.8,101.0,104.7,100.2,105.4,96.0,115.9,105.4,106.3,55.5,103.0,89.7,100.8,96.9,88.4,78.4,90.3,100.5,107.5,103.4,85.4,99.0,108.1,90.9,103.8,112.0,95.8,99.7,108.2,101.4,106.8,95.8,97.8,82.4,90.9,88.3,102.2,94.0,104.9,85.5,81.9,81.4,99.5,104.0,99.3,94.7,92.6,101.5,92.8,105.0,105.8,99.7,97.2,83.6,86.0,106.4,96.7,92.8,85.8,87.5,108.4,103.8,104.1,109.8,105.6,95.6,72.7,104.8,99.5,105.9,89.7,103.6,91.4,92.3,98.4,105.7,94.9,87.9,99.4,104.9,83.2,107.6,108.8,88.0,98.2,105.6,73.8,93.6,92.6,85.0,94.0,108.3,100.8,85.5,90.1,91.8,104.9,87.4,102.9,84.5,98.5,100.7,91.3,86.6,99.6,103.3,34.2,104.3,85.9,86.0,78.5,104.3,91.3,86.5,105.6,107.2,103.3,105.0,86.0,87.1,95.5,94.0,86.8,107.1,101.2,103.7,94.0,93.0,100.4,101.2,99.2,99.9,106.9,87.8,93.3,86.8,87.7,103.1,102.7,103.5,105.4,105.6,96.2,138.6,100.4,104.7,101.4,87.3,100.3,101.5,101.6,94.4,97.9,104.4,104.6,101.1,104.1,105.0,105.2,85.6,89.8,97.0,110.3,84.3,106.1,98.1,93.7,92.3,102.4,98.2,102.4,107.4,94.7,90.3,85.9,97.1,98.0,103.1,96.0,106.5,101.4,85.7,109.1,96.4,104.2,94.9,101.8,89.9,92.2,101.3,106.5,91.4,106.9,102.1,106.2,105.6,97.2,87.8,102.5,104.4,91.6,91.1,106.2,103.5,101.6,90.9,112.3,91.3,100.8,106.4,89.2,98.2,100.6,87.8,109.2,74.8,107.0,103.6,103.0,103.9,103.2,106.2,106.3,100.8,109.6,100.1,90.1,98.5,102.6,88.2,108.1,120.4,108.7,108.4,106.4,96.0,105.5,95.5,103.2,107.1,98.7,99.7,99.7,103.4,89.9,89.8,101.4,107.2,82.7,94.8,80.6,107.0,80.0,89.3,98.8,105.9,107.9,102.7,90.5,86.1,107.1,109.5,100.6,104.8,102.7,101.0,107.1,103.9,98.0,103.2,83.7,101.8,100.5,92.3,102.0,103.1,105.0,99.6,81.9,101.3,99.8,80.0,80.8,86.1,107.2,87.0,86.4,90.1,91.2,86.5,94.5,79.9,83.2,99.4,88.1,95.5,86.2,105.7,93.4,103.5,105.6,85.9,108.0,81.3,104.1,100.0,88.3,106.1,76.6,104.3,107.8,104.1,87.1,86.5,87.4,103.2,93.2,99.6,106.6,93.2,94.6,107.4,95.6,107.6,107.3,70.0,94.8,87.3,86.8,92.3,102.9,87.7,82.0,102.4,106.9,93.1,107.2,103.7,99.4,103.3,86.5,89.3,115.1,103.1,104.7,105.8,100.4,104.4,105.9,86.6,86.8,105.2,90.5,99.0,106.6,104.0,105.9,106.7,100.3,86.8,86.7,99.4,89.5,102.4,81.3,104.8,90.9,107.7,104.5,100.6,116.1,103.7,91.7,103.1,89.7,90.3,88.5,103.1,100.2,90.6,105.0,103.7,104.4,106.1,107.1,105.0,106.4,92.8,93.9,98.8,76.0,102.6,105.0,99.6,104.1,104.3,107.9,105.0,105.3,106.6,105.3,93.8,98.0,104.4,85.5,80.2,95.8,96.4,94.4,72.9,105.6,95.9,105.2,93.2,88.6,87.1,105.8,91.8,100.7,89.5,99.4,105.0,101.2,88.7,92.5,102.4,107.7,103.0,109.5,107.4,100.2,109.2,84.8,102.7,99.1,106.0,103.9,112.1,105.0,104.1,109.1,99.7,101.5,101.9,91.6,99.5,109.8,106.7,89.5,91.9,105.8,89.9,65.0,90.0,107.9,102.4,104.4,103.9,100.7,103.1,95.2,104.3,103.9,104.1,106.3,88.0,104.1,105.3,80.9,101.5,76.3,93.3,94.4,99.3,95.5,68.6,102.3,96.5,105.0,108.0,93.6,100.7,88.5,102.4,102.1,97.5,90.5,102.4,100.7,102.8,89.8,108.9,87.1,102.4,96.2,85.1,93.1,106.4,83.2,104.6,92.6,97.3,105.9,101.6,90.4,103.6,87.3,103.4,101.1,92.5,109.3,96.3,89.3,109.3,81.1,90.3,86.7,103.5,99.0,103.7,103.0,101.2,95.5,84.4,106.7,86.8,95.8,96.7,104.0,105.3,100.4,98.3,110.7,101.9,84.4,79.9,89.6,106.5,105.5,107.0,105.8,105.1,96.0,109.0,105.7,89.0,108.5,108.5,103.9,100.3,82.0,90.1,108.2,87.3,102.1,103.6,99.0,92.3,97.0,99.8,90.6,102.8,109.1,105.3,101.8,106.6,94.6,99.9,91.7,109.6,106.9,94.2,100.5,100.0,96.9,106.6,92.4,104.6,89.9,94.0,99.8,73.0,95.9,109.0,98.2,96.9,103.4,103.4,96.3,98.5,89.3,97.7,109.3,98.3] + }, + { + "position": 38, + "values": [30.2,30.1,28.6,29.9,32.2,32.2,28.9,29.4,30.4,32.0,29.2,24.7,31.0,29.7,31.1,30.7,27.8,29.5,27.8,31.2,27.6,29.8,29.6,26.9,28.9,28.4,31.3,29.8,27.5,28.5,29.6,27.5,28.7,30.9,26.8,27.3,33.7,33.6,28.8,26.4,31.0,27.7,28.7,29.0,26.4,28.5,29.6,28.3,31.6,30.3,31.3,30.6,29.4,31.6,29.8,28.9,31.1,29.6,31.7,32.6,28.4,31.2,27.5,31.4,28.9,29.5,29.8,30.0,31.7,28.0,36.4,29.0,30.2,30.6,31.4,32.2,31.5,28.3,29.2,31.6,28.1,29.7,30.8,28.0,28.8,30.3,29.2,28.0,28.6,31.5,25.4,30.0,28.3,32.1,28.8,28.0,30.4,28.7,31.8,30.5,29.1,28.7,28.8,28.6,29.8,29.2,30.2,28.9,31.2,27.8,28.9,28.5,27.2,28.4,30.9,29.0,29.0,29.6,31.0,28.9,29.4,29.0,28.7,25.7,31.7,31.8,32.4,29.7,29.2,28.0,30.3,28.9,32.4,29.2,29.3,29.2,29.2,29.8,28.4,30.6,28.1,28.3,30.4,28.6,24.0,28.0,30.1,28.4,30.1,29.7,26.7,28.2,31.1,32.9,28.4,27.3,31.8,29.4,27.6,31.5,29.4,30.0,28.4,29.0,29.4,32.8,31.7,28.5,29.8,28.7,28.9,32.1,28.9,28.6,27.6,28.8,28.6,29.0,27.8,31.4,32.1,30.3,19.7,22.8,30.0,28.8,22.5,30.1,30.5,29.1,28.7,30.3,31.1,32.6,29.7,28.2,30.7,30.7,28.3,28.6,30.2,32.8,28.3,36.4,31.6,28.3,27.6,29.7,31.2,28.5,27.5,32.6,32.7,32.7,31.1,27.7,28.6,32.2,29.2,27.5,26.6,29.4,28.5,28.6,30.0,27.5,26.6,31.4,31.6,28.6,28.8,31.7,27.8,29.6,31.1,28.2,29.1,29.0,30.7,28.9,31.7,31.6,30.0,29.0,30.5,30.0,28.0,29.2,30.7,14.2,29.5,30.5,27.0,29.3,29.6,29.6,27.3,28.0,31.3,29.0,21.6,29.9,31.2,31.9,28.2,27.4,26.6,32.8,29.7,28.9,28.8,27.9,32.2,31.6,28.0,31.6,32.0,27.9,29.2,29.3,28.8,27.9,24.7,28.9,30.2,31.7,28.4,29.4,27.7,30.4,28.6,28.7,29.7,28.2,31.3,30.4,31.7,29.8,28.9,28.3,26.7,28.9,32.1,31.1,27.6,32.3,29.2,31.6,29.5,31.7,28.3,29.7,31.0,30.2,31.4,28.6,29.6,27.8,31.1,30.2,27.8,30.1,36.7,28.7,33.2,29.6,28.0,29.1,31.9,26.4,31.8,30.9,30.5,28.6,30.9,31.3,29.4,32.1,27.1,29.6,25.1,28.3,29.7,27.9,32.1,28.3,27.2,28.4,32.3,29.1,29.7,28.6,28.2,25.0,30.8,28.8,28.9,28.0,30.9,29.7,31.7,27.4,30.1,28.0,29.1,29.4,35.2,29.6,31.6,28.7,28.0,28.3,28.3,28.5,24.2,27.4,28.6,30.6,28.9,28.2,30.4,34.5,30.9,32.3,28.4,28.2,29.3,28.6,29.2,29.2,31.5,30.4,29.8,29.1,30.8,31.2,28.6,29.9,29.0,27.9,32.4,30.4,27.7,28.8,27.3,21.1,32.3,28.8,30.5,27.9,31.7,33.3,30.3,30.0,33.4,31.9,29.7,30.1,28.3,27.7,31.4,29.7,27.2,30.1,29.0,29.3,29.3,28.1,29.0,33.3,28.8,27.8,31.3,28.6,28.8,29.1,27.4,31.8,29.0,30.7,28.6,30.7,29.1,35.5,29.2,31.1,29.1,26.2,27.0,27.9,28.7,26.5,31.6,30.4,33.3,30.5,27.9,31.2,28.3,30.0,29.9,32.7,29.3,27.0,30.7,32.6,24.4,31.4,29.3,26.5,26.4,29.6,28.4,23.7,28.9,27.8,29.8,28.5,29.7,31.0,28.4,33.7,28.6,33.2,23.7,27.7,29.3,26.1,28.8,29.0,30.9,29.9,26.3,30.6,26.9,21.4,31.6,28.8,31.6,31.5,27.7,30.9,29.8,29.0,31.1,28.4,31.2,31.9,29.6,26.9,21.6,27.8,28.2,32.0,30.1,28.7,27.7,24.3,29.7,29.1,29.3,28.8,29.6,26.4,27.6,30.4,26.8,28.0,28.7,29.7,31.6,31.6,30.8,32.3,29.5,29.8,31.4,30.3,27.9,27.4,29.0,30.5,29.3,28.0,28.4,30.8,29.7,28.4,28.6,32.5,29.8,28.5,29.0,28.7,27.9,30.4,29.8,28.5,29.1,30.1,30.4,27.7,33.0,31.1,28.0,27.6,26.4,28.0,28.3,27.8,30.4,29.3,28.2,30.5,29.1,27.5,30.7,30.3,28.1,28.8,30.4,29.5,28.3,31.3,28.4,26.8,27.9,28.4,27.9,30.6,28.2,29.0,28.0,28.7,26.1,33.5,29.0,28.2,31.1,29.7,31.5,28.1,28.0,28.6,23.1,28.1,31.8,27.6,29.4,32.3,31.8,29.7,31.6,31.1,28.5,30.1,29.2,27.6,28.6,26.2,29.6,45.5,27.9,28.2,28.4,30.2,26.5,27.7,27.8,31.2,31.0,29.1,28.8,28.4,30.8,28.2,28.4,30.1,26.2,29.1,31.0,28.1,29.3,30.8,29.0,28.3,28.7,31.4,27.6,32.8,31.5,29.7,29.3,30.3,28.9,28.1,27.9,31.6,28.2,32.1,27.5,30.2,30.0,30.3,30.4,32.0,29.1,30.1,29.4,21.6,28.8,28.7,26.6,29.9,37.7,26.1,28.5,30.2,29.2,30.6,25.4,32.4,30.4,29.3,31.1,31.2,29.5,29.1,28.5,27.3,28.5,30.1,28.3,29.3,30.0,28.8,30.0,26.5,28.9,28.3,31.4,30.4,30.5,28.6,29.9,27.7,30.7,31.1,31.5,28.5,28.5,30.1,31.1,29.7,22.3,29.1,27.9,31.2,25.8,28.8,29.6,31.2,28.7,28.8,29.9,31.1,28.3,27.8,29.7,26.4,27.6,31.3,28.3,32.2,28.5,30.7,27.8,28.6,29.8,30.3,29.1,29.3,29.2,31.1,28.9,29.0,28.4,27.4,32.1,33.0,28.9,28.1,32.1,27.4,28.1,29.0,32.2,28.1,29.3,26.8,27.9,31.4,30.5,28.2,28.8,31.0,29.4,32.1,27.9,29.5,27.2,28.9,30.4,30.6,27.4,29.1,28.8,31.4,30.7,29.6,28.8,29.3,27.4,30.1,28.4,29.2,31.8,29.0,32.2,31.8,28.5,31.4,28.1,23.8,28.0,27.7,28.7,31.2,27.2,27.6,26.4,28.1,29.0,24.1,29.7,27.9,29.3,29.2,32.7,32.7,31.0,28.6,32.2,30.3,26.4,28.9,27.2,27.9,29.4,29.3,28.4,28.1,30.7,28.1,31.7,31.3,28.0,27.5,30.6,30.4,28.7,27.9,28.7,31.6,31.8,34.1,28.6,28.6,30.3,26.9,14.3,30.3,29.1,28.0,29.3,28.9,29.1,30.7,28.7,28.3,28.6,28.6,30.5,29.2,28.6,32.3,28.8,27.4,28.7,30.3,30.8,29.4,27.4,32.4,31.9,27.9,31.1,32.8,29.4,31.0,28.3,27.9,30.2,28.8,25.1,28.2,29.3,28.0,28.3,32.5,28.5,26.3,30.7,29.2,28.6,30.5,28.6,29.5,29.4,28.0,33.4,28.5,28.4,32.3,28.3,28.5,29.0,27.1,31.2,29.9,27.8,28.1,23.8,28.5,30.3,28.9,28.8,28.7,28.3,31.2,27.8,30.1,31.0,28.4,29.7,31.1,30.4,28.7,30.9,27.8,30.2,29.6,30.5,30.5,26.9,27.6,33.7,28.8,29.4,28.8,31.7,31.4,28.8,28.9,32.4,28.3,28.8,28.0,32.4,28.8,29.4,28.3,37.8,29.0,30.9,29.0,28.1,28.7,29.5,30.8,28.9,29.5,27.0,30.9,30.0,27.3,28.2,26.2,28.2,30.6,30.2,29.3,30.4,31.0,26.2,29.0,27.0,28.8,31.9,29.3,29.0,30.7,29.6,27.6,28.8,31.4,29.3,28.7,28.6,27.1,29.6,31.2,29.8] + }, + { + "position": 39, + "values": [173.1,170.4,162.4,145.8,148.3,155.6,140.0,164.0,124.6,138.8,163.3,144.8,113.3,175.8,119.8,118.1,163.2,150.8,156.6,175.2,150.0,159.6,157.2,137.0,152.9,171.1,101.3,168.3,157.8,157.1,177.0,139.8,173.6,124.5,147.9,136.9,175.1,116.2,107.6,161.4,152.7,136.7,154.0,124.5,158.1,149.5,155.8,166.7,136.4,159.3,159.2,121.1,133.6,147.6,126.0,120.8,109.5,155.1,167.6,132.5,151.8,150.0,165.9,177.9,136.1,167.8,137.7,141.6,120.9,157.5,143.2,170.3,164.9,126.9,165.1,144.7,161.8,134.4,152.6,139.0,150.7,165.7,168.2,172.0,172.4,160.4,112.5,157.4,173.0,101.1,127.2,117.9,149.0,122.6,123.4,151.6,118.2,158.7,178.8,165.5,115.2,176.6,147.6,143.6,161.3,162.1,124.6,138.7,152.9,160.7,154.1,148.9,177.8,172.5,168.0,151.4,161.0,174.0,118.3,152.9,162.8,138.2,123.0,129.4,175.6,157.6,125.8,120.9,163.5,158.6,151.7,161.9,134.5,143.1,123.7,156.2,128.9,171.8,154.5,159.7,136.9,147.4,113.3,162.0,114.2,172.1,130.8,157.6,148.0,161.0,168.7,149.8,130.7,128.5,127.8,162.8,173.7,126.4,170.9,160.8,162.9,174.2,159.7,132.3,153.5,169.6,127.1,171.6,157.7,151.1,168.1,157.8,161.2,149.5,157.3,163.4,157.1,124.5,164.9,141.3,158.4,140.2,178.1,92.2,176.3,151.8,80.3,153.1,154.8,130.3,160.3,89.3,143.9,132.4,147.1,159.7,119.2,169.1,130.2,175.9,136.4,159.2,174.2,169.3,180.6,172.3,167.1,138.2,137.8,156.6,148.4,151.4,179.8,146.9,161.0,147.0,181.8,130.2,139.5,158.2,132.4,159.2,130.0,167.6,147.0,167.4,161.1,86.8,152.1,171.2,155.5,172.0,158.2,163.1,120.3,154.4,179.4,118.6,133.4,169.3,125.8,179.1,154.2,169.9,175.4,110.5,147.2,156.5,138.6,50.8,111.6,180.7,179.0,167.0,157.0,163.3,158.6,158.6,130.1,172.8,175.4,117.8,146.5,92.6,171.1,154.5,169.1,158.1,167.5,148.9,167.5,171.7,151.7,132.3,133.3,175.0,131.1,147.6,151.6,153.0,176.3,161.9,179.8,154.6,120.4,94.9,118.0,160.8,160.3,173.4,160.4,168.1,166.6,174.9,116.4,148.3,167.5,163.8,167.5,144.1,53.1,151.3,153.9,118.3,171.0,107.4,165.5,153.4,141.9,168.8,175.5,158.3,141.2,160.6,133.0,148.0,148.6,150.6,165.8,125.6,146.1,129.3,151.5,156.6,139.9,164.9,181.8,157.6,121.8,142.3,161.1,170.3,142.6,140.1,152.8,139.4,166.8,141.1,120.4,131.8,147.9,153.6,127.5,171.8,147.9,179.0,158.1,134.8,109.1,149.6,166.3,174.1,156.9,173.0,136.1,156.7,161.1,181.7,162.9,174.8,171.8,125.7,132.6,128.8,173.6,144.9,157.3,147.5,142.6,144.4,161.0,180.8,173.1,122.6,103.8,156.8,166.2,169.0,147.3,150.1,158.9,179.1,138.0,123.5,148.1,148.2,176.8,181.9,129.5,119.4,133.0,134.3,126.8,168.7,154.2,127.5,148.9,158.3,76.7,98.0,158.7,133.0,61.9,120.9,170.1,142.9,123.5,172.2,130.4,177.8,122.8,154.9,164.8,115.3,114.3,121.7,173.4,138.1,149.8,179.3,128.0,90.8,143.4,125.7,149.5,165.9,123.5,175.0,170.9,163.1,151.9,170.7,150.1,164.4,116.0,142.0,167.0,174.7,165.2,179.1,132.3,139.9,138.5,100.7,168.3,127.6,165.9,132.3,84.9,163.0,160.6,145.4,151.4,155.5,119.4,128.4,156.7,122.3,151.8,125.7,130.8,159.2,133.7,134.1,165.6,161.9,136.8,166.4,120.6,131.6,53.4,177.4,150.4,135.0,154.6,140.0,137.9,125.5,160.0,129.3,139.1,166.6,154.8,162.5,163.5,175.3,145.4,141.8,168.5,129.3,129.7,169.3,111.6,125.7,176.4,144.7,126.6,139.1,151.8,140.9,159.3,139.9,147.9,158.1,165.1,138.9,182.2,140.9,155.0,150.9,138.2,131.7,174.7,129.8,180.3,123.9,153.1,163.5,110.0,49.5,159.5,144.0,112.1,130.2,166.0,108.0,162.0,153.5,132.4,157.2,152.5,130.2,152.3,159.4,130.3,176.9,121.1,129.8,164.7,176.4,158.2,120.2,160.7,157.3,167.6,157.9,148.6,159.4,165.9,150.6,147.0,157.9,163.9,169.5,162.5,124.2,176.5,164.0,115.7,143.0,139.8,147.2,163.1,134.7,157.2,155.3,165.4,182.8,171.4,154.7,157.5,190.1,169.4,157.6,148.5,132.1,134.6,132.5,165.7,157.5,152.7,124.3,157.8,139.4,158.2,151.0,168.0,151.3,167.4,170.7,130.9,144.7,167.7,146.1,125.5,171.3,138.3,167.8,162.1,126.9,157.6,130.2,138.8,159.7,109.3,162.4,157.4,133.3,148.6,182.4,37.6,178.5,136.9,152.9,163.4,145.8,130.0,144.2,167.5,151.5,148.8,164.6,159.8,168.1,121.2,160.8,155.5,156.9,172.2,156.1,121.3,164.6,138.6,155.5,127.7,139.6,178.4,145.9,155.2,147.4,163.2,156.7,164.4,169.5,146.3,157.0,158.7,140.8,112.5,152.2,131.2,137.0,155.1,166.8,155.2,142.8,166.8,128.3,158.9,169.1,139.0,157.7,136.7,149.1,166.2,142.0,145.2,133.5,159.7,163.7,139.3,153.7,120.5,149.7,145.8,125.3,169.0,127.6,171.5,113.3,131.1,143.0,159.1,124.0,130.7,173.0,159.9,140.2,163.0,138.1,166.9,162.1,172.4,167.6,178.5,103.1,117.6,156.7,157.3,155.0,172.2,131.5,137.7,180.7,140.8,145.4,119.1,178.6,161.7,121.0,159.8,145.4,166.7,36.0,151.3,154.3,135.0,136.0,127.9,148.7,151.1,166.9,159.6,173.1,125.9,149.6,164.9,150.8,145.0,166.0,173.6,179.9,174.2,123.7,171.3,152.3,64.6,170.7,136.0,134.9,163.6,139.4,170.6,131.2,156.6,157.5,163.6,172.8,171.1,161.0,42.6,155.0,145.1,126.7,173.8,158.2,171.3,157.0,132.0,178.9,127.3,156.1,157.0,149.1,178.8,113.1,166.2,158.4,157.5,117.2,155.6,167.4,165.2,165.9,174.9,167.8,167.2,167.5,113.9,125.5,160.3,150.7,150.2,160.9,147.4,173.9,148.9,176.1,150.6,136.8,149.3,136.5,156.4,133.6,183.1,161.4,139.1,130.0,125.0,162.3,169.2,138.0,140.1,159.3,147.7,153.8,117.1,158.2,178.6,126.8,170.0,163.1,113.5,45.9,128.6,178.3,168.3,168.1,181.0,165.0,138.9,161.6,127.7,169.6,167.2,176.5,174.4,147.3,151.1,172.0,156.2,160.3,156.8,159.2,132.3,124.1,163.1,139.9,160.7,157.4,168.8,159.8,54.1,157.4,177.2,150.4,164.0,129.5,141.5,180.8,176.4,158.7,156.0,160.9,179.1,153.1,159.5,158.0,162.4,121.9,130.4,158.2,116.2,127.9,151.5,170.4,172.2,161.5,139.4,131.0,174.6,174.7,119.8,161.8,50.8,120.8,182.2,158.9,166.4,157.5,140.6,127.9,125.5,156.0,126.3,161.3,165.2,177.4,161.9,171.3,179.1,152.0,113.8,159.2,146.2,157.1,164.5,158.3,123.5,159.2,142.9,163.3,160.2,152.3,145.1,152.0,166.3,158.8,164.9,167.1,154.0,154.8,138.0,180.1,136.4,125.3,167.6,130.7,176.0,157.9,128.8,174.4,174.6,138.6,122.0,180.6,184.8,179.0,159.9,171.5,127.3,153.5,148.5,122.5,165.5,157.7,156.9,158.8,131.1,155.9,115.5,173.8,168.1,123.2,162.4,120.9,140.6,166.7,126.4,108.8,152.6,163.9,171.1,121.9,173.7,148.7,177.9,104.0,157.7,146.3,183.9,131.4,129.0,123.9,146.0,160.3,166.0,118.7,128.8,135.3,178.1,134.5,152.3,156.7,170.0,162.8,165.5,106.3,124.3,157.4,162.8,171.1,155.2] + }, + { + "position": 40, + "values": [58.1,64.1,54.7,51.7,62.7,50.3,52.1,49.1,54.0,53.5,48.1,77.5,50.9,80.0,52.2,80.7,67.9,58.3,65.0,69.9,67.7,56.2,69.4,64.8,55.3,63.0,55.4,54.2,48.7,58.2,47.6,51.9,56.1,58.6,51.4,60.8,80.9,61.1,76.5,50.5,62.2,75.0,58.3,62.2,62.4,77.1,72.7,55.1,52.5,57.0,50.2,76.6,53.7,52.9,55.2,45.6,81.1,54.5,56.8,55.4,54.5,47.4,53.6,58.2,54.3,50.7,54.5,53.2,61.8,49.7,45.7,62.1,52.1,52.6,70.4,50.1,70.9,59.0,56.7,51.7,53.4,68.9,62.3,61.5,50.8,64.5,77.2,49.5,74.7,53.6,55.1,45.4,42.3,57.3,76.4,50.7,79.0,58.7,50.4,63.1,57.3,51.2,55.6,69.3,52.3,51.4,68.0,80.2,53.5,56.7,54.3,64.3,45.2,67.6,51.8,63.7,67.8,60.8,55.4,58.0,53.9,61.6,69.0,63.5,72.9,69.2,74.9,53.1,45.5,53.7,46.0,63.3,51.5,78.0,58.0,66.0,82.3,62.4,51.5,45.6,58.2,61.7,53.5,67.8,59.5,55.9,50.1,63.2,51.6,64.8,51.8,50.0,78.1,52.7,60.1,66.8,47.1,79.5,48.0,53.0,60.3,61.7,52.1,60.8,69.8,54.2,47.1,61.7,48.5,50.6,54.2,50.8,53.3,51.5,66.8,48.7,67.1,56.5,62.0,55.6,65.7,56.6,55.3,56.8,121.2,60.4,56.0,77.0,78.2,51.3,62.1,54.0,74.9,54.6,53.2,85.1,54.0,47.7,80.5,69.4,58.6,50.5,64.1,62.5,59.6,48.2,58.3,66.5,62.3,49.6,64.8,75.2,52.0,58.5,57.4,53.4,53.1,56.7,49.4,55.3,63.5,80.5,49.8,61.7,66.7,52.9,82.4,46.5,53.3,59.3,50.9,54.8,48.1,62.9,54.7,57.2,46.3,59.6,49.0,54.7,61.7,57.5,53.7,54.4,54.8,60.2,77.5,62.7,82.8,57.8,78.3,67.0,47.4,51.2,52.8,73.7,65.7,76.1,54.0,61.9,62.8,52.1,51.9,48.8,67.9,66.2,59.3,54.9,66.9,56.9,53.7,64.7,54.8,52.9,66.0,55.3,48.6,49.7,53.4,67.2,61.4,50.3,51.9,44.6,63.1,40.9,69.6,69.6,77.8,59.9,60.5,67.2,66.4,60.2,78.2,56.5,52.7,49.2,65.5,70.7,54.2,60.3,49.2,58.4,52.7,52.1,66.5,52.9,49.5,61.9,55.3,48.0,55.4,81.0,63.3,67.2,50.7,50.3,54.2,57.5,66.7,50.4,49.2,54.7,58.6,66.4,68.5,56.2,56.7,76.4,60.7,62.1,51.4,54.3,52.3,47.3,55.6,61.7,51.3,53.2,52.8,55.7,48.7,60.1,51.7,59.2,77.3,63.4,51.5,52.3,59.0,57.3,58.0,53.7,58.7,63.7,55.5,61.0,48.6,77.9,67.4,72.0,79.0,51.0,85.2,63.1,62.9,58.5,61.4,47.6,58.7,42.3,66.6,73.1,58.8,63.1,67.6,47.0,50.3,78.2,59.5,51.2,42.2,63.3,52.0,72.2,75.0,54.6,81.5,51.3,53.7,55.7,51.5,79.3,56.4,59.4,58.3,70.5,76.4,59.0,71.6,68.5,66.0,42.2,85.0,50.4,55.2,54.7,63.2,79.8,50.7,51.1,51.5,61.1,51.0,56.1,47.4,75.3,80.3,55.8,74.2,45.7,77.2,50.7,58.8,82.1,68.7,54.9,53.8,60.0,51.8,58.2,73.1,60.6,75.8,49.9,84.0,53.0,60.4,75.1,75.7,54.0,85.2,60.0,62.7,76.7,65.7,54.5,46.2,56.8,75.3,54.4,70.7,52.0,52.5,56.5,45.7,48.8,52.5,60.7,58.2,76.3,52.8,77.4,56.1,67.7,47.3,68.5,74.6,52.3,69.5,68.4,49.7,52.1,53.5,53.9,50.8,78.8,73.8,53.3,58.0,51.9,56.5,53.5,50.9,53.4,44.1,66.7,50.1,55.4,53.8,51.4,47.5,50.5,54.4,195.1,54.0,65.4,54.8,57.2,59.3,59.0,46.6,58.7,54.6,83.5,47.1,51.1,61.6,72.8,49.4,66.3,54.6,56.1,77.0,64.3,49.8,66.1,80.0,69.2,51.9,71.9,46.1,66.3,47.8,55.0,61.5,50.4,48.7,63.2,53.6,53.3,65.5,66.6,53.1,51.8,73.7,53.6,65.3,52.1,59.9,49.6,66.8,78.1,49.7,58.0,51.5,57.3,61.9,52.3,49.2,64.0,62.2,56.5,62.3,52.2,52.5,49.2,53.8,52.3,77.3,50.7,74.6,52.9,80.7,60.5,67.2,65.8,47.9,72.8,51.9,63.3,62.5,59.7,68.8,56.4,51.0,62.4,64.3,54.7,51.2,52.3,53.9,74.1,69.2,53.5,60.0,59.0,54.0,52.2,51.1,56.0,47.2,52.0,83.1,50.7,70.0,77.1,75.9,69.1,54.3,49.8,60.4,56.6,60.7,52.5,60.6,44.6,56.2,62.6,73.3,52.9,50.9,64.9,78.4,52.8,51.6,72.4,52.9,52.1,74.3,54.4,48.0,64.3,78.3,60.7,65.1,77.7,66.2,43.6,54.2,51.5,52.0,55.2,47.2,54.5,76.8,55.1,65.9,51.4,66.5,52.4,61.0,60.5,71.4,65.6,60.9,42.2,54.6,53.8,61.6,73.5,49.3,43.4,52.2,60.9,53.1,52.5,82.5,52.9,58.4,61.5,57.2,48.4,58.4,61.3,57.0,51.0,54.0,56.7,60.6,54.8,63.1,60.1,77.3,51.4,53.2,67.4,53.0,49.1,54.6,49.7,61.0,61.5,47.5,62.8,63.1,71.5,75.2,50.1,57.9,54.7,49.6,52.3,76.5,78.6,55.8,60.8,68.2,50.0,53.4,46.6,50.4,62.7,49.2,66.0,49.8,59.8,54.4,68.8,47.4,52.9,73.6,61.5,73.7,69.3,60.2,56.2,51.3,53.3,55.8,51.0,67.9,51.6,57.7,48.3,52.4,50.8,66.5,67.4,75.9,70.4,74.9,52.2,71.5,46.0,66.1,57.9,63.6,47.2,59.4,72.9,63.2,56.8,47.5,67.2,67.0,77.0,71.9,63.0,52.4,61.9,49.3,74.0,50.8,54.3,65.3,52.6,47.5,52.2,64.3,55.3,78.1,60.6,53.2,50.1,47.3,54.6,49.6,48.2,41.5,47.2,47.4,63.4,49.3,78.2,65.6,54.6,53.0,54.6,68.8,62.7,47.6,68.3,51.7,57.3,49.5,54.8,48.8,50.0,52.8,64.3,51.8,49.6,60.4,50.8,56.8,56.3,60.5,50.2,68.7,51.7,47.9,60.5,45.2,56.2,62.8,60.6,57.8,51.4,50.6,67.8,62.7,54.6,65.2,43.2,61.8,50.6,58.7,61.1,49.8,57.5,69.1,52.6,65.3,51.9,72.5,76.5,75.9,68.7,58.6,65.7,58.9,52.0,56.9,61.9,58.2,53.6,70.0,51.4,47.3,62.6,57.2,46.1,70.4,51.6,56.3,51.2,46.6,54.9,62.6,67.1,72.3,58.7,68.7,49.0,59.8,56.8,67.1,51.3,55.9,65.3,53.2,58.7,61.0,58.0,51.2,58.9,54.1,59.5,68.7,67.1,60.8,66.9,61.2,45.3,63.4,54.2,72.7,59.3,65.6,54.1,50.7,56.5,67.8,61.9,56.6,61.7,49.2,55.3,45.0,80.2,49.7,51.9,68.3,50.3,54.5,52.7,75.2,63.2,55.8,56.0,50.3,61.9,47.6,66.4,66.3,48.3,49.9,55.3,59.6,55.2,75.4,50.9,54.3,53.6,52.1,75.2,64.2,66.3,51.9,48.6,61.1,59.5,52.3,57.3,46.6,51.2,63.5,57.0,47.3,65.7,78.0,58.5,67.4,67.5,59.1,65.9,56.9,60.4,61.7,57.9,51.6,45.0,46.5,49.6,78.7,50.5,47.5,53.7,56.8,65.2,88.8,62.4,63.8,77.4,63.6,64.3,50.0,61.2,79.3,84.8,76.1,48.6,54.1,59.8,63.5,53.9,55.8,68.8,78.7,74.4,80.3,65.1,50.2,61.4,50.9,56.5,51.8,61.4,58.7,62.0] + }, + { + "position": 41, + "values": [30.7,29.2,29.7,35.6,32.9,30.7,28.4,27.4,26.8,31.0,30.3,29.8,32.5,28.4,29.7,29.8,28.2,32.5,29.7,30.4,30.5,30.5,28.2,28.6,31.4,34.0,30.9,32.1,27.0,30.3,30.4,24.4,26.2,34.3,26.8,28.5,26.2,28.1,30.8,31.9,29.6,30.3,29.4,27.1,28.5,30.1,30.3,29.7,30.7,28.9,29.3,27.0,31.7,30.3,28.9,31.5,34.6,30.2,33.1,32.6,36.1,29.8,30.0,26.0,30.1,29.3,26.0,27.7,27.2,32.4,29.2,27.6,27.9,31.8,33.7,29.9,32.6,30.6,29.8,33.4,32.2,31.8,25.7,31.3,31.1,29.0,26.0,28.2,29.0,29.1,31.1,31.0,27.2,31.6,34.7,32.6,28.7,27.8,30.6,31.8,33.0,30.2,32.2,29.2,30.0,34.4,35.0,27.6,27.1,35.1,33.2,30.9,30.0,29.6,31.4,30.6,31.9,26.6,30.5,33.3,28.1,31.1,27.6,29.0,31.0,31.3,28.5,32.6,27.8,31.1,32.1,29.7,26.8,26.3,31.1,30.1,27.5,28.4,29.3,29.9,30.3,27.8,31.3,30.4,28.4,31.3,28.6,27.8,34.2,28.8,28.3,30.6,36.9,31.2,32.5,29.3,30.6,26.0,28.8,29.5,34.7,33.4,29.1,31.0,29.7,31.6,29.7,30.6,29.7,29.4,29.1,31.8,29.5,33.1,27.4,28.4,26.1,28.5,34.6,32.1,30.2,28.1,60.6,29.1,27.9,30.4,36.6,27.9,27.5,34.3,28.6,32.2,32.3,30.0,31.9,26.6,32.8,41.1,32.0,30.2,29.6,29.6,28.5,34.9,33.0,25.4,31.0,28.0,30.1,30.5,30.9,27.0,27.0,30.2,27.3,28.4,30.7,32.1,32.9,29.6,30.2,28.7,29.8,29.3,29.5,29.8,32.0,29.9,30.1,29.9,29.9,27.2,26.7,25.9,27.8,30.2,25.3,31.0,27.2,28.0,30.8,24.0,38.4,23.9,30.8,34.7,28.9,28.1,25.9,27.6,30.0,26.2,30.5,27.6,33.9,27.8,26.6,27.9,31.8,31.7,30.1,32.2,31.2,31.6,28.0,24.6,26.7,30.2,29.7,29.5,29.4,28.9,33.9,31.8,30.7,30.4,35.3,30.7,30.2,31.8,30.3,33.8,27.6,30.4,29.1,30.8,27.2,31.5,29.9,29.4,28.8,32.5,33.4,30.3,27.9,32.6,29.8,32.7,29.4,30.0,25.8,30.0,30.4,33.7,27.6,27.4,32.9,27.7,28.7,30.5,30.1,34.6,26.6,27.8,26.6,30.5,32.7,31.3,30.8,29.1,30.0,29.7,31.9,31.5,30.3,30.8,29.5,29.2,31.6,29.4,33.9,28.1,36.9,31.2,33.0,29.1,28.7,28.0,30.3,27.6,28.0,31.7,28.9,28.3,31.5,30.2,30.6,23.9,36.3,28.8,29.2,29.3,28.7,22.9,32.6,28.7,29.3,31.4,27.6,26.9,24.3,31.3,31.9,29.9,30.2,26.8,28.9,34.6,27.4,30.8,27.3,27.2,29.9,30.6,28.9,29.6,28.8,29.6,29.4,33.0,28.6,30.0,31.7,34.5,34.6,31.3,31.5,29.7,31.2,27.1,29.6,33.4,31.7,27.3,29.1,34.4,33.1,27.7,27.7,23.7,28.9,25.0,30.0,33.1,28.5,30.8,31.7,30.3,32.8,34.9,31.0,32.7,29.8,31.5,35.4,29.5,28.8,28.6,27.4,29.6,32.6,35.6,28.1,27.7,31.5,26.1,26.4,32.5,29.6,28.0,29.9,29.6,33.1,29.8,29.9,25.5,29.9,27.7,27.5,35.8,28.9,28.9,30.7,36.3,34.6,32.1,28.7,29.3,23.9,27.6,32.0,31.8,31.1,28.3,31.6,29.1,26.2,30.8,31.6,25.8,30.5,30.9,26.9,27.1,28.9,29.4,21.8,33.2,30.1,30.7,30.8,31.3,32.2,28.7,26.5,27.4,31.0,28.6,29.7,25.0,27.2,28.0,31.5,33.8,26.1,29.4,28.8,30.3,26.0,31.2,35.5,26.0,28.8,32.3,28.3,49.0,30.3,30.5,28.6,28.8,28.2,25.5,36.0,31.5,29.7,30.1,23.3,28.8,27.8,33.0,31.1,29.6,29.5,32.0,29.7,31.3,33.1,28.7,28.7,34.3,28.7,29.2,33.5,30.2,30.1,27.2,29.4,30.3,31.4,29.2,27.9,30.9,32.0,29.5,32.0,31.6,26.4,30.7,28.5,28.2,30.1,31.7,30.8,27.4,27.6,32.1,25.9,26.1,30.5,34.3,27.0,28.8,35.4,28.9,26.5,33.3,30.6,28.1,27.7,29.9,31.1,26.7,29.3,30.4,29.4,26.7,25.7,28.7,29.4,34.5,29.0,34.8,33.8,28.0,29.5,28.0,32.7,31.9,28.3,37.3,32.6,32.1,28.2,29.1,28.2,26.6,31.0,36.1,33.9,29.5,32.7,29.9,29.6,33.2,32.0,25.3,23.3,31.9,23.4,25.4,26.5,30.7,32.5,36.0,26.0,35.2,26.0,28.9,33.2,24.0,32.2,30.1,33.7,31.9,28.2,30.1,25.9,29.0,30.2,30.2,27.5,39.9,34.2,30.2,30.6,28.3,26.4,28.7,24.4,30.0,29.0,30.3,32.6,26.2,28.6,30.4,31.1,26.7,28.3,27.6,28.1,30.1,30.7,37.2,32.7,27.8,28.9,32.8,29.4,27.9,30.6,25.5,31.8,28.6,32.3,32.5,29.4,32.5,28.2,28.4,28.7,33.5,26.5,31.7,29.9,29.9,26.5,32.5,29.5,32.4,35.3,29.2,28.8,29.9,30.9,25.5,29.0,31.7,28.8,32.8,30.5,31.1,28.9,31.1,32.9,27.7,28.3,31.0,32.4,29.4,27.7,25.6,28.5,26.5,26.6,34.4,26.7,32.7,37.7,26.8,29.6,27.9,29.1,29.7,25.1,33.8,30.9,30.6,29.5,29.2,29.3,29.4,30.1,28.6,32.6,28.9,29.5,28.8,29.0,31.3,31.3,28.8,31.0,29.2,31.1,29.7,27.9,28.4,29.7,29.8,29.4,30.9,26.6,33.8,29.7,28.7,30.6,31.0,31.8,33.8,31.4,28.8,28.3,31.6,27.9,31.1,29.2,30.0,33.3,29.0,31.2,32.3,32.7,26.1,29.9,32.7,28.9,27.9,32.0,29.1,31.4,28.1,29.0,30.5,27.4,26.7,27.0,31.8,28.5,28.2,25.3,30.8,28.3,28.4,28.7,29.2,31.4,33.4,30.9,28.8,30.3,29.6,33.1,31.3,29.0,33.0,30.2,28.7,32.2,32.1,30.1,30.9,27.8,34.4,29.9,39.3,29.6,30.9,24.6,29.9,31.4,35.4,28.8,28.9,30.8,32.3,33.1,24.7,30.6,28.0,31.1,26.9,26.3,31.2,33.0,30.6,27.5,28.5,30.1,29.1,33.7,28.4,32.9,31.1,31.9,31.4,30.2,28.4,29.7,25.5,27.5,28.3,32.8,28.8,32.7,33.4,38.1,29.2,35.4,28.0,31.3,30.0,30.0,34.1,26.6,32.3,28.9,33.3,30.5,36.1,31.2,25.8,33.4,29.8,26.8,27.5,30.9,33.3,29.3,28.1,28.4,28.2,31.1,25.3,33.3,29.3,28.4,25.6,29.1,30.0,34.1,29.4,30.3,39.9,29.4,28.4,26.2,28.3,28.9,29.8,28.6,27.3,30.4,29.7,34.7,28.9,30.5,26.2,29.5,31.1,31.6,28.7,32.4,30.2,27.0,31.8,27.5,32.6,32.9,28.4,29.2,28.9,30.3,27.4,28.2,26.9,34.2,27.4,27.9,31.3,34.6,28.2,31.6,30.0,28.9,31.7,28.1,30.0,30.0,28.4,29.3,30.4,34.8,30.5,29.8,26.3,30.3,32.0,31.9,29.5,31.9,29.3,32.6,26.9,28.3,30.7,29.7,28.3,30.7,29.3,31.4,25.0,31.7,33.7,27.7,26.9,27.2,30.6,27.6,29.5,28.6,29.9,29.4,31.6,28.7,28.6,24.0,29.8,27.9,29.1,26.3,36.3,28.8,33.8,31.5,30.1,34.2,30.8,29.5,32.7,30.2,26.6,26.0,25.8,30.5,34.0,27.4,30.8,29.2,28.0,31.3,29.9,28.3] + }, + { + "position": 42, + "values": [73.6,74.5,78.8,79.4,75.7,74.9,78.6,73.3,78.6,73.8,72.6,76.0,72.1,76.8,77.0,77.2,84.6,70.1,76.1,67.9,76.2,78.8,77.6,77.9,73.2,73.9,78.3,72.6,76.6,69.5,75.0,74.8,71.8,74.4,65.9,72.4,72.7,77.8,78.0,70.2,75.8,79.9,75.1,73.5,74.8,75.0,72.0,73.1,73.0,74.7,74.6,73.9,69.2,76.0,74.2,70.1,76.1,74.2,73.5,72.4,78.7,76.0,75.2,76.7,73.1,68.3,77.3,78.3,69.3,73.9,72.9,71.1,77.3,76.9,80.2,75.2,79.1,73.4,74.3,74.3,75.0,76.2,70.1,73.2,78.2,76.4,71.4,74.4,77.8,76.3,70.6,77.0,74.1,70.5,73.5,72.7,68.9,76.5,75.8,75.8,78.2,79.1,71.1,74.3,80.8,70.4,75.5,73.1,73.1,72.4,74.7,77.9,75.3,76.1,71.7,78.0,77.1,77.2,76.5,75.6,77.1,73.4,68.9,77.6,78.1,85.2,78.5,77.5,75.3,74.6,71.5,75.7,66.4,74.4,77.2,73.1,75.0,75.5,75.3,77.3,75.4,73.5,78.4,75.3,74.7,72.7,70.1,74.9,72.7,75.2,73.2,70.3,76.2,72.5,74.5,76.2,72.1,72.6,69.9,74.4,80.2,70.9,75.7,74.2,72.2,75.0,70.4,74.3,77.9,74.7,70.8,72.6,78.6,69.3,76.5,76.2,75.3,72.2,77.5,75.1,77.5,72.0,115.4,80.0,80.7,72.2,76.3,75.1,71.3,71.6,77.9,81.4,74.9,74.2,73.8,79.1,75.6,137.4,75.7,75.8,76.5,81.0,73.2,79.5,81.4,71.9,70.2,72.4,77.8,77.1,70.0,74.9,75.1,74.1,76.6,79.5,72.7,72.6,79.7,70.2,75.1,79.0,74.7,71.4,75.2,76.1,76.3,78.0,74.6,72.6,70.1,74.0,76.3,71.8,76.3,76.2,75.5,71.5,80.0,71.4,80.3,79.1,80.2,79.7,75.6,80.8,78.2,76.6,75.8,79.0,75.9,74.5,76.5,78.0,74.4,75.2,71.9,72.2,73.8,77.3,76.2,74.8,76.7,74.1,72.6,78.1,79.3,75.8,71.3,75.6,76.1,73.8,76.4,77.1,76.0,76.6,76.5,69.8,74.6,72.5,76.2,72.1,72.2,76.0,74.8,73.1,72.0,76.9,71.1,79.3,72.7,74.5,76.7,74.5,73.7,72.1,74.0,80.1,71.4,78.3,76.1,74.5,75.8,75.4,76.7,75.8,72.2,73.2,70.2,72.8,77.0,74.7,67.9,74.6,68.6,75.5,75.9,74.0,77.4,76.0,77.1,72.4,72.6,70.9,76.6,75.1,73.8,76.5,75.6,78.4,76.9,75.7,72.1,75.0,73.2,70.9,72.6,72.8,76.8,77.4,72.4,72.3,75.2,73.3,81.3,76.1,72.9,71.8,81.6,75.9,79.7,76.8,75.8,75.2,80.3,76.4,75.8,70.6,74.0,74.4,78.3,75.4,72.1,74.7,74.2,82.0,74.3,74.6,78.9,75.3,74.6,75.7,70.5,76.1,77.8,76.2,75.0,76.8,67.6,70.0,75.0,77.1,71.9,70.7,77.2,71.8,73.9,69.2,78.7,74.2,71.3,74.6,77.2,71.4,69.6,69.6,71.7,71.0,79.5,72.8,78.6,75.6,72.5,70.7,73.4,73.3,75.9,76.3,76.7,75.9,77.8,75.3,76.7,74.3,78.9,74.3,68.4,72.0,75.5,76.4,81.2,74.2,68.9,76.5,72.6,72.5,73.8,76.5,76.6,76.8,77.2,73.3,73.6,73.3,70.6,76.4,72.8,79.6,80.6,70.9,72.3,75.9,74.7,88.0,72.5,79.3,75.8,73.7,71.7,74.0,69.4,73.8,76.9,69.6,75.8,76.9,80.7,72.7,71.8,76.0,74.9,79.2,74.9,75.2,74.3,76.0,63.4,71.3,77.5,74.0,75.7,78.1,74.2,70.8,75.8,73.3,79.0,77.6,76.7,68.6,74.9,71.4,72.4,72.7,75.1,77.2,73.9,75.4,72.3,72.0,81.6,78.8,72.2,77.3,77.9,72.5,91.4,75.6,76.0,71.6,76.4,75.5,72.0,78.6,69.9,76.2,80.9,71.0,70.9,74.2,75.5,78.1,76.4,82.1,73.3,76.4,76.4,70.2,71.2,69.7,79.2,70.0,78.5,73.2,75.8,84.3,75.3,75.8,75.8,72.6,72.3,77.8,70.2,71.5,76.9,79.0,75.3,78.4,63.9,76.2,77.7,75.1,74.2,75.9,77.7,72.5,75.9,72.4,75.3,71.1,74.1,74.1,73.8,73.7,79.8,72.9,80.8,79.5,75.7,74.7,73.2,72.3,74.9,77.0,78.7,77.2,74.0,77.1,73.7,69.9,72.2,69.2,74.1,80.3,75.7,77.1,75.8,73.0,75.4,73.2,74.1,71.9,75.6,70.9,78.2,76.6,75.1,72.1,72.9,78.6,72.9,75.0,73.4,72.1,68.4,79.4,73.7,77.6,75.0,74.1,71.3,76.1,72.6,72.4,75.0,74.6,73.4,73.6,69.6,77.8,76.2,75.0,81.2,76.5,73.0,72.1,72.7,77.2,73.8,72.4,74.9,88.6,69.7,72.0,76.5,75.7,75.0,73.9,76.2,76.0,68.4,74.9,71.6,76.5,82.7,68.7,74.3,80.5,75.4,68.6,76.2,73.3,74.7,75.5,74.5,76.1,80.2,74.8,74.7,72.7,76.1,73.4,70.3,71.9,66.9,70.7,73.6,74.6,71.0,77.8,73.3,76.0,72.8,78.5,68.1,77.3,81.2,78.2,75.0,76.6,70.8,77.9,72.8,76.1,75.1,74.6,70.8,73.9,77.8,79.7,71.7,76.8,76.9,73.0,80.0,71.8,72.4,73.7,66.6,70.1,73.4,74.6,81.2,73.7,76.7,76.3,78.7,76.8,75.6,76.8,71.3,75.9,71.9,77.7,72.6,73.9,81.8,76.6,76.5,73.1,77.6,73.5,75.7,75.1,77.7,69.2,78.5,75.3,79.5,71.6,76.3,69.7,68.5,74.3,76.8,72.7,76.7,77.0,72.7,76.8,77.0,77.2,76.1,73.3,70.3,71.0,75.8,74.5,72.5,75.7,70.8,75.0,74.8,77.7,70.3,70.8,77.5,76.7,73.2,77.3,68.1,73.2,77.2,78.8,72.4,70.6,70.9,76.4,75.2,71.5,75.4,71.9,76.5,74.9,75.3,72.9,71.3,74.0,77.9,75.8,71.1,66.5,72.2,72.2,73.5,71.1,72.5,74.1,77.1,74.8,74.4,77.5,80.6,74.5,73.9,70.9,74.4,72.7,75.9,70.6,79.1,75.7,75.9,67.0,73.1,71.5,74.6,75.0,73.8,74.3,70.9,77.0,76.2,78.6,68.0,67.4,75.8,74.1,75.7,79.3,75.5,76.8,78.2,73.5,76.7,73.9,67.0,77.1,74.4,81.9,72.0,66.6,78.4,75.5,75.1,78.2,76.8,75.4,77.5,73.8,73.2,76.4,78.1,79.6,79.9,76.0,74.0,71.7,67.7,74.5,76.7,72.7,76.9,70.2,76.0,72.0,72.4,75.4,73.9,73.8,81.1,74.5,71.1,70.5,83.3,76.2,72.6,74.8,78.8,77.6,75.5,76.9,77.7,72.4,78.5,73.9,76.1,71.5,78.2,78.3,72.8,77.7,75.7,80.9,71.1,71.9,73.5,76.5,75.3,78.9,76.6,79.4,78.3,71.4,72.9,78.9,75.0,78.8,75.2,73.6,73.6,69.2,73.2,75.1,76.8,71.2,72.4,72.7,75.2,75.2,76.5,75.5,78.2,77.1,85.5,73.7,79.4,72.6,76.7,73.6,71.3,77.4,71.6,69.9,76.2,70.6,74.8,75.3,73.3,77.5,78.1,73.2,70.6,72.8,72.6,72.0,70.3,70.7,69.5,75.5,79.4,73.8,73.0,72.0,77.4,75.6,76.5,76.0,78.1,79.6,71.6,78.3,73.1,77.3,77.5,69.9,74.1,72.4,72.5,70.2,78.1,73.2,75.6,78.3,72.3,74.4,76.5,73.2,76.3,73.0,73.0,66.5,79.5,73.3,74.2,73.5,74.8,71.2,71.5,76.0,75.8,67.2,74.9,71.8,74.5,74.1,74.6,77.4,78.6,72.4,72.5,76.5,68.5] + }, + { + "position": 43, + "values": [71.4,68.3,70.3,65.5,92.5,70.9,68.4,70.6,67.9,72.6,68.2,71.3,73.1,65.9,70.3,76.5,75.3,70.2,75.3,71.9,72.0,73.0,74.4,69.0,69.8,71.9,70.4,68.2,66.0,82.5,72.3,61.6,75.8,67.1,65.6,75.5,71.7,72.8,72.2,71.9,70.7,81.0,62.3,76.6,69.2,71.7,70.7,67.6,78.5,72.7,68.2,72.9,77.0,73.6,70.9,67.3,71.2,73.3,75.1,70.7,70.3,69.5,77.3,75.7,69.0,74.1,67.3,71.1,65.8,69.7,71.4,70.3,72.8,78.5,75.8,71.1,84.0,80.1,70.2,74.3,66.4,71.5,70.1,74.3,73.3,72.0,70.8,69.3,71.6,67.8,73.2,70.4,78.4,70.1,77.3,66.0,70.0,72.3,66.6,73.2,77.0,74.0,72.2,74.4,72.1,70.2,75.5,66.0,61.9,71.7,72.8,72.0,67.6,74.7,72.0,61.2,63.8,60.7,74.6,75.3,69.7,71.4,69.9,73.0,73.9,72.5,73.5,66.6,66.3,73.5,67.6,67.5,67.6,62.9,71.2,70.5,67.8,65.0,69.8,69.1,72.3,71.4,82.4,72.8,71.7,68.8,71.7,73.0,72.6,73.9,65.5,71.6,74.2,78.9,70.8,69.2,80.3,69.3,69.7,75.9,69.4,83.1,71.5,73.3,69.1,67.1,74.0,71.0,67.3,68.8,69.7,68.7,73.4,70.6,72.7,63.1,67.5,69.3,73.4,63.2,69.6,65.6,91.4,68.6,69.0,72.6,74.8,73.2,71.6,65.7,71.4,67.4,73.2,76.0,71.3,65.7,68.5,75.4,69.6,59.5,61.9,76.3,71.1,87.3,58.8,82.2,67.0,70.7,68.4,76.6,68.7,66.9,67.9,66.4,65.6,74.8,71.3,73.7,71.4,74.8,72.3,71.2,66.8,75.2,72.0,69.7,70.8,64.4,63.8,69.9,73.2,66.5,63.6,64.9,73.3,71.8,68.4,69.6,75.0,68.8,73.1,68.2,64.4,66.5,86.3,69.0,71.6,72.1,73.3,56.4,66.3,64.5,72.2,70.8,69.8,71.2,67.6,63.7,72.0,70.2,72.8,76.6,74.4,67.4,71.4,68.8,73.7,74.8,72.7,73.0,73.5,70.3,67.0,70.3,72.8,73.5,74.9,68.4,73.1,73.4,70.1,72.2,63.9,75.2,73.2,74.3,87.1,71.0,63.8,67.5,73.8,72.4,75.8,69.4,65.1,77.4,72.7,71.3,72.8,68.6,71.0,73.9,71.4,70.9,85.0,84.1,73.6,60.9,71.1,66.7,72.9,74.2,74.1,68.5,61.0,71.3,80.8,71.3,66.2,69.1,70.1,73.0,79.5,68.7,71.8,71.4,72.0,72.1,65.8,71.7,69.9,77.6,79.4,66.4,74.6,74.3,69.7,71.5,75.6,71.1,65.1,68.4,71.7,68.7,68.2,71.5,71.3,61.2,66.9,72.3,71.9,71.5,71.6,72.3,70.4,74.0,73.5,73.2,69.5,74.8,69.8,70.0,74.3,70.6,71.1,66.0,66.7,73.9,72.8,66.6,67.2,70.4,70.2,70.9,72.8,75.9,72.1,71.0,75.3,73.8,60.6,71.8,74.5,76.2,72.2,74.7,73.4,71.2,69.4,75.2,67.0,76.7,72.1,63.6,69.7,73.1,72.1,65.4,75.6,66.3,77.2,67.8,72.8,81.3,71.5,71.8,76.2,70.9,75.1,73.3,71.8,67.9,75.9,69.0,68.9,70.8,64.3,65.6,65.2,70.3,70.8,74.2,72.7,71.3,74.7,64.9,65.3,71.5,74.0,58.4,72.6,70.7,68.3,76.5,74.3,73.6,64.8,69.8,71.6,67.1,67.7,73.6,71.5,74.5,73.3,73.5,69.0,70.3,72.1,71.8,68.7,65.6,77.4,58.3,73.4,68.3,64.1,69.6,71.0,73.9,72.6,74.8,64.1,65.8,69.6,74.7,63.1,74.2,69.7,76.0,66.5,73.3,73.3,74.2,67.5,70.6,63.4,69.3,85.7,68.0,70.3,72.3,66.7,70.9,71.0,68.8,70.6,72.4,74.3,73.4,73.1,72.5,66.9,59.4,71.8,75.3,71.7,73.5,72.8,65.9,73.1,59.8,70.1,70.4,69.5,71.8,68.1,73.7,71.1,70.4,69.7,76.5,72.4,71.9,75.6,73.9,69.2,79.1,67.0,68.6,72.3,73.3,74.2,72.7,71.9,74.7,72.7,69.8,79.6,69.8,71.3,74.1,70.7,73.6,73.6,65.4,68.2,73.5,60.3,70.1,72.0,72.3,73.3,71.7,71.0,72.4,74.2,72.8,71.8,73.8,73.0,67.5,70.9,72.9,66.8,72.7,72.1,69.7,69.8,73.0,68.4,66.8,68.5,80.7,76.5,67.3,68.4,73.2,71.4,74.9,69.7,77.5,67.2,70.0,70.3,75.3,70.1,71.6,71.8,73.5,71.2,73.0,72.7,74.3,74.0,69.7,74.4,74.2,72.0,70.7,68.9,71.4,72.4,75.3,74.3,83.4,66.6,72.3,66.4,60.0,74.1,68.1,73.5,73.6,65.1,71.2,72.7,73.5,69.0,68.7,74.4,76.4,71.8,67.6,68.7,63.8,72.3,68.6,71.7,73.2,66.1,80.7,68.3,69.3,74.6,62.7,71.9,73.7,72.9,74.3,73.3,72.5,69.8,82.0,75.4,73.5,71.7,65.6,67.1,70.5,67.8,70.6,73.1,74.8,73.7,72.4,74.0,73.8,71.4,76.1,77.0,70.8,74.6,64.3,72.1,70.0,69.1,77.4,68.3,83.2,69.9,70.3,70.0,69.2,66.9,68.9,69.3,68.6,75.9,68.8,74.7,70.4,70.6,80.8,63.4,65.0,73.7,69.3,61.9,82.6,70.7,67.5,67.7,76.9,71.0,69.1,69.7,72.1,69.9,70.5,71.6,72.1,68.7,67.8,69.7,71.2,69.9,71.9,76.3,69.4,71.2,66.5,75.5,75.0,70.3,71.0,71.1,71.9,71.2,64.7,66.2,70.0,72.6,74.7,62.6,66.7,75.2,64.1,69.4,72.0,76.8,63.5,62.7,71.0,70.5,69.7,69.5,72.2,68.6,71.7,72.3,71.5,63.8,75.6,69.9,72.1,72.2,72.1,74.7,75.2,73.3,76.7,64.6,71.8,74.3,70.8,71.8,74.2,84.9,69.7,73.7,72.6,71.7,73.9,75.9,71.1,70.1,72.3,69.9,69.3,69.0,72.2,76.8,68.6,65.9,71.4,71.4,71.0,69.8,71.2,69.0,71.1,69.1,65.7,68.0,71.3,75.2,76.1,75.4,67.4,60.0,64.2,61.4,68.8,71.7,70.2,69.4,69.0,71.1,68.4,72.0,70.9,71.7,76.0,76.9,68.2,68.8,72.0,63.2,71.7,77.3,73.4,68.0,72.2,68.8,70.4,69.3,70.1,71.8,69.9,73.7,67.6,69.9,76.3,74.8,72.0,72.9,71.7,72.2,73.1,69.1,75.1,76.6,71.3,76.0,73.4,73.9,72.9,71.7,68.9,69.8,71.2,67.2,76.5,77.6,72.5,75.9,70.7,73.1,73.5,63.2,71.6,73.4,72.0,71.3,65.0,69.2,72.6,71.5,67.0,73.8,72.3,75.4,69.9,68.1,72.6,79.1,73.6,68.9,68.7,75.5,72.0,78.3,59.1,59.5,64.3,71.0,65.7,72.8,71.6,72.7,68.8,70.9,78.2,66.7,76.4,68.4,74.1,70.4,74.9,71.9,74.2,68.1,71.4,75.5,72.3,73.8,65.3,74.3,72.8,72.7,89.4,71.2,70.2,73.7,72.5,66.8,73.8,70.0,72.5,72.0,70.0,68.5,66.1,75.1,73.7,70.4,65.1,69.5,75.5,69.6,79.3,69.6,68.9,57.4,74.6,62.5,73.6,74.8,71.0,68.7,76.8,76.6,69.4,73.1,72.2,76.1,76.9,67.7,66.8,76.1,73.8,67.3,61.3,73.4,71.7,63.4,73.6,72.8,67.9,73.6,66.3,73.9,70.3,73.3,71.8,69.9,70.1,72.0,77.0,73.9,62.8,63.0,76.2,68.4,71.2,70.4,64.6,73.4,71.8,63.0,75.6,73.5,66.0,71.6,69.5,70.1,73.4,66.9,75.0,71.7,70.0,74.2,71.3,67.7,72.6,66.7,65.8,68.8,74.8,73.9,71.7,71.4] + }, + { + "position": 44, + "values": [31.3,28.9,34.6,32.9,29.8,28.5,29.6,27.8,31.2,32.0,31.0,32.2,29.4,31.9,30.4,30.6,33.1,30.3,29.4,31.2,29.5,32.1,31.1,29.6,28.3,32.7,29.0,31.1,29.5,30.6,25.7,30.8,27.9,30.4,28.5,30.5,28.9,30.1,32.1,32.7,29.3,29.4,29.8,28.9,28.8,28.3,32.4,29.3,32.2,31.8,31.2,31.0,31.0,29.4,29.0,30.4,29.7,32.1,28.9,30.7,31.2,32.4,29.5,29.8,29.9,29.6,30.1,29.4,31.4,31.5,30.6,31.0,30.8,30.6,32.4,30.6,28.7,31.2,31.2,34.6,27.9,27.0,30.2,30.4,31.1,28.6,29.8,28.1,30.7,28.9,30.7,27.4,32.6,34.8,32.0,28.4,29.7,30.1,30.1,32.0,29.4,30.0,30.2,30.5,31.9,26.6,33.0,30.1,28.5,30.4,31.0,29.8,30.8,30.2,30.6,29.7,32.6,29.2,29.3,28.3,30.4,31.9,30.8,29.3,28.9,32.9,30.4,31.4,29.5,29.7,30.0,32.5,29.5,31.3,32.8,29.3,30.7,28.4,28.7,30.8,31.7,29.2,31.1,29.3,31.3,30.6,30.1,30.4,31.0,31.1,32.9,27.8,28.4,32.7,29.2,28.9,31.0,28.0,32.3,32.2,31.7,31.7,31.6,29.8,32.5,32.0,30.9,29.7,30.1,28.9,30.0,33.0,30.6,30.4,29.4,28.3,29.2,29.9,31.1,31.6,31.6,26.8,30.7,71.9,32.4,29.8,30.2,31.2,29.8,31.7,30.7,29.2,29.3,32.9,30.9,28.6,30.0,40.5,31.1,28.5,31.8,29.7,28.7,30.0,35.3,32.0,29.8,28.9,31.1,32.0,30.6,30.6,29.7,29.8,30.4,32.1,30.3,30.8,30.6,33.7,29.1,30.6,29.5,30.6,29.1,29.3,32.1,29.1,30.7,29.7,30.5,30.7,26.4,30.4,32.4,29.4,29.3,29.6,30.8,29.5,30.9,30.9,31.5,30.0,31.0,31.9,29.1,32.0,32.4,27.3,31.0,29.0,29.0,28.9,29.6,29.7,28.1,27.4,32.2,29.6,30.0,31.8,30.8,28.6,28.6,29.5,29.6,28.7,29.8,30.3,29.9,28.9,26.8,29.8,31.0,31.5,34.1,30.3,33.4,31.6,31.1,29.1,27.2,29.6,33.0,29.9,30.8,28.7,33.8,30.9,29.9,32.2,31.8,29.7,32.2,33.3,32.5,29.6,28.6,29.0,30.2,31.8,31.9,32.0,27.8,34.8,28.9,31.6,27.5,29.7,29.7,29.8,29.3,30.8,35.4,29.7,29.5,31.6,31.7,30.7,31.3,29.3,31.6,29.4,31.5,31.1,28.6,29.5,26.1,28.6,31.8,30.3,31.7,28.8,32.2,34.2,30.1,30.3,28.2,30.6,29.0,30.0,33.2,27.3,33.4,28.9,29.2,32.5,34.7,30.6,32.3,29.0,29.4,32.3,32.4,31.8,31.2,29.6,27.7,28.1,28.0,30.4,30.5,27.8,29.6,30.9,31.2,32.0,24.4,28.3,28.2,27.4,30.3,29.3,30.0,32.5,29.0,29.0,30.1,30.4,30.5,32.1,32.9,31.8,29.0,31.5,31.9,29.1,29.7,29.6,31.8,31.5,31.2,28.3,33.6,32.1,30.6,28.9,28.5,32.4,28.4,29.3,28.3,31.8,29.3,30.9,30.2,29.3,32.2,29.9,30.0,34.6,28.8,29.7,32.7,33.5,27.8,28.6,29.6,28.3,31.2,30.9,29.7,33.2,29.8,32.2,28.0,29.5,29.5,30.0,30.4,31.4,31.1,30.5,30.4,30.6,27.8,30.9,30.9,31.4,28.3,32.0,30.6,33.8,30.8,32.5,29.9,29.3,33.3,28.4,29.6,30.8,30.9,28.9,28.3,26.2,31.1,27.7,31.0,31.0,32.0,28.8,32.2,34.6,29.3,32.0,23.9,28.8,30.2,32.4,27.6,31.5,28.1,27.8,29.7,29.2,31.6,29.2,32.7,29.9,32.0,27.3,29.4,29.1,28.6,35.1,31.2,30.8,29.2,30.3,30.9,30.6,32.8,31.5,28.1,49.9,30.9,29.7,32.2,30.1,30.6,28.1,32.4,32.7,30.7,31.9,29.4,30.9,29.2,29.8,32.1,31.3,30.0,30.9,30.7,33.8,30.2,31.1,30.9,28.7,29.7,31.4,29.3,29.0,29.1,29.6,31.1,30.5,29.7,29.2,32.2,30.7,31.8,32.3,27.9,30.0,31.4,32.6,24.6,27.4,30.1,32.0,29.2,29.8,30.6,33.4,29.0,29.8,29.4,30.8,30.0,30.4,30.4,30.2,29.1,31.6,30.4,29.7,31.0,28.0,29.4,30.2,28.1,31.4,30.9,29.5,28.5,31.0,29.4,30.1,30.8,35.0,28.7,37.3,29.0,30.0,32.3,33.1,30.4,31.0,30.9,29.6,30.1,34.2,30.4,31.6,30.7,31.6,30.2,30.5,28.4,30.7,31.5,31.8,29.2,33.6,29.3,29.6,29.3,32.5,31.0,31.6,31.4,31.0,28.6,30.1,30.6,30.2,30.5,31.7,31.1,31.4,33.5,31.5,31.1,31.5,31.1,28.7,31.7,27.1,28.8,55.6,29.7,31.2,31.6,30.2,27.1,29.9,32.4,30.0,31.6,33.5,30.4,29.7,31.9,30.0,30.9,31.1,28.4,32.0,34.1,28.6,29.4,29.2,30.9,30.3,30.1,31.1,29.9,31.9,31.0,29.5,30.2,30.7,31.4,30.8,28.3,31.8,29.3,30.9,32.8,30.4,30.8,29.7,31.3,31.3,30.9,31.3,29.4,29.3,30.3,31.2,29.1,31.1,29.3,33.6,29.8,32.2,28.2,32.0,28.7,31.1,28.1,30.5,32.6,28.9,28.8,30.4,30.2,28.2,28.2,30.8,29.5,29.3,30.1,28.9,34.4,31.1,30.0,31.2,30.8,30.8,29.7,30.9,29.0,31.2,32.5,29.2,31.4,31.6,28.7,31.0,29.3,30.0,28.8,29.6,30.0,30.3,27.5,29.4,29.1,28.3,30.4,28.9,30.8,29.5,26.9,28.8,26.9,29.2,29.2,27.1,29.1,31.8,30.1,29.7,30.7,30.0,30.5,30.3,29.3,31.5,30.0,30.5,29.5,29.6,28.1,30.6,31.1,31.6,28.9,30.7,31.9,28.9,30.0,29.4,30.3,30.4,30.2,28.5,29.0,32.4,32.4,33.1,30.5,29.0,29.5,30.1,28.4,32.1,30.0,29.0,30.8,30.2,27.5,31.1,33.0,30.0,30.7,29.8,33.0,28.3,31.8,31.7,30.0,31.7,29.3,30.7,31.4,31.7,31.7,31.2,30.0,34.3,28.3,32.5,28.4,32.2,26.4,31.1,30.3,30.2,30.6,27.5,31.4,29.7,29.8,29.1,30.2,30.4,30.7,30.5,29.8,29.1,32.3,30.1,26.6,28.9,30.0,31.8,30.8,28.1,32.7,29.6,29.9,29.8,30.4,30.6,33.2,30.3,30.2,31.4,29.0,27.9,36.2,31.2,31.2,30.4,32.4,31.4,29.8,31.4,27.2,30.6,31.4,30.2,30.4,34.8,30.3,29.5,32.7,32.3,28.9,31.2,30.0,30.6,30.9,29.3,31.2,27.7,30.4,27.4,28.5,28.0,28.9,29.1,30.0,32.3,33.1,30.6,30.8,32.5,28.8,33.5,29.8,31.1,26.5,30.6,30.1,28.4,28.2,29.5,31.4,30.7,31.4,29.3,31.1,29.6,29.9,30.1,28.7,30.7,30.4,28.1,27.2,30.4,32.8,31.5,31.9,32.9,29.1,28.7,33.2,28.8,29.0,30.4,34.2,27.2,26.9,30.5,30.2,34.0,29.6,29.6,26.3,31.8,30.2,29.3,28.7,28.9,29.1,28.8,30.8,32.1,30.5,29.4,29.8,31.5,28.1,29.2,35.6,29.8,30.8,33.2,28.3,29.6,28.8,30.7,30.8,31.1,30.5,30.2,31.7,32.6,29.4,32.3,27.6,29.5,30.0,29.5,31.3,30.6,26.2,28.7,28.2,28.6,30.7,29.7,30.5,28.1,29.3,32.8,28.5,31.6,32.2,31.4,28.9,29.6,27.2,29.4,30.2,33.0,30.1,28.7,30.0,29.6,30.7,30.5,28.2,30.3,31.3,32.8,32.8] + }, + { + "position": 45, + "values": [144.7,144.8,32.3,132.8,146.0,142.1,139.7,152.2,151.1,149.2,179.3,33.7,144.8,139.0,135.5,26.7,94.7,152.5,44.0,76.7,146.8,131.5,52.3,141.4,138.5,71.5,129.7,183.0,164.0,157.9,114.4,168.2,95.4,123.4,136.0,158.1,111.0,111.6,163.5,165.6,53.0,72.6,164.8,154.7,67.1,75.0,166.5,158.0,136.3,71.0,145.6,177.2,126.0,166.2,152.1,113.2,103.3,160.5,151.1,134.9,108.1,161.1,179.8,140.4,128.8,165.8,174.0,148.3,173.4,152.6,121.0,114.2,145.8,162.5,41.5,147.9,161.3,123.5,152.2,165.4,116.0,153.9,136.4,179.4,142.1,73.1,147.3,176.3,178.4,125.8,126.9,130.5,153.2,122.3,160.8,123.8,130.5,173.0,140.2,156.8,137.8,116.4,146.3,184.2,157.0,126.4,137.7,152.7,143.0,153.9,138.6,143.4,148.2,154.9,44.1,100.7,34.5,106.3,116.4,170.8,83.8,147.6,128.0,143.1,104.1,77.8,143.1,116.6,137.2,147.9,179.7,142.3,149.2,121.4,145.1,134.7,136.6,119.4,160.7,153.5,149.9,154.3,152.2,153.3,89.6,165.2,151.8,51.4,168.3,91.0,132.6,154.3,141.6,139.8,152.1,138.8,118.8,145.2,157.7,143.3,92.5,168.3,173.3,150.9,34.2,188.4,132.4,153.4,156.8,158.0,153.7,153.5,121.6,164.1,178.3,113.2,178.6,71.5,133.6,121.1,158.5,130.1,145.1,160.7,122.4,112.0,166.3,113.8,150.2,124.9,90.6,149.0,40.8,157.3,138.3,170.4,128.4,125.5,162.6,125.7,176.3,134.2,169.7,151.0,152.4,132.3,149.6,74.9,139.0,156.6,161.6,150.9,135.3,141.9,176.5,187.8,146.7,142.7,165.2,177.2,161.5,90.3,147.1,71.8,160.2,154.5,184.5,117.8,153.2,153.4,137.9,161.9,88.9,149.7,97.1,144.5,161.5,153.4,138.3,166.7,129.7,121.0,138.9,142.0,150.4,147.9,138.7,33.9,139.3,110.9,116.3,113.1,72.3,159.6,139.0,164.4,121.6,91.4,145.1,169.8,132.1,154.0,159.7,115.8,161.8,179.0,122.4,128.8,73.6,77.5,40.2,155.8,104.6,146.6,144.7,43.1,158.2,128.8,148.0,156.4,155.8,153.5,146.7,147.8,143.7,137.2,156.5,36.4,119.6,151.1,65.0,51.7,79.1,154.4,130.7,136.7,140.1,157.6,181.1,140.6,34.9,161.6,157.8,171.3,165.8,80.5,163.2,68.3,119.5,141.3,127.7,150.9,143.0,177.8,132.4,72.9,143.4,161.2,124.5,147.7,188.6,151.6,138.4,159.2,141.7,158.9,74.3,149.8,109.2,73.6,119.5,119.4,67.0,132.2,142.1,172.2,139.6,142.2,147.3,157.2,144.1,148.8,173.6,120.7,160.7,167.9,105.1,135.0,111.0,151.5,177.4,70.4,75.6,149.1,161.4,54.5,51.7,73.6,145.7,112.7,136.7,43.6,39.5,145.5,146.2,117.1,168.3,154.8,168.8,163.9,144.4,130.5,153.1,73.3,142.1,128.4,82.5,156.9,138.6,136.2,116.5,151.2,138.8,162.4,132.9,74.7,151.7,176.4,122.4,168.5,130.6,142.1,154.5,148.4,153.8,142.9,81.6,142.5,36.3,115.1,125.7,149.5,76.4,138.8,171.0,163.1,158.9,155.7,116.1,74.2,35.3,175.7,120.0,128.7,134.0,161.7,136.7,139.5,169.7,156.8,138.6,143.4,167.1,139.0,150.5,145.0,113.3,65.8,170.7,113.0,177.1,160.2,171.6,129.4,150.1,127.6,116.8,157.1,160.2,164.5,136.2,168.8,147.1,67.5,42.9,145.3,139.0,72.3,141.9,160.8,147.9,70.1,165.5,128.2,101.7,83.6,166.9,121.1,152.6,150.5,156.9,126.4,127.1,123.8,145.1,135.9,85.2,72.5,82.8,121.8,181.6,67.9,102.7,168.2,170.0,139.7,114.7,137.7,166.2,122.0,156.5,105.1,122.0,139.1,155.3,144.2,171.2,75.2,169.3,133.6,165.8,133.3,171.9,142.3,116.0,173.3,136.2,142.9,157.5,151.9,52.1,141.1,102.3,152.4,148.4,154.5,167.6,59.4,142.0,175.0,168.9,90.6,159.8,125.7,128.8,132.2,151.9,150.5,49.9,143.5,34.6,139.6,41.9,143.3,73.1,169.5,139.8,147.6,147.0,147.3,34.6,139.4,143.8,53.8,120.8,149.6,164.5,148.0,74.0,139.7,71.8,162.4,151.6,51.1,138.6,140.6,160.6,162.3,145.5,117.1,74.8,154.7,44.9,155.0,169.4,164.7,144.9,181.1,137.7,151.1,134.0,159.4,153.5,148.5,159.9,175.3,152.5,42.6,69.7,170.2,140.4,50.2,44.0,72.2,137.6,134.5,152.2,137.4,155.8,51.3,137.2,132.3,172.2,51.3,133.5,52.8,152.0,42.2,161.4,151.1,154.3,141.0,161.7,132.5,150.7,135.0,136.4,151.5,112.6,132.7,150.3,96.8,142.2,73.5,121,149.5,151.7,40.3,157.0,83.4,179.4,142.4,166.0,134.0,171.7,132.8,148.0,131.9,65.7,149.2,121.7,148.3,139.9,150.2,143.8,142.6,174.1,51.2,46.3,132.2,71.6,187.1,164.9,157.1,162.0,150.8,161.8,110.4,132.7,178.5,147.4,36.9,148.2,158.0,67.7,51.6,50.8,153.6,144.3,143.8,138.3,160.6,176.0,169.6,162.4,160.8,141.8,146.3,138.4,168.6,168.2,176.0,154.1,137.6,164.1,156.9,145.2,168.0,175.3,132.4,168.6,150.2,115.7,153.9,95.8,130.0,141.4,147.7,130.1,144.5,161.3,122.6,143.9,159.3,145.1,144.0,152.4,56.3,167.8,68.3,154.7,140.3,158.5,142.6,153.5,151.8,175.9,167.8,51.4,164.3,80.1,155.3,159.1,132.0,140.8,134.7,153.9,81.2,145.0,144.2,130.5,149.3,177.7,75.7,43.4,137.7,67.9,144.3,118.3,134.9,172.2,115.4,133.0,75.3,150.2,149.5,151.5,145.9,104.4,74.2,41.3,151.6,79.1,115.9,149.8,140.0,76.2,156.1,138.9,79.0,170.1,145.1,133.4,149.1,172.7,169.4,162.3,41.3,112.9,34.7,168.8,150.8,154.3,153.5,75.0,155.7,152.9,51.8,134.4,150.1,94.5,75.0,183.7,35.1,146.2,148.4,157.3,125.1,148.5,100.9,167.5,164.1,150.8,142.0,139.9,147.4,157.2,44.0,121.6,145.6,36.8,88.8,50.5,174.7,133.1,164.1,161.6,62.5,137.7,162.0,148.0,157.2,50.7,53.3,27.4,127.1,142.9,150.3,142.0,159.5,157.3,79.5,140.0,139.8,148.4,166.1,110.8,165.0,157.1,112.4,78.7,173.9,51.4,161.7,113.5,143.2,145.1,155.1,75.1,184.5,66.5,95.6,135.2,135.3,118.7,76.3,77.7,155.9,35.1,142.1,171.1,110.5,106.6,117.1,143.9,160.0,139.7,139.7,75.8,187.6,50.7,119.3,136.1,144.5,134.4,55.7,154.0,167.6,136.7,75.7,33.2,168.9,163.9,143.7,51.2,157.5,130.4,65.5,152.5,128.3,133.4,71.8,162.1,80.1,139.2,105.1,143.2,117.5,131.4,139.9,43.1,150.9,142.4,53.4,122.6,130.4,104.0,51.2,150.7,132.9,139.0,152.8,147.9,159.4,72.6,91.8,152.9,141.6,130.2,142.8,141.8,177.0,89.4,140.4,94.7,52.0,167.7,158.4,147.8,34.7,155.7,146.8,135.5,170.3,139.6,134.9,28.4,136.0,151.5,143.2,154.5,60.5,165.3,161.1,90.7,145.6,136.0,140.1,131.7,72.4,146.4,158.7,152.0,138.1,137.0,152.2,41.2,151.7,118.0,135.8,156.0,140.3,137.9,49.7,157.3,127.7,117.1,51.8,95.9,176.1,75.6,133.4,171.1,133.6,157.6,151.7,139.4,133.1,168.6,110.1,181.7,152.8,107.3,153.8,138.7,72.2,159.4,133.6,51.5,116.4,43.2,129.9,106.9,170.8,158.6,179.9,143.3,47.2,118.8,145.0,153.5,140.1,176.1,96.2,157.2,164.3,86.4,117.3,169.2,147.0,132.4,87.5,38.9] + }, + { + "position": 46, + "values": [119.4,119.0,117.8,105.6,132.9,112.6,127.0,112.8,118.2,121.4,125.0,122.1,132.2,121.0,126.1,124.5,129.3,115.2,122.3,124.5,121.4,130.3,131.6,113.9,121.5,119.2,119.6,126.9,128.6,121.7,127.7,118.1,127.0,119.0,115.3,121.4,124.8,115.6,131.3,122.1,116.3,119.0,129.7,121.2,126.5,119.9,125.8,121.3,120.1,119.8,126.0,112.3,121.0,101.0,118.7,118.8,119.8,118.3,118.3,112.7,114.9,130.6,129.8,117.8,118.4,120.2,125.9,126.8,122.7,120.6,117.6,112.2,126.9,115.8,120.9,114.4,119.6,119.0,119.1,121.6,104.9,122.6,120.4,131.3,110.6,122.9,114.4,128.2,125.8,116.0,115.1,114.3,128.7,119.3,112.9,105.7,120.8,127.1,128.5,114.2,122.8,114.3,122.9,122.5,131.0,114.1,124.9,117.3,115.2,118.2,117.8,115.9,122.8,119.8,120.2,129.1,134.3,130.0,110.7,114.4,113.9,122.5,122.7,122.5,119.0,149.7,118.4,110.8,126.7,118.3,129.5,116.0,122.7,120.1,123.4,119.1,114.6,121.0,121.7,118.8,123.6,118.6,119.8,118.9,128.0,126.5,123.4,130.7,115.2,129.9,109.0,119.5,117.6,119.9,115.9,121.2,124.9,117.9,116.7,123.8,121.9,131.4,128.2,115.6,133.6,131.7,117.1,122.8,120.1,130.4,122.7,130.9,115.2,114.9,127.8,130.0,127.2,123.0,118.8,118.4,116.3,115.5,134.2,121.9,135.5,119.5,118.1,128.0,117.4,119.2,129.7,119.2,118.1,120.9,116.5,126.7,120.0,124.8,119.8,120.5,123.0,105.8,113.2,121.4,132.1,130.6,125.2,126.3,121.0,117.5,113.8,118.8,118.5,127.4,127.9,124.8,120.7,118.0,119.2,125.4,117.8,129.6,121.4,118.8,117.1,128.8,119.7,120.2,122.5,120.6,115.4,126.9,128.0,116.8,121.6,117.3,130.5,115.1,127.3,119.8,115.6,129.0,120.4,124.6,117.8,128.6,121.5,137.0,123.0,124.5,121.9,125.0,121.2,120.1,119.3,116.5,127.9,127.1,119.2,122.8,118.0,121.2,124.3,114.6,118.6,127.3,120.8,108.7,113.0,121.1,113.7,122.8,117.3,116.7,118.8,121.6,119.8,113.8,104.6,116.1,120.4,120.8,117.2,119.2,117.3,112.1,111.3,113.3,133.2,120.6,129.4,127.5,120.8,122.2,116.0,105.2,119.8,117.4,130.5,121.0,117.5,116.8,135.1,113.3,123.7,93.4,115.8,113.1,115.9,116.6,116.6,120.5,123.3,122.4,119.6,122.8,123.3,117.9,117.5,118.6,123.3,114.8,119.7,119.0,119.6,119.3,128.5,123.5,118.2,121.2,127.2,121.7,124.3,117.6,106.1,117.9,121.8,116.5,120.4,119.8,123.9,113.0,124.1,109.5,130.5,117.3,111.3,119.5,118.3,130.1,118.4,122.7,126.5,129.8,119.7,130.7,130.7,121.7,115.5,111.7,131.0,120.5,105.3,119.0,118.6,124.6,123.6,126.9,112.8,122.5,125.8,120.2,114.3,119.8,121.3,119.1,127.4,120.3,114.0,116.1,132.0,127.4,115.5,116.6,120.4,121.6,123.4,120.2,114.6,113.0,119.6,121.1,122.8,115.8,119.1,122.0,122.2,124.5,126.9,119.0,105.8,119.6,117.5,115.5,122.2,122.5,120.5,123.5,117.9,115.4,131.4,115.1,126.4,119.9,120.7,121.6,116.9,119.1,126.7,125.3,119.3,119.1,123.6,120.4,119.9,126.0,117.2,120.1,118.6,124.0,132.3,122.1,104.8,126.9,120.7,118.9,119.4,126.0,117.4,127.4,118.4,124.0,114.7,112.0,120.5,118.6,120.2,121.3,121.5,123.4,114.5,116.1,119.3,123.0,117.8,101.0,117.0,127.6,116.1,127.7,120.3,104.9,120.5,120.3,115.7,115.4,124.7,118.6,121.6,116.0,116.6,121.4,114.8,120.0,127.4,112.8,122.1,125.7,120.4,120.9,117.7,118.6,106.2,116.7,113.9,116.3,121.0,124.4,122.1,116.5,117.1,127.5,128.3,116.3,115.1,108.5,102.8,114.6,112.4,114.6,130.7,113.4,128.5,127.5,120.5,123.6,129.4,117.8,127.0,116.5,122.5,128.2,121.3,118.2,109.9,121.8,122.9,118.3,118.6,119.0,134.9,119.0,122.2,121.7,120.8,119.2,121.1,124.0,121.0,117.1,131.7,118.1,120.0,131.2,108.0,121.7,125.2,116.4,110.3,116.4,116.6,121.9,116.2,130.6,117.9,115.6,126.8,118.9,118.5,118.0,115.1,127.4,122.8,125.5,128.9,128.8,131.4,118.7,114.7,118.3,118.4,119.1,115.4,114.1,120.4,129.7,117.0,125.7,120.0,123.2,123.6,126.8,88.5,125.8,116.6,119.9,121.1,117.7,124.8,130.5,120.8,112.8,130.3,117.9,129.7,131.6,117.3,120.6,117.6,119.5,118.2,117.6,124.1,113.6,118.9,126.5,123.1,121.0,126.6,116.5,102.6,117.1,109.8,120.5,126.0,118.8,120.1,116.1,117.3,123.5,128.0,124.8,121.9,122.8,128.1,117.5,115.9,122.3,116.2,112.0,131.8,127.7,115.5,117.8,122.9,130.4,120.3,125.9,122.8,126.8,117.0,126.5,121.5,119.6,119.4,124.9,116.7,126.4,119.1,118.0,133.8,124.1,122.7,118.7,119.3,132.4,129.9,120.4,113.2,120.5,113.7,126.8,124.2,126.6,116.1,117.7,128.9,117.0,117.3,128.1,125.0,124.0,120.9,112.9,127.8,118.6,128.0,120.1,127.1,118.4,132.3,122.2,118.1,119.1,127.2,120.2,117.8,120.7,113.9,116.7,114.9,116.0,125.4,118.3,121.0,122.4,116.9,123.6,124.5,117.1,120.5,119.9,116.1,126.6,125.2,120.6,113.2,123.0,130.4,120.6,129.0,124.4,117.9,129.5,118.3,116.7,120.3,113.1,117.3,119.9,127.6,127.5,119.1,122.3,124.5,124.1,121.3,115.6,116.0,113.7,121.2,112.2,126.8,119.9,117.9,116.4,119.4,120.1,111.8,122.2,123.7,125.9,120.8,118.7,116.3,117.5,121.4,121.5,116.2,119.3,117.6,122.7,124.5,128.1,116.8,119.0,121.3,122.7,121.6,115.8,134.8,122.2,118.8,120.5,116.7,116.2,115.8,130.6,122.6,118.6,126.6,115.4,133.7,126.7,125.4,121.5,119.7,112.4,119.1,122.0,115.7,115.5,127.4,123.8,114.1,114.3,122.4,124.8,116.7,134.9,123.4,125.6,128.1,128.7,114.7,118.9,113.5,118.8,120.9,122.4,119.7,121.2,130.4,127.3,85.1,130.6,117.9,117.8,120.6,121.9,117.1,118.2,110.3,124.4,112.9,122.2,115.9,127.9,118.8,124.8,116.1,126.4,117.6,132.5,124.3,120.5,112.4,121.0,118.4,130.9,117.1,118.6,116.5,116.6,122.1,119.5,116.8,120.0,134.1,127.6,128.7,103.8,119.6,105.3,125.8,116.6,121.3,118.6,122.9,131.2,114.5,122.7,131.4,119.6,131.5,120.0,117.4,122.8,116.1,121.0,134.8,127.7,121.2,124.8,130.3,125.5,127.3,121.9,130.0,121.7,113.6,114.8,116.4,116.4,115.7,117.8,114.9,123.8,125.8,117.6,119.4,120.2,120.6,128.5,123.5,121.6,118.6,119.3,130.3,108.2,118.3,121.0,121.6,119.7,121.8,120.2,129.1,125.9,113.1,116.6,122.0,123.4,120.6,114.0,130.1,126.1,117.9,123.8,120.6,134.8,120.4,120.6,126.7,120.9,117.7,114.2,127.4,127.5,119.4,112.3,115.7,129.1,113.4,125.3,109.9,119.3,124.9,122.3,119.9,127.3,119.8,120.0,116.0,112.5,115.8,119.7,125.8,120.2,128.9,119.3,122.7,123.3,125.2,117.0,110.9,119.9,128.0,130.5,119.0,131.2,120.8,128.2,119.8,117.8,121.5,120.8,119.4,119.3,117.5,106.9,130.3,117.8,118.6,117.9,116.6,120.4,123.0,121.9,130.8,113.0,118.3,123.7,115.1,119.6,124.7,117.8,117.2,118.8,113.2,125.0,120.5,116.4,125.2,127.9,119.8,128.9,124.3,121.0,119.8,126.3,118.8,115.4,137.0] + }, + { + "position": 47, + "values": [33.2,32.7,40.7,35.7,38.1,31.0,39.4,31.6,35.3,39.2,36.6,38.1,30.6,38.7,36.0,36.3,30.0,32.9,29.8,37.2,29.7,38.9,39.6,30.5,32.8,29.9,38.0,37.5,36.2,31.7,37.9,32.1,38.0,35.5,32.9,30.3,36.7,41.1,40.0,29.6,31.8,32.8,36.8,29.8,38.0,29.6,39.2,33.2,35.4,35.6,36.5,34.9,33.3,35.2,31.1,35.5,33.8,32.5,35.8,36.4,32.1,38.9,31.4,36.7,35.8,33.9,36.1,35.5,37.2,35.8,35.9,37.4,37.4,35.6,31.6,30.7,36.1,29.4,32.2,33.4,31.5,32.4,32.9,37.5,32.0,31.6,36.6,35.0,37.0,32.2,36.2,30.7,37.6,35.3,34.2,31.1,35.8,36.7,37.6,38.3,35.7,30.7,33.8,38.3,32.6,32.2,34.7,31.5,34.9,31.8,31.7,32.7,29.9,30.7,31.9,35.1,38.0,34.7,34.9,33.3,33.0,33.8,32.6,30.5,31.9,41.0,36.7,37.5,38.1,30.6,38.0,32.1,36.6,38.5,34.5,37.6,36.9,33.4,32.7,33.6,32.4,30.9,32.3,36.8,38.6,34.4,38.0,37.8,32.3,37.6,30.2,30.7,31.6,34.4,28.8,30.8,37.7,37.0,32.0,36.6,33.8,37.3,36.7,31.6,38.4,37.4,35.1,33.3,35.2,38.5,31.4,36.4,35.1,33.1,35.4,36.8,36.6,29.6,33.9,35.9,35.7,35.1,73.9,33.7,36.7,30.9,33.5,35.5,35.7,33.2,38.2,34.2,32.1,36.4,31.2,35.5,34.9,29.7,47.5,33.0,38.5,30.6,31.6,32.9,47.6,34.5,33.7,38.3,36.0,35.2,30.9,35.5,37.1,36.8,36.8,38.3,30.4,36.5,33.5,37.1,33.2,38.0,33.5,31.5,32.3,34.1,30.8,32.5,37.3,31.7,30.9,38.6,36.0,34.0,29.5,32.2,37.4,32.9,36.9,32.5,36.7,36.0,34.2,34.5,34.1,36.2,30.6,38.1,36.1,35.6,33.2,34.6,30.8,35.0,32.2,32.7,35.3,32.9,36.9,30.0,31.4,31.7,30.3,35.3,32.3,35.5,31.3,32.7,32.7,30.0,31.0,28.3,33.9,35.9,38.9,29.6,35.6,32.2,37.1,32.8,31.3,32.7,31.4,32.5,34.8,29.0,33.1,36.8,37.6,31.2,37.7,33.6,31.4,31.3,37.1,36.3,32.3,32.4,39.1,29.5,38.6,33.3,35.7,33.8,36.4,34.7,32.5,32.4,34.5,37.0,29.7,31.5,35.6,36.0,34.3,30.4,28.7,33.4,33.3,35.5,37.5,37.0,33.1,32.3,37.9,32.9,31.3,35.4,33.5,30.3,35.4,36.7,30.2,31.2,36.3,37.8,31.7,35.1,29.1,36.1,37.1,31.1,35.6,30.2,37.9,32.3,29.7,35.6,36.2,38.1,33.6,32.1,38.4,35.0,36.1,37.4,36.9,31.3,32.0,32.0,28.6,37.6,30.8,31.6,34.2,36.9,36.9,35.1,31.1,31.5,36.4,30.7,30.3,29.2,37.6,35.6,30.0,32.9,33.2,32.4,34.9,37.6,34.6,36.3,30.3,33.1,31.4,35.4,36.4,35.4,39.3,33.6,35.9,31.8,33.4,35.2,34.6,39.4,41.2,36.9,31.4,29.2,34.1,29.8,36.3,30.6,32.5,31.5,35.4,32.0,35.4,37.9,36.6,34.8,39.3,36.7,32.4,33.1,34.1,29.7,36.4,33.4,34.9,38.4,31.8,35.7,37.1,30.2,32.6,39.7,41.5,31.9,35.7,35.5,30.3,38.2,30.4,36.6,32.2,38.0,35.1,34.7,32.4,36.1,32.2,34.6,37.5,31.4,36.4,38.3,31.2,28.2,29.4,38.3,35.2,36.1,36.0,34.4,35.3,32.9,35.1,30.7,36.2,30.6,35.8,35.9,34.9,31.0,37.6,31.9,40.6,31.7,31.4,32.3,33.8,31.6,36.3,37.5,36.0,37.1,31.8,40.1,29.9,32.2,29.7,31.8,34.0,30.8,31.8,32.4,35.8,38.4,41.1,30.8,35.6,42.8,35.2,35.0,32.2,34.2,37.0,34.3,39.0,37.1,32.7,36.1,30.5,35.1,31.6,36.1,33.9,34.8,30.1,36.8,32.9,36.0,31.6,31.5,34.9,33.4,38.0,33.0,30.5,30.4,31.3,33.1,32.1,32.7,29.5,32.1,36.6,35.6,32.3,33.8,40.5,36.2,37.0,36.0,30.4,31.5,32.7,34.7,30.6,38.6,37.4,32.4,36.5,33.9,31.8,31.7,36.7,38.1,33.4,32.5,36.8,37.4,35.5,35.4,35.0,32.3,31.9,36.7,30.0,34.7,35.5,35.4,30.0,31.6,30.7,32.9,37.8,38.0,37.6,31.8,33.2,31.5,36.0,34.8,38.2,33.6,33.4,32.2,37.8,37.5,39.7,35.5,31.4,28.6,32.0,30.8,34.7,33.4,30.5,32.6,33.6,37.0,34.1,31.9,35.9,34.6,35.3,36.0,32.1,31.8,38.7,32.0,33.7,28.8,32.7,36.0,32.4,39.2,32.1,35.6,37.7,32.6,34.1,30.0,29.3,29.3,34.8,56.9,30.4,31.2,30.5,38.1,36.0,38.0,36.4,31.0,35.3,36.0,32.1,35.9,31.8,34.0,31.9,37.0,31.1,39.0,38.0,32.5,31.3,30.8,31.9,38.3,37.9,35.2,31.3,33.6,34.7,36.4,35.7,38.0,32.7,32.2,30.1,36.9,34.3,36.0,31.7,35.7,30.8,30.5,37.3,35.4,38.1,36.1,35.2,30.6,37.4,39.9,30.5,35.9,37.7,37.3,32.4,37.1,32.3,37.6,32.3,35.1,36.7,31.1,35.1,33.7,32.6,32.9,33.1,28.8,32.4,31.0,32.5,39.4,39.9,37.6,36.3,32.7,38.2,32.3,39.0,37.4,31.2,35.3,34.0,32.4,34.3,34.8,35.1,38.9,36.8,38.4,32.0,30.3,34.0,34.7,29.6,35.7,29.1,32.2,33.0,34.7,36.8,32.8,32.2,32.2,30.5,30.2,31.7,31.0,30.4,32.8,37.6,35.8,31.8,29.8,35.5,31.5,36.0,32.6,33.5,29.3,37.0,36.9,34.2,33.0,30.9,29.4,36.6,37.7,32.9,32.2,36.6,29.1,30.2,32.0,31.9,38.6,35.5,28.5,37.4,36.5,37.3,36.6,36.2,30.0,33.0,30.8,36.0,36.6,31.0,32.7,38.4,37.0,32.4,29.8,31.4,32.2,34.0,37.4,36.3,37.7,38.8,38.5,31.4,33.2,33.0,37.0,38.6,37.4,32.5,37.1,38.4,34.6,29.7,31.4,32.2,32.5,33.5,29.9,30.8,32.0,36.5,29.9,31.2,31.9,34.8,32.7,34.7,37.3,33.7,35.9,37.2,31.7,37.0,31.8,30.5,32.8,30.5,37.8,30.1,31.6,34.5,31.3,37.4,31.3,29.6,32.3,38.7,38.0,37.2,33.3,35.9,31.3,37.5,38.1,31.2,32.3,29.9,37.9,34.8,36.5,32.4,31.3,34.0,36.8,32.1,32.7,36.3,31.3,34.2,38.7,36.2,32.0,38.6,38.4,37.4,29.4,30.4,35.1,31.7,31.5,36.0,35.9,34.4,35.3,32.5,37.3,36.9,35.0,32.8,35.3,30.4,38.3,35.0,30.2,39.0,37.9,29.5,31.4,31.4,29.1,36.3,33.4,30.0,38.3,30.7,38.1,32.4,30.1,30.6,33.2,33.0,30.2,34.6,38.5,38.4,31.0,35.7,35.5,28.8,30.5,37.0,35.5,32.7,35.5,29.9,37.8,30.5,35.0,32.2,33.2,34.6,32.7,35.3,29.6,35.8,39.6,33.8,36.8,31.3,29.9,32.9,32.9,35.3,29.9,33.1,31.9,37.1,32.4,31.6,34.9,35.9,39.5,32.2,31.7,36.5,38.3,37.0,39.6,31.9,37.3,36.4,37.7,36.0,32.1,32.2,35.8,32.7,33.0,39.0,33.8,30.1,34.0,33.7,29.3,37.1,33.1,37.8,32.4,32.1,33.1,33.3,33.8,33.7,37.4,33.2,29.7,31.3,36.5,33.5,35.8,34.8,34.8,31.8,38.9,31.8,34.9,28.8,37.5,36.0,31.7,37.2] + }, + { + "position": 48, + "values": [45.7,46.9,51.2,50.6,46.7,47.3,47.2,48.6,46.8,46.5,40.3,34.4,47.0,40.5,46.6,44.6,40.5,45.4,45.1,42.2,43.6,46.9,44.2,40.1,48.7,43.1,43.3,40.5,34.4,39.9,46.0,45.5,44.5,53.0,35.6,39.5,37.6,46.0,47.0,39.5,38.2,36.6,45.9,40.5,39.5,46.6,39.1,47.6,44.7,38.5,46.6,39.7,42.4,50.6,38.2,50.4,47.3,44.6,54.6,52.9,51.6,47.2,46.3,40.2,36.1,47.7,44.8,52.1,41.6,44.7,43.2,51.9,43.8,47.0,47.3,45.9,46.6,40.3,42.0,43.2,46.8,44.6,45.8,45.7,44.6,43.3,44.0,35.2,38.8,47.8,44.4,43.7,47.2,57.7,36.5,46.7,42.4,35.3,40.1,41.5,41.0,43.6,46.6,42.5,45.6,41.0,42.1,40.9,44.0,44.6,47.3,46.0,48.1,44.3,44.9,46.7,51.5,42.4,46.6,45.2,44.0,45.4,43.0,34.4,47.2,45.0,48.5,42.0,39.0,42.2,47.7,39.4,42.6,47.3,51.0,45.8,44.7,44.6,37.6,36.4,46.4,37.8,46.8,41.9,43.0,39.9,41.3,46.7,45.9,46.2,44.8,45.2,30.4,49.2,41.5,47.3,40.7,43.7,43.5,41.4,44.6,51.8,45.6,46.2,48.1,46.4,47.6,45.2,43.3,39.9,40.2,45.9,39.9,43.5,37.5,44.9,42.3,46.4,40.9,52.4,49.0,44.0,115.3,43.0,50.4,46.8,48.5,37.6,46.1,48.0,46.1,47.0,52.1,40.9,41.6,35.8,50.9,46.9,46.5,37.0,44.4,46.3,47.1,35.5,47.8,42.3,36.2,46.6,45.5,46.6,39.5,47.4,39.9,52.0,45.9,37.0,40.0,47.6,48.3,41.2,44.2,46.9,45.3,42.6,42.0,41.5,40.4,39.1,46.2,43.1,41.0,46.5,36.5,46.7,41.8,44.8,41.7,45.4,44.1,36.8,48.1,41.6,46.4,40.6,47.0,48.0,35.4,46.6,37.6,45.0,46.5,36.2,44.2,32.4,45.1,43.0,41.2,45.4,53.8,43.0,46.0,41.4,45.9,50.0,39.9,40.8,48.4,47.7,47.6,44.1,36.7,40.3,51.6,44.7,42.3,48.4,45.2,38.9,43.2,47.7,44.3,43.1,41.8,45.0,52.0,34.5,40.1,46.9,50.5,40.3,37.0,45.5,44.4,41.2,47.5,52.9,42.8,46.0,43.4,35.8,51.3,52.6,44.0,48.7,51.7,31.6,47.7,44.8,54.5,47.5,40.6,41.6,47.5,49.2,47.2,39.9,44.4,41.8,46.8,47.4,35.6,46.0,47.5,50.0,47.2,47.1,37.8,46.5,38.8,43.2,50.7,38.2,41.3,39.6,53.3,47.0,40.1,49.6,36.0,47.6,34.4,45.7,42.3,48.2,46.0,46.7,38.3,43.7,53.1,45.0,41.7,41.9,46.7,37.0,49.3,41.2,46.8,46.4,44.6,42.0,47.3,39.4,43.3,44.3,46.7,43.3,46.0,41.5,54.9,36.0,36.7,42.9,43.7,45.3,49.5,43.7,40.1,42.8,46.5,45.3,39.0,45.0,48.5,48.0,45.2,40.5,40.8,39.6,45.7,40.3,46.0,45.4,44.1,41.2,44.4,42.3,47.9,52.8,46.9,47.0,47.1,44.4,43.8,41.1,39.8,40.4,48.5,42.9,46.1,48.9,45.5,49.0,43.4,53.8,40.8,49.7,44.2,47.2,39.4,40.4,47.6,36.4,45.0,41.2,40.7,42.4,45.3,43.4,52.3,43.1,47.8,38.1,48.5,41.0,43.1,42.9,34.9,47.3,46.1,47.6,46.0,42.0,50.3,48.1,46.6,48.1,43.1,45.4,45.3,44.1,41.9,39.6,40.9,47.9,48.5,53.3,51.2,40.3,40.9,37.4,43.5,46.7,42.0,39.2,42.6,47.8,39.2,54.9,41.2,44.8,47.2,44.7,41.7,49.5,37.2,48.6,49.9,43.1,42.6,41.6,41.0,45.7,45.7,42.6,43.2,45.2,47.2,45.8,45.2,42.7,49.1,45.9,66.3,48.6,51.0,58.9,46.4,49.4,49.4,44.5,45.1,52.1,46.1,44.7,45.5,36.1,37.9,51.8,42.8,45.1,55.2,44.1,44.2,49.8,46.4,51.0,45.7,62.3,47.0,46.7,51.0,42.4,45.0,45.6,46.6,40.4,41.6,41.4,36.2,43.8,45.3,46.6,48.8,48.9,46.0,45.8,44.7,45.4,44.2,47.4,42.7,46.2,41.4,48.2,37.2,42.4,44.9,48.4,43.9,49.8,43.2,42.7,46.0,44.6,40.4,48.9,39.4,37.3,58.0,46.2,43.4,45.6,45.2,47.9,45.3,42.6,36.7,47.2,38.6,42.7,50.7,39.4,50.0,44.8,44.0,40.2,47.2,52.3,44.5,46.7,43.3,46.7,46.3,47.0,44.7,39.2,40.3,43.1,43.7,43.2,44.2,43.5,36.5,40.2,42.7,45.6,42.1,45.6,38.1,49.9,43.1,48.7,41.8,45.5,50.6,46.1,45.3,47.9,39.9,48.2,36.9,45.4,45.2,41.1,39.3,45.0,44.0,39.5,39.5,38.4,40.8,50.9,43.3,41.3,40.0,42.9,41.5,44.7,38.0,46.4,52.3,38.3,43.6,38.1,42.3,40.1,41.5,46.8,39.9,43.6,44.6,48.1,47.2,44.2,41.6,50.1,46.6,45.8,43.3,41.8,43.3,31.5,46.0,44.7,44.3,41.4,41.3,47.7,48.5,40.1,39.0,41.1,49.0,42.1,45.6,52.6,38.7,52.3,42.6,50.1,47.6,41.8,39.3,41.7,45.7,43.1,47.5,50.5,45.7,45.7,47.7,57.6,41.3,41.5,51.4,40.9,47.3,40.5,35.6,39.6,42.7,43.0,46.0,46.6,47.9,47.8,40.9,40.0,45.7,46.5,47.3,44.6,40.5,38.0,47.4,43.2,51.9,47.4,37.7,48.4,45.0,45.3,46.3,43.2,37.2,41.1,41.7,50.5,52.9,42.1,48.8,49.3,36.2,43.0,42.9,51.3,44.1,38.4,41.8,46.0,45.6,46.9,36.3,47.7,42.5,40.7,45.2,43.7,40.6,42.7,46.9,36.1,38.7,47.3,35.5,46.0,41.4,39.8,53.3,50.9,53.2,48.5,41.6,41.9,40.4,42.2,46.4,47.0,46.2,34.2,44.7,48.1,48.5,48.1,39.5,47.5,43.4,46.4,35.1,46.6,43.7,42.4,45.7,47.4,38.3,47.6,42.3,45.4,40.7,44.9,43.9,43.5,45.8,41.8,37.3,41.6,48.4,44.8,41.5,44.4,42.9,44.7,46.3,57.3,46.9,45.8,41.3,53.0,38.5,38.0,41.0,42.7,40.7,40.5,43.4,41.6,52.0,35.3,51.6,47.5,46.3,36.0,43.2,43.6,47.2,43.9,38.6,41.1,42.3,46.5,39.8,44.7,41.0,49.1,52.7,46.6,42.8,43.4,44.4,40.6,46.0,32.4,45.0,48.1,49.0,45.5,43.9,39.1,42.8,40.3,46.8,42.2,42.9,43.6,41.8,42.5,42.6,47.2,54.0,56.5,46.4,44.3,36.6,45.3,47.9,47.4,45.5,39.7,42.1,35.6,47.5,45.6,42.7,49.9,42.7,51.3,52.0,50.0,38.2,45.7,47.6,41.2,46.4,55.7,41.6,42.5,46.3,45.8,38.8,47.5,39.8,38.7,48.2,44.8,41.2,40.4,47.8,45.4,46.4,35.7,36.7,36.9,52.5,46.0,47.5,39.2,46.2,40.0,54.2,41.7,36.5,39.5,42.1,37.1,47.9,40.3,46.2,41.2,44.1,43.2,44.1,44.8,45.8,40.8,44.8,41.8,45.0,37.9,46.0,41.4,41.6,42.9,47.9,44.0,47.3,40.5,47.7,44.1,44.5,48.2,44.2,46.4,46.7,43.4,47.9,42.3,43.2,47.2,44.6,46.4,40.2,45.3,40.4,45.8,49.3,38.0,47.2,46.7,42.2,37.1,43.9,44.9,44.0,50.7,48.6,35.1,43.4,45.1,46.0,45.8,43.7,44.3,40.7,46.3,45.1,39.8,47.4,40.8,46.6,40.6,46.4,39.3,37.0,41.1,44.7,48.1,39.4,35.1,41.7,42.5,47.5,51.4,46.6] + }, + { + "position": 49, + "values": [45.1,43.7,45.6,42.7,45.7,45.7,47.0,46.5,42.4,45.9,44.8,42.0,48.4,45.2,46.0,43.0,42.6,45.2,43.6,42.6,42.0,45.3,45.0,46.8,42.0,43.9,46.9,44.2,43.6,44.0,45.6,45.2,44.3,46.0,43.6,43.8,38.7,49.7,46.0,42.5,46.7,39.4,45.3,41.7,45.1,43.0,45.3,45.6,43.6,46.3,45.9,49.0,49.3,44.9,41.7,49.2,45.4,43.9,50.9,45.1,48.7,46.0,44.1,45.5,44.4,47.0,45.9,48.3,44.2,45.3,50.8,44.1,45.4,46.8,45.8,45.6,48.1,44.3,45.9,46.1,46.1,44.2,45.9,43.0,42.5,43.8,49.1,43.9,44.9,44.4,48.2,45.2,47.6,48.9,43.4,46.3,48.9,46.6,46.9,40.6,43.3,44.7,45.3,45.9,44.3,46.3,48.8,44.5,47.4,44.1,44.1,43.8,45.2,41.5,43.8,44.8,45.7,44.9,45.7,45.1,43.4,45.7,41.6,40.9,46.0,50.5,47.2,57.8,44.8,43.6,46.5,43.8,46.6,47.6,46.5,45.9,48.7,44.1,43.2,44.8,45.0,43.3,44.6,48.0,45.3,45.2,43.7,44.9,44.5,43.6,42.5,42.6,38.9,43.3,39.8,42.4,46.9,46.1,46.4,48.8,45.9,45.2,45.0,43.5,47.4,46.9,44.9,44.9,44.7,44.5,43.3,49.1,42.1,46.8,43.8,43.7,44.0,41.5,44.3,49.4,47.5,47.7,47.0,42.5,52.3,42.5,45.3,44.8,45.9,51.0,45.4,47.9,49.9,43.9,45.4,44.0,44.4,43.7,84.4,42.9,42.4,46,46.0,44.9,46.7,40.6,42.9,45.1,47.5,47.2,43.6,46.3,47.0,43.9,47.3,45.8,43.0,45.5,47.8,46.0,46.0,45.8,47.2,43.8,42.5,42.2,44.5,42.3,46.5,43.6,43.1,46.5,44.0,46.1,42.9,44.1,45.8,45.6,43.8,45.4,47.5,46.8,45.7,42.9,47.6,42.4,42.5,45.5,46.8,43.8,38.1,43.9,43.5,41.3,45.2,45.6,44.3,43.2,46.4,43.5,42.9,43.2,42.3,44.8,45.2,44.4,44.5,46.2,45.5,44.3,42.6,46.2,43.1,46.1,41.7,42.2,48.9,45.7,51.9,45.6,42.7,44.4,42.5,43.3,44.8,39.8,44.0,45.5,42.5,48.8,43.5,42.9,45.9,43.0,49.6,46.4,45.1,46.2,44.3,42.0,48.1,47.4,48.4,45.4,49.2,45.0,43.4,48.7,45.1,46.5,43.0,43.1,37.6,48.0,50.4,42.1,42.9,41.9,43.9,46.8,44.2,46.4,49.1,43.5,43.7,45.3,44.3,42.7,48.9,34.8,44.6,48.5,42.6,44.7,47.5,58.5,42.9,42.3,44.7,43.3,37.3,45.0,43.0,44.1,45.9,45.6,42.1,47.4,47.9,45.4,47.0,41.6,45.5,43.8,48.2,45.1,45.8,43.0,44.3,45.7,43.2,41.1,44.2,46.7,44.9,45.0,43.0,45.9,41.2,41.3,44.9,44.6,43.3,45.2,46.4,43.0,42.0,45.1,45.4,44.2,43.3,48.8,47.1,49.1,42.6,43.9,44.8,45.9,48.1,42.6,42.6,45.1,45.7,44.5,45.1,50.7,46.3,44.1,44.6,52.0,46.9,42.1,45.0,44.3,49.1,39.9,43.6,44.2,49.1,47.3,47.7,44.9,48.3,45.1,51.4,48.9,42.3,45.5,44.9,42.0,48.4,43.8,44.2,46.0,43.1,46.7,42.8,41.9,44.7,48.4,47.9,44.4,49.1,44.5,41.3,47.1,33.3,46.6,43.2,45.4,46.7,46.8,46.7,39.0,43.2,45.9,48.8,42.8,48.6,46.2,44.4,41.2,43.4,43.4,53.8,47.8,45.4,47.2,45.1,41.2,45.7,45.8,47.6,48.8,44.1,46.1,42.9,49.1,45.0,43.8,38.7,45.8,42.6,44.8,45.6,46.5,48.3,42.9,48.5,46.6,52.5,42.9,45.7,46.1,45.3,46.1,46.8,42.2,42.9,45.6,47.8,45.6,48.3,57.5,40.0,64.9,48.2,46.8,45.1,45.4,44.2,45.9,45.3,44.8,42.6,41.6,43.7,47.6,45.1,45.4,48.8,43.7,44.1,46.6,43.5,45.0,49.0,43.4,42.5,45.6,44.7,45.9,44.5,42.7,43.5,42.7,42.6,43.8,41.9,43.7,43.4,46.2,46.6,45.1,46.9,49.0,45.6,47.7,42.9,45.8,45.7,46.7,43.4,44.9,45.3,43.2,44.8,46.3,43.8,42.4,45.8,46.6,44.7,44.8,44.6,43.5,44.0,47.2,43.5,44.5,42.9,45.1,46.4,47.5,46.5,42.3,44.3,42.6,42.9,46.3,42.8,47.6,41.1,43.3,46.1,42.1,46.3,48.7,43.7,44.3,45.2,44.2,58.5,44.7,45.1,45.9,44.3,41.0,43.5,46.2,44.3,45.3,42.9,46.5,48.5,41.0,45.5,43.6,46.0,46.8,45.8,44.3,43.6,43.9,45.6,44.4,45.4,41.1,47.3,43.7,43.9,43.6,46.8,46.4,44.4,45.0,50.8,40.8,41.8,43.1,66.1,43.0,43.0,44.1,43.3,44.2,43.9,44.3,40.7,44.4,47.8,43.8,45.9,42.8,45.4,43.7,44.0,43.5,45.8,42.7,46.0,44.6,42.9,41.7,43.6,45.2,45.8,43.3,44.1,47.9,46.9,43.2,45.2,45.6,44.5,44.7,42.6,47.7,46.9,42.4,44.3,46.4,42.1,45.2,44.7,47.2,42.1,47.6,44.4,43.5,46.7,47.4,39.9,45.7,48.1,45.3,45.4,45.7,43.5,48.0,45.0,48.9,43.1,42.6,46.5,45.7,44.6,41.8,44.8,43.7,41.4,42.5,45.2,45.3,47.6,48.2,50.2,44.1,44.4,44.0,46.1,44.3,42.4,46.1,42.6,46.8,47.9,46.3,43.1,46.8,43.2,43.7,44.7,46.2,43.5,44.1,33.5,45.0,41.2,43.4,44.8,47.4,45.7,44.1,43.7,43.0,45.7,43.7,44.3,42.7,41.2,45.9,44.5,47.3,42.5,42.3,45.1,45.6,44.6,42.8,45.9,42.4,46.9,44.2,45.1,44.7,43.2,42.3,48.7,47.1,46.8,46.5,46.7,40.9,43.4,46.1,43.1,44.5,45.6,41.7,42.2,47.7,46.2,44.8,40.8,44.5,45.4,46.1,42.7,48.9,45.3,45.7,45.0,46.7,45.1,43.7,43.5,44.2,44.9,41.3,45.1,45.4,47.4,45.9,45.7,43.5,44.6,44.0,50.8,47.4,45.3,44.7,43.3,47.8,44.6,42.0,45.6,43.8,40.7,40.5,40.5,43.9,45.1,44.7,42.7,45.5,46.7,40.7,44.3,47.9,46.6,42.7,43.6,42.3,47.0,41.2,42.9,44.9,43.1,45.9,45.7,43.6,47.8,46.7,48.9,45.2,43.5,44.4,44.8,44.8,45.0,48.3,41.6,46.2,51.1,50.1,43.8,48.5,41.7,43.9,43.9,37.8,43.3,43.3,44.2,45.0,43.9,46.2,44.4,43.0,46.1,46.3,44.7,42.1,47.1,45.3,44.4,42.2,43.1,41.0,45.2,45.8,46.6,45.8,44.2,46.0,44.6,45.7,41.8,45.5,45.1,46.9,42.2,47.8,45.5,43.7,46.9,45.5,43.9,42.1,45.5,41.6,47.2,45.1,40.7,45.9,42.9,45.1,46.0,43.4,43.3,43.5,45.6,45.9,45.6,42.9,44.9,43.3,49.0,42.3,42.7,41.9,45.9,36.0,45.8,41.5,41.6,44.6,45.7,47.1,45.4,44.2,46.3,44.0,45.2,40.6,45.7,47.8,46.9,44.4,42.4,42.3,44.5,46.0,47.9,43.7,45.5,44.4,44.0,43.8,43.7,44.6,46.0,49.8,47.2,45.0,42.2,44.1,51.3,46.9,41.6,44.8,50.0,47.0,46.3,45.8,43.4,46.0,46.2,41.6,45.9,42.7,44.1,46.0,44.9,41.0,44.9,44.4,44.3,45.9,48.9,43.4,43.5,43.1,45.5,46.4,46.1,40.3,40.9,42.6,45.4,47.8,45.3,44.9,42.3,45.2,44.6,45.8,42.9,44.1,47.7,43.7,43.2] + }, + { + "position": 50, + "values": [53.4,48.0,44.8,50.9,52.0,48.6,52.7,53.9,49.7,53.1,52.2,54.4,47.7,54.5,48.8,56.5,47.2,54.8,51.1,52.8,51.5,53.0,49.9,50.5,55.1,43.9,52.4,51.2,47.8,50.5,56.8,55.5,48.5,51.2,48.6,46.1,54.1,50.8,53.9,54.3,54.2,41.0,50.0,50.7,55.9,48.9,49.4,48.2,53.0,50.2,52.7,42.4,49.8,50.7,51.4,44.5,49.0,54.2,49.3,52.6,53.6,55.0,43.8,50.3,52.5,49.8,50.3,52.7,47.8,50.7,53.4,60.0,48.5,49.8,59.3,50.7,52.7,45.2,52.9,48.3,49.0,53.4,49.6,54.9,50.5,46.9,47.0,49.7,49.4,49.3,49.6,49.9,54.9,50.6,41.8,48.2,47.1,51.4,50.6,48.5,42.3,58.2,51.3,51.9,51.2,53.0,50.3,50.1,53.4,51.2,52.6,54.0,56.7,59.4,51.7,53.0,51.7,50.8,45.8,48.2,55.1,49.8,51.4,46.4,57.4,51.4,49.8,47.6,55.1,51.7,56.2,53.6,52.5,56.1,54.8,54.3,47.0,52.0,50.6,48.2,51.1,47.4,55.1,49.0,50.1,58.1,47.4,50.2,48.0,49.2,51.6,47.7,40.9,54.7,44.9,53.5,54.7,54.3,56.7,57.5,54.3,54.2,51.6,50.4,58.8,54.8,57.3,51.9,53.1,53.3,54.5,48.5,46.2,47.9,46.4,49.8,48.6,49.3,50.4,58.2,52.5,61.7,58.6,47.5,57.3,54.5,51.9,41.9,51.8,49.4,50.1,57.2,53.2,43.6,55.2,48.1,54.4,49.8,74.4,48.7,48.9,49.2,52.5,45.3,52.1,40.6,53.1,48.7,49.7,55.7,48.3,45.9,48.1,50.3,48.6,48.9,51.6,51.6,49.8,53.4,50.0,49.7,50.9,50.7,54.0,53.2,57.0,36.3,54.0,62.4,47.3,54.3,50.6,50.5,50.9,51.3,55.0,53.6,53.4,48.1,51.7,43.9,51.8,53.9,51.5,52.9,49.8,51.8,51.4,52.7,49.1,46.1,56.2,39.0,49.3,50.2,51.2,47.8,53.1,51.9,55.2,51.8,50.6,47.9,50.3,49.5,55.7,56.2,48.9,57.1,52.4,56.9,52.8,49.3,52.4,53.0,52.3,48.3,51.2,52.7,50.8,50.9,54.3,50.7,51.9,38.3,40.5,43.3,53.4,50.3,54.2,49.0,55.6,51.4,53.5,49.1,47.2,53.2,49.2,51.5,59.6,60.9,50.4,55.4,53.3,40.2,50.3,52.8,60.3,55.0,50.4,54.0,47.6,46.7,54.7,49.6,49.6,44.2,53.5,50.9,49.3,54.6,46.1,50.7,56.0,52.0,54.1,44.6,44.7,50.0,54.8,47.5,50.4,50.7,51.4,47.4,49.8,45.8,46.9,54.4,37.7,49.9,52.2,52.0,51.3,51.9,47.5,45.9,52.1,49.8,48.5,48.7,52.4,50.9,54.3,52.5,52.6,56.8,54.0,53.4,44.9,51.2,51.2,52.2,53.6,48.9,46.7,58.6,58.1,53.0,49.9,53.5,49.9,56.8,52.7,52.0,48.8,50.6,51.5,49.3,46.8,48.2,56.1,51.4,47.9,54.1,56.1,46.9,55.9,45.7,53.4,49.7,48.1,45.4,52.0,52.5,53.8,72.3,53.4,56.0,49.2,50.9,59.3,47.4,52.6,50.4,56.1,50.9,50.2,55.4,51.8,49.7,49.8,58.2,46.2,51.9,52.3,53.4,53.9,51.2,50.4,40.1,55.3,48.3,48.3,51.6,52.9,53.8,51.7,45.4,49.0,57.1,51.0,53.7,49.2,43.8,50.8,47.9,50.5,54.0,46.9,53.0,61.2,42.5,53.1,55.3,44.6,56.2,47.5,50.9,47.4,53.6,48.9,51.7,51.9,43.6,53.9,49.9,48.1,49.9,49.9,49.0,44.7,47.9,48.6,56.0,44.6,49.8,58.5,29.2,51.7,55.8,49.8,59.6,48.9,53.9,57.5,44.5,47.2,48.2,53.4,49.2,50.1,51.3,44.6,46.1,49.1,56.9,48.2,51.5,49.9,50.8,54.4,52.6,55.3,59.0,53.3,51.3,54.5,49.7,54.0,44.9,51.2,53.2,50.0,51.3,47.1,57.3,52.3,52.0,62.8,48.6,55.1,50.7,51.7,52.5,58.5,48.4,52.4,55.6,52.4,51.9,54.1,45.6,58.9,45.2,50.4,52.6,49.9,53.1,48.0,49.8,49.8,53.4,52.1,51.1,47.2,53.4,52.7,52.3,56.1,50.4,52.2,54.3,52.0,53.3,47.6,50.6,51.9,55.2,49.1,53.2,51.3,56.8,52.6,53.9,50.0,53.0,53.1,49.8,52.2,47.1,51.2,51.8,50.0,49.6,48.9,54.2,48.7,51.9,56.7,41.0,55.1,51.7,53.6,52.3,52.6,56.3,51.0,50.9,51.9,51.9,47.4,49.2,54.1,46.7,47.4,48.0,53.2,53.1,54.2,47.1,49.6,51.6,48.8,41.8,55.9,51.1,45.9,51.6,48.6,56.6,52.5,53.9,53.6,51.7,49.9,50.4,49.2,51.9,43.6,50.8,52.4,49.9,49.5,54.0,48.5,50.4,53.7,45.5,46.0,70.5,50.3,50.2,46.6,51.6,52.0,54.1,48.8,52.2,55.9,44.8,50.7,53.8,45.3,50.7,51.2,46.5,50.2,49.1,43.9,52.7,56.4,48.3,50.4,48.9,51.1,54.5,51.4,42.6,51.1,46.8,53.4,51.1,56.8,50.0,52.0,51.1,57.3,51.5,51.4,49.4,47.8,48.1,50.2,55.7,44.8,60.3,50.1,47.7,49.6,53.1,51.7,47.9,52.4,44.5,49.2,54.2,57.5,51.8,53.7,51.2,48.8,49.8,53.3,51.7,49.2,51.3,50.2,53.0,52.8,51.4,49.2,53.2,53.3,50.3,50.8,48.7,47.8,53.8,56.5,45.6,54.8,46.1,46.7,46.1,55.9,56.0,49.1,47.3,50.0,56.1,56.6,53.0,61.3,51.5,50.7,50.5,49.0,48.8,48.7,50.4,49.8,51.7,54.7,51.9,50.3,53.8,52.4,57.7,59.7,58.3,50.6,50.9,50.7,52.1,60.7,53.3,44.6,46.8,51.9,47.9,48.8,46.9,49.2,51.2,53.2,54.4,53.2,55.3,55.6,50.8,51.4,47.8,52.6,50.7,50.1,49.9,49.7,50.1,49.7,52.6,48.8,47.3,54.0,48.9,48.0,49.1,43.1,51.2,51.0,53.4,47.4,55.6,56.4,53.9,48.4,51.9,43.2,49.3,50.2,51.0,53.6,53.1,48.9,50.1,55.1,48.0,49.4,50.7,53.6,54.4,47.6,52.9,53.5,56.9,49.3,56.9,50.7,45.1,51.6,53.5,44.1,50.8,46.6,55.2,51.5,42.7,50.8,47.7,55.8,49.9,52.6,50.4,47.9,50.4,46.3,53.9,51.0,53.9,49.0,50.0,47.0,59.6,54.7,56.4,49.3,52.1,50.1,46.6,48.1,38.7,56.8,49.3,59.3,50.9,51.3,50.1,51.8,49.1,52.3,48.1,53.3,50.8,51.8,49.7,52.0,50.2,50.9,63.3,53.3,50.4,47.0,50.7,52.7,56.1,47.4,50.5,48.5,48.7,47.2,51.6,52.3,47.1,51.1,49.9,42.2,51.1,53.3,47.8,52.4,51.9,54.2,49.7,57.3,49.8,55.9,50.9,52.0,49.1,53.5,51.5,51.7,54.9,51.0,50.9,51.5,56.3,50.3,55.2,51.9,46.7,51.0,48.2,47.9,50.9,50.1,51.8,57.6,46.9,51.2,48.7,41.1,50.8,51.4,47.5,54.6,47.6,50.3,51.4,52.3,52.6,55.5,56.1,48.6,53.5,53.1,51.8,48.1,49.9,51.3,52.6,51.3,51.8,48.9,51.7,60.9,47.8,48.1,48.8,48.7,51.3,52.6,54.0,49.6,49.4,49.2,49.8,49.0,50.1,48.2,52.2,52.6,53.3,54.3,50.5,48.0,52.2,48.3,39.6,54.2,48.1,52.9,54.2,53.6,45.4,52.0,52.5,52.0,56.3,55.8,52.9,43.4,53.8,54.2,49.6,54.0,47.9,53.0,60.3,49.5,53.1,47.8,48.5,50.5,48.5,52.9,41.9,49.9,51.5,57.6,52.0,49.0] + }, + { + "position": 51, + "values": [32.0,30.0,31.3,30.5,28.5,30.1,29.7,32.6,30.7,31.3,30.5,28.5,32.4,30.1,29.9,32.7,29.7,31.5,30.4,28.9,31.5,32.4,31.1,31.4,30.8,31.6,31.8,30.8,29.3,31.0,31.5,32.7,29.7,31.8,31.0,30.0,29.3,35.3,32.4,29.2,30.7,26.0,31.0,31.1,30.6,30.6,30.0,30.4,31.0,30.5,31.8,33.2,30.7,32.2,27.1,32.6,32.3,29.9,32.8,32.6,30.5,32.7,30.8,27.8,31.5,30.2,28.6,33.0,32.4,27.4,30.5,35.5,29.1,31.8,35.0,32.9,30.2,30.8,32.1,29.9,30.5,32.0,29.3,32.8,29.7,30.6,30.9,28.4,30.0,32.1,32.4,28.1,31.7,35.1,31.1,30.0,30.7,29.8,29.8,30.4,28.1,32.1,30.8,31.6,30.4,29.5,30.9,30.2,32.2,31.4,31.0,31.7,32.3,32.7,31.1,30.8,31.7,32.1,30.9,29.9,30.0,30.7,29.0,30.0,32.2,35.1,30.9,32.2,31.6,30.9,33.3,31.1,31.9,29.9,32.9,31.2,31.7,30.7,29.6,30.3,31.5,29.9,30.9,32.7,30.2,31.8,31.2,30.9,30.5,29.8,28.7,30.3,27.6,31.6,27.6,31.2,31.4,30.7,29.7,32.4,31.3,31.6,30.9,30.6,31.7,30.1,32.1,32.1,31.0,31.5,30.5,31.4,29.8,31.2,29.6,30.6,29.5,31.1,29.6,33.0,32.7,34.5,62.8,32.2,29.0,30.3,30.4,29.9,29.9,33.9,30.6,32.0,32.2,29.9,30.9,28.6,29.7,29.5,30.5,30.3,31.0,30.3,27.1,38.0,28.8,30.7,30.5,33.6,30.1,30.4,33.1,30.1,31.6,30.1,31.5,31.0,30.6,32.4,31.8,30.7,30.4,30.0,29.9,30.8,30.5,31.1,28.2,30.8,31,30.4,31.6,29.4,31.5,31.1,29.4,31.2,30.3,30.6,30.6,31.9,29.5,29.8,30.1,30.1,32.6,30.7,31.8,31.3,28.4,29.3,27.7,31.4,29.7,31.5,31.2,28.5,30.5,33.5,32.2,29.1,30.9,29.9,30.6,30.8,29.0,32.4,30.9,31.5,32.3,30.8,31.5,30.4,29.4,31.3,31.6,33.1,30.0,33.4,31.0,30.9,31.3,28.7,30.3,29.9,26.5,29.1,31.0,31.9,31.1,30.8,30.8,33.4,30.9,31.9,30.5,31.3,31.6,29.5,30.6,28.7,32.9,35.1,29.9,33.2,28.7,30.6,31.4,33.3,31.7,31.1,31.9,31.1,30.6,31.7,31.5,29.9,29.0,30.6,32.7,30.6,29.8,30.3,32.8,32.0,29.8,32.4,29.2,29.8,30.9,29.6,32.7,32.5,30.6,32.0,30.6,31.2,29.1,29.6,29.6,25.6,30.4,29.7,33.8,30.2,31.4,28.3,29.8,37.0,32.1,30.3,31.0,31.6,28.6,32.7,30.6,31.4,32.5,29.6,31.5,28.5,30.1,30.7,29.2,31.6,31.2,29.2,30.1,33.4,28.4,29.5,28.1,31.6,31.3,29.9,29.5,31.1,29.9,29.6,30.6,29.2,33.3,31.8,32.9,30.8,29.7,33.4,28.5,32.2,30.0,28.8,29.9,30.4,30.2,32.2,33.3,31.7,29.9,30.5,29.9,30.7,31.9,31.0,32.0,27.9,31.0,32.9,31.6,32.7,32.0,32.3,30.9,30.7,30.6,34.5,32.9,33.3,29.6,28.8,29.7,32.4,29.8,26.7,28.8,29.8,29.7,31.8,31.1,29.7,35.4,30.5,32.1,30.2,31.8,28.9,30.0,30.1,29.8,31.8,30.8,31.1,32.2,31.5,31.0,31.2,33.1,31.5,32.2,28.8,30.0,30.3,29.8,31.6,31.3,30.2,30.5,33.0,28.6,30.3,32.4,31.4,30.2,29.7,30.8,30.3,32.1,26.9,31.8,32.7,28.7,28.2,34.0,30.6,30.7,28.8,29.7,32.6,28.8,30.4,29.8,35.3,30.7,30.5,31.3,31.2,30.6,27.3,32.3,29.2,31.6,30.6,31.5,32.7,32.4,26.0,32.9,48.1,30.1,32.3,33.1,31.7,32.5,30.7,31.0,27.5,29.4,30.0,32.7,29.8,30.9,30.5,31.0,31.7,31.2,30.6,31.6,30.2,27.1,31.1,32.7,31.0,30.0,32.8,33.4,29.4,29.4,30.1,31.3,31.3,30.8,29.4,32.3,31.0,34.6,31.9,32.3,29.3,32.4,28.9,32.9,29.0,30.4,30.4,30.8,30.1,30.0,31.2,31.2,31.0,30.2,31.2,31.7,32.4,31.1,30.4,30.2,31.4,33.5,29.2,31.1,28.5,30.5,30.9,32.1,30.8,28.3,28.9,31.6,30.9,30.4,28.7,28.7,31.2,30.7,32.5,31.7,33.5,31.8,31.1,30.1,29.4,31.2,30.2,30.6,33.9,29.0,29.9,30.5,30.4,31.4,31.8,32.0,30.4,31.4,30.9,28.4,31.0,30.6,29.1,28.9,30.3,31.4,30.4,31.4,28.0,30.9,30.6,30.2,30.9,31.9,28.1,31.3,31.3,31.0,29.9,31.2,31.7,26.4,30.8,30.3,31.2,57.7,30.4,31.2,30.1,30.2,29.2,31.5,27.5,30.2,32.5,29.2,31.6,27.3,28.4,29.5,31.0,30.3,30.2,29.1,32.3,30.8,32.4,29.8,31.0,30.5,30.0,33.5,29.2,27.3,32.1,28.9,29.6,31.5,32.3,30.4,30.1,32.9,32.1,28.1,29.9,30.8,29.7,29.2,30.6,32.8,29.8,34.3,28.7,30.2,30.5,29.1,27.6,31.1,31.4,30.3,30.3,31.5,33.2,32.4,30.2,32.9,29.7,30.6,33.1,31.2,30.3,30.7,30.7,29.8,30.7,29.8,29.2,31.4,32.2,33.2,32.7,34.3,31.1,29.8,31.9,28.9,30.3,30.7,28.6,31.3,33.8,32.4,32.4,29.6,30.0,31.1,32.0,31.3,29.8,30.1,30.8,32.7,24.4,29.5,29.7,32.8,31.7,30.9,31.8,28.6,30.1,29.6,28.0,32.3,31.6,32.3,31.8,30.4,30.1,32.2,31.4,31.8,31.0,30.8,30.8,30.5,29.3,31.9,30.4,30.4,31.1,31.3,31.4,32.3,32.2,30.9,31.1,29.4,30.2,30.2,30.6,30.6,30.2,30.7,31.1,31.9,29.6,30.0,29.5,30.2,30.5,30.4,30.2,32.5,30.2,30.5,30.5,31.3,31.1,32.1,30.2,31.7,31.2,24.6,30.3,30.8,31.8,32.6,30.9,30.7,30.8,29.9,30.8,34.9,31.1,31.0,29.8,30.3,32.7,30.6,30.5,29.3,30.5,32.7,31.4,31.2,30.5,29.4,29.6,30.0,31.0,25.9,30.2,31.8,33.0,29.2,32.8,30.0,31.8,31.0,27.9,31.3,30.9,31.2,29.6,30.0,32.0,32.1,32.1,32.1,31.3,30.0,31.6,30.7,29.5,33.9,30.2,31.5,32.4,34.9,29.6,33.8,29.2,29.4,28.4,30.0,30.0,31.3,29.7,30.4,30.5,31.1,30.7,31.2,30.4,32.5,29.3,31.8,32.2,32.8,29.8,30.9,31.0,30.6,30.1,29.0,32.6,32.8,32.8,33.4,30.6,29.1,29.8,32.1,30.9,32.7,31.2,32.1,30.9,30.3,31.4,31.0,30.9,30.5,30.2,29.9,30.6,31.5,31.1,30.4,31.3,32.6,30.7,29.8,30.2,28.7,31.1,30.1,29.3,30.3,32.1,29.6,32.7,29.8,30.8,30.1,30.2,29.1,30.0,29.1,31.8,29.4,30.1,32.0,31.3,28.4,32.6,29.6,33.5,31.0,29.8,31.3,30.0,31.0,31.9,31.4,31.0,31.2,30.5,30.3,32.7,29.0,29.9,31.5,28.4,32.1,31.5,31.6,31.0,30.8,28.5,30.3,35.0,30.3,29.8,30.3,30.9,30.8,32.3,31.4,26.6,29.0,31.3,29.4,32.5,29.5,30.9,29.9,32.0,31.0,31.3,30.4,31.4,30.2,32.8,32.4,31.6,30.9,31.4,32.5,31.2,28.6,27.1,31.4,32.5,33.5,28.6,28.7,30.4,29.8,31.7,31.6,30.2,29.5,31.9,31.9,30.9] + }, + { + "position": 52, + "values": [84.4,78.7,83.1,96.6,105.6,85.5,81.7,91.2,82.4,88.6,77.5,84.0,83.1,83.7,82.8,84.6,84.9,89.9,81.8,88.6,82.6,93.9,85.4,80.2,90.5,82.9,84.5,81.8,72.1,83.4,87.4,89.3,76.4,86.6,76.9,78.1,75.4,87.7,60.3,85.3,77.3,108.4,85.6,83.4,90.6,81.8,85.5,80.1,90.8,84.3,87.3,85.8,90.3,83.5,85.8,84.1,91.0,81.3,83.9,79.4,83.4,89.5,78.8,92.3,80.9,82.0,71.9,77.7,70.1,84.7,92.9,80.8,83.5,92.9,55.5,88.3,82.7,87.0,88.2,87.3,89.1,83.3,84.0,52.3,78.4,83.9,82.9,75.9,85.8,77.8,90.1,74.9,85.9,86.8,90.6,85.0,85.4,73.9,81.0,83.4,81.6,77.0,83.8,81.0,84.1,83.1,88.2,90.7,67.7,84.5,84.0,90.0,84.7,85.7,89.4,88.9,77.3,95.5,84.4,83.2,84.8,88.3,84.6,83.8,87.7,89.6,78.4,91.6,84.6,82.5,76.5,87.3,89.8,80.2,87.0,89.9,90.2,77.4,84.5,82.9,82.5,81.7,78.8,87.0,115.9,89.9,83.1,90.9,84.5,83.9,78.0,82.4,80.8,98.6,81.7,83.8,85.9,83.6,77.1,79.9,81.3,89.0,90.1,83.0,97.6,90.3,90.1,83.9,76.8,95.8,89.0,65.0,78.7,82.5,73.5,76.4,82.9,80.2,85.9,84.6,87.5,75.3,76.4,86.9,91.9,119.2,82.5,80.9,84.4,84.0,82.0,83.4,79.5,84.1,80.8,89.7,93.3,108.6,82.5,77.7,81.8,90.5,82.6,71.3,75.5,84.7,77.6,90.4,83.2,91.6,82.1,87.1,85.1,83.7,85.4,82.3,80.7,89.7,84.0,85.2,96.8,82.4,80.1,83.7,80.7,82.1,81.3,73.1,85.9,87.1,86.9,71.5,90.0,79.1,87.8,82.1,85.4,75.2,81.9,86.7,88.3,80.8,81.7,86.1,79.0,81.5,84.7,93.5,80.2,86.8,87.8,84.5,88.9,93.2,85.2,78.1,70.7,74.2,79.2,104.9,86.0,85.4,90.1,86.7,81.9,74.8,91.2,113.0,90.0,81.0,81.5,82.1,85.5,92.2,90.9,82.2,87.9,80.3,104.2,82.5,84.2,81.7,68.4,91.1,87.0,74.9,103.2,84.8,85.7,85.1,84.2,82.3,85.1,81.8,85.0,82.5,82.3,81.3,84.6,85.7,77.0,91.6,101.5,106.6,76.9,90.9,85.3,81.3,84.5,85.2,81.9,89.4,87.6,78.3,84.1,84.1,78.5,87.3,88.5,85.5,77.6,75.5,101.3,82.1,89.4,87.6,53.2,77.7,84.0,71.1,77.1,86.2,89.3,82.3,85.5,77.6,93.2,90.8,86.3,94.3,87.6,83.6,94.9,89.4,81.3,84.0,78.8,83.0,98.9,80.9,79.4,77.8,62.7,74.9,86.0,89.1,58.5,53.0,81.2,90.9,84.3,78.0,81.9,80.6,82.4,86.9,85.8,96.5,87.3,90.3,70.9,85.5,74.9,82.2,101.8,81.0,84.4,82.6,81.5,84.4,76.8,89.6,82.8,83.5,85.9,84.2,94.1,74.0,78.3,91.6,92.7,83.8,84.7,80.5,83.3,82.9,92.6,113.9,84.8,83.0,86.7,81.3,92.0,82.9,78.9,102.8,82.8,79.5,86.4,80.7,67.4,85.6,94.8,81.6,94.7,85.7,87.3,79.4,73.1,80.6,89.3,75.8,90.6,86.5,82.7,85.4,73.4,83.4,83.7,90.7,87.9,90.0,85.0,75.6,83.4,86.1,73.4,87.7,85.8,90.2,85.8,75.3,86.1,94.0,83.3,85.2,84.6,86.9,84.3,89.5,77.7,85.9,92.9,112.0,102.0,93.8,79.3,73.2,80.0,82.2,83.4,91.2,85.0,76.8,89.1,82.9,90.4,84.2,95.0,42.1,90.9,84.9,86.8,114.6,72.2,81.7,86.3,78.9,88.6,81.9,81.3,91.0,82.4,83.6,86.6,80.3,81.8,91.1,75.5,82.7,89.9,86.4,75.6,81.6,83.1,108.3,83.2,85.0,79.8,75.1,74.7,83.9,85.9,85.1,83.8,77.6,79.0,82.0,79.7,82.2,99.8,116.8,83.3,91.1,86.1,94.5,88.2,83.3,80.3,88.7,83.1,81.6,81.8,80.7,92.0,103.8,81.2,80.8,84.7,82.7,86.3,88.4,74.6,56.3,88.7,85.8,85.3,85.7,74.7,86.1,93.9,89.0,83.2,54.6,85.0,81.2,90.1,83.4,84.7,86.1,80.1,87.3,82.8,91.0,78.7,83.8,78.5,78.1,94.5,82.3,80.1,85.3,86.2,85.9,87.8,72.3,73.9,83.9,78.2,78.1,87.2,99.1,60.6,61.3,86.0,86.8,87.6,85.3,63.3,81.0,89.7,83.3,88.1,77.6,63.7,77.4,79.3,90.3,80.5,84.9,83.6,87.3,79.0,100.9,79.1,72.5,86.2,83.5,83.5,84.3,89.3,88.1,82.6,84.7,94.7,83.6,86.9,91.2,78.9,73.7,83.7,92.1,95.5,85.7,76.4,83.4,90.6,78.7,81.5,85.2,80.3,94.6,82.0,79.7,79.3,101.0,62.3,77.9,84.8,75.0,82.5,79.6,81.1,83.9,93.7,77.2,81.2,78.8,80.9,75.1,87.1,82.2,88.2,86.8,83.8,80.3,94.6,81.4,92.1,95.4,84.2,76.5,77.2,89.5,92.0,81.7,79.0,90.5,89.7,86.8,85.6,77.4,79.0,84.6,82.3,84.4,94.7,91.2,81.7,83.3,85.9,85.8,82.0,82.1,84.2,84.9,84.5,88.3,88.3,78.9,86.1,75.2,90.6,85.3,87.2,79.8,83.2,86.4,75.8,83.8,80.9,82.3,85.8,83.2,91.2,84.7,90.4,88.0,83.7,85.7,85.6,90.8,82.3,92.9,91.8,81.8,87.2,75.8,85.4,85.4,78.6,87.6,88.5,82.3,82.9,81.9,71.8,71.6,83.2,80.9,64.5,83.9,75.8,83.6,85.4,88.1,82.4,80.5,87.2,107.5,105.5,54.3,86.6,87.4,80.4,84.1,90.7,83.6,91.2,86.2,82.9,80.2,79.4,89.5,72.0,81.7,84.1,83.3,85.1,84.3,114.3,84.4,82.0,84.6,84.6,88.8,81.0,64.2,81.7,85.9,59.6,80.3,83.2,95.8,78.2,87.3,79.7,87.8,87.1,87.6,80.2,80.7,83.5,84.7,91.0,87.6,97.1,84.9,86.6,89.4,85.0,78.2,60.8,82.5,81.3,83.0,87.2,79.5,85.8,86.0,86.7,88.8,85.3,91.4,80.5,52.9,95.4,82.6,88.2,97.5,85.4,87.6,81.0,88.3,85.2,83.4,83.1,78.3,86.0,88.6,90.8,72.5,86.8,86.3,91.1,84.0,80.0,83.4,81.6,90.2,85.3,83.3,85.1,94.6,86.8,91.7,82.9,83.2,92.8,80.8,76.0,107.9,87.2,90.0,91.4,89.5,79.2,87.5,79.2,81.1,85.6,90.0,89.4,80.5,82.2,76.8,83.3,83.9,90.3,72.0,82.1,83.9,84.9,90.7,88.3,71.0,79.2,81.5,89.7,93.6,95.0,85.8,86.1,72.5,86.8,74.9,82.3,77.0,76.6,88.0,83.9,84.3,84.7,79.8,86.1,79.4,87.2,82.5,90.3,83.4,88.5,80.0,81.7,89.1,85.9,86.0,81.5,86.1,85.1,74.8,79.6,76.3,87.9,86.5,88.9,84.2,77.9,80.2,85.0,89.3,87.8,79.9,76.7,77.9,85.0,86.9,74.8,59.5,82.4,82.6,81.0,85.4,73.4,74.2,84.9,74.2,83.9,81.0,81.2,103.7,82.8,87.4,90.4,84.9,80.4,79.8,63.0,75.6,76.4,81.4,91.7,85.8,91.0,81.5,83.4,85.7,82.1,63.5,86.9,85.1,90.0,89.0,70.4,88.6,87.8,82.2,82.6,80.7,84.5,104.0,89.5,81.9,82.9,86.6,94.4,76.2,85.1,79.9,62.7,90.2,53.1,84.4,84.5,78.7,89.3,81.1,80.5,91.8,82.6,82.9,89.1,84.0,94.8,78.7,81.2,83.8,79.6,84.6,77.9,79.7,90.8,82.2,81.4] + }, + { + "position": 53, + "values": [113.9,123.0,114.3,41.8,108.0,115.8,109.2,111.2,109.0,107.7,114.2,114.0,123.8,112.2,117.5,107.7,115.1,109.1,113.1,60.0,125.6,115.3,124.0,109.2,113.2,122.9,109.9,116.1,109.0,110.1,106.2,111.0,116.6,129.4,111.1,98.4,118.9,121.4,137.8,124.4,118.0,105.8,121.9,110.7,68.7,112.1,112.1,115.6,114.8,119.5,106.8,103.5,116.5,123.7,116.0,120.7,89.6,117.4,120.3,107.7,120.4,112.5,135.2,111.8,136.6,114.4,101.7,124.5,94.6,98.5,109.9,130.5,91.6,124.4,135.9,116.7,117.2,114.6,109.6,115.8,116.9,113.4,118.0,142.8,120.4,120.7,104.6,102.7,126.2,128.5,111.5,117.8,102.9,117.4,126.6,118.3,79.1,105.1,114.4,105.0,119.7,101.5,116.0,109.8,114.0,117.5,99.4,120.6,94.5,117.0,113.6,110.4,116.2,112.2,115.2,117.6,139.0,119.4,110.8,114.4,114.5,104.0,126.1,114.8,114.8,120.7,103.4,123.9,106.1,116.4,108.8,106.2,114.7,99.4,132.6,119.1,108.4,121.3,119.3,114.9,107.4,106.1,116.7,116.6,149.7,125.2,106.4,71.0,113.0,121.2,88.4,111.9,115.6,116.7,110.9,111.6,106.8,142.3,107.3,116.7,109.8,110.6,111.0,115.5,137.6,114.2,113.2,111.4,103.7,113.7,113.6,93.9,119.8,115.1,115.5,108.4,106.5,112.4,117.8,120.9,124.7,96.1,108.2,114.1,90.6,113.3,158.0,141.7,121.1,130.5,112.9,119.1,110.7,119.3,118.8,120.2,119.4,124.7,121.1,114.0,115.2,122.5,114.2,96.1,108.3,138.4,105.2,75.9,115.1,121.5,116.0,128.8,118.9,120.8,121.9,116.3,107.8,115.4,131.2,108.6,124.4,120.3,114.8,109.4,110.4,102.4,112.0,53.4,105.9,109.5,125.2,96.7,110.9,112.5,113.5,122.5,102.7,97.2,115.4,130.4,137.1,111.8,108.6,92.5,113.2,115.3,111.3,128.6,129.4,114.3,115.9,125.6,116.0,45.0,114.5,95.5,104.0,113.7,95.2,114.1,148.3,115.0,112.4,116.8,118.7,103.8,78.5,122.4,113.7,105.4,112.3,101.6,111.9,129.2,104.4,107.6,122.2,106.9,127.7,118.1,116.3,114.8,92.8,112.4,109.7,99.7,126.7,123.9,98.9,117.6,104.9,120.4,112.8,125.1,121.4,107.3,112.9,115.2,122.0,111.8,44.3,120.2,108.4,119.7,105.8,116.3,115.9,116.2,108.9,104.3,107.6,109.6,127.5,115.3,96.6,108.4,118.2,112.2,106.2,119.7,104.1,115.4,99.0,134.2,109.2,110.4,106.0,138.9,110.8,124.9,124.8,117.1,112.4,112.6,124.6,112.6,120.4,108.9,116.2,118.0,106.7,118.3,109.3,115.6,121.5,116.1,113.8,102.9,135.1,112.8,118.9,104.5,89.0,108.7,121.7,110.0,128.4,136.5,112.3,110.3,112.8,113.1,113.8,110.3,119.8,102.8,146.9,138.4,120.0,153.4,108.5,117.8,108.8,113.6,123.2,112.3,113.0,113.7,116.3,113.8,115.5,118.0,119.5,117.3,120.6,117.8,127.1,113.1,107.9,114.4,104.2,124.6,115.5,111.2,109.1,107.7,116.7,105.2,115.1,113.1,120.2,99.5,103.5,107.6,117.3,127.2,105.0,111.0,115.6,110.9,118.3,130.4,36.3,116.9,123.7,115.8,102.6,112.1,107.4,112.8,129.6,97.2,108.0,109.1,112.4,110.8,110.2,110.2,116.2,124.4,118.2,115.4,128.2,108.9,115.9,112.2,94.4,140.3,118.4,108.2,105.9,110.5,111.3,118.1,114.4,127.4,93.6,105.7,113.0,111.5,125.7,117.7,127.7,34.2,112.4,129.7,115.0,109.0,114.9,107.8,116.6,120.8,108.5,120.7,118.9,118.2,108.0,132.4,115.4,116.4,117.8,110.8,120.6,109.2,145.2,110.4,118.4,106.6,108.3,112.8,110.6,121.1,115.6,115.6,116.0,104.5,116.5,106.2,107.2,117.5,132.8,114.4,121.8,107.1,102.0,113.1,120.5,116.9,114.0,92.6,48.8,137.4,121.1,124.8,112.7,96.2,121.7,115.6,107.0,110.7,151.6,125.7,112.0,134.1,106.6,118.1,113.3,116.3,108.6,113.7,119.8,124.2,110.3,114.5,102.2,119.0,122.2,112.6,109.3,122.2,142.8,128.9,111.8,119.7,151.0,123.5,115.7,112.1,114.9,116.5,118.8,120.5,111.1,148.3,112.2,120.7,109.8,118.1,116.8,119.4,113.5,108.6,113.9,127.3,89.0,110.2,129.3,98.3,129.3,117.2,114.6,111.2,113.8,135.2,126.0,105.8,108.6,119.9,115.9,111.7,120.7,120.2,68.4,78.6,102.5,112.4,125.7,122.0,76.8,112.0,117.2,115.0,66.9,112.6,89.7,107.2,118.8,117.5,114.7,111.7,116.7,124.2,117.6,119.9,108.2,126.3,117.5,114.8,120.0,112.9,119.6,128.9,116.0,114.8,141.1,110.0,116.3,119.3,112.0,113.4,122.3,115.3,118.8,113.2,114.6,131.4,111.9,112.3,111.0,111.1,109.8,98.9,110.0,114.1,108.5,44.9,96.8,79.0,110.0,111.3,108.7,118.1,107.3,125.0,94.1,113.2,103.0,111.8,110.0,119.9,117.3,113.7,110.0,112.6,118.3,74.5,124.0,107.0,125.7,114.3,113.1,113.2,113.2,109.9,116.3,112.7,112.2,128.8,111.2,115.6,118.4,116.4,110.3,117.4,114.7,130.1,139.9,110.8,114.5,111.9,116.7,116.4,141.5,119.8,118.3,119.0,116.7,120.2,113.1,111.7,107.1,105.8,126.3,114.4,129.1,110.3,113.2,105.8,105.0,111.3,110.9,113.2,112.5,121.0,107.5,127.1,121.2,83.5,124.3,103.9,111.8,116.5,102.3,122.1,116.0,131.0,126.9,114.5,123.1,108.8,113.1,108.9,111.1,97.9,107.9,116.4,127.5,116.8,115.1,115.0,117.1,109.4,101.9,115.2,110.6,113.7,117.2,102.1,114.0,61.9,50.4,120.2,129.8,117.7,108.7,106.9,104.0,109.1,112.6,119.4,114.6,98.8,118.2,113.8,137.4,114.2,112.4,110.4,123.6,121.1,145.5,114.0,117.3,116.9,113.9,119.4,109.9,75.2,114.9,117.1,135.1,121.9,40.0,116.4,106.8,111.2,113.0,119.3,103.9,124.5,106.1,118.8,114.1,106.7,109.2,116.0,134.5,124.3,120.8,144.8,112.1,123.7,72.1,108.4,110.7,115.8,107.8,110.6,113.7,111.9,108.9,106.4,125.6,120.3,114.9,139.1,118.4,109.9,111.0,118.3,112.1,109.5,115.6,118.8,115.8,116.0,110.6,118.5,126.9,111.4,117.1,99.9,120.9,113.7,125.3,112.6,114.1,114.3,116.9,111.7,111.2,110.3,117.9,108.2,130.2,115.2,111.8,119.3,121.5,121.1,109.6,133.6,100.3,123.8,120.1,123.0,108.1,118.7,108.3,73.8,118.3,137.7,132.1,111.9,115.7,119.4,111.5,135.5,117.3,114.0,92.8,118.2,113.6,109.7,47.8,109.2,110.5,128.1,122.9,143.4,122.0,116.5,119.3,92.8,127.4,121.1,112.1,112.6,112.3,127.5,117.6,128.5,118.4,108.7,110.0,101.4,106.0,70.4,108.1,121.4,110.5,102.7,114.5,110.7,110.2,112.4,120.3,109.0,115.5,106.1,121.6,110.4,101.6,114.9,128.9,117.8,111.5,117.6,127.1,136.1,112.5,113.3,105.5,106.3,122.7,131.9,75.9,108.7,117.2,115.4,107.4,133.7,96.1,100.8,93.8,107.5,104.5,115.6,119.9,37.9,105.6,116.9,112.4,115.3,119.0,118.5,70.5,107.6,111.1,111.6,113.7,110.2,110.4,106.0,118.6,114.4,112.9,75.9,112.9,116.5,113.6,107.7,93.4,125.0,106.9,118.2,113.8,114.5,119.7,119.1,113.2,100.8,109.5,118.5,116.9,114.5,120.0,113.6,78.4,114.8,136.3,104.6,90.0,92.2,114.4,108.9,111.5,115.5,111.1,114.6,86.1,103.5,110.0,119.7,115.8,102.1,117.8,103.2,107.7,96.9,123.6,115.4,103.9] + }, + { + "position": 54, + "values": [33.4,33.5,33.3,31.6,31.1,31.8,31.9,30.7,34.3,31.0,31.0,29.3,33.3,32.1,29.7,32.2,32.7,31.9,33.3,31.1,29.4,29.3,33.4,31.9,30.8,32.8,33.9,30.5,29.1,27.5,30.6,33.2,31.4,33.3,31.4,30.4,33.9,36.4,34.5,35.0,26.5,30.6,32.7,34.9,33.7,33.6,31.5,30.8,30.5,31.5,29.1,33.6,34.1,32.5,27.0,32.6,32.5,31.9,33.3,32.9,35.4,31.3,33.2,31.4,30.9,32.1,29.8,34.0,30.4,33.5,27.8,32.4,30.9,31.9,34.3,31.2,34.6,33.1,32.5,29.8,32.6,31.7,31.1,32.8,31.2,31.3,30.2,29.4,32.9,33.1,30.6,36.1,30.6,31.1,33.2,32.3,30.7,30.0,31.1,31.8,29.5,32.4,31.4,33.0,30.8,31.2,33.1,31.8,31.9,33,32.2,31.8,31.7,32.1,33.2,29.5,31.1,30.4,32.0,32.7,31.2,31.6,30.9,30.1,32.0,35.4,33.9,31.7,31.9,31.2,31.6,32.3,30.0,33.2,33.7,29.1,32.5,30.5,31.3,33.1,33.2,31.8,32.5,32.0,30.0,32.1,34.2,34.0,31.1,32.1,30.6,29.3,28.9,31.5,32.4,31.0,31.5,29.9,33.6,33.1,30.3,32.8,29.5,31.7,31.7,31.8,31.6,33.5,31.9,33.0,31.0,32.0,31.5,30.9,32.2,30.4,30.5,34.3,30.3,33.4,33.9,30.5,31.4,27.5,30.0,28.7,31.3,31.8,35.8,31.9,30.5,31.6,32.4,31.8,28.9,31.4,33.6,42.3,30.9,31.7,30.8,33.4,30.5,27.3,38.5,31.7,33.3,34.0,30.5,33.5,32.2,32.4,31.8,32.6,33.3,32.1,32.1,34.0,32.6,31.1,31.9,31.0,31.0,31.8,30.3,30.6,32.6,31.2,32.2,29.6,32.4,31.7,29.6,33.5,34.2,32.1,30.4,30.3,30.6,31.3,34.4,30.9,28.7,29.4,33.5,33.1,32.5,32.0,28.0,30.1,27.1,30.3,30.5,31.0,31.3,32.8,30.3,31.6,33.2,32.0,27.3,33.8,32.7,32.3,31.1,30.0,32.9,31.8,33.0,32.6,32.5,31.9,30.2,32.5,32.3,30.0,33.0,30.5,32.0,31.8,32.9,31.8,29.2,30.4,25.2,30.2,30.2,31.1,31.5,33.3,32.8,31.3,33.7,35.3,32.8,33.1,32.9,32.0,31.9,29.9,32.0,34.5,31.7,29.8,32.9,30.6,31.0,32.0,34.0,32.2,32.0,31.3,33.9,30.6,31.4,34.2,32.0,30.7,32.6,31.8,31.2,32.4,31.7,32.5,32.6,31.0,34.6,32.4,29.9,33.8,30.1,33.1,34.6,31.6,34.0,31.7,32.7,32.8,32.1,30.3,25.1,32.1,30.8,33.4,31.2,31.7,32.1,34.2,36.9,32.1,30.4,31.9,33.8,31.4,34.3,31.1,31.1,32.5,32.5,23.8,28.3,30.6,30.3,33.1,29.4,29.3,30.6,31.6,34.4,26.2,30.7,32.1,30.6,33.6,30.0,30.3,31.0,31.9,30.8,32.9,28.8,34.8,33.4,33.6,31.6,31.2,35.6,30.2,32.2,35.7,29.8,31.1,32.3,31.9,32.7,33.5,30.3,30.1,29.4,32.3,32.8,29.3,31.8,28.8,30.3,33.0,33.6,31.5,33.7,31.6,32.4,30.9,31.3,32.9,35.9,33.9,34.7,29.7,29.9,30.0,33.3,29.9,28.2,30.7,31.7,33.9,30.0,31.8,32.6,33.0,33.0,30.2,29.9,32.8,32.4,32.6,30.7,31.9,31.4,31.9,31.7,33.2,32.3,32.0,32.6,33.6,32.0,32.2,33.1,28.8,31.8,31.1,32.7,34.8,28.2,31.8,33.5,30.9,32.4,37.6,31.2,32.4,32.2,34.4,31.9,34.4,30.0,32.5,35.8,28.0,30.7,33.3,32.4,29.5,29.7,31.9,32.1,30.6,31.9,33.1,35.1,31.0,31.8,31.7,32.9,29.3,32.7,33.5,30.0,31.1,33.4,31.7,31.7,32.9,30.1,21.9,33.3,32.7,33.0,32.1,35.2,33.2,31.6,30.7,32.4,30.6,32.2,34.1,32.2,29.9,33.7,28.7,32.4,33.0,30.3,32.6,32.2,33.3,27.3,32.0,30.8,31.1,31.8,31.3,26.2,30.5,32.4,31.9,31.8,31.2,32.8,31.8,33.0,35.5,32.4,32.8,29.1,33.3,30.8,31.5,31.6,32.2,31.9,33.3,33.2,31.2,30.6,32.3,32.3,32.1,32.8,30.8,34.2,32.5,31.6,32.3,31.7,30.6,32.3,31.1,33.7,30.4,32.8,31.8,30.5,29.4,31.0,33.2,30.3,30.9,29.0,31.9,32.8,34.2,30.2,33.4,32.9,31.8,32.7,31.8,31.8,30.4,31.7,32.2,36.1,28.4,29.8,34.3,31.6,32.4,32.5,32.5,30.4,31.3,31.6,32.5,30.7,32.3,32.4,32.4,30.7,33.2,30.2,31.3,27.2,33.1,31.8,33.5,31.6,31.4,32.2,30.8,32.5,32.6,30.7,30.9,32.7,31.5,30.9,29.4,30.7,49.1,33.7,32.9,34.1,33.7,32.3,31.1,31.0,32.3,34.2,32.1,32.4,29.9,33.4,30.2,31.6,29.2,31.8,29.9,31.1,32.7,32.1,32.5,33.3,32.2,31.9,33.2,30.7,30.1,31.9,28.1,31.1,32.1,33.2,32.3,34.2,32.3,31.9,31.6,30.0,30.4,33.0,31.5,32.4,33.5,28.7,32.1,30.2,32.5,29.5,26.7,30.0,31.7,30.6,35.1,32.7,32.0,34.0,32.1,29.7,31.8,31.7,33.1,33.6,30.1,30.9,28.9,30.8,30.8,31.0,30.9,32.8,30.8,29.3,35.2,35.8,28.5,32.7,32.9,30.2,28.7,32.6,31.1,30.6,32.7,33.2,31.6,31.3,34.2,31.6,31.5,30.3,32.3,28.9,30.8,35.1,33.3,27.7,32.1,31.6,32.6,31.4,31.1,29.3,33.1,32.4,30.8,27.2,33.3,30.6,30.9,31.3,33.3,32.3,32.1,32.5,32.6,32.8,33.4,32.0,32.1,30.1,34.3,32.2,31.4,31.3,28.6,33.2,32.9,37.2,33.5,32.7,33.3,31.6,34.0,32.0,33.7,31.9,32.5,34.2,34.5,32.3,34.0,32.0,31.4,30.3,31.0,32.3,34.6,31.7,31.3,32.3,31.0,32.2,31.9,29.6,32.4,31.0,33.5,29.9,30.7,33.0,34.7,30.7,31.2,32.9,30.8,31.2,31.8,34.4,30.8,33.9,30.9,33.2,32.2,31.4,30.2,29.9,34.6,32.1,32.7,29.0,29.0,32.0,30.9,33.0,26.9,30.9,32.9,33.1,32.1,32.9,34.3,33.3,34.6,29.9,30.4,30.6,30.5,31.3,30.4,32.6,32.2,33.3,32.5,31.7,30.8,31.6,31.4,31.1,32.6,30.5,32.3,36.4,33.5,31.2,33.3,32.3,34.4,30.3,28.7,33.3,34.2,31.4,32.0,31.6,30.9,32.7,32.1,30.7,32.2,32.8,30.5,32.6,34.6,30.0,33.8,33.1,46.6,32.8,31.6,32.2,33.1,30.7,33.7,32.2,34.3,31.9,32.6,31.9,34.4,34.0,29.8,30.6,31.7,29.3,31.1,33.2,32.7,31.2,31.9,31.7,32.8,33.3,31.2,33.3,31.1,30.3,30.1,31.5,29.7,31.5,31.4,31.9,32.8,32.4,30.7,33.0,28.7,31.7,31.7,73.4,30.9,32.5,31.5,31.3,31.1,32.4,33.1,33.5,31.0,31.4,31.1,32.9,27.3,32.1,31.5,31.6,33.6,33.1,30.6,29.5,30.9,31.4,31.2,33.5,30.0,29.2,34.2,34.6,33.1,30.9,34.7,33.3,32.3,30.5,32.0,35.2,32.4,32.3,30.3,29.5,33.9,29.7,30.7,32.6,29.4,31.5,30.7,31.3,32.9,31.1,32.7,31.8,33.7,30.8,35.3,33.4,32.5,32.4,30.3,33.5,32.3,33.8,32.1,31.5,30.6,30.0,92.5,32.6,32.6,26.5,31.0,32.6,31.8,32.9,32.6,33.6,32.3,33.3,33.8,31.6] + }, + { + "position": 55, + "values": [48.9,48.8,68.8,69.2,50.0,48.2,47.9,45.1,51.4,52.7,53.8,52.1,51.4,48.3,50.4,53.7,45.6,47.4,58.3,53.6,70.2,48.0,47.8,54.8,49.4,51.6,50.7,50.7,59.7,47.4,52.3,48.2,50.1,51.9,44.7,62.4,46.3,49.5,45.7,64.5,46.2,47.1,45.3,47.8,49.8,46.6,49.4,52.3,52.3,52.8,47.1,52.2,48.1,51.5,52.4,53.3,52.1,53.6,47.4,54.1,56.8,50.9,50.8,51.8,49.4,34.6,54.1,54.5,53.5,53.4,47.5,52.5,58.4,48.4,50.4,47.3,63.8,48.2,47.2,50.7,44.9,46.0,50.7,67.4,50.2,43.2,50.1,66.3,50.5,52.0,52.4,47.6,46.6,49.5,49.0,44.6,59.1,55.7,46.4,44.2,56.8,55.3,47.5,46.9,60.8,47.4,54.0,47.5,52.5,47.6,48.0,45.7,55.4,54.1,46.8,47.8,68.2,50.2,50.9,52.9,49.2,45.9,55.8,42.6,50.9,51.9,52.9,56.2,49.9,48.2,43.3,49.5,48.5,65.7,55.0,56.9,48.1,51.7,46.4,48.7,49.6,55.6,46.7,51.3,51.3,49.0,53.9,63.6,46.2,56.1,48.5,43.9,53.6,47.1,47.3,48.5,46.2,51.2,44.8,51.0,57.8,55.5,46.6,46.6,46.2,56.6,48.6,47.9,54.1,52.5,56.3,45.3,49.2,47.2,49.3,65.9,51.4,47.6,54.2,49.0,56.4,49.0,41.4,47.5,53.1,46.6,72.8,48.8,45.7,55.4,57.3,46.7,50.1,48.6,51.5,50.0,47.7,50.6,45.4,48.7,47.4,46.2,53.6,52.9,67.0,50.9,59.4,63.7,55.4,45.2,49.2,54.9,45.4,51.9,50.7,56.6,47.3,46.5,52.8,52.2,49.9,47.9,49.6,46.6,47.6,49.4,56.9,50.8,55.4,51.2,48.4,49.6,63.6,49.4,48.0,48.7,45.0,47.1,46.9,49.4,51.9,58.9,56.2,59.3,50.9,51.5,47.0,64.4,52.1,55.9,49.3,50.7,56.4,62.8,41.7,48.0,62.6,47.7,56.6,53.9,50.0,47.5,50.8,54.4,47.0,58.2,66.4,46.2,53.2,50.7,62.2,53.8,52.8,52.1,47.9,50.8,48.8,47.4,63.0,47.9,56.2,46.7,52.7,45.0,50.3,45.7,49.0,64.7,48.5,47.7,49.3,64.5,53.7,66.1,49.9,52.9,49.5,45.7,47.4,41.4,52.6,46.6,56.1,52.2,53.8,50.7,47.3,54.7,46.3,48.7,58.0,47.1,50.2,48.4,51.5,50.6,47.2,47.4,46.3,53.5,55.9,45.3,50.7,56.6,47.7,50.5,59.2,66.4,51.1,74.5,51.4,58.0,49.2,49.9,49.9,48.0,46.3,52.2,44.9,47.3,54.6,46.1,63.1,48.2,54.3,47.8,48.0,59.9,62.6,47.7,53.3,69.4,67.8,60.7,54.6,54.1,46.9,49.7,51.9,54.1,52.4,44.1,46.7,47.2,47.7,48.9,56.9,50.7,70.5,50.6,51.2,47.6,52.5,46.5,57.4,46.1,52.4,51.6,46.0,47.6,51.5,51.0,48.9,51.2,47.6,50.4,72.7,50.1,51.9,60.9,51.2,46.6,47.0,47.3,52.4,48.6,47.2,51.9,48.0,51.3,46.0,53.8,45.2,52.1,55.9,51.2,50.9,55.9,51.4,48.4,49.2,47.4,47.2,47.1,54.8,53.9,47.0,48.7,56.8,45.9,54.8,51.5,48.0,54.7,47.5,50.3,55.4,51.8,47.2,49.9,44.5,50.1,51.8,51.8,46.3,60.7,64.8,68.3,45.9,50.4,48.3,51.1,47.3,56.6,46.5,52.8,56.4,51.8,45.5,45.1,44.8,56.7,53.0,56.3,52.3,50.5,53.0,50.6,47.6,51.4,51.2,46.4,57.3,60.5,50.5,57.4,54.0,51.5,53.5,56.5,80.7,53.1,48.5,54.2,65.9,47.9,52.0,49.2,57.3,57.4,49.3,59.4,45.7,47.2,71.3,53.5,49.2,52.3,50.6,46.5,52.5,49.3,51.1,53.5,49.2,53.9,52.3,46.2,52.8,45.7,67.1,53.5,48.5,49.4,47.0,48.7,55.2,54.1,48.4,52.3,56.6,50.5,51.2,52.0,48.4,53.0,55.5,48.5,48.7,46.2,48.3,65.2,48.9,49.6,59.5,55.8,47.1,53.5,51.6,49.1,53.1,67.7,50.6,49.5,67.3,52.8,48.8,55.5,52.1,46.3,46.6,50.0,46.4,65.5,50.4,47.3,46.9,47.6,47.6,45.9,52.0,49.6,47.1,65.4,62.8,51.7,45.6,62.3,57.5,46.3,49.7,62.7,46.6,47.3,51.5,56.8,47.9,49.1,66.0,48.1,64.0,49.6,48.4,50.5,49.2,47.0,48.0,51.9,48.7,45.7,46.7,50.8,48.0,48.0,69.5,60.7,48.5,49.2,47.3,48.8,51.6,52.9,51.4,50.9,45.7,52.9,50.3,46.4,53.0,54.8,51.5,52.6,42.4,49.2,50.9,46.7,48.9,46.8,49.5,56.1,54.5,49.1,54.7,49.4,52.7,50.7,44.9,51.1,56.3,49.4,52.0,89.6,47.1,52.8,46.5,71.5,49.7,64.1,54.1,52.3,56.2,67.8,50.5,64.6,53.5,60.3,47.0,49.0,50.7,47.4,49.1,49.3,48.1,47.6,48.9,46.8,46.4,53.0,53.6,52.5,51.7,47.3,51.6,48.8,47.6,51.9,52.1,51.5,47.2,65.6,56.0,46.4,47.4,45.6,46.0,51.7,45.5,51.5,55.1,52.3,44.9,58.1,48.9,47.0,53.7,55.0,46.9,50.5,47.7,51.9,45.3,50.3,51.3,48.3,51.9,46.8,47.5,55.7,52.9,47.1,49.0,47.5,49.8,49.0,46.0,53.7,56.7,51.8,49.8,46.9,50.9,48.3,47.1,51.1,53.5,45.5,52.6,50.0,49.8,50.8,62.5,51.6,48.3,50.5,53.2,47.9,68.3,51.1,50.7,46.9,47.6,57.7,58.5,47.3,53.4,54.7,51.3,57.9,52.4,50.8,58.7,66.9,50.6,48.1,52.3,50.2,56.6,52.2,51.4,50.2,46.4,64.4,54.2,48.7,50.1,47.1,47.5,46.8,54.0,67.4,78.0,49.6,53.7,52.6,47.3,52.4,47.6,47.2,47.8,63.0,64.6,58.5,47.1,70.9,46.5,45.1,46.5,46.8,55.8,54.7,49.0,47.3,50.3,47.7,50.6,48.5,55.5,47.1,48.3,47.8,47.9,55.2,49.8,49.1,55.7,45.3,49.9,47.2,47.4,47.9,53.7,50.8,48.8,65.9,47.3,65.4,48.8,52.1,51.6,45.9,53.2,46.7,47.3,43.0,48.4,45.5,53.1,46.1,52.3,51.7,51.8,61.6,47.7,47.0,54.1,55.0,44.2,49.1,47.9,49.4,50.3,44.8,49.3,47.3,50.3,50.5,50.4,47.4,49.1,53.1,44.2,55.7,56.8,45.7,54.0,51.4,47.2,50.2,46.7,60.9,63.8,55.5,64.0,48.0,47.6,54.0,53.2,50.4,46.6,61.2,47.9,46.4,51.4,46.5,64.7,50.0,50.4,52.4,45.9,84.2,47.6,46.3,46.1,46.0,48.3,49.4,51.6,49.4,54.8,52.5,45.6,64.4,59.7,46.1,57.4,46.8,46.3,64.4,51.3,45.6,46.9,51.1,53.5,51.9,47.2,47.7,48.6,49.2,50.6,45.6,50.3,68.3,50.4,46.0,58.1,51.4,50.3,48.7,50.9,51.5,52.3,51.6,50.1,26.3,47.0,56.0,71.5,49.6,51.3,49.1,51.2,68.7,45.9,58.8,45.5,47.2,43.5,54.5,49.4,62.7,43.6,49.6,47.9,52.2,49.5,49.1,49.1,44.3,48.4,48.1,45.9,58.8,49.7,47.3,46.1,47.9,57.7,45.8,53.9,45.0,47.3,49.1,55.6,46.7,55.2,51.5,45.6,48.6,46.6,60.7,58.8,56.3,49.5,50.2,48.7,50.1,47.0,51.8,57.4,47.4,46.9,51.8,50.9,51.6,47.0,53.2,45.1,47.1,47.5,25.1,49.1,53.5,62.3,54.2,46.7,48.0,56.5,53.0,47.1,47.4,52.9,53.9,50.0] + }, + { + "position": 56, + "values": [12.8,12.0,12.7,13.8,12.4,11.4,13.1,12.5,12.6,12.7,11.4,12.4,12.7,12.7,11.8,12.5,13.6,12.5,13.6,10.6,11.7,13.9,13.6,11.7,12.7,13.0,13.7,11.8,11.8,12.8,12.5,13.7,11.2,13.9,12.0,12.0,11.9,14.2,13.5,11.3,12.6,12.2,11.9,12.1,12.7,11.9,12.9,12.0,12.8,10.8,13.2,12.7,12.6,13.0,13.3,14.1,11.9,12.7,13.7,13.5,14.4,13.8,11.7,11.8,13.0,12.3,12.1,13.8,11.8,13.5,13.3,13.9,11.8,12.7,13.1,11.7,14.4,12.2,12.2,13.1,12.1,11.9,11.1,12.2,12.5,12.2,12.0,11.1,12.2,13.3,12.3,13.9,11.8,13.0,12.8,12.0,12.7,12.5,12.0,11.4,12.8,12.3,12.1,12.2,12.5,12.6,12.8,14.5,13.5,12.0,12.3,14.0,13.9,11.8,12.4,13.4,12.4,13.0,12.5,12.7,13.1,12.1,12.7,9.8,12.3,13.3,13.9,12.5,12.2,11.9,13.6,12.5,12.4,13.9,14.2,13.1,13.4,11.2,12.1,12.3,12.2,12.2,12.3,13.3,13.1,11.6,13.8,12.4,12.4,12.6,10.9,12.1,12.4,11.9,11.5,12.7,12.3,12.1,10.9,13.6,12.2,12.8,12.6,12.5,12.6,13.6,13.5,12.2,11.1,12.9,13.3,12.9,12.4,12.7,11.9,12.6,11.9,12.3,11.7,14.1,14.6,13.4,13.0,16.3,13.2,12.6,13.8,12.6,13.5,12.0,12.7,13.7,12.7,12.6,12.3,11.9,13.4,11.9,13.1,12.2,12.8,12.1,13.6,13.5,17.0,12.9,13.5,12.7,14.3,12.1,13.3,14.0,12.8,11.9,13.9,12.9,11.7,12.4,13.6,12.2,12.5,13.0,12.9,11.5,12.4,11.4,11.6,12.3,12.8,13.8,12.5,12.7,12.7,12.8,11.6,12.9,12.4,12.6,12.7,11.8,13.3,14.1,12.8,12.2,13.4,13.5,11.8,12.3,12.4,12.4,13.1,11.5,11.5,13.0,12.9,12.5,11.4,11.6,13.4,12.7,11.5,12.4,13.3,13.1,12.4,13.1,12.2,13.2,11.9,13.3,12.5,13.2,12.2,12.9,13.2,13.1,13.4,11.8,13.9,12.3,11.7,11.9,12.6,12.8,12.7,12.4,13.6,12.4,12.5,11.8,12.7,12.3,14.2,11.8,12.6,14.4,11.4,13.0,12.6,11.8,12.7,14.5,12.0,13.5,14.4,11.9,12.7,12.5,13.2,12.7,12.1,12.5,10.6,13.3,12.8,11.6,12.5,12.0,12.7,13.5,12.5,11.9,12.6,14.1,12.8,12.4,12.3,12.2,12.1,14.3,13.4,13.0,12.5,13.0,13.8,13.3,12.8,13.0,12.9,12.3,12.2,12.1,13.0,11.9,14.7,12.8,12.2,12.4,13.2,12.9,12.7,11.8,12.6,13.0,13.4,11.9,12.6,12.4,13.5,13.3,11.8,11.0,12.8,12.6,12.2,12.1,13.2,13.1,14.6,13.4,11.5,13.1,11.8,13.8,13.2,12.4,11.1,12.3,12.1,12.3,11.8,13.3,13.4,13.4,12.7,10.9,13.3,11.9,13.4,12.2,12.8,12.2,12.4,12.6,12.1,13.6,12.7,12.4,14.3,12.6,12.2,10.6,12.1,13.4,12.0,13.2,13.4,11.8,13.1,12.7,12.9,12.2,12.8,12.3,13.5,13.4,12.4,12.9,12.3,12.2,13.8,12.2,11.3,13.7,12.6,13.9,11.7,13.5,12.4,14.4,12.1,12.0,14.2,12.1,13.2,12.8,13.1,12.6,12.6,13.4,12.9,12.5,12.4,12.5,12.5,14.1,13.5,11.8,12.1,12.7,11.5,12.5,13.6,14.2,13.6,13.7,13.9,11.6,11.8,12.9,12.7,12.2,13.1,14.6,13.3,14.3,13.4,13.7,13.0,14.5,11.9,14.4,12.0,13.3,12.4,12.5,13.8,13.3,12.2,13.2,13.8,12.5,11.7,12,11.8,13.1,13.9,11.6,11.6,12.5,13.2,11.9,14.2,12.7,13.2,10.6,13.3,12.4,13.5,14.2,12.1,13.9,12.6,12.3,11.5,11.5,12.6,14.4,11.8,12.5,13.3,12.9,13.1,13.4,12.8,13.1,12.1,12.8,12.4,11.9,12.1,12.4,13.1,13.0,12.1,12.8,11.8,12.7,12.4,12.7,13.2,13.2,12.9,13.9,13.4,14.0,11.8,14.4,11.4,13.1,11.9,13.0,12.0,12.9,13.0,11.7,12.4,12.5,12.3,12.4,12.8,12.8,12.1,12.4,13.0,11.6,13.0,14.0,13.4,12.5,11.6,12.9,12.0,13.3,12.5,11.8,12.2,12.5,11.5,12.2,12.4,14.7,12.6,12.5,12.8,12.3,13.8,13.4,12.7,12.1,13.4,12.4,12.3,13.3,13.7,12.5,12.3,12.7,12.0,12.9,12.5,13.5,11.4,13.8,12.4,12.8,12.1,12.5,12.1,12.1,12.1,13.4,12.2,12.6,13.4,12.2,12.7,10.6,12.3,11.8,12.3,14.0,13.5,12.2,11.8,13.1,12.3,11.6,11.9,11.9,21.9,12.3,11.9,13.5,12.2,12.6,11.2,12.1,12.0,13.3,14.8,14.0,13.0,12.3,12.6,11.7,12.1,12.8,13.2,13.6,12.6,12.2,12.5,12.4,12.3,12.9,12.0,12.3,11.6,13.8,12.8,11.7,12.3,12.5,13.2,12.3,14.0,12.3,12.5,12.5,14.4,11.9,12.4,12.0,12.5,13.8,12.5,13.3,12.6,13.6,12.1,14.0,12.1,14.3,12.4,13.9,12.1,13.3,12.8,13.4,12.2,13.6,11.7,12.3,14.2,12.2,12.3,13.5,11.9,12.1,10.3,10.9,13.0,12.5,13.2,14.3,13.2,14.0,13.0,12.5,12.7,12.6,12.0,12.4,12.4,13.9,14.0,12.4,13.5,11.9,12.0,12.2,12.4,13.0,13.4,12.8,13.1,13.9,10.4,11.8,12.6,13.9,11.9,12.0,13.5,12.2,13.1,12.3,11.0,11.8,11.3,13.2,12.2,13.1,12.8,11.2,12.7,13.4,13.2,12.0,12.3,12.3,12.3,12.8,12.0,12.2,11.7,11.7,14.0,12.5,13.3,14.7,12.9,11.1,13.6,12.3,13.3,13.1,12.7,12.4,13.0,14.4,13.3,11.5,11.5,12.7,12.1,11.6,11.1,14.0,12.2,12.9,12.3,13.0,12.9,12.0,13.4,12.4,12.3,12.8,12.5,12.9,13.4,12.4,13.0,11.6,11.7,11.8,12.6,12.3,13.9,12.9,12.8,12.2,11.7,12.1,12.4,12.9,13.4,9.6,12.2,13.4,10.8,12.2,12.7,11.7,13.3,11.0,11.9,13.8,13.9,11.9,13.4,12.4,13.1,14.0,10.8,12.5,11.9,12.6,12.1,12.0,12.9,11.9,13.6,12.4,13.3,12.3,13.0,12.2,11.1,13.7,11.6,12.2,13.7,13.8,12.3,14.1,12.4,12.7,11.5,13.1,14.1,12.2,11.9,12.2,13.3,12.4,14.4,12.5,12.8,12.0,12.8,12.2,13.1,12.8,12.3,12.0,12.5,53.2,12.9,12.4,11.9,14.7,14.5,13.5,12.1,12.4,13.9,12.9,12.3,13.7,11.4,13.2,13.6,12.5,12.6,11.6,12.3,12.1,12.1,11.8,12.4,13.8,12.2,12.8,12.0,12.7,13.1,12.0,11.7,11.2,12.6,11.4,11.7,12.7,12.3,11.6,13.5,14.8,10.8,11.7,12.6,11.9,12.3,12.6,13.3,11.6,13.1,13.0,13.6,12.0,13.7,12.1,13.0,13.4,12.9,13.0,12.4,12.0,12.0,12.7,12.8,13.6,12.6,11.6,12.9,11.6,11.7,12.0,13.0,12.5,12.6,13.0,12.3,12.3,12.5,12.8,12.9,11.9,12.8,12.8,13.3,12.4,13.7,11.9,12.3,12.0,12.6,13.4,12.4,13.6,13.1,14.1,12.1,11.1,12.9,12.3,12.4,12.0,12.5,12.1,12.6,12.4,13.4,12.4,11.5,12.5,11.6,13.7,11.9,13.3,12.9,11.7,12.6,12.9,12.2,13.1,12.2,12.1,14.2,13.1,13.6] + }, + { + "position": 57, + "values": [59.0,56.7,54.0,52.1,54.5,58.2,54.8,53.4,53.5,47.3,53.5,53.9,53.6,56.6,58.7,48.5,57.6,53.9,51.0,51.4,42.6,53.2,56.9,45.7,57.8,49.7,53.7,52.6,54.9,53.9,58.6,48.8,53.2,54.7,59.9,53.9,52.6,60.9,58.3,54.8,53.8,43.7,56.5,57.8,53.8,60.6,56.1,59.6,51.3,50.3,50.2,54.2,60.6,54.7,40.6,54.3,55.2,52.9,58.7,48.9,59.8,52.9,56.2,55.1,48.8,55.9,49.7,57.6,46.4,59.7,50.6,47.7,47.1,54.2,57.7,59.6,48.8,48.0,55.5,48.4,57.0,58.3,52.3,56.3,54.5,49.8,53.3,48.7,56.4,56.6,57.5,53.3,51.5,58.0,53.0,56.6,56.5,61.1,57.9,54.0,49.4,53.0,57.9,47.7,53.7,56.3,56.5,57.3,54.7,57.1,56.2,54.3,56.5,47.7,47.1,51.8,57.4,58.4,53.7,48.3,56.5,55.8,51.6,49.6,57.8,53.1,56.7,52.7,56.7,56.7,58.6,55.1,56.2,48.7,56.1,57.7,59.2,51.9,59.3,59.7,50.6,49.7,53.6,59.8,44.6,50.7,56.5,53.7,58.0,52.6,56.8,54.5,55.9,51.6,49.2,54.0,54.3,54.4,54.5,57.6,58.7,51.6,56.4,57.1,55.0,55.6,52.8,58.2,48.6,48.3,45.1,52.1,51.9,55.5,50.6,65.4,52.3,54.0,63.4,57.7,48.3,58.4,57.5,40.4,53.9,55.6,54.4,49.5,56.4,52.1,49.7,55.2,52.4,61.3,52.0,56.5,52.5,47.5,55.8,59.2,53.1,55.6,46.1,47.3,69.8,56.1,55.5,55.6,55.2,49.4,49.1,58.3,60.9,57.2,54.2,59.7,51.4,54.6,57.7,57.6,58.6,50.8,54.6,52.5,56.7,54.9,47.7,56.7,51.7,45.7,56.5,55.6,64.6,59.4,53.3,48.6,55.6,52.0,48.2,56.1,55.4,71.7,59.1,54.1,46.5,58.9,57.8,55.2,56.1,51.5,53.2,52.2,55.4,64.5,55.0,47.3,50.2,55.8,58.5,54.2,48.4,55.4,45.8,52.8,52.6,56.0,53.3,57.7,42.9,50.8,67.6,47.5,53.4,56.2,52.4,52.4,58.7,57.5,55.7,57.5,54.9,56.9,44.7,58.5,52.2,49.9,51.8,50.6,54.0,55.6,54.4,69.0,52.2,53.4,57.8,55.4,56.1,56.9,53.8,56.7,56.5,54.4,51.2,52.2,56.4,50.9,52.8,57.2,62.4,53.2,51.8,51.9,50.1,57.9,58.3,52.9,49.8,50.4,51.1,59.5,53.5,57.7,52.5,56.4,58.3,50.9,50.2,55.5,53.5,78.0,52.7,59.0,56.2,45.1,51.8,44.8,55.0,55.6,51.7,52.7,56.4,57.4,62.5,58.4,62.5,54.0,45.9,49.5,58.9,55.7,45.4,65.8,50.9,52.8,53.8,54.1,54.5,55.1,48.6,45.6,53.0,52.9,55.4,45.6,55.8,55.3,57.3,53.3,42.1,49.5,52.8,53.3,51.0,52.3,48.3,51.4,57.1,57.3,51.3,56.4,48.7,63.4,53.9,52.7,52.5,57.8,64.8,51.2,59.4,54.4,55.1,54.4,57.2,55.9,56.9,55.2,53.9,57.8,61.1,60.7,56.4,44.7,55.8,52.7,49.8,54.0,49.2,59.7,50.9,51.5,50.9,60.8,54.3,51.6,55.2,53.7,57.5,47.1,64.6,56.3,57.3,54.2,52.8,55.3,56.7,54.3,53.4,52.4,54.5,54.7,56.6,54.0,53.5,52.7,53.8,48.6,59.3,56.0,58.7,49.8,48.4,51.7,55.5,37.8,57.4,55.8,50.9,53.5,53.9,52.0,55.9,48.9,52.5,55.4,56.4,52.7,51.2,55.6,55.9,57.6,60.2,55.8,53.0,47.2,51.6,48.8,53.8,59.5,49.7,52.6,56.0,54.1,55.0,57.6,58.6,53.4,56.3,51.4,57.0,55.3,56.2,56.2,56.1,58.1,57.7,45.2,51.7,52.2,55.2,55.1,54.5,54.3,47.0,48.9,55.9,40.2,60.7,55.0,55.3,58.6,53.8,56.9,53.9,57.3,56.4,50.6,55.0,47.8,54.7,54.2,54.7,49.5,51.0,56.4,53.5,52.7,50.4,51.4,54.8,55.5,52.7,50.4,48.4,56.0,55.4,45.2,52.2,60.6,59.8,56.9,52.9,58.3,49.0,54.1,54.3,57.6,51.0,48.3,53.3,57.2,56.9,57.8,56.1,51.0,43.4,57.0,51.5,57.8,58.0,52.3,51.8,55.3,58.0,58.2,66.3,57.2,53.1,50.7,53.3,54.3,53.3,58.7,58.8,54.7,57.0,61.3,49.0,53.4,54.8,53.2,43.4,58.2,53.8,53.0,52.3,55.2,52.0,59.1,53.9,55.1,47.4,49.9,52.7,44.8,55.9,54.9,52.5,52.4,56.5,59.8,51.1,57.4,49.7,45.9,44.9,50.0,57.4,54.8,52.5,53.7,56.5,49.3,56.4,58.2,49.4,56.0,56.4,55.9,49.7,49.2,48.4,56.4,56.3,53.7,54.7,59.9,44.7,66.9,51.2,43.9,55.1,79.1,55.5,48.5,54.2,52.9,50.9,50.0,56.5,49.0,48.9,67.5,46.1,46.5,58.3,54.5,54.8,53.4,48.2,46.2,55.8,55.3,57.9,58.1,56.7,56.7,53.4,64.2,49.8,47.0,57.4,53.9,57.1,55.9,51.7,57.0,59.3,56.1,58.2,62.0,65.7,53.1,55.4,58.5,55.3,57.5,50.1,62.4,50.2,50.5,56.4,46.3,95.0,52.4,57.1,65.0,54.7,60.6,59.3,58.3,52.8,58.1,55.5,55.8,56.7,57.0,53.7,53.7,50.4,55.8,57.9,49.6,44.8,58.5,58.6,57.3,56.6,50.5,57.5,58.2,54.2,48.3,55.2,53.2,52.3,51.7,57.6,56.4,51.8,53.0,56.7,54.8,58.4,50.4,47.0,54.4,60.5,62.4,57.6,52.8,52.2,57.5,55.4,57.3,47.7,53.0,46.9,66.9,57.0,55.8,54.7,54.8,68.3,54.7,47.3,54.9,59.5,51.6,56.9,50.1,58.0,55.5,56.0,50.6,54.7,57.5,55.8,50.5,56.4,50.0,43.3,48.2,51.7,54.2,48.9,47.2,56.3,55.3,53.4,78.6,56.1,46.9,49.6,50.6,54.4,56.8,55.2,51.4,57.9,54.9,50.2,57.7,54.8,51.8,55.0,49.6,57.9,57.0,49.4,51.0,45.4,48.6,46.3,55.1,43.4,57.8,55.9,52.9,59.0,54.6,58.6,55.6,53.8,49.6,53.3,57.6,58.2,55.4,49.0,31.3,51.1,56.6,51.8,48.7,48.3,56.9,51.3,50.6,61.4,59.2,46.5,45.9,48.9,58.1,57.0,50.5,54.4,57.4,54.1,48.9,51.0,49.6,54.6,56.3,55.2,52.4,51.8,49.0,53.9,53.2,56.6,54.1,53.2,54.2,57.1,58.2,58.7,52.2,50.2,51.7,51.7,61.5,50.4,57.6,51.7,49.2,49.0,55.7,58.5,55.1,49.1,56.2,49.3,54.3,54.4,56.4,52.0,58.2,51.7,73.9,49.0,56.9,51.2,52.6,50.6,55.8,57.3,48.2,56.2,58.4,57.1,53.8,45.2,48.5,55.2,55.3,56.9,53.7,52.2,54.3,55.4,55.0,56.9,45.6,55.7,53.8,52.4,56.4,45.2,54.5,58.6,47.0,52.9,57.7,56.5,50.0,56.2,50.3,54.9,45.6,51.7,54.8,50.1,55.5,49.3,56.4,55.5,52.3,46.9,57.3,47.9,44.1,56.9,56.3,55.2,60.8,56.7,54.5,54.7,52.5,57.9,52.9,55.0,55.1,53.5,53.1,50.0,55.1,58.5,58.9,57.4,54.9,57.0,49.0,55.3,57.0,65.1,55.6,63.7,55.9,54.3,54.6,52.6,49.7,58.2,57.0,57.3,55.2,55.0,47.1,45.5,46.2,50.4,62.8,57.5,50.8,54.3,50.8,52.9,58.4,56.2,53.2,50.3,55.2,58.9,47.9,55.4,55.7,55.6,43.1,54.9,54.2,49.1,49.6,53.5,54.9,59.8,52.8,49.5,47.8,60.1,49.8,53.3] + }, + { + "position": 58, + "values": [76.1,77.1,81.7,84.2,74.5,75.9,76.9,77.4,82.4,74.6,71.8,74.4,74.1,75.5,74.8,83.9,59.4,74.3,67.2,75.5,73.5,81.5,78.1,73.0,70.7,70.9,81.2,76.3,70.1,85.7,77.7,71.6,71.3,81.0,72.6,72.0,81.8,88.5,77.1,80.7,70.6,99.4,75.7,75.4,73.9,73.8,77.1,81.6,78.3,78.0,83.0,76.5,78.0,83.8,101.8,90.3,83.6,78.1,79.5,68.5,78.0,79.5,83.8,75.6,82.6,79.0,72.7,81.1,86.0,73.6,72.0,86.4,77.3,83.5,75.8,74.3,65.7,78.7,75.1,76.5,74.4,74.5,76.4,75.1,70.5,78.3,77.0,74.1,73.2,83.6,74.1,83.9,83.6,77.4,79.6,75.3,73.4,66.0,74.4,75.9,86.9,75.4,69.6,75.6,71.1,79.2,80.1,72.7,82.7,72.9,75.1,75.8,68.7,69.4,75.5,74.5,79.4,76.9,80.1,75.1,75.1,75.3,85.4,71.3,73.2,76.9,87.0,80.5,74.7,73.7,73.2,77.4,78.2,74.5,84.6,72.5,74.7,77.1,74.1,70.4,73.1,79.2,78.7,74.5,80.1,74.2,78.8,73.8,76.5,76.5,73.6,70.9,88.1,78.4,85.5,73.3,75.0,76.4,74.8,79.1,82.9,78.0,73.9,75.5,74.2,65.1,86.5,75.0,71.6,70.3,72.3,76.7,81.4,76.9,76.3,70.9,72.6,72.1,71.9,82.9,71.8,81.6,180.2,90.8,75.1,77.2,86.1,78.2,75.8,75.3,76.9,78.1,79.6,77.7,80.4,68.5,82.5,73.8,76.4,73.5,74.7,74.6,67.8,83.2,87.3,74.7,84.8,76.0,76.5,65.2,76.1,83.2,73.7,79.5,82.0,80.3,69.4,77.6,86.8,76.8,82.2,83.3,87.5,76.1,74.8,72.7,71.0,83.4,72.2,73.4,77.3,74.5,67.9,76.8,71.2,68.0,76.6,76.7,72.2,73.1,84.0,82.4,66.7,73.4,70.6,80.4,73.8,74.3,82.8,81.1,83.3,78.3,73.7,64.8,72.7,76.5,71.0,75.8,84.5,72.3,73.4,76.7,72.8,84.6,76.0,72.3,74.3,70.7,74.2,72.2,68.4,73.3,75.1,83.3,77.3,58.3,84.0,74.3,93.7,75.3,75.1,73.3,72.8,79.6,79.6,108.8,79.8,75.9,73.7,74.7,70.7,77.5,71.8,74.2,80.8,83.1,76.8,81.8,79.9,73.9,77.4,75.8,83.3,65.5,81.6,85.6,74.6,76.0,82.9,74.0,71.4,75.4,68.8,79.0,76.4,72.6,81.6,75.9,73.3,83.9,71.9,76.8,88.6,82.1,77.9,67.1,73.3,72.2,82.2,80.5,78.4,82.2,68.5,77.5,77.5,75.2,81.4,69.7,80.2,95.5,74.7,80.1,73.4,69.5,75.7,69.9,79.4,96.3,76.0,76.3,71.7,75.0,75.7,78.6,69.1,79.3,75.0,76.5,72.0,80.7,70.8,77.0,74.1,75.0,78.0,76.3,70.4,105.0,95.2,68.1,70.8,83.6,63.3,71.9,71.4,73.7,74.4,75.4,74.4,81.8,77.5,82.4,80.8,75.7,72.3,77.7,70.2,77.3,70.7,79.1,79.1,77.9,76.3,78.3,81.8,77.1,15.5,72.8,72.9,75.3,71.6,77.0,56.1,80.8,74.9,74.1,71.2,79.2,76.1,83.3,70.0,74.3,83.7,85.0,82.1,75.3,79.0,64.7,73.8,86.8,82.4,81.0,74.5,76.4,72.5,67.3,71.5,76.4,82.1,75.9,74.6,82.8,77.7,83.8,72.3,67.5,69.8,74.1,75.8,81.5,78.9,77.3,75.1,74.4,84.9,73.6,75.9,71.1,77.8,72.7,73.0,73.3,73.7,84.9,80.7,80.6,70.6,74.7,76.2,83.5,74.8,78.3,74.9,71.9,72.2,96.8,64.0,80.4,110.1,88.8,74.9,76.5,13.6,63.3,76.9,82.0,76.0,77.4,77.2,77.9,82.7,73.7,72.5,80.0,76.1,71.9,62.6,73.0,74.9,85.3,77.2,73.1,83.5,79.6,126.5,80.5,81.4,76.2,87.4,71.4,84.4,72.4,77.7,74.8,70.9,78.1,66.0,71.1,76.9,71.7,49.4,61.3,84.8,77.2,84.8,75.0,40.1,74.8,75.5,79.5,75.5,76.2,73.6,74.0,81.7,75.9,75.3,70.7,76.9,81.8,74.0,63.1,82.5,81.7,80.9,76.5,82.2,70.7,80.3,77.8,92.8,74.8,74.9,80.5,71.3,75.6,75.3,77.5,77.5,76.9,75.0,73.6,75.1,72.4,84.3,85.0,63.6,82.5,77.2,75.8,74.8,73.5,79.4,80.7,70.1,75.3,75.4,72.5,71.7,75.9,47.4,72.9,75.2,74.5,72.8,83.0,80.6,74.6,76.0,73.3,86.1,75.6,77.5,77.9,72.9,75.3,76.9,72.1,83.7,57.1,77.1,72.1,74.4,73.1,92.4,77.0,75.9,74.1,70.6,72.0,82.6,75.5,74.2,71.3,74.3,79.7,80.3,76.7,76.0,66.1,78.4,92.5,73.6,74.2,75.1,75.1,67.3,75.6,74.4,111.9,75.0,76.0,65.6,82.3,75.3,75.8,82.4,79.7,67.5,74.4,56.7,70.9,81.4,81.4,70.9,75.7,74.0,61.7,77.0,70.2,76.4,74.9,75.6,77.6,76.0,77.6,72.9,102.4,80.5,83.0,70.0,76.1,75.0,66.7,75.2,84.2,85.0,76.3,81.1,86.1,70.8,76.2,74.4,75.7,81.8,80.9,73.8,77.8,70.7,76.0,84.6,71.5,85.0,76.6,78.5,76.5,78.9,74.2,79.5,74.3,86.3,73.8,73.5,85.7,75.7,78.3,99.3,72.5,71.7,73.9,74.5,78.0,75.4,77.4,86.0,82.4,89.4,75.3,76.6,76.3,82.5,73.4,71.9,73.2,77.2,84.6,72.7,85.3,75.0,73.3,78.1,75.4,70.7,94.9,74.4,56.1,84.2,71.8,71.5,91.9,78.8,77.0,73.1,70.3,78.1,54.1,69.4,76.9,73.6,72.5,72.6,80.2,65.9,71.3,70.4,78.0,61.3,81.7,77.7,74.6,79.3,71.6,79.4,72.9,74.9,73.2,71.5,76.2,75.8,90.4,115.2,65.0,72.0,60.7,70.4,75.9,76.8,81.6,70.0,75.1,67.4,78.6,74.1,72.8,75.6,74.2,73.3,70.3,82.2,75.8,60.5,76.9,79.0,75.9,77.4,87.6,77.3,85.0,67.2,74.8,74.8,88.7,73.2,77.4,73.0,67.6,73.0,74.5,73.6,81.8,75.2,75.3,106.1,72.0,74.7,75.8,79.1,77.7,21.9,59.4,75.0,79.3,76.5,74.1,85.2,83.4,66.7,85.1,72.4,74.6,78.6,79.3,73.1,85.0,62.6,72.0,73.2,75.4,76.2,72.7,83.5,80.2,74.1,77.6,70.7,55.2,76.4,77.0,79.3,75.7,69.2,62.5,75.8,83.4,82.3,76.4,79.0,76.4,79.4,76.7,72.8,74.5,74.3,70.9,67.9,74.5,86.5,74.4,75.8,79.4,68.6,79.0,73.9,76.1,76.5,78.1,71.3,77.2,87.3,81.8,80.8,80.3,90.3,83.0,74.4,75.1,66.8,79.7,83.5,74.2,77.7,72.8,73.2,93.3,77.7,75.5,74.8,71.7,74.1,74.4,68.2,81.2,68.1,77.4,76.4,74.3,76.0,77.2,76.1,74.4,85.4,83.1,75.2,74.6,75.3,73.3,71.4,85.9,64.6,69.6,73.8,123.1,76.7,80.9,72.9,71.9,74.0,54.1,77.7,73.7,70.3,83.3,74.4,72.7,83.7,78.9,78.2,76.2,71.9,77.0,76.1,76.2,85.1,81.3,72.3,73.3,72.6,73.1,76.8,84.7,77.3,75.1,74.8,73.1,75.2,64.6,77.7,84.2,74.4,78.3,74.7,85.2,75.3,88.9,77.2,81.3,76.2,76.0,83.1,75.7,71.9,68.4,97.3,75.7,37.8,79.6,75.1,75.2,84.2,75.8,79.6,77.9,83.2,74.8,74.7,77.2,71.2,85.8,75.3,69.4,80.0,83.2,65.6,75.0,76.5,80.2,74.2,70.7,72.1,69.8,88.3,74.4] + }, + { + "position": 59, + "values": [11.7,11.4,12.1,11.4,12.6,11.5,11.4,11.4,12.3,11.5,11.2,10.9,12.7,11.5,11.8,13.3,12.3,11.2,13.6,11.4,10.9,12.1,12.1,12.2,11.4,13.4,12.0,11.6,11.1,11.9,11.6,13.6,11.1,13.6,11.8,11.2,11.9,13.7,12.1,11.5,11.6,11.8,11.3,11.5,11.1,11.3,12.1,11.8,11.6,11.4,12.0,12.2,11.7,13.6,12.2,12.4,13.0,12.4,11.6,12.1,15.2,11.9,12.3,11.7,10.7,11.7,11.1,13.6,11.0,12.4,14.8,12.2,11.2,12.4,12.4,14.0,11.4,12.1,11.6,11.4,11.3,11.5,11.8,11.3,11.2,11.2,11.5,10.9,11.3,12.1,12.0,11.2,11.6,13.2,12.4,11.4,11.6,11.4,11.2,11.7,11.7,11.9,11.5,11.4,11.5,11.4,11.6,12.1,13.6,11.3,11.7,13.5,12.8,11.5,11.3,11.9,11.1,11.5,12.0,12.0,11.3,11.5,11.9,11.8,11.2,13.7,12.6,11.4,11.3,11.4,11.9,11.2,12.1,11.3,13.2,11.3,12.5,11.6,11.1,11.0,12.5,12.7,11.5,12.8,11.8,11.6,11.5,11.2,11.6,11.4,11.2,10.0,11.6,11.3,11.0,11.3,11.2,11.3,10.8,11.5,12.1,13.1,11.1,11.4,11.3,11.2,12.3,11.8,11.3,11.5,13.3,13.9,11.6,11.7,11.1,11.3,11.2,11.0,11.8,12.8,13.4,13.5,12.3,58.2,11.6,11.4,12.4,10.6,11.3,11.8,11.3,12.9,11.4,11.4,10.8,11.0,11.7,11.7,12.4,11.3,11.5,11.3,12.6,11.4,17.2,10.2,13.2,11.4,14.0,11.4,12.8,12.7,11.7,11.0,12.4,12.2,11.6,12.5,11.7,11.6,11.7,11.7,11.8,11.4,11.7,11.3,11.3,11.5,11.1,13.0,11.4,11.3,11.7,12.0,12.0,12.3,11.5,11.4,11.5,11.6,12.3,10.7,10.8,10.8,12.4,13.0,11.7,11.1,12.6,11.3,12.4,11.4,11.4,11.5,11.5,12.8,10.6,11.2,13.0,11.8,11.6,12.3,12.3,12.6,11.1,11.2,12.7,11.5,11.3,13.4,11.5,12.2,11.5,13.4,12.3,10.6,14.2,11.4,13.4,11.6,11.6,11.5,13.8,11.2,11.5,12.6,11.0,11.8,11.3,11.1,11.5,12.7,14.2,11.5,12.8,12.4,11.5,11.8,11.9,12.5,13.8,15.0,11.3,12.7,12.3,12.0,11.2,11.8,12.8,11.3,11.4,11.2,11.4,11.5,12.2,11.5,10.9,12.4,11.2,12.5,11.7,12.3,13.7,11.1,12.0,12.3,11.4,11.2,11.4,17.8,11.2,12.3,12.0,12.2,13.5,12.9,11.6,12.6,13.3,10.8,14.4,11.2,11.7,11.2,12.8,11.4,11.5,11.9,13.8,11.8,11.2,11.5,11.5,11.6,13.0,11.2,11.5,11.5,12.4,12.3,11.3,10.8,11.6,11.6,11.8,11.2,11.9,11.1,14.4,12.3,11.2,11.2,13.5,14.5,12.2,11.3,11.5,11.3,11.2,11.6,11.2,12.3,12.5,13.0,11.6,11.2,12.5,11.0,13.2,11.4,11.7,11.6,12.0,11.5,12.1,12.0,11.4,11.2,17.7,12.3,11.2,11.4,12.1,13.4,11.8,13.5,13.0,11.7,13.0,11.4,11.0,11.2,11.8,12.0,13.2,12.9,11.7,11.7,11.5,10.8,12.6,12.0,11.1,11.9,11.8,11.7,10.9,13.2,11.4,13.6,11.4,11.4,12.1,11.4,11.1,11.1,12.9,10.9,11.5,11.7,12.3,13.1,11.7,10.9,11.2,13.1,11.4,11.2,10.6,11.9,10.9,11.7,12.2,11.6,12.3,12.8,12.9,10.8,11.6,12.0,12.7,11.4,11.3,11.3,12.8,14.0,13.9,13.7,13.2,11.4,13.5,14.3,11.2,11.4,13.5,11.4,13.0,11.4,11.7,11.0,14.5,12.1,11.3,11.8,11.1,14.0,13.0,11.3,11.3,11.4,12.3,11.6,13.3,12.4,10.4,16.3,12.9,11.4,12.8,13.8,11.2,13.6,11.3,11.9,10.9,11.7,11.6,13.2,11.8,11.1,13.2,12.3,13.3,12.3,11.5,12.4,11.9,12.2,11.6,11.3,11.4,11.2,11.8,11.6,11.5,11.2,11.7,12.1,11.8,11.9,12.3,10.8,12.9,12.5,12.1,12.2,11.5,13.0,11.0,11.4,10.7,12.6,11.4,11.3,12.4,11.3,11.1,11.6,11.7,11.3,11.7,11.6,11.4,11.5,11.4,13.2,11.6,10.7,12.0,11.7,11.3,11.3,11.1,12.9,12.6,11.2,11.6,11.4,11.4,11.4,13.3,11.4,11.3,11.2,11.3,12.4,12.8,12.5,11.3,11.3,12.4,12.0,12.9,11.1,12.4,11.3,11.2,12.1,11.3,13.1,12.1,11.9,11.5,12.3,12.1,10.5,11.2,11.3,11.9,11.3,12.4,11.4,11.9,11.7,12.1,11.4,12.0,11.8,10.5,11.6,11.7,13.8,12.1,11.4,11.4,11.6,12.1,10.8,11.9,11.4,11.6,24.2,11.5,12.5,11.7,11.7,11.0,11.4,12.9,11.4,12.9,11.7,12.9,12.1,11.9,11.6,11.2,11.3,12.9,11.6,11.5,11.5,11.6,11.6,11.6,11.4,11.5,11.3,11.2,12.8,12.4,11.5,11.4,11.5,13.2,11.6,11.4,12.5,11.7,11.6,12.1,11.7,12.0,11.1,11.6,13.2,12.0,11.8,11.3,11.5,13.0,13.6,11.9,13.2,11.4,11.3,11.5,12.9,11.3,13.0,10.6,13.2,11.4,11.8,13.3,11.5,11.6,13.1,11.4,10.7,11.5,11.7,11.9,11.4,11.4,12.2,12.7,12.2,11.3,11.8,11.9,11.3,11.6,11.2,13.0,10.9,13.4,11.4,12.8,11.1,11.7,11.5,11.7,13.1,12.8,11.5,12.0,13.3,9.5,11.2,11.6,13.5,12.1,11.2,11.5,13.2,12.6,11.6,11.3,11.4,11.4,12.1,11.3,11.7,11.9,11.2,12.0,13.4,12.2,11.5,11.5,11.3,12.5,11.3,11.3,11.6,11.4,12.1,12.0,11.2,12.1,12.5,14.2,13.3,11.0,11.4,12.0,11.7,12.0,11.2,13.8,11.4,12.3,11.7,11.1,11.0,11.3,11.2,10.8,12.4,12.7,11.5,11.5,11.4,11.4,12.3,11.2,11.6,12.3,12.9,11.2,11.5,11.3,12.0,11.7,11.5,12.0,11.3,11.0,11.4,13.1,11.4,11.3,12.9,11.1,11.4,11.6,11.6,11.4,11.7,11.3,13.2,11.6,11.5,13.5,11.1,12.6,10.1,11.2,12.4,13.2,11.5,12.3,12.8,12.9,12.7,10.4,11.3,11.6,11.3,12.5,11.7,12.2,11.4,10.7,11.2,13.1,11.5,11.4,11.8,11.1,13.6,10.5,11.3,14.6,12.1,11.3,14.4,13.0,11.4,11.7,13.0,11.2,11.9,11.1,11.3,12.4,11.3,12.6,11.6,11.4,10.8,11.5,11.1,11.4,11.5,11.5,11.5,30.9,11.3,11.8,10.7,12.8,13.0,13.0,11.4,11.0,10.2,14.5,12.0,11.2,11.5,14.2,11.3,13.5,11.6,11.3,11.2,11.4,11.2,11.5,10.9,12.2,13.0,12.0,11.4,11.5,11.6,12.3,11.5,11.5,11.7,12.8,11.4,11.8,11.9,11.4,11.4,13.1,11.2,11.3,11.3,13.7,11.6,11.5,11.9,11.4,11.3,12.6,12.2,12.7,10.9,14.4,11.5,13.2,14.6,12.0,11.6,11.1,11.2,11.2,11.7,11.5,12.0,13.0,11.5,12.6,11.4,10.9,11.6,12.2,11.4,11.2,12.1,11.3,11.4,10.7,11.5,14.2,11.3,11.7,11.0,13.8,13.2,11.1,11.5,12.1,11.3,11.5,12.4,12.1,11.4,12.8,11.6,11.6,11.2,12.4,11.7,11.3,11.5,11.8,11.4,12.4,12.0,11.5,13.5,11.4,11.1,11.9,11.7,12.5,11.6,10.8,11.1,11.5,11.4,12.1,12.1,10.8,11.2,13.2,13.5,12.1] + }, + { + "position": 60, + "values": [35.2,34.5,34.4,33.6,36.5,37.1,35.5,35.3,33.7,34.8,33.6,35.0,33.0,35.1,32.8,36.1,44.4,33.5,48.1,31.7,34.8,37.4,35.6,33.0,43.8,29.6,45.7,35.1,32.3,33.8,47.8,33.8,27.1,35.7,33.2,37.5,34.2,30.3,33.8,39.7,33.7,35.5,34.5,35.3,34.0,34.3,35.4,34.9,32.3,34.1,37.4,28.3,28.4,34.5,38.9,31.8,31.6,27.0,35.7,35.2,33.9,37.6,36.0,37.0,36.0,35.0,33.8,32.5,34.1,33.1,33.6,33.1,34.9,33.2,36.5,36.4,45.3,35.1,34.4,35.1,34.6,36.0,36.0,34.1,35.3,35.5,33.1,32.0,34.2,35.0,36.4,30.1,34.9,35.1,33.5,34.7,32.4,31.3,34.9,34.4,24.5,34.8,35.8,34.4,35.3,37.1,36.2,24.2,36.1,33.9,34.4,34.0,34.7,44.2,35.4,35.8,34.5,35.0,28.3,34.4,34.0,44.1,34.2,34.8,33.9,38.6,28.2,34.2,35.4,33.9,33.0,36.5,36.2,28.3,31.6,35.0,28.3,35.1,33.4,36.9,34.5,34.2,33.2,35.1,31.9,32.9,33.6,34.3,34.8,34.2,32.5,33.5,31.7,30.0,33.3,34.7,35.6,33.8,33.8,34.3,36.6,31.2,34.2,34.7,34.3,35.9,36.1,34.5,35.9,46.2,33.5,38.0,32.8,35.1,32.6,33.5,31.7,33.4,35.6,35.0,40.2,27.9,99.1,37.6,35.6,34.5,29.2,32.7,25.8,34.0,34.7,37.5,34.4,33.0,30.1,31.9,28.8,34.8,47.7,34.3,33.5,35.2,48.3,35.8,38.2,36.3,48.9,35.0,33.7,42.4,42.5,33.7,35.1,34.2,36.3,28.8,34.2,35.6,34.8,34.6,34.8,35.2,26.5,35.0,34.0,35.0,34.3,31.5,36.9,43.4,29.1,34.7,31.2,34.9,35.2,41.3,34.3,34.7,26.0,33.9,34.3,37.3,34.2,33.6,47.9,32.6,35.5,33.8,34.6,36.1,33.7,34.9,34.2,36.5,35.2,45.1,31.1,34.2,34.1,40.5,34.3,37.1,45.7,30.4,33.2,31.3,33.9,49.7,35.3,47.2,46.2,33.8,24.8,35.0,34.3,47.0,35.6,34.5,21.8,35.0,34.8,34.1,37.0,34.9,32.2,36.5,35.0,33.6,35.3,30.3,36.0,35.0,47.8,35.0,29.6,32.6,34.5,35.0,37.8,32.6,34.6,45.9,24.7,38.2,34.5,29.8,34.4,35.1,35.1,35.1,33.4,34.3,34.0,34.6,33.0,34.0,34.4,40.8,35.7,34.7,27.6,36.6,35.0,32.0,33.7,44.7,33.8,34.0,24.9,41.9,28.7,36.7,34.6,41.7,28.8,44.1,34.8,31.9,39.0,33.4,30.0,35.1,32.9,34.6,34.5,34.6,43.6,25.0,34.7,34.8,35.4,34.5,34.4,34.6,34.8,34.5,36.5,34.0,40.4,44.4,36.0,31.7,28.4,33.6,34.4,33.0,35.1,44.1,43.3,46.4,32.8,50.9,34.9,40.7,38.3,35.0,34.2,34.8,34.4,34.6,37.2,37.3,34.1,36.9,34.1,32.9,39.2,32.6,33.7,26.6,34.8,35.5,36.6,33.6,37.2,30.9,34.8,52.9,32.8,31.6,35.4,34.3,32.8,44.2,34.1,41.8,35.3,34.7,28.2,34.8,32.3,35.3,33.5,32.0,30.6,34.7,33.2,32.7,33.6,33.7,36.7,34.9,33.3,26.9,35.2,26.9,27.4,46.1,35.4,35.1,28.8,35.2,29.1,35.4,25.7,35.7,43.8,35.1,34.1,36.3,33.6,35.3,34.0,26.1,34.2,30.8,25.4,33.2,35.3,34.0,32.5,36.0,36.9,36.1,38.7,36.2,31.5,35.7,34.3,34.3,34.2,35.8,26.5,43.7,25.7,43.0,29.3,45.4,31.8,39.4,32.7,50.1,28.8,39.0,33.9,35.5,36.1,34.4,26.1,26.7,35.0,29.9,34.4,34.5,33.8,46.1,34.7,33.2,34.1,35.2,34.5,35.9,40.6,29.9,29.9,42.5,34.9,36.0,34.4,29.1,34.0,29.7,27.8,36.3,34.5,35.5,35.9,36.9,32.7,34.2,34.7,46.8,46.8,35.7,35.7,30.7,34.3,35.7,32.9,33.4,35.9,34.4,34.1,35.1,34.1,35.8,36.2,35.3,33.5,34.6,30.5,35.0,44.6,37.6,28.4,35.0,32.7,36.7,33.6,35.5,34.8,35.5,34.5,34.6,33.6,33.7,48.4,35.3,34.3,28.7,32.6,34.9,34.2,35.2,33.5,31.3,36.3,40.1,37.8,33.6,26.2,34.5,35.3,35.8,34.7,33.1,45.6,34.7,34.4,33.6,33.1,37.6,34.5,34.6,32.8,37.2,34.6,35.2,34.8,34.5,39.3,44.6,34.0,44.1,35.5,31.4,34.1,35.0,33.3,36.0,35.5,48.4,35.1,46.3,46.1,37.9,33.1,35.3,35.3,31.4,32.1,35.7,35.5,35.5,38.0,33.9,35.9,38.7,35.9,43.9,35.9,34.1,35.8,36.3,34.8,34.0,28.2,43.7,33.7,35.3,35.3,50.8,34.5,45.0,36.0,34.1,33.1,29.3,45.9,33.5,38.6,36.3,42.1,33.5,36.2,32.2,35.0,33.8,48.0,32.1,27.7,34.9,33.9,27.8,35.7,34.2,34.8,38.0,37.4,35.1,29.2,32.9,33.9,34.8,40.0,34.9,32.8,34.9,34.5,34.9,33.1,31.2,34.6,34.0,34.2,35.3,37.2,33.5,32.8,28.4,34.3,39.1,32.5,28.0,34.5,32.6,35.4,34.3,32.9,34.1,33.2,36.0,34.9,35.7,36.9,33.6,35.7,37.4,32.5,31.7,34.1,29.4,40.7,33.9,36.0,33.9,26.4,35.3,35.2,34.8,35.3,35.9,29.9,36.0,34.0,46.1,36.2,35.3,34.2,33.5,31.9,35.7,34.3,22.8,46.3,34.4,31.4,37.0,29.5,32.9,35.8,28.4,35.3,33.4,44.3,24.9,49.4,34.4,26.3,34.5,34.5,34.4,33.5,30.6,43.0,36.9,33.5,46.6,34.5,30.0,33.4,36.1,34.2,30.7,34.0,34.1,34.2,33.4,28.4,34.9,45.2,21.5,41.9,33.1,55.0,37.0,26.0,36.1,37.8,34.3,34.6,44.6,33.5,44.8,34.9,34.7,33.5,35.7,33.6,32.6,45.7,34.1,35.3,35.3,46.5,34.6,33.7,34.6,29.8,34.5,33.0,30.5,39.0,34.8,33.6,34.2,37.1,34.5,34.6,33.6,33.9,32.9,34.6,42.9,34.5,34.3,35.3,26.6,52.0,18.8,46.8,35.0,25.2,36.4,31.7,34.1,32.6,32.5,33.9,35.1,44.2,33.8,33.0,37.0,33.9,32.1,32.5,33.2,34.2,34.9,37.2,33.6,28.1,34.4,28.2,34.0,49.0,34.7,35.3,37.1,32.8,33.0,47.8,35.7,30.8,34.3,33.8,46.4,32.8,34.5,35.5,33.0,43.9,34.7,34.6,32.8,43.7,32.9,33.6,34.7,34.2,37.2,30.8,34.3,35.8,34.9,35.2,34.3,38.9,50.5,33.7,34.8,38.5,33.4,44.8,35.6,33.7,35.8,29.2,35.9,33.9,35.3,43.5,34.3,33.1,36.7,34.4,34.7,33.9,34.7,34.8,34.6,33.4,42.9,35.8,34.8,34.3,35.4,43.1,34.4,34.1,43.1,34.2,37.0,34.4,27.8,35.9,34.7,35.2,33.6,34.0,34.4,31.3,34.8,37.4,38.9,34.7,33.4,49.4,36.5,49.1,34.1,29.6,35.1,44.7,34.6,23.5,34.3,35.8,34.3,34.8,34.1,35.8,37.6,35.6,34.6,43.3,33.0,33.3,35.1,34.7,34.6,24.7,34.6,34.9,34.7,33.4,35.5,28.1,34.0,34.8,35.1,30.5,34.4,35.8,32.8,35.2,34.4,35.0,27.1,35.3,35.5,49.2,32.7,34.5,21.8,31.6,34.3,34.9,35.2,34.5,32.9,31.2,32.3,47.5,34.8,35.4,34.5,27.4,26.0,34.2,31.7,35.6,30.2,33.6,35.3,35.5,32.5,32.9,34.8,35.0,46.7,32.5] + }, + { + "position": 61, + "values": [15.3,14.9,15.9,14.6,15.3,15.0,15.3,15.3,16.6,15.2,14.8,15.2,14.3,15.0,15.2,15.7,16.0,14.8,15.0,14.9,15.5,16.0,15.8,14.8,14.8,15.0,17.3,15.3,15.4,15.1,15.1,15.8,15.2,16.3,15.3,14.7,16.0,18.1,15.9,14.5,15.5,13.8,15.1,14.9,14.7,15.1,14.3,15.3,15.6,15.3,14.9,16.2,15.0,17.0,16.6,15.5,16.6,15.0,16.8,16.4,14.8,15.1,15.5,14.8,15.5,15.5,15.1,16.4,14.4,16.1,15.9,18.3,15.3,15.1,16.0,15.0,16.4,14.8,15.1,15.2,14.9,15.4,15.1,14.9,14.9,15.0,15.1,15.0,15.0,16.0,15.8,18.1,14.8,15.1,16.7,14.7,17.0,15.6,14.9,15.3,15.8,15.0,15.4,15.3,15.1,14.5,17.9,16.4,15.6,14.8,15.4,15.1,15.1,14.6,14.7,15.5,15.1,15.6,16.2,15.1,15.3,15.0,14.5,15.5,14.8,17.6,16.8,15.8,15.1,14.7,15.6,14.5,15.2,17.9,16.5,15.4,18.2,15.3,14.4,14.7,15.7,14.7,15.1,16.1,16.3,15.3,16.7,15.2,15.4,15.5,13.5,14.9,16.0,14.8,14.5,15.1,14.9,14.3,15.9,16.0,15.4,15.1,15.1,15.2,15.1,14.6,15.1,15.7,14.9,15.0,15.5,17.1,15.2,15.4,15.5,15.3,15.3,14.4,15.4,16.0,17.4,15.1,17.0,15.2,28.7,14.4,15.2,14.7,15.1,16.8,15.5,15.1,18.2,15.7,15.6,14.9,16.8,15.0,14.4,15.3,15.5,14.9,15.6,13.9,21.1,15.9,15.0,15.0,17.0,15.3,15.1,16.3,14.8,14.8,15.4,15.2,15.1,16.0,15.3,15.3,15.5,15.3,16.0,15.2,15.3,15.2,15.0,15.4,15.1,14.9,14.4,15.0,15.5,15.5,15.2,14.8,14.8,14.8,15.0,15.4,15.5,14.6,16.5,14.6,14.9,15.5,15.1,15.0,15.2,15.1,15.8,15.6,14.8,15.7,15.2,15.3,15.0,14.7,16.2,15.3,15.9,15.4,14.9,16.1,15.1,15.0,15.4,15.1,14.9,15.5,14.8,14.7,17.3,15.1,14.9,15.8,18.3,14.5,17.9,15.2,15.2,15.1,16.1,14.9,15.3,13.8,14.6,14.9,14.6,15.0,14.2,15.1,16.3,14.9,16.2,17.7,16.0,15.3,15.3,16.2,16.6,15.5,16.5,16.3,16.0,15.8,15.2,15.5,15.9,14.8,15.1,15.1,16.4,15.7,16.6,14.8,14.7,14.7,14.8,15.9,14.9,14.9,15.1,15.9,16.0,15.0,14.9,15.9,16.3,14.9,15.4,16.2,15.3,14.6,16.7,14.7,15.4,16.2,14.6,14.9,15.7,15.0,15.4,14.9,16.3,15.3,14.1,17.5,18.8,15.2,15.5,14.7,15.1,15.4,16.1,15.0,15.5,15.0,15.3,15.1,15.8,13.7,14.0,15.1,14.9,15.8,16.1,15.4,15.1,17.4,15.3,14.8,15.0,15.0,16.2,14.9,15.0,14.1,15.4,15.0,15.2,16.4,15.9,16.0,14.6,15.0,15.9,15.4,16.0,17.3,15.4,15.2,15.4,14.8,15.8,15.5,15.4,25.3,14.6,16.9,14.8,14.4,15.5,16.0,14.9,15.3,15.9,15.2,16.3,15.1,15.2,15.3,15.5,15.5,18.1,16.5,14.5,14.6,15.4,14.7,16.1,16.0,15.7,16.9,14.9,17.7,15.2,15.4,15.1,16.0,14.9,15.0,15.4,17.2,17.4,14.8,15.3,15.3,15.4,15.0,15.0,16.6,15.5,15.6,15.2,15.9,17.2,14.9,15.5,14.7,14.2,15.5,15.7,15.5,16.3,16.1,15.1,15.9,15.5,15.6,15.9,15.0,17.0,15.6,18.0,16.5,17.9,15.1,15.1,14.5,18.1,16.4,14.1,15.8,15.3,15.3,16.6,16.1,14.9,17.0,18.0,15.2,15.0,15.3,14.9,17.0,15.4,15.5,14.9,15.9,15.2,17.8,13.6,14.3,15.2,17.1,15.8,15.1,16.0,15.7,15.1,15.8,14.4,15.4,14.7,15.2,15.6,16.0,15.9,15.2,17.0,14.7,15.1,16.2,15.1,16.4,15.4,16.3,16.1,14.9,15.1,15.0,15.0,14.8,14.9,13.0,14.9,15.7,15.6,15.2,16.0,15.0,15.2,16.2,16.2,15.1,16.2,17.4,15.2,15.2,15.5,16.6,14.6,15.1,15.5,15.1,14.8,15.2,15.0,13.9,15.3,14.8,15.4,14.9,15.4,16.5,15.2,15.2,14.8,15.5,15.3,18.3,15.1,15.5,15.4,15.2,13.7,15.1,14.5,14.9,15.2,14.9,15.1,15.2,15.1,15.7,15.6,15.9,15.1,15.3,15.3,15.1,15.0,14.7,16.1,16.2,14.8,16.2,15.0,15.5,15.6,15.8,15.0,15.3,14.3,14.8,15.1,15.2,15.6,15.6,16.0,15.0,15.2,15.3,16.5,15.4,15.7,15.2,15.5,15.7,14.9,15.5,14.8,14.6,15.2,16.2,15.3,14.3,15.1,13.7,15.6,27.1,15.1,15.0,15.1,15.6,15.5,15.0,14.9,15.1,17.3,15.2,15.1,14.0,14.5,15.5,15.2,14.9,14.8,14.8,15.1,14.9,15.1,14.6,14.9,14.9,15.0,14.9,14.8,17.1,16.3,15.6,15.2,15.1,15.1,15.3,13.8,15.9,15.1,15.7,16.4,15.8,15.1,15.0,15.1,16.0,15.3,16.2,14.9,16.1,14.9,15.0,18.6,17.9,15.3,17.4,15.0,16.7,14.5,16.3,14.3,15.6,15.0,15.0,15.3,15.5,15.2,15.6,15.0,13.8,15.0,14.9,15.0,15.0,15.2,15.6,18.9,15.4,15.0,15.6,15.4,15.4,15.0,14.7,15.1,15.1,16.1,16.5,14.9,15.2,15.3,15.0,14.7,15.1,16.5,15.2,15.1,16.1,14.2,14.6,15.4,15.0,15.7,14.9,14.9,15.3,15.2,14.7,15.7,14.8,14.7,16.5,15.5,15.0,15.9,15.4,14.9,15.3,15.4,14.2,15.3,16.2,15.6,15.6,15.2,15.2,15.0,14.3,16.4,15.1,14.7,15.1,15.1,14.0,15.4,15.1,15.6,15.3,15.5,14.3,15.1,16.0,14.7,15.5,14.3,14.7,15.3,14.9,14.5,16.2,15.5,14.7,15.2,14.9,15.2,14.5,15.0,15.1,15.7,17.2,14.8,14.9,14.8,15.2,15.2,15.2,16.2,15.1,15.0,14.9,16.7,15.3,15.1,18.1,15.0,14.9,15.1,15.8,17.5,13.5,15.3,14.9,15.3,14.8,16.4,14.6,15.3,14.6,16.5,14.9,15.9,15.9,16.3,15.6,16.3,15.9,13.6,14.9,15.2,15.4,15.3,14.9,15.3,14.8,15.7,14.8,15.0,15.8,15.5,15.4,14.9,16.4,14.2,15.0,19.5,16.1,15.1,16.1,15.6,14.9,15.2,14.9,16.2,15.3,15.3,15.2,15.7,15.4,15.0,14.8,15.3,14.9,16.1,14.7,15.2,15.5,14.9,14.8,19.6,15.6,15.0,15.2,15.4,15.7,16.3,15.1,16.0,15.1,15.7,15.6,15.2,16.0,15.1,16.0,15.1,15.0,15.0,14.8,15.2,14.8,14.9,14.2,16.1,15.3,14.9,15.5,14.9,15.3,14.6,15.4,14.9,14.7,15.5,14.9,15.3,16.2,15.6,14.5,15.9,15.6,14.5,14.5,15.1,15.0,15.1,15.4,15.4,15.2,15.2,15.9,15.6,15.3,15.0,15.2,15.4,15.3,15.2,15.0,17.1,15.2,15.1,15.0,15.1,15.7,15.6,14.9,14.9,14.6,15.2,14.8,16.4,15.2,15.0,17.3,14.9,15.1,14.7,15.4,16.9,15.0,15.7,14.7,16.7,14.6,16.0,14.9,15.1,17.0,15.3,15.9,15.6,15.4,14.9,15.1,14.9,14.6,15.3,18.1,15.2,15.0,14.9,16.0,16.0,17.2,15.3,16.0,15.2,14.4,16.3,17.5,15.0,15.6,15.7,15.0,15.3,15.1,15.2,16.2,15.0,14.8,16.3,15.0,15.3] + }, + { + "position": 62, + "values": [48.7,36.7,45.2,48.1,48.4,38.2,50.1,47.4,39.1,64.9,51.4,55.1,36.1,46.7,39.8,40.0,41.2,49.0,35.3,39.8,54.5,48.5,50.3,48.8,33.6,34.0,42.7,41.3,48.1,53.0,35.5,45.8,44.5,42.1,51.3,52.8,43.4,47.5,50.9,48.0,51.0,47.2,41.1,54.2,40.4,52.4,40.3,40.2,56.2,37.4,48.2,39.7,41.3,51.0,61.5,30.2,47.0,38.4,59.7,37.1,55.6,48.2,39.8,38.4,38.6,50.1,35.3,57.5,44.0,45.3,52.6,37.7,46.6,38.5,60.8,37.8,37.9,56.2,50.2,45.5,41.1,50.2,53.4,50.6,49.0,48.6,37.6,46.1,51.2,46.4,40.1,49.7,50.5,61.1,37.4,41.2,40.3,50.4,38.5,48.8,48.7,50.0,55.4,51.2,47.1,47.6,37.3,50.5,54.6,53.9,50.7,35.1,37.3,37.1,49.3,42.0,48.8,48.1,54.1,38.5,38.3,34.1,49.3,53.2,49.9,50.9,40.5,39.0,48.1,43.8,52.4,48.3,46.8,37.3,38.1,47.2,40.6,40.5,38.6,48.1,54.4,46.4,49.4,39.0,53.9,40.2,47.0,49.2,40.0,47.3,48.8,48.6,38.2,57.0,46.6,37.9,46.5,42.5,49.0,49.9,46.8,56.7,48.0,41.5,48.7,48.4,49.6,50.9,51.7,51.7,44.6,54.7,49.6,51.9,46.5,49.3,40.4,50.8,39.4,40.1,48.8,43.5,100.7,45.1,50.8,50.9,34.7,46.3,38.5,53.1,49.1,63.6,42.7,43.6,51.1,46.7,46.4,51.4,34.7,38.5,53.8,39.8,35.2,41.5,52.9,40.2,48.0,47.9,46.8,48.0,34.6,46.4,41.9,38.1,50.1,40.7,47.6,50.8,41.1,50.8,46.4,49.8,53.4,50.4,48.5,49.1,38.6,47.9,45.6,33.9,49.8,48.0,39.0,48.7,45.8,32.5,45.6,52.1,32.5,50.6,40.7,35.8,54.3,44.9,32.8,35.3,51.5,48.0,39.4,43.5,46.2,45.6,47.8,37.7,48.0,45.2,43.4,38.9,49.3,53.9,39.9,48.9,33.9,51.4,39.5,45.7,48.5,41.2,59.2,43.0,53.7,42.4,45.9,40.9,45.2,40.4,46.2,48.7,56.0,41.1,50.6,49.9,37.3,46.9,41.5,44.5,46.1,39.1,50.3,39.0,48.2,39.6,43.9,49.5,49.7,64.8,47.5,49.7,50.6,50.2,56.7,47.2,48.2,41.0,21.7,44.3,40.6,52.0,51.6,48.3,42.1,53.0,43.2,50.0,40.1,52.7,49.1,46.4,46.8,39.8,41.2,42.3,46.8,47.7,49.1,49.1,39.6,39.8,50.7,51.0,39.8,40.9,53.9,41.5,63.4,35.5,49.9,44.5,56.3,50.4,51.1,40.8,52.3,37.4,49.1,40.7,34.1,39.0,55.3,49.5,51.7,53.6,51.8,44.7,57.7,54.4,49.5,49.0,33.6,36.4,44.2,52.2,33.5,40.2,49.8,51.3,56.8,39.7,57.1,51.5,49.5,51.3,49.7,50.4,48.3,40.4,37.0,37.0,51.6,51.3,40.8,38.6,50.5,44.1,48.0,52.7,48.3,46.0,36.3,38.4,46.3,48.0,48.6,37.6,41.2,48.9,50.3,49.1,51.8,41.0,42.0,40.4,51.8,34.0,44.1,64.5,50.7,54.1,49.3,51.8,42.5,39.0,48.6,48.1,52.2,40.2,49.1,38.3,37.7,52.0,40.6,48.7,51.8,36.3,40.1,36.4,38.8,41.7,36.4,21.6,42.6,52.6,57.4,38.9,55.8,37.0,40.0,49.7,54.0,47.1,36.7,49.9,50.7,56.6,50.4,37.1,38.4,49.6,34.8,50.4,50.1,52.8,53.4,47.9,49.1,39.7,43.2,45.0,51.9,50.3,52.7,39.1,35.4,34.0,37.2,38.5,55.6,38.0,43.7,57.5,49.4,44.9,32.9,53.7,37.1,50.1,40.1,34.1,37.7,42.4,42.9,54.1,51.5,39.9,36.9,50.3,36.4,47.7,50.9,40.2,51.5,38.6,48.9,54.0,45.2,81.4,42.4,39.9,55.0,37.3,40.8,36.1,40.7,36.0,48.1,64.3,53.4,40.4,43.2,43.6,50.8,33.4,35.9,40.6,46.6,39.0,52.0,38.8,50.3,37.9,36.5,46.7,47.5,48.5,48.3,33.2,55.0,51.8,54.2,52.4,47.0,40.4,36.9,50.5,54.6,56.8,47.8,38.1,39.8,44.2,38.5,36.9,41.9,49.5,52.5,47.5,47.4,51.1,50.4,32.1,39.4,44.3,49.4,50.4,46.0,39.2,38.3,63.5,45.9,57.5,57.1,37.1,36.9,53.0,42.9,42.1,34.6,51.5,51.1,43.7,47.9,29.7,37.8,39.8,51.2,53.7,51.3,44.2,48.4,38.7,52.8,35.9,47.3,35.5,51.8,46.8,50.9,52.5,42.5,38.8,52.0,44.9,50.0,48.6,39.1,36.6,39.0,48.5,45.6,43.0,48.9,40.9,46.3,51.2,50.4,51.2,51.5,61.9,37.3,48.6,34.7,39.2,44.1,46.5,38.9,49.4,35.9,33.1,48.5,48.0,56.0,72.4,40.1,37.3,51.3,51.3,45.8,43.1,36.0,34.6,39.2,50.8,31.1,39.9,49.1,60.4,43.1,54.6,35.1,55.8,31.8,47.2,50.8,37.7,44.8,49.1,49.4,52.5,50.3,51.2,50.3,36.6,48.6,46.7,39.3,33.0,39.9,28.8,52.9,49.8,52.0,54.5,50.0,53.4,48.5,44.0,48.6,51.8,47.0,47.3,43.3,34.9,36.3,55.0,41.3,41.9,40.8,38.5,47.1,34.5,49.7,41.7,39.7,52.7,33.6,46.2,40.7,50.5,52.5,50.9,50.4,32.7,41.0,49.0,46.9,49.3,45.6,54.1,54.0,48.4,45.3,49.6,35.5,47.6,50.1,36.4,40.5,40.8,47.7,37.5,52.7,48.7,51.4,41.4,46.4,37.7,36.4,42.8,35.8,50.0,38.1,36.9,49.0,40.5,49.0,35.2,37.0,52.3,45.6,48.7,48.4,40.0,37.8,37.1,52.6,46.0,51.5,42.9,44.4,32.8,49.8,53.3,47.3,44.4,47.5,48.5,38.0,50.4,49.9,47.6,48.2,29.9,47.6,51.9,40.3,39.1,37.4,47.3,49.4,45.0,38.1,48.2,59.5,48.3,51.6,44.4,50.0,35.7,50.2,56.7,33.7,38.4,49.3,48.8,34.0,39.4,45.4,42.4,53.0,60.6,48.5,53.1,47.0,49.3,40.0,44.4,38.3,48.7,36.3,50.3,46.7,47.9,48.9,55.0,38.2,49.1,49.1,46.9,70.2,42.4,38.5,41.5,32.8,36.7,50.9,49.5,52.3,34.1,49.3,44.4,45.3,44.5,54.1,63.4,41.0,35.3,47.0,38.9,40.6,47.9,37.2,50.7,52.3,48.4,40.2,49.2,59.1,43.9,51.4,35.1,44.2,45.3,38.8,38.2,54.1,39.9,40.2,36.0,48.3,49.3,38.4,48.2,44.4,50.6,50.7,48.8,47.9,44.6,43.6,48.3,45.6,49.4,48.8,47.5,45.6,50.9,50.5,47.8,48.2,64.9,39.9,38.5,49.6,40.4,48.1,31.9,45.2,41.8,47.9,39.9,38.9,53.0,33.3,48.5,52.9,48.7,47.1,49.9,52.4,39.3,49.0,51.5,37.5,41.6,54.2,44.7,49.1,48.4,34.7,50.0,52.6,42.7,40.5,37.5,50.7,52.2,47.8,51.5,58.0,50.1,51.0,36.9,41.0,62.2,49.2,49.1,47.8,48.6,37.0,51.1,34.3,47.5,44.0,38.1,51.0,45.0,54.4,38.4,50.9,51.8,36.5,50.1,51.4,41.8,51.4,48.3,39.3,48.9,48.6,37.5,49.9,48.1,49.2,38.8,42.2,37.3,38.7,38.7,53.1,41.7,43.2,48.9,56.1,45.5,56.6,41.7,49.9,50.6,41.7,49.7,49.3,38.7,43.6,43.7,49.9,47.5,40.3,39.6,50.0,52.1,48.4,41.7,38.8,40.2,35.8,40.2,45.8,50.0,49.9,60.7,37.2,38.5,45.2,30.1,50.2,48.6,50.3,44.1,53.3,47.8,35.3,52.4,51.7] + }, + { + "position": 63, + "values": [15.2,17.6,16.4,14.7,13.5,18.1,14.4,14.6,16.9,15.4,14.7,14.6,18.4,14.4,17.0,18.5,17.7,15.9,19.4,15.0,20.4,15.3,16.7,17.3,19.0,21.5,20.5,18.3,15.2,16.4,14.4,19.3,14.5,19.8,15.5,16.1,14.1,13.3,17.2,15.2,13.7,14.7,19.4,14.7,15.4,20.4,18.1,18.2,16.0,18.5,14.5,17.6,19.1,15.1,16.5,14.1,14.4,18.3,20.4,17.0,18.5,15.3,17.7,20.1,17.8,14.9,16.9,21.0,14.2,20.9,18.7,16.7,15.2,16.6,23.0,20.3,17.9,14.1,16.1,14.6,19.0,14.9,15.4,15.4,14.7,15.0,16.8,14.3,16.3,18.4,14.2,13.6,14.8,13.0,18.1,18.6,16.4,14.6,18.4,14.8,15.4,15.6,14.8,15.0,16.0,14.4,16.2,15.6,15.5,15.4,15.9,18.0,14.8,18.0,23.7,16.0,19.5,15.1,11.8,18.0,17.9,18.4,14.9,15.5,14.6,17.2,18.1,17.8,14.1,18.9,15.9,13.8,15.7,15.2,17.4,14.2,17.8,17.9,18.9,15.2,15.7,17.5,18.7,15.8,15.6,14.0,17.7,16.0,18.5,15.5,17.5,14.6,15.8,15.5,14.2,17.9,14.4,16.8,14.8,16.5,13.9,15.4,15.6,19.3,15.3,15.4,14.8,15.9,15.3,14.8,14.5,14.9,16.5,16.3,15.3,14.6,14.4,18.4,15.4,19.1,16.8,16.8,14.4,14.2,20.6,13.6,14.9,14.5,17.5,15.8,16.3,23.0,19.9,14.3,15.7,14.2,14.6,15.6,20.7,17.0,21.8,19.0,19.0,14.3,23.4,19.8,14.7,15.2,16.4,14.4,20.0,21.1,14.7,18.1,12.9,15.3,14.9,18.6,15.4,14.4,14.9,15.4,15.0,15.6,14.7,14.8,18.2,14.7,14.1,19.9,14.9,21.2,14.8,15.5,14.2,20.0,14.1,15.1,20.3,15.1,18.3,16.5,16.4,13.7,17.6,16.6,14.8,16.0,18.3,19.5,14.0,13.6,14.5,16.7,16.3,15.2,13.4,18.6,14.4,16.5,19.8,15.0,21.9,15.5,18.4,14.5,18.9,17.6,14.6,16.2,15.2,14.6,13.6,13.9,15.3,18.4,21.6,15.2,17.0,19.4,14.7,15.5,18.0,15.3,13.6,16.7,13.5,14.3,18.2,19.0,18.3,15.1,16.1,15.2,13.6,21.5,14.4,15.8,15.0,18.7,15.8,17.6,20.8,14.7,18.9,14.8,19.3,15.6,15.9,14.5,17.9,15.6,15.2,16.5,17.8,15.2,14.1,14.8,14.9,17.6,16.0,16.1,20.3,13.5,16.1,14.7,20.0,18.8,14.2,15.7,13.6,17.4,15.3,15.4,21.1,17.2,16.1,12.9,14.0,15.8,14.5,19.1,16.1,17.3,18.1,18.4,18.3,16.5,15.9,14.6,15.8,14.9,16.2,13.9,14.5,15.3,16.1,15.6,19.9,18.6,13.6,14.3,13.6,15.6,15.4,15.1,21.7,21.0,16.5,15.7,15.1,13.6,16.6,14.9,14.6,18.8,17.7,17.7,15.7,15.8,20.3,19.5,16.7,15.0,14.2,16.0,13.8,13.8,14.4,17.4,15.1,13.9,14.1,18.0,13.9,17.0,15.8,14.9,34.9,13.5,18.5,15.9,19.1,14.8,15.3,19.0,16.7,15.1,12.1,15.6,15.3,18.9,19.3,13.9,15.3,17.6,15.4,17.8,18.0,15.4,18.4,16.7,16.6,15.1,18.3,17.9,11.0,15.2,17.7,10.5,18.7,15.4,21.4,18.1,14.1,16.0,19.1,14.5,15.8,15.5,12.9,17.9,15.4,16.6,15.7,17.2,14.6,14.3,14.8,16.0,15.1,14.8,15.2,16.3,17.4,17.7,14.8,18.6,14.8,14.6,15.3,18.6,14.6,15.8,19.0,21.0,15.4,14.7,17.1,13.8,15.0,15.4,12.7,15.7,18.0,14.4,18.8,17.7,15.0,16.4,18.9,16.4,15.7,17.7,14.1,19.8,18.6,14.5,15.4,15.1,18.3,14.7,15.7,18.2,13.1,20.2,18.7,19.0,16.3,20.0,19.8,20.1,18.8,14.6,17.3,15.1,20.9,21.8,13.9,18.8,21.7,16.8,22.1,18.4,14.8,18.3,15.9,15.8,15.8,17.7,16.5,15.5,16.3,14.4,14.2,14.1,14.6,15.1,14.2,15.4,14.1,18.1,19.0,16.3,12.0,15.2,20.4,19.6,18.1,18.4,17.8,14.6,19.1,16.0,15.1,15.1,16.1,16.1,15.5,12.4,17.8,14.9,15.7,14.5,14.7,18.4,19.1,18.5,15.0,21.1,16.1,20.7,17.7,15.4,18.1,13.4,17.1,15.5,15.0,17.8,15.8,18.9,20.2,19.4,16.2,15.2,19.6,16.3,15.3,18.4,19.7,14.7,16.0,17.2,17.0,15.3,14.2,14.5,18.2,18.1,15.9,14.9,15.0,15.6,15.8,16.3,18.4,14.4,14.2,17.5,15.1,18.3,18.7,16.1,14.4,16.1,15.2,14.7,17.7,17.5,15.4,14.4,15.6,14.2,17.8,15.7,17.0,13.7,14.6,17.8,24.8,20.2,19.5,19.1,14.0,15.8,12.8,13.9,18.7,19.2,20.8,15.0,19.7,14.8,14.7,17.6,21.0,17.8,18.6,18.9,14.6,19.1,14.6,15.3,14.8,16.2,15.8,16.9,13.9,14.1,15.6,17.6,14.6,14.4,19.2,18.6,18.1,14.0,15.5,14.9,13.3,20.1,14.8,15.4,15.0,19.1,15.2,15.8,14.0,15.4,18.8,18.1,34.9,18.6,17.1,17.1,19.0,18.0,14.1,17.5,15.5,18.2,19.0,15.1,16.2,14.7,20.1,18.9,14.1,14.9,15.3,14.5,17.1,14.8,14.9,14.6,14.4,17.5,16.2,15.9,15.2,14.6,14.8,15.3,19.8,16.3,20.8,14.7,17.7,18.6,15.2,14.3,14.3,14.9,14.1,18.3,15.3,20.3,18.1,15.4,19.6,17.1,14.1,18.9,19.0,14.6,19.2,14.6,14.7,14.3,14.3,17.9,17.5,14.6,17.6,16.0,14.2,14.8,14.6,12.4,16.1,14.4,14.7,17.9,15.4,15.0,18.4,16.6,14.5,14.1,16.1,18.7,14.4,14.8,15.6,17.8,18.1,14.5,14.2,19.0,19.3,15.4,15.8,21.7,13.5,13.6,14.7,17.1,14.8,20.4,19.1,19.0,14.7,14.7,18.1,18.6,14.5,18.9,12.7,16.8,15.8,15.7,15.8,15.2,17.2,19.9,17.9,15.1,18.7,15.1,16.0,15.6,15.9,15.9,15.7,18.1,15.2,13.5,19.0,15.1,15.4,19.1,14.6,16.6,14.0,15.1,15.5,15.7,19.9,15.2,17.6,13.2,14.6,14.6,18.3,18.9,14.0,19.1,17.5,14.5,18.4,14.4,12.0,14.6,16.5,15.2,15.6,19.2,18.3,17.8,14.0,14.1,20.6,18.4,15.6,17.5,18.8,18.4,13.9,15.3,19.6,15.9,17.9,15.8,14.8,15.5,15.9,18.2,14.9,15.1,15.7,15.0,15.5,15.8,16.2,14.1,14.8,15.1,14.4,30.4,15.5,17.8,18.0,20.1,14.2,17.3,16.9,15.2,19.2,17.9,19.1,19.6,15.3,15.6,15.1,14.4,14.5,16.0,15.5,18.7,15.4,14.3,17.2,15.6,14.6,16.4,15.1,14.8,19.0,14.9,14.9,13.8,20.1,18.0,15.0,15.6,15.6,14.3,19.0,15.2,14.9,17.9,22.3,17.8,15.2,14.8,16.1,14.7,19.2,15.5,21.3,15.6,15.0,16.9,19.2,15.1,15.0,15.3,15.3,15.9,14.4,18.5,15.8,18.2,15.0,15.3,20.1,15.3,15.0,17.7,14.3,16.8,14.5,15.8,18.7,18.0,18.1,19.7,12.2,19.3,15.0,16.3,16.2,14.2,15.8,16.6,13.9,14.7,19.0,13.5,15.2,18.5,19.6,16.3,15.2,15.1,17.2,18.5,15.8,14.5,15.5,17.0,20.3,18.2,19.3,19.9,14.3,15.6,14.9,15.7,17.9,16.9,20.3,14.5,15.6,14.2,14.7,14.1,13.6,14.3,15.6,17.9,20.1] + }, + { + "position": 64, + "values": [45.5,53.7,37.7,45.1,44.5,52.8,36.6,47.3,52.4,47.2,44.3,23.2,34.7,43.5,53.1,38.6,53.5,48.1,54.8,43.4,52.1,48.6,46.7,51.0,46.7,47.0,55.2,52.5,46.2,45.4,46.0,55.9,61.8,53.3,41.3,38.9,43.8,38.7,41.6,35.6,45.7,45.7,54.8,42.5,52.1,44.0,52.0,53.1,49.6,48.4,46.3,55.0,52.8,37.5,44.1,25.2,48.8,53.5,17.5,54.0,38.7,51.8,50.5,42.6,56.8,47.5,42.7,31.0,53.8,40.0,47.8,52.2,40.7,56.4,17.2,54.1,54.0,44.4,43.7,38.6,54.6,44.5,44.6,42.5,40.8,43.8,42.7,54.6,46.2,54.9,45.9,38.8,44.2,45.5,51.2,53.0,52.1,34.9,53.4,45.9,42.9,40.2,43.1,41.6,46.0,42.5,46.7,45.2,49.7,44.8,40.2,42.3,55.1,50.4,53.3,43.2,56.6,46.9,34.7,51.0,53.8,50.3,42.3,42.2,46.7,40.5,52.8,52.5,44.0,48.9,50.0,42.2,38.8,47.3,40.4,45.7,53.0,50.8,50.5,37.5,42.1,48.4,41.0,54.9,45.2,44.5,47.3,43.1,55.2,45.0,35.6,51.9,44.8,44.4,41.3,53.9,44.5,55.0,36.1,46.5,42.4,57.0,47.3,53.8,45.9,35.9,44.7,46.5,42.5,39.6,43.1,42.4,42.6,42.1,37.6,42.6,44.5,45.4,43.4,53.6,47.3,48.1,72.6,37.8,41.7,36.0,41.7,41.9,51.4,46.1,46.7,49.9,30.0,41.2,48.8,34.5,45.7,48.8,54.4,48.4,49.3,53.1,51.1,31.6,61.3,46.4,31.4,45.9,46.4,42.5,48.2,48.8,52.7,44.2,33.2,43.3,43.4,54.3,42.0,44.5,44.5,45.9,46.0,46.7,40.5,43.1,56.2,43.9,39.7,52.9,42.1,49.8,45.0,48.4,40.2,50.3,42.8,38.9,50.2,46.4,54.5,45.0,46.2,43.7,38.9,57.7,43.1,35.6,47.4,45.3,45.0,39.5,43.8,44.1,45.1,43.8,37.1,53.9,45.8,49.7,43.6,44.9,53.1,40.6,52.8,42.2,44.0,51.6,45.9,43.2,45.5,46.7,49.5,45.7,43.7,55.4,52.4,38.0,38.3,54.2,43.5,47.5,52.8,41.4,43.2,48.9,45.7,42.8,49.7,53.1,43.0,50.2,43.7,45.0,45.5,17.5,44.9,40.6,42.8,46.9,30.9,40.1,45.6,51.8,41.9,42.7,43.2,54.4,48.7,39.4,50.4,45.3,44.8,49.2,52.0,42.9,42.7,40.7,42.1,52.9,44.4,36.8,51.7,49.5,49.3,38.4,50.3,48.7,44.4,44.6,37.4,52.5,48.6,36.9,17.4,50.2,42.3,45.8,40.7,47.6,40.2,55.1,45.0,55.8,45.0,52.5,54.3,52.5,42.1,39.2,43.9,45.3,41.0,38.8,36.2,41.8,45.1,46.5,49.6,52.0,41.4,45.3,35.6,43.9,48.5,42.6,31.7,37.0,53.6,43.1,33.1,41.1,38.8,43.8,36.2,51.4,54.6,54.8,40.3,39.9,46.7,59.1,49.5,52.7,42.3,36.5,43.6,45.0,43.6,50.2,45.8,41.7,39.3,55.2,38.8,52.4,47.9,135.4,45.8,51.1,51.5,45.5,45.0,54.5,52.7,44.2,44.9,43.6,34.9,43.1,41.2,52.9,52.9,38.9,39.2,51.8,50.7,49.0,41.9,43.3,54.5,44.6,41.0,54.8,54.2,52.5,42.0,41.6,53.0,41.6,54.3,43.6,18.0,51.9,42.1,48.1,51.2,41.9,40.1,45.2,43.3,49.9,48.4,39.0,40.6,41.6,49.7,42.4,40.8,49.9,36.6,37.3,43.3,47.4,55.6,50.8,53.7,46.8,39.5,43.4,46.2,52.9,50.6,42.9,51.6,53.4,41.6,56.3,42.5,42.1,32.8,44.6,33.0,41.2,40.4,36.6,51.8,50.3,56.4,46.3,41.0,52.0,46.1,54.9,52.8,36.9,54.7,44.4,44.9,54.7,45.5,47.3,40.2,52.0,45.1,91.7,53.6,53.4,42.2,53.3,51.9,49.1,32.7,45.4,51.0,36.1,51.5,52.7,44.5,35.4,56.7,52.2,54.5,41.4,52.3,46.9,35.6,47.5,52.9,54.1,42.9,44.3,44.0,43.8,28.5,44.4,39.0,42.5,47.2,40.2,54.5,52.2,41.0,44.5,30.2,44.2,48.7,51.4,53.1,48.5,39.2,50.5,43.5,46.5,48.8,38.9,47.3,39.6,34.7,49.0,45.4,44.8,43.9,41.8,51.1,53.6,86.0,44.0,31.7,47.5,29.8,52.5,55.3,42.6,40.3,49.0,42.2,42.5,47.9,44.2,40.0,50.9,52.6,44.6,44.6,45.5,52.2,42.6,51.4,42.0,53.8,50.2,48.6,43.9,46.0,44.1,40.6,53.0,54.1,46.7,35.4,43.1,44.0,36.4,45.1,55.1,43.8,38.6,46.8,55.6,37.7,51.4,39.1,39.6,46.2,43.9,41.4,54.4,45.8,44.0,44.2,47.4,37.9,53.4,46.5,53.5,49.7,46.1,46.1,30.5,59.9,53.9,49.8,43.5,42.1,49.0,33.5,55.3,43.9,51.5,35.2,49.9,36.6,45.1,52.7,30.0,26.9,50.3,27.2,44.6,43.9,46.7,47.1,40.8,43.6,45.4,51.3,35.6,37.2,39.1,45.3,45.9,44.0,52.4,56.3,40.8,57.0,47.2,37.4,44.0,29.5,42.7,43.0,44.6,55.7,41.0,51.2,37.0,41.9,55.9,55,59.0,55.6,53.0,55.2,53.9,55.8,41.8,60.8,45.2,51.9,52.3,45.4,43.0,50.5,55.3,43.3,43.7,42.4,47.3,41.8,47.8,45.9,47.1,56.3,45.4,44.3,43.0,45.2,47.1,39.9,43.1,43.6,54.5,44.9,41.4,51.0,43.2,49.8,44.6,46.1,45.7,40.8,42.1,54.2,43.8,56.0,45.7,37.5,52.2,53.8,44.7,55.7,53.0,47.8,54.7,42.3,47.4,44.5,42.6,49.7,46.4,49.2,47.3,45.5,46.9,34.0,47.1,30.9,48.3,41.1,42.2,45.5,45.4,41.8,56.1,47.5,42.8,43.7,39.5,49.3,44.7,46.3,43.8,54.1,52.1,41.8,43.3,48.7,36.3,53.7,30.4,46.2,41.7,42.3,42.7,45.2,51.1,30.4,54.3,52.1,45.8,43.6,51.4,53.0,40.1,50.0,37.3,46.9,44.1,47.3,42.9,42.1,53.3,50.4,54.4,43.4,56.7,43.8,46.8,45.0,43.8,38.3,55.8,43.9,46.8,45.5,47.7,43.3,44.3,53.2,48.6,52.5,42.1,36.8,39.3,38.7,44.9,56.0,45.7,38.1,54.9,43.1,42.8,53.7,35.4,56.1,51.4,45.2,40.6,54.4,37.2,37.4,53.0,42.2,40.4,51.7,33.5,47.5,47.9,51.9,42.4,54.5,52.9,40.6,51.1,52.5,43.0,43.3,44.2,45.9,45.7,48.1,43.3,45.1,46.5,51.9,49.3,45.5,44.7,36.8,42.6,44.7,43.7,40.4,47.3,42.5,40.2,44.9,55.1,53.1,42.5,53.1,47.0,54.0,36.8,40.1,40.9,54.7,53.5,44.7,52.0,36.1,42.9,45.7,44.4,42.3,41.0,49.4,44.5,41.4,50.2,28.3,44.9,46.2,45.9,44.4,52.3,96.2,45.1,36.2,54.0,53.2,41.2,64.0,47.1,42.8,86.7,34.8,42.6,57.5,51.5,37.6,43.4,40.1,44.2,45.6,54.7,46.0,54.9,31.5,44.7,51.3,41.3,49.7,40.3,50.9,48.1,41.1,52.1,40.9,41.2,49.2,38.7,44.0,49.2,45.8,37.7,55.0,42.8,46.8,48.5,50.4,55.0,50.6,48.2,53.0,47.6,56.1,47.2,46.1,45.8,34.4,44.9,46.7,52.7,41.8,55.0,47.6,46.3,55.2,63.7,42.4,45.8,46.2,53.9,53.9,43.2,44.3,44.4,51.3,46.6,48.8,56.7,56.1,43.7,48.0,47.4,53.2,40.6,51.3,46.0,36.7,46.4,46.7,41.2,36.9,34.2,39.9,51.1,46.2,34.2] + }, + { + "position": 65, + "values": [19.2,15.8,19.0,18.4,19.0,16.2,18.6,18.4,17.4,23.8,18.7,17.5,17.9,18.9,17.1,15.7,16.0,18.3,13.9,15.5,19.5,19.4,19.8,15.9,13.7,15.1,12.1,16.0,18.1,19.7,18.0,14.5,16.4,17.3,19.2,19.0,18.5,19.4,18.4,17.7,18.0,19.6,16.0,18.5,18.1,16.0,15.6,16.1,20.3,15.4,17.8,17.0,19.4,16.2,19.3,19.3,17.9,15.8,16.5,20.7,13.7,16.7,16.2,15.5,15.7,18.8,14.7,18.1,16.6,15.5,20.9,14.6,16.7,16.4,19.6,16.4,15.4,20.6,18.5,18.1,16.2,18.3,19.5,18.8,18.8,18.5,15.9,17.6,18.3,19.5,16.7,17.6,18.3,19.0,15.7,15.8,16.9,18.3,16.2,18.2,18.5,19.5,18.2,19.1,18.7,18.4,16.8,17.7,19.8,19.2,18.9,14.5,13.9,15.4,19.0,15.7,18.7,18.6,18.4,16.2,14.5,15.6,16.2,18.3,19.1,21.6,16.1,16.5,18.6,15.4,19.0,19.2,19.3,17.7,16.2,16.5,18.3,16.6,16.2,18.9,19.3,15.7,18.2,16.2,18.5,18.3,15.0,18.6,16.7,18.5,16.7,15.2,17.2,22.6,17.4,16.3,18.5,17.1,17.5,17.9,18.7,18.7,18.3,16.1,18.9,17.9,18.0,18.8,18.6,17.9,17.0,18.5,17.1,18.8,19.1,17.9,17.4,18.2,15.1,17.4,18.3,18.3,18.9,44.0,18.2,18.9,20.5,17.2,17.8,16.5,18.8,18.9,15.7,18.8,19.9,18.1,18.7,18.2,13.6,16.4,17.8,16.2,14.3,14.1,20.7,15.2,17.0,18.1,18.9,18.8,13.8,12.6,18.6,17.7,16.1,19.4,19.2,18.5,16.7,18.7,18.4,18.3,18.1,19.1,18.1,16.4,18.9,18.6,18.8,14.6,19.6,19.0,15.2,18.7,18.5,13.1,18.6,18.3,13.8,18.4,16.0,16.4,16.7,18.3,14.0,16.3,18.5,18.6,19.0,16.5,14.9,19.5,18.5,16.9,18.6,16.7,17.3,15.8,19.8,14.6,19.7,19.0,14.7,19.1,15.9,18.1,16.3,22.0,18.9,16.2,18.5,15.8,16.9,16.5,18.3,16.4,18.1,17.7,18.6,16.5,18.4,19.0,14.3,18.4,18.5,14.9,19.1,18.6,17.0,15.5,16.7,18.5,17.5,18.5,19.5,17.0,17.7,19.1,19.4,18.3,17.3,17.8,17.6,16.5,12.9,20.3,16.3,20.5,18.5,19.0,15.9,19.7,18.5,18.9,16.8,19.1,18.8,18.4,18.7,16.5,15.7,18.0,17.3,15.4,19.2,18.8,14.9,15.6,15.9,18.7,15.7,19.0,16.2,15.8,16.9,14.8,18.9,18.1,19.7,19.3,19.9,16.3,19.5,19.4,16.3,16.2,13.2,16.5,20.6,19.1,19.7,18.8,18.9,19.2,19.8,18.9,18.5,18.0,16.3,17.1,17.7,19.2,20.5,15.7,18.7,20.4,16.2,15.2,20.7,18.4,18.4,17.6,17.6,18.8,18.9,16.6,15.4,16.3,18.3,18.3,15.9,19.1,20.0,19.3,19.2,18.0,19.5,18.2,19.0,16.0,18.3,19.0,18.6,15.7,18.2,16.5,18.5,18.4,18.1,19.1,15.6,18.7,14.5,14.6,19.6,18.3,20.0,19.3,18.7,17.9,16.5,17.1,16.3,18.9,21.7,17.8,17.0,16.6,14.4,17.5,16.3,17.3,17.4,16.0,16.5,16.1,16.7,15.7,16.3,17.3,15.9,20.0,15.6,15.5,17.1,17.9,16.1,19.5,19.2,18.3,18.2,16.4,18.3,18.6,18.5,16.5,17.6,18.6,17.5,18.3,13.5,18.5,19.6,18.6,18.5,16.2,18.0,15.9,18.9,19.5,19.0,16.4,16.5,16.6,14.1,16.1,17.5,16.7,18.0,17.6,21.3,17.2,20.8,18.4,18.4,14.4,14.6,15.7,15.5,17.8,15.5,21.0,18.0,16.5,18.5,14.5,15.9,18.8,18.5,16.5,19.5,19.1,18.0,17.1,15.4,29.9,16.8,16.1,19.5,14.6,15.5,14.8,15.2,18.5,15.3,18.8,6.0,15.8,16.4,17.8,14.4,18.8,13.8,16.4,19.0,16.5,18.3,16.6,19.0,16.6,16.1,18.5,18.7,18.4,18.5,17.7,19.7,19.7,19.2,17.8,18.3,16.5,15.1,20.0,20.5,18.7,18.5,16.3,15.7,15.1,15.3,36.2,16.5,19.0,17.3,18.0,19.2,18.5,18.4,21.1,16.9,18.3,18.3,18.4,17.5,18.4,15.9,15.5,19.4,17.3,17.6,17.5,16.4,19.2,16.1,17.5,13.4,18.9,18.7,16.4,19.4,11.9,15.8,15.8,18.4,19.7,16.3,19.6,18.4,16.1,18.1,14.4,18.1,14.8,20.1,18.9,19.3,17.3,16.5,17.0,16.2,19.1,19.4,17.1,20.0,16.7,16.3,18.2,18.1,15.3,16.6,19.3,16.0,18.9,18.9,18.4,19.4,19.9,16.2,15.6,15.6,18.3,19.6,19.0,16.0,19.4,16.3,17.9,18.0,12.6,18.2,32.0,15.6,14.1,18.2,18.2,17.1,18.7,14.0,15.0,15.4,18.4,15.6,15.0,18.9,17.8,16.2,18.9,13.8,19.8,14.8,19.0,19.0,19.8,18.8,19.0,18.3,19.0,18.4,20.3,19.0,14.5,18.5,18.5,13.4,16.8,16.5,14.6,19.1,19.2,18.3,17.5,18.6,18.7,18.5,16.6,18.6,19.8,19.0,19.0,15.8,14.0,17.2,16.3,16.5,16.4,16.0,16.7,18.2,16.8,17.7,16.6,15.9,17.9,16.4,18.2,16.3,17.3,18.9,17.6,18.2,15.0,16.1,19.0,18.9,19.8,19.3,19.7,19.1,18.5,18.3,18.8,19.7,16.5,14.5,18.0,16.7,18.7,16.0,17.2,18.8,18.1,18.7,16.2,18.7,15.7,18.2,17.0,13.4,18.6,16.0,14.3,18.6,16.2,16.3,14.7,14.1,18.4,15.2,18.5,18.3,15.2,16.2,18.1,17.2,19.0,18.9,16.2,17.8,21.3,18.6,18.5,18.4,15.9,18.3,18.4,16.2,18.9,18.0,18.3,19.0,16.4,17.9,17.7,16.5,15.4,16.4,18.2,18.9,15.1,15.8,18.4,18.8,18.7,18.1,17.9,18.4,19.6,16.3,19.1,13.9,15.6,18.2,18.3,13.5,16.1,18.2,15.7,18.2,17.6,20.4,18.3,18.1,18.6,14.3,16.3,15.2,18.7,18.9,18.2,16.4,18.3,18.7,20.6,16.5,18.5,18.1,17.0,16.7,16.0,15.8,16.0,15.1,16.9,17.9,17.5,19.2,12.8,19.2,16.5,16.9,18.3,18.8,19.3,16.5,14.0,17.0,16.2,16.2,18.4,18.3,14.2,19.1,18.8,15.4,18.7,18.9,15.2,18.6,16.0,17.8,17.5,17.2,16.7,20.5,16.7,15.8,15.4,18.7,19.3,15.3,16.4,18.7,18.8,18.7,18.5,17.5,20.7,16.7,18.3,19.2,18.3,17.7,18.6,18.8,19.1,18.7,18.8,19.2,33.9,16.6,15.3,16.3,16.5,17.8,16.6,18.3,18.7,14.9,16.4,15.6,18.9,15.6,18.7,19.7,18.2,18.3,19.0,19.5,17.9,16.4,17.8,15.9,16.6,18.9,18.7,18.1,18.9,14.1,19.7,23.5,18.9,14.2,16.1,19.0,16.4,19.5,19.1,17.8,19.0,18.3,15.7,14.0,15.6,17.8,18.9,18.5,18.2,14.1,19.6,13.6,18.7,17.0,15.6,14.3,19.5,16.8,19.0,18.7,18.8,15.4,17.3,18.6,19.0,17.0,18.6,16.5,17.9,17.9,15.9,18.6,17.9,18.3,16.7,15.4,16.1,15.1,15.8,20.1,15.8,18.2,18.1,18.7,19.0,18.1,18.1,18.0,18.9,16.7,20.4,19.0,14.4,13.8,18.2,18.7,18.4,15.6,17.2,18.6,18.6,18.3,16.5,15.9,15.3,16.7,14.4,17.8,18.2,17.2,22.6,15.9,15.8,14.5,17.7,18.7,18.5,19.3,19.5,18.7,18.3,18.6,14.1,17.7] + }, + { + "position": 66, + "values": [20.8,20.0,20.4,21.0,20.1,19.3,19.5,20.3,24.3,20.4,19.9,19.2,19.3,20.1,22.6,17.7,20.1,19.6,18.4,20.5,20.7,21.0,21.1,19.6,17.1,19.7,17.4,19.9,19.8,19.9,19.7,18.1,18.4,22.3,19.7,19.7,20.0,24.5,21.5,19.5,25.7,19.2,20.1,19.9,20.0,19.3,20.1,19.6,19.3,21.1,19.2,24.4,22.7,22.2,19.7,20.5,21.1,19.9,20.9,17.3,23.3,18.7,19.4,19.4,22.0,20.2,19.0,18.2,21.2,21.8,17.7,24.3,17.8,22.3,21.9,20.3,20.0,20.2,20.4,20.1,19.8,19.6,20.7,20.2,19.5,19.9,21.4,18.9,19.8,22.0,21.4,18.7,20.0,23.6,22.4,19.8,21.7,19.4,19.9,19.0,20.0,19.6,20.6,19.0,19.8,20.4,19.8,22.4,21.2,20.0,20.2,19.5,20.1,16.8,18.1,21.0,20.4,20.3,21.6,19.7,20.2,17.9,18.2,20.1,24.2,20.2,20.3,22.2,19.6,19.6,20.4,19.9,21.2,21.1,21.6,20.0,22.7,19.9,20.2,20.2,21.3,19.6,20.2,20.8,19.2,19.8,21.9,19.9,20.1,20.0,17.1,19.3,20.5,20.3,19.9,20.0,18.3,22.1,18.5,19.9,19.9,22.0,19.7,19.8,20.2,19.7,19.8,20.0,20.0,18.3,20.1,18.5,20.0,20.6,20.0,20.2,19.7,19.5,20.8,21.6,20.3,19.6,20.4,20.5,41.3,16.4,20.4,18.9,22.4,19.3,20.2,22.1,20.0,19.9,19.3,19.7,20.1,19.8,17.8,20.3,20.0,19.3,18.2,16.0,29.0,19.5,18.3,20.2,19.9,20.0,17.3,23.2,18.7,21.5,20.0,18.5,20.5,23.2,20.3,19.6,19.6,20.0,19.0,19.8,19.7,20.3,20.1,21.6,20.1,18.2,16.4,20.0,20.0,20.5,21.0,17.2,19.8,19.6,17.2,20.0,22.1,20.3,17.9,19.4,17.8,21.6,20.0,20.1,20.1,16.9,22.0,19.7,19.9,19.9,20.1,17.7,19.1,19.3,22.7,18.1,20.9,20.6,18.0,21.6,19.4,19.1,19.4,20.0,19.4,17.8,19.7,17.7,20.7,21.8,19.4,18.5,23.1,18.9,22.0,22.3,20.1,19.4,18.2,20.0,20.6,19.0,25.6,20.0,19.5,22.2,19.9,20.9,19.2,19.5,22.0,20.5,19.2,19.7,20.7,20.7,19.6,20.3,20.2,16.6,20.8,22.1,20.6,21.9,19.9,20.1,19.6,19.9,21.8,20.3,21.6,20.2,19.5,18.1,20.2,21.6,17.6,19.4,20.8,20.2,20.7,20.2,20.3,19.9,18.3,20.9,19.9,20.8,18.2,16.9,21.2,18.3,20.0,21.2,20.3,19.2,26.1,19.9,19.9,19.9,21.9,20.0,16.3,20.9,23.1,20.0,21.1,20.0,20.1,19.8,21.5,19.8,20.2,19.8,19.2,18.8,20.4,18.8,16.2,19.2,19.8,21.4,19.9,19.9,20.4,20.5,19.9,18.3,18.7,19.3,16.9,19.6,20.4,20.2,19.7,20.0,19.7,21.4,21.9,21.6,19.3,18.7,21.6,19.8,19.6,23.1,19.1,20.3,20.3,19.6,21.5,19.6,20.1,31.3,19.6,21.4,19.1,20.5,19.6,21.9,20.7,18.8,17.9,20.1,22.2,19.8,19.0,19.2,21.9,20.7,25.5,21.8,20.3,18.1,19.4,19.2,22.0,20.6,17.9,22.1,19.4,18.2,22.0,17.5,19.9,23.4,20.0,20.3,20.0,20.0,18.5,20.4,19.9,20.2,20.1,20.3,19.5,22.8,19.9,17.1,19.9,21.7,19.8,22.4,19.9,18.3,18.5,20.0,21.0,20.2,22.7,19.4,21.6,19.5,20.1,20.7,20.8,19.3,20.5,18.8,17.6,20.2,20.3,23.1,18.2,23.1,19.6,19.1,16.2,20.2,19.1,19.5,19.2,19.2,21.5,21.4,25.2,19.6,19.7,19.6,20.2,20.0,18.4,19.7,20.0,22.2,20.3,20.5,19.1,23.0,16.5,26.3,21.4,21.1,20.1,19.2,19.9,19.6,15.9,20.1,19.8,19.8,21.4,19.3,19.8,19.6,20.3,17.5,17.6,22.3,20.1,21.6,19.8,19.8,22.3,19.9,20.1,19.7,19.4,19.6,19.8,27.2,20.2,20.9,20.1,19.6,21.7,20.0,18.9,23.3,21.8,20.6,21.5,20.2,19.6,19.0,20.3,20.9,19.8,20.0,18.3,19.6,20.3,20.0,19.9,20.2,16.6,20.8,19.3,20.0,19.8,20.0,19.7,21.6,21.5,19.2,20.6,19.5,20.4,21.5,20.6,19.7,16.2,20.4,19.8,20.2,18.4,20.5,19.6,19.8,19.7,20.9,21.5,21.5,19.8,19.6,17.6,19.4,19.6,18.3,20.8,21.7,19.8,17.8,19.6,22.0,20.5,17.8,20.1,17.4,19.3,20.0,19.4,19.8,19.8,20.7,22.0,21.2,20.2,20.3,16.9,19.3,20.7,20.1,18.3,19.7,17.8,19.8,20.3,20.3,19.9,22.3,20.1,20.1,20.0,15.1,20.1,41.4,19.4,18.4,19.2,19.9,19.9,18.5,19.4,17.8,19.6,20.4,18.3,17.2,19.3,20.0,19.5,19.9,17.5,20.5,20.0,17.8,19.8,17.1,19.8,19.9,19.9,22.2,19.3,26.2,21.4,19.5,20.1,19.8,17.7,20.3,19.2,22.2,20.0,18.8,19.0,20.0,20.2,19.9,20.0,22.3,20.4,21.9,20.2,17.6,20.6,20.1,20.7,20.3,20.0,20.2,19.7,23.3,19.7,21.3,19.0,21.9,19.9,19.7,21.8,19.9,20.5,18.4,19.5,18.7,19.5,17.7,17.9,19.9,20.2,21.4,22.1,20.1,20.2,20.3,19.8,16.9,19.2,18.4,20.3,20.5,21.3,20.1,19.8,24.3,20.3,20.0,19.6,17.5,20.3,20.0,19.9,22.0,16.9,19.3,20.0,19.3,20.2,19.9,19.4,18.0,17.7,19.3,19.0,19.8,19.5,19.7,22.7,19.7,18.0,20.3,20.0,17.7,20.7,16.4,20.1,19.9,22.6,20.2,20.0,20.1,20.0,19.5,20.5,16.7,20.1,18.7,20.5,18.0,19.0,19.1,17.8,20.0,20.2,19.7,19.9,19.7,20.5,20.2,19.2,19.5,19.8,19.0,19.6,22.2,17.4,19.9,19.6,20.1,17.2,20.0,19.9,20.1,21.3,23.9,20.0,18.8,19.7,19.9,17.7,20.1,20.2,20.2,19.8,19.6,25.3,19.4,20.1,21.3,20.2,19.9,19.8,20.8,21.6,19.0,17.8,19.7,19.8,16.7,19.0,19.2,21.4,18.2,19.5,22.6,18.9,19.9,20.8,18.7,22.7,17.8,17.5,19.9,19.9,19.7,17.7,19.5,22.2,19.9,20.4,20.2,20.0,18.2,20.1,19.4,19.6,19.7,19.3,19.5,25.5,22.7,19.2,19.7,18.9,19.8,20.2,16.7,20.8,19.8,20.2,20.0,18.2,22.3,20.4,19.9,20.9,19.5,20.1,19.6,20.6,20.2,20.2,19.6,20.4,22.7,19.0,18.4,21.1,19.8,21.6,19.7,20.2,18.9,21.7,19.7,19.5,19.7,20.0,21.0,19.6,19.7,20.1,20.1,19.2,19.4,19.4,21.9,17.8,20.2,20.2,20.3,20.5,17.9,24.6,20.1,19.4,20.7,19.2,18.8,20.2,20.7,20.0,21.5,20.8,20.1,19.7,26.6,19.9,19.5,20.0,20.2,19.6,17.7,21.5,16.6,19.8,19.3,19.5,19.8,19.7,20.5,21.0,20.1,19.9,19.8,19.3,20.4,20.7,20.5,19.9,20.2,18.5,19.8,19.9,20.2,19.7,20.0,21.6,19.2,20.0,19.6,19.8,24.3,19.8,19.5,19.6,21.6,20.8,19.4,18.7,20.0,24.2,20.3,25.4,17.5,20.2,17.4,19.6,20.3,19.6,20.1,20.6,20.0,19.4,20.0,21.6,21.7,22.3,18.2,20.5,19.1,20.1,19.3,20.3,25.2,21.3,19.7,19.4,20.4,19.9,20.0,20.9,19.8,19.1,17.7,21.3,19.9] + }, + { + "position": 67, + "values": [43.9,40.1,43.2,42.6,39.2,37.8,41.0,42.1,36.3,29.1,39.5,41.7,36.6,43.1,40.9,38.3,43.2,41.3,54.4,43.0,44.9,39.9,44.1,35.5,47.7,40.9,32.2,41.6,37.9,43.0,40.4,49.6,35.0,43.7,41.6,43.1,36.5,35.5,39.4,39.5,24.5,45.9,36.5,42.6,42.3,42.0,41.9,41.3,37.3,41.7,39.6,34.8,36.9,41.8,39.1,26.2,35.2,37.6,32.7,46.1,38.9,25.0,41.3,38.5,37.5,40.3,45.0,37.8,26.5,44.0,37.7,46.2,41.7,37.4,45.2,57.0,38.5,45.2,42.8,42.3,38.1,40.2,42.5,43.5,41.6,41.7,38.7,36.3,41.5,43.9,38.0,39.5,40.4,43.4,38.2,36.7,35.2,38.8,37.6,43.5,35.1,42.9,41.2,44.3,41.8,39.5,34.5,30.1,40.9,42.3,42.0,43.7,46.1,32.8,40.9,39.2,43.2,38.6,36.2,43.1,52.4,40.2,26.6,43.7,43.6,45.3,38.6,28.7,42.3,42.8,42.5,45.3,40.1,37.7,39.2,37.7,34.9,43.4,41.4,44.0,46.5,40.6,33.1,42.1,36.4,37.3,41.8,43.0,41.6,41.9,33.2,39.5,40.4,39.7,42.1,42.6,34.5,37.6,41.1,37.4,41.8,40.1,38.0,41.0,42.4,43.4,36.0,42.0,39.7,46.1,49.4,35.6,40.3,42.9,40.7,41.4,36.2,43.2,44.8,42.5,47.8,43.4,54.4,39.0,43.9,40.2,45.7,37.9,37.9,36.2,42.3,41.2,39.3,33.5,30.9,38.7,35.4,39.9,51.9,42.5,43.2,38.4,53.6,29.1,42.7,38.2,61.5,48.3,40.8,42.6,44.0,41.3,37.9,38.7,37.8,42.3,45.3,40.0,38.4,39.9,33.8,41.9,30.4,43.0,40.9,42.6,42.3,36.5,42.9,46.6,45.9,43.5,39.0,39.9,44.8,47.6,42.6,42.1,43.5,41.2,39.7,38.1,21.6,38.8,51.0,38.7,43.6,42.2,38.1,37.4,39.1,40.4,42.4,45.6,41.5,50.8,36.3,40.9,38.5,39.4,46.0,42.7,49.7,36.7,41.3,36.7,42.6,39.5,59.6,43.9,45.5,47.5,30.7,38.0,37.1,54.9,39.4,39.8,35.0,42.7,42.2,40.8,44.0,41.3,34.6,36.2,23.7,42.9,39.7,42.2,42.6,46.4,46.4,42.3,37.9,44.7,40.9,37.8,43.9,43.6,38.3,39.4,55.2,41.0,31.3,31.4,42.0,42.7,41.6,43.4,36.5,43.5,46.6,40.6,38.8,43.5,62.0,42.9,43.4,38.3,47.3,38.7,39.6,30.3,37.7,38.6,41.9,42.1,26.1,43.0,41.3,36.4,23.8,47.1,34.1,55.2,40.9,34.8,68.2,37.1,23.4,37.2,39.3,37.1,44.5,42.4,46.9,38.7,40.5,44.5,44.4,44.3,44.3,38.3,38.3,45.5,41.5,40.2,48.8,52.8,39.0,38.6,42.6,35.9,42.0,45.4,36.7,41.6,51.5,34.7,39.3,40.4,47.7,62.4,34.0,44.5,40.3,41.7,41.6,41.8,40.1,41.8,42.2,35.4,38.4,41.9,44.7,41.3,40.0,32.3,39.6,42.0,40.6,40.8,40.8,39.9,41.3,40.7,43.6,36.9,38.7,40.4,42.7,44.2,13.6,45.4,35.4,40.8,35.2,42.2,37.4,24.5,41.7,37.9,39.6,38.1,41.1,30.2,45.7,43.4,38.0,35.3,44.2,33.2,40.8,35.0,38.1,42.6,37.3,38.3,36.7,44.3,40.4,39.2,42.9,34.1,41.5,45.2,43.3,41.1,38.0,36.9,35.2,39.0,41.5,38.1,35.3,42.6,34.2,42.4,40.0,54.3,42.4,40.8,42.1,38.2,41.6,36.6,41.6,43.4,41.7,38.4,33.7,40.3,45.8,51.2,40.0,48.5,38.4,36.4,38.1,45.3,44.4,38.1,45.8,41.0,30.8,31.5,40.9,33.5,39.8,37.9,38.3,38.5,43.2,52.0,42.4,42.2,42.4,42.7,38.5,41.7,34.3,43.2,61.0,42.6,36.8,37.5,41.8,45.4,41.6,47.3,43.1,39.8,40.9,43.4,19.9,52.3,41.9,38.0,45.6,38.8,43.8,38.2,43.6,34.2,41.5,39.3,36.1,40.5,39.1,37.7,42.2,42.1,43.6,25.0,42.3,44.4,38.8,41.3,41.1,38.1,54.7,45.5,37.6,40.1,42.8,49.8,41.8,39.4,43.0,34.7,44.0,44.3,40.0,39.4,69.3,41.6,40.1,43.4,40.0,42.3,43.3,41.1,36.3,41.5,39.5,38.0,44.3,37.0,38.5,37.9,38.3,43.0,38.6,41.2,48.0,44.7,41.5,41.2,45.1,47.0,41.1,40.9,42.6,43.8,41.7,41.6,42.3,40.9,48.3,40.4,40.6,55.2,45.2,37.9,42.0,51.1,43.7,41.7,45.7,38.3,43.6,53.7,52.2,37.0,39.6,37.0,39.2,38.1,46.3,38.5,41.8,43.0,32.7,41.2,42.1,67.0,40.6,41.5,39.5,43.8,36.7,45.5,37.4,43.0,35.1,43.0,39.9,46.6,52.5,39.4,40.4,48.1,41.1,42.0,32.6,40.7,37.8,47.9,51.1,48.4,45.7,37.8,37.0,41.0,39.2,42.7,48.5,42.5,44.0,43.5,42.0,44.6,42.9,43.2,36.4,39.3,42.3,24.5,35.8,37.1,40.7,41.3,44.7,40.6,38.9,48.8,42.3,33.2,41.8,35.5,42.8,41.4,41.4,42.9,42.5,42.6,41.8,41.8,37.9,37.4,40.1,42.3,28.2,36.0,36.9,37.4,41.7,39.9,40.5,42.6,40.4,42.4,42.1,40.7,42.5,43.4,39.4,40.8,41.1,53.7,46.1,43.1,43.0,34.3,35.9,44.7,42.4,40.7,41.4,44.0,47.1,39.0,36.2,52.0,42.2,53.7,42.9,42.3,36.8,41.8,45.4,43.3,39.8,37.4,30.0,43.6,33.0,39.0,38.1,44.9,41.2,41.5,26.7,49.6,50.2,40.2,29.8,41.5,41.9,41.8,43.1,38.7,48.9,42.7,42.4,45.8,34.0,45.5,41.0,43.7,39.6,41.6,39.4,41.0,42.1,41.6,31.9,38.1,40.2,49.0,22.0,41.4,56.7,38.1,45.4,41.2,41.1,41.8,41.6,51.9,40.5,41.4,41.5,41.2,41.9,38.2,41.1,44.8,48.4,40.9,41.4,41.4,49.7,42.1,37.9,40.3,35.9,24.7,42.0,27.0,40.9,42.6,39.9,42.3,41.8,42.7,42.5,42.3,43.0,38.7,43.4,44.2,37.5,42.5,35.7,28.1,46.6,44.7,41.0,48.6,38.6,41.7,47.3,40.1,39.3,35.8,38.4,39.8,49.4,41.1,44.7,54.9,38.3,44.2,40.3,41.8,42.5,42.0,51.8,40.8,35.8,43.1,38.5,43.8,46.1,40.5,41.7,36.3,36.5,37.6,49.6,38.4,39.7,38.5,39.8,49.9,52.0,43.3,42.3,39.7,43.0,41.5,38.0,43.1,50.5,42.7,42.1,41.2,42.8,41.5,38.1,42.5,44.2,43.1,43.6,42.3,42.6,63.2,36.9,39.4,37.1,41.8,39.7,53.1,35.0,37.1,42.3,38.7,40.7,43.2,54.7,43.8,43.5,41.9,42.4,43.7,44.0,40.0,42.6,43.1,36.8,46.9,42.4,42.0,44.4,43.4,50.6,41.7,43.8,38.8,32.5,38.1,44.7,42.1,34.8,43.5,41.4,42.2,44.4,41.2,24.0,41.1,37.9,44.5,36.9,42.1,50.2,42.9,51.4,46.1,42.4,40.1,22.9,61.5,33.6,42.4,43.8,44.2,41.5,32.3,43.6,35.1,41.5,41.7,43.8,39.5,41.4,40.9,38.2,40.5,40.5,33.4,39.1,42.2,42.4,40.8,35.7,37.7,42.1,37.8,36.5,41.6,36.6,36.1,38.8,41.9,42.3,23.1,44.2,41.7,42.2,40.2,43.4,41.9,33.6,41.1,43.1,40.0,39.7,43.6,41.1,40.2,42.4,48.8,40.5,41.2,29.5,41.1,23.5,39.7,37.8,33.3,42.1,42.1,40.3,34.7,39.5,39.5,41.4,45.1,43.7] + }, + { + "position": 68, + "values": [9.5,9.1,9.3,9.1,10.0,9.0,8.9,9.2,11.4,8.7,9.2,8.7,9.2,9.0,10.3,8.6,9.2,8.9,8.9,9.0,9.1,9.6,9.7,9.1,8.3,8.7,10.6,9.3,9.0,9.4,9.0,8.8,8.3,10.3,9.1,9.0,8.7,11.8,9.8,8.9,9.1,11.1,9.0,8.8,9.0,8.9,9.3,9.5,9.3,9.4,9.1,10.5,9.5,10.5,9.5,10.6,10.1,9.9,9.2,8.3,12.4,9.5,10.3,9.1,8.8,9.0,8.8,10.5,8.5,10.1,8.5,12.2,8.9,10.2,10.0,9.1,9.7,9.3,9.2,9.1,9.0,9.0,9.3,9.1,9.1,9.1,8.7,9.5,9.1,10.6,9.8,8.7,9.3,11.9,10.2,9.1,10.0,9.2,9.1,9.5,9.5,9.1,9.1,8.8,9.0,9.5,9.1,10.0,10.2,8.9,9.4,8.2,8.7,9.4,8.9,9.7,8.9,9.4,10.3,8.9,9.4,8.3,8.9,8.4,9.1,10.7,10.7,9.6,9.0,9.2,9.8,9.1,9.6,9.8,10.3,9.1,9.7,9.4,8.8,9.6,9.1,9.3,9.3,10.1,8.8,9.1,10.2,9.0,9.2,9.1,9.0,8.0,9.8,9.7,9.1,9.1,8.7,8.6,10.0,9.6,9.5,10.0,9.1,9.3,9.3,8.4,9.7,9.2,8.9,8.6,9.1,9.1,10.5,9.4,9.2,9.1,8.6,9.7,8.8,10.5,9.9,10.0,9.4,9.4,27.2,8.7,9.1,8.8,10.1,8.8,9.1,10.1,9.0,9.2,9.4,8.7,9.6,8.7,9.1,9.0,9.1,9.1,8.4,8.7,13.9,8.7,9.2,9.6,9.1,9.0,8.3,10.3,9.0,10.3,8.9,9.5,9.2,10.8,9.3,9.1,9.3,9.2,9.3,9.2,9.0,9.2,9.4,10.0,8.7,9.0,8.7,9.2,9.3,9.5,9.1,8.4,9.1,9.0,8.9,9.1,10.5,8.9,8.7,8.8,8.5,10.3,9.1,9.0,8.0,9.4,10.4,8.8,9.3,9.0,9.1,8.6,8.5,9.0,10.5,8.2,9.5,9.6,8.6,10.6,9.1,9.0,8.9,9.4,9.1,8.8,9.6,8.4,10.4,10.2,9.0,8.8,10.9,8.8,9.9,9.2,9.2,9.0,8.4,9.1,10.1,9.0,11.0,8.9,9.1,9.9,8.4,9.2,9.4,9.1,10.7,10.1,9.0,9.3,9.5,9.7,8.9,10.2,9.5,10.1,9.2,9.5,9.0,9.5,10.4,9.1,9.2,9.0,10.0,9.3,10.5,9.1,8.6,8.8,9.0,10.8,9.0,10.3,8.9,10.9,9.7,8.8,9.2,8.9,9.7,11.3,9.5,8.9,9.1,8.3,10.1,9.7,9.0,10.1,9.4,8.9,11.8,9.1,9.4,9.2,9.8,9.2,8.0,9.9,11.5,9.5,9.1,9.1,9.2,8.9,10.4,9.1,9.1,9.3,8.3,8.2,9.4,8.3,8.9,9.2,9.4,9.5,9.3,9.9,8.4,9.3,9.1,9.4,8.7,8.9,9.2,9.2,8.9,9.4,9.1,9.1,8.6,10.1,9.8,10.5,8.8,9.3,9.8,9.3,10.2,10.3,9.6,9.1,9.3,9.2,9.7,8.9,9.1,8.9,9.4,9.9,9.1,9.0,8.2,9.6,9.7,10.5,8.8,9.2,11.1,9.1,9.0,9.1,11.4,9.4,12.2,10.9,9.2,8.8,8.6,8.6,10.6,10.1,8.8,10.0,9.2,9.8,8.3,8.7,9.2,9.1,10.8,9.4,10.0,9.2,9.6,9.2,9.2,9.2,9.4,9.0,9.5,10.1,9.5,12.3,9.1,10.1,10.3,9.3,10.6,8.4,8.6,8.9,9.4,9.4,10.4,9.8,10.3,8.8,9.1,9.3,10.2,9.1,9.9,8.8,9.0,10.2,9.4,10.6,8.9,10.1,9.3,9.3,8.7,8.6,8.9,9.8,11.0,8.9,9.8,9.8,9.3,11.6,9.1,9.0,9.1,8.6,8.8,9.1,8.8,10.5,9.2,8.9,9.4,10.3,8.6,10.4,11.2,10.5,9.2,10.3,9.0,10.1,8.7,9.4,8.7,8.6,38.6,9.7,9.4,8.9,9.0,8.6,8.6,10.4,9.1,10.2,9.0,8.7,10.0,9.2,8.9,9.3,9.0,9.0,9.4,12.3,9.2,9.8,8.8,9.3,10.3,9.5,8.8,10.1,12.0,8.8,9.9,9.8,8.8,9.4,8.6,10.9,9.1,9.1,9.0,8.9,8.5,9.3,9.2,8.9,10.2,9.2,9.3,9.1,9.1,10.4,9.0,9.2,9.9,8.9,9.0,9.1,9.1,10.2,9.5,8.9,7.8,9.2,9.2,9.2,8.7,9.4,8.9,9.0,9.1,9.4,10.2,9.9,9.0,9.0,8.6,8.9,8.8,9.7,10.0,9.3,9.2,8.8,9.3,8.5,10.5,9.5,9.3,8.6,8.5,8.8,9.1,8.9,9.2,10.2,9.6,10.3,9.3,9.3,9.2,8.9,9.5,9.4,7.6,8.5,8.8,9.4,9.7,9.2,8.9,10.2,9.2,7.2,9.5,8.6,9.3,20.9,8.9,8.4,8.9,9.0,9.2,9.4,8.8,8.5,9.8,9.6,8.6,8.2,8.9,9.2,9.2,9.2,8.6,9.5,9.0,9.3,9.2,9.4,8.9,9.0,9.1,9.1,11.0,10.3,10.3,8.7,9.0,9.2,9.1,8.7,9.0,10.4,9.2,9.4,10.1,9.0,9.2,9.1,9.2,10.5,9.4,10.1,9.0,10.6,9.1,8.5,9.3,9.2,10.4,10.9,9.0,10.9,8.8,10.2,8.7,10.2,8.9,8.8,10.2,8.9,9.3,12.2,9.1,9.2,8.4,8.2,8.4,9.2,9.3,11.2,11.1,9.6,9.3,9.5,9.0,8.7,9.1,8.8,8.7,8.8,10.1,9.3,9.1,11.3,9.0,9.2,9.1,8.6,8.7,9.2,9.5,10.4,7.8,8.7,10.1,9.2,9.7,9.2,9.8,8.8,8.5,8.9,8.9,9.2,9.1,9.0,9.5,11.3,8.4,8.7,9.3,8.6,9.8,8.9,9.2,8.9,9.2,10.5,9.2,9.1,9.3,9.0,10.2,9.0,9.3,8.8,10.2,8.5,8.9,9.1,8.6,9.2,9.1,9.1,9.8,9.0,9.3,8.8,8.7,8.3,9.0,9.1,8.6,10.3,8.6,9.3,9.2,9.1,9.1,8.4,9.1,9.3,9.9,9.2,11.0,9.0,9.1,8.9,8.4,9.5,9.2,9.1,8.9,10.8,9.1,9.2,9.1,9.3,9.2,9.1,9.1,10.0,9.4,6.9,8.9,9.1,9.2,8.4,9.3,8.9,10.4,7.9,11.0,9.1,9.0,9.2,9.3,8.8,10.5,8.9,8.1,9.3,9.3,9.0,8.5,8.9,10.2,9.2,9.9,9.2,8.2,9.2,9.0,9.1,8.9,8.5,8.7,9.1,11.5,10.3,9.0,9.5,9.1,9.0,9.4,9.2,9.4,9.4,9.0,9.1,8.7,10.8,9.1,8.7,9.4,9.2,10.0,8.9,9.2,9.4,9.1,9.3,70.4,9.1,10.1,8.6,8.8,10.1,10.5,9.0,8.8,9.7,9.7,10.4,9.0,10.1,9.1,9.4,9.2,9.2,9.1,9.1,9.2,9.1,9.0,8.7,10.0,8.5,9.2,9.1,9.3,9.4,8.6,9.2,9.4,9.6,9.9,9.0,9.2,8.6,9.5,9.0,10.4,9.3,8.9,9.2,11.0,9.1,9.0,9.2,8.8,9.1,8.5,9.5,8.5,8.9,10.0,9.4,10.4,9.3,9.1,9.6,9.4,9.0,9.1,9.1,9.2,11.1,9.5,9.2,9.1,8.7,9.2,9.1,9.7,10.2,9.2,9.0,9.1,9.2,8.6,9.1,11.4,9.1,9.2,8.9,9.7,8.7,10.5,8.6,9.2,10.1,9.2,9.5,9.4,8.3,8.3,12.6,9.3,9.2,9.2,10.2,9.1,8.8,9.1,10.2,10.0,10.0,9.0,9.3,9.0,8.5,9.5,10.5,9.4,9.7,8.6,9.2,8.9,9.2,9.3,10.5,8.9,8.9,10.5,8.6,9.8] + }, + { + "position": 69, + "values": [40.5,40.1,37.7,49.7,41.6,37.7,45.6,38.9,48.6,33.9,35.1,37.5,36.7,38.7,45.2,51.1,27.8,37.2,33.0,34.4,35.7,44.4,40.5,35.5,30.9,38.4,49.7,42.0,37.1,51.3,29.6,41.1,34.2,47.7,39.8,36.6,41.1,47.7,80.6,35.7,38.6,42.6,40.0,35.1,37.3,36.6,46.1,39.8,39.5,36.6,54.3,38.3,38.8,44.9,70.1,36.5,49.9,44.4,44.4,64.3,27.3,46.7,49.4,39.2,37.4,44.8,35.8,58.9,51.5,45.6,54.6,27.3,39.0,47.0,39.2,38.7,35.6,37.1,38.9,33.5,38.2,42.3,37.0,39.1,37.2,35.9,46.6,39.5,38.9,37.5,48.9,51.9,45.7,40.0,47.1,39.6,42.0,36.7,38.3,52.4,37.7,33.3,39.8,35.8,38.9,50.4,34.0,49.9,51.1,36.5,37.9,38.6,37.5,25.6,30.7,42.4,36.4,42.4,45.5,41.4,32.5,39.1,58.0,35.1,38.9,40.7,47.2,38.3,38.4,36.9,39.4,40.9,38.8,34.5,46.2,38.5,39.1,38.0,38.8,33.8,34.2,36.4,56.3,39.3,54.9,57.9,40.2,36.5,39.9,40.7,57.9,37.6,35.2,42.3,52.6,37.3,39.0,37.4,49.4,64.8,38.8,38.3,37.0,39.1,37.4,28.0,53.2,38.4,36.5,30.2,35.2,57.2,45.5,41.6,42.9,34.4,38.9,34.4,35.7,52.8,32.2,39.4,71.2,52.8,39.2,37.3,48.8,37.2,39.2,39.6,39.8,67.7,40.8,36.9,36.8,34.5,48.2,39.5,38.4,38.0,40.6,37.5,32.0,76.1,61.9,37.7,60.1,32.4,43.2,38.3,31.4,47.7,37.8,51.1,40.1,38.8,35.1,43.3,49.4,40.9,43.8,49.3,49.8,36.5,39.2,36.6,37.3,45.8,36.2,28.9,33.7,37.1,37.0,41.2,45.0,31.5,43.0,40.6,32.1,40.7,51.7,36.0,40.8,36.6,30.4,58.3,36.7,37.1,50.2,33.7,47.8,37.0,37.0,33.8,32.8,41.0,38.2,37.6,47.9,33.5,35.7,36.4,33.6,46.1,39.8,38.1,37.8,36.5,34.5,39.0,37.2,30.1,46.7,49.8,55.0,31.4,55.6,38.5,52.5,38.6,35.9,38.7,28.2,41.1,49.4,51.2,75.0,38.7,39.1,37.6,43.9,33.5,40.7,36.3,47.5,63.3,42.7,42.2,41.9,37.6,47.8,44.0,40.5,44.4,60.5,49.2,39.2,51.8,41.1,37.2,36.1,38.0,41.8,40.5,43.0,33.8,39.7,84.1,41.0,50.7,31.2,61.7,71.2,47.1,43.6,46.2,38.2,36.6,47.1,83.3,31.0,47.8,56.3,29.5,43.3,36.0,39.1,56.7,69.5,40.2,57.2,38.8,47.6,33.8,38.3,39.4,29.3,35.3,55.5,39.5,38.9,34.8,36.7,36.3,50.3,35.0,40.8,39.4,31.8,30.5,37.6,34.5,38.1,38.9,51.2,38.7,63.2,42.8,42.4,86.6,35.3,45.7,38.6,74.6,42.3,35.8,38.3,39.1,41.1,38.0,37.9,40.3,48.3,49.7,35.9,42.8,39.6,41.2,55.0,39.1,56.0,45.3,46.4,40.3,44.6,44.1,40.9,38.0,28.9,45.1,37.4,36.6,37.9,154.4,37.4,32.4,49.7,35.7,40.7,40.0,43.7,38.9,38.1,48.1,48.3,49.1,38.1,40.7,35.4,36.1,49.5,56.6,50.6,39.4,40.9,35.3,32.4,38.7,40.4,46.6,40.1,39.3,68.4,52.0,48.2,35.6,59.9,35.4,40.5,37.9,43.3,48.7,39.0,72.8,37.8,43.6,37.9,36.5,38.6,45.5,36.5,76.2,33.5,39.5,66.7,46.1,39.3,48.6,37.2,34.0,48.0,37.3,38.6,36.4,33.2,36.0,70.1,39.2,49.4,57.8,73.2,39.2,37.4,82.7,37.9,45.6,51.9,40.0,59.1,36.8,45.7,42.4,37.3,37.1,56.9,41.1,32.9,33.4,36.1,38.7,49.4,39.7,39.0,46.8,54.1,47.8,54.0,40.9,53.4,41.7,36.6,41.6,37.2,41.3,43.2,33.6,9.0,39.5,35.9,41.4,81.1,28.5,37.8,49.5,39.9,46.0,37.7,64.3,46.1,41.3,49.8,38.1,39.5,38.4,38.3,72.8,38.1,38.3,33.9,44.0,41.7,49.0,32.6,43.6,48.5,41.9,58.6,32.2,36.6,42.3,40.6,70.6,38.2,36.8,39.8,37.2,39.8,39.9,41.6,37.9,39.9,36.8,37.7,41.0,40.0,53.5,56.2,33.7,48.8,43.0,41.1,33.1,37.7,47.5,47.8,36.6,32.2,38.9,36.8,38.8,38.3,32.8,36.6,40.2,39.2,37.3,44.4,46.1,38.3,38.7,32.2,59.4,37.9,36.0,40.8,39.1,38.9,70.3,36.9,31.1,41.7,49.3,37.0,33.8,39.7,41.2,42.0,41.9,35.4,42.3,36.8,47.5,38.2,38.5,42.7,37.8,44.7,34.0,46.4,34.3,38.7,38.9,42.1,37.1,39.4,37.2,38.1,33.0,39.7,28.4,43.0,90.3,37.7,28.6,44.8,38.6,37.5,47.0,34.5,29.5,35.6,30.5,37.7,31.0,50.9,38.8,42.1,37.4,37.9,34.4,39.4,36.5,38.5,33.5,39.2,38.7,44.4,38.4,73.4,46.7,47.3,35.9,39.8,37.8,39.0,38.9,48.4,62.7,39.5,53.2,39.7,41.9,38.9,44.0,40.6,50.6,48.7,59.5,39.4,30.0,47.6,40.2,40.2,38.1,62.6,45.4,41.5,48.2,37.8,51.7,37.8,53.6,40.6,35.9,50.9,39.8,43.2,77.6,39.8,34.8,38.9,32.6,34.2,36.7,38.0,54.4,37.6,62.6,39.0,41.5,39.0,43.3,32.9,41.0,38.9,34.4,49.4,38.6,53.5,37.5,42.7,42.8,39.3,38.8,67.7,40.9,42.9,52.6,42.6,37.8,44.7,40.9,40.4,37.2,32.3,49.7,31.0,33.0,48.3,37.7,37.6,40.5,50.8,38.4,30.0,41.4,34.9,37.1,47.3,40.3,37.5,37.3,36.5,38.2,46.5,37.8,37.9,34.5,57.1,39.0,64.0,34.5,76.1,44.9,34.9,30.7,39.3,40.4,53.7,35.0,35.3,38.8,55.0,40.3,36.3,38.5,38.8,37.0,35.2,63.7,37.5,39.9,40.9,41.5,31.0,38.6,55.2,43.6,44.5,64.6,37.6,43.3,54.5,38.1,41.3,36.8,30.1,37.3,46.4,39.6,37.1,43.7,37.3,48.5,37.5,36.8,41.5,49.6,84.7,17.3,39.1,39.3,43.5,33.9,68.9,38.9,51.6,40.2,36.3,47.3,32.6,38.5,48.2,39.5,51.9,35.8,38.1,38.2,38.7,39.6,76.3,46.1,48.1,36.3,45.5,36.2,25.1,41.1,41.4,38.0,42.6,31.3,34.8,38.2,48.2,50.3,40.0,33.2,64.9,37.9,36.7,48.6,70.3,39.2,37.2,40.3,33.2,38.3,61.5,40.4,40.6,35.8,41.7,37.9,39.7,37.6,41.3,34.1,37.7,92.1,44.2,42.3,43.5,49.0,35.5,51.0,37.8,35.5,36.6,51.2,37.0,36.7,39.5,37.1,58.5,40.1,39.1,37.1,37.1,36.3,38.1,31.3,63.0,30.8,40.0,38.9,36.1,39.6,34.3,40.6,38.0,49.5,48.7,38.0,36.5,38.6,35.9,36.4,54.6,30.2,33.3,36.9,64.0,40.3,46.6,36.7,38.8,38.0,31.0,42.0,41.4,33.2,39.0,42.5,49.5,83.1,45.3,35.3,44.5,35.1,39.8,38.0,40.7,49.8,51.4,37.6,53.3,36.9,37.7,39.0,56.3,39.6,40.4,36.3,38.6,37.1,32.0,41.1,47.6,38.3,44.0,37.3,70.7,56.3,37.2,44.2,38.8,42.5,39.9,50.1,29.5,37.9,36.2,38.4,23.9,41.7,34.6,38.2,48.9,39.3,47.6,44.5,40.2,38.8,37.3,42.2,33.3,52.4,63.7,39.6,43.2,35.7,35.8,38.7,41.1,42.9,46.8,38.9,31.3,54.7,29.7,39.5] + }, + { + "position": 70, + "values": [21.3,20.4,20.1,19.9,20.5,20.2,19.1,20.5,22.5,19.3,19.8,19.0,19.8,20.1,20.3,18.1,20.1,20.2,19.3,20.3,18.8,21.0,21.6,19.1,18.0,21.0,18.1,20.3,20.0,19.5,20.0,18.8,20.9,21.0,20.6,19.4,19.5,21.6,22.5,20.0,19.5,16.5,20.1,19.4,20.4,19.5,20.3,20.7,19.7,19.3,19.2,21.8,21.1,20.6,26.1,21.6,20.6,19.4,21.7,22.5,18.5,20.2,21.2,19.7,19.6,19.6,19.8,21.6,18.4,20.9,19.5,18.4,18.9,21.1,21.9,20.6,19.9,19.8,20.3,19.4,20.2,20.6,19.8,21.0,20.0,20.2,19.9,19.3,21.7,20.2,21.9,18.7,20.1,22.4,20.5,20.1,20.1,19.7,20.3,18.5,20.4,20.3,20.0,20.3,21.4,17.9,19.9,21.5,20.4,20.4,20.5,20.6,17.0,18.5,20.5,21.3,19.6,21.1,20.8,19.7,17.3,19.9,19.0,18.7,19.9,23.8,21.3,21.6,20.2,19.7,20.6,19.9,21.5,21.3,21.1,20.4,21.9,20.4,20.0,20.0,20.3,19.8,20.5,21.3,19.4,19.8,21.2,20.2,20.1,20.3,18.1,20.0,19.6,19.0,18.3,20.2,20.1,22.4,19.2,20.6,20.5,20.5,20.5,20.1,20.9,18.6,20.1,20.9,20.2,18.5,19.7,20.4,21.0,20.4,19.9,20.3,20.5,19.2,21.6,21.0,20.3,21.0,33.1,21.4,18.9,19.6,19.2,20.0,21.8,19.3,20.1,20.6,21.0,20.7,19.8,19.6,19.8,20.0,17.0,20.6,20.1,20.2,18.2,18.9,28.2,19.3,19.3,20.4,20.5,19.9,18.0,21.7,20.4,21.8,21.1,20.1,20.1,20.3,22.1,19.4,20.1,19.9,19.6,20.5,20.1,19.8,20.4,19.3,19.8,17.2,18.3,20.3,19.4,20.5,20.0,18.1,20.7,19.8,19.8,20.1,21.5,20.9,19.6,20.0,18.6,21.3,19.8,20.5,19.5,19.0,19.0,19.8,20.2,19.4,20.5,18.1,19.7,20.1,21.4,19.1,20.2,20.5,18.6,20.1,20.2,19.7,18.0,20.3,20.2,18.5,19.9,17.9,19.2,21.5,20.0,18.5,22.1,19.2,19.9,20.8,20.2,20.3,17.5,20.3,19.3,19.1,18.2,19.8,20.1,21.8,17.9,19.3,19.1,20.7,21.2,20.9,19.6,21.2,20.3,19.9,20.0,19.7,19.9,19.4,21.3,20.8,20.7,21.2,19.5,20.5,19.7,19.6,20.7,20.1,20.2,19.3,19.6,19.1,19.9,21.5,18.9,21.3,21.3,19.4,21.4,19.4,20.0,20.0,19.2,20.4,21.0,19.2,20.0,18.5,20.2,19.8,20.2,21.0,19.8,19.4,16.4,20.1,20.5,22.2,20.3,20.1,16.6,22.2,21.6,20.7,20.3,19.9,19.8,19.5,21.0,19.6,20.8,19.7,18.5,17.5,20.0,18.6,19.3,17.9,20.4,20.9,19.5,20.5,19.1,19.3,19.7,18.1,20.6,18.7,19.3,19.5,19.5,20.7,19.1,20.0,19.4,22.5,20.6,20.8,20.6,19.0,21.6,20.2,21.4,21.8,20.1,19.4,20.4,20.4,20.9,19.4,20.0,20.9,20.0,21.2,20.4,18.5,20.1,20.8,18.9,20.8,25.9,19.8,21.2,20.1,19.7,20.9,21.7,19.7,22.3,21.5,18.0,20.8,19.1,19.8,21.4,19.8,16.9,22.5,20.1,21.2,20.5,18.2,19.7,20.2,22.9,20.7,20.8,20.1,18.9,21.3,19.5,21.0,20.3,19.9,19.5,21.1,20.2,22.0,20.1,20.8,20.4,20.4,20.4,18.7,19.3,21.6,19.8,19.9,20.2,21.5,20.8,19.5,20.1,20.1,21.2,20.0,22.7,18.3,20.3,20.7,19.6,22.7,18.3,20.1,18.2,19.4,19.7,19.8,19.6,19.1,20.7,22.0,19.5,22.5,19.9,21.9,20.4,19.4,20.8,17.9,20.4,19.2,19.9,21.5,19.9,21.2,17.7,20.2,19.5,18.0,21.9,21.4,19.8,20.3,20.2,20.5,19.2,20.3,19.6,34.4,19.0,20.0,20.0,19.8,19.3,18.5,17.7,21.2,20.3,20.7,20.1,18.6,20.7,20.2,19.8,20.5,20.2,19.6,20.1,16.3,20.2,21.2,19.9,20.3,21.4,19.9,19.4,20.4,21.6,19.2,21.2,20.5,19.4,18.9,20.7,21.5,20.0,19.6,18.1,19.4,20.1,20.0,20.3,19.7,19.9,20.3,20.5,19.9,20.3,20.6,20.5,19.8,20.3,20.1,20.7,20.3,20.9,20.0,21.0,19.7,17.6,20.9,19.9,19.5,20.2,17.8,20.0,20.2,19.9,20.4,20.4,20.2,20.1,19.7,18.2,18.9,19.8,19.8,21.4,20.2,20.3,20.0,20.2,18.5,21.6,20.5,19.7,17.9,18.5,20.2,19.7,19.9,19.8,21.2,21.5,19.7,20.1,20.5,18.6,20.5,20.8,18.4,19.8,20.5,18.7,17.8,20.3,20.3,20.1,20.5,21.0,18.7,20.3,15.8,40.0,20.7,20.1,18.1,19.7,19.4,19.4,20.2,19.4,18.6,20.5,20.2,17.3,17.4,19.0,19.6,19.9,20.1,17.5,19.3,20.8,20.3,20.5,19.3,20.6,20.0,20.7,22.4,18.8,20.0,20.9,20.1,20.0,20.1,17.4,20.1,21.8,19.6,20.2,19.9,20.5,20.2,19.9,19.9,20.5,21.0,19.6,22.1,19.1,18.2,20.3,19.4,21.6,20.7,20.7,23.0,19.8,21.9,21.0,21.2,19.0,20.6,19.9,19.6,21.0,20.1,20.1,18.8,19.9,19.0,20.0,19.3,18.3,20.5,20.9,21.3,23.6,19.6,19.9,20.6,20.5,18.8,18.4,18.8,19.7,19.4,20.8,20.8,21.7,20.6,20.1,19.8,19.4,18.5,17.5,19.5,20.5,21.4,17.2,19.0,19.3,20.2,20.2,20.0,18.9,19.3,18.0,19.4,19.1,19.9,19.8,19.6,19.8,21.2,18.6,20.0,18.9,17.8,20.8,19.6,20.1,19.1,21.0,20.3,19.9,20.0,20.4,19.4,20.7,19.7,20.5,18.5,20.9,18.7,17.4,19.2,20.1,20.2,19.6,19.1,20.3,19.9,18.3,20.7,18.7,20.0,19.9,20.4,19.3,21.0,20.2,17.1,19.9,20.1,20.2,17.7,19.6,20.7,20.4,18.2,19.2,19.5,19.6,20.3,20.5,19.8,18.7,19.8,20.2,22.1,20.2,20.7,20.4,18.8,20.4,20.3,20.0,20.8,19.6,16.5,20.0,18.0,20.1,19.7,19.5,20.4,21.0,18.5,21.8,20.8,19.8,20.1,21.7,20.4,18.9,17.8,18.7,20.4,20.1,20.2,19.5,19.2,21.1,20.5,21.4,19.8,18.1,19.8,20.0,19.4,20.4,19.2,19.4,20.2,22.8,22.0,19.4,19.8,19.7,19.6,18.4,21.3,20.3,20.8,20.3,19.9,18.7,21.8,20.0,21.0,19.6,19.1,20.3,20.2,20.8,20.9,19.8,19.5,20.9,21.9,18.9,18.3,20.7,20.1,20.7,20.1,19.9,21.7,21.4,19.9,19.1,20.2,21.3,19.1,19.9,20.2,20.2,20.4,20.2,19.7,18.3,20.7,18.5,19.6,20.5,20.0,20.8,18.6,20.3,19.9,18.7,19.6,20.3,19.8,20.9,20.7,19.8,20.1,19.4,19.2,19.8,19.6,16.7,18.6,19.3,19.8,19.4,18.0,21.5,17.8,18.9,21.1,20.1,20.7,21.2,20.4,19.2,22.1,20.0,20.6,20.0,18.4,20.0,19.8,20.4,19.8,20.0,19.0,20.4,21.0,20.0,20.2,20.8,20.6,20.7,19.0,20.1,21.5,20.2,19.4,19.7,20.7,20.3,20.4,19.4,20.1,20.3,19.8,20.4,20.2,18.4,17.4,26.3,20.6,19.2,22.0,20.2,20.2,19.6,20.0,20.4,20.9,21.0,18.0,20.7,19.9,18.6,19.5,15.5,20.8,20.8,19.0,18.4,20.3,20.7,20.1,21.8,19.5,19.8,19.0,21.0,19.9] + }, + { + "position": 71, + "values": [48.7,48.4,64.0,69.9,49.1,46.2,46.9,45.4,48.0,50.9,47.1,44.6,45.5,49.7,51.6,43.8,49.6,43.4,60.1,63.2,57.8,49.4,48.3,46.3,48.9,49.8,46.4,47.0,60.8,44.3,46.4,47.1,45.3,54.9,43.2,45.7,70.4,54.2,62.5,41.7,40.0,47.6,45.1,46.5,36.0,48.4,53.3,48.2,49.0,50.1,44.4,52.4,47.7,54.2,51.2,48.8,54.8,49.7,44.6,51.9,49.1,45.5,53.6,47.3,58.2,42.0,52.2,49.7,50.8,62.4,48.2,54.3,68.2,49.7,48.5,47.4,49.0,46.9,44.6,50.9,44.3,51.8,45.3,66.1,49.6,46.9,45.1,67.5,51.8,49.1,44.5,50.0,45.8,45.1,50.7,44.5,64.8,59.1,45.9,54.5,47.0,53.2,45.3,43.5,69.0,45.3,54.1,44.7,50.3,46.6,45.2,59.2,57.2,43.9,45.3,68.1,48.0,48.9,47.1,46.6,48.0,44.6,53.8,45.0,52.2,47.4,55.5,57.1,52.2,44.9,52.4,49.0,42.6,54.0,49.9,57.3,45.0,52.5,48.8,48.3,43.2,49.6,48.4,47.9,46.8,52.6,46.2,63.9,45.8,56.7,45.5,41.3,53.7,47.4,46.1,48.0,48.4,52.9,42.8,49.4,47.7,55.9,42.4,44.4,40.8,51.9,48.3,45.6,47.7,60.0,51.5,54.7,45.3,46.0,61.6,70.6,54.7,52.6,46.7,49.7,52.5,51.7,51.6,49.4,49.3,41.0,70.3,52.1,44.0,59.6,61.3,45.4,47.6,48.2,46.0,55.8,48.3,46.7,53.4,47.8,47.3,45.7,47.8,67.1,74.8,48.6,66.0,63.2,47.0,53.7,43.1,52.2,49.2,45.7,47.0,50.5,49.3,52.3,46.0,48.8,47.1,45.5,46.6,44.5,50.8,48.4,67.6,47.2,57.3,48.7,43.8,47.2,57.9,46.3,49.5,45.0,51.7,43.8,47.3,47.6,49.7,65.1,52.0,62.1,46.3,52.8,46.0,65.2,60.1,54.4,52.8,47.5,55.5,63.2,50.1,44.3,66.0,44.5,52.3,53.3,59.4,46.3,50.1,49.4,44.7,65.7,60.6,45.4,48.8,47.6,51.0,47.5,45.9,51.6,49.2,48.2,51.2,44.3,68.8,47.0,63.1,44.0,61.0,55.5,52.3,44.1,43.0,47.2,54.6,63.7,48.1,67.8,51.4,61.4,50.5,47.7,54.3,43.9,45.4,38.0,53.0,43.8,54.2,47.6,47.2,49.2,46.5,45.2,45.0,47.6,55.1,42.8,48.2,47.4,53.4,47.7,44.5,53.3,47.3,55.6,62.7,45.1,53.0,53.2,47.0,59.9,62.6,65.3,45.1,64.8,52.0,50.8,45.8,44.1,48.2,46.8,45.0,47.8,44.9,47.4,45.1,44.6,51.7,44.8,57.6,44.9,43.9,56.3,54.8,56.5,45.8,74.4,69.6,67.4,52.2,49.9,45.9,45.6,46.3,58.1,53.9,44.3,43.1,42.0,48.8,48.0,51.5,45.4,100.9,53.6,56.2,45.8,49.4,50.3,53.3,45.0,44.7,44.5,44.8,45.1,54.5,51.0,46.8,49.8,45.4,48.2,64.2,45.9,48.0,46.5,51.5,46.1,46.9,45.8,52.3,47.0,44.7,45.2,50.7,50.0,44.7,42.7,55.7,52.6,61.1,46.2,49.8,59.8,50.9,45.8,49.7,47.9,47.2,50.5,56.6,51.5,43.0,41.3,61.2,44.2,55.1,51.1,49.1,52.7,46.4,53.1,45.7,47.4,43.9,49.1,43.8,52.2,53.5,46.3,45.2,57.8,59.0,44.3,70.3,48.3,46.3,59.2,46.0,68.6,44.2,52.3,56.1,55.7,51.4,42.2,42.6,42.4,50.3,45.0,44.5,50.5,53.8,53.3,44.7,50.1,50.5,45.5,56.6,53.2,45.1,54.2,49.7,46.4,52.7,56.1,72.5,49.3,44.8,66.0,46.9,48.2,53.2,52.6,50.7,55.7,45.4,58.9,44.3,49.0,48.8,43.9,60.8,54.8,51.0,43.7,53.3,48.5,48.4,50.0,53.6,48.0,51.0,43.9,50.6,50.8,62.7,51.9,42.6,47.5,48.0,48.3,19.5,52.5,52.0,49.1,53.0,49.1,47.0,52.5,48.9,47.6,44.3,53.6,43.5,46.1,65.9,48.6,47.0,51.5,60.2,60.7,45.2,49.9,45.4,46.2,63.8,52.7,46.6,68.7,47.8,58.2,48.0,53.5,46.9,43.7,44.9,46.8,46.9,68.7,51.6,44.0,57.1,44.1,45.1,43.2,49.7,45.8,44.6,60.3,62.9,49.3,45.5,64.7,47.8,43.4,50.1,58.1,44.9,44.5,50.3,64.6,42.2,46.7,67.7,44.4,69.1,45.6,50.3,49.3,45.4,46.4,47.4,45.8,47.8,44.5,44.5,49.1,48.4,46.8,73.0,66.4,45.7,55.5,44.4,45.9,48.2,53.1,56.2,48.9,46.6,57.3,47.8,44.0,57.2,48.1,52.3,51.8,43.7,46.7,54.6,43.8,46.8,57.1,46.2,49.7,57.9,47.4,58.5,51.6,55.5,48.3,49.4,58.4,45.7,46.2,45.0,86.2,44.0,49.3,43.9,63.9,70.6,45.9,60.8,50.0,53.2,67.1,44.9,53.3,62.9,54.3,44.0,45.5,45.5,50.0,46.5,46.9,45.4,47.3,44.0,45.6,46.3,54.8,52.5,50.7,48.9,46.0,45.8,46.8,45.9,45.1,39.1,51.7,46.0,72.8,49.6,53.6,45.2,47.6,46.2,50.3,53.7,49.9,45.4,52.5,44.2,50.4,49.3,45.1,44.3,57.3,44.0,53.0,42.8,48.1,43.0,53.2,57.5,45.4,50.1,42.6,44.7,61.8,46.8,45.3,46.0,50.1,47.9,48.6,43.9,51.7,55.1,42.5,50.0,51.4,46.2,57.9,46.2,57.1,48.8,44.6,52.3,48.5,45.8,51.1,61.6,46.0,41.3,46.7,57.2,44.2,56.9,52.5,49.8,46.5,44.0,45.1,66.0,42.9,49.3,49.2,46.4,64.8,44.2,50.8,56.5,48.6,69.2,51.8,48.9,50.0,58.1,47.4,51.2,46.8,44.8,65.9,59.2,51.2,45.5,45.9,49.3,46.8,47.2,67.4,75.3,45.6,49.8,44.7,52.4,45.2,49.2,45.0,47.4,52.7,60.0,57.4,48.5,64.1,49.6,43.3,44.0,46.4,58.4,49.4,44.7,45.9,46.1,44.7,45.4,48.9,52.6,46.9,46.1,42.8,48.6,43.2,47.7,48.3,50.7,52.7,43.2,51.2,48.4,43.6,54.2,51.9,47.7,58.6,42.1,65.4,46.7,48.2,48.1,46.3,50.1,46.2,46.9,46.6,56.9,44.9,47.5,45.8,48.4,51.9,51.0,63.9,44.5,49.5,51.9,56.6,43.7,43.7,47.5,51.5,47.9,49.0,51.3,44.9,47.9,45.9,46.5,44.1,46.7,58.1,42.8,58.8,59.7,44.6,54.0,51.9,46.1,46.1,48.8,69.9,68.5,58.7,63.6,44.9,46.0,54.4,49.4,52.7,43.3,56.0,48.3,62.7,48.4,47.1,51.6,65.3,52.4,50.5,48.8,82.2,43.9,44.9,50.1,48.4,43.5,49.5,47.4,44.8,53.6,52.2,43.8,59.9,58.1,49.5,46.1,44.1,43.0,62.7,52.9,43.9,44.0,50.2,51.0,48.5,45.0,46.2,45.5,50.7,46.4,44.4,49.5,64.4,47.4,46.3,62.7,47.2,46.8,46.1,50.6,60.8,48.2,45.5,42.9,44.8,43.8,51.9,73.0,43.1,46.4,49.7,46.4,68.1,52.6,63.4,58.4,37.7,47.1,53.2,47.2,60.8,44.1,49.4,51.0,54.1,48.5,46.1,46.4,43.4,53.0,45.2,49.4,51.9,47.7,44.4,45.1,46.0,49.6,44.2,58.3,45.0,45.2,47.4,60.5,52.4,44.9,46.4,46.7,56.8,44.2,50.4,60.8,52.9,44.8,50.8,45.2,44.6,54.6,47.8,56.8,50.4,43.5,52.5,50.9,55.6,46.1,47.5,44.8,43.5,45.6,42.3,51.2,53.8,72.3,60.2,44.5,55.4,48.2,52.4,43.2,47.5,50.3,46.4,51.5] + }, + { + "position": 72, + "values": [39.3,39.3,41.1,39.1,40.6,38.8,37.7,37.7,39.9,40.9,37.1,38.5,39.7,37.3,37.3,37.6,40.7,37.8,42.0,40.9,36.2,38.5,40.0,38.2,37.7,41.9,40.0,34.6,39.2,41.7,37.9,39.8,35.6,39.7,38.5,38.2,36.2,42.3,38.7,37.6,35.4,43.1,37.8,38.5,38.7,35.1,38.9,40.2,40.7,37.1,37.7,39.5,40.1,37.2,53.9,39.8,41.8,37.8,41.9,44.0,39.9,36.4,40.3,37.6,39.4,37.6,34.1,39.5,35.0,41.6,38.4,38.7,37.1,39.7,42.2,38.7,42.0,37.4,38.8,39.7,37.7,41.5,36.5,38.8,38.9,38.3,39.0,38.1,38.5,39.0,35.2,36.4,36.0,40.7,40.1,37.4,33.8,40.1,38.2,38.5,34.7,39.7,39.5,39.2,41.3,37.2,38.0,39.4,40.3,38.6,37.3,39.4,41.3,36.9,38.4,39.0,40.8,38.2,40.3,36.6,38.2,38.1,38.2,38.4,36.3,44.2,40.8,38.0,38.8,37.1,39.1,36.4,38.9,40.5,40.0,37.9,40.6,37.6,38.7,36.8,37.7,38.1,38.9,42.6,38.9,39.0,41.8,38.4,38.9,39.3,38.5,34.3,38.6,35.5,36.6,40.2,37.6,38.4,35.3,38.6,36.1,42.8,38.5,36.4,39.3,36.8,39.0,39.4,38.9,34.8,39.4,41.1,37.0,38.9,37.7,39.4,37.3,36.8,38.4,41.0,44.8,41.9,39.4,91.4,36.6,31.0,40.8,36.5,39.0,37.9,37.8,41.8,39.0,38.2,37.1,36.6,37.1,38.9,39.0,38.9,38.2,38.3,38.9,41.4,55.1,36.7,39.0,37.8,37.1,45.0,37.8,41.8,37.3,38.6,42.9,37.5,38.3,38.5,42.1,36.3,35.5,37.5,36.0,39.0,38.6,38.9,38.9,39.5,35.6,35.7,36.3,36.0,39.6,38.5,38.3,39.6,39.3,38.7,38.7,38.3,39.9,37.2,35.9,36.7,40.4,43.1,36.7,37.9,41.2,39.2,38.2,41.0,39.9,37.5,38.3,38.7,37.7,38.3,41.7,43.1,40.0,39.3,41.4,37.5,36.8,38.3,38.4,37.5,39.9,40.1,39.2,35.9,40.8,41.2,40.5,40.8,42.5,35.4,43.2,38.2,42.8,37.8,47.5,38.2,39.0,39.1,34.9,38.0,40.1,37.0,41.4,39.3,42.4,40.0,39.2,42.0,37.1,38.8,39.3,37.5,44.2,38.7,41.5,40.1,42.7,33.4,39.3,39.5,38.5,37.7,39.7,35.9,41.6,36.6,39.6,38.4,36.4,38.2,38.7,41.2,39.6,41.5,41.8,38.2,40.9,40.0,39.3,37.7,38.5,39.5,37.6,42.3,36.8,36.5,41.5,43.0,36.9,35.9,38.6,41.8,33.8,37.2,39.9,38.2,41.2,38.2,35.6,39.7,41.1,39.2,39.2,41.5,39.0,42.5,40.5,38.6,37.5,39.8,38.4,39.1,35.4,36.8,32.1,37.1,37.8,38.8,65.9,42.2,39.3,42.5,39.4,40.1,36.4,39.6,38.8,35.5,36.9,39.4,37.2,37.4,39.3,41.3,40.6,37.0,41.5,36.6,41.7,37.7,41.0,36.4,41.7,38.5,38.3,39.7,36.6,36.9,38.2,41.0,36.2,38.9,38.5,37.9,38.1,40.6,49.5,37.9,39.5,40.1,40.8,39.2,38.7,38.3,39.4,39.6,43.7,39.5,38.2,33.5,38.2,39.0,39.2,37.3,37.4,38.2,36.9,41.5,35.9,40.4,38.0,38.0,44.4,39.0,37.0,41.8,36.8,38.2,37.1,37.3,38.5,40.0,39.1,40.3,36.4,45.7,36.8,40.8,38.3,40.5,35.2,36.5,34.7,39.5,39.0,38.2,39.8,40.6,40.8,36.5,36.6,36.0,40.0,37.9,40.9,38.3,39.3,44.3,44.1,40.5,40.5,48.8,37.7,43.1,36.5,40.6,37.7,38.5,40.8,37.1,38.0,38.9,43.6,38.8,37.8,38.3,37.9,40.6,38.7,38.2,37.6,41.9,38.0,37.7,40.5,41.4,35.8,48.8,40.8,42.7,37.9,40.5,37.4,41.2,35.0,38.2,36.1,37.5,58.6,43.9,37.8,37.9,40.3,43.0,39.9,40.7,39.5,39.4,40.9,38.1,37.7,38.9,38.8,39.8,38.1,37.6,40.4,35.6,37.9,41.1,38.5,37.0,39.4,40.4,40.5,38.8,39.5,35.9,42.1,44.3,42.3,37.6,36.6,40.2,37.3,40.4,38.7,40.5,37.3,36.5,36.8,34.8,35.0,37.8,37.6,39.1,38.9,39.6,37.7,40.2,37.3,38.2,39.1,34.4,38.2,38.8,41.1,36.4,37.1,38.0,39.7,38.1,38.0,38.6,39.9,39.3,38.6,39.9,38.9,39.6,37.2,37.5,38.7,37.2,35.9,43.0,35.6,42.3,36.7,38.7,38.6,39.8,40.2,40.4,38.7,39.8,41.0,36.6,38.0,37.4,40.1,39.1,37.3,40.4,37.0,37.4,39.7,38.2,38.1,38.3,38.7,37.5,40.6,38.3,36.2,35.4,38.8,38.8,42.3,37.7,39.2,35.6,38.2,57.3,37.5,38.7,37.3,39.9,37.7,38.4,39.2,39.1,43.3,39.8,38.4,37.5,35.8,39.4,37.1,38.9,38.8,35.7,38.6,39.3,38.5,34.6,38.0,42.0,40.2,38.2,35.2,38.9,39.6,39.7,38.3,37.4,38.8,38.6,42.6,40.6,38.4,38.6,35.2,38.4,38.3,37.5,37.5,40.2,39.7,41.8,37.0,42.9,38.1,39.8,39.1,37.9,39.1,37.9,38.0,40.0,36.1,41.6,37.1,42.0,37.8,37.3,41.4,37.0,38.3,36.3,37.4,35.5,38.9,40.6,39.5,37.0,37.8,40.1,37.0,40.5,38.4,35.9,40.4,35.5,36.5,40.8,38.4,40.6,41.9,36.1,42.4,38.1,40.5,36.8,36.8,40.0,41.4,37.5,36.3,40.8,35.2,37.2,39.9,37.1,40.5,37.5,40.3,40.7,38.2,41.1,37.3,38.6,38.7,41.9,39.3,40.1,38.9,38.6,37.8,39.0,40.4,35.9,38.8,39.7,38.1,39.2,39.3,39.6,39.1,38.1,42.2,38.3,42.4,38.4,40.4,36.9,40.3,38.1,38.6,38.7,38.2,36.5,44.3,37.0,42.3,39.9,37.9,35.8,38.1,37.7,38.7,40.3,38.1,38.8,38.0,36.6,37.3,38.1,38.0,39.9,37.9,35.9,39.5,36.1,36.9,40.8,38.5,38.4,37.8,37.7,35.4,42.0,36.0,41.7,41.4,45.9,40.4,36.4,36.3,40.1,39.7,40.4,40.9,37.5,40.6,36.3,38.2,38.0,38.6,42.6,38.8,38.3,39.7,38.6,40.3,38.3,35.5,40.1,37.1,39.4,38.7,40.5,36.8,37.8,39.9,38.1,41.1,40.6,40.2,38.9,38.4,36.7,35.2,38.5,39.8,38.2,43.4,40.5,37.9,38.8,39.3,37.6,39.3,36.0,40.3,37.8,37.6,40.0,38.6,39.9,37.9,42.8,38.7,37.4,38.1,37.1,37.4,37.7,36.5,39.2,38.4,47.1,39.6,37.6,36.4,41.6,38.3,40.3,38.8,43.7,39.8,40.8,39.0,40.0,43.2,38.6,38.5,37.6,37.8,37.8,39.4,38.0,36.9,35.5,43.9,39.5,37.7,36.1,38.4,38.4,41.5,62.6,38.0,35.8,42.0,39.7,39.9,38.6,36.0,36.6,41.0,37.8,37.3,38.3,41.0,36.5,37.4,39.4,37.6,40.2,38.2,38.6,38.1,36.8,42.2,40.4,38.9,40.3,39.7,38.5,35.7,38.0,38.2,37.8,36.0,38.4,41.0,37.5,40.9,38.4,36.1,38.8,44.9,37.0,38.3,42.1,38.7,38.3,36.2,37.4,40.7,37.6,38.1,37.7,46.6,38.4,36.1,35.3,37.2,38.6,37.9,37.6,40.2,39.9,39.6,39.6,38.4,38.4,37.8,38.7,37.7,37.2,38.3,39.1,39.4,40.6,40.4,39.6,36.1,38.3,40.7,37.7,35.5,37.4,40.6,37.5,39.0,35.9,37.4,39.1,36.9,37.0,39.8,40.0,36.1] + }, + { + "position": 73, + "values": [79.4,79.7,69.3,74.0,77.0,77.1,75.4,74.5,74.2,71.1,76.2,71.1,68.4,74.2,68.9,73.8,75.7,75.4,72.1,82.0,79.8,76.5,88.5,77.5,75.5,73.8,69.7,76.9,73.9,54.9,76.0,73.9,80.9,71.5,71.5,74.4,77.8,73.7,88.3,74.5,72.0,63.6,75.8,77.6,68.2,77.8,73.7,76.8,69.8,75.0,71.8,77.2,78.3,69.7,63.4,71.1,72.2,75.8,68.4,72.2,77.4,75.0,74.5,81.8,71.5,77.1,71.5,69.2,74.7,73.5,76.7,78.5,78.7,71.5,75.7,66.6,77.6,79.0,77.3,71.5,77.4,78.6,77.6,76.7,77.5,81.1,76.5,74.3,77.9,83.5,72.3,73.1,73.9,70.8,76.5,78.3,71.0,77.2,78.7,84.6,72.0,77.1,76.7,74.7,79.6,77.4,75.6,73.2,74.4,75.9,77.5,75.7,73.4,76.6,77.8,75.1,76.0,74.5,64.1,76.3,77.4,78.1,72.3,69.2,70.7,78.5,73.3,74.4,75.2,72.7,73.4,72.8,76.7,71.0,74.5,73.2,78.4,80.9,78.5,79.2,72.7,79.0,69.4,75.9,65.6,77.7,70.2,73.8,76.9,73.3,75.3,73.4,77.5,70.7,72.8,75.7,72.7,72.3,74.4,68.8,80.6,76.5,70.6,77.3,73.1,67.1,70.6,76.3,79.1,80.0,77.4,79.3,60.3,77.4,78.4,79.4,74.5,79.3,75.9,71.4,70.1,67.7,75.7,64.3,97.8,70.0,75.5,69.1,76.1,77.4,76.1,71.6,70.8,73.7,76.2,73.8,71.0,75.8,72.1,75.0,72.1,77.3,74.2,51.8,76.5,72.3,80.1,74.4,73.0,81.2,69.6,74.3,78.4,71.3,71.9,78.6,78.5,71.4,77.8,77.0,74.2,72.8,73.6,79.1,74.8,77.6,79.3,70.5,70.5,72.6,76.1,71.9,76.1,77.3,75.4,70.9,76.6,76.4,73.1,75.3,71.0,83.0,75.7,70.7,74.0,70.5,78.1,74.1,80.3,50.8,73.7,77.1,78.0,75.5,74.0,77.0,76.4,73.8,70.8,78.5,66.1,77.9,71.8,66.7,74.4,79.1,77.6,76.8,77.1,74.8,77.2,73.1,61.0,71.3,73.2,68.1,69.6,75.1,64.1,76.6,78.3,76.2,63.5,75.1,72.9,66.8,59.0,77.7,73.1,78.1,76.9,91.1,76.7,76.6,76.8,69.1,77.3,74.8,76.2,80.8,75.3,64.5,73.2,60.9,68.4,66.9,78.7,76.6,71.7,75.2,79.4,75.6,77.0,75.4,76.1,78.3,75.0,73.8,71.3,72.5,79.4,57.3,75.6,80.9,67.2,66.3,88.3,79.4,64.9,81.6,76.8,69.4,74.5,74.7,70.0,76.9,78.0,67.5,76.5,73.7,58.2,78.0,63.6,77.5,77.5,77.4,75.9,75.3,68.9,76.2,77.7,81.2,91.1,79.6,70.6,74.9,71.0,89.4,70.1,74.7,78.1,71.6,76.7,77.2,73.8,75.6,71.4,69.4,70.2,74.7,73.1,73.7,67.9,59.7,70.7,80.6,74.8,76.5,76.9,79.1,78.5,78.0,71.8,73.6,77.3,78.2,76.3,71.7,66.9,65.0,77.3,77.3,74.6,74.5,74.7,77.3,70.4,66.0,70.6,78.0,63.9,76.9,63.7,81.0,72.0,71.8,81.5,71.3,77.5,71.5,77.9,66.0,69.1,71.8,70.1,75.1,71.4,76.5,79.4,71.5,78.6,65.8,77.0,76.1,75.9,68.0,73.2,76.7,78.0,79.7,82.1,69.0,76.6,73.3,74.3,77.9,67.5,78.3,74.1,72.3,81.8,78.1,61.9,77.8,76.6,81.3,76.1,71.5,75.9,75.7,79.3,77.1,64.3,71.3,65.6,74.5,74.9,77.8,77.7,72.5,75.5,70.9,73.4,72.0,75.9,68.1,71.4,67.7,69.1,66.5,76.1,78.8,62.4,77.2,75.4,70.2,77.5,72.7,74.3,74.1,78.1,77.4,77.1,74.4,78.4,63.7,76.4,78.1,76.6,72.0,69.7,76.6,88.8,75.1,68.1,71.2,76.5,69.2,72.3,75.5,74.6,73.6,78.0,76.4,82.4,40.3,73.9,79.0,73.6,70.9,69.5,73.9,71.3,72.4,70.3,73.6,67.6,69.8,71.9,76.2,77.4,68.7,77.4,78.6,72.5,76.2,82.5,78.8,77.9,71.9,70.3,74.8,70.5,92.3,69.6,69.1,72.8,77.8,74.5,76.2,72.7,76.7,89.3,76.6,77.8,75.4,76.8,76.7,76.5,75.3,73.9,76.5,76.0,76.3,76.8,73.1,78.3,63.1,74.4,76.8,72.8,79.6,78.7,71.1,73.8,75.1,85.9,79.7,73.9,81.1,74.8,72.2,73.8,76.5,79.0,69.9,77.6,73.7,76.1,76.0,76.2,74.5,76.9,91.5,74.7,77.8,70.6,76.3,75.1,76.6,71.3,79.3,76.8,75.9,81.7,74.9,77.6,77.9,66.9,70.6,72.4,74.8,77.8,71.6,75.1,77.2,77.2,76.6,77.8,73.1,76.3,76.7,71.5,77.7,78.0,74.4,76.0,72.4,69.3,75.9,85.0,77.8,72.4,74.3,76.2,76.7,64.4,80.5,73.8,69.0,77.7,74.4,67.6,65.6,76.6,70.6,69.9,74.2,63.7,77.5,75.1,73.8,76.3,78.3,91.1,71.6,79.7,82.3,68.2,66.1,70.5,75.5,74.7,77.6,72.6,71.4,72.5,76.8,72.0,78.4,75.3,74.5,75.2,73.4,71.7,72.1,68.4,70.2,59.9,76.7,69.6,71.2,56.6,76.5,77.1,76.9,73.7,72.3,69.2,74.6,72.3,75.9,74.4,74.3,71.5,75.8,78.4,72.6,76.8,77.6,77.8,78.6,73.7,73.1,72.8,71.5,70.4,88.3,79.1,78.4,70.7,79.6,74.5,76.7,74.4,75.0,76.0,75.2,78.4,76.9,77.4,75.1,74.7,62.9,77.6,80.2,74.4,69.0,75.5,76.2,64.1,80.0,73.3,75.1,71.8,74.5,80.2,61.7,74.2,77.0,71.6,77.0,68.9,75.5,77.1,77.1,71.2,68.5,80.1,76.9,80.7,75.2,75.9,74.5,77.0,77.0,76.3,64.2,61.4,72.1,68.2,76.0,75.7,77.6,76.1,74.0,73.3,77.5,74.1,74.3,72.7,74.9,73.2,75.1,75.9,75.5,77.8,77.9,69.3,77.1,76.4,76.9,73.1,75.5,78.3,74.2,72.9,63.6,64.0,75.8,71.8,72.0,74.9,80.3,76.8,77.7,75.2,73.5,77.9,74.0,70.6,74.0,69.3,70.6,75.8,77.2,73.4,66.9,75.7,78.3,74.4,76.0,73.2,71.4,74.4,67.5,70.0,69.3,76.0,74.4,80.1,74.4,71.9,72.2,76.4,75.7,77.3,76.8,76.3,71.7,77.7,73.9,76.4,68.3,69.8,76.9,74.5,75.0,75.5,71.2,81.5,77.0,77.4,72.2,69.8,76.9,70.1,76.3,92.1,80.2,54.5,73.8,77.5,74.8,74.4,73.5,69.6,76.4,81.7,74.4,79.0,74.8,74.3,77.5,88.0,75.2,77.6,74.7,73.9,75.4,74.5,69.5,71.5,67.9,73.3,73.6,72.4,73.9,70.8,75.9,73.1,76.7,59.7,76.2,72.9,73.4,77.5,75.8,78.0,77.1,77.3,68.7,76.9,73.1,73.7,77.1,77.2,75.2,77.5,75.5,75.8,64.4,79.7,81.0,92.6,77.5,76.2,73.3,75.7,69.1,79.6,52.6,76.5,75.5,76.1,86.8,72.2,74.5,76.5,73.5,79.3,73.7,80.3,67.4,73.5,75.3,77.7,72.9,76.0,75.1,78.0,64.6,78.2,71.5,76.8,76.8,77.6,76.8,75.2,73.9,75.8,74.4,70.2,78.4,74.1,74.1,76.8,68.0,77.5,73.9,73.2,60.4,72.8,72.9,74.8,77.3,78.3,76.4,58.1,61.5,79.2,72.7,77.3,75.5,77.0,74.9,66.7,74.8,75.9,77.5,75.5,72.9,73.5,78.2,74.9,77.1,76.4,70.9,81.5,61.0,72.6,92.3,76.5,75.7,75.1,82.5,71.8,69.7,68.6,70.9,71.7,70.9] + }, + { + "position": 74, + "values": [127.8,124.3,130.6,154.4,127.5,122.1,128.9,128.1,127.9,116.9,128.0,125.9,114.5,129.0,124.4,125.2,123.4,123.9,127.4,167.8,148.3,128.8,26.7,127.3,111.7,119.3,124.1,123.3,116.2,114.9,123.0,123.4,120.6,125.4,122.3,122.1,125.9,124.8,34.5,116.3,92.8,118.8,123.8,117.0,84.4,112.8,137.0,121.0,110.2,127.8,124.3,120.4,125.1,115.3,121.1,129.4,112.5,122.4,121.3,107.3,114.5,125.3,122.7,110.7,133.2,124.8,116.9,120.4,131.7,150.0,156.4,124.9,129.1,121.9,129.0,125.9,128.9,126.1,111.3,120.2,121.7,125.7,126.9,124.8,117.4,36.9,128.0,130.0,122.8,117.4,129.2,126.4,117.4,130.9,138.6,118.6,141.1,119.9,120.7,112.9,132.1,122.0,119.8,123.8,117.8,121.1,120.2,130.0,135.3,126.4,118.7,129.2,108.7,119.6,127.4,124.4,155.6,120.4,122.6,127.4,122.9,125.3,117.7,92.0,125.6,136.1,125.8,123.5,124.2,116.0,118.8,126.1,130.0,120.2,123.7,117.0,131.8,128.1,126.9,126.8,117.8,121.1,123.8,122.2,117.8,116.9,118.8,147.6,123.8,143.2,143.1,120.0,122.5,113.0,118.6,122.5,124.3,134.4,121.3,125.4,122.8,116.2,116.7,124.6,117.3,124.1,117.8,124.9,129.2,124.7,130.0,141.7,122.1,121.7,122.4,121.9,134.4,117.5,116.9,126.2,117.6,130.5,128.9,78.1,137.7,121.6,153.8,122.2,121.3,133.0,144.6,122.4,129.3,128.6,115.8,128.5,125.9,127.2,124.8,124.7,126.0,123.7,130.2,120.1,116.5,123.0,152.4,107.4,127.7,106.4,123.6,124.0,119.1,128.9,122.6,118.6,123.4,122.0,120.0,121.7,130.7,120.0,124.2,116.3,120.5,121.9,138.4,121.9,121.3,119.8,125.6,117.2,123.2,119.9,120.4,126.1,122.7,124.5,116.2,121.7,128.2,122.3,122.3,119.1,130.4,121.5,150.9,142.0,122.2,89.5,114.1,159.5,114.7,126.4,106.7,120.5,120.6,139.8,125.0,117.7,121.6,126.1,124.1,121.3,119.4,157.9,122.1,118.7,127.0,120.0,120.2,129.0,123.7,122.0,120.5,125.4,118.2,104.9,121.3,117.2,122.9,100.3,136.4,142.8,90.1,107.3,143.6,132.2,122.2,28.3,120.3,130.7,148.0,129.5,121.8,123.0,128.8,121.1,119.0,123.2,133.0,117.6,100.0,118.9,108.5,130.2,124.5,133.2,124.4,120.7,120.5,127.0,124.2,129.2,115.5,121.7,125.9,127.5,126.3,124.1,131.2,130.1,118.6,117.4,129.1,31.2,129.5,129.9,165.3,116.0,123.3,115.2,124.7,118.7,129.5,130.0,114.5,106.2,127.2,117.7,122.6,102.9,141.4,123.3,125.4,126.7,123.7,98.9,124.9,126.8,128.0,39.0,126.2,119.8,110.4,128.7,26.6,114.7,155.7,125.8,116.9,126.2,127.0,115.4,129.7,129.1,117.1,104.3,114.1,122.6,92.6,126.4,102.8,121.5,123.1,126.4,124.3,121.9,130.2,125.4,129.0,125.0,113.1,129.5,154.9,116.1,132.1,124.6,113.7,124.2,125.4,122.4,126.6,122.3,119.8,95.9,116.2,130.2,123.4,115.0,126.3,101.1,122.0,116.6,129.0,126.4,129.5,126.9,105.2,121.5,142.2,123.8,128.0,117.7,115.7,121.3,115.7,129.8,121.9,153.8,119.0,125.8,127.3,133.1,108.2,119.9,122.1,122.2,130.5,127.7,121.0,117.1,115.5,122.1,114.6,141.5,127.3,123.5,119.1,137.0,123.3,151.2,129.9,129.5,132.4,128.5,119.7,109.1,122.5,145.4,113.3,117.0,64.8,118.8,118.3,127.3,120.9,121.5,123.4,122.7,136.6,123.9,116.9,119.6,116.2,119.2,113.4,151.9,115.2,126.4,121.7,116.5,112.6,128.1,122.4,120.3,122.6,122.8,125.1,115.8,118.4,127.2,121.4,106.9,128.4,125.2,123.2,120.6,122.2,123.5,11.8,130.9,122.3,85.1,124.5,131.2,122.3,138.8,139.4,139.7,118.3,125.5,119.4,121.5,81.5,130.6,119.9,121.8,122.3,109.4,123.6,121.6,123.4,128.9,112.9,125.1,117.7,116.6,121.3,157.2,121.9,121.5,124.1,101.3,121.2,111.1,113.8,124.8,148.5,122.2,124.2,130.7,37.6,119.4,141.4,130.7,96.5,115.0,121.3,128.6,122.9,35.6,118.0,109.1,125.5,120.4,123.9,117.1,123.6,124.3,122.0,155.2,116.5,123.8,127.2,122.0,126.8,123.6,128.3,121.7,124.3,123.2,124.2,114.3,122.0,27.9,144.8,113.6,130.9,24.1,121.2,131.5,124.8,118.0,124.2,129.2,126.9,121.3,130.0,125.6,127.9,129.5,38.7,121.6,119.5,99.7,123.3,119.5,121.9,127.8,119.8,127.2,126.5,121.0,120.4,124.1,120.3,120.3,119.2,123.8,119.1,122.1,125.6,124.4,124.4,117.4,127.2,120.2,119.5,134.6,126.6,124.1,116.0,137.0,125.7,89.1,113.4,120.8,120.7,138.3,120.1,121.3,113.6,111.7,159.9,148.2,132.8,122.4,114.4,121.7,123.3,108.5,105.5,112.3,117.1,123.5,125.8,121.6,124.2,116.9,124.7,121.4,114.5,113.9,26.6,117.5,121.3,123.6,126.3,119.3,116.8,120.7,104.2,121.7,113.0,119.4,121.8,125.4,122.3,136.3,121.3,127.3,125.9,125.4,128.6,121.0,113.1,115.4,122.3,94.3,105.8,116.4,120.9,132.7,122.7,130.3,112.3,118.1,123.5,142.4,130.2,117.9,127.2,114.0,127.5,123.2,103.4,114.2,120.8,125.2,114.7,124.1,123.9,113.7,122.8,61.2,124.2,127.5,27.3,136.7,132.2,126.5,115.7,128.4,129.9,122.6,121.7,132.7,117.5,121.1,125.7,121.8,126.4,120.4,162.5,140.3,128.6,122.8,123.1,137.3,121.0,120.3,129.6,127.1,128.9,119.4,125.2,123.9,124.4,117.5,125.9,125.0,124.7,115.9,129.9,118.6,132.3,124.4,122.6,119.1,119.1,128.3,121.5,121.3,123.8,115.2,111.6,150.3,119.4,128.9,121.0,128.4,113.1,124.3,121.5,130.9,122.8,112.6,126.2,124.3,129.1,163.3,128.4,120.5,122.8,119.1,122.6,117.2,128.6,120.5,124.9,120.4,116.5,124.3,124.1,125.6,118.7,116.7,131.7,123.9,124.3,124.6,121.4,123.2,142.0,122.2,123.4,130.5,127.9,124.2,102.4,120.8,116.9,152.4,119.0,131.6,66.1,124.5,122.6,127.0,113.1,128.8,122.9,98.6,108.2,118.7,122.8,119.1,125.4,126.6,125.2,92.2,115.7,127.4,122.4,120.3,127.1,125.3,93.3,115.1,133.8,119.4,121.7,123.6,124.2,121.7,129.3,126.9,126.0,132.4,126.5,122.7,125.7,125.8,124.2,118.7,111.7,35.1,123.1,95.4,117.2,121.1,123.0,120.0,124.7,123.4,111.3,137.6,118.9,131.6,128.0,119.7,34.7,129.2,125.2,108.0,123.9,158.7,119.2,121.3,120.2,128.1,113.0,131.2,123.5,118.3,123.1,121.0,132.7,151.5,125.5,114.1,115.4,113.4,121.3,146.8,116.7,124.4,118.2,116.7,129.5,130.6,122.0,130.4,121.8,122.3,120.9,120.7,114.6,134.0,117.4,124.6,122.0,116.9,31.3,114.4,123.1,132.8,91.1,118.6,100.1,116.6,122.7,126.5,37.9,121.0,128.9,125.2,119.2,154.4,141.9,120.2,84.9,144.4,126.8,123.1,123.7,133.6,123.5,122.8,124.0,124.0,129.2,117.4,134.0,118.6,122.4,126.9,125.3,119.0,125.6,121.9,123.1,122.9,117.9,110.9,114.7,123.4,119.7,121.9,125.5,120.7,123.8,129.7,130.5,128.9,121.2,103.8,129.9,125.9,119.5,126.3,119.6,113.7,121.5,133.4,140.0,131.0,24.6,116.9,136.5,125.3,124.1,122.5,121.4,120.3,140.2,110.9,138.9,121.3,125.1,112.5,121.9,124.9,124.5,125.3,112.9,108.2,121.9,128.6,118.6] + }, + { + "position": 75, + "values": [87.4,80.7,88.2,87.1,67.3,76.6,85.1,75.2,90.6,77.5,78.9,83.0,78.7,81.2,74.9,77.0,85.4,83.9,90.1,89.5,86.2,76.9,89.4,118.5,81.2,86.8,83.7,84.9,93.8,89.1,81.7,87.7,86.2,80.3,80.4,80.9,89.4,88.7,96.4,79.3,119.9,84.8,77.8,85.6,83.4,123.2,90.1,79.4,80.5,86.3,75.9,78.5,82.9,88.5,90.7,82.4,82.6,82.7,82.5,89.5,82.8,79.7,88.8,82.7,84.6,83.1,87.3,88.2,88.9,79.8,88.0,90.1,80.9,82.5,77.7,76.3,87.2,87.0,82.0,78.7,81.2,87.7,85.5,82.2,90.7,99.0,77.4,79.3,85.6,87.4,80.3,81.7,83.4,89.3,86.2,83.5,74.2,119.8,82.2,82.3,70.4,126.0,82.9,76.7,134.0,85.1,74.2,87.9,83.2,82.7,91.8,92.4,80.2,87.1,86.0,78.6,85.6,75.9,83.0,87.9,86.4,82.6,84.7,128.3,83.9,82.6,77.0,82.4,84.7,91.1,80.8,78.8,80.1,75.9,82.1,75.5,76.4,86.4,85.0,75.4,87.1,88.1,80.9,92.6,82.9,106.6,77.8,86.1,87.2,82.2,83.9,79.7,83.6,76.9,84.1,88.6,79.9,82.7,83.0,80.7,84.2,119.8,76.1,84.0,73.1,85.7,85.7,87.0,90.9,80.7,85.4,89.4,68.8,82.1,92.3,84.2,83.5,82.5,78.9,85.3,89.0,88.6,79.9,81.3,112.4,80.3,82.7,83.8,84.7,78.7,80.7,79.5,82.6,76.8,81.2,83.2,88.7,83.6,82.1,90.5,77.8,84.5,84.7,35.1,81.4,79.2,126.5,88.0,88.6,81.8,81.5,85.9,77.7,85.6,79.7,86.9,90.0,83.0,87.7,80.5,84.4,83.2,79.1,90.6,85.2,80.5,127.7,82.1,80.0,84.0,88.3,79.6,118.9,84.0,91.1,83.9,85.6,76.7,83.9,87.9,82.1,76.9,81.5,75.4,86.4,82.5,86.5,82.5,78.3,79.3,82.1,79.1,102.7,81.8,90.4,85.8,117.7,78.7,87.2,84.4,83.9,90.7,86.1,81.4,83.2,112.9,87.0,93.6,84.1,86.2,71.2,80.9,78.4,78.5,83.7,88.7,84.0,85.7,79.3,82.8,87.9,94.5,73.6,83.4,82.4,85.0,75.8,87.2,79.0,90.3,85.8,124.5,90.7,89.9,79.7,79.4,88.2,79.2,82.9,122.1,83.0,77.4,90.3,76.3,81.5,85.7,88.4,82.6,82.3,79.8,81.3,87.0,73.3,77.1,76.3,95.1,84.3,87.4,79.9,82.7,110.8,80.8,86.0,83.1,77.0,78.7,88.2,95.7,82.2,96.1,83.0,81.5,91.5,84.7,81.8,91.7,101.3,78.1,84.0,77.6,71.1,83.5,80.1,76.1,81.8,84.4,86.8,80.5,73.4,84.7,90.6,120.1,100.4,80.8,88.0,117.0,81.3,88.3,83.7,90.9,78.5,88.2,87.5,83.9,84.9,94.1,83.0,88.5,101.3,120.1,83.4,88.7,106.8,76.5,88.3,85.9,88.9,81.8,84.4,84.9,84.0,91.2,82.3,93.3,83.6,88.1,89.2,79.3,79.8,78.9,85.1,81.6,83.7,82.5,88.1,83.8,80.6,76.9,75.2,84.1,85.4,125.2,122.6,83.7,82.3,84.4,87.6,88.4,78.2,84.8,79.9,79.6,90.5,85.4,86.2,81.1,80.2,120.3,88.1,81.4,87.5,75.4,78.6,90.0,76.5,76.9,89.7,81.7,77.2,83.1,86.7,78.3,85.3,76.7,87.9,105.7,85.9,79.4,81.6,78.0,87.2,85.4,69.3,86.1,83.3,79.0,101.8,79.6,83.0,82.3,91.4,96.7,74.4,79.2,87.8,80.9,85.5,85.2,101.9,88.2,85.6,77.4,75.6,85.9,86.0,79.8,80.0,80.7,88.4,91.8,90.2,83.4,84.1,85.1,122.2,82.5,85.0,79.2,81.2,84.7,84.4,83.0,83.2,86.4,75.7,76.4,89.3,87.7,82.5,81.2,81.9,84.4,83.0,79.5,86.6,112.5,81.4,87.9,92.9,88.3,85.2,78.4,85.5,83.0,89.0,128.0,87.6,85.9,82.0,85.6,83.3,88.7,82.9,81.7,84.4,89.7,82.8,83.9,83.2,81.3,84.0,80.8,86.0,124.5,74.5,90.8,90.4,86.5,82.6,85.6,82.9,87.1,86.6,83.2,88.4,79.6,89.3,71.7,84.6,80.5,86.1,88.0,84.2,79.8,87.4,78.6,83.1,92.8,79.1,87.4,76.5,86.8,90.1,122.5,93.5,90.6,85.6,82.8,81.5,84.6,77.1,70.9,83.7,85.1,83.4,85.2,89.7,84.2,82.3,86.0,108.2,87.2,80.3,83.4,88.7,86.7,83.2,84.5,86.9,85.4,79.5,86.6,91.7,94.0,94.6,90.9,82.4,84.9,85.0,84.8,81.4,82.2,83.4,84.1,82.1,86.0,89.3,75.7,81.5,82.9,106.8,86.7,91.8,78.0,83.3,80.6,85.5,125.0,83.2,79.2,89.6,82.7,82.9,98.7,86.0,77.1,127.3,94.6,82.3,84.8,98.7,82.9,87.3,92.6,85.3,75.6,89.2,84.0,91.0,86.9,127.2,87.0,114.2,74.8,85.1,88.1,88.2,87.2,90.2,88.9,90.3,91.2,87.3,86.4,90.5,80.3,87.5,74.8,91.1,86.2,73.4,84.0,80.2,77.6,89.8,85.3,86.0,81.3,88.3,86.1,87.3,91.0,90.5,80.0,86.6,77.4,86.5,82.8,77.0,74.7,81.5,88.3,79.7,84.7,75.4,82.1,88.1,77.5,82.1,79.9,81.7,89.0,93.4,83.6,83.7,84.1,124.7,84.1,76.3,82.2,85.9,82.9,78.0,73.9,84.2,79.9,96.9,87.3,80.7,85.0,80.4,82.0,89.9,80.6,86.4,84.8,87.1,85.3,75.4,86.5,87.2,79.4,86.6,75.1,84.9,97.0,84.9,83.2,81.5,82.1,83.7,103.1,88.3,87.2,82.0,88.9,124.8,91.1,103.5,89.3,88.4,77.3,118.9,89.3,82.7,126.0,83.8,82.0,94.0,85.5,124.4,96.2,81.1,84.0,87.3,84.8,91.6,79.5,80.2,82.9,79.5,84.2,76.0,87.1,90.4,81.3,88.9,86.6,123.3,84.5,84.5,79.2,78.0,81.6,79.8,85.2,124.3,83.6,79.7,84.6,85.1,80.5,81.4,81.5,86.9,82.1,82.3,83.6,78.7,82.5,82.9,89.4,79.8,75.0,84.4,83.9,86.3,85.1,83.9,85.0,78.4,80.6,90.3,78.4,78.9,80.7,86.4,83.4,91.5,87.4,82.4,89.0,78.9,93.8,78.7,84.7,77.6,82.4,84.0,83.7,99.1,90.9,120.2,79.2,87.4,78.8,82.9,84.8,91.2,91.5,86.5,88.3,79.2,81.4,78.3,88.0,79.8,80.4,85.4,86.8,87.3,82.4,87.1,80.6,88.2,88.6,83.7,92.9,126.1,81.1,87.0,86.5,86.7,83.7,87.9,87.7,83.1,79.9,84.2,85.5,81.3,69.8,83.6,101.6,80.6,87.1,131.8,84.1,79.0,77.5,84.6,81.2,81.3,93.1,88.7,86.3,83.5,78.2,82.4,82.3,83.6,93.1,128.8,86.3,89.4,75.7,82.5,89.5,82.2,95.4,90.4,85.8,81.0,92.7,81.0,89.7,81.1,82.6,92.4,89.1,79.3,81.1,76.1,86.2,89.8,85.8,92.3,82.6,84.2,128.2,127.2,71.5,88.6,81.0,85.9,86.8,85.4,88.9,85.9,87.4,83.9,87.9,119.4,87.1,96.5,78.6,84.5,89.6,81.8,87.3,88.5,82.9,85.5,84.6,89.3,77.0,83.0,86.6,77.0,87.2,78.4,85.7,78.4,83.3,90.4,85.5,83.4,86.9,75.1,84.0,75.0,80.5,76.5,83.4,77.5,88.4,81.4,83.7,79.4,86.1,98.2,84.4,92.3,78.6,127.8,80.1,87.2,85.0,88.3,73.1,87.7,82.5,86.0,81.3,85.8,88.9,84.4,83.1,81.1,86.4,71.1,78.3,120.3,84.1,85.3,79.9,82.5,85.7,81.5,85.9,87.3,80.6] + }, + { + "position": 76, + "values": [66.6,69.6,64.1,51.2,27.2,56.6,58.6,62.9,59.7,64.2,68.7,59.7,58.0,65.5,65.4,58.1,65.3,58.2,72.6,28.6,42.6,64.9,71.4,59.6,60.8,62.4,57.8,66.5,62.4,50.3,65.1,60.2,61.5,72.0,54.3,79.3,61.7,70.4,35.8,46.7,52.9,57.5,56.7,60.5,50.0,60.6,44.6,58.9,59.9,64.9,63.4,55.8,61.9,75.3,34.7,55.5,57.7,69.5,55.2,64.7,61.9,62.0,70.2,70.5,59.9,57.6,71.7,68.0,64.0,86.6,63.1,31.2,68.8,65.9,60.3,58.2,35.3,64.1,59.5,61.5,53.6,74.3,56.3,57.4,28.2,71.2,69.3,57.9,64.5,59.0,68.9,59.0,59.6,68.3,63.7,52.9,66.7,75.5,55.4,69.3,56.5,60.5,60.3,56.8,73.8,55.6,57.3,65.4,61.5,61.3,59.6,67.7,60.8,70.3,57.2,56.2,23.4,59.3,69.7,66.0,58.7,59.7,67.8,58.3,62.4,68.1,71.0,63.3,68.2,58.9,66.0,57.0,68.6,55.0,67.3,52.8,71.2,65.6,59.8,59.6,67.2,65.1,66.0,60.3,55.2,65.9,77.6,34.6,57.8,34.4,57.7,60.1,57.6,60.5,63.1,66.1,59.6,65.5,57.7,67.5,67.7,59.2,53.3,57.9,52.4,67.5,60.0,60.0,72.3,67.5,71.9,47.0,60.5,59.1,78.1,86.8,71.6,67.3,63.2,67.1,69.9,61.9,61.4,20.9,56.4,59.4,20.7,69.5,74.4,54.9,39.3,64.0,57.3,65.1,67.1,62.4,69.2,59.7,67.4,63.3,55.8,55.6,64.2,86.6,69.7,61.2,73.9,27.1,58.4,74.8,59.4,67.2,54.9,64.2,61.3,77.1,63.3,66.3,57.8,63.8,63.7,58.5,63.3,63.1,59.6,62.9,74.9,56.1,64.5,66.4,62.5,74.6,60.9,60.7,68.6,61.1,65.1,58.0,60.0,67.0,63.8,69.4,60.0,69.8,69.1,63.4,59.9,23.0,26.3,52.9,57.9,59.4,25.3,76.6,58.5,60.8,82.0,59.1,67.4,49.1,71.4,57.0,60.3,67.9,62.7,75.3,25.7,54.9,60.3,59.7,69.8,62.1,42.8,65.5,59.9,63.2,68.1,58.7,99.3,61.1,71.2,60.4,51.2,67.0,26.6,45.9,40.7,23.5,62.9,64.1,69.6,74.0,64.0,29.2,63.6,65.4,72.1,59.0,55.5,53.8,59.7,71.8,59.3,67.3,54.6,57.0,60.0,57.7,38.1,63.2,72.0,57.5,61.3,64.2,70.8,68.0,74.7,54.7,59.9,66.7,70.1,60.0,58.1,46.8,60.7,74.7,35.1,76.8,52.4,29.1,63.5,69.8,63.6,58.6,65.1,62.7,56.4,67.9,49.7,66.5,21.4,55.8,59.1,77.7,56.6,57.8,60.7,63.3,68.0,57.9,73.3,79.8,29.3,85.2,73.7,62.5,59.6,69.5,63.8,28.4,55.7,56.4,56.4,65.7,55.6,56.9,50.3,70.3,50.5,76.1,59.6,61.0,56.8,58.2,56.5,35.1,60.1,56.9,59.3,60.9,63.4,68.7,58.3,57.0,65.5,27.8,58.0,62.7,49.8,65.9,58.8,58.7,60.5,64.3,64.2,56.9,47.2,61.4,58.0,54.9,73.0,52.4,50.4,74.5,58.3,68.7,73.4,74.1,61.2,67.6,57.6,63.5,76.3,69.5,72.1,59.4,57.2,73.7,56.8,72.6,59.5,60.2,58.5,58.5,70.3,53.8,60.6,55.8,53.9,58.5,63.2,60.3,66.7,56.8,63.2,79.2,22.4,53.6,62.2,58.9,63.8,64.5,46.0,61.4,72.0,60.5,61.4,57.2,49.8,58.4,61.5,61.8,39.9,152.9,60.7,70.2,70.6,59.6,68.1,70.6,55.2,60.0,61.3,61.2,73.7,51.9,67.2,57.3,22.6,75.4,60.1,62.5,57.4,77.2,58.6,64.5,60.0,60.1,67.5,58.9,73.3,56.0,62.7,56.9,85.8,62.7,75.1,69.1,68.6,55.8,68.4,63.1,72.8,60.8,62.3,42.4,54.9,69.9,63.3,27.8,62.8,61.4,62.0,59.2,76.8,59.2,71.9,63.4,69.2,65.6,57.5,61.2,66.5,65.5,35.3,61.4,60.6,61.8,59.3,64.1,22.1,59.0,67.1,79.2,72.7,59.7,61.9,57.8,62.8,23.7,67.4,62.1,29.2,61.4,81.2,64.6,68.7,61.6,56.5,56.0,59.6,61.0,28.4,73.9,58.6,53.9,60.0,57.6,63.6,67.2,62.5,24.5,59.9,66.3,64.7,56.9,79.3,37.0,58.6,63.4,65.3,56.1,67.9,57.5,88.7,57.3,73.0,45.2,57.4,72.7,61.7,65.8,63.3,58.0,58.5,64.3,60.2,61.2,58.9,63.5,56.3,62.3,62.7,31.6,68.3,58.9,63.7,63.5,66.3,60.1,61.4,57.9,62.8,62.1,69.1,59.3,56.4,69.8,56.0,52.1,68.4,58.1,62.0,66.7,57.9,58.0,63.5,59.2,56.4,65.6,70.3,66.7,68.1,70.8,63.9,67.6,55.3,51.2,58.8,107.2,56.5,58.1,66.0,55.4,37.5,47.5,35.0,63.8,67.9,68.6,70.0,59.5,83.0,67.0,80.3,59.4,56.1,62.1,64.1,60.4,60.3,60.3,61.5,57.3,58.1,65.5,59.3,62.6,68.6,65.7,60.2,59.9,61.0,62.5,57.2,66.0,61.0,59.7,77.0,62.9,61.6,60.2,55.8,58.8,65.5,65.2,66.0,52.5,53.0,54.6,59.7,56.3,41.2,60.9,62.2,55.3,70.0,58.6,65.8,52.7,65.5,74.9,56.5,69.7,56.5,57.2,72.8,64.4,61.0,64.2,61.0,71.1,71.6,59.7,68.6,64.0,143.2,70.6,73.3,70.6,79.6,61.3,57.4,57.7,62.7,68.3,66.2,60.7,60.4,65.8,59.3,64.7,59.6,46.7,59.8,29.6,68.8,66.6,59.5,56.0,38.5,75.2,61.8,65.7,58.4,59.2,80.7,58.3,69.7,84.3,76.8,65.3,65.3,63.9,69.9,75.0,59.5,42.5,66.1,58.8,80.2,59.9,65.2,63.5,59.4,62.8,63.6,61.6,51.7,25.0,62.1,72.3,57.2,62.1,54.7,63.9,61.8,61.1,69.8,31.9,75.2,50.6,60.0,55.1,67.3,57.6,56.5,77.0,64.9,58.4,62.6,68.8,56.6,61.7,65.8,68.7,60.4,64.0,54.2,57.8,61.1,57.4,64.7,72.3,69.2,59.2,72.5,69.5,63.4,60.5,73.5,60.7,53.1,57.3,33.8,61.1,61.0,118.4,67.3,57.5,61.3,62.7,62.0,58.4,59.8,67.6,58.5,59.8,69.4,66.7,74.9,59.6,54.6,70.2,75.8,57.9,63.1,59.8,65.8,59.4,52.1,74.5,58.0,65.1,58.8,58.9,56.4,60.7,68.7,57.1,72.8,60.4,54.5,62.6,67.3,58.3,62.1,53.9,37.3,79.8,47.6,82.5,58.9,60.3,77.3,63.6,57.3,66.5,64.2,69.8,62.9,74.8,63.6,40.3,67.6,76.9,58.0,57.8,26.9,68.6,56.5,55.4,57.5,61.2,61.0,58.9,59.0,66.9,67.1,59.9,28.5,74.5,62.1,49.3,57.2,56.8,69.6,33.9,53.8,57.3,65.1,67.5,63.7,56.9,60.4,63.2,62.8,60.3,62.6,57.7,82.1,47.4,56.0,64.9,42.5,63.4,68.5,70.7,54.4,57.7,56.3,39.3,58.9,55.3,70.6,23.3,45.3,59.2,63.4,61.2,28.1,60.5,76.8,45.2,52.8,63.5,66.3,64.4,34.2,70.2,57.9,48.6,60.3,61.1,62.3,64.1,56.6,73.7,64.5,63.4,59.6,64.4,57.7,59.9,54.7,69.8,57.3,67.6,54.7,57.2,57.0,55.5,72.2,59.6,62.8,63.1,58.7,57.6,37.8,80.5,70.4,56.6,56.8,66.3,58.4,62.9,61.8,37.7,60.6,68.7,71.9,60.5,55.1,58.8,62.1,53.9,55.9,53.1,69.0,67.1,66.1,65.8,73.0,59.6,64.2,66.9,71.3,61.9,66.4,62.2,69.9,64.0] + }, + { + "position": 77, + "values": [19.0,17.2,18.1,16.7,17.2,16.2,16.7,16.1,16.7,16.8,17.3,15.8,18.2,16.9,17.2,17.2,17.2,16.7,17.6,18.1,17.5,16.5,16.7,16.5,17.6,17.3,17.9,17.6,16.6,16.8,16.5,17.5,16.8,18.1,17.7,19.7,17.8,19.9,16.6,16.0,17.4,17.4,16.5,18.3,16.1,15.3,17.9,16.8,16.8,18.0,16.0,17.6,18.2,17.6,15.7,17.4,17.4,16.8,18.6,19.2,17.1,16.8,16.9,18.0,17.6,17.1,16.2,17.9,15.9,18.3,16.3,17.4,17.1,17.4,17.7,16.3,17.8,18.9,17.0,16.9,16.6,19.5,16.5,17.3,18.0,17.2,16.1,15.7,18.4,17.0,17.4,16.6,16.1,18.7,17.8,16.4,17.2,17.4,16.5,19.4,16.1,18.8,17.3,19.0,17.2,16.2,16.4,17.6,17.7,17.1,18.2,17.9,18.0,17.2,17.3,16.8,17.8,16.5,17.2,17.3,17.0,16.6,16.9,16.7,15.9,19.2,15.9,17.5,16.7,17.8,18.0,16.5,16.9,16.2,18.3,16.1,18.4,17.5,15.9,18.4,15.7,18.5,17.7,18.2,16.5,16.7,18.8,16.4,17.4,16.4,16.4,17.0,15.6,16.1,16.4,18.5,16.7,17.8,16.0,20.2,17.8,18.2,15.8,16.7,15.9,16.9,17.4,18.2,17.2,17.4,17.6,16.4,17.6,17.2,18.2,17.3,16.1,16.1,17.3,18.3,18.3,18.7,16.5,28.9,15.5,16.2,17.2,17.1,16.8,17.6,16.3,16.7,17.6,16.0,18.8,15.6,17.5,30.1,17.1,17.4,17.2,16.4,16.3,15.7,23.3,17.4,16.9,16.6,18.3,16.8,16.0,17.9,16.0,18.0,17.3,17.8,18.4,17.2,17.6,17.4,16.4,16.4,16.6,17.6,18.0,17.3,16.5,15.0,16.6,17.3,17.0,16.2,16.1,17.6,19.4,16.9,17.5,16.2,17.4,17.9,17.4,17.1,16.9,15.8,18.0,17.0,17.4,17.1,17.1,16.4,14.5,16.8,18.7,17.1,17.5,17.4,16.4,16.7,18.8,15.4,18.1,17.9,16.8,17.4,17.3,16.7,17.0,17.4,16.5,17.4,16.3,16.2,16.3,17.7,17.5,16.4,17.6,16.1,18.5,17.5,18.4,17.7,18.4,17.4,14.1,14.8,16.8,18.0,17.7,18.0,16.6,16.6,18.5,19.0,17.6,16.6,16.1,17.9,17.7,18.0,18.4,17.5,18.7,18.0,16.3,17.3,17.0,17.5,17.8,16.7,18.8,16.7,18.1,16.7,17.7,17.8,16.8,16.5,16.4,18.2,17.6,18.0,17.4,16.5,17.8,17.0,17.4,16.1,16.2,19.7,18.6,18.4,18.1,16.6,18.1,17.2,17.2,16.5,17.4,16.8,12.2,16.7,17.7,16.5,18.8,17.5,15.9,16.9,20.4,17.7,17.5,20.1,16.7,18.7,18.4,18.0,16.0,16.8,16.9,13.0,17.2,17.0,16.9,16.6,17.4,16.2,32.0,17.2,18.1,17.0,16.6,16.1,17.6,17.3,16.7,17.3,15.8,17.8,16.3,17.7,17.3,18.4,18.6,17.7,17.7,17.2,19.4,16.1,17.3,18.1,16.8,16.9,16.7,17.2,17.9,18.6,16.6,16.2,18.5,16.0,16.3,16.3,17.3,18.4,16.3,18.6,17.3,18.6,18.6,16.7,16.7,16.4,18.3,18.2,19.7,18.5,15.6,17.4,17.1,16.8,17.7,15.9,14.4,16.0,17.3,17.4,17.6,17.4,16.6,16.3,20.2,18.2,17.9,17.9,16.3,18.2,18.0,16.7,17.4,16.8,16.4,17.6,17.1,17.6,16.5,18.4,18.1,16.9,16.8,16.3,15.8,16.4,18.1,16.3,18.0,16.9,16.4,18.3,16.8,19.0,17.5,16.3,16.1,16.1,17.6,18.9,16.0,17.4,16.6,16.1,18.9,18.5,16.8,17.2,16.3,16.7,18.1,16.4,17.2,16.1,20.1,17.9,16.9,16.2,15.7,17.4,17.4,17.5,16.7,17.2,17.6,16.3,17.1,17.2,16.6,18.1,18.8,16.8,18.4,18.4,17.1,17.5,16.9,17.8,16.6,18.3,63.8,18.6,16.1,17.9,17.8,16.9,17.5,17.2,17.5,17.0,18.0,17.7,17.8,17.1,17.4,17.1,16.9,16.9,17.6,17.3,17.2,18.7,18.5,17.3,18.0,17.5,17.8,17.3,18.4,16.7,17.7,18.3,18.2,17.6,16.3,16.6,17.8,16.1,16.4,17.9,18.3,17.2,17.0,17.5,16.9,16.4,17.6,17.0,16.1,17.4,16.9,18.4,17.0,17.0,17.4,16.0,16.0,17.6,17.3,16.9,16.0,17.9,19.0,17.6,17.7,15.1,16.5,17.0,17.0,18.7,18.4,17.8,15.8,17.3,16.1,17.2,16.4,17.2,15.9,19.1,16.9,16.6,18.0,17.5,17.1,18.2,18.1,17.0,16.2,17.7,17.8,17.6,16.7,17.0,15.9,17.8,17.7,18.3,17.2,16.7,17.3,17.4,16.5,18.1,17.1,16.5,16.6,16.9,17.5,18.0,17.2,18.4,15.0,17.6,17.8,29.9,17.4,17.7,18.5,16.9,19.6,17.0,17.2,17.2,18.2,17.9,17.1,16.3,16.3,17.4,17.8,17.0,16.7,16.9,17.8,17.9,18.0,17.1,17.8,16.3,16.2,17.8,17.6,18.5,17.7,16.8,18.2,16.3,17.4,17.6,16.9,18.2,17.0,16.4,19.8,15.9,17.9,16.2,16.7,18.3,16.3,18.0,16.7,16.1,17.6,15.9,15.6,15.7,18.0,16.6,16.4,17.9,17.6,18.3,15.5,17.2,16.7,17.7,18.6,17.3,17.1,16.6,18.1,17.2,17.6,16.3,16.5,16.1,15.6,18.0,19.3,20.9,16.3,18.1,16.3,17.3,17.4,16.4,16.1,17.1,18.1,16.5,16.6,18.0,17.3,17.0,16.2,17.4,16.4,17.4,20.2,18.3,14.9,17.0,16.6,18.3,18.4,17.5,15.6,17.7,16.7,16.9,17.0,18.1,18.2,16.4,17.1,17.9,17.4,16.6,16.7,17.3,17.6,17.8,17.5,17.1,18.1,17.7,16.9,17.5,18.2,17.2,17.7,21.3,17.6,17.0,18.0,15.6,16.7,16.5,17.6,15.8,17.1,15.9,16.3,18.9,16.8,11.0,17.5,16.3,17.2,16.8,16.4,17.8,16.4,18.0,16.8,16.1,17.1,16.7,17.0,17.0,17.4,16.6,16.6,17.4,16.7,16.9,16.0,17.7,17.5,16.8,18.7,16.4,17.3,17.4,16.6,18.1,16.5,17.3,15.9,16.1,23.8,18.0,17.4,16.6,17.3,15.7,16.5,16.4,17.8,15.2,17.6,17.0,17.8,17.2,17.6,18.4,15.1,17.9,16.1,17.9,17.8,17.8,16.5,17.2,18.6,16.6,17.9,16.6,17.0,16.4,16.5,18.9,15.5,16.9,19.1,16.9,20.9,17.5,16.8,18.0,17.4,16.1,17.0,16.6,18.4,18.2,17.2,17.5,17.6,17.0,17.4,17.3,16.0,15.5,18.1,16.5,17.6,16.9,17.0,16.8,23.9,16.9,16.9,16.3,17.2,18.1,20.4,17.7,18.5,17.2,18.5,17.5,16.5,19.4,18.3,16.9,17.7,17.7,15.9,16.3,17.7,16.4,17.3,17.5,17.4,17.1,18.2,16.2,17.9,17.2,16.7,17.7,18.1,16.8,16.1,16.0,15.8,18.8,17.1,17.8,18.5,17.2,18.2,17.3,20.0,17.5,16.7,17.3,17.6,15.9,16.7,18.3,17.4,17.6,17.9,17.0,18.0,17.1,16.0,17.5,17.3,16.8,17.7,18.5,17.4,17.6,17.3,17.9,17.0,16.3,17.1,16.7,18.0,16.4,16.7,17.2,16.4,17.4,17.0,15.3,19.6,15.9,16.9,15.2,17.3,15.7,18.1,16.4,16.2,17.4,17.4,17.3,17.8,17.3,16.9,17.1,16.7,17.8,17.9,17.8,16.0,16.9,16.3,17.9,16.7,16.7,17.2,17.4,16.7,16.7,15.8,19.8,18.1,18.0,16.3,16.0,16.9,16.5,19.0,17.0,16.4,17.6,18.5,17.3,17.3] + }, + { + "position": 78, + "values": [26.4,21.9,27.2,23.4,20.8,22.2,24.2,24.8,24.0,22.1,24.3,23.6,20.8,23.8,23.6,21.8,22.8,24.1,25.2,25.5,28.4,24.2,27.1,25.7,22.6,22.2,23.4,26.8,24.6,25.2,24.9,22.0,20.4,22.4,23.3,24.3,25.8,29.2,27.5,27.4,18.0,25.6,23.5,20.1,24.6,23.1,22.3,29.4,22.5,23.1,23.1,22.2,24.2,25.8,23.6,21.7,22.7,22.6,21.2,23.1,28.7,24.2,26.0,25.9,21.5,24.4,24.4,23.4,22.9,21.7,23.0,28.3,25.5,21.5,24.4,25.8,22.2,24.2,23.8,22.3,23.6,28.1,24.2,27.5,26.2,22.5,21.9,27.3,25.1,21.8,25.6,27.6,24.4,24.3,21.5,23.2,23.5,26.7,24.0,25.2,21.7,22.3,26.7,25.2,33.7,21.2,22.7,24.4,23.5,23.3,27.0,22.0,25.1,26.4,21.4,28.8,24.2,22.1,22.0,23.4,24.4,23.7,21.7,31.1,26.0,22.6,20.9,22.9,24.2,27.3,23.6,23.6,23.7,21.2,23.3,23.8,24.6,26.1,22.6,19.8,28.2,27.2,23.6,26.1,20.5,29.3,24.0,23.1,24.4,23.0,22.8,22.8,20.6,22.4,22.0,28.1,24.0,25.8,24.5,31.5,24.7,20.8,23.4,23.0,22.3,22.8,22.9,26.3,28.9,23.5,23.6,18.3,26.2,23.9,25.1,28.0,27.5,22.5,26.5,23.8,24.7,26.4,41.1,24.5,20.0,21.1,26.1,22.7,22.6,24.7,27.4,20.5,21.3,22.2,23.6,26.0,23.8,19.7,31.9,24.6,21.5,23.1,22.0,23.3,27.0,21.7,31.6,23.4,23.0,24.9,22.6,25.3,23.0,22.7,21.9,26.6,28.0,24.0,22.0,24.8,23.0,25.0,21.7,25.0,23.2,27.3,30.1,20.4,22.1,23.4,25.4,23.6,32.1,25.1,24.6,23.3,26.1,24.7,24.0,27.7,22.3,22.5,24.7,23.3,21.3,23.2,26.4,23.2,21.4,26.2,22.8,27.6,27.4,24.1,22.0,24.5,25.0,20.3,23.5,21.0,29.4,27.1,20.4,23.0,24.5,29.0,25.4,22.8,24.6,24.4,23.4,27.4,23.1,21.5,25.2,20.8,25.4,25.1,19.8,23.7,29.1,26.2,23.7,23.5,24.1,17.2,19.6,29.2,23.7,23.9,28.9,25.4,26.0,23.9,21.3,20.8,25.2,24.9,23.2,27.2,21.8,24.5,20.8,20.2,20.8,21.6,25.8,23.8,24.8,21.8,26.4,25.0,22.4,23.3,22.5,25.1,21.1,25.7,22.5,21.8,30.5,21.9,23.1,22.0,23.3,18.6,25.0,25.6,21.4,29.5,26.9,20.9,24.2,22.9,20.7,25.8,27.1,22.0,27.3,22.8,16.4,24.3,22.5,23.9,23.2,22.0,23.3,24.2,26.3,23.6,24.4,27.1,24.4,28.4,26.0,24.6,24.0,27.1,23.7,23.7,30.3,22.9,28.5,23.6,25.0,25.4,42.5,24.1,22.6,30.5,31.5,27.5,25.7,24.4,22.9,22.4,28.1,24.4,22.0,23.5,26.1,22.8,26.2,25.5,23.1,25.7,26.0,25.6,24.2,23.6,21.0,23.6,22.5,22.0,26.8,23.8,25.6,22.5,24.2,24.0,22.9,23.6,25.8,20.7,32.5,22.1,25.5,24.7,24.0,26.1,23.2,20.4,21.7,24.1,27.6,26.1,22.0,21.6,25.9,25.3,21.2,20.4,22.4,24.0,23.7,22.1,22.5,24.6,23.9,22.8,24.5,27.8,26.4,20.1,21.5,23.6,28.2,21.1,24.7,23.8,22.0,22.3,24.4,16.9,24.8,24.2,23.8,25.2,24.0,26.9,22.1,23.2,28.4,22.3,18.9,21.7,22.6,25.8,23.9,26.9,25.5,23.0,23.8,24.8,23.0,24.8,21.8,22.8,22.8,25.4,23.0,26.1,25.1,22.3,32.4,24.2,24.1,21.9,25.9,23.7,27.3,27.1,25.1,24.0,22.2,20.9,22.2,23.5,22.7,21.8,24.1,25.4,23.0,21.6,21.9,33.4,25.6,21.8,22.9,22.2,22.9,23.2,25.5,25.9,23.7,28.7,17.9,29.5,23.4,22.8,22.1,19.9,25.5,21.0,23.1,21.0,20.8,22.3,23.9,24.0,23.9,28.6,23.6,21.4,26.9,18.2,24.9,23.4,29.9,25.7,23.0,21.4,23.3,23.8,25.5,21.1,22.8,26.2,22.9,23.5,27.4,20.7,24.0,22.0,22.5,26.7,28.3,23.3,25.6,24.0,27.1,23.2,25.9,24.8,28.4,24.9,26.4,28.1,24.0,23.2,24.8,22.4,21.9,25.9,22.5,23.4,23.7,26.3,28.4,21.9,27.0,21.4,23.8,23.6,24.3,24.1,25.4,24.5,23.0,26.1,23.4,23.4,23.6,25.8,27.1,26.8,25.2,25.9,25.7,20.9,26.0,23.9,26.7,25.4,23.7,20.8,24.6,24.1,24.5,23.1,22.1,26.0,24.0,26.6,23.8,24.3,22.3,27.6,23.0,21.7,24.6,25.1,25.2,20.8,27.8,24.6,22.6,25.7,29.4,22.2,21.6,44.3,25.4,25.6,23.8,27.8,24.3,25.4,25.7,25.6,23.5,35.5,23.9,25.0,21.1,23.7,27.1,24.4,25.0,21.9,25.9,20.3,26.5,23.2,25.8,23.3,22.0,25.3,18.8,26.6,22.1,26.3,23.3,21.2,20.4,24.6,27.4,21.2,24.7,24.4,26.5,23.7,23.7,22.6,24.0,23.0,21.4,23.3,24.0,20.8,23.7,22.8,26.7,20.7,24.1,21.8,21.8,22.8,21.9,22.9,20.3,22.5,24.2,22.6,23.9,23.6,21.6,26.5,28.8,23.1,25.4,25.3,24.1,25.5,25.7,24.5,22.1,23.5,26.6,25.5,23.7,19.9,22.8,26.1,22.2,24.1,23.7,23.7,22.1,24.8,25.0,25.5,23.3,23.8,23.2,26.4,26.1,23.3,21.3,22.2,21.1,22.3,29.2,29.2,24.2,21.8,24.0,28.1,23.2,24.7,27.6,23.3,28.3,22.3,24.6,24.0,25.8,24.0,20.4,29.7,22.1,28.1,26.6,21.3,25.8,21.6,25.5,23.8,20.8,25.2,18.2,23.0,20.0,22.1,23.3,22.6,24.7,23.9,24.4,29.8,25.5,23.7,22.8,23.2,23.3,21.9,26.4,23.3,25.0,23.5,21.9,25.0,22.5,24.2,24.9,22.0,23.2,25.9,22.1,25.5,20.5,21.0,23.1,22.0,23.6,26.9,25.8,22.2,24.1,21.8,25.1,22.6,22.6,22.2,23.5,22.9,22.3,21.5,27.1,21.5,23.1,24.5,24.0,21.8,28.3,22.2,25.1,23.6,23.4,21.6,23.4,26.4,27.3,29.3,20.8,25.4,22.8,27.7,26.1,26.2,22.9,30.2,26.0,21.8,21.1,20.5,24.5,22.6,23.5,24.5,22.5,20.7,25.0,24.3,27.2,21.8,24.8,25.3,25.7,31.2,23.2,22.7,30.7,26.5,24.7,23.8,23.6,23.6,24.0,26.3,27.2,27.3,24.3,21.2,23.5,24.8,22.4,27.9,20.2,24.7,21.7,23.5,23.8,21.5,22.8,24.2,25.4,24.2,27.8,20.9,24.2,24.4,23.9,33.8,22.7,26.3,25.8,22.7,26.8,25.1,23.1,26.4,24.3,21.3,26.7,23.7,24.5,25.3,21.3,29.4,26.0,26.6,22.6,22.1,23.6,20.9,26.7,27.2,23.0,23.7,28.6,26.0,18.8,25.4,23.7,22.7,23.4,26.3,24.0,23.9,22.5,26.5,24.6,31.6,24.4,25.9,26.3,23.4,22.8,26.3,25.0,23.5,24.0,26.3,24.5,26.4,22.9,22.5,23.0,21.0,22.7,22.8,25.9,23.1,23.1,24.4,24.1,24.3,25.8,22.7,22.0,23.2,22.8,25.4,24.5,25.7,23.7,24.4,23.7,18.5,24.8,28.8,23.7,24.2,21.5,29.1,24.5,24.8,23.2,23.5,27.6,22.4,22.5,20.7,24.4,22.0,22.0,25.5,23.1,27.2,20.2,23.9,28.4,31.4,23.2,25.3,24.1,20.1,22.9,22.1,22.6,24.8,23.3] + }, + { + "position": 79, + "values": [19.0,18.5,19.7,19.4,21.6,19.8,20.4,19.6,19.4,21.0,18.2,17.7,17.8,18.9,19.4,18.9,17.7,18.8,17.8,18.3,20.0,20.1,20.2,19.4,18.0,20.7,17.6,18.4,18.8,19.1,18.9,18.6,19.4,20.8,18.4,17.5,18.0,22.7,20.9,18.6,18.6,16.3,19.3,17.4,19.4,17.5,19.5,19.7,19.2,19.1,19.0,20.4,18.6,21.2,17.8,21.0,19.7,21.3,19.3,24.8,18.5,19.6,18.6,19.1,19.2,20.4,19.1,21.4,18.4,21.9,22.4,18.7,18.8,19.5,20.4,21.8,19.6,18.4,19.2,18.7,19.7,19.5,19.6,18.0,18.3,18.8,18.6,20.4,18.8,19.3,19.2,21.9,19.3,19.3,18.9,20.0,19.3,18.6,19.5,18.9,18.5,18.7,18.1,19.6,18.2,18.5,18.1,20.2,20.6,18.2,18.5,18.5,18.2,17.8,17.9,19.5,21.4,19.4,20.1,18.1,19.3,19.2,17.6,17.6,19.7,22.9,20.2,19.5,18.7,18.2,18.3,19.6,20.1,19.1,20.5,18.8,21.0,18.4,17.1,19.0,19.4,17.5,19.3,21.7,20.2,18.2,21.0,19.3,19.0,19.1,17.5,17.0,17.3,18.0,16.7,18.0,19.2,17.2,18.4,19.6,21.4,18.5,18.7,18.5,19.0,19.3,19.2,18.8,18.2,19.3,17.7,21.1,19.0,20.0,18.8,19.1,19.4,17.3,18.9,21.2,21.3,20.9,18.1,20.0,56.5,18.4,19.1,19.4,19.4,20.9,20.0,21.7,21.0,19.3,18.3,18.9,19.5,32.2,19.0,18.3,19.3,19.9,19.3,18.8,26.9,18.3,18.8,19.3,21.7,19.3,17.6,21.8,19.7,22.3,19.1,20.5,18.3,18.8,20.1,19.8,19.7,19.5,18.7,18.2,17.6,18.0,19.0,17.2,19.3,19.6,18.2,19.5,19.0,19.5,17.8,18.1,19.0,19.1,19.1,18.8,19.5,19.2,19.1,18.2,18.8,21.6,18.3,19.3,19.7,17.4,19.3,19.3,18.1,18.4,18.8,18.5,18.4,17.8,21.4,17.5,19.2,18.3,18.6,20.1,19.1,19.2,20.2,19.6,18.6,18.0,18.4,18.0,19.1,20.3,17.2,19.2,21.2,18.4,22.6,18.9,18.3,18.5,17.8,18.2,19.5,17.3,18.2,19.7,17.5,21.0,19.4,18.2,19.2,17.8,19.5,22.0,19.1,18.4,20.5,17.6,20.0,20.4,21.4,22.0,20.5,19.2,19.5,18.5,20.7,19.7,18.2,18.4,19.1,19.8,21.4,17.5,17.5,18.1,19.2,19.8,19.7,21.6,19.1,19.8,20.9,18.7,18.3,19.1,18.2,18.1,18.9,21.3,17.5,18.1,20.5,23.2,18.6,17.7,18.9,19.5,17.1,19.1,18.9,20.4,18.9,19.2,17.6,20.0,21.0,20.4,19.1,17.7,19.5,19.1,20.3,18.7,19.6,18.6,18.9,19.7,19.3,17.0,18.7,18.8,18.5,19.6,20.6,19.6,18.3,17.3,19.2,19.3,18.2,18.5,19.1,18.8,17.5,19.4,19.2,18.5,19.0,21.4,20.7,21.6,17.8,18.3,18.2,19.0,21.4,19.1,20.2,18.9,19.0,18.2,19.8,19.4,19.8,18.3,20.2,18.4,20.1,17.8,18.7,17.9,21.6,18.7,19.3,18.7,20.6,21.6,19.3,19.3,19.9,20.4,22.1,20.3,18.3,17.9,18.0,16.8,20.0,18.0,20.3,18.4,17.7,20.7,19.1,17.5,19.5,20.6,23.4,18.9,21.2,18.7,20.4,17.3,17.8,18.6,18.9,19.4,21.5,19.5,19.3,19.7,17.9,20.4,20.4,17.6,18.5,18.5,16.8,19.5,19.1,19.3,20.3,19.7,19.3,21.0,18.9,18.7,21.1,19.7,19.1,17.8,18.9,20.9,19.7,18.0,20.2,19.4,20.4,19.2,18.0,20.0,19.2,20.4,20.0,18.4,17.7,18.7,18.1,22.5,18.9,19.5,19.3,18.1,20.1,17.7,17.8,19.7,19.4,17.3,19.5,21.3,20.7,23.0,21.2,19.7,21.7,20.6,18.9,21.4,19.0,20.0,18.3,18.0,28.1,22.1,18.1,18.3,20.7,18.9,17.5,19.6,19.6,18.3,18.7,18.2,19.5,17.8,21.0,19.3,17.9,17.9,17.8,18.6,18.2,18.0,18.3,19.1,20.1,19.6,19.2,20.8,19.6,19.4,21.8,20.9,17.2,19.3,19.7,19.5,18.2,19.1,19.4,19.5,18.6,19.3,18.3,18.4,18.8,19.5,18.7,18.3,18.7,21.9,18.9,19.2,18.3,19.0,18.7,17.6,19.5,19.4,19.7,18.0,18.2,18.2,18.4,18.9,18.4,20.9,19.2,18.1,19.5,17.6,21.3,20.4,19.1,18.4,19.3,19.1,18.9,23.2,18.9,21.1,18.8,17.3,17.5,19.6,19.4,17.9,19.0,19.6,19.9,17.1,18.7,18.1,18.8,20.8,19.1,18.6,17.9,18.1,17.4,18.1,20.0,17.6,20.2,18.9,17.8,19.2,19.0,19.4,18.7,20.9,18.4,17.3,17.7,18.9,18.9,38.5,18.0,18.9,17.9,19.5,19.0,18.5,18.1,18.3,21.4,18.9,18.6,18.2,19.1,18.0,18.1,18.5,18.6,18.4,18.8,19.4,17.9,18.0,18.3,19.2,18.9,20.9,18.0,15.9,19.7,19.3,19.0,19.4,18.5,18.4,17.7,19.5,19.8,20.7,20.5,19.4,17.9,19.0,19.2,21.4,19.3,22.0,19.0,19.9,20.3,18.3,17.8,21.9,19.1,18.3,18.9,20.5,17.9,21.4,18.8,21.1,18.6,17.7,20.5,18.0,19.1,18.5,18.9,17.0,18.2,18.3,18.8,19.5,20.0,21.6,20.3,19.0,18.6,18.6,19.5,19.3,18.2,19.6,20.1,19.1,20.8,19.6,20.7,18.2,19.3,18.7,17.6,17.7,18.7,19.0,18.1,21.0,16.4,18.2,19.0,20.3,19.7,19.0,18.6,18.5,19.1,17.9,18.7,18.2,17.7,18.8,20.3,21.1,18.0,17.6,19.3,18.0,18.2,18.3,19.0,18.0,19.8,18.5,20.9,18.8,18.1,17.6,21.3,21.3,21.7,18.8,21.9,17.5,17.9,18.3,19.9,19.0,19.6,17.7,21.4,18.7,19.4,19.4,18.8,17.0,19.0,19.2,18.6,21.7,17.8,18.9,19.5,19.2,18.0,18.3,18.5,18.5,19.1,18.7,19.6,19.3,19.6,19.2,19.8,18.8,18.7,18.5,19.2,18.6,21.0,20.0,19.1,20.5,18.2,18.7,19.1,19.0,17.1,17.7,18.2,17.4,19.4,19.0,19.0,18.8,20.3,17.2,19.0,20.3,20.2,19.1,18.2,19.4,19.2,17.5,17.4,18.1,20.2,19.4,18.7,18.7,19.5,18.8,22.0,19.4,19.1,18.0,19.9,19.5,18.8,19.1,17.6,20.0,20.1,20.9,17.3,19.6,18.1,18.7,18.9,17.6,20.0,18.0,18.7,19.0,18.5,18.6,20.6,19.3,18.9,18.7,20.9,17.7,19.4,20.0,18.7,17.8,19.3,17.1,19.2,19.3,19.9,20.9,18.1,20.8,21.1,19.1,18.9,19.6,18.8,17.7,21.4,19.2,19.4,18.1,19.1,19.3,18.4,20.2,17.8,17.4,19.8,19.1,18.0,17.7,19.7,19.5,19.4,18.2,18.7,18.5,19.1,19.8,19.0,19.3,19.4,18.6,20.7,18.3,18.0,17.2,18.3,19.5,19.1,18.3,18.3,18.9,19.1,20.3,18.9,18.9,20.4,18.2,20.9,18.7,19.3,19.8,19.5,19.3,17.8,18.1,19.1,20.9,20.7,18.6,18.2,18.3,18.5,18.4,20.6,18.6,18.6,19.0,20.4,19.0,18.4,19.4,21.8,19.5,17.7,18.7,22.1,19.0,19.5,17.9,17.2,19.7,19.6,18.8,19.4,18.4,17.6,18.8,19.2,17.8,17.8,22.2,19.1,19.0,18.4,18.7,19.8,20.1,19.4,19.7,19.6,16.2,17.9,17.3,18.6,19.9,19.1,19.1,17.6,18.0,19.0,19.7,17.2,19.2,20.5,17.6,20.9] + }, + { + "position": 80, + "values": [93.3,98.5,87.8,23.8,113.5,86.2,96.9,96.6,65.3,79.3,96.2,117.3,87.7,100.2,94.5,95.4,88.2,113.9,45.4,47.0,85.7,98.2,57.3,83.4,94.1,74.7,60.4,96.5,92.8,107.3,96.6,91.0,76.2,104.6,63.1,70.7,123.5,100.1,31.8,89.3,48.0,72.0,100.2,69.4,66.6,47.0,98.9,110.5,84.0,71.7,98.5,93.3,95.6,84.3,116.2,72.1,88.5,92.2,85.3,84.5,97.4,94.2,99.2,111.8,82.1,104.3,99.2,87.6,112.1,98.8,85.5,99.3,76.1,82.8,51.6,95.2,80.8,83.4,97.4,76.4,101.1,111.0,106.2,48.2,97.0,93.0,88.9,117.8,76.8,77.5,67.2,101.0,104.4,101.9,38.4,101.5,87.5,108.9,67.6,103.3,95.7,91.4,78.9,82.8,101.6,113.6,72.3,100.2,81.7,84.1,104.6,45.3,102.0,96.3,90.6,94.4,24.1,102.4,70.1,66.4,78.7,96.1,99.7,99.2,50.5,106.5,82.1,96.2,91.9,108.9,81.8,99.4,107.7,90.4,107.5,99.5,103.7,81.3,98.4,93.0,113.2,111.4,88.6,111.5,103.3,88.4,78.4,45.7,103.8,69.4,87.5,95.3,35.6,76.8,76.5,103.4,100.3,106.6,92.8,74.4,91.2,105.1,97.6,89.6,95.0,93.8,87.4,74.4,73.8,99.7,119.8,107.6,55.0,86.5,122.5,97.3,108.3,55.8,92.2,95.7,98.3,96.2,85.1,80.1,80.4,44.4,105.4,71.1,79.8,90.3,30.0,106.6,92.7,79.6,89.1,121.0,88.1,87.4,90.8,107.9,94.8,86.2,82.8,110.6,94.1,81.4,103.0,99.9,102.5,44.9,86.2,96.9,95.0,96.6,81.6,107.5,116.5,81.7,91.3,99.9,87.9,44.2,96.4,75.7,101.2,109.2,112.7,47.8,101.9,94.6,76.8,96.6,116.5,109.0,83.0,100.3,97.1,105.7,74.9,119.3,82.0,92.3,99.0,96.5,82.5,95.1,109.2,95.6,97.8,105.2,72.8,121.8,66.6,42.4,73.0,75.8,80.9,78.3,93.4,76.3,30.0,94.7,93.9,90.5,99.8,120.6,43.6,84.2,107.0,71.9,112.2,98.5,96.9,83.9,76.5,75.7,102.4,93.0,90.1,99.1,48.5,72.6,106.9,76.0,82.7,91.1,44.8,22.9,57.4,113.6,48.2,112.4,76.7,59.9,86.7,92.2,106.5,85.2,105.9,106.3,93.0,104.5,104.1,74.1,96.3,53.1,100.2,92.9,73.4,93.6,56.7,97.2,96.8,96.8,97.9,55.3,51.8,90.3,98.7,80.5,111.4,90.2,74.2,99.8,71.3,65.6,47.4,122.6,83.8,48.5,102.5,89.2,65.0,88.6,90.2,93.2,85.5,81.2,114.9,86.4,45.6,101.6,80.1,101.6,73.9,85.7,92.8,104.6,90.3,86.9,91.1,58.8,46.8,123.4,76.4,107.3,44.2,29.3,82.2,98.4,119.6,58.4,63.6,86.3,104.3,104.9,106.9,98.3,103.8,95.7,112.9,104.4,44.8,51.7,101.9,61.8,114.5,84.0,88.0,96.7,110.9,67.1,108.7,98.0,71.9,79.6,56.9,94.2,98.8,84.7,82.8,96.2,97.0,68.4,77.2,112.9,43.6,100.5,101.5,123.9,87.7,74.2,43.1,97.8,115.4,98.0,88.3,84.4,81.7,28.6,85.8,99.0,81.9,94.5,83.1,115.6,86.4,90.8,111.6,101.9,81.8,39.5,106.5,107.7,85.6,88.0,63.8,70.4,89.0,101.9,65.8,113.6,79.3,89.7,83.6,100.1,122.4,81.5,79.2,102.5,72.2,77.3,107.4,108.8,100.8,101.1,40.2,88.0,88.8,51.5,93.3,91.5,86.8,71.4,86.4,81.4,92.6,89.4,85.9,96.0,79.8,85.4,98.0,95.0,96.2,94.8,93.9,81.9,95.4,52.6,92.6,89.3,66.5,106.2,114.4,96.9,66.8,95.8,95.0,87.6,82.8,112.7,88.3,97.3,121.4,77.3,91.9,86.3,45.2,79.5,93.0,97.5,87.3,74.1,90.6,102.8,96.2,83.6,101.0,83.4,44.9,113.8,49.4,101.0,88.7,106.7,19.1,54.2,83.2,80.2,114.2,95.6,83.8,73.9,77.3,83.6,93.9,95.5,88.4,94.7,74.1,23.7,44.0,40.2,87.3,81.0,101.6,60.8,121.2,106.2,98.5,75.6,88.0,72.5,93.8,88.1,85.2,109.6,81.8,94.8,103.8,74.5,95.9,45.9,90.4,45.8,108.2,93.6,74.0,99.2,66.0,70.5,72.1,41.5,91.8,123.5,110.7,120.6,70.2,87.6,100.1,93.7,97.2,71.7,79.6,100.3,91.6,43.9,127.6,93.7,96.6,47.2,48.5,47.6,100.0,59.5,97.4,90.0,71.4,44.6,81.2,82.5,42.8,93.2,98.8,55.9,105.2,55.1,70.0,75.4,113.4,85.8,114.0,109.2,70.2,84.3,82.5,90.1,107.8,110.0,88.0,79.1,94.4,69.7,104.7,103.2,78.4,129.0,90.1,87.1,97.0,102.7,87.3,89.4,77.7,87.0,85.0,70.9,113.9,93.9,77.6,141.3,74.4,88.5,93.7,75.3,81.0,53.4,96.8,45.0,84.8,110.1,79.7,107.3,84.3,83.0,65.6,78.0,92.6,113.0,101.7,90.7,102.3,43.6,65.0,44.5,43.5,92.8,78.6,70.6,68.7,95.5,94.7,89.6,88.7,86.9,119.5,80.9,103.8,95.0,99.4,72.8,58.5,98.6,103.2,87.5,98.5,93.1,102.5,102.7,84.8,104.5,98.1,70.3,86.2,91.4,94.6,62.1,99.0,83.5,87.9,100.4,86.4,76.8,117.4,86.8,89.1,84.6,121.6,56.5,106.4,98.1,83.6,96.8,83.6,91.0,87.3,86.4,87.4,99.2,45.5,77.3,100.1,88.0,95.7,120.6,115.8,99.6,67.5,73.7,99.4,101.4,90.4,71.6,96.5,75.1,49.7,103.6,89.4,97.1,84.2,76.5,108.8,113.7,84.3,104.9,79.7,116.1,84.0,44.7,43.0,51.3,71.4,110.8,87.9,99.3,41.9,99.7,48.6,67.4,90.5,79.0,111.8,80.3,126.8,87.6,102.1,83.3,85.8,23.2,104.4,91.7,87.3,93.8,85.3,88.8,95.8,42.5,99.1,103.8,43.7,98.1,90.3,105.6,80.3,77.0,98.1,86.6,84.1,82.2,85.9,93.7,91.4,95.5,97.0,92.7,80.1,46.1,60.6,83.7,94.4,102.0,47.5,97.9,116.6,93.7,104.3,85.6,95.6,93.8,98.9,84.7,45.0,112.0,96.3,43.0,87.1,90.0,104.5,81.5,90.8,93.9,83.7,99.2,57.7,80.3,116.0,86.4,83.5,76.4,91.6,118.4,80.5,46.8,54.5,89.7,89.4,99.4,102.0,100.2,93.1,91.1,73.7,93.1,87.4,71.6,93.0,100.6,93.2,101.5,102.9,42.2,77.1,86.4,98.2,89.1,69.2,111.3,50.5,45.4,109.9,106.0,118.6,70.1,83.7,82.6,88.3,111.4,104.6,29.5,22.4,121.9,78.9,77.7,79.8,44.4,85.1,64.1,91.3,109.1,84.1,103.8,86.5,92.7,99.3,110.2,93.9,60.9,104.4,75.5,67.0,92.4,58.0,115.9,79.5,81.1,100.9,44.3,114.9,87.8,102.8,116.2,78.1,90.9,68.7,44.7,81.7,80.2,89.3,103.7,111.2,121.3,88.4,82.9,92.7,45.9,73.0,114.7,88.3,97.2,98.7,55.9,92.2,98.2,79.0,79.4,44.3,74.5,79.7,87.2,90.0,104.5,98.9,78.4,95.2,96.0,81.4,92.2,95.5,54.1,89.4,84.9,101.5,64.8,90.9,113.2,45.5,78.4,86.2,101.1,91.2,100.8,100.9,43.2,89.3,100.8,101.6,48.4,73.5,101.8,84.3,88.8,101.5,97.9,87.4,106.0,101.7,101.5,85.2,54.0,102.4,82.1,83.9,101.4,99.7,107.5,82.6,107.7,42.8,82.1,49.5,102.8,43.6,83.9,89.6,88.4,44.1,59.1,74.1,82.7,102.1,108.2,116.1,106.3,102.6,82.4,99.2,40.8,111.2,79.8,92.8,111.6,97.0] + }, + { + "position": 81, + "values": [26.0,26.6,23.5,24.9,22.7,25.5,21.8,25.3,23.1,22.6,22.5,23.1,21.8,26.5,22.5,20.3,28.4,26.0,27.3,20.5,24.7,21.0,21.2,22.9,25.5,27.8,27.3,21.9,20.2,25.0,21.9,27.5,24.5,29.3,21.7,23.8,20.9,22.7,22.1,22.1,24.1,23.1,21.7,25.4,23.8,21.7,22.6,25.5,21.8,16.9,22.5,26.1,24.5,25.8,23.4,28.6,27.8,25.0,27.6,25.2,24.9,22.8,22.0,22.2,26.6,26.0,22.1,28.0,20.9,26.8,28.6,18.0,21.3,26.2,28.0,27.6,25.1,23.0,25.0,23.9,24.7,25.5,24.4,25.3,20.0,26.0,26.6,20.0,21.7,22.8,25.9,22.5,23.7,22.2,24.9,25.5,27.1,20.6,17.9,23.4,19.4,26.1,21.9,20.2,25.5,24.6,28.4,25.9,27.4,26.2,26.1,28.1,26.5,28.0,26.4,23.5,23.7,23.9,26.5,25.0,25.4,25.0,19.2,23.2,26.0,25.2,27.4,28.9,21.5,23.8,24.9,24.0,23.2,27.4,27.8,22.4,27.7,26.6,24.3,24.3,24.0,23.4,24.9,28.2,19.8,26.4,23.2,21.9,26.0,21.5,23.2,23.5,26.1,21.4,21.9,24.6,24.3,24.3,27.3,26.2,22.7,29.8,20.8,25.7,21.6,21.8,24.3,27.0,25.6,20.1,22.8,19.5,24.4,26.4,19.8,21.5,20.3,26.3,24.0,29.2,27.3,25.9,26.7,38.5,25.3,27.2,26.6,19.9,25.8,26.4,21.4,27.2,31.0,22.2,23.9,20.2,26.0,24.2,25.8,24.5,24.8,24.4,26.9,25.8,27.0,21.6,20.8,27.8,24.9,21.9,24.6,27.0,29.8,22.8,19.0,20.7,23.7,26.5,25.0,21.4,25.8,21.8,26.9,24.1,26.9,22.6,24.4,24.5,26.6,22.9,24.8,22.5,20.5,26.1,20.8,25.9,21.8,26.3,21.8,24.5,26.3,22.4,24.4,20.7,27.4,24.6,24.1,22.5,26.3,20.0,25.0,21.6,26.1,20.3,27.2,25.4,19.9,24.5,28.6,27.3,23.9,22.7,26.6,25.8,25.4,20.7,27.4,23.1,25.0,26.2,25.2,24.9,28.1,26.3,26.4,24.4,27.3,21.7,25.4,26.0,25.0,25.7,29.4,23.4,26.0,24.6,22.6,25.7,24.6,23.1,21.8,21.3,27.4,24.7,28.6,25.2,23.4,26.5,25.9,23.7,28.2,27.6,27.7,26.1,28.8,18.1,26.1,26.5,26.9,22.9,22.1,24.8,28.2,24.9,26.4,25.4,24.0,24.6,24.6,27.1,19.4,26.6,27.3,26.8,23.9,25.5,26.5,20.5,25.0,26.4,21.8,31.4,25.4,25.4,25.1,24.3,20.9,26.7,22.7,21.5,22.5,23.6,26.2,25.5,23.3,27.3,19.6,28.3,27.5,25.4,22.9,23.9,22.0,21.9,26.1,22.1,23.2,25.8,24.6,21.8,21.5,24.4,24.4,23.7,26.1,23.5,28.2,21.8,26.4,27.3,20.5,24.4,23.7,27.5,22.2,17.3,20.4,25.2,24.7,24.7,21.8,23.6,23.6,27.6,24.0,25.5,26.1,23.6,24.9,26.2,23.4,24.7,24.3,26.8,26.4,25.4,26.3,23.1,27.9,27.4,24.7,26.4,23.3,25.6,23.6,28.5,23.7,25.4,22.4,26.3,26.0,23.0,21.6,28.1,28.8,27.0,26.6,21.2,21.2,26.2,27.2,25.6,25.6,27.9,26.6,29.0,24.0,27.1,26.1,23.3,23.4,23.4,23.6,21.6,26.1,28.4,25.0,22.9,22.9,26.3,28.2,25.4,26.4,19.8,27.7,27.8,27.0,27.1,23.3,23.3,22.2,28.2,24.2,22.2,18.0,27.6,28.2,20.5,21.4,26.3,25.8,24.3,26.4,27.0,24.4,23.5,22.0,27.5,26.9,30.2,26.9,27.7,24.3,30.5,20.9,25.3,26.7,19.7,27.3,25.0,25.5,25.9,24.8,25.8,24.8,24.8,28.5,25.0,27.1,26.5,26.8,22.2,23.1,26.7,23.5,25.3,23.6,25.0,26.6,26.8,21.7,27.5,22.1,23.2,23.2,24.3,120.8,15.6,25.3,21.2,23.4,27.6,26.6,27.0,24.5,24.7,29.1,26.2,24.4,26.4,23.1,23.5,25.1,27.1,25.7,28.6,24.5,24.9,22.8,25.6,23.7,26.8,27.0,21.4,22.8,22.9,27.4,24.3,26.1,21.0,25.2,24.1,24.6,21.8,24.7,21.6,22.5,26.4,25.7,25.6,18.1,24.1,26.0,27.5,20.0,26.6,19.9,20.0,25.9,26.1,26.8,27.4,24.7,24.5,25.9,21.5,22.9,27.8,23.8,24.7,20.5,25.4,21.8,29.1,25.9,23.4,25.4,27.8,22.0,25.7,25.5,23.7,21.8,24.3,21.8,21.4,24.4,25.6,25.9,26.9,25.7,26.3,22.7,21.3,26.3,21.5,22.2,26.3,20.4,27.4,15.6,26.2,25.0,26.4,21.9,26.3,26.6,24.2,27.2,23.8,21.7,26.0,24.9,24.3,20.4,24.9,26.5,22.1,23.3,22.6,23.5,30.0,25.0,24.9,24.2,21.3,20.5,21.5,22.1,28.0,21.1,20.4,25.2,22.4,25.0,24.4,23.2,21.4,24.8,27.4,20.7,24.2,25.9,24.7,26.4,21.9,22.1,24.2,21.0,27.2,25.0,21.8,24.2,23.0,24.1,25.5,22.4,27.3,26.5,22.4,27.7,24.9,21.6,25.3,23.2,27.6,19.6,29.9,21.3,25.5,26.1,22.2,18.3,26.3,22.9,31.3,25.6,25.5,28.0,26.5,25.5,26.0,20.2,26.5,28.0,24.2,25.3,24.2,23.4,22.9,25.6,23.8,24.7,21.8,22.0,26.1,27.5,26.8,26.4,22.0,22.6,25.4,22.2,22.6,24.1,28.5,28.3,22.2,20.7,23.3,21.9,26.1,23.3,27.5,23.4,23.2,24.7,28.4,24.2,24.2,25.5,26.0,22.2,25.1,26.1,25.0,25.7,23.8,25.2,27.0,27.8,20.6,26.3,26.5,24.6,27.0,23.6,27.4,26.3,26.2,26.4,23.5,23.0,20.1,27.2,26.5,24.7,25.1,25.7,23.1,27.6,29.3,25.5,22.5,26.2,25.9,25.0,22.2,24.5,23.4,22.1,21.9,21.8,23.3,24.3,22.5,25.4,24.7,19.5,23.8,26.0,26.0,22.0,23.9,25.6,26.4,24.3,26.3,23.1,22.6,22.0,23.5,21.6,22.5,22.4,23.9,26.4,17.4,28.0,23.3,26.4,23.6,22.1,28.9,29.1,25.4,24.9,25.4,26.8,27.4,25.2,25.6,21.1,21.1,24.9,24.3,26.1,22.6,25.2,27.6,23.4,20.7,26.3,21.2,26.7,26.1,22.4,24.9,25.3,22.7,24.3,24.6,21.5,25.8,30.2,26.3,25.8,24.4,23.2,22.8,21.6,25.8,19.5,25.3,26.0,27.3,25.4,24.7,25.5,22.7,22.0,25.2,21.2,25.1,24.2,21.1,25.5,28.0,25.8,26.2,24.7,20.2,23.1,28.0,21.9,22.7,19.5,23.7,20.7,24.6,24.0,21.0,25.7,28.8,26.9,30.1,26.6,21.7,22.0,26.0,28.2,24.7,24.7,19.6,26.7,23.3,21.8,21.7,23.4,25.4,25.4,22.4,26.2,26.6,25.5,22.0,24.9,22.3,23.3,24.1,24.0,20.9,25.5,24.5,22.0,23.6,23.9,22.0,28.3,21.7,22.4,22.5,22.7,21.8,25.2,19.6,28.2,20.3,25.7,25.2,25.0,24.0,27.5,23.3,27.4,24.7,28.1,26.0,21.3,20.3,25.6,26.9,25.8,26.6,22.8,23.4,27.0,28.0,19.3,27.9,28.3,22.7,26.0,26.7,25.4,25.7,22.2,22.2,20.9,22.3,24.8,19.0,28.0,21.6,25.3,24.5,26.5,27.2,26.4,26.9,24.3,21.7,26.9,26.3,27.1,23.2,24.7,29.6,21.9,21.3,24.7,25.9,26.3,27.0,24.8,24.1,27.1,23.8,25.4,26.9,21.1,25.2,21.7,20.7,26.0,22.7,25.8,26.1,21.4,25.0,24.6,21.1,26.8] + }, + { + "position": 82, + "values": [15.1,14.3,14.5,16.9,15.6,13.9,14.5,14.6,16.0,17.0,14.3,15.3,12.6,15.1,15.7,17.7,11.5,15.0,15.4,14.0,14.1,13.6,14.8,14.5,13.2,15.9,15.9,14.9,13.7,15.7,14.2,15.9,13.3,17.2,14.3,13.3,15.1,15.1,15.3,13.7,16.8,14.8,13.4,14.1,13.4,14.2,15.1,14.4,15.7,11.5,14.7,18.9,17.5,15.3,15.0,16.1,13.7,17.5,14.9,14.9,15.3,14.8,12.9,14.8,15.0,15.0,13.8,14.4,13.8,16.5,13.0,15.8,14.7,15.2,14.2,13.6,16.9,13.3,15.1,17.4,13.6,14.0,14.5,15.0,13.9,15.0,13.6,15.1,14.2,14.6,14.5,13.3,14.5,16.3,16.9,14.3,15.3,15.1,13.2,16.0,12.8,15.2,12.9,15.2,14.6,13.4,14.5,17.0,15.8,15.7,14.5,15.9,15.6,15.7,14.4,15.1,13.4,13.5,15.9,15.1,15.9,15.4,14.2,13.5,13.5,14.0,15.2,19.0,14.4,13.9,15.1,15.1,15.1,15.6,16.0,15.8,15.3,13.5,15.3,14.1,15.3,12.8,16.8,14.2,12.5,14.6,16.2,14.4,15.1,14.4,14.8,14.6,16.2,15.4,14.0,15.1,11.7,17.7,14.8,17.2,15.9,15.8,14.4,15.0,15.5,15.1,17.1,15.6,13.5,14.5,14.1,16.0,14.4,15.5,13.8,13.7,14.1,15.3,13.8,16.7,15.3,16.4,16.4,24.3,15.9,15.4,16.3,13.4,15.6,14.9,14.2,18.4,13.6,16.8,14.1,14.0,14.4,19.5,13.9,16.0,15.8,13.9,15.0,14.5,19.4,15.2,15.7,13.9,15.8,14.3,15.5,15.1,12.7,16.0,14.7,14.7,13.7,14.8,14.9,15.0,15.5,14.3,15.2,14.1,15.3,14.5,14.9,15.2,14.5,14.7,15.5,15.3,12.6,15.7,11.8,14.8,14.2,15.1,13.5,15.2,14.9,14.8,14.8,14.5,15.5,16.9,13.6,15.4,16.4,14.9,15.0,15.3,13.8,13.9,14.1,15.4,12.5,12.5,16.2,15.9,13.7,14.6,16.5,16.6,15.1,14.4,14.6,14.9,13.6,14.9,14.4,14.5,16.9,15.2,16.2,16.5,17.5,14.9,17.2,15.2,14.2,15.5,19.3,15.2,15.0,16.5,15.6,15.9,14.6,13.4,14.6,17.1,15.4,14.7,16.1,17.8,14.9,15.0,15.5,13.2,16.7,15.1,17.7,17.7,16.6,16.8,16.0,15.9,15.3,14.8,13.1,14.1,16.0,15.2,14.1,14.0,13.8,15.2,15.1,15.8,14.2,15.3,17.1,14.2,17.2,16.2,14.7,13.2,14.7,14.1,17.0,14.5,13.9,14.7,17.2,15.3,13.0,14.9,13.6,15.2,14.5,13.8,19.2,13.8,15.2,14.6,13.4,16.2,16.0,15.7,15.5,13.5,14.5,16.3,16.6,14.8,14.6,14.8,15.4,13.3,15.3,14.3,16.4,15.1,14.2,13.2,14.3,16.4,13.8,16.6,14.5,13.3,14.9,14.5,14.5,13.0,14.4,11.7,14.2,14.1,15.3,14.6,16.7,15.3,13.7,15.6,14.7,15.8,15.8,18.7,16.4,14.2,14.2,14.7,14.0,15.7,15.5,16.2,14.5,15.2,13.6,14.4,15.0,14.2,17.2,15.3,15.3,13.9,15.8,13.5,16.3,12.6,13.6,15.5,16.9,17.4,15.0,13.0,14.1,15.2,14.9,16.4,15.8,17.0,14.5,13.9,16.8,15.3,15.9,14.8,15.0,14.0,14.3,16.8,15.8,13.2,14.3,15.1,15.4,15.5,15.2,16.4,14.9,12.9,16.9,15.9,16.7,14.4,14.5,14.1,17.3,16.0,14.0,14.1,13.6,19.3,15.6,13.3,15.2,14.2,15.8,13.6,15.2,13.4,15.3,14.8,12.1,13.6,16.1,15.0,20.0,15.9,14.4,15.2,13.8,14.6,16.6,13.7,16.8,13.8,15.0,14.7,14.3,17.5,14.6,15.9,12.8,14.6,16.2,15.7,14.7,14.4,16.0,16.5,13.7,36.8,16.0,15.4,15.5,15.4,14.5,15.8,15.6,15.3,13.9,13.4,23.1,11.7,15.0,14.5,18.0,16.0,15.4,15.1,15.1,16.0,14.2,17.3,14.9,14.4,14.0,15.0,14.0,15.9,14.2,19.4,13.1,14.4,13.9,14.7,15.4,15.4,15.3,15.4,14.2,14.7,16.6,15.6,12.9,11.3,14.4,15.3,14.4,14.3,15.2,13.6,15.2,15.3,15.2,11.4,15.4,15.3,15.4,15.7,13.7,14.7,14.4,14.4,16.8,14.2,15.6,14.0,12.9,15.4,14.3,14.0,14.3,16.1,14.1,14.2,16.0,13.1,20.8,14.3,14.6,14.7,16.6,14.7,14.5,15.6,14.4,14.3,15.3,14.4,13.6,14.9,13.9,15.7,15.2,15.0,15.3,14.7,14.1,14.4,16.0,14.5,13.6,14.8,13.9,15.7,12.9,15.3,15.6,15.5,14.5,15.0,15.8,16.1,15.5,15.4,16.1,15.0,16.4,14.6,13.9,16.3,14.7,13.0,13.7,13.4,21.2,14.4,14.3,14.7,13.1,14.3,15.8,14.9,15.3,16.0,11.9,16.9,15.1,15.2,16.1,14.0,14.5,13.2,14.1,14.6,17.1,14.0,14.6,13.9,14.6,14.3,14.2,13.1,14.9,16.2,16.9,14.5,14.5,15.4,14.9,15.0,14.7,15.4,15.2,17.0,15.0,13.5,13.9,14.3,15.5,14.9,13.6,17.3,13.5,17.1,13.8,13.3,14.4,17.1,12.8,18.2,14.6,16.4,14.8,16.3,14.9,14.1,14.2,14.3,16.2,14.6,15.6,16.3,14.4,12.8,15.1,14.2,14.9,14.8,15.2,15.6,17.4,18.3,14.3,15.7,15.2,14.5,14.7,15.1,13.4,15.9,16.2,16.0,14.5,12.9,14.1,14.9,15.1,15.8,13.3,14.4,14.0,16.4,13.8,15.0,15.2,15.5,14.3,14.7,15.3,15.6,14.2,13.4,15.5,14.1,14.7,14.0,14.1,15.9,14.8,14.8,14.3,15.4,15.3,16.7,15.7,14.6,13.9,15.2,14.6,15.2,13.8,14.8,15.2,14.9,15.1,15.0,16.5,13.4,14.7,14.8,14.7,14.6,13.5,13.8,13.4,14.4,16.0,15.6,14.8,14.3,15.0,14.0,13.7,14.7,14.9,14.5,14.3,15.0,14.9,15.6,15.7,16.0,15.0,12.9,14.8,15.4,15.1,15.0,13.9,15.1,15.4,10.9,14.4,15.4,16.2,17.0,14.3,19.3,18.2,13.7,15.6,15.5,18.9,14.7,15.2,15.8,14.7,13.7,14.7,14.8,15.2,15.2,14.8,15.3,12.9,14.9,14.8,14.2,14.4,14.8,14.7,14.6,14.0,15.0,14.4,12.1,15.2,13.6,16.5,13.4,14.7,13.5,16.4,16.0,14.2,14.2,13.7,13.7,15.6,15.5,14.8,14.5,14.7,14.8,17.6,17.1,14.3,14.5,15.3,14.6,15.1,15.8,16.9,13.9,13.6,15.2,15.4,16.2,14.3,15.0,13.8,13.2,14.1,15.5,15.3,11.3,13.5,13.4,15.5,15.7,15.4,14.3,16.3,15.0,16.7,14.4,14.1,13.7,18.2,12.4,14.6,14.6,13.1,13.8,13.2,13.3,16.3,16.6,14.0,14.5,13.6,14.8,14.2,13.2,12.9,13.4,12.7,13.4,14.4,15.6,12.9,14.1,15.4,15.6,12.7,12.9,14.8,14.6,14.2,14.3,18.7,13.9,14.2,15.9,14.7,16.1,16.3,14.2,17.3,15.8,14.2,14.4,15.5,14.3,13.6,14.9,16.2,15.6,14.9,13.9,18.2,15.3,13.4,15.2,16.5,14.9,16.1,16.8,13.7,14.3,13.9,14.8,14.2,14.2,14.4,13.6,18.6,14.3,16.1,16.5,14.9,13.8,15.6,17.0,14.5,14.8,14.5,14.5,14.3,13.2,16.0,14.5,14.5,13.5,16.1,13.9,16.8,15.1,15.4,16.5,16.0,13.3,15.4,14.8,14.6,13.8,13.6,14.1,15.5,15.5,14.6,14.9,12.9,14.2,15.1,12.4,18.6] + }, + { + "position": 83, + "values": [50.9,49.0,52.0,53.1,57.1,48.0,51.4,50.5,53.0,56.8,49.9,48.2,47.7,54.3,50.8,48.6,46.4,51.5,49.6,51.7,48.2,52.9,53.4,51.2,47.8,53.0,51.3,52.0,52.7,50.3,48.4,51.8,47.7,57.5,52.1,48.0,49.5,57.7,53.3,52.0,47.7,47.0,49.6,47.7,51.2,47.4,49.5,51.5,55.0,46.5,50.3,60.1,51.3,57.5,52.7,56.8,51.7,51.1,56.3,55.4,52.1,51.0,48.4,50.7,52.6,51.4,51.0,56.5,51.7,49.1,53.2,49.9,50.9,54.3,52.7,47.7,53.5,50.8,52.0,54.4,49.6,49.5,49.8,50.8,50.9,51.0,55.1,52.7,51.1,51.6,54.2,50.3,50.9,60.1,54.9,50.1,52.0,49.4,49.1,48.9,50.6,48.6,50.5,49.2,50.5,48.1,56.5,50.5,55.4,50.0,50.4,48.3,50.5,52.6,48.5,52.3,47.9,48.9,58.4,50.3,50.0,51.9,48.9,48.6,51.8,49.9,54.2,55.2,49.9,48.2,50.7,51.3,51.2,53.1,55.9,54.2,49.8,49.3,51.6,50.5,51.2,47.4,50.7,53.1,49.2,49.5,54.8,51.3,52.1,53.0,48.5,49.8,51.2,54.8,46.8,49.4,51.2,53.8,50.0,52.7,51.5,53.4,49.5,51.0,53.5,48.1,57.2,50.4,49.5,48.1,50.3,50.2,58.5,51.0,48.6,52.9,52.8,50.0,50.6,55.9,54.1,57.1,51.5,121.4,55.3,54.2,51.1,48.0,55.4,50.8,51.8,53.3,50.4,54.5,52.8,51.3,51.9,48.6,60.7,48.8,53.2,48.5,52.8,55.8,62.8,50.2,49.5,55.9,49.8,51.7,49.7,52.5,47.9,57.1,54.8,51.7,48.2,52.9,51.0,50.8,52.4,52.8,52.7,50.1,47.8,48.7,49.1,50.5,50.3,50.8,51.7,50.2,51.4,55.0,48.8,51.5,50.3,51.2,49.9,49.6,56.2,52.6,50.4,51.3,49.9,54.2,50.4,51.3,55.5,53.9,53.9,52.0,49.0,48.3,52.3,51.9,51.5,47.1,55.3,49.2,49.7,51.9,50.6,55.0,52.6,50.3,49.8,48.6,52.4,49.3,48.6,50.9,52.4,49.3,56.7,53.5,53.9,49.7,56.4,53.1,49.3,49.8,56.0,49.7,55.9,50.6,52.5,49.5,49.3,48.2,48.1,51.9,51.8,50.8,52.6,56.3,49.9,51.2,51.2,50.0,56.3,49.6,55.5,55.2,52.4,56.8,53.3,50.8,57.4,50.0,48.7,49.2,55.9,55.0,52.9,49.3,49.0,53.7,51.1,53.5,49.1,45.2,55.4,50.8,57.8,50.0,51.4,49.1,54.3,48.4,53.0,51.1,50.2,49.7,57.2,52.7,48.3,51.6,48.7,52.6,49.3,49.0,58.0,48.6,51.2,53.0,49.4,56.3,58.1,52.1,49.4,48.2,52.1,53.2,59.9,48.9,52.4,50.4,50.6,49.4,47.2,49.5,52.0,54.4,52.2,49.0,49.0,54.7,50.2,54.7,48.6,50.3,49.2,50.6,50.1,47.4,49.9,47.6,50.7,50.7,48.6,51.0,56.5,54.2,50.0,48.1,51.3,52.4,54.9,52.0,57.5,51.1,51.0,50.2,52.5,52.4,54.4,49.2,53.3,50.6,49.2,44.6,49.4,52.2,56.5,48.9,53.3,49.4,56.5,50.6,48.6,47.1,51.9,52.8,56.9,59.2,47.8,50.9,50.9,48.8,53.1,51.2,54.4,56.4,51.9,57.9,49.1,50.9,51.1,50.2,56.0,48.5,57.2,50.5,50.2,55.6,48.4,49.5,53.5,54.1,51.9,53.6,51.5,61.2,49.9,54.9,49.4,58.3,52.3,49.7,48.1,49.1,49.0,53.3,69.8,51.6,51.2,53.1,51.6,48.8,53.3,48.2,57.3,49.9,55.4,54.5,57.6,53.7,51.8,50.9,60.1,52.5,50.7,51.7,51.4,50.0,56.0,58.0,48.6,53.5,54.0,49.5,49.5,50.0,51.5,47.7,58.3,52.8,49.1,51.8,52.8,51.2,56.9,54.1,50.8,54.3,124.8,54.0,51.9,57.4,50.8,54.9,52.0,51.5,51.1,16.1,47.7,52.2,51.3,50.6,53.2,56.3,49.0,53.9,57.1,51.5,53.8,48.0,52.8,51.7,51.1,49.2,50.9,48.9,52.6,59.7,49.1,50.6,48.1,50.4,53.9,51.3,50.0,53.2,53.7,55.8,47.8,53.5,48.9,50.7,48.3,50.3,49.7,51.9,50.8,50.3,53.2,51.0,50.4,52.9,52.2,54.1,50.6,49.7,50.3,47.4,51.0,53.4,54.1,49.9,55.9,48.4,47.2,51.7,54.6,51.9,49.8,51.8,48.2,50.5,46.9,51.0,51.9,51.5,53.2,50.1,52.8,53.3,51.7,50.4,51.8,51.4,52.4,52.7,56.0,53.1,47.6,49.3,50.1,50.1,51.5,53.6,48.5,52.2,54.6,53.0,49.6,52.8,51.7,50.7,54.4,48.6,50.8,51.6,50.5,50.4,50.7,49.0,51.8,49.4,54.2,49.1,55.2,51.5,49.5,51.5,53.3,47.9,47.6,48.3,47.5,73.5,50.5,49.4,48.7,51.9,51.7,51.7,50.7,49.3,52.5,49.2,51.4,49.7,58.9,49.2,50.9,48.0,50.4,54.5,49.4,47.9,50.4,50.4,49.6,51.3,49.0,53.3,56.0,49.4,57.1,49.9,51.0,54.7,50.2,51.0,53.2,46.6,49.8,51.8,55.9,53.5,49.5,51.1,51.9,53.0,47.8,55.4,47.5,49.2,48.4,57.4,46.6,50.6,56.6,55.7,51.1,53.7,50.7,56.2,49.5,51.1,47.7,50.6,55.9,50.6,49.8,50.9,49.9,46.9,50.1,50.4,47.2,49.6,51.3,55.2,54.9,55.6,52.0,50.7,51.7,49.9,51.7,52.5,51.2,51.5,56.1,50.8,50.3,52.6,48.1,50.1,51.2,52.1,52.1,51.2,49.3,53.5,45.5,49.9,56.3,52.4,50.3,52.1,56.0,51.3,48.9,48.9,55.9,48.9,48.3,49.7,53.0,50.7,50.5,50.0,48.9,50.8,52.6,52.1,51.2,51.7,49.7,51.2,50.0,50.1,49.1,48.2,52.1,50.4,52.4,50.6,57.4,50.9,50.3,49.2,50.4,51.7,49.6,47.4,51.6,54.8,50.8,51.2,48.1,50.4,51.2,48.8,47.9,56.5,49.8,51.5,51.0,51.1,49.3,53.3,50.6,51.7,57.5,49.7,52.3,50.1,53.6,50.4,48.5,50.8,52.5,46.8,52.4,51.2,58.6,57.8,51.6,53.6,48.0,51.9,49.4,58.2,54.2,49.6,52.7,50.6,47.3,50.4,51.0,49.7,54.2,46.6,48.7,56.1,51.0,53.4,50.0,50.4,54.6,50.2,48.5,48.6,54.4,49.8,48.3,49.5,56.3,49.3,56.8,49.5,49.6,49.2,50.6,53.9,52.5,50.3,50.2,49.8,56.1,57.6,49.9,53.2,49.5,51.8,48.8,56.3,52.1,51.0,48.8,51.3,50.5,59.1,51.7,49.1,50.5,52.4,52.7,50.6,52.1,50.9,50.0,49.3,52.4,48.0,54.5,50.7,48.3,54.0,54.9,53.6,56.1,51.7,52.4,53.1,51.0,49.5,55.3,53.5,49.4,47.6,49.9,51.7,49.2,49.5,48.5,48.2,54.8,50.2,49.6,50.3,49.9,50.3,51.4,50.2,48.0,50.5,49.8,47.2,52.1,48.8,50.4,47.6,54.7,48.2,47.8,47.9,51.4,49.8,51.3,48.7,54.2,54.3,48.9,52.9,51.8,49.1,57.6,49.8,57.4,50.5,50.6,50.7,52.4,51.6,50.7,48.4,50.8,56.3,53.1,49.2,54.9,50.2,49.4,51.9,54.6,51.1,53.9,57.3,49.5,50.2,48.5,52.0,59.1,49.1,49.9,52.1,55.6,56.8,49.6,50.6,50.0,50.9,51.2,52.2,50.4,49.3,48.5,52.2,51.2,48.0,52.6,55.5,51.7,50.3,51.8,55.2,53.5,53.2,51.5,50.2,53.9,48.6,53.9,52.6,51.2,53.5,47.8,46.8,50.3,50.1,49.9,51.4,48.7,46.2,56.3,49.3,54.1] + }, + { + "position": 84, + "values": [26.3,26.1,29.6,30.7,25.8,26.2,26.2,25.3,26.8,28.2,24.9,24.3,24.9,25.1,26.8,22.4,25.7,25.8,26.2,26.1,26.0,25.4,27.9,25.7,25.4,27.4,27.8,25.6,26.7,24.9,25.0,27.2,24.3,29.4,27.5,23.3,24.6,30.7,28.4,25.5,26.5,24.2,24.8,25.3,25.8,26.8,25.4,25.9,27.9,21.1,24.0,26.8,25.1,29.7,26.6,30.1,26.8,25.8,28.1,28.1,29.9,24.8,24.8,24.2,26.6,26.0,24.7,28.5,23.8,28.2,29.7,23.9,24.5,27.9,32.5,25.8,28.0,25.8,26.8,27.6,25.5,26.3,24.8,25.5,29.6,26.3,26.8,26.7,25.1,27.7,26.9,24.5,24.0,32.0,27.9,26.0,25.7,24.3,23.9,22.0,25.7,25.5,25.7,25.7,24.6,23.7,26.4,27.2,27.1,25.7,25.8,26.9,26.0,25.4,26.1,23.5,29.2,24.1,30.8,26.8,25.9,25.5,22.9,25.4,29.0,25.8,27.5,27.2,25.5,25.1,24.9,25.2,26.1,26.2,27.1,27.0,25.2,25.3,26.1,27.4,25.5,24.9,25.5,28.6,23.5,25.3,27.2,27.1,25.7,28.3,26.0,25.1,24.2,27.3,23.3,25.4,25.0,25.6,24.7,27.1,27.0,25.1,23.9,25.6,27.5,25.0,28.3,25.8,26.1,25.3,24.8,28.9,23.0,26.2,24.7,26.4,26.9,27.4,25.5,28.7,28.2,28.3,28.2,26.4,33.8,26.2,28.9,21.9,26.9,25.4,26.7,28.9,27.8,28.5,25.6,26.4,27.1,41.5,23.4,25.2,28.8,25.9,29.7,27.5,35.5,21.7,24.6,23.5,30.6,27.4,25.9,26.4,23.9,29.0,27.3,26.4,26.0,25.6,28.2,25.7,26.0,27.6,25.8,25.4,25.6,25.6,26.2,26.4,25.5,27.2,25.5,25.4,26.0,28.8,23.6,25.3,25.8,25.5,23.5,24.9,27.6,23.8,25.7,25.3,25.7,28.5,25.9,27.6,28.7,26.6,27.4,25.3,26.7,24.5,26.3,28.5,24.2,24.2,28.3,25.9,25.8,26.2,25.1,28.7,27.0,24.1,25.8,26.4,26.1,26.3,26.4,27.2,26.1,27.3,29.8,25.5,30.1,25.3,31.3,27.6,26.4,25.3,27.0,25.8,27.8,25.2,26.3,25.1,25.0,24.7,27.8,23.7,29.6,25.0,26.4,28.7,26.1,25.7,25.0,26.7,26.0,28.1,24.9,25.9,27.8,30.3,25.9,29.6,27.1,25.6,25.1,25.6,26.3,27.5,28.1,26.1,24.4,26.1,26.0,28.1,25.5,26.0,26.3,28.1,30.1,25.2,29.7,23.6,28.7,26.2,24.5,27.0,26.1,25.5,27.9,27.0,23.7,27.7,25.2,27.2,26.5,25.3,28.4,25.6,26.5,28.4,23.7,26.4,37.2,26.1,25.0,26.3,27.4,24.2,29.3,25.1,29.6,29.7,25.6,26.0,24.9,25.4,26.2,27.3,26.7,24.0,27.6,24.7,28.5,31.1,24.3,24.5,30.4,25.7,25.8,26.1,25.0,21.7,25.0,25.2,24.2,26.0,27.1,32.8,25.6,25.3,25.8,25.5,29.7,25.8,28.9,24.8,24.9,25.5,26.6,26.3,30.1,29.8,25.1,25.5,26.0,26.2,23.4,25.8,26.2,27.1,32.8,25.8,28.3,28.5,27.4,24.9,25.7,27.8,32.8,29.4,26.1,23.3,24.7,25.4,27.8,28.0,26.7,27.0,26.1,24.8,27.7,27.8,25.7,25.5,30.5,25.7,28.7,24.9,26.9,25.8,25.6,24.0,27.7,28.4,24.2,27.2,24.8,25.1,25.8,27.3,26.2,27.2,24.9,24.5,24.8,24.5,28.0,27.4,26.7,70.0,27.6,25.1,25.5,26.5,27.0,25.8,27.0,27.8,24.8,28.4,25.3,28.2,30.4,28.9,26.6,29.5,25.6,29.2,26.2,24.3,27.9,23.5,26.2,25.7,30.7,25.6,25.5,25.8,26.7,29.3,27.4,25.7,27.9,25.8,27.5,25.7,28.5,28.0,24.1,71.1,27.9,25.8,28.5,31.1,26.6,27.9,25.6,25.4,24.8,25.6,51.9,22.0,25.5,23.7,27.4,26.8,25.9,27.2,29.0,25.4,26.1,26.2,25.8,27.5,24.2,25.6,31.0,26.5,26.1,27.9,24.3,26.3,25.4,25.6,27.8,27.8,25.4,29.0,31.3,25.3,28.2,28.6,25.3,22.9,26.6,26.6,25.7,27.3,25.7,25.2,25.3,25.7,25.8,25.9,22.9,26.5,25.3,26.2,24.5,25.2,23.9,27.3,27.7,25.5,25.6,26.7,26.7,28.2,26.4,26.8,24.2,30.1,25.9,26.0,22.4,27.4,25.1,27.1,26.5,26.7,25.9,28.3,27.1,25.2,25.1,25.4,27.0,27.8,25.0,28.5,25.5,25.2,25.4,26.8,27.5,26.1,25.1,25.2,26.4,24.5,23.8,26.8,25.1,25.7,24.4,27.2,25.6,28.3,26.7,25.5,25.0,26.3,25.4,24.5,25.2,26.9,29.6,25.8,25.0,25.9,26.3,25.9,25.0,23.5,24.0,39.2,25.5,25.6,25.1,26.9,26.0,25.4,26.5,22.1,24.9,24.9,25.4,27.4,28.8,24.6,24.8,21.8,25.2,25.6,25.3,25.0,25.1,26.3,26.0,27.4,25.4,25.5,26.6,27.6,29.9,24.6,25.5,27.3,25.9,25.7,24.3,28.1,25.6,26.6,28.5,25.7,27.1,25.1,25.8,27.6,23.2,28.8,24.1,24.4,24.8,26.3,23.8,28.9,26.9,27.4,24.8,28.4,25.8,28.4,24.8,26.1,24.3,26.2,27.4,25.6,24.7,26.2,25.2,24.8,25.3,24.5,26.3,25.4,25.9,28.3,27.5,28.0,26.9,26.0,26.6,24.7,25.8,24.3,27.4,24.9,28.0,24.7,24.2,25.7,25.2,26.1,25.3,29.8,27.5,24.8,26.1,27.2,23.9,25.2,25.6,29.0,24.4,30.2,25.8,28.7,26.0,25.7,31.7,26.4,26.3,25.3,27.3,28.2,24.9,25.6,25.7,26.0,27.9,26.3,25.9,26.0,27.1,25.7,23.7,26.1,26.1,25.6,26.1,26.9,27.1,29.7,25.8,27.4,27.6,25.7,25.8,27.2,24.4,25.7,26.9,26.3,25.6,28.3,24.9,24.9,25.5,26.0,24.0,26.5,26.4,26.5,23.9,24.6,25.7,26.3,24.8,29.6,28.1,26.0,25.6,25.3,28.4,24.6,25.1,25.4,27.2,21.2,25.9,25.9,28.5,29.4,27.5,26.6,29.8,25.9,25.9,30.0,29.5,25.5,25.5,27.0,25.5,25.6,25.8,25.1,28.3,23.4,28.3,25.6,25.4,26.7,25.8,25.4,27.0,26.1,24.2,26.0,28.3,25.2,25.5,24.3,30.2,25.7,28.5,29.0,27.0,27.1,25.2,26.3,25.9,25.9,26.1,26.0,31.0,28.5,24.5,25.3,25.0,26.0,27.0,28.1,24.7,25.6,25.1,24.7,24.9,26.2,25.7,26.6,25.9,31.6,26.7,25.7,27.7,25.9,23.5,26.3,22.8,28.4,27.6,22.9,24.6,29.0,28.2,27.5,23.8,25.5,29.3,27.4,28.0,25.4,27.8,23.5,27.5,24.6,25.1,27.1,26.0,26.1,26.0,25.9,26.6,25.9,25.1,25.5,26.5,25.6,26.0,25.7,25.3,25.1,24.7,25.9,24.9,26.4,27.3,24.8,27.4,24.1,26.3,25.8,26.5,25.4,25.0,25.3,29.9,26.7,26.0,27.2,26.9,24.9,29.4,24.9,26.2,27.2,27.0,26.3,25.1,26.7,25.7,24.8,25.4,26.7,29.9,25.6,28.9,25.5,22.6,26.4,28.5,27.7,25.3,30.1,26.0,25.6,24.4,27.4,30.1,25.3,24.8,25.2,28.2,25.0,28.5,25.9,27.0,24.3,26.2,27.6,25.0,25.4,25.8,26.1,26.7,26.3,27.0,28.1,27.1,25.5,30.1,27.9,29.3,26.2,25.8,26.5,30.2,24.4,29.7,26.4,24.7,27.5,25.0,23.1,25.2,26.9,24.8,28.2,24.5,24.3,22.4,30.2,28.9] + }, + { + "position": 85, + "values": [154.0,155.2,93.5,153.0,146.6,158.9,150.6,155.1,154.8,151.9,153.3,142.4,140.8,152.5,155.4,140.9,158.3,155.7,154.6,121.4,160.1,145.8,145.4,152.7,184.7,106.7,149.9,159.5,154.3,149.1,156.5,156.4,137.5,155.3,152.6,157.0,147.0,151.4,155.8,153.7,157.1,152.9,152.5,184.9,152.2,159.8,158.4,152.0,150.2,142.3,147.0,150.0,157.5,154.9,163.7,159.1,145.9,155.0,154.6,150.7,155.7,145.0,155.5,150.2,155.8,151.8,148.6,151.2,152.1,125.0,152.5,144.6,148.1,159.4,97.3,155.5,154.8,136.0,152.1,155.6,155.0,153.1,152.7,94.7,154.8,152.1,148.0,152.0,154.2,158.3,157.2,152.0,151.3,143.7,151.4,154.5,144.6,155.4,154.7,146.8,155.2,155.2,150.8,147.1,156.7,153.9,145.6,181.8,136.7,154.4,156.5,157.6,154.4,155.1,152.0,93.6,144.2,149.5,152.4,144.4,152.9,155.1,148.1,158.7,108.8,141.3,155.1,150.0,158.0,157.8,148.5,150.5,159.3,138.7,146.2,156.8,149.9,152.7,159.1,156.8,162.6,189.2,152.5,152.2,101.8,154.5,150.5,152.5,154.1,91.4,157.8,146.5,148.4,148.0,156.2,154.3,150.4,144.7,150.6,159.2,153.6,150.9,155.4,154.8,151.8,150.5,159.3,154.2,155.9,157.5,152.3,152.7,150.5,153.1,150.6,154.6,153.7,154.7,154.3,152.6,158.0,147.5,156.5,117.1,158.3,158.5,108.2,137.6,154.6,148.0,107.6,150.8,164.8,155.5,153.8,144.8,158.4,167.1,152.6,148.0,90.7,152.9,142.4,151.2,134.0,148.2,156.7,153.1,143.4,151.6,156.1,146.8,149.2,154.9,156.6,158.3,156.4,155.7,152.2,155.8,152.3,154.4,154.3,152.4,154.5,154.7,159.1,148.9,153.9,150.8,155.0,138.2,155.1,148.3,163.5,154.6,157.6,150.7,144.3,154.5,160.9,148.5,150.7,141.9,153.7,150.7,160.5,157.6,157.6,159.9,145.1,154.8,158.4,154.0,160.5,138.9,139.3,153.3,152.0,151.1,159.7,179.5,156.8,147.1,152.8,151.5,157.2,153.2,153.5,156.0,151.6,160.0,152.3,157.2,154.3,156.4,149.4,156.0,172.8,135.9,157.0,151.3,119.4,143.1,152.1,175.7,145.0,149.6,150.9,149.3,151.1,157.2,112.0,155.0,149.8,152.9,154.7,153.5,156.6,150.6,141.9,153.8,162.2,153.3,147.6,145.3,154.7,154.0,139.1,152.0,152.7,157.5,150.0,136.9,152.7,156.0,157.0,150.4,152.5,152.9,157.8,152.3,161.0,152.3,149.2,157.3,94.4,151.7,166.4,159.9,155.6,148.1,161.6,154.1,152.9,158.1,155.9,147.7,157.5,150.0,154.3,156.8,146.9,158.2,160.2,139.9,154.4,143.6,151.9,152.6,153.6,161.5,152.2,147.5,161.2,152.7,93.4,95.1,154.8,148.6,147.0,179.3,160.6,153.3,141.6,144.1,150.2,157.7,159.3,160.8,148.1,161.8,151.3,96.5,154.4,159.1,156.9,149.1,153.4,153.1,151.9,151.5,153.3,152.6,156.9,153.1,156.4,152.7,135.6,147.5,157.8,148.0,145.9,154.2,150.8,161.4,95.0,151.1,95.7,141.7,156.7,145.6,159.9,158.8,152.6,156.8,158.4,160.5,150.4,163.8,151.2,151.1,157.9,159.5,157.4,156.5,146.0,147.5,152.7,154.3,152.9,155.6,153.5,148.9,155.9,137.7,145.5,107.4,154.1,158.2,142.4,156.2,152.2,154.2,154.2,138.9,156.4,146.6,135.5,157.6,147.6,147.6,155.1,147.7,153.8,150.0,145.7,155.6,153.2,158.6,157.9,146.4,164.1,132.8,90.1,156.4,153.2,151.8,154.3,176.4,152.9,153.5,138.3,140.4,154.3,154.9,138.9,97.7,152.9,158.3,105.8,111.0,160.3,146.0,150.6,150.6,158.7,147.8,151.3,147.5,145.2,153.5,159.1,158.8,160.7,151.2,152.1,154.4,152.8,152.7,155.2,154.2,155.0,155.4,150.1,84.1,158.6,155.8,150.8,132.8,152.2,153.0,158.8,150.0,154.2,157.8,25.2,143.4,146.2,151.8,164.7,155.2,156.8,155.7,154.1,147.8,136.0,160.8,148.8,160.3,149.7,159.0,99.1,151.5,156.7,152.8,156.5,159.9,157.7,156.1,155.9,88.7,153.7,152.1,153.8,150.5,147.8,156.3,154.2,147.5,159.7,144.1,157.6,154.1,155.7,151.4,150.0,151.4,156.3,157.2,128.9,149.6,154.3,154.5,151.2,153.7,161.0,154.7,151.4,154.6,154.2,143.5,160.5,151.5,157.5,150.9,153.0,94.5,159.0,155.3,145.1,154.9,151.1,153.7,155.7,158.5,153.8,153.1,152.2,152.2,150.0,153.5,107.1,158.1,155.2,135.1,161.3,160.4,153.9,156.1,155.9,156.3,159.4,152.7,154.5,151.8,152.3,140.7,153.4,150.0,153.8,153.6,155.3,106.1,154.3,152.2,153.3,163.1,153.3,151.5,149.9,153.4,153.9,150.4,144.6,146.2,154.0,153.3,164.4,159.3,141.2,159.0,151.8,154.2,181.3,149.4,152.5,149.0,135.1,155.4,151.2,157.3,152.6,152.9,143.2,155.1,154.6,119.3,158.0,156.1,153.7,143.1,154.2,155.5,155.7,147.3,122.9,153.9,153.1,156.0,161.1,145.7,154.5,161.5,148.9,154.9,154.4,160.6,151.4,159.8,159.2,150.6,178.6,150.4,155.5,152.4,144.3,150.8,150.2,152.3,155.2,154.9,149.1,151.0,155.0,149.9,152.3,155.0,148.9,155.2,151.1,144.9,143.6,159.5,150.0,154.4,143.3,159.2,155.6,154.8,152.8,143.0,152.0,156.5,154.8,148.3,153.5,159.5,151.4,157.6,153.8,151.4,177.6,145.7,149.8,151.2,153.7,154.8,147.3,147.7,155.0,160.0,151.2,159.3,93.8,153.3,154.9,147.8,153.3,152.3,155.0,153.3,151.6,95.4,154.0,165.4,152.8,156.1,154.2,155.9,157.0,157.3,107.1,148.0,154.2,155.4,155.0,154.2,149.1,156.2,153.3,190.6,151.5,154.6,155.1,153.4,158.8,154.4,151.3,157.6,154.7,151.0,150.7,136.7,151.2,153.7,152.1,150.4,146.4,154.0,155.5,153.0,153.0,153.8,154.7,158.1,151.9,161.7,155.5,153.7,153.8,153.8,145.9,146.2,154.6,157.9,155.3,94.8,149.7,157.7,157.7,151.8,149.1,89.6,154.4,154.1,155.1,144.5,150.7,153.8,162.1,152.4,149.9,159.4,161.4,95.4,156.1,157.3,161.2,159.5,144.3,152.3,154.2,159.2,153.9,159.1,148.8,146.5,151.8,154.9,148.7,140.0,155.2,174.4,151.0,156.0,152.9,157.3,166.2,149.3,156.9,154.9,148.2,152.1,150.1,99.3,163.2,135.7,149.8,149.7,148.1,152.0,163.3,158.4,161.6,156.6,152.9,150.6,160.3,157.8,157.0,152.1,151.0,154.8,154.6,153.0,152.9,144.8,154.6,151.1,92.8,143.2,146.7,156.6,155.0,153.0,149.0,167.9,160.5,148.0,158.0,149.8,147.5,153.6,155.0,153.4,154.6,152.5,151.6,155.4,106.7,155.6,153.0,155.0,158.3,176.7,155.6,154.3,158.8,157.2,157.3,180.3,147.8,151.4,157.2,155.6,157.4,153.9,150.3,158.1,137.5,137.3,135.5,156.0,139.2,151.9,154.0,162.0,154.7,149.8,160.1,157.9,163.5,156.0,152.0,151.0,93.3,153.2,152.8,153.1,153.1,153.9,146.8,155.6,150.9,152.5,152.9,140.5,149.4,152.3,184.9,104.7,152.5,151.6,163.9,157.9,89.9,153.1,150.0,157.1,150.3,148.7,94.3,140.0,153.2,155.4,153.0,149.5,153.8,157.3,179.4,153.0,150.1,154.8,152.8,152.4,150.3,154.7,152.1,145.7,151.9,155.0,153.7,157.2,150.8,162.4,143.8,131.1,152.0,152.6,93.6,153.1,149.4,151.2,154.1,154.3,95.7,158.7,155.9,157.1,153.9,144.9,152.5,138.6,151.2,153.2,154.1,154.8,180.9,154.5,152.7,152.8,94.7] + }, + { + "position": 86, + "values": [56.4,54.3,55.8,65.7,43.9,53.1,52.4,49.9,52.1,46.5,54.7,60.6,51.2,56.4,53.0,56.7,56.2,54.0,55.5,44.8,54.5,48.3,49.7,50.6,42.3,52.7,53.3,53.5,50.6,56.2,54.1,55.0,58.4,54.7,50.3,54.9,60.8,45.8,48.3,60.4,54.2,56.2,53.3,37.0,58.8,49.2,53.1,55.8,47.6,59.5,52.2,55.4,55.0,50.2,32.7,49.6,52.0,52.5,54.5,46.8,50.5,52.5,52.6,59.4,54.6,54.7,57.4,53.2,56.1,55.7,49.0,53.6,53.8,52.9,62.6,54.8,50.9,55.5,55.4,50.4,53.1,56.3,53.0,62.0,45.5,54.0,50.2,57.2,56.0,54.3,56.6,54.8,53.0,46.3,49.9,53.3,55.1,55.8,52.2,48.4,59.0,54.7,55.2,53.5,55.7,52.6,57.0,34.5,51.9,52.2,54.6,57.4,52.5,55.2,55.3,54.2,60.4,55.8,47.4,49.8,53.7,54.0,55.4,55.8,58.6,60.3,54.0,55.9,55.7,52.2,55.9,53.6,57.2,51.4,52.3,56.6,53.4,54.7,54.4,56.6,57.1,39.3,56.3,54.7,45.4,54.9,57.3,49.5,52.5,57.8,53.2,49.7,53.2,45.1,52.4,53.9,54.1,50.5,54.9,56.3,56.6,55.7,53.2,56.1,48.2,53.3,46.2,56.6,54.3,54.1,54.6,55.3,55.7,54.9,51.2,52.7,50.5,55.6,58.0,55.7,54.1,52.9,20.4,48.1,51.9,52.8,57.9,57.1,54.9,50.5,58.7,36.6,55.5,50.5,55.0,49.9,49.3,56.2,51.2,56.2,59.1,53.5,50.2,59.3,53.2,56.7,55.5,46.8,48.5,56.1,52.7,49.4,55.9,53.5,46.7,60.5,55.7,54.8,51.2,57.9,56.5,49.4,53.2,57.6,54.4,55.3,52.0,49.2,52.1,57.3,58.2,52.6,48.4,46.0,54.1,52.2,56.7,55.3,51.8,57.7,53.8,57.7,54.4,47.2,56.7,54.1,56.6,48.4,53.1,45.9,57.8,59.0,54.8,55.6,56.0,51.4,50.3,54.4,51.8,58.2,55.8,42.5,57.5,54.1,54.8,58.1,52.9,52.8,57.6,52.9,54.8,53.9,48.2,54.0,46.6,50.7,54.3,57.8,41.0,41.6,54.0,56.4,40.9,47.6,52.1,45.3,56.0,55.3,59.2,48.3,47.0,58.4,55.5,53.2,55.6,56.0,51.3,54.1,57.1,61.5,51.5,53.3,47.4,58.2,56.5,51.8,51.6,55.2,43.1,55.4,55.7,50.9,57.2,49.3,57.3,55.8,56.4,49.3,53.2,54.0,55.6,55.0,56.4,53.5,44.8,56.4,59.0,58.2,44.1,59.7,59.3,56.7,54.1,53.9,53.9,55.4,53.7,57.7,53.0,46.7,55.2,53.4,46.5,52.7,54.2,45.7,53.1,53.7,48.5,56.0,57.0,53.7,50.0,61.2,49.2,57.8,57.1,63.2,51.6,54.0,56.1,38.8,60.5,55.1,50.5,57.3,54.3,52.8,56.6,33.7,55.6,54.8,59.0,57.6,51.8,53.3,54.3,56.3,54.4,54.8,57.3,54.1,54.4,44.0,53.8,52.3,56.2,58.7,53.1,50.0,47.0,54.7,55.3,54.3,60.0,56.3,58.0,56.3,53.5,53.6,54.8,53.5,58.0,58.7,52.8,53.5,44.0,57.2,52.7,34.5,52.9,53.2,57.3,50.5,52.7,51.4,53.5,53.2,57.0,58.3,55.5,45.6,52.0,56.8,55.4,55.2,60.1,53.7,47.6,53.9,46.7,55.3,55.6,56.9,54.7,58.1,59.0,55.7,50.0,46.4,52.7,52.1,52.5,47.7,54.3,50.4,56.3,56.8,55.7,56.6,53.0,52.2,60.6,43.0,18.5,53.7,55.3,56.4,56.9,41.1,54.5,52.9,55.0,52.7,57.8,53.0,61.7,56.6,56.6,46.4,50.4,54.2,58.7,48.0,57.4,49.9,51.2,53.3,56.7,52.7,55.6,55.3,52.0,55.1,44.6,55.4,54.6,52.0,55.8,54.8,54.1,54.6,47.7,49.2,52.1,23.9,55.0,53.8,55.1,45.0,49.4,54.2,58.6,51.8,52.9,57.0,149.1,38.8,52.7,55.9,50.4,53.1,51.4,53.9,56.0,53.1,54.7,55.2,50.5,55.8,55.8,57.6,61.3,55.7,49.5,53.8,51.8,58.8,57.6,55.3,57.8,54.1,55.3,47.6,44.7,57.2,57.6,55.2,55.3,52.2,55.2,52.8,54.3,48.9,57.1,59.4,54.4,56.3,57.0,59.3,48.9,50.4,56.3,57.0,55.8,58.4,58.2,53.3,55.4,50.3,49.8,55.1,55.5,51.6,53.1,48.7,52.4,61.5,56.2,56.1,56.6,59.0,48.6,58.8,53.0,56.2,53.5,53.6,48.7,54.7,53.9,51.3,53.9,55.4,50.3,48.4,55.1,58.8,55.2,55.2,51.0,52.7,55.6,54.8,46.5,58.6,57.4,52.3,56.7,51.4,46.1,54.2,56.3,58.4,51.9,54.4,54.3,56.6,58.6,52.6,58.7,52.9,50.7,50.7,55.2,53.4,54.5,50.9,55.7,53.3,58.4,55.7,53.7,53.8,35.7,49.3,49.7,52.4,59.4,54.3,52.4,55.8,51.3,46.6,55.9,56.4,51.7,50.1,54.0,55.6,56.6,53.3,55.8,56.6,54.1,57.2,44.9,58.7,55.8,51.8,46.8,58.9,55.9,48.8,56.0,53.9,57.6,53.9,52.6,57.9,56.8,36.9,45.4,54.5,52.7,54.4,55.7,54.2,53.3,54.1,56.5,49.3,55.1,58.7,47.0,54.2,52.4,51.3,50.6,54.5,54.6,53.7,55.3,53.0,51.7,56.4,56.5,60.7,56.8,55.5,54.8,50.6,53.3,52.1,49.7,54.9,51.1,55.4,53.3,54.9,46.2,57.1,47.8,52.4,55.4,59.6,51.0,53.2,56.0,54.7,54.0,56.5,53.2,48.7,55.6,51.9,60.6,53.7,47.3,54.0,46.3,52.0,55.2,57.0,44.4,53.3,51.9,55.0,45.0,57.9,58.2,55.9,54.8,55.3,53.9,57.1,56.3,52.2,52.8,59.9,56.9,41.2,56.8,54.6,56.1,55.9,56.9,58.0,54.8,59.1,58.0,55.2,53.0,53.0,52.1,52.6,54.6,48.4,53.9,52.5,50.1,54.6,47.1,56.2,53.9,51.8,53.3,51.9,56.4,53.6,52.6,53.1,54.9,51.7,53.1,53.2,55.2,61.8,48.0,56.1,52.9,55.2,58.7,54.5,54.0,53.4,55.3,56.8,57.4,55.1,52.9,49.2,47.7,52.8,54.6,61.2,56.1,44.1,32.8,58.1,48.2,55.3,55.5,56.3,57.1,59.9,53.8,58.0,49.1,54.3,54.0,49.1,32.8,59.1,53.1,52.8,54.9,56.5,35.9,56.9,55.8,61.0,44.6,53.6,56.8,54.2,49.9,33.9,52.7,48.4,58.7,51.1,47.6,54.0,50.6,53.3,55.2,47.2,57.8,52.5,46.9,56.0,48.1,53.7,55.9,55.2,54.0,55.4,55.2,49.4,58.3,55.9,49.8,56.5,48.9,51.9,55.6,37.4,55.2,31.9,53.5,55.2,49.9,53.0,46.5,54.1,45.8,58.7,58.1,53.3,55.3,56.5,53.5,50.4,52.7,33.5,53.8,54.0,48.7,52.4,56.9,45.8,52.3,56.5,48.4,57.4,54.5,51.5,53.9,48.4,52.1,51.8,49.5,52.5,49.3,59.2,56.6,55.9,55.9,57.1,54.4,51.5,54.4,56.9,48.8,54.1,61.4,47.2,51.9,55.3,54.5,54.1,51.6,52.6,57.8,53.2,57.0,51.8,53.9,49.4,50.9,37.0,51.3,46.8,50.6,54.7,59.9,56.7,57.1,54.1,56.7,58.3,52.8,52.4,54.0,56.1,54.7,48.9,50.3,53.2,35.1,45.7,58.8,53.5,50.4,55.3,53.6,53.7,54.9,47.7,51.3,54.7,50.7,53.1,54.6,56.7,48.7,55.4,48.9,51.1,62.1,57.3,42.6,52.6,56.4,55.2,53.8,57.9,41.1,52.8,52.8,55.0,62.0,55.5,53.5,53.6,57.6,53.7,55.1,39.0,53.9,46.6,58.0] + }, + { + "position": 87, + "values": [45.9,44.3,58.0,42.6,36.5,39.1,44.7,38.9,43.8,39.2,47.2,38.2,46.5,42.2,47.6,41.6,43.9,46.5,48.7,67.1,46.0,43.1,61.3,39.5,50.8,50.1,44.3,49.5,51.4,59.8,43.4,40.5,37.0,41.2,45.9,40.3,46.0,48.3,62.2,58.8,41.3,42.7,41.8,41.8,49.6,53.9,41.1,66.3,41.4,45.6,41.4,50.5,43.6,41.3,47.2,41.5,41.9,40.3,42.4,46.8,40.3,42.5,46.7,50.0,47.3,41.7,42.0,50.1,47.1,42.0,40.4,46.7,46.6,47.8,48.5,49.1,39.8,41.4,46.9,43.1,41.1,42.3,47.7,53.1,44.2,43.7,52.9,47.2,45.0,47.4,44.8,45.2,43.4,41.4,49.5,40.6,45.2,65.1,43.1,45.0,49.7,47.6,42.0,39.2,40.5,51.4,49.8,44.4,50.2,41.2,43.3,43.0,42.3,37.3,46.7,40.3,56.8,44.3,44.0,43.4,39.1,42.1,39.4,70.5,48.5,52.3,46.1,54.9,47.8,46.0,40.4,47.0,44.9,48.6,40.9,51.4,41.2,42.6,45.8,42.0,54.1,55.0,47.1,47.4,47.2,57.5,48.8,48.2,42.9,42.3,40.0,40.6,47.4,40.9,40.9,47.1,41.3,45.9,44.7,52.3,42.9,38.6,40.3,40.9,42.5,39.5,39.6,47.3,66.1,43.6,42.1,37.0,47.2,46.4,52.2,40.5,47.2,45.1,40.6,39.8,47.5,59.6,58.9,43.3,40.9,50.8,41.3,43.9,40.7,48.9,58.2,43.1,38.0,47.5,42.8,54.5,42.3,59.5,36.2,51.0,46.6,42.1,38.4,55.9,49.0,41.9,73.8,47.8,41.9,49.0,44.1,55.3,44.6,42.5,36.7,51.8,48.6,39.9,44.4,43.1,46.0,48.8,43.2,39.3,45.4,65.8,50.0,46.3,40.4,40.1,44.7,42.6,70.4,43.6,41.4,42.3,47.8,43.0,38.6,51.6,46.5,40.5,40.1,44.6,39.4,44.5,62.6,40.6,39.0,43.4,42.1,51.6,46.2,64.9,46.9,58.7,43.2,38.4,43.7,39.1,60.0,49.8,38.2,40.6,47.3,52.5,44.4,50.2,41.1,45.5,41.6,68.1,37.5,45.6,38.2,41.7,40.4,47.2,50.2,38.9,70.5,46.0,56.1,42.0,42.4,47.0,41.5,45.3,49.0,58.7,51.4,52.1,48.5,47.1,45.2,39.2,47.4,44.8,41.1,52.5,43.9,44.4,43.2,39.3,39.5,48.6,43.7,37.9,41.5,42.1,46.3,45.6,44.0,39.6,46.3,48.8,53.1,41.6,40.8,46.3,68.2,55.2,39.2,49.1,38.8,35.2,49.0,50.4,45.3,55.4,46.1,40.3,48.4,43.4,39.3,53.0,59.3,43.7,56.0,41.7,42.1,41.2,40.9,39.7,41.8,39.6,46.0,54.0,41.6,47.5,42.5,62.5,51.5,51.2,47.5,50.0,48.9,55.2,40.4,47.7,43.3,47.2,49.8,42.6,44.3,48.8,39.3,42.9,62.3,50.7,70.1,51.5,57.8,43.4,40.4,48.1,50.2,39.7,38.0,43.9,45.6,43.8,44.2,46.1,45.8,40.1,44.1,43.8,51.1,52.0,38.7,40.9,44.5,46.5,49.7,47.8,50.1,41.5,40.8,49.9,41.9,51.7,38.8,43.2,41.3,68.6,46.1,46.4,44.3,60.7,40.6,37.0,44.2,44.0,46.2,48.2,41.5,39.6,60.8,44.9,43.8,45.5,40.4,51.2,46.8,50.9,36.2,44.8,37.4,41.8,51.7,51.8,39.8,43.1,35.7,51.1,52.4,38.3,41.7,39.7,43.7,51.5,43.4,40.9,43.4,47.1,46.5,49.0,51.3,41.6,46.0,55.0,44.4,38.7,44.7,56.7,40.4,44.7,44.6,56.3,45.2,40.8,54.3,55.3,53.0,46.1,44.4,47.6,41.2,40.6,49.2,44.9,49.2,68.6,41.9,38.9,40.4,39.9,48.8,54.2,48.1,46.1,41.0,44.7,45.7,40.8,39.8,49.6,38.1,45.6,44.6,43.7,39.0,41.3,39.1,42.6,48.0,37.1,46.6,46.4,47.7,47.4,53.8,41.2,41.7,61.0,48.3,56.8,43.3,39.5,43.8,40.9,41.9,45.0,41.3,40.6,38.5,49.8,39.5,41.5,44.7,58.3,46.3,38.8,51.8,44.4,40.8,42.5,50.4,45.3,41.8,45.8,40.5,46.7,39.2,50.2,42.7,53.6,35.2,44.0,43.5,42.5,43.1,49.1,41.5,48.3,45.8,41.2,46.7,48.0,40.5,40.4,46.8,48.8,43.6,48.0,48.2,50.6,53.6,40.9,42.0,53.8,38.9,38.8,46.3,42.5,44.9,48.8,57.3,38.3,47.3,61.4,45.3,48.2,48.0,41.8,44.3,42.9,43.9,47.8,40.0,41.9,47.7,53.0,56.1,64.2,47.8,54.8,45.7,46.2,41.5,44.5,51.8,52.4,38.8,39.2,41.7,41.1,50.1,48.0,56.0,45.5,43.7,45.2,40.4,41.6,43.4,60.1,40.0,48.3,41.2,43.9,42.8,62.3,44.7,51.5,42.6,44.1,58.8,54.0,44.2,68.1,46.3,43.5,41.1,55.6,37.3,53.5,45.0,49.3,38.5,69.7,40.4,53.1,42.0,42.8,42.5,38.8,47.5,38.4,56.0,40.0,41.8,46.9,49.3,49.7,45.7,47.0,44.7,37.2,45.3,52.4,39.1,44.5,44.6,38.8,51.7,46.7,42.7,39.3,53.1,38.8,44.3,45.7,42.4,39.6,46.3,41.7,42.6,41.3,39.9,42.2,55.9,41.3,45.1,47.8,40.1,43.2,44.1,46.7,38.2,45.1,42.2,52.7,43.6,44.1,40.4,49.0,56.2,45.5,45.5,45.2,42.1,44.9,45.0,43.3,50.9,66.6,44.0,43.0,50.7,45.5,40.6,45.8,40.7,45.7,42.7,43.8,44.0,43.8,41.8,41.6,40.6,45.3,49.6,46.8,53.7,44.5,37.3,43.0,39.0,47.4,68.3,53.3,46.0,38.0,42.2,53.1,37.3,48.2,48.7,66.3,46.5,44.6,45.4,45.0,52.6,43.3,46.2,51.8,39.0,51.1,46.6,52.7,53.6,38.0,44.0,44.1,38.0,40.0,58.2,43.2,38.4,42.6,40.2,41.9,45.7,49.3,41.0,68.8,50.6,47.7,41.5,41.9,37.9,38.8,44.7,40.4,57.1,45.9,39.9,44.3,43.2,42.0,42.7,48.0,42.2,51.6,48.6,42.5,39.1,43.9,47.3,46.3,42.3,53.6,45.9,39.3,47.7,46.9,47.1,42.6,48.0,40.6,47.3,40.2,45.3,37.0,65.7,53.5,45.4,43.9,44.2,44.0,42.5,53.0,41.8,47.4,38.5,43.9,43.0,52.7,52.7,55.7,44.9,44.7,44.1,45.0,49.9,40.6,52.5,41.5,60.3,41.5,38.7,41.3,43.7,47.0,40.7,42.8,40.3,39.5,52.0,41.4,46.9,42.9,43.4,48.4,49.5,44.5,52.1,50.0,65.7,46.3,44.0,46.1,42.1,41.7,41.1,44.7,52.4,61.8,56.1,42.6,40.7,49.0,41.5,57.0,58.9,44.9,49.0,42.9,44.0,45.8,47.2,42.8,43.3,40.1,43.6,45.0,44.8,47.4,46.4,69.3,39.0,42.2,44.6,48.8,48.3,45.7,41.2,50.1,44.7,39.3,47.2,48.9,43.9,41.4,39.2,63.7,49.4,54.8,39.7,39.9,49.8,45.6,37.1,47.4,39.7,44.9,64.1,59.9,43.8,44.4,40.2,41.0,46.0,43.7,42.2,44.1,39.5,40.1,56.3,60.0,51.1,51.9,47.5,40.5,51.5,54.9,46.2,42.8,39.9,44.9,42.5,48.3,45.2,38.2,40.3,44.8,45.9,46.6,42.6,49.0,41.4,45.7,42.4,50.3,45.7,41.9,45.0,39.5,45.4,43.5,43.2,42.3,51.1,40.4,45.5,44.2,42.6,59.3,40.1,40.6,43.8,59.2,53.2,41.4,48.2,38.7,53.2,48.5,46.0,49.9,47.8,42.3,38.2,49.6,36.3,44.4,40.9,49.6,45.7,68.9,40.9,43.7,41.1,46.5,38.5,43.3,48.3,43.5,48.5] + }, + { + "position": 88, + "values": [18.8,18.0,19.0,18.6,17.8,18.0,18.4,17.2,19.6,18.8,18.0,17.2,17.7,18.1,18.7,18.5,18.5,17.6,18.0,19.1,19.1,19.5,18.7,19.2,17.3,18.0,19.1,18.3,18.2,19.0,17.8,18.4,18.0,18.6,17.6,18.2,18.6,20.8,19.1,19.1,17.4,18.6,17.7,18.2,18.1,18.2,18.3,18.5,18.7,19.2,18.1,19.0,18.6,18.2,17.8,17.6,19.6,17.6,18.7,17.4,20.6,18.6,18.3,18.0,19.2,18.0,18.3,18.3,17.8,18.8,21.5,17.5,17.9,18.4,20.6,18.8,18.0,18.3,18.2,18.3,17.6,17.5,18.8,18.9,17.8,18.4,17.5,18.3,19.7,18.2,18.8,17.3,17.7,20.4,18.5,17.6,18.2,18.6,17.9,17.4,18.9,18.9,17.7,17.9,18.8,16.8,18.6,20.4,18.5,17.9,18.3,18.2,18.1,18.6,18.0,18.5,19.0,19.0,18.1,17.6,18.0,17.5,17.2,18.6,19.3,21.5,19.2,19.1,17.8,18.2,17.9,18.0,19.3,18.9,18.6,19.9,18.3,18.5,16.8,19.3,18.1,18.9,18.0,19.3,16.8,18.7,19.3,17.9,18.0,18.3,17.3,16.2,20.5,17.2,18.1,18.2,18.0,17.6,17.0,19.1,18.4,18.9,18.0,18.2,17.7,18.1,17.9,18.5,18.4,18.8,17.9,18.4,18.6,18.6,18.0,18.5,18.7,17.9,18.9,19.3,18.9,19.4,18.5,18.6,37.0,18.2,17.7,18.4,17.8,20.4,18.7,19.2,18.7,19.2,18.0,17.5,18.4,18.3,18.1,18.0,18.3,17.3,17.6,20.3,18.7,19.0,17.8,18.1,19.1,17.9,20.3,17.8,17.8,19.2,19.2,18.7,19.1,17.8,18.4,18.3,18.4,17.5,18.2,17.6,18.4,19.1,18.6,18.2,17.8,18.7,18.0,18.9,18.0,18.9,17.7,18.1,17.5,17.6,18.4,19.0,17.4,18.5,17.6,18.5,19.0,18.6,18.3,18.5,18.9,17.9,18.6,18.9,19.0,18.3,18.0,18.2,17.5,19.3,18.5,19.1,19.7,18.6,19.0,18.1,18.4,18.5,18.3,18.0,18.2,18.7,16.7,18.4,18.6,18.3,18.0,19.1,17.7,20.0,18.0,19.1,18.0,14.2,18.8,18.4,17.8,17.3,18.6,17.7,18.0,18.5,17.9,19.6,17.9,19.3,18.7,17.7,17.7,19.0,19.4,19.0,17.4,16.6,19.2,17.8,17.9,17.8,18.3,18.5,18.1,18.2,18.0,18.3,17.8,19.5,18.4,17.5,17.7,17.9,18.6,19.1,17.7,19.3,18.3,18.5,18.3,18.5,18.8,18.5,19.0,19.4,18.1,18.8,17.0,19.0,19.3,19.2,18.8,17.5,18.0,16.3,17.7,17.9,17.8,20.0,17.8,16.3,19.2,19.4,18.6,18.1,18.9,18.4,18.9,18.2,17.9,18.6,18.8,17.9,18.1,18.7,17.7,19.0,18.3,18.1,18.2,18.7,19.1,18.8,17.8,18.8,17.3,19.3,18.8,18.4,18.0,18.2,18.3,17.9,17.9,18.0,20.0,18.9,18.9,18.1,18.2,18.9,18.4,18.9,19.0,18.5,18.1,18.1,17.7,18.7,19.3,18.2,18.2,17.3,17.5,18.1,18.0,18.3,17.9,19.0,17.7,18.9,18.7,17.9,18.9,19.2,18.3,18.9,19.0,21.5,18.4,16.9,18.1,17.7,17.9,19.3,19.4,19.2,19.1,18.3,18.8,19.3,18.2,17.3,17.9,21.1,18.7,19.0,18.4,18.3,19.5,18.5,17.3,18.3,18.4,19.3,17.9,18.1,19.3,18.1,18.6,20.0,18.3,17.2,17.7,19.6,18.0,20.8,17.9,22.0,18.9,18.9,17.9,18.1,20.2,19.1,18.1,20.1,17.8,20.5,18.6,18.1,18.2,19.1,17.3,18.2,19.6,18.1,17.1,18.5,17.2,18.7,18.0,18.6,20.2,20.7,17.8,17.8,18.1,18.3,17.4,18.4,18.0,17.9,18.2,18.9,18.4,20.0,19.0,16.3,19.1,18.7,17.8,19.2,18.8,17.7,19.4,18.4,17.2,18.0,50.9,18.6,18.5,17.8,18.5,17.9,17.9,18.0,18.5,18.1,18.5,18.1,18.6,18.2,18.1,18.0,18.5,18.6,18.1,18.1,18.3,17.3,19.1,19.3,18.3,18.6,19.1,18.0,19.8,19.5,18.7,18.6,18.7,17.6,17.0,18.7,18.6,18.1,17.8,18.7,17.9,18.4,18.1,18.4,18.8,17.8,18.0,18.1,18.4,18.0,19.3,18.9,18.4,18.8,17.3,17.8,18.6,18.3,17.8,18.7,17.6,16.6,19.0,18.5,18.0,18.8,18.7,17.8,18.3,18.1,18.7,18.9,19.3,17.6,17.7,18.0,17.1,18.0,19.3,19.0,19.3,18.7,18.2,18.1,18.5,18.0,18.5,18.4,17.4,16.9,17.6,18.8,18.0,17.9,18.3,18.8,18.4,17.9,18.5,17.7,18.1,18.4,18.1,18.3,18.6,18.3,17.9,18.5,18.2,18.1,20.5,18.2,18.7,19.1,15.7,32.9,18.6,17.5,17.8,18.3,18.0,18.7,17.7,18.5,17.9,18.5,19.4,17.6,18.4,17.2,18.3,18.1,18.0,17.3,18.5,17.8,17.8,18.2,18.4,18.6,18.1,17.4,18.5,18.0,20.5,18.8,18.0,18.3,18.2,17.8,18.0,18.5,18.5,18.2,19.2,19.2,18.5,18.5,17.5,18.0,19.3,18.6,19.3,18.3,17.8,17.9,18.3,17.7,19.2,18.2,17.7,17.3,18.7,17.2,18.9,17.2,19.2,18.1,19.0,18.7,18.1,17.8,19.2,18.4,17.4,17.5,17.4,17.5,18.2,18.6,19.0,17.9,18.7,17.4,18.5,18.8,18.1,18.4,18.3,17.6,19.6,18.5,18.5,18.4,19.7,18.7,18.2,18.2,17.9,17.8,18.3,18.8,18.5,15.7,17.1,18.8,17.3,19.5,18.3,17.6,18.4,17.3,18.0,17.9,18.3,18.3,18.6,18.5,18.7,17.4,17.9,18.0,17.8,18.0,19.0,18.0,19.5,17.9,18.5,18.9,17.8,18.1,18.1,18.8,18.4,18.1,19.0,17.3,17.8,17.8,17.9,17.7,17.9,18.1,18.6,18.2,18.1,17.9,18.4,17.9,18.0,18.2,18.1,17.6,19.1,17.8,17.7,18.3,17.8,17.5,18.2,18.1,18.9,17.7,17.3,18.0,18.3,18.1,17.7,18.3,18.0,17.9,17.9,18.5,18.1,18.0,18.5,17.6,19.0,17.9,19.0,18.1,18.4,18.3,18.2,17.8,17.5,18.5,17.7,17.5,19.2,18.0,16.6,19.4,18.0,18.6,18.5,18.5,18.6,19.0,18.1,16.4,18.3,18.6,18.2,18.7,18.4,18.5,18.3,18.3,18.6,17.6,18.5,18.2,18.6,18.1,17.4,18.6,18.1,18.6,19.7,17.7,18.8,18.6,17.6,19.1,17.8,19.2,18.2,17.8,18.3,17.6,18.4,18.4,18.9,18.3,18.7,17.4,18.0,18.1,18.9,18.1,18.4,18.8,17.7,17.4,17.0,18.9,18.5,18.5,19.1,17.6,18.3,19.1,18.6,18.0,18.0,18.3,19.1,18.6,18.6,17.7,18.0,18.3,18.1,18.9,18.5,18.3,18.3,18.5,19.0,18.5,18.6,17.6,18.5,21.7,18.8,18.8,18.1,18.5,18.6,18.3,18.3,18.6,18.3,18.9,18.5,17.9,18.2,17.5,17.8,18.9,18.2,17.3,19.2,17.7,18.6,19.2,19.4,19.1,19.0,18.3,18.4,18.6,17.9,18.5,18.6,18.8,19.5,18.3,18.5,18.6,17.4,17.7,17.8,18.9,17.9,18.1,18.7,18.3,18.2,17.6,18.2,20.7,17.7,18.2,18.2,17.8,17.7,18.1,18.3,17.5,18.0,18.4,18.1,18.9,18.0,17.4,18.2,18.2,18.5,17.5,19.1,18.0,17.3,19.0,19.2,18.6,17.9,18.0,18.4,17.1,18.1,17.7,15.7,18.6,19.0,18.1,18.1,17.8,18.0,18.7,19.5,17.7,18.1,19.2,17.8,20.3] + }, + { + "position": 89, + "values": [31.8,30.8,34.7,34.8,35.3,32.8,28.2,32.5,39.8,34.8,28.3,33.8,33.2,29.2,30.9,33.5,38.0,33.8,36.0,30.1,33.2,29.3,34.2,36.3,33.9,37.3,36.3,27.4,33.1,38.8,36.7,29.1,30.3,33.7,33.0,33.7,33.7,38.7,36.5,35.5,33.7,32.1,31.0,32.3,33.7,26.9,31.4,33.7,35.8,30.5,29.0,32.7,33.5,35.1,38.2,34.0,35.4,32.5,34.5,42.1,33.7,29.3,28.6,34.5,33.0,33.7,27.1,27.8,34.7,33.5,34.4,32.9,28.8,32.3,35.0,35.6,33.1,31.2,32.6,35.1,31.3,32.6,33.8,33.5,31.4,30.7,28.3,34.1,31.9,32.6,28.7,30.3,30.0,37.9,33.0,32.6,32.0,37.0,30.5,32.6,28.6,41.0,33.1,38.3,35.1,31.6,33.3,34.9,35.1,32.8,29.7,37.8,35.9,29.4,33.7,28.0,30.8,30.1,34.4,33.7,33.3,32.8,32.1,35.4,26.6,36.8,34.5,32.8,28.7,32.3,29.8,33.0,27.7,33.5,34.7,33.6,28.0,29.3,31.4,30.0,29.2,32.7,35.8,35.5,35.3,35.3,34.3,27.3,33.9,32.2,34.7,33.8,30.8,29.3,33.7,34.9,31.0,28.7,31.5,35.1,29.1,37.7,26.6,30.0,27.2,28.5,35.7,35.0,25.7,34.2,30.2,39.2,29.9,33.3,30.1,30.1,26.8,33.7,29.2,35.1,37.1,35.7,117.1,36.1,29.1,35.9,29.0,32.2,32.9,34.3,28.9,33.7,34.0,28.6,33.3,27.3,31.6,36.0,35.2,34.5,32.8,33.9,35.4,50.6,41.4,33.1,35.5,30.7,27.0,36.9,35.0,32.0,36.0,32.7,31.6,30.0,29.6,33.4,35.9,29.0,31.2,29.2,29.9,32.9,32.6,27.2,37.1,33.9,29.7,33.7,30.2,27.4,37.0,33.6,31.9,35.5,29.8,32.9,31.4,31.2,33.9,32.3,31.3,27.4,33.8,35.9,29.6,28.6,32.9,32.8,35.4,33.5,31.1,27.9,33.8,32.2,34.9,31.3,34.5,35.5,28.8,33.8,34.7,36.2,33.6,36.3,34.8,29.1,34.4,37.0,33.9,26.5,36.9,33.4,34.3,35.9,37.2,27.9,34.5,32.6,34.3,32.9,38.8,31.2,33.7,31.8,35.6,33.8,33.0,29.7,34.7,36.0,38.6,32.6,32.7,34.4,32.4,31.0,31.4,37.2,32.0,36.8,36.3,34.7,35.3,27.7,33.5,33.4,34.3,30.5,29.9,30.2,33.2,28.8,36.1,29.7,31.9,29.9,32.1,34.5,37.3,35.0,40.6,33.3,35.7,33.1,32.6,34.3,35.3,32.5,33.0,34.7,28.9,34.3,34.8,35.8,30.2,34.7,28.0,34.6,32.0,31.3,33.7,33.2,37.6,33.2,33.4,33.9,33.8,34.1,29.3,39.5,29.2,33.6,35.4,36.6,27.4,34.1,34.2,33.7,28.4,33.8,30.5,34.1,30.4,30.2,35.5,32.8,86.9,48.8,36.7,35.9,39.9,30.3,31.5,32.0,31.3,34.1,33.3,31.4,32.1,34.1,35.8,35.6,31.4,34.2,36.1,30.8,37.1,35.0,35.3,33.9,33.2,33.8,34.3,30.5,33.6,33.2,28.0,35.5,33.7,33.3,31.8,35.8,35.6,36.3,33.6,29.8,36.4,33.9,31.6,34.6,32.4,34.6,40.4,34.3,35.0,29.9,35.9,37.0,33.5,32.5,31.6,34.7,32.2,33.1,27.8,36.5,32.9,31.5,37.2,29.8,34.6,29.4,33.1,33.4,35.6,33.3,30.0,33.3,33.9,33.8,29.1,29.4,28.0,34.6,36.1,32.2,27.8,31.9,27.5,26.5,33.6,31.5,34.0,36.0,27.6,35.0,29.8,31.0,35.2,33.1,35.7,32.4,35.5,37.0,38.5,34.9,33.0,37.0,33.0,39.8,27.8,35.6,36.0,32.5,34.4,26.8,34.8,32.2,32.8,39.0,31.1,35.1,34.7,35.3,33.9,28.9,28.3,33.1,34.3,38.6,29.6,33.0,31.0,40.5,35.0,32.6,34.6,35.5,26.4,35.5,30.3,33.3,31.5,18.8,29.5,36.1,33.0,28.0,36.1,35.0,37.5,34.3,33.0,35.1,33.3,33.3,33.5,33.5,33.1,28.1,33.8,29.8,35.5,30.4,30.8,38.3,28.8,28.7,31.8,33.2,34.9,28.2,40.9,34.1,30.3,36.2,37.0,30.1,33.1,34.5,29.9,32.4,29.1,29.9,32.6,29.8,30.9,28.2,31.4,30.1,33.8,29.7,36.1,30.0,31.1,36.2,31.2,32.5,30.6,32.6,33.8,34.7,33.4,27.4,35.4,34.3,30.9,33.6,34.8,36.5,34.6,33.4,33.7,32.8,33.8,35.3,27.8,32.8,32.6,34.4,27.3,35.8,34.8,32.9,28.7,27.0,32.3,33.3,36.6,32.2,31.5,34.0,36.8,29.9,33.3,32.9,33.1,32.0,32.6,33.3,33.3,29.6,32.7,34.1,32.3,35.7,33.9,31.9,32.4,35.6,30.8,35.1,30.8,30.9,32.6,31.4,32.5,37.0,45.8,28.2,30.4,35.0,34.8,38.7,31.7,28.0,35.0,36.5,36.0,38.1,35.9,37.4,33.7,30.0,34.6,33.4,35.8,31.5,34.2,32.9,35.9,29.8,32.0,33.0,34.9,32.8,32.9,29.1,37.4,32.2,32.9,29.5,34.3,33.1,27.4,34.6,32.7,30.9,33.1,27.6,32.5,33.6,30.1,35.1,32.3,35.7,28.8,30.5,35.5,36.7,34.1,32.4,33.1,33.8,33.0,35.3,32.5,35.7,34.0,35.6,28.1,33.9,34.2,34.7,33.0,35.6,29.6,29.6,32.1,34.5,33.8,29.3,28.4,32.4,33.8,55.4,29.9,30.4,32.7,35.1,32.4,35.3,29.1,31.5,35.1,28.9,30.1,35.5,30.8,26.9,28.8,37.3,37.0,32.9,33.9,35.5,34.1,32.0,32.5,34.6,35.2,35.1,33.3,34.2,35.2,36.7,32.9,34.3,30.4,32.5,35.3,39.1,34.3,30.6,34.7,35.4,33.4,30.0,33.4,36.6,34.1,33.1,34.6,33.3,32.1,28.0,34.3,30.2,33.5,35.4,33.5,32.1,38.2,33.2,35.2,28.9,33.5,34.9,27.0,36.3,31.9,33.4,31.7,29.3,34.1,31.4,35.3,34.3,35.6,32.8,29.7,30.9,35.3,32.6,31.7,34.8,33.9,30.4,32.4,30.4,33.9,30.8,29.7,32.9,30.6,29.6,30.3,29.2,36.2,34.5,34.7,37.5,34.5,33.1,29.3,34.8,52.9,37.1,36.4,33.1,38.4,28.3,33.0,31.3,33.9,32.0,29.7,34.2,35.1,37.4,33.5,33.9,33.5,34.0,31.8,31.1,33.8,36.6,28.0,30.9,36.4,29.9,34.5,34.7,36.9,30.7,32.0,30.1,31.0,36.7,28.9,34.9,33.3,37.0,33.5,36.8,34.8,33.2,37.4,29.6,31.8,30.8,35.4,29.3,35.3,32.3,33.0,27.7,38.0,35.7,28.9,29.4,29.5,29.4,29.7,36.9,39.3,28.0,32.4,31.8,33.1,35.1,35.0,34.1,33.4,31.8,36.2,32.8,33.9,32.2,34.8,35.2,34.3,34.2,27.9,27.4,29.5,33.9,30.6,31.7,35.7,35.7,33.7,29.5,28.9,29.7,34.4,51.2,29.4,30.8,37.0,32.7,29.0,30.8,29.5,28.9,36.6,29.1,37.4,37.6,32.9,29.6,33.0,32.9,33.9,27.5,35.2,35.9,35.5,30.3,35.2,36.7,46.2,35.0,34.8,33.1,31.6,27.1,30.2,32.5,32.1,34.7,33.8,27.7,34.5,29.5,27.8,32.2,39.2,30.0,34.0,34.0,34.0,34.8,29.4,26.2,36.4,30.8,31.2,27.1,35.5,27.9,32.2,32.8,35.4,30.5,33.5,31.6,34.0,32.4,36.0,35.5,34.4,36.6,32.5,34.5,26.8,33.8,26.5,35.1,31.7,33.8,32.6,35.7,30.1,34.0,35.1,31.1,28.8,32.9,37.2,34.9,34.5,31.6,29.1,33.8,28.6,32.6,34.7,35.3,32.8] + }, + { + "position": 90, + "values": [13.9,13.2,13.3,13.4,14.2,12.9,12.6,13.1,14.7,13.6,13.0,12.7,13.3,13.0,14.5,13.1,13.9,12.7,14.7,13.1,13.3,13.4,14.0,13.2,13.2,13.5,14.9,13.3,13.1,13.9,12.6,14.1,12.7,14.2,13.2,12.7,13.6,15.8,13.0,12.0,12.3,14.2,12.9,13.1,12.9,11.7,13.6,13.4,13.7,13.2,13.0,13.9,14.0,13.2,17.5,13.9,14.9,12.9,14.7,13.7,15.9,13.3,12.6,13.1,13.9,13.1,12.4,14.9,15.1,12.2,14.8,13.5,12.9,14.4,14.3,12.9,15.4,13.0,12.7,13.6,12.8,12.7,14.3,12.7,13.2,13.3,12.4,14.2,13.7,14.3,12.6,15.7,12.5,12.7,13.9,12.5,13.7,12.9,12.8,13.2,13.2,13.2,13.3,13.0,13.6,12.1,13.2,13.7,14.6,12.9,13.1,12.9,13.2,13.5,13.9,13.1,13.4,13.2,14.1,13.2,12.7,12.5,13.0,12.5,12.6,16.0,14.4,14.6,12.7,12.9,12.6,13.6,13.2,14.2,14.3,15.0,13.0,12.8,12.2,13.1,13.4,13.3,13.3,14.7,12.7,12.7,14.3,12.8,13.0,13.2,12.9,11.6,14.7,12.9,12.7,13.5,12.9,12.0,14.2,14.4,13.7,13.8,12.8,12.8,13.0,12.5,14.0,13.7,12.7,13.6,12.5,16.5,12.9,13.6,13.4,12.9,12.8,12.9,13.5,14.2,15.1,14.9,13.8,13.3,41.3,13.5,13.0,13.4,14.4,12.6,13.0,12.9,14.5,13.2,13.2,12.1,13.5,18.8,13.1,13.1,13.3,12.8,14.1,12.7,18.7,13.3,12.9,12.9,12.5,15.2,13.2,15.0,12.7,14.5,12.7,14.2,13.3,13.1,14.9,13.1,12.6,12.8,13.0,13.3,13.0,13.0,12.7,13.9,12.8,12.7,12.8,12.8,12.8,13.4,13.6,13.4,13.3,12.8,13.0,13.2,14.2,13.2,13.2,12.6,13.6,14.6,12.9,12.7,13.1,13.0,13.8,12.9,13.0,13.1,13.3,12.7,12.6,13.0,14.2,13.3,14.2,13.3,13.3,14.2,13.1,13.0,12.9,12.8,13.1,13.5,13.1,13.2,14.3,14.3,13.6,13.7,15.1,12.1,14.4,13.0,13.3,13.7,13.9,13.3,13.8,12.6,12.8,12.7,13.7,13.2,13.8,13.2,14.8,13.3,14.8,14.5,13.0,13.4,13.6,13.1,14.0,13.1,15.3,13.8,14.5,14.6,13.5,14.4,13.0,12.8,13.2,12.7,15.4,12.4,14.4,13.0,12.5,12.3,12.9,14.5,13.2,12.8,13.9,15.7,14.2,13.7,12.9,13.2,13.2,14.1,14.6,13.4,13.4,13.0,15.2,14.2,12.9,12.9,13.8,12.7,11.1,12.8,13.7,13.0,15.2,13.1,12.7,14.1,16.1,13.6,13.1,13.9,12.9,13.2,14.4,13.0,12.6,13.1,13.4,13.3,12.9,12.6,14.0,13.3,12.9,13.3,13.3,14.7,14.9,13.6,12.6,12.5,13.6,13.7,13.7,13.4,12.9,12.6,12.4,13.1,12.2,14.3,13.2,15.2,12.4,13.5,14.5,12.9,14.6,13.7,13.8,12.7,13.2,13.1,13.3,14.5,13.0,14.1,12.8,13.0,12.6,13.4,12.4,16.9,13.1,13.4,15.2,13.3,14.6,13.2,13.4,12.9,13.8,13.7,15.9,14.6,12.7,12.0,12.6,12.7,14.5,15.2,11.4,14.2,13.0,14.4,12.8,13.5,12.8,12.8,15.6,13.5,14.3,13.0,14.0,13.2,13.0,13.2,13.1,13.6,13.2,13.9,12.9,15.3,12.5,14.4,13.9,14.3,11.9,12.2,12.9,14.7,14.0,13.5,15.7,14.0,14.2,13.0,12.8,13.6,14.2,12.7,14.8,13.2,14.4,15.1,14.8,13.7,14.0,12.6,13.9,14.7,13.5,13.0,13.0,12.6,14.8,13.5,12.5,14.1,13.6,16.3,12.9,14.3,12.7,12.9,13.3,12.8,12.8,13.3,14.3,14.0,13.5,14.1,12.0,19.4,14.6,13.0,14.7,14.4,12.8,14.3,13.9,13.0,13.5,33.8,13.1,15.4,12.9,12.7,13.6,13.6,13.7,14.2,13.3,14.2,12.6,14.2,12.8,13.0,12.9,13.0,12.8,13.0,12.7,12.9,12.0,13.7,13.0,13.4,14.3,13.4,13.8,14.0,13.9,12.8,14.5,15.4,13.4,12.7,13.4,14.0,12.9,13.2,13.0,13.0,12.9,12.9,12.5,13.8,13.4,13.1,12.9,13.0,12.9,14.5,13.2,13.0,14.2,12.6,13.1,12.9,12.8,14.2,13.9,12.6,12.4,13.5,13.3,12.6,13.3,13.4,12.9,13.3,13.2,13.4,14.0,13.7,12.8,12.6,13.2,12.5,12.4,14.2,14.6,12.9,12.6,12.8,13.0,14.3,13.6,13.5,13.1,13.6,13.9,12.8,12.8,12.9,13.0,14.4,11.9,14.2,13.3,13.2,13.1,13.1,13.3,12.8,13.4,12.9,14.0,13.2,13.9,12.7,13.4,13.8,13.0,13.0,13.3,11.6,26.9,13.1,13.3,13.9,13.1,13.1,13.5,12.5,12.9,13.7,15.2,13.5,13.4,11.6,13.1,12.8,13.2,13.4,13.5,13.0,13.0,13.1,13.3,12.9,12.9,13.6,13.1,14.0,12.6,13.0,14.1,12.7,13.0,12.9,13.8,13.2,14.2,13.3,13.1,13.8,12.8,12.6,13.0,12.5,13.0,14.2,13.5,14.6,12.8,13.4,13.8,12.9,12.6,13.2,14.7,14.6,12.7,14.4,12.3,14.6,12.5,14.6,12.7,13.2,14.6,13.0,13.1,13.0,12.9,13.4,12.5,13.2,13.6,13.1,13.3,13.6,14.1,15.2,13.3,13.3,13.1,12.6,13.4,12.7,13.1,14.3,14.4,12.7,14.9,13.4,13.2,12.6,12.5,13.6,14.2,13.1,13.7,14.6,12.4,12.5,12.8,14.4,13.9,13.4,13.8,14.2,13.4,12.9,13.4,13.4,12.8,13.7,13.3,14.2,13.1,12.9,12.7,13.4,14.7,13.8,13.2,13.3,13.2,14.4,13.5,13.1,13.2,12.7,14.7,12.9,14.2,13.4,14.0,13.1,13.4,12.8,13.5,12.8,13.1,12.1,12.5,15.4,13.8,14.1,12.4,12.6,13.0,13.1,12.7,14.6,13.3,13.3,13.1,12.7,13.3,13.5,13.5,13.2,14.2,12.8,13.2,12.9,13.7,12.8,13.4,13.0,13.3,12.8,12.8,12.7,15.4,14.0,13.6,14.6,13.4,13.0,12.5,13.9,15.0,13.8,12.7,14.1,12.7,13.6,12.8,13.2,14.6,12.3,14.0,13.4,14.0,13.3,13.7,12.6,14.5,14.1,11.9,13.6,13.3,13.5,12.5,13.0,14.5,12.9,14.2,13.2,13.6,12.9,13.2,12.3,12.3,12.7,14.3,12.6,14.0,16.2,12.6,14.6,13.4,13.4,12.9,13.5,12.9,13.6,13.4,13.1,13.4,13.2,14.4,13.6,12.0,12.8,13.5,12.6,13.1,13.2,13.0,12.8,28.9,13.0,12.6,14.2,12.7,15.1,15.0,14.3,12.9,12.8,13.0,14.1,13.0,15.2,13.3,13.3,13.4,13.4,12.9,12.9,12.9,12.7,12.4,12.4,14.2,13.4,13.2,12.8,12.6,13.3,12.8,13.6,12.9,12.4,14.9,12.9,12.7,13.2,12.9,12.9,15.0,13.2,13.1,13.0,13.6,13.1,12.9,13.0,13.4,12.6,13.4,13.8,14.2,12.5,14.9,13.1,13.7,14.4,13.5,14.7,13.0,12.9,12.9,13.1,12.9,14.4,13.3,13.0,13.1,13.0,12.1,13.1,13.0,14.2,12.8,13.0,12.6,13.2,12.8,12.6,14.2,12.8,12.8,12.6,15.9,12.4,14.3,13.9,12.5,13.1,13.2,15.0,13.8,13.6,13.1,13.4,13.2,13.1,13.2,13.8,12.9,12.7,12.7,14.0,14.0,13.7,13.4,14.0,12.1,13.0,13.7,13.1,12.8,14.8,12.4,12.7,13.1,13.3,13.3,14.4,12.7,12.7,13.6,14.7,14.0] + }, + { + "position": 91, + "values": [29.9,28.9,31.7,40.5,30.5,28.8,28.2,28.8,32.5,29.6,32.8,28.7,29.0,30.1,30.4,28.8,45.8,31.0,40.1,30.4,32.2,32.0,35.4,30.4,44.0,44.9,32.9,28.1,31.7,31.0,30.5,45.1,29.8,31.0,29.6,29.3,30.4,42.7,30.9,23.2,36.1,29.2,28.1,30.3,28.4,31.5,30.5,28.4,27.9,32.4,32.0,29.8,29.5,41.3,28.8,29.5,31.1,29.2,34.3,48.8,30.1,30.3,29.4,29.7,28.8,28.0,28.1,31.4,30.5,33.0,47.5,27.3,30.5,33.2,29.3,47.4,30.5,29.1,28.8,29.0,27.3,33.9,30.3,30.8,33.7,23.2,33.1,32.0,29.5,31.3,27.8,29.3,41.1,29.2,28.8,32.1,30.8,28.9,27.1,28.6,29.8,28.1,32.1,29.5,28.1,30.4,30.8,30.8,29.5,29.6,30.9,43.0,47.7,29.2,32.1,30.9,32.1,41.0,46.3,28.9,29.3,27.9,31.4,30.8,33.3,30.4,32.7,29.6,29.6,27.9,30.7,32.2,28.5,28.7,31.1,29.9,30.9,28.9,30.2,31.2,29.4,30.0,30.9,28.8,30.9,28.2,31.4,28.3,32.0,28.3,31.2,29.6,29.8,27.9,30.2,28.7,29.4,28.8,34.1,31.1,29.7,31.2,28.7,31.3,30.5,29.8,27.5,34.1,30.3,47.0,31.8,32.1,26.3,32.8,31.3,31.6,28.6,31.6,31.6,47.1,31.0,42.2,29.4,30.3,44.0,30.6,30.6,33.1,28.0,31.0,32.4,31.0,29.1,29.9,33.4,29.0,30.0,44.4,30.4,29.8,28.4,46.5,25.6,40.3,29.9,30.7,31.3,47.2,28.8,41.8,34.5,31.8,31.7,28.6,29.5,29.7,30.8,28.4,26.6,27.7,30.6,29.0,30.8,29.2,29.6,28.6,28.0,29.3,31.6,20.1,30.0,31.5,26.4,30.2,43.7,30.0,28.2,28.1,29.7,30.4,29.9,33.2,31.1,47.5,30.1,29.9,31.1,29.5,30.5,29.7,31.2,30.9,30.1,35.8,30.8,29.6,29.8,29.7,44.7,30.2,31.3,48.6,30.2,23.1,31.4,28.8,43.9,29.2,46.2,31.1,45.9,32.7,30.0,31.7,43.5,32.8,27.8,28.7,29.7,31.1,27.2,54.9,28.5,28.1,30.5,22.6,30.2,28.6,31.1,31.8,30.6,47.9,28.0,31.8,29.7,28.4,30.6,27.0,28.6,29.2,46.0,30.4,27.0,30.2,29.5,28.1,29.4,32.2,31.5,30.2,29.7,28.8,32.4,28.1,31.3,32.4,30.8,30.5,30.0,29.3,31.2,30.7,29.1,29.2,29.2,30.6,31.6,32.3,29.4,30.6,30.0,28.9,46.1,30.1,46.7,29.2,28.5,28.6,32.0,24.5,28.9,26.9,29.2,30.2,30.1,41.9,27.7,31.0,42.1,29.0,31.2,31.0,31.6,29.0,29.0,31.4,30.4,42.7,46.8,31.7,28.6,51.8,28.5,30.6,29.6,31.6,31.2,43.5,29.5,31.3,46.1,32.7,27.8,28.6,29.4,29.1,29.7,28.3,29.7,31.8,31.7,28.2,31.4,29.0,31.4,30.1,30.2,31.0,31.6,31.0,28.7,27.8,29.6,27.3,30.6,27.9,27.9,29.0,28.1,29.1,33.5,29.8,44.7,31.4,30.1,31.5,42.8,30.1,28.0,32.1,29.9,29.1,41.4,29.4,29.8,29.8,29.8,29.5,29.5,30.2,26.2,30.4,28.7,30.3,28.7,47.1,28.2,33.3,29.2,31.3,28.9,29.0,28.2,28.8,28.7,29.7,30.5,29.4,31.1,33.3,30.3,28.9,29.3,29.4,28.0,29.7,30.6,34.7,29.1,32.6,30.1,31.1,32.3,29.5,25.8,29.5,28.6,30.3,29.3,28.7,28.0,26.2,38.2,47.3,29.2,43.6,31.7,29.5,30.8,48.8,60.5,30.2,28.8,28.8,30.2,29.5,28.7,28.0,32.6,29.4,29.4,29.6,28.2,29.9,45.9,30.0,29.0,28.0,30.5,52.5,28.6,33.0,26.2,57.9,29.8,31.4,28.5,30.6,30.4,29.7,48.7,25.7,28.2,13.2,30.4,48.8,29.5,31.7,47.8,29.9,45.4,30.3,30.0,29.2,28.5,29.6,29.9,31.5,30.8,31.0,31.6,31.0,30.3,30.4,17.8,33.7,29.9,29.6,30.6,30.3,46.3,32.8,40.0,30.0,27.6,49.2,29.9,28.2,29.2,31.8,29.3,31.7,29.3,30.5,32.9,28.4,30.6,53.3,31.3,30.3,27.5,30.3,30.4,29.6,30.6,30.9,24.7,30.5,30.5,24.3,29.9,27.7,29.9,32.4,43.6,33.1,32.6,29.8,31.8,44.1,31.9,31.0,28.6,31.7,29.7,29.9,31.5,28.4,47.6,26.8,46.7,29.3,33.2,32.4,30.6,31.1,29.6,29.9,29.9,45.4,29.9,46.3,46.2,28.6,28.7,28.6,30.3,35.6,29.7,30.1,28.1,29.4,28.4,28.8,29.1,28.6,31.4,30.0,46.7,30.5,33.2,30.3,27.5,34.4,29.2,42.6,30.4,30.4,47.2,31.5,26.7,44.9,28.1,34.1,30.3,31.8,44.7,31.8,48.2,30.8,44.3,27.2,27.1,29.7,29.2,30.2,42.0,29.0,30.8,29.3,28.9,21.1,25.5,33.8,30.3,30.7,22.6,30.2,41.2,31.3,29.8,30.4,42.4,28.5,24.4,30.2,29.1,29.0,26.6,31.5,30.1,29.7,29.8,31.1,30.8,32.0,31.0,30.8,28.0,43.3,28.8,30.8,31.6,32.7,28.3,33.1,29.5,31.1,28.6,30.8,30.1,29.9,29.6,29.6,28.4,20.5,30.1,28.4,29.0,43.4,46.1,29.4,30.9,32.1,30.7,31.4,29.5,31.7,32.3,45.9,30.4,20.2,25.7,28.2,30.6,30.1,30.0,35.7,31.6,28.8,29.9,44.5,28.7,29.3,26.2,29.1,26.1,28.7,28.3,30.4,27.6,27.6,47.8,31.5,44.0,30.5,29.9,29.8,30.0,28.1,32.1,32.7,32.1,29.7,31.2,44.1,30.3,47.7,30.2,29.0,30.5,30.6,31.9,31.2,30.4,29.9,30.0,30.5,29.6,44.1,30.5,45.2,28.3,28.6,47.8,31.5,28.2,28.9,31.8,45.5,31.3,29.6,28.8,30.2,29.5,27.9,30.7,29.9,38.9,29.8,29.5,30.6,42.9,29.4,26.6,31.1,41.0,30.0,29.5,25.2,29.7,31.6,46.5,30.9,28.1,30.3,29.3,28.8,29.4,30.8,31.7,30.1,30.1,31.0,28.1,29.6,30.7,46.8,44.5,28.5,48.8,30.1,31.4,28.2,29.7,30.1,29.2,29.6,49.1,30.8,30.8,27.8,29.9,44.3,28.9,29.4,28.8,42.2,29.6,27.3,42.0,29.7,29.8,31.1,48.4,29.2,29.8,30.6,32.1,30.3,45.2,29.0,31.7,30.2,28.3,46.9,31.7,29.9,29.2,29.3,30.0,28.5,28.8,29.5,45.8,30.5,28.7,32.1,31.4,29.4,31.5,29.8,33.7,29.9,29.1,29.8,66.5,31.9,29.6,28.2,26.8,29.8,30.6,29.3,31.6,32.0,46.0,29.9,28.5,29.1,47.5,31.7,30.9,28.7,30.1,31.6,29.7,29.8,29.3,29.5,32.7,48.2,29.8,32.0,30.8,29.8,39.5,30.3,40.9,30.2,30.9,28.9,28.3,30.7,31.8,29.3,30.2,30.9,30.1,30.2,27.7,26.0,26.9,29.8,31.5,31.8,44.0,29.7,42.5,31.0,31.7,30.5,31.4,33.2,30.0,30.9,29.5,31.6,30.0,28.7,21.5,28.5,29.2,29.5,31.9,29.1,30.4,28.9,30.7,30.2,28.1,28.2,29.1,29.9,29.3,31.3,43.3,28.6,30.2,30.7,34.4,29.5,28.6,31.9,28.5,29.5,28.7,28.1,41.1,49.4,44.7,31.1,32.0,30.4,31.5,28.5,31.1,29.7,29.4,28.8,34.9,31.6,29.6,43.7,28.8,28.3,32.0,20.2,29.0,28.7,31.6,29.4,28.9,29.1,33.3,29.9,28.0,31.7,31.0,48.0,26.5] + }, + { + "position": 92, + "values": [32.3,32.0,33.2,33.6,36.8,29.2,32.2,33.6,35.9,33.9,32.5,31.3,32.5,33.5,32.9,29.7,30.1,31.9,28.2,33.0,34.2,34.8,34.1,27.5,31.5,26.2,35.8,33.6,34.3,30.7,30.9,30.8,33.0,34.0,30.8,30.7,31.9,34.3,34.5,31.2,33.8,30.6,29.3,30.7,32.8,31.6,35.5,31.2,34.3,34.7,29.6,31.6,31.1,37.6,44.7,36.2,33.5,33.9,30.1,27.8,37.2,29.0,32.3,35.0,35.3,32.1,32.6,34.9,35.4,32.1,36.7,31.7,55.3,34.5,35.1,29.8,35.4,31.6,32.7,32.7,29.5,31.7,31.9,33.7,34.0,33.8,30.8,35.1,35.2,30.6,37.1,37.6,30.7,31.3,35.1,29.2,34.5,31.5,30.4,31.9,31.1,31.2,34.3,30.5,32.3,34.0,31.3,37.5,35.6,32.5,32.7,29.0,31.8,29.4,32.8,32.4,34.7,33.5,36.4,30.9,31.3,31.6,35.2,30.7,34.1,36.4,36.6,37.8,31.2,30.9,32.6,31.6,33.7,59.7,33.8,36.2,33.4,31.8,30.8,33.2,31.9,27.9,36.9,32.7,31.1,32.3,30.9,33.0,31.4,33.3,32.3,30.3,38.7,34.2,31.5,31.4,32.4,34.6,30.8,34.3,30.9,33.6,33.1,31.5,33.9,48.1,33.5,31.5,32.5,50.7,31.6,39.2,34.5,30.9,33.0,30.2,33.6,32.7,32.7,32.7,30.0,41.7,34.9,33.5,71.1,32.7,31.9,30.0,35.7,29.6,34.1,34.9,31.6,33.5,28.6,30.5,24.7,30.9,31.5,31.3,31.0,29.6,29.9,30.1,34.8,32.2,29.3,33.5,32.2,31.4,29.3,38.3,34.1,29.7,32.6,32.5,32.1,31.8,36.4,31.5,26.7,34.4,30.7,31.9,32.0,32.6,32.4,35.7,33.3,33.3,26.3,32.6,33.9,36.8,31.5,31.1,30.9,30.7,32.7,32.3,33.6,32.4,26.5,33.1,34.4,34.2,31.8,32.5,28.8,32.4,33.5,33.7,32.8,33.2,32.5,32.9,31.9,30.8,37.2,31.4,35.1,33.4,31.0,34.6,30.9,35.5,29.4,33.5,29.2,28.3,33.7,28.8,34.9,34.0,33.3,25.6,37.3,30.6,35.7,30.5,33.0,31.5,31.7,33.2,41.7,29.8,46.2,32.7,32.2,32.4,33.8,33.4,29.9,32.0,38.6,31.8,29.4,32.5,32.6,30.5,30.5,31.6,32.7,27.5,33.9,34.3,32.2,35.0,32.2,33.0,30.7,33.3,35.4,30.6,34.0,33.5,29.3,30.6,31.8,35.2,35.2,30.5,37.5,40.2,34.3,34.6,32.7,31.6,36.7,25.5,32.7,35.6,28.1,31.3,33.9,25.0,32.5,36.7,34.8,34.4,33.9,29.5,32.8,33.5,29.6,31.3,29.8,36.2,38.0,32.7,34.3,33.4,34.1,36.1,49.6,31.2,33.6,34.8,28.6,28.9,32.5,31.3,27.8,29.8,33.7,28.7,31.8,32.0,27.3,32.0,33.4,30.7,30.6,36.7,30.8,31.5,33.1,32.5,30.0,31.1,31.7,33.1,33.7,39.7,32.3,32.6,35.4,31.3,34.3,34.1,33.4,29.6,31.0,32.8,32.5,31.1,31.9,33.8,33.1,36.4,29.1,35.5,33.5,53.0,34.0,28.4,39.7,30.0,36.1,33.0,32.6,30.2,33.7,34.7,36.6,35.9,30.0,30.2,31.0,32.2,35.9,41.0,30.4,38.4,30.5,34.2,34.5,28.0,30.1,33.4,29.0,33.5,32.9,32.1,38.0,32.9,29.8,32.4,32.0,32.1,34.6,34.0,35.3,55.6,31.6,33.4,38.2,32.7,34.1,28.8,28.4,33.5,30.4,33.7,30.7,35.0,33.6,31.5,32.5,35.3,32.3,29.4,52.5,66.1,32.4,38.8,30.1,31.9,28.7,33.1,34.5,27.9,31.1,32.3,31.3,32.2,35.2,35.8,31.5,36.7,33.4,39.9,29.5,30.8,36.7,30.5,31.3,30.5,33.0,31.7,35.5,38.1,34.4,28.2,34.0,65.5,36.1,37.4,30.1,34.6,33.0,35.1,32.0,32.3,30.6,29.1,32.4,29.5,31.8,30.4,30.5,30.6,27.4,35.0,35.1,32.4,32.8,34.1,32.8,30.3,31.3,33.7,31.6,32.3,32.6,37.7,31.2,33.8,31.7,34.8,28.5,34.5,31.6,35.9,34.5,33.7,32.7,34.6,31.0,31.8,31.0,35.3,32.6,32.9,32.4,32.5,34.4,31.0,31.6,33.1,31.6,35.3,30.9,32.1,32.9,33.6,33.1,33.5,30.0,31.7,52.5,31.5,30.0,35.9,33.0,32.4,26.8,33.6,31.5,32.4,42.8,33.4,31.2,32.8,33.0,31.4,34.6,33.8,31.2,33.3,31.7,30.3,33.1,25.0,35.2,31.3,32.5,28.3,32.9,34.9,31.3,28.9,32.5,29.3,29.3,31.7,29.8,31.2,34.9,35.9,28.4,34.6,31.0,31.6,30.7,32.7,32.8,29.6,31.8,33.2,34.1,27.9,37.0,32.8,32.9,32.7,37.9,34.0,32.4,28.1,55.9,32.1,30.4,30.1,32.6,29.9,32.5,30.2,31.2,33.3,31.2,49.1,27.4,34.3,32.7,34.3,32.5,32.1,27.3,30.8,32.9,30.9,33.2,34.6,31.0,32.7,31.7,33.6,34.9,34.2,35.4,30.9,32.4,33.7,31.2,28.4,36.0,22.6,29.8,33.1,28.6,32.6,32.4,31.5,33.5,34.5,34.4,32.0,31.1,29.0,35.4,30.5,31.5,30.4,34.2,40.0,29.7,34.0,28.3,36.3,30.9,35.2,32.3,27.7,34.1,29.7,30.9,34.6,29.7,31.3,32.3,31.9,31.0,33.4,32.6,32.5,33.5,33.0,27.3,32.5,33.0,31.6,30.6,26.7,31.3,31.3,34.0,32.6,32.2,17.4,28.9,32.3,29.1,33.1,27.8,32.5,34.7,35.0,34.6,33.2,29.9,29.5,33.9,32.0,38.3,32.5,27.4,33.6,36.5,32.7,32.0,34.7,38.5,32.1,28.3,31.8,33.6,28.1,24.4,31.2,30.6,32.5,32.0,31.1,35.0,32.0,32.5,34.2,37.4,33.4,32.4,32.1,34.1,31.1,28.8,30.2,29.9,33.7,30.9,30.8,34.2,33.5,33.6,31.8,30.6,32.7,31.4,32.2,29.1,34.8,32.0,28.3,33.1,29.1,33.0,29.7,31.8,32.5,36.0,28.3,33.7,32.3,33.1,33.3,30.7,31.6,30.3,33.7,31.8,35.0,30.0,32.6,33.3,34.0,30.5,32.9,31.5,35.2,26.7,30.6,30.2,30.4,32.6,34.8,30.8,31.2,36.7,29.8,35.7,31.8,31.4,33.1,31.7,31.2,35.4,32.5,29.6,32.6,32.4,33.2,27.7,32.6,35.7,31.8,33.6,34.2,31.2,27.6,27.0,32.9,33.5,29.4,32.3,29.8,34.4,40.4,31.4,29.5,32.5,33.3,33.7,32.9,32.0,31.4,28.9,32.8,26.7,35.5,31.2,33.0,32.6,33.8,32.7,31.5,33.4,34.0,25.3,33.8,34.9,47.2,27.6,34.2,31.0,35.9,32.0,34.3,35.2,33.5,36.3,34.9,31.2,43.1,31.9,35.2,31.0,30.9,32.1,33.5,33.4,29.8,31.4,30.4,35.3,29.0,32.0,33.8,32.6,32.9,29.3,30.8,31.7,30.9,35.9,29.5,32.9,34.3,30.5,32.7,35.1,33.2,32.7,32.4,30.6,34.9,28.7,29.9,35.4,32.7,27.4,32.1,31.7,27.6,32.0,33.5,23.7,34.3,33.5,30.9,32.1,33.8,32.8,30.5,30.0,32.3,38.0,33.4,32.9,34.8,34.2,31.9,35.1,31.9,35.8,33.2,29.5,32.5,31.5,33.0,35.1,29.3,30.4,33.0,34.2,50.4,32.2,33.3,35.0,29.4,30.9,37.3,28.8,35.3,25.8,39.1,32.6,30.4,38.0,32.5,33.6,34.9,33.8,33.0,35.9,36.0,30.6,31.0,30.4,31.4,35.1,29.8,34.9,35.9,36.1,31.8,33.4,33.5,30.3,38.1,33.2,33.0,31.7,38.3,28.3] + }, + { + "position": 93, + "values": [14.3,13.8,13.6,14.1,15.8,13.5,13.4,13.9,16.6,14.2,13.8,12.9,13.3,13.7,15.3,14.1,13.7,13.3,14.3,13.5,13.7,14.9,14.7,13.7,13.9,16.1,13.9,14.1,13.2,13.8,13.4,14.6,13.4,15.8,13.7,12.9,13.2,17.1,14.8,13.6,15.1,13.2,13.6,13.4,13.4,13.8,14.5,13.6,14.5,14.1,13.9,17.3,16.0,14.0,14.4,16.0,16.7,14.0,15.5,18.6,13.9,14.3,13.1,16.0,13.6,13.6,13.0,16.5,12.7,15.1,18.1,14.2,14.9,16.2,15.0,16.5,13.7,13.3,13.8,13.8,13.5,13.5,13.9,13.9,13.5,13.9,12.9,15.6,13.5,14.8,16.2,13.2,13.4,17.4,15.7,13.4,15.1,13.0,13.6,13.8,13.4,13.7,13.9,14.1,13.7,12.9,16.3,13.9,15.8,13.4,13.9,13.6,13.5,13.4,14.5,13.7,14.8,14.3,15.7,13.9,13.6,13.3,13.3,12.2,13.6,16.6,16.5,17.9,13.7,13.7,14.1,14.0,14.8,17.6,15.9,13.7,16.6,13.7,13.4,13.7,14.6,13.7,13.8,15.2,13.4,14.9,13.5,13.8,13.8,13.8,11.8,13.5,15.4,14.1,13.2,13.7,13.7,16.4,12.5,14.0,14.6,15.2,13.7,13.7,13.6,13.9,14.7,13.6,13.5,14.3,14.3,14.1,15.6,14.2,13.8,13.2,12.8,13.1,14.2,15.4,16.3,17.0,35.4,14.7,14.3,13.7,13.6,13.7,13.4,16.2,14.0,13.6,15.6,14.0,13.3,12.6,13.9,13.7,14.1,13.4,14.1,13.5,14.0,12.1,20.1,12.9,14.5,13.9,15.9,13.5,13.7,16.4,15.8,13.4,13.1,14.7,13.6,16.7,14.0,13.7,13.7,14.1,13.9,13.8,13.5,13.5,13.8,16.0,14.6,13.5,13.3,13.8,13.2,14.3,14.1,13.5,14.0,13.5,13.9,13.5,16.1,13.1,13.7,13.4,14.2,15.5,13.6,13.6,15.8,12.6,13.7,13.0,13.3,13.6,13.8,14.2,12.4,13.6,16.3,13.8,14.1,14.3,13.8,15.4,13.9,13.1,13.7,13.7,14.1,14.2,14.0,13.7,15.5,13.4,13.9,15.7,15.9,12.9,15.8,13.5,13.7,13.5,13.8,13.4,15.9,13.8,15.9,13.7,13.5,15.6,14.1,12.8,15.1,13.9,16.5,15.6,13.9,14.1,13.5,14.0,13.7,16.6,14.4,13.8,14.6,16.1,14.2,16.3,13.6,13.6,13.5,13.7,15.6,15.0,16.6,13.5,13.7,13.0,13.7,16.6,13.9,16.0,15.5,13.5,14.0,13.5,13.9,13.3,14.7,14.3,15.1,13.2,13.7,13.6,15.7,14.7,13.7,13.7,14.5,14.7,13.4,13.7,14.1,13.7,15.4,13.8,12.9,16.0,17.4,13.7,14.5,13.5,13.9,13.3,16.1,13.2,13.9,13.9,14.0,13.7,13.1,12.7,13.8,13.9,13.4,14.4,14.0,13.6,16.2,14.0,13.2,14.5,14.7,13.2,14.0,13.8,13.6,13.9,13.4,13.5,12.7,15.2,15.1,15.6,13.7,13.3,14.5,13.5,15.2,17.0,14.2,13.7,13.9,13.8,13.3,15.4,13.7,13.1,13.5,15.6,13.6,13.6,12.9,14.3,15.6,14.5,14.4,13.5,16.3,13.9,13.6,16.4,13.9,14.0,17.5,15.9,13.0,13.9,12.9,13.2,16.2,16.0,13.0,16.7,13.6,16.0,13.0,14.2,13.9,16.9,13.7,13.9,15.6,13.9,16.7,13.5,13.5,13.7,14.0,14.0,14.1,15.7,14.1,17.9,13.6,15.9,15.8,13.6,13.7,16.2,12.6,13.6,14.1,13.9,14.1,16.1,15.7,13.2,13.6,14.0,15.1,13.6,18.5,16.2,14.1,16.5,13.5,14.5,15.0,13.3,14.7,15.1,13.7,14.8,13.1,13.4,16.2,13.5,16.0,16.8,18.3,14.1,13.6,13.6,14.8,14.2,13.6,13.5,13.6,16.3,14.0,14.9,14.2,16.1,12.3,17.5,15.7,14.0,15.9,16.0,13.8,15.7,13.6,13.9,13.2,32.5,13.2,16.0,12.7,13.2,13.9,14.4,13.9,16.1,13.8,16.0,13.6,13.7,13.2,15.5,13.6,13.7,13.6,13.5,13.8,13.2,16.4,14.4,13.3,13.9,16.0,14.3,14.2,15.3,16.5,15.0,13.6,16.3,13.1,13.2,14.4,15.4,13.4,13.9,14.2,13.3,13.2,13.9,13.8,13.8,13.5,14.2,13.3,14.0,13.3,16.0,13.7,14.3,16.1,13.5,13.7,17.2,13.6,16.0,14.4,12.8,12.6,13.8,13.4,13.4,13.5,14.8,13.7,13.6,13.7,14.0,15.6,14.8,13.8,13.2,14.3,13.5,13.5,14.7,13.2,15.2,13.6,13.6,13.5,14.0,16.4,14.2,13.6,13.7,13.3,13.0,13.3,13.7,13.8,15.3,16.1,14.1,13.8,14.0,13.8,13.4,14.4,12.8,14.2,12.8,14.1,14.1,15.0,13.7,13.5,13.6,16.1,11.9,13.3,13.8,33.9,14.4,13.5,13.9,13.4,13.7,12.8,13.8,13.2,14.0,16.0,14.8,14.0,12.8,13.5,13.8,13.9,14.4,13.6,13.7,14.2,14.5,13.8,14.0,14.0,13.7,13.5,15.6,16.9,13.4,15.8,12.4,13.3,13.9,13.8,14.0,13.7,16.3,13.8,13.4,15.1,13.4,13.4,13.7,13.9,15.8,14.2,15.5,13.3,13.5,14.9,13.7,13.8,14.1,16.0,16.1,13.6,16.6,13.2,15.5,13.3,15.9,13.6,13.6,15.8,13.5,14.2,17.1,13.1,13.8,12.4,13.7,13.8,13.8,13.9,15.8,16.2,13.9,13.9,14.0,13.8,13.4,13.7,12.8,13.6,14.8,16.0,17.4,14.0,13.6,13.5,13.7,13.3,13.9,13.6,13.9,14.4,16.0,11.9,13.1,14.0,16.1,14.3,13.6,14.6,14.5,13.8,13.3,13.5,13.7,13.6,14.0,13.6,16.0,13.9,13.7,13.3,13.9,15.8,13.6,13.6,13.6,13.2,14.9,13.6,13.5,13.7,13.5,15.5,13.8,13.7,15.2,14.2,13.8,12.9,13.6,14.1,14.0,13.7,13.4,13.8,15.9,13.7,14.1,12.8,13.3,13.5,13.5,13.3,15.3,13.8,13.5,13.8,13.6,13.5,13.6,13.2,14.1,15.9,12.6,13.8,13.8,13.5,14.0,13.4,13.9,14.0,13.9,13.4,13.4,16.8,14.0,13.9,13.9,13.9,13.7,13.7,15.0,14.0,12.4,13.5,14.3,13.6,13.8,14.5,13.1,15.7,11.8,16.4,13.9,14.8,13.4,13.4,14.3,16.5,14.4,12.1,14.3,13.8,13.7,13.3,13.2,15.6,13.6,15.1,13.6,13.8,13.9,14.0,13.3,13.4,13.1,14.4,13.7,18.8,15.9,13.4,15.5,14.3,14.1,13.2,13.8,13.8,13.9,13.9,13.6,13.9,13.7,15.5,14.9,13.9,14.0,12.7,13.6,13.8,14.3,14.1,13.7,13.8,13.0,13.2,16.2,15.6,16.2,15.6,13.7,13.4,14.3,16.2,13.4,13.5,16.8,14.3,13.8,13.8,13.6,13.8,13.5,13.6,13.5,13.2,15.6,14.1,14.0,13.9,13.9,14.3,14.1,13.4,13.4,13.5,15.4,13.5,13.0,14.1,13.9,13.1,15.7,13.9,13.7,13.8,13.6,13.4,13.5,13.7,14.1,12.6,13.8,14.6,14.0,13.5,16.2,13.7,16.4,14.6,14.3,13.8,16.7,13.7,13.6,13.3,14.0,16.2,14.4,13.6,13.3,14.0,12.7,13.6,13.4,13.8,13.6,16.5,13.7,13.8,12.8,13.9,16.9,13.6,13.6,13.3,15.6,13.1,16.4,15.5,12.9,13.9,13.9,16.5,13.9,14.1,13.3,14.6,13.8,13.7,13.6,16.9,13.9,13.6,13.8,15.9,16.2,15.4,14.0,14.6,13.6,12.9,13.9,13.7,13.1,16.2,13.6,13.1,13.7,13.9,13.8,15.5,13.2,13.3,16.0,14.3,15.2] + }, + { + "position": 94, + "values": [31.8,30.8,32.6,32.2,32.5,31.9,30.6,32.4,34.4,37.1,31.7,35.5,32.1,30.7,33.3,35.5,30.8,31.4,31.8,31.4,32.7,32.3,32.5,32.4,32.7,30.3,32.6,33.7,33.1,32.3,30.0,32.8,32.9,31.4,31.1,32.0,31.3,30.9,32.8,33.4,37.9,31.0,31.2,31.5,31.4,31.3,31.6,31.7,35.8,34.6,33.0,32.6,32.7,33.7,30.1,23.9,33.6,31.4,33.6,30.9,34.4,32.7,32.9,33.4,31.3,31.0,32.0,31.1,35.9,31.0,31.8,35.4,22.0,31.4,33.7,34.2,32.2,34.3,32.2,34.6,29.1,30.0,33.5,33.7,31.4,31.4,33.5,32.4,30.4,33.6,34.0,30.7,30.6,34.4,35.4,32.1,31.9,32.7,31.6,32.3,32.7,30.2,31.7,31.3,34.6,31.5,33.1,38.4,34.1,31.3,31.6,31.0,32.5,30.7,30.3,31.1,32.4,31.9,31.6,30.2,32.2,32.4,29.4,30.3,32.3,36.5,37.2,37.0,31.0,30.8,31.2,31.2,31.8,21.3,33.5,37.1,31.5,32.5,34.0,34.3,32.8,33.4,36.0,31.2,30.8,31.4,35.7,31.4,31.7,31.6,33.2,31.1,28.5,32.3,31.6,31.9,31.6,37.7,29.4,33.9,32.9,32.7,31.0,31.7,31.5,27.1,33.3,31.7,32.8,32.3,26.2,36.2,32.1,31.3,30.7,33.6,31.8,32.3,32.0,35.6,34.1,36.8,32.2,52.2,36.2,28.5,30.0,33.7,36.4,32.2,32.4,32.2,35.0,32.2,30.6,31.4,32.0,31.8,32.3,31.6,31.7,32.6,31.4,30.2,41.1,32.6,33.2,31.6,30.5,34.1,31.5,36.3,30.7,34.8,31.5,36.8,32.7,30.2,32.5,30.9,31.0,31.9,32.3,31.0,31.0,31.3,32.5,33.9,31.9,33.6,29.3,32.1,31.1,32.4,31.1,32.3,30.9,32.6,34.3,31.1,31.7,33.6,34.3,31.2,33.6,34.5,31.4,32.4,31.6,33.6,35.2,33.1,31.1,33.2,33.0,31.4,30.7,30.9,33.8,33.0,33.8,32.7,32.5,31.6,33.1,32.3,31.3,32.5,32.8,31.0,34.2,32.6,35.0,31.7,33.0,33.3,35.4,30.4,34.8,31.9,31.0,31.5,35.8,31.2,36.9,31.7,38.9,33.1,32.0,30.7,31.9,31.3,32.8,31.2,33.8,29.6,35.3,31.1,32.1,31.8,32.3,30.6,34.0,31.5,33.6,43.0,30.9,33.2,35.0,32.8,31.6,32.0,32.5,31.3,35.7,32.2,31.4,30.7,30.3,33.4,34.1,29.9,36.6,35.9,33.3,32.3,31.7,31.7,33.7,32.6,32.3,32.6,31.8,31.3,34.3,33.2,31.8,33.6,33.9,34.4,38.0,31.4,33.1,31.2,36.0,31.7,30.2,41.6,33.6,33.7,31.9,32.2,32.8,34.0,27.4,32.1,31.1,30.3,31.3,31.0,30.9,31.1,27.2,30.0,33.1,33.2,35.3,31.5,34.0,35.0,32.6,30.7,32.2,34.2,30.9,30.3,31.1,32.9,32.1,30.3,32.6,34.9,32.9,34.3,33.7,31.0,32.6,29.6,33.1,36.0,32.7,29.5,29.7,31.5,31.5,33.7,31.1,35.5,32.5,38.2,30.1,31.2,31.8,36.6,31.7,31.5,34.3,32.5,32.2,30.9,32.6,31.5,33.8,31.9,34.3,36.0,32.3,31.5,30.8,31.7,33.9,35.1,36.1,34.3,29.5,36.2,34.2,31.5,31.7,34.1,28.8,32.5,28.7,33.4,36.3,32.6,31.5,32.0,31.3,30.6,31.0,34.5,32.4,23.5,30.9,33.2,35.9,32.3,39.3,31.0,31.4,31.6,34.3,30.4,32.4,35.6,33.2,32.4,31.6,34.0,32.8,32.3,29.1,29.3,33.4,37.0,35.0,32.2,33.7,34.8,31.7,32.8,26.3,31.7,30.6,30.8,31.3,30.8,34.2,46.7,36.2,31.1,31.6,36.7,31.5,32.9,33.4,31.7,31.6,31.3,33.2,37.4,32.5,38.4,29.7,54.1,33.9,31.7,34.3,34.9,31.3,34.2,28.8,30.6,31.1,31.3,13.2,29.9,32.1,30.7,31.7,31.1,32.9,34.2,32.0,34.5,31.1,33.1,32.2,31.1,30.9,31.7,32.7,31.0,30.9,30.4,62.2,32.1,32.0,31.4,34.2,32.8,32.8,31.0,33.5,32.2,31.9,33.4,32.7,30.5,31.4,28.0,31.2,31.5,32.7,30.8,34.6,31.2,30.7,34.4,32.3,27.0,31.0,31.6,31.3,33.7,31.1,32.7,40.9,30.3,30.7,26.3,31.3,33.2,35.3,31.2,29.7,31.7,32.4,31.6,35.4,32.7,31.0,30.8,32.3,32.1,35.5,32.5,31.4,30.6,33.1,30.4,33.2,31.0,33.8,32.8,30.9,31.2,32.0,33.6,31.5,31.6,31.4,32.1,29.6,33.3,32.3,30.8,32.5,38.2,32.8,33.2,31.2,31.3,29.8,31.5,33.9,30.7,31.2,32.8,31.2,33.4,32.3,32.1,31.3,35.5,32.0,32.0,29.2,28.6,54.7,31.6,30.7,33.8,31.7,32.1,30.1,32.3,33.2,31.8,31.3,24.9,32.1,32.6,19.6,31.4,32.1,33.5,31.2,35.6,33.0,32.6,30.3,32.0,32.0,31.4,30.2,31.2,37.3,33.0,32.4,33.6,32.1,30.7,31.1,32.0,28.6,32.9,31.8,32.7,36.0,33.3,31.1,30.5,30.6,33.1,31.2,32.5,32.4,33.5,30.1,34.4,31.4,31.9,36.5,39.0,31.3,33.3,31.7,35.2,30.8,32.7,30.3,31.3,33.5,30.2,32.6,31.9,32.3,30.4,31.2,33.6,33.8,30.6,32.3,35.6,35.1,34.7,31.1,32.2,30.7,32.2,31.7,30.0,30.5,33.4,33.4,31.8,30.5,45.2,33.3,30.4,30.9,36.0,31.8,32.7,34.3,32.8,30.3,33.8,31.4,34.3,31.0,31.4,33.6,32.7,31.5,31.3,36.9,31.3,30.9,34.3,32.4,35.6,31.4,31.5,31.9,31.6,35.0,26.1,30.8,31.8,32.0,30.9,33.4,30.5,31.0,31.7,32.6,30.9,30.7,32.6,30.6,30.8,29.8,32.0,31.8,31.2,30.1,31.3,34.6,30.8,32.7,31.2,31.0,30.6,31.0,30.3,36.5,33.1,32.2,31.7,31.5,32.1,31.8,30.9,30.5,31.8,31.8,38.1,31.8,33.6,31.8,32.0,30.6,31.7,32.6,32.9,30.6,30.4,36.9,32.8,31.4,33.4,31.1,31.5,30.0,34.1,32.0,34.5,33.3,30.2,31.7,31.4,33.0,30.1,31.1,32.1,34.5,36.4,33.0,32.4,33.0,32.1,33.5,32.1,29.0,32.9,31.1,30.6,30.7,31.6,31.9,32.3,31.8,33.2,30.9,28.7,32.2,31.8,33.5,30.0,33.9,33.4,33.9,37.2,31.2,34.6,32.9,33.7,31.4,35.2,31.8,31.4,33.0,32.3,31.3,39.4,30.5,34.8,31.4,30.9,32.0,31.7,32.1,32.3,32.4,32.7,32.7,64.1,29.0,32.4,30.5,34.3,34.8,33.7,31.5,33.2,39.0,32.5,30.7,30.5,38.2,32.4,34.1,33.3,30.8,33.2,31.8,29.8,30.2,31.0,34.1,33.1,32.4,31.7,32.7,31.8,33.6,32.5,30.8,32.6,34.1,32.1,31.9,33.2,30.7,32.6,35.1,32.0,31.5,30.9,34.3,31.2,33.4,31.6,32.0,31.6,31.5,32.5,30.8,33.5,36.4,30.7,30.7,32.2,30.6,31.3,30.6,32.4,33.5,31.3,31.4,34.8,31.5,32.3,32.5,31.2,31.8,31.9,36.5,30.8,30.9,40.7,31.4,30.0,32.0,31.1,31.6,31.6,32.1,30.4,38.1,31.4,29.9,29.3,31.0,33.5,31.2,34.8,31.3,32.1,29.5,32.6,32.1,33.0,31.6,37.0,31.7,30.4,31.3,36.1,34.2,34.6,33.1,32.1,30.1,30.3,34.1,52.8,30.8,34.1,32.9,33.6,33.2,32.2,32.9,28.3,31.3,33.4,32.3,33.4,36.8] + }, + { + "position": 95, + "values": [17.2,16.4,16.6,17.2,17.2,17.7,16.0,16.9,21.1,17.2,17.1,15.6,17.5,16.5,17.8,15.4,16.4,16.3,14.4,17.0,17.1,17.1,17.7,14.6,16.6,14.6,18.4,17.0,16.2,16.2,16.0,15.3,16.2,19.5,16.5,17.4,16.3,19.4,22.9,16.6,17.9,16.7,16.4,16.1,16.4,16.6,16.9,16.4,17.2,17.5,15.9,20.2,23.3,17.8,16.0,18.3,18.7,19.3,16.8,20.3,14.5,15.8,17.1,18.3,16.4,16.6,16.7,18.5,15.8,18.3,20.3,14.8,16.2,18.2,18.3,17.1,16.9,17.3,17.2,17.5,16.3,16.3,17.2,17.0,16.8,16.7,16.0,16.7,16.8,18.0,18.9,15.3,16.4,18.7,18.9,16.4,18.7,16.2,16.6,16.5,16.0,17.0,16.4,16.1,17.4,16.4,16.7,20.2,18.4,16.5,16.6,14.5,15.6,16.1,16.7,17.1,17.0,17.1,17.6,15.0,17.1,16.6,15.4,16.4,16.9,20.0,19.3,19.0,16.4,16.5,16.7,16.9,17.2,20.3,18.8,18.8,16.4,17.0,17.0,17.0,17.5,16.0,16.9,18.3,15.9,16.6,19.1,16.7,16.7,16.9,16.3,14.4,17.6,16.5,15.3,16.7,16.7,19.0,15.2,16.5,17.3,18.7,16.4,16.5,16.5,17.1,17.6,16.5,16.8,17.1,15.2,16.7,16.9,16.8,17.4,16.0,16.2,16.4,17.9,18.9,17.1,17.8,16.6,17.3,32.2,16.5,14.7,16.8,15.8,19.2,17.2,18.6,16.6,17.0,16.7,16.1,17.3,16.5,14.7,16.9,17.1,17.8,15.0,14.9,23.9,16.3,15.0,16.7,16.9,16.9,14.4,19.5,18.4,17.2,16.2,16.4,17.4,16.6,19.2,16.2,16.4,16.9,15.6,16.4,16.8,16.7,17.1,17.2,15.0,16.9,14.0,16.5,16.6,17.1,16.7,14.4,16.4,16.2,14.8,16.7,18.6,17.7,16.0,16.2,14.8,18.8,16.7,16.8,15.3,19.4,17.7,16.8,16.5,16.9,16.5,14.8,15.9,16.3,18.5,14.7,17.1,17.0,15.0,18.1,16.5,16.2,16.7,15.4,18.1,15.1,16.8,14.9,18.6,17.5,15.4,18.3,18.7,15.9,18.6,22.7,16.6,16.2,14.7,16.6,18.0,15.4,24.4,16.3,18.4,16.8,16.6,17.0,16.2,16.6,17.8,18.4,17.1,17.3,16.3,17.8,17.4,16.2,17.1,15.2,19.0,19.2,16.5,17.1,18.6,16.9,16.3,16.7,18.6,18.0,19.5,16.9,14.8,16.2,16.6,19.1,15.0,17.7,17.8,16.0,17.3,16.8,16.7,17.0,17.4,16.6,18.6,17.0,15.6,14.4,19.3,16.5,16.4,18.7,16.7,16.2,20.4,16.5,18.3,16.6,18.4,16.5,13.6,18.8,19.0,16.7,17.6,17.2,17.0,17.1,18.6,16.3,16.8,16.4,15.9,15.5,16.4,16.1,15.0,16.5,16.3,18.0,16.4,17.5,16.2,16.4,16.8,15.3,15.3,15.8,15.6,17.4,16.5,16.7,16.6,16.4,16.7,19.5,18.3,17.9,16.8,16.5,17.4,17.0,16.6,19.5,17.8,16.9,16.7,16.6,16.2,18.7,16.6,22.7,16.2,19.4,17.6,16.8,16.4,15.6,17.0,15.1,18.3,16.6,18.8,16.5,16.1,17.7,19.4,17.0,20.7,18.4,17.1,14.5,16.8,16.1,19.2,17.8,15.7,18.6,16.3,18.5,16.1,14.8,16.7,16.2,18.9,16.6,18.5,17.0,19.9,16.0,16.4,16.7,16.8,16.5,16.8,19.1,16.5,16.8,16.4,19.1,19.1,16.7,15.3,15.1,18.0,16.7,17.6,16.8,16.9,18.7,16.3,18.7,16.4,16.9,18.0,17.8,20.6,18.4,15.2,17.7,17.4,15.1,18.0,17.8,15.8,16.1,14.6,16.3,16.5,16.0,17.8,19.0,16.1,24.4,16.1,21.1,16.0,17.1,16.7,16.5,15.8,16.8,16.5,18.5,16.6,15.6,17.0,19.4,14.5,25.1,18.4,16.9,18.4,17.5,16.7,17.0,14.9,16.7,15.7,33.7,16.6,17.1,16.4,16.2,14.9,16.5,14.7,19.0,17.0,18.4,16.9,17.8,16.6,15.2,16.8,16.6,16.9,16.1,16.6,16.4,24.2,17.2,16.7,16.0,16.8,18.6,15.4,19.6,18.2,18.3,17.0,16.9,16.5,17.2,15.7,18.6,16.3,16.9,14.6,16.1,17.2,16.5,16.6,14.6,16.8,17.3,16.0,16.8,16.5,16.7,16.8,19.2,19.6,15.9,19.0,16.0,17.0,17.2,18.9,16.2,13.3,17.0,16.7,16.8,17.0,15.4,16.5,16.7,16.4,17.5,17.8,18.4,16.3,16.5,16.1,14.8,16.5,16.3,17.2,17.9,16.3,14.5,16.3,16.9,15.1,18.7,16.6,14.7,16.4,17.1,16.2,16.5,16.8,19.2,17.0,18.4,16.4,16.8,15.4,16.0,17.4,15.2,16.5,16.6,16.8,15.2,17.5,17.1,16.8,19.3,17.0,16.5,16.9,12.7,34.5,16.7,16.1,14.9,16.3,16.8,16.5,16.0,16.8,14.9,17.0,17.8,15.8,17.2,14.8,17.0,16.3,16.9,14.5,17.4,15.7,17.7,16.2,14.8,16.9,16.6,16.5,16.4,25.2,18.6,17.9,16.6,16.8,16.3,16.7,15.1,18.7,16.6,16.5,16.0,16.6,16.4,16.4,16.4,16.4,18.7,16.9,18.2,16.2,16.3,14.2,18.7,16.3,16.8,17.0,19.2,16.3,20.1,16.8,18.4,15.8,18.7,16.5,16.1,19.0,16.4,17.1,16.6,16.5,16.3,16.1,14.9,15.0,16.4,16.9,18.8,18.6,16.9,16.8,16.8,16.5,16.5,14.5,17.0,15.8,16.1,18.8,16.9,19.6,17.0,16.4,16.0,16.0,14.8,17.5,17.2,17.3,18.8,14.7,16.0,16.7,17.0,17.2,16.5,17.6,15.3,14.6,16.3,17.8,16.5,16.6,16.4,18.7,16.7,14.7,16.5,16.7,15.0,19.2,14.7,16.4,16.2,18.9,16.7,16.5,16.5,16.7,16.8,18.5,15.1,16.7,16.0,18.7,16.0,15.0,17.5,15.0,16.5,16.8,16.5,17.0,16.5,16.7,16.7,16.0,16.1,16.3,17.9,16.3,18.5,16.6,14.5,16.3,16.4,14.2,16.7,16.4,16.8,17.0,16.1,23.6,16.5,16.7,16.4,15.4,16.7,14.3,16.7,16.0,21.2,16.5,16.9,16.7,17.0,16.5,17.1,16.3,18.6,17.7,15.4,15.1,16.5,14.7,16.5,15.9,15.4,17.1,15.7,18.9,18.1,15.9,16.5,15.5,17.0,18.9,14.9,14.9,16.7,17.1,16.1,14.6,16.4,18.0,16.6,18.6,16.8,14.8,16.6,16.4,17.0,16.3,16.1,16.1,18.3,19.0,21.4,16.2,16.3,15.3,17.3,16.7,17.1,14.8,16.8,17.0,16.5,14.8,16.7,19.5,16.6,16.7,16.4,17.8,16.5,17.4,16.8,15.9,17.0,17.3,15.8,15.7,17.8,18.9,17.6,19.0,16.3,17.3,18.0,18.5,16.2,17.3,16.6,17.4,17.0,16.6,16.3,17.0,17.2,16.4,17.6,16.0,18.4,15.5,16.7,17.0,17.0,17.1,15.1,22.4,16.5,16.5,17.7,17.7,16.7,16.3,16.8,16.3,19.2,17.1,17.0,16.7,16.5,22.1,17.0,16.7,16.8,16.3,14.6,17.9,14.3,16.8,17.2,16.9,18.8,16.0,16.9,16.5,18.7,16.9,16.7,16.3,16.7,17.0,18.2,16.6,17.1,15.4,16.5,16.6,17.8,16.5,18.8,16.3,16.6,17.8,16.6,16.4,19.7,16.3,16.1,16.0,18.0,16.2,18.8,20.2,16.3,15.6,16.9,23.8,16.9,14.7,14.2,16.9,16.5,16.9,16.4,18.1,16.7,15.7,19.0,16.7,19.0,18.3,17.0,15.3,16.5,15.7,17.3,23.6,16.6,19.8,16.9,16.4,16.9,16.4,16.4,18.1,16.7,16.2,18.4,14.9,17.1] + }, + { + "position": 96, + "values": [26.3,25.5,25.0,25.5,25.3,25.5,25.0,26.0,28.1,27.6,26.1,24.8,27.0,25.3,26.6,25.3,26.0,25.3,25.4,25.6,24.7,26.6,26.6,26.6,25.3,26.2,24.6,25.4,25.9,26.1,25.7,26.3,24.7,25.3,25.6,24.0,24.4,26.1,25.3,25.5,25.5,26.1,25.2,24.6,25.1,25.6,25.6,25.3,26.8,25.3,25.5,26.1,24.8,25.6,25.3,20.2,27.4,25.2,26.4,25.2,28.8,26.6,24.3,26.9,25.3,25.6,25.0,26.2,25.1,27.2,25.4,27.4,28.1,28.2,26.9,25.4,26.5,25.5,25.8,26.1,25.3,25.7,26.4,25.5,24.5,25.0,25.0,26.4,26.8,25.7,27.5,24.5,25.7,28.1,26.8,25.0,26.2,24.9,25.2,26.0,27.4,25.8,25.5,25.5,25.2,24.6,26.3,28.0,27.5,25.6,25.9,25.0,25.0,24.5,25.9,26.4,25.6,26.6,25.3,25.5,25.8,25.4,25.2,24.9,24.8,30.5,29.0,26.4,25.0,24.9,25.4,25.3,26.6,33.8,26.0,27.5,25.6,25.5,24.5,25.0,26.6,25.9,26.6,25.7,25.9,26.8,25.6,25.3,25.5,25.8,25.3,22.9,25.9,27.0,23.6,25.3,25.9,23.6,28.6,26.0,25.2,26.5,25.5,25.2,25.6,28.2,26.2,25.6,26.4,25.6,25.7,24.9,25.6,26.4,25.6,25.7,25.7,26.6,24.8,26.5,26.5,26.9,26.0,30.0,23.9,23.7,25.4,25.4,25.1,27.8,26.0,24.8,25.7,25.9,25.8,24.7,25.7,26.9,23.9,24.9,25.4,25.5,25.3,24.7,34.5,25.0,24.6,25.4,26.0,26.4,24.5,26.4,27.4,25.2,25.3,27.1,24.9,27.4,25.7,25.2,25.7,25.8,25.7,25.2,25.3,25.6,24.3,26.6,25.1,25.3,24.6,25.5,25.4,26.5,24.9,24.3,25.4,24.6,25.0,25.6,28.3,24.5,24.9,25.3,26.6,24.4,25.4,25.3,24.6,25.2,26.8,25.0,25.6,24.2,24.5,26.1,25.0,24.9,27.5,26.0,25.4,26.1,24.6,24.9,25.3,25.5,25.3,25.7,25.8,25.7,25.7,25.1,28.1,25.4,26.8,26.3,27.2,24.9,26.9,25.5,25.6,25.3,24.5,24.9,26.5,24.5,26.6,25.7,25.1,25.2,24.9,25.5,27.0,24.9,28.5,26.2,25.6,25.4,26.1,25.8,24.8,27.2,25.1,26.3,25.5,27.9,27.1,27.8,25.9,25.3,25.3,25.5,27.5,26.0,26.7,25.6,24.4,25.0,25.1,26.7,25.4,25.3,26.4,28.1,27.8,24.9,25.2,25.7,24.8,25.9,24.4,27.7,26.0,24.4,25.3,26.7,25.1,25.8,25.8,26.4,25.7,25.3,27.1,25.2,27.7,25.4,23.3,33.7,25.6,26.3,25.7,25.8,25.3,24.2,28.9,24.9,25.7,25.5,25.4,25.3,24.5,24.8,24.6,24.4,24.9,26.4,26.0,25.6,26.3,26.9,25.2,24.5,25.4,25.7,25.0,24.7,25.8,25.2,24.4,25.6,24.5,27.6,26.9,27.3,25.2,25.4,26.1,25.4,26.5,28.2,26.5,25.9,26.0,25.4,26.7,25.6,25.8,25.2,30.4,27.0,26.1,25.5,25.7,27.3,25.3,25.1,24.9,26.1,25.1,25.5,25.6,29.1,25.7,25.3,28.2,30.2,24.4,24.9,24.9,24.7,27.7,27.0,25.2,27.6,25.8,27.5,25.4,25.4,25.1,29.9,26.7,25.7,27.4,25.1,23.5,24.6,24.8,26.0,25.9,24.9,27.3,25.8,25.2,25.3,25.8,26.3,26.1,25.5,28.5,24.3,24.6,25.1,26.1,25.8,34.4,26.6,26.1,25.2,25.5,27.9,26.3,25.4,29.6,25.1,28.2,26.7,27.9,24.9,27.5,27.9,23.3,27.3,24.4,24.9,24.7,25.0,27.0,24.8,27.4,11.3,28.0,25.5,24.3,25.6,25.3,24.9,26.3,25.1,25.7,25.4,27.1,25.4,26.2,26.3,22.8,26.4,27.4,25.4,27.0,26.5,25.5,27.0,23.0,24.4,26.0,17.0,25.0,27.6,25.5,25.2,25.0,25.0,25.2,27.3,25.1,27.3,24.0,25.5,25.0,25.8,25.8,25.1,24.7,25.9,24.8,24.7,30.1,26.2,25.3,25.6,25.1,26.6,25.1,27.1,26.7,25.7,25.8,27.1,25.8,24.4,26.0,25.9,24.5,25.6,25.2,24.9,25.4,25.9,26.0,24.4,24.9,27.3,26.1,25.3,26.0,26.0,25.4,25.1,26.4,25.1,24.3,29.1,25.5,27.0,25.9,25.1,23.4,25.6,25.4,25.8,25.2,24.4,25.5,25.6,25.4,26.2,27.5,26.2,25.4,25.3,25.4,24.9,25.6,26.7,26.9,24.7,25.3,24.8,25.3,25.7,26.2,26.1,24.8,25.1,25.6,25.1,24.8,25.8,25.4,25.5,26.5,23.6,24.9,26.0,25.4,25.3,25.4,25.8,25.3,25.2,24.1,25.3,26.8,25.3,25.5,24.4,26.7,25.9,25.0,22.5,46.0,25.7,25.4,24.8,25.2,25.6,25.9,25.0,24.3,25.4,27.1,26.3,25.3,25.5,26.0,26.0,25.8,25.8,24.4,25.0,25.8,26.4,25.9,24.7,25.6,25.5,25.6,28.4,24.7,26.0,25.2,25.3,25.4,25.6,25.6,25.3,22.3,26.7,25.7,25.5,24.2,25.7,24.8,25.2,25.8,27.4,26.6,27.7,24.5,25.2,26.8,26.5,24.3,25.9,28.1,29.5,25.1,27.5,24.8,26.4,24.5,27.9,25.5,25.2,26.2,26.4,25.7,25.5,25.5,24.7,25.3,24.6,25.0,25.8,26.2,26.7,26.7,27.1,26.4,26.1,25.2,24.5,25.0,24.9,26.3,24.9,26.6,26.0,24.1,25.8,25.4,25.4,25.7,25.2,25.7,25.5,25.9,27.2,21.7,24.2,25.2,27.1,26.3,25.7,25.8,26.3,24.9,25.1,26.7,25.5,25.5,26.4,24.5,26.6,25.4,24.7,25.9,25.3,27.3,24.2,25.7,25.6,25.1,25.6,27.2,25.8,25.9,25.3,26.5,24.4,25.5,25.3,26.9,25.3,24.8,25.5,25.5,25.4,25.6,24.7,25.3,27.1,25.6,25.1,25.0,24.2,25.4,25.9,25.1,25.3,25.6,25.1,25.6,25.7,25.2,24.6,25.3,25.2,24.4,25.1,26.4,29.4,25.2,25.3,25.3,25.1,24.7,25.4,25.8,25.3,29.2,26.2,25.4,24.8,25.5,25.1,25.8,27.1,25.9,25.3,25.3,25.3,24.4,26.0,25.1,24.8,24.9,22.9,25.7,27.2,26.6,25.6,26.3,25.3,25.8,25.6,23.4,25.8,25.6,25.6,24.4,25.4,25.4,25.3,27.9,25.0,25.3,26.1,25.5,25.0,25.1,24.9,25.7,26.0,28.3,27.7,25.3,26.9,25.1,25.4,24.7,26.3,24.2,25.8,24.8,25.8,25.4,26.9,25.7,25.6,25.3,24.6,27.3,24.8,25.4,26.0,25.7,25.4,24.1,33.7,24.4,25.4,27.5,26.2,26.4,26.2,25.7,24.3,25.0,26.4,25.6,25.3,26.8,26.1,25.3,25.7,25.6,24.9,25.5,25.3,25.7,24.2,26.7,25.7,25.3,25.9,25.5,26.1,25.0,24.7,36.1,25.1,28.1,25.4,25.2,25.9,25.9,24.2,27.2,25.4,25.6,25.4,22.1,25.7,24.5,25.8,25.8,26,24.9,26.7,24.5,24.0,26.4,25.6,25.7,27.6,25.4,23.7,27.2,25.2,24.3,25.4,25.2,26.5,25.8,25.2,25.1,25.5,24.3,25.3,29.1,25.6,25.9,29.6,25.9,26.4,23.9,25.6,27.5,25.2,25.0,25.2,28.0,24.9,28.9,27.0,24.9,25.6,25.7,26.7,25.5,26.3,24.4,26.0,25.7,26.0,25.5,27.7,25.7,25.5,27.4,25.3,26.8,27.8,26.3,25.7,25.6,23.9,27.2,32.6,25.2,26.3,23.9,26.6,25.0,24.8,25.9,23.5,23.8,24.5,25.7,26.9,27.1] + }, + { + "position": 97, + "values": [18.5,17.6,17.8,18.5,18.5,20.1,17.3,18.2,19.8,19.3,18.1,18.4,17.2,18.0,18.4,17.1,17.5,17.8,16.6,18.3,18.1,18.5,18.6,17.4,16.3,16.4,20.0,17.9,18.2,16.9,17.4,17.3,18.6,19.9,17.5,18.8,17.8,19.8,17.8,18.5,17.7,18.8,18.1,17.5,17.0,18.0,17.8,18.3,19.5,19.3,17.2,19.9,22.4,18.0,17.0,19.5,19.2,21.0,17.7,20.8,16.0,17.1,19.5,19.5,17.9,17.9,19.0,19.6,17.2,19.4,20.2,16.5,16.7,19.1,19.6,18.3,18.4,18.6,18.8,19.1,17.9,17.3,18.4,17.9,18.3,17.7,17.9,17.6,19.7,19.1,18.1,19.7,17.4,16.8,18.5,17.8,18.9,18.0,18.2,17.4,18.0,18.7,18.0,18.6,17.2,18.6,19.3,17.7,19.2,18.5,18.1,18.0,17.5,16.6,18.0,18.5,18.2,18.4,18.1,16.7,18.0,17.8,16.9,17.6,17.7,21.8,19.5,20.8,17.8,18.0,17.7,18.7,17.9,19.6,19.6,19.0,17.8,18.0,17.8,18.0,19.2,17.5,18.2,19.1,16.5,18.3,20.5,17.9,18.2,18.2,17.5,15.7,17.7,19.6,15.6,18.3,18.2,16.7,18.3,18.4,19.6,19.7,17.9,17.7,18.0,17.8,19.0,18.1,18.0,17.3,16.9,18.8,18.2,18.3,17.5,18.6,18.3,18.7,17.4,19.6,18.2,18.2,18.3,18.6,38.2,17.1,16.2,18.8,17.7,19.4,18.7,17.2,19.8,18.4,18.2,18.0,18.1,17.7,16.9,18.2,17.8,20.5,17.3,17.0,23.4,19.5,16.6,17.8,18.4,18.0,16.6,20.0,19.2,19.2,18.1,17.6,18.8,18.2,19.8,17.4,18.0,18.0,16.6,18.1,17.8,18.2,18.4,18.3,18.5,17.5,15.8,19.0,17.8,18.5,18.4,16.5,17.4,17.8,16.8,18.0,19.1,19.3,17.8,17.6,16.8,19.9,18.0,17.9,18.4,16.7,19.6,19.0,17.9,18.1,18.2,17.2,17.8,17.6,19.6,16.5,18.3,18.8,17.0,18.7,17.7,18.1,18.0,17.0,20.6,16.9,18.2,16.3,18.3,16.7,20.1,18.9,20.0,17.3,18.9,20.8,17.6,18.1,16.6,18.1,18.1,17.5,21.0,17.8,19.1,18.0,17.5,18.2,18.2,17.5,18.9,19.7,19.0,18.7,17.7,17.7,17.1,18.4,18.0,19.8,16.4,18.8,18.2,19.2,18.6,18.1,18.2,18.0,19.4,18.0,19.9,18.1,17.7,16.2,17.8,19.5,16.9,18.9,18.9,17.5,19.8,18.2,18.3,17.9,17.3,17.8,19.4,19.5,17.2,16.2,21.6,19.5,18.0,19.3,16.8,18.5,22.8,18.0,20.4,17.9,20.5,17.9,15.2,20.8,19.1,18.4,18.8,18.4,18.1,19.0,18.9,17.7,18.2,17.7,17.1,17.5,18.5,17.0,16.7,17.9,18.1,20.1,17.5,17.9,18.0,17.7,18.4,17.6,17.1,16.8,17.4,18.0,17.6,18.7,18.0,17.7,18.0,22.3,19.3,20.9,19.8,17.4,19.5,18.3,19.0,18.2,20.7,18.3,18.2,17.7,19.8,17.7,18.1,35.5,17.4,18.3,20.4,17.8,17.7,16.6,18.3,16.6,20.9,17.9,19.1,17.5,18.1,19.9,18.6,17.7,20.6,19.2,17.5,15.6,18.3,17.3,20.0,17.8,16.9,18.9,17.6,19.9,18.9,16.6,17.7,21.0,17.8,18.1,17.8,19.9,17.6,19.9,18.2,18.5,18.3,17.7,17.6,19.3,17.6,19.7,18.0,19.9,19.7,18.0,17.7,17.4,16.7,16.5,19.0,18.1,17.9,19.1,18.0,19.1,18.2,20.0,18.6,20.5,19.2,18.2,16.7,18.8,19.2,18.5,17.2,19.9,16.7,18.3,16.5,18.4,17.0,17.3,18.6,17.6,18.9,19.5,17.1,21.4,18.2,18.3,18.1,18.1,17.8,17.8,18.0,19.2,18.0,15.8,18.0,20.2,15.2,37.8,18.9,19.3,17.9,17.7,18.0,18.3,16.5,18.3,17.5,25.3,18.0,18.2,18.8,17.9,16.9,18.1,16.6,19.3,18.3,19.2,18.0,19.2,17.1,18.0,18.1,17.6,17.8,17.3,17.9,17.7,19.2,18.9,18.5,17.1,18.1,19.0,17.1,19.8,19.5,19.1,18.1,18.2,18.4,17.1,18.3,20.3,17.5,17.7,16.4,18.1,19.0,18.0,18.0,16.5,19.7,17.9,17.8,17.8,18.0,18.0,19.0,18.2,19.0,16.4,17.2,19.3,18.5,18.6,19.0,17.9,15.3,18.0,17.7,18.2,16.6,18.2,17.5,18.2,17.9,18.6,18.8,19.2,17.7,17.8,16.8,17.5,19.5,17.7,19.1,18.6,17.8,16.1,18.0,18.4,16.8,19.0,18.0,16.7,18.0,18.7,17.9,17.8,19.5,18.4,18.9,18.0,17.5,18.9,17.3,17.5,18.9,17.1,18.0,16.8,17.7,18.9,18.9,18.2,18.3,18.1,19.2,14.6,17.9,18.1,35.2,17.6,17.3,16.8,17.6,17.8,17.9,17.4,18.3,16.7,18.1,17.7,17.1,16.2,19.8,17.1,18.0,18.2,16.2,18.5,17.0,18.4,17.7,16.5,18.5,17.6,18.1,20.4,19.1,17.9,18.3,18.9,18.0,17.5,18.2,16.8,19.4,17.6,17.9,16.1,18.5,17.8,17.8,17.4,17.7,19.0,18.1,19.1,18.6,18.9,17.7,16.2,17.2,18.0,18.7,18.9,17.8,20.0,17.2,19.4,16.9,19.2,17.8,17.7,20.0,17.7,19.4,17.1,17.5,17.2,17.6,16.8,16.6,17.9,18.5,18.6,20.2,17.4,17.6,18.2,18.7,19.1,17.8,17.5,16.3,17.9,19.8,18.2,18.3,20.1,18.0,17.3,16.9,20.1,16.7,18.0,18.4,18.4,16.1,17.5,17.8,17.5,19.0,17.9,17.6,16.9,16.5,17.7,17.2,17.9,17.8,18.2,17.7,19.4,16.4,18.2,18.9,16.7,18.9,16.4,17.9,18.0,18.6,18.2,19.5,18.0,18.2,18.0,19.1,17.9,16.5,16.9,19.3,17.0,17.0,16.6,19.7,17.5,18.4,18.0,17.6,18.2,18.6,18.0,17.6,17.5,17.6,20.1,17.5,19.2,18.2,16.2,17.7,17.1,15.9,18.0,18.1,17.8,17.5,18.0,17.4,24.0,17.8,17.4,18.1,16.3,17.3,17.8,17.5,21.0,17.9,19.4,17.8,17.2,17.9,18.3,17.8,18.2,18.0,16.8,17.1,17.9,17.6,16.7,16.9,17.3,18.2,16.7,20.5,20.0,17.8,18.4,18.9,16.7,18.5,16.9,16.3,17.9,18.1,17.9,16.3,17.5,18.7,18.7,19.3,17.8,16.7,17.8,18.1,19.2,18.0,17.8,18.1,20.7,19.1,20.8,18.4,17.6,16.7,19.8,16.3,18.5,17.7,18.1,18.3,18.5,16.6,20.0,18.1,19.2,17.7,17.6,17.6,18.0,17.9,18.8,17.4,17.9,49.7,18.6,16.7,17.1,19.0,18.5,18.2,20.3,18.3,19.3,17.9,18.8,17.9,17.9,18.4,18.5,19.2,17.9,17.8,17.9,18.3,17.4,20.6,17.6,19.0,16.6,18.0,18.0,18.4,18.5,16.9,18.0,18.6,18.4,19.8,17.9,19.0,18.5,18.1,19.4,18.2,18.1,17.6,23.6,17.6,18.0,17.7,18.2,18.3,16.5,19.6,15.7,18.9,18.4,18.1,18.5,18.1,19.7,18.3,18.1,18.1,17.9,17.2,17.8,20.8,18.7,18.1,18.3,17.8,17.2,17.8,19.9,17.7,17.9,20.3,20.6,17.9,17.9,17.8,20.7,17.8,17.1,17.4,19.7,17.8,19.4,17.7,17.0,17.9,18.0,24.1,18.6,16.4,16.2,18.2,18.0,17.9,19.7,17.9,17.8,17.2,17.8,19.4,19.1,18.1,18.6,17.1,17.9,17.1,17.1,23.8,17.9,19.9,19.2,17.7,18.1,17.9,17.7,20.0,17.9,17.9,18.9,16.6,18.9] + }, + { + "position": 98, + "values": [10.4,10.1,10.5,10.0,10.1,10.5,10.1,10.1,11.0,10.4,9.9,9.6,9.4,10.0,10.0,10.5,10.0,10.1,10.2,10.0,10.2,10.7,10.7,10.0,10.2,11.2,10.1,9.9,9.9,10.0,9.9,10.5,9.6,10.6,9.6,9.8,9.8,10.8,10.1,9.4,10.8,10.2,10.3,10.0,9.6,10.2,10.0,10.1,10.3,10.1,10.0,11.0,10.3,9.9,9.9,10.4,12.0,10.8,10.0,11.0,9.9,10.1,10.2,10.3,10.7,10.1,9.7,11.0,10.3,9.7,10.1,10.9,9.9,10.8,10.9,10.3,10.9,10.1,10.3,10.2,10.1,10.1,10.5,10.3,10.1,10.3,9.4,10.4,10.7,10.7,9.9,9.9,9.9,11.0,10.9,10.3,10.8,9.6,10.2,10.0,10.2,10.4,10.1,10.4,10.2,10.0,10.1,10.8,10.7,10.2,10.1,10.6,10.7,10.0,10.2,10.1,10.4,10.3,10.2,10.1,9.9,10.1,10.0,9.6,11.9,9.9,11.2,10.9,9.9,10.1,9.8,10.0,10.6,10.4,10.9,10.1,11.0,10.1,10.1,10.5,10.2,10.0,10.3,10.5,9.7,9.8,10.5,10.2,10.0,10.2,9.0,9.9,10.4,10.2,9.6,10.3,10.1,11.1,9.4,10.6,10.6,10.5,10.0,10.1,10.0,10.2,10.2,10.2,10.0,10.1,10.4,10.2,10.9,10.3,10.4,9.9,9.9,9.8,10.6,10.9,10.7,10.6,10.1,27.7,10.4,9.7,10.1,9.8,10.5,10.1,10.4,11.0,9.8,10.1,10.0,9.7,10.4,10.3,10.2,10.2,9.9,10.8,10.4,10.0,12.7,10.2,9.9,10.2,9.8,10.8,9.8,11.0,9.5,10.8,10.2,10.3,10.4,10.2,10.5,9.9,10.2,10.4,9.7,10.0,10.2,10.2,10.2,10.4,10.3,10.6,9.6,10.0,10.0,10.4,10.1,10.2,9.9,9.8,10.1,9.9,10.7,9.6,10.2,9.9,10.2,10.6,10.2,10.3,10.7,10.3,10.1,10.1,10.0,9.7,10.5,10.4,9.5,10.0,11.2,10.4,9.8,10.4,10.2,10.8,10.0,9.6,10.0,10.7,10.7,10.3,10.0,9.8,10.9,10.1,10.2,10.9,11.3,9.7,10.7,10.2,10.1,10.0,10.2,10.0,10.3,10.0,10.1,10.3,10.1,10.0,10.2,10.0,11.0,10.0,10.6,10.7,10.1,10.1,10.5,10.3,9.8,10.1,10.9,10.3,9.8,10.3,10.5,10.5,10.1,10.0,10.1,10.1,10.4,10.3,10.9,10.3,9.6,9.9,10.1,10.9,9.8,10.0,10.4,10.4,10.4,10.4,9.8,10.3,10.1,10.1,10.6,10.1,10.0,9.9,10.6,10.5,10.3,10.0,9.8,10.7,9.2,10.2,10.5,10.1,11.5,10.0,9.4,11.1,10.8,10.5,10.3,10.0,10.3,10.2,10.3,10.0,10.4,10.3,10.3,10.2,9.8,9.7,9.8,10.2,9.7,10.3,10.7,10.2,10.4,10.0,9.8,10.4,9.9,10.5,10.3,10.1,9.9,10.2,9.9,10.0,10.0,11.4,10.9,11.5,10.2,9.8,10.5,9.4,10.5,9.9,10.6,10.0,10.2,10.1,10.3,11.5,10.1,9.7,17.6,10.6,10.7,9.7,10.0,11.5,9.8,10.1,10.1,10.2,10.8,10.0,10.2,10.6,10.4,10.4,10.9,10.4,10.2,9.2,9.7,9.7,10.9,10.6,9.8,10.4,10.0,10.8,9.8,10.4,10.1,11.3,10.3,10.1,10.7,9.8,10.2,11.8,9.9,10.2,10.1,10.1,9.7,11.6,10.0,12.3,10.3,10.9,10.0,10.1,10.6,9.4,9.8,9.8,10.7,10.1,10.7,10.2,10.7,9.7,10.0,10.7,10.8,10.8,10.4,10.0,10.8,10.5,9.9,10.2,9.5,9.5,11.2,11.0,9.7,9.7,9.9,10.1,10.8,10.3,9.7,10.9,10.0,11.6,10.0,10.3,10.5,10.8,10.2,9.8,10.1,10.7,9.9,9.6,10.2,9.2,11.1,9.6,10.4,10.2,10.7,10.5,10.1,10.5,9.9,10.2,9.8,18.9,10.0,10.7,10.4,9.6,10.1,10.3,10.3,10.5,10.2,10.6,9.8,11.1,10.1,9.7,9.8,10.1,9.5,10.1,9.8,10.2,9.6,10.5,10.0,9.9,10.7,10.7,10.0,11.0,10.9,10.4,10.4,10.8,9.9,10.3,9.8,11.0,9.8,10.2,9.9,9.9,10.4,10.1,10.1,9.7,10.0,9.8,10.0,10.1,9.9,10.4,10.0,10.4,10.2,9.6,10.1,10.7,10.3,10.7,10.5,9.7,8.9,10.4,10.0,9.7,10.2,10.4,10.1,10.1,10.0,10.5,11.1,10.8,10.2,9.8,10.0,10.4,9.9,10.5,9.7,10.5,10.0,9.8,9.9,10.5,10.3,10.2,9.9,9.8,9.8,10.1,10.1,9.9,10.3,10.6,9.7,10.9,10.0,10.5,9.8,10.0,10.5,10.2,10.0,10.4,10.1,10.2,10.5,9.9,10.2,10.2,10.7,10.1,10.0,9.1,10.0,19.1,10.0,10.0,9.7,10.3,9.5,10.4,10.3,10.2,10.7,9.9,9.8,10.2,10.1,10.0,9.8,10.3,9.7,10.3,10.3,10.0,9.9,9.9,10.2,10.2,9.9,9.8,10.0,11.2,10.4,9.8,9.6,9.9,10.0,10.0,9.7,10.9,10.2,10.2,9.9,9.9,9.8,9.9,10.1,10.9,10.5,10.5,10.0,10.2,9.7,9.7,10.0,10.2,10.6,10.4,10.1,10.9,9.9,10.4,9.7,10.5,10.2,10.2,10.9,9.7,10.5,10.1,9.6,9.9,9.6,9.9,9.9,9.9,10.4,10.7,11.0,10.1,10.4,10.2,10.0,9.7,10.3,9.9,9.9,10.5,10.9,11.0,9.6,10.1,10.2,9.8,9.8,10.2,10.5,10.0,10.1,10.8,9.3,9.8,10.4,10.1,10.1,10.1,10.3,10.3,10.0,9.8,10.7,10.2,10.1,10.1,9.8,10.9,10.1,10.1,10.5,10.3,10.5,9.8,10.2,10.1,10.1,10.6,9.8,10.0,10.2,10.2,10.4,10.3,9.9,10.4,10.0,10.5,9.8,10.5,10.1,9.9,10.2,10.0,10.5,10.2,10.3,10.7,9.8,9.7,9.8,9.9,10.4,10.3,10.1,9.9,10.1,9.9,10.1,9.5,9.8,10.1,9.9,10.3,10.1,9.9,9.9,10.1,10.3,10.0,10.1,10.0,9.9,10.8,10.0,10.3,10.2,10.5,10.4,10.0,10.0,10.5,10.3,9.7,10.4,10.1,10.1,9.8,9.8,9.8,10.5,9.3,10.9,10.5,10.6,9.8,10.2,10.0,10.8,10.5,9.3,10.1,10.1,10.1,10.0,9.7,10.3,10.2,10.4,10.3,10.3,10.1,10.2,10.9,9.8,10.0,10.7,10.9,11.2,10.7,10.1,10.7,9.9,10.2,9.9,9.9,10.3,10.3,10.2,9.9,10.0,10.1,10.0,10.3,10.0,9.5,10.5,9.8,10.4,10.2,10.1,10.1,10.2,10.4,11.2,9.8,9.8,10.5,10.9,10.7,10.0,10.4,10.6,10.4,10.2,10.1,10.6,10.2,10.8,10.0,9.9,10.2,10.1,10.7,9.9,9.8,10.7,10.0,10.1,10.4,10.0,10.3,9.9,21.1,10.2,9.6,10.6,10.4,10.2,9.7,10.0,9.9,10.5,10.3,10.2,9.9,10.5,9.8,10.1,9.9,9.8,10.3,10.0,10.9,9.8,10.4,10.8,9.8,10.3,10.4,10.1,10.4,10.9,10.0,10.2,9.9,10.3,10.3,11.7,10.0,10.5,9.9,9.7,10.1,11.8,10.9,9.9,10.1,10.1,10.8,9.9,10.3,11.1,10.2,9.9,9.9,11.2,9.9,10.9,10.0,10.3,9.8,10.0,11.3,10.1,10.2,10.0,10.4,10.1,10.0,9.9,11.0,10.2,9.7,9.9,11.6,10.7,11.5,10.5,10.4,10.0,9.6,10.5,10.1,10.1,11.0,9.3,10.6,9.9,9.7,10.1,10.7,9.9,9.6,10.3,10.8,10.6] + }, + { + "position": 99, + "values": [40.9,43.6,40.1,42.0,42.2,40.5,42.3,41.4,41.5,41.9,43.0,39.0,36.7,40.6,37.3,45.1,39.6,43.4,44.1,40.7,43.2,42.0,44.6,40.5,41.5,43.5,43.0,40.0,41.3,46.8,41.6,44.2,40.8,44.0,40.9,40.3,41.0,45.1,46.5,42.9,40.6,39.3,42.1,41.0,41.7,41.5,43.6,40.4,41.1,40.1,42.3,42.1,41.8,42.0,48.8,42.1,41.2,41.2,43.6,41.3,42.1,40.4,41.7,38.9,41.9,41.8,39.9,43.5,38.8,41.2,43.5,42.4,39.5,43.6,42.9,43.6,40.6,40.7,41.3,40.0,41.7,40.6,41.7,42.0,41.3,43.5,40.5,39.9,42.0,44.5,43.8,43.1,41.9,39.9,39.3,41.7,39.1,39.8,41.1,41.6,41.3,42.1,40.8,40.4,40.1,40.7,41.1,42.5,42.4,40.3,41.0,42.5,43.6,45.8,47.1,39.6,41.5,40.8,42.1,40.6,41.6,40.6,41.9,38.7,40.0,45.4,43.9,42.2,42.1,40.0,42.3,41.8,40.5,38.8,43.3,42.0,41.9,38.7,41.2,42.5,41.9,41.8,42.6,44.4,41.3,41.6,43.1,42.4,40.4,41.0,40.3,42.0,39.0,43.5,41.8,44.0,40.1,40.4,41.3,42.0,40.5,43.7,40.9,40.9,41.5,41.8,42.2,41.6,40.5,43.5,43.6,40.7,53.6,41.4,40.2,40.6,41.3,41.5,40.4,44.5,43.5,41.5,80.6,43.9,42.1,41.0,40.8,38.2,39.3,40.6,42.1,43.5,39.8,40.6,40.5,40.8,41.6,41.4,42.8,41.8,41.3,41.7,44.1,50.0,47.0,43.1,42.1,44.2,43.5,42.0,42.1,43.1,42.9,40.6,40.3,42.7,40.9,42.4,41.2,42.1,41.2,42.6,40.1,40.7,41.4,40.2,44.1,39.2,46.7,40.1,40.6,41.9,36.9,41.4,40.9,42.9,41.8,39.8,42.3,41.5,44.3,37.2,44.5,41.0,42.8,43.3,41.4,42.4,37.0,47.8,41.1,38.4,40.6,39.5,45.3,41.3,39.9,40.5,42.3,50.5,43.0,41.9,43.2,42.0,40.8,40.4,41.1,40.4,42.8,43.9,41.7,40.7,43.2,41.7,42.2,42.1,42.1,40.6,44.7,40.6,40.7,41.3,52.0,40.3,40.2,38.9,48.8,40.5,40.8,40.6,42.0,42.7,46.3,41.2,40.8,43.6,40.6,42.6,40.4,41.7,42.1,41.2,37.1,43.7,45.2,40.7,41.7,41.8,41.0,42.3,41.8,39.9,43.4,41.7,42.8,41.1,40.4,40.3,40.0,43.0,41.5,50.0,42.1,41.8,42.0,43.2,40.4,43.2,41.1,39.6,44.4,39.5,41.9,43.2,42.9,39.6,41.2,40.5,40.1,44.8,35.8,41.9,41.1,42.1,41.1,40.9,40.2,41.0,42.1,41.2,41.9,40.3,44.5,38.1,42.6,42.1,42.1,44.6,43.1,42.3,40.6,39.9,40.1,38.2,42.9,37.5,39.9,50.4,42.3,50.3,41.4,43.2,44.3,41.9,28.1,44.2,40.2,40.7,40.9,40.6,40.0,42.4,40.6,42.2,40.9,40.1,42.6,39.9,43.0,38.8,41.8,40.9,41.2,43.2,42.4,43.3,41.1,39.9,70.9,39.9,41.0,41.4,40.1,42.7,39.6,50.3,40.6,43.4,43.9,40.7,44.2,40.4,44.6,41.9,43.5,42.8,43.8,39.1,41.2,40.5,42.6,38.8,40.5,40.6,41.6,40.7,40.3,44.6,40.6,43.8,42.1,39.8,44.4,41.7,41.3,43.9,40.6,40.5,43.2,39.9,40.9,41.5,40.4,56.6,41.5,42.8,40.8,40.2,40.0,36.4,39.6,42.1,43.3,43.3,43.2,47.5,42.8,41.0,41.2,41.3,43.0,41.4,40.9,40.5,42.4,42.9,44.1,43.8,43.8,44.9,39.8,45.0,40.2,41.8,41.4,41.9,42.5,40.4,41.7,38.7,44.9,41.1,39.9,43.4,39.9,41.6,41.6,40.6,40.6,43.3,40.8,41.8,41.1,44.5,40.8,45.4,41.7,40.9,43.7,42.3,40.2,42.5,41.3,41.6,38.7,10.1,41.2,43.4,37.3,41.3,43.0,40.9,44.1,42.9,40.2,41.4,40.2,39.6,44.0,41.6,40.7,41.6,39.2,39.3,40.9,39.3,40.2,41.5,41.4,40.3,42.6,42.9,41.1,44.2,44.9,43.0,41.3,43.7,41.1,41.3,40.9,41.4,39.3,41.5,41.8,39.3,40.5,41.1,40.8,40.5,40.7,42.1,40.8,41.3,41.5,42.8,40.8,41.1,38.6,40.9,43.5,40.7,40.0,43.7,41.1,41.3,41.3,44.0,42.1,40.6,41.8,41.0,44.4,42.2,41.3,42.4,42.8,41.8,42.7,40.9,41.8,41.3,41.1,39.6,41.3,42.5,40.9,40.6,41.2,41.3,43.3,41.9,39.7,41.6,39.9,40.2,40.2,40.8,38.9,38.2,40.6,43.1,41.3,41.0,34.4,41.4,41.2,41.5,41.1,45.3,37.5,43.2,42.8,39.9,39.9,40.5,41.6,40.9,40.2,39.5,55.0,42.1,40.3,44.1,41.5,41.8,38.4,42.0,41.2,43.5,44.6,41.0,41.3,41.3,41.6,40.8,40.5,42.8,41.4,41.0,41.1,43.5,44.4,41.8,42.3,44.3,40.0,42.1,40.1,42.7,43.1,40.5,40.9,40.2,40.9,42.6,44.3,40.9,40.7,40.6,41.7,43.0,41.7,40.5,40.1,42.8,42.1,41.8,41.0,50.6,41.7,42.8,42.7,43.0,50.7,37.5,41.2,41.5,42.3,42.4,40.4,41.4,41.6,43.0,43.2,39.8,40.5,41.7,41.2,39.5,40.5,39.4,40.9,41.8,43.7,40.8,42.7,47.3,40.8,40.8,41.2,41.0,41.4,38.1,41.6,41.0,43.5,40.4,40.1,42.1,41.6,41.1,40.2,42.8,43.5,41.3,38.5,42.6,38.4,39.8,41.9,41.6,40.7,44.0,41.3,41.6,41.5,39.8,42.2,41.4,40.9,40.5,42.0,43.7,41.4,40.8,40.7,44.1,41.0,40.6,41.2,42.3,41.1,42.2,40.6,40.6,40.1,40.4,42.6,45.9,42.9,42.8,42.1,40.4,45.1,40.6,42.2,40.0,41.2,38.9,42.5,41.8,40.4,40.0,41.3,40.8,40.8,40.2,40.1,43.2,41.3,41.4,40.8,39.3,40.2,41.1,38.6,40.1,42.8,38.0,40.9,41.2,42.8,39.6,41.4,40.2,40.8,39.9,42.2,40.7,40.2,42.8,42.6,41.7,42.2,40.9,40.8,41.2,48.9,39.9,40.6,44.3,38.9,41.2,40.6,44.6,41.1,40.5,42.9,40.2,43.1,40.0,43.6,46.0,41.8,44.4,39.7,41.1,40.3,41.3,43.4,40.7,43.3,42.2,42.7,41.6,41.2,44.0,41.7,42.2,39.6,40.3,43.5,40.8,43.1,41.4,41.1,42.7,42.1,39.1,47.9,39.8,44.1,42.3,40.5,40.9,41.0,43.4,40.4,40.2,42.3,41.4,40.3,39.4,42.4,44.9,39.7,39.0,49.6,40.1,39.8,41.3,44.3,41.4,42.2,42.3,40.1,40.3,40.8,42.3,41.7,40.5,43.1,42.3,39.9,41.6,42.7,39.9,42.0,41.0,40.6,40.3,41.9,42.7,41.9,40.2,41.8,42.6,41.7,39.9,42.6,42.5,39.2,40.4,41.4,41.7,40.0,39.4,43.1,41.8,38.5,39.8,41.4,37.9,42.0,40.6,40.4,41.4,41.5,42.2,41.6,41.2,42.7,40.3,41.2,41.6,42.2,41.2,41.6,41.5,41.1,43.3,42.1,41.7,42.5,40.5,42.9,40.2,39.7,42.8,43.1,41.3,42.4,40.3,39.8,41.2,40.5,40.7,43.6,41.6,42.4,43.4,53.3,40.5,42.6,39.3,41.9,39.3,41.1,42.5,41.0,40.3,43.9,41.1,44.0,40.4,40.8,42.1,42.5,40.6,39.8,41.9,41.7,38.2,41.6,42.8,40.7,40.6,42.6,43.3,38.3,41.7,40.8,40.4,40.2,40.6,40.6,38.4,40.1,39.6,42.2,42.2,41.0] + }, + { + "position": 100, + "values": [110.0,124.0,112.9,107.8,110.0,103.7,121.8,103.8,111.9,107.7,122.6,104.7,81.0,96.7,104.1,128.1,103.1,124.1,129.0,122.0,106.2,112.2,125.6,114.5,98.5,125.4,120.2,99.9,107.3,66.2,116.3,128.1,107.6,112.1,112.9,104.9,104.8,112.1,100.4,107.5,129.7,98.3,106.8,98.9,107.4,116.1,103.6,83.2,109.6,121.5,121.5,89.7,107.6,108.0,58.2,110.6,94.3,112.8,107.6,110.1,104.4,105.6,104.0,101.9,114.8,104.6,106.9,101.1,107.1,109.1,106.5,110.1,108.3,114.6,108.9,118.6,103.2,103.4,107.9,113.7,107.7,103.7,115.2,117.7,114.0,126.7,108.0,89.9,103.6,111.8,126.8,102.7,101.8,112.9,94.3,108.1,102.2,106.9,102.3,108.2,107.5,102.3,104.8,107.3,107.2,103.4,99.5,111.0,108.0,103.9,105.4,126.7,128.9,128.5,124.8,110.2,107.7,108.3,107.3,103.5,115.0,106.6,116.7,94.6,101.4,117.4,98.5,109.8,120.5,99.7,110.2,106.9,119.2,93.2,112.1,100.5,111.0,95.9,105.8,126.7,102.0,103.9,126.2,107.8,103.2,107.9,109.9,118.0,100.8,110.7,124.2,104.1,97.2,110.6,97.6,125.3,106.0,103.2,92.7,108.8,111.3,106.8,105.7,103.9,113.6,125.7,109.0,106.7,121.6,108.5,124.4,71.6,112.9,101.8,108.1,108.3,108.8,96.8,111.2,111.5,112.5,103.6,123.8,105.9,122.2,105.2,104.9,93.0,90.4,101.9,116.6,99.2,115.6,107.1,107.3,108.8,110.7,103.1,113.4,107.5,106.8,108.2,126.3,59.4,127.4,113.4,111.7,124.9,105.9,114.2,116.5,114.2,100.3,109.1,104.3,104.6,105.6,101.1,113.6,103.7,103.7,114.7,103.7,103.9,105.4,126.7,105.6,94.6,105.2,128.1,99.2,84.6,108.4,105.6,106.1,108.0,124.1,105.0,107.8,106.2,108.4,94.4,127.5,123.2,107.2,115.8,103.9,116.9,97.3,70.5,95.9,94.4,105.1,106.3,108.6,124.7,106.9,113.3,112.7,60.6,122.7,101.6,112.3,109.8,101.1,109.4,106.5,107.8,107.3,126.2,101.1,113.1,100.5,106.7,111.7,108.3,112.3,103.9,126.5,107.3,104.9,103.5,66.2,102.1,93.0,93.5,52.3,99.2,106.6,104.3,119.9,117.7,130.0,110.8,102.8,113.4,108.6,102.2,108.8,97.7,102.6,111.1,74.9,113.1,68.8,102.4,101.8,106.2,111.2,124.2,108.9,103.1,120.7,107.8,107.5,99.1,106.7,105.6,108.2,108.3,108.7,104.8,60.9,117.7,107.0,126.1,124.1,107.8,105.9,57.3,110.5,91.3,102.6,123.2,111.8,108.1,102.4,112.2,109.1,107.5,97.9,109.7,107.2,110.1,102.4,103.4,111.5,96.8,103.1,103.7,112.7,104.7,124.4,95.1,108.1,118.4,114.8,126.4,119.3,111.3,106.7,98.1,101.6,125.6,89.6,90.3,60.0,106.0,113.8,58.4,109.8,127.0,127.1,101.8,52.9,104.5,100.7,126.3,104.7,104.3,105.7,110.9,107.6,105.1,101.7,110.5,123.0,98.6,108.7,94.0,106.0,104.6,104.5,125.4,103.6,111.2,104.6,105.9,35.0,92.7,107.6,119.9,105.7,119.0,107.6,67.6,106.1,126.9,114.0,102.3,125.5,107.1,103.8,109.5,112.6,115.3,127.0,106.7,107.6,102.7,109.4,90.2,110.1,98.4,102.0,100.3,108.9,128.4,106.0,108.3,107.4,107.1,113.7,104.7,93.0,101.2,109.3,101.6,106.5,123.0,106.0,111.2,104.8,129.8,113.1,112.0,114.3,94.3,100.3,102.4,121.7,103.7,101.2,123.9,76.5,112.6,108.4,105.0,107.6,105.1,105.4,107.7,94.1,93.7,119.7,115.2,73.8,125.9,109.5,115.0,115.2,128.2,102.4,101.6,103.8,108.0,111.0,101.6,106.1,88.3,110.1,102.4,103.8,108.1,111.7,101.0,106.3,104.4,107.6,114.8,103.6,109.4,116.2,107.7,75.9,95.3,108.9,112.3,106.2,107.0,109.0,113.0,105.3,104.9,103.7,38.7,97.8,114.5,103.3,87.5,113.9,106.5,125.2,111.9,104.9,96.1,113.6,103.0,96.4,123.9,103.9,107.6,102.2,101.7,106.9,83.8,104.3,98.8,108.3,106.3,124.9,109.6,111.0,127.5,106.7,109.3,105.4,115.5,104.4,104.8,101.6,114.3,101.2,115.9,110.5,104.1,94.3,101.1,103.7,113.7,125.8,100.3,103.4,110.8,108.2,105.0,109.0,108.6,96.6,106.0,125.5,89.5,98.7,104.2,107.6,108.4,120.7,125.9,121.1,104.3,108.5,114.0,106.9,127.5,101.9,105.3,109.3,106.0,116.6,106.1,114.1,105.2,108.1,106.5,110.9,116.9,102.7,103.7,108.4,104.0,107.3,125.5,105.5,112.3,108.4,96.2,103.1,100.5,95.2,93.6,108.3,108.6,103.0,104.4,126.9,107.0,103.9,104.5,105.1,128.1,129.3,94.5,118.3,103.4,101.9,110.6,90.2,105.4,102.6,107.6,117.2,119.8,102.3,125.9,102.3,121.2,84.1,116.4,106.2,124.9,119.6,110.4,110.7,108.4,106.6,108.8,101.8,122.5,120.4,103.7,112.9,123.3,123.1,101.7,105.3,126.6,101.6,102.9,104.4,103.4,110.5,107.0,103.9,109.1,122.1,101.3,101.8,108.5,102.8,113.1,101.6,118.4,102.4,103.6,104.9,106.4,102.2,106.5,115.0,108.1,62.6,106.2,87.7,124.6,65.7,94.8,108.1,112.2,122.5,106.2,106.4,108.2,108.3,102.3,113.2,105.2,105.1,105.4,103.4,96.8,102.5,105.1,113.1,122.8,124.5,112.8,90.2,67.7,116.3,108.2,101.8,100.0,90.6,105.4,100.7,111.7,112.4,103.3,108.5,115.9,112.3,103.2,102.8,126.9,110.6,100.7,53.8,109.5,103.5,105.4,107.8,108.5,100.7,126.5,108.9,106.3,118.1,98.8,112.6,108.9,107.3,110.3,107.2,114.5,107.6,109.1,109.9,126.1,94.3,97.9,106.4,106.4,112.9,113.2,104.9,105.1,103.7,107.4,113.4,115.3,71.7,113.7,116.0,97.9,127.8,104.3,107.6,108.2,104.2,100.9,119.2,113.0,103.6,108.7,101.2,117.3,103.2,107.5,101.6,115.1,113.9,103.9,105.1,106.3,116.6,111.4,103.0,103.2,112.3,101.5,104.5,109.1,124.1,103.5,109.1,103.3,106.0,104.2,110.4,105.4,107.6,116.3,121.9,104.7,103.1,116.6,98.5,105.5,73.1,103.6,127.6,104.0,101.1,109.9,73.3,102.3,108.4,108.6,104.6,108.1,111.6,107.5,111.5,99.1,60.1,122.4,102.3,100.4,103.8,105.3,69.9,96.8,110.7,126.0,107.5,110.7,101.9,127.4,106.9,106.2,102.3,127.6,107.9,106.5,112.1,109.6,105.9,110.8,70.4,103.9,70.7,109.1,127.4,106.1,102.5,109.4,108.4,114.5,102.5,113.6,106.4,106.6,110.4,102.1,125.5,119.7,106.8,92.4,116.4,60.3,119.2,104.8,102.4,114.2,113.3,107.0,98.3,112.9,110.3,108.3,112.2,112.2,106.4,105.3,107.9,99.5,121.9,116.2,109.7,107.1,102.1,98.1,102.6,122.8,102.1,115.1,100.7,121.1,110.2,104.0,106.1,95.8,112.4,102.0,109.9,112.1,110.3,101.3,109.9,112.8,51.2,101.3,102.0,103.4,103.4,116.0,108.3,106.3,118.1,108.9,110.6,117.0,111.0,103.7,48.1,107.5,106.9,107.4,98.2,120.1,128.3,112.9,106.1,104.8,108.6,103.7,115.2,106.3,107.3,125.3,113.8,119.1,102.9,95.4,107.4,106.1,106.5,114.5,114.3,108.3,106.9,124.4,68.0,112.8,113.7,105.6,93.2,90.6,104.0,110.1,106.8,103.9,126.8,103.5,129.2,100.5,102.7,103.0,118.5,106.3,103.8,92.9,111.1,92.0,104.1,124.2,104.8,101.1,107.5,95.8,127.3,97.0,107.4,111.1,100.8,105.1,108.1,109.3,102.9,107.4,115.6,110.5,109.8] + } + ] +} \ No newline at end of file diff --git a/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json b/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json deleted file mode 100644 index 8c64aa59c..000000000 --- a/packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "__comment__": "This is real data coming from https://www.ebi.ac.uk/pdbe/graph-api/pdb/sequence_conservation/1tqn/1", - "identifier": "1tqn", - "main_track_color": "#808080", - "sub_track_color": "#d3d3d3", - "data": { - "index": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483], - "conservation_score": [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 4.0, 1.0, 0.0, 0.0, 4.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 2.0, 2.0, 0.0, 1.0, 3.0, 2.0, 1.0, 0.0, 1.0, 1.0, 0.0, 2.0, 1.0, 1.0, 1.0, 0.0, 2.0, 0.0, 0.0, 2.0, 2.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 2.0, 1.0, 3.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 4.0, 1.0, 2.0, 5.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 2.0, 1.0, 0.0, 2.0, 2.0, 1.0, 2.0, 1.0, 0.0, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 2.0, 1.0, 0.0, 0.0, 3.0, 0.0, 1.0, 2.0, 0.0, 0.0, 4.0, 1.0, 3.0, 1.0, 3.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 5.0, 2.0, 0.0, 4.0, 1.0, 2.0, 0.0, 7.0, 1.0, 4.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 3.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - "probability_A": [0.089, 0.067, 0.045, 0.086, 0.081, 0.081, 0.083, 0.077, 0.077, 0.077, 0.076, 0.074, 0.071, 0.072, 0.075, 0.058, 0.046, 0.052, 0.049, 0.062, 0.084, 0.055, 0.049, 0.045, 0.045, 0.047, 0.05, 0.076, 0.054, 0.066, 0.051, 0.065, 0.06, 0.066, 0.062, 0.08, 0.064, 0.069, 0.064, 0.089, 0.07, 0.057, 0.156, 0.066, 0.051, 0.041, 0.047, 0.048, 0.048, 0.049, 0.053, 0.046, 0.057, 0.051, 0.053, 0.058, 0.049, 0.053, 0.084, 0.041, 0.058, 0.057, 0.099, 0.042, 0.096, 0.071, 0.164, 0.189, 0.058, 0.07, 0.115, 0.04, 0.073, 0.055, 0.046, 0.114, 0.06, 0.097, 0.075, 0.06, 0.118, 0.049, 0.053, 0.061, 0.071, 0.066, 0.095, 0.091, 0.078, 0.075, 0.05, 0.052, 0.059, 0.066, 0.08, 0.041, 0.093, 0.08, 0.187, 0.041, 0.039, 0.079, 0.056, 0.034, 0.077, 0.067, 0.061, 0.01, 0.065, 0.085, 0.108, 0.116, 0.055, 0.204, 0.03, 0.059, 0.072, 0.085, 0.113, 0.047, 0.073, 0.089, 0.042, 0.076, 0.06, 0.073, 0.037, 0.089, 0.071, 0.065, 0.187, 0.067, 0.072, 0.057, 0.067, 0.077, 0.065, 0.042, 0.087, 0.076, 0.093, 0.216, 0.081, 0.088, 0.055, 0.069, 0.087, 0.047, 0.046, 0.053, 0.063, 0.058, 0.078, 0.067, 0.075, 0.095, 0.1, 0.162, 0.084, 0.046, 0.058, 0.061, 0.114, 0.065, 0.103, 0.233, 0.038, 0.047, 0.051, 0.042, 0.05, 0.05, 0.091, 0.048, 0.056, 0.058, 0.066, 0.055, 0.061, 0.071, 0.056, 0.097, 0.067, 0.125, 0.103, 0.062, 0.081, 0.106, 0.073, 0.094, 0.071, 0.077, 0.082, 0.089, 0.07, 0.086, 0.07, 0.07, 0.072, 0.09, 0.066, 0.075, 0.078, 0.052, 0.056, 0.054, 0.054, 0.067, 0.05, 0.054, 0.064, 0.061, 0.073, 0.056, 0.051, 0.08, 0.091, 0.082, 0.081, 0.086, 0.067, 0.065, 0.097, 0.082, 0.078, 0.059, 0.066, 0.064, 0.065, 0.087, 0.068, 0.077, 0.069, 0.063, 0.062, 0.082, 0.099, 0.067, 0.081, 0.084, 0.065, 0.079, 0.065, 0.07, 0.06, 0.055, 0.067, 0.05, 0.056, 0.046, 0.058, 0.086, 0.043, 0.044, 0.061, 0.166, 0.066, 0.053, 0.099, 0.072, 0.058, 0.073, 0.054, 0.071, 0.047, 0.055, 0.094, 0.033, 0.045, 0.038, 0.066, 0.04, 0.059, 0.099, 0.194, 0.048, 0.151, 0.066, 0.067, 0.04, 0.032, 0.075, 0.601, 0.086, 0.055, 0.033, 0.039, 0.035, 0.319, 0.093, 0.199, 0.046, 0.111, 0.058, 0.248, 0.041, 0.098, 0.091, 0.026, 0.266, 0.062, 0.029, 0.031, 0.06, 0.097, 0.04, 0.137, 0.063, 0.178, 0.043, 0.158, 0.031, 0.047, 0.054, 0.153, 0.105, 0.048, 0.072, 0.051, 0.05, 0.103, 0.054, 0.054, 0.06, 0.066, 0.082, 0.082, 0.052, 0.087, 0.05, 0.03, 0.035, 0.023, 0.033, 0.035, 0.405, 0.088, 0.038, 0.032, 0.012, 0.125, 0.026, 0.005, 0.023, 0.059, 0.048, 0.083, 0.207, 0.058, 0.084, 0.041, 0.083, 0.029, 0.078, 0.266, 0.068, 0.071, 0.04, 0.065, 0.034, 0.026, 0.079, 0.027, 0.03, 0.04, 0.023, 0.041, 0.195, 0.024, 0.086, 0.05, 0.038, 0.064, 0.071, 0.064, 0.114, 0.071, 0.293, 0.109, 0.047, 0.026, 0.027, 0.064, 0.097, 0.046, 0.02, 0.063, 0.036, 0.152, 0.045, 0.07, 0.017, 0.028, 0.027, 0.039, 0.016, 0.024, 0.068, 0.054, 0.081, 0.061, 0.077, 0.091, 0.072, 0.066, 0.05, 0.067, 0.052, 0.205, 0.026, 0.045, 0.121, 0.005, 0.037, 0.206, 0.016, 0.064, 0.025, 0.099, 0.013, 0.054, 0.042, 0.099, 0.068, 0.021, 0.64, 0.034, 0.107, 0.035, 0.115, 0.054, 0.066, 0.189, 0.052, 0.355, 0.084, 0.027, 0.05, 0.057, 0.067, 0.025, 0.038, 0.029, 0.057, 0.067, 0.121, 0.067, 0.055, 0.074, 0.063, 0.066, 0.054, 0.059, 0.061, 0.066, 0.076, 0.07, 0.075, 0.084, 0.073, 0.065, 0.075, 0.068, 0.089, 0.07, 0.066, 0.071, 0.07, 0.079, 0.071, 0.081, 0.074, 0.083, 0.062, 0.078, 0.091, 0.094, 0.091, 0.104, 0.104, 0.097, 0.086], - "probability_C": [0.014, 0.014, 0.011, 0.014, 0.014, 0.011, 0.009, 0.013, 0.007, 0.016, 0.016, 0.006, 0.006, 0.012, 0.006, 0.013, 0.005, 0.008, 0.006, 0.006, 0.007, 0.012, 0.009, 0.011, 0.011, 0.007, 0.008, 0.013, 0.011, 0.006, 0.011, 0.005, 0.004, 0.004, 0.007, 0.024, 0.005, 0.012, 0.006, 0.009, 0.004, 0.048, 0.009, 0.004, 0.005, 0.009, 0.004, 0.004, 0.012, 0.023, 0.01, 0.012, 0.005, 0.01, 0.01, 0.007, 0.008, 0.005, 0.022, 0.01, 0.02, 0.012, 0.028, 0.007, 0.006, 0.005, 0.011, 0.017, 0.004, 0.004, 0.023, 0.02, 0.005, 0.004, 0.003, 0.027, 0.005, 0.006, 0.01, 0.013, 0.01, 0.006, 0.004, 0.005, 0.005, 0.009, 0.005, 0.006, 0.009, 0.005, 0.009, 0.009, 0.006, 0.009, 0.012, 0.008, 0.009, 0.012, 0.011, 0.004, 0.004, 0.003, 0.004, 0.01, 0.003, 0.003, 0.007, 0.001, 0.004, 0.009, 0.047, 0.004, 0.003, 0.008, 0.007, 0.005, 0.004, 0.004, 0.005, 0.009, 0.004, 0.006, 0.011, 0.009, 0.005, 0.011, 0.011, 0.012, 0.004, 0.054, 0.035, 0.01, 0.014, 0.013, 0.038, 0.005, 0.008, 0.011, 0.007, 0.005, 0.01, 0.027, 0.005, 0.008, 0.005, 0.007, 0.006, 0.019, 0.007, 0.016, 0.009, 0.004, 0.013, 0.023, 0.008, 0.033, 0.031, 0.011, 0.02, 0.007, 0.01, 0.008, 0.113, 0.01, 0.069, 0.038, 0.011, 0.004, 0.01, 0.008, 0.03, 0.007, 0.054, 0.009, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005, 0.01, 0.01, 0.004, 0.007, 0.015, 0.005, 0.005, 0.014, 0.013, 0.005, 0.008, 0.007, 0.011, 0.011, 0.005, 0.006, 0.012, 0.011, 0.009, 0.009, 0.014, 0.007, 0.012, 0.012, 0.005, 0.008, 0.012, 0.01, 0.005, 0.011, 0.009, 0.004, 0.008, 0.008, 0.003, 0.008, 0.052, 0.005, 0.009, 0.009, 0.004, 0.004, 0.014, 0.007, 0.004, 0.012, 0.016, 0.004, 0.004, 0.013, 0.014, 0.005, 0.004, 0.011, 0.005, 0.004, 0.006, 0.005, 0.009, 0.004, 0.005, 0.008, 0.008, 0.005, 0.008, 0.006, 0.006, 0.006, 0.013, 0.01, 0.005, 0.024, 0.015, 0.011, 0.007, 0.008, 0.01, 0.004, 0.006, 0.005, 0.004, 0.005, 0.003, 0.004, 0.004, 0.004, 0.006, 0.008, 0.004, 0.003, 0.003, 0.003, 0.009, 0.013, 0.009, 0.008, 0.081, 0.01, 0.005, 0.006, 0.007, 0.006, 0.003, 0.003, 0.006, 0.002, 0.003, 0.006, 0.005, 0.008, 0.009, 0.011, 0.028, 0.012, 0.037, 0.015, 0.01, 0.021, 0.009, 0.031, 0.01, 0.007, 0.002, 0.003, 0.023, 0.007, 0.003, 0.004, 0.026, 0.007, 0.003, 0.003, 0.008, 0.007, 0.005, 0.012, 0.033, 0.004, 0.005, 0.005, 0.007, 0.006, 0.008, 0.016, 0.007, 0.004, 0.006, 0.009, 0.005, 0.003, 0.025, 0.003, 0.007, 0.017, 0.005, 0.036, 0.099, 0.021, 0.015, 0.001, 0.018, 0.006, 0.002, 0.016, 0.015, 0.004, 0.005, 0.006, 0.007, 0.008, 0.006, 0.003, 0.003, 0.018, 0.072, 0.003, 0.008, 0.002, 0.063, 0.005, 0.008, 0.019, 0.002, 0.013, 0.006, 0.007, 0.003, 0.003, 0.002, 0.013, 0.012, 0.017, 0.014, 0.022, 0.029, 0.009, 0.009, 0.01, 0.013, 0.008, 0.005, 0.005, 0.003, 0.003, 0.01, 0.006, 0.003, 0.004, 0.01, 0.004, 0.006, 0.006, 0.007, 0.005, 0.003, 0.002, 0.005, 0.005, 0.003, 0.005, 0.004, 0.007, 0.004, 0.005, 0.011, 0.004, 0.004, 0.009, 0.013, 0.007, 0.01, 0.005, 0.002, 0.003, 0.007, 0.002, 0.002, 0.003, 0.003, 0.895, 0.005, 0.002, 0.002, 0.002, 0.006, 0.004, 0.003, 0.01, 0.003, 0.007, 0.006, 0.016, 0.013, 0.009, 0.019, 0.012, 0.007, 0.01, 0.005, 0.03, 0.013, 0.005, 0.008, 0.007, 0.008, 0.059, 0.004, 0.004, 0.006, 0.006, 0.01, 0.005, 0.012, 0.005, 0.012, 0.007, 0.014, 0.006, 0.013, 0.014, 0.018, 0.01, 0.007, 0.006, 0.006, 0.006, 0.018, 0.012, 0.034, 0.007, 0.024, 0.007, 0.008, 0.008, 0.008, 0.012, 0.015, 0.014, 0.015, 0.016, 0.016, 0.016], - "probability_D": [0.033, 0.023, 0.018, 0.039, 0.038, 0.044, 0.052, 0.036, 0.068, 0.023, 0.021, 0.055, 0.06, 0.04, 0.058, 0.008, 0.031, 0.03, 0.031, 0.034, 0.033, 0.01, 0.016, 0.006, 0.006, 0.025, 0.042, 0.007, 0.011, 0.082, 0.01, 0.075, 0.057, 0.091, 0.036, 0.041, 0.05, 0.026, 0.098, 0.033, 0.087, 0.008, 0.029, 0.058, 0.04, 0.015, 0.034, 0.102, 0.008, 0.005, 0.029, 0.006, 0.036, 0.028, 0.016, 0.039, 0.041, 0.055, 0.009, 0.005, 0.008, 0.005, 0.03, 0.262, 0.02, 0.163, 0.028, 0.005, 0.04, 0.085, 0.008, 0.006, 0.049, 0.067, 0.112, 0.084, 0.098, 0.102, 0.055, 0.031, 0.051, 0.114, 0.044, 0.048, 0.055, 0.024, 0.063, 0.055, 0.037, 0.077, 0.033, 0.039, 0.05, 0.104, 0.043, 0.007, 0.02, 0.012, 0.026, 0.144, 0.095, 0.14, 0.065, 0.006, 0.028, 0.042, 0.013, 0.004, 0.031, 0.006, 0.004, 0.037, 0.029, 0.026, 0.004, 0.028, 0.043, 0.06, 0.027, 0.007, 0.049, 0.087, 0.007, 0.027, 0.078, 0.019, 0.009, 0.064, 0.099, 0.026, 0.017, 0.158, 0.05, 0.005, 0.013, 0.095, 0.053, 0.006, 0.072, 0.061, 0.07, 0.035, 0.093, 0.078, 0.06, 0.054, 0.051, 0.019, 0.268, 0.006, 0.049, 0.172, 0.041, 0.006, 0.034, 0.037, 0.004, 0.011, 0.005, 0.36, 0.004, 0.004, 0.006, 0.071, 0.005, 0.006, 0.004, 0.05, 0.038, 0.132, 0.012, 0.173, 0.053, 0.036, 0.131, 0.123, 0.076, 0.095, 0.17, 0.056, 0.016, 0.017, 0.082, 0.061, 0.016, 0.058, 0.064, 0.011, 0.015, 0.047, 0.025, 0.115, 0.018, 0.01, 0.101, 0.053, 0.014, 0.021, 0.02, 0.035, 0.025, 0.092, 0.024, 0.009, 0.051, 0.046, 0.014, 0.028, 0.048, 0.02, 0.023, 0.071, 0.026, 0.018, 0.065, 0.03, 0.046, 0.037, 0.023, 0.063, 0.052, 0.095, 0.013, 0.093, 0.116, 0.022, 0.01, 0.074, 0.068, 0.032, 0.017, 0.089, 0.064, 0.021, 0.037, 0.099, 0.058, 0.035, 0.054, 0.086, 0.171, 0.059, 0.076, 0.058, 0.107, 0.048, 0.069, 0.496, 0.016, 0.011, 0.194, 0.03, 0.01, 0.011, 0.176, 0.042, 0.044, 0.105, 0.088, 0.062, 0.149, 0.088, 0.122, 0.107, 0.073, 0.074, 0.045, 0.011, 0.093, 0.327, 0.106, 0.117, 0.008, 0.011, 0.131, 0.057, 0.02, 0.033, 0.088, 0.024, 0.003, 0.006, 0.019, 0.01, 0.014, 0.335, 0.014, 0.004, 0.011, 0.025, 0.003, 0.003, 0.024, 0.005, 0.003, 0.003, 0.008, 0.027, 0.003, 0.009, 0.039, 0.048, 0.021, 0.191, 0.008, 0.007, 0.091, 0.023, 0.003, 0.015, 0.093, 0.047, 0.004, 0.292, 0.055, 0.009, 0.013, 0.05, 0.124, 0.119, 0.066, 0.075, 0.03, 0.086, 0.025, 0.213, 0.295, 0.01, 0.064, 0.06, 0.006, 0.038, 0.004, 0.003, 0.158, 0.019, 0.003, 0.003, 0.049, 0.017, 0.004, 0.003, 0.002, 0.004, 0.023, 0.029, 0.005, 0.007, 0.011, 0.02, 0.01, 0.032, 0.019, 0.019, 0.005, 0.037, 0.054, 0.43, 0.061, 0.045, 0.004, 0.139, 0.071, 0.009, 0.059, 0.003, 0.025, 0.023, 0.07, 0.061, 0.036, 0.003, 0.008, 0.004, 0.034, 0.006, 0.016, 0.028, 0.003, 0.021, 0.021, 0.462, 0.039, 0.105, 0.011, 0.003, 0.092, 0.323, 0.041, 0.188, 0.05, 0.003, 0.206, 0.007, 0.147, 0.012, 0.008, 0.055, 0.147, 0.086, 0.105, 0.036, 0.178, 0.059, 0.027, 0.146, 0.068, 0.048, 0.034, 0.007, 0.006, 0.01, 0.001, 0.015, 0.023, 0.007, 0.02, 0.016, 0.02, 0.002, 0.003, 0.005, 0.028, 0.042, 0.003, 0.006, 0.031, 0.014, 0.022, 0.003, 0.022, 0.003, 0.004, 0.003, 0.012, 0.021, 0.003, 0.003, 0.027, 0.037, 0.004, 0.2, 0.005, 0.045, 0.029, 0.05, 0.094, 0.123, 0.061, 0.071, 0.031, 0.122, 0.019, 0.067, 0.03, 0.065, 0.026, 0.057, 0.022, 0.01, 0.009, 0.044, 0.04, 0.073, 0.065, 0.063, 0.01, 0.037, 0.01, 0.053, 0.012, 0.054, 0.055, 0.036, 0.097, 0.068, 0.043, 0.041, 0.062, 0.061, 0.051, 0.056], - "probability_E": [0.051, 0.04, 0.029, 0.068, 0.066, 0.076, 0.09, 0.064, 0.097, 0.042, 0.038, 0.108, 0.098, 0.068, 0.089, 0.015, 0.05, 0.06, 0.049, 0.064, 0.058, 0.016, 0.028, 0.011, 0.011, 0.041, 0.077, 0.012, 0.019, 0.101, 0.014, 0.073, 0.081, 0.083, 0.057, 0.059, 0.091, 0.04, 0.083, 0.062, 0.188, 0.013, 0.054, 0.128, 0.104, 0.024, 0.056, 0.078, 0.011, 0.01, 0.056, 0.011, 0.055, 0.032, 0.019, 0.075, 0.077, 0.063, 0.034, 0.009, 0.01, 0.009, 0.043, 0.078, 0.035, 0.251, 0.018, 0.009, 0.113, 0.249, 0.012, 0.009, 0.057, 0.082, 0.115, 0.063, 0.09, 0.095, 0.068, 0.042, 0.068, 0.072, 0.067, 0.078, 0.073, 0.031, 0.075, 0.084, 0.053, 0.075, 0.035, 0.043, 0.077, 0.072, 0.034, 0.009, 0.013, 0.019, 0.041, 0.147, 0.069, 0.23, 0.116, 0.011, 0.053, 0.091, 0.024, 0.011, 0.049, 0.011, 0.008, 0.046, 0.067, 0.082, 0.008, 0.046, 0.061, 0.086, 0.051, 0.01, 0.082, 0.117, 0.022, 0.149, 0.107, 0.034, 0.019, 0.121, 0.223, 0.174, 0.038, 0.141, 0.099, 0.016, 0.028, 0.148, 0.083, 0.013, 0.126, 0.132, 0.132, 0.056, 0.158, 0.094, 0.067, 0.145, 0.109, 0.02, 0.128, 0.012, 0.073, 0.151, 0.068, 0.009, 0.06, 0.066, 0.011, 0.016, 0.013, 0.094, 0.009, 0.008, 0.011, 0.113, 0.009, 0.011, 0.008, 0.051, 0.095, 0.096, 0.015, 0.119, 0.091, 0.063, 0.139, 0.113, 0.118, 0.131, 0.107, 0.141, 0.033, 0.028, 0.205, 0.098, 0.025, 0.107, 0.141, 0.018, 0.03, 0.106, 0.056, 0.101, 0.031, 0.024, 0.082, 0.074, 0.022, 0.027, 0.032, 0.051, 0.019, 0.065, 0.027, 0.011, 0.052, 0.038, 0.015, 0.029, 0.061, 0.021, 0.036, 0.107, 0.046, 0.031, 0.078, 0.04, 0.062, 0.066, 0.043, 0.076, 0.085, 0.192, 0.018, 0.084, 0.113, 0.039, 0.013, 0.095, 0.14, 0.075, 0.02, 0.139, 0.158, 0.042, 0.078, 0.24, 0.118, 0.077, 0.062, 0.201, 0.125, 0.082, 0.136, 0.112, 0.113, 0.084, 0.084, 0.063, 0.018, 0.017, 0.078, 0.03, 0.018, 0.014, 0.162, 0.086, 0.108, 0.102, 0.105, 0.107, 0.198, 0.083, 0.248, 0.087, 0.11, 0.13, 0.078, 0.019, 0.066, 0.137, 0.171, 0.331, 0.011, 0.029, 0.073, 0.169, 0.017, 0.013, 0.061, 0.009, 0.006, 0.016, 0.046, 0.016, 0.026, 0.331, 0.021, 0.007, 0.02, 0.027, 0.008, 0.006, 0.098, 0.009, 0.005, 0.005, 0.015, 0.158, 0.005, 0.009, 0.064, 0.039, 0.043, 0.274, 0.024, 0.041, 0.192, 0.065, 0.006, 0.036, 0.267, 0.675, 0.006, 0.092, 0.136, 0.022, 0.015, 0.074, 0.087, 0.109, 0.091, 0.093, 0.039, 0.089, 0.115, 0.23, 0.106, 0.018, 0.095, 0.104, 0.008, 0.084, 0.008, 0.005, 0.12, 0.027, 0.005, 0.006, 0.088, 0.855, 0.006, 0.007, 0.006, 0.005, 0.034, 0.028, 0.007, 0.013, 0.01, 0.029, 0.008, 0.059, 0.04, 0.116, 0.007, 0.065, 0.218, 0.097, 0.015, 0.184, 0.007, 0.065, 0.056, 0.023, 0.052, 0.005, 0.054, 0.08, 0.042, 0.048, 0.05, 0.005, 0.016, 0.006, 0.021, 0.009, 0.019, 0.034, 0.006, 0.028, 0.033, 0.042, 0.166, 0.176, 0.031, 0.006, 0.144, 0.163, 0.022, 0.235, 0.237, 0.005, 0.043, 0.008, 0.431, 0.019, 0.01, 0.08, 0.139, 0.186, 0.102, 0.106, 0.134, 0.077, 0.042, 0.084, 0.056, 0.07, 0.095, 0.011, 0.008, 0.017, 0.002, 0.032, 0.031, 0.008, 0.036, 0.029, 0.029, 0.003, 0.006, 0.008, 0.106, 0.072, 0.005, 0.011, 0.075, 0.02, 0.451, 0.012, 0.078, 0.012, 0.006, 0.005, 0.028, 0.072, 0.006, 0.006, 0.049, 0.066, 0.006, 0.159, 0.008, 0.182, 0.044, 0.058, 0.129, 0.173, 0.109, 0.145, 0.054, 0.1, 0.033, 0.131, 0.097, 0.093, 0.045, 0.087, 0.032, 0.018, 0.017, 0.087, 0.069, 0.128, 0.102, 0.088, 0.018, 0.073, 0.018, 0.095, 0.022, 0.125, 0.096, 0.065, 0.116, 0.09, 0.067, 0.062, 0.076, 0.07, 0.059, 0.064], - "probability_F": [0.041, 0.048, 0.135, 0.036, 0.031, 0.027, 0.022, 0.062, 0.016, 0.057, 0.096, 0.012, 0.012, 0.024, 0.014, 0.045, 0.011, 0.016, 0.016, 0.031, 0.012, 0.056, 0.032, 0.155, 0.095, 0.015, 0.009, 0.058, 0.072, 0.024, 0.109, 0.025, 0.017, 0.012, 0.085, 0.032, 0.021, 0.142, 0.063, 0.031, 0.009, 0.044, 0.031, 0.009, 0.009, 0.063, 0.009, 0.008, 0.041, 0.214, 0.023, 0.102, 0.049, 0.103, 0.068, 0.025, 0.019, 0.012, 0.061, 0.033, 0.069, 0.036, 0.018, 0.006, 0.025, 0.007, 0.036, 0.03, 0.007, 0.016, 0.041, 0.1, 0.014, 0.006, 0.007, 0.052, 0.104, 0.014, 0.062, 0.278, 0.014, 0.013, 0.013, 0.02, 0.026, 0.183, 0.022, 0.021, 0.048, 0.017, 0.143, 0.046, 0.014, 0.011, 0.021, 0.071, 0.156, 0.109, 0.013, 0.013, 0.008, 0.007, 0.016, 0.028, 0.014, 0.021, 0.024, 0.002, 0.006, 0.081, 0.053, 0.007, 0.009, 0.034, 0.485, 0.021, 0.041, 0.01, 0.009, 0.031, 0.009, 0.009, 0.128, 0.076, 0.008, 0.037, 0.108, 0.013, 0.008, 0.024, 0.02, 0.009, 0.022, 0.095, 0.032, 0.008, 0.028, 0.062, 0.015, 0.01, 0.029, 0.014, 0.012, 0.009, 0.015, 0.01, 0.013, 0.113, 0.009, 0.059, 0.035, 0.02, 0.039, 0.193, 0.047, 0.032, 0.136, 0.02, 0.131, 0.007, 0.026, 0.031, 0.039, 0.009, 0.047, 0.031, 0.468, 0.007, 0.027, 0.007, 0.208, 0.014, 0.032, 0.054, 0.01, 0.013, 0.015, 0.049, 0.018, 0.009, 0.24, 0.047, 0.01, 0.018, 0.071, 0.024, 0.022, 0.059, 0.09, 0.016, 0.159, 0.02, 0.139, 0.05, 0.021, 0.011, 0.176, 0.167, 0.042, 0.03, 0.058, 0.026, 0.066, 0.253, 0.013, 0.157, 0.066, 0.055, 0.016, 0.077, 0.053, 0.013, 0.063, 0.064, 0.014, 0.046, 0.027, 0.03, 0.157, 0.018, 0.008, 0.022, 0.054, 0.021, 0.009, 0.217, 0.097, 0.017, 0.012, 0.037, 0.044, 0.01, 0.011, 0.035, 0.013, 0.009, 0.012, 0.017, 0.022, 0.007, 0.011, 0.014, 0.01, 0.009, 0.014, 0.024, 0.011, 0.006, 0.24, 0.052, 0.009, 0.034, 0.078, 0.032, 0.015, 0.017, 0.013, 0.014, 0.015, 0.013, 0.012, 0.014, 0.012, 0.021, 0.016, 0.024, 0.021, 0.092, 0.013, 0.014, 0.013, 0.015, 0.03, 0.024, 0.016, 0.02, 0.027, 0.083, 0.027, 0.244, 0.142, 0.202, 0.006, 0.006, 0.06, 0.006, 0.007, 0.013, 0.012, 0.014, 0.019, 0.026, 0.015, 0.125, 0.075, 0.122, 0.077, 0.06, 0.02, 0.016, 0.007, 0.021, 0.004, 0.004, 0.02, 0.026, 0.004, 0.004, 0.015, 0.019, 0.004, 0.004, 0.017, 0.009, 0.006, 0.028, 0.112, 0.006, 0.008, 0.008, 0.009, 0.013, 0.023, 0.009, 0.1, 0.006, 0.007, 0.031, 0.01, 0.005, 0.027, 0.004, 0.076, 0.023, 0.006, 0.007, 0.069, 0.042, 0.009, 0.003, 0.016, 0.054, 0.001, 0.066, 0.063, 0.005, 0.028, 0.021, 0.068, 0.061, 0.069, 0.042, 0.005, 0.023, 0.016, 0.01, 0.005, 0.006, 0.058, 0.014, 0.071, 0.006, 0.004, 0.069, 0.099, 0.043, 0.004, 0.004, 0.004, 0.009, 0.02, 0.032, 0.085, 0.049, 0.018, 0.038, 0.046, 0.019, 0.024, 0.012, 0.022, 0.004, 0.005, 0.007, 0.065, 0.25, 0.006, 0.006, 0.007, 0.02, 0.005, 0.713, 0.008, 0.014, 0.015, 0.003, 0.443, 0.019, 0.005, 0.006, 0.007, 0.016, 0.016, 0.055, 0.031, 0.009, 0.006, 0.158, 0.018, 0.276, 0.058, 0.01, 0.868, 0.007, 0.057, 0.002, 0.005, 0.008, 0.026, 0.005, 0.018, 0.002, 0.014, 0.028, 0.283, 0.011, 0.02, 0.02, 0.01, 0.024, 0.086, 0.032, 0.114, 0.072, 0.023, 0.009, 0.05, 0.057, 0.013, 0.01, 0.526, 0.005, 0.251, 0.009, 0.023, 0.015, 0.008, 0.008, 0.01, 0.008, 0.031, 0.009, 0.041, 0.011, 0.059, 0.013, 0.069, 0.021, 0.053, 0.054, 0.043, 0.014, 0.017, 0.01, 0.011, 0.013, 0.065, 0.029, 0.049, 0.013, 0.062, 0.014, 0.016, 0.017, 0.016, 0.02, 0.028, 0.031, 0.024, 0.027, 0.036, 0.042], - "probability_G": [0.034, 0.023, 0.019, 0.058, 0.031, 0.032, 0.035, 0.03, 0.065, 0.027, 0.027, 0.034, 0.034, 0.029, 0.122, 0.017, 0.02, 0.385, 0.019, 0.026, 0.13, 0.017, 0.021, 0.02, 0.014, 0.48, 0.024, 0.018, 0.021, 0.036, 0.019, 0.086, 0.039, 0.124, 0.032, 0.035, 0.034, 0.026, 0.027, 0.024, 0.027, 0.016, 0.03, 0.025, 0.023, 0.018, 0.489, 0.034, 0.012, 0.02, 0.112, 0.014, 0.025, 0.027, 0.414, 0.085, 0.032, 0.021, 0.018, 0.011, 0.015, 0.013, 0.032, 0.086, 0.018, 0.027, 0.018, 0.012, 0.021, 0.019, 0.016, 0.016, 0.039, 0.036, 0.028, 0.078, 0.05, 0.043, 0.027, 0.034, 0.046, 0.083, 0.058, 0.055, 0.032, 0.017, 0.112, 0.036, 0.024, 0.157, 0.041, 0.07, 0.178, 0.078, 0.27, 0.018, 0.054, 0.019, 0.03, 0.029, 0.4, 0.022, 0.022, 0.01, 0.024, 0.019, 0.014, 0.005, 0.028, 0.012, 0.015, 0.027, 0.026, 0.054, 0.01, 0.065, 0.048, 0.124, 0.028, 0.029, 0.023, 0.061, 0.013, 0.024, 0.056, 0.017, 0.011, 0.028, 0.032, 0.018, 0.062, 0.034, 0.025, 0.01, 0.014, 0.034, 0.028, 0.011, 0.036, 0.036, 0.026, 0.061, 0.049, 0.052, 0.344, 0.05, 0.036, 0.015, 0.019, 0.011, 0.048, 0.029, 0.015, 0.011, 0.07, 0.026, 0.013, 0.022, 0.034, 0.024, 0.016, 0.011, 0.147, 0.031, 0.014, 0.064, 0.01, 0.478, 0.027, 0.029, 0.017, 0.121, 0.049, 0.04, 0.051, 0.062, 0.078, 0.041, 0.038, 0.039, 0.024, 0.029, 0.028, 0.04, 0.049, 0.035, 0.038, 0.027, 0.027, 0.048, 0.04, 0.06, 0.047, 0.033, 0.067, 0.06, 0.05, 0.043, 0.034, 0.059, 0.028, 0.055, 0.04, 0.022, 0.039, 0.038, 0.023, 0.042, 0.049, 0.05, 0.036, 0.051, 0.057, 0.022, 0.067, 0.042, 0.044, 0.05, 0.03, 0.039, 0.033, 0.031, 0.018, 0.029, 0.05, 0.018, 0.016, 0.035, 0.043, 0.025, 0.016, 0.029, 0.029, 0.016, 0.022, 0.025, 0.049, 0.037, 0.029, 0.045, 0.07, 0.08, 0.059, 0.048, 0.065, 0.056, 0.043, 0.029, 0.027, 0.02, 0.057, 0.02, 0.013, 0.012, 0.033, 0.044, 0.033, 0.047, 0.056, 0.059, 0.049, 0.054, 0.047, 0.09, 0.164, 0.05, 0.098, 0.013, 0.032, 0.02, 0.027, 0.018, 0.014, 0.018, 0.084, 0.022, 0.032, 0.03, 0.04, 0.011, 0.009, 0.056, 0.096, 0.687, 0.019, 0.024, 0.012, 0.009, 0.048, 0.046, 0.034, 0.008, 0.054, 0.032, 0.062, 0.011, 0.013, 0.013, 0.006, 0.042, 0.019, 0.012, 0.014, 0.032, 0.007, 0.009, 0.02, 0.013, 0.008, 0.011, 0.019, 0.013, 0.007, 0.018, 0.044, 0.016, 0.029, 0.285, 0.107, 0.077, 0.104, 0.038, 0.024, 0.03, 0.022, 0.029, 0.03, 0.009, 0.04, 0.032, 0.007, 0.017, 0.008, 0.007, 0.028, 0.035, 0.008, 0.007, 0.011, 0.009, 0.047, 0.009, 0.004, 0.006, 0.031, 0.036, 0.015, 0.077, 0.039, 0.137, 0.024, 0.047, 0.015, 0.015, 0.012, 0.026, 0.037, 0.082, 0.016, 0.014, 0.009, 0.186, 0.575, 0.012, 0.013, 0.008, 0.016, 0.044, 0.572, 0.014, 0.025, 0.006, 0.06, 0.019, 0.024, 0.017, 0.05, 0.074, 0.015, 0.1, 0.012, 0.012, 0.02, 0.026, 0.01, 0.039, 0.109, 0.014, 0.015, 0.025, 0.016, 0.006, 0.011, 0.016, 0.035, 0.009, 0.01, 0.026, 0.079, 0.081, 0.085, 0.111, 0.053, 0.065, 0.038, 0.056, 0.037, 0.046, 0.039, 0.009, 0.01, 0.042, 0.004, 0.507, 0.124, 0.89, 0.024, 0.012, 0.049, 0.006, 0.007, 0.881, 0.014, 0.051, 0.006, 0.091, 0.013, 0.011, 0.017, 0.025, 0.03, 0.009, 0.036, 0.007, 0.055, 0.024, 0.007, 0.008, 0.021, 0.034, 0.008, 0.016, 0.009, 0.022, 0.017, 0.034, 0.057, 0.104, 0.053, 0.041, 0.023, 0.029, 0.018, 0.031, 0.031, 0.052, 0.028, 0.17, 0.137, 0.019, 0.019, 0.035, 0.027, 0.035, 0.049, 0.09, 0.02, 0.027, 0.02, 0.034, 0.022, 0.033, 0.034, 0.03, 0.042, 0.066, 0.042, 0.041, 0.055, 0.081, 0.056, 0.058], - "probability_H": [0.021, 0.019, 0.033, 0.025, 0.025, 0.042, 0.03, 0.06, 0.029, 0.024, 0.021, 0.029, 0.028, 0.028, 0.03, 0.012, 0.016, 0.031, 0.015, 0.018, 0.018, 0.018, 0.013, 0.01, 0.01, 0.017, 0.062, 0.011, 0.087, 0.035, 0.016, 0.056, 0.023, 0.032, 0.04, 0.097, 0.054, 0.036, 0.038, 0.036, 0.028, 0.014, 0.1, 0.023, 0.019, 0.07, 0.018, 0.02, 0.009, 0.012, 0.035, 0.01, 0.056, 0.013, 0.01, 0.03, 0.025, 0.03, 0.016, 0.009, 0.029, 0.008, 0.026, 0.041, 0.025, 0.019, 0.021, 0.008, 0.043, 0.047, 0.008, 0.01, 0.024, 0.03, 0.06, 0.05, 0.048, 0.032, 0.032, 0.023, 0.025, 0.027, 0.034, 0.029, 0.025, 0.023, 0.034, 0.027, 0.019, 0.026, 0.023, 0.024, 0.026, 0.035, 0.024, 0.01, 0.012, 0.011, 0.019, 0.037, 0.03, 0.036, 0.048, 0.132, 0.038, 0.045, 0.087, 0.038, 0.022, 0.012, 0.007, 0.037, 0.051, 0.029, 0.008, 0.093, 0.025, 0.022, 0.037, 0.01, 0.02, 0.029, 0.018, 0.03, 0.036, 0.023, 0.009, 0.031, 0.028, 0.045, 0.013, 0.034, 0.032, 0.01, 0.015, 0.025, 0.042, 0.007, 0.031, 0.027, 0.041, 0.017, 0.027, 0.021, 0.021, 0.021, 0.017, 0.01, 0.021, 0.009, 0.04, 0.039, 0.042, 0.009, 0.033, 0.032, 0.011, 0.008, 0.008, 0.015, 0.007, 0.006, 0.008, 0.023, 0.008, 0.007, 0.008, 0.014, 0.036, 0.024, 0.011, 0.034, 0.025, 0.02, 0.028, 0.032, 0.021, 0.026, 0.06, 0.03, 0.014, 0.019, 0.035, 0.033, 0.011, 0.028, 0.026, 0.011, 0.012, 0.03, 0.022, 0.023, 0.027, 0.013, 0.025, 0.022, 0.019, 0.02, 0.022, 0.024, 0.013, 0.019, 0.02, 0.014, 0.019, 0.018, 0.013, 0.016, 0.028, 0.02, 0.016, 0.028, 0.021, 0.02, 0.049, 0.019, 0.025, 0.02, 0.022, 0.034, 0.035, 0.025, 0.017, 0.031, 0.028, 0.023, 0.014, 0.032, 0.023, 0.026, 0.012, 0.021, 0.03, 0.079, 0.022, 0.021, 0.03, 0.034, 0.017, 0.024, 0.024, 0.023, 0.023, 0.017, 0.077, 0.026, 0.022, 0.013, 0.012, 0.011, 0.031, 0.025, 0.011, 0.01, 0.024, 0.032, 0.026, 0.036, 0.024, 0.02, 0.024, 0.018, 0.02, 0.02, 0.076, 0.018, 0.022, 0.008, 0.02, 0.026, 0.023, 0.028, 0.01, 0.016, 0.027, 0.032, 0.01, 0.009, 0.01, 0.013, 0.007, 0.006, 0.009, 0.006, 0.168, 0.042, 0.007, 0.005, 0.008, 0.023, 0.006, 0.005, 0.015, 0.019, 0.005, 0.005, 0.04, 0.053, 0.004, 0.016, 0.036, 0.266, 0.012, 0.05, 0.018, 0.012, 0.021, 0.013, 0.004, 0.046, 0.017, 0.013, 0.02, 0.018, 0.021, 0.021, 0.009, 0.016, 0.029, 0.033, 0.019, 0.02, 0.01, 0.014, 0.026, 0.017, 0.038, 0.009, 0.027, 0.032, 0.007, 0.03, 0.012, 0.007, 0.043, 0.016, 0.005, 0.005, 0.058, 0.005, 0.005, 0.01, 0.005, 0.017, 0.161, 0.011, 0.007, 0.01, 0.021, 0.016, 0.012, 0.021, 0.133, 0.016, 0.006, 0.019, 0.023, 0.014, 0.008, 0.024, 0.007, 0.025, 0.01, 0.056, 0.065, 0.005, 0.013, 0.011, 0.014, 0.018, 0.023, 0.005, 0.021, 0.006, 0.025, 0.025, 0.038, 0.02, 0.007, 0.333, 0.134, 0.031, 0.013, 0.019, 0.04, 0.015, 0.021, 0.019, 0.01, 0.055, 0.015, 0.005, 0.019, 0.006, 0.019, 0.04, 0.019, 0.013, 0.017, 0.016, 0.028, 0.016, 0.023, 0.03, 0.021, 0.074, 0.027, 0.057, 0.023, 0.078, 0.009, 0.01, 0.004, 0.015, 0.047, 0.003, 0.017, 0.125, 0.022, 0.002, 0.005, 0.002, 0.013, 0.079, 0.006, 0.005, 0.015, 0.021, 0.019, 0.005, 0.032, 0.007, 0.005, 0.005, 0.033, 0.054, 0.005, 0.006, 0.065, 0.07, 0.011, 0.029, 0.007, 0.026, 0.016, 0.022, 0.023, 0.022, 0.032, 0.026, 0.019, 0.022, 0.013, 0.025, 0.016, 0.028, 0.022, 0.03, 0.016, 0.013, 0.014, 0.033, 0.024, 0.027, 0.033, 0.024, 0.016, 0.028, 0.014, 0.029, 0.016, 0.03, 0.03, 0.027, 0.029, 0.026, 0.025, 0.023, 0.024, 0.023, 0.022, 0.029], - "probability_I": [0.087, 0.11, 0.048, 0.058, 0.065, 0.046, 0.036, 0.055, 0.025, 0.079, 0.076, 0.021, 0.023, 0.046, 0.019, 0.194, 0.02, 0.021, 0.035, 0.029, 0.019, 0.084, 0.042, 0.21, 0.24, 0.028, 0.015, 0.122, 0.072, 0.018, 0.115, 0.024, 0.018, 0.016, 0.055, 0.042, 0.036, 0.058, 0.041, 0.059, 0.015, 0.073, 0.028, 0.013, 0.033, 0.037, 0.014, 0.011, 0.24, 0.079, 0.023, 0.149, 0.019, 0.096, 0.04, 0.019, 0.035, 0.015, 0.105, 0.175, 0.123, 0.21, 0.027, 0.01, 0.031, 0.013, 0.081, 0.22, 0.011, 0.02, 0.235, 0.052, 0.069, 0.012, 0.011, 0.021, 0.019, 0.028, 0.08, 0.042, 0.021, 0.016, 0.019, 0.024, 0.034, 0.076, 0.031, 0.037, 0.112, 0.023, 0.077, 0.066, 0.014, 0.014, 0.041, 0.208, 0.083, 0.093, 0.036, 0.012, 0.01, 0.01, 0.023, 0.033, 0.011, 0.022, 0.059, 0.004, 0.01, 0.175, 0.125, 0.02, 0.014, 0.038, 0.05, 0.013, 0.021, 0.012, 0.039, 0.138, 0.016, 0.015, 0.057, 0.059, 0.011, 0.155, 0.205, 0.03, 0.013, 0.055, 0.07, 0.016, 0.057, 0.062, 0.152, 0.011, 0.03, 0.145, 0.019, 0.018, 0.028, 0.042, 0.014, 0.02, 0.011, 0.015, 0.03, 0.171, 0.015, 0.15, 0.017, 0.013, 0.079, 0.105, 0.015, 0.015, 0.062, 0.047, 0.056, 0.009, 0.23, 0.428, 0.042, 0.017, 0.113, 0.08, 0.043, 0.009, 0.066, 0.012, 0.1, 0.011, 0.015, 0.063, 0.016, 0.016, 0.026, 0.023, 0.026, 0.028, 0.083, 0.132, 0.017, 0.034, 0.104, 0.028, 0.021, 0.129, 0.107, 0.024, 0.069, 0.029, 0.083, 0.097, 0.027, 0.027, 0.087, 0.08, 0.072, 0.042, 0.131, 0.032, 0.105, 0.089, 0.017, 0.06, 0.094, 0.099, 0.012, 0.124, 0.056, 0.014, 0.063, 0.065, 0.013, 0.108, 0.03, 0.065, 0.081, 0.028, 0.014, 0.023, 0.157, 0.044, 0.016, 0.091, 0.158, 0.032, 0.018, 0.1, 0.242, 0.02, 0.018, 0.101, 0.087, 0.015, 0.02, 0.026, 0.073, 0.017, 0.016, 0.034, 0.022, 0.026, 0.016, 0.02, 0.058, 0.015, 0.096, 0.112, 0.013, 0.084, 0.075, 0.181, 0.015, 0.039, 0.03, 0.029, 0.022, 0.018, 0.017, 0.032, 0.018, 0.021, 0.014, 0.024, 0.022, 0.088, 0.013, 0.023, 0.054, 0.02, 0.254, 0.146, 0.027, 0.042, 0.104, 0.137, 0.076, 0.089, 0.162, 0.136, 0.013, 0.011, 0.05, 0.01, 0.017, 0.046, 0.023, 0.057, 0.042, 0.153, 0.022, 0.032, 0.102, 0.119, 0.043, 0.026, 0.079, 0.073, 0.02, 0.007, 0.007, 0.009, 0.183, 0.036, 0.009, 0.013, 0.095, 0.023, 0.008, 0.008, 0.306, 0.022, 0.013, 0.115, 0.128, 0.01, 0.009, 0.011, 0.023, 0.031, 0.123, 0.018, 0.046, 0.011, 0.015, 0.143, 0.015, 0.007, 0.04, 0.012, 0.039, 0.089, 0.009, 0.012, 0.122, 0.351, 0.007, 0.003, 0.062, 0.044, 0.003, 0.079, 0.028, 0.009, 0.133, 0.064, 0.07, 0.054, 0.155, 0.023, 0.008, 0.066, 0.044, 0.043, 0.009, 0.008, 0.119, 0.036, 0.228, 0.007, 0.006, 0.063, 0.036, 0.459, 0.007, 0.008, 0.006, 0.025, 0.08, 0.205, 0.124, 0.184, 0.02, 0.139, 0.036, 0.028, 0.218, 0.009, 0.012, 0.009, 0.007, 0.011, 0.137, 0.024, 0.01, 0.006, 0.012, 0.007, 0.019, 0.023, 0.054, 0.043, 0.006, 0.006, 0.025, 0.064, 0.011, 0.014, 0.012, 0.043, 0.016, 0.017, 0.091, 0.012, 0.009, 0.016, 0.031, 0.032, 0.166, 0.025, 0.007, 0.012, 0.044, 0.004, 0.038, 0.008, 0.121, 0.006, 0.254, 0.003, 0.047, 0.012, 0.072, 0.019, 0.049, 0.061, 0.026, 0.13, 0.016, 0.163, 0.122, 0.129, 0.047, 0.022, 0.178, 0.109, 0.009, 0.008, 0.033, 0.01, 0.141, 0.022, 0.041, 0.042, 0.013, 0.013, 0.018, 0.018, 0.129, 0.016, 0.099, 0.018, 0.072, 0.03, 0.074, 0.019, 0.089, 0.127, 0.104, 0.027, 0.029, 0.019, 0.019, 0.02, 0.152, 0.057, 0.125, 0.025, 0.126, 0.027, 0.029, 0.031, 0.029, 0.036, 0.057, 0.074, 0.043, 0.046, 0.064, 0.056], - "probability_K": [0.062, 0.046, 0.033, 0.071, 0.074, 0.084, 0.1, 0.068, 0.103, 0.052, 0.045, 0.184, 0.181, 0.09, 0.098, 0.018, 0.066, 0.053, 0.046, 0.141, 0.079, 0.024, 0.033, 0.015, 0.014, 0.043, 0.062, 0.016, 0.032, 0.074, 0.021, 0.1, 0.193, 0.084, 0.059, 0.059, 0.093, 0.051, 0.064, 0.068, 0.14, 0.025, 0.064, 0.234, 0.258, 0.025, 0.056, 0.129, 0.014, 0.014, 0.092, 0.012, 0.096, 0.022, 0.022, 0.064, 0.118, 0.074, 0.018, 0.011, 0.012, 0.011, 0.052, 0.056, 0.037, 0.102, 0.018, 0.011, 0.287, 0.071, 0.011, 0.013, 0.079, 0.233, 0.112, 0.075, 0.076, 0.088, 0.082, 0.058, 0.091, 0.109, 0.094, 0.093, 0.073, 0.033, 0.073, 0.081, 0.054, 0.081, 0.038, 0.049, 0.113, 0.087, 0.033, 0.014, 0.014, 0.013, 0.039, 0.07, 0.051, 0.079, 0.13, 0.013, 0.235, 0.124, 0.036, 0.08, 0.264, 0.04, 0.009, 0.051, 0.063, 0.045, 0.01, 0.051, 0.079, 0.12, 0.193, 0.016, 0.229, 0.084, 0.015, 0.039, 0.074, 0.033, 0.012, 0.072, 0.099, 0.079, 0.03, 0.084, 0.099, 0.015, 0.024, 0.124, 0.143, 0.013, 0.113, 0.15, 0.09, 0.058, 0.104, 0.1, 0.069, 0.163, 0.057, 0.015, 0.054, 0.011, 0.12, 0.087, 0.037, 0.01, 0.068, 0.096, 0.01, 0.016, 0.012, 0.05, 0.01, 0.009, 0.013, 0.108, 0.013, 0.011, 0.01, 0.044, 0.12, 0.091, 0.014, 0.069, 0.058, 0.048, 0.097, 0.092, 0.084, 0.095, 0.07, 0.085, 0.022, 0.033, 0.111, 0.07, 0.018, 0.143, 0.145, 0.016, 0.023, 0.109, 0.042, 0.063, 0.032, 0.036, 0.076, 0.073, 0.027, 0.035, 0.046, 0.068, 0.03, 0.07, 0.04, 0.019, 0.067, 0.052, 0.027, 0.056, 0.108, 0.035, 0.078, 0.139, 0.083, 0.073, 0.123, 0.063, 0.12, 0.114, 0.052, 0.097, 0.184, 0.123, 0.024, 0.087, 0.104, 0.039, 0.021, 0.106, 0.19, 0.064, 0.024, 0.177, 0.126, 0.047, 0.183, 0.1, 0.099, 0.108, 0.083, 0.11, 0.084, 0.081, 0.101, 0.188, 0.09, 0.113, 0.112, 0.049, 0.021, 0.026, 0.063, 0.039, 0.022, 0.016, 0.09, 0.072, 0.102, 0.098, 0.092, 0.195, 0.096, 0.074, 0.09, 0.074, 0.079, 0.155, 0.093, 0.017, 0.049, 0.053, 0.079, 0.069, 0.017, 0.069, 0.051, 0.039, 0.01, 0.044, 0.02, 0.008, 0.007, 0.007, 0.027, 0.016, 0.03, 0.033, 0.022, 0.008, 0.021, 0.032, 0.007, 0.007, 0.035, 0.01, 0.006, 0.007, 0.031, 0.022, 0.006, 0.01, 0.159, 0.043, 0.045, 0.066, 0.03, 0.022, 0.134, 0.368, 0.006, 0.054, 0.094, 0.032, 0.008, 0.071, 0.066, 0.028, 0.019, 0.079, 0.086, 0.14, 0.062, 0.07, 0.028, 0.051, 0.043, 0.062, 0.054, 0.024, 0.118, 0.202, 0.009, 0.13, 0.023, 0.007, 0.089, 0.041, 0.006, 0.006, 0.284, 0.016, 0.007, 0.007, 0.027, 0.028, 0.032, 0.029, 0.007, 0.011, 0.013, 0.021, 0.008, 0.05, 0.057, 0.081, 0.008, 0.092, 0.159, 0.037, 0.011, 0.094, 0.008, 0.069, 0.042, 0.039, 0.058, 0.006, 0.079, 0.344, 0.06, 0.027, 0.066, 0.007, 0.008, 0.006, 0.021, 0.009, 0.019, 0.036, 0.007, 0.026, 0.048, 0.032, 0.079, 0.131, 0.022, 0.007, 0.079, 0.064, 0.024, 0.052, 0.124, 0.006, 0.13, 0.008, 0.036, 0.03, 0.01, 0.034, 0.093, 0.099, 0.068, 0.149, 0.096, 0.109, 0.091, 0.1, 0.102, 0.055, 0.078, 0.01, 0.024, 0.017, 0.002, 0.027, 0.039, 0.007, 0.086, 0.032, 0.049, 0.005, 0.007, 0.005, 0.128, 0.071, 0.007, 0.011, 0.072, 0.026, 0.033, 0.007, 0.233, 0.031, 0.007, 0.007, 0.017, 0.075, 0.007, 0.007, 0.065, 0.11, 0.008, 0.091, 0.009, 0.149, 0.051, 0.048, 0.124, 0.102, 0.084, 0.119, 0.05, 0.081, 0.03, 0.172, 0.043, 0.112, 0.053, 0.087, 0.033, 0.022, 0.02, 0.112, 0.095, 0.142, 0.154, 0.087, 0.023, 0.088, 0.021, 0.166, 0.026, 0.122, 0.107, 0.132, 0.093, 0.085, 0.081, 0.073, 0.077, 0.067, 0.063, 0.067], - "probability_L": [0.112, 0.19, 0.083, 0.086, 0.081, 0.065, 0.051, 0.076, 0.04, 0.123, 0.11, 0.035, 0.037, 0.127, 0.044, 0.152, 0.029, 0.031, 0.044, 0.047, 0.033, 0.33, 0.063, 0.202, 0.219, 0.038, 0.028, 0.304, 0.27, 0.068, 0.232, 0.05, 0.042, 0.043, 0.101, 0.09, 0.09, 0.087, 0.124, 0.119, 0.027, 0.298, 0.036, 0.031, 0.032, 0.061, 0.022, 0.019, 0.136, 0.077, 0.057, 0.249, 0.029, 0.228, 0.085, 0.04, 0.04, 0.046, 0.1, 0.228, 0.107, 0.192, 0.036, 0.016, 0.064, 0.019, 0.219, 0.107, 0.019, 0.03, 0.12, 0.437, 0.062, 0.022, 0.018, 0.032, 0.042, 0.04, 0.077, 0.058, 0.04, 0.024, 0.039, 0.04, 0.052, 0.128, 0.045, 0.068, 0.143, 0.041, 0.146, 0.21, 0.031, 0.028, 0.078, 0.292, 0.165, 0.143, 0.086, 0.019, 0.018, 0.019, 0.059, 0.049, 0.028, 0.043, 0.156, 0.008, 0.017, 0.218, 0.276, 0.066, 0.038, 0.078, 0.179, 0.056, 0.047, 0.027, 0.025, 0.313, 0.044, 0.036, 0.16, 0.081, 0.02, 0.161, 0.106, 0.051, 0.029, 0.042, 0.065, 0.033, 0.08, 0.394, 0.167, 0.029, 0.047, 0.354, 0.057, 0.035, 0.064, 0.054, 0.031, 0.034, 0.02, 0.028, 0.028, 0.114, 0.024, 0.24, 0.047, 0.027, 0.167, 0.195, 0.042, 0.068, 0.218, 0.049, 0.248, 0.017, 0.087, 0.11, 0.084, 0.051, 0.151, 0.133, 0.12, 0.016, 0.056, 0.018, 0.141, 0.022, 0.038, 0.252, 0.027, 0.03, 0.034, 0.043, 0.035, 0.038, 0.145, 0.132, 0.039, 0.067, 0.139, 0.049, 0.042, 0.232, 0.223, 0.036, 0.104, 0.037, 0.114, 0.21, 0.039, 0.038, 0.127, 0.112, 0.18, 0.087, 0.182, 0.058, 0.124, 0.161, 0.037, 0.097, 0.322, 0.15, 0.024, 0.179, 0.223, 0.028, 0.096, 0.224, 0.026, 0.139, 0.063, 0.089, 0.124, 0.046, 0.029, 0.03, 0.156, 0.053, 0.026, 0.108, 0.238, 0.042, 0.029, 0.099, 0.127, 0.031, 0.036, 0.129, 0.058, 0.027, 0.039, 0.062, 0.156, 0.028, 0.025, 0.043, 0.036, 0.028, 0.023, 0.037, 0.05, 0.016, 0.198, 0.364, 0.037, 0.192, 0.366, 0.352, 0.031, 0.087, 0.085, 0.073, 0.055, 0.051, 0.041, 0.066, 0.034, 0.036, 0.026, 0.047, 0.044, 0.381, 0.023, 0.023, 0.081, 0.025, 0.283, 0.117, 0.032, 0.07, 0.146, 0.195, 0.13, 0.271, 0.297, 0.171, 0.017, 0.015, 0.04, 0.015, 0.02, 0.042, 0.029, 0.04, 0.142, 0.458, 0.034, 0.055, 0.121, 0.306, 0.161, 0.18, 0.606, 0.191, 0.08, 0.015, 0.016, 0.018, 0.073, 0.179, 0.018, 0.027, 0.39, 0.052, 0.016, 0.015, 0.235, 0.055, 0.026, 0.105, 0.227, 0.019, 0.024, 0.029, 0.04, 0.092, 0.107, 0.033, 0.092, 0.018, 0.029, 0.327, 0.066, 0.016, 0.491, 0.016, 0.101, 0.462, 0.024, 0.036, 0.057, 0.175, 0.045, 0.006, 0.056, 0.537, 0.005, 0.442, 0.037, 0.013, 0.077, 0.07, 0.166, 0.14, 0.272, 0.04, 0.016, 0.056, 0.084, 0.081, 0.013, 0.011, 0.087, 0.046, 0.259, 0.033, 0.01, 0.069, 0.069, 0.145, 0.015, 0.012, 0.01, 0.022, 0.071, 0.133, 0.177, 0.136, 0.066, 0.149, 0.068, 0.058, 0.187, 0.061, 0.045, 0.027, 0.013, 0.026, 0.123, 0.03, 0.015, 0.012, 0.018, 0.074, 0.029, 0.046, 0.044, 0.043, 0.021, 0.009, 0.033, 0.324, 0.022, 0.032, 0.02, 0.035, 0.026, 0.036, 0.115, 0.018, 0.023, 0.041, 0.059, 0.112, 0.264, 0.026, 0.015, 0.026, 0.065, 0.005, 0.024, 0.014, 0.042, 0.008, 0.215, 0.004, 0.043, 0.024, 0.366, 0.024, 0.161, 0.188, 0.03, 0.256, 0.038, 0.281, 0.115, 0.426, 0.042, 0.056, 0.436, 0.464, 0.051, 0.022, 0.061, 0.015, 0.165, 0.05, 0.154, 0.07, 0.028, 0.024, 0.031, 0.03, 0.128, 0.024, 0.235, 0.03, 0.142, 0.039, 0.142, 0.031, 0.13, 0.166, 0.276, 0.048, 0.043, 0.035, 0.033, 0.033, 0.183, 0.078, 0.214, 0.039, 0.157, 0.04, 0.054, 0.049, 0.044, 0.051, 0.07, 0.085, 0.054, 0.057, 0.085, 0.08], - "probability_M": [0.034, 0.047, 0.026, 0.034, 0.032, 0.027, 0.023, 0.031, 0.019, 0.039, 0.039, 0.016, 0.016, 0.028, 0.016, 0.038, 0.013, 0.014, 0.017, 0.027, 0.013, 0.032, 0.022, 0.028, 0.031, 0.016, 0.012, 0.062, 0.038, 0.022, 0.062, 0.017, 0.014, 0.013, 0.024, 0.021, 0.026, 0.025, 0.025, 0.055, 0.014, 0.059, 0.019, 0.011, 0.014, 0.02, 0.01, 0.009, 0.04, 0.091, 0.016, 0.046, 0.014, 0.066, 0.031, 0.022, 0.02, 0.012, 0.056, 0.03, 0.05, 0.024, 0.021, 0.008, 0.017, 0.008, 0.07, 0.037, 0.01, 0.01, 0.039, 0.067, 0.022, 0.009, 0.009, 0.012, 0.012, 0.012, 0.021, 0.02, 0.015, 0.011, 0.016, 0.02, 0.02, 0.036, 0.016, 0.026, 0.04, 0.02, 0.031, 0.053, 0.013, 0.011, 0.034, 0.042, 0.029, 0.059, 0.024, 0.009, 0.008, 0.008, 0.016, 0.017, 0.011, 0.019, 0.081, 0.003, 0.009, 0.067, 0.072, 0.037, 0.017, 0.025, 0.038, 0.017, 0.043, 0.01, 0.024, 0.084, 0.014, 0.019, 0.157, 0.036, 0.009, 0.044, 0.123, 0.015, 0.011, 0.018, 0.026, 0.013, 0.023, 0.113, 0.055, 0.011, 0.016, 0.061, 0.016, 0.014, 0.02, 0.022, 0.013, 0.012, 0.008, 0.012, 0.012, 0.034, 0.011, 0.098, 0.02, 0.013, 0.048, 0.098, 0.028, 0.016, 0.059, 0.031, 0.073, 0.008, 0.037, 0.059, 0.052, 0.015, 0.068, 0.042, 0.065, 0.008, 0.02, 0.011, 0.037, 0.01, 0.026, 0.037, 0.011, 0.011, 0.012, 0.02, 0.012, 0.014, 0.04, 0.04, 0.014, 0.035, 0.061, 0.025, 0.019, 0.069, 0.064, 0.022, 0.039, 0.02, 0.049, 0.057, 0.02, 0.02, 0.041, 0.047, 0.041, 0.028, 0.048, 0.023, 0.045, 0.039, 0.016, 0.026, 0.044, 0.046, 0.01, 0.033, 0.04, 0.014, 0.028, 0.039, 0.012, 0.049, 0.021, 0.027, 0.035, 0.023, 0.015, 0.013, 0.059, 0.025, 0.011, 0.039, 0.058, 0.033, 0.015, 0.033, 0.043, 0.015, 0.015, 0.07, 0.025, 0.013, 0.016, 0.022, 0.043, 0.013, 0.013, 0.017, 0.014, 0.012, 0.012, 0.02, 0.024, 0.007, 0.056, 0.064, 0.011, 0.046, 0.125, 0.076, 0.012, 0.026, 0.041, 0.022, 0.018, 0.014, 0.013, 0.017, 0.014, 0.014, 0.012, 0.015, 0.015, 0.096, 0.009, 0.019, 0.021, 0.011, 0.058, 0.035, 0.022, 0.044, 0.059, 0.07, 0.028, 0.094, 0.092, 0.044, 0.007, 0.007, 0.022, 0.006, 0.009, 0.019, 0.013, 0.019, 0.032, 0.084, 0.019, 0.023, 0.038, 0.126, 0.038, 0.028, 0.107, 0.052, 0.025, 0.006, 0.006, 0.007, 0.024, 0.082, 0.008, 0.01, 0.028, 0.015, 0.007, 0.005, 0.026, 0.018, 0.01, 0.02, 0.035, 0.007, 0.011, 0.007, 0.012, 0.02, 0.023, 0.01, 0.044, 0.007, 0.016, 0.039, 0.022, 0.008, 0.211, 0.006, 0.016, 0.052, 0.014, 0.074, 0.019, 0.045, 0.019, 0.003, 0.02, 0.108, 0.002, 0.079, 0.018, 0.008, 0.016, 0.014, 0.056, 0.039, 0.051, 0.027, 0.007, 0.038, 0.019, 0.034, 0.007, 0.006, 0.04, 0.017, 0.021, 0.019, 0.005, 0.026, 0.014, 0.019, 0.006, 0.006, 0.005, 0.022, 0.047, 0.028, 0.081, 0.053, 0.024, 0.032, 0.021, 0.019, 0.114, 0.023, 0.037, 0.03, 0.005, 0.008, 0.018, 0.012, 0.006, 0.006, 0.008, 0.021, 0.011, 0.012, 0.02, 0.013, 0.009, 0.004, 0.019, 0.037, 0.007, 0.013, 0.008, 0.014, 0.01, 0.014, 0.032, 0.012, 0.01, 0.021, 0.017, 0.035, 0.1, 0.013, 0.004, 0.007, 0.024, 0.002, 0.012, 0.007, 0.068, 0.003, 0.025, 0.002, 0.075, 0.01, 0.06, 0.01, 0.1, 0.145, 0.034, 0.173, 0.016, 0.052, 0.047, 0.052, 0.017, 0.049, 0.063, 0.033, 0.014, 0.01, 0.019, 0.007, 0.035, 0.011, 0.028, 0.021, 0.012, 0.013, 0.019, 0.02, 0.036, 0.011, 0.084, 0.015, 0.052, 0.018, 0.042, 0.016, 0.043, 0.047, 0.067, 0.027, 0.03, 0.017, 0.016, 0.015, 0.047, 0.038, 0.064, 0.02, 0.047, 0.018, 0.02, 0.019, 0.019, 0.022, 0.028, 0.029, 0.021, 0.02, 0.025, 0.024], - "probability_N": [0.037, 0.028, 0.026, 0.046, 0.044, 0.05, 0.07, 0.046, 0.073, 0.031, 0.031, 0.057, 0.061, 0.05, 0.079, 0.014, 0.032, 0.033, 0.028, 0.041, 0.036, 0.017, 0.02, 0.015, 0.012, 0.028, 0.322, 0.013, 0.022, 0.048, 0.015, 0.06, 0.054, 0.075, 0.041, 0.043, 0.045, 0.03, 0.045, 0.035, 0.056, 0.018, 0.036, 0.057, 0.04, 0.021, 0.036, 0.064, 0.021, 0.01, 0.032, 0.011, 0.05, 0.031, 0.029, 0.061, 0.051, 0.053, 0.02, 0.01, 0.019, 0.01, 0.106, 0.058, 0.023, 0.041, 0.038, 0.017, 0.044, 0.04, 0.01, 0.012, 0.048, 0.075, 0.096, 0.056, 0.042, 0.08, 0.053, 0.025, 0.041, 0.123, 0.04, 0.045, 0.044, 0.027, 0.061, 0.043, 0.029, 0.056, 0.028, 0.05, 0.062, 0.11, 0.054, 0.012, 0.032, 0.048, 0.033, 0.102, 0.051, 0.043, 0.05, 0.01, 0.03, 0.055, 0.022, 0.009, 0.052, 0.016, 0.008, 0.095, 0.044, 0.033, 0.008, 0.064, 0.052, 0.063, 0.062, 0.015, 0.048, 0.064, 0.017, 0.025, 0.043, 0.018, 0.012, 0.073, 0.043, 0.04, 0.028, 0.066, 0.048, 0.009, 0.015, 0.057, 0.069, 0.009, 0.045, 0.056, 0.049, 0.034, 0.061, 0.075, 0.068, 0.051, 0.034, 0.013, 0.136, 0.009, 0.045, 0.052, 0.017, 0.013, 0.088, 0.059, 0.01, 0.018, 0.04, 0.149, 0.034, 0.009, 0.019, 0.048, 0.011, 0.013, 0.008, 0.048, 0.035, 0.07, 0.012, 0.119, 0.039, 0.025, 0.092, 0.121, 0.039, 0.065, 0.078, 0.038, 0.014, 0.019, 0.046, 0.088, 0.018, 0.064, 0.052, 0.024, 0.021, 0.062, 0.032, 0.073, 0.031, 0.025, 0.076, 0.049, 0.022, 0.034, 0.036, 0.057, 0.024, 0.08, 0.033, 0.016, 0.043, 0.032, 0.023, 0.028, 0.043, 0.021, 0.023, 0.048, 0.054, 0.027, 0.112, 0.037, 0.04, 0.035, 0.036, 0.053, 0.055, 0.045, 0.015, 0.056, 0.11, 0.018, 0.013, 0.053, 0.056, 0.032, 0.012, 0.054, 0.051, 0.025, 0.039, 0.053, 0.06, 0.043, 0.044, 0.056, 0.09, 0.073, 0.064, 0.057, 0.067, 0.052, 0.07, 0.046, 0.014, 0.012, 0.047, 0.023, 0.011, 0.013, 0.06, 0.04, 0.054, 0.126, 0.06, 0.053, 0.051, 0.059, 0.055, 0.071, 0.07, 0.051, 0.041, 0.013, 0.064, 0.06, 0.045, 0.067, 0.019, 0.015, 0.043, 0.101, 0.027, 0.026, 0.061, 0.023, 0.014, 0.018, 0.016, 0.014, 0.025, 0.024, 0.031, 0.011, 0.018, 0.117, 0.012, 0.007, 0.033, 0.049, 0.008, 0.006, 0.012, 0.043, 0.005, 0.009, 0.066, 0.228, 0.019, 0.043, 0.007, 0.008, 0.038, 0.026, 0.005, 0.016, 0.041, 0.023, 0.01, 0.041, 0.046, 0.021, 0.011, 0.034, 0.112, 0.067, 0.043, 0.038, 0.017, 0.055, 0.021, 0.044, 0.04, 0.007, 0.067, 0.105, 0.007, 0.033, 0.008, 0.007, 0.092, 0.041, 0.005, 0.006, 0.102, 0.011, 0.01, 0.007, 0.005, 0.006, 0.037, 0.052, 0.011, 0.013, 0.018, 0.056, 0.033, 0.035, 0.019, 0.02, 0.019, 0.042, 0.036, 0.039, 0.009, 0.038, 0.006, 0.104, 0.047, 0.012, 0.03, 0.005, 0.021, 0.021, 0.069, 0.02, 0.049, 0.005, 0.023, 0.008, 0.223, 0.026, 0.019, 0.027, 0.012, 0.127, 0.039, 0.128, 0.022, 0.06, 0.04, 0.006, 0.03, 0.139, 0.016, 0.063, 0.027, 0.005, 0.131, 0.007, 0.027, 0.024, 0.007, 0.028, 0.076, 0.049, 0.153, 0.035, 0.053, 0.114, 0.024, 0.086, 0.06, 0.048, 0.042, 0.014, 0.013, 0.016, 0.003, 0.042, 0.03, 0.006, 0.026, 0.019, 0.087, 0.004, 0.005, 0.005, 0.035, 0.127, 0.006, 0.008, 0.033, 0.047, 0.042, 0.008, 0.029, 0.007, 0.012, 0.006, 0.013, 0.066, 0.006, 0.006, 0.031, 0.124, 0.007, 0.064, 0.008, 0.034, 0.024, 0.037, 0.055, 0.059, 0.049, 0.052, 0.028, 0.055, 0.018, 0.057, 0.029, 0.058, 0.033, 0.055, 0.029, 0.019, 0.019, 0.052, 0.041, 0.056, 0.082, 0.05, 0.018, 0.05, 0.017, 0.06, 0.02, 0.055, 0.056, 0.044, 0.066, 0.061, 0.046, 0.043, 0.055, 0.051, 0.044, 0.047], - "probability_P": [0.02, 0.017, 0.013, 0.022, 0.021, 0.022, 0.037, 0.021, 0.026, 0.019, 0.018, 0.024, 0.024, 0.023, 0.041, 0.137, 0.458, 0.015, 0.429, 0.098, 0.19, 0.013, 0.443, 0.016, 0.009, 0.014, 0.017, 0.011, 0.046, 0.026, 0.013, 0.042, 0.052, 0.054, 0.094, 0.059, 0.03, 0.016, 0.017, 0.016, 0.014, 0.01, 0.013, 0.015, 0.016, 0.01, 0.02, 0.213, 0.019, 0.008, 0.016, 0.009, 0.015, 0.046, 0.02, 0.088, 0.025, 0.255, 0.008, 0.008, 0.01, 0.011, 0.012, 0.012, 0.338, 0.016, 0.008, 0.007, 0.015, 0.017, 0.008, 0.008, 0.013, 0.016, 0.026, 0.028, 0.028, 0.028, 0.024, 0.024, 0.059, 0.03, 0.039, 0.104, 0.175, 0.018, 0.034, 0.124, 0.017, 0.05, 0.03, 0.025, 0.031, 0.022, 0.015, 0.013, 0.013, 0.014, 0.052, 0.043, 0.023, 0.084, 0.019, 0.007, 0.011, 0.015, 0.008, 0.004, 0.012, 0.015, 0.006, 0.012, 0.294, 0.027, 0.007, 0.011, 0.077, 0.036, 0.012, 0.01, 0.016, 0.021, 0.007, 0.011, 0.221, 0.01, 0.007, 0.012, 0.014, 0.011, 0.008, 0.012, 0.013, 0.007, 0.007, 0.025, 0.011, 0.007, 0.019, 0.018, 0.016, 0.034, 0.028, 0.029, 0.019, 0.02, 0.199, 0.01, 0.022, 0.044, 0.022, 0.055, 0.017, 0.007, 0.015, 0.017, 0.007, 0.013, 0.007, 0.011, 0.007, 0.007, 0.007, 0.011, 0.007, 0.007, 0.007, 0.01, 0.013, 0.038, 0.028, 0.02, 0.023, 0.012, 0.014, 0.02, 0.149, 0.022, 0.022, 0.158, 0.01, 0.017, 0.019, 0.014, 0.011, 0.017, 0.015, 0.009, 0.01, 0.02, 0.022, 0.029, 0.014, 0.015, 0.026, 0.173, 0.012, 0.02, 0.061, 0.047, 0.021, 0.058, 0.029, 0.021, 0.325, 0.018, 0.014, 0.034, 0.271, 0.014, 0.06, 0.064, 0.027, 0.032, 0.063, 0.027, 0.029, 0.026, 0.013, 0.096, 0.02, 0.021, 0.01, 0.014, 0.019, 0.011, 0.007, 0.012, 0.021, 0.012, 0.008, 0.012, 0.015, 0.01, 0.015, 0.017, 0.018, 0.024, 0.017, 0.039, 0.034, 0.047, 0.058, 0.033, 0.037, 0.052, 0.053, 0.016, 0.012, 0.014, 0.016, 0.015, 0.011, 0.009, 0.016, 0.015, 0.018, 0.018, 0.031, 0.038, 0.03, 0.067, 0.035, 0.04, 0.051, 0.034, 0.061, 0.016, 0.033, 0.03, 0.019, 0.009, 0.006, 0.007, 0.012, 0.009, 0.006, 0.008, 0.007, 0.006, 0.005, 0.006, 0.012, 0.006, 0.01, 0.008, 0.014, 0.015, 0.016, 0.014, 0.008, 0.005, 0.009, 0.005, 0.005, 0.005, 0.006, 0.006, 0.005, 0.006, 0.008, 0.01, 0.61, 0.012, 0.006, 0.005, 0.011, 0.016, 0.005, 0.007, 0.007, 0.007, 0.015, 0.011, 0.013, 0.006, 0.008, 0.131, 0.03, 0.027, 0.024, 0.159, 0.245, 0.019, 0.022, 0.018, 0.012, 0.008, 0.066, 0.011, 0.01, 0.329, 0.006, 0.006, 0.02, 0.009, 0.006, 0.005, 0.008, 0.005, 0.005, 0.005, 0.003, 0.005, 0.007, 0.533, 0.233, 0.129, 0.188, 0.021, 0.021, 0.244, 0.012, 0.011, 0.042, 0.073, 0.03, 0.065, 0.008, 0.025, 0.032, 0.025, 0.016, 0.007, 0.03, 0.006, 0.553, 0.059, 0.008, 0.007, 0.038, 0.005, 0.006, 0.06, 0.122, 0.086, 0.025, 0.018, 0.007, 0.007, 0.007, 0.007, 0.387, 0.01, 0.005, 0.006, 0.212, 0.012, 0.534, 0.008, 0.007, 0.004, 0.007, 0.707, 0.008, 0.005, 0.01, 0.01, 0.087, 0.057, 0.038, 0.05, 0.039, 0.03, 0.035, 0.064, 0.235, 0.018, 0.017, 0.006, 0.016, 0.48, 0.002, 0.007, 0.007, 0.004, 0.254, 0.007, 0.009, 0.003, 0.217, 0.004, 0.008, 0.055, 0.005, 0.005, 0.008, 0.012, 0.008, 0.005, 0.014, 0.005, 0.01, 0.006, 0.027, 0.008, 0.005, 0.005, 0.012, 0.008, 0.005, 0.014, 0.007, 0.012, 0.214, 0.08, 0.096, 0.039, 0.038, 0.064, 0.04, 0.201, 0.033, 0.029, 0.048, 0.029, 0.034, 0.023, 0.023, 0.014, 0.018, 0.03, 0.224, 0.042, 0.03, 0.159, 0.015, 0.029, 0.014, 0.021, 0.017, 0.022, 0.054, 0.02, 0.028, 0.028, 0.025, 0.024, 0.028, 0.03, 0.031, 0.03], - "probability_Q": [0.04, 0.034, 0.027, 0.051, 0.051, 0.058, 0.065, 0.05, 0.07, 0.036, 0.032, 0.072, 0.068, 0.056, 0.062, 0.015, 0.038, 0.044, 0.032, 0.045, 0.043, 0.015, 0.023, 0.012, 0.012, 0.031, 0.046, 0.013, 0.02, 0.155, 0.019, 0.057, 0.069, 0.062, 0.047, 0.045, 0.073, 0.038, 0.062, 0.069, 0.083, 0.018, 0.052, 0.095, 0.085, 0.02, 0.036, 0.047, 0.012, 0.012, 0.053, 0.013, 0.071, 0.024, 0.017, 0.066, 0.099, 0.046, 0.021, 0.01, 0.014, 0.009, 0.035, 0.04, 0.029, 0.064, 0.017, 0.01, 0.068, 0.096, 0.011, 0.012, 0.059, 0.06, 0.102, 0.054, 0.052, 0.053, 0.037, 0.028, 0.047, 0.044, 0.049, 0.055, 0.055, 0.026, 0.049, 0.049, 0.03, 0.046, 0.025, 0.037, 0.056, 0.056, 0.027, 0.012, 0.014, 0.015, 0.036, 0.049, 0.033, 0.067, 0.068, 0.012, 0.057, 0.099, 0.14, 0.018, 0.051, 0.018, 0.01, 0.066, 0.06, 0.039, 0.009, 0.041, 0.052, 0.06, 0.058, 0.014, 0.066, 0.077, 0.046, 0.05, 0.054, 0.025, 0.028, 0.092, 0.093, 0.051, 0.027, 0.081, 0.075, 0.012, 0.019, 0.083, 0.061, 0.01, 0.067, 0.07, 0.069, 0.04, 0.073, 0.062, 0.047, 0.085, 0.041, 0.014, 0.04, 0.009, 0.088, 0.062, 0.023, 0.009, 0.089, 0.042, 0.01, 0.013, 0.013, 0.039, 0.009, 0.008, 0.014, 0.06, 0.013, 0.01, 0.009, 0.033, 0.054, 0.051, 0.012, 0.048, 0.042, 0.074, 0.056, 0.059, 0.049, 0.088, 0.059, 0.059, 0.022, 0.026, 0.081, 0.054, 0.023, 0.075, 0.063, 0.021, 0.03, 0.067, 0.035, 0.062, 0.026, 0.027, 0.072, 0.052, 0.022, 0.022, 0.048, 0.048, 0.018, 0.051, 0.031, 0.014, 0.044, 0.029, 0.018, 0.031, 0.045, 0.019, 0.032, 0.067, 0.033, 0.043, 0.054, 0.036, 0.056, 0.061, 0.031, 0.06, 0.064, 0.066, 0.018, 0.056, 0.065, 0.028, 0.016, 0.075, 0.074, 0.047, 0.017, 0.078, 0.076, 0.038, 0.059, 0.085, 0.067, 0.052, 0.044, 0.072, 0.057, 0.045, 0.097, 0.059, 0.056, 0.054, 0.052, 0.032, 0.013, 0.012, 0.115, 0.03, 0.016, 0.014, 0.072, 0.045, 0.118, 0.06, 0.054, 0.058, 0.064, 0.045, 0.062, 0.048, 0.05, 0.067, 0.054, 0.014, 0.036, 0.042, 0.062, 0.089, 0.012, 0.024, 0.036, 0.138, 0.016, 0.02, 0.02, 0.014, 0.009, 0.012, 0.019, 0.012, 0.061, 0.027, 0.017, 0.007, 0.017, 0.025, 0.017, 0.007, 0.046, 0.015, 0.006, 0.006, 0.02, 0.032, 0.006, 0.01, 0.079, 0.037, 0.056, 0.054, 0.037, 0.334, 0.103, 0.054, 0.006, 0.21, 0.104, 0.035, 0.026, 0.055, 0.076, 0.017, 0.013, 0.047, 0.051, 0.048, 0.052, 0.054, 0.023, 0.047, 0.027, 0.051, 0.059, 0.018, 0.079, 0.111, 0.008, 0.042, 0.011, 0.006, 0.103, 0.057, 0.006, 0.007, 0.057, 0.011, 0.007, 0.068, 0.011, 0.007, 0.026, 0.022, 0.009, 0.015, 0.03, 0.031, 0.014, 0.046, 0.029, 0.05, 0.009, 0.045, 0.088, 0.027, 0.011, 0.064, 0.007, 0.045, 0.028, 0.036, 0.039, 0.006, 0.029, 0.038, 0.023, 0.035, 0.061, 0.006, 0.024, 0.009, 0.032, 0.036, 0.026, 0.03, 0.01, 0.066, 0.036, 0.025, 0.03, 0.051, 0.027, 0.007, 0.032, 0.044, 0.016, 0.039, 0.058, 0.005, 0.038, 0.007, 0.04, 0.017, 0.008, 0.028, 0.045, 0.044, 0.047, 0.05, 0.056, 0.054, 0.032, 0.059, 0.054, 0.034, 0.044, 0.011, 0.027, 0.018, 0.006, 0.028, 0.022, 0.005, 0.035, 0.026, 0.053, 0.003, 0.008, 0.003, 0.124, 0.085, 0.008, 0.009, 0.051, 0.051, 0.096, 0.011, 0.058, 0.012, 0.007, 0.006, 0.014, 0.052, 0.006, 0.007, 0.186, 0.049, 0.007, 0.045, 0.008, 0.063, 0.029, 0.034, 0.06, 0.056, 0.066, 0.097, 0.028, 0.052, 0.025, 0.069, 0.038, 0.061, 0.032, 0.059, 0.026, 0.019, 0.021, 0.104, 0.049, 0.07, 0.071, 0.059, 0.02, 0.052, 0.018, 0.072, 0.022, 0.074, 0.067, 0.062, 0.067, 0.058, 0.051, 0.046, 0.049, 0.044, 0.04, 0.043], - "probability_R": [0.047, 0.036, 0.027, 0.05, 0.054, 0.071, 0.061, 0.05, 0.066, 0.043, 0.04, 0.08, 0.094, 0.095, 0.061, 0.018, 0.041, 0.035, 0.031, 0.102, 0.055, 0.02, 0.025, 0.015, 0.014, 0.031, 0.041, 0.016, 0.028, 0.05, 0.023, 0.087, 0.096, 0.057, 0.055, 0.048, 0.084, 0.047, 0.041, 0.069, 0.079, 0.03, 0.068, 0.101, 0.104, 0.019, 0.033, 0.067, 0.017, 0.014, 0.127, 0.015, 0.111, 0.023, 0.022, 0.083, 0.125, 0.075, 0.037, 0.012, 0.019, 0.011, 0.059, 0.038, 0.036, 0.049, 0.014, 0.011, 0.141, 0.049, 0.011, 0.012, 0.054, 0.07, 0.076, 0.062, 0.05, 0.05, 0.039, 0.053, 0.049, 0.077, 0.257, 0.146, 0.05, 0.03, 0.063, 0.051, 0.045, 0.068, 0.027, 0.039, 0.075, 0.057, 0.024, 0.012, 0.013, 0.016, 0.04, 0.054, 0.035, 0.039, 0.086, 0.013, 0.241, 0.173, 0.093, 0.772, 0.225, 0.022, 0.011, 0.053, 0.051, 0.027, 0.014, 0.056, 0.072, 0.097, 0.123, 0.033, 0.144, 0.064, 0.018, 0.045, 0.049, 0.05, 0.083, 0.081, 0.08, 0.041, 0.027, 0.076, 0.082, 0.015, 0.023, 0.113, 0.112, 0.011, 0.116, 0.118, 0.056, 0.035, 0.061, 0.052, 0.043, 0.074, 0.038, 0.013, 0.039, 0.012, 0.083, 0.06, 0.026, 0.012, 0.073, 0.171, 0.011, 0.013, 0.013, 0.038, 0.01, 0.009, 0.015, 0.144, 0.011, 0.012, 0.01, 0.033, 0.067, 0.161, 0.015, 0.041, 0.04, 0.035, 0.066, 0.062, 0.051, 0.062, 0.047, 0.059, 0.02, 0.049, 0.073, 0.056, 0.02, 0.089, 0.093, 0.019, 0.02, 0.122, 0.034, 0.07, 0.042, 0.043, 0.063, 0.054, 0.036, 0.038, 0.049, 0.059, 0.035, 0.063, 0.049, 0.025, 0.07, 0.051, 0.031, 0.062, 0.075, 0.046, 0.055, 0.122, 0.067, 0.092, 0.117, 0.058, 0.09, 0.075, 0.043, 0.079, 0.197, 0.083, 0.027, 0.078, 0.079, 0.036, 0.033, 0.17, 0.089, 0.059, 0.034, 0.095, 0.158, 0.094, 0.115, 0.07, 0.077, 0.254, 0.075, 0.059, 0.046, 0.053, 0.063, 0.097, 0.069, 0.197, 0.067, 0.027, 0.016, 0.017, 0.042, 0.049, 0.018, 0.017, 0.067, 0.04, 0.087, 0.054, 0.046, 0.075, 0.046, 0.04, 0.046, 0.037, 0.057, 0.078, 0.075, 0.021, 0.048, 0.058, 0.055, 0.041, 0.013, 0.094, 0.043, 0.03, 0.009, 0.02, 0.014, 0.007, 0.007, 0.007, 0.022, 0.011, 0.052, 0.02, 0.014, 0.007, 0.02, 0.028, 0.007, 0.007, 0.056, 0.013, 0.006, 0.007, 0.018, 0.034, 0.007, 0.009, 0.153, 0.055, 0.033, 0.061, 0.011, 0.039, 0.086, 0.212, 0.006, 0.277, 0.056, 0.021, 0.011, 0.117, 0.109, 0.016, 0.029, 0.045, 0.078, 0.109, 0.166, 0.047, 0.02, 0.044, 0.024, 0.03, 0.035, 0.076, 0.065, 0.107, 0.012, 0.054, 0.019, 0.008, 0.094, 0.047, 0.007, 0.007, 0.079, 0.012, 0.007, 0.011, 0.902, 0.019, 0.062, 0.019, 0.007, 0.011, 0.012, 0.052, 0.013, 0.061, 0.532, 0.071, 0.008, 0.06, 0.091, 0.024, 0.011, 0.045, 0.008, 0.057, 0.023, 0.041, 0.07, 0.007, 0.055, 0.06, 0.027, 0.022, 0.082, 0.006, 0.014, 0.006, 0.016, 0.014, 0.036, 0.021, 0.007, 0.019, 0.393, 0.04, 0.034, 0.093, 0.036, 0.007, 0.029, 0.052, 0.016, 0.037, 0.099, 0.006, 0.146, 0.008, 0.028, 0.766, 0.009, 0.022, 0.061, 0.061, 0.08, 0.074, 0.048, 0.065, 0.111, 0.052, 0.097, 0.055, 0.052, 0.011, 0.019, 0.013, 0.002, 0.017, 0.03, 0.007, 0.195, 0.591, 0.065, 0.006, 0.007, 0.005, 0.129, 0.109, 0.007, 0.009, 0.134, 0.053, 0.019, 0.007, 0.094, 0.01, 0.007, 0.007, 0.026, 0.121, 0.008, 0.007, 0.175, 0.203, 0.009, 0.105, 0.01, 0.084, 0.042, 0.032, 0.054, 0.052, 0.05, 0.064, 0.043, 0.05, 0.026, 0.074, 0.034, 0.065, 0.044, 0.062, 0.027, 0.02, 0.025, 0.091, 0.048, 0.063, 0.072, 0.053, 0.021, 0.058, 0.021, 0.094, 0.025, 0.083, 0.077, 0.225, 0.058, 0.059, 0.06, 0.055, 0.058, 0.052, 0.05, 0.055], - "probability_S": [0.064, 0.049, 0.039, 0.081, 0.07, 0.082, 0.086, 0.065, 0.097, 0.058, 0.057, 0.084, 0.079, 0.066, 0.081, 0.033, 0.045, 0.075, 0.051, 0.071, 0.076, 0.04, 0.048, 0.028, 0.031, 0.042, 0.088, 0.034, 0.034, 0.095, 0.034, 0.067, 0.08, 0.089, 0.055, 0.07, 0.066, 0.09, 0.067, 0.059, 0.07, 0.037, 0.132, 0.058, 0.055, 0.03, 0.046, 0.076, 0.027, 0.039, 0.11, 0.041, 0.068, 0.037, 0.035, 0.115, 0.065, 0.066, 0.044, 0.022, 0.058, 0.033, 0.21, 0.164, 0.051, 0.068, 0.038, 0.029, 0.048, 0.051, 0.022, 0.027, 0.079, 0.089, 0.074, 0.089, 0.066, 0.134, 0.054, 0.056, 0.146, 0.105, 0.066, 0.062, 0.076, 0.052, 0.095, 0.077, 0.045, 0.083, 0.039, 0.054, 0.082, 0.126, 0.093, 0.023, 0.099, 0.069, 0.156, 0.071, 0.055, 0.062, 0.06, 0.021, 0.061, 0.058, 0.047, 0.01, 0.084, 0.028, 0.046, 0.146, 0.078, 0.068, 0.019, 0.211, 0.146, 0.102, 0.095, 0.03, 0.069, 0.129, 0.048, 0.06, 0.081, 0.044, 0.023, 0.07, 0.07, 0.075, 0.091, 0.073, 0.06, 0.026, 0.035, 0.076, 0.075, 0.022, 0.077, 0.082, 0.081, 0.116, 0.093, 0.119, 0.077, 0.09, 0.079, 0.027, 0.06, 0.022, 0.096, 0.069, 0.032, 0.034, 0.114, 0.073, 0.033, 0.123, 0.077, 0.069, 0.058, 0.031, 0.123, 0.127, 0.048, 0.068, 0.021, 0.096, 0.081, 0.135, 0.041, 0.069, 0.177, 0.047, 0.089, 0.092, 0.075, 0.073, 0.099, 0.065, 0.035, 0.042, 0.066, 0.08, 0.057, 0.073, 0.07, 0.047, 0.051, 0.076, 0.063, 0.102, 0.063, 0.062, 0.113, 0.086, 0.051, 0.054, 0.057, 0.124, 0.045, 0.075, 0.058, 0.036, 0.059, 0.06, 0.04, 0.057, 0.058, 0.042, 0.043, 0.075, 0.049, 0.042, 0.07, 0.054, 0.071, 0.061, 0.048, 0.069, 0.059, 0.064, 0.037, 0.07, 0.082, 0.039, 0.028, 0.059, 0.066, 0.078, 0.027, 0.06, 0.057, 0.04, 0.052, 0.059, 0.108, 0.048, 0.056, 0.075, 0.085, 0.091, 0.08, 0.085, 0.077, 0.065, 0.062, 0.064, 0.034, 0.032, 0.127, 0.058, 0.027, 0.028, 0.084, 0.127, 0.059, 0.062, 0.133, 0.069, 0.064, 0.083, 0.063, 0.128, 0.063, 0.074, 0.089, 0.023, 0.229, 0.043, 0.054, 0.042, 0.02, 0.033, 0.098, 0.049, 0.074, 0.046, 0.068, 0.023, 0.022, 0.038, 0.031, 0.052, 0.122, 0.033, 0.064, 0.142, 0.275, 0.178, 0.08, 0.034, 0.187, 0.052, 0.043, 0.021, 0.046, 0.032, 0.014, 0.103, 0.063, 0.045, 0.035, 0.055, 0.023, 0.016, 0.055, 0.03, 0.013, 0.025, 0.049, 0.028, 0.017, 0.049, 0.117, 0.028, 0.027, 0.06, 0.106, 0.085, 0.08, 0.067, 0.039, 0.123, 0.041, 0.11, 0.071, 0.022, 0.092, 0.099, 0.018, 0.051, 0.017, 0.021, 0.055, 0.075, 0.018, 0.013, 0.057, 0.013, 0.151, 0.018, 0.006, 0.014, 0.064, 0.082, 0.063, 0.071, 0.06, 0.085, 0.033, 0.073, 0.026, 0.046, 0.086, 0.087, 0.063, 0.044, 0.026, 0.054, 0.019, 0.064, 0.039, 0.021, 0.047, 0.013, 0.035, 0.04, 0.029, 0.11, 0.061, 0.013, 0.069, 0.026, 0.162, 0.06, 0.049, 0.135, 0.031, 0.049, 0.034, 0.076, 0.056, 0.088, 0.03, 0.013, 0.069, 0.046, 0.036, 0.047, 0.072, 0.011, 0.033, 0.014, 0.063, 0.015, 0.017, 0.086, 0.066, 0.085, 0.098, 0.068, 0.067, 0.084, 0.043, 0.093, 0.075, 0.051, 0.083, 0.035, 0.03, 0.065, 0.004, 0.176, 0.088, 0.014, 0.071, 0.027, 0.096, 0.01, 0.017, 0.012, 0.055, 0.073, 0.014, 0.06, 0.035, 0.037, 0.059, 0.029, 0.053, 0.033, 0.033, 0.016, 0.092, 0.099, 0.016, 0.016, 0.075, 0.067, 0.017, 0.085, 0.018, 0.105, 0.052, 0.08, 0.079, 0.061, 0.079, 0.069, 0.046, 0.075, 0.045, 0.081, 0.05, 0.114, 0.06, 0.085, 0.06, 0.052, 0.047, 0.083, 0.066, 0.079, 0.077, 0.072, 0.041, 0.064, 0.039, 0.077, 0.045, 0.081, 0.089, 0.058, 0.081, 0.085, 0.082, 0.075, 0.099, 0.088, 0.078, 0.073], - "probability_T": [0.059, 0.053, 0.036, 0.065, 0.106, 0.063, 0.075, 0.06, 0.062, 0.066, 0.06, 0.06, 0.057, 0.057, 0.055, 0.042, 0.036, 0.041, 0.039, 0.081, 0.064, 0.044, 0.037, 0.034, 0.045, 0.037, 0.055, 0.063, 0.042, 0.051, 0.04, 0.049, 0.058, 0.05, 0.056, 0.058, 0.057, 0.068, 0.053, 0.073, 0.044, 0.042, 0.049, 0.04, 0.071, 0.032, 0.036, 0.04, 0.055, 0.034, 0.095, 0.058, 0.047, 0.048, 0.035, 0.071, 0.085, 0.071, 0.112, 0.032, 0.043, 0.064, 0.108, 0.048, 0.041, 0.041, 0.064, 0.034, 0.034, 0.072, 0.032, 0.041, 0.08, 0.1, 0.067, 0.052, 0.04, 0.056, 0.055, 0.035, 0.095, 0.043, 0.046, 0.046, 0.06, 0.053, 0.058, 0.058, 0.063, 0.054, 0.041, 0.047, 0.056, 0.071, 0.05, 0.036, 0.066, 0.137, 0.086, 0.053, 0.035, 0.039, 0.062, 0.024, 0.037, 0.051, 0.034, 0.01, 0.045, 0.051, 0.052, 0.122, 0.058, 0.107, 0.024, 0.129, 0.068, 0.053, 0.041, 0.034, 0.041, 0.055, 0.039, 0.054, 0.045, 0.076, 0.033, 0.055, 0.044, 0.046, 0.089, 0.053, 0.057, 0.04, 0.053, 0.047, 0.048, 0.03, 0.045, 0.051, 0.049, 0.047, 0.051, 0.098, 0.036, 0.063, 0.073, 0.037, 0.054, 0.035, 0.067, 0.044, 0.039, 0.054, 0.089, 0.05, 0.069, 0.322, 0.066, 0.032, 0.078, 0.053, 0.097, 0.061, 0.137, 0.081, 0.026, 0.028, 0.062, 0.046, 0.047, 0.037, 0.063, 0.042, 0.063, 0.054, 0.051, 0.045, 0.047, 0.049, 0.037, 0.046, 0.052, 0.055, 0.095, 0.049, 0.053, 0.048, 0.059, 0.058, 0.053, 0.062, 0.052, 0.054, 0.06, 0.059, 0.045, 0.045, 0.047, 0.054, 0.046, 0.083, 0.049, 0.032, 0.036, 0.038, 0.042, 0.049, 0.038, 0.064, 0.053, 0.046, 0.046, 0.039, 0.047, 0.045, 0.054, 0.052, 0.046, 0.052, 0.042, 0.047, 0.05, 0.093, 0.05, 0.046, 0.038, 0.045, 0.043, 0.067, 0.04, 0.044, 0.044, 0.054, 0.041, 0.04, 0.072, 0.038, 0.047, 0.041, 0.042, 0.104, 0.043, 0.054, 0.048, 0.043, 0.063, 0.038, 0.032, 0.044, 0.062, 0.06, 0.027, 0.032, 0.045, 0.053, 0.045, 0.046, 0.056, 0.045, 0.043, 0.124, 0.038, 0.089, 0.039, 0.048, 0.079, 0.042, 0.195, 0.048, 0.055, 0.035, 0.029, 0.055, 0.044, 0.064, 0.067, 0.047, 0.18, 0.027, 0.033, 0.046, 0.027, 0.021, 0.138, 0.026, 0.66, 0.528, 0.082, 0.168, 0.283, 0.044, 0.167, 0.04, 0.131, 0.061, 0.036, 0.033, 0.019, 0.045, 0.078, 0.028, 0.027, 0.033, 0.038, 0.022, 0.044, 0.034, 0.019, 0.038, 0.035, 0.02, 0.02, 0.033, 0.076, 0.053, 0.038, 0.037, 0.055, 0.041, 0.052, 0.052, 0.034, 0.252, 0.029, 0.046, 0.065, 0.04, 0.044, 0.029, 0.023, 0.067, 0.027, 0.137, 0.073, 0.024, 0.049, 0.022, 0.034, 0.009, 0.312, 0.019, 0.005, 0.021, 0.039, 0.051, 0.06, 0.053, 0.056, 0.067, 0.064, 0.053, 0.022, 0.076, 0.137, 0.147, 0.054, 0.048, 0.162, 0.15, 0.021, 0.035, 0.022, 0.07, 0.117, 0.017, 0.024, 0.028, 0.019, 0.361, 0.111, 0.022, 0.05, 0.052, 0.033, 0.081, 0.043, 0.057, 0.069, 0.031, 0.038, 0.024, 0.037, 0.058, 0.036, 0.016, 0.052, 0.034, 0.022, 0.039, 0.082, 0.014, 0.021, 0.017, 0.036, 0.012, 0.019, 0.046, 0.054, 0.047, 0.052, 0.044, 0.049, 0.057, 0.047, 0.049, 0.038, 0.033, 0.067, 0.025, 0.06, 0.052, 0.004, 0.021, 0.051, 0.008, 0.04, 0.022, 0.051, 0.008, 0.021, 0.008, 0.028, 0.047, 0.018, 0.026, 0.046, 0.07, 0.046, 0.046, 0.053, 0.064, 0.08, 0.043, 0.074, 0.112, 0.039, 0.023, 0.048, 0.047, 0.019, 0.079, 0.025, 0.067, 0.059, 0.061, 0.049, 0.046, 0.155, 0.052, 0.05, 0.05, 0.056, 0.073, 0.059, 0.077, 0.075, 0.062, 0.06, 0.148, 0.075, 0.065, 0.059, 0.057, 0.061, 0.053, 0.053, 0.065, 0.051, 0.066, 0.057, 0.071, 0.061, 0.049, 0.063, 0.065, 0.081, 0.066, 0.069, 0.067, 0.061, 0.058], - "probability_V": [0.106, 0.116, 0.055, 0.075, 0.079, 0.06, 0.048, 0.07, 0.036, 0.097, 0.091, 0.031, 0.032, 0.059, 0.03, 0.138, 0.028, 0.03, 0.044, 0.036, 0.029, 0.094, 0.049, 0.124, 0.147, 0.036, 0.022, 0.105, 0.07, 0.023, 0.11, 0.033, 0.027, 0.027, 0.049, 0.048, 0.048, 0.067, 0.044, 0.055, 0.021, 0.067, 0.037, 0.019, 0.028, 0.045, 0.021, 0.017, 0.24, 0.157, 0.03, 0.132, 0.027, 0.088, 0.051, 0.028, 0.062, 0.028, 0.197, 0.306, 0.293, 0.264, 0.034, 0.015, 0.044, 0.021, 0.093, 0.211, 0.019, 0.031, 0.254, 0.056, 0.158, 0.021, 0.02, 0.032, 0.032, 0.028, 0.101, 0.043, 0.044, 0.027, 0.027, 0.028, 0.051, 0.071, 0.038, 0.046, 0.123, 0.033, 0.063, 0.058, 0.023, 0.02, 0.05, 0.15, 0.091, 0.096, 0.066, 0.022, 0.018, 0.02, 0.044, 0.041, 0.024, 0.032, 0.062, 0.005, 0.016, 0.111, 0.112, 0.046, 0.027, 0.053, 0.051, 0.021, 0.029, 0.02, 0.035, 0.151, 0.04, 0.022, 0.064, 0.103, 0.021, 0.135, 0.14, 0.06, 0.023, 0.077, 0.148, 0.027, 0.066, 0.074, 0.222, 0.019, 0.041, 0.096, 0.025, 0.024, 0.033, 0.062, 0.027, 0.033, 0.019, 0.03, 0.075, 0.284, 0.035, 0.179, 0.039, 0.023, 0.101, 0.091, 0.029, 0.026, 0.083, 0.089, 0.063, 0.014, 0.293, 0.129, 0.063, 0.022, 0.131, 0.135, 0.05, 0.015, 0.083, 0.016, 0.116, 0.02, 0.024, 0.063, 0.023, 0.023, 0.032, 0.031, 0.031, 0.037, 0.078, 0.179, 0.031, 0.033, 0.12, 0.041, 0.03, 0.112, 0.107, 0.034, 0.065, 0.035, 0.077, 0.11, 0.037, 0.037, 0.08, 0.073, 0.075, 0.046, 0.13, 0.036, 0.11, 0.072, 0.025, 0.048, 0.077, 0.095, 0.018, 0.098, 0.06, 0.021, 0.07, 0.054, 0.018, 0.082, 0.036, 0.08, 0.064, 0.047, 0.019, 0.029, 0.18, 0.048, 0.025, 0.073, 0.123, 0.025, 0.024, 0.078, 0.202, 0.023, 0.021, 0.094, 0.066, 0.024, 0.023, 0.027, 0.064, 0.026, 0.023, 0.047, 0.031, 0.03, 0.033, 0.025, 0.071, 0.017, 0.074, 0.104, 0.017, 0.104, 0.067, 0.104, 0.02, 0.041, 0.032, 0.025, 0.026, 0.03, 0.025, 0.04, 0.026, 0.026, 0.02, 0.03, 0.038, 0.069, 0.015, 0.023, 0.046, 0.023, 0.126, 0.166, 0.035, 0.035, 0.13, 0.112, 0.085, 0.067, 0.094, 0.119, 0.022, 0.015, 0.055, 0.017, 0.021, 0.083, 0.049, 0.064, 0.077, 0.077, 0.033, 0.041, 0.084, 0.111, 0.054, 0.036, 0.061, 0.087, 0.023, 0.01, 0.011, 0.016, 0.295, 0.049, 0.017, 0.014, 0.175, 0.047, 0.015, 0.012, 0.203, 0.026, 0.018, 0.357, 0.167, 0.016, 0.015, 0.019, 0.033, 0.05, 0.127, 0.034, 0.054, 0.016, 0.026, 0.126, 0.026, 0.011, 0.043, 0.041, 0.047, 0.094, 0.015, 0.017, 0.413, 0.223, 0.011, 0.005, 0.131, 0.043, 0.003, 0.061, 0.027, 0.015, 0.221, 0.195, 0.074, 0.057, 0.148, 0.036, 0.015, 0.158, 0.146, 0.057, 0.028, 0.011, 0.189, 0.094, 0.173, 0.011, 0.01, 0.102, 0.078, 0.205, 0.012, 0.018, 0.01, 0.056, 0.087, 0.452, 0.099, 0.216, 0.036, 0.12, 0.041, 0.073, 0.145, 0.014, 0.016, 0.012, 0.013, 0.022, 0.168, 0.031, 0.02, 0.011, 0.032, 0.011, 0.067, 0.029, 0.031, 0.035, 0.01, 0.007, 0.029, 0.036, 0.026, 0.023, 0.021, 0.052, 0.024, 0.032, 0.116, 0.02, 0.02, 0.026, 0.058, 0.05, 0.102, 0.048, 0.008, 0.013, 0.05, 0.007, 0.039, 0.012, 0.086, 0.009, 0.111, 0.006, 0.024, 0.021, 0.06, 0.039, 0.04, 0.084, 0.04, 0.124, 0.035, 0.149, 0.17, 0.126, 0.094, 0.034, 0.116, 0.159, 0.015, 0.02, 0.042, 0.021, 0.11, 0.043, 0.078, 0.114, 0.031, 0.03, 0.039, 0.036, 0.154, 0.028, 0.115, 0.034, 0.076, 0.042, 0.094, 0.033, 0.091, 0.133, 0.105, 0.042, 0.041, 0.034, 0.033, 0.031, 0.156, 0.085, 0.159, 0.037, 0.172, 0.047, 0.042, 0.042, 0.041, 0.051, 0.074, 0.096, 0.061, 0.063, 0.08, 0.068], - "probability_W": [0.008, 0.009, 0.027, 0.008, 0.008, 0.024, 0.005, 0.008, 0.005, 0.009, 0.069, 0.004, 0.004, 0.006, 0.004, 0.007, 0.003, 0.003, 0.004, 0.026, 0.006, 0.06, 0.009, 0.013, 0.009, 0.008, 0.004, 0.015, 0.018, 0.008, 0.016, 0.008, 0.004, 0.004, 0.013, 0.017, 0.014, 0.018, 0.006, 0.014, 0.005, 0.089, 0.006, 0.003, 0.003, 0.008, 0.003, 0.002, 0.006, 0.037, 0.005, 0.01, 0.08, 0.007, 0.007, 0.01, 0.006, 0.004, 0.011, 0.006, 0.008, 0.005, 0.004, 0.002, 0.007, 0.003, 0.006, 0.009, 0.003, 0.002, 0.005, 0.008, 0.003, 0.002, 0.002, 0.005, 0.008, 0.003, 0.005, 0.008, 0.004, 0.005, 0.009, 0.007, 0.007, 0.019, 0.005, 0.004, 0.005, 0.004, 0.042, 0.006, 0.005, 0.004, 0.004, 0.005, 0.01, 0.016, 0.004, 0.004, 0.003, 0.002, 0.003, 0.505, 0.003, 0.006, 0.009, 0.001, 0.002, 0.006, 0.011, 0.003, 0.002, 0.003, 0.006, 0.002, 0.002, 0.002, 0.003, 0.004, 0.002, 0.005, 0.01, 0.009, 0.004, 0.007, 0.007, 0.011, 0.006, 0.005, 0.004, 0.003, 0.003, 0.009, 0.005, 0.003, 0.009, 0.072, 0.007, 0.005, 0.014, 0.014, 0.004, 0.005, 0.006, 0.002, 0.003, 0.007, 0.003, 0.008, 0.011, 0.004, 0.07, 0.013, 0.003, 0.011, 0.014, 0.004, 0.008, 0.002, 0.004, 0.004, 0.009, 0.003, 0.005, 0.004, 0.013, 0.002, 0.004, 0.002, 0.007, 0.002, 0.004, 0.005, 0.003, 0.002, 0.004, 0.003, 0.003, 0.002, 0.029, 0.007, 0.003, 0.007, 0.009, 0.005, 0.004, 0.007, 0.006, 0.005, 0.016, 0.004, 0.018, 0.013, 0.006, 0.006, 0.037, 0.029, 0.023, 0.019, 0.011, 0.017, 0.019, 0.038, 0.008, 0.079, 0.035, 0.02, 0.02, 0.032, 0.017, 0.009, 0.046, 0.019, 0.004, 0.012, 0.024, 0.007, 0.02, 0.009, 0.006, 0.006, 0.013, 0.009, 0.003, 0.019, 0.009, 0.005, 0.006, 0.011, 0.006, 0.004, 0.003, 0.007, 0.003, 0.002, 0.004, 0.007, 0.005, 0.003, 0.003, 0.006, 0.004, 0.002, 0.003, 0.002, 0.002, 0.002, 0.007, 0.008, 0.003, 0.016, 0.006, 0.005, 0.003, 0.002, 0.004, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.009, 0.002, 0.003, 0.003, 0.003, 0.006, 0.007, 0.005, 0.007, 0.003, 0.015, 0.003, 0.003, 0.007, 0.01, 0.002, 0.002, 0.003, 0.001, 0.002, 0.003, 0.004, 0.009, 0.004, 0.003, 0.002, 0.353, 0.005, 0.012, 0.039, 0.009, 0.003, 0.003, 0.002, 0.003, 0.002, 0.003, 0.046, 0.017, 0.002, 0.007, 0.003, 0.004, 0.002, 0.001, 0.003, 0.002, 0.002, 0.004, 0.013, 0.002, 0.002, 0.002, 0.003, 0.011, 0.015, 0.003, 0.057, 0.002, 0.005, 0.004, 0.002, 0.002, 0.004, 0.002, 0.01, 0.004, 0.008, 0.01, 0.004, 0.004, 0.004, 0.001, 0.003, 0.005, 0.001, 0.05, 0.022, 0.001, 0.003, 0.004, 0.023, 0.007, 0.004, 0.008, 0.002, 0.005, 0.003, 0.002, 0.002, 0.002, 0.005, 0.006, 0.012, 0.002, 0.001, 0.017, 0.011, 0.006, 0.001, 0.001, 0.001, 0.032, 0.011, 0.003, 0.02, 0.014, 0.011, 0.005, 0.185, 0.009, 0.003, 0.002, 0.008, 0.002, 0.001, 0.002, 0.015, 0.368, 0.002, 0.002, 0.004, 0.006, 0.001, 0.029, 0.008, 0.003, 0.012, 0.001, 0.255, 0.003, 0.002, 0.005, 0.003, 0.006, 0.003, 0.002, 0.005, 0.002, 0.002, 0.024, 0.005, 0.044, 0.013, 0.003, 0.019, 0.002, 0.015, 0.001, 0.002, 0.005, 0.002, 0.001, 0.005, 0.001, 0.007, 0.006, 0.005, 0.002, 0.02, 0.005, 0.003, 0.003, 0.014, 0.004, 0.008, 0.008, 0.003, 0.006, 0.006, 0.004, 0.039, 0.004, 0.013, 0.004, 0.131, 0.002, 0.009, 0.004, 0.003, 0.003, 0.003, 0.004, 0.006, 0.005, 0.012, 0.003, 0.01, 0.005, 0.007, 0.005, 0.009, 0.008, 0.008, 0.006, 0.004, 0.003, 0.003, 0.004, 0.009, 0.025, 0.008, 0.004, 0.012, 0.004, 0.005, 0.005, 0.005, 0.006, 0.008, 0.007, 0.006, 0.007, 0.008, 0.01], - "probability_Y": [0.04, 0.032, 0.27, 0.028, 0.03, 0.034, 0.021, 0.059, 0.018, 0.079, 0.035, 0.016, 0.016, 0.023, 0.017, 0.025, 0.012, 0.023, 0.014, 0.016, 0.015, 0.044, 0.018, 0.031, 0.024, 0.016, 0.018, 0.03, 0.035, 0.013, 0.07, 0.023, 0.013, 0.013, 0.035, 0.032, 0.018, 0.057, 0.032, 0.025, 0.019, 0.033, 0.051, 0.011, 0.011, 0.433, 0.011, 0.011, 0.031, 0.096, 0.026, 0.052, 0.091, 0.021, 0.016, 0.015, 0.018, 0.014, 0.026, 0.033, 0.034, 0.016, 0.022, 0.008, 0.055, 0.01, 0.036, 0.027, 0.014, 0.019, 0.017, 0.055, 0.012, 0.01, 0.013, 0.014, 0.08, 0.012, 0.044, 0.069, 0.016, 0.02, 0.027, 0.035, 0.019, 0.077, 0.027, 0.017, 0.027, 0.011, 0.077, 0.022, 0.03, 0.019, 0.013, 0.018, 0.015, 0.02, 0.016, 0.077, 0.015, 0.011, 0.051, 0.024, 0.014, 0.018, 0.022, 0.004, 0.008, 0.018, 0.019, 0.009, 0.015, 0.018, 0.035, 0.012, 0.017, 0.008, 0.02, 0.016, 0.009, 0.011, 0.123, 0.037, 0.018, 0.027, 0.018, 0.018, 0.01, 0.056, 0.013, 0.012, 0.022, 0.02, 0.016, 0.01, 0.033, 0.018, 0.02, 0.011, 0.029, 0.016, 0.015, 0.01, 0.011, 0.012, 0.012, 0.017, 0.009, 0.019, 0.029, 0.015, 0.049, 0.043, 0.019, 0.036, 0.108, 0.012, 0.029, 0.008, 0.014, 0.013, 0.022, 0.012, 0.037, 0.014, 0.07, 0.007, 0.056, 0.01, 0.089, 0.014, 0.055, 0.026, 0.02, 0.013, 0.014, 0.027, 0.011, 0.014, 0.072, 0.03, 0.015, 0.024, 0.033, 0.024, 0.015, 0.021, 0.019, 0.018, 0.047, 0.011, 0.044, 0.021, 0.013, 0.013, 0.052, 0.051, 0.034, 0.023, 0.057, 0.015, 0.041, 0.066, 0.02, 0.051, 0.038, 0.026, 0.023, 0.037, 0.024, 0.017, 0.045, 0.031, 0.013, 0.025, 0.019, 0.018, 0.042, 0.016, 0.012, 0.019, 0.022, 0.02, 0.011, 0.063, 0.028, 0.022, 0.015, 0.023, 0.027, 0.014, 0.014, 0.022, 0.017, 0.011, 0.026, 0.017, 0.019, 0.01, 0.012, 0.013, 0.013, 0.01, 0.023, 0.021, 0.015, 0.007, 0.046, 0.025, 0.015, 0.035, 0.041, 0.018, 0.01, 0.016, 0.025, 0.024, 0.012, 0.012, 0.015, 0.016, 0.011, 0.013, 0.026, 0.018, 0.024, 0.029, 0.012, 0.011, 0.014, 0.013, 0.019, 0.024, 0.019, 0.016, 0.011, 0.017, 0.009, 0.021, 0.045, 0.019, 0.006, 0.005, 0.045, 0.007, 0.007, 0.009, 0.011, 0.012, 0.009, 0.01, 0.011, 0.054, 0.009, 0.012, 0.234, 0.098, 0.009, 0.011, 0.009, 0.091, 0.005, 0.007, 0.032, 0.049, 0.006, 0.006, 0.009, 0.058, 0.006, 0.005, 0.01, 0.009, 0.007, 0.017, 0.026, 0.006, 0.008, 0.013, 0.009, 0.01, 0.011, 0.007, 0.139, 0.006, 0.009, 0.028, 0.011, 0.007, 0.014, 0.007, 0.538, 0.011, 0.009, 0.011, 0.011, 0.013, 0.031, 0.003, 0.008, 0.014, 0.002, 0.052, 0.214, 0.006, 0.01, 0.01, 0.019, 0.015, 0.014, 0.015, 0.011, 0.036, 0.011, 0.011, 0.007, 0.006, 0.036, 0.013, 0.072, 0.009, 0.005, 0.284, 0.067, 0.015, 0.007, 0.006, 0.006, 0.011, 0.019, 0.01, 0.037, 0.052, 0.019, 0.023, 0.184, 0.011, 0.014, 0.017, 0.036, 0.006, 0.005, 0.01, 0.13, 0.134, 0.007, 0.007, 0.007, 0.024, 0.006, 0.055, 0.018, 0.012, 0.014, 0.004, 0.038, 0.018, 0.006, 0.008, 0.009, 0.012, 0.012, 0.022, 0.021, 0.011, 0.01, 0.138, 0.02, 0.2, 0.018, 0.008, 0.037, 0.006, 0.041, 0.002, 0.008, 0.013, 0.023, 0.005, 0.009, 0.002, 0.02, 0.019, 0.041, 0.007, 0.059, 0.019, 0.006, 0.011, 0.038, 0.041, 0.015, 0.014, 0.013, 0.023, 0.01, 0.02, 0.042, 0.015, 0.17, 0.009, 0.016, 0.01, 0.015, 0.017, 0.014, 0.013, 0.025, 0.014, 0.026, 0.012, 0.028, 0.014, 0.036, 0.017, 0.037, 0.017, 0.023, 0.025, 0.028, 0.018, 0.017, 0.014, 0.015, 0.016, 0.045, 0.033, 0.027, 0.017, 0.035, 0.017, 0.018, 0.018, 0.018, 0.02, 0.024, 0.026, 0.023, 0.025, 0.031, 0.038] - }, - "length": 482, - "seq_id": "f605e37dc591194cfc8a9a7b94c629c5" -} \ No newline at end of file diff --git a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts index 882524c80..46ae1bebe 100644 --- a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts +++ b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts @@ -1,7 +1,81 @@ -describe("nightingale-distribution-track tests", () => { - test("foo", () => { - expect(2+2).toEqual(4); +import { getQuantile } from "../src/nightingale-distribution-track"; + + +describe("getQuantile", () => { + // test("foo", () => { + // expect(2 + 2).toEqual(4); + // }); + + // Basic quantile calculations + test("calculates median (0.5 quantile) of odd-length array", () => { + expect(getQuantile([1, 2, 3, 4, 5], 0.5)).toEqual(3); + }); + + test("calculates median (0.5 quantile) of even-length array", () => { + expect(getQuantile([1, 2, 3, 4], 0.5)).toEqual(2.5); + }); + + // Edge cases for quantile values + test("returns minimum value for quantile 0", () => { + expect(getQuantile([1, 2, 3, 4, 5], 0)).toEqual(1); + }); + + test("returns maximum value for quantile 1", () => { + expect(getQuantile([1, 2, 3, 4, 5], 1)).toEqual(5); + }); + + // Quartile calculations + test("calculates first quartile (0.25)", () => { + expect(getQuantile([1, 2, 3, 4, 5], 0.25)).toEqual(2); + }); + + test("calculates third quartile (0.75)", () => { + expect(getQuantile([1, 2, 3, 4, 5], 0.75)).toEqual(4); + }); + + // Small arrays + test("handles single-element array", () => { + expect(getQuantile([5], 0.5)).toEqual(5); + expect(getQuantile([5], 0.1)).toEqual(5); + }); + + test("handles two-element array", () => { + expect(getQuantile([1, 5], 0.5)).toEqual(3); + expect(getQuantile([1, 5], 0.1)).toEqual(1.4); + expect(getQuantile([1, 5], 0.25)).toEqual(2); + expect(getQuantile([1, 5], 0.75)).toEqual(4); + expect(getQuantile([1, 5], 0.9)).toEqual(4.6); + }); + + // Negative numbers + test("works with negative values", () => { + expect(getQuantile([-5, -3, 0, 3, 5], 0.5)).toEqual(0); + }); + + test("calculates quantile with all negative values", () => { + expect(getQuantile([-5, -4, -3, -2, -1], 0.5)).toEqual(-3); }); -}); -// TODO tests + // Floating-point values + test("works with floating-point values", () => { + expect(getQuantile([1.5, 2.5, 3.5, 4.5], 0.5)).toEqual(3); + }); + + // Duplicate values + test("handles array with duplicate values", () => { + expect(getQuantile([1, 2, 2, 2, 5], 0.5)).toEqual(2); + }); + + // Various array sizes + test("calculates quantile for larger array", () => { + const largeArray = Array.from({ length: 101 }, (_, i) => i); + expect(getQuantile(largeArray, 0.5)).toEqual(50); + }); + + test("calculates deciles correctly", () => { + const array = Array.from({ length: 11 }, (_, i) => i); + expect(getQuantile(array, 0.1)).toEqual(1); + expect(getQuantile(array, 0.2)).toEqual(2); + expect(getQuantile(array, 0.9)).toEqual(9); + }); +}); diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx index 785841335..3eec0d724 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx @@ -1,6 +1,6 @@ import { Meta, Description } from "@storybook/addon-docs"; -import Readme from "../../packages/nightingale-conservation-track/README.md"; +import Readme from "../../packages/nightingale-distribution-track/README.md"; import ParentReadme from "../../packages/nightingale-new-core/src/nightingale-base-element.md"; import dimensionsReadme from "../../packages/nightingale-new-core/src/mixins/withDimensions/README.md"; import highlightReadme from "../../packages/nightingale-new-core/src/mixins/withHighlight/README.md"; @@ -10,7 +10,7 @@ import positionReadme from "../../packages/nightingale-new-core/src/mixins/withP import resizableReadme from "../../packages/nightingale-new-core/src/mixins/withResizable/README.md"; import zoomReadme from "../../packages/nightingale-new-core/src/mixins/withZoom/README.md"; - + {Readme} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 9f077d725..8657c7c9b 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -2,52 +2,60 @@ import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-distribution-track/src/index"; import { type DistributionData } from "../../packages/nightingale-distribution-track/src/nightingale-distribution-track"; -import sampleDistributionData from "../../packages/nightingale-distribution-track/tests/mockData/sample-distribution-data.json"; +import sampleDistributionData from "../../packages/nightingale-distribution-track/tests/mockData/sample-1.json"; export default { title: "Components/Tracks/Distribution Track" } as Meta; const DefaultArgs = { - "letter-order": "default", "min-width": 400, "height": 200, "highlight-event": "onmouseover", "highlight-color": "#EB3BFF22", "margin-color": "#ffffffdd", + "y-min": 0 as number | undefined, + "y-max": undefined as number | undefined, + "hide-outliers": false, }; type Args = typeof DefaultArgs; const ArgumentTypes: Partial> = { "highlight-event": { control: "select", options: ["onmouseover", "onclick"] }, - "letter-order": { control: "select", options: ["default", "probability"] }, + "y-min": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, + "y-max": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, }; -const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIAEDEEWKRLRSLLSPTFTSGKLKEMVPIIAQYGDVLVRNLRREAETGKPVTLKDVFGAYSMDVITSTSFGVNIDSLNNPQDPFVENTKKLLRFDFLDPFFLSITVFPFLIPILEVLNICVFPREVTNFLRKSVKRMKESRLEDTQKHRVDFLQLMIDSQNSKETESHKALSDLELVAQSIIFIFAGYETTSSVLSFIMYELATHPDVQQKLQEEIDAVLPNKAPPTYDTVLQMEYLDMVVNETLRLFPIAMRLERVCKKDVEINGMFIPKGVVVMIPSYALHRDPKYWTEPEKFLPERFSKKNKDNIDPYIYTPFGSGPRNCIGMRFALMNMKLALIRVLQNFSFKPCKETQIPLKLSLGGLLQPEKPVVLKVESRDGTVSGAHHHH"; - -function prepareDistributionData(data: typeof sampleDistributionData): DistributionData { - const out: DistributionData = { - index: data.data.index, - probabilities: {}, - }; - for (const field in data.data) { - if (data.data.hasOwnProperty(field) && field.startsWith('probability_')) { - const letter = field.slice('probability_'.length); - out.probabilities[letter] = data.data[field as keyof typeof data.data]; - } - } - return out; +const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA"; + +function prepareDistributionData(data: DistributionData[number]): DistributionData { + return [ + { + name: 'Data1', + color: '#0088ff', + positions: data.positions, + }, + { + name: 'Data2', + color: '#ff8800', + positions: data.positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.9) })), + }, + ]; } -function prepareLinegraphData(data: typeof sampleDistributionData) { +function prepareLinegraphData(data: DistributionData) { + const values = data[0].positions.map(pos => ({ position: pos.position, value: pos.values.reduce((a, b) => a + b, 0) / pos.values.length })); + const bulgarianConstant = 10 / Math.max(...values.map(v => v.value)); + values.forEach(v => v.value *= bulgarianConstant); // I don't know how to set Y-range to linegraph track, this will do + const chart1 = { name: "chart1", color: "#707070", fill: "#808080", lineCurve: "curveStep", range: [0, 10], - values: data.data.index.map((position, i) => ({ position, value: data.data.conservation_score[i] })), + values: values, }; return [chart1]; } @@ -64,7 +72,8 @@ function nightingaleNavigation(args: Args & { length: number }) { length="${args["length"]}" highlight-color=${args["highlight-color"]} margin-color=${args["margin-color"]} - show-highlight + show-highlight + display-end="10" > `; @@ -125,7 +134,9 @@ function nightingaleDistributionTrack(args: Args & { length: number, id: number margin-top=10 margin-bottom=20 use-ctrl-to-zoom - letter-order=${args["letter-order"]} + y-min=${args["y-min"]} + y-max=${args["y-max"]} + ?hide-outliers=${args["hide-outliers"]} > `; @@ -156,14 +167,17 @@ function makeStory(options: { length: number }): Story { const story: Story = template.bind({}); story.args = { ...DefaultArgs }; story.argTypes = ArgumentTypes; + const distributionData = prepareDistributionData(sampleDistributionData as any); + const linegraphData = prepareLinegraphData(distributionData); + story.play = async () => { await customElements.whenDefined("nightingale-linegraph-track"); for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { - (track as any).data = prepareLinegraphData(sampleDistributionData); + (track as any).data = linegraphData; } await customElements.whenDefined("nightingale-distribution-track"); for (const track of document.getElementsByTagName("nightingale-distribution-track")) { - (track as any).data = prepareDistributionData(sampleDistributionData); + (track as any).data = distributionData; } }; return story; @@ -173,3 +187,27 @@ function makeStory(options: { length: number }): Story { export const LinegraphAndDistribution = makeStory({ length: sampleSequence.length, }); + +// function processDistributionData(csvData: string): DistributionData { +// console.log('csvData', csvData.length) +// const lines = csvData.trim().split('\n').map(line => line.trim()).filter(line => line.length > 0); +// const header = lines[0].split(',').map(h => h.trim()); +// const unp_res_id = header.indexOf('unp_res_id'); +// const raw_score = header.indexOf('raw_score'); +// const grouped: { [unp_res_id: number]: number[] } = {}; +// for (let i = 1; i < lines.length; i++) { +// const values = lines[i].split(',').map(v => v.trim()); +// const resId = parseInt(values[unp_res_id]); +// const score = parseFloat(values[raw_score]); +// (grouped[resId] ??= []).push(score); +// } +// const resIds = Object.keys(grouped).map(Number).sort((a, b) => a - b); +// return { +// positions: resIds.map(pos => ({ +// position: pos, +// values: grouped[pos] +// })), +// index: [1, 2, 3], +// probabilities: { 'A': [1, 1, 1] }, +// }; +// } From 32075203ae7fa1afde88471c06cf7f0c63b81d40 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 10 Jun 2026 13:57:57 +0100 Subject: [PATCH 03/32] nightingale-distribution-track: zoomed-out visualization --- .../src/nightingale-distribution-track.ts | 101 ++++++++++++++++-- .../NightingaleDistributionTrack.stories.ts | 50 ++++----- 2 files changed, 117 insertions(+), 34 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index bad0f5fe1..e4c94b632 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -13,7 +13,7 @@ import NightingaleElement, { withResizable, withZoom, } from "@nightingale-elements/nightingale-new-core"; -import { BaseType, select, Selection, color, scaleLinear, randomNormal, randomUniform, randomLcg } from "d3"; +import { BaseType, color, randomLcg, randomUniform, scaleLinear, select, Selection } from "d3"; import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; @@ -46,6 +46,8 @@ const WHISKER_REL_WIDTH = 0.6; const JITTER_REL_WIDTH = 0.4; /** Radius for the circles representing outliers */ const OUTLIER_RADIUS = 2; +/** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ +const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; interface Distribution { @@ -207,7 +209,6 @@ export default class NightingaleDistributionTrack extends withCanvas( if (!this.data || !this.preprocessedData) return; const nData = this.data.length; - const scale = this.canvasScale; const baseWidthInCss = this.getSingleBaseWidth(); const baseWidth = scale * baseWidthInCss; @@ -215,11 +216,12 @@ export default class NightingaleDistributionTrack extends withCanvas( const columnHeight = scale * (this["height"] - this["margin-top"] - this["margin-bottom"]); const xColumnOffset = baseWidth * 0.5 * COLUMN_GAP; const xColumnWidth = baseWidth * (1 - COLUMN_GAP); + const xColumnOffsetRight = xColumnOffset + xColumnWidth; const xBoxWidth = xColumnWidth / nData * (1 - BOX_GAP); const yScale = scaleLinear(this.getYLimits(), [columnOffset + columnHeight, columnOffset]); const outlierRadius = scale * OUTLIER_RADIUS; - const yMedianExtra = scale * 1; + const [fgAlpha, bgAlpha] = this.getFgBgOpacity(baseWidthInCss / nData); ctx.lineWidth = scale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * baseWidthInCss); ctx.strokeStyle = STROKE_COLOR; @@ -227,7 +229,47 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.textBaseline = "middle"; const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); - const end = Math.floor(this.getSeqPositionFromX(this.width) ?? 1); + /** Exclusive */ + const stop = Math.floor(this.getSeqPositionFromX(this.width) ?? 1) + 1; + + // "Background" + if (bgAlpha !== 0) { + for (let iData = 0; iData < nData; iData++) { + const dataset = this.preprocessedData.datasets[iData]; + if (!dataset) continue; + + const dataColor = this.data[iData].color ?? DEFAULT_DATA_COLOR; + const boxFill = dataColor; + const boxStroke = color(boxFill)!.darker(2).formatHex(); + ctx.globalAlpha = 0.25 * bgAlpha; + + const x = (i: number) => scale * this.getXFromSeqPosition(i); + // const yMin = (i: number) => yScale(dataset[i].minimum); + // const yMax = (i: number) => yScale(dataset[i].maximum); + const yWhiskerLow = (i: number) => yScale(dataset[i].whiskerLow); + const yWhiskerHigh = (i: number) => yScale(dataset[i].whiskerHigh); + // const yBoxLow = (i: number) => yScale(dataset[i].boxLow); + // const yBoxHigh = (i: number) => yScale(dataset[i].boxHigh); + const yMedianLow = (i: number) => yScale(dataset[i].median + yMedianExtra); + const yMedianHigh = (i: number) => yScale(dataset[i].median - yMedianExtra); + + const segments = getContiguousSegments(start, stop, i => i in dataset); + for (const segment of segments) { + ctx.globalAlpha = 0.25 * bgAlpha; + ctx.fillStyle = boxFill; + // drawSilhouette(ctx, segment, x, yMin, yMax, [xColumnOffset, xColumnOffsetRight], 'fill'); + drawSilhouette(ctx, segment, x, yWhiskerLow, yWhiskerHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); + // drawSilhouette(ctx, segment, x, yBoxLow, yBoxHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); + ctx.globalAlpha = 0.5 * bgAlpha; + ctx.fillStyle = boxStroke; + ctx.strokeStyle = boxStroke; + drawSilhouette(ctx, segment, x, yMedianLow, yMedianHigh, [xColumnOffset, xColumnOffsetRight], 'fill+stroke'); + } + } + } + + // "Foreground" + if (fgAlpha===0) return; for (let iData = 0; iData < nData; iData++) { const dataset = this.preprocessedData.datasets[iData]; if (!dataset) continue; @@ -243,7 +285,7 @@ export default class NightingaleDistributionTrack extends withCanvas( const xWhiskerEnd = xCenter + xWhiskerHalfWidth; const xJitterHalfWidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; - for (let i = start; i <= end; i++) { + for (let i = start; i < stop; i++) { const datum = dataset[i]; if (!datum) continue; @@ -254,7 +296,7 @@ export default class NightingaleDistributionTrack extends withCanvas( const yWhiskerLow = yScale(datum.whiskerLow); const yWhiskerHigh = yScale(datum.whiskerHigh); - ctx.globalAlpha = 1; + ctx.globalAlpha = fgAlpha; // Whiskers ctx.strokeStyle = boxStroke; @@ -284,7 +326,7 @@ export default class NightingaleDistributionTrack extends withCanvas( const xJitter = xJitterHalfWidth !== 0 ? randomUniform.source(randomLcg(i * nData + iData))(xCenter - xJitterHalfWidth, xCenter + xJitterHalfWidth) : () => xCenter; - ctx.globalAlpha = 0.25; + ctx.globalAlpha = 0.25 * fgAlpha; ctx.fillStyle = boxStroke; for (const outlier of datum.outliersHigh) { ctx.beginPath(); @@ -297,6 +339,7 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.fill(); } } + // TODO: fix outlier alpha rendering when 0 < fgAlpha < 1 (can be done without two canvases? with globalCompositeOperation?) } } } @@ -320,6 +363,18 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); } + private getFgBgOpacity(baseWidthInCss: number): [fgAlpha: number, bgAlpha: number] { + const [transitionMin, transitionMax] = FG_BG_TRANSITION_BASE_WIDTHS; + if (baseWidthInCss <= transitionMin) { + return [0, 1]; + } else if (baseWidthInCss >= transitionMax) { + return [1, 0]; + } else { + const fgAlpha = (baseWidthInCss - transitionMin) / (transitionMax - transitionMin); + return [fgAlpha, 1 - fgAlpha]; + } + } + protected updateHighlight() { if (!this.highlighted) return; const highlights = this.highlighted @@ -531,3 +586,35 @@ function getExtremes(data: { [position: number]: PreprocessedDatum }[]) { max: max === -Infinity ? undefined : max, }; } + +function getContiguousSegments(start: number, stop: number, isPresent: (i: number) => boolean): [start: number, stop: number][] { + const segments: [number, number][] = []; + for (let i = start; i < stop; i++) { + if (isPresent(i)) { + if (i === segments[segments.length - 1]?.[1]) { + segments[segments.length - 1][1]++; + } else { + segments.push([i, i + 1]); + } + } + } + return segments; +} + +function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, number], getX: (i: number) => number, getYLow: (i: number) => number, getYHigh: (i: number) => number, [columnOffsetLeft, columnOffsetRight]: [number, number], style: 'fill' | 'stroke' | 'fill+stroke') { + ctx.beginPath(); + for (let i = sStart; i < sStop; i++) { + const x = getX(i); + const yHigh = getYHigh(i); + ctx.lineTo(x + columnOffsetLeft, yHigh); + ctx.lineTo(x + columnOffsetRight, yHigh); + } + for (let i = sStop - 1; i >= sStart; i--) { + const x = getX(i); + const yLow = getYLow(i); + ctx.lineTo(x + columnOffsetRight, yLow); + ctx.lineTo(x + columnOffsetLeft, yLow); + } + if (style.includes('fill')) ctx.fill(); + if (style.includes('stroke')) ctx.stroke(); +} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 8657c7c9b..c9ac9317c 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -27,23 +27,43 @@ const ArgumentTypes: Partial> = { }; -const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA"; +const nDataRepeat = 10; + +const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA".repeat(nDataRepeat); function prepareDistributionData(data: DistributionData[number]): DistributionData { + const positions = data.positions.slice(); + const shift = data.positions.length; + for (let i = 1; i < nDataRepeat; i++) { + for (const pos of data.positions) { + positions.push({ position: pos.position + i * shift, values: pos.values }); + } + } + return [ { name: 'Data1', color: '#0088ff', - positions: data.positions, + positions: positions, + // positions: remove(positions, 3, 5, 6, 35), // DEBUG }, { name: 'Data2', color: '#ff8800', - positions: data.positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.9) })), + positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG }, ]; } +function remove(arr: T[], ...indices: number[]) { + const out = arr.slice(); + for (const i of indices.sort((a, b) => b - a)) { + out.splice(i, 1); + } + return out; +} + function prepareLinegraphData(data: DistributionData) { const values = data[0].positions.map(pos => ({ position: pos.position, value: pos.values.reduce((a, b) => a + b, 0) / pos.values.length })); const bulgarianConstant = 10 / Math.max(...values.map(v => v.value)); @@ -187,27 +207,3 @@ function makeStory(options: { length: number }): Story { export const LinegraphAndDistribution = makeStory({ length: sampleSequence.length, }); - -// function processDistributionData(csvData: string): DistributionData { -// console.log('csvData', csvData.length) -// const lines = csvData.trim().split('\n').map(line => line.trim()).filter(line => line.length > 0); -// const header = lines[0].split(',').map(h => h.trim()); -// const unp_res_id = header.indexOf('unp_res_id'); -// const raw_score = header.indexOf('raw_score'); -// const grouped: { [unp_res_id: number]: number[] } = {}; -// for (let i = 1; i < lines.length; i++) { -// const values = lines[i].split(',').map(v => v.trim()); -// const resId = parseInt(values[unp_res_id]); -// const score = parseFloat(values[raw_score]); -// (grouped[resId] ??= []).push(score); -// } -// const resIds = Object.keys(grouped).map(Number).sort((a, b) => a - b); -// return { -// positions: resIds.map(pos => ({ -// position: pos, -// values: grouped[pos] -// })), -// index: [1, 2, 3], -// probabilities: { 'A': [1, 1, 1] }, -// }; -// } From 84a26e119a7d2197d721e2f50a05487c21f2d909 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 10 Jun 2026 16:26:25 +0100 Subject: [PATCH 04/32] nightingale-distribution-track: refactor zoomed-out and zoomed-in visualization --- .../src/nightingale-distribution-track.ts | 208 +++++++++++------- 1 file changed, 129 insertions(+), 79 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index e4c94b632..179adf0eb 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -49,6 +49,10 @@ const OUTLIER_RADIUS = 2; /** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; +function makeStrokeColor(fillColor: string): string | undefined { + return color(fillColor)?.darker(2).formatHex(); +} + interface Distribution { position: number, @@ -193,7 +197,13 @@ export default class NightingaleDistributionTrack extends withCanvas( if (!this._drawStamp.update().changed) return; this.adjustCanvasCtxLogicalSize(); this.clearCanvas(); - this.drawBoxplot(); + const params = this.getDrawingMeasurements(); + if (params.bgAlpha > 0) { + this.drawSimplifiedVisualization(params); + } + if (params.fgAlpha > 0) { + this.drawBoxplotVisualization(params); + } this.drawMargins(); } @@ -203,93 +213,35 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); } - private drawBoxplot() { + /** Draw full boxplot visualization ("foreground" / zoomed-in) */ + private drawBoxplotVisualization(params: ReturnType) { const ctx = this.canvasCtx; if (!ctx) return; if (!this.data || !this.preprocessedData) return; - const nData = this.data.length; - const scale = this.canvasScale; - const baseWidthInCss = this.getSingleBaseWidth(); - const baseWidth = scale * baseWidthInCss; - const columnOffset = scale * this["margin-top"]; - const columnHeight = scale * (this["height"] - this["margin-top"] - this["margin-bottom"]); - const xColumnOffset = baseWidth * 0.5 * COLUMN_GAP; - const xColumnWidth = baseWidth * (1 - COLUMN_GAP); - const xColumnOffsetRight = xColumnOffset + xColumnWidth; - const xBoxWidth = xColumnWidth / nData * (1 - BOX_GAP); - const yScale = scaleLinear(this.getYLimits(), [columnOffset + columnHeight, columnOffset]); - const outlierRadius = scale * OUTLIER_RADIUS; - const yMedianExtra = scale * 1; - const [fgAlpha, bgAlpha] = this.getFgBgOpacity(baseWidthInCss / nData); - - ctx.lineWidth = scale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * baseWidthInCss); - ctx.strokeStyle = STROKE_COLOR; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; + const { nDatasets, xColumnLeft, xColumnWidth, xScale, yScale, yMedianExtra, lineWidth, outlierRadius, fgAlpha, start, stop } = params; + ctx.lineWidth = lineWidth; - const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); - /** Exclusive */ - const stop = Math.floor(this.getSeqPositionFromX(this.width) ?? 1) + 1; - - // "Background" - if (bgAlpha !== 0) { - for (let iData = 0; iData < nData; iData++) { - const dataset = this.preprocessedData.datasets[iData]; - if (!dataset) continue; - - const dataColor = this.data[iData].color ?? DEFAULT_DATA_COLOR; - const boxFill = dataColor; - const boxStroke = color(boxFill)!.darker(2).formatHex(); - ctx.globalAlpha = 0.25 * bgAlpha; - - const x = (i: number) => scale * this.getXFromSeqPosition(i); - // const yMin = (i: number) => yScale(dataset[i].minimum); - // const yMax = (i: number) => yScale(dataset[i].maximum); - const yWhiskerLow = (i: number) => yScale(dataset[i].whiskerLow); - const yWhiskerHigh = (i: number) => yScale(dataset[i].whiskerHigh); - // const yBoxLow = (i: number) => yScale(dataset[i].boxLow); - // const yBoxHigh = (i: number) => yScale(dataset[i].boxHigh); - const yMedianLow = (i: number) => yScale(dataset[i].median + yMedianExtra); - const yMedianHigh = (i: number) => yScale(dataset[i].median - yMedianExtra); - - const segments = getContiguousSegments(start, stop, i => i in dataset); - for (const segment of segments) { - ctx.globalAlpha = 0.25 * bgAlpha; - ctx.fillStyle = boxFill; - // drawSilhouette(ctx, segment, x, yMin, yMax, [xColumnOffset, xColumnOffsetRight], 'fill'); - drawSilhouette(ctx, segment, x, yWhiskerLow, yWhiskerHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); - // drawSilhouette(ctx, segment, x, yBoxLow, yBoxHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); - ctx.globalAlpha = 0.5 * bgAlpha; - ctx.fillStyle = boxStroke; - ctx.strokeStyle = boxStroke; - drawSilhouette(ctx, segment, x, yMedianLow, yMedianHigh, [xColumnOffset, xColumnOffsetRight], 'fill+stroke'); - } - } - } - - // "Foreground" - if (fgAlpha===0) return; - for (let iData = 0; iData < nData; iData++) { - const dataset = this.preprocessedData.datasets[iData]; + for (let iDataset = 0; iDataset < nDatasets; iDataset++) { + const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; - const dataColor = this.data[iData].color ?? DEFAULT_DATA_COLOR; + const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; const boxFill = dataColor; - const boxStroke = color(boxFill)!.darker(2).formatHex(); + const boxStroke = makeStrokeColor(boxFill)!; - const xBoxOffset = xColumnOffset + xColumnWidth * (iData + 0.5 * BOX_GAP) / nData; + const xBoxOffset = xColumnLeft + (iDataset + 0.5 * BOX_GAP) * xColumnWidth / nDatasets; + const xBoxWidth = (1 - BOX_GAP) * xColumnWidth / nDatasets; const xCenter = xBoxOffset + 0.5 * xBoxWidth; - const xWhiskerHalfWidth = 0.5 * WHISKER_REL_WIDTH * xBoxWidth; - const xWhiskerOffset = xCenter - xWhiskerHalfWidth; - const xWhiskerEnd = xCenter + xWhiskerHalfWidth; - const xJitterHalfWidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; + const xWhiskerLeft = xCenter - 0.5 * WHISKER_REL_WIDTH * xBoxWidth; + const xWhiskerRight = xCenter + 0.5 * WHISKER_REL_WIDTH * xBoxWidth; + const xJitterHalfwidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; for (let i = start; i < stop; i++) { const datum = dataset[i]; if (!datum) continue; - const x = scale * this.getXFromSeqPosition(i); + const x = xScale(i); const yMedian = yScale(datum.median); const yBoxLow = yScale(datum.boxLow); const yBoxHigh = yScale(datum.boxHigh); @@ -301,10 +253,10 @@ export default class NightingaleDistributionTrack extends withCanvas( // Whiskers ctx.strokeStyle = boxStroke; ctx.beginPath(); - ctx.moveTo(x + xWhiskerOffset, yWhiskerHigh); - ctx.lineTo(x + xWhiskerEnd, yWhiskerHigh); - ctx.moveTo(x + xWhiskerOffset, yWhiskerLow); - ctx.lineTo(x + xWhiskerEnd, yWhiskerLow); + ctx.moveTo(x + xWhiskerLeft, yWhiskerHigh); + ctx.lineTo(x + xWhiskerRight, yWhiskerHigh); + ctx.moveTo(x + xWhiskerLeft, yWhiskerLow); + ctx.lineTo(x + xWhiskerRight, yWhiskerLow); ctx.moveTo(x + xCenter, yWhiskerHigh); ctx.lineTo(x + xCenter, yWhiskerLow); ctx.stroke(); @@ -323,8 +275,8 @@ export default class NightingaleDistributionTrack extends withCanvas( // Outliers if (!this["hide-outliers"]) { - const xJitter = xJitterHalfWidth !== 0 ? - randomUniform.source(randomLcg(i * nData + iData))(xCenter - xJitterHalfWidth, xCenter + xJitterHalfWidth) + const xJitter = xJitterHalfwidth !== 0 ? + randomUniform.source(randomLcg(i * nDatasets + iDataset))(xCenter - xJitterHalfwidth, xCenter + xJitterHalfwidth) : () => xCenter; ctx.globalAlpha = 0.25 * fgAlpha; ctx.fillStyle = boxStroke; @@ -344,6 +296,104 @@ export default class NightingaleDistributionTrack extends withCanvas( } } + /** Draw simplified visualization ("background" / zoomed-out) */ + private drawSimplifiedVisualization(params: ReturnType) { + const ctx = this.canvasCtx; + if (!ctx) return; + if (!this.data || !this.preprocessedData) return; + + const { nDatasets, xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, bgAlpha, start, stop } = params; + ctx.lineWidth = lineWidth; + + for (let iDataset = 0; iDataset < nDatasets; iDataset++) { + const dataset = this.preprocessedData.datasets[iDataset]; + if (!dataset) continue; + + const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; + const boxFill = dataColor; + const boxStroke = makeStrokeColor(boxFill)!; + ctx.globalAlpha = 0.25 * bgAlpha; + + // const yMin = (i: number) => yScale(dataset[i].minimum); + // const yMax = (i: number) => yScale(dataset[i].maximum); + const yWhiskerLow = (i: number) => yScale(dataset[i].whiskerLow); + const yWhiskerHigh = (i: number) => yScale(dataset[i].whiskerHigh); + // const yBoxLow = (i: number) => yScale(dataset[i].boxLow); + // const yBoxHigh = (i: number) => yScale(dataset[i].boxHigh); + const yMedianLow = (i: number) => yScale(dataset[i].median + yMedianExtra); + const yMedianHigh = (i: number) => yScale(dataset[i].median - yMedianExtra); + + const segments = getContiguousSegments(start, stop, i => i in dataset); + for (const segment of segments) { + ctx.globalAlpha = 0.25 * bgAlpha; + ctx.fillStyle = boxFill; + // drawSilhouette(ctx, segment, xScale, yMin, yMax, [xColumnOffset, xColumnOffsetRight], 'fill'); + drawSilhouette(ctx, segment, xScale, yWhiskerLow, yWhiskerHigh, [xColumnLeft, xColumnRight], 'fill'); + // drawSilhouette(ctx, segment, xScale, yBoxLow, yBoxHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); + ctx.globalAlpha = 0.5 * bgAlpha; + ctx.fillStyle = boxStroke; + ctx.strokeStyle = boxStroke; + drawSilhouette(ctx, segment, xScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); + } + } + } + + private getDrawingMeasurements() { + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + const canvasScale = this.canvasScale; + const xBaseWidthInCss = this.getSingleBaseWidth(); + const xBaseWidth = canvasScale * xBaseWidthInCss; + const xColumnLeft = xBaseWidth * 0.5 * COLUMN_GAP; + const xColumnWidth = xBaseWidth * (1 - COLUMN_GAP); + const xColumnRight = xColumnLeft + xColumnWidth; + const xScale = (i: number) => canvasScale * this.getXFromSeqPosition(i); + + const yColumnOffset = canvasScale * this["margin-top"]; + const yColumnHeight = canvasScale * (this["height"] - this["margin-top"] - this["margin-bottom"]); + const yScale = scaleLinear(this.getYLimits(), [yColumnOffset + yColumnHeight, yColumnOffset]); + const yMedianExtra = canvasScale * 1; + + const lineWidth = canvasScale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * xBaseWidthInCss); + const outlierRadius = canvasScale * OUTLIER_RADIUS; + + + const [fgAlpha, bgAlpha] = this.getFgBgOpacity(xBaseWidthInCss / nDatasets); + + const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); + const stop = Math.floor(this.getSeqPositionFromX(this.width) ?? 1) + 1; + + return { + /** Number of dataset (independent variables) */ + nDatasets, + /** Ratio of canvas logical size versus canvas display size */ + canvasScale, + /** Horizontal offset of the displayed column from the beginning of the slot, in canvas space */ + xColumnLeft, + /** Horizontal offset of the right edge of displayed column from the beginning of the slot, in canvas space */ + xColumnRight, + /** Width of displayed column, in canvas space */ + xColumnWidth, + /** Scale from sequence position to horizontal offset of the slot in canvas space (does not consider column gap) */ + xScale, + /** Scale from value of independent variable to vertical position in canvas space */ + yScale, + /** Amount for vertically thickening the median rectangle, in canvas space */ + yMedianExtra, + /** Line width for strokes, in canvas space */ + lineWidth, + /** Circle radius for drawing outliers, in canvas space */ + outlierRadius, + /** Opacity of the "foreground" (zoomed-in) visualization */ + fgAlpha, + /** Opacity of the "background" (zoomed-out) visualization */ + bgAlpha, + /** Sequence position of the first rendered datapoint */ + start, + /** Sequence position of the last rendered datapoint + 1 */ + stop, + }; + } + private drawMargins() { const ctx = this.canvasCtx; if (!ctx) return; From 72b41af04923a0b3101f76919c5dde5aa31ea7b7 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Thu, 11 Jun 2026 11:20:32 +0100 Subject: [PATCH 05/32] nightingale-distribution-track: fix outlier rendering with alpha --- .../src/nightingale-distribution-track.ts | 173 ++++++++++-------- .../nightingale-distribution-track.test.ts | 4 - 2 files changed, 96 insertions(+), 81 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 179adf0eb..effa2dd91 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -27,8 +27,6 @@ const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleDistributionTrack)[]; -/** Color for rectangle stroke */ -const STROKE_COLOR = "#D3D3D3"; /** Line width for rectangle stroke */ const LINE_WIDTH = 1; /** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ @@ -49,8 +47,8 @@ const OUTLIER_RADIUS = 2; /** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; -function makeStrokeColor(fillColor: string): string | undefined { - return color(fillColor)?.darker(2).formatHex(); +function makeStrokeColor(dataColor: string): string | undefined { + return color(dataColor)?.darker(2).formatHex(); } @@ -196,39 +194,70 @@ export default class NightingaleDistributionTrack extends withCanvas( private _draw(): void { if (!this._drawStamp.update().changed) return; this.adjustCanvasCtxLogicalSize(); - this.clearCanvas(); - const params = this.getDrawingMeasurements(); - if (params.bgAlpha > 0) { - this.drawSimplifiedVisualization(params); + if (!this.canvasCtx) return; + this.clearCanvas(this.canvasCtx); + this.drawData(this.canvasCtx); + this.drawMargins(this.canvasCtx); + } + + private getOffscreenCanvas(): [canvas: HTMLCanvasElement, canvasContext?: CanvasRenderingContext2D] { + this._offscreenCanvas ??= document.createElement("canvas"); + const width = this.canvasCtx?.canvas.width ?? 1; + const height = this.canvasCtx?.canvas.height ?? 1; + if (this._offscreenCanvas.width !== width) { + this._offscreenCanvas.width = width; } - if (params.fgAlpha > 0) { - this.drawBoxplotVisualization(params); + if (this._offscreenCanvas.height !== height) { + this._offscreenCanvas.height = height; } - this.drawMargins(); + const ctx = this._offscreenCanvas.getContext('2d') ?? undefined; + return [this._offscreenCanvas, ctx]; } + private _offscreenCanvas?: HTMLCanvasElement; - private clearCanvas() { - const ctx = this.canvasCtx; - if (!ctx) return; + private clearCanvas(ctx: CanvasRenderingContext2D) { ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); } + private drawData(ctx: CanvasRenderingContext2D) { + const [fgAlpha, bgAlpha] = this.getFgBgOpacity(); + + // Draw background (zoomed-out) visualization + if (bgAlpha > 0) { + this.drawSimplifiedVisualization(ctx, bgAlpha); + } + + // Draw foreground (zoomed-in) visualization + if (fgAlpha === 1) { + // Draw foreground visualization directly + this.drawBoxplotVisualization(ctx); + } else if (fgAlpha > 0) { + // Draw foreground visualization via an auxiliary canvas (cannot be drawn directly to the main canvas, because overlapping outliers would create opacity > fgAlpha) + const [auxCanvas, auxCtx] = this.getOffscreenCanvas(); + if (auxCtx) { + this.clearCanvas(auxCtx); + this.drawBoxplotVisualization(auxCtx); + ctx.globalAlpha = fgAlpha; + ctx.drawImage(auxCanvas, 0, 0); + } + } + } + /** Draw full boxplot visualization ("foreground" / zoomed-in) */ - private drawBoxplotVisualization(params: ReturnType) { - const ctx = this.canvasCtx; - if (!ctx) return; + private drawBoxplotVisualization(ctx: CanvasRenderingContext2D) { if (!this.data || !this.preprocessedData) return; - const { nDatasets, xColumnLeft, xColumnWidth, xScale, yScale, yMedianExtra, lineWidth, outlierRadius, fgAlpha, start, stop } = params; + const { xColumnLeft, xColumnWidth, xScale, yScale, yMedianExtra, lineWidth, outlierRadius, start, stop } = this.getDrawingMeasurements(); ctx.lineWidth = lineWidth; + const nDatasets = this.preprocessedData?.datasets.length ?? 1; for (let iDataset = 0; iDataset < nDatasets; iDataset++) { const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; - const boxFill = dataColor; - const boxStroke = makeStrokeColor(boxFill)!; + const fillColor = dataColor; + const strokeColor = makeStrokeColor(dataColor)!; const xBoxOffset = xColumnLeft + (iDataset + 0.5 * BOX_GAP) * xColumnWidth / nDatasets; const xBoxWidth = (1 - BOX_GAP) * xColumnWidth / nDatasets; @@ -248,10 +277,10 @@ export default class NightingaleDistributionTrack extends withCanvas( const yWhiskerLow = yScale(datum.whiskerLow); const yWhiskerHigh = yScale(datum.whiskerHigh); - ctx.globalAlpha = fgAlpha; + ctx.globalAlpha = 1; // Whiskers - ctx.strokeStyle = boxStroke; + ctx.strokeStyle = strokeColor; ctx.beginPath(); ctx.moveTo(x + xWhiskerLeft, yWhiskerHigh); ctx.lineTo(x + xWhiskerRight, yWhiskerHigh); @@ -262,14 +291,14 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.stroke(); // Box - ctx.fillStyle = boxFill; - ctx.strokeStyle = boxStroke; + ctx.fillStyle = fillColor; + ctx.strokeStyle = strokeColor; ctx.fillRect(x + xBoxOffset, yBoxHigh, xBoxWidth, yBoxLow - yBoxHigh); ctx.strokeRect(x + xBoxOffset, yBoxHigh, xBoxWidth, yBoxLow - yBoxHigh); // Median - ctx.fillStyle = boxStroke; - ctx.strokeStyle = boxStroke; + ctx.fillStyle = strokeColor; + ctx.strokeStyle = strokeColor; ctx.fillRect(x + xBoxOffset, yMedian - yMedianExtra, xBoxWidth, 2 * yMedianExtra); ctx.strokeRect(x + xBoxOffset, yMedian - yMedianExtra, xBoxWidth, 2 * yMedianExtra); @@ -278,8 +307,8 @@ export default class NightingaleDistributionTrack extends withCanvas( const xJitter = xJitterHalfwidth !== 0 ? randomUniform.source(randomLcg(i * nDatasets + iDataset))(xCenter - xJitterHalfwidth, xCenter + xJitterHalfwidth) : () => xCenter; - ctx.globalAlpha = 0.25 * fgAlpha; - ctx.fillStyle = boxStroke; + ctx.globalAlpha = 0.25; + ctx.fillStyle = strokeColor; for (const outlier of datum.outliersHigh) { ctx.beginPath(); ctx.arc(x + xJitter(), yScale(outlier), outlierRadius, 0, 2 * Math.PI); @@ -291,28 +320,25 @@ export default class NightingaleDistributionTrack extends withCanvas( ctx.fill(); } } - // TODO: fix outlier alpha rendering when 0 < fgAlpha < 1 (can be done without two canvases? with globalCompositeOperation?) } } } /** Draw simplified visualization ("background" / zoomed-out) */ - private drawSimplifiedVisualization(params: ReturnType) { - const ctx = this.canvasCtx; - if (!ctx) return; + private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { if (!this.data || !this.preprocessedData) return; - const { nDatasets, xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, bgAlpha, start, stop } = params; + const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); ctx.lineWidth = lineWidth; + const nDatasets = this.preprocessedData?.datasets.length ?? 1; for (let iDataset = 0; iDataset < nDatasets; iDataset++) { const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; - const boxFill = dataColor; - const boxStroke = makeStrokeColor(boxFill)!; - ctx.globalAlpha = 0.25 * bgAlpha; + const fillColor = dataColor; + const strokeColor = makeStrokeColor(dataColor)!; // const yMin = (i: number) => yScale(dataset[i].minimum); // const yMax = (i: number) => yScale(dataset[i].maximum); @@ -325,21 +351,37 @@ export default class NightingaleDistributionTrack extends withCanvas( const segments = getContiguousSegments(start, stop, i => i in dataset); for (const segment of segments) { - ctx.globalAlpha = 0.25 * bgAlpha; - ctx.fillStyle = boxFill; - // drawSilhouette(ctx, segment, xScale, yMin, yMax, [xColumnOffset, xColumnOffsetRight], 'fill'); + ctx.globalAlpha = 0.25 * alpha; + ctx.fillStyle = fillColor; + // drawSilhouette(ctx, segment, xScale, yMin, yMax, [xColumnLeft, xColumnRight], 'fill'); drawSilhouette(ctx, segment, xScale, yWhiskerLow, yWhiskerHigh, [xColumnLeft, xColumnRight], 'fill'); - // drawSilhouette(ctx, segment, xScale, yBoxLow, yBoxHigh, [xColumnOffset, xColumnOffsetRight], 'fill'); - ctx.globalAlpha = 0.5 * bgAlpha; - ctx.fillStyle = boxStroke; - ctx.strokeStyle = boxStroke; + // drawSilhouette(ctx, segment, xScale, yBoxLow, yBoxHigh, [xColumnLeft, xColumnRight], 'fill'); + + ctx.globalAlpha = 0.5 * alpha; + ctx.fillStyle = strokeColor; + ctx.strokeStyle = strokeColor; drawSilhouette(ctx, segment, xScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); } } } + private drawMargins(ctx: CanvasRenderingContext2D) { + const canvasWidth = ctx.canvas.width; + const canvasHeight = ctx.canvas.height; + const marginLeft = this["margin-left"] * this.canvasScale; + const marginRight = this["margin-right"] * this.canvasScale; + const marginTop = this["margin-top"] * this.canvasScale; + const marginBottom = this["margin-bottom"] * this.canvasScale; + + ctx.globalAlpha = 1; + ctx.fillStyle = this["margin-color"]; + ctx.fillRect(0, 0, marginLeft, canvasHeight); + ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); + ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); + ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); + } + private getDrawingMeasurements() { - const nDatasets = this.preprocessedData?.datasets.length ?? 1; const canvasScale = this.canvasScale; const xBaseWidthInCss = this.getSingleBaseWidth(); const xBaseWidth = canvasScale * xBaseWidthInCss; @@ -356,15 +398,10 @@ export default class NightingaleDistributionTrack extends withCanvas( const lineWidth = canvasScale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * xBaseWidthInCss); const outlierRadius = canvasScale * OUTLIER_RADIUS; - - const [fgAlpha, bgAlpha] = this.getFgBgOpacity(xBaseWidthInCss / nDatasets); - const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); const stop = Math.floor(this.getSeqPositionFromX(this.width) ?? 1) + 1; return { - /** Number of dataset (independent variables) */ - nDatasets, /** Ratio of canvas logical size versus canvas display size */ canvasScale, /** Horizontal offset of the displayed column from the beginning of the slot, in canvas space */ @@ -383,10 +420,6 @@ export default class NightingaleDistributionTrack extends withCanvas( lineWidth, /** Circle radius for drawing outliers, in canvas space */ outlierRadius, - /** Opacity of the "foreground" (zoomed-in) visualization */ - fgAlpha, - /** Opacity of the "background" (zoomed-out) visualization */ - bgAlpha, /** Sequence position of the first rendered datapoint */ start, /** Sequence position of the last rendered datapoint + 1 */ @@ -394,33 +427,19 @@ export default class NightingaleDistributionTrack extends withCanvas( }; } - private drawMargins() { - const ctx = this.canvasCtx; - if (!ctx) return; - - const canvasWidth = ctx.canvas.width; - const canvasHeight = ctx.canvas.height; - const marginLeft = this["margin-left"] * this.canvasScale; - const marginRight = this["margin-right"] * this.canvasScale; - const marginTop = this["margin-top"] * this.canvasScale; - const marginBottom = this["margin-bottom"] * this.canvasScale; - - ctx.globalAlpha = 1; - ctx.fillStyle = this["margin-color"]; - ctx.fillRect(0, 0, marginLeft, canvasHeight); - ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); - ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); - ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); - } - - private getFgBgOpacity(baseWidthInCss: number): [fgAlpha: number, bgAlpha: number] { + /** Compute opacity for the "foreground" (zoomed-in) and "background" (zoomed-out) visualization */ + private getFgBgOpacity(): [fgAlpha: number, bgAlpha: number] { + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + /** Approximate boxplot box width, in CSS pixels. No need to consider column gap and box gap here. */ + const boxWidth = this.getSingleBaseWidth() / nDatasets; const [transitionMin, transitionMax] = FG_BG_TRANSITION_BASE_WIDTHS; - if (baseWidthInCss <= transitionMin) { + + if (boxWidth <= transitionMin) { return [0, 1]; - } else if (baseWidthInCss >= transitionMax) { + } else if (boxWidth >= transitionMax) { return [1, 0]; } else { - const fgAlpha = (baseWidthInCss - transitionMin) / (transitionMax - transitionMin); + const fgAlpha = (boxWidth - transitionMin) / (transitionMax - transitionMin); return [fgAlpha, 1 - fgAlpha]; } } @@ -539,7 +558,7 @@ export default class NightingaleDistributionTrack extends withCanvas( this.dispatchEvent(customEvent); } - private getPointedDatum(svgX: number, svgY: number): { position: number, datum: PreprocessedDatum | undefined } | undefined { + private getPointedDatum(svgX: number, _svgY: number): { position: number, datum: PreprocessedDatum | undefined } | undefined { const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); diff --git a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts index 46ae1bebe..978ad0851 100644 --- a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts +++ b/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts @@ -2,10 +2,6 @@ import { getQuantile } from "../src/nightingale-distribution-track"; describe("getQuantile", () => { - // test("foo", () => { - // expect(2 + 2).toEqual(4); - // }); - // Basic quantile calculations test("calculates median (0.5 quantile) of odd-length array", () => { expect(getQuantile([1, 2, 3, 4, 5], 0.5)).toEqual(3); From 2897b9faf7270daeb7cfbfa25c5394d5c9d8856a Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 12 Jun 2026 16:33:24 +0100 Subject: [PATCH 06/32] nightingale-distribution-track: experiment with quartile computation --- .../src/nightingale-distribution-track.ts | 231 ++++++++++++++++-- .../NightingaleDistributionTrack.stories.ts | 28 ++- 2 files changed, 224 insertions(+), 35 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index effa2dd91..4265cbd53 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -13,7 +13,7 @@ import NightingaleElement, { withResizable, withZoom, } from "@nightingale-elements/nightingale-new-core"; -import { BaseType, color, randomLcg, randomUniform, scaleLinear, select, Selection } from "d3"; +import { BaseType, color, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; @@ -127,7 +127,9 @@ export default class NightingaleDistributionTrack extends withCanvas( } set data(data: DistributionData | undefined) { this.#data = data; + console.time('preprocessData') this.preprocessedData = data ? preprocessData(data) : undefined; + console.timeEnd('preprocessData') this.createTrack(); } /** Return the range of Y values corresponding to bottom and top of the viewport (excluding margins) */ @@ -195,9 +197,11 @@ export default class NightingaleDistributionTrack extends withCanvas( if (!this._drawStamp.update().changed) return; this.adjustCanvasCtxLogicalSize(); if (!this.canvasCtx) return; + console.time('draw distr') this.clearCanvas(this.canvasCtx); this.drawData(this.canvasCtx); this.drawMargins(this.canvasCtx); + console.timeEnd('draw distr') } private getOffscreenCanvas(): [canvas: HTMLCanvasElement, canvasContext?: CanvasRenderingContext2D] { @@ -580,54 +584,123 @@ function preprocessData(data: DistributionData) { function preprocessDataset(dataset: DistributionDataset) { const out: { [position: number]: PreprocessedDatum } = {}; + + // const flat = dataset.positions.flatMap(pos => pos.values); + // console.time('flat sort') + // flat.sort((a, b) => a - b) + // console.timeEnd('flat sort') + // multisort(dataset.positions.map(pos => pos.values)) + for (const datum of dataset.positions) { out[datum.position] = preprocessDatum(datum); } return out; } +function multisort(arrays: number[][]) { + const n = arrays.reduce((count, array) => count + array.length, 0); + const indices = new Uint32Array(n); + const sources = new Uint32Array(n); + const values = new Float32Array(n); + let target = 0; + console.time('multisort fill') + for (let iArray = 0, nArrays = arrays.length; iArray < nArrays; iArray++) { + const array = arrays[iArray]; + for (let i = 0, m = array.length; i < m; i++) { + indices[target] = target; + sources[target] = iArray; + values[target] = array[i]; + target++; + } + } + console.timeEnd('multisort fill') + + console.time('multisort sort') + // values.sort(); + indices.sort((i, j) => sources[i] - sources[j] || values[i] - values[j]); + console.timeEnd('multisort sort') + + // const flat = dataset.positions.flatMap(pos => pos.values); + // TODO: continue here +} + interface PreprocessedDatum { position: number, - values: number[], + values: number[] | TypedArray, median: number, boxLow: number, boxHigh: number, whiskerLow: number, whiskerHigh: number, - outliersLow: number[], - outliersHigh: number[], + outliersLow: number[] | TypedArray, + outliersHigh: number[] | TypedArray, minimum: number, maximum: number, } function preprocessDatum(datum: Distribution): PreprocessedDatum { - const sorted = datum.values.slice().sort((a, b) => a - b); - const median = getQuantile(sorted, 0.5); - const q1 = getQuantile(sorted, 0.25); - const q3 = getQuantile(sorted, 0.75); + // const sorted = new Float32Array(datum.values).sort(); + const values = new Float32Array(datum.values); + + const [q1, med, q3] = sneakyQuartiles(values); + + // const medTrue = getQuantile(sorted, 0.5); + // const q1True = getQuantile(sorted, 0.25); + // const q3True = getQuantile(sorted, 0.75); + + // if (med !== medTrue) throw new Error('med !== medTrue') + // if (q1 !== q1True) throw new Error('q1 !== q1True') + // if (q3 !== q3True) throw new Error('q3 !== q3True') + const iqr = q3 - q1; - /** Index of the first value >= q1 - 1.5 * IQR (low whisker) */ - const iWhiskerLow = BinarySearch.firstGteqIndex(sorted, q1 - 1.5 * iqr, x => x) - const stop = BinarySearch.firstGteqIndex(sorted, q3 + 1.5 * iqr, x => x); - /** Index of the last value <= q3 + 1.5 * IQR (high whisker) */ - const iWhiskerHigh = (stop >= sorted.length || sorted[stop] > q3 + 1.5 * iqr) ? stop - 1 : stop; + // /** Index of the first value >= q1 - 1.5 * IQR (low whisker) */ + // const iWhiskerLow = BinarySearch.firstGteqIndex(sorted, q1 - 1.5 * iqr, x => x) + // const stop = BinarySearch.firstGteqIndex(sorted, q3 + 1.5 * iqr, x => x); + // /** Index of the last value <= q3 + 1.5 * IQR (high whisker) */ + // const iWhiskerHigh = (stop >= sorted.length || sorted[stop] > q3 + 1.5 * iqr) ? stop - 1 : stop; + const _whiskerLow = q1 - 1.5 * iqr; + const _whiskerHigh = q3 + 1.5 * iqr; + const iWhiskerLow = splitByPivot(values, 0, values.length, _whiskerLow, getAux(values.length)); + const iWhiskerHighExcl = splitByPivot(values, iWhiskerLow, values.length, _whiskerHigh, getAux(values.length)); // This is not exact if _whiskerHigh occurs in data + const whiskerLow = min(values, iWhiskerLow, iWhiskerHighExcl); + const whiskerHigh = max(values, iWhiskerLow, iWhiskerHighExcl); return { position: datum.position, - values: sorted, - median, + values: values, + median: med, boxLow: q1, boxHigh: q3, - whiskerLow: sorted[iWhiskerLow], - whiskerHigh: sorted[iWhiskerHigh], - outliersLow: sorted.slice(0, iWhiskerLow), - outliersHigh: sorted.slice(iWhiskerHigh + 1, undefined), - minimum: sorted[0], - maximum: sorted[sorted.length - 1], + // whiskerLow: sorted[iWhiskerLow], + // whiskerHigh: sorted[iWhiskerHigh], + whiskerLow, + whiskerHigh, + // outliersLow: sorted.slice(0, iWhiskerLow), + // outliersHigh: sorted.slice(iWhiskerHigh + 1, undefined), + outliersLow: values.slice(0, iWhiskerLow), + outliersHigh: values.slice(iWhiskerHighExcl, undefined), + // minimum: sorted[0], + // maximum: sorted[sorted.length - 1], + minimum: min(values), + maximum: max(values), }; } -export function getQuantile(sortedValues: number[], p: number) { +// TIMINGS (nDatasets=1, nRepeat=1000): +// preprocessData original: 2055 ms +// preprocessData original Float32Array: 560 ms +// preprocessData sneakyQuartiles: 526 ms + +// flat sort: 3150 ms +// flat sort Float32Array: 564 ms +// multisort sort: 2472 ms + +// preprocessData - only compute medians (sort): 2028 +// preprocessData - only compute medians (sort, Float32Array): 500 +// preprocessData - only compute medians (d3): 1409 +// preprocessData - only compute medians (d3, Float32Array): 1485 + +export function getQuantile(sortedValues: ArrayLike, p: number) { const i_ = (sortedValues.length - 1) * p; if (i_ >= sortedValues.length - 1) { return sortedValues[sortedValues.length - 1]; @@ -687,3 +760,117 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('fill')) ctx.fill(); if (style.includes('stroke')) ctx.stroke(); } + +export function max(array: ArrayLike, from = 0, to = array.length): number { + let out = array[from]; + for (let i = from; i < to; i++) { + const value = array[i]; + if (value > out) out = value; + } + return out; +} + +export function min(array: ArrayLike, from = 0, to = array.length): number { + let out = array[from]; + for (let i = from; i < to; i++) { + const value = array[i]; + if (value < out) out = value; + } + return out; +} + +export function sneakyQuartiles(values: Float32Array): [q1: number, median: number, q3: number] { + if (values.length < 4) { + values.sort(); + return [getQuantile(values, 0.25), getQuantile(values, 0.5), getQuantile(values, 0.75)]; + } + + const j1_ = (values.length - 1) * 0.25; + const j1 = Math.ceil(j1_); + const z1 = j1 - j1_; + + const j2_ = (values.length - 1) * 0.5; + const j2 = Math.ceil(j2_); + const z2 = j2 - j2_; + + const j3_ = (values.length - 1) * 0.75; + const j3 = Math.ceil(j3_); + const z3 = j3 - j3_; + + split(values, j2, 0, undefined); + split(values, j1, 0, j2); + split(values, j3, j2, undefined); + + const q1 = max(values, 0, j1) * z1 + min(values, j1, j2) * (1 - z1); + const q2 = max(values, j1, j2) * z2 + min(values, j2, j3) * (1 - z2); + const q3 = max(values, j2, j3) * z3 + min(values, j3, undefined) * (1 - z3); + return [q1, q2, q3]; +} + +function mid(a: number, b: number, c: number): number { + if (a < b) { + if (b < c) return b; + if (a < c) return c; + return a; + } else { + // a >= b + if (b > c) return b; + if (a > c) return c; + return a; + } +} + +let _aux: Float32Array | undefined; +function getAux(length: number): Float32Array { + if (_aux?.length !== length) { + _aux = new Float32Array(length); + } + return _aux; +} + +/** Rearrange values in `array[from:to]` so that `max(array[from:splitPosition]) <= min(array[splitPosition:to])`. */ +function split(array: Float32Array, splitPosition: number, from = 0, to = array.length) { + const aux = getAux(array.length); + // let pivLow = min(array, from, to); + // let pivHigh = max(array, from, to); + + while (true) { + let pivot = mid(array[0], array[splitPosition], array[array.length - 1]); + // let pivot = (pivLow * (to - splitPosition) + pivHigh * (splitPosition - from)) / (to - from); + let s = splitByPivot(array, from, to, pivot, aux); + if (s === from || s === to) { + const minimum = min(array, from, to); + const maximum = max(array, from, to); + if (minimum === maximum) return; + pivot = 0.5 * (minimum + maximum); + s = splitByPivot(array, from, to, pivot, aux); + } + if (s === splitPosition) { + return; + } else if (s < splitPosition) { + from = s; + // pivLow = pivot; + } else { + to = s; + // pivHigh = pivot; + } + } +} + +/** Rearrange values in `array[from:to]` so that all values =pivot. Return index of the first value >=pivot. */ +function splitByPivot(array: Float32Array, from: number, to: number, pivot: number, aux: Float32Array) { + let tgtLeft = from; + let tgtRight = to - 1; + for (let i = from; i < to; i++) { + const element = array[i]; + if (element < pivot) { + aux[tgtLeft++] = element; + } else { + aux[tgtRight--] = element; + } + } + for (let i = from; i < to; i++) { + array[i] = aux[i]; + } + return tgtLeft; +} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index c9ac9317c..ac1d74caf 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -27,11 +27,12 @@ const ArgumentTypes: Partial> = { }; -const nDataRepeat = 10; +const nDataRepeat = 100; const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA".repeat(nDataRepeat); function prepareDistributionData(data: DistributionData[number]): DistributionData { + console.time('prepareDistributionData') const positions = data.positions.slice(); const shift = data.positions.length; for (let i = 1; i < nDataRepeat; i++) { @@ -39,6 +40,7 @@ function prepareDistributionData(data: DistributionData[number]): DistributionDa positions.push({ position: pos.position + i * shift, values: pos.values }); } } + console.timeEnd('prepareDistributionData') return [ { @@ -47,12 +49,12 @@ function prepareDistributionData(data: DistributionData[number]): DistributionDa positions: positions, // positions: remove(positions, 3, 5, 6, 35), // DEBUG }, - { - name: 'Data2', - color: '#ff8800', - positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG - }, + // { + // name: 'Data2', + // color: '#ff8800', + // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + // // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG + // }, ]; } @@ -93,7 +95,7 @@ function nightingaleNavigation(args: Args & { length: number }) { highlight-color=${args["highlight-color"]} margin-color=${args["margin-color"]} show-highlight - display-end="10" + display-end="100" > `; @@ -188,13 +190,13 @@ function makeStory(options: { length: number }): Story { story.args = { ...DefaultArgs }; story.argTypes = ArgumentTypes; const distributionData = prepareDistributionData(sampleDistributionData as any); - const linegraphData = prepareLinegraphData(distributionData); + // const linegraphData = prepareLinegraphData(distributionData); story.play = async () => { - await customElements.whenDefined("nightingale-linegraph-track"); - for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { - (track as any).data = linegraphData; - } + // await customElements.whenDefined("nightingale-linegraph-track"); + // for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { + // (track as any).data = linegraphData; + // } await customElements.whenDefined("nightingale-distribution-track"); for (const track of document.getElementsByTagName("nightingale-distribution-track")) { (track as any).data = distributionData; From 015b2761faa38702234c9b84c339f866c89a1f5b Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 12 Jun 2026 17:03:59 +0100 Subject: [PATCH 07/32] nightingale-distribution-track: remove sneakyQuartile implementation (insignificant optimization) --- .../src/nightingale-distribution-track.ts | 182 ++---------------- 1 file changed, 17 insertions(+), 165 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 4265cbd53..be27253db 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -639,67 +639,33 @@ interface PreprocessedDatum { } function preprocessDatum(datum: Distribution): PreprocessedDatum { - // const sorted = new Float32Array(datum.values).sort(); - const values = new Float32Array(datum.values); - - const [q1, med, q3] = sneakyQuartiles(values); - - // const medTrue = getQuantile(sorted, 0.5); - // const q1True = getQuantile(sorted, 0.25); - // const q3True = getQuantile(sorted, 0.75); - - // if (med !== medTrue) throw new Error('med !== medTrue') - // if (q1 !== q1True) throw new Error('q1 !== q1True') - // if (q3 !== q3True) throw new Error('q3 !== q3True') + const sorted = new Float32Array(datum.values).sort(); + const median = getQuantile(sorted, 0.5); + const q1 = getQuantile(sorted, 0.25); + const q3 = getQuantile(sorted, 0.75); const iqr = q3 - q1; - // /** Index of the first value >= q1 - 1.5 * IQR (low whisker) */ - // const iWhiskerLow = BinarySearch.firstGteqIndex(sorted, q1 - 1.5 * iqr, x => x) - // const stop = BinarySearch.firstGteqIndex(sorted, q3 + 1.5 * iqr, x => x); - // /** Index of the last value <= q3 + 1.5 * IQR (high whisker) */ - // const iWhiskerHigh = (stop >= sorted.length || sorted[stop] > q3 + 1.5 * iqr) ? stop - 1 : stop; - const _whiskerLow = q1 - 1.5 * iqr; - const _whiskerHigh = q3 + 1.5 * iqr; - const iWhiskerLow = splitByPivot(values, 0, values.length, _whiskerLow, getAux(values.length)); - const iWhiskerHighExcl = splitByPivot(values, iWhiskerLow, values.length, _whiskerHigh, getAux(values.length)); // This is not exact if _whiskerHigh occurs in data - const whiskerLow = min(values, iWhiskerLow, iWhiskerHighExcl); - const whiskerHigh = max(values, iWhiskerLow, iWhiskerHighExcl); + /** Index of the first value >= q1 - 1.5 * IQR (low whisker) */ + const iWhiskerLow = BinarySearch.firstGteqIndex(sorted, q1 - 1.5 * iqr, x => x) + const stop = BinarySearch.firstGteqIndex(sorted, q3 + 1.5 * iqr, x => x); + /** Index of the last value <= q3 + 1.5 * IQR (high whisker) */ + const iWhiskerHigh = (stop >= sorted.length || sorted[stop] > q3 + 1.5 * iqr) ? stop - 1 : stop; return { position: datum.position, - values: values, - median: med, + values: sorted, + median: median, boxLow: q1, boxHigh: q3, - // whiskerLow: sorted[iWhiskerLow], - // whiskerHigh: sorted[iWhiskerHigh], - whiskerLow, - whiskerHigh, - // outliersLow: sorted.slice(0, iWhiskerLow), - // outliersHigh: sorted.slice(iWhiskerHigh + 1, undefined), - outliersLow: values.slice(0, iWhiskerLow), - outliersHigh: values.slice(iWhiskerHighExcl, undefined), - // minimum: sorted[0], - // maximum: sorted[sorted.length - 1], - minimum: min(values), - maximum: max(values), + whiskerLow: sorted[iWhiskerLow], + whiskerHigh: sorted[iWhiskerHigh], + outliersLow: sorted.slice(0, iWhiskerLow), + outliersHigh: sorted.slice(iWhiskerHigh + 1, undefined), + minimum: sorted[0], + maximum: sorted[sorted.length - 1], }; } -// TIMINGS (nDatasets=1, nRepeat=1000): -// preprocessData original: 2055 ms -// preprocessData original Float32Array: 560 ms -// preprocessData sneakyQuartiles: 526 ms - -// flat sort: 3150 ms -// flat sort Float32Array: 564 ms -// multisort sort: 2472 ms - -// preprocessData - only compute medians (sort): 2028 -// preprocessData - only compute medians (sort, Float32Array): 500 -// preprocessData - only compute medians (d3): 1409 -// preprocessData - only compute medians (d3, Float32Array): 1485 - export function getQuantile(sortedValues: ArrayLike, p: number) { const i_ = (sortedValues.length - 1) * p; if (i_ >= sortedValues.length - 1) { @@ -760,117 +726,3 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('fill')) ctx.fill(); if (style.includes('stroke')) ctx.stroke(); } - -export function max(array: ArrayLike, from = 0, to = array.length): number { - let out = array[from]; - for (let i = from; i < to; i++) { - const value = array[i]; - if (value > out) out = value; - } - return out; -} - -export function min(array: ArrayLike, from = 0, to = array.length): number { - let out = array[from]; - for (let i = from; i < to; i++) { - const value = array[i]; - if (value < out) out = value; - } - return out; -} - -export function sneakyQuartiles(values: Float32Array): [q1: number, median: number, q3: number] { - if (values.length < 4) { - values.sort(); - return [getQuantile(values, 0.25), getQuantile(values, 0.5), getQuantile(values, 0.75)]; - } - - const j1_ = (values.length - 1) * 0.25; - const j1 = Math.ceil(j1_); - const z1 = j1 - j1_; - - const j2_ = (values.length - 1) * 0.5; - const j2 = Math.ceil(j2_); - const z2 = j2 - j2_; - - const j3_ = (values.length - 1) * 0.75; - const j3 = Math.ceil(j3_); - const z3 = j3 - j3_; - - split(values, j2, 0, undefined); - split(values, j1, 0, j2); - split(values, j3, j2, undefined); - - const q1 = max(values, 0, j1) * z1 + min(values, j1, j2) * (1 - z1); - const q2 = max(values, j1, j2) * z2 + min(values, j2, j3) * (1 - z2); - const q3 = max(values, j2, j3) * z3 + min(values, j3, undefined) * (1 - z3); - return [q1, q2, q3]; -} - -function mid(a: number, b: number, c: number): number { - if (a < b) { - if (b < c) return b; - if (a < c) return c; - return a; - } else { - // a >= b - if (b > c) return b; - if (a > c) return c; - return a; - } -} - -let _aux: Float32Array | undefined; -function getAux(length: number): Float32Array { - if (_aux?.length !== length) { - _aux = new Float32Array(length); - } - return _aux; -} - -/** Rearrange values in `array[from:to]` so that `max(array[from:splitPosition]) <= min(array[splitPosition:to])`. */ -function split(array: Float32Array, splitPosition: number, from = 0, to = array.length) { - const aux = getAux(array.length); - // let pivLow = min(array, from, to); - // let pivHigh = max(array, from, to); - - while (true) { - let pivot = mid(array[0], array[splitPosition], array[array.length - 1]); - // let pivot = (pivLow * (to - splitPosition) + pivHigh * (splitPosition - from)) / (to - from); - let s = splitByPivot(array, from, to, pivot, aux); - if (s === from || s === to) { - const minimum = min(array, from, to); - const maximum = max(array, from, to); - if (minimum === maximum) return; - pivot = 0.5 * (minimum + maximum); - s = splitByPivot(array, from, to, pivot, aux); - } - if (s === splitPosition) { - return; - } else if (s < splitPosition) { - from = s; - // pivLow = pivot; - } else { - to = s; - // pivHigh = pivot; - } - } -} - -/** Rearrange values in `array[from:to]` so that all values =pivot. Return index of the first value >=pivot. */ -function splitByPivot(array: Float32Array, from: number, to: number, pivot: number, aux: Float32Array) { - let tgtLeft = from; - let tgtRight = to - 1; - for (let i = from; i < to; i++) { - const element = array[i]; - if (element < pivot) { - aux[tgtLeft++] = element; - } else { - aux[tgtRight--] = element; - } - } - for (let i = from; i < to; i++) { - array[i] = aux[i]; - } - return tgtLeft; -} From cce933cc9e08b8172116f382b78be752901b14cb Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 12 Jun 2026 17:22:54 +0100 Subject: [PATCH 08/32] nightingale-distribution-track: sortIfNeeded --- .../src/nightingale-distribution-track.ts | 54 +++++++------------ .../NightingaleDistributionTrack.stories.ts | 3 +- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index be27253db..4d2f82a9f 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -585,45 +585,12 @@ function preprocessData(data: DistributionData) { function preprocessDataset(dataset: DistributionDataset) { const out: { [position: number]: PreprocessedDatum } = {}; - // const flat = dataset.positions.flatMap(pos => pos.values); - // console.time('flat sort') - // flat.sort((a, b) => a - b) - // console.timeEnd('flat sort') - // multisort(dataset.positions.map(pos => pos.values)) - for (const datum of dataset.positions) { out[datum.position] = preprocessDatum(datum); } return out; } -function multisort(arrays: number[][]) { - const n = arrays.reduce((count, array) => count + array.length, 0); - const indices = new Uint32Array(n); - const sources = new Uint32Array(n); - const values = new Float32Array(n); - let target = 0; - console.time('multisort fill') - for (let iArray = 0, nArrays = arrays.length; iArray < nArrays; iArray++) { - const array = arrays[iArray]; - for (let i = 0, m = array.length; i < m; i++) { - indices[target] = target; - sources[target] = iArray; - values[target] = array[i]; - target++; - } - } - console.timeEnd('multisort fill') - - console.time('multisort sort') - // values.sort(); - indices.sort((i, j) => sources[i] - sources[j] || values[i] - values[j]); - console.timeEnd('multisort sort') - - // const flat = dataset.positions.flatMap(pos => pos.values); - // TODO: continue here -} - interface PreprocessedDatum { position: number, values: number[] | TypedArray, @@ -639,7 +606,7 @@ interface PreprocessedDatum { } function preprocessDatum(datum: Distribution): PreprocessedDatum { - const sorted = new Float32Array(datum.values).sort(); + const sorted = sortIfNeeded(new Float32Array(datum.values)); const median = getQuantile(sorted, 0.5); const q1 = getQuantile(sorted, 0.25); const q3 = getQuantile(sorted, 0.75); @@ -666,6 +633,25 @@ function preprocessDatum(datum: Distribution): PreprocessedDatum { }; } +/** Check whether `array` is sorted, sort if not. */ +function sortIfNeeded(array: T): T { + if (!arrayIsSorted(array)) { + array.sort(); + } + return array; +} + +/** Decide whether `array` is sorted. */ +function arrayIsSorted(array: TypedArray): boolean { + for (let i = 1, n = array.length; i < n; i++) { + if (array[i - 1] > array[i]) { + return false; + } + } + return true; +} + +/** Get p-quantile of the dataset. Input values must be sorted for this to work. */ export function getQuantile(sortedValues: ArrayLike, p: number) { const i_ = (sortedValues.length - 1) * p; if (i_ >= sortedValues.length - 1) { diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index ac1d74caf..0b3ead68f 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -33,7 +33,8 @@ const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDG function prepareDistributionData(data: DistributionData[number]): DistributionData { console.time('prepareDistributionData') - const positions = data.positions.slice(); + // const positions = data.positions.slice(); + const positions = data.positions.map(pos => ({ position: pos.position, values: pos.values.sort() })); const shift = data.positions.length; for (let i = 1; i < nDataRepeat; i++) { for (const pos of data.positions) { From 7418c353cd168818a0d68772c67b2bbf70d8378d Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Mon, 15 Jun 2026 13:55:15 +0100 Subject: [PATCH 09/32] nightingale-distribution-track: zoomed-out-range attribute --- .../src/nightingale-distribution-track.ts | 82 +++++++++++++++---- .../NightingaleDistributionTrack.stories.ts | 26 +++--- 2 files changed, 81 insertions(+), 27 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 4d2f82a9f..8997117a6 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -14,7 +14,7 @@ import NightingaleElement, { withZoom, } from "@nightingale-elements/nightingale-new-core"; import { BaseType, color, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; -import { html, PropertyValues } from "lit"; +import { html, PropertyDeclaration, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; @@ -22,7 +22,7 @@ const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", "font-family", "min-font-size", "fade-font-size", "max-font-size", - "y-min", "y-max", "hide-outliers", + "y-min", "y-max", "hide-outliers", "zoomed-out-range", ] satisfies (keyof NightingaleDistributionTrack)[]; const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleDistributionTrack)[]; @@ -66,11 +66,32 @@ export interface DistributionDataset { /** Type for `NightingaleDistributionTrack.data`` */ export type DistributionData = DistributionDataset[]; -const OptionalNumber = (str: string | null) => { +type AttributeConverter = NonNullable['converter']>; + +const OptionalNumberAttributeConverter: AttributeConverter = (str) => { if (str) return Number(str); return undefined; }; +function EnumAttributeConverter(allowedValues: readonly T[], defaultValue?: D): AttributeConverter { + const theDefault = defaultValue ?? allowedValues[0]; + + return (str) => { + if (!str) { + return theDefault; + } + if (allowedValues.includes(str as T)) { + return str as T; + } else { + console.warn(`Value '${str}' is not valid for attribute of type ${allowedValues.map(v => `'${v}'`).join(' | ')}. Falling back to default value ('${theDefault}').`); + return theDefault; + } + }; +} + +export const ZoomedOutRangeOptions = ['extremes', 'whiskers', 'box', 'none'] as const; +export type ZoomedOutRangeOption = typeof ZoomedOutRangeOptions[number]; + @customElementOnce("nightingale-distribution-track") export default class NightingaleDistributionTrack extends withCanvas( withManager( @@ -100,17 +121,21 @@ export default class NightingaleDistributionTrack extends withCanvas( "max-font-size": number = 24; /** Bottom limit for Y-axis (default: minimum computed from data) */ - @property({ converter: OptionalNumber }) + @property({ converter: OptionalNumberAttributeConverter }) "y-min"?: number; /** Top limit for Y-axis (default: maximum computed from data) */ - @property({ converter: OptionalNumber }) + @property({ converter: OptionalNumberAttributeConverter }) "y-max"?: number; /** Turns off rendering of outliers */ @property({ type: Boolean }) "hide-outliers"?: boolean; + /** What kind of data should be shown as shaded range in zoomed-out visualization */ + @property({ converter: EnumAttributeConverter(ZoomedOutRangeOptions, 'whiskers') }) + "zoomed-out-range": ZoomedOutRangeOption; // TODO: enum-type in other components? + #data?: DistributionData; private preprocessedData?: PreprocessedData; @@ -344,23 +369,43 @@ export default class NightingaleDistributionTrack extends withCanvas( const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; - // const yMin = (i: number) => yScale(dataset[i].minimum); - // const yMax = (i: number) => yScale(dataset[i].maximum); - const yWhiskerLow = (i: number) => yScale(dataset[i].whiskerLow); - const yWhiskerHigh = (i: number) => yScale(dataset[i].whiskerHigh); - // const yBoxLow = (i: number) => yScale(dataset[i].boxLow); - // const yBoxHigh = (i: number) => yScale(dataset[i].boxHigh); const yMedianLow = (i: number) => yScale(dataset[i].median + yMedianExtra); const yMedianHigh = (i: number) => yScale(dataset[i].median - yMedianExtra); + let yRangeLow: ((i: number) => number) | undefined; + let yRangeHigh: ((i: number) => number) | undefined; + switch (this['zoomed-out-range']) { + case 'extremes': + yRangeLow = (i: number) => yScale(dataset[i].minimum); + yRangeHigh = (i: number) => yScale(dataset[i].maximum); + break; + case 'whiskers': + yRangeLow = (i: number) => yScale(dataset[i].whiskerLow); + yRangeHigh = (i: number) => yScale(dataset[i].whiskerHigh); + break; + case 'box': + yRangeLow = (i: number) => yScale(dataset[i].boxLow); + yRangeHigh = (i: number) => yScale(dataset[i].boxHigh); + break; + case 'none': + yRangeLow = undefined; + yRangeHigh = undefined; + break; + } + const segments = getContiguousSegments(start, stop, i => i in dataset); - for (const segment of segments) { - ctx.globalAlpha = 0.25 * alpha; - ctx.fillStyle = fillColor; - // drawSilhouette(ctx, segment, xScale, yMin, yMax, [xColumnLeft, xColumnRight], 'fill'); - drawSilhouette(ctx, segment, xScale, yWhiskerLow, yWhiskerHigh, [xColumnLeft, xColumnRight], 'fill'); - // drawSilhouette(ctx, segment, xScale, yBoxLow, yBoxHigh, [xColumnLeft, xColumnRight], 'fill'); + // Shaded range + if (yRangeLow && yRangeHigh) { + for (const segment of segments) { + ctx.globalAlpha = 0.25 * alpha; + ctx.fillStyle = fillColor; + drawSilhouette(ctx, segment, xScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); + } + } + + // Median + for (const segment of segments) { ctx.globalAlpha = 0.5 * alpha; ctx.fillStyle = strokeColor; ctx.strokeStyle = strokeColor; @@ -712,3 +757,6 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('fill')) ctx.fill(); if (style.includes('stroke')) ctx.stroke(); } + +// TODO: implement data pooling/smoothing for too zoomed-out visualization (like heatmap) +// TODO: axis ticks diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 0b3ead68f..3593946f3 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -1,7 +1,7 @@ import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-distribution-track/src/index"; -import { type DistributionData } from "../../packages/nightingale-distribution-track/src/nightingale-distribution-track"; +import { type DistributionData, ZoomedOutRangeOptions } from "../../packages/nightingale-distribution-track/src/nightingale-distribution-track"; import sampleDistributionData from "../../packages/nightingale-distribution-track/tests/mockData/sample-1.json"; @@ -17,6 +17,7 @@ const DefaultArgs = { "y-min": 0 as number | undefined, "y-max": undefined as number | undefined, "hide-outliers": false, + "zoomed-out-range": 'whiskers', }; type Args = typeof DefaultArgs; @@ -24,10 +25,13 @@ const ArgumentTypes: Partial> = { "highlight-event": { control: "select", options: ["onmouseover", "onclick"] }, "y-min": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, "y-max": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, + "zoomed-out-range": { control: "select", options: ZoomedOutRangeOptions }, }; const nDataRepeat = 100; +// Around 100k datapoints (nDataRepeat=1000), canvas draw takes > 40ms +// Around 400k datapoints (nDataRepeat=4000), aliasing makes data invisible (causes artifacts even before) const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA".repeat(nDataRepeat); @@ -68,18 +72,19 @@ function remove(arr: T[], ...indices: number[]) { } function prepareLinegraphData(data: DistributionData) { + console.time('prepareLinegraphData') const values = data[0].positions.map(pos => ({ position: pos.position, value: pos.values.reduce((a, b) => a + b, 0) / pos.values.length })); - const bulgarianConstant = 10 / Math.max(...values.map(v => v.value)); - values.forEach(v => v.value *= bulgarianConstant); // I don't know how to set Y-range to linegraph track, this will do + const max = values.reduce((old, v) => v.value > old ? v.value : old, 0); const chart1 = { name: "chart1", color: "#707070", fill: "#808080", lineCurve: "curveStep", - range: [0, 10], + range: [0, max], values: values, }; + console.timeEnd('prepareLinegraphData') return [chart1]; } @@ -155,11 +160,12 @@ function nightingaleDistributionTrack(args: Args & { length: number, id: number highlight-color="${args["highlight-color"]}" margin-color=${args["margin-color"]} margin-top=10 - margin-bottom=20 + margin-bottom=10 use-ctrl-to-zoom y-min=${args["y-min"]} y-max=${args["y-max"]} ?hide-outliers=${args["hide-outliers"]} + zoomed-out-range=${args["zoomed-out-range"]} > `; @@ -191,13 +197,13 @@ function makeStory(options: { length: number }): Story { story.args = { ...DefaultArgs }; story.argTypes = ArgumentTypes; const distributionData = prepareDistributionData(sampleDistributionData as any); - // const linegraphData = prepareLinegraphData(distributionData); + const linegraphData = prepareLinegraphData(distributionData); story.play = async () => { - // await customElements.whenDefined("nightingale-linegraph-track"); - // for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { - // (track as any).data = linegraphData; - // } + await customElements.whenDefined("nightingale-linegraph-track"); + for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { + (track as any).data = linegraphData; + } await customElements.whenDefined("nightingale-distribution-track"); for (const track of document.getElementsByTagName("nightingale-distribution-track")) { (track as any).data = distributionData; From 37dcec8ec05541ea51827b85fd6520cbabb056d7 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 16 Jun 2026 17:12:46 +0100 Subject: [PATCH 10/32] nightingale-distribution-track: zoomed-out visualization downsampling --- .../src/downsampling.ts | 175 ++++++++++++++++++ .../src/nightingale-distribution-track.ts | 145 ++++++++++++++- .../NightingaleDistributionTrack.stories.ts | 17 +- 3 files changed, 326 insertions(+), 11 deletions(-) create mode 100644 packages/nightingale-distribution-track/src/downsampling.ts diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts new file mode 100644 index 000000000..3b2240b2e --- /dev/null +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -0,0 +1,175 @@ +type PoolingFunction = (...values: number[]) => number; + + +/** Helper object for downsampling 1D number arrays, with caching */ +export type Downsampler = { + /** Column count of the original data */ + nColumns: number, + /** Downsampled version of the original data (index {nColumn}x{nRows} holds the original data) */ + downsampled: { [resolution: number]: Float32Array }, + /** Function used to compute downsampled value from multiple source values */ + poolingFunction: PoolingFunction, +} + +export const Downsampler = { + /** Create a new downsampler for a 2D number array */ + fromNumbers(data: Float32Array, poolingFunction: PoolingFunction): Downsampler { + const result: Downsampler = { nColumns: data.length, downsampled: {}, poolingFunction }; + set(result, data.length, data); + return result; + }, + + /** Return the original (full-size) data */ + getOriginal(downsampler: Downsampler): Float32Array { + return get(downsampler, downsampler.nColumns)!; + }, + + /** Get data downsampled approximately to `minResolution`. + * The returned resolution will be at least `minResolution` but less then double that, in each dimension. + * The returned data will be equal to the original data if `minResolution` is big enough. */ + getDownsampled(downsampler: Downsampler, minResolution: number): Float32Array { + const targetResolution = downsamplingTarget(downsampler.nColumns, minResolution); + // console.log('minResolution', minResolution, 'downsamplingTarget', targetResolution) + return getOrCompute(downsampler, targetResolution); + }, +}; + + +/** Return `m`, a power of 2 or equal to `nDatapoints`, such that: + * `nPixels <= m < 2*nPixels` or `m === nDatapoints < nPixels` */ +function downsamplingTarget(nDatapoints: number, nPixels: number): number { + let result = 1; + while (result < nPixels && result < nDatapoints) { + result = Math.min(2 * result, nDatapoints); + } + return result; +} + +/** Get data downsampled to `resolution` (exactly) if already computed. Do not compute anything. */ +function get(downsampler: Downsampler, resolution: number): Float32Array | undefined { + return downsampler.downsampled[resolution]; +} + +/** Save data downsampled to `resolution`. */ +function set(downsampler: Downsampler, resolution: number, value: Float32Array): void { + downsampler.downsampled[resolution] = value; +} + +/** Get data downsampled to `resolution` (exactly), with caching. */ +function getOrCompute(downsampler: Downsampler, resolution: number): Float32Array { + const cached = get(downsampler, resolution); + if (cached) { + return cached; + } else { + const srcResolution = downsamplingSource(resolution, downsampler.nColumns); + if (!srcResolution || srcResolution > downsampler.nColumns) throw new Error('AssertionError'); + // console.log('getOrCompute', srcResolution, '->', resolution) + const srcData = getOrCompute(downsampler, srcResolution); + console.time(`downsampleNumbers ${srcData.length}->${resolution}`) + const result = downsampleNumbers(srcData, resolution, downsampler.poolingFunction); + console.timeEnd(`downsampleNumbers ${srcData.length}->${resolution}`) + set(downsampler, resolution, result); + return result; + } +} + +/** Return resolution from which `wanted` resolution should be obtained by downsampling. + * This will have either X length or Y length doubled relative to `wanted` (or same as in `original` if doubled would be more that original) + * and the other length kept the same. + * Return `undefined` if `wanted` is already equal to `original`. */ +function downsamplingSource(wanted: number, original: number): number | undefined { + if (wanted > original) { + throw new Error('ArgumentError: Cannot downsample to higher resolution than original'); + } + if (wanted === original) { + // We already have it + return undefined; + } + return Math.min(2 * wanted, original); +} + + +/** Downsample 2D array of numbers to a new size. */ +function downsampleNumbers(input: Float32Array, newSize: number, poolingFunction: PoolingFunction): Float32Array { + // console.log('downsampleNumbers', input.length, '->', newSize) + + if (input.length === 2 * newSize) { + return downsampleNumbers_halveX(input, poolingFunction); + } + return downsampleNumbers_general(input, newSize, poolingFunction); +} + +/** Downsample 2D array of numbers to a new size - implementation for general sizes. */ +function downsampleNumbers_general(input: Float32Array, newSize: number, poolingFunction: PoolingFunction): Float32Array { + const w0 = input.length; + const w1 = newSize; + const { from, to } = resamplingCoefficients(w0, w1); + const out = input.slice(0, w1).fill(NaN) as Float32Array; + const n = from.length; + for (let j = 0; j < n; j++) { // column index + const oldValue = out[to[j]]; + const inputValue = input[from[j]]; + if (isNaN(oldValue)) { + out[to[j]] = inputValue; + } else { + out[to[j]] = poolingFunction(oldValue, inputValue); + } + } + return out; +} + +/** Downsample 2D array of numbers to a new size - simplified implementation for special cases when newX===oldX/2, newY===oldY. */ +function downsampleNumbers_halveX(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { + const w0 = input.length; + const w1 = Math.floor(w0 / 2); + const out = input.slice(0, w1).fill(NaN) as Float32Array; + for (let j = 0; j < w1; j++) { // column index + const old1 = input[2 * j]; + const old2 = input[2 * j + 1]; + out[j] = poolingFunction(old1, old2); + } + return out; +} + +/** Calculate the weights of how much each pixel in the old image contributes to pixels in the new image, for 1D images + * (pixel `from[i]` contributes to pixel `to[i]` with weight `weight[i]`). + * Typically one old pixel will contribute to more new pixels and vice versa. + * Sum of weights contributed to each new pixel must be equal to 1. + * To use for 2D images, calculate row-wise and column-wise weights and multiply them. */ +function resamplingCoefficients(nOld: number, nNew: number): { from: number[], to: number[], weight: number[] } { + const scale = nNew / nOld; + let i = 0; // Current pixel in the old image + let j = 0; // Current pixel in the new image + let p = 0; // Current continuous position in the new image + const from = []; + const to = []; + const weight = []; + while (p < nNew) { + const nextINotch = scale * (i + 1); + const nextJNotch = j + 1; + if (nextINotch <= nextJNotch) { + from.push(i); + to.push(j); + weight.push(nextINotch - p); + p = nextINotch; + i += 1; + if (nextINotch === nextJNotch) { + j += 1; + } + } else { + from.push(i); + to.push(j); + weight.push(nextJNotch - p); + p = nextJNotch; + j += 1; + } + } + return { + /** Index of a pixel in the old image */ + from, + /** Index of a pixel in the new image */ + to, + /** How much the `from` pixel's value contributes to the `to` pixel */ + weight, + }; +} diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 8997117a6..3fc97d601 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -13,9 +13,10 @@ import NightingaleElement, { withResizable, withZoom, } from "@nightingale-elements/nightingale-new-core"; -import { BaseType, color, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; +import { BaseType, color, max, min, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; import { html, PropertyDeclaration, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; +import { Downsampler } from "./downsampling"; const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ @@ -30,6 +31,7 @@ const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof Nightin /** Line width for rectangle stroke */ const LINE_WIDTH = 1; /** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ +// const MAX_REL_LINE_WIDTH = 0.2; const MAX_REL_LINE_WIDTH = 0.2; /** Default fill color for boxes (stroke color will be derived from this) */ @@ -46,6 +48,10 @@ const JITTER_REL_WIDTH = 0.4; const OUTLIER_RADIUS = 2; /** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; +/** Approximate width of a column in screen pixels, when showing downsampled data in "background" visualization. + * (higher value means more responsive but lower-resolution visualization). */ +// const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 2; +const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 1; function makeStrokeColor(dataColor: string): string | undefined { return color(dataColor)?.darker(2).formatHex(); @@ -354,7 +360,7 @@ export default class NightingaleDistributionTrack extends withCanvas( } /** Draw simplified visualization ("background" / zoomed-out) */ - private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { + private drawSimplifiedVisualization_orig(ctx: CanvasRenderingContext2D, alpha: number) { if (!this.data || !this.preprocessedData) return; const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); @@ -369,8 +375,8 @@ export default class NightingaleDistributionTrack extends withCanvas( const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; - const yMedianLow = (i: number) => yScale(dataset[i].median + yMedianExtra); - const yMedianHigh = (i: number) => yScale(dataset[i].median - yMedianExtra); + const yMedianLow = (i: number) => yScale(dataset[i].median) + yMedianExtra; + const yMedianHigh = (i: number) => yScale(dataset[i].median) - yMedianExtra; let yRangeLow: ((i: number) => number) | undefined; let yRangeHigh: ((i: number) => number) | undefined; @@ -414,6 +420,91 @@ export default class NightingaleDistributionTrack extends withCanvas( } } + // TODO: continue here + // TODO: try to use downsampling + + /** Draw simplified visualization ("background" / zoomed-out) */ + private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { + if (!this.data || !this.preprocessedData) return; + + const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); + ctx.lineWidth = lineWidth; + + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + for (let iDataset = 0; iDataset < nDatasets; iDataset++) { + const dataset = this.preprocessedData.datasets[iDataset]; + if (!dataset) continue; + + const { offset, length, downsamplers } = getDownsamplerForDataset(dataset); // TODO: refactor this to compute only once + + const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; + const fillColor = dataColor; + const strokeColor = makeStrokeColor(dataColor)!; + + const resolution = (xScale(length) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; + + const medianLow = Downsampler.getDownsampled(downsamplers.medianLow, resolution); + const medianHigh = Downsampler.getDownsampled(downsamplers.medianHigh, resolution); + const downScale = length / medianLow.length; + + // console.log('resolution', resolution, 'downScale', downScale, `(${length} -> ${medLow.length})`) + + const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; + const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; + + let yRangeLow: ((j: number) => number) | undefined; + let yRangeHigh: ((j: number) => number) | undefined; + switch (this['zoomed-out-range']) { + case 'extremes': + const minimum = Downsampler.getDownsampled(downsamplers.minimum, resolution); + const maximum = Downsampler.getDownsampled(downsamplers.maximum, resolution); + yRangeLow = (j: number) => yScale(minimum[j]); + yRangeHigh = (j: number) => yScale(maximum[j]); + break; + case 'whiskers': + const whiskerLow = Downsampler.getDownsampled(downsamplers.whiskerLow, resolution); + const whiskerHigh = Downsampler.getDownsampled(downsamplers.whiskerHigh, resolution); + yRangeLow = (j: number) => yScale(whiskerLow[j]); + yRangeHigh = (j: number) => yScale(whiskerHigh[j]); + break; + case 'box': + const boxLow = Downsampler.getDownsampled(downsamplers.boxLow, resolution); + const boxHigh = Downsampler.getDownsampled(downsamplers.boxHigh, resolution); + yRangeLow = (j: number) => yScale(boxLow[j]); + yRangeHigh = (j: number) => yScale(boxHigh[j]); + break; + case 'none': + yRangeLow = undefined; + yRangeHigh = undefined; + break; + } + + // const segments = getContiguousSegments(start, stop, i => i in dataset); + const jStart = Math.max(0, Math.floor((start - offset) / downScale)); + const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / downScale)); + const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); + + const jXScale = (j: number) => xScale(offset + j * downScale); + + // Shaded range + if (yRangeLow && yRangeHigh) { + for (const segment of jSegments) { + ctx.globalAlpha = 0.25 * alpha; + ctx.fillStyle = fillColor; + drawSilhouette(ctx, segment, jXScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); + } + } + + // Median + for (const segment of jSegments) { + ctx.globalAlpha = 0.5 * alpha; + ctx.fillStyle = strokeColor; + ctx.strokeStyle = strokeColor; + drawSilhouette(ctx, segment, jXScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); + } + } + } + private drawMargins(ctx: CanvasRenderingContext2D) { const canvasWidth = ctx.canvas.width; const canvasHeight = ctx.canvas.height; @@ -758,5 +849,51 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('stroke')) ctx.stroke(); } +function datasetToArrays(dataset: PreprocessedData['datasets'][number]) { + const positions = Object.values(dataset).map(d => d.position); + const offset = min(positions) ?? 1; + const stop = (max(positions) ?? 0) + 1; + const length = stop - offset; + const median = new Float32Array(length).fill(NaN); + const boxLow = new Float32Array(length).fill(NaN); + const boxHigh = new Float32Array(length).fill(NaN); + const whiskerLow = new Float32Array(length).fill(NaN); + const whiskerHigh = new Float32Array(length).fill(NaN); + const minimum = new Float32Array(length).fill(NaN); + const maximum = new Float32Array(length).fill(NaN); + for (const pos of Object.values(dataset)) { + median[pos.position - offset] = pos.median; + boxLow[pos.position - offset] = pos.boxLow; + boxHigh[pos.position - offset] = pos.boxHigh; + whiskerLow[pos.position - offset] = pos.whiskerLow; + whiskerHigh[pos.position - offset] = pos.whiskerHigh; + minimum[pos.position - offset] = pos.minimum; + maximum[pos.position - offset] = pos.maximum; + } + return { + offset, + length, + arrays: { median, boxLow, boxHigh, whiskerLow, whiskerHigh, minimum, maximum }, + }; +} + +function getDownsamplerForDataset(dataset: PreprocessedData['datasets'][number]) { + const { offset, length, arrays } = datasetToArrays(dataset); + return { + offset, + length, + downsamplers: { + medianLow: Downsampler.fromNumbers(arrays.median, Math.min), + medianHigh: Downsampler.fromNumbers(arrays.median, Math.max), + boxLow: Downsampler.fromNumbers(arrays.boxLow, Math.min), + boxHigh: Downsampler.fromNumbers(arrays.boxHigh, Math.max), + whiskerLow: Downsampler.fromNumbers(arrays.whiskerLow, Math.min), + whiskerHigh: Downsampler.fromNumbers(arrays.whiskerHigh, Math.max), + minimum: Downsampler.fromNumbers(arrays.minimum, Math.min), + maximum: Downsampler.fromNumbers(arrays.maximum, Math.max), + }, + }; +} + // TODO: implement data pooling/smoothing for too zoomed-out visualization (like heatmap) // TODO: axis ticks diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 3593946f3..83fa8ca39 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -29,7 +29,10 @@ const ArgumentTypes: Partial> = { }; -const nDataRepeat = 100; +// const nDataRepeat = 20_000; +const nDataRepeat = 1_000; +// const nDataRepeat = 81; +// const nDataRepeat = 82; // Around 100k datapoints (nDataRepeat=1000), canvas draw takes > 40ms // Around 400k datapoints (nDataRepeat=4000), aliasing makes data invisible (causes artifacts even before) @@ -186,7 +189,7 @@ function makeStory(options: { length: number }): Story {
${nightingaleNavigation({ ...args, length: options.length })} ${nightingaleSequence({ ...args, length: options.length })} - ${nightingaleLinegraphTrack({ ...args, length: options.length, id: 0 })} + ${nightingaleDistributionTrack({ ...args, length: options.length, id: 0 })}
@@ -197,13 +200,13 @@ function makeStory(options: { length: number }): Story { story.args = { ...DefaultArgs }; story.argTypes = ArgumentTypes; const distributionData = prepareDistributionData(sampleDistributionData as any); - const linegraphData = prepareLinegraphData(distributionData); + // const linegraphData = prepareLinegraphData(distributionData); story.play = async () => { - await customElements.whenDefined("nightingale-linegraph-track"); - for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { - (track as any).data = linegraphData; - } + // await customElements.whenDefined("nightingale-linegraph-track"); + // for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { + // (track as any).data = linegraphData; + // } await customElements.whenDefined("nightingale-distribution-track"); for (const track of document.getElementsByTagName("nightingale-distribution-track")) { (track as any).data = distributionData; From 1148d7bcf127bfec43cb39b1fd65355dc21d6c6b Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 16 Jun 2026 17:47:26 +0100 Subject: [PATCH 11/32] nightingale-distribution-track: downsampling - only compute once --- .../src/nightingale-distribution-track.ts | 70 +++++++++++-------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 3fc97d601..342fc79a8 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -280,17 +280,17 @@ export default class NightingaleDistributionTrack extends withCanvas( /** Draw full boxplot visualization ("foreground" / zoomed-in) */ private drawBoxplotVisualization(ctx: CanvasRenderingContext2D) { - if (!this.data || !this.preprocessedData) return; + if (!this.preprocessedData) return; const { xColumnLeft, xColumnWidth, xScale, yScale, yMedianExtra, lineWidth, outlierRadius, start, stop } = this.getDrawingMeasurements(); ctx.lineWidth = lineWidth; - const nDatasets = this.preprocessedData?.datasets.length ?? 1; + const nDatasets = this.preprocessedData.datasets.length; for (let iDataset = 0; iDataset < nDatasets; iDataset++) { const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; - const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; + const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; @@ -302,7 +302,7 @@ export default class NightingaleDistributionTrack extends withCanvas( const xJitterHalfwidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; for (let i = start; i < stop; i++) { - const datum = dataset[i]; + const datum = dataset.positions[i]; if (!datum) continue; const x = xScale(i); @@ -366,32 +366,32 @@ export default class NightingaleDistributionTrack extends withCanvas( const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); ctx.lineWidth = lineWidth; - const nDatasets = this.preprocessedData?.datasets.length ?? 1; + const nDatasets = this.preprocessedData.datasets.length; for (let iDataset = 0; iDataset < nDatasets; iDataset++) { const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; - const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; + const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; - const yMedianLow = (i: number) => yScale(dataset[i].median) + yMedianExtra; - const yMedianHigh = (i: number) => yScale(dataset[i].median) - yMedianExtra; + const yMedianLow = (i: number) => yScale(dataset.positions[i].median) + yMedianExtra; + const yMedianHigh = (i: number) => yScale(dataset.positions[i].median) - yMedianExtra; let yRangeLow: ((i: number) => number) | undefined; let yRangeHigh: ((i: number) => number) | undefined; switch (this['zoomed-out-range']) { case 'extremes': - yRangeLow = (i: number) => yScale(dataset[i].minimum); - yRangeHigh = (i: number) => yScale(dataset[i].maximum); + yRangeLow = (i: number) => yScale(dataset.positions[i].minimum); + yRangeHigh = (i: number) => yScale(dataset.positions[i].maximum); break; case 'whiskers': - yRangeLow = (i: number) => yScale(dataset[i].whiskerLow); - yRangeHigh = (i: number) => yScale(dataset[i].whiskerHigh); + yRangeLow = (i: number) => yScale(dataset.positions[i].whiskerLow); + yRangeHigh = (i: number) => yScale(dataset.positions[i].whiskerHigh); break; case 'box': - yRangeLow = (i: number) => yScale(dataset[i].boxLow); - yRangeHigh = (i: number) => yScale(dataset[i].boxHigh); + yRangeLow = (i: number) => yScale(dataset.positions[i].boxLow); + yRangeHigh = (i: number) => yScale(dataset.positions[i].boxHigh); break; case 'none': yRangeLow = undefined; @@ -399,7 +399,7 @@ export default class NightingaleDistributionTrack extends withCanvas( break; } - const segments = getContiguousSegments(start, stop, i => i in dataset); + const segments = getContiguousSegments(start, stop, i => i in dataset.positions); // Shaded range if (yRangeLow && yRangeHigh) { @@ -421,7 +421,8 @@ export default class NightingaleDistributionTrack extends withCanvas( } // TODO: continue here - // TODO: try to use downsampling + // TODO: change downsampling to always halve (better performance and more consistent first transition) + // TODO: fade-out transition when downsampling? /** Draw simplified visualization ("background" / zoomed-out) */ private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { @@ -435,9 +436,9 @@ export default class NightingaleDistributionTrack extends withCanvas( const dataset = this.preprocessedData.datasets[iDataset]; if (!dataset) continue; - const { offset, length, downsamplers } = getDownsamplerForDataset(dataset); // TODO: refactor this to compute only once + const { offset, length, downsamplers } = dataset.downsampling; - const dataColor = this.data[iDataset].color ?? DEFAULT_DATA_COLOR; + const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; @@ -702,13 +703,14 @@ export default class NightingaleDistributionTrack extends withCanvas( const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); - const datum = this.preprocessedData?.datasets[0][position]; // TODO: consider multiple datasets + const datum = this.preprocessedData?.datasets[0].positions[position]; // TODO: consider multiple datasets return { position, datum }; } } type PreprocessedData = ReturnType; +type PreprocessedDataset = ReturnType; function preprocessData(data: DistributionData) { const preprocessedDatasets = data.map(preprocessDataset); @@ -719,12 +721,17 @@ function preprocessData(data: DistributionData) { } function preprocessDataset(dataset: DistributionDataset) { - const out: { [position: number]: PreprocessedDatum } = {}; + const preprocessedPositions: PreprocessedPositions = {}; for (const datum of dataset.positions) { - out[datum.position] = preprocessDatum(datum); + preprocessedPositions[datum.position] = preprocessDatum(datum); } - return out; + // return out; + return { + ...dataset, + positions: preprocessedPositions, + downsampling: getDownsamplerForDataset(preprocessedPositions), + }; } interface PreprocessedDatum { @@ -741,6 +748,8 @@ interface PreprocessedDatum { maximum: number, } +type PreprocessedPositions = { [position: number]: PreprocessedDatum } + function preprocessDatum(datum: Distribution): PreprocessedDatum { const sorted = sortIfNeeded(new Float32Array(datum.values)); const median = getQuantile(sorted, 0.5); @@ -799,13 +808,13 @@ export function getQuantile(sortedValues: ArrayLike, p: number) { } /** Gets the Y-axis limits for the given preprocessed data */ -function getExtremes(data: { [position: number]: PreprocessedDatum }[]) { +function getExtremes(data: PreprocessedDataset[]) { let min = Infinity; let max = -Infinity; for (const dataset of data) { - for (const position in dataset) { - const datum = dataset[position]; + for (const position in dataset.positions) { + const datum = dataset.positions[position]; if (datum.minimum < min) min = datum.minimum; if (datum.maximum > max) max = datum.maximum; } @@ -849,8 +858,8 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('stroke')) ctx.stroke(); } -function datasetToArrays(dataset: PreprocessedData['datasets'][number]) { - const positions = Object.values(dataset).map(d => d.position); +function datasetToArrays(data: PreprocessedPositions) { + const positions = Object.values(data).map(d => d.position); const offset = min(positions) ?? 1; const stop = (max(positions) ?? 0) + 1; const length = stop - offset; @@ -861,7 +870,7 @@ function datasetToArrays(dataset: PreprocessedData['datasets'][number]) { const whiskerHigh = new Float32Array(length).fill(NaN); const minimum = new Float32Array(length).fill(NaN); const maximum = new Float32Array(length).fill(NaN); - for (const pos of Object.values(dataset)) { + for (const pos of Object.values(data)) { median[pos.position - offset] = pos.median; boxLow[pos.position - offset] = pos.boxLow; boxHigh[pos.position - offset] = pos.boxHigh; @@ -877,8 +886,8 @@ function datasetToArrays(dataset: PreprocessedData['datasets'][number]) { }; } -function getDownsamplerForDataset(dataset: PreprocessedData['datasets'][number]) { - const { offset, length, arrays } = datasetToArrays(dataset); +function getDownsamplerForDataset(data: PreprocessedPositions) { + const { offset, length, arrays } = datasetToArrays(data); return { offset, length, @@ -895,5 +904,4 @@ function getDownsamplerForDataset(dataset: PreprocessedData['datasets'][number]) }; } -// TODO: implement data pooling/smoothing for too zoomed-out visualization (like heatmap) // TODO: axis ticks From dc9948aef90a11578a3be1f20dfcbc55601e2f1a Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 17 Jun 2026 14:38:43 +0100 Subject: [PATCH 12/32] nightingale-distribution-track: simplify downsampling (always halve) --- .../src/downsampling.ts | 178 +++++------------- .../src/nightingale-distribution-track.ts | 66 ------- 2 files changed, 42 insertions(+), 202 deletions(-) diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts index 3b2240b2e..e3bffe5e6 100644 --- a/packages/nightingale-distribution-track/src/downsampling.ts +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -4,9 +4,9 @@ type PoolingFunction = (...values: number[]) => number; /** Helper object for downsampling 1D number arrays, with caching */ export type Downsampler = { /** Column count of the original data */ - nColumns: number, - /** Downsampled version of the original data (index {nColumn}x{nRows} holds the original data) */ - downsampled: { [resolution: number]: Float32Array }, + originalLength: number, + /** Downsampled versions of the original data (index `1` holds the original data) */ + downsampled: { [scale: number]: Float32Array | undefined }, /** Function used to compute downsampled value from multiple source values */ poolingFunction: PoolingFunction, } @@ -14,162 +14,68 @@ export type Downsampler = { export const Downsampler = { /** Create a new downsampler for a 2D number array */ fromNumbers(data: Float32Array, poolingFunction: PoolingFunction): Downsampler { - const result: Downsampler = { nColumns: data.length, downsampled: {}, poolingFunction }; - set(result, data.length, data); - return result; + return { + originalLength: data.length, + poolingFunction, + downsampled: { 1: data }, + }; }, /** Return the original (full-size) data */ getOriginal(downsampler: Downsampler): Float32Array { - return get(downsampler, downsampler.nColumns)!; + return downsampler.downsampled[1]!; }, - /** Get data downsampled approximately to `minResolution`. - * The returned resolution will be at least `minResolution` but less then double that, in each dimension. - * The returned data will be equal to the original data if `minResolution` is big enough. */ - getDownsampled(downsampler: Downsampler, minResolution: number): Float32Array { - const targetResolution = downsamplingTarget(downsampler.nColumns, minResolution); - // console.log('minResolution', minResolution, 'downsamplingTarget', targetResolution) - return getOrCompute(downsampler, targetResolution); + /** Get data downsampled approximately to `minLength`. + * The returned data length will be at least `minLength` but less then double that. + * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ + getDownsampled(downsampler: Downsampler, minLength: number): Float32Array { + const targetScale = downsamplingTargetScale(downsampler.originalLength, minLength); + return getOrCompute(downsampler, targetScale); }, }; - -/** Return `m`, a power of 2 or equal to `nDatapoints`, such that: - * `nPixels <= m < 2*nPixels` or `m === nDatapoints < nPixels` */ -function downsamplingTarget(nDatapoints: number, nPixels: number): number { - let result = 1; - while (result < nPixels && result < nDatapoints) { - result = Math.min(2 * result, nDatapoints); - } - return result; -} - -/** Get data downsampled to `resolution` (exactly) if already computed. Do not compute anything. */ -function get(downsampler: Downsampler, resolution: number): Float32Array | undefined { - return downsampler.downsampled[resolution]; -} - -/** Save data downsampled to `resolution`. */ -function set(downsampler: Downsampler, resolution: number, value: Float32Array): void { - downsampler.downsampled[resolution] = value; +/** Return `scale`, a power of 2, such that: + * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ +function downsamplingTargetScale(nDatapoints: number, nPixels: number): number { + nDatapoints = Math.max(1, nDatapoints); + nPixels = Math.max(1, nPixels); + const log2scaleExact = Math.log2(nDatapoints / nPixels); + const log2scale = Math.max(0, Math.floor(log2scaleExact)); + return 2 ** log2scale; } -/** Get data downsampled to `resolution` (exactly), with caching. */ -function getOrCompute(downsampler: Downsampler, resolution: number): Float32Array { - const cached = get(downsampler, resolution); +/** Get data downsampled by `scale`, with caching. `scale` must be a power of 2. Resulting data length will be `Math.ceil(original.length / scale)` */ +function getOrCompute(downsampler: Downsampler, scale: number): Float32Array { + const cached = downsampler.downsampled[scale]; if (cached) { return cached; } else { - const srcResolution = downsamplingSource(resolution, downsampler.nColumns); - if (!srcResolution || srcResolution > downsampler.nColumns) throw new Error('AssertionError'); - // console.log('getOrCompute', srcResolution, '->', resolution) - const srcData = getOrCompute(downsampler, srcResolution); - console.time(`downsampleNumbers ${srcData.length}->${resolution}`) - const result = downsampleNumbers(srcData, resolution, downsampler.poolingFunction); - console.timeEnd(`downsampleNumbers ${srcData.length}->${resolution}`) - set(downsampler, resolution, result); + if (scale <= 1) throw new Error('AssertionError: getOrCompute'); + const srcData = getOrCompute(downsampler, scale / 2); + const result = downsampleNumbers_halve(srcData, downsampler.poolingFunction); + downsampler.downsampled[scale] = result; return result; } } -/** Return resolution from which `wanted` resolution should be obtained by downsampling. - * This will have either X length or Y length doubled relative to `wanted` (or same as in `original` if doubled would be more that original) - * and the other length kept the same. - * Return `undefined` if `wanted` is already equal to `original`. */ -function downsamplingSource(wanted: number, original: number): number | undefined { - if (wanted > original) { - throw new Error('ArgumentError: Cannot downsample to higher resolution than original'); - } - if (wanted === original) { - // We already have it - return undefined; - } - return Math.min(2 * wanted, original); -} - - -/** Downsample 2D array of numbers to a new size. */ -function downsampleNumbers(input: Float32Array, newSize: number, poolingFunction: PoolingFunction): Float32Array { - // console.log('downsampleNumbers', input.length, '->', newSize) - - if (input.length === 2 * newSize) { - return downsampleNumbers_halveX(input, poolingFunction); - } - return downsampleNumbers_general(input, newSize, poolingFunction); -} - -/** Downsample 2D array of numbers to a new size - implementation for general sizes. */ -function downsampleNumbers_general(input: Float32Array, newSize: number, poolingFunction: PoolingFunction): Float32Array { - const w0 = input.length; - const w1 = newSize; - const { from, to } = resamplingCoefficients(w0, w1); - const out = input.slice(0, w1).fill(NaN) as Float32Array; - const n = from.length; - for (let j = 0; j < n; j++) { // column index - const oldValue = out[to[j]]; - const inputValue = input[from[j]]; - if (isNaN(oldValue)) { - out[to[j]] = inputValue; - } else { - out[to[j]] = poolingFunction(oldValue, inputValue); - } - } - return out; -} - -/** Downsample 2D array of numbers to a new size - simplified implementation for special cases when newX===oldX/2, newY===oldY. */ -function downsampleNumbers_halveX(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { +/** Downsample array of numbers to a new size `ceil(input.length / 2)`. */ +function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { const w0 = input.length; - const w1 = Math.floor(w0 / 2); - const out = input.slice(0, w1).fill(NaN) as Float32Array; - for (let j = 0; j < w1; j++) { // column index + const w1Paired = Math.floor(w0 / 2); + const w1 = Math.ceil(w0 / 2); + const out = new Float32Array(w1).fill(NaN); + for (let j = 0; j < w1Paired; j++) { // column index const old1 = input[2 * j]; const old2 = input[2 * j + 1]; out[j] = poolingFunction(old1, old2); } + if (w0 % 2) { + // Odd length of input array -> just copy last element + out[w1 - 1] = input[w0 - 1]; + } return out; } -/** Calculate the weights of how much each pixel in the old image contributes to pixels in the new image, for 1D images - * (pixel `from[i]` contributes to pixel `to[i]` with weight `weight[i]`). - * Typically one old pixel will contribute to more new pixels and vice versa. - * Sum of weights contributed to each new pixel must be equal to 1. - * To use for 2D images, calculate row-wise and column-wise weights and multiply them. */ -function resamplingCoefficients(nOld: number, nNew: number): { from: number[], to: number[], weight: number[] } { - const scale = nNew / nOld; - let i = 0; // Current pixel in the old image - let j = 0; // Current pixel in the new image - let p = 0; // Current continuous position in the new image - const from = []; - const to = []; - const weight = []; - while (p < nNew) { - const nextINotch = scale * (i + 1); - const nextJNotch = j + 1; - if (nextINotch <= nextJNotch) { - from.push(i); - to.push(j); - weight.push(nextINotch - p); - p = nextINotch; - i += 1; - if (nextINotch === nextJNotch) { - j += 1; - } - } else { - from.push(i); - to.push(j); - weight.push(nextJNotch - p); - p = nextJNotch; - j += 1; - } - } - return { - /** Index of a pixel in the old image */ - from, - /** Index of a pixel in the new image */ - to, - /** How much the `from` pixel's value contributes to the `to` pixel */ - weight, - }; -} +// TODO: solve pooling NaNs +// TODO: convert to class diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 342fc79a8..cbf066b55 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -359,69 +359,6 @@ export default class NightingaleDistributionTrack extends withCanvas( } } - /** Draw simplified visualization ("background" / zoomed-out) */ - private drawSimplifiedVisualization_orig(ctx: CanvasRenderingContext2D, alpha: number) { - if (!this.data || !this.preprocessedData) return; - - const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); - ctx.lineWidth = lineWidth; - - const nDatasets = this.preprocessedData.datasets.length; - for (let iDataset = 0; iDataset < nDatasets; iDataset++) { - const dataset = this.preprocessedData.datasets[iDataset]; - if (!dataset) continue; - - const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; - const fillColor = dataColor; - const strokeColor = makeStrokeColor(dataColor)!; - - const yMedianLow = (i: number) => yScale(dataset.positions[i].median) + yMedianExtra; - const yMedianHigh = (i: number) => yScale(dataset.positions[i].median) - yMedianExtra; - - let yRangeLow: ((i: number) => number) | undefined; - let yRangeHigh: ((i: number) => number) | undefined; - switch (this['zoomed-out-range']) { - case 'extremes': - yRangeLow = (i: number) => yScale(dataset.positions[i].minimum); - yRangeHigh = (i: number) => yScale(dataset.positions[i].maximum); - break; - case 'whiskers': - yRangeLow = (i: number) => yScale(dataset.positions[i].whiskerLow); - yRangeHigh = (i: number) => yScale(dataset.positions[i].whiskerHigh); - break; - case 'box': - yRangeLow = (i: number) => yScale(dataset.positions[i].boxLow); - yRangeHigh = (i: number) => yScale(dataset.positions[i].boxHigh); - break; - case 'none': - yRangeLow = undefined; - yRangeHigh = undefined; - break; - } - - const segments = getContiguousSegments(start, stop, i => i in dataset.positions); - - // Shaded range - if (yRangeLow && yRangeHigh) { - for (const segment of segments) { - ctx.globalAlpha = 0.25 * alpha; - ctx.fillStyle = fillColor; - drawSilhouette(ctx, segment, xScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); - } - } - - // Median - for (const segment of segments) { - ctx.globalAlpha = 0.5 * alpha; - ctx.fillStyle = strokeColor; - ctx.strokeStyle = strokeColor; - drawSilhouette(ctx, segment, xScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); - } - } - } - - // TODO: continue here - // TODO: change downsampling to always halve (better performance and more consistent first transition) // TODO: fade-out transition when downsampling? /** Draw simplified visualization ("background" / zoomed-out) */ @@ -448,8 +385,6 @@ export default class NightingaleDistributionTrack extends withCanvas( const medianHigh = Downsampler.getDownsampled(downsamplers.medianHigh, resolution); const downScale = length / medianLow.length; - // console.log('resolution', resolution, 'downScale', downScale, `(${length} -> ${medLow.length})`) - const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; @@ -480,7 +415,6 @@ export default class NightingaleDistributionTrack extends withCanvas( break; } - // const segments = getContiguousSegments(start, stop, i => i in dataset); const jStart = Math.max(0, Math.floor((start - offset) / downScale)); const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / downScale)); const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); From 6dc5d3c2503be601c567802b11c43d5b58cdb340 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 17 Jun 2026 14:58:25 +0100 Subject: [PATCH 13/32] nightingale-distribution-track: refactor Downsampler to a class --- .../src/downsampling.ts | 70 ++++++++----------- .../src/nightingale-distribution-track.ts | 32 ++++----- 2 files changed, 46 insertions(+), 56 deletions(-) diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts index e3bffe5e6..88cbf852f 100644 --- a/packages/nightingale-distribution-track/src/downsampling.ts +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -2,37 +2,42 @@ type PoolingFunction = (...values: number[]) => number; /** Helper object for downsampling 1D number arrays, with caching */ -export type Downsampler = { - /** Column count of the original data */ - originalLength: number, - /** Downsampled versions of the original data (index `1` holds the original data) */ - downsampled: { [scale: number]: Float32Array | undefined }, - /** Function used to compute downsampled value from multiple source values */ - poolingFunction: PoolingFunction, -} +export class Downsampler { + /** Downsampled versions of the original data (index 1 holds the original data; indices 2, 4, 8 etc. hold increasingly downsampled data) */ + private readonly downsampled: { [scale: number]: Float32Array | undefined } = {}; -export const Downsampler = { - /** Create a new downsampler for a 2D number array */ - fromNumbers(data: Float32Array, poolingFunction: PoolingFunction): Downsampler { - return { - originalLength: data.length, - poolingFunction, - downsampled: { 1: data }, - }; - }, + /** Create a new downsampler for a 1D number array */ + constructor(data: Float32Array, private readonly poolingFunction: PoolingFunction) { + this.downsampled[1] = data; + } - /** Return the original (full-size) data */ - getOriginal(downsampler: Downsampler): Float32Array { - return downsampler.downsampled[1]!; - }, + /** Return the original full-size data */ + getOriginal(): Float32Array { + return this.downsampled[1]!; + } /** Get data downsampled approximately to `minLength`. * The returned data length will be at least `minLength` but less then double that. * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ - getDownsampled(downsampler: Downsampler, minLength: number): Float32Array { - const targetScale = downsamplingTargetScale(downsampler.originalLength, minLength); - return getOrCompute(downsampler, targetScale); - }, + getDownsampled(minLength: number): Float32Array { + const targetScale = downsamplingTargetScale(this.getOriginal().length, minLength); + return this.getOrCompute(targetScale); + } + + /** Get data downsampled by `scale`, with caching. `scale` must be a power of 2. Resulting data length will be `Math.ceil(original.length / scale)` */ + private getOrCompute(scale: number): Float32Array { + const cached = this.downsampled[scale]; + if (cached) { + return cached; + } else { + if (scale <= 1) throw new Error('AssertionError: Downsampler.getOrCompute'); + const srcData = this.getOrCompute(scale / 2); + const result = downsampleNumbers_halve(srcData, this.poolingFunction); + this.downsampled[scale] = result; + return result; + } + } + }; /** Return `scale`, a power of 2, such that: @@ -45,20 +50,6 @@ function downsamplingTargetScale(nDatapoints: number, nPixels: number): number { return 2 ** log2scale; } -/** Get data downsampled by `scale`, with caching. `scale` must be a power of 2. Resulting data length will be `Math.ceil(original.length / scale)` */ -function getOrCompute(downsampler: Downsampler, scale: number): Float32Array { - const cached = downsampler.downsampled[scale]; - if (cached) { - return cached; - } else { - if (scale <= 1) throw new Error('AssertionError: getOrCompute'); - const srcData = getOrCompute(downsampler, scale / 2); - const result = downsampleNumbers_halve(srcData, downsampler.poolingFunction); - downsampler.downsampled[scale] = result; - return result; - } -} - /** Downsample array of numbers to a new size `ceil(input.length / 2)`. */ function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { const w0 = input.length; @@ -78,4 +69,3 @@ function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFu } // TODO: solve pooling NaNs -// TODO: convert to class diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index cbf066b55..eca71a855 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -381,8 +381,8 @@ export default class NightingaleDistributionTrack extends withCanvas( const resolution = (xScale(length) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; - const medianLow = Downsampler.getDownsampled(downsamplers.medianLow, resolution); - const medianHigh = Downsampler.getDownsampled(downsamplers.medianHigh, resolution); + const medianLow = downsamplers.medianLow.getDownsampled(resolution); + const medianHigh = downsamplers.medianHigh.getDownsampled(resolution); const downScale = length / medianLow.length; const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; @@ -392,20 +392,20 @@ export default class NightingaleDistributionTrack extends withCanvas( let yRangeHigh: ((j: number) => number) | undefined; switch (this['zoomed-out-range']) { case 'extremes': - const minimum = Downsampler.getDownsampled(downsamplers.minimum, resolution); - const maximum = Downsampler.getDownsampled(downsamplers.maximum, resolution); + const minimum = downsamplers.minimum.getDownsampled(resolution); + const maximum = downsamplers.maximum.getDownsampled(resolution); yRangeLow = (j: number) => yScale(minimum[j]); yRangeHigh = (j: number) => yScale(maximum[j]); break; case 'whiskers': - const whiskerLow = Downsampler.getDownsampled(downsamplers.whiskerLow, resolution); - const whiskerHigh = Downsampler.getDownsampled(downsamplers.whiskerHigh, resolution); + const whiskerLow = downsamplers.whiskerLow.getDownsampled(resolution); + const whiskerHigh = downsamplers.whiskerHigh.getDownsampled(resolution); yRangeLow = (j: number) => yScale(whiskerLow[j]); yRangeHigh = (j: number) => yScale(whiskerHigh[j]); break; case 'box': - const boxLow = Downsampler.getDownsampled(downsamplers.boxLow, resolution); - const boxHigh = Downsampler.getDownsampled(downsamplers.boxHigh, resolution); + const boxLow = downsamplers.boxLow.getDownsampled(resolution); + const boxHigh = downsamplers.boxHigh.getDownsampled(resolution); yRangeLow = (j: number) => yScale(boxLow[j]); yRangeHigh = (j: number) => yScale(boxHigh[j]); break; @@ -826,14 +826,14 @@ function getDownsamplerForDataset(data: PreprocessedPositions) { offset, length, downsamplers: { - medianLow: Downsampler.fromNumbers(arrays.median, Math.min), - medianHigh: Downsampler.fromNumbers(arrays.median, Math.max), - boxLow: Downsampler.fromNumbers(arrays.boxLow, Math.min), - boxHigh: Downsampler.fromNumbers(arrays.boxHigh, Math.max), - whiskerLow: Downsampler.fromNumbers(arrays.whiskerLow, Math.min), - whiskerHigh: Downsampler.fromNumbers(arrays.whiskerHigh, Math.max), - minimum: Downsampler.fromNumbers(arrays.minimum, Math.min), - maximum: Downsampler.fromNumbers(arrays.maximum, Math.max), + medianLow: new Downsampler(arrays.median, Math.min), + medianHigh: new Downsampler(arrays.median, Math.max), + boxLow: new Downsampler(arrays.boxLow, Math.min), + boxHigh: new Downsampler(arrays.boxHigh, Math.max), + whiskerLow: new Downsampler(arrays.whiskerLow, Math.min), + whiskerHigh: new Downsampler(arrays.whiskerHigh, Math.max), + minimum: new Downsampler(arrays.minimum, Math.min), + maximum: new Downsampler(arrays.maximum, Math.max), }, }; } From fe32a01533096e3cbe421a38e1883f76f3f318e8 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 17 Jun 2026 15:27:57 +0100 Subject: [PATCH 14/32] nightingale-distribution-track: downsampling - handle gaps in data --- .../src/downsampling.ts | 27 ++++++++++++++----- .../src/nightingale-distribution-track.ts | 16 +++++------ .../NightingaleDistributionTrack.stories.ts | 11 +++++--- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts index 88cbf852f..dcbf4fd46 100644 --- a/packages/nightingale-distribution-track/src/downsampling.ts +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -1,4 +1,17 @@ -type PoolingFunction = (...values: number[]) => number; +type PoolingFunction = (a: number, b: number) => number; + +const PoolingFunctions = { + max(a: number, b: number): number { + if (isNaN(a) || a < b) return b; + else return a; + }, + min(a: number, b: number): number { + if (isNaN(a) || a > b) return b; + else return a; + }, +} satisfies Record; + +type PoolingMethod = keyof typeof PoolingFunctions; /** Helper object for downsampling 1D number arrays, with caching */ @@ -6,9 +19,13 @@ export class Downsampler { /** Downsampled versions of the original data (index 1 holds the original data; indices 2, 4, 8 etc. hold increasingly downsampled data) */ private readonly downsampled: { [scale: number]: Float32Array | undefined } = {}; + /** Function used to compute downsampled value from multiple source values */ + private readonly poolingFunction: PoolingFunction; + /** Create a new downsampler for a 1D number array */ - constructor(data: Float32Array, private readonly poolingFunction: PoolingFunction) { + constructor(data: Float32Array, readonly poolingMethod: PoolingMethod) { this.downsampled[1] = data; + this.poolingFunction = PoolingFunctions[poolingMethod]; } /** Return the original full-size data */ @@ -17,7 +34,7 @@ export class Downsampler { } /** Get data downsampled approximately to `minLength`. - * The returned data length will be at least `minLength` but less then double that. + * The returned data length will be at least `minLength` but less than `2*minLength`. * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ getDownsampled(minLength: number): Float32Array { const targetScale = downsamplingTargetScale(this.getOriginal().length, minLength); @@ -37,8 +54,8 @@ export class Downsampler { return result; } } +} -}; /** Return `scale`, a power of 2, such that: * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ @@ -67,5 +84,3 @@ function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFu } return out; } - -// TODO: solve pooling NaNs diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index eca71a855..4ac049870 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -826,14 +826,14 @@ function getDownsamplerForDataset(data: PreprocessedPositions) { offset, length, downsamplers: { - medianLow: new Downsampler(arrays.median, Math.min), - medianHigh: new Downsampler(arrays.median, Math.max), - boxLow: new Downsampler(arrays.boxLow, Math.min), - boxHigh: new Downsampler(arrays.boxHigh, Math.max), - whiskerLow: new Downsampler(arrays.whiskerLow, Math.min), - whiskerHigh: new Downsampler(arrays.whiskerHigh, Math.max), - minimum: new Downsampler(arrays.minimum, Math.min), - maximum: new Downsampler(arrays.maximum, Math.max), + medianLow: new Downsampler(arrays.median, 'min'), + medianHigh: new Downsampler(arrays.median, 'max'), + boxLow: new Downsampler(arrays.boxLow, 'min'), + boxHigh: new Downsampler(arrays.boxHigh, 'max'), + whiskerLow: new Downsampler(arrays.whiskerLow, 'min'), + whiskerHigh: new Downsampler(arrays.whiskerHigh, 'max'), + minimum: new Downsampler(arrays.minimum, 'min'), + maximum: new Downsampler(arrays.maximum, 'max'), }, }; } diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 83fa8ca39..545eb4592 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -55,13 +55,18 @@ function prepareDistributionData(data: DistributionData[number]): DistributionDa name: 'Data1', color: '#0088ff', positions: positions, - // positions: remove(positions, 3, 5, 6, 35), // DEBUG + // positions: remove(positions, 3, 4, 5, 6, 35), // DEBUG + // positions: remove(positions, 3, 4, 5, 6, + // ...new Array(50).fill(0).map((_, i) => 35 + i), + // ...new Array(500).fill(0).map((_, i) => 500 + i), + // ...new Array(5000).fill(0).map((_, i) => 5000 + i), + // ), // DEBUG }, // { // name: 'Data2', // color: '#ff8800', - // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - // // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG + // // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG // }, ]; } From 4c6cd4ffe4f0d25b194244d0c97806df222e87a1 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Thu, 18 Jun 2026 13:58:38 +0100 Subject: [PATCH 15/32] nightingale-distribution-track: use alpha to hide downsampling transitions --- .../src/downsampling.ts | 62 +++++++++--- .../src/nightingale-distribution-track.ts | 98 ++++++++++++++++++- 2 files changed, 148 insertions(+), 12 deletions(-) diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts index dcbf4fd46..c114d7a49 100644 --- a/packages/nightingale-distribution-track/src/downsampling.ts +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -1,10 +1,12 @@ type PoolingFunction = (a: number, b: number) => number; const PoolingFunctions = { + /** Like `Math.max` but handles `NaN` (`max(1, 2) -> 2`, `max(1, NaN) -> 1`, `max(NaN, 2) -> 2`, `max(NaN, NaN) -> NaN`) */ max(a: number, b: number): number { if (isNaN(a) || a < b) return b; else return a; }, + /** Like `Math.min` but handles `NaN` (`min(1, 2) -> 1`, `min(1, NaN) -> 1`, `min(NaN, 2) -> 2`, `min(NaN, NaN) -> NaN`) */ min(a: number, b: number): number { if (isNaN(a) || a > b) return b; else return a; @@ -37,12 +39,20 @@ export class Downsampler { * The returned data length will be at least `minLength` but less than `2*minLength`. * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ getDownsampled(minLength: number): Float32Array { - const targetScale = downsamplingTargetScale(this.getOriginal().length, minLength); + const targetScale = this.downsamplingTargetScale(minLength); return this.getOrCompute(targetScale); } + /** Get data downsampled approximately to `minLength`. + * The returned data length will be at least `minLength` but less than `2*minLength`. + * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ + getDownsampledSoft(minLength: number) { + const targetScales = this.downsamplingTargetScaleSoft(minLength); + return targetScales.map(targetScale => ({ weight: targetScale.weight, data: this.getOrCompute(targetScale.scale) })); + } + /** Get data downsampled by `scale`, with caching. `scale` must be a power of 2. Resulting data length will be `Math.ceil(original.length / scale)` */ - private getOrCompute(scale: number): Float32Array { + getOrCompute(scale: number): Float32Array { const cached = this.downsampled[scale]; if (cached) { return cached; @@ -54,19 +64,49 @@ export class Downsampler { return result; } } -} + /** Return `scale`, a power of 2, such that: + * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ + downsamplingTargetScale(nPixels: number): number { + const nDatapoints = Math.max(1, this.getOriginal().length); + nPixels = Math.max(1, nPixels); + const log2scaleExact = Math.log2(nDatapoints / nPixels); + const log2scale = Math.max(0, Math.floor(log2scaleExact)); + return 2 ** log2scale; + } -/** Return `scale`, a power of 2, such that: - * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ -function downsamplingTargetScale(nDatapoints: number, nPixels: number): number { - nDatapoints = Math.max(1, nDatapoints); - nPixels = Math.max(1, nPixels); - const log2scaleExact = Math.log2(nDatapoints / nPixels); - const log2scale = Math.max(0, Math.floor(log2scaleExact)); - return 2 ** log2scale; + /** Return `scale`, a power of 2, such that: + * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ + downsamplingTargetScaleSoft(nPixels: number) { + const nDatapoints = Math.max(1, this.getOriginal().length); + nPixels = Math.max(1, nPixels); + const log2scale = Math.max(0, Math.log2(nDatapoints / nPixels)); + const log2scaleFloor = Math.floor(log2scale); + const wNext = log2scale - log2scaleFloor; + if (wNext === 0) { + return [ + { scale: 2 ** log2scaleFloor, weight: 1 }, + ]; + } else { + return [ + { scale: 2 ** (log2scaleFloor + 1), weight: wNext }, + { scale: 2 ** log2scaleFloor, weight: 1 - wNext }, + ]; + } + } } + +// /** Return `scale`, a power of 2, such that: +// * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ +// function downsamplingTargetScale(nDatapoints: number, nPixels: number): number { +// nDatapoints = Math.max(1, nDatapoints); +// nPixels = Math.max(1, nPixels); +// const log2scaleExact = Math.log2(nDatapoints / nPixels); +// const log2scale = Math.max(0, Math.floor(log2scaleExact)); +// return 2 ** log2scale; +// } + /** Downsample array of numbers to a new size `ceil(input.length / 2)`. */ function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { const w0 = input.length; diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 4ac049870..497f32fd0 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -362,7 +362,7 @@ export default class NightingaleDistributionTrack extends withCanvas( // TODO: fade-out transition when downsampling? /** Draw simplified visualization ("background" / zoomed-out) */ - private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { + private drawSimplifiedVisualization1(ctx: CanvasRenderingContext2D, alpha: number) { if (!this.data || !this.preprocessedData) return; const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); @@ -440,6 +440,89 @@ export default class NightingaleDistributionTrack extends withCanvas( } } + /** Draw simplified visualization ("background" / zoomed-out) */ + private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { + if (!this.data || !this.preprocessedData) return; + + const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); + ctx.lineWidth = lineWidth; + + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + for (let iDataset = 0; iDataset < nDatasets; iDataset++) { + const dataset = this.preprocessedData.datasets[iDataset]; + if (!dataset) continue; + + const { offset, length, downsamplers } = dataset.downsampling; + + const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; + const fillColor = dataColor; + const strokeColor = makeStrokeColor(dataColor)!; + + const resolution = (xScale(length) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; + const downSamplingScales = downsamplers.medianLow.downsamplingTargetScaleSoft(resolution); + + for (const { scale, weight } of downSamplingScales) { + ctx.lineWidth = (scale === 1) ? 1 : lineWidth; + const medianLow = downsamplers.medianLow.getOrCompute(scale); + const medianHigh = downsamplers.medianHigh.getOrCompute(scale); + const downScale = length / medianLow.length; + + const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; + const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; + + let yRangeLow: ((j: number) => number) | undefined; + let yRangeHigh: ((j: number) => number) | undefined; + switch (this['zoomed-out-range']) { + case 'extremes': + const minimum = downsamplers.minimum.getOrCompute(scale); + const maximum = downsamplers.maximum.getOrCompute(scale); + yRangeLow = (j: number) => yScale(minimum[j]); + yRangeHigh = (j: number) => yScale(maximum[j]); + break; + case 'whiskers': + const whiskerLow = downsamplers.whiskerLow.getOrCompute(scale); + const whiskerHigh = downsamplers.whiskerHigh.getOrCompute(scale); + yRangeLow = (j: number) => yScale(whiskerLow[j]); + yRangeHigh = (j: number) => yScale(whiskerHigh[j]); + break; + case 'box': + const boxLow = downsamplers.boxLow.getOrCompute(scale); + const boxHigh = downsamplers.boxHigh.getOrCompute(scale); + yRangeLow = (j: number) => yScale(boxLow[j]); + yRangeHigh = (j: number) => yScale(boxHigh[j]); + break; + case 'none': + yRangeLow = undefined; + yRangeHigh = undefined; + break; + } + + const jStart = Math.max(0, Math.floor((start - offset) / downScale)); + const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / downScale)); + const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); + + const jXScale = (j: number) => xScale(offset + j * downScale); + + // Shaded range + if (yRangeLow && yRangeHigh) { + for (const segment of jSegments) { + ctx.globalAlpha = weightAlpha(0.25 * alpha, weight); + ctx.fillStyle = fillColor; + drawSilhouette(ctx, segment, jXScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); + } + } + + // Median + for (const segment of jSegments) { + ctx.globalAlpha = weightAlpha(0.5 * alpha, weight); + ctx.fillStyle = strokeColor; + ctx.strokeStyle = strokeColor; + drawSilhouette(ctx, segment, jXScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); + } + } + } + } + private drawMargins(ctx: CanvasRenderingContext2D) { const canvasWidth = ctx.canvas.width; const canvasHeight = ctx.canvas.height; @@ -838,4 +921,17 @@ function getDownsamplerForDataset(data: PreprocessedPositions) { }; } +function weightAlpha(alpha: number, weight: number) { + if (alpha === 1) { + // Avoid ill-defined expressions (division by zero) + return (weight > 0) ? 1 : 0; + } + const transpTotal = 1 - alpha; + const transpW = 1 - alpha * weight; + const transpWComplement = 1 - alpha * (1 - weight); + const correctionFactor = Math.sqrt(transpTotal / (transpW * transpWComplement)); + const transpWCorrected = transpW * correctionFactor; + return 1 - transpWCorrected; +} + // TODO: axis ticks From b8ec8a8212ee7b7b47bcd7cf36e9034c9170ca4c Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Thu, 18 Jun 2026 15:37:22 +0100 Subject: [PATCH 16/32] nightingale-distribution-track: use alpha to hide downsampling transitions - refactor --- .../src/downsampling.ts | 80 +++++------- .../src/nightingale-distribution-track.ts | 116 +++--------------- 2 files changed, 51 insertions(+), 145 deletions(-) diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-distribution-track/src/downsampling.ts index c114d7a49..5598b3a60 100644 --- a/packages/nightingale-distribution-track/src/downsampling.ts +++ b/packages/nightingale-distribution-track/src/downsampling.ts @@ -25,7 +25,7 @@ export class Downsampler { private readonly poolingFunction: PoolingFunction; /** Create a new downsampler for a 1D number array */ - constructor(data: Float32Array, readonly poolingMethod: PoolingMethod) { + constructor(data: Float32Array, public readonly poolingMethod: PoolingMethod) { this.downsampled[1] = data; this.poolingFunction = PoolingFunctions[poolingMethod]; } @@ -35,58 +35,55 @@ export class Downsampler { return this.downsampled[1]!; } - /** Get data downsampled approximately to `minLength`. - * The returned data length will be at least `minLength` but less than `2*minLength`. - * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ - getDownsampled(minLength: number): Float32Array { - const targetScale = this.downsamplingTargetScale(minLength); - return this.getOrCompute(targetScale); + /** Get data downsampled so that `downsampledColumnWidth ~ originalColumnWidth * originalData.length / downsampledData.length ~ 1`. + * Return original data if `originalColumnWidth > 1`. */ + getDownsampledForColumnWidth(originalColumnWidth: number): Float32Array { + const targetScale = Downsampler.targetDownsamplingScale(originalColumnWidth); + return this.getDownsampledByScale(targetScale); } - /** Get data downsampled approximately to `minLength`. - * The returned data length will be at least `minLength` but less than `2*minLength`. - * Exception: The returned data will be equal to the original data if `minLength > originalData.length`. */ - getDownsampledSoft(minLength: number) { - const targetScales = this.downsamplingTargetScaleSoft(minLength); - return targetScales.map(targetScale => ({ weight: targetScale.weight, data: this.getOrCompute(targetScale.scale) })); - } - - /** Get data downsampled by `scale`, with caching. `scale` must be a power of 2. Resulting data length will be `Math.ceil(original.length / scale)` */ - getOrCompute(scale: number): Float32Array { + /** Get data downsampled by `scale`, with caching. `scale` must be a power of 2, greater or equal to 1 (i.e. 1, 2, 4, 8, 16...). + * Length of the resulting data will be `Math.ceil(originalData.length / scale)` */ + getDownsampledByScale(scale: number): Float32Array { + if (scale < 1) throw new Error(`Downsampler.getDownsampledByScale: invalid scale ${scale}, scale must be a power of 2, greater or equal to 1`); + if (Math.log2(scale) % 1) throw new Error(`Downsampler.getDownsampledByScale: invalid scale ${scale}, scale must be a power of 2, greater or equal to 1`); const cached = this.downsampled[scale]; if (cached) { return cached; } else { - if (scale <= 1) throw new Error('AssertionError: Downsampler.getOrCompute'); - const srcData = this.getOrCompute(scale / 2); + const srcData = this.getDownsampledByScale(scale / 2); const result = downsampleNumbers_halve(srcData, this.poolingFunction); this.downsampled[scale] = result; return result; } } - /** Return `scale`, a power of 2, such that: - * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ - downsamplingTargetScale(nPixels: number): number { - const nDatapoints = Math.max(1, this.getOriginal().length); - nPixels = Math.max(1, nPixels); - const log2scaleExact = Math.log2(nDatapoints / nPixels); - const log2scale = Math.max(0, Math.floor(log2scaleExact)); - return 2 ** log2scale; + /** Return `scale`, a power of 2, such that + * `0.5 < originalColumnWidth*scale <= 1` (or `scale === 1` if `originalColumnWidth > 1`) */ + static targetDownsamplingScale(originalColumnWidth: number): number { + if (originalColumnWidth > 1) { + return 1; + } + const log2scale = -Math.log2(originalColumnWidth); + const log2scaleFloor = Math.floor(log2scale); + return 2 ** log2scaleFloor; } - /** Return `scale`, a power of 2, such that: - * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ - downsamplingTargetScaleSoft(nPixels: number) { - const nDatapoints = Math.max(1, this.getOriginal().length); - nPixels = Math.max(1, nPixels); - const log2scale = Math.max(0, Math.log2(nDatapoints / nPixels)); + /** Return one or two scales, each being a power of 2, such that: + * - in case of two scales: `1 < originalColumnWidth*scale1 < 2` and `0.5 < originalColumnWidth*scale2 < 1`, `scale1 = 2 * scale2` + * - in case of one scale: `originalColumnWidth*scale === 1` (or `scale === 1` if `originalColumnWidth > 1`) + * + * Weights of the scales sum up to 1 (the closer `originalColumnWidth*scale` is to 1, the higher its weight). + */ + static targetDownsamplingScalesForTransition(originalColumnWidth: number) { + if (originalColumnWidth > 1) { + return [{ scale: 1, weight: 1 }]; + } + const log2scale = -Math.log2(originalColumnWidth); const log2scaleFloor = Math.floor(log2scale); const wNext = log2scale - log2scaleFloor; if (wNext === 0) { - return [ - { scale: 2 ** log2scaleFloor, weight: 1 }, - ]; + return [{ scale: 2 ** log2scaleFloor, weight: 1 }]; } else { return [ { scale: 2 ** (log2scaleFloor + 1), weight: wNext }, @@ -96,17 +93,6 @@ export class Downsampler { } } - -// /** Return `scale`, a power of 2, such that: -// * `nPixels <= nDatapoints/scale < 2*nPixels` or `scale === 1 && nDatapoints < 2*nPixels` */ -// function downsamplingTargetScale(nDatapoints: number, nPixels: number): number { -// nDatapoints = Math.max(1, nDatapoints); -// nPixels = Math.max(1, nPixels); -// const log2scaleExact = Math.log2(nDatapoints / nPixels); -// const log2scale = Math.max(0, Math.floor(log2scaleExact)); -// return 2 ** log2scale; -// } - /** Downsample array of numbers to a new size `ceil(input.length / 2)`. */ function downsampleNumbers_halve(input: Float32Array, poolingFunction: PoolingFunction): Float32Array { const w0 = input.length; diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 497f32fd0..68c5cdbfb 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -50,7 +50,7 @@ const OUTLIER_RADIUS = 2; const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; /** Approximate width of a column in screen pixels, when showing downsampled data in "background" visualization. * (higher value means more responsive but lower-resolution visualization). */ -// const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 2; +// const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 4; const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 1; function makeStrokeColor(dataColor: string): string | undefined { @@ -359,87 +359,6 @@ export default class NightingaleDistributionTrack extends withCanvas( } } - // TODO: fade-out transition when downsampling? - - /** Draw simplified visualization ("background" / zoomed-out) */ - private drawSimplifiedVisualization1(ctx: CanvasRenderingContext2D, alpha: number) { - if (!this.data || !this.preprocessedData) return; - - const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); - ctx.lineWidth = lineWidth; - - const nDatasets = this.preprocessedData?.datasets.length ?? 1; - for (let iDataset = 0; iDataset < nDatasets; iDataset++) { - const dataset = this.preprocessedData.datasets[iDataset]; - if (!dataset) continue; - - const { offset, length, downsamplers } = dataset.downsampling; - - const dataColor = dataset.color ?? DEFAULT_DATA_COLOR; - const fillColor = dataColor; - const strokeColor = makeStrokeColor(dataColor)!; - - const resolution = (xScale(length) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; - - const medianLow = downsamplers.medianLow.getDownsampled(resolution); - const medianHigh = downsamplers.medianHigh.getDownsampled(resolution); - const downScale = length / medianLow.length; - - const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; - const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; - - let yRangeLow: ((j: number) => number) | undefined; - let yRangeHigh: ((j: number) => number) | undefined; - switch (this['zoomed-out-range']) { - case 'extremes': - const minimum = downsamplers.minimum.getDownsampled(resolution); - const maximum = downsamplers.maximum.getDownsampled(resolution); - yRangeLow = (j: number) => yScale(minimum[j]); - yRangeHigh = (j: number) => yScale(maximum[j]); - break; - case 'whiskers': - const whiskerLow = downsamplers.whiskerLow.getDownsampled(resolution); - const whiskerHigh = downsamplers.whiskerHigh.getDownsampled(resolution); - yRangeLow = (j: number) => yScale(whiskerLow[j]); - yRangeHigh = (j: number) => yScale(whiskerHigh[j]); - break; - case 'box': - const boxLow = downsamplers.boxLow.getDownsampled(resolution); - const boxHigh = downsamplers.boxHigh.getDownsampled(resolution); - yRangeLow = (j: number) => yScale(boxLow[j]); - yRangeHigh = (j: number) => yScale(boxHigh[j]); - break; - case 'none': - yRangeLow = undefined; - yRangeHigh = undefined; - break; - } - - const jStart = Math.max(0, Math.floor((start - offset) / downScale)); - const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / downScale)); - const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); - - const jXScale = (j: number) => xScale(offset + j * downScale); - - // Shaded range - if (yRangeLow && yRangeHigh) { - for (const segment of jSegments) { - ctx.globalAlpha = 0.25 * alpha; - ctx.fillStyle = fillColor; - drawSilhouette(ctx, segment, jXScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); - } - } - - // Median - for (const segment of jSegments) { - ctx.globalAlpha = 0.5 * alpha; - ctx.fillStyle = strokeColor; - ctx.strokeStyle = strokeColor; - drawSilhouette(ctx, segment, jXScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); - } - } - } - /** Draw simplified visualization ("background" / zoomed-out) */ private drawSimplifiedVisualization(ctx: CanvasRenderingContext2D, alpha: number) { if (!this.data || !this.preprocessedData) return; @@ -447,6 +366,9 @@ export default class NightingaleDistributionTrack extends withCanvas( const { xColumnLeft, xColumnRight, xScale, yScale, yMedianExtra, lineWidth, start, stop } = this.getDrawingMeasurements(); ctx.lineWidth = lineWidth; + const originalColumnWidth = (xScale(1) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; + const downsamplingLevels = Downsampler.targetDownsamplingScalesForTransition(originalColumnWidth); + const nDatasets = this.preprocessedData?.datasets.length ?? 1; for (let iDataset = 0; iDataset < nDatasets; iDataset++) { const dataset = this.preprocessedData.datasets[iDataset]; @@ -458,14 +380,12 @@ export default class NightingaleDistributionTrack extends withCanvas( const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; - const resolution = (xScale(length) - xScale(0)) / BG_DOWNSAMPLING_PIXELS_PER_COLUMN; - const downSamplingScales = downsamplers.medianLow.downsamplingTargetScaleSoft(resolution); - - for (const { scale, weight } of downSamplingScales) { + // Overlay two downsampling levels (e.g. 8x and 4x) to hide the transition between levels and create illusion of smooth zooming + for (const { scale, weight } of downsamplingLevels) { ctx.lineWidth = (scale === 1) ? 1 : lineWidth; - const medianLow = downsamplers.medianLow.getOrCompute(scale); - const medianHigh = downsamplers.medianHigh.getOrCompute(scale); - const downScale = length / medianLow.length; + const medianLow = downsamplers.medianLow.getDownsampledByScale(scale); + const medianHigh = downsamplers.medianHigh.getDownsampledByScale(scale); + const exactScale = length / medianLow.length; // This might be slightly different from `scale` which is always a power of two. const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; @@ -474,20 +394,20 @@ export default class NightingaleDistributionTrack extends withCanvas( let yRangeHigh: ((j: number) => number) | undefined; switch (this['zoomed-out-range']) { case 'extremes': - const minimum = downsamplers.minimum.getOrCompute(scale); - const maximum = downsamplers.maximum.getOrCompute(scale); + const minimum = downsamplers.minimum.getDownsampledByScale(scale); + const maximum = downsamplers.maximum.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(minimum[j]); yRangeHigh = (j: number) => yScale(maximum[j]); break; case 'whiskers': - const whiskerLow = downsamplers.whiskerLow.getOrCompute(scale); - const whiskerHigh = downsamplers.whiskerHigh.getOrCompute(scale); + const whiskerLow = downsamplers.whiskerLow.getDownsampledByScale(scale); + const whiskerHigh = downsamplers.whiskerHigh.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(whiskerLow[j]); yRangeHigh = (j: number) => yScale(whiskerHigh[j]); break; case 'box': - const boxLow = downsamplers.boxLow.getOrCompute(scale); - const boxHigh = downsamplers.boxHigh.getOrCompute(scale); + const boxLow = downsamplers.boxLow.getDownsampledByScale(scale); + const boxHigh = downsamplers.boxHigh.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(boxLow[j]); yRangeHigh = (j: number) => yScale(boxHigh[j]); break; @@ -497,11 +417,11 @@ export default class NightingaleDistributionTrack extends withCanvas( break; } - const jStart = Math.max(0, Math.floor((start - offset) / downScale)); - const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / downScale)); + const jStart = Math.max(0, Math.floor((start - offset) / exactScale)); + const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / exactScale)); const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); - const jXScale = (j: number) => xScale(offset + j * downScale); + const jXScale = (j: number) => xScale(offset + j * exactScale); // Shaded range if (yRangeLow && yRangeHigh) { From 11ecb209d90edca3a18d8a5cae8cd5400043c7c2 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Mon, 22 Jun 2026 13:47:16 +0100 Subject: [PATCH 17/32] nightingale-distribution-track: elaborate events, nested highlights --- .../src/nightingale-distribution-track.ts | 111 ++++++++++++++++-- .../src/utils/bindEvents.ts | 33 +++++- .../NightingaleDistributionTrack.stories.ts | 24 ++-- 3 files changed, 143 insertions(+), 25 deletions(-) diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts index 68c5cdbfb..8a4b73d1c 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts @@ -14,7 +14,7 @@ import NightingaleElement, { withZoom, } from "@nightingale-elements/nightingale-new-core"; import { BaseType, color, max, min, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; -import { html, PropertyDeclaration, PropertyValues } from "lit"; +import { ComplexAttributeConverter, html, PropertyDeclaration, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; @@ -47,7 +47,7 @@ const JITTER_REL_WIDTH = 0.4; /** Radius for the circles representing outliers */ const OUTLIER_RADIUS = 2; /** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ -const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5]; +const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5] as const; /** Approximate width of a column in screen pixels, when showing downsampled data in "background" visualization. * (higher value means more responsive but lower-resolution visualization). */ // const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 4; @@ -98,6 +98,8 @@ function EnumAttributeConverter(allowedValues: re export const ZoomedOutRangeOptions = ['extremes', 'whiskers', 'box', 'none'] as const; export type ZoomedOutRangeOption = typeof ZoomedOutRangeOptions[number]; + +// TODO: rename to nightingale-boxplot-track @customElementOnce("nightingale-distribution-track") export default class NightingaleDistributionTrack extends withCanvas( withManager( @@ -142,10 +144,18 @@ export default class NightingaleDistributionTrack extends withCanvas( @property({ converter: EnumAttributeConverter(ZoomedOutRangeOptions, 'whiskers') }) "zoomed-out-range": ZoomedOutRangeOption; // TODO: enum-type in other components? + /** Turn on showing secondary highlights, which indicate selected subcolumn within a column (in case of multiple dataset). */ + @property({ type: Boolean }) + "show-nested-highlights"?: boolean; + + /** Position of secondary highlight in from "position/iDataset", or "" if none. */ + @property({ type: String, reflect: true }) + private "nested-highlight": string = ""; #data?: DistributionData; private preprocessedData?: PreprocessedData; protected highlighted?: Selection; + protected nestedHighlighted?: Selection; override connectedCallback() { @@ -193,12 +203,14 @@ export default class NightingaleDistributionTrack extends withCanvas( if (this.svg) { // this check is necessary because `svg` setter does not always set this.bindEvents(this.svg); this.highlighted = this.svg.append("g").attr("class", "highlighted"); + this.nestedHighlighted = this.svg.append("g").attr("class", "highlighted-datapoint"); } } refresh() { this.requestDraw(); this.updateHighlight(); + this.updateNestedHighlight(); } private readonly _drawStamp = new Stamp(() => { @@ -541,6 +553,35 @@ export default class NightingaleDistributionTrack extends withCanvas( highlights.exit().remove(); } + protected updateNestedHighlight() { + if (!this.nestedHighlighted) return; + const nestedHighlightLocation = NestedHighlight.parse(this["nested-highlight"]); + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + const showNestedHighlight = this["show-nested-highlights"] && nDatasets > 1 && nestedHighlightLocation !== undefined; + + const highlights = this.nestedHighlighted + .selectAll("rect") + .data(showNestedHighlight ? [nestedHighlightLocation] : []); + + const baseWidth = this.getSingleBaseWidth(); + const columnOffset = baseWidth * 0.5 * COLUMN_GAP; + const columnWidth = baseWidth * (1 - COLUMN_GAP); + const datumWidth = columnWidth / nDatasets; + + highlights + .enter() + .append("rect") + .style("pointer-events", "none") + .merge(highlights) + .attr("fill", this["highlight-color"]) + .attr("opacity", this.getFgBgOpacity()[0]) + .attr("height", this.height) + .attr("x", ([position, iDataset]) => this.getXFromSeqPosition(position) + columnOffset + iDataset * datumWidth) + .attr("width", datumWidth); + + highlights.exit().remove(); + } + override zoomRefreshed() { super.zoomRefreshed(); if (this.getWidthWithMargins() > 0) this.refresh(); @@ -585,10 +626,22 @@ export default class NightingaleDistributionTrack extends withCanvas( if (pointed === undefined) { return; } + const feature: Parameters[1] = pointed.datum ? + { + type: 'distribution', + position: pointed.position, + dataset: { name: pointed.dataset.name, color: pointed.dataset.color ?? DEFAULT_DATA_COLOR }, + datum: pointed.datum, + } + : undefined; const withHighlight = this.getAttribute("highlight-event") === "onclick"; + if (withHighlight) { + this["nested-highlight"] = NestedHighlight.format(pointed.iDataset !== undefined ? [pointed.position, pointed.iDataset] : undefined); + } + const customEvent = createEvent( "click", - null, // TODO: pass (pointed.datum ?? null), + feature, withHighlight, true, pointed.position, @@ -605,10 +658,22 @@ export default class NightingaleDistributionTrack extends withCanvas( if (pointed === undefined) { return; } + const feature: Parameters[1] = pointed.datum ? + { + type: 'distribution', + position: pointed.position, + dataset: { name: pointed.dataset.name, color: pointed.dataset.color ?? DEFAULT_DATA_COLOR }, + datum: pointed.datum, + } + : undefined;// TODO: factor out; + const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; + if (withHighlight) { + this["nested-highlight"] = NestedHighlight.format(pointed.iDataset !== undefined ? [pointed.position, pointed.iDataset] : undefined); + } const customEvent = createEvent( "mouseover", - null, // TODO: pass (pointed.datum ?? null), + feature, withHighlight, false, pointed.position, @@ -622,6 +687,9 @@ export default class NightingaleDistributionTrack extends withCanvas( private handleMouseout(event: MouseEvent): void { const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; + if (withHighlight) { + this["nested-highlight"] = NestedHighlight.format(undefined); + } const customEvent = createEvent( "mouseout", null, @@ -636,12 +704,20 @@ export default class NightingaleDistributionTrack extends withCanvas( this.dispatchEvent(customEvent); } - private getPointedDatum(svgX: number, _svgY: number): { position: number, datum: PreprocessedDatum | undefined } | undefined { + private getPointedDatum(svgX: number, _svgY: number): { position: number, iDataset: number, dataset: PreprocessedDataset, datum: PreprocessedDatum } | { position: number, iDataset: undefined, dataset: undefined, datum: undefined } | undefined { const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); - const datum = this.preprocessedData?.datasets[0].positions[position]; // TODO: consider multiple datasets - return { position, datum }; + const fractional = continuousPosition - position; + const fractionalWithinColumn = (fractional - 0.5 * COLUMN_GAP) / (1 - COLUMN_GAP); + const nDatasets = this.preprocessedData?.datasets.length ?? 1; + const iDataset = Math.max(0, Math.min(nDatasets - 1, Math.floor(fractionalWithinColumn * nDatasets))); + const dataset = this.preprocessedData?.datasets[iDataset]; + const datum = dataset?.positions[position]; + if (!datum) { + return { position, iDataset: undefined, dataset: undefined, datum: undefined }; + } + return { position, iDataset, dataset, datum }; } } @@ -663,7 +739,6 @@ function preprocessDataset(dataset: DistributionDataset) { for (const datum of dataset.positions) { preprocessedPositions[datum.position] = preprocessDatum(datum); } - // return out; return { ...dataset, positions: preprocessedPositions, @@ -673,16 +748,16 @@ function preprocessDataset(dataset: DistributionDataset) { interface PreprocessedDatum { position: number, - values: number[] | TypedArray, + values: Float32Array, median: number, boxLow: number, boxHigh: number, whiskerLow: number, whiskerHigh: number, - outliersLow: number[] | TypedArray, - outliersHigh: number[] | TypedArray, minimum: number, maximum: number, + outliersLow: Float32Array, + outliersHigh: Float32Array, } type PreprocessedPositions = { [position: number]: PreprocessedDatum } @@ -854,4 +929,18 @@ function weightAlpha(alpha: number, weight: number) { return 1 - transpWCorrected; } +type NestedHighlight = [position: number, iDataset: number] | undefined; +const NestedHighlight = { + format(value: NestedHighlight): string { + if (!value) return ''; + return `${value[0]}${this.SEPARATOR}${value[1]}`; + }, + parse(str: string): NestedHighlight { + if (str.trim() === '') return undefined; + const [a, b] = str.split(this.SEPARATOR).map(Number); + return [a, b]; + }, + SEPARATOR: '/', +}; + // TODO: axis ticks diff --git a/packages/nightingale-new-core/src/utils/bindEvents.ts b/packages/nightingale-new-core/src/utils/bindEvents.ts index 1be62db30..ea11475b4 100644 --- a/packages/nightingale-new-core/src/utils/bindEvents.ts +++ b/packages/nightingale-new-core/src/utils/bindEvents.ts @@ -1,6 +1,6 @@ -import NightingaleBaseElement from "../nightingale-base-element"; +import { BaseType, Selection } from "d3"; import { WithHighlightInterface } from "../mixins/withHighlight"; -import { Selection, BaseType } from "d3"; +import NightingaleBaseElement from "../nightingale-base-element"; export const HIGHLIGHT_EVENT = "highlight-event"; @@ -20,11 +20,32 @@ type SequenceBaseData = { position: number; aa: string; }; +type DistributionData = { + type: 'distribution'; + position: number; + dataset: { + name: string; + color: string; + }; + datum: { + position: number; + values: Float32Array; + median: number; + boxLow: number; + boxHigh: number; + whiskerLow: number; + whiskerHigh: number; + minimum: number; + maximum: number; + outliersLow: Float32Array; + outliersHigh: Float32Array; + }; +}; -type detailInterface = { +type EventDetail = { eventType: EventType; coords: null | [number, number]; - feature?: FeatureData | SequenceBaseData | null; + feature?: FeatureData | SequenceBaseData | DistributionData | null; target?: HTMLElement; highlight?: string; selectedId?: string | null; @@ -33,7 +54,7 @@ type detailInterface = { export function createEvent( type: EventType, - feature: FeatureData | SequenceBaseData | null = null, + feature: FeatureData | SequenceBaseData | DistributionData | null = null, withHighlight = false, withId = false, start?: number, @@ -48,7 +69,7 @@ export function createEvent( feature = (feature as FeatureData)?.feature || feature; } - const detail: detailInterface = { + const detail: EventDetail = { eventType: type, feature, target, diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts index 545eb4592..7448918cc 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts @@ -17,6 +17,7 @@ const DefaultArgs = { "y-min": 0 as number | undefined, "y-max": undefined as number | undefined, "hide-outliers": false, + "show-nested-highlights": true, "zoomed-out-range": 'whiskers', }; type Args = typeof DefaultArgs; @@ -30,9 +31,9 @@ const ArgumentTypes: Partial> = { // const nDataRepeat = 20_000; -const nDataRepeat = 1_000; +// const nDataRepeat = 1_000; // const nDataRepeat = 81; -// const nDataRepeat = 82; +const nDataRepeat = 82; // Around 100k datapoints (nDataRepeat=1000), canvas draw takes > 40ms // Around 400k datapoints (nDataRepeat=4000), aliasing makes data invisible (causes artifacts even before) @@ -62,12 +63,18 @@ function prepareDistributionData(data: DistributionData[number]): DistributionDa // ...new Array(5000).fill(0).map((_, i) => 5000 + i), // ), // DEBUG }, - // { - // name: 'Data2', - // color: '#ff8800', - // // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG - // }, + { + name: 'Data2', + color: '#ff8800', + // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG + }, + { + name: 'Data3', + color: '#00aa44', + // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.93) })), 1, 7), // DEBUG + }, ]; } @@ -173,6 +180,7 @@ function nightingaleDistributionTrack(args: Args & { length: number, id: number y-min=${args["y-min"]} y-max=${args["y-max"]} ?hide-outliers=${args["hide-outliers"]} + ?show-nested-highlights=${args["show-nested-highlights"]} zoomed-out-range=${args["zoomed-out-range"]} > From 3535944c8fb09520e664cb6c41118fc0dfeee048 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Mon, 22 Jun 2026 17:02:07 +0100 Subject: [PATCH 18/32] nightingale-distribution-track: rename to nightingale-boxplot-track --- packages/nightingale-boxplot-track/README.md | 7 ++ .../package.json | 4 +- .../src/downsampling.ts | 0 .../nightingale-boxplot-track/src/index.ts | 3 + .../src/nightingale-boxplot-track.ts} | 100 +++++++++--------- .../tests/mockData/sample-1.json | 0 .../nightingale-distribution-track.test.ts | 2 +- .../tsconfig.json | 0 .../nightingale-distribution-track/README.md | 7 -- .../src/index.ts | 3 - .../src/utils/bindEvents.ts | 9 +- .../NightingaleBoxplotTrack.stories.mdx} | 4 +- .../NightingaleBoxplotTrack.stories.ts} | 77 +++----------- 13 files changed, 87 insertions(+), 129 deletions(-) create mode 100644 packages/nightingale-boxplot-track/README.md rename packages/{nightingale-distribution-track => nightingale-boxplot-track}/package.json (90%) rename packages/{nightingale-distribution-track => nightingale-boxplot-track}/src/downsampling.ts (100%) create mode 100644 packages/nightingale-boxplot-track/src/index.ts rename packages/{nightingale-distribution-track/src/nightingale-distribution-track.ts => nightingale-boxplot-track/src/nightingale-boxplot-track.ts} (92%) rename packages/{nightingale-distribution-track => nightingale-boxplot-track}/tests/mockData/sample-1.json (100%) rename packages/{nightingale-distribution-track => nightingale-boxplot-track}/tests/nightingale-distribution-track.test.ts (97%) rename packages/{nightingale-distribution-track => nightingale-boxplot-track}/tsconfig.json (100%) delete mode 100644 packages/nightingale-distribution-track/README.md delete mode 100644 packages/nightingale-distribution-track/src/index.ts rename stories/{22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx => 22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.mdx} (90%) rename stories/{22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts => 22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts} (66%) diff --git a/packages/nightingale-boxplot-track/README.md b/packages/nightingale-boxplot-track/README.md new file mode 100644 index 000000000..219fbac5a --- /dev/null +++ b/packages/nightingale-boxplot-track/README.md @@ -0,0 +1,7 @@ +# nightingale-boxplot-track + +[![Published on NPM](https://img.shields.io/npm/v/@nightingale-elements/nightingale-boxplot-track.svg)](https://www.npmjs.com/package/@nightingale-elements/nightingale-boxplot-track) + +The `nightingale-boxplot-track` component ... + +TODO: diff --git a/packages/nightingale-distribution-track/package.json b/packages/nightingale-boxplot-track/package.json similarity index 90% rename from packages/nightingale-distribution-track/package.json rename to packages/nightingale-boxplot-track/package.json index 05686d6e1..6f4f444dc 100644 --- a/packages/nightingale-distribution-track/package.json +++ b/packages/nightingale-boxplot-track/package.json @@ -1,7 +1,7 @@ { - "name": "@nightingale-elements/nightingale-distribution-track", + "name": "@nightingale-elements/nightingale-boxplot-track", "version": "5.6.0", - "description": "Track for showing distribution of a variable on each residue position.", + "description": "Track for showing distribution of a variable on each residue position via boxplots.", "files": [ "dist", "src" diff --git a/packages/nightingale-distribution-track/src/downsampling.ts b/packages/nightingale-boxplot-track/src/downsampling.ts similarity index 100% rename from packages/nightingale-distribution-track/src/downsampling.ts rename to packages/nightingale-boxplot-track/src/downsampling.ts diff --git a/packages/nightingale-boxplot-track/src/index.ts b/packages/nightingale-boxplot-track/src/index.ts new file mode 100644 index 000000000..3020179c1 --- /dev/null +++ b/packages/nightingale-boxplot-track/src/index.ts @@ -0,0 +1,3 @@ +import NightingaleBoxplotTrack, { } from "./nightingale-boxplot-track"; + +export { NightingaleBoxplotTrack as default }; diff --git a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts similarity index 92% rename from packages/nightingale-distribution-track/src/nightingale-distribution-track.ts rename to packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 8a4b73d1c..9f1d152c9 100644 --- a/packages/nightingale-distribution-track/src/nightingale-distribution-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -24,8 +24,8 @@ const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", "font-family", "min-font-size", "fade-font-size", "max-font-size", "y-min", "y-max", "hide-outliers", "zoomed-out-range", -] satisfies (keyof NightingaleDistributionTrack)[]; -const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleDistributionTrack)[]; +] satisfies (keyof NightingaleBoxplotTrack)[]; +const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; /** Line width for rectangle stroke */ @@ -58,19 +58,24 @@ function makeStrokeColor(dataColor: string): string | undefined { } -interface Distribution { +interface BoxplotDatum { + /** Position in the sequence (1-based) */ position: number, - values: number[], + /** Array of values of independent variable at the position */ + values: ArrayLike, } -export interface DistributionDataset { +export interface BoxplotDataset { + /** Name of the dataset */ name: string, + /** Color of the dataset visualization */ color?: string, - positions: Distribution[], + /** Array of boxplot data for individual positions in the sequence */ + positions: BoxplotDatum[], } -/** Type for `NightingaleDistributionTrack.data`` */ -export type DistributionData = DistributionDataset[]; +/** Type for `NightingaleBoxplotTrack.data`` */ +export type BoxplotData = BoxplotDataset[]; type AttributeConverter = NonNullable['converter']>; @@ -100,8 +105,8 @@ export type ZoomedOutRangeOption = typeof ZoomedOutRangeOptions[number]; // TODO: rename to nightingale-boxplot-track -@customElementOnce("nightingale-distribution-track") -export default class NightingaleDistributionTrack extends withCanvas( +@customElementOnce("nightingale-boxplot-track") +export default class NightingaleBoxplotTrack extends withCanvas( withManager( withZoom( withResizable( @@ -152,7 +157,7 @@ export default class NightingaleDistributionTrack extends withCanvas( @property({ type: String, reflect: true }) private "nested-highlight": string = ""; - #data?: DistributionData; + #data?: BoxplotData; private preprocessedData?: PreprocessedData; protected highlighted?: Selection; protected nestedHighlighted?: Selection; @@ -163,14 +168,12 @@ export default class NightingaleDistributionTrack extends withCanvas( if (this.data) this.createTrack(); } - get data(): DistributionData | undefined { + get data(): BoxplotData | undefined { return this.#data; } - set data(data: DistributionData | undefined) { + set data(data: BoxplotData | undefined) { this.#data = data; - console.time('preprocessData') this.preprocessedData = data ? preprocessData(data) : undefined; - console.timeEnd('preprocessData') this.createTrack(); } /** Return the range of Y values corresponding to bottom and top of the viewport (excluding margins) */ @@ -240,11 +243,9 @@ export default class NightingaleDistributionTrack extends withCanvas( if (!this._drawStamp.update().changed) return; this.adjustCanvasCtxLogicalSize(); if (!this.canvasCtx) return; - console.time('draw distr') this.clearCanvas(this.canvasCtx); this.drawData(this.canvasCtx); this.drawMargins(this.canvasCtx); - console.timeEnd('draw distr') } private getOffscreenCanvas(): [canvas: HTMLCanvasElement, canvasContext?: CanvasRenderingContext2D] { @@ -610,15 +611,15 @@ export default class NightingaleDistributionTrack extends withCanvas( private bindEvents(target: Selection): void { - target.on("click.NightingaleDistributionTrack", (event: MouseEvent) => this.handleClick(event)); - target.on("mousemove.NightingaleDistributionTrack", (event: MouseEvent) => this.handleMousemove(event)); - target.on("mouseout.NightingaleDistributionTrack", (event: MouseEvent) => this.handleMouseout(event)); + target.on("click.NightingaleBoxplotTrack", (event: MouseEvent) => this.handleClick(event)); + target.on("mousemove.NightingaleBoxplotTrack", (event: MouseEvent) => this.handleMousemove(event)); + target.on("mouseout.NightingaleBoxplotTrack", (event: MouseEvent) => this.handleMouseout(event)); } private unbindEvents(target: Selection): void { - target.on("click.NightingaleDistributionTrack", null); - target.on("mousemove.NightingaleDistributionTrack", null); - target.on("mouseout.NightingaleDistributionTrack", null); + target.on("click.NightingaleBoxplotTrack", null); + target.on("mousemove.NightingaleBoxplotTrack", null); + target.on("mouseout.NightingaleBoxplotTrack", null); } private handleClick(event: MouseEvent): void { @@ -626,22 +627,16 @@ export default class NightingaleDistributionTrack extends withCanvas( if (pointed === undefined) { return; } - const feature: Parameters[1] = pointed.datum ? - { - type: 'distribution', - position: pointed.position, - dataset: { name: pointed.dataset.name, color: pointed.dataset.color ?? DEFAULT_DATA_COLOR }, - datum: pointed.datum, - } - : undefined; + const withHighlight = this.getAttribute("highlight-event") === "onclick"; if (withHighlight) { - this["nested-highlight"] = NestedHighlight.format(pointed.iDataset !== undefined ? [pointed.position, pointed.iDataset] : undefined); + const iDataset = pointed.feature?.dataset.index; + this["nested-highlight"] = NestedHighlight.format(iDataset !== undefined ? [pointed.position, iDataset] : undefined); } const customEvent = createEvent( "click", - feature, + pointed.feature, withHighlight, true, pointed.position, @@ -658,22 +653,16 @@ export default class NightingaleDistributionTrack extends withCanvas( if (pointed === undefined) { return; } - const feature: Parameters[1] = pointed.datum ? - { - type: 'distribution', - position: pointed.position, - dataset: { name: pointed.dataset.name, color: pointed.dataset.color ?? DEFAULT_DATA_COLOR }, - datum: pointed.datum, - } - : undefined;// TODO: factor out; const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; if (withHighlight) { - this["nested-highlight"] = NestedHighlight.format(pointed.iDataset !== undefined ? [pointed.position, pointed.iDataset] : undefined); + const iDataset = pointed.feature?.dataset.index; + this["nested-highlight"] = NestedHighlight.format(iDataset !== undefined ? [pointed.position, iDataset] : undefined); } + const customEvent = createEvent( "mouseover", - feature, + pointed.feature, withHighlight, false, pointed.position, @@ -704,7 +693,7 @@ export default class NightingaleDistributionTrack extends withCanvas( this.dispatchEvent(customEvent); } - private getPointedDatum(svgX: number, _svgY: number): { position: number, iDataset: number, dataset: PreprocessedDataset, datum: PreprocessedDatum } | { position: number, iDataset: undefined, dataset: undefined, datum: undefined } | undefined { + private getPointedDatum(svgX: number, _svgY: number) { const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); @@ -712,12 +701,25 @@ export default class NightingaleDistributionTrack extends withCanvas( const fractionalWithinColumn = (fractional - 0.5 * COLUMN_GAP) / (1 - COLUMN_GAP); const nDatasets = this.preprocessedData?.datasets.length ?? 1; const iDataset = Math.max(0, Math.min(nDatasets - 1, Math.floor(fractionalWithinColumn * nDatasets))); + const dataset = this.preprocessedData?.datasets[iDataset]; const datum = dataset?.positions[position]; if (!datum) { - return { position, iDataset: undefined, dataset: undefined, datum: undefined }; + return { position, feature: undefined }; } - return { position, iDataset, dataset, datum }; + + type EventFeatureData = Parameters[1]; + const feature: EventFeatureData = { + type: 'boxplot', + position: position, + dataset: { + index: iDataset, + name: dataset.name, + color: dataset.color ?? DEFAULT_DATA_COLOR, + }, + datum: datum, + }; + return { position, feature }; } } @@ -725,7 +727,7 @@ export default class NightingaleDistributionTrack extends withCanvas( type PreprocessedData = ReturnType; type PreprocessedDataset = ReturnType; -function preprocessData(data: DistributionData) { +function preprocessData(data: BoxplotData) { const preprocessedDatasets = data.map(preprocessDataset); return { datasets: preprocessedDatasets, @@ -733,7 +735,7 @@ function preprocessData(data: DistributionData) { } } -function preprocessDataset(dataset: DistributionDataset) { +function preprocessDataset(dataset: BoxplotDataset) { const preprocessedPositions: PreprocessedPositions = {}; for (const datum of dataset.positions) { @@ -762,7 +764,7 @@ interface PreprocessedDatum { type PreprocessedPositions = { [position: number]: PreprocessedDatum } -function preprocessDatum(datum: Distribution): PreprocessedDatum { +function preprocessDatum(datum: BoxplotDatum): PreprocessedDatum { const sorted = sortIfNeeded(new Float32Array(datum.values)); const median = getQuantile(sorted, 0.5); const q1 = getQuantile(sorted, 0.25); diff --git a/packages/nightingale-distribution-track/tests/mockData/sample-1.json b/packages/nightingale-boxplot-track/tests/mockData/sample-1.json similarity index 100% rename from packages/nightingale-distribution-track/tests/mockData/sample-1.json rename to packages/nightingale-boxplot-track/tests/mockData/sample-1.json diff --git a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts b/packages/nightingale-boxplot-track/tests/nightingale-distribution-track.test.ts similarity index 97% rename from packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts rename to packages/nightingale-boxplot-track/tests/nightingale-distribution-track.test.ts index 978ad0851..9b393d275 100644 --- a/packages/nightingale-distribution-track/tests/nightingale-distribution-track.test.ts +++ b/packages/nightingale-boxplot-track/tests/nightingale-distribution-track.test.ts @@ -1,4 +1,4 @@ -import { getQuantile } from "../src/nightingale-distribution-track"; +import { getQuantile } from "../src/nightingale-boxplot-track"; describe("getQuantile", () => { diff --git a/packages/nightingale-distribution-track/tsconfig.json b/packages/nightingale-boxplot-track/tsconfig.json similarity index 100% rename from packages/nightingale-distribution-track/tsconfig.json rename to packages/nightingale-boxplot-track/tsconfig.json diff --git a/packages/nightingale-distribution-track/README.md b/packages/nightingale-distribution-track/README.md deleted file mode 100644 index 5bded2528..000000000 --- a/packages/nightingale-distribution-track/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# nightingale-distribution-track - -[![Published on NPM](https://img.shields.io/npm/v/@nightingale-elements/nightingale-distribution-track.svg)](https://www.npmjs.com/package/@nightingale-elements/nightingale-distribution-track) - -The `nightingale-distribution-track` component ... - -TODO: diff --git a/packages/nightingale-distribution-track/src/index.ts b/packages/nightingale-distribution-track/src/index.ts deleted file mode 100644 index a32bca1a0..000000000 --- a/packages/nightingale-distribution-track/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import NightingaleDistributionTrack, { } from "./nightingale-distribution-track"; - -export { NightingaleDistributionTrack as default }; diff --git a/packages/nightingale-new-core/src/utils/bindEvents.ts b/packages/nightingale-new-core/src/utils/bindEvents.ts index ea11475b4..12c039462 100644 --- a/packages/nightingale-new-core/src/utils/bindEvents.ts +++ b/packages/nightingale-new-core/src/utils/bindEvents.ts @@ -20,10 +20,11 @@ type SequenceBaseData = { position: number; aa: string; }; -type DistributionData = { - type: 'distribution'; +type BoxplotData = { + type: 'boxplot'; position: number; dataset: { + index: number; name: string; color: string; }; @@ -45,7 +46,7 @@ type DistributionData = { type EventDetail = { eventType: EventType; coords: null | [number, number]; - feature?: FeatureData | SequenceBaseData | DistributionData | null; + feature?: FeatureData | SequenceBaseData | BoxplotData | null; target?: HTMLElement; highlight?: string; selectedId?: string | null; @@ -54,7 +55,7 @@ type EventDetail = { export function createEvent( type: EventType, - feature: FeatureData | SequenceBaseData | DistributionData | null = null, + feature: FeatureData | SequenceBaseData | BoxplotData | null = null, withHighlight = false, withId = false, start?: number, diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.mdx similarity index 90% rename from stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx rename to stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.mdx index 3eec0d724..0cfc0d0d5 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.mdx +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.mdx @@ -1,6 +1,6 @@ import { Meta, Description } from "@storybook/addon-docs"; -import Readme from "../../packages/nightingale-distribution-track/README.md"; +import Readme from "../../packages/nightingale-boxplot-track/README.md"; import ParentReadme from "../../packages/nightingale-new-core/src/nightingale-base-element.md"; import dimensionsReadme from "../../packages/nightingale-new-core/src/mixins/withDimensions/README.md"; import highlightReadme from "../../packages/nightingale-new-core/src/mixins/withHighlight/README.md"; @@ -10,7 +10,7 @@ import positionReadme from "../../packages/nightingale-new-core/src/mixins/withP import resizableReadme from "../../packages/nightingale-new-core/src/mixins/withResizable/README.md"; import zoomReadme from "../../packages/nightingale-new-core/src/mixins/withZoom/README.md"; - + {Readme} diff --git a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts similarity index 66% rename from stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts rename to stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index 7448918cc..cdf8b2c8a 100644 --- a/stories/22.NightingaleDistributionTrack/NightingaleDistributionTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -1,11 +1,11 @@ import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; -import "../../packages/nightingale-distribution-track/src/index"; -import { type DistributionData, ZoomedOutRangeOptions } from "../../packages/nightingale-distribution-track/src/nightingale-distribution-track"; -import sampleDistributionData from "../../packages/nightingale-distribution-track/tests/mockData/sample-1.json"; +import "../../packages/nightingale-boxplot-track/src/index"; +import { type BoxplotData, ZoomedOutRangeOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; +import sampleBoxplotData from "../../packages/nightingale-boxplot-track/tests/mockData/sample-1.json"; -export default { title: "Components/Tracks/Distribution Track" } as Meta; +export default { title: "Components/Tracks/Boxplot Track" } as Meta; const DefaultArgs = { @@ -39,8 +39,7 @@ const nDataRepeat = 82; const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA".repeat(nDataRepeat); -function prepareDistributionData(data: DistributionData[number]): DistributionData { - console.time('prepareDistributionData') +function prepareBoxplotData(data: { positions: { position: number, values: number[] }[] }): BoxplotData { // const positions = data.positions.slice(); const positions = data.positions.map(pos => ({ position: pos.position, values: pos.values.sort() })); const shift = data.positions.length; @@ -49,7 +48,6 @@ function prepareDistributionData(data: DistributionData[number]): DistributionDa positions.push({ position: pos.position + i * shift, values: pos.values }); } } - console.timeEnd('prepareDistributionData') return [ { @@ -86,23 +84,6 @@ function remove(arr: T[], ...indices: number[]) { return out; } -function prepareLinegraphData(data: DistributionData) { - console.time('prepareLinegraphData') - const values = data[0].positions.map(pos => ({ position: pos.position, value: pos.values.reduce((a, b) => a + b, 0) / pos.values.length })); - const max = values.reduce((old, v) => v.value > old ? v.value : old, 0); - - const chart1 = { - name: "chart1", - color: "#707070", - fill: "#808080", - lineCurve: "curveStep", - range: [0, max], - values: values, - }; - console.timeEnd('prepareLinegraphData') - return [chart1]; -} - function nightingaleNavigation(args: Args & { length: number }) { return html` @@ -142,32 +123,12 @@ function nightingaleSequence(args: Args & { length: number }) { `; } -function nightingaleLinegraphTrack(args: Args & { length: number, id: number }) { - return html` -
-
Linegraph
- - - -
`; -} - -function nightingaleDistributionTrack(args: Args & { length: number, id: number }) { +function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { return html`
-
Distribution
- Boxplot
+ - + `; } @@ -202,8 +163,7 @@ function makeStory(options: { length: number }): Story {
${nightingaleNavigation({ ...args, length: options.length })} ${nightingaleSequence({ ...args, length: options.length })} - - ${nightingaleDistributionTrack({ ...args, length: options.length, id: 0 })} + ${nightingaleBoxplotTrack({ ...args, length: options.length, id: 0 })}
`; @@ -212,23 +172,18 @@ function makeStory(options: { length: number }): Story { const story: Story = template.bind({}); story.args = { ...DefaultArgs }; story.argTypes = ArgumentTypes; - const distributionData = prepareDistributionData(sampleDistributionData as any); - // const linegraphData = prepareLinegraphData(distributionData); + const boxplotData = prepareBoxplotData(sampleBoxplotData as any); story.play = async () => { - // await customElements.whenDefined("nightingale-linegraph-track"); - // for (const track of document.getElementsByTagName("nightingale-linegraph-track")) { - // (track as any).data = linegraphData; - // } - await customElements.whenDefined("nightingale-distribution-track"); - for (const track of document.getElementsByTagName("nightingale-distribution-track")) { - (track as any).data = distributionData; + await customElements.whenDefined("nightingale-boxplot-track"); + for (const track of document.getElementsByTagName("nightingale-boxplot-track")) { + (track as any).data = boxplotData; } }; return story; } -export const LinegraphAndDistribution = makeStory({ +export const Boxplot = makeStory({ length: sampleSequence.length, }); From f081c8f04da1835f08835782eaf85d6698a76910 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 23 Jun 2026 10:47:03 +0100 Subject: [PATCH 19/32] nightingale-distribution-track: move OptionalNumberAttributeConverter, EnumAttributeConverter to core --- .../src/nightingale-boxplot-track.ts | 34 ++-------- .../src/nightingale-conservation-track.ts | 10 +-- packages/nightingale-new-core/src/index.ts | 1 + .../src/utils/attribute-converters.ts | 65 +++++++++++++++++++ 4 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 packages/nightingale-new-core/src/utils/attribute-converters.ts diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 9f1d152c9..72b6bc74d 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -2,6 +2,8 @@ import NightingaleElement, { BinarySearch, createEvent, customElementOnce, + EnumAttributeConverter, + OptionalNumberAttributeConverter, Refresher, Stamp, withCanvas, @@ -14,7 +16,7 @@ import NightingaleElement, { withZoom, } from "@nightingale-elements/nightingale-new-core"; import { BaseType, color, max, min, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; -import { ComplexAttributeConverter, html, PropertyDeclaration, PropertyValues } from "lit"; +import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; @@ -50,7 +52,6 @@ const OUTLIER_RADIUS = 2; const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5] as const; /** Approximate width of a column in screen pixels, when showing downsampled data in "background" visualization. * (higher value means more responsive but lower-resolution visualization). */ -// const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 4; const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 1; function makeStrokeColor(dataColor: string): string | undefined { @@ -74,37 +75,13 @@ export interface BoxplotDataset { positions: BoxplotDatum[], } -/** Type for `NightingaleBoxplotTrack.data`` */ +/** Type for `NightingaleBoxplotTrack.data` */ export type BoxplotData = BoxplotDataset[]; -type AttributeConverter = NonNullable['converter']>; - -const OptionalNumberAttributeConverter: AttributeConverter = (str) => { - if (str) return Number(str); - return undefined; -}; - -function EnumAttributeConverter(allowedValues: readonly T[], defaultValue?: D): AttributeConverter { - const theDefault = defaultValue ?? allowedValues[0]; - - return (str) => { - if (!str) { - return theDefault; - } - if (allowedValues.includes(str as T)) { - return str as T; - } else { - console.warn(`Value '${str}' is not valid for attribute of type ${allowedValues.map(v => `'${v}'`).join(' | ')}. Falling back to default value ('${theDefault}').`); - return theDefault; - } - }; -} - export const ZoomedOutRangeOptions = ['extremes', 'whiskers', 'box', 'none'] as const; export type ZoomedOutRangeOption = typeof ZoomedOutRangeOptions[number]; -// TODO: rename to nightingale-boxplot-track @customElementOnce("nightingale-boxplot-track") export default class NightingaleBoxplotTrack extends withCanvas( withManager( @@ -147,7 +124,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( /** What kind of data should be shown as shaded range in zoomed-out visualization */ @property({ converter: EnumAttributeConverter(ZoomedOutRangeOptions, 'whiskers') }) - "zoomed-out-range": ZoomedOutRangeOption; // TODO: enum-type in other components? + "zoomed-out-range": ZoomedOutRangeOption; /** Turn on showing secondary highlights, which indicate selected subcolumn within a column (in case of multiple dataset). */ @property({ type: Boolean }) @@ -946,3 +923,4 @@ const NestedHighlight = { }; // TODO: axis ticks +// TODO: tooltips (example in storybook for PoC) diff --git a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts index c2afb68bb..cba37b3a5 100644 --- a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts +++ b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts @@ -2,6 +2,7 @@ import NightingaleElement, { BinarySearch, createEvent, customElementOnce, + EnumAttributeConverter, Refresher, Stamp, withCanvas, @@ -80,9 +81,10 @@ interface YPositions { end: { [letter: string]: number[] }, } -type LetterOrder = "default" | "probability"; +const LetterOrders = ["default", "probability"] as const; +type LetterOrder = typeof LetterOrders[number]; -/** Type for `NightingaleConservationTrack.data`` */ +/** Type for `NightingaleConservationTrack.data` */ export interface SequenceConservationData { /** Sequence number for each position */ index: number[], @@ -104,8 +106,8 @@ export default class NightingaleConservationTrack extends withCanvas( ) ) { /** Order of amino acids within a column (top-to-bottom). default = fixed order based on amino acid groups, probability = on every position sort by descending probability */ - @property({ type: String }) - "letter-order": LetterOrder = "default"; + @property({ converter: EnumAttributeConverter(LetterOrders, "default") }) + "letter-order": LetterOrder; /** Font family for labels (can be a list of multiple font families separated by comma, like in CSS) */ @property({ type: String }) diff --git a/packages/nightingale-new-core/src/index.ts b/packages/nightingale-new-core/src/index.ts index 0631b9e5c..5ee8e94d6 100644 --- a/packages/nightingale-new-core/src/index.ts +++ b/packages/nightingale-new-core/src/index.ts @@ -7,6 +7,7 @@ export { default as withManager } from "./mixins/withManager/index"; export { default as withHighlight } from "./mixins/withHighlight/index"; export { default as withSVGHighlight } from "./mixins/withHighlight/SVG/index"; export { default as withZoom } from "./mixins/withZoom/index"; +export { EnumAttributeConverter, OptionalNumberAttributeConverter } from "./utils/attribute-converters"; export { default as bindEvents, createEvent } from "./utils/bindEvents"; export { contrastingColor, getColor } from "./utils/colors"; export { default as Region } from "./utils/Region"; diff --git a/packages/nightingale-new-core/src/utils/attribute-converters.ts b/packages/nightingale-new-core/src/utils/attribute-converters.ts new file mode 100644 index 000000000..6742b3e3b --- /dev/null +++ b/packages/nightingale-new-core/src/utils/attribute-converters.ts @@ -0,0 +1,65 @@ +import { ComplexAttributeConverter } from "lit"; + + +/** + * Attribute converter for attributes of type `number|undefined`. + * Attribute value empty string or `null` is interpreted as `undefined`; non-empty string is parsed as number. + * Example: + * + * ```ts + * class NightingaleExampleTrack { + * ;@property({ converter: OptionalNumberAttributeConverter }) + * "y-min"?: number; + * } + * ``` + * */ +export const OptionalNumberAttributeConverter: ComplexAttributeConverter = { + fromAttribute(str) { + if (!str) { // null or empty string + return undefined; + } else { + return Number(str); + } + }, + toAttribute(value) { + if (value === undefined) { + return ""; + } else { + return String(value); + } + }, +} + +/** + * Create an attribute converter for attribute that allows a fixed set of string values. + * Passing an invalid value to the attribute will result in a warning and using the default value instead. + * Example: + * + * ```ts + * const Weekdays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] as const; + * type Weekday = typeof Weekdays[number]; + * + * class NightingaleExampleTrack { + * ;@property({ converter: EnumAttributeConverter(Weekdays, "Mon") }) + * day: Weekday; + * } + * ``` + * */ +export function EnumAttributeConverter(allowedValues: readonly T[], defaultValue: D): ComplexAttributeConverter { + return { + fromAttribute(str) { + if (!str) { // null or empty string + return defaultValue; + } + if (allowedValues.includes(str as T)) { // valid string + return str as T; + } else { // invalid string + console.warn(`Value "${str}" is not valid for attribute of type ${allowedValues.map(v => `"${v}"`).join(" | ")}. Falling back to default value ("${defaultValue}").`); + return defaultValue; + } + }, + toAttribute(value) { + return value; + }, + }; +} From 66f5c1b10a0bca272f04995df702456ed3d98ceb Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 23 Jun 2026 11:34:06 +0100 Subject: [PATCH 20/32] nightingale-boxplot-track: remove dead code --- .../src/nightingale-boxplot-track.ts | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 72b6bc74d..f2a248ac6 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -24,7 +24,6 @@ import { Downsampler } from "./downsampling"; const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", - "font-family", "min-font-size", "fade-font-size", "max-font-size", "y-min", "y-max", "hide-outliers", "zoomed-out-range", ] satisfies (keyof NightingaleBoxplotTrack)[]; const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; @@ -33,7 +32,6 @@ const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof Nightin /** Line width for rectangle stroke */ const LINE_WIDTH = 1; /** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ -// const MAX_REL_LINE_WIDTH = 0.2; const MAX_REL_LINE_WIDTH = 0.2; /** Default fill color for boxes (stroke color will be derived from this) */ @@ -94,22 +92,6 @@ export default class NightingaleBoxplotTrack extends withCanvas( ) ) ) { - /** Font family for labels (can be a list of multiple font families separated by comma, like in CSS) */ - @property({ type: String }) - "font-family": string = "Helvetica,sans-serif"; - - /** Font size below which labels are hidden */ - @property({ type: Number }) - "min-font-size": number = 6; - - /** Column width below which labels are shown with lower opacity */ - @property({ type: Number }) - "fade-font-size": number = 12; - - /** Maximum font size for labels */ - @property({ type: Number }) - "max-font-size": number = 24; - /** Bottom limit for Y-axis (default: minimum computed from data) */ @property({ converter: OptionalNumberAttributeConverter }) "y-min"?: number; @@ -383,28 +365,32 @@ export default class NightingaleBoxplotTrack extends withCanvas( let yRangeLow: ((j: number) => number) | undefined; let yRangeHigh: ((j: number) => number) | undefined; switch (this['zoomed-out-range']) { - case 'extremes': + case 'extremes': { const minimum = downsamplers.minimum.getDownsampledByScale(scale); const maximum = downsamplers.maximum.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(minimum[j]); yRangeHigh = (j: number) => yScale(maximum[j]); break; - case 'whiskers': + } + case 'whiskers': { const whiskerLow = downsamplers.whiskerLow.getDownsampledByScale(scale); const whiskerHigh = downsamplers.whiskerHigh.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(whiskerLow[j]); yRangeHigh = (j: number) => yScale(whiskerHigh[j]); break; - case 'box': + } + case 'box': { const boxLow = downsamplers.boxLow.getDownsampledByScale(scale); const boxHigh = downsamplers.boxHigh.getDownsampledByScale(scale); yRangeLow = (j: number) => yScale(boxLow[j]); yRangeHigh = (j: number) => yScale(boxHigh[j]); break; - case 'none': + } + case 'none': { yRangeLow = undefined; yRangeHigh = undefined; break; + } } const jStart = Math.max(0, Math.floor((start - offset) / exactScale)); From e21916732a2a96c68ec262bbbced70e62b32228e Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 23 Jun 2026 12:13:14 +0100 Subject: [PATCH 21/32] nightingale-boxplot-track: show-axis --- .../src/nightingale-boxplot-track.ts | 15 ++++++++++++--- .../NightingaleBoxplotTrack.stories.ts | 10 ++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index f2a248ac6..e38ae7404 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -15,7 +15,7 @@ import NightingaleElement, { withResizable, withZoom, } from "@nightingale-elements/nightingale-new-core"; -import { BaseType, color, max, min, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; +import { axisLeft, BaseType, color, max, min, randomLcg, randomUniform, scaleLinear, select, Selection, TypedArray } from "d3"; import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; @@ -24,7 +24,7 @@ import { Downsampler } from "./downsampling"; const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", - "y-min", "y-max", "hide-outliers", "zoomed-out-range", + "y-min", "y-max", "show-axis", "hide-outliers", "zoomed-out-range", ] satisfies (keyof NightingaleBoxplotTrack)[]; const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; @@ -112,6 +112,10 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ type: Boolean }) "show-nested-highlights"?: boolean; + /** Turn on vertical axis. */ + @property({ type: Boolean }) + "show-axis"?: boolean; + /** Position of secondary highlight in from "position/iDataset", or "" if none. */ @property({ type: String, reflect: true }) private "nested-highlight": string = ""; @@ -166,6 +170,12 @@ export default class NightingaleBoxplotTrack extends withCanvas( this.bindEvents(this.svg); this.highlighted = this.svg.append("g").attr("class", "highlighted"); this.nestedHighlighted = this.svg.append("g").attr("class", "highlighted-datapoint"); + if (this["show-axis"]) { + const yScale = scaleLinear(this.getYLimits(), [this.height - this["margin-bottom"], this["margin-top"]]); + this.svg.append("g").attr("class", "y-axis") + .attr("transform", `translate(${this["margin-left"]},0)`) + .call(axisLeft(yScale)); + } } } @@ -908,5 +918,4 @@ const NestedHighlight = { SEPARATOR: '/', }; -// TODO: axis ticks // TODO: tooltips (example in storybook for PoC) diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index cdf8b2c8a..1d1375d41 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -14,10 +14,12 @@ const DefaultArgs = { "highlight-event": "onmouseover", "highlight-color": "#EB3BFF22", "margin-color": "#ffffffdd", + "margin-left": 30, "y-min": 0 as number | undefined, "y-max": undefined as number | undefined, - "hide-outliers": false, + "show-axis": true, "show-nested-highlights": true, + "hide-outliers": false, "zoomed-out-range": 'whiskers', }; type Args = typeof DefaultArgs; @@ -96,6 +98,7 @@ function nightingaleNavigation(args: Args & { length: number }) { length="${args["length"]}" highlight-color=${args["highlight-color"]} margin-color=${args["margin-color"]} + margin-left=${args["margin-left"]} show-highlight display-end="100" > @@ -117,6 +120,7 @@ function nightingaleSequence(args: Args & { length: number }) { highlight-event="${args["highlight-event"]}" highlight-color=${args["highlight-color"]} margin-color=${args["margin-color"]} + margin-left=${args["margin-left"]} use-ctrl-to-zoom > @@ -137,11 +141,13 @@ function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { margin-color=${args["margin-color"]} margin-top=10 margin-bottom=10 + margin-left=${args["margin-left"]} use-ctrl-to-zoom y-min=${args["y-min"]} y-max=${args["y-max"]} - ?hide-outliers=${args["hide-outliers"]} + ?show-axis=${args["show-axis"]} ?show-nested-highlights=${args["show-nested-highlights"]} + ?hide-outliers=${args["hide-outliers"]} zoomed-out-range=${args["zoomed-out-range"]} > From ba5ccc09ee641160bf9c186cd1afe223e28a8664 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 24 Jun 2026 14:43:22 +0100 Subject: [PATCH 22/32] Canvas tracks - fix highlight rendered over margin --- .../src/nightingale-boxplot-track.ts | 42 ++++++++----------- .../src/nightingale-conservation-track.ts | 35 +++++----------- .../src/nightingale-track-canvas.ts | 18 ++++---- .../NightingaleTrackCanvas.stories.ts | 4 +- .../NightingaleBoxplotTrack.stories.ts | 1 + 5 files changed, 38 insertions(+), 62 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index e38ae7404..73440c64f 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -122,8 +122,9 @@ export default class NightingaleBoxplotTrack extends withCanvas( #data?: BoxplotData; private preprocessedData?: PreprocessedData; - protected highlighted?: Selection; - protected nestedHighlighted?: Selection; + protected svgHighlights?: Selection; + protected svgNestedHighlights?: Selection; + protected svgMargins?: Selection; override connectedCallback() { @@ -168,8 +169,9 @@ export default class NightingaleBoxplotTrack extends withCanvas( .attr("height", this.height); if (this.svg) { // this check is necessary because `svg` setter does not always set this.bindEvents(this.svg); - this.highlighted = this.svg.append("g").attr("class", "highlighted"); - this.nestedHighlighted = this.svg.append("g").attr("class", "highlighted-datapoint"); + this.svgHighlights = this.svg.append("g").attr("class", "highlighted"); + this.svgNestedHighlights = this.svg.append("g").attr("class", "nested-highlighted"); + this.svgMargins = this.svg.append("g").attr("class", "margin"); if (this["show-axis"]) { const yScale = scaleLinear(this.getYLimits(), [this.height - this["margin-bottom"], this["margin-top"]]); this.svg.append("g").attr("class", "y-axis") @@ -183,6 +185,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( this.requestDraw(); this.updateHighlight(); this.updateNestedHighlight(); + this.updateMargins(); } private readonly _drawStamp = new Stamp(() => { @@ -214,7 +217,6 @@ export default class NightingaleBoxplotTrack extends withCanvas( if (!this.canvasCtx) return; this.clearCanvas(this.canvasCtx); this.drawData(this.canvasCtx); - this.drawMargins(this.canvasCtx); } private getOffscreenCanvas(): [canvas: HTMLCanvasElement, canvasContext?: CanvasRenderingContext2D] { @@ -429,22 +431,6 @@ export default class NightingaleBoxplotTrack extends withCanvas( } } - private drawMargins(ctx: CanvasRenderingContext2D) { - const canvasWidth = ctx.canvas.width; - const canvasHeight = ctx.canvas.height; - const marginLeft = this["margin-left"] * this.canvasScale; - const marginRight = this["margin-right"] * this.canvasScale; - const marginTop = this["margin-top"] * this.canvasScale; - const marginBottom = this["margin-bottom"] * this.canvasScale; - - ctx.globalAlpha = 1; - ctx.fillStyle = this["margin-color"]; - ctx.fillRect(0, 0, marginLeft, canvasHeight); - ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); - ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); - ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); - } - private getDrawingMeasurements() { const canvasScale = this.canvasScale; const xBaseWidthInCss = this.getSingleBaseWidth(); @@ -509,8 +495,8 @@ export default class NightingaleBoxplotTrack extends withCanvas( } protected updateHighlight() { - if (!this.highlighted) return; - const highlights = this.highlighted + if (!this.svgHighlights) return; + const highlights = this.svgHighlights .selectAll("rect") .data(this.highlightedRegion.segments); @@ -528,12 +514,12 @@ export default class NightingaleBoxplotTrack extends withCanvas( } protected updateNestedHighlight() { - if (!this.nestedHighlighted) return; + if (!this.svgNestedHighlights) return; const nestedHighlightLocation = NestedHighlight.parse(this["nested-highlight"]); const nDatasets = this.preprocessedData?.datasets.length ?? 1; const showNestedHighlight = this["show-nested-highlights"] && nDatasets > 1 && nestedHighlightLocation !== undefined; - const highlights = this.nestedHighlighted + const highlights = this.svgNestedHighlights .selectAll("rect") .data(showNestedHighlight ? [nestedHighlightLocation] : []); @@ -556,6 +542,10 @@ export default class NightingaleBoxplotTrack extends withCanvas( highlights.exit().remove(); } + protected updateMargins() { + this.renderMarginOnGroup(this.svgMargins); + } + override zoomRefreshed() { super.zoomRefreshed(); if (this.getWidthWithMargins() > 0) this.refresh(); @@ -919,3 +909,5 @@ const NestedHighlight = { }; // TODO: tooltips (example in storybook for PoC) +// - combined tooltip for all datasets at the same position (table) +// TODO: test on new API once available diff --git a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts index cba37b3a5..cb17ec1be 100644 --- a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts +++ b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts @@ -128,7 +128,8 @@ export default class NightingaleConservationTrack extends withCanvas( #data?: SequenceConservationData; private yPositions?: YPositions; - protected highlighted?: Selection; + protected svgHighlights?: Selection; + protected svgMargins?: Selection; override connectedCallback() { @@ -176,13 +177,15 @@ export default class NightingaleConservationTrack extends withCanvas( .attr("height", this.height); if (this.svg) { // this check is necessary because `svg` setter does not always set this.bindEvents(this.svg); - this.highlighted = this.svg.append("g").attr("class", "highlighted"); + this.svgHighlights = this.svg.append("g").attr("class", "highlighted"); + this.svgMargins = this.svg.append("g").attr("class", "margin"); } } refresh() { this.requestDraw(); this.updateHighlight(); + this.updateMargins(); } private readonly _drawStamp = new Stamp(() => { @@ -213,7 +216,6 @@ export default class NightingaleConservationTrack extends withCanvas( this.adjustCanvasCtxLogicalSize(); this.clearCanvas(); this.drawColumns(); - this.drawMargins(); } private clearCanvas() { @@ -274,25 +276,6 @@ export default class NightingaleConservationTrack extends withCanvas( } } - private drawMargins() { - const ctx = this.canvasCtx; - if (!ctx) return; - - const canvasWidth = ctx.canvas.width; - const canvasHeight = ctx.canvas.height; - const marginLeft = this["margin-left"] * this.canvasScale; - const marginRight = this["margin-right"] * this.canvasScale; - const marginTop = this["margin-top"] * this.canvasScale; - const marginBottom = this["margin-bottom"] * this.canvasScale; - - ctx.globalAlpha = 1; - ctx.fillStyle = this["margin-color"]; - ctx.fillRect(0, 0, marginLeft, canvasHeight); - ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); - ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); - ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); - } - private getFontOpacity(baseWidthInCss: number): number { if (baseWidthInCss < this["min-font-size"]) { return 0; @@ -304,8 +287,8 @@ export default class NightingaleConservationTrack extends withCanvas( } protected updateHighlight() { - if (!this.highlighted) return; - const highlights = this.highlighted + if (!this.svgHighlights) return; + const highlights = this.svgHighlights .selectAll("rect") .data(this.highlightedRegion.segments); @@ -322,6 +305,10 @@ export default class NightingaleConservationTrack extends withCanvas( highlights.exit().remove(); } + protected updateMargins() { + this.renderMarginOnGroup(this.svgMargins); + } + override zoomRefreshed() { super.zoomRefreshed(); if (this.getWidthWithMargins() > 0) this.refresh(); diff --git a/packages/nightingale-track-canvas/src/nightingale-track-canvas.ts b/packages/nightingale-track-canvas/src/nightingale-track-canvas.ts index 689b0ba47..f86fa6453 100644 --- a/packages/nightingale-track-canvas/src/nightingale-track-canvas.ts +++ b/packages/nightingale-track-canvas/src/nightingale-track-canvas.ts @@ -14,6 +14,8 @@ export default class NightingaleTrackCanvas extends withCanvas(NightingaleTrack) /** Feature fragments, stored in a data structure for fast range queries */ private fragmentCollection?: RangeCollection; + protected svgMargins?: Selection; + protected override createTrack() { if (this.svg) { this.svg.selectAll("g").remove(); @@ -26,12 +28,14 @@ export default class NightingaleTrackCanvas extends withCanvas(NightingaleTrack) if (this.svg) { // this check is necessary because `svg` setter does not always set this.bindEvents(this.svg); this.highlighted = this.svg.append("g").attr("class", "highlighted"); + this.svgMargins = this.svg.append("g").attr("class", "margin"); } } override refresh() { super.refresh(); this.requestDraw(); + this.updateMargins(); } override render() { @@ -135,18 +139,10 @@ export default class NightingaleTrackCanvas extends withCanvas(NightingaleTrack) } } } + } - // Draw margins - ctx.globalAlpha = 1; - ctx.fillStyle = this["margin-color"]; - const marginLeft = this["margin-left"] * scale; - const marginRight = this["margin-right"] * scale; - const marginTop = this["margin-top"] * scale; - const marginBottom = this["margin-bottom"] * scale; - ctx.fillRect(0, 0, marginLeft, canvasHeight); - ctx.fillRect(canvasWidth - marginRight, 0, marginRight, canvasHeight); - ctx.fillRect(marginLeft, 0, canvasWidth - marginLeft - marginRight, marginTop); - ctx.fillRect(marginLeft, canvasHeight - marginBottom, canvasWidth - marginLeft - marginRight, marginBottom); + protected updateMargins() { + this.renderMarginOnGroup(this.svgMargins); } private _unknownShapeWarningPrinted = new Set(); diff --git a/stories/18.NightingaleTrackCanvas/NightingaleTrackCanvas.stories.ts b/stories/18.NightingaleTrackCanvas/NightingaleTrackCanvas.stories.ts index 4e178eb3d..c34b0cf71 100644 --- a/stories/18.NightingaleTrackCanvas/NightingaleTrackCanvas.stories.ts +++ b/stories/18.NightingaleTrackCanvas/NightingaleTrackCanvas.stories.ts @@ -13,8 +13,8 @@ const DefaultArgs = { "highlight-event": "onmouseover", // "onmouseover"|"onclick" "highlight-color": "#EB3BFF22", "margin-color": "#ffffffdd", // "transparent" - "margin-left": "10", - "margin-right": "10", + "margin-left": 10, + "margin-right": 10, "layout": "non-overlapping", // "default"|"non-overlapping" }; type Args = typeof DefaultArgs; diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index 1d1375d41..d4b82f1ce 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -184,6 +184,7 @@ function makeStory(options: { length: number }): Story { await customElements.whenDefined("nightingale-boxplot-track"); for (const track of document.getElementsByTagName("nightingale-boxplot-track")) { (track as any).data = boxplotData; + track.addEventListener('change', (e) => console.log((e as CustomEvent).detail)) } }; return story; From c9e2386999ef18ca6ca65711e47e76cb94aa0d09 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 24 Jun 2026 15:47:40 +0100 Subject: [PATCH 23/32] nightingale-boxplot-track: inclue info about all datasets in event data --- .../src/nightingale-boxplot-track.ts | 21 ++++------ .../src/utils/bindEvents.ts | 41 ++++++++++--------- .../NightingaleBoxplotTrack.stories.ts | 34 +++++++++++---- 3 files changed, 56 insertions(+), 40 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 73440c64f..6a241f07e 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -593,7 +593,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( const withHighlight = this.getAttribute("highlight-event") === "onclick"; if (withHighlight) { - const iDataset = pointed.feature?.dataset.index; + const iDataset = pointed.feature?.datasetIndex; this["nested-highlight"] = NestedHighlight.format(iDataset !== undefined ? [pointed.position, iDataset] : undefined); } @@ -619,7 +619,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( const withHighlight = this.getAttribute("highlight-event") === "onmouseover"; if (withHighlight) { - const iDataset = pointed.feature?.dataset.index; + const iDataset = pointed.feature?.datasetIndex; this["nested-highlight"] = NestedHighlight.format(iDataset !== undefined ? [pointed.position, iDataset] : undefined); } @@ -665,22 +665,15 @@ export default class NightingaleBoxplotTrack extends withCanvas( const nDatasets = this.preprocessedData?.datasets.length ?? 1; const iDataset = Math.max(0, Math.min(nDatasets - 1, Math.floor(fractionalWithinColumn * nDatasets))); - const dataset = this.preprocessedData?.datasets[iDataset]; - const datum = dataset?.positions[position]; - if (!datum) { - return { position, feature: undefined }; - } - type EventFeatureData = Parameters[1]; const feature: EventFeatureData = { type: 'boxplot', position: position, - dataset: { - index: iDataset, - name: dataset.name, - color: dataset.color ?? DEFAULT_DATA_COLOR, - }, - datum: datum, + data: this.preprocessedData?.datasets.map(dataset => ({ + dataset: { name: dataset.name, color: dataset.color ?? DEFAULT_DATA_COLOR }, + datum: dataset?.positions[position], + })) ?? [], + datasetIndex: iDataset, }; return { position, feature }; } diff --git a/packages/nightingale-new-core/src/utils/bindEvents.ts b/packages/nightingale-new-core/src/utils/bindEvents.ts index 12c039462..d304b1d66 100644 --- a/packages/nightingale-new-core/src/utils/bindEvents.ts +++ b/packages/nightingale-new-core/src/utils/bindEvents.ts @@ -21,26 +21,29 @@ type SequenceBaseData = { aa: string; }; type BoxplotData = { - type: 'boxplot'; + type: "boxplot"; position: number; - dataset: { - index: number; - name: string; - color: string; - }; - datum: { - position: number; - values: Float32Array; - median: number; - boxLow: number; - boxHigh: number; - whiskerLow: number; - whiskerHigh: number; - minimum: number; - maximum: number; - outliersLow: Float32Array; - outliersHigh: Float32Array; - }; + data: { + dataset: { + name: string; + color: string; + }; + datum?: { + position: number; + values: Float32Array; + median: number; + boxLow: number; + boxHigh: number; + whiskerLow: number; + whiskerHigh: number; + minimum: number; + maximum: number; + outliersLow: Float32Array; + outliersHigh: Float32Array; + }; + }[]; + /** Index into `data`, indicates which dataset is being pointed at */ + datasetIndex: number; }; type EventDetail = { diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index d4b82f1ce..af0e23b50 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -1,3 +1,4 @@ +import { type createEvent } from "@nightingale-elements/nightingale-new-core"; import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-boxplot-track/src/index"; @@ -69,12 +70,12 @@ function prepareBoxplotData(data: { positions: { position: number, values: numbe // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG }, - { - name: 'Data3', - color: '#00aa44', - // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.93) })), 1, 7), // DEBUG - }, + // { + // name: 'Data3', + // color: '#00aa44', + // // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), + // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.93) })), 1, 7), // DEBUG + // }, ]; } @@ -184,7 +185,26 @@ function makeStory(options: { length: number }): Story { await customElements.whenDefined("nightingale-boxplot-track"); for (const track of document.getElementsByTagName("nightingale-boxplot-track")) { (track as any).data = boxplotData; - track.addEventListener('change', (e) => console.log((e as CustomEvent).detail)) + track.addEventListener('change', (e) => { + const detail = (e as CustomEvent).detail; + if (!('eventType' in detail)) return; + if (detail.eventType !== 'click') return; + const fmtInt = (x: number | undefined) => x?.toFixed(0).padStart(7) ?? ' '; + const fmtFloat = (x: number | undefined) => x?.toFixed(2).padStart(7) ?? ' '; + type EventFeatureData = Parameters[1]; + const feature = detail.feature as EventFeatureData; + if (feature && 'type' in feature && feature.type === 'boxplot') { + console.log('='.repeat(40)) + console.log(['Dataset ', ...feature.data.map(d => d.dataset.name)].join(' | ')) + console.log(['Color ', ...feature.data.map(d => d.dataset.color)].join(' | ')) + console.log(['#Datapoints', ...feature.data.map(d => fmtInt(d.datum?.values.length))].join(' | ')) + console.log(['#Outliers ', ...feature.data.map(d => fmtInt(d.datum?.outliersHigh && d.datum?.outliersLow ? d.datum.outliersHigh.length + d.datum.outliersLow.length : undefined))].join(' | ')) + console.log(['Maximum ', ...feature.data.map(d => fmtFloat(d.datum?.maximum))].join(' | ')) + console.log(['Median ', ...feature.data.map(d => fmtFloat(d.datum?.median))].join(' | ')) + console.log(['Minimum ', ...feature.data.map(d => fmtFloat(d.datum?.minimum))].join(' | ')) + console.log([' ', ...feature.data.map((d, i) => i === feature.datasetIndex ? '-------' : ' ')].join(' ')) + } + }) } }; return story; From 50c0dd3832e672c768b491fe0118c7d05c1048e6 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 26 Jun 2026 10:06:06 +0100 Subject: [PATCH 24/32] nightingale-boxplot-track: tooltip demo --- .../src/nightingale-boxplot-track.ts | 2 - .../NightingaleBoxplotTrack.stories.ts | 62 ++++++++++++------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 6a241f07e..49acaf66a 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -901,6 +901,4 @@ const NestedHighlight = { SEPARATOR: '/', }; -// TODO: tooltips (example in storybook for PoC) -// - combined tooltip for all datasets at the same position (table) // TODO: test on new API once available diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index af0e23b50..66cb939bd 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -2,6 +2,7 @@ import { type createEvent } from "@nightingale-elements/nightingale-new-core"; import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-boxplot-track/src/index"; +import NightingaleBoxplotTrack from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; import { type BoxplotData, ZoomedOutRangeOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; import sampleBoxplotData from "../../packages/nightingale-boxplot-track/tests/mockData/sample-1.json"; @@ -22,6 +23,7 @@ const DefaultArgs = { "show-nested-highlights": true, "hide-outliers": false, "zoomed-out-range": 'whiskers', + "tooltips": true, }; type Args = typeof DefaultArgs; @@ -155,9 +157,46 @@ function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { `; } +/** This is a demonstration of how to use CustomEvents on the `nightingale-boxplot-track` component. Tooltips are not a part of the component. */ +function handleTooltip(event: CustomEvent, args: Args) { + if (event.detail.eventType !== 'mouseover' && event.detail.eventType !== 'mouseout') return; + + type EventFeatureData = Parameters[1]; + const feature: EventFeatureData = event.detail.feature; + let tooltipDiv = document.getElementById('boxplot-tooltip'); + if (args.tooltips && feature && 'type' in feature && feature.type === 'boxplot') { + // Show tooltip + if (!tooltipDiv) { + tooltipDiv = document.createElement('div'); + tooltipDiv.id = 'boxplot-tooltip'; + Object.assign(tooltipDiv.style, { position: 'fixed', background: 'white', border: '1px solid #ccc', padding: '6px', boxShadow: '0 2px 6px rgba(0,0,0,0.2)', zIndex: '666', fontFamily: 'sans-serif', fontSize: '12px' }); + document.body.appendChild(tooltipDiv); + } + const rows = [ + ['', ...feature.data.map(d => `${d.dataset.name}`)], + ['nDatapoints', ...feature.data.map(d => d.datum?.values.length ?? '-')], + ['nOutliers', ...feature.data.map(d => d.datum?.outliersHigh && d.datum?.outliersLow ? d.datum.outliersHigh.length + d.datum.outliersLow.length : '-')], + ['Max', ...feature.data.map(d => d.datum?.maximum.toFixed(2) ?? '-')], + ['Median', ...feature.data.map(d => d.datum?.median.toFixed(2) ?? '-')], + ['Min', ...feature.data.map(d => d.datum?.minimum.toFixed(2) ?? '-')], + ]; + const rowsHtml = rows.map((row) => `${row.map((cell, index) => `${cell}`).join('')}`).join(''); + tooltipDiv.innerHTML = `${rowsHtml}
`; + const mouseEvent: MouseEvent | undefined = event.detail.parentEvent; + tooltipDiv.style.left = `${(mouseEvent?.clientX ?? 0) + 10}px`; + tooltipDiv.style.top = `${(mouseEvent?.clientY ?? 0) + 10}px`; + } else { + // Hide tooltip + tooltipDiv?.remove(); + } +} + function makeStory(options: { length: number }): Story { + let currentArgs: Args = { ...DefaultArgs }; + const template: Story = (args: Args) => { + currentArgs = args; return html` Use Ctrl+scroll to zoom. @@ -184,27 +223,8 @@ function makeStory(options: { length: number }): Story { story.play = async () => { await customElements.whenDefined("nightingale-boxplot-track"); for (const track of document.getElementsByTagName("nightingale-boxplot-track")) { - (track as any).data = boxplotData; - track.addEventListener('change', (e) => { - const detail = (e as CustomEvent).detail; - if (!('eventType' in detail)) return; - if (detail.eventType !== 'click') return; - const fmtInt = (x: number | undefined) => x?.toFixed(0).padStart(7) ?? ' '; - const fmtFloat = (x: number | undefined) => x?.toFixed(2).padStart(7) ?? ' '; - type EventFeatureData = Parameters[1]; - const feature = detail.feature as EventFeatureData; - if (feature && 'type' in feature && feature.type === 'boxplot') { - console.log('='.repeat(40)) - console.log(['Dataset ', ...feature.data.map(d => d.dataset.name)].join(' | ')) - console.log(['Color ', ...feature.data.map(d => d.dataset.color)].join(' | ')) - console.log(['#Datapoints', ...feature.data.map(d => fmtInt(d.datum?.values.length))].join(' | ')) - console.log(['#Outliers ', ...feature.data.map(d => fmtInt(d.datum?.outliersHigh && d.datum?.outliersLow ? d.datum.outliersHigh.length + d.datum.outliersLow.length : undefined))].join(' | ')) - console.log(['Maximum ', ...feature.data.map(d => fmtFloat(d.datum?.maximum))].join(' | ')) - console.log(['Median ', ...feature.data.map(d => fmtFloat(d.datum?.median))].join(' | ')) - console.log(['Minimum ', ...feature.data.map(d => fmtFloat(d.datum?.minimum))].join(' | ')) - console.log([' ', ...feature.data.map((d, i) => i === feature.datasetIndex ? '-------' : ' ')].join(' ')) - } - }) + (track as NightingaleBoxplotTrack).data = boxplotData; + track.addEventListener('change', event => handleTooltip(event as CustomEvent, currentArgs)); } }; return story; From ceccdb36285e77e28d964797e69ac742e7df8dca Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Fri, 26 Jun 2026 19:16:16 +0100 Subject: [PATCH 25/32] nightingale-boxplot-track: convert some consts to attibutes --- .../src/nightingale-boxplot-track.ts | 94 ++++++++++++------- .../NightingaleBoxplotTrack.stories.ts | 25 ++++- 2 files changed, 80 insertions(+), 39 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 49acaf66a..b936099d0 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -21,10 +21,12 @@ import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; +// TODO: track via decorators? const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", - "y-min", "y-max", "show-axis", "hide-outliers", "zoomed-out-range", + "y-min", "y-max", "show-axis", "zoomed-out-range", + "column-gap", "box-gap", "whisker-width", "outlier-jitter-width", "outlier-radius", "zoom-transition-range", ] satisfies (keyof NightingaleBoxplotTrack)[]; const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; @@ -36,18 +38,7 @@ const MAX_REL_LINE_WIDTH = 0.2; /** Default fill color for boxes (stroke color will be derived from this) */ const DEFAULT_DATA_COLOR = "#cccccc"; -/** Gap between columns relative to base width */ -const COLUMN_GAP = 0.2; -/** Gap between boxes within a column relative to box width */ -const BOX_GAP = 0.1; -/** Whisker width relative to box width */ -const WHISKER_REL_WIDTH = 0.6; -/** Outlier jitter width relative to box width */ -const JITTER_REL_WIDTH = 0.4; -/** Radius for the circles representing outliers */ -const OUTLIER_RADIUS = 2; -/** Column widths in CSS pixels, between which transition from "background" to "foreground" visualization happens */ -const FG_BG_TRANSITION_BASE_WIDTHS = [4, 5] as const; + /** Approximate width of a column in screen pixels, when showing downsampled data in "background" visualization. * (higher value means more responsive but lower-resolution visualization). */ const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 1; @@ -100,10 +91,6 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ converter: OptionalNumberAttributeConverter }) "y-max"?: number; - /** Turns off rendering of outliers */ - @property({ type: Boolean }) - "hide-outliers"?: boolean; - /** What kind of data should be shown as shaded range in zoomed-out visualization */ @property({ converter: EnumAttributeConverter(ZoomedOutRangeOptions, 'whiskers') }) "zoomed-out-range": ZoomedOutRangeOption; @@ -117,9 +104,41 @@ export default class NightingaleBoxplotTrack extends withCanvas( "show-axis"?: boolean; /** Position of secondary highlight in from "position/iDataset", or "" if none. */ - @property({ type: String, reflect: true }) + @property({ type: String, reflect: true }) // not using attribute converter here, because change detection would not work correctly private "nested-highlight": string = ""; + /** Width of the gap between displayed columns relative to the width of one sequence position (allowed range: 0-1, default: 0.2) */ + @property({ type: Number }) + "column-gap": number = 0.2; + + /** Width of the gap between boxes within a column relative to the column width (allowed range: 0-1, default: 0.1) */ + @property({ type: Number }) + "box-gap": number = 0.1; + + /** Whisker width relative to the box width (allowed range: 0-1, default: 0.6) */ + @property({ type: Number }) + "whisker-width": number = 0.6; + + /** Width of random noise (jitter) to be added to the X-position of the outliers, relative to the box width (allowed range: 0-1, default: 0.4) */ + @property({ type: Number }) + "outlier-jitter-width": number = 0.4; + + /** Radius for the circles representing outliers, in CSS pixels (default: 2). Set to 0 to supress outlier rendering. */ + @property({ type: Number }) + "outlier-radius": number = 2; + + /** Column width (in CSS pixels), where the transition from zoomed-out simplified visualization to zoomed-in boxplot visualization happens. + * Can be either one number (for sharp transition) or a hyphen-separated range. + * If there are multiple datasets, the width will be divided by the number of datasets. + * Use "0" to always show zoomed-in visualization (or preferrably "0.5-1" to avoid perfomance issues). + * Use "Infinity" to always show zoomed-out visualization. + * (default: "4-5") + * */ + @property({ type: String }) + "zoom-transition-range": string = '4-5'; + + // TODO: continue here replacing consts by above props + #data?: BoxplotData; private preprocessedData?: PreprocessedData; protected svgHighlights?: Selection; @@ -278,12 +297,12 @@ export default class NightingaleBoxplotTrack extends withCanvas( const fillColor = dataColor; const strokeColor = makeStrokeColor(dataColor)!; - const xBoxOffset = xColumnLeft + (iDataset + 0.5 * BOX_GAP) * xColumnWidth / nDatasets; - const xBoxWidth = (1 - BOX_GAP) * xColumnWidth / nDatasets; + const xBoxOffset = xColumnLeft + (iDataset + 0.5 * this["box-gap"]) * xColumnWidth / nDatasets; + const xBoxWidth = (1 - this["box-gap"]) * xColumnWidth / nDatasets; const xCenter = xBoxOffset + 0.5 * xBoxWidth; - const xWhiskerLeft = xCenter - 0.5 * WHISKER_REL_WIDTH * xBoxWidth; - const xWhiskerRight = xCenter + 0.5 * WHISKER_REL_WIDTH * xBoxWidth; - const xJitterHalfwidth = 0.5 * JITTER_REL_WIDTH * xBoxWidth; + const xWhiskerLeft = xCenter - 0.5 * this["whisker-width"] * xBoxWidth; + const xWhiskerRight = xCenter + 0.5 * this["whisker-width"] * xBoxWidth; + const xJitterHalfwidth = 0.5 * this["outlier-jitter-width"] * xBoxWidth; for (let i = start; i < stop; i++) { const datum = dataset.positions[i]; @@ -322,7 +341,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( ctx.strokeRect(x + xBoxOffset, yMedian - yMedianExtra, xBoxWidth, 2 * yMedianExtra); // Outliers - if (!this["hide-outliers"]) { + if (outlierRadius > 0) { const xJitter = xJitterHalfwidth !== 0 ? randomUniform.source(randomLcg(i * nDatasets + iDataset))(xCenter - xJitterHalfwidth, xCenter + xJitterHalfwidth) : () => xCenter; @@ -435,8 +454,8 @@ export default class NightingaleBoxplotTrack extends withCanvas( const canvasScale = this.canvasScale; const xBaseWidthInCss = this.getSingleBaseWidth(); const xBaseWidth = canvasScale * xBaseWidthInCss; - const xColumnLeft = xBaseWidth * 0.5 * COLUMN_GAP; - const xColumnWidth = xBaseWidth * (1 - COLUMN_GAP); + const xColumnLeft = xBaseWidth * 0.5 * this["column-gap"]; + const xColumnWidth = xBaseWidth * (1 - this["column-gap"]); const xColumnRight = xColumnLeft + xColumnWidth; const xScale = (i: number) => canvasScale * this.getXFromSeqPosition(i); @@ -446,7 +465,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( const yMedianExtra = canvasScale * 1; const lineWidth = canvasScale * Math.min(LINE_WIDTH, MAX_REL_LINE_WIDTH * xBaseWidthInCss); - const outlierRadius = canvasScale * OUTLIER_RADIUS; + const outlierRadius = canvasScale * this["outlier-radius"]; const start = Math.floor(this.getSeqPositionFromX(0) ?? 1); const stop = Math.floor(this.getSeqPositionFromX(this.width) ?? 1) + 1; @@ -482,7 +501,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( const nDatasets = this.preprocessedData?.datasets.length ?? 1; /** Approximate boxplot box width, in CSS pixels. No need to consider column gap and box gap here. */ const boxWidth = this.getSingleBaseWidth() / nDatasets; - const [transitionMin, transitionMax] = FG_BG_TRANSITION_BASE_WIDTHS; + const [transitionMin, transitionMax] = this.getZoomTransitionRange(); if (boxWidth <= transitionMin) { return [0, 1]; @@ -494,6 +513,13 @@ export default class NightingaleBoxplotTrack extends withCanvas( } } + private getZoomTransitionRange(): [number, number] { + const nums = this["zoom-transition-range"].split('-').map(Number); + const [a, b] = nums.length >= 2 ? [nums[0], nums[1]] : [nums[0], nums[0]] + if (isNaN(a) || isNaN(b)) return [0, 0]; + return [a, b]; + } + protected updateHighlight() { if (!this.svgHighlights) return; const highlights = this.svgHighlights @@ -524,8 +550,8 @@ export default class NightingaleBoxplotTrack extends withCanvas( .data(showNestedHighlight ? [nestedHighlightLocation] : []); const baseWidth = this.getSingleBaseWidth(); - const columnOffset = baseWidth * 0.5 * COLUMN_GAP; - const columnWidth = baseWidth * (1 - COLUMN_GAP); + const columnOffset = baseWidth * 0.5 * this["column-gap"]; + const columnWidth = baseWidth * (1 - this["column-gap"]); const datumWidth = columnWidth / nDatasets; highlights @@ -661,7 +687,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( if (continuousPosition === undefined) return undefined; const position = Math.floor(continuousPosition); const fractional = continuousPosition - position; - const fractionalWithinColumn = (fractional - 0.5 * COLUMN_GAP) / (1 - COLUMN_GAP); + const fractionalWithinColumn = (fractional - 0.5 * this["column-gap"]) / (1 - this["column-gap"]); const nDatasets = this.preprocessedData?.datasets.length ?? 1; const iDataset = Math.max(0, Math.min(nDatasets - 1, Math.floor(fractionalWithinColumn * nDatasets))); @@ -891,14 +917,14 @@ type NestedHighlight = [position: number, iDataset: number] | undefined; const NestedHighlight = { format(value: NestedHighlight): string { if (!value) return ''; - return `${value[0]}${this.SEPARATOR}${value[1]}`; + return `${value[0]}/${value[1]}`; }, parse(str: string): NestedHighlight { if (str.trim() === '') return undefined; - const [a, b] = str.split(this.SEPARATOR).map(Number); + const [a, b] = str.split('/').map(Number); return [a, b]; }, - SEPARATOR: '/', }; +// TODO: docs (here and in readme) // TODO: test on new API once available diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index 66cb939bd..e58aae509 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -17,11 +17,16 @@ const DefaultArgs = { "highlight-color": "#EB3BFF22", "margin-color": "#ffffffdd", "margin-left": 30, + "show-axis": true, "y-min": 0 as number | undefined, "y-max": undefined as number | undefined, - "show-axis": true, "show-nested-highlights": true, - "hide-outliers": false, + "column-gap": 0.2, + "box-gap": 0.1, + "whisker-width": 0.6, + "outlier-jitter-width": 0.4, + "outlier-radius": 2, + "zoom-transition-range": "4-5", "zoomed-out-range": 'whiskers', "tooltips": true, }; @@ -31,6 +36,11 @@ const ArgumentTypes: Partial> = { "highlight-event": { control: "select", options: ["onmouseover", "onclick"] }, "y-min": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, "y-max": { control: "select", options: [undefined, 0, 100, 200, 300, 400, 500] }, + "column-gap": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, + "box-gap": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, + "whisker-width": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, + "outlier-jitter-width": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, + "outlier-radius": { control: { type: "number", min: 0, step: 0.5 } }, "zoomed-out-range": { control: "select", options: ZoomedOutRangeOptions }, }; @@ -103,7 +113,7 @@ function nightingaleNavigation(args: Args & { length: number }) { margin-color=${args["margin-color"]} margin-left=${args["margin-left"]} show-highlight - display-end="100" + display-end="30" > `; @@ -146,12 +156,17 @@ function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { margin-bottom=10 margin-left=${args["margin-left"]} use-ctrl-to-zoom + ?show-axis=${args["show-axis"]} y-min=${args["y-min"]} y-max=${args["y-max"]} - ?show-axis=${args["show-axis"]} ?show-nested-highlights=${args["show-nested-highlights"]} - ?hide-outliers=${args["hide-outliers"]} + column-gap=${args["column-gap"]} + box-gap=${args["box-gap"]} + whisker-width=${args["whisker-width"]} + outlier-jitter-width=${args["outlier-jitter-width"]} + outlier-radius=${args["outlier-radius"]} zoomed-out-range=${args["zoomed-out-range"]} + zoom-transition-range=${args["zoom-transition-range"]} > `; From 16a58d0253a4303ceb347c54b7d59ff408562b13 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Mon, 29 Jun 2026 13:38:17 +0100 Subject: [PATCH 26/32] nightingale-boxplot-track: review docstrings --- .../src/nightingale-boxplot-track.ts | 150 ++++++++++++------ .../src/utils/bindEvents.ts | 10 +- .../src/utils/refresher.ts | 5 +- .../NightingaleBoxplotTrack.stories.ts | 8 +- 4 files changed, 117 insertions(+), 56 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index b936099d0..a5a49181c 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -21,19 +21,18 @@ import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; -// TODO: track via decorators? const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", - "y-min", "y-max", "show-axis", "zoomed-out-range", + "y-min", "y-max", "show-axis", "zoomed-out-outline", "column-gap", "box-gap", "whisker-width", "outlier-jitter-width", "outlier-radius", "zoom-transition-range", ] satisfies (keyof NightingaleBoxplotTrack)[]; const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; -/** Line width for rectangle stroke */ +/** Line width for rectangle stroke, in CSS pixels */ const LINE_WIDTH = 1; -/** Maximum line width relative to column width (overrides `LINE_WIDTH` when zoomed out too much) */ +/** Maximum line width relative to base width (width of one sequence position) (overrides `LINE_WIDTH` when zoomed out too much) */ const MAX_REL_LINE_WIDTH = 0.2; /** Default fill color for boxes (stroke color will be derived from this) */ @@ -43,18 +42,21 @@ const DEFAULT_DATA_COLOR = "#cccccc"; * (higher value means more responsive but lower-resolution visualization). */ const BG_DOWNSAMPLING_PIXELS_PER_COLUMN = 1; +/** Return stroke color matching a given fill color (darker version of the same color) */ function makeStrokeColor(dataColor: string): string | undefined { return color(dataColor)?.darker(2).formatHex(); } +/** Data for a single boxplot (subcolumn) in the visualization (i.e. a single sequence position for a single dataset) */ interface BoxplotDatum { /** Position in the sequence (1-based) */ position: number, - /** Array of values of independent variable at the position */ + /** Array of values of the independent variable at the position */ values: ArrayLike, } +/** Data for a single dataset in the visualization (i.e. all sequence positions for a single dataset) */ export interface BoxplotDataset { /** Name of the dataset */ name: string, @@ -64,13 +66,18 @@ export interface BoxplotDataset { positions: BoxplotDatum[], } -/** Type for `NightingaleBoxplotTrack.data` */ +/** Data for `NightingaleBoxplotTrack`. + * A list of one or more datasets, where each dataset contains boxplot data for individual positions in the sequence. + * In case of multiple datasets, the boxplots for each dataset will be shown side-by-side at each sequence position. */ export type BoxplotData = BoxplotDataset[]; -export const ZoomedOutRangeOptions = ['extremes', 'whiskers', 'box', 'none'] as const; -export type ZoomedOutRangeOption = typeof ZoomedOutRangeOptions[number]; +/** Options for what kind of data can be shown as the shaded outline in zoomed-out visualization */ +export const ZoomedOutOutlineOptions = ['extremes', 'whiskers', 'box', 'none'] as const; +/** Options for what kind of data can be shown as the shaded outline in zoomed-out visualization */ +export type ZoomedOutOutlineOption = typeof ZoomedOutOutlineOptions[number]; +/** A Nightingale track for showing distribution of a variable on each residue position via boxplots */ @customElementOnce("nightingale-boxplot-track") export default class NightingaleBoxplotTrack extends withCanvas( withManager( @@ -83,19 +90,19 @@ export default class NightingaleBoxplotTrack extends withCanvas( ) ) ) { - /** Bottom limit for Y-axis (default: minimum computed from data) */ + /** Bottom limit for Y-axis (default: minimum computed from data). */ @property({ converter: OptionalNumberAttributeConverter }) "y-min"?: number; - /** Top limit for Y-axis (default: maximum computed from data) */ + /** Top limit for Y-axis (default: maximum computed from data). */ @property({ converter: OptionalNumberAttributeConverter }) "y-max"?: number; - /** What kind of data should be shown as shaded range in zoomed-out visualization */ - @property({ converter: EnumAttributeConverter(ZoomedOutRangeOptions, 'whiskers') }) - "zoomed-out-range": ZoomedOutRangeOption; + /** What kind of data should be shown as the shaded outline in zoomed-out visualization. */ + @property({ converter: EnumAttributeConverter(ZoomedOutOutlineOptions, 'whiskers') }) + "zoomed-out-outline": ZoomedOutOutlineOption; - /** Turn on showing secondary highlights, which indicate selected subcolumn within a column (in case of multiple dataset). */ + /** Turn on showing nested highlights, which indicate selected subcolumn within a column (in case of multiple datasets). */ @property({ type: Boolean }) "show-nested-highlights"?: boolean; @@ -103,23 +110,23 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ type: Boolean }) "show-axis"?: boolean; - /** Position of secondary highlight in from "position/iDataset", or "" if none. */ + /** Position of nested highlight in form "position/iDataset", or "" if none. */ @property({ type: String, reflect: true }) // not using attribute converter here, because change detection would not work correctly private "nested-highlight": string = ""; - /** Width of the gap between displayed columns relative to the width of one sequence position (allowed range: 0-1, default: 0.2) */ + /** Width of the gap between displayed columns, relative to the base width (width of one sequence position) (allowed range: 0-1, default: 0.2). */ @property({ type: Number }) "column-gap": number = 0.2; - /** Width of the gap between boxes within a column relative to the column width (allowed range: 0-1, default: 0.1) */ + /** Width of the gap between boxes within a column, relative to the column width (allowed range: 0-1, default: 0.1). */ @property({ type: Number }) "box-gap": number = 0.1; - /** Whisker width relative to the box width (allowed range: 0-1, default: 0.6) */ + /** Boxplot whisker width, relative to the box width (allowed range: 0-1, default: 0.6). */ @property({ type: Number }) "whisker-width": number = 0.6; - /** Width of random noise (jitter) to be added to the X-position of the outliers, relative to the box width (allowed range: 0-1, default: 0.4) */ + /** Width of random noise (jitter) to be added to the X-position of the outliers, relative to the box width (allowed range: 0-1, default: 0.4). */ @property({ type: Number }) "outlier-jitter-width": number = 0.4; @@ -127,22 +134,23 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ type: Number }) "outlier-radius": number = 2; - /** Column width (in CSS pixels), where the transition from zoomed-out simplified visualization to zoomed-in boxplot visualization happens. + /** Column width(s), in CSS pixels, where the transition from zoomed-out simplified visualization to zoomed-in boxplot visualization happens. * Can be either one number (for sharp transition) or a hyphen-separated range. - * If there are multiple datasets, the width will be divided by the number of datasets. + * If there are multiple datasets, this width(s) will be divided by the number of datasets. * Use "0" to always show zoomed-in visualization (or preferrably "0.5-1" to avoid perfomance issues). * Use "Infinity" to always show zoomed-out visualization. - * (default: "4-5") - * */ + * (default: "4-5") */ @property({ type: String }) - "zoom-transition-range": string = '4-5'; + "zoom-transition-range": string = "4-5"; - // TODO: continue here replacing consts by above props #data?: BoxplotData; private preprocessedData?: PreprocessedData; + /** D3 selection for SVG group for highlights (excluding nested highlights) */ protected svgHighlights?: Selection; + /** D3 selection for SVG group for nested highlights */ protected svgNestedHighlights?: Selection; + /** D3 selection for SVG group for margins */ protected svgMargins?: Selection; @@ -151,6 +159,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( if (this.data) this.createTrack(); } + /** Get or set the data for the boxplot track */ get data(): BoxplotData | undefined { return this.#data; } @@ -159,6 +168,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( this.preprocessedData = data ? preprocessData(data) : undefined; this.createTrack(); } + /** Return the range of Y values corresponding to bottom and top of the viewport (excluding margins) */ getYLimits(): [yMin: number, yMax: number] { const yMin = this["y-min"] ?? this.preprocessedData?.yLimits.min ?? 0; @@ -200,13 +210,14 @@ export default class NightingaleBoxplotTrack extends withCanvas( } } - refresh() { + protected refresh() { this.requestDraw(); this.updateHighlight(); this.updateNestedHighlight(); this.updateMargins(); } + /** Stamp for tracking changes to the drawing parameters (when the stamp changes, canvas redraw is needed) */ private readonly _drawStamp = new Stamp(() => { const stamp: Record = { "data": this["data"], @@ -238,6 +249,8 @@ export default class NightingaleBoxplotTrack extends withCanvas( this.drawData(this.canvasCtx); } + /** Get a clean auxiliary offscreen canvas for drawing, of the same size as the main canvas. + * Only one offscreen canvas can be use at any time, because it is reused. */ private getOffscreenCanvas(): [canvas: HTMLCanvasElement, canvasContext?: CanvasRenderingContext2D] { this._offscreenCanvas ??= document.createElement("canvas"); const width = this.canvasCtx?.canvas.width ?? 1; @@ -249,14 +262,18 @@ export default class NightingaleBoxplotTrack extends withCanvas( this._offscreenCanvas.height = height; } const ctx = this._offscreenCanvas.getContext('2d') ?? undefined; + this.clearCanvas(ctx); return [this._offscreenCanvas, ctx]; } private _offscreenCanvas?: HTMLCanvasElement; - private clearCanvas(ctx: CanvasRenderingContext2D) { + /** Clear the canvas. */ + private clearCanvas(ctx: CanvasRenderingContext2D | undefined) { + if (!ctx) return; ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); } + /** Draw the data on the canvas. */ private drawData(ctx: CanvasRenderingContext2D) { const [fgAlpha, bgAlpha] = this.getFgBgOpacity(); @@ -270,10 +287,9 @@ export default class NightingaleBoxplotTrack extends withCanvas( // Draw foreground visualization directly this.drawBoxplotVisualization(ctx); } else if (fgAlpha > 0) { - // Draw foreground visualization via an auxiliary canvas (cannot be drawn directly to the main canvas, because overlapping outliers would create opacity > fgAlpha) + // Draw foreground visualization via an auxiliary canvas (cannot be drawn directly to the main canvas, because overlapping outliers would add up and create opacity > fgAlpha) const [auxCanvas, auxCtx] = this.getOffscreenCanvas(); if (auxCtx) { - this.clearCanvas(auxCtx); this.drawBoxplotVisualization(auxCtx); ctx.globalAlpha = fgAlpha; ctx.drawImage(auxCanvas, 0, 0); @@ -393,49 +409,50 @@ export default class NightingaleBoxplotTrack extends withCanvas( const yMedianLow = (j: number) => yScale(medianLow[j]) + yMedianExtra; const yMedianHigh = (j: number) => yScale(medianHigh[j]) - yMedianExtra; - let yRangeLow: ((j: number) => number) | undefined; - let yRangeHigh: ((j: number) => number) | undefined; - switch (this['zoomed-out-range']) { + let yOutlineLow: ((j: number) => number) | undefined; + let yOulineHigh: ((j: number) => number) | undefined; + switch (this['zoomed-out-outline']) { case 'extremes': { const minimum = downsamplers.minimum.getDownsampledByScale(scale); const maximum = downsamplers.maximum.getDownsampledByScale(scale); - yRangeLow = (j: number) => yScale(minimum[j]); - yRangeHigh = (j: number) => yScale(maximum[j]); + yOutlineLow = (j: number) => yScale(minimum[j]); + yOulineHigh = (j: number) => yScale(maximum[j]); break; } case 'whiskers': { const whiskerLow = downsamplers.whiskerLow.getDownsampledByScale(scale); const whiskerHigh = downsamplers.whiskerHigh.getDownsampledByScale(scale); - yRangeLow = (j: number) => yScale(whiskerLow[j]); - yRangeHigh = (j: number) => yScale(whiskerHigh[j]); + yOutlineLow = (j: number) => yScale(whiskerLow[j]); + yOulineHigh = (j: number) => yScale(whiskerHigh[j]); break; } case 'box': { const boxLow = downsamplers.boxLow.getDownsampledByScale(scale); const boxHigh = downsamplers.boxHigh.getDownsampledByScale(scale); - yRangeLow = (j: number) => yScale(boxLow[j]); - yRangeHigh = (j: number) => yScale(boxHigh[j]); + yOutlineLow = (j: number) => yScale(boxLow[j]); + yOulineHigh = (j: number) => yScale(boxHigh[j]); break; } case 'none': { - yRangeLow = undefined; - yRangeHigh = undefined; + yOutlineLow = undefined; + yOulineHigh = undefined; break; } } + // j-prefixed variables refer to indices in the downsampled data const jStart = Math.max(0, Math.floor((start - offset) / exactScale)); const jStop = Math.min(medianLow.length, Math.ceil((stop - offset) / exactScale)); const jSegments = getContiguousSegments(jStart, jStop, j => !isNaN(medianLow[j])); const jXScale = (j: number) => xScale(offset + j * exactScale); - // Shaded range - if (yRangeLow && yRangeHigh) { + // Shaded outline + if (yOutlineLow && yOulineHigh) { for (const segment of jSegments) { ctx.globalAlpha = weightAlpha(0.25 * alpha, weight); ctx.fillStyle = fillColor; - drawSilhouette(ctx, segment, jXScale, yRangeLow, yRangeHigh, [xColumnLeft, xColumnRight], 'fill'); + drawSilhouette(ctx, segment, jXScale, yOutlineLow, yOulineHigh, [xColumnLeft, xColumnRight], 'fill'); } } @@ -450,6 +467,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( } } + /** Get a set of shared measurement variables for drawing the boxplot visualizations. */ private getDrawingMeasurements() { const canvasScale = this.canvasScale; const xBaseWidthInCss = this.getSingleBaseWidth(); @@ -481,7 +499,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( xColumnWidth, /** Scale from sequence position to horizontal offset of the slot in canvas space (does not consider column gap) */ xScale, - /** Scale from value of independent variable to vertical position in canvas space */ + /** Scale from value of the independent variable to vertical position in canvas space */ yScale, /** Amount for vertically thickening the median rectangle, in canvas space */ yMedianExtra, @@ -520,6 +538,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( return [a, b]; } + /** Update the SVG highlights (excluding nested highlights) */ protected updateHighlight() { if (!this.svgHighlights) return; const highlights = this.svgHighlights @@ -539,6 +558,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( highlights.exit().remove(); } + /** Update the SVG nested highlights (indicate the pointed subcolumn within the highlighted column) */ protected updateNestedHighlight() { if (!this.svgNestedHighlights) return; const nestedHighlightLocation = NestedHighlight.parse(this["nested-highlight"]); @@ -568,6 +588,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( highlights.exit().remove(); } + /** Update the SVG margins */ protected updateMargins() { this.renderMarginOnGroup(this.svgMargins); } @@ -668,6 +689,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( if (withHighlight) { this["nested-highlight"] = NestedHighlight.format(undefined); } + const customEvent = createEvent( "mouseout", null, @@ -682,6 +704,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( this.dispatchEvent(customEvent); } + /** Get the datum pointed by the mouse cursor at the given SVG coordinates */ private getPointedDatum(svgX: number, _svgY: number) { const continuousPosition = this.getSeqPositionFromX(svgX); if (continuousPosition === undefined) return undefined; @@ -706,9 +729,10 @@ export default class NightingaleBoxplotTrack extends withCanvas( } +/** Preprocessed data for the boxplot track */ type PreprocessedData = ReturnType; -type PreprocessedDataset = ReturnType; +/** Preprocess data for the boxplot track */ function preprocessData(data: BoxplotData) { const preprocessedDatasets = data.map(preprocessDataset); return { @@ -717,6 +741,10 @@ function preprocessData(data: BoxplotData) { } } +/** Preprocessed data for a single dataset */ +type PreprocessedDataset = ReturnType; + +/** Preprocess data for a single dataset */ function preprocessDataset(dataset: BoxplotDataset) { const preprocessedPositions: PreprocessedPositions = {}; @@ -726,26 +754,39 @@ function preprocessDataset(dataset: BoxplotDataset) { return { ...dataset, positions: preprocessedPositions, - downsampling: getDownsamplerForDataset(preprocessedPositions), + downsampling: getDownsamplersForDataset(preprocessedPositions), }; } +/** Preprocessed data for a single position in a single dataset */ interface PreprocessedDatum { + /** Position in the sequence */ position: number, + /** All values at this position, sorted */ values: Float32Array, + /** Median value */ median: number, + /** Lower bound of the box (lower quartile) */ boxLow: number, + /** Upper bound of the box (upper quartile) */ boxHigh: number, + /** Lower bound of the whisker (lower quartile - 1.5 * IQR) */ whiskerLow: number, + /** Upper bound of the whisker (upper quartile + 1.5 * IQR) */ whiskerHigh: number, + /** Minimum value */ minimum: number, + /** Maximum value */ maximum: number, + /** Outliers below the whisker */ outliersLow: Float32Array, + /** Outliers above the whisker */ outliersHigh: Float32Array, } type PreprocessedPositions = { [position: number]: PreprocessedDatum } +/** Preprocess data for a single position in a dataset */ function preprocessDatum(datum: BoxplotDatum): PreprocessedDatum { const sorted = sortIfNeeded(new Float32Array(datum.values)); const median = getQuantile(sorted, 0.5); @@ -803,7 +844,7 @@ export function getQuantile(sortedValues: ArrayLike, p: number) { return sortedValues[i] * (1 - q) + sortedValues[i + 1] * q; } -/** Gets the Y-axis limits for the given preprocessed data */ +/** Get automatic Y-axis limits for the given preprocessed data (minimum and maximum value of the whole dataset). */ function getExtremes(data: PreprocessedDataset[]) { let min = Infinity; let max = -Infinity; @@ -822,6 +863,8 @@ function getExtremes(data: PreprocessedDataset[]) { }; } +/** Get contiguous segments within the integer range [start, stop), where `isPresent` returns true for each index. + * Return segments as an array of [start, stop) pairs. */ function getContiguousSegments(start: number, stop: number, isPresent: (i: number) => boolean): [start: number, stop: number][] { const segments: [number, number][] = []; for (let i = start; i < stop; i++) { @@ -836,6 +879,7 @@ function getContiguousSegments(start: number, stop: number, isPresent: (i: numbe return segments; } +/** Draw a silhouette for the given segments. */ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, number], getX: (i: number) => number, getYLow: (i: number) => number, getYHigh: (i: number) => number, [columnOffsetLeft, columnOffsetRight]: [number, number], style: 'fill' | 'stroke' | 'fill+stroke') { ctx.beginPath(); for (let i = sStart; i < sStop; i++) { @@ -854,6 +898,7 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, if (style.includes('stroke')) ctx.stroke(); } +/** Convert preprocessed dataset from array of objects to object of arrays, for downsampling. */ function datasetToArrays(data: PreprocessedPositions) { const positions = Object.values(data).map(d => d.position); const offset = min(positions) ?? 1; @@ -882,7 +927,8 @@ function datasetToArrays(data: PreprocessedPositions) { }; } -function getDownsamplerForDataset(data: PreprocessedPositions) { +/** Get a set of downsamplers for each data type (median, minimum, ...) for a preprocessed dataset */ +function getDownsamplersForDataset(data: PreprocessedPositions) { const { offset, length, arrays } = datasetToArrays(data); return { offset, @@ -900,6 +946,9 @@ function getDownsamplerForDataset(data: PreprocessedPositions) { }; } +/** Adjust opacity value (`alpha`) for rendering two overlaying visualizations. + * This is done in such a way that overlaying of two visualizations with weights `weight` and `1-weight` will give the desired total opacity `alpha` in the overlapping area. + * (Naive `alpha*weight` would result in overlapping areas being more transparent than intended). */ function weightAlpha(alpha: number, weight: number) { if (alpha === 1) { // Avoid ill-defined expressions (division by zero) @@ -913,12 +962,15 @@ function weightAlpha(alpha: number, weight: number) { return 1 - transpWCorrected; } +/** Location of nested highlight (sequence position and 0-based dataset index within the position). */ type NestedHighlight = [position: number, iDataset: number] | undefined; const NestedHighlight = { + /** Format `NestedHighlight` in the form "position/iDataset", or "" if undefined. */ format(value: NestedHighlight): string { if (!value) return ''; return `${value[0]}/${value[1]}`; }, + /** Format `NestedHighlight` from the form "position/iDataset", or "" if undefined. */ parse(str: string): NestedHighlight { if (str.trim() === '') return undefined; const [a, b] = str.split('/').map(Number); @@ -926,5 +978,5 @@ const NestedHighlight = { }, }; -// TODO: docs (here and in readme) +// TODO: docs in readme // TODO: test on new API once available diff --git a/packages/nightingale-new-core/src/utils/bindEvents.ts b/packages/nightingale-new-core/src/utils/bindEvents.ts index d304b1d66..57ddd51c5 100644 --- a/packages/nightingale-new-core/src/utils/bindEvents.ts +++ b/packages/nightingale-new-core/src/utils/bindEvents.ts @@ -22,14 +22,20 @@ type SequenceBaseData = { }; type BoxplotData = { type: "boxplot"; + /** Position in the sequence */ position: number; + /** Data for the boxplot at this position (from all datasets) */ data: { + /** Common properties of the whole dataset */ dataset: { name: string; color: string; }; - datum?: { + /** Boxplot data at this position */ + datum: { + /** Position in the sequence */ position: number; + /** All values of the independent variable at this position */ values: Float32Array; median: number; boxLow: number; @@ -40,7 +46,7 @@ type BoxplotData = { maximum: number; outliersLow: Float32Array; outliersHigh: Float32Array; - }; + } | undefined; }[]; /** Index into `data`, indicates which dataset is being pointed at */ datasetIndex: number; diff --git a/packages/nightingale-new-core/src/utils/refresher.ts b/packages/nightingale-new-core/src/utils/refresher.ts index 210fc17f4..a24b024d7 100644 --- a/packages/nightingale-new-core/src/utils/refresher.ts +++ b/packages/nightingale-new-core/src/utils/refresher.ts @@ -64,14 +64,17 @@ export class Stamp { private currentStampValue: Record = {}; /** Update the current stamp value (using the return value of `stampFunction`). - * Return `true` if the stamp value has changed since the last `update`, `false` otherwise. + * Return an object with old and new stamp value and whether it has changed. * (Stamp value comparison is performed by shallow object comparison.) */ update() { const oldValue = this.currentStampValue; this.currentStampValue = this.stampFunction(); return { + /** The old stamp value (before the update) */ oldValue, + /** The new stamp value (after the update) */ newValue: this.currentStampValue, + /** Whether the stamp value has changed */ changed: !objectShallowEquals(oldValue, this.currentStampValue), }; } diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index e58aae509..127afad58 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -3,7 +3,7 @@ import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-boxplot-track/src/index"; import NightingaleBoxplotTrack from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; -import { type BoxplotData, ZoomedOutRangeOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; +import { type BoxplotData, ZoomedOutOutlineOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; import sampleBoxplotData from "../../packages/nightingale-boxplot-track/tests/mockData/sample-1.json"; @@ -27,7 +27,7 @@ const DefaultArgs = { "outlier-jitter-width": 0.4, "outlier-radius": 2, "zoom-transition-range": "4-5", - "zoomed-out-range": 'whiskers', + "zoomed-out-outline": 'whiskers', "tooltips": true, }; type Args = typeof DefaultArgs; @@ -41,7 +41,7 @@ const ArgumentTypes: Partial> = { "whisker-width": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, "outlier-jitter-width": { control: { type: "number", min: 0, max: 1, step: 0.05 } }, "outlier-radius": { control: { type: "number", min: 0, step: 0.5 } }, - "zoomed-out-range": { control: "select", options: ZoomedOutRangeOptions }, + "zoomed-out-outline": { control: "select", options: ZoomedOutOutlineOptions }, }; @@ -165,7 +165,7 @@ function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { whisker-width=${args["whisker-width"]} outlier-jitter-width=${args["outlier-jitter-width"]} outlier-radius=${args["outlier-radius"]} - zoomed-out-range=${args["zoomed-out-range"]} + zoomed-out-outline=${args["zoomed-out-outline"]} zoom-transition-range=${args["zoom-transition-range"]} > From 2506e273d0db901c5545082a4d375ffc199e49ae Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Mon, 29 Jun 2026 13:43:48 +0100 Subject: [PATCH 27/32] nightingale-boxplot-track: unify quotemark style --- .../src/nightingale-boxplot-track.ts | 56 ++++++++++--------- .../NightingaleBoxplotTrack.stories.ts | 42 +++++++------- 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index a5a49181c..3810a86dc 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -72,7 +72,7 @@ export interface BoxplotDataset { export type BoxplotData = BoxplotDataset[]; /** Options for what kind of data can be shown as the shaded outline in zoomed-out visualization */ -export const ZoomedOutOutlineOptions = ['extremes', 'whiskers', 'box', 'none'] as const; +export const ZoomedOutOutlineOptions = ["extremes", "whiskers", "box", "none"] as const; /** Options for what kind of data can be shown as the shaded outline in zoomed-out visualization */ export type ZoomedOutOutlineOption = typeof ZoomedOutOutlineOptions[number]; @@ -99,7 +99,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( "y-max"?: number; /** What kind of data should be shown as the shaded outline in zoomed-out visualization. */ - @property({ converter: EnumAttributeConverter(ZoomedOutOutlineOptions, 'whiskers') }) + @property({ converter: EnumAttributeConverter(ZoomedOutOutlineOptions, "whiskers") }) "zoomed-out-outline": ZoomedOutOutlineOption; /** Turn on showing nested highlights, which indicate selected subcolumn within a column (in case of multiple datasets). */ @@ -261,7 +261,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( if (this._offscreenCanvas.height !== height) { this._offscreenCanvas.height = height; } - const ctx = this._offscreenCanvas.getContext('2d') ?? undefined; + const ctx = this._offscreenCanvas.getContext("2d") ?? undefined; this.clearCanvas(ctx); return [this._offscreenCanvas, ctx]; } @@ -411,29 +411,29 @@ export default class NightingaleBoxplotTrack extends withCanvas( let yOutlineLow: ((j: number) => number) | undefined; let yOulineHigh: ((j: number) => number) | undefined; - switch (this['zoomed-out-outline']) { - case 'extremes': { + switch (this["zoomed-out-outline"]) { + case "extremes": { const minimum = downsamplers.minimum.getDownsampledByScale(scale); const maximum = downsamplers.maximum.getDownsampledByScale(scale); yOutlineLow = (j: number) => yScale(minimum[j]); yOulineHigh = (j: number) => yScale(maximum[j]); break; } - case 'whiskers': { + case "whiskers": { const whiskerLow = downsamplers.whiskerLow.getDownsampledByScale(scale); const whiskerHigh = downsamplers.whiskerHigh.getDownsampledByScale(scale); yOutlineLow = (j: number) => yScale(whiskerLow[j]); yOulineHigh = (j: number) => yScale(whiskerHigh[j]); break; } - case 'box': { + case "box": { const boxLow = downsamplers.boxLow.getDownsampledByScale(scale); const boxHigh = downsamplers.boxHigh.getDownsampledByScale(scale); yOutlineLow = (j: number) => yScale(boxLow[j]); yOulineHigh = (j: number) => yScale(boxHigh[j]); break; } - case 'none': { + case "none": { yOutlineLow = undefined; yOulineHigh = undefined; break; @@ -452,7 +452,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( for (const segment of jSegments) { ctx.globalAlpha = weightAlpha(0.25 * alpha, weight); ctx.fillStyle = fillColor; - drawSilhouette(ctx, segment, jXScale, yOutlineLow, yOulineHigh, [xColumnLeft, xColumnRight], 'fill'); + drawSilhouette(ctx, segment, jXScale, yOutlineLow, yOulineHigh, [xColumnLeft, xColumnRight], "fill"); } } @@ -461,7 +461,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( ctx.globalAlpha = weightAlpha(0.5 * alpha, weight); ctx.fillStyle = strokeColor; ctx.strokeStyle = strokeColor; - drawSilhouette(ctx, segment, jXScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], 'fill+stroke'); + drawSilhouette(ctx, segment, jXScale, yMedianLow, yMedianHigh, [xColumnLeft, xColumnRight], "fill+stroke"); } } } @@ -532,7 +532,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( } private getZoomTransitionRange(): [number, number] { - const nums = this["zoom-transition-range"].split('-').map(Number); + const nums = this["zoom-transition-range"].split("-").map(Number); const [a, b] = nums.length >= 2 ? [nums[0], nums[1]] : [nums[0], nums[0]] if (isNaN(a) || isNaN(b)) return [0, 0]; return [a, b]; @@ -716,7 +716,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( type EventFeatureData = Parameters[1]; const feature: EventFeatureData = { - type: 'boxplot', + type: "boxplot", position: position, data: this.preprocessedData?.datasets.map(dataset => ({ dataset: { name: dataset.name, color: dataset.color ?? DEFAULT_DATA_COLOR }, @@ -880,7 +880,11 @@ function getContiguousSegments(start: number, stop: number, isPresent: (i: numbe } /** Draw a silhouette for the given segments. */ -function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, number], getX: (i: number) => number, getYLow: (i: number) => number, getYHigh: (i: number) => number, [columnOffsetLeft, columnOffsetRight]: [number, number], style: 'fill' | 'stroke' | 'fill+stroke') { +function drawSilhouette( + ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, number], + getX: (i: number) => number, getYLow: (i: number) => number, getYHigh: (i: number) => number, + [columnOffsetLeft, columnOffsetRight]: [number, number], style: "fill" | "stroke" | "fill+stroke" +) { ctx.beginPath(); for (let i = sStart; i < sStop; i++) { const x = getX(i); @@ -894,8 +898,8 @@ function drawSilhouette(ctx: CanvasRenderingContext2D, [sStart, sStop]: [number, ctx.lineTo(x + columnOffsetRight, yLow); ctx.lineTo(x + columnOffsetLeft, yLow); } - if (style.includes('fill')) ctx.fill(); - if (style.includes('stroke')) ctx.stroke(); + if (style.includes("fill")) ctx.fill(); + if (style.includes("stroke")) ctx.stroke(); } /** Convert preprocessed dataset from array of objects to object of arrays, for downsampling. */ @@ -934,14 +938,14 @@ function getDownsamplersForDataset(data: PreprocessedPositions) { offset, length, downsamplers: { - medianLow: new Downsampler(arrays.median, 'min'), - medianHigh: new Downsampler(arrays.median, 'max'), - boxLow: new Downsampler(arrays.boxLow, 'min'), - boxHigh: new Downsampler(arrays.boxHigh, 'max'), - whiskerLow: new Downsampler(arrays.whiskerLow, 'min'), - whiskerHigh: new Downsampler(arrays.whiskerHigh, 'max'), - minimum: new Downsampler(arrays.minimum, 'min'), - maximum: new Downsampler(arrays.maximum, 'max'), + medianLow: new Downsampler(arrays.median, "min"), + medianHigh: new Downsampler(arrays.median, "max"), + boxLow: new Downsampler(arrays.boxLow, "min"), + boxHigh: new Downsampler(arrays.boxHigh, "max"), + whiskerLow: new Downsampler(arrays.whiskerLow, "min"), + whiskerHigh: new Downsampler(arrays.whiskerHigh, "max"), + minimum: new Downsampler(arrays.minimum, "min"), + maximum: new Downsampler(arrays.maximum, "max"), }, }; } @@ -967,13 +971,13 @@ type NestedHighlight = [position: number, iDataset: number] | undefined; const NestedHighlight = { /** Format `NestedHighlight` in the form "position/iDataset", or "" if undefined. */ format(value: NestedHighlight): string { - if (!value) return ''; + if (!value) return ""; return `${value[0]}/${value[1]}`; }, /** Format `NestedHighlight` from the form "position/iDataset", or "" if undefined. */ parse(str: string): NestedHighlight { - if (str.trim() === '') return undefined; - const [a, b] = str.split('/').map(Number); + if (str.trim() === "") return undefined; + const [a, b] = str.split("/").map(Number); return [a, b]; }, }; diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index 127afad58..946b3970e 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -27,7 +27,7 @@ const DefaultArgs = { "outlier-jitter-width": 0.4, "outlier-radius": 2, "zoom-transition-range": "4-5", - "zoomed-out-outline": 'whiskers', + "zoomed-out-outline": "whiskers", "tooltips": true, }; type Args = typeof DefaultArgs; @@ -66,8 +66,8 @@ function prepareBoxplotData(data: { positions: { position: number, values: numbe return [ { - name: 'Data1', - color: '#0088ff', + name: "Data1", + color: "#0088ff", positions: positions, // positions: remove(positions, 3, 4, 5, 6, 35), // DEBUG // positions: remove(positions, 3, 4, 5, 6, @@ -77,14 +77,14 @@ function prepareBoxplotData(data: { positions: { position: number, values: numbe // ), // DEBUG }, { - name: 'Data2', - color: '#ff8800', + name: "Data2", + color: "#ff8800", // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG }, // { - // name: 'Data3', - // color: '#00aa44', + // name: "Data3", + // color: "#00aa44", // // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.93) })), 1, 7), // DEBUG // }, @@ -174,28 +174,28 @@ function nightingaleBoxplotTrack(args: Args & { length: number, id: number }) { /** This is a demonstration of how to use CustomEvents on the `nightingale-boxplot-track` component. Tooltips are not a part of the component. */ function handleTooltip(event: CustomEvent, args: Args) { - if (event.detail.eventType !== 'mouseover' && event.detail.eventType !== 'mouseout') return; + if (event.detail.eventType !== "mouseover" && event.detail.eventType !== "mouseout") return; type EventFeatureData = Parameters[1]; const feature: EventFeatureData = event.detail.feature; - let tooltipDiv = document.getElementById('boxplot-tooltip'); - if (args.tooltips && feature && 'type' in feature && feature.type === 'boxplot') { + let tooltipDiv = document.getElementById("boxplot-tooltip"); + if (args.tooltips && feature && "type" in feature && feature.type === "boxplot") { // Show tooltip if (!tooltipDiv) { - tooltipDiv = document.createElement('div'); - tooltipDiv.id = 'boxplot-tooltip'; - Object.assign(tooltipDiv.style, { position: 'fixed', background: 'white', border: '1px solid #ccc', padding: '6px', boxShadow: '0 2px 6px rgba(0,0,0,0.2)', zIndex: '666', fontFamily: 'sans-serif', fontSize: '12px' }); + tooltipDiv = document.createElement("div"); + tooltipDiv.id = "boxplot-tooltip"; + Object.assign(tooltipDiv.style, { position: "fixed", background: "white", border: "1px solid #ccc", padding: "6px", boxShadow: "0 2px 6px rgba(0,0,0,0.2)", zIndex: "666", fontFamily: "sans-serif", fontSize: "12px" }); document.body.appendChild(tooltipDiv); } const rows = [ - ['', ...feature.data.map(d => `${d.dataset.name}`)], - ['nDatapoints', ...feature.data.map(d => d.datum?.values.length ?? '-')], - ['nOutliers', ...feature.data.map(d => d.datum?.outliersHigh && d.datum?.outliersLow ? d.datum.outliersHigh.length + d.datum.outliersLow.length : '-')], - ['Max', ...feature.data.map(d => d.datum?.maximum.toFixed(2) ?? '-')], - ['Median', ...feature.data.map(d => d.datum?.median.toFixed(2) ?? '-')], - ['Min', ...feature.data.map(d => d.datum?.minimum.toFixed(2) ?? '-')], + ["", ...feature.data.map(d => `${d.dataset.name}`)], + ["nDatapoints", ...feature.data.map(d => d.datum?.values.length ?? "-")], + ["nOutliers", ...feature.data.map(d => d.datum?.outliersHigh && d.datum?.outliersLow ? d.datum.outliersHigh.length + d.datum.outliersLow.length : "-")], + ["Max", ...feature.data.map(d => d.datum?.maximum.toFixed(2) ?? "-")], + ["Median", ...feature.data.map(d => d.datum?.median.toFixed(2) ?? "-")], + ["Min", ...feature.data.map(d => d.datum?.minimum.toFixed(2) ?? "-")], ]; - const rowsHtml = rows.map((row) => `${row.map((cell, index) => `${cell}`).join('')}`).join(''); + const rowsHtml = rows.map((row) => `${row.map((cell, index) => `${cell}`).join("")}`).join(""); tooltipDiv.innerHTML = `${rowsHtml}
`; const mouseEvent: MouseEvent | undefined = event.detail.parentEvent; tooltipDiv.style.left = `${(mouseEvent?.clientX ?? 0) + 10}px`; @@ -239,7 +239,7 @@ function makeStory(options: { length: number }): Story { await customElements.whenDefined("nightingale-boxplot-track"); for (const track of document.getElementsByTagName("nightingale-boxplot-track")) { (track as NightingaleBoxplotTrack).data = boxplotData; - track.addEventListener('change', event => handleTooltip(event as CustomEvent, currentArgs)); + track.addEventListener("change", event => handleTooltip(event as CustomEvent, currentArgs)); } }; return story; From 582cf73f8bdb3b94c5361bb29576689d5a33cebb Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Tue, 30 Jun 2026 16:11:14 +0100 Subject: [PATCH 28/32] nightingale-boxplot-track: README --- packages/nightingale-boxplot-track/README.md | 179 +++++++++++++++++- .../src/nightingale-boxplot-track.ts | 6 +- 2 files changed, 180 insertions(+), 5 deletions(-) diff --git a/packages/nightingale-boxplot-track/README.md b/packages/nightingale-boxplot-track/README.md index 219fbac5a..c19a81908 100644 --- a/packages/nightingale-boxplot-track/README.md +++ b/packages/nightingale-boxplot-track/README.md @@ -2,6 +2,181 @@ [![Published on NPM](https://img.shields.io/npm/v/@nightingale-elements/nightingale-boxplot-track.svg)](https://www.npmjs.com/package/@nightingale-elements/nightingale-boxplot-track) -The `nightingale-boxplot-track` component ... +Nightingale boxplot track component is used to display the distribution of a variable at each sequence position using boxplots. It allows displaying multiple distribution datasets, rendered side-by-side at each sequence position. -TODO: +## Usage + +```html + +``` + +#### Setting the data through property + +```javascript +await customElements.whenDefined("nightingale-boxplot-track"); +const track = document.getElementById("track"); +if (track) { + // Showing 2 datasets on a sequence of 3 amino acids: + (track as any).data = [ + { + name: "Blue dataset", + color: "#0088ff", + positions: [ + { position: 1, values: [0.2, 0.5, 0.7, 0.9] }, + { position: 2, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 3, values: [0.0, 0.2, 0.6, 0.8] }, + ], + }, + { + name: "Orange dataset", + color: "#ff8800", + positions: [ + { position: 1, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 2, values: [0.0, 0.2, 0.6, 0.8] }, + { position: 3, values: [0.2, 0.5, 0.7, 0.9] }, + ], + }, + ]; +} +``` + +The `data` property expects a value of type [`BoxplotData`](./src/nightingale-boxplot-track.ts#L72) - an array of datasets, where each dataset has the following structure: + +```javascript +{ + name: string, + color?: string, + positions: { + position: number, + values: number[], + }[], +} +``` + +The component will compute the median, quartiles, whiskers, and outliers from the values array for each position. + +## Visualization description + +The components displays a boxplot at each sequence position where data have been provided (or multiple boxplots if there are multiple dataset). +Each boxplot shows the following data: + +``` + • ╮┄┄┄┄┄┄┄┄ Maximum + •• │ Outliers high + •• ╯ + ──┬── - Whisker high (highest value <= Q3 + 1.5 * IQR) + │ + │ +┌──┴──┐ - Box high = Q3 +┝━━━━━┥ - Median +│ │ +└──┬──┘ - Box low = Q1 + │ + ──┴── - Whisker low (lowest value >= Q1 - 1.5 * IQR) + ••• ╮ + • │ Outliers low + •• ╯┄┄┄┄┄┄┄┄ Minimum +``` + +\* Q1 = lower quartile, Q3 = upper quartile, IQR = Q3 - Q1 = interquartile range. + +### "zoomed-out" visualization + +When the view becomes too much zoomed-out and boxplots become poorly visible, the component will switch from boxplot visualization to simplified "zoomed-out" visualization. This visualization shows the median at each position in darker color, and optionally a lighter shaded outline representing extremes or whisker range or box range, depending on the `zoomed-out-outline` attribute (default: whisker range). The `zoom-transition-range` attributes controls when exactly this transition happens. If there are multiple datasets, they are overlaid on one another, being distinguishable by their color (rather then displayed side-by-side as boxplots). + +### Downsampling + +When the view becomes over more zoomed-out (column width < 1 screen pixel), the component will downsample the displayed simplified visualization data. This is done to ensure performance for very long sequences and shouldn't be visually noticeable. + +## API Reference + +### Attributes + +#### `y-min?: number, y-max?: number` + +Bottom and top limit for the Y-axis. If either is not set, it will be inferred from the data (minimum/maximum of all data values). + +#### `show-axis?: boolean (default: false)` + +Turn on or off displaying the vertical axis. + +#### `show-nested-highlights?: boolean (default: false)` + +Turn on or off displaying nested hightlights. Nested hightlights indicate the selected subcolumn (dataset) within the highlighted column (sequence position). This applies only when multiple datasets are displayed. + +#### `zoomed-out-outline?: "extremes" | "whiskers" | "box" | "none" (default: "whiskers")` + +Choose what kind of data is shown as the shaded outline in the simplified zoomed-out view (in addition to the darker lines showing median). + +- `"extremes"` - the outline covers the range between minimum and maximum; +- `"whiskers"` - the outline covers the same range as the whiskers in the boxplot; +- `"box"` - the outline covers the same range as the box in the boxplot (quartiles); +- `"none"` - no outline is rendered. + +#### `column-gap?: number (default: 0.2)` + +Width of the gap between displayed columns, relative to the base width (width of one sequence position). + +(= _Column gap_ / _Base width_ in the figure below) + +#### `box-gap?: number (default: 0.1)` + +Width of the gap between boxes within a column, relative to the column width divided by the number of datasets (= _Box gap_ / (_Column width_ / _N datasets_) = _Box gap_ / (_Box width_ + _Box gap_) in the figure below). + +#### `whisker-width?: number (default: 0.6)` + +Boxplot whisker width, relative to the box width (= _Whisker width_ / _Box width_ in the figure below). + +#### `outlier-jitter-width?: number (default: 0.4)` + +Width of random noise added to the X-position of outliers, relative to the box width (= _Outlier jitter width_ / _Box width_ in the figure below). + +#### `outlier-radius?: number (default: 2)` + +Radius of the circles used to render outliers, in CSS pixels. + +#### `zoom-transition-range?: string (default: "4-5")` + +Base width(s), in CSS pixels, where the transition from "zoomed-out" simplified visualization to "zoomed-in" boxplot visualization happens. + +`zoom-transition-range` can be either one number (for a sharp transition, e.g. `"4"`) or a hyphen-separated range (for a smooth transition, e.g. `"4-5"`). + +If there are multiple datasets, this width(s) will be multiplied by the number of datasets, to compensate for narrower space for each dataset. + +- Use `"0"` to always show "zoomed-in" boxplot visualization. (This is not recommended, as it will prevent downsampling and may cause performance issues. However, you can use sufficiently small values, such as `"0.5-1"`, to achieve the same goal without performance issues). + +* Use `"Infinity"` to always show "zoomed-out" visualization. + +#### Overview of width measurements + +(2 sequence positions with 2 datasets) + +``` + Seq. position 1 Seq. position 2 +<────────────────────><────────────────────> Base width +┄><────────────────><┄┄><────────────────><┄ Column width, Column gap + ><─────><><─────>< ><─────><><─────>< Box width, Box gap* + <───> <───> <───> <───> Whisker width + ──┬── ──┬── ──┬── ──┬── + ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ + │ │ │ │ │ │ │ │ + ┝━━━━━┥ ┝━━━━━┥ ┝━━━━━┥ ┝━━━━━┥ + │ │ │ │ │ │ │ │ + └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ + ──┴── ──┴── ──┴── ──┴── + ••• • • •• • • + • • •• • + <─> <─> <─> <─> Outlier jitter width +``` + +\* Full _Box gap_ between the boxes in a column, 1/2 _Box gap_ before the first and after the last box in a column + +### Events + +// TODO: + +### Other attributes and properties + +This component inherits from `NightingaleElement`. + +The component implements the following mixins: `withCanvas`, `withManager`, `withZoom`, `withResizable`, `withMargin`, `withPosition`, `withDimensions`, `withHighlight`. diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 3810a86dc..12dd18d4f 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -66,7 +66,7 @@ export interface BoxplotDataset { positions: BoxplotDatum[], } -/** Data for `NightingaleBoxplotTrack`. +/** Data for `NightingaleBoxplotTrack`. * A list of one or more datasets, where each dataset contains boxplot data for individual positions in the sequence. * In case of multiple datasets, the boxplots for each dataset will be shown side-by-side at each sequence position. */ export type BoxplotData = BoxplotDataset[]; @@ -134,9 +134,9 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ type: Number }) "outlier-radius": number = 2; - /** Column width(s), in CSS pixels, where the transition from zoomed-out simplified visualization to zoomed-in boxplot visualization happens. + /** Base width(s), in CSS pixels, where the transition from zoomed-out simplified visualization to zoomed-in boxplot visualization happens. * Can be either one number (for sharp transition) or a hyphen-separated range. - * If there are multiple datasets, this width(s) will be divided by the number of datasets. + * If there are multiple datasets, this width(s) will be multiplied by the number of datasets, to compensate for narrower space for each dataset. * Use "0" to always show zoomed-in visualization (or preferrably "0.5-1" to avoid perfomance issues). * Use "Infinity" to always show zoomed-out visualization. * (default: "4-5") */ From 5c68bddc50a0e503b0ec8cd525105c222f42cd3a Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 1 Jul 2026 10:45:15 +0100 Subject: [PATCH 29/32] nightingale-boxplot-track: finish README --- packages/nightingale-boxplot-track/README.md | 112 ++++++++++++------ .../src/nightingale-boxplot-track.ts | 3 - .../src/utils/bindEvents.ts | 6 +- 3 files changed, 81 insertions(+), 40 deletions(-) diff --git a/packages/nightingale-boxplot-track/README.md b/packages/nightingale-boxplot-track/README.md index c19a81908..2e99db42b 100644 --- a/packages/nightingale-boxplot-track/README.md +++ b/packages/nightingale-boxplot-track/README.md @@ -4,52 +4,54 @@ Nightingale boxplot track component is used to display the distribution of a variable at each sequence position using boxplots. It allows displaying multiple distribution datasets, rendered side-by-side at each sequence position. +Most of the rendering is implemented via HTML canvas, but some non-critical parts are implemented via SVG (e.g. highlights). + ## Usage ```html - + ``` #### Setting the data through property -```javascript +```typescript await customElements.whenDefined("nightingale-boxplot-track"); const track = document.getElementById("track"); if (track) { - // Showing 2 datasets on a sequence of 3 amino acids: - (track as any).data = [ - { - name: "Blue dataset", - color: "#0088ff", - positions: [ - { position: 1, values: [0.2, 0.5, 0.7, 0.9] }, - { position: 2, values: [0.1, 0.3, 0.5, 0.8] }, - { position: 3, values: [0.0, 0.2, 0.6, 0.8] }, - ], - }, - { - name: "Orange dataset", - color: "#ff8800", - positions: [ - { position: 1, values: [0.1, 0.3, 0.5, 0.8] }, - { position: 2, values: [0.0, 0.2, 0.6, 0.8] }, - { position: 3, values: [0.2, 0.5, 0.7, 0.9] }, - ], - }, - ]; + // Showing 2 datasets on a sequence of 3 amino acids: + (track as any).data = [ + { + name: "Blue dataset", + color: "#0088ff", + positions: [ + { position: 1, values: [0.2, 0.5, 0.7, 0.9] }, + { position: 2, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 3, values: [0.0, 0.2, 0.6, 0.8] }, + ], + }, + { + name: "Orange dataset", + color: "#ff8800", + positions: [ + { position: 1, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 2, values: [0.0, 0.2, 0.6, 0.8] }, + { position: 3, values: [0.2, 0.5, 0.7, 0.9] }, + ], + }, + ]; } ``` -The `data` property expects a value of type [`BoxplotData`](./src/nightingale-boxplot-track.ts#L72) - an array of datasets, where each dataset has the following structure: +The `data` property expects a value of type `BoxplotData` - an array of datasets, where each dataset has the following structure: -```javascript +```typescript { - name: string, - color?: string, - positions: { - position: number, - values: number[], - }[], + name: string, + color?: string, + positions: Array<{ + position: number, + values: Array, + }>, } ``` @@ -94,12 +96,14 @@ When the view becomes over more zoomed-out (column width < 1 screen pixel), the #### `y-min?: number, y-max?: number` -Bottom and top limit for the Y-axis. If either is not set, it will be inferred from the data (minimum/maximum of all data values). +Bottom and top limit for the Y-axis. If either of these is not set, it will be inferred from the data (minimum/maximum of all data values). #### `show-axis?: boolean (default: false)` Turn on or off displaying the vertical axis. +The axis is rendered in the left margin of the component. The margin attributes must be set accordingly to provide enough space for the axis (e.g. `margin-left="30"`). + #### `show-nested-highlights?: boolean (default: false)` Turn on or off displaying nested hightlights. Nested hightlights indicate the selected subcolumn (dataset) within the highlighted column (sequence position). This applies only when multiple datasets are displayed. @@ -152,7 +156,7 @@ If there are multiple datasets, this width(s) will be multiplied by the number o (2 sequence positions with 2 datasets) ``` - Seq. position 1 Seq. position 2 + Seq. position 1 Seq. position 2 <────────────────────><────────────────────> Base width ┄><────────────────><┄┄><────────────────><┄ Column width, Column gap ><─────><><─────>< ><─────><><─────>< Box width, Box gap* @@ -173,7 +177,47 @@ If there are multiple datasets, this width(s) will be multiplied by the number o ### Events -// TODO: +As `nightingale-boxplot-track` implements from `withZoom` and `withHighlight`, it will respond to zooming changes, highlight events, and emit events when interacting with boxplots (helpful if you want to display tooltips, integrate with other components etc.). + +When the user clicks on or hovers over the component, the component emits a `CustomEvent` with type `"change"` and with `detail` of the following structure: + +```typescript +{ + eventType: "mouseover" | "mouseout" | "click", + parentEvent?: Event, + feature?: { + type: "boxplot", + /** Position in the sequence */ + position: number, + /** Data for the boxplot at this position from all datasets (one item for each dataset) */ + data: Array<{ + /** Common properties of the whole dataset */ + dataset: { + name: string, + color: string, + }, + /** Boxplot data at this position */ + datum?: { + /** Position in the sequence */ + position: number, + /** All values of the independent variable at this position */ + values: Float32Array, + median: number, + boxLow: number, + boxHigh: number, + whiskerLow: number, + whiskerHigh: number, + minimum: number, + maximum: number, + outliersLow: Float32Array, + outliersHigh: Float32Array, + }, + }>, + /** Index into `data`, indicates which dataset is being pointed at */ + datasetIndex: number, + } | null, +} +``` ### Other attributes and properties diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 12dd18d4f..b6c7322a9 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -981,6 +981,3 @@ const NestedHighlight = { return [a, b]; }, }; - -// TODO: docs in readme -// TODO: test on new API once available diff --git a/packages/nightingale-new-core/src/utils/bindEvents.ts b/packages/nightingale-new-core/src/utils/bindEvents.ts index 57ddd51c5..2719d2744 100644 --- a/packages/nightingale-new-core/src/utils/bindEvents.ts +++ b/packages/nightingale-new-core/src/utils/bindEvents.ts @@ -24,8 +24,8 @@ type BoxplotData = { type: "boxplot"; /** Position in the sequence */ position: number; - /** Data for the boxplot at this position (from all datasets) */ - data: { + /** Data for the boxplot at this position from all datasets (one item for each dataset) */ + data: Array<{ /** Common properties of the whole dataset */ dataset: { name: string; @@ -47,7 +47,7 @@ type BoxplotData = { outliersLow: Float32Array; outliersHigh: Float32Array; } | undefined; - }[]; + }>; /** Index into `data`, indicates which dataset is being pointed at */ datasetIndex: number; }; From 31a55c8b0f120fad0e1ad229ec93894a3c0a5406 Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Wed, 1 Jul 2026 11:23:05 +0100 Subject: [PATCH 30/32] nightingale-boxplot-track: final cleanup --- packages/nightingale-boxplot-track/README.md | 136 ++++++++++-------- .../src/nightingale-boxplot-track.ts | 14 +- .../NightingaleBoxplotTrack.stories.ts | 28 +--- 3 files changed, 86 insertions(+), 92 deletions(-) diff --git a/packages/nightingale-boxplot-track/README.md b/packages/nightingale-boxplot-track/README.md index 2e99db42b..a5f4eeb1a 100644 --- a/packages/nightingale-boxplot-track/README.md +++ b/packages/nightingale-boxplot-track/README.md @@ -9,36 +9,50 @@ Most of the rendering is implemented via HTML canvas, but some non-critical part ## Usage ```html - + ``` #### Setting the data through property ```typescript -await customElements.whenDefined("nightingale-boxplot-track"); -const track = document.getElementById("track"); +await customElements.whenDefined('nightingale-boxplot-track'); +const track = document.getElementById('track'); if (track) { - // Showing 2 datasets on a sequence of 3 amino acids: - (track as any).data = [ - { - name: "Blue dataset", - color: "#0088ff", - positions: [ - { position: 1, values: [0.2, 0.5, 0.7, 0.9] }, - { position: 2, values: [0.1, 0.3, 0.5, 0.8] }, - { position: 3, values: [0.0, 0.2, 0.6, 0.8] }, - ], - }, - { - name: "Orange dataset", - color: "#ff8800", - positions: [ - { position: 1, values: [0.1, 0.3, 0.5, 0.8] }, - { position: 2, values: [0.0, 0.2, 0.6, 0.8] }, - { position: 3, values: [0.2, 0.5, 0.7, 0.9] }, - ], - }, - ]; + // Showing 2 datasets on a sequence of 3 amino acids: + (track as any).data = [ + { + name: 'Blue dataset', + color: '#0088ff', + positions: [ + { position: 1, values: [0.2, 0.5, 0.7, 0.9] }, + { position: 2, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 3, values: [0.0, 0.2, 0.6, 0.8] }, + ], + }, + { + name: 'Orange dataset', + color: '#ff8800', + positions: [ + { position: 1, values: [0.1, 0.3, 0.5, 0.8] }, + { position: 2, values: [0.0, 0.2, 0.6, 0.8] }, + { position: 3, values: [0.2, 0.5, 0.7, 0.9] }, + ], + }, + ]; } ``` @@ -46,12 +60,12 @@ The `data` property expects a value of type `BoxplotData` - an array of datasets ```typescript { - name: string, - color?: string, - positions: Array<{ - position: number, - values: Array, - }>, + name: string, + color?: string, + positions: Array<{ + position: number, + values: Array, + }>, } ``` @@ -183,39 +197,39 @@ When the user clicks on or hovers over the component, the component emits a `Cus ```typescript { - eventType: "mouseover" | "mouseout" | "click", - parentEvent?: Event, - feature?: { - type: "boxplot", - /** Position in the sequence */ - position: number, - /** Data for the boxplot at this position from all datasets (one item for each dataset) */ - data: Array<{ - /** Common properties of the whole dataset */ - dataset: { - name: string, - color: string, - }, - /** Boxplot data at this position */ - datum?: { + eventType: "mouseover" | "mouseout" | "click", + parentEvent?: Event, + feature?: { + type: "boxplot", /** Position in the sequence */ position: number, - /** All values of the independent variable at this position */ - values: Float32Array, - median: number, - boxLow: number, - boxHigh: number, - whiskerLow: number, - whiskerHigh: number, - minimum: number, - maximum: number, - outliersLow: Float32Array, - outliersHigh: Float32Array, - }, - }>, - /** Index into `data`, indicates which dataset is being pointed at */ - datasetIndex: number, - } | null, + /** Data for the boxplot at this position from all datasets (one item for each dataset) */ + data: Array<{ + /** Common properties of the whole dataset */ + dataset: { + name: string, + color: string, + }, + /** Boxplot data at this position */ + datum?: { + /** Position in the sequence */ + position: number, + /** All values of the independent variable at this position */ + values: Float32Array, + median: number, + boxLow: number, + boxHigh: number, + whiskerLow: number, + whiskerHigh: number, + minimum: number, + maximum: number, + outliersLow: Float32Array, + outliersHigh: Float32Array, + }, + }>, + /** Index into `data`, indicates which dataset is being pointed at */ + datasetIndex: number, + } | null, } ``` diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index b6c7322a9..ccfba8158 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -98,22 +98,22 @@ export default class NightingaleBoxplotTrack extends withCanvas( @property({ converter: OptionalNumberAttributeConverter }) "y-max"?: number; - /** What kind of data should be shown as the shaded outline in zoomed-out visualization. */ - @property({ converter: EnumAttributeConverter(ZoomedOutOutlineOptions, "whiskers") }) - "zoomed-out-outline": ZoomedOutOutlineOption; + /** Turn on vertical axis. */ + @property({ type: Boolean }) + "show-axis"?: boolean; /** Turn on showing nested highlights, which indicate selected subcolumn within a column (in case of multiple datasets). */ @property({ type: Boolean }) "show-nested-highlights"?: boolean; - /** Turn on vertical axis. */ - @property({ type: Boolean }) - "show-axis"?: boolean; - /** Position of nested highlight in form "position/iDataset", or "" if none. */ @property({ type: String, reflect: true }) // not using attribute converter here, because change detection would not work correctly private "nested-highlight": string = ""; + /** What kind of data should be shown as the shaded outline in zoomed-out visualization. */ + @property({ converter: EnumAttributeConverter(ZoomedOutOutlineOptions, "whiskers") }) + "zoomed-out-outline": ZoomedOutOutlineOption; + /** Width of the gap between displayed columns, relative to the base width (width of one sequence position) (allowed range: 0-1, default: 0.2). */ @property({ type: Number }) "column-gap": number = 0.2; diff --git a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts index 946b3970e..e3cde73e7 100644 --- a/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts +++ b/stories/22.NightingaleBoxplotTrack/NightingaleBoxplotTrack.stories.ts @@ -2,8 +2,7 @@ import { type createEvent } from "@nightingale-elements/nightingale-new-core"; import { type ArgTypes, Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; import "../../packages/nightingale-boxplot-track/src/index"; -import NightingaleBoxplotTrack from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; -import { type BoxplotData, ZoomedOutOutlineOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; +import NightingaleBoxplotTrack, { type BoxplotData, ZoomedOutOutlineOptions } from "../../packages/nightingale-boxplot-track/src/nightingale-boxplot-track"; import sampleBoxplotData from "../../packages/nightingale-boxplot-track/tests/mockData/sample-1.json"; @@ -45,18 +44,11 @@ const ArgumentTypes: Partial> = { }; -// const nDataRepeat = 20_000; -// const nDataRepeat = 1_000; -// const nDataRepeat = 81; const nDataRepeat = 82; -// Around 100k datapoints (nDataRepeat=1000), canvas draw takes > 40ms -// Around 400k datapoints (nDataRepeat=4000), aliasing makes data invisible (causes artifacts even before) - const sampleSequence = "MALYGTHSHGLFKKLGIPGPTPLPFLGNILSYHKGFCMFDMECHKKYGKVWGFYDGQQPVLAITDPDMIKTVLVKECYSVFTNRRPFGPVGFMKSAISIA".repeat(nDataRepeat); function prepareBoxplotData(data: { positions: { position: number, values: number[] }[] }): BoxplotData { - // const positions = data.positions.slice(); - const positions = data.positions.map(pos => ({ position: pos.position, values: pos.values.sort() })); + const positions = data.positions.map(pos => ({ position: pos.position, values: pos.values.sort() })); // Sorting values for each position is not required by the boxplot track, but can make loading faster. const shift = data.positions.length; for (let i = 1; i < nDataRepeat; i++) { for (const pos of data.positions) { @@ -69,25 +61,13 @@ function prepareBoxplotData(data: { positions: { position: number, values: numbe name: "Data1", color: "#0088ff", positions: positions, - // positions: remove(positions, 3, 4, 5, 6, 35), // DEBUG - // positions: remove(positions, 3, 4, 5, 6, - // ...new Array(50).fill(0).map((_, i) => 35 + i), - // ...new Array(500).fill(0).map((_, i) => 500 + i), - // ...new Array(5000).fill(0).map((_, i) => 5000 + i), - // ), // DEBUG }, { name: "Data2", color: "#ff8800", - // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7), // DEBUG + // Dummy data: multiply Data1 by a constant and remove some positions + positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), 1, 7, 8, 9, 10), }, - // { - // name: "Data3", - // color: "#00aa44", - // // positions: positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.8) })), - // positions: remove(positions.map(pos => ({ ...pos, values: pos.values.map(v => v * 0.93) })), 1, 7), // DEBUG - // }, ]; } From 6bc8b04e099d6d304b95ec8dc22f1539b674bbfe Mon Sep 17 00:00:00 2001 From: Adam Midlik Date: Thu, 13 Aug 2026 11:11:10 +0100 Subject: [PATCH 31/32] nightingale-boxplot-track PR feedback --- .../src/nightingale-boxplot-track.ts | 9 +-------- .../src/utils/attribute-converters.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index ccfba8158..093147b42 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -27,7 +27,6 @@ const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ "y-min", "y-max", "show-axis", "zoomed-out-outline", "column-gap", "box-gap", "whisker-width", "outlier-jitter-width", "outlier-radius", "zoom-transition-range", ] satisfies (keyof NightingaleBoxplotTrack)[]; -const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = [] satisfies (keyof NightingaleBoxplotTrack)[]; /** Line width for rectangle stroke, in CSS pixels */ @@ -178,10 +177,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { super.attributeChangedCallback(name, oldValue, newValue); - if (ATTRIBUTES_THAT_TRIGGER_DATA_RESET.includes(name)) { - // Calling `this.data` setter to recompute `this.positions` and run `this.createTrack()` - this.data = this.data; // eslint-disable-line no-self-assign - } else if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { + if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { this.onDimensionsChange(); this.createTrack(); } @@ -228,9 +224,6 @@ export default class NightingaleBoxplotTrack extends withCanvas( "display-start": this["display-start"], "display-end": this["display-end"], }; - for (const attr of ATTRIBUTES_THAT_TRIGGER_DATA_RESET) { - stamp[attr] = this.getAttribute(attr); - } for (const attr of ATTRIBUTES_THAT_TRIGGER_REFRESH) { stamp[attr] = this.getAttribute(attr); } diff --git a/packages/nightingale-new-core/src/utils/attribute-converters.ts b/packages/nightingale-new-core/src/utils/attribute-converters.ts index 6742b3e3b..c74878516 100644 --- a/packages/nightingale-new-core/src/utils/attribute-converters.ts +++ b/packages/nightingale-new-core/src/utils/attribute-converters.ts @@ -17,9 +17,13 @@ export const OptionalNumberAttributeConverter: ComplexAttributeConverter Date: Thu, 13 Aug 2026 14:01:55 +0100 Subject: [PATCH 32/32] Change ATTRIBUTES_THAT_TRIGGER_REFRESH to set (in multiple tracks) --- .../src/nightingale-boxplot-track.ts | 6 +++--- .../src/nightingale-conservation-track.ts | 13 ++++++++----- .../src/mixins/withZoom/index.ts | 6 ++++-- packages/nightingale-track/src/nightingale-track.ts | 10 +++++----- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts index 093147b42..d5f59ceff 100644 --- a/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts +++ b/packages/nightingale-boxplot-track/src/nightingale-boxplot-track.ts @@ -21,12 +21,12 @@ import { property } from "lit/decorators.js"; import { Downsampler } from "./downsampling"; -const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ +const ATTRIBUTES_THAT_TRIGGER_REFRESH = new Set([ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", "y-min", "y-max", "show-axis", "zoomed-out-outline", "column-gap", "box-gap", "whisker-width", "outlier-jitter-width", "outlier-radius", "zoom-transition-range", -] satisfies (keyof NightingaleBoxplotTrack)[]; +] satisfies (keyof NightingaleBoxplotTrack)[]); /** Line width for rectangle stroke, in CSS pixels */ @@ -177,7 +177,7 @@ export default class NightingaleBoxplotTrack extends withCanvas( override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { super.attributeChangedCallback(name, oldValue, newValue); - if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { + if (ATTRIBUTES_THAT_TRIGGER_REFRESH.has(name)) { this.onDimensionsChange(); this.createTrack(); } diff --git a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts index cb17ec1be..0d505aea3 100644 --- a/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts +++ b/packages/nightingale-conservation-track/src/nightingale-conservation-track.ts @@ -19,12 +19,15 @@ import { html, PropertyValues } from "lit"; import { property } from "lit/decorators.js"; -const ATTRIBUTES_THAT_TRIGGER_REFRESH: string[] = [ +const ATTRIBUTES_THAT_TRIGGER_REFRESH = new Set([ "length", "width", "height", "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", "font-family", "min-font-size", "fade-font-size", "max-font-size", -] satisfies (keyof NightingaleConservationTrack)[]; -const ATTRIBUTES_THAT_TRIGGER_DATA_RESET: string[] = ["letter-order"] satisfies (keyof NightingaleConservationTrack)[]; +] satisfies (keyof NightingaleConservationTrack)[]); + +const ATTRIBUTES_THAT_TRIGGER_DATA_RESET = new Set([ + "letter-order", +] satisfies (keyof NightingaleConservationTrack)[]); /** Order of amino acids in a column (top-to-bottom) */ const AMINO_ACID_ORDER = Array.from("HYAVLIMFWSTQNKRDEPCG"); // Old Protvista order: HYSTQNAVLIMFWDEPKRCG @@ -157,10 +160,10 @@ export default class NightingaleConservationTrack extends withCanvas( override attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { super.attributeChangedCallback(name, oldValue, newValue); - if (ATTRIBUTES_THAT_TRIGGER_DATA_RESET.includes(name)) { + if (ATTRIBUTES_THAT_TRIGGER_DATA_RESET.has(name)) { // Calling `this.data` setter to recompute `this.positions` and run `this.createTrack()` this.data = this.data; // eslint-disable-line no-self-assign - } else if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { + } else if (ATTRIBUTES_THAT_TRIGGER_REFRESH.has(name)) { this.onDimensionsChange(); this.createTrack(); } diff --git a/packages/nightingale-new-core/src/mixins/withZoom/index.ts b/packages/nightingale-new-core/src/mixins/withZoom/index.ts index d070e3b83..49c604c66 100644 --- a/packages/nightingale-new-core/src/mixins/withZoom/index.ts +++ b/packages/nightingale-new-core/src/mixins/withZoom/index.ts @@ -42,7 +42,9 @@ export interface WithZoomInterface extends WithDimensionsInterface, withPosition zoomRefreshed(): void; } -const ATTRIBUTES_THAT_TRIGGER_REFRESH = ["length", "width", "height"]; +const ATTRIBUTES_THAT_TRIGGER_REFRESH = new Set([ + "length", "width", "height", +] satisfies (keyof WithZoomInterface)[]); const withZoom = >( @@ -71,7 +73,7 @@ const withZoom = >( super.attributeChangedCallback(name, oldValue, newValue); const newV = newValue === "null" ? null : newValue; if (oldValue !== newV) { - if (ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name)) { + if (ATTRIBUTES_THAT_TRIGGER_REFRESH.has(name)) { this.adjustZoomConstraints(); this.adjustZoom(); } diff --git a/packages/nightingale-track/src/nightingale-track.ts b/packages/nightingale-track/src/nightingale-track.ts index 33b0b06a6..1c8eb4da0 100644 --- a/packages/nightingale-track/src/nightingale-track.ts +++ b/packages/nightingale-track/src/nightingale-track.ts @@ -52,7 +52,10 @@ export type Feature = { }; // TODO: height is not triggering a full redrawn when is changed after first render -const ATTRIBUTES_THAT_TRIGGER_REFRESH = ["length", "width", "height"]; +const ATTRIBUTES_THAT_TRIGGER_REFRESH = new Set([ + "length", "width", "height", + "margin-top", "margin-bottom", "margin-left", "margin-right", "margin-color", +] satisfies (keyof NightingaleTrack)[]); @customElementOnce("nightingale-track") class NightingaleTrack extends withManager( @@ -173,10 +176,7 @@ class NightingaleTrack extends withManager( newValue: string | null ): void { super.attributeChangedCallback(name, oldValue, newValue); - if ( - ATTRIBUTES_THAT_TRIGGER_REFRESH.includes(name) || - name.startsWith("margin-") - ) { + if (ATTRIBUTES_THAT_TRIGGER_REFRESH.has(name)) { this.applyFilters(); this.layoutObj = this.getLayout(); this.createTrack();