├── .gitignore ├── demo.png ├── .npmignore ├── screenshots ├── legend_arc.png ├── legend_heat.png └── legend_simple.png ├── rollup.config.js ├── src ├── index.js ├── scale.js ├── continuous.js ├── heatmap.js ├── quantization.js └── legend.js ├── .eslintrc ├── .github └── workflows │ └── test.yml ├── test ├── continuous.html ├── heatmap.html ├── legend.html └── test.html ├── LICENSE ├── package.json ├── examples ├── polling.csv ├── flights.html ├── virology.html ├── polling.html ├── flights.csv └── viral_binned.csv ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | -------------------------------------------------------------------------------- /demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/vsup/master/demo.png -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | examples 3 | test 4 | .gitignore 5 | .travis.yml 6 | -------------------------------------------------------------------------------- /screenshots/legend_arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/vsup/master/screenshots/legend_arc.png -------------------------------------------------------------------------------- /screenshots/legend_heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/vsup/master/screenshots/legend_heat.png -------------------------------------------------------------------------------- /screenshots/legend_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uwdata/vsup/master/screenshots/legend_simple.png -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from "@rollup/plugin-node-resolve"; 2 | 3 | export default { 4 | input: "src/index.js", 5 | output: { 6 | file: "dist/vsup.js", 7 | format: "umd", 8 | name: "vsup", 9 | }, 10 | plugins: [resolve()], 11 | }; 12 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | export { simpleHeatmap as heatmap, simpleArcmap as arcmap } from "./heatmap"; 2 | export { 3 | treeQuantization as quantization, 4 | squareQuantization, 5 | linearQuantization, 6 | } from "./quantization"; 7 | export { simpleScale as scale } from "./scale"; 8 | export { 9 | continuousSquare as csquare, 10 | continuousArc as carc, 11 | continuousLine as cline, 12 | } from "./continuous"; 13 | import * as legend_ from "./legend"; 14 | export const legend = legend_; 15 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | parserOptions: 2 | sourceType: "module" 3 | ecmaVersion: 2015 4 | 5 | env: 6 | browser: true 7 | node: true 8 | 9 | extends: 10 | - "eslint:recommended" 11 | - "prettier" 12 | 13 | plugins: 14 | - prettier 15 | 16 | rules: 17 | "prettier/prettier": "error" 18 | no-cond-assign: 0 19 | no-fallthrough: ["error", { "commentPattern": "break omitted" }] 20 | quotes: ["error", "double"] 21 | comma-spacing: ["error", { "before": false, "after": true }] 22 | keyword-spacing: "error" 23 | space-infix-ops: 2 24 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Node 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [10.x, 12.x, 14.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v1 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - run: yarn 24 | - run: yarn build 25 | - run: yarn lint 26 | -------------------------------------------------------------------------------- /test/continuous.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Continuous Heatmap test 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 |
17 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /test/heatmap.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Heatmap test 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 UW Interactive Data Lab 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vsup", 3 | "version": "1.1.0", 4 | "description": "Value-Suppressing Uncertainty Palettes. A technique for creating bivariate scales for depicting uncertainty, using D3.", 5 | "main": "dist/vsup.js", 6 | "unpkg": "dist/vsup.min.js", 7 | "jsdelivr": "dist/vsup.min.js", 8 | "module": "src/index", 9 | "scripts": { 10 | "prepublish": "npm run build", 11 | "build": "rollup -c && terser dist/vsup.js -m -o dist/vsup.min.js", 12 | "watch": "rollup -c -w", 13 | "start": "python -m http.server", 14 | "lint": "eslint src", 15 | "lint:fix": "eslint src --fix" 16 | }, 17 | "dependencies": { 18 | "d3": "^6.3.1" 19 | }, 20 | "devDependencies": { 21 | "@rollup/plugin-node-resolve": "^11.0.1", 22 | "eslint": "^7.17.0", 23 | "eslint-config-prettier": "^7.1.0", 24 | "eslint-plugin-prettier": "^3.3.0", 25 | "prettier": "^2.2.1", 26 | "rollup": "^2.35.1", 27 | "terser": "^5.5.1" 28 | }, 29 | "repository": { 30 | "type": "git", 31 | "url": "git+https://github.com/uwdata/vsup.git" 32 | }, 33 | "keywords": [ 34 | "d3", 35 | "bivariate", 36 | "visualization", 37 | "uncertainty" 38 | ], 39 | "author": "Michael Correll, Dominik Moritz, and Jeffrey Heer", 40 | "license": "MIT" 41 | } 42 | -------------------------------------------------------------------------------- /test/legend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Legend test 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /examples/polling.csv: -------------------------------------------------------------------------------- 1 | State,Date,Hillary Clinton,Donald Trump,Gary Johnson,Jill Stein,Evan McMullin,Margin of error,Lead,Clinton potential EVs,Trump potential EVs,Tied potential EVs,Result 2 | Alabama,"September 27, 2016",32%,48%,,,,2.0%,16,,9,,25.8 3 | Alaska,"October 21–26, 2016",47%,43%,7%,3%,,4.9%,4,,,3,14.7 4 | Arizona,"November 4–6, 2016",45%,47%,5%,2%,,4.9%,2,,,11,3.5 5 | Arkansas,"October 18–25, 2016",36%,59%,,,,4.1%,23,,6,,26.9 6 | California,"November 4–6, 2016",58%,35%,3%,2%,,4.9%,28,55,,,30.1 7 | Colorado,"November 3–4, 2016",48%,43%,4%,2%,1%,3.7%,5,,,9,4.9 8 | Connecticut,"September 2–5, 2016",50%,35%,9%,4%,,3.0%,15,7,,,13.6 9 | Delaware,"September 16–28, 2016",51%,30%,7%,2%,,4.1%,21,3,,,11.4 10 | Florida,"November 6, 2016",46%,50%,2%,1%,,3.3%,4,,,29,1.2 11 | Georgia,"November 6, 2016",45%,52%,2%,,,2.8%,7,,16,,5.1 12 | Hawaii,"September 6, 2016",51%,25%,7%,7%,,4%,26,,,, 13 | Idaho,"October 23–24, 2016",29%,48%,6%,,10%,4.0%,19,,4,,31.8 14 | Illinois,"October 27–30, 2016",53%,41%,2%,0%,,4.3%,12,20,,,17.1 15 | Indiana,"November 1–3, 2016",37%,48%,9%,,,4.0%,11,,11,,18.9 16 | Iowa,"November 1–4, 2016",39%,46%,6%,1%,,3.5%,7,,,6,9.4 17 | Kansas,"November 1–3, 2016",34%,58%,,,,5.5%,24,,6,,20.6 18 | Kentucky,"October 25–30, 2016",37%,54%,1%,1%,1%,4.0%,17,,8,,29.8 19 | Louisiana,"October 19–21, 2016",35%,50%,5%,,,4.4%,15,,8,,19.6 20 | Maine,"October 28–30, 2016",46%,42%,12%,2%,,3.5%,4,1,,3,3 21 | Maryland,"September 27–30, 2016",63%,27%,4%,2%,,4.0%,36,10,,,26.4 22 | Massachusetts,"October 23 – November 2, 2016",56%,26%,8%,3%,,5.0%,30,11,,,27.2 23 | Michigan,"November 6, 2016",47%,49%,3%,1%,,2.8%,2,,,16,0.2 24 | Minnesota,"October 22–26, 2016",49%,39%,5%,2%,1%,3.9%,10,10,,,1.5 25 | Missouri,"November 4–5, 2016",41%,47%,7%,2%,,3.5%,6,,,10,18.6 26 | Mississippi,"August 17, 2016",39%,54%,3%,,,2.9%,15,,,, 27 | Montana,"October 10–12, 2016",36%,46%,11%,,,3.2%,10,,3,,20.4 28 | Nebraska,"September 25–27, 2016",29%,56%,7%,1%,,3.6%,27,,4,1,25 29 | Nevada,"November 4–6, 2016",46%,46%,5%,1%,,4.9%,Tied,,,6,2.4 30 | New Hampshire,"November 3–6, 2016",49%,38%,6%,1%,,3.7%,11,4,,,0.4 31 | New Jersey,"October 27 – November 2, 2016",51%,40%,3%,1%,,3.8%,11,14,,,14.2 32 | New Mexico,"November 6, 2016",46%,44%,6%,1%,,1.8%,2,,,5,8.2 33 | New York,"November 3–4, 2016",51%,34%,5%,2%,,4.5%,17,29,,,22.5 34 | North Carolina,"November 4–6, 2016",44%,44%,3%,,,3.5%,Tied,,,15,3.6 35 | North Dakota,"September 12–17, 2016",32%,43%,8%,1%,,4.9%,11,,3,,35.7 36 | Ohio,"October 27 – November 5, 2016",39%,46%,7%,3%,,3.2%,7,,18,,8.1 37 | Oklahoma,"October 18–20, 2016",30%,60%,5%,,,4.3%,30,,7,,36.4 38 | Oregon,"October 24–29, 2016",41%,34%,4%,2%,,4.4%,7,,,7,11 39 | Pennsylvania,"November 3–6, 2016",46%,40%,7%,2%,,2.8%,6,20,,,0.7 40 | Rhode Island,"October 2–4, 2016",52%,32%,5%,5%,,3.4%,20,4,,,18.5 41 | South Carolina,"October 30–31, 2016",36%,47%,3%,1%,,4.4%,11,,9,,14.7 42 | South Dakota,"October 24–26, 2016",35%,49%,7%,,,4.0%,14,,3,,29.8 43 | Tennessee,"October 14–17, 2016",34%,44%,7%,2%,,4.4%,10,,11,,26 44 | Texas,"October 31 – November 1, 2016",35%,49%,5%,4%,,3.6%,14,,38,,9 45 | Utah,"November 3–5, 2016",30%,40%,4%,,25%,2.7%,10,,6,,18.1 46 | Vermont,"October 24–26, 2016",52%,26%,5%,2%,,3.0%,26,3,,,26.4 47 | Virginia,"November 1–6, 2016",48%,42%,3%,1%,2%,3.6%,6,,,13,5.3 48 | Washington,"November 4–6, 2016",55%,39%,,,,4.9%,16,12,,,16.2 49 | West Virginia,"September 13–17, 2016",28%,60%,,,,5.0%,32,,5,,42.2 50 | Wisconsin,"November 1–2, 2016",49%,41%,3%,,,1.9%,8,10,,,0.8 51 | Wyoming,"October 5–11, 2016",20%,58%,9%,2%,,3.6%,38,,3,,46.3 52 | -------------------------------------------------------------------------------- /src/scale.js: -------------------------------------------------------------------------------- 1 | import * as d3 from "d3"; 2 | 3 | // Returns a color, based on a bivariate data point, 4 | // a quantization function, and a color interpolator 5 | // can be extended to different modes (just saturation, say) 6 | export function simpleScale(m_mode, m_range, m_quantization) { 7 | let range = m_range || d3.interpolateViridis; 8 | 9 | let quantization = 10 | m_quantization || 11 | function (v, u) { 12 | const data = u != undefined ? { v: v, u: u } : { v: v.v, u: v.u }; 13 | return data; 14 | }; 15 | 16 | let mode = m_mode; 17 | 18 | function CIEDist(color1, color2) { 19 | const c1 = d3.lab(d3.color(color1)); 20 | const c2 = d3.lab(d3.color(color2)); 21 | return Math.sqrt( 22 | Math.pow(c1.l - c2.l, 2) + 23 | Math.pow(c1.a - c2.a, 2) + 24 | Math.pow(c1.b - c2.b, 2) 25 | ); 26 | } 27 | 28 | function map(value, uncertainty) { 29 | const data = quantization(value, uncertainty); 30 | 31 | let uDom = [0, 1]; 32 | let vDom = [0, 1]; 33 | 34 | if (quantization.uncertaintyDomain) { 35 | uDom = quantization.uncertaintyDomain(); 36 | } 37 | if (quantization.valueDomain) { 38 | vDom = quantization.valueDomain(); 39 | } 40 | 41 | const uScale = d3.scaleLinear().domain(uDom).range([0, 1]); 42 | const vScale = d3.scaleLinear().domain(vDom).range([0, 1]); 43 | 44 | let vcolor = range(vScale(data.v)); 45 | 46 | switch (mode) { 47 | case "usl": 48 | default: 49 | vcolor = d3.interpolateLab(vcolor, "#fff")(uScale(data.u)); 50 | break; 51 | case "us": { 52 | vcolor = d3.hsl(vcolor); 53 | const sScale = d3.scaleLinear().domain([0, 1]).range([vcolor.s, 0]); 54 | vcolor.s = sScale(uScale(data.u)); 55 | break; 56 | } 57 | case "ul": { 58 | vcolor = d3.hsl(vcolor); 59 | const lScale = d3.scaleLinear().domain([0, 1]).range([vcolor.l, 1]); 60 | vcolor.l = lScale(uScale(data.u)); 61 | break; 62 | } 63 | } 64 | return vcolor; 65 | } 66 | 67 | map.colorList = function () { 68 | return this.quantize() 69 | .range() 70 | .map((d) => map(d)); 71 | }; 72 | 73 | map.colorDists = function () { 74 | const clist = this.colorList(); 75 | const matrix = new Array(clist.length); 76 | let minDist; 77 | let minPair = new Array(2); 78 | let dist; 79 | 80 | for (let i = 0; i < matrix.length; i++) { 81 | matrix[i] = new Array(clist.length); 82 | for (let j = 0; j < matrix[i].length; j++) { 83 | dist = CIEDist(clist[i], clist[j]); 84 | matrix[i][j] = dist; 85 | if (i != j && ((i == 0 && j == 1) || dist < minDist)) { 86 | minDist = dist; 87 | minPair = [clist[i], clist[j]]; 88 | } 89 | } 90 | } 91 | 92 | matrix.minDist = minDist; 93 | matrix.minPair = minPair; 94 | return matrix; 95 | }; 96 | 97 | map.mode = function (newMode) { 98 | if (!arguments.length) { 99 | return mode; 100 | } else { 101 | mode = newMode; 102 | return map; 103 | } 104 | }; 105 | 106 | map.range = function (newRange) { 107 | if (!arguments.length) { 108 | return range; 109 | } else { 110 | range = newRange; 111 | return map; 112 | } 113 | }; 114 | 115 | map.quantize = function (newQuantization) { 116 | if (!arguments.length) { 117 | return quantization; 118 | } else { 119 | quantization = newQuantization; 120 | return map; 121 | } 122 | }; 123 | 124 | return map; 125 | } 126 | -------------------------------------------------------------------------------- /examples/flights.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Flight example 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /examples/virology.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Virology example 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /examples/polling.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Polling example 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/continuous.js: -------------------------------------------------------------------------------- 1 | import * as d3 from "d3"; 2 | 3 | export function continuousSquare(m_size, m_scale, m_id) { 4 | let el = null; 5 | let size = m_size; 6 | let id = m_id; 7 | let scale = m_scale; 8 | let context; 9 | let canvas; 10 | 11 | function square(nel) { 12 | el = nel; 13 | square.make(); 14 | } 15 | 16 | square.makePixelData = function () { 17 | const pixelData = []; 18 | let c; 19 | for (let i = 0; i < size; i++) { 20 | for (let j = 0; j < size; j++) { 21 | c = scale(j / size); 22 | c = d3.interpolateLab(c, d3.color("#ddd"))(i / size); 23 | //r,g,b,a 24 | c = d3.color(c); 25 | pixelData.push(c.r); 26 | pixelData.push(c.g); 27 | pixelData.push(c.b); 28 | pixelData.push(255); 29 | } 30 | } 31 | return pixelData; 32 | }; 33 | 34 | square.make = function () { 35 | if (!el) { 36 | return; 37 | } 38 | 39 | if (!canvas) { 40 | canvas = el.append("canvas"); 41 | } 42 | 43 | canvas.attr("width", size).attr("height", size); 44 | 45 | if (id) { 46 | canvas.attr("id", id); 47 | } 48 | 49 | const cnode = canvas.node(); 50 | context = cnode.getContext("2d"); 51 | 52 | square.setPixels(); 53 | }; 54 | 55 | square.setPixels = function () { 56 | const img = context.createImageData(size, size); 57 | img.data.set(square.makePixelData()); 58 | context.putImageData(img, 0, 0); 59 | }; 60 | 61 | square.size = function (newSize) { 62 | if (!arguments.length) { 63 | return size; 64 | } else { 65 | size = newSize; 66 | if (canvas) { 67 | canvas.attr("width", size).attr("height", size); 68 | 69 | square.setPixels(); 70 | } 71 | return square; 72 | } 73 | }; 74 | 75 | square.scale = function (newScale) { 76 | if (!arguments.length) { 77 | return scale; 78 | } else { 79 | scale = newScale; 80 | if (canvas) { 81 | square.setPixels(); 82 | } else { 83 | square.make(); 84 | } 85 | return square; 86 | } 87 | }; 88 | 89 | square.id = function (newId) { 90 | if (!arguments.length) { 91 | return id; 92 | } else { 93 | id = newId; 94 | if (canvas) { 95 | canvas.attr("id", id); 96 | } 97 | return square; 98 | } 99 | }; 100 | 101 | return square; 102 | } 103 | 104 | export function continuousArc(m_size, m_scale) { 105 | const arc = continuousSquare(m_size, m_scale); 106 | 107 | arc.makePixelData = function () { 108 | const pixelData = []; 109 | let c; 110 | let x; 111 | let y; 112 | let theta; 113 | let r; 114 | const angle = d3 115 | .scaleLinear() 116 | .domain([-Math.PI / 6, Math.PI / 6]) 117 | .range([1, 0]); 118 | var size = arc.size(); 119 | 120 | for (let i = 0; i < size; i++) { 121 | for (let j = 0; j < size; j++) { 122 | x = j / size - 0.5; 123 | y = 1 - i / size; 124 | r = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); 125 | theta = Math.atan2(y, x) - Math.PI / 2; 126 | 127 | if (theta > -Math.PI / 6 && theta < Math.PI / 6 && r > 0 && r < 1) { 128 | c = arc.scale()(angle(theta)); 129 | c = d3.interpolateLab(c, d3.color("#ddd"))(1 - r); 130 | c = d3.color(c); 131 | } else { 132 | c = d3.color("white"); 133 | c.opacity = 0; 134 | } 135 | 136 | pixelData.push(c.r); 137 | pixelData.push(c.g); 138 | pixelData.push(c.b); 139 | pixelData.push(255 * c.opacity); 140 | } 141 | } 142 | return pixelData; 143 | }; 144 | 145 | return arc; 146 | } 147 | 148 | export function continuousLine(m_length, m_width, m_scale) { 149 | const line = continuousSquare(m_length, m_scale); 150 | const width = m_width; 151 | const length = m_length; 152 | 153 | line.makePixelData = function () { 154 | const pixelData = []; 155 | let c; 156 | for (let i = 0; i < length; i++) { 157 | for (let j = 0; j < length; j++) { 158 | if (i < width) { 159 | c = line.scale()(j / length); 160 | c = d3.color(c); 161 | pixelData.push(c.r); 162 | pixelData.push(c.g); 163 | pixelData.push(c.b); 164 | pixelData.push(255); 165 | } else { 166 | pixelData.push(255); 167 | pixelData.push(255); 168 | pixelData.push(255); 169 | pixelData.push(0); 170 | } 171 | } 172 | } 173 | return pixelData; 174 | }; 175 | 176 | return line; 177 | } 178 | -------------------------------------------------------------------------------- /test/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Full test 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /src/heatmap.js: -------------------------------------------------------------------------------- 1 | /* 2 | A lightweight factory for making d3 heatmaps. 3 | */ 4 | import * as d3 from "d3"; 5 | 6 | export function simpleHeatmap(data, m_scale, m_size, m_id, m_x, m_y) { 7 | let x = m_x ? m_x : 0; 8 | let y = m_y ? m_y : 0; 9 | let size = m_size ? m_size : 0; 10 | let scale = m_scale ? m_scale : () => "#fff"; 11 | let id = m_id; 12 | let h; 13 | 14 | function heatmap(nel) { 15 | heatmap.el = nel; 16 | heatmap.setProperties(); 17 | } 18 | 19 | heatmap.setProperties = function () { 20 | if (!this.el) { 21 | return; 22 | } 23 | 24 | if (!heatmap.svgGroup) { 25 | heatmap.svgGroup = heatmap.el.append("g"); 26 | } 27 | 28 | heatmap.svgGroup.attr("transform", `translate(${x},${y})`); 29 | 30 | heatmap.svgGroup 31 | .selectAll("g") 32 | .data(data) 33 | .enter() 34 | .append("g") 35 | .selectAll("rect") 36 | .data((d, i) => 37 | d.map((val) => ({ 38 | r: i, 39 | v: val, 40 | })) 41 | ) 42 | .enter() 43 | .append("rect") 44 | .datum(function (d, i) { 45 | d.c = i; 46 | return d; 47 | }); 48 | 49 | heatmap.svgGroup 50 | .selectAll("g") 51 | .selectAll("rect") 52 | .attr("x", (d) => (size / data[d.r].length) * d.c) 53 | .attr("y", (d) => d.r * h) 54 | .attr("width", (d) => size / data[d.r].length) 55 | .attr("height", h) 56 | .attr("fill", (d) => scale(d.v)); 57 | 58 | if (id) { 59 | heatmap.svgGroup.attr("id", id); 60 | } 61 | }; 62 | 63 | heatmap.data = function (newData) { 64 | if (!arguments.length) { 65 | return data; 66 | } else { 67 | data = newData; 68 | h = size / data.length; 69 | heatmap.setProperties(); 70 | return heatmap; 71 | } 72 | }; 73 | 74 | heatmap.x = function (newX) { 75 | if (!arguments.length) { 76 | return x; 77 | } else { 78 | x = newX; 79 | heatmap.setProperties(); 80 | return heatmap; 81 | } 82 | }; 83 | 84 | heatmap.y = function (newY) { 85 | if (!arguments.length) { 86 | return y; 87 | } else { 88 | y = newY; 89 | heatmap.setProperties(); 90 | return heatmap; 91 | } 92 | }; 93 | 94 | heatmap.size = function (newSize) { 95 | if (!arguments.length) { 96 | return size; 97 | } else { 98 | size = newSize; 99 | if (data) { 100 | h = size / data.length; 101 | heatmap.setProperties(); 102 | } 103 | return heatmap; 104 | } 105 | }; 106 | 107 | heatmap.scale = function (newScale) { 108 | if (!arguments.length) { 109 | return scale; 110 | } else { 111 | scale = newScale; 112 | if (data) { 113 | heatmap.setProperties(); 114 | } 115 | return heatmap; 116 | } 117 | }; 118 | 119 | heatmap.id = function (newId) { 120 | if (!arguments.length) { 121 | return id; 122 | } else { 123 | id = newId; 124 | heatmap.setProperties(); 125 | return heatmap; 126 | } 127 | }; 128 | 129 | return heatmap; 130 | } 131 | 132 | export function simpleArcmap(data, m_scale, m_size, m_id, m_x, m_y) { 133 | const arcmap = simpleHeatmap(data, m_scale, m_size, m_id, m_x, m_y); 134 | 135 | function makeArc(d, size, rows, cols) { 136 | const angle = d3 137 | .scaleLinear() 138 | .domain([0, cols]) 139 | .range([-Math.PI / 6, Math.PI / 6]); 140 | const radius = d3.scaleLinear().domain([0, rows]).range([size, 0]); 141 | 142 | const arcPath = d3 143 | .arc() 144 | .innerRadius(radius(d.r + 1)) 145 | .outerRadius(radius(d.r)) 146 | .startAngle(angle(d.c)) 147 | .endAngle(angle(d.c + 1)); 148 | 149 | return arcPath(); 150 | } 151 | 152 | arcmap.setProperties = function () { 153 | var data = arcmap.data(); 154 | var size = arcmap.size(); 155 | var scale = arcmap.scale(); 156 | var id = arcmap.id(); 157 | var x = arcmap.x(); 158 | var y = arcmap.y(); 159 | 160 | if (!arcmap.el) { 161 | return; 162 | } 163 | 164 | if (!arcmap.svgGroup) { 165 | arcmap.svgGroup = arcmap.el.append("g"); 166 | } 167 | 168 | arcmap.svgGroup.attr("transform", `translate(${x},${y})`); 169 | 170 | arcmap.svgGroup 171 | .selectAll("g") 172 | .data(data) 173 | .enter() 174 | .append("g") 175 | .selectAll("path") 176 | .data((d, i) => 177 | d.map((val) => ({ 178 | r: i, 179 | v: val, 180 | })) 181 | ) 182 | .enter() 183 | .append("path") 184 | .datum(function (d, i) { 185 | d.c = i; 186 | return d; 187 | }); 188 | 189 | arcmap.svgGroup 190 | .selectAll("g") 191 | .selectAll("path") 192 | .attr("transform", `translate(${size / 2.0},${size})`) 193 | .attr("d", (d) => makeArc(d, size, data.length, data[d.r].length)) 194 | .attr("fill", (d) => scale(d.v)); 195 | 196 | if (id) { 197 | arcmap.svgGroup.attr("id", id); 198 | } 199 | }; 200 | 201 | return arcmap; 202 | } 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Value-Suppressing Uncertainty Palettes (VSUPs) 2 | 3 | [![npm version](https://img.shields.io/npm/v/vsup.svg)](https://www.npmjs.com/package/vsup) 4 | ![Node](https://github.com/uwdata/vsup/workflows/Node/badge.svg) 5 | 6 | 7 | 8 | 9 | 10 | Code for generating Value-Suppressing Uncertainty Palettes for use in D3 charts. Read more about VSUPs in our [introductory blog post](https://medium.com/@uwdata/value-suppressing-uncertainty-palettes-426130122ce9) and our [research paper](http://idl.cs.washington.edu/papers/uncertainty-palettes). 11 | 12 | ## Examples 13 | 14 | These examples are served from the [`examples`](https://github.com/uwdata/vsup/tree/master/examples) directory. 15 | 16 | * [Flights](https://uwdata.github.io/vsup/examples/flights.html) 17 | * [Polling](https://uwdata.github.io/vsup/examples/polling.html) 18 | * [Virology](https://uwdata.github.io/vsup/examples/virology.html) 19 | 20 | ## Citation 21 | 22 | If you use this module for a publication, please cite VSUPs as: 23 | 24 | ```bib 25 | @inproceedings{2018-uncertainty-palettes, 26 | title = {Value-Suppressing Uncertainty Palettes}, 27 | author = {Michael Correll AND Dominik Moritz AND Jeffrey Heer}, 28 | booktitle = {ACM Human Factors in Computing Systems (CHI)}, 29 | year = {2018}, 30 | url = {http://idl.cs.washington.edu/papers/uncertainty-palettes}, 31 | } 32 | ``` 33 | 34 | ## Installation 35 | 36 | `yarn add vsup` or include the library directly from [jsdelivr](https://www.jsdelivr.com/package/npm/vsup) as [`https://cdn.jsdelivr.net/npm/vsup`](https://cdn.jsdelivr.net/npm/vsup). 37 | 38 | ```html 39 | 40 | ``` 41 | 42 | ## Usage 43 | 44 | ### Quantization [<>](https://github.com/uwdata/vsup/blob/master/src/quantization.js) 45 | 46 | A quantization defines how values or objects of the form `{u: number, v: number}` (uncertainty and value) are quantized. They are used instead of a domain in VSUP scales. 47 | 48 | This module supports three different quantizations: `linearQuantization`, `squareQuantization`, and `quantization`. 49 | 50 | #### `vsup.linearQuantization` 51 | 52 | This is a wrapper around [`d3.scaleQuantize`](https://github.com/d3/d3-scale#quantize-scales). 53 | 54 | #### `vsup.squareQuantization` 55 | 56 | Defines a quantization into a rectangular matrix of value and uncertainty. 57 | 58 | The constructor takes a single argument `n`, the number of rows and columns. 59 | 60 | ```js 61 | var q = vsup.squareQuantization(3); 62 | ``` 63 | 64 | `q` is then a function that can be used to discretize uncertainties and values. 65 | 66 | ```js 67 | > q(0.2,0.1); 68 | {u: 0, v: 0.16666666666666666} 69 | ``` 70 | 71 | The quantization has the following methods: 72 | 73 | * `range` 74 | * `n` 75 | * `matrix` 76 | * `data` 77 | * `uncertaintyDomain` 78 | * `valueDomain` 79 | 80 | #### `vsup.quantization` 81 | 82 | Similar to `squareQuantization` but creates a tree quantization. The constructor takes two arguments `branchingFactor` and `treeLayers`. 83 | 84 | The quantization has the following methods: 85 | 86 | * `range` 87 | * `branching` 88 | * `layers` 89 | * `tree` 90 | * `data` 91 | * `uncertaintyDomain` 92 | * `valueDomain` 93 | 94 | ### Scales [<>](https://github.com/uwdata/vsup/blob/master/src/scale.js) 95 | 96 | The interface to create a scale mirrors [scales in D3](https://github.com/d3/d3-scale). The difference of VSUP scales is that they use a quantization instead of a domain. The range can be set to any color range. 97 | 98 | The constructor takes three optional arguments: mode (`usl`, `us`, `ul`), range, and quantization. It returns a function that takes two arguments `value` and `uncertainty`. 99 | 100 | For example 101 | 102 | ```js 103 | var s = vsup.scale(); 104 | ``` 105 | 106 | `s` is now a function that takes two arguments 107 | 108 | ```js 109 | > s(0.8, 0.1); 110 | "rgb(137, 214, 99)" 111 | ``` 112 | 113 | The scale has the following methods: 114 | 115 | * `range` to get or set the color range (e.g. `d3.interpolateViridis`) 116 | * `colorList` 117 | * `colorDists` 118 | * `mode` 119 | * `quantize` 120 | 121 | ### Legends [<>](https://github.com/uwdata/vsup/blob/master/src/legend.js) 122 | 123 | This module implements three kinds of legends (`simpleLegend`, `heatmapLegend`, and `arcmapLegend`) corresponding to the three quantization types. 124 | 125 | To add a legend to the DOM, create a legend and attach it to an element. For example: 126 | 127 | ```js 128 | var legend = vsup.legend().arcmapLegend(); 129 | svg.append("g").call(legend) 130 | ``` 131 | 132 | You can find example code in [`test/legend.html`](https://github.com/uwdata/vsup/blob/master/test/legend.html). 133 | 134 | #### `vsup.legend.simpleLegend` 135 | 136 | A simple legend for linear quantizations. 137 | 138 |

139 | 140 | #### `vsup.legend.heatmapLegend` 141 | 142 | A rectangular legend for tree quantization or square quantization. 143 | 144 |

145 | 146 | #### `vsup.legend.arcmapLegend` 147 | 148 | A legend for a tree quantization. 149 | 150 |

151 | 152 | 153 | ## Developers 154 | 155 | ### Make a new release 156 | 157 | * Test the examples in `test` 158 | * `yarn version` 159 | * `npm publish` 160 | * `git push --tags` 161 | -------------------------------------------------------------------------------- /src/quantization.js: -------------------------------------------------------------------------------- 1 | import * as d3 from "d3"; 2 | 3 | const epsilon = 1e-9; 4 | 5 | export function linearQuantization(m_n, m_range) { 6 | let n = m_n; 7 | const range = m_range; 8 | let scale = makeScale(); 9 | 10 | function makeScale() { 11 | return d3.scaleQuantize().range(d3.quantize(range, n)); 12 | } 13 | 14 | function quantization(value) { 15 | return scale(value); 16 | } 17 | 18 | quantization.range = () => scale.range(); 19 | 20 | quantization.n = function (newN) { 21 | if (!arguments.length) { 22 | return n; 23 | } else { 24 | n = newN; 25 | scale = makeScale(); 26 | return quantization; 27 | } 28 | }; 29 | 30 | return quantization; 31 | } 32 | 33 | export function squareQuantization(m_n) { 34 | let n = m_n; 35 | const uscale = d3.scaleLinear(); 36 | const vscale = d3.scaleLinear(); 37 | let matrix = makeMatrix(); 38 | 39 | function quantization(value, uncertainty) { 40 | var u = uncertainty != undefined ? uncertainty : value.u; 41 | var v = uncertainty != undefined ? value : value.v; 42 | let i = 0; 43 | 44 | // find the right layer of the tree, based on uncertainty 45 | while (i < matrix.length - 1 && uscale(u) < 1 - (i + 1) / n) { 46 | i++; 47 | } 48 | 49 | // find right leaf of tree, based on value 50 | const vgap = 51 | matrix[i].length > 1 ? (matrix[i][1].v - matrix[i][0].v) / 2 : 0; 52 | 53 | let j = 0; 54 | 55 | while (j < matrix[i].length - 1 && v > matrix[i][j].v + vgap) { 56 | j++; 57 | } 58 | 59 | return matrix[i][j]; 60 | } 61 | 62 | function makeMatrix() { 63 | const matrix = []; 64 | 65 | uscale.nice(n); 66 | vscale.nice(n); 67 | 68 | for (let i = 0; i < n; i++) { 69 | matrix[i] = []; 70 | for (let j = 1; j < 2 * n; j += 2) { 71 | matrix[i].push({ 72 | u: uscale.invert(1 - (i + 1) / n), 73 | v: vscale.invert(j / (2 * n)), 74 | }); 75 | } 76 | } 77 | 78 | return matrix; 79 | } 80 | 81 | quantization.range = () => [].concat.apply([], matrix); 82 | 83 | quantization.n = function (newN) { 84 | if (!arguments.length) { 85 | return n; 86 | } else { 87 | n = newN; 88 | matrix = makeMatrix(); 89 | return quantization; 90 | } 91 | }; 92 | 93 | quantization.matrix = () => matrix; 94 | 95 | quantization.data = quantization.matrix; 96 | 97 | quantization.uncertaintyDomain = function (newDomain) { 98 | if (!arguments.length) { 99 | return uscale.domain(); 100 | } else { 101 | uscale.domain(newDomain); 102 | matrix = makeMatrix(); 103 | return quantization; 104 | } 105 | }; 106 | 107 | quantization.valueDomain = function (newDomain) { 108 | if (!arguments.length) { 109 | return vscale.domain(); 110 | } else { 111 | vscale.domain(newDomain); 112 | matrix = makeMatrix(); 113 | return quantization; 114 | } 115 | }; 116 | 117 | return quantization; 118 | } 119 | 120 | export function treeQuantization(branchingFactor, treeLayers) { 121 | let branch = branchingFactor || 2; 122 | let layers = treeLayers || 2; 123 | const uscale = d3.scaleLinear(); 124 | const vscale = d3.scaleLinear(); 125 | let tree = makeTree(); 126 | 127 | function quantization(value, uncertainty) { 128 | var u = uncertainty != undefined ? uncertainty : value.u; 129 | var v = uncertainty != undefined ? value : value.v; 130 | let i = 0; 131 | 132 | // find the right layer of the tree, based on uncertainty 133 | while (i < tree.length - 1 && uscale(u) < 1 - (i + 1) / layers - epsilon) { 134 | i++; 135 | } 136 | 137 | // find right leaf of tree, based on value 138 | const vgap = tree[i].length > 1 ? (tree[i][1].v - tree[i][0].v) / 2 : 0; 139 | 140 | let j = 0; 141 | 142 | while (j < tree[i].length - 1 && v > tree[i][j].v + vgap) { 143 | j++; 144 | } 145 | 146 | return tree[i][j]; 147 | } 148 | 149 | function makeTree() { 150 | // Our tree should be "squarish" - it should have about 151 | // as many layers as leaves. 152 | const tree = []; 153 | 154 | let n; 155 | 156 | vscale.nice(Math.pow(branch, layers - 1)); 157 | uscale.nice(layers); 158 | 159 | tree[0] = []; 160 | tree[0].push({ 161 | u: uscale.invert((layers - 1) / layers), 162 | v: vscale.invert(0.5), 163 | }); 164 | 165 | for (let i = 1; i < layers; i++) { 166 | tree[i] = []; 167 | n = 2 * Math.pow(branch, i); 168 | for (let j = 1; j < n; j += 2) { 169 | tree[i].push({ 170 | u: uscale.invert(1 - (i + 1) / layers), 171 | v: vscale.invert(j / n), 172 | }); 173 | } 174 | } 175 | return tree; 176 | } 177 | 178 | quantization.range = () => [].concat.apply([], tree); 179 | 180 | quantization.tree = () => tree; 181 | 182 | quantization.data = quantization.tree; 183 | 184 | quantization.branching = function (newbranch) { 185 | if (!arguments.length) { 186 | return branch; 187 | } else { 188 | branch = Math.max(1, newbranch); 189 | tree = makeTree(); 190 | return quantization; 191 | } 192 | }; 193 | 194 | quantization.layers = function (newlayers) { 195 | if (!arguments.length) { 196 | return layers; 197 | } else { 198 | layers = Math.max(1, newlayers); 199 | tree = makeTree(); 200 | return quantization; 201 | } 202 | }; 203 | 204 | quantization.uncertaintyDomain = function (uDom) { 205 | if (!arguments.length) { 206 | return uscale.domain(); 207 | } else { 208 | uscale.domain(uDom); 209 | tree = makeTree(); 210 | return quantization; 211 | } 212 | }; 213 | 214 | quantization.valueDomain = function (vDom) { 215 | if (!arguments.length) { 216 | return vscale.domain(); 217 | } else { 218 | vscale.domain(vDom); 219 | tree = makeTree(); 220 | return quantization; 221 | } 222 | }; 223 | 224 | return quantization; 225 | } 226 | -------------------------------------------------------------------------------- /examples/flights.csv: -------------------------------------------------------------------------------- 1 | DayOfWeek,DepTimeBlk,DepDelay,StdMeanErr 2 | 1,0001-0559,8.897969052224372,1.230957811414512 3 | 1,0600-0659,6.929324482623975,0.7006511663457965 4 | 1,0700-0759,7.723363774733638,0.5806981413397009 5 | 1,0800-0859,11.068298460323726,0.598413615307324 6 | 1,0900-0959,12.297140399913998,0.5771583231861239 7 | 1,1000-1059,14.13575152041703,0.612918392530587 8 | 1,1100-1159,15.679030558482614,0.6671801433858121 9 | 1,1200-1259,17.7011925795053,0.683686132015881 10 | 1,1300-1359,17.65929583512237,0.719630306303089 11 | 1,1400-1459,18.561179475272812,0.7714627044909046 12 | 1,1500-1559,18.536718422156945,0.6693900414000802 13 | 1,1600-1659,18.557916381082933,0.6603600336691843 14 | 1,1700-1759,19.62830299471521,0.7296998788522859 15 | 1,1800-1859,19.216770329417184,0.7092249739312357 16 | 1,1900-1959,20.66569908079342,0.8490127675935443 17 | 1,2000-2059,20.756040070713023,1.0566823051221201 18 | 1,2100-2159,18.606469002695416,0.9921109070962975 19 | 1,2200-2259,17.874841972187106,1.4446062430338653 20 | 1,2300-2359,14.93663060278207,1.4643383508021537 21 | 2,0001-0559,4.987751102400784,0.9373979651368426 22 | 2,0600-0659,2.6049407114624508,0.49341550087172614 23 | 2,0700-0759,2.902818844864971,0.4744329758378097 24 | 2,0800-0859,5.519521912350598,0.49176182856507006 25 | 2,0900-0959,6.011612620508326,0.539126221836268 26 | 2,1000-1059,8.817214043035108,0.5706470020709326 27 | 2,1100-1159,9.590178183398523,0.5558172844778473 28 | 2,1200-1259,10.136425959780622,0.5674763749068412 29 | 2,1300-1359,11.270397842211732,0.5764213914121448 30 | 2,1400-1459,11.207664670658682,0.7184747297042668 31 | 2,1500-1559,12.201078748651565,0.5603851669508257 32 | 2,1600-1659,11.879408960915157,0.590971640775143 33 | 2,1700-1759,13.104453441295547,0.5667162554484931 34 | 2,1800-1859,13.550211811612261,0.6610263508156372 35 | 2,1900-1959,13.843845371312309,0.7402408947363729 36 | 2,2000-2059,14.280461202866936,0.9209347296990915 37 | 2,2100-2159,11.944190766108575,0.8289136926058579 38 | 2,2200-2259,10.619081272084806,1.4089449479759402 39 | 2,2300-2359,13.5,2.16184542428613 40 | 3,0001-0559,3.116323907455013,0.9808290463870517 41 | 3,0600-0659,1.6044983573414202,0.5679713641887207 42 | 3,0700-0759,2.6986200098570725,0.7002805883285922 43 | 3,0800-0859,3.2263823456484007,0.4249738864965809 44 | 3,0900-0959,6.396746622553074,0.6949114757675411 45 | 3,1000-1059,6.757490107405314,0.6744676120255656 46 | 3,1100-1159,7.636933987997818,0.6487819248533441 47 | 3,1200-1259,8.356551527262347,0.9509596684982962 48 | 3,1300-1359,8.485499163413273,0.6127463427116623 49 | 3,1400-1459,8.541207973817317,0.5621558784617395 50 | 3,1500-1559,9.446104589114194,0.552270277098636 51 | 3,1600-1659,9.63556595495759,0.5698548387957711 52 | 3,1700-1759,11.80919426594167,0.6949013389979316 53 | 3,1800-1859,12.169491525423728,0.7872740551396624 54 | 3,1900-1959,12.47995102540557,0.748112346409083 55 | 3,2000-2059,12.782426778242678,1.1056527134603251 56 | 3,2100-2159,10.140596469872184,1.082220306309923 57 | 3,2200-2259,11.056872037914692,1.603509579248528 58 | 3,2300-2359,8.021686746987951,1.3408527379810458 59 | 4,0001-0559,3.8079896907216493,1.3808261716292007 60 | 4,0600-0659,2.360331788241034,0.5775602085252189 61 | 4,0700-0759,3.7134000953743445,0.5281511689954281 62 | 4,0800-0859,5.169945892769307,0.5208360025192883 63 | 4,0900-0959,7.530110721036997,0.5728673506081108 64 | 4,1000-1059,8.611802923659988,0.5824623178821074 65 | 4,1100-1159,9.735731039874903,0.5666248003769643 66 | 4,1200-1259,12.295391449194891,0.9245884746997425 67 | 4,1300-1359,12.404164442071544,0.823692926142572 68 | 4,1400-1459,12.51137026239067,0.7874142662194845 69 | 4,1500-1559,13.48656330749354,0.7450140217479329 70 | 4,1600-1659,13.72434266327396,0.6463149913220991 71 | 4,1700-1759,13.59763170613823,0.6218011614842002 72 | 4,1800-1859,15.316477272727273,0.7549738114182606 73 | 4,1900-1959,14.517736734095573,0.6696550449705481 74 | 4,2000-2059,14.5254730713246,0.8116354762445244 75 | 4,2100-2159,12.14816933638444,0.815409238286179 76 | 4,2200-2259,7.262874711760184,0.9540647347180508 77 | 4,2300-2359,8.719665271966527,1.2142241568550924 78 | 5,0001-0559,5.167619047619048,1.5278885216442615 79 | 5,0600-0659,2.789726356216995,0.5878353533148762 80 | 5,0700-0759,3.0306820863818738,0.5491180863894457 81 | 5,0800-0859,4.017969888295289,0.41846722580081813 82 | 5,0900-0959,6.807206238236085,0.5022656210906977 83 | 5,1000-1059,7.606158833063209,0.702159674818376 84 | 5,1100-1159,8.916600894501446,0.5190502988742334 85 | 5,1200-1259,9.883328725463091,0.6058675516320082 86 | 5,1300-1359,10.153450608930989,0.5114914829102369 87 | 5,1400-1459,13.494582723279649,0.9136425971591078 88 | 5,1500-1559,13.836530880420499,0.8053229728904859 89 | 5,1600-1659,13.969821271608556,0.6849695093712839 90 | 5,1700-1759,14.030273197144966,0.6996005578979152 91 | 5,1800-1859,15.409596255119952,0.7962651789793237 92 | 5,1900-1959,15.461933534743203,0.826670720692202 93 | 5,2000-2059,15.193916349809886,1.1191871266370057 94 | 5,2100-2159,13.525943396226415,1.2418450044874239 95 | 5,2200-2259,13.456958970233307,1.7353705089600802 96 | 5,2300-2359,11.300411522633745,2.4600633813932866 97 | 6,0001-0559,4.828153564899451,1.2636464687167785 98 | 6,0600-0659,4.058696988322065,0.7813946458660874 99 | 6,0700-0759,4.417126269956459,0.6314885908639379 100 | 6,0800-0859,7.861086375779163,0.7683770299113271 101 | 6,0900-0959,9.39525184472249,0.8471234014411403 102 | 6,1000-1059,13.102091456930166,1.0573469069556019 103 | 6,1100-1159,14.202583490863264,1.0423162608978738 104 | 6,1200-1259,16.199867197875164,0.969004234639633 105 | 6,1300-1359,18.0859667006456,1.2204873811120143 106 | 6,1400-1459,16.208164766458257,0.9840600931193385 107 | 6,1500-1559,18.71394148020654,1.268749758810143 108 | 6,1600-1659,17.568020872158034,1.1587634547534489 109 | 6,1700-1759,16.44158200290276,1.1287275125090142 110 | 6,1800-1859,16.293482606957216,0.9964184229194207 111 | 6,1900-1959,19.680100755667507,1.5349376616552055 112 | 6,2000-2059,15.689402480270575,1.5428094685530034 113 | 6,2100-2159,17.195304162219852,2.1858256892376007 114 | 6,2200-2259,15.757022471910112,2.5534802509101246 115 | 6,2300-2359,13.642276422764228,3.454915040645766 116 | 7,0001-0559,7.429898648648648,1.6439026209758825 117 | 7,0600-0659,5.762886597938144,0.8130302132572808 118 | 7,0700-0759,5.166417165668663,0.6400267088641886 119 | 7,0800-0859,5.679245283018868,0.5568182013517595 120 | 7,0900-0959,7.994391212900211,0.6920917733974206 121 | 7,1000-1059,9.893698893698893,0.6304216218273168 122 | 7,1100-1159,10.191221879135421,0.6937076740009079 123 | 7,1200-1259,13.127163627971383,0.6562987485223659 124 | 7,1300-1359,14.48023492206912,0.7748242714208882 125 | 7,1400-1459,15.043447293447294,0.677438507727695 126 | 7,1500-1559,19.068151742390825,0.8747041440642463 127 | 7,1600-1659,21.89636189564385,1.0451762023724676 128 | 7,1700-1759,26.95839340885685,0.9726953506169829 129 | 7,1800-1859,30.32403062484564,1.1655140951410048 130 | 7,1900-1959,37.013216957605984,1.3389805567695543 131 | 7,2000-2059,29.027643203191793,1.177377181871359 132 | 7,2100-2159,34.96042471042471,1.7601865691873537 133 | 7,2200-2259,31.205698005698007,1.7686130902117658 134 | 7,2300-2359,23.625649913344887,2.462790647934794 135 | -------------------------------------------------------------------------------- /src/legend.js: -------------------------------------------------------------------------------- 1 | /* 2 | A lightweight factory for making legends. 3 | */ 4 | import * as d3 from "d3"; 5 | 6 | import { simpleHeatmap, simpleArcmap } from "./heatmap"; 7 | 8 | export function simpleLegend( 9 | m_scale, 10 | m_size, 11 | m_height, 12 | m_format, 13 | m_title, 14 | m_x, 15 | m_y 16 | ) { 17 | let el = null; 18 | let title = m_title; 19 | let scale = m_scale || null; 20 | let size = m_size || 200; 21 | let height = m_height || 30; 22 | let fmat = m_format || null; 23 | let x = m_x || 0; 24 | let y = m_y || 0; 25 | 26 | function legend(nel) { 27 | el = nel; 28 | legend.setProperties(); 29 | } 30 | 31 | legend.setProperties = function () { 32 | if (!el) { 33 | return; 34 | } 35 | 36 | var domain = scale.domain ? scale.domain() : [0, 1]; 37 | const w = size / scale.range().length; 38 | const step = (domain[1] - domain[0]) / scale.range().length; 39 | const dom = d3.range(domain[0], domain[1] + step, step); 40 | 41 | const axisScale = d3.scalePoint().range([0, size]).domain(dom).round(true); 42 | 43 | el.attr("class", "legend").attr("transform", `translate(${x},${y})`); 44 | 45 | const rect = el.selectAll("rect").data(scale.range()); 46 | 47 | rect 48 | .enter() 49 | .append("rect") 50 | .merge(rect) 51 | .attr("x", (d, i) => i * w) 52 | .attr("y", 0) 53 | .attr("height", height) 54 | .attr("width", w) 55 | .attr("fill", (d) => d); 56 | 57 | let axis = el.select("g.legend > g"); 58 | if (axis.empty()) { 59 | axis = el.append("g"); 60 | } 61 | axis 62 | .attr("transform", `translate(0, ${height})`) 63 | .call(d3.axisBottom(axisScale).tickFormat(d3.format(fmat || ""))); 64 | 65 | let label = el.select("g.legend > text"); 66 | if (label.empty()) { 67 | label = el.append("text"); 68 | } 69 | label 70 | .style("text-anchor", "middle") 71 | .style("font-size", 13) 72 | .attr("transform", `translate(${size / 2}, ${height + 30})`) 73 | .text(title); 74 | }; 75 | 76 | legend.title = function (t) { 77 | if (!arguments.length) { 78 | return title; 79 | } else { 80 | title = t; 81 | legend.setProperties(); 82 | return legend; 83 | } 84 | }; 85 | 86 | legend.scale = function (s) { 87 | if (!arguments.length) { 88 | return scale; 89 | } else { 90 | scale = s; 91 | legend.setProperties(); 92 | return legend; 93 | } 94 | }; 95 | 96 | legend.size = function (s) { 97 | if (!arguments.length) { 98 | return size; 99 | } else { 100 | size = s; 101 | legend.setProperties(); 102 | return legend; 103 | } 104 | }; 105 | 106 | legend.height = function (h) { 107 | if (!arguments.length) { 108 | return height; 109 | } else { 110 | height = h; 111 | legend.setProperties(); 112 | return legend; 113 | } 114 | }; 115 | 116 | legend.format = function (f) { 117 | if (!arguments.length) { 118 | return fmat; 119 | } else { 120 | fmat = f; 121 | legend.setProperties(); 122 | return legend; 123 | } 124 | }; 125 | 126 | legend.x = function (nx) { 127 | if (!arguments.length) { 128 | return x; 129 | } else { 130 | x = nx; 131 | legend.setProperties(); 132 | return legend; 133 | } 134 | }; 135 | 136 | legend.y = function (ny) { 137 | if (!arguments.length) { 138 | return y; 139 | } else { 140 | y = ny; 141 | legend.setProperties(); 142 | return legend; 143 | } 144 | }; 145 | 146 | return legend; 147 | } 148 | 149 | export function heatmapLegend( 150 | m_scale, 151 | m_size, 152 | m_format, 153 | m_utitle, 154 | m_vtitle, 155 | m_x, 156 | m_y 157 | ) { 158 | let el = null; 159 | let utitle = m_utitle ? m_utitle : "Uncertainty"; 160 | let vtitle = m_vtitle ? m_vtitle : "Value"; 161 | let scale = m_scale ? m_scale : null; 162 | let size = m_size ? m_size : 200; 163 | let fmat = m_format || null; 164 | let x = m_x ? m_x : 0; 165 | let y = m_y ? m_y : 0; 166 | let data = null; 167 | 168 | const heatmap = simpleHeatmap(); 169 | 170 | var legend = function (nel) { 171 | el = nel; 172 | legend.setProperties(); 173 | 174 | el.call(heatmap); 175 | }; 176 | 177 | legend.setProperties = function () { 178 | if (!el) { 179 | return; 180 | } 181 | 182 | let tmp = data; 183 | if (!tmp) { 184 | tmp = scale.quantize().data(); 185 | } 186 | 187 | const inverted = []; 188 | for (let i = 0; i < tmp.length; i++) { 189 | inverted[i] = tmp[tmp.length - i - 1]; 190 | } 191 | 192 | heatmap.y(1); // don't hide x-axis 193 | heatmap.data(inverted); 194 | heatmap.scale(scale); 195 | heatmap.size(size); 196 | 197 | el.attr("class", "legend").attr("transform", `translate(${x},${y})`); 198 | 199 | var uncertaintyDomain = 200 | scale && scale.quantize ? scale.quantize().uncertaintyDomain() : [0, 1]; 201 | const uStep = 202 | (uncertaintyDomain[1] - uncertaintyDomain[0]) / inverted.length; 203 | const uDom = d3.range( 204 | uncertaintyDomain[0], 205 | uncertaintyDomain[1] + uStep, 206 | uStep 207 | ); 208 | 209 | var valueDomain = 210 | scale && scale.quantize ? scale.quantize().valueDomain() : [0, 1]; 211 | const vStep = (valueDomain[1] - valueDomain[0]) / inverted.length; 212 | const vDom = d3.range(valueDomain[0], valueDomain[1] + vStep, vStep); 213 | 214 | const xAxisScale = d3.scalePoint().range([0, size]).domain(vDom); 215 | 216 | el.append("g").call( 217 | d3.axisTop(xAxisScale).tickFormat(d3.format(fmat || "")) 218 | ); 219 | 220 | el.append("text") 221 | .style("text-anchor", "middle") 222 | .style("font-size", 13) 223 | .attr("transform", `translate(${size / 2}, ${-25})`) 224 | .text(vtitle); 225 | 226 | const yAxis = d3.scalePoint().range([0, size]).domain(uDom); 227 | 228 | el.append("g") 229 | .attr("transform", `translate(${size}, 0)`) 230 | .call(d3.axisRight(yAxis).tickFormat(d3.format(fmat || ""))); 231 | 232 | el.append("text") 233 | .style("text-anchor", "middle") 234 | .style("font-size", 13) 235 | .attr("transform", `translate(${size + 40}, ${size / 2})rotate(90)`) 236 | .text(utitle); 237 | }; 238 | 239 | legend.data = function (newData) { 240 | if (!arguments.length) { 241 | return data; 242 | } else { 243 | data = newData; 244 | legend.setProperties(); 245 | return legend; 246 | } 247 | }; 248 | 249 | legend.scale = function (s) { 250 | if (!arguments.length) { 251 | return scale; 252 | } else { 253 | scale = s; 254 | legend.setProperties(); 255 | return legend; 256 | } 257 | }; 258 | 259 | legend.size = function (s) { 260 | if (!arguments.length) { 261 | return size; 262 | } else { 263 | size = s; 264 | legend.setProperties(); 265 | return legend; 266 | } 267 | }; 268 | 269 | legend.format = function (f) { 270 | if (!arguments.length) { 271 | return fmat; 272 | } else { 273 | fmat = f; 274 | legend.setProperties(); 275 | return legend; 276 | } 277 | }; 278 | 279 | legend.x = function (nx) { 280 | if (!arguments.length) { 281 | return x; 282 | } else { 283 | x = nx; 284 | legend.setProperties(); 285 | return legend; 286 | } 287 | }; 288 | 289 | legend.y = function (ny) { 290 | if (!arguments.length) { 291 | return y; 292 | } else { 293 | y = ny; 294 | legend.setProperties(); 295 | return legend; 296 | } 297 | }; 298 | 299 | legend.utitle = function (t) { 300 | if (!arguments.length) { 301 | return utitle; 302 | } else { 303 | utitle = t; 304 | legend.setProperties(); 305 | return legend; 306 | } 307 | }; 308 | 309 | legend.vtitle = function (t) { 310 | if (!arguments.length) { 311 | return vtitle; 312 | } else { 313 | vtitle = t; 314 | legend.setProperties(); 315 | return legend; 316 | } 317 | }; 318 | 319 | return legend; 320 | } 321 | 322 | export function arcmapLegend( 323 | m_scale, 324 | m_size, 325 | m_format, 326 | m_utitle, 327 | m_vtitle, 328 | m_x, 329 | m_y 330 | ) { 331 | let el = null; 332 | let utitle = m_utitle ? m_utitle : "Uncertainty"; 333 | let vtitle = m_vtitle ? m_vtitle : "Value"; 334 | let scale = m_scale ? m_scale : null; 335 | let size = m_size ? m_size : 200; 336 | let fmat = m_format || null; 337 | let x = m_x ? m_x : 0; 338 | let y = m_y ? m_y : 0; 339 | let data = null; 340 | 341 | const arcmap = simpleArcmap(); 342 | 343 | var legend = function (nel) { 344 | el = nel; 345 | legend.setProperties(); 346 | 347 | el.call(arcmap); 348 | }; 349 | 350 | legend.setProperties = function () { 351 | if (!el) { 352 | return; 353 | } 354 | 355 | let tmp = data; 356 | if (!tmp) { 357 | tmp = scale.quantize().data(); 358 | } 359 | 360 | const inverted = []; 361 | for (let i = 0; i < tmp.length; i++) { 362 | inverted[i] = tmp[tmp.length - i - 1]; 363 | } 364 | 365 | arcmap.data(inverted); 366 | arcmap.scale(scale); 367 | arcmap.size(size); 368 | 369 | el.attr("class", "legend").attr("transform", `translate(${x},${y})`); 370 | 371 | var uncertaintyDomain = 372 | scale && scale.quantize ? scale.quantize().uncertaintyDomain() : [0, 1]; 373 | const uStep = 374 | (uncertaintyDomain[1] - uncertaintyDomain[0]) / inverted.length; 375 | const uDom = d3.range( 376 | uncertaintyDomain[0], 377 | uncertaintyDomain[1] + uStep, 378 | uStep 379 | ); 380 | 381 | const uAxisScale = d3.scalePoint().range([0, size]).domain(uDom); 382 | 383 | const px = size / 180; 384 | el.append("g") 385 | .attr("transform", `translate(${size + 6 * px},${28 * px})rotate(30)`) 386 | .call(d3.axisRight(uAxisScale).tickFormat(d3.format(fmat || ""))); 387 | 388 | el.append("text") 389 | .style("text-anchor", "middle") 390 | .style("font-size", 13) 391 | .attr( 392 | "transform", 393 | "translate(" + 394 | (size + 10 * px) + 395 | "," + 396 | (40 * px + size / 2) + 397 | ")rotate(-60)" 398 | ) 399 | .text(utitle); 400 | 401 | var valueDomain = 402 | scale && scale.quantize ? scale.quantize().valueDomain() : [0, 1]; 403 | const vStep = (valueDomain[1] - valueDomain[0]) / inverted[0].length; 404 | const vTicks = d3.range(valueDomain[0], valueDomain[1] + vStep, vStep); 405 | 406 | const vAxisScale = d3.scaleLinear().range([0, size]).domain(valueDomain); 407 | const valueFormat = fmat 408 | ? d3.format(fmat) 409 | : vAxisScale.tickFormat(vTicks.length); 410 | 411 | const angle = d3.scaleLinear().domain(valueDomain).range([-30, 30]); 412 | 413 | const offset = 3 * px; 414 | 415 | const myArc = d3 416 | .arc() 417 | .innerRadius(size + offset) 418 | .outerRadius(size + offset + 1) 419 | .startAngle(-Math.PI / 6) 420 | .endAngle(Math.PI / 6); 421 | 422 | const arcAxis = el 423 | .append("g") 424 | .attr("transform", `translate(${size / 2},${size - offset})`); 425 | 426 | arcAxis 427 | .append("path") 428 | .attr("fill", "black") 429 | .attr("stroke", "transparent") 430 | .attr("d", myArc); 431 | 432 | const labelEnter = arcAxis 433 | .selectAll(".arc-label") 434 | .data(vTicks) 435 | .enter() 436 | .append("g") 437 | .attr("class", "arc-label") 438 | .attr( 439 | "transform", 440 | (d) => 441 | "rotate(" + 442 | angle(d) + 443 | ")translate(" + 444 | 0 + 445 | "," + 446 | (-size - offset) + 447 | ")" 448 | ); 449 | 450 | labelEnter 451 | .append("text") 452 | .style("font-size", "11") 453 | .style("text-anchor", "middle") 454 | .attr("y", -10) 455 | .text(valueFormat); 456 | 457 | labelEnter 458 | .append("line") 459 | .attr("x1", 0.5) 460 | .attr("x2", 0.5) 461 | .attr("y1", -6) 462 | .attr("y2", 0) 463 | .attr("stroke", "#000"); 464 | 465 | el.append("text") 466 | .style("text-anchor", "middle") 467 | .style("font-size", 13) 468 | .attr("x", size / 2) 469 | .attr("y", -30) 470 | .text(vtitle); 471 | }; 472 | 473 | legend.data = function (newData) { 474 | if (!arguments.length) { 475 | return data; 476 | } else { 477 | data = newData; 478 | legend.setProperties(); 479 | return legend; 480 | } 481 | }; 482 | 483 | legend.scale = function (s) { 484 | if (!arguments.length) { 485 | return scale; 486 | } else { 487 | scale = s; 488 | legend.setProperties(); 489 | return legend; 490 | } 491 | }; 492 | 493 | legend.size = function (s) { 494 | if (!arguments.length) { 495 | return size; 496 | } else { 497 | size = s; 498 | legend.setProperties(); 499 | return legend; 500 | } 501 | }; 502 | 503 | legend.format = function (f) { 504 | if (!arguments.length) { 505 | return fmat; 506 | } else { 507 | fmat = f; 508 | legend.setProperties(); 509 | return legend; 510 | } 511 | }; 512 | 513 | legend.x = function (nx) { 514 | if (!arguments.length) { 515 | return x; 516 | } else { 517 | x = nx; 518 | legend.setProperties(); 519 | return legend; 520 | } 521 | }; 522 | 523 | legend.y = function (ny) { 524 | if (!arguments.length) { 525 | return y; 526 | } else { 527 | y = ny; 528 | legend.setProperties(); 529 | return legend; 530 | } 531 | }; 532 | 533 | legend.utitle = function (t) { 534 | if (!arguments.length) { 535 | return utitle; 536 | } else { 537 | utitle = t; 538 | legend.setProperties(); 539 | return legend; 540 | } 541 | }; 542 | 543 | legend.vtitle = function (t) { 544 | if (!arguments.length) { 545 | return vtitle; 546 | } else { 547 | vtitle = t; 548 | legend.setProperties(); 549 | return legend; 550 | } 551 | }; 552 | 553 | return legend; 554 | } 555 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.2.2": 27 | version "0.2.2" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" 29 | integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | lodash "^4.17.19" 39 | minimatch "^3.0.4" 40 | strip-json-comments "^3.1.1" 41 | 42 | "@rollup/plugin-node-resolve@^11.0.1": 43 | version "11.0.1" 44 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz#d3765eec4bccf960801439a999382aed2dca959b" 45 | integrity sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ== 46 | dependencies: 47 | "@rollup/pluginutils" "^3.1.0" 48 | "@types/resolve" "1.17.1" 49 | builtin-modules "^3.1.0" 50 | deepmerge "^4.2.2" 51 | is-module "^1.0.0" 52 | resolve "^1.19.0" 53 | 54 | "@rollup/pluginutils@^3.1.0": 55 | version "3.1.0" 56 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 57 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 58 | dependencies: 59 | "@types/estree" "0.0.39" 60 | estree-walker "^1.0.1" 61 | picomatch "^2.2.2" 62 | 63 | "@types/estree@0.0.39": 64 | version "0.0.39" 65 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 66 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 67 | 68 | "@types/node@*": 69 | version "14.14.19" 70 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.19.tgz#5135176a8330b88ece4e9ab1fdcfc0a545b4bab4" 71 | integrity sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ== 72 | 73 | "@types/resolve@1.17.1": 74 | version "1.17.1" 75 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" 76 | integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== 77 | dependencies: 78 | "@types/node" "*" 79 | 80 | acorn-jsx@^5.3.1: 81 | version "5.3.1" 82 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 83 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 84 | 85 | acorn@^7.4.0: 86 | version "7.4.1" 87 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 88 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 89 | 90 | ajv@^6.10.0, ajv@^6.12.4: 91 | version "6.12.6" 92 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 93 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 94 | dependencies: 95 | fast-deep-equal "^3.1.1" 96 | fast-json-stable-stringify "^2.0.0" 97 | json-schema-traverse "^0.4.1" 98 | uri-js "^4.2.2" 99 | 100 | ajv@^7.0.2: 101 | version "7.0.3" 102 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" 103 | integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== 104 | dependencies: 105 | fast-deep-equal "^3.1.1" 106 | json-schema-traverse "^1.0.0" 107 | require-from-string "^2.0.2" 108 | uri-js "^4.2.2" 109 | 110 | ansi-colors@^4.1.1: 111 | version "4.1.1" 112 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 113 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 114 | 115 | ansi-regex@^5.0.0: 116 | version "5.0.0" 117 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 118 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 119 | 120 | ansi-styles@^3.2.1: 121 | version "3.2.1" 122 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 123 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 124 | dependencies: 125 | color-convert "^1.9.0" 126 | 127 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 128 | version "4.3.0" 129 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 130 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 131 | dependencies: 132 | color-convert "^2.0.1" 133 | 134 | argparse@^1.0.7: 135 | version "1.0.10" 136 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 137 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 138 | dependencies: 139 | sprintf-js "~1.0.2" 140 | 141 | astral-regex@^2.0.0: 142 | version "2.0.0" 143 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 144 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 145 | 146 | balanced-match@^1.0.0: 147 | version "1.0.0" 148 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 149 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 150 | 151 | brace-expansion@^1.1.7: 152 | version "1.1.11" 153 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 154 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 155 | dependencies: 156 | balanced-match "^1.0.0" 157 | concat-map "0.0.1" 158 | 159 | buffer-from@^1.0.0: 160 | version "1.1.1" 161 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 162 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 163 | 164 | builtin-modules@^3.1.0: 165 | version "3.2.0" 166 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" 167 | integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== 168 | 169 | callsites@^3.0.0: 170 | version "3.1.0" 171 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 172 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 173 | 174 | chalk@^2.0.0: 175 | version "2.4.2" 176 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 177 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 178 | dependencies: 179 | ansi-styles "^3.2.1" 180 | escape-string-regexp "^1.0.5" 181 | supports-color "^5.3.0" 182 | 183 | chalk@^4.0.0: 184 | version "4.1.0" 185 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 186 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 187 | dependencies: 188 | ansi-styles "^4.1.0" 189 | supports-color "^7.1.0" 190 | 191 | color-convert@^1.9.0: 192 | version "1.9.3" 193 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 194 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 195 | dependencies: 196 | color-name "1.1.3" 197 | 198 | color-convert@^2.0.1: 199 | version "2.0.1" 200 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 201 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 202 | dependencies: 203 | color-name "~1.1.4" 204 | 205 | color-name@1.1.3: 206 | version "1.1.3" 207 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 208 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 209 | 210 | color-name@~1.1.4: 211 | version "1.1.4" 212 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 213 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 214 | 215 | commander@2, commander@^2.20.0: 216 | version "2.20.3" 217 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 218 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 219 | 220 | concat-map@0.0.1: 221 | version "0.0.1" 222 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 223 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 224 | 225 | cross-spawn@^7.0.2: 226 | version "7.0.3" 227 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 228 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 229 | dependencies: 230 | path-key "^3.1.0" 231 | shebang-command "^2.0.0" 232 | which "^2.0.1" 233 | 234 | d3-array@2, d3-array@>=2.5, d3-array@^2.3.0: 235 | version "2.9.1" 236 | resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.9.1.tgz#f355cc72b46c8649b3f9212029e2d681cb5b9643" 237 | integrity sha512-Ob7RdOtkqsjx1NWyQHMFLtCSk6/aKTxDdC4ZIolX+O+mDD2RzrsYgAyc0WGAlfYFVELLSilS7w8BtE3PKM8bHg== 238 | 239 | d3-axis@2: 240 | version "2.0.0" 241 | resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-2.0.0.tgz#40aebb65626ffe6d95e9441fbf9194274b328a8b" 242 | integrity sha512-9nzB0uePtb+u9+dWir+HTuEAKJOEUYJoEwbJPsZ1B4K3iZUgzJcSENQ05Nj7S4CIfbZZ8/jQGoUzGKFznBhiiQ== 243 | 244 | d3-brush@2: 245 | version "2.1.0" 246 | resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-2.1.0.tgz#adadfbb104e8937af142e9a6e2028326f0471065" 247 | integrity sha512-cHLLAFatBATyIKqZOkk/mDHUbzne2B3ZwxkzMHvFTCZCmLaXDpZRihQSn8UNXTkGD/3lb/W2sQz0etAftmHMJQ== 248 | dependencies: 249 | d3-dispatch "1 - 2" 250 | d3-drag "2" 251 | d3-interpolate "1 - 2" 252 | d3-selection "2" 253 | d3-transition "2" 254 | 255 | d3-chord@2: 256 | version "2.0.0" 257 | resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-2.0.0.tgz#32491b5665391180560f738e5c1ccd1e3c47ebae" 258 | integrity sha512-D5PZb7EDsRNdGU4SsjQyKhja8Zgu+SHZfUSO5Ls8Wsn+jsAKUUGkcshLxMg9HDFxG3KqavGWaWkJ8EpU8ojuig== 259 | dependencies: 260 | d3-path "1 - 2" 261 | 262 | "d3-color@1 - 2", d3-color@2: 263 | version "2.0.0" 264 | resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" 265 | integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== 266 | 267 | d3-contour@2: 268 | version "2.0.0" 269 | resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-2.0.0.tgz#80ee834988563e3bea9d99ddde72c0f8c089ea40" 270 | integrity sha512-9unAtvIaNk06UwqBmvsdHX7CZ+NPDZnn8TtNH1myW93pWJkhsV25JcgnYAu0Ck5Veb1DHiCv++Ic5uvJ+h50JA== 271 | dependencies: 272 | d3-array "2" 273 | 274 | d3-delaunay@5: 275 | version "5.3.0" 276 | resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-5.3.0.tgz#b47f05c38f854a4e7b3cea80e0bb12e57398772d" 277 | integrity sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w== 278 | dependencies: 279 | delaunator "4" 280 | 281 | "d3-dispatch@1 - 2", d3-dispatch@2: 282 | version "2.0.0" 283 | resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-2.0.0.tgz#8a18e16f76dd3fcaef42163c97b926aa9b55e7cf" 284 | integrity sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== 285 | 286 | d3-drag@2: 287 | version "2.0.0" 288 | resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-2.0.0.tgz#9eaf046ce9ed1c25c88661911c1d5a4d8eb7ea6d" 289 | integrity sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w== 290 | dependencies: 291 | d3-dispatch "1 - 2" 292 | d3-selection "2" 293 | 294 | "d3-dsv@1 - 2", d3-dsv@2: 295 | version "2.0.0" 296 | resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-2.0.0.tgz#b37b194b6df42da513a120d913ad1be22b5fe7c5" 297 | integrity sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w== 298 | dependencies: 299 | commander "2" 300 | iconv-lite "0.4" 301 | rw "1" 302 | 303 | "d3-ease@1 - 2", d3-ease@2: 304 | version "2.0.0" 305 | resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-2.0.0.tgz#fd1762bfca00dae4bacea504b1d628ff290ac563" 306 | integrity sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ== 307 | 308 | d3-fetch@2: 309 | version "2.0.0" 310 | resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-2.0.0.tgz#ecd7ef2128d9847a3b41b548fec80918d645c064" 311 | integrity sha512-TkYv/hjXgCryBeNKiclrwqZH7Nb+GaOwo3Neg24ZVWA3MKB+Rd+BY84Nh6tmNEMcjUik1CSUWjXYndmeO6F7sw== 312 | dependencies: 313 | d3-dsv "1 - 2" 314 | 315 | d3-force@2: 316 | version "2.1.1" 317 | resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-2.1.1.tgz#f20ccbf1e6c9e80add1926f09b51f686a8bc0937" 318 | integrity sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew== 319 | dependencies: 320 | d3-dispatch "1 - 2" 321 | d3-quadtree "1 - 2" 322 | d3-timer "1 - 2" 323 | 324 | "d3-format@1 - 2", d3-format@2: 325 | version "2.0.0" 326 | resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" 327 | integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== 328 | 329 | d3-geo@2: 330 | version "2.0.1" 331 | resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-2.0.1.tgz#2437fdfed3fe3aba2812bd8f30609cac83a7ee39" 332 | integrity sha512-M6yzGbFRfxzNrVhxDJXzJqSLQ90q1cCyb3EWFZ1LF4eWOBYxFypw7I/NFVBNXKNqxv1bqLathhYvdJ6DC+th3A== 333 | dependencies: 334 | d3-array ">=2.5" 335 | 336 | d3-hierarchy@2: 337 | version "2.0.0" 338 | resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz#dab88a58ca3e7a1bc6cab390e89667fcc6d20218" 339 | integrity sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw== 340 | 341 | "d3-interpolate@1 - 2", "d3-interpolate@1.2.0 - 2", d3-interpolate@2: 342 | version "2.0.1" 343 | resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163" 344 | integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== 345 | dependencies: 346 | d3-color "1 - 2" 347 | 348 | "d3-path@1 - 2", d3-path@2: 349 | version "2.0.0" 350 | resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8" 351 | integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== 352 | 353 | d3-polygon@2: 354 | version "2.0.0" 355 | resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-2.0.0.tgz#13608ef042fbec625ba1598327564f03c0396d8e" 356 | integrity sha512-MsexrCK38cTGermELs0cO1d79DcTsQRN7IWMJKczD/2kBjzNXxLUWP33qRF6VDpiLV/4EI4r6Gs0DAWQkE8pSQ== 357 | 358 | "d3-quadtree@1 - 2", d3-quadtree@2: 359 | version "2.0.0" 360 | resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d" 361 | integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== 362 | 363 | d3-random@2: 364 | version "2.2.2" 365 | resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-2.2.2.tgz#5eebd209ef4e45a2b362b019c1fb21c2c98cbb6e" 366 | integrity sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw== 367 | 368 | d3-scale-chromatic@2: 369 | version "2.0.0" 370 | resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-2.0.0.tgz#c13f3af86685ff91323dc2f0ebd2dabbd72d8bab" 371 | integrity sha512-LLqy7dJSL8yDy7NRmf6xSlsFZ6zYvJ4BcWFE4zBrOPnQERv9zj24ohnXKRbyi9YHnYV+HN1oEO3iFK971/gkzA== 372 | dependencies: 373 | d3-color "1 - 2" 374 | d3-interpolate "1 - 2" 375 | 376 | d3-scale@3: 377 | version "3.2.3" 378 | resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" 379 | integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== 380 | dependencies: 381 | d3-array "^2.3.0" 382 | d3-format "1 - 2" 383 | d3-interpolate "1.2.0 - 2" 384 | d3-time "1 - 2" 385 | d3-time-format "2 - 3" 386 | 387 | d3-selection@2: 388 | version "2.0.0" 389 | resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-2.0.0.tgz#94a11638ea2141b7565f883780dabc7ef6a61066" 390 | integrity sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== 391 | 392 | d3-shape@2: 393 | version "2.0.0" 394 | resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd" 395 | integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw== 396 | dependencies: 397 | d3-path "1 - 2" 398 | 399 | "d3-time-format@2 - 3", d3-time-format@3: 400 | version "3.0.0" 401 | resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" 402 | integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== 403 | dependencies: 404 | d3-time "1 - 2" 405 | 406 | "d3-time@1 - 2", d3-time@2: 407 | version "2.0.0" 408 | resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" 409 | integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== 410 | 411 | "d3-timer@1 - 2", d3-timer@2: 412 | version "2.0.0" 413 | resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-2.0.0.tgz#055edb1d170cfe31ab2da8968deee940b56623e6" 414 | integrity sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== 415 | 416 | d3-transition@2: 417 | version "2.0.0" 418 | resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-2.0.0.tgz#366ef70c22ef88d1e34105f507516991a291c94c" 419 | integrity sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog== 420 | dependencies: 421 | d3-color "1 - 2" 422 | d3-dispatch "1 - 2" 423 | d3-ease "1 - 2" 424 | d3-interpolate "1 - 2" 425 | d3-timer "1 - 2" 426 | 427 | d3-zoom@2: 428 | version "2.0.0" 429 | resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-2.0.0.tgz#f04d0afd05518becce879d04709c47ecd93fba54" 430 | integrity sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw== 431 | dependencies: 432 | d3-dispatch "1 - 2" 433 | d3-drag "2" 434 | d3-interpolate "1 - 2" 435 | d3-selection "2" 436 | d3-transition "2" 437 | 438 | d3@^6.3.1: 439 | version "6.3.1" 440 | resolved "https://registry.yarnpkg.com/d3/-/d3-6.3.1.tgz#c5fe6c7abff432826775a9e04db80b5f2e22eb1c" 441 | integrity sha512-rbaoA67o2N4lO1TCuvrTGQdowNb3zT0z2ygg6TLmJZAd7TRPg+lhbfDOVwQUAgdbRD+73kg2FrEQ9HLiap5H2w== 442 | dependencies: 443 | d3-array "2" 444 | d3-axis "2" 445 | d3-brush "2" 446 | d3-chord "2" 447 | d3-color "2" 448 | d3-contour "2" 449 | d3-delaunay "5" 450 | d3-dispatch "2" 451 | d3-drag "2" 452 | d3-dsv "2" 453 | d3-ease "2" 454 | d3-fetch "2" 455 | d3-force "2" 456 | d3-format "2" 457 | d3-geo "2" 458 | d3-hierarchy "2" 459 | d3-interpolate "2" 460 | d3-path "2" 461 | d3-polygon "2" 462 | d3-quadtree "2" 463 | d3-random "2" 464 | d3-scale "3" 465 | d3-scale-chromatic "2" 466 | d3-selection "2" 467 | d3-shape "2" 468 | d3-time "2" 469 | d3-time-format "3" 470 | d3-timer "2" 471 | d3-transition "2" 472 | d3-zoom "2" 473 | 474 | debug@^4.0.1, debug@^4.1.1: 475 | version "4.3.1" 476 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 477 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 478 | dependencies: 479 | ms "2.1.2" 480 | 481 | deep-is@^0.1.3: 482 | version "0.1.3" 483 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 484 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 485 | 486 | deepmerge@^4.2.2: 487 | version "4.2.2" 488 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 489 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 490 | 491 | delaunator@4: 492 | version "4.0.1" 493 | resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-4.0.1.tgz#3d779687f57919a7a418f8ab947d3bddb6846957" 494 | integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== 495 | 496 | doctrine@^3.0.0: 497 | version "3.0.0" 498 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 499 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 500 | dependencies: 501 | esutils "^2.0.2" 502 | 503 | emoji-regex@^8.0.0: 504 | version "8.0.0" 505 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 506 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 507 | 508 | enquirer@^2.3.5: 509 | version "2.3.6" 510 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 511 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 512 | dependencies: 513 | ansi-colors "^4.1.1" 514 | 515 | escape-string-regexp@^1.0.5: 516 | version "1.0.5" 517 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 518 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 519 | 520 | eslint-config-prettier@^7.1.0: 521 | version "7.1.0" 522 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#5402eb559aa94b894effd6bddfa0b1ca051c858f" 523 | integrity sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA== 524 | 525 | eslint-plugin-prettier@^3.3.0: 526 | version "3.3.0" 527 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" 528 | integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== 529 | dependencies: 530 | prettier-linter-helpers "^1.0.0" 531 | 532 | eslint-scope@^5.1.1: 533 | version "5.1.1" 534 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 535 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 536 | dependencies: 537 | esrecurse "^4.3.0" 538 | estraverse "^4.1.1" 539 | 540 | eslint-utils@^2.1.0: 541 | version "2.1.0" 542 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 543 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 544 | dependencies: 545 | eslint-visitor-keys "^1.1.0" 546 | 547 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 548 | version "1.3.0" 549 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 550 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 551 | 552 | eslint-visitor-keys@^2.0.0: 553 | version "2.0.0" 554 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 555 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 556 | 557 | eslint@^7.17.0: 558 | version "7.17.0" 559 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" 560 | integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== 561 | dependencies: 562 | "@babel/code-frame" "^7.0.0" 563 | "@eslint/eslintrc" "^0.2.2" 564 | ajv "^6.10.0" 565 | chalk "^4.0.0" 566 | cross-spawn "^7.0.2" 567 | debug "^4.0.1" 568 | doctrine "^3.0.0" 569 | enquirer "^2.3.5" 570 | eslint-scope "^5.1.1" 571 | eslint-utils "^2.1.0" 572 | eslint-visitor-keys "^2.0.0" 573 | espree "^7.3.1" 574 | esquery "^1.2.0" 575 | esutils "^2.0.2" 576 | file-entry-cache "^6.0.0" 577 | functional-red-black-tree "^1.0.1" 578 | glob-parent "^5.0.0" 579 | globals "^12.1.0" 580 | ignore "^4.0.6" 581 | import-fresh "^3.0.0" 582 | imurmurhash "^0.1.4" 583 | is-glob "^4.0.0" 584 | js-yaml "^3.13.1" 585 | json-stable-stringify-without-jsonify "^1.0.1" 586 | levn "^0.4.1" 587 | lodash "^4.17.19" 588 | minimatch "^3.0.4" 589 | natural-compare "^1.4.0" 590 | optionator "^0.9.1" 591 | progress "^2.0.0" 592 | regexpp "^3.1.0" 593 | semver "^7.2.1" 594 | strip-ansi "^6.0.0" 595 | strip-json-comments "^3.1.0" 596 | table "^6.0.4" 597 | text-table "^0.2.0" 598 | v8-compile-cache "^2.0.3" 599 | 600 | espree@^7.3.0, espree@^7.3.1: 601 | version "7.3.1" 602 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 603 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 604 | dependencies: 605 | acorn "^7.4.0" 606 | acorn-jsx "^5.3.1" 607 | eslint-visitor-keys "^1.3.0" 608 | 609 | esprima@^4.0.0: 610 | version "4.0.1" 611 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 612 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 613 | 614 | esquery@^1.2.0: 615 | version "1.3.1" 616 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 617 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 618 | dependencies: 619 | estraverse "^5.1.0" 620 | 621 | esrecurse@^4.3.0: 622 | version "4.3.0" 623 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 624 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 625 | dependencies: 626 | estraverse "^5.2.0" 627 | 628 | estraverse@^4.1.1: 629 | version "4.3.0" 630 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 631 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 632 | 633 | estraverse@^5.1.0, estraverse@^5.2.0: 634 | version "5.2.0" 635 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 636 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 637 | 638 | estree-walker@^1.0.1: 639 | version "1.0.1" 640 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 641 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 642 | 643 | esutils@^2.0.2: 644 | version "2.0.3" 645 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 646 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 647 | 648 | fast-deep-equal@^3.1.1: 649 | version "3.1.3" 650 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 651 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 652 | 653 | fast-diff@^1.1.2: 654 | version "1.2.0" 655 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 656 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 657 | 658 | fast-json-stable-stringify@^2.0.0: 659 | version "2.1.0" 660 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 661 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 662 | 663 | fast-levenshtein@^2.0.6: 664 | version "2.0.6" 665 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 666 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 667 | 668 | file-entry-cache@^6.0.0: 669 | version "6.0.0" 670 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" 671 | integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== 672 | dependencies: 673 | flat-cache "^3.0.4" 674 | 675 | flat-cache@^3.0.4: 676 | version "3.0.4" 677 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 678 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 679 | dependencies: 680 | flatted "^3.1.0" 681 | rimraf "^3.0.2" 682 | 683 | flatted@^3.1.0: 684 | version "3.1.0" 685 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" 686 | integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== 687 | 688 | fs.realpath@^1.0.0: 689 | version "1.0.0" 690 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 691 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 692 | 693 | fsevents@~2.1.2: 694 | version "2.1.3" 695 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 696 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 697 | 698 | function-bind@^1.1.1: 699 | version "1.1.1" 700 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 701 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 702 | 703 | functional-red-black-tree@^1.0.1: 704 | version "1.0.1" 705 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 706 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 707 | 708 | glob-parent@^5.0.0: 709 | version "5.1.1" 710 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 711 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 712 | dependencies: 713 | is-glob "^4.0.1" 714 | 715 | glob@^7.1.3: 716 | version "7.1.6" 717 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 718 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 719 | dependencies: 720 | fs.realpath "^1.0.0" 721 | inflight "^1.0.4" 722 | inherits "2" 723 | minimatch "^3.0.4" 724 | once "^1.3.0" 725 | path-is-absolute "^1.0.0" 726 | 727 | globals@^12.1.0: 728 | version "12.4.0" 729 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 730 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 731 | dependencies: 732 | type-fest "^0.8.1" 733 | 734 | has-flag@^3.0.0: 735 | version "3.0.0" 736 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 737 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 738 | 739 | has-flag@^4.0.0: 740 | version "4.0.0" 741 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 742 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 743 | 744 | has@^1.0.3: 745 | version "1.0.3" 746 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 747 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 748 | dependencies: 749 | function-bind "^1.1.1" 750 | 751 | iconv-lite@0.4: 752 | version "0.4.24" 753 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 754 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 755 | dependencies: 756 | safer-buffer ">= 2.1.2 < 3" 757 | 758 | ignore@^4.0.6: 759 | version "4.0.6" 760 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 761 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 762 | 763 | import-fresh@^3.0.0, import-fresh@^3.2.1: 764 | version "3.3.0" 765 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 766 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 767 | dependencies: 768 | parent-module "^1.0.0" 769 | resolve-from "^4.0.0" 770 | 771 | imurmurhash@^0.1.4: 772 | version "0.1.4" 773 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 774 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 775 | 776 | inflight@^1.0.4: 777 | version "1.0.6" 778 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 779 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 780 | dependencies: 781 | once "^1.3.0" 782 | wrappy "1" 783 | 784 | inherits@2: 785 | version "2.0.4" 786 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 787 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 788 | 789 | is-core-module@^2.1.0: 790 | version "2.2.0" 791 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 792 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 793 | dependencies: 794 | has "^1.0.3" 795 | 796 | is-extglob@^2.1.1: 797 | version "2.1.1" 798 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 799 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 800 | 801 | is-fullwidth-code-point@^3.0.0: 802 | version "3.0.0" 803 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 804 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 805 | 806 | is-glob@^4.0.0, is-glob@^4.0.1: 807 | version "4.0.1" 808 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 809 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 810 | dependencies: 811 | is-extglob "^2.1.1" 812 | 813 | is-module@^1.0.0: 814 | version "1.0.0" 815 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 816 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 817 | 818 | isexe@^2.0.0: 819 | version "2.0.0" 820 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 821 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 822 | 823 | js-tokens@^4.0.0: 824 | version "4.0.0" 825 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 826 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 827 | 828 | js-yaml@^3.13.1: 829 | version "3.14.1" 830 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 831 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 832 | dependencies: 833 | argparse "^1.0.7" 834 | esprima "^4.0.0" 835 | 836 | json-schema-traverse@^0.4.1: 837 | version "0.4.1" 838 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 839 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 840 | 841 | json-schema-traverse@^1.0.0: 842 | version "1.0.0" 843 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 844 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 845 | 846 | json-stable-stringify-without-jsonify@^1.0.1: 847 | version "1.0.1" 848 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 849 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 850 | 851 | levn@^0.4.1: 852 | version "0.4.1" 853 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 854 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 855 | dependencies: 856 | prelude-ls "^1.2.1" 857 | type-check "~0.4.0" 858 | 859 | lodash@^4.17.19, lodash@^4.17.20: 860 | version "4.17.20" 861 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 862 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 863 | 864 | lru-cache@^6.0.0: 865 | version "6.0.0" 866 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 867 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 868 | dependencies: 869 | yallist "^4.0.0" 870 | 871 | minimatch@^3.0.4: 872 | version "3.0.4" 873 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 874 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 875 | dependencies: 876 | brace-expansion "^1.1.7" 877 | 878 | ms@2.1.2: 879 | version "2.1.2" 880 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 881 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 882 | 883 | natural-compare@^1.4.0: 884 | version "1.4.0" 885 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 886 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 887 | 888 | once@^1.3.0: 889 | version "1.4.0" 890 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 891 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 892 | dependencies: 893 | wrappy "1" 894 | 895 | optionator@^0.9.1: 896 | version "0.9.1" 897 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 898 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 899 | dependencies: 900 | deep-is "^0.1.3" 901 | fast-levenshtein "^2.0.6" 902 | levn "^0.4.1" 903 | prelude-ls "^1.2.1" 904 | type-check "^0.4.0" 905 | word-wrap "^1.2.3" 906 | 907 | parent-module@^1.0.0: 908 | version "1.0.1" 909 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 910 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 911 | dependencies: 912 | callsites "^3.0.0" 913 | 914 | path-is-absolute@^1.0.0: 915 | version "1.0.1" 916 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 917 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 918 | 919 | path-key@^3.1.0: 920 | version "3.1.1" 921 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 922 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 923 | 924 | path-parse@^1.0.6: 925 | version "1.0.6" 926 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 927 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 928 | 929 | picomatch@^2.2.2: 930 | version "2.2.2" 931 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 932 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 933 | 934 | prelude-ls@^1.2.1: 935 | version "1.2.1" 936 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 937 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 938 | 939 | prettier-linter-helpers@^1.0.0: 940 | version "1.0.0" 941 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 942 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 943 | dependencies: 944 | fast-diff "^1.1.2" 945 | 946 | prettier@^2.2.1: 947 | version "2.2.1" 948 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 949 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 950 | 951 | progress@^2.0.0: 952 | version "2.0.3" 953 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 954 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 955 | 956 | punycode@^2.1.0: 957 | version "2.1.1" 958 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 959 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 960 | 961 | regexpp@^3.1.0: 962 | version "3.1.0" 963 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 964 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 965 | 966 | require-from-string@^2.0.2: 967 | version "2.0.2" 968 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 969 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 970 | 971 | resolve-from@^4.0.0: 972 | version "4.0.0" 973 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 974 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 975 | 976 | resolve@^1.19.0: 977 | version "1.19.0" 978 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 979 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 980 | dependencies: 981 | is-core-module "^2.1.0" 982 | path-parse "^1.0.6" 983 | 984 | rimraf@^3.0.2: 985 | version "3.0.2" 986 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 987 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 988 | dependencies: 989 | glob "^7.1.3" 990 | 991 | rollup@^2.35.1: 992 | version "2.35.1" 993 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.35.1.tgz#e6bc8d10893556a638066f89e8c97f422d03968c" 994 | integrity sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA== 995 | optionalDependencies: 996 | fsevents "~2.1.2" 997 | 998 | rw@1: 999 | version "1.3.3" 1000 | resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" 1001 | integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= 1002 | 1003 | "safer-buffer@>= 2.1.2 < 3": 1004 | version "2.1.2" 1005 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1006 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1007 | 1008 | semver@^7.2.1: 1009 | version "7.3.4" 1010 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" 1011 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== 1012 | dependencies: 1013 | lru-cache "^6.0.0" 1014 | 1015 | shebang-command@^2.0.0: 1016 | version "2.0.0" 1017 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1018 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1019 | dependencies: 1020 | shebang-regex "^3.0.0" 1021 | 1022 | shebang-regex@^3.0.0: 1023 | version "3.0.0" 1024 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1025 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1026 | 1027 | slice-ansi@^4.0.0: 1028 | version "4.0.0" 1029 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1030 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1031 | dependencies: 1032 | ansi-styles "^4.0.0" 1033 | astral-regex "^2.0.0" 1034 | is-fullwidth-code-point "^3.0.0" 1035 | 1036 | source-map-support@~0.5.19: 1037 | version "0.5.19" 1038 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1039 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1040 | dependencies: 1041 | buffer-from "^1.0.0" 1042 | source-map "^0.6.0" 1043 | 1044 | source-map@^0.6.0: 1045 | version "0.6.1" 1046 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1047 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1048 | 1049 | source-map@~0.7.2: 1050 | version "0.7.3" 1051 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 1052 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1053 | 1054 | sprintf-js@~1.0.2: 1055 | version "1.0.3" 1056 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1057 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1058 | 1059 | string-width@^4.2.0: 1060 | version "4.2.0" 1061 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1062 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1063 | dependencies: 1064 | emoji-regex "^8.0.0" 1065 | is-fullwidth-code-point "^3.0.0" 1066 | strip-ansi "^6.0.0" 1067 | 1068 | strip-ansi@^6.0.0: 1069 | version "6.0.0" 1070 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1071 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1072 | dependencies: 1073 | ansi-regex "^5.0.0" 1074 | 1075 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1076 | version "3.1.1" 1077 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1078 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1079 | 1080 | supports-color@^5.3.0: 1081 | version "5.5.0" 1082 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1083 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1084 | dependencies: 1085 | has-flag "^3.0.0" 1086 | 1087 | supports-color@^7.1.0: 1088 | version "7.2.0" 1089 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1090 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1091 | dependencies: 1092 | has-flag "^4.0.0" 1093 | 1094 | table@^6.0.4: 1095 | version "6.0.6" 1096 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.6.tgz#e9223f1e851213e2e43ab584b0fec33fb09a8e7a" 1097 | integrity sha512-OInCtPmDNieVBkVFi6C8RwU2S2H0h8mF3e3TQK4nreaUNCpooQUkI+A/KuEkm5FawfhWIfNqG+qfelVVR+V00g== 1098 | dependencies: 1099 | ajv "^7.0.2" 1100 | lodash "^4.17.20" 1101 | slice-ansi "^4.0.0" 1102 | string-width "^4.2.0" 1103 | 1104 | terser@^5.5.1: 1105 | version "5.5.1" 1106 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" 1107 | integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== 1108 | dependencies: 1109 | commander "^2.20.0" 1110 | source-map "~0.7.2" 1111 | source-map-support "~0.5.19" 1112 | 1113 | text-table@^0.2.0: 1114 | version "0.2.0" 1115 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1116 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1117 | 1118 | type-check@^0.4.0, type-check@~0.4.0: 1119 | version "0.4.0" 1120 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1121 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1122 | dependencies: 1123 | prelude-ls "^1.2.1" 1124 | 1125 | type-fest@^0.8.1: 1126 | version "0.8.1" 1127 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1128 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1129 | 1130 | uri-js@^4.2.2: 1131 | version "4.4.0" 1132 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" 1133 | integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== 1134 | dependencies: 1135 | punycode "^2.1.0" 1136 | 1137 | v8-compile-cache@^2.0.3: 1138 | version "2.2.0" 1139 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" 1140 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== 1141 | 1142 | which@^2.0.1: 1143 | version "2.0.2" 1144 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1145 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1146 | dependencies: 1147 | isexe "^2.0.0" 1148 | 1149 | word-wrap@^1.2.3: 1150 | version "1.2.3" 1151 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1152 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1153 | 1154 | wrappy@1: 1155 | version "1.0.2" 1156 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1157 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1158 | 1159 | yallist@^4.0.0: 1160 | version "4.0.0" 1161 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1162 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1163 | -------------------------------------------------------------------------------- /examples/viral_binned.csv: -------------------------------------------------------------------------------- 1 | ,Individual,Position,Mutation,BadReads 2 | 0,CY0320,1309.0,0.16414062500000007,6.9401266328125 3 | 1,CY0320,1436.7536231884058,0.35039062499999996,7.716727437499995 4 | 2,CY0320,1564.5072463768115,0.16863281250000015,3.3157043308593757 5 | 3,CY0320,1692.2608695652175,0.14488281249999999,4.0818083402343746 6 | 4,CY0320,1820.0144927536232,0.1418897637795276,3.300152786614174 7 | 5,CY0320,1947.768115942029,0.11863281250000007,1.9020915628906234 8 | 6,CY0320,2075.521739130435,0.6051562499999994,3.8653067578125 9 | 7,CY0320,2203.2753623188405,0.6475781249999987,2.993052058593751 10 | 8,CY0320,2331.0289855072465,0.18282352941176477,6.3349006666666625 11 | 9,CY0320,2458.782608695652,0.9787692307692303,3.910043765384614 12 | 10,CY0320,2586.536231884058,0.16403100775193796,5.792980441860464 13 | 11,CY0320,2714.289855072464,0.2220463320463323,2.311942065250964 14 | 12,CY0320,2842.0434782608695,0.17444881889763783,3.280244437795275 15 | 13,CY0320,2969.797101449275,0.16394531249999997,5.672661482421871 16 | 14,CY0320,3097.550724637681,0.27812500000000034,5.616642662500001 17 | 15,CY0320,3225.304347826087,0.1878906249999999,7.135260076953127 18 | 16,CY0320,3353.057971014493,0.35153543307086593,4.020021477559054 19 | 17,CY0320,3480.8115942028985,0.15402343750000008,2.9405190058593753 20 | 18,CY0320,3608.5652173913045,0.19207031249999987,1.5596409265624993 21 | 19,CY0320,3736.31884057971,0.17015624999999995,4.390660379296876 22 | 20,CY0320,3864.072463768116,0.19519685039370083,5.514240151181094 23 | 21,CY0320,3991.8260869565215,0.18843749999999984,3.1433069320312503 24 | 22,CY0320,4119.579710144928,0.25269531250000005,3.8391236593750007 25 | 23,CY0320,4247.333333333334,0.18824218749999982,2.2566117222656255 26 | 24,CY0320,4375.086956521739,0.17228346456692906,4.682146356299212 27 | 25,CY0320,4502.840579710145,0.14234375000000002,2.1287686394531256 28 | 26,CY0320,4630.59420289855,0.19269531250000005,3.0093863273437482 29 | 27,CY0320,4758.347826086956,0.17230468750000008,2.447729292968751 30 | 28,CY0320,4886.101449275362,0.15755905511811022,4.188021149606299 31 | 29,CY0320,5013.855072463768,0.18875000000000017,1.5788944773437488 32 | 30,CY0320,5141.608695652174,0.17445312500000001,3.6477647207031243 33 | 31,CY0320,5269.36231884058,0.13984375000000013,3.835206306249999 34 | 32,CY0320,5397.115942028986,0.15460629921259844,5.4837199696850405 35 | 33,CY0320,5524.869565217391,0.13743190661478602,2.5449546789883266 36 | 34,CY0320,5652.623188405797,0.11890625000000002,3.390490675781249 37 | 35,CY0320,5780.376811594203,0.1411718749999999,3.8679722929687497 38 | 36,CY0320,5908.130434782609,0.15149606299212592,2.8710047535433048 39 | 37,CY0320,6035.884057971014,0.15621093749999992,1.7825613121093744 40 | 38,CY0320,6163.63768115942,0.14759689922480612,3.1219208058139523 41 | 39,CY0320,6291.391304347826,0.1533203124999999,7.056821732421878 42 | 40,CY0320,6419.144927536232,0.18413385826771653,4.0160300937007865 43 | 41,CY0320,6546.898550724638,1.218158844765343,3.2687699209386296 44 | 42,CY0320,6674.652173913043,0.18957198443579762,5.1531167 45 | 43,CY0320,6802.405797101449,0.1986872586872585,3.4261951150579146 46 | 44,CY0320,6930.159420289855,0.5490157480314964,2.479298823228347 47 | 45,CY0320,7057.913043478261,0.39675781249999953,2.4748383925781243 48 | 46,CY0320,7185.666666666667,0.19246093750000023,3.132903716015627 49 | 47,CY0320,7313.420289855072,0.2082421875000001,5.0701402132812525 50 | 48,CY0320,7441.173913043478,0.6525984251968504,1.433947831102363 51 | 49,CY0320,7568.927536231884,0.16062499999999968,1.6148012445312507 52 | 50,CY0320,7696.68115942029,0.20941406249999972,2.7217306097656246 53 | 51,CY0320,7824.434782608696,0.19410156250000002,2.9455317812499993 54 | 52,CY0320,7952.188405797101,0.20188976377952764,2.334658173622048 55 | 53,CY0320,8079.942028985507,0.19812500000000005,4.176236520703129 56 | 54,CY0320,8207.695652173912,0.1822265624999999,2.0837746089843776 57 | 55,CY0320,8335.44927536232,0.20273437500000008,4.821206915624999 58 | 56,CY0320,8463.202898550724,0.1528740157480318,1.5063722511811026 59 | 57,CY0320,8590.95652173913,0.16343749999999985,1.9538643695312508 60 | 58,CY0320,8718.710144927536,0.18199218749999968,2.420692651953125 61 | 59,CY0320,8846.463768115942,0.2008984374999996,1.696621815625 62 | 60,CY0320,8974.217391304348,0.15787401574803162,3.5761984716535435 63 | 61,CY0320,9101.971014492754,0.2924045801526714,1.9460410400763366 64 | 62,CY0320,9229.72463768116,1.047300380228137,1.5455315045627378 65 | 63,CY0320,9357.478260869564,0.6004545454545461,2.3055571469696963 66 | 64,CY0320,9485.231884057972,1.0531889763779523,4.781321371259844 67 | 65,CY0320,9612.985507246376,0.9572656249999996,5.07673243125 68 | 66,CY0320,9740.739130434782,0.17789062500000014,2.413571678515625 69 | 67,CY0320,9868.492753623188,0.6896923076923074,2.082689098846154 70 | 68,CY0320,9996.246376811594,0.6077254901960785,2.0965377098039206 71 | 69,CY0320,10124.0,0.0,5.863585 72 | 70,CY0321,1309.0,0.30140625000000026,6.530543624999999 73 | 71,CY0321,1436.7536231884058,0.3105468750000002,7.690414118359375 74 | 72,CY0321,1564.5072463768115,0.1504296874999999,3.25015274453125 75 | 73,CY0321,1692.2608695652175,0.14402343750000005,3.9151282351562493 76 | 74,CY0321,1820.0144927536232,0.12374015748031483,3.031952048818897 77 | 75,CY0321,1947.768115942029,0.13097656250000003,2.247138594531249 78 | 76,CY0321,2075.521739130435,0.15761718750000006,5.209821417187503 79 | 77,CY0321,2203.2753623188405,0.11460937500000005,3.821143990234375 80 | 78,CY0321,2331.0289855072465,0.12188976377952758,6.646004027559058 81 | 79,CY0321,2458.782608695652,1.0342145593869738,4.810249812260538 82 | 80,CY0321,2586.536231884058,0.6168846153846156,6.052265411538465 83 | 81,CY0321,2714.289855072464,0.26198443579766495,2.536090164202334 84 | 82,CY0321,2842.0434782608695,0.17472440944881898,3.862395342125985 85 | 83,CY0321,2969.797101449275,0.17347656249999993,6.486882736718749 86 | 84,CY0321,3097.550724637681,0.153359375,6.1578172808593745 87 | 85,CY0321,3225.304347826087,0.5214453124999999,7.553904102734373 88 | 86,CY0321,3353.057971014493,0.33137795275590537,3.9309591039370058 89 | 87,CY0321,3480.8115942028985,0.11894531250000008,3.259686982812501 90 | 88,CY0321,3608.5652173913045,0.12359374999999992,1.7722557695312497 91 | 89,CY0321,3736.31884057971,0.11359375000000002,5.2795443734375 92 | 90,CY0321,3864.072463768116,0.17307086614173223,5.561622874803149 93 | 91,CY0321,3991.8260869565215,0.16687499999999997,3.0180410664062487 94 | 92,CY0321,4119.579710144928,0.5114062499999996,4.183042548046874 95 | 93,CY0321,4247.333333333334,0.1268359375,2.5952166085937485 96 | 94,CY0321,4375.086956521739,0.11562992125984252,4.870724272834647 97 | 95,CY0321,4502.840579710145,0.1451953125000001,2.220587798046875 98 | 96,CY0321,4630.59420289855,0.10972656250000011,3.276069717968749 99 | 97,CY0321,4758.347826086956,0.15339843750000004,2.5175662203125 100 | 98,CY0321,4886.101449275362,0.12114173228346453,3.731202596850392 101 | 99,CY0321,5013.855072463768,0.1346874999999999,1.8042015218749998 102 | 100,CY0321,5141.608695652174,0.14035156250000003,4.281461552343748 103 | 101,CY0321,5269.36231884058,0.1241796874999999,3.7520019976562486 104 | 102,CY0321,5397.115942028986,0.17212598425196848,5.552774546062993 105 | 103,CY0321,5524.869565217391,0.08953124999999994,2.702958191406251 106 | 104,CY0321,5652.623188405797,0.4952734375,3.945512576171876 107 | 105,CY0321,5780.376811594203,0.11253906250000001,3.928153520312501 108 | 106,CY0321,5908.130434782609,0.12930735930735932,3.2658142077922068 109 | 107,CY0321,6035.884057971014,0.1300775193798449,1.6163039589147286 110 | 108,CY0321,6163.63768115942,0.09976744186046509,3.190665996124032 111 | 109,CY0321,6291.391304347826,0.17562500000000006,7.355771966406252 112 | 110,CY0321,6419.144927536232,0.13433070866141728,4.297267500787401 113 | 111,CY0321,6546.898550724638,0.22507575757575754,3.7549952113636356 114 | 112,CY0321,6674.652173913043,0.15187499999999982,5.614348233593753 115 | 113,CY0321,6802.405797101449,0.16418604651162805,3.9119667968992244 116 | 114,CY0321,6930.159420289855,0.09503937007874023,3.4127336409448814 117 | 115,CY0321,7057.913043478261,0.11820312500000005,3.1996127015624998 118 | 116,CY0321,7185.666666666667,0.20476562499999998,3.617579765624999 119 | 117,CY0321,7313.420289855072,0.17445312500000001,5.26727912890625 120 | 118,CY0321,7441.173913043478,0.1205511811023622,1.4369987448818895 121 | 119,CY0321,7568.927536231884,0.14523437500000014,1.8002334617187503 122 | 120,CY0321,7696.68115942029,0.16945312500000012,3.1742984273437482 123 | 121,CY0321,7824.434782608696,0.1394531249999999,3.20863701484375 124 | 122,CY0321,7952.188405797101,0.13251968503937006,2.450701436220472 125 | 123,CY0321,8079.942028985507,0.1969531250000001,4.2437907234375 126 | 124,CY0321,8207.695652173912,0.12828124999999987,2.128144055468752 127 | 125,CY0321,8335.44927536232,0.15648437500000004,5.282590282812501 128 | 126,CY0321,8463.202898550724,0.11842519685039377,1.6774553724409451 129 | 127,CY0321,8590.95652173913,0.12484375000000009,2.2094881125000003 130 | 128,CY0321,8718.710144927536,0.12828125,2.3496692718750003 131 | 129,CY0321,8846.463768115942,0.19507812500000002,1.8699701789062493 132 | 130,CY0321,8974.217391304348,0.09070866141732287,3.8405443496063 133 | 131,CY0321,9101.971014492754,0.1372656250000001,1.7532662640625005 134 | 132,CY0321,9229.72463768116,0.11852713178294569,1.6781427620155036 135 | 133,CY0321,9357.478260869564,0.167829457364341,2.946196664341085 136 | 134,CY0321,9485.231884057972,1.1155905511811024,5.1904783503937 137 | 135,CY0321,9612.985507246376,1.1075968992248055,5.3820004007751905 138 | 136,CY0321,9740.739130434782,0.08554687500000002,2.7677982664062495 139 | 137,CY0321,9868.492753623188,0.11601562499999997,2.480509301562501 140 | 138,CY0321,9996.246376811594,0.08590551181102363,1.8234404251968503 141 | 139,CY0321,10124.0,0.0,4.0 142 | 140,CY0322,1309.0,0.20953125,6.821114071484375 143 | 141,CY0322,1436.7536231884058,0.3128125000000002,7.5336839343749995 144 | 142,CY0322,1564.5072463768115,0.20601562500000004,3.0701015867187507 145 | 143,CY0322,1692.2608695652175,0.17238281249999987,4.2147392542968785 146 | 144,CY0322,1820.0144927536232,0.24570866141732275,3.3901900503936995 147 | 145,CY0322,1947.768115942029,0.11824218749999993,2.6131415675781273 148 | 146,CY0322,2075.521739130435,0.15410156249999998,5.1144431863281286 149 | 147,CY0322,2203.2753623188405,0.1940234375000001,4.120830203906252 150 | 148,CY0322,2331.0289855072465,0.1423622047244094,6.24453833976378 151 | 149,CY0322,2458.782608695652,0.8470703124999996,5.200734774609376 152 | 150,CY0322,2586.536231884058,0.7647307692307693,6.101180321153845 153 | 151,CY0322,2714.289855072464,0.22808429118773954,2.6211269291187724 154 | 152,CY0322,2842.0434782608695,0.188313725490196,3.7928599513725505 155 | 153,CY0322,2969.797101449275,0.16707031249999996,6.355086105859376 156 | 154,CY0322,3097.550724637681,0.2576171875000001,6.752172185156249 157 | 155,CY0322,3225.304347826087,0.17742187500000003,7.719856608593749 158 | 156,CY0322,3353.057971014493,0.3768897637795274,3.8359711814960633 159 | 157,CY0322,3480.8115942028985,0.18023437499999986,3.2581897066406285 160 | 158,CY0322,3608.5652173913045,0.15480468750000004,1.9677871167968741 161 | 159,CY0322,3736.31884057971,0.5987109374999995,5.288384787500001 162 | 160,CY0322,3864.072463768116,0.239212598425197,5.430585894488188 163 | 161,CY0322,3991.8260869565215,0.1679687499999999,3.160505416796876 164 | 162,CY0322,4119.579710144928,0.13031249999999986,4.398807173437499 165 | 163,CY0322,4247.333333333334,0.18917968750000014,2.6999238222656268 166 | 164,CY0322,4375.086956521739,0.1435433070866141,4.82951547440945 167 | 165,CY0322,4502.840579710145,0.20062500000000008,2.244685254296876 168 | 166,CY0322,4630.59420289855,0.0962109375,3.2920620570312495 169 | 167,CY0322,4758.347826086956,0.12421875000000003,2.8257456773437486 170 | 168,CY0322,4886.101449275362,0.2538188976377953,3.7177717444881866 171 | 169,CY0322,5013.855072463768,0.3089062500000001,1.648172745312501 172 | 170,CY0322,5141.608695652174,0.18066406249999997,4.271652992578127 173 | 171,CY0322,5269.36231884058,0.14699218749999998,3.688816927734376 174 | 172,CY0322,5397.115942028986,0.15814960629921251,5.412161603149603 175 | 173,CY0322,5524.869565217391,0.12073359073359083,2.899053215830116 176 | 174,CY0322,5652.623188405797,0.144140625,4.1042620402343735 177 | 175,CY0322,5780.376811594203,0.13953125000000002,3.7204155777343777 178 | 176,CY0322,5908.130434782609,0.14511811023622048,2.6835241594488197 179 | 177,CY0322,6035.884057971014,0.23362934362934346,1.701618607722008 180 | 178,CY0322,6163.63768115942,0.1623255813953488,3.3309565546511655 181 | 179,CY0322,6291.391304347826,0.1374609375,7.787724007421877 182 | 180,CY0322,6419.144927536232,0.17909448818897641,4.556823518503935 183 | 181,CY0322,6546.898550724638,0.90319391634981,3.871028898859316 184 | 182,CY0322,6674.652173913043,0.23234374999999988,5.519605754296876 185 | 183,CY0322,6802.405797101449,0.20161538461538475,3.583773402307693 186 | 184,CY0322,6930.159420289855,0.4169291338582679,3.0656207598425214 187 | 185,CY0322,7057.913043478261,0.15746093749999995,3.1160507109375013 188 | 186,CY0322,7185.666666666667,0.15570312500000003,3.3283869847656256 189 | 187,CY0322,7313.420289855072,0.41109374999999987,5.144410864453123 190 | 188,CY0322,7441.173913043478,0.4051968503936999,1.2059059909448826 191 | 189,CY0322,7568.927536231884,0.13226562500000016,1.4151171589843745 192 | 190,CY0322,7696.68115942029,0.45730468750000003,3.1995020007812487 193 | 191,CY0322,7824.434782608696,0.228359375,3.0719835003906266 194 | 192,CY0322,7952.188405797101,0.12181102362204722,2.354687763385827 195 | 193,CY0322,8079.942028985507,0.20558593750000015,4.199392656640624 196 | 194,CY0322,8207.695652173912,0.19669260700389102,2.008711917120623 197 | 195,CY0322,8335.44927536232,0.15277343750000005,5.660047286328129 198 | 196,CY0322,8463.202898550724,0.20125984251968512,1.4201187078740158 199 | 197,CY0322,8590.95652173913,0.16007812500000004,2.0742635640625 200 | 198,CY0322,8718.710144927536,0.14734374999999994,2.260239100781251 201 | 199,CY0322,8846.463768115942,0.16960937500000006,1.7368330468749995 202 | 200,CY0322,8974.217391304348,0.16546874999999994,3.731944399999999 203 | 201,CY0322,9101.971014492754,1.1069433962264175,1.459336849056604 204 | 202,CY0322,9229.72463768116,1.0440151515151517,1.5639624321969703 205 | 203,CY0322,9357.478260869564,0.20800766283524902,3.027804979693485 206 | 204,CY0322,9485.231884057972,1.123671875,4.852887852734376 207 | 205,CY0322,9612.985507246376,1.4559143968871597,4.4093415252918255 208 | 206,CY0322,9740.739130434782,0.11574218749999998,2.5229413695312477 209 | 207,CY0322,9868.492753623188,0.16796874999999994,2.362181652343751 210 | 208,CY0322,9996.246376811594,0.4865354330708661,1.8566949799212604 211 | 209,CY0322,10124.0,0.0,2.69285 212 | 210,CY0324,1309.0,0.203984375,6.839774777343744 213 | 211,CY0324,1436.7536231884058,0.24371093749999992,7.418240589843754 214 | 212,CY0324,1564.5072463768115,0.16972656250000012,3.7305992148437492 215 | 213,CY0324,1692.2608695652175,0.11386718750000005,4.501451355468752 216 | 214,CY0324,1820.0144927536232,0.14570866141732286,3.9515885275590534 217 | 215,CY0324,1947.768115942029,0.1583984375,2.9175593085937517 218 | 216,CY0324,2075.521739130435,0.13554687499999998,5.157610406249999 219 | 217,CY0324,2203.2753623188405,0.16546874999999986,4.027059515625 220 | 218,CY0324,2331.0289855072465,0.17338582677165354,6.357747559055115 221 | 219,CY0324,2458.782608695652,1.2992277992277994,4.335697420849424 222 | 220,CY0324,2586.536231884058,0.2959315589353613,6.699711304182514 223 | 221,CY0324,2714.289855072464,0.32140684410646375,3.3080645437262364 224 | 222,CY0324,2842.0434782608695,0.19125984251968497,4.082923035433069 225 | 223,CY0324,2969.797101449275,0.13199218750000005,5.980140550781248 226 | 224,CY0324,3097.550724637681,0.11812499999999995,6.926924753906253 227 | 225,CY0324,3225.304347826087,0.1764453125,7.741825433593752 228 | 226,CY0324,3353.057971014493,0.2648425196850395,4.72697584645669 229 | 227,CY0324,3480.8115942028985,0.12089843750000002,3.8776555222656253 230 | 228,CY0324,3608.5652173913045,0.1476171875000001,2.4865883011718752 231 | 229,CY0324,3736.31884057971,0.14558593750000007,5.572814341015626 232 | 230,CY0324,3864.072463768116,0.2651574803149607,5.669128059842514 233 | 231,CY0324,3991.8260869565215,0.14406250000000012,3.6111174414062495 234 | 232,CY0324,4119.579710144928,0.15937500000000002,4.740394964843749 235 | 233,CY0324,4247.333333333334,0.1421875,3.1334505859374984 236 | 234,CY0324,4375.086956521739,0.23090551181102367,5.725454003937008 237 | 235,CY0324,4502.840579710145,0.134375,3.038373128906251 238 | 236,CY0324,4630.59420289855,0.14246093749999994,3.472746097656252 239 | 237,CY0324,4758.347826086956,0.25152343749999995,2.9820491874999986 240 | 238,CY0324,4886.101449275362,0.18607843137254904,4.7364543803921615 241 | 239,CY0324,5013.855072463768,0.131015625,1.93487233203125 242 | 240,CY0324,5141.608695652174,0.23902343749999982,4.567389277343749 243 | 241,CY0324,5269.36231884058,0.11105468750000004,4.681616949218749 244 | 242,CY0324,5397.115942028986,0.11543307086614177,5.947563421259839 245 | 243,CY0324,5524.869565217391,0.11496093750000004,3.586753148437501 246 | 244,CY0324,5652.623188405797,0.1621789883268482,4.34043294552529 247 | 245,CY0324,5780.376811594203,0.09714843749999999,4.618448195312499 248 | 246,CY0324,5908.130434782609,0.15488188976377953,3.633260625984253 249 | 247,CY0324,6035.884057971014,0.1397692307692307,2.465130507692308 250 | 248,CY0324,6163.63768115942,0.11035019455252924,3.772415696498054 251 | 249,CY0324,6291.391304347826,0.11347656249999998,6.718866398437502 252 | 250,CY0324,6419.144927536232,0.17665354330708669,4.424339007874015 253 | 251,CY0324,6546.898550724638,1.195551470588235,3.983578136029412 254 | 252,CY0324,6674.652173913043,0.097109375,5.244257824218753 255 | 253,CY0324,6802.405797101449,0.12463035019455256,3.9215675564202326 256 | 254,CY0324,6930.159420289855,0.25287401574803137,3.44738390944882 257 | 255,CY0324,7057.913043478261,0.10796874999999996,3.55512241796875 258 | 256,CY0324,7185.666666666667,0.18140625000000002,3.9384821406250006 259 | 257,CY0324,7313.420289855072,0.41167968750000017,5.545754015624999 260 | 258,CY0324,7441.173913043478,0.2336614173228346,1.9287560944881887 261 | 259,CY0324,7568.927536231884,0.1341406249999999,2.0800497148437493 262 | 260,CY0324,7696.68115942029,0.20910156249999984,3.325106417968752 263 | 261,CY0324,7824.434782608696,0.13535156250000008,3.373092955468749 264 | 262,CY0324,7952.188405797101,0.21929133858267694,3.1627725354330725 265 | 263,CY0324,8079.942028985507,0.1308203124999999,4.605939648046874 266 | 264,CY0324,8207.695652173912,0.12636718750000003,2.5040954675781237 267 | 265,CY0324,8335.44927536232,0.2379296875,5.376760458593755 268 | 266,CY0324,8463.202898550724,0.1275590551181102,1.8618985444881893 269 | 267,CY0324,8590.95652173913,0.14445312500000004,2.608824567187499 270 | 268,CY0324,8718.710144927536,0.13207031249999995,2.820859692187501 271 | 269,CY0324,8846.463768115942,0.18265625,2.5853584136718752 272 | 270,CY0324,8974.217391304348,0.17878906250000004,3.8706259621093766 273 | 271,CY0324,9101.971014492754,0.21375478927203076,2.27717080651341 274 | 272,CY0324,9229.72463768116,0.19395348837209314,2.1999297042635657 275 | 273,CY0324,9357.478260869564,0.28486590038314186,2.805869835249041 276 | 274,CY0324,9485.231884057972,1.0988976377952762,5.1218514015748005 277 | 275,CY0324,9612.985507246376,0.9948437499999998,5.277763153906247 278 | 276,CY0324,9740.739130434782,0.10066406250000008,2.9918661535156255 279 | 277,CY0324,9868.492753623188,0.39607003891050585,2.6704497315175098 280 | 278,CY0324,9996.246376811594,0.24673228346456683,2.7261717480314944 281 | 279,CY0324,10124.0,0.0,9.045905 282 | 280,CY0326,1309.0,0.13937500000000005,7.331545644531253 283 | 281,CY0326,1436.7536231884058,0.8348638132295717,7.829861982101164 284 | 282,CY0326,1564.5072463768115,0.16789062500000007,3.8217604683593738 285 | 283,CY0326,1692.2608695652175,0.13960937500000006,4.639622250781251 286 | 284,CY0326,1820.0144927536232,0.1437401574803151,3.632781128740157 287 | 285,CY0326,1947.768115942029,0.1416796875,2.712256437500001 288 | 286,CY0326,2075.521739130435,0.12300781249999997,4.823215691406251 289 | 287,CY0326,2203.2753623188405,0.1392578125,4.574544214843751 290 | 288,CY0326,2331.0289855072465,0.17527559055118108,6.45411739370079 291 | 289,CY0326,2458.782608695652,1.2599613899613913,5.6502918532818525 292 | 290,CY0326,2586.536231884058,0.13124031007751935,6.94436952713178 293 | 291,CY0326,2714.289855072464,0.33265384615384586,3.4916804788461553 294 | 292,CY0326,2842.0434782608695,0.17480314960629928,4.891213544881891 295 | 293,CY0326,2969.797101449275,0.12484375000000002,7.01107241328125 296 | 294,CY0326,3097.550724637681,0.13390625000000006,6.964044736718751 297 | 295,CY0326,3225.304347826087,0.19980468750000002,8.089883421875 298 | 296,CY0326,3353.057971014493,0.2577559055118111,4.478133935039372 299 | 297,CY0326,3480.8115942028985,0.13277343750000012,3.9166904281249977 300 | 298,CY0326,3608.5652173913045,0.3390234374999999,2.6222383648437475 301 | 299,CY0326,3736.31884057971,0.1103515625,6.127052137109379 302 | 300,CY0326,3864.072463768116,0.18610236220472426,5.939557748818897 303 | 301,CY0326,3991.8260869565215,0.5240234375,3.7630714777343752 304 | 302,CY0326,4119.579710144928,0.1389453124999999,5.086654511328122 305 | 303,CY0326,4247.333333333334,0.11253906249999993,3.271906336328126 306 | 304,CY0326,4375.086956521739,0.1144094488188976,5.432709244488192 307 | 305,CY0326,4502.840579710145,0.1176953125000001,3.0405655789062505 308 | 306,CY0326,4630.59420289855,0.09222656249999997,4.187234041015627 309 | 307,CY0326,4758.347826086956,0.9162109375000002,3.895411542968751 310 | 308,CY0326,4886.101449275362,0.12921259842519692,4.14476676062992 311 | 309,CY0326,5013.855072463768,0.24398437500000006,2.1158485738281234 312 | 310,CY0326,5141.608695652174,0.5298046875000001,4.623698970703126 313 | 311,CY0326,5269.36231884058,0.105859375,4.147839673437501 314 | 312,CY0326,5397.115942028986,0.16755905511811023,6.0014359795275585 315 | 313,CY0326,5524.869565217391,0.11527131782945736,3.659412251937985 316 | 314,CY0326,5652.623188405797,0.0932421875,4.575829472656252 317 | 315,CY0326,5780.376811594203,0.0949609375,4.220438675781248 318 | 316,CY0326,5908.130434782609,0.08779527559055118,3.595067248031497 319 | 317,CY0326,6035.884057971014,0.14868725868725868,1.9798135984555978 320 | 318,CY0326,6163.63768115942,0.10722656249999994,3.5463986640624974 321 | 319,CY0326,6291.391304347826,0.13684824902723736,7.263592607003889 322 | 320,CY0326,6419.144927536232,0.1301968503937008,4.660919465748034 323 | 321,CY0326,6546.898550724638,0.08589843750000001,4.080610974999999 324 | 322,CY0326,6674.652173913043,0.5595703125,5.860691714062501 325 | 323,CY0326,6802.405797101449,0.19311538461538466,4.40764607923077 326 | 324,CY0326,6930.159420289855,0.4903543307086614,3.75044523543307 327 | 325,CY0326,7057.913043478261,0.10332031250000002,3.9228126886718724 328 | 326,CY0326,7185.666666666667,0.14414062500000013,4.2504469324218785 329 | 327,CY0326,7313.420289855072,1.0132812499999997,5.5685919390625 330 | 328,CY0326,7441.173913043478,0.12381889763779526,1.9725478854330707 331 | 329,CY0326,7568.927536231884,0.12621093750000006,1.9120240878906245 332 | 330,CY0326,7696.68115942029,0.11347656250000006,3.708967219531248 333 | 331,CY0326,7824.434782608696,0.12777343750000003,3.631642262499998 334 | 332,CY0326,7952.188405797101,0.11559055118110212,2.973344347637794 335 | 333,CY0326,8079.942028985507,0.1633984374999997,4.607449880468748 336 | 334,CY0326,8207.695652173912,0.13890624999999995,2.387855692578124 337 | 335,CY0326,8335.44927536232,0.1659375,5.66875175976562 338 | 336,CY0326,8463.202898550724,0.16779527559055113,2.099586322440945 339 | 337,CY0326,8590.95652173913,0.14867187500000006,2.8189877066406246 340 | 338,CY0326,8718.710144927536,0.16609375,3.1881202007812486 341 | 339,CY0326,8846.463768115942,0.14734374999999988,2.594570054296875 342 | 340,CY0326,8974.217391304348,0.9792187500000001,4.123264426953126 343 | 341,CY0326,9101.971014492754,3.0921509433962235,1.6112302305660369 344 | 342,CY0326,9229.72463768116,0.22907335907335913,1.7914312976833977 345 | 343,CY0326,9357.478260869564,0.26795366795366793,3.3460579652509654 346 | 344,CY0326,9485.231884057972,0.978110236220472,5.40517569606299 347 | 345,CY0326,9612.985507246376,1.1147470817120628,4.979200627626461 348 | 346,CY0326,9740.739130434782,0.15375000000000005,3.114265560546876 349 | 347,CY0326,9868.492753623188,0.14875000000000005,2.978211210546875 350 | 348,CY0326,9996.246376811594,0.12870078740157478,2.3311665551181093 351 | 349,CY0326,10124.0,0.825,4.342075 352 | 350,CY0327,1309.0,0.2559765625,7.802708273437502 353 | 351,CY0327,1436.7536231884058,1.371937984496123,7.822159699999998 354 | 352,CY0327,1564.5072463768115,0.14925781250000006,3.8183974972656243 355 | 353,CY0327,1692.2608695652175,0.11503906249999997,4.530790075000001 356 | 354,CY0327,1820.0144927536232,0.12944881889763774,4.025587238582678 357 | 355,CY0327,1947.768115942029,0.09777343749999998,2.804513457421875 358 | 356,CY0327,2075.521739130435,0.12492187500000003,5.280027745312502 359 | 357,CY0327,2203.2753623188405,0.13117187500000002,4.736051878906252 360 | 358,CY0327,2331.0289855072465,0.1268110236220472,6.889104228346458 361 | 359,CY0327,2458.782608695652,0.8493893129770992,4.966164793893132 362 | 360,CY0327,2586.536231884058,0.2686538461538462,6.946754515384614 363 | 361,CY0327,2714.289855072464,0.15742307692307714,3.4311840653846137 364 | 362,CY0327,2842.0434782608695,0.1390551181102361,4.740790448818895 365 | 363,CY0327,2969.797101449275,0.17285156250000008,6.874219248828126 366 | 364,CY0327,3097.550724637681,0.22316406250000018,7.070713092578122 367 | 365,CY0327,3225.304347826087,0.16546875000000005,7.869036293359378 368 | 366,CY0327,3353.057971014493,0.2839763779527557,4.412198073622052 369 | 367,CY0327,3480.8115942028985,0.16332031249999998,4.3579882144531235 370 | 368,CY0327,3608.5652173913045,0.4157198443579772,2.646840454085603 371 | 369,CY0327,3736.31884057971,0.1387109374999999,5.989740295312501 372 | 370,CY0327,3864.072463768116,0.2132283464566928,5.825732240944881 373 | 371,CY0327,3991.8260869565215,0.17019531250000017,3.6746827625000025 374 | 372,CY0327,4119.579710144928,0.16351562499999997,5.662801672656252 375 | 373,CY0327,4247.333333333334,0.1783593750000002,3.5128906226562493 376 | 374,CY0327,4375.086956521739,0.13925196850393692,5.600172639763781 377 | 375,CY0327,4502.840579710145,0.4278124999999993,2.690967486328124 378 | 376,CY0327,4630.59420289855,0.1843359375000001,4.402814592187503 379 | 377,CY0327,4758.347826086956,0.3683203124999997,3.4211192058593745 380 | 378,CY0327,4886.101449275362,0.20181102362204725,4.689276709055117 381 | 379,CY0327,5013.855072463768,0.12222656250000002,2.150775986718749 382 | 380,CY0327,5141.608695652174,0.12101562499999986,4.5435786574218735 383 | 381,CY0327,5269.36231884058,0.1094921874999999,4.500169603124999 384 | 382,CY0327,5397.115942028986,0.133267716535433,5.377164198031497 385 | 383,CY0327,5524.869565217391,0.12634241245136174,3.514123568093387 386 | 384,CY0327,5652.623188405797,0.10738281249999994,4.59918859921875 387 | 385,CY0327,5780.376811594203,0.10289062500000008,4.42406422734375 388 | 386,CY0327,5908.130434782609,0.13452755905511815,3.817264983858268 389 | 387,CY0327,6035.884057971014,0.14637065637065647,2.216414964864868 390 | 388,CY0327,6163.63768115942,0.26796875,3.8013963074218737 391 | 389,CY0327,6291.391304347826,0.136640625,7.604193601562497 392 | 390,CY0327,6419.144927536232,0.11307086614173228,4.777635088976377 393 | 391,CY0327,6546.898550724638,0.32563218390804594,3.940126619157091 394 | 392,CY0327,6674.652173913043,0.240813953488372,5.594119594186049 395 | 393,CY0327,6802.405797101449,0.26372623574144494,4.212580553612168 396 | 394,CY0327,6930.159420289855,0.16027559055118115,3.6432798602362215 397 | 395,CY0327,7057.913043478261,0.15593750000000006,3.6603560117187484 398 | 396,CY0327,7185.666666666667,0.23507812500000017,4.1348936332031245 399 | 397,CY0327,7313.420289855072,0.25203125000000004,5.519220380078126 400 | 398,CY0327,7441.173913043478,0.17255905511811023,2.1433854145669287 401 | 399,CY0327,7568.927536231884,0.33914062499999986,2.384652271484375 402 | 400,CY0327,7696.68115942029,0.15218750000000003,4.075879839062498 403 | 401,CY0327,7824.434782608696,0.15273437500000014,3.9171151410156244 404 | 402,CY0327,7952.188405797101,0.11511811023622036,3.2137060464566924 405 | 403,CY0327,8079.942028985507,0.129296875,4.71295700195312 406 | 404,CY0327,8207.695652173912,0.19140625,2.3485348691406247 407 | 405,CY0327,8335.44927536232,0.15914062499999995,5.886807205468745 408 | 406,CY0327,8463.202898550724,0.13271653543307088,1.9756866744094497 409 | 407,CY0327,8590.95652173913,0.13222656249999998,2.6037819687500012 410 | 408,CY0327,8718.710144927536,0.15121093750000003,2.9461128472656246 411 | 409,CY0327,8846.463768115942,0.20746093749999997,2.5202924613281232 412 | 410,CY0327,8974.217391304348,0.1978515625,4.107974547265628 413 | 411,CY0327,9101.971014492754,1.3758455882352953,1.902346619117646 414 | 412,CY0327,9229.72463768116,0.25620689655172413,2.1289774053639854 415 | 413,CY0327,9357.478260869564,0.1795752895752895,3.3988120254826253 416 | 414,CY0327,9485.231884057972,1.0450393700787397,5.608842151574805 417 | 415,CY0327,9612.985507246376,1.1131906614786,5.564240813618682 418 | 416,CY0327,9740.739130434782,0.14433593749999996,2.9748943031249984 419 | 417,CY0327,9868.492753623188,0.14316406249999988,2.8693211640625 420 | 418,CY0327,9996.246376811594,0.11854330708661415,1.9774190216535428 421 | 419,CY0327,10124.0,0.205,4.850745 422 | 420,CY0328,1309.0,0.18894531250000002,6.946501015624999 423 | 421,CY0328,1436.7536231884058,0.6083203125,7.039082589843753 424 | 422,CY0328,1564.5072463768115,0.15031250000000002,3.2959226406249997 425 | 423,CY0328,1692.2608695652175,0.10484374999999999,4.508497429687503 426 | 424,CY0328,1820.0144927536232,0.12708661417322842,4.22411842913386 427 | 425,CY0328,1947.768115942029,0.2339453125000002,3.0157018828125004 428 | 426,CY0328,2075.521739130435,0.1028125,5.558362035156252 429 | 427,CY0328,2203.2753623188405,0.1032421875,3.890998273437502 430 | 428,CY0328,2331.0289855072465,0.13338582677165353,6.124564185039373 431 | 429,CY0328,2458.782608695652,0.6733204633204637,5.074839474903474 432 | 430,CY0328,2586.536231884058,0.19877862595419832,6.030188389312977 433 | 431,CY0328,2714.289855072464,0.3423863636363636,2.427222378787878 434 | 432,CY0328,2842.0434782608695,0.23271653543307091,4.390109307086617 435 | 433,CY0328,2969.797101449275,0.14789062499999994,6.729245878906246 436 | 434,CY0328,3097.550724637681,0.16414062499999998,6.246589667968748 437 | 435,CY0328,3225.304347826087,0.18367187499999993,6.805018238281249 438 | 436,CY0328,3353.057971014493,0.1974015748031495,4.238497929133857 439 | 437,CY0328,3480.8115942028985,0.1671484374999999,3.353601417187501 440 | 438,CY0328,3608.5652173913045,0.10773437500000006,1.90548501875 441 | 439,CY0328,3736.31884057971,0.12058593749999999,5.415086225390624 442 | 440,CY0328,3864.072463768116,0.2005905511811023,5.433786229527561 443 | 441,CY0328,3991.8260869565215,0.15585937500000013,3.3457633789062515 444 | 442,CY0328,4119.579710144928,0.2761328125000002,5.082805764062505 445 | 443,CY0328,4247.333333333334,0.18749999999999994,2.8837129101562495 446 | 444,CY0328,4375.086956521739,0.13759842519685034,4.6585781496063 447 | 445,CY0328,4502.840579710145,0.1481640625000003,2.348058184375 448 | 446,CY0328,4630.59420289855,0.10511718750000006,3.4847378976562484 449 | 447,CY0328,4758.347826086956,0.1908984375000001,2.884403784375 450 | 448,CY0328,4886.101449275362,0.15960629921259842,3.98920711456693 451 | 449,CY0328,5013.855072463768,0.09273437500000002,1.5279915941406241 452 | 450,CY0328,5141.608695652174,0.22011718750000006,3.720931511718747 453 | 451,CY0328,5269.36231884058,0.11222656250000002,4.054858535156251 454 | 452,CY0328,5397.115942028986,0.12763779527559058,5.563170452755904 455 | 453,CY0328,5524.869565217391,0.18763565891472875,3.2426446085271317 456 | 454,CY0328,5652.623188405797,0.07757812500000003,3.914521300781249 457 | 455,CY0328,5780.376811594203,0.13859374999999996,3.849566835937498 458 | 456,CY0328,5908.130434782609,0.10716535433070869,3.5360713937007877 459 | 457,CY0328,6035.884057971014,0.158953488372093,1.9292735775193801 460 | 458,CY0328,6163.63768115942,0.09214007782101168,3.6870746459143957 461 | 459,CY0328,6291.391304347826,0.10386718750000001,7.257575910156249 462 | 460,CY0328,6419.144927536232,0.37200787401574814,3.896419019685042 463 | 461,CY0328,6546.898550724638,0.8790000000000002,3.6412474499999994 464 | 462,CY0328,6674.652173913043,0.23724806201550377,5.275036116279072 465 | 463,CY0328,6802.405797101449,0.18389961389961368,3.692265393822396 466 | 464,CY0328,6930.159420289855,0.673607843137255,3.5179234117647074 467 | 465,CY0328,7057.913043478261,0.16367187500000008,2.972484890625 468 | 466,CY0328,7185.666666666667,0.19921874999999986,3.500235562500001 469 | 467,CY0328,7313.420289855072,0.3207421875,5.37368512109375 470 | 468,CY0328,7441.173913043478,0.28421259842519686,2.0693154330708645 471 | 469,CY0328,7568.927536231884,0.09378906250000006,2.136362812109374 472 | 470,CY0328,7696.68115942029,0.26550781250000016,3.7429291078125004 473 | 471,CY0328,7824.434782608696,0.25632812500000013,3.518126612109373 474 | 472,CY0328,7952.188405797101,0.2362992125984249,2.741895716141732 475 | 473,CY0328,8079.942028985507,0.15101562499999976,4.392829549609376 476 | 474,CY0328,8207.695652173912,0.14933593749999996,2.1120052515625005 477 | 475,CY0328,8335.44927536232,0.26988281249999996,4.6779042265625 478 | 476,CY0328,8463.202898550724,0.11543307086614175,1.5589140551181109 479 | 477,CY0328,8590.95652173913,0.17078125000000005,2.236175031250001 480 | 478,CY0328,8718.710144927536,0.19808593750000014,2.4228707109375014 481 | 479,CY0328,8846.463768115942,0.3514062499999999,2.262343902343753 482 | 480,CY0328,8974.217391304348,0.22093023255813954,3.7966862635658907 483 | 481,CY0328,9101.971014492754,2.3276449275362325,2.144320663043481 484 | 482,CY0328,9229.72463768116,0.4943678160919541,1.993266840996169 485 | 483,CY0328,9357.478260869564,0.28458015267175574,3.0862063091603065 486 | 484,CY0328,9485.231884057972,1.1172941176470592,5.273113239215686 487 | 485,CY0328,9612.985507246376,1.2923076923076928,4.762727965384612 488 | 486,CY0328,9740.739130434782,0.10273437499999999,2.659362734375 489 | 487,CY0328,9868.492753623188,0.08429687500000005,1.9736308554687496 490 | 488,CY0328,9996.246376811594,0.12901574803149604,1.786942224409449 491 | 489,CY0328,10124.0,0.0,2.583335 492 | 490,CY0329,1309.0,0.226015625,6.830080914062503 493 | 491,CY0329,1436.7536231884058,0.9368604651162794,7.6544836705426365 494 | 492,CY0329,1564.5072463768115,0.17898437499999995,3.18254921875 495 | 493,CY0329,1692.2608695652175,0.1251953125,4.099983292968749 496 | 494,CY0329,1820.0144927536232,0.13854330708661408,3.2820996889763796 497 | 495,CY0329,1947.768115942029,0.13265625,2.274105753906249 498 | 496,CY0329,2075.521739130435,0.1493359375,4.19923851171875 499 | 497,CY0329,2203.2753623188405,0.15749999999999992,3.260219726562501 500 | 498,CY0329,2331.0289855072465,0.23133858267716548,5.794976692913387 501 | 499,CY0329,2458.782608695652,0.7707251908396943,3.638926389312977 502 | 500,CY0329,2586.536231884058,0.3862453531598513,6.1598713828996265 503 | 501,CY0329,2714.289855072464,0.5227586206896551,2.727765681992338 504 | 502,CY0329,2842.0434782608695,0.18559055118110246,3.531789098425198 505 | 503,CY0329,2969.797101449275,0.2903125000000001,5.452300929687501 506 | 504,CY0329,3097.550724637681,0.16195312500000006,5.941719312499999 507 | 505,CY0329,3225.304347826087,0.17468750000000013,6.8339419722656185 508 | 506,CY0329,3353.057971014493,0.2843700787401578,4.125569960236221 509 | 507,CY0329,3480.8115942028985,0.1288281249999999,3.2882271605468754 510 | 508,CY0329,3608.5652173913045,0.1410937499999999,1.7604695363281246 511 | 509,CY0329,3736.31884057971,0.15015625,4.609461227343746 512 | 510,CY0329,3864.072463768116,0.18543307086614175,5.2461340188976395 513 | 511,CY0329,3991.8260869565215,0.16257812500000016,3.331804155468747 514 | 512,CY0329,4119.579710144928,0.18445312500000038,4.169232321093749 515 | 513,CY0329,4247.333333333334,0.15554687500000008,2.431787323828123 516 | 514,CY0329,4375.086956521739,0.16240157480314962,5.141963880314958 517 | 515,CY0329,4502.840579710145,0.13316406249999987,2.3243059621093756 518 | 516,CY0329,4630.59420289855,0.1250781249999999,3.3270349257812493 519 | 517,CY0329,4758.347826086956,0.17765624999999988,2.4022955789062514 520 | 518,CY0329,4886.101449275362,0.14598425196850395,4.161919871653542 521 | 519,CY0329,5013.855072463768,0.14453124999999997,1.6604714460937497 522 | 520,CY0329,5141.608695652174,0.13503906250000006,3.437203007812501 523 | 521,CY0329,5269.36231884058,0.14960937500000002,3.9028999765625003 524 | 522,CY0329,5397.115942028986,0.15696850393700798,5.459542653543303 525 | 523,CY0329,5524.869565217391,0.1223938223938224,2.6417041467181464 526 | 524,CY0329,5652.623188405797,0.13296875,2.9248149414062516 527 | 525,CY0329,5780.376811594203,0.152109375,3.582076425781249 528 | 526,CY0329,5908.130434782609,0.14531496062992127,2.945506976377954 529 | 527,CY0329,6035.884057971014,0.17291828793774305,1.9130356653696485 530 | 528,CY0329,6163.63768115942,0.16193050193050196,2.862118254826258 531 | 529,CY0329,6291.391304347826,0.16003906250000002,6.246394847656255 532 | 530,CY0329,6419.144927536232,0.15322834645669295,3.3407735594488206 533 | 531,CY0329,6546.898550724638,0.9358426966292134,3.296782497003746 534 | 532,CY0329,6674.652173913043,0.15081712062256805,4.921319175097277 535 | 533,CY0329,6802.405797101449,0.22599236641221382,3.259233817938931 536 | 534,CY0329,6930.159420289855,0.5286274509803919,2.582375083921567 537 | 535,CY0329,7057.913043478261,0.4218749999999997,2.5579928242187506 538 | 536,CY0329,7185.666666666667,0.20210937500000017,3.3185528687499977 539 | 537,CY0329,7313.420289855072,0.23308593749999987,5.260001250000002 540 | 538,CY0329,7441.173913043478,0.40960629921259833,1.366653984251968 541 | 539,CY0329,7568.927536231884,0.144921875,1.7124742027343747 542 | 540,CY0329,7696.68115942029,0.29617187500000014,3.3862084749999983 543 | 541,CY0329,7824.434782608696,0.16039062499999998,3.0315004171875 544 | 542,CY0329,7952.188405797101,0.16444881889763796,2.3150707480314963 545 | 543,CY0329,8079.942028985507,0.1912109375000001,4.157245540234375 546 | 544,CY0329,8207.695652173912,0.18359374999999997,2.004141813671875 547 | 545,CY0329,8335.44927536232,0.18855468749999996,4.872846250781252 548 | 546,CY0329,8463.202898550724,0.1836470588235295,1.590746701960784 549 | 547,CY0329,8590.95652173913,0.1621874999999999,2.0445969246093756 550 | 548,CY0329,8718.710144927536,0.2659765624999999,2.56099863671875 551 | 549,CY0329,8846.463768115942,0.2170312499999999,1.8620761605468745 552 | 550,CY0329,8974.217391304348,0.12850393700787408,3.3182512992125965 553 | 551,CY0329,9101.971014492754,1.2527238805970156,1.6452757604477621 554 | 552,CY0329,9229.72463768116,1.0674349442379178,1.8230423639405198 555 | 553,CY0329,9357.478260869564,0.23231660231660212,2.3536100115830094 556 | 554,CY0329,9485.231884057972,1.462117647058825,4.291540112156864 557 | 555,CY0329,9612.985507246376,0.9600781250000002,4.412271448828126 558 | 556,CY0329,9740.739130434782,0.14218749999999994,2.2139334167968743 559 | 557,CY0329,9868.492753623188,0.21521400778210117,2.0617627210116747 560 | 558,CY0329,9996.246376811594,0.17535433070866147,1.9801175078740152 561 | 559,CY0329,10124.0,0.0,2.7177000000000002 562 | 560,CY0332,1309.0,0.31816406249999996,7.61696037109375 563 | 561,CY0332,1436.7536231884058,2.2344061302681983,7.634029085440611 564 | 562,CY0332,1564.5072463768115,0.13871093750000002,3.9241109515624997 565 | 563,CY0332,1692.2608695652175,0.12046875,4.951430600781253 566 | 564,CY0332,1820.0144927536232,0.10917322834645675,3.9280179594488187 567 | 565,CY0332,1947.768115942029,0.1344140625,2.8504116066406233 568 | 566,CY0332,2075.521739130435,0.18527343749999997,5.15264773828125 569 | 567,CY0332,2203.2753623188405,0.14960937500000007,4.7196136953125 570 | 568,CY0332,2331.0289855072465,0.12503937007874025,6.550014444881887 571 | 569,CY0332,2458.782608695652,0.5302702702702703,5.105556393822393 572 | 570,CY0332,2586.536231884058,0.12472656249999997,6.667270476562498 573 | 571,CY0332,2714.289855072464,0.2267829457364343,3.6253180658914705 574 | 572,CY0332,2842.0434782608695,0.18220472440944918,4.972210627952755 575 | 573,CY0332,2969.797101449275,0.1428125,6.9199030585937455 576 | 574,CY0332,3097.550724637681,0.13320312499999995,6.69694242578125 577 | 575,CY0332,3225.304347826087,0.1859765625000001,7.833650573828122 578 | 576,CY0332,3353.057971014493,0.24960629921259847,4.51504831496063 579 | 577,CY0332,3480.8115942028985,0.14472656249999993,4.28150725234375 580 | 578,CY0332,3608.5652173913045,0.13835937500000003,2.7899713757812505 581 | 579,CY0332,3736.31884057971,0.14394531250000006,5.915027186328128 582 | 580,CY0332,3864.072463768116,0.18964566929133855,5.794454642913385 583 | 581,CY0332,3991.8260869565215,0.27804687500000014,3.8723482562500022 584 | 582,CY0332,4119.579710144928,0.219140625,5.9610552136718775 585 | 583,CY0332,4247.333333333334,0.20039062500000013,3.55947573046875 586 | 584,CY0332,4375.086956521739,0.12488188976377954,5.475177907874014 587 | 585,CY0332,4502.840579710145,0.12742187500000005,3.099251631640623 588 | 586,CY0332,4630.59420289855,0.1350390625,4.401785187890627 589 | 587,CY0332,4758.347826086956,0.14011718750000005,3.538944515234374 590 | 588,CY0332,4886.101449275362,0.1304330708661418,4.511088211417324 591 | 589,CY0332,5013.855072463768,0.1152734375,2.114282859375 592 | 590,CY0332,5141.608695652174,0.1541015625,4.412501613671877 593 | 591,CY0332,5269.36231884058,0.13062500000000013,4.559249451171874 594 | 592,CY0332,5397.115942028986,0.14448818897637805,5.504511515748034 595 | 593,CY0332,5524.869565217391,0.10390625000000003,3.794219867578127 596 | 594,CY0332,5652.623188405797,0.09480468749999994,4.545358897265623 597 | 595,CY0332,5780.376811594203,0.125546875,4.509831468750003 598 | 596,CY0332,5908.130434782609,0.1272047244094488,4.026092582677166 599 | 597,CY0332,6035.884057971014,0.3035271317829456,2.4150366248062003 600 | 598,CY0332,6163.63768115942,0.12490272373540856,4.422739614785998 601 | 599,CY0332,6291.391304347826,0.24410156250000004,7.024083984375001 602 | 600,CY0332,6419.144927536232,0.14885826771653538,4.7683034787401555 603 | 601,CY0332,6546.898550724638,0.14221789883268487,4.236588593774317 604 | 602,CY0332,6674.652173913043,0.14050387596899228,5.714833258914726 605 | 603,CY0332,6802.405797101449,0.7078846153846149,3.8840399180769225 606 | 604,CY0332,6930.159420289855,0.5177559055118109,4.254520570866141 607 | 605,CY0332,7057.913043478261,0.22132812499999988,4.163727912500001 608 | 606,CY0332,7185.666666666667,0.15199218749999996,4.107477832421875 609 | 607,CY0332,7313.420289855072,0.2894140625000001,5.8958061175781245 610 | 608,CY0332,7441.173913043478,0.1375984251968505,2.330562947637795 611 | 609,CY0332,7568.927536231884,0.12855468749999996,2.422117119921875 612 | 610,CY0332,7696.68115942029,0.12285156249999998,4.345211276953129 613 | 611,CY0332,7824.434782608696,0.15523437500000004,3.8446537992187473 614 | 612,CY0332,7952.188405797101,0.1289763779527557,3.137158679133858 615 | 613,CY0332,8079.942028985507,0.16632812499999985,4.837443753515624 616 | 614,CY0332,8207.695652173912,0.14464843749999973,2.712753495703125 617 | 615,CY0332,8335.44927536232,0.25171875000000005,5.4000972527343745 618 | 616,CY0332,8463.202898550724,0.2104724409448821,1.9878005980314963 619 | 617,CY0332,8590.95652173913,0.12851562499999997,2.8540541324218736 620 | 618,CY0332,8718.710144927536,0.17667968750000013,3.2399598226562527 621 | 619,CY0332,8846.463768115942,0.5269531250000008,2.8969380031250007 622 | 620,CY0332,8974.217391304348,0.15101562500000026,4.236008503906249 623 | 621,CY0332,9101.971014492754,1.689127272727273,2.0277383781818172 624 | 622,CY0332,9229.72463768116,0.9316603773584908,2.2076331856603777 625 | 623,CY0332,9357.478260869564,0.44788461538461566,3.363972957692307 626 | 624,CY0332,9485.231884057972,1.045157480314961,5.443626152755905 627 | 625,CY0332,9612.985507246376,0.9112062256809332,5.454638240856029 628 | 626,CY0332,9740.739130434782,0.1214843749999999,3.262785881249998 629 | 627,CY0332,9868.492753623188,0.4926562499999996,2.9600122332031265 630 | 628,CY0332,9996.246376811594,0.12145669291338577,2.2248877874015736 631 | 629,CY0332,10124.0,0.0,5.57734 632 | 630,CY0333,1309.0,0.5471484375000003,7.009010281250002 633 | 631,CY0333,1436.7536231884058,1.2456976744186046,7.060159735658919 634 | 632,CY0333,1564.5072463768115,0.1502734375,4.017505918749999 635 | 633,CY0333,1692.2608695652175,0.12449218749999985,4.821051737890625 636 | 634,CY0333,1820.0144927536232,0.11578740157480309,4.086038957086615 637 | 635,CY0333,1947.768115942029,0.15359375000000003,3.0047872527343764 638 | 636,CY0333,2075.521739130435,0.20613281249999987,5.260705428906249 639 | 637,CY0333,2203.2753623188405,0.17015624999999998,4.432735507421878 640 | 638,CY0333,2331.0289855072465,0.3667716535433073,6.399384267716529 641 | 639,CY0333,2458.782608695652,0.844573643410853,4.817547628294573 642 | 640,CY0333,2586.536231884058,0.17328185328185314,6.6120820382239405 643 | 641,CY0333,2714.289855072464,0.2787984496124024,3.495549248837208 644 | 642,CY0333,2842.0434782608695,0.1255511811023621,4.836151498031499 645 | 643,CY0333,2969.797101449275,0.1368749999999999,7.217302769140627 646 | 644,CY0333,3097.550724637681,0.16707031249999998,7.249518323828122 647 | 645,CY0333,3225.304347826087,0.15507812500000007,7.981995038671876 648 | 646,CY0333,3353.057971014493,0.2823622047244093,4.440453000393701 649 | 647,CY0333,3480.8115942028985,0.13085937499999997,4.053726679296876 650 | 648,CY0333,3608.5652173913045,0.13437499999999974,2.6161389332031257 651 | 649,CY0333,3736.31884057971,0.22351562499999997,5.748455554296878 652 | 650,CY0333,3864.072463768116,0.16653543307086613,5.97954273779528 653 | 651,CY0333,3991.8260869565215,0.2343750000000003,3.5462751109374997 654 | 652,CY0333,4119.579710144928,0.17656249999999998,5.756602644921874 655 | 653,CY0333,4247.333333333334,0.1749218749999999,3.6470661914062514 656 | 654,CY0333,4375.086956521739,0.19496062992126,5.903683837007876 657 | 655,CY0333,4502.840579710145,0.1177343750000002,3.0907727957031246 658 | 656,CY0333,4630.59420289855,0.14250000000000007,4.4256834347656255 659 | 657,CY0333,4758.347826086956,0.1892968749999999,3.7109577265624987 660 | 658,CY0333,4886.101449275362,0.16893700787401575,4.832712479133859 661 | 659,CY0333,5013.855072463768,0.13882812500000002,2.5224926335937488 662 | 660,CY0333,5141.608695652174,0.1653125000000001,4.701887955078126 663 | 661,CY0333,5269.36231884058,0.09101562499999996,4.504295716015621 664 | 662,CY0333,5397.115942028986,0.1641176470588235,5.86687409019608 665 | 663,CY0333,5524.869565217391,0.11562499999999998,3.148930554687502 666 | 664,CY0333,5652.623188405797,0.15162790697674405,4.5299977430232525 667 | 665,CY0333,5780.376811594203,0.22101562499999983,4.493316941406246 668 | 666,CY0333,5908.130434782609,0.14673228346456688,3.931402133858265 669 | 667,CY0333,6035.884057971014,0.14003891050583658,2.2041006875486384 670 | 668,CY0333,6163.63768115942,0.25813229571984436,4.027535289883269 671 | 669,CY0333,6291.391304347826,0.1376953125,7.673860343750002 672 | 670,CY0333,6419.144927536232,0.15637795275590544,4.9199060996063 673 | 671,CY0333,6546.898550724638,0.1609266409266409,4.323564287258691 674 | 672,CY0333,6674.652173913043,0.570888030888031,5.640187054826257 675 | 673,CY0333,6802.405797101449,0.2598054474708171,4.11649015758755 676 | 674,CY0333,6930.159420289855,0.5085826771653541,3.812748622834647 677 | 675,CY0333,7057.913043478261,0.49269531249999976,3.8341988582031252 678 | 676,CY0333,7185.666666666667,0.17796874999999998,4.370630771093752 679 | 677,CY0333,7313.420289855072,0.28464843749999996,5.56302120078125 680 | 678,CY0333,7441.173913043478,0.154212598425197,2.048007276377954 681 | 679,CY0333,7568.927536231884,0.14437499999999986,2.378910558593753 682 | 680,CY0333,7696.68115942029,0.14738281249999993,4.24663553476562 683 | 681,CY0333,7824.434782608696,0.1374609375,3.811313841796878 684 | 682,CY0333,7952.188405797101,0.1683858267716537,3.3017419169291338 685 | 683,CY0333,8079.942028985507,0.13882812499999989,4.928958494140629 686 | 684,CY0333,8207.695652173912,0.1375390625,2.509924899999999 687 | 685,CY0333,8335.44927536232,0.18191406250000014,5.759801005859371 688 | 686,CY0333,8463.202898550724,0.14460629921259843,1.9342884259842517 689 | 687,CY0333,8590.95652173913,0.16972656249999993,2.8337258015624984 690 | 688,CY0333,8718.710144927536,0.4590234375,3.2215717062500007 691 | 689,CY0333,8846.463768115942,0.5103906249999999,2.8070054824218755 692 | 690,CY0333,8974.217391304348,0.15303149606299207,4.325688012992125 693 | 691,CY0333,9101.971014492754,1.7247388059701492,2.0630865436567136 694 | 692,CY0333,9229.72463768116,0.8647547169811323,2.207954421509434 695 | 693,CY0333,9357.478260869564,0.1941634241245135,3.445791471595332 696 | 694,CY0333,9485.231884057972,1.0331102362204725,5.628960872834648 697 | 695,CY0333,9612.985507246376,0.9574218749999994,5.586258630078127 698 | 696,CY0333,9740.739130434782,0.163203125,3.1433427523437514 699 | 697,CY0333,9868.492753623188,0.7145914396887159,2.8693606961089495 700 | 698,CY0333,9996.246376811594,0.26370078740157465,2.1369003582677157 701 | 699,CY0333,10124.0,0.0,6.611945 702 | 700,CY0334,1309.0,0.7149027237354083,7.836213443579764 703 | 701,CY0334,1436.7536231884058,1.1229729729729734,7.176501872586878 704 | 702,CY0334,1564.5072463768115,0.170390625,2.7517314414062506 705 | 703,CY0334,1692.2608695652175,0.11960937500000003,3.491326875 706 | 704,CY0334,1820.0144927536232,0.14488188976377947,2.5779030196850403 707 | 705,CY0334,1947.768115942029,0.19238281250000014,1.813680011718751 708 | 706,CY0334,2075.521739130435,0.18628906249999996,4.437003558593752 709 | 707,CY0334,2203.2753623188405,0.19539062500000004,3.119248945312501 710 | 708,CY0334,2331.0289855072465,0.1689763779527559,5.284137133858264 711 | 709,CY0334,2458.782608695652,0.9521374045801525,3.6610782519084 712 | 710,CY0334,2586.536231884058,0.20824427480916025,5.955558503816791 713 | 711,CY0334,2714.289855072464,0.32935606060606054,2.361087049242422 714 | 712,CY0334,2842.0434782608695,0.19519685039370077,3.7594181377952767 715 | 713,CY0334,2969.797101449275,0.16914062500000002,5.965296117187498 716 | 714,CY0334,3097.550724637681,0.15187500000000015,5.123928964843753 717 | 715,CY0334,3225.304347826087,0.2584374999999999,6.735318085937501 718 | 716,CY0334,3353.057971014493,0.27173228346456674,3.4363252322834645 719 | 717,CY0334,3480.8115942028985,0.15246093750000003,2.8082792109375 720 | 718,CY0334,3608.5652173913045,0.1795703125,1.4874485078124984 721 | 719,CY0334,3736.31884057971,0.1836718749999999,4.380361953125 722 | 720,CY0334,3864.072463768116,0.26748031496062996,4.753448456692911 723 | 721,CY0334,3991.8260869565215,0.19234374999999998,2.7075870703124982 724 | 722,CY0334,4119.579710144928,0.20906249999999996,4.149530550781253 725 | 723,CY0334,4247.333333333334,0.27703124999999995,2.8055376875000007 726 | 724,CY0334,4375.086956521739,0.1304724409448819,4.449168413385826 727 | 725,CY0334,4502.840579710145,0.15003906250000001,2.069694378906249 728 | 726,CY0334,4630.59420289855,0.18058593750000004,3.26801975390625 729 | 727,CY0334,4758.347826086956,0.25433593750000016,2.568741183593749 730 | 728,CY0334,4886.101449275362,0.1867716535433071,3.640417956692916 731 | 729,CY0334,5013.855072463768,0.20062500000000014,1.3494118320312511 732 | 730,CY0334,5141.608695652174,0.22097656250000017,3.074504074218753 733 | 731,CY0334,5269.36231884058,0.13136718750000007,3.222045683593749 734 | 732,CY0334,5397.115942028986,0.22299212598425203,4.960893850393701 735 | 733,CY0334,5524.869565217391,0.0897265625,2.2104232460937507 736 | 734,CY0334,5652.623188405797,0.060078124999999996,2.9730006406250005 737 | 735,CY0334,5780.376811594203,0.09449218749999999,3.5636834375000017 738 | 736,CY0334,5908.130434782609,0.21843137254901962,2.7732562980392155 739 | 737,CY0334,6035.884057971014,0.26492424242424234,1.5736928939393946 740 | 738,CY0334,6163.63768115942,0.14918918918918922,2.9576610849420844 741 | 739,CY0334,6291.391304347826,0.14648437499999997,6.582461847656248 742 | 740,CY0334,6419.144927536232,0.16185039370078744,3.316588366141731 743 | 741,CY0334,6546.898550724638,0.14922779922779922,2.952390579150579 744 | 742,CY0334,6674.652173913043,0.20099999999999996,4.908039976923073 745 | 743,CY0334,6802.405797101449,0.2619305019305019,2.600881610038611 746 | 744,CY0334,6930.159420289855,0.5654901960784312,2.542293168627453 747 | 745,CY0334,7057.913043478261,0.5659765624999998,2.4261125898437483 748 | 746,CY0334,7185.666666666667,0.1675,2.8368264687499996 749 | 747,CY0334,7313.420289855072,0.22253906250000002,4.919145667968752 750 | 748,CY0334,7441.173913043478,0.2470866141732281,1.1621395039370075 751 | 749,CY0334,7568.927536231884,0.18843749999999998,1.4474573124999999 752 | 750,CY0334,7696.68115942029,0.15171874999999996,2.61292878515625 753 | 751,CY0334,7824.434782608696,0.163828125,2.964467117187501 754 | 752,CY0334,7952.188405797101,0.14196850393700794,2.0987539972440943 755 | 753,CY0334,8079.942028985507,0.15878906250000005,3.791875116796875 756 | 754,CY0334,8207.695652173912,0.21617187499999999,1.6769035062500006 757 | 755,CY0334,8335.44927536232,0.14519531250000006,4.282164765234374 758 | 756,CY0334,8463.202898550724,0.12645669291338588,1.003633822834646 759 | 757,CY0334,8590.95652173913,0.14734375000000002,1.6158847621093748 760 | 758,CY0334,8718.710144927536,0.13707031249999985,2.0701964582031245 761 | 759,CY0334,8846.463768115942,0.18566406249999998,1.3548821644531241 762 | 760,CY0334,8974.217391304348,0.21207031249999989,3.1265266011718755 763 | 761,CY0334,9101.971014492754,1.8541281138790022,1.1313024960854103 764 | 762,CY0334,9229.72463768116,0.6870833333333345,1.2545910174242432 765 | 763,CY0334,9357.478260869564,0.25822641509433975,2.627066526792455 766 | 764,CY0334,9485.231884057972,1.1867843137254908,4.237461447058827 767 | 765,CY0334,9612.985507246376,1.5541472868217057,4.359254348837209 768 | 766,CY0334,9740.739130434782,0.12175781250000012,2.2554601953124984 769 | 767,CY0334,9868.492753623188,0.3232812500000002,1.494579589843749 770 | 768,CY0334,9996.246376811594,0.185748031496063,1.5332604842519684 771 | 769,CY0334,10124.0,0.0,3.47069 772 | 770,CY0335,1309.0,0.2807392996108949,6.38939022178988 773 | 771,CY0335,1436.7536231884058,1.495615384615385,7.40284536153846 774 | 772,CY0335,1564.5072463768115,0.2619844357976654,2.9547093657587538 775 | 773,CY0335,1692.2608695652175,0.16988281249999998,3.785267566406251 776 | 774,CY0335,1820.0144927536232,0.21688976377952754,2.573661456692913 777 | 775,CY0335,1947.768115942029,0.22644531249999988,1.8765928945312498 778 | 776,CY0335,2075.521739130435,0.26363281250000004,3.4850107734375007 779 | 777,CY0335,2203.2753623188405,0.1708593749999998,3.838074179687498 780 | 778,CY0335,2331.0289855072465,0.19125984251968506,5.659281948818901 781 | 779,CY0335,2458.782608695652,1.1457358490566039,4.203566173584902 782 | 780,CY0335,2586.536231884058,0.41330827067669174,5.943150563909773 783 | 781,CY0335,2714.289855072464,0.3208921933085503,2.0776218661710044 784 | 782,CY0335,2842.0434782608695,0.19944881889763774,3.8083464133858276 785 | 783,CY0335,2969.797101449275,0.1340234375,5.145108855468752 786 | 784,CY0335,3097.550724637681,0.14597656250000007,4.940860316406254 787 | 785,CY0335,3225.304347826087,0.17824218750000004,6.4876876640625 788 | 786,CY0335,3353.057971014493,0.36759842519685043,3.978441700787403 789 | 787,CY0335,3480.8115942028985,0.20769531250000003,2.6495849492187515 790 | 788,CY0335,3608.5652173913045,0.16582031249999987,1.3453240820312498 791 | 789,CY0335,3736.31884057971,0.15070312500000005,4.5764136328125 792 | 790,CY0335,3864.072463768116,0.20232283464566925,5.062400795275588 793 | 791,CY0335,3991.8260869565215,0.15746093749999995,3.0611698554687505 794 | 792,CY0335,4119.579710144928,0.23738281250000004,4.230180863281252 795 | 793,CY0335,4247.333333333334,0.18656250000000005,2.1359054453125 796 | 794,CY0335,4375.086956521739,0.42850393700787404,4.064490366141733 797 | 795,CY0335,4502.840579710145,0.13355468750000002,2.1116006601562494 798 | 796,CY0335,4630.59420289855,0.10203124999999995,3.0786875625000003 799 | 797,CY0335,4758.347826086956,0.20187499999999997,2.367139359375 800 | 798,CY0335,4886.101449275362,0.19074803149606304,3.775384732283464 801 | 799,CY0335,5013.855072463768,0.1833593749999999,1.232714421874999 802 | 800,CY0335,5141.608695652174,0.1446484375,3.0148562539062516 803 | 801,CY0335,5269.36231884058,0.12164062499999997,3.2776622734375027 804 | 802,CY0335,5397.115942028986,0.1348031496062992,5.232569972440944 805 | 803,CY0335,5524.869565217391,0.09758754863813232,2.8052644241245135 806 | 804,CY0335,5652.623188405797,0.08675781249999999,3.688806062499999 807 | 805,CY0335,5780.376811594203,0.16683593750000003,2.898613539062501 808 | 806,CY0335,5908.130434782609,0.13074803149606296,2.32179609055118 809 | 807,CY0335,6035.884057971014,0.20159695817490494,1.3124249315589354 810 | 808,CY0335,6163.63768115942,0.3529118773946362,2.6253565095785447 811 | 809,CY0335,6291.391304347826,0.148203125,6.288185007812499 812 | 810,CY0335,6419.144927536232,0.11838582677165353,3.210525354330709 813 | 811,CY0335,6546.898550724638,0.34414448669201514,3.056421577946769 814 | 812,CY0335,6674.652173913043,0.1299609375,5.070182585937499 815 | 813,CY0335,6802.405797101449,0.27924242424242435,3.5772367992424243 816 | 814,CY0335,6930.159420289855,0.48885826771653557,3.196517500000002 817 | 815,CY0335,7057.913043478261,0.1424902723735408,3.190518809338521 818 | 816,CY0335,7185.666666666667,0.48148437499999985,2.982768839843751 819 | 817,CY0335,7313.420289855072,0.25941406250000004,4.9164898125 820 | 818,CY0335,7441.173913043478,0.3524803149606298,1.3795442165354332 821 | 819,CY0335,7568.927536231884,0.2310937499999999,1.2587378085937504 822 | 820,CY0335,7696.68115942029,0.3077734375,2.850090964843752 823 | 821,CY0335,7824.434782608696,0.2781250000000002,2.5469003898437497 824 | 822,CY0335,7952.188405797101,0.17185039370078734,2.003951651968505 825 | 823,CY0335,8079.942028985507,0.1675390624999999,3.8964540160156256 826 | 824,CY0335,8207.695652173912,0.2992187499999996,1.7234028527343759 827 | 825,CY0335,8335.44927536232,0.16972656250000007,4.4401122296874975 828 | 826,CY0335,8463.202898550724,0.12374015748031501,1.02338010984252 829 | 827,CY0335,8590.95652173913,0.1722265625000001,1.4172901812499994 830 | 828,CY0335,8718.710144927536,0.16902343750000018,2.0880319484375014 831 | 829,CY0335,8846.463768115942,0.23218750000000007,1.6427521390625004 832 | 830,CY0335,8974.217391304348,0.18271653543307081,3.4209468783464563 833 | 831,CY0335,9101.971014492754,1.6710714285714292,1.0581001757142863 834 | 832,CY0335,9229.72463768116,0.9976492537313439,1.2605971865671644 835 | 833,CY0335,9357.478260869564,0.36380597014925387,2.4943543768656724 836 | 834,CY0335,9485.231884057972,1.08484375,4.479533187500001 837 | 835,CY0335,9612.985507246376,0.9851171875000002,4.003404757812501 838 | 836,CY0335,9740.739130434782,0.11113281250000002,1.819210699218751 839 | 837,CY0335,9868.492753623188,0.5626848249027241,1.6897760077821016 840 | 838,CY0335,9996.246376811594,0.21196078431372553,1.3753099921568634 841 | 839,CY0335,10124.0,0.0,3.5591385 842 | --------------------------------------------------------------------------------