summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/applet.js3
-rw-r--r--client/chart/chart.container.js199
-rw-r--r--client/chart/chart.css22
-rw-r--r--client/chart/index.js5
-rw-r--r--client/index.js10
-rw-r--r--client/map/index.js1
-rw-r--r--client/tables.js2
-rw-r--r--package-lock.json468
-rw-r--r--package.json1
-rw-r--r--scraper/s2-doi-report.py2
-rw-r--r--scraper/s2-geocode-spreadsheet.py4
-rw-r--r--scraper/s2-papers.py10
-rw-r--r--scraper/s2-raw-papers.py6
-rw-r--r--scraper/util.py4
-rw-r--r--site/content/pages/datasets/brainwash/index.md2
-rw-r--r--site/content/pages/datasets/cofw/index.md8
-rw-r--r--site/content/pages/datasets/lfw/index.md2
-rw-r--r--site/includes/chart.html11
-rw-r--r--site/includes/citations.html8
-rw-r--r--site/public/datasets/brainwash/index.html2
-rw-r--r--site/public/datasets/cofw/index.html2
-rw-r--r--site/public/datasets/lfw/index.html2
22 files changed, 669 insertions, 105 deletions
diff --git a/client/applet.js b/client/applet.js
index 27191693..cd73925c 100644
--- a/client/applet.js
+++ b/client/applet.js
@@ -4,6 +4,7 @@ import { Container as FaceSearchContainer } from './faceSearch'
import { Container as FaceAnalysisContainer } from './faceAnalysis'
import { Container as NameSearchContainer } from './nameSearch'
import { Container as DatasetListContainer } from './datasetList'
+import { Container as ChartContainer } from './chart'
export default class Applet extends Component {
render() {
@@ -17,6 +18,8 @@ export default class Applet extends Component {
return <NameSearchContainer {...this.props} />
case 'dataset_list':
return <DatasetListContainer {...this.props} />
+ case 'chart':
+ return <ChartContainer {...this.props} />
default:
return <pre style={{ color: '#0f0' }}>{'Megapixels'}</pre>
}
diff --git a/client/chart/chart.container.js b/client/chart/chart.container.js
new file mode 100644
index 00000000..aa80100e
--- /dev/null
+++ b/client/chart/chart.container.js
@@ -0,0 +1,199 @@
+import React, { Component } from 'react'
+import { bindActionCreators } from 'redux'
+import { connect } from 'react-redux'
+import { toArray } from '../util'
+import C3Chart from 'react-c3js'
+import 'c3/c3.css'
+import './chart.css'
+
+const rainbow = [
+ '#9e0142',
+ '#d53e4f',
+ '#f46d43',
+ '#fdae61',
+ '#fee08b',
+ '#ffffbf',
+ '#e6f598',
+ '#abdda4',
+ '#66c2a5',
+ '#3288bd',
+ '#5e4fa2',
+ // '#888888',
+]
+
+const colorblindSafeRainbow = [
+ '#a50026',
+ '#d73027',
+ '#f46d43',
+ '#fdae61',
+ '#fee090',
+ '#ffffbf',
+ '#e0f3f8',
+ '#abd9e9',
+ '#74add1',
+ '#4575b4',
+ '#313695',
+ // '#888888',
+]
+
+const topCountryCount = 10
+
+const otherCountriesLabel = 'Other Countries'
+
+class ChartContainer extends Component {
+ render() {
+ const { payload } = this.props
+ const { paper, citations } = payload.data
+ if (!citations.length) return null
+ const years = {}
+ const countries = {}
+ citations.forEach(citation => {
+ let { year, addresses } = citation
+ if (!year || !parseInt(year)) return
+ year = parseInt(year)
+ years[year] = years[year] || {}
+ addresses.forEach(address => {
+ const { country } = address
+ if (!country) return
+ if (!(country in countries)) {
+ countries[country] = 1
+ } else {
+ countries[country] += 1
+ }
+ if (country in years[year]) {
+ years[year][country] += 1
+ } else {
+ years[year][country] = 1
+ countries[country] = true
+ }
+ })
+ })
+ let yearList = Object.keys(years).map(year => parseInt(year)).sort()
+ for (let i = yearList[0]; i < yearList[-1]; i++) {
+ if (!(i in years)) {
+ years[i] = {}
+ }
+ }
+ yearList = Object.keys(years).map(year => parseInt(year)).sort()
+
+ Object.keys(countries).forEach(country => {
+ yearList.forEach(year => {
+ if (!(country in years[year])) years[year][country] = 0
+ })
+ })
+
+ // figure out the top N countries in the dataset
+ const countriesByCount = Object.keys(countries).sort((a,b) => countries[b] - countries[a])
+ // console.log(countriesByCount)
+ let topCountries = countriesByCount.slice(0, topCountryCount)
+ let otherCountries = countriesByCount.slice(topCountryCount)
+
+ let citationCountsByYear =
+ [ ['x'].concat(yearList.map(year => String(year))) ]
+ .concat(
+ topCountries
+ .map(country =>
+ [country]
+ .concat(
+ yearList
+ .map(year => years[year][country])
+ )
+ )
+ )
+
+ citationCountsByYear.push(
+ [otherCountriesLabel].concat(
+ yearList.map(year => otherCountries.reduce((a,b) => (a + years[year][b]), 0))
+ )
+ )
+
+ let maxCitationsInAYear = 0
+ let currentSum = 0
+ // for each year...
+ for (let j = 1; j < citationCountsByYear[0].length; j++) {
+ // for each country
+ currentSum = 0
+ for (let i = 1; i < citationCountsByYear.length; i++) {
+ currentSum += citationCountsByYear[i][j]
+ }
+ maxCitationsInAYear = Math.max(currentSum, maxCitationsInAYear)
+ }
+
+ let ticks = []
+ for (let i = 0; i < maxCitationsInAYear; i += 50) {
+ ticks.push(i)
+ }
+ if (ticks[ticks.length - 1] < maxCitationsInAYear) {
+ ticks.push('')
+ }
+
+ const colorPattern = rainbow
+
+ return (
+ <div className='chart'>
+ <C3Chart
+ data={{
+ x: 'x',
+ columns: citationCountsByYear,
+ type: 'bar',
+ groups: [ topCountries.concat(otherCountriesLabel) ],
+ }}
+ axis={{
+ x: {
+ type: 'category' // this needed to load string x value
+ },
+ y: {
+ show: false,
+ },
+ y2: {
+ tick: {
+ values: ticks,
+ },
+ default: [ 0, maxCitationsInAYear * 286 / 261 ],
+ show: true,
+ }
+ }}
+ legend={{
+ position: 'right'
+ }}
+ color={{
+ pattern: colorPattern
+ }}
+ tooltip={{
+ contents: function (d, defaultTitleFormat, defaultValueFormat, color) {
+ const countriesByYearLookup = years[yearList[d[0].x]]
+ let countriesByYear = Object.keys(countriesByYearLookup).map(country => [country, countriesByYearLookup[country]]).sort((a,b) => b[1] - a[1])
+ let topCountriesForThisYear = countriesByYear.slice(0, topCountryCount)
+ let bottomTotal = countriesByYear.slice(topCountryCount).reduce((a,b) => (a + b[1]), 0)
+ // console.log(topCountriesForThisYear)
+ topCountriesForThisYear.push([otherCountriesLabel, bottomTotal])
+ const tableRows = topCountriesForThisYear.filter(pair => !!pair[1]).map(([country, total]) => {
+ let colorIndex = topCountries.indexOf(country)
+ if (colorIndex < 0) colorIndex = colorPattern.length - 1
+ const color = colorPattern[ colorIndex ]
+ return [
+ "<tr>",
+ "<td>",
+ "<span style='background-color:" + color + "' class='swatch'></span>",
+ country,
+ "</td>",
+ "<td>",
+ total,
+ "</td>",
+ "</tr>",
+ ].join('')
+ })
+ return [
+ "<table class='c3-tooltip'>",
+ ...tableRows,
+ "</table>",
+ ].join('')
+ }
+ }}
+ />
+ </div>
+ )
+ }
+}
+
+export default ChartContainer
diff --git a/client/chart/chart.css b/client/chart/chart.css
new file mode 100644
index 00000000..f9c33247
--- /dev/null
+++ b/client/chart/chart.css
@@ -0,0 +1,22 @@
+.chart text {
+ fill: white;
+}
+.chart line {
+ stroke: white;
+}
+.chart path {
+ stroke: white;
+}
+.c3 path,
+.c3 line {
+ stroke: white;
+}
+
+.c3-tooltip,
+.c3-tooltip td {
+ background: rgba(0,0,0,0.8);
+}
+.c3-tooltip th {
+ font-family: 'Roboto', sans-serif;
+ background: black;
+}
diff --git a/client/chart/index.js b/client/chart/index.js
new file mode 100644
index 00000000..e9d3322d
--- /dev/null
+++ b/client/chart/index.js
@@ -0,0 +1,5 @@
+import Container from './chart.container'
+
+export {
+ Container,
+}
diff --git a/client/index.js b/client/index.js
index 1e4e2eb8..dd60c0ed 100644
--- a/client/index.js
+++ b/client/index.js
@@ -80,17 +80,17 @@ function runApplets() {
url = null
}
}
- if (('datasets' in payload) && !dataset && !url) {
+ if ((('datasets' in payload) && !dataset && !url) || window.location.pathname.match('datasets')) {
const path = window.location.pathname.split('/').filter(s => !!s)
- if (path.length) {
+ if (path.length > 1) {
dataset = path.pop()
if (dataset === 'index.html') {
dataset = path.pop()
}
- // console.log('dataset from path:', dataset)
+ console.log('dataset from path:', dataset)
} else {
- console.log('couldnt determine citations dataset')
- return null
+ console.log('not on a dataset page')
+ return [el, payload]
}
}
payload.dataset = dataset
diff --git a/client/map/index.js b/client/map/index.js
index ec9ebe66..9f4cc623 100644
--- a/client/map/index.js
+++ b/client/map/index.js
@@ -71,6 +71,7 @@ function addArc(map, src, dest, arcStyle) {
export default function append(el, payload) {
const { data } = payload
+ if (!data) return
let { paper, address, citations } = data
let source = [0, 0]
diff --git a/client/tables.js b/client/tables.js
index 851f76f5..1077289f 100644
--- a/client/tables.js
+++ b/client/tables.js
@@ -57,9 +57,9 @@ export default function append(el, payload) {
// let path = payload.opt
// console.log(path, columns)
- console.log(payload.cmd, payload.url, payload.dataset)
if (payload.cmd === 'citations') {
let { data } = payload
+ if (!data) return null
const citations = getCitations(data)
// console.log(citations)
table.setData(citations)
diff --git a/package-lock.json b/package-lock.json
index 22f4d92e..ecd3699e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -319,17 +319,20 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
},
"anymatch": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
"integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "dev": true,
"optional": true,
"requires": {
"micromatch": "^2.1.5",
@@ -358,6 +361,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
"optional": true,
"requires": {
"arr-flatten": "^1.0.1"
@@ -366,12 +370,14 @@
"arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
},
"arr-union": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
},
"array-flatten": {
"version": "2.1.2",
@@ -408,6 +414,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
"integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true,
"optional": true
},
"asn1.js": {
@@ -450,7 +457,8 @@
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
},
"async": {
"version": "2.6.1",
@@ -464,12 +472,14 @@
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
- "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
},
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
},
"aws-sdk": {
"version": "2.377.0",
@@ -491,6 +501,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
"integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
+ "dev": true,
"requires": {
"babel-core": "^6.26.0",
"babel-polyfill": "^6.26.0",
@@ -512,7 +523,8 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
@@ -520,6 +532,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
@@ -529,7 +542,8 @@
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
}
}
},
@@ -537,6 +551,7 @@
"version": "6.26.3",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"babel-generator": "^6.26.0",
@@ -562,7 +577,8 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
@@ -592,6 +608,7 @@
"version": "6.26.1",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
"integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "dev": true,
"requires": {
"babel-messages": "^6.23.0",
"babel-runtime": "^6.26.0",
@@ -606,7 +623,8 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
@@ -752,6 +770,7 @@
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
"integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true,
"requires": {
"babel-runtime": "^6.22.0",
"babel-template": "^6.24.1"
@@ -837,6 +856,7 @@
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
"requires": {
"babel-runtime": "^6.22.0"
}
@@ -1207,6 +1227,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
"integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
+ "dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"core-js": "^2.5.0",
@@ -1216,7 +1237,8 @@
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
- "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
+ "dev": true
}
}
},
@@ -1262,6 +1284,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "dev": true,
"requires": {
"babel-core": "^6.26.0",
"babel-runtime": "^6.26.0",
@@ -1276,6 +1299,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
@@ -1284,7 +1308,8 @@
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
}
}
},
@@ -1292,6 +1317,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"babel-traverse": "^6.26.0",
@@ -1304,6 +1330,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"babel-messages": "^6.23.0",
@@ -1320,6 +1347,7 @@
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"esutils": "^2.0.2",
@@ -1330,7 +1358,8 @@
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
},
"balanced-match": {
"version": "1.0.0",
@@ -1341,6 +1370,7 @@
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
"requires": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
@@ -1355,6 +1385,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -1363,6 +1394,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -1371,6 +1403,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -1379,6 +1412,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -1388,12 +1422,14 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -1416,7 +1452,8 @@
"binary-extensions": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
- "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg=="
+ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+ "dev": true
},
"bluebird": {
"version": "3.5.3",
@@ -1491,6 +1528,7 @@
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
"optional": true,
"requires": {
"expand-range": "^1.8.1",
@@ -1663,6 +1701,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
"requires": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
@@ -1678,7 +1717,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -1733,6 +1773,7 @@
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -1751,6 +1792,7 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
"integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
"optional": true,
"requires": {
"anymatch": "^1.3.0",
@@ -1789,6 +1831,7 @@
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
"integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
"requires": {
"arr-union": "^3.1.0",
"define-property": "^0.2.5",
@@ -1800,6 +1843,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -1807,7 +1851,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -1878,6 +1923,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
"requires": {
"map-visit": "^1.0.0",
"object-visit": "^1.0.0"
@@ -1901,7 +1947,8 @@
"commander": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
},
"commondir": {
"version": "1.0.1",
@@ -1911,7 +1958,8 @@
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
},
"compressible": {
"version": "2.0.15",
@@ -2019,6 +2067,7 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
"requires": {
"safe-buffer": "~5.1.1"
}
@@ -2051,12 +2100,14 @@
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
},
"core-js": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz",
- "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw=="
+ "integrity": "sha512-kLRC6ncVpuEW/1kwrOXYX6KQASCVtrh1gQr/UiaVgFlf9WE5Vp+lNe5+h3LuMr5PAucWnnEXwH0nQHRH/gpGtw==",
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -2230,6 +2281,28 @@
"resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz",
"integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g="
},
+ "d3-color": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.2.3.tgz",
+ "integrity": "sha512-x37qq3ChOTLd26hnps36lexMRhNXEtVxZ4B25rL0DVdDsGQIJGB18S7y9XDwlDD6MD/ZBzITCf4JjGMM10TZkw=="
+ },
+ "d3-interpolate": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz",
+ "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==",
+ "requires": {
+ "d3-color": "1"
+ }
+ },
+ "d3-scale-chromatic": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.3.3.tgz",
+ "integrity": "sha512-BWTipif1CimXcYfT02LKjAyItX5gKiwxuPRgr4xM58JwlLocWbjPLI7aMEjkcoOQXMkYsmNsvv3d2yl/OKuHHw==",
+ "requires": {
+ "d3-color": "1",
+ "d3-interpolate": "1"
+ }
+ },
"data-uri-to-blob": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/data-uri-to-blob/-/data-uri-to-blob-0.0.4.tgz",
@@ -2258,6 +2331,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -2271,7 +2345,8 @@
"decode-uri-component": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
},
"deep-equal": {
"version": "1.0.1",
@@ -2338,6 +2413,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
"requires": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
@@ -2347,6 +2423,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -2355,6 +2432,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -2363,6 +2441,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -2372,12 +2451,14 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -2421,6 +2502,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
"requires": {
"repeating": "^2.0.0"
}
@@ -2749,7 +2831,8 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
},
"escope": {
"version": "3.6.0",
@@ -3310,7 +3393,8 @@
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
},
"etag": {
"version": "1.8.1",
@@ -3398,6 +3482,7 @@
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
"optional": true,
"requires": {
"is-posix-bracket": "^0.1.0"
@@ -3405,8 +3490,9 @@
},
"expand-range": {
"version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "resolved": "http://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
"optional": true,
"requires": {
"fill-range": "^2.1.0"
@@ -3462,6 +3548,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
"requires": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
@@ -3471,6 +3558,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
@@ -3492,6 +3580,7 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
"optional": true,
"requires": {
"is-extglob": "^1.0.0"
@@ -3565,12 +3654,14 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
"integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true,
"optional": true
},
"fill-range": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
"integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "dev": true,
"optional": true,
"requires": {
"is-number": "^2.1.0",
@@ -3663,6 +3754,7 @@
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
"optional": true,
"requires": {
"for-in": "^1.0.1"
@@ -3678,6 +3770,7 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
"requires": {
"map-cache": "^0.2.2"
}
@@ -3700,7 +3793,8 @@
"fs-readdir-recursive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
- "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
+ "dev": true
},
"fs-write-stream-atomic": {
"version": "1.0.10",
@@ -3722,6 +3816,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
"integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "dev": true,
"optional": true,
"requires": {
"nan": "^2.9.2",
@@ -3731,20 +3826,24 @@
"abbrev": {
"version": "1.1.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.4",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
@@ -3753,11 +3852,13 @@
},
"balanced-match": {
"version": "1.0.0",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
+ "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -3766,28 +3867,34 @@
"chownr": {
"version": "1.0.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"ms": "2.0.0"
@@ -3796,21 +3903,25 @@
"deep-extend": {
"version": "0.5.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
+ "dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
@@ -3819,11 +3930,13 @@
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
@@ -3839,6 +3952,7 @@
"glob": {
"version": "7.1.2",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -3852,11 +3966,13 @@
"has-unicode": {
"version": "2.0.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"safer-buffer": "^2.1.0"
@@ -3865,6 +3981,7 @@
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"minimatch": "^3.0.4"
@@ -3873,6 +3990,7 @@
"inflight": {
"version": "1.0.6",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
@@ -3881,16 +3999,19 @@
},
"inherits": {
"version": "2.0.3",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
+ "dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
+ "dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -3898,22 +4019,26 @@
"isarray": {
"version": "1.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
+ "dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
+ "dev": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@@ -3922,6 +4047,7 @@
"minizlib": {
"version": "1.1.0",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
@@ -3930,6 +4056,7 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
+ "dev": true,
"requires": {
"minimist": "0.0.8"
}
@@ -3937,11 +4064,13 @@
"ms": {
"version": "2.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"needle": {
"version": "2.2.0",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"debug": "^2.1.2",
@@ -3952,6 +4081,7 @@
"node-pre-gyp": {
"version": "0.10.0",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"detect-libc": "^1.0.2",
@@ -3969,6 +4099,7 @@
"nopt": {
"version": "4.0.1",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"abbrev": "1",
@@ -3978,11 +4109,13 @@
"npm-bundled": {
"version": "1.0.3",
"bundled": true,
+ "dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.1.10",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
@@ -3992,6 +4125,7 @@
"npmlog": {
"version": "4.1.2",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
@@ -4002,16 +4136,19 @@
},
"number-is-nan": {
"version": "1.0.1",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
+ "dev": true,
"requires": {
"wrappy": "1"
}
@@ -4019,16 +4156,19 @@
"os-homedir": {
"version": "1.0.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
@@ -4038,16 +4178,19 @@
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"rc": {
"version": "1.2.7",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"deep-extend": "^0.5.1",
@@ -4059,6 +4202,7 @@
"minimist": {
"version": "1.2.0",
"bundled": true,
+ "dev": true,
"optional": true
}
}
@@ -4066,6 +4210,7 @@
"readable-stream": {
"version": "2.3.6",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"core-util-is": "~1.0.0",
@@ -4080,6 +4225,7 @@
"rimraf": {
"version": "2.6.2",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"glob": "^7.0.5"
@@ -4087,36 +4233,43 @@
},
"safe-buffer": {
"version": "5.1.1",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
+ "dev": true,
"optional": true
},
"semver": {
"version": "5.5.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
+ "dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
+ "dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -4126,6 +4279,7 @@
"string_decoder": {
"version": "1.1.1",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
@@ -4134,6 +4288,7 @@
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
+ "dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -4141,11 +4296,13 @@
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
+ "dev": true,
"optional": true
},
"tar": {
"version": "4.4.1",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"chownr": "^1.0.1",
@@ -4160,11 +4317,13 @@
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
+ "dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.2",
"bundled": true,
+ "dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2"
@@ -4172,11 +4331,13 @@
},
"wrappy": {
"version": "1.0.2",
- "bundled": true
+ "bundled": true,
+ "dev": true
},
"yallist": {
"version": "3.0.2",
- "bundled": true
+ "bundled": true,
+ "dev": true
}
}
},
@@ -4225,7 +4386,8 @@
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
},
"glob": {
"version": "7.1.3",
@@ -4244,6 +4406,7 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
"optional": true,
"requires": {
"glob-parent": "^2.0.0",
@@ -4254,6 +4417,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
"requires": {
"is-glob": "^2.0.0"
}
@@ -4276,7 +4440,8 @@
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
},
"globby": {
"version": "6.1.0",
@@ -4323,6 +4488,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -4343,6 +4509,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
"requires": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
@@ -4352,7 +4519,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -4360,6 +4528,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
"requires": {
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
@@ -4369,6 +4538,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -4377,6 +4547,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -4387,6 +4558,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -4451,6 +4623,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
"integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.1"
@@ -5131,6 +5304,7 @@
"version": "0.1.6",
"resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
}
@@ -5145,6 +5319,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
"requires": {
"binary-extensions": "^1.0.0"
}
@@ -5173,6 +5348,7 @@
"version": "0.1.4",
"resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
}
@@ -5187,6 +5363,7 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
@@ -5196,7 +5373,8 @@
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
@@ -5204,12 +5382,14 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
"integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true,
"optional": true
},
"is-equal-shallow": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
"optional": true,
"requires": {
"is-primitive": "^2.0.0"
@@ -5223,12 +5403,14 @@
"is-extglob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
},
"is-finite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -5243,6 +5425,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
"requires": {
"is-extglob": "^1.0.0"
}
@@ -5317,12 +5500,14 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
"integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true,
"optional": true
},
"is-primitive": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true,
"optional": true
},
"is-promise": {
@@ -5370,7 +5555,8 @@
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
},
"is-wsl": {
"version": "1.1.0",
@@ -5420,7 +5606,8 @@
"jsesc": {
"version": "1.3.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
},
"json-loader": {
"version": "0.5.7",
@@ -5580,7 +5767,8 @@
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
},
"lodash.debounce": {
"version": "4.0.8",
@@ -5653,12 +5841,14 @@
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
},
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
"requires": {
"object-visit": "^1.0.0"
}
@@ -5667,6 +5857,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
"integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
+ "dev": true,
"optional": true
},
"md5.js": {
@@ -5721,6 +5912,7 @@
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
"optional": true,
"requires": {
"arr-diff": "^2.0.0",
@@ -5868,7 +6060,8 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
},
"multicast-dns": {
"version": "6.2.3",
@@ -5896,12 +6089,14 @@
"version": "2.11.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
"integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
+ "dev": true,
"optional": true
},
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -5919,17 +6114,20 @@
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
},
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -6047,6 +6245,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
}
@@ -6072,7 +6271,8 @@
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -6083,6 +6283,7 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
"requires": {
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
@@ -6093,6 +6294,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -6109,6 +6311,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
"requires": {
"isobject": "^3.0.0"
},
@@ -6116,7 +6319,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -6158,6 +6362,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
"optional": true,
"requires": {
"for-own": "^0.1.4",
@@ -6168,6 +6373,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
"requires": {
"isobject": "^3.0.1"
},
@@ -6175,7 +6381,8 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -6258,7 +6465,8 @@
"os-homedir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
},
"os-locale": {
"version": "2.1.0",
@@ -6274,12 +6482,14 @@
"os-tmpdir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
},
"output-file-sync": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
"integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
+ "dev": true,
"requires": {
"graceful-fs": "^4.1.4",
"mkdirp": "^0.5.1",
@@ -6394,6 +6604,7 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
"optional": true,
"requires": {
"glob-base": "^0.3.0",
@@ -6420,7 +6631,8 @@
"pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
},
"path-browserify": {
"version": "0.0.0",
@@ -6554,7 +6766,8 @@
"posix-character-classes": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
},
"postcss": {
"version": "6.0.23",
@@ -6683,6 +6896,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true,
"optional": true
},
"pretty-error": {
@@ -6703,7 +6917,8 @@
"private": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
+ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+ "dev": true
},
"process": {
"version": "0.5.2",
@@ -6832,6 +7047,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
"integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
+ "dev": true,
"optional": true,
"requires": {
"is-number": "^4.0.0",
@@ -6843,12 +7059,14 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
"integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true,
"optional": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true,
"optional": true
}
}
@@ -7140,6 +7358,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
@@ -7149,17 +7368,20 @@
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
},
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
},
"braces": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
@@ -7177,6 +7399,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7187,6 +7410,7 @@
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
@@ -7201,6 +7425,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -7209,6 +7434,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7217,6 +7443,7 @@
"version": "0.1.6",
"resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -7225,6 +7452,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -7235,6 +7463,7 @@
"version": "0.1.4",
"resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -7243,6 +7472,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -7253,6 +7483,7 @@
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
@@ -7262,7 +7493,8 @@
"kind-of": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
}
}
},
@@ -7270,6 +7502,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
@@ -7285,6 +7518,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -7293,6 +7527,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7303,6 +7538,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
@@ -7314,6 +7550,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7324,6 +7561,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -7332,6 +7570,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -7340,6 +7579,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -7350,6 +7590,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@@ -7358,6 +7599,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@@ -7367,17 +7609,20 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
},
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@@ -7489,6 +7734,7 @@
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
"optional": true,
"requires": {
"is-equal-shallow": "^0.1.3"
@@ -7498,6 +7744,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
"requires": {
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
@@ -7552,7 +7799,8 @@
"remove-trailing-separator": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
},
"renderkid": {
"version": "2.0.2",
@@ -7570,17 +7818,20 @@
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
},
"repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
"requires": {
"is-finite": "^1.0.0"
}
@@ -7653,7 +7904,8 @@
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
},
"restore-cursor": {
"version": "2.0.0",
@@ -7668,7 +7920,8 @@
"ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
},
"right-align": {
"version": "0.1.3",
@@ -7738,6 +7991,7 @@
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
"requires": {
"ret": "~0.1.10"
}
@@ -7861,6 +8115,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
"integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@@ -7872,6 +8127,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7940,7 +8196,8 @@
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
},
"slice-ansi": {
"version": "1.0.0",
@@ -7955,6 +8212,7 @@
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
"requires": {
"base": "^0.11.1",
"debug": "^2.2.0",
@@ -7970,6 +8228,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -7978,6 +8237,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -7985,7 +8245,8 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
@@ -7993,6 +8254,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
"integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
"requires": {
"define-property": "^1.0.0",
"isobject": "^3.0.0",
@@ -8003,6 +8265,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@@ -8011,6 +8274,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -8019,6 +8283,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@@ -8027,6 +8292,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@@ -8036,12 +8302,14 @@
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -8049,6 +8317,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
"requires": {
"kind-of": "^3.2.0"
}
@@ -8125,6 +8394,7 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
"integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
"requires": {
"atob": "^2.1.1",
"decode-uri-component": "^0.2.0",
@@ -8137,6 +8407,7 @@
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
"requires": {
"source-map": "^0.5.6"
},
@@ -8144,14 +8415,16 @@
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
}
}
},
"source-map-url": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
},
"spdx-correct": {
"version": "3.1.0",
@@ -8266,6 +8539,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
"integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
"requires": {
"extend-shallow": "^3.0.0"
}
@@ -8293,6 +8567,7 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
"requires": {
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
@@ -8302,6 +8577,7 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@@ -8395,6 +8671,7 @@
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -8442,7 +8719,8 @@
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
},
"symbol-observable": {
"version": "1.2.0",
@@ -8617,12 +8895,14 @@
"to-fast-properties": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
},
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
}
@@ -8631,6 +8911,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
"requires": {
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
@@ -8642,6 +8923,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
@@ -8651,6 +8933,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
"requires": {
"kind-of": "^3.0.2"
}
@@ -8666,7 +8949,8 @@
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
},
"tty-browserify": {
"version": "0.0.0",
@@ -8892,6 +9176,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
"integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
@@ -8903,6 +9188,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@@ -8911,6 +9197,7 @@
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
"integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@@ -8946,6 +9233,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
"requires": {
"has-value": "^0.3.1",
"isobject": "^3.0.0"
@@ -8955,6 +9243,7 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
"requires": {
"get-value": "^2.0.3",
"has-values": "^0.1.4",
@@ -8965,6 +9254,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
"requires": {
"isarray": "1.0.0"
}
@@ -8974,12 +9264,14 @@
"has-values": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
},
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
}
}
},
@@ -9013,7 +9305,8 @@
"urix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
},
"url": {
"version": "0.10.3",
@@ -9037,12 +9330,14 @@
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
},
"user-home": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
- "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
+ "dev": true
},
"util": {
"version": "0.10.4",
@@ -9095,6 +9390,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
"integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true,
"requires": {
"user-home": "^1.1.1"
}
diff --git a/package.json b/package.json
index 945e4e1e..25c9984e 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"connected-react-router": "^4.3.0",
"csv-parse": "^4.2.0",
"csv-stringify": "^4.3.1",
+ "d3-scale-chromatic": "^1.3.3",
"data-uri-to-blob": "0.0.4",
"data-uri-to-buffer": "^2.0.0",
"date-fns": "^1.29.0",
diff --git a/scraper/s2-doi-report.py b/scraper/s2-doi-report.py
index 1d7bf44a..ea708de2 100644
--- a/scraper/s2-doi-report.py
+++ b/scraper/s2-doi-report.py
@@ -7,8 +7,8 @@ import click
import operator
from util import *
from bs4 import BeautifulSoup
-from importlib import import_module
from urllib.parse import unquote
+from importlib import import_module
doi = import_module('s2-fetch-doi')
DOI_DIR = 'datasets/s2/doi'
diff --git a/scraper/s2-geocode-spreadsheet.py b/scraper/s2-geocode-spreadsheet.py
index 32d7c669..c36625a6 100644
--- a/scraper/s2-geocode-spreadsheet.py
+++ b/scraper/s2-geocode-spreadsheet.py
@@ -110,6 +110,8 @@ def update_country_from_address(address, i, countries, worksheet):
country = None
if possible_country in countries:
country = countries[possible_country]
+ elif "CHINA" in address:
+ country = "China"
elif "China" in address:
country = "China"
elif "Hong Kong" in address:
@@ -118,6 +120,8 @@ def update_country_from_address(address, i, countries, worksheet):
country = "Singapore"
elif "Taiwan" in address:
country = "Taiwan"
+ elif "Saudi Arabia" in address:
+ country = "Saudi Arabia"
elif "Russia" in address:
country = "Russia"
elif "Ukraine" in address:
diff --git a/scraper/s2-papers.py b/scraper/s2-papers.py
index 782dc198..ef7d3d81 100644
--- a/scraper/s2-papers.py
+++ b/scraper/s2-papers.py
@@ -9,11 +9,15 @@ import operator
import click
from s2 import SemanticScholarAPI
from util import *
+from urllib.parse import unquote
+import importlib
+raw_papers_api = importlib.import_module('s2-raw-papers')
s2 = SemanticScholarAPI()
@click.command()
-def fetch_papers():
+@click.option('--freshen/--no-freshen', '-f', help='Force it to query the paper API again')
+def fetch_papers(freshen):
addresses = AddressBook()
lookup_keys, lines = fetch_google_sheet('citation_lookup')
report_keys = [
@@ -30,9 +34,11 @@ def fetch_papers():
paper_id = line[3]
if paper_id == '':
continue
- paper = fetch_paper(s2, paper_id)
+ paper = fetch_paper(s2, paper_id, freshen)
if paper is None:
continue
+ if freshen:
+ raw_papers_api.fetch_raw_paper(paper_id, freshen)
db_paper = load_paper(paper_id)
pdf_link = db_paper.pdf_link if db_paper else ""
diff --git a/scraper/s2-raw-papers.py b/scraper/s2-raw-papers.py
index 612c8099..67ff0b65 100644
--- a/scraper/s2-raw-papers.py
+++ b/scraper/s2-raw-papers.py
@@ -18,10 +18,10 @@ def fetch_raw_papers(fn):
lines = read_csv(fn, keys=False)
parallelize(fetch_raw_paper, lines)
-def fetch_raw_paper(paper_id):
+def fetch_raw_paper(paper_id, freshen=False):
os.makedirs(make_raw_paper_path(paper_id), exist_ok=True)
paper_fn = make_raw_paper_fn(paper_id)
- if os.path.exists(paper_fn):
+ if os.path.exists(paper_fn) and not freshen:
paper = read_json(paper_fn)
else:
paper = s2.raw_paper(paper_id)
@@ -33,7 +33,7 @@ def fetch_raw_paper(paper_id):
if 'responseType' in paper and paper['responseType'] == 'CANONICAL':
write_json(paper_fn, paper)
- paper = s2.raw_paper(data['canonicalId'])
+ paper = s2.raw_paper(paper['canonicalId'])
paper_fn = make_raw_paper_fn(paper_id)
return paper
diff --git a/scraper/util.py b/scraper/util.py
index fdbc0534..830dbe8b 100644
--- a/scraper/util.py
+++ b/scraper/util.py
@@ -386,10 +386,10 @@ def parallelize(func, rows):
with Pool(processes=processCount) as pool:
pool.starmap(func, rows, chunksize)
-def fetch_paper(s2, paper_id):
+def fetch_paper(s2, paper_id, freshen=False):
os.makedirs('./datasets/s2/papers/{}/{}'.format(paper_id[0:2], paper_id), exist_ok=True)
paper_fn = './datasets/s2/papers/{}/{}/paper.json'.format(paper_id[0:2], paper_id)
- if os.path.exists(paper_fn):
+ if os.path.exists(paper_fn) and not freshen:
return read_json(paper_fn)
print(paper_id)
paper = s2.paper(paper_id)
diff --git a/site/content/pages/datasets/brainwash/index.md b/site/content/pages/datasets/brainwash/index.md
index e04251d3..5fe0da4c 100644
--- a/site/content/pages/datasets/brainwash/index.md
+++ b/site/content/pages/datasets/brainwash/index.md
@@ -45,11 +45,11 @@ Since it's publication by Stanford in 2015, the Brainwash dataset has appeared i
{% include 'map.html' %}
-
{% include 'supplementary_header.html' %}
{% include 'citations.html' %}
+{% include 'chart.html' %}
### Additional Information
diff --git a/site/content/pages/datasets/cofw/index.md b/site/content/pages/datasets/cofw/index.md
index 7a668cec..3b1cdb2b 100644
--- a/site/content/pages/datasets/cofw/index.md
+++ b/site/content/pages/datasets/cofw/index.md
@@ -44,6 +44,14 @@ Robust face landmark estimation under occlusion
<https://www.cs.cmu.edu/~peiyunh/topdown/>
+{% include 'map.html' %}
+
+{% include 'supplementary_header.html' %}
+
+{% include 'citations.html' %}
+
+{% include 'chart.html' %}
+
TODO
- replace graphic
diff --git a/site/content/pages/datasets/lfw/index.md b/site/content/pages/datasets/lfw/index.md
index d7132f97..833c6963 100644
--- a/site/content/pages/datasets/lfw/index.md
+++ b/site/content/pages/datasets/lfw/index.md
@@ -56,6 +56,8 @@ The *Names and Faces* dataset was the first face recognition dataset created ent
{% include 'citations.html' %}
+{% include 'chart.html' %}
+
### Commercial Use
Add a paragraph about how usage extends far beyond academia into research centers for largest companies in the world. And even funnels into CIA funded research in the US and defense industry usage in China.
diff --git a/site/includes/chart.html b/site/includes/chart.html
new file mode 100644
index 00000000..63108df1
--- /dev/null
+++ b/site/includes/chart.html
@@ -0,0 +1,11 @@
+<section>
+ <p>
+ This bar chart presents a ranking of the top countries where citations originated. Mouse over individual columns
+ to see yearly totals. Colors are only assigned to the top 10 overall countries.
+ </p>
+
+ </section>
+
+<section class="applet_container">
+ <div class="applet" data-payload="{&quot;command&quot;: &quot;chart&quot;}"></div>
+</section>
diff --git a/site/includes/citations.html b/site/includes/citations.html
index ed54b9b1..a37cc43a 100644
--- a/site/includes/citations.html
+++ b/site/includes/citations.html
@@ -1,6 +1,12 @@
<section class="applet_container">
<h3>Citations</h3>
- <p>Add graph showing distribution by country. Add information about how the citations were generated. Add button/link to download CSV</p>
+ <p>
+ Citations were collected from <a href="https://www.semanticscholar.org">Semantic Scholar</a>, a website which aggregates
+ and indexes research papers. Metadata was extracted from these papers, including extracting names of institutions automatically from PDFs, and then the addresses were geocoded. Data is not yet manually verified, and reflects anytime the paper was cited. Some papers may only mention the dataset in passing, while others use it as part of their research methodology.
+ </p>
+ <p>
+ Add button/link to download CSV
+ </p>
<div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div>
</section> \ No newline at end of file
diff --git a/site/public/datasets/brainwash/index.html b/site/public/datasets/brainwash/index.html
index 33a10dde..b52cbca3 100644
--- a/site/public/datasets/brainwash/index.html
+++ b/site/public/datasets/brainwash/index.html
@@ -32,7 +32,7 @@
<p><em>Brainwash</em> is a face detection dataset created from the Brainwash Cafe's livecam footage including 11,918 images of "everyday life of a busy downtown cafe<a class="footnote_shim" name="[^readme]_1"> </a><a href="#[^readme]" class="footnote" title="Footnote 1">1</a>". The images are used to develop face detection algorithms for the "challenging task of detecting people in crowded scenes" and tracking them.</p>
<p>Before closing in 2017, Brainwash Cafe was a "cafe and laundromat" located in San Francisco's SoMA district. The cafe published a publicy available livestream from the cafe with a view of the cash register, performance stage, and seating area.</p>
<p>Since it's publication by Stanford in 2015, the Brainwash dataset has appeared in several notable research papers. In September 2016 four researchers from the National University of Defense Technology in Changsha, China used the Brainwash dataset for a research study on "people head detection in crowded scenes", concluding that their algorithm "achieves superior head detection performance on the crowded scenes dataset<a class="footnote_shim" name="[^localized_region_context]_1"> </a><a href="#[^localized_region_context]" class="footnote" title="Footnote 2">2</a>". And again in 2017 three researchers at the National University of Defense Technology used Brainwash for a study on object detection noting "the data set used in our experiment is shown in Table 1, which includes one scene of the brainwash dataset<a class="footnote_shim" name="[^replacement_algorithm]_1"> </a><a href="#[^replacement_algorithm]" class="footnote" title="Footnote 3">3</a>".</p>
-</section><section class='images'><div class='image'><img src='https://nyc3.digitaloceanspaces.com/megapixels/v1/datasets/brainwash/assets/00425000_960.jpg' alt=' An sample image from the Brainwash dataset used for training face and head detection algorithms for surveillance. The datset contains about 12,000 images. License: Open Data Commons Public Domain Dedication (PDDL)'><div class='caption'> An sample image from the Brainwash dataset used for training face and head detection algorithms for surveillance. The datset contains about 12,000 images. License: Open Data Commons Public Domain Dedication (PDDL)</div></div></section><section class='images'><div class='image'><img src='https://nyc3.digitaloceanspaces.com/megapixels/v1/datasets/brainwash/assets/brainwash_montage.jpg' alt=' 49 of the 11,918 images included in the Brainwash dataset. License: Open Data Commons Public Domain Dedication (PDDL)'><div class='caption'> 49 of the 11,918 images included in the Brainwash dataset. License: Open Data Commons Public Domain Dedication (PDDL)</div></div></section><section> <h3>Information Supply Chain</h3><!-- <div class="map-sidebar right-sidebar"> <h3>Legend</h3> <ul> <li><span style="color: #f2f293">&#9632;</span> Industry</li> <li><span style="color: #f30000">&#9632;</span> Academic</li> <li><span style="color: #3264f6">&#9632;</span> Government</li> </ul> </div> --> <p> To understand how and where this dataset has been used, organizations using the dataset are plotted below. The data is generated by collecting all citations for all the original research papers associated with the dataset. The PDFs are then converted to text and the organization names are extracted and geocoded. Because of the automated approach to extracting data, <span style="color:#ff8a72">not all organizations have been confirmed as using the dataset</span>. This visualization is provided to help locate and confirm usage and will be updated as data noise is reduced. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;map&quot;}"></div></section><div class="caption"> <div class="map-legend-item edu">Academic</div> <div class="map-legend-item com">Industry</div> <div class="map-legend-item gov">Government</div> Data is compiled from <a href="https://www.semanticscholar.org">Semantic Scholar</a> and not yet manually verified.</div><section> <div class="hr-wave-holder"> <div class="hr-wave-line hr-wave-line1"></div> <div class="hr-wave-line hr-wave-line2"></div> </div> <h2>Supplementary Information</h2></section><section class="applet_container"> <h3>Citations</h3> <p>Add graph showing distribution by country. Add information about how the citations were generated. Add button/link to download CSV</p> <div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div></section><section><h3>Additional Information</h3>
+</section><section class='images'><div class='image'><img src='https://nyc3.digitaloceanspaces.com/megapixels/v1/datasets/brainwash/assets/00425000_960.jpg' alt=' An sample image from the Brainwash dataset used for training face and head detection algorithms for surveillance. The datset contains about 12,000 images. License: Open Data Commons Public Domain Dedication (PDDL)'><div class='caption'> An sample image from the Brainwash dataset used for training face and head detection algorithms for surveillance. The datset contains about 12,000 images. License: Open Data Commons Public Domain Dedication (PDDL)</div></div></section><section class='images'><div class='image'><img src='https://nyc3.digitaloceanspaces.com/megapixels/v1/datasets/brainwash/assets/brainwash_montage.jpg' alt=' 49 of the 11,918 images included in the Brainwash dataset. License: Open Data Commons Public Domain Dedication (PDDL)'><div class='caption'> 49 of the 11,918 images included in the Brainwash dataset. License: Open Data Commons Public Domain Dedication (PDDL)</div></div></section><section> <h3>Information Supply Chain</h3><!-- <div class="map-sidebar right-sidebar"> <h3>Legend</h3> <ul> <li><span style="color: #f2f293">&#9632;</span> Industry</li> <li><span style="color: #f30000">&#9632;</span> Academic</li> <li><span style="color: #3264f6">&#9632;</span> Government</li> </ul> </div> --> <p> To understand how and where this dataset has been used, organizations using the dataset are plotted below. The data is generated by collecting all citations for all the original research papers associated with the dataset. The PDFs are then converted to text and the organization names are extracted and geocoded. Because of the automated approach to extracting data, <span style="color:#ff8a72">not all organizations have been confirmed as using the dataset</span>. This visualization is provided to help locate and confirm usage and will be updated as data noise is reduced. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;map&quot;}"></div></section><div class="caption"> <div class="map-legend-item edu">Academic</div> <div class="map-legend-item com">Industry</div> <div class="map-legend-item gov">Government</div> Data is compiled from <a href="https://www.semanticscholar.org">Semantic Scholar</a> and not yet manually verified.</div><section> <div class="hr-wave-holder"> <div class="hr-wave-line hr-wave-line1"></div> <div class="hr-wave-line hr-wave-line2"></div> </div> <h2>Supplementary Information</h2></section><section class="applet_container"> <h3>Citations</h3> <p> Citations were collected from <a href="https://www.semanticscholar.org">Semantic Scholar</a>, a website which aggregates and indexes research papers. Metadata was extracted from these papers, including extracting names of institutions automatically from PDFs, and then the addresses were geocoded. Data is not yet manually verified, and reflects anytime the paper was cited. Some papers may only mention the dataset in passing, while others use it as part of their research methodology. </p> <p> Add button/link to download CSV </p> <div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div></section><section> <p> This bar chart presents a ranking of the top countries where citations originated. Mouse over individual columns to see yearly totals. Colors are only assigned to the top 10 overall countries. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;chart&quot;}"></div></section><section><h3>Additional Information</h3>
<ul>
<li>The dataset author spoke about his research at the CVPR conference in 2016 <a href="https://www.youtube.com/watch?v=Nl2fBKxwusQ">https://www.youtube.com/watch?v=Nl2fBKxwusQ</a></li>
</ul>
diff --git a/site/public/datasets/cofw/index.html b/site/public/datasets/cofw/index.html
index 82842955..b4addd20 100644
--- a/site/public/datasets/cofw/index.html
+++ b/site/public/datasets/cofw/index.html
@@ -41,7 +41,7 @@ To increase the number of training images, and since COFW has the exact same la
<blockquote><p>This research is supported by NSF Grant 0954083 and by the Office of the Director of National Intelligence (ODNI), Intelligence Advanced Research Projects Activity (IARPA), via IARPA R&amp;D Contract No. 2014-14071600012.</p>
</blockquote>
<p><a href="https://www.cs.cmu.edu/~peiyunh/topdown/">https://www.cs.cmu.edu/~peiyunh/topdown/</a></p>
-<p>TODO</p>
+</section><section> <h3>Information Supply Chain</h3><!-- <div class="map-sidebar right-sidebar"> <h3>Legend</h3> <ul> <li><span style="color: #f2f293">&#9632;</span> Industry</li> <li><span style="color: #f30000">&#9632;</span> Academic</li> <li><span style="color: #3264f6">&#9632;</span> Government</li> </ul> </div> --> <p> To understand how and where this dataset has been used, organizations using the dataset are plotted below. The data is generated by collecting all citations for all the original research papers associated with the dataset. The PDFs are then converted to text and the organization names are extracted and geocoded. Because of the automated approach to extracting data, <span style="color:#ff8a72">not all organizations have been confirmed as using the dataset</span>. This visualization is provided to help locate and confirm usage and will be updated as data noise is reduced. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;map&quot;}"></div></section><div class="caption"> <div class="map-legend-item edu">Academic</div> <div class="map-legend-item com">Industry</div> <div class="map-legend-item gov">Government</div> Data is compiled from <a href="https://www.semanticscholar.org">Semantic Scholar</a> and not yet manually verified.</div><section> <div class="hr-wave-holder"> <div class="hr-wave-line hr-wave-line1"></div> <div class="hr-wave-line hr-wave-line2"></div> </div> <h2>Supplementary Information</h2></section><section class="applet_container"> <h3>Citations</h3> <p> Citations were collected from <a href="https://www.semanticscholar.org">Semantic Scholar</a>, a website which aggregates and indexes research papers. Metadata was extracted from these papers, including extracting names of institutions automatically from PDFs, and then the addresses were geocoded. Data is not yet manually verified, and reflects anytime the paper was cited. Some papers may only mention the dataset in passing, while others use it as part of their research methodology. </p> <p> Add button/link to download CSV </p> <div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div></section><section> <p> This bar chart presents a ranking of the top countries where citations originated. Mouse over individual columns to see yearly totals. Colors are only assigned to the top 10 overall countries. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;chart&quot;}"></div></section><section><p>TODO</p>
<h2>- replace graphic</h2>
</section>
diff --git a/site/public/datasets/lfw/index.html b/site/public/datasets/lfw/index.html
index f224e345..adad8aea 100644
--- a/site/public/datasets/lfw/index.html
+++ b/site/public/datasets/lfw/index.html
@@ -44,7 +44,7 @@
<p>The <em>Names and Faces</em> dataset was the first face recognition dataset created entire from online photos. However, <em>Names and Faces</em> and <em>LFW</em> are not the first face recognition dataset created entirely "in the wild". That title belongs to the <a href="/datasets/ucd_faces/">UCD dataset</a>. Images obtained "in the wild" means using an image without explicit consent or awareness from the subject or photographer.</p>
</section><section class='images'><div class='image'><img src='https://nyc3.digitaloceanspaces.com/megapixels/v1/datasets/lfw/assets/lfw_montage_all_crop.jpg' alt='All 5,379 people in the Labeled Faces in The Wild Dataset. Showing one face per person'><div class='caption'>All 5,379 people in the Labeled Faces in The Wild Dataset. Showing one face per person</div></div></section><section><p>The <em>Names and Faces</em> dataset was the first face recognition dataset created entire from online photos. However, <em>Names and Faces</em> and <em>LFW</em> are not the first face recognition dataset created entirely "in the wild". That title belongs to the <a href="/datasets/ucd_faces/">UCD dataset</a>. Images obtained "in the wild" means using an image without explicit consent or awareness from the subject or photographer.</p>
<p>The <em>Names and Faces</em> dataset was the first face recognition dataset created entire from online photos. However, <em>Names and Faces</em> and <em>LFW</em> are not the first face recognition dataset created entirely "in the wild". That title belongs to the <a href="/datasets/ucd_faces/">UCD dataset</a>. Images obtained "in the wild" means using an image without explicit consent or awareness from the subject or photographer.</p>
-</section><section> <h3>Information Supply Chain</h3><!-- <div class="map-sidebar right-sidebar"> <h3>Legend</h3> <ul> <li><span style="color: #f2f293">&#9632;</span> Industry</li> <li><span style="color: #f30000">&#9632;</span> Academic</li> <li><span style="color: #3264f6">&#9632;</span> Government</li> </ul> </div> --> <p> To understand how and where this dataset has been used, organizations using the dataset are plotted below. The data is generated by collecting all citations for all the original research papers associated with the dataset. The PDFs are then converted to text and the organization names are extracted and geocoded. Because of the automated approach to extracting data, <span style="color:#ff8a72">not all organizations have been confirmed as using the dataset</span>. This visualization is provided to help locate and confirm usage and will be updated as data noise is reduced. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;map&quot;}"></div></section><div class="caption"> <div class="map-legend-item edu">Academic</div> <div class="map-legend-item com">Industry</div> <div class="map-legend-item gov">Government</div> Data is compiled from <a href="https://www.semanticscholar.org">Semantic Scholar</a> and not yet manually verified.</div><section> <div class="hr-wave-holder"> <div class="hr-wave-line hr-wave-line1"></div> <div class="hr-wave-line hr-wave-line2"></div> </div> <h2>Supplementary Information</h2></section><section class="applet_container"> <h3>Citations</h3> <p>Add graph showing distribution by country. Add information about how the citations were generated. Add button/link to download CSV</p> <div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div></section><section><h3>Commercial Use</h3>
+</section><section> <h3>Information Supply Chain</h3><!-- <div class="map-sidebar right-sidebar"> <h3>Legend</h3> <ul> <li><span style="color: #f2f293">&#9632;</span> Industry</li> <li><span style="color: #f30000">&#9632;</span> Academic</li> <li><span style="color: #3264f6">&#9632;</span> Government</li> </ul> </div> --> <p> To understand how and where this dataset has been used, organizations using the dataset are plotted below. The data is generated by collecting all citations for all the original research papers associated with the dataset. The PDFs are then converted to text and the organization names are extracted and geocoded. Because of the automated approach to extracting data, <span style="color:#ff8a72">not all organizations have been confirmed as using the dataset</span>. This visualization is provided to help locate and confirm usage and will be updated as data noise is reduced. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;map&quot;}"></div></section><div class="caption"> <div class="map-legend-item edu">Academic</div> <div class="map-legend-item com">Industry</div> <div class="map-legend-item gov">Government</div> Data is compiled from <a href="https://www.semanticscholar.org">Semantic Scholar</a> and not yet manually verified.</div><section> <div class="hr-wave-holder"> <div class="hr-wave-line hr-wave-line1"></div> <div class="hr-wave-line hr-wave-line2"></div> </div> <h2>Supplementary Information</h2></section><section class="applet_container"> <h3>Citations</h3> <p> Citations were collected from <a href="https://www.semanticscholar.org">Semantic Scholar</a>, a website which aggregates and indexes research papers. Metadata was extracted from these papers, including extracting names of institutions automatically from PDFs, and then the addresses were geocoded. Data is not yet manually verified, and reflects anytime the paper was cited. Some papers may only mention the dataset in passing, while others use it as part of their research methodology. </p> <p> Add button/link to download CSV </p> <div class="applet" data-payload="{&quot;command&quot;: &quot;citations&quot;}"></div></section><section> <p> This bar chart presents a ranking of the top countries where citations originated. Mouse over individual columns to see yearly totals. Colors are only assigned to the top 10 overall countries. </p> </section><section class="applet_container"> <div class="applet" data-payload="{&quot;command&quot;: &quot;chart&quot;}"></div></section><section><h3>Commercial Use</h3>
<p>Add a paragraph about how usage extends far beyond academia into research centers for largest companies in the world. And even funnels into CIA funded research in the US and defense industry usage in China.</p>
</section><section class='applet_container'><div class='applet' data-payload='{"command": "load_file assets/lfw_commercial_use.csv", "fields": ["name_display, company_url, example_url, country, description"]}'></div></section><section><p>Research, text, and graphics ©Adam Harvey / megapixels.cc</p>
</section><section><ul class="footnotes"><li><a name="[^lfw_www]" class="footnote_shim"></a><span class="backlinks"><a href="#[^lfw_www]_1">a</a><a href="#[^lfw_www]_2">b</a></span><p><a href="http://vis-www.cs.umass.edu/lfw/results.html">http://vis-www.cs.umass.edu/lfw/results.html</a></p>