├── .nvmrc ├── .gitignore ├── dist ├── logo.png ├── index.html └── index.css ├── screenshot.gif ├── static ├── images │ └── logo.png ├── html │ └── index.html └── scss │ └── index.scss ├── src ├── Plot.purs ├── Main.purs ├── Plot.js ├── Utils.purs ├── Matrix.purs ├── LinearRegression.purs └── UI.purs ├── README.md ├── bower.json ├── package.json ├── LICENSE └── yarn.lock /.nvmrc: -------------------------------------------------------------------------------- 1 | v5.5.0 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bower_components/ 2 | /node_modules/ 3 | /.pulp-cache/ 4 | /output/ 5 | /.psc* 6 | /.psa* 7 | -------------------------------------------------------------------------------- /dist/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lettier/interactive-simple-linear-regression/HEAD/dist/logo.png -------------------------------------------------------------------------------- /screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lettier/interactive-simple-linear-regression/HEAD/screenshot.gif -------------------------------------------------------------------------------- /static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lettier/interactive-simple-linear-regression/HEAD/static/images/logo.png -------------------------------------------------------------------------------- /src/Plot.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module Plot where 7 | 8 | import Prelude 9 | import Control.Monad.Aff (Aff) 10 | 11 | foreign import data PLOT :: ! 12 | 13 | foreign import makePlot :: forall aff. PlotData -> Aff (plot :: PLOT | aff) Unit 14 | 15 | type PlotData = { scatter :: Array { x :: Number, y :: Number }, line :: Array { x :: Number, y :: Number } } 16 | 17 | emptyPlotData :: PlotData 18 | emptyPlotData = { scatter: [], line: [] } 19 | -------------------------------------------------------------------------------- /src/Main.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module Main where 7 | 8 | import Prelude 9 | 10 | import Data.Maybe (fromMaybe) 11 | 12 | import Control.Monad.Eff (Eff) 13 | 14 | import Halogen as H 15 | import Halogen.Util (awaitBody, runHalogenAff, selectElement) 16 | 17 | import Plot (emptyPlotData, makePlot) 18 | 19 | import UI (Effects, ui, initialState) 20 | 21 | main :: Eff (Effects ()) Unit 22 | main = runHalogenAff do 23 | body <- awaitBody 24 | uiContainer <- selectElement "#uiContainer" 25 | H.runUI ui initialState (fromMaybe body uiContainer) 26 | makePlot emptyPlotData 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Interactive Simple Linear Regression](screenshot.gif) 2 | 3 | # Interactive Simple Linear Regression 4 | 5 | Input 2D data points and fit a simple linear regression model using gradient descent. 6 | Built with [PureScript](http://www.purescript.org/). 7 | Playable at [lettier.com/simple-linear-regression/](http://www.lettier.com/simple-linear-regression/). 8 | 9 | ## Documentation 10 | 11 | For a full write up, visit 12 | [Let's make a Linear Regression Calculator with PureScript](https://lettier.github.io/posts/2017-01-15-linear-regression-and-the-amazing-beard.html). 13 | 14 | 15 | ## Get Started 16 | 17 | ```bash 18 | git clone git@github.com:lettier/interactive-simple-linear-regression.git 19 | cd interactive-simple-linear-regression 20 | # Install nvm, npm, and yarn. 21 | nvm use 22 | yarn run installPackages 23 | yarn run buildDist 24 | xdg-open dist/index.html 25 | ``` 26 | 27 | (C) 2017 David Lettier 28 | http://www.lettier.com/ 29 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple-linear-regression" 3 | , "description": "Simple linear regression calculator." 4 | , "homepage": "http://lettier.com/simple-linear-regression/" 5 | , "license": "Apache-2.0" 6 | , "authors": ["David Lettier"] 7 | , "private": true 8 | , "ignore": [ 9 | "**/.*" 10 | , "node_modules" 11 | , "bower_components" 12 | , "output" 13 | ] 14 | , "dependencies": { 15 | "chart.js": "2.4.0" 16 | , "purescript-prelude": "^2.1.0" 17 | , "purescript-console": "^2.0.0" 18 | , "purescript-foldable-traversable": "2.0.0" 19 | , "purescript-arrays": "3.1.0" 20 | , "purescript-math": "2.0.0" 21 | , "purescript-integers": "2.1.0" 22 | , "purescript-random": "2.0.0" 23 | , "purescript-maybe": "2.0.1" 24 | , "purescript-globals": "2.0.0" 25 | , "purescript-halogen": "*" 26 | } 27 | , "devDependencies": { 28 | "purescript-psci-support": "^2.0.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple-linear-regression" 3 | , "description": "Simple linear regression calculator." 4 | , "homepage": "http://lettier.com/simple-linear-regression/" 5 | , "license": "Apache-2.0" 6 | , "author": "David Lettier" 7 | , "private": true 8 | , "scripts": { 9 | "installPackages": "yarn && bower install" 10 | , "buildSrc": "pulp build" 11 | , "buildDist": "mkdir -p dist && pulp browserify --to dist/app.js && node-sass static/scss/index.scss dist/index.css && cp -R static/images/. dist/ && cp -R static/html/. dist/" 12 | , "watchBuildDist": "onchange './static/**/*' './src/**/*' -i -- yarn buildDist" 13 | } 14 | , "dependencies": { 15 | "virtual-dom": "^2.1.1" 16 | , "chartjs-color": "^2.0.0" 17 | , "moment": "^2.10.6" 18 | }, 19 | "devDependencies": { 20 | "pulp": "^10.0.0" 21 | , "purescript": "^0.10.2" 22 | , "node-sass": "4.3.0" 23 | , "onchange": "^3.2.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Simple Linear Regression | Lettier.com 6 | 7 | 8 | 9 |
10 |
11 |

Simple Linear Regression

12 | Add points by pressing . 13 |
14 | 15 | Remove points by pressing 16 | or 17 | . 18 |
19 | Find the y-intercept and the slope by pressing . 20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 |
28 |
29 | 30 | 31 | 32 |
33 |
34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /static/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Simple Linear Regression | Lettier.com 6 | 7 | 8 | 9 |
10 |
11 |

Simple Linear Regression

12 | Add points by pressing . 13 |
14 | 15 | Remove points by pressing 16 | or 17 | . 18 |
19 | Find the y-intercept and the slope by pressing . 20 |
21 |
22 |
23 | 24 |
25 |
26 |
27 |
28 |
29 | 30 | 31 | 32 |
33 |
34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /dist/index.css: -------------------------------------------------------------------------------- 1 | /* 2 | (C) 2017 David Lettier 3 | lettier.com 4 | */ 5 | body { 6 | font-family: sans-serif; 7 | margin-top: 25px; 8 | margin-left: 25px; 9 | background-color: #343438; 10 | color: white; 11 | height: 100%; 12 | line-height: 2; } 13 | 14 | input { 15 | margin-right: 4px; 16 | outline: none; 17 | border: none; 18 | border-radius: 1px; 19 | padding: 2px; 20 | font-size: 20px; 21 | width: 210px; 22 | background-color: whitesmoke; 23 | color: #222; } 24 | 25 | li { 26 | list-style: none; 27 | margin-top: 3px; } 28 | 29 | button { 30 | background-color: #6f6cb9; 31 | color: white; 32 | font-weight: bold; 33 | margin: 2px; 34 | border-style: none; 35 | border-radius: 1px; 36 | outline: none; 37 | font-size: 20px; 38 | cursor: pointer; 39 | -webkit-box-shadow: 0px 3px 3px 0px #190d25; 40 | -moz-box-shadow: 0px 3px 3px 0px #190d25; 41 | box-shadow: 0px 3px 3px 0px #190d25; } 42 | 43 | #pageContainer { 44 | height: 100%; } 45 | 46 | #chartContainer { 47 | margin-right: 10px; } 48 | 49 | #instructionsContainer { 50 | margin-bottom: 20px; } 51 | 52 | #uiContainer { 53 | margin-left: 10px; } 54 | 55 | #logoContainer { 56 | position: absolute; 57 | bottom: 0px; 58 | right: 0px; 59 | clear: both; } 60 | 61 | #logo { 62 | width: 250px; 63 | height: 250px; } 64 | @media (max-width: 1440px) { 65 | #logo { 66 | width: 200px; 67 | height: 200px; } } 68 | @media (max-width: 1024px) { 69 | #logo { 70 | width: 150px; 71 | height: 150px; } } 72 | @media (max-width: 768px) { 73 | #logo { 74 | width: 100px; 75 | height: 100px; } } 76 | 77 | .runButton { 78 | background-color: #00c17c; } 79 | 80 | .removeButton { 81 | background-color: #f52f57; } 82 | 83 | .randomPointsButton { 84 | background-color: #4d98c5; } 85 | 86 | .defaultCursor { 87 | cursor: default; } 88 | 89 | .row { 90 | display: flex; 91 | flex-direction: row; } 92 | -------------------------------------------------------------------------------- /src/Plot.js: -------------------------------------------------------------------------------- 1 | /* global exports */ 2 | 3 | /* 4 | (C) 2017 David Lettier 5 | lettier.com 6 | */ 7 | 8 | "use strict"; 9 | 10 | var Chart = require('../../bower_components/chart.js'); 11 | 12 | exports.makePlot = (function () { 13 | var ctx = document.getElementById("pointChart"); 14 | var plot = new Chart( 15 | ctx 16 | , { 17 | type: 'bar' 18 | , data: { 19 | datasets: [ 20 | { 21 | label: '' 22 | , type: 'scatter' 23 | , data: [] 24 | , pointBorderColor: '#87FFBF' 25 | , pointBackgroundColor: '#87FFBF' 26 | , pointRadius: 7 27 | , showLine: false 28 | }, 29 | { 30 | label: '' 31 | , type: 'line' 32 | , data: [] 33 | , fill: false 34 | , borderColor: '#DC84F4' 35 | , borderWidth: 5 36 | , pointRadius: 0 37 | , showLine: true 38 | } 39 | ] 40 | } 41 | , options: { 42 | responsive: false 43 | , legend: { 44 | display: false 45 | } 46 | , scales: { 47 | xAxes: [ 48 | { 49 | type: 'linear' 50 | , position: 'bottom' 51 | , gridLines: { 52 | color: '#aaa' 53 | , zeroLineColor: '#aaa' 54 | } 55 | , ticks: { 56 | fontColor: '#aaa' 57 | } 58 | } 59 | ] 60 | , yAxes: [ 61 | { 62 | gridLines: { 63 | color: '#aaa' 64 | , zeroLineColor: '#aaa' 65 | } 66 | , ticks: { 67 | fontColor: '#aaa' 68 | } 69 | } 70 | ] 71 | } 72 | } 73 | } 74 | ); 75 | return function (data) { 76 | plot.data.datasets[0].data = data.scatter || []; 77 | plot.data.datasets[1].data = data.line || []; 78 | plot.update(); 79 | }; 80 | }()); 81 | -------------------------------------------------------------------------------- /src/Utils.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module Utils where 7 | 8 | import Prelude 9 | 10 | import Global (readFloat, isNaN, isFinite) 11 | 12 | import Data.Generic (gShow) 13 | import Data.Array (length, head) 14 | import Data.Maybe (Maybe(..), fromMaybe, isNothing) 15 | import Data.Foldable (foldl) 16 | import Data.Int (toNumber) 17 | 18 | firstOrSecondValues :: (Array Number -> Maybe Number) -> Array (Array Number) -> Array Number 19 | firstOrSecondValues f [] = [] 20 | firstOrSecondValues f es = foldl innerFold [] (map f es) 21 | where 22 | innerFold acc (Just e) = acc <> [e] 23 | innerFold acc Nothing = acc 24 | 25 | first :: Array Number -> Maybe Number 26 | first [x, y] = Just x 27 | first _ = Nothing 28 | 29 | second :: Array Number -> Maybe Number 30 | second [x, y] = Just y 31 | second _ = Nothing 32 | 33 | lengthNum :: forall a. Array a -> Number 34 | lengthNum [] = 0.0 35 | lengthNum xs = (toNumber <<< length) xs 36 | 37 | arrayNumberHandler :: (Number -> Number -> Number) -> Array Number -> Number 38 | arrayNumberHandler f [x, y] = f x y 39 | arrayNumberHandler _ _ = 0.0 40 | 41 | stringToMaybeNumber :: String -> Maybe Number 42 | stringToMaybeNumber s = maybeNumber 43 | where 44 | float :: Number 45 | float = readFloat s 46 | maybeNumber :: Maybe Number 47 | maybeNumber = if isNaN float then Nothing else Just float 48 | 49 | maybeNumberToString :: Maybe Number -> String 50 | maybeNumberToString Nothing = "" 51 | maybeNumberToString (Just a) = gShow a 52 | 53 | isInfinity :: Number -> Boolean 54 | isInfinity = not <<< isFinite 55 | 56 | arrayMinOrMax :: forall a. (Ord a) => (a -> a -> a) -> a -> Array a -> a 57 | arrayMinOrMax _ default [] = default 58 | arrayMinOrMax f _ [h] = h 59 | arrayMinOrMax f default values = foldl (\ acc value -> f acc value) (fromMaybe default (head values)) values 60 | 61 | numberInvalid :: Number -> Boolean 62 | numberInvalid n = isNaN n || isInfinity n 63 | 64 | containsNothing :: forall a. Array (Maybe a) -> Boolean 65 | containsNothing xs = foldl (\ acc x -> acc || isNothing x) false xs 66 | -------------------------------------------------------------------------------- /static/scss/index.scss: -------------------------------------------------------------------------------- 1 | /* 2 | (C) 2017 David Lettier 3 | lettier.com 4 | */ 5 | 6 | $laptopLWidth: 1440px; 7 | $laptopWidth: 1024px; 8 | $tabletWidth: 768px; 9 | 10 | $color1: rgba(51, 55, 69, 1); 11 | $color2: rgba(245, 47, 87, 1); 12 | $color3: rgba(76, 75, 99, 1); 13 | $color4: rgba(175, 190, 209, 1); 14 | $color5: rgba(237, 237, 244, 1); 15 | 16 | @mixin laptopL { 17 | @media (max-width: #{$laptopLWidth}) { 18 | @content; 19 | } 20 | } 21 | 22 | @mixin laptop { 23 | @media (max-width: #{$laptopWidth}) { 24 | @content; 25 | } 26 | } 27 | 28 | @mixin tablet { 29 | @media (max-width: #{$tabletWidth}) { 30 | @content; 31 | } 32 | } 33 | 34 | 35 | body { 36 | font-family: sans-serif; 37 | margin-top: 25px; 38 | margin-left: 25px; 39 | background-color: #343438; 40 | color: white; 41 | height: 100%; 42 | line-height: 2; 43 | } 44 | input { 45 | margin-right: 4px; 46 | outline: none; 47 | border: none; 48 | border-radius: 1px; 49 | padding: 2px; 50 | font-size: 20px; 51 | width: 210px; 52 | background-color: whitesmoke; 53 | color: #222; 54 | } 55 | li { 56 | list-style: none; 57 | margin-top: 3px; 58 | } 59 | button { 60 | background-color: #6f6cb9; 61 | color: white; 62 | font-weight: bold; 63 | margin: 2px; 64 | border-style: none; 65 | border-radius: 1px; 66 | outline: none; 67 | font-size: 20px; 68 | cursor: pointer; 69 | -webkit-box-shadow: 0px 3px 3px 0px #190d25; 70 | -moz-box-shadow: 0px 3px 3px 0px #190d25; 71 | box-shadow: 0px 3px 3px 0px #190d25; 72 | } 73 | #pageContainer { 74 | height: 100%; 75 | } 76 | #chartContainer { 77 | margin-right: 10px; 78 | } 79 | #instructionsContainer { 80 | margin-bottom: 20px; 81 | } 82 | #uiContainer { 83 | margin-left: 10px; 84 | } 85 | #logoContainer { 86 | position: absolute; 87 | bottom: 0px; 88 | right: 0px; 89 | clear: both; 90 | } 91 | #logo { 92 | width: 250px; 93 | height: 250px; 94 | @include laptopL { 95 | width: 200px; 96 | height: 200px; 97 | } 98 | @include laptop { 99 | width: 150px; 100 | height: 150px; 101 | } 102 | @include tablet { 103 | width: 100px; 104 | height: 100px; 105 | } 106 | } 107 | .runButton { 108 | background-color: #00c17c; 109 | } 110 | .removeButton { 111 | background-color: #f52f57; 112 | } 113 | .randomPointsButton { 114 | background-color: #4d98c5; 115 | } 116 | .defaultCursor { 117 | cursor: default; 118 | } 119 | .row { 120 | display: flex; 121 | flex-direction: row; 122 | } 123 | -------------------------------------------------------------------------------- /src/Matrix.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module Matrix where 7 | 8 | import Prelude 9 | 10 | import Data.Ord (abs) 11 | import Data.Foldable (foldl, sum) 12 | import Data.Tuple (Tuple(..), fst, snd) 13 | import Data.Array (head, length, null, range, slice, tail, updateAt, zip, (!!)) 14 | import Data.Either (Either(..)) 15 | import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isNothing) 16 | 17 | type Vector = Array Number 18 | type Matrix = Array Vector 19 | 20 | invertMatrix :: Matrix -> Tuple (Either String Matrix) Matrix 21 | invertMatrix matrix 22 | | null matrix = Tuple (Left "Empty matrix") (identityMatrix (length matrix)) 23 | | not $ isSquareMatrix matrix = Tuple (Left "Not a square matrix") (identityMatrix (length matrix)) 24 | | containsZeroRowOrCol matrix = Tuple (Left "Contains zero row or column") (identityMatrix (length matrix)) 25 | | otherwise = result 26 | where 27 | matrixSize = length matrix 28 | identity = identityMatrix matrixSize 29 | result :: Tuple (Either String Matrix) Matrix 30 | result = foldl folder (Tuple (Right matrix) identity) (matrixToRange matrix) 31 | folder :: Tuple (Either String Matrix) Matrix -> Int -> Tuple (Either String Matrix) Matrix 32 | folder t@(Tuple acc@(Left _) _) _ = t 33 | folder t@(Tuple acc@(Right a) b) diagonal = 34 | if containsZeroRowOrCol a || null a || isNothing maybeDivisorA || divisorA == 0.0 35 | then (Tuple (Left "Cannot invert") b) 36 | else (Tuple (Right clearedA) clearedB) 37 | where 38 | swapped = swapWithValidRow (Tuple a b) diagonal 39 | swappedA = fst swapped 40 | swappedB = snd swapped 41 | divisorRowA = fromMaybe [] (swappedA !! diagonal) 42 | maybeDivisorA = divisorRowA !! diagonal 43 | divisorA = fromMaybe defaultMatrixValue maybeDivisorA 44 | multiplierA = 1.0 / divisorA 45 | multipliedA = multiplyRow swappedA diagonal multiplierA 46 | multipliedB = multiplyRow swappedB diagonal multiplierA 47 | cleared = clearColumnExceptPivot (Tuple multipliedA multipliedB) (Tuple diagonal diagonal) 48 | clearedA = fst cleared 49 | clearedB = snd cleared 50 | 51 | multiplyMatrices :: Matrix -> Matrix -> Maybe Matrix 52 | multiplyMatrices _ [] = Nothing 53 | multiplyMatrices [] _ = Nothing 54 | multiplyMatrices aMat bMat = if aMatColNum /= bMatRowNum then Nothing else Just cMat 55 | where 56 | aMatColNum :: Int 57 | aMatColNum = foldl (\ acc r -> length r) 0 aMat 58 | bMatRowNum :: Int 59 | bMatRowNum = length bMat 60 | tBMat :: Matrix 61 | tBMat = transpose bMat 62 | cMat :: Matrix 63 | cMat = map (\ r -> 64 | map (\ c -> 65 | sum $ map (\ (Tuple a b) -> 66 | a * b 67 | ) (zip r c) 68 | ) tBMat 69 | ) aMat 70 | 71 | defaultMatrix :: Int -> Matrix 72 | defaultMatrix size = buildMatrix size value 73 | where 74 | value _ _ = defaultMatrixValue 75 | 76 | identityMatrix :: Int -> Matrix 77 | identityMatrix size = buildMatrix size value 78 | where 79 | value row col | row == col = 1.0 80 | | otherwise = 0.0 81 | 82 | buildMatrix :: Int -> (Int -> Int -> Number) -> Matrix 83 | buildMatrix 0 _ = [] 84 | buildMatrix size f = map (\ row -> map (\ col -> f row col) matrixRange) matrixRange 85 | where 86 | matrixRange = range 0 (size - 1) 87 | 88 | matrixSizeValid :: Int -> Boolean 89 | matrixSizeValid size = size <= maxMatrixSize && size >= minMatrixSize 90 | 91 | maybeMatrixValue :: Matrix -> Int -> Int -> Maybe Number 92 | maybeMatrixValue matrix row col = case matrix !! row of 93 | Nothing -> Nothing 94 | Just x -> x !! col 95 | 96 | matrixRow :: Matrix -> Int -> Vector 97 | matrixRow matrix i = fromMaybe [] (matrix !! i) 98 | 99 | firstValidRow :: Matrix -> Int -> Int -> Maybe Int 100 | firstValidRow [] _ _ = Nothing 101 | firstValidRow matrix atRowOrBelow inCol = (foldl folder { index: Nothing, value: Nothing} tuples).index 102 | where 103 | matrixLength = length matrix 104 | lastRow = matrixLength - 1 105 | rowRange = range atRowOrBelow lastRow 106 | column = slice atRowOrBelow matrixLength (matrixRow (transpose matrix) inCol) 107 | tuples = zip rowRange column 108 | folder :: { index :: Maybe Int, value :: Maybe Number } -> Tuple Int Number -> { index :: Maybe Int, value :: Maybe Number } 109 | folder { index: Nothing, value: Nothing} (Tuple a b) = { index: (Just a), value: (Just b) } 110 | folder r@{ index: (Just x), value: (Just y)} (Tuple a b) = 111 | if abs y == 1.0 112 | then r 113 | else 114 | if abs b >= abs y || abs b == 1.0 115 | then { index: (Just a), value: (Just b) } 116 | else r 117 | folder _ _ = { index: Nothing, value: Nothing } 118 | 119 | swapWithValidRow :: Tuple Matrix Matrix -> Int -> Tuple Matrix Matrix 120 | swapWithValidRow t@(Tuple a b) diagonal = Tuple a' b' 121 | where 122 | row = firstValidRow a diagonal diagonal 123 | yesSwap = case row of 124 | Nothing -> false 125 | Just r -> r /= diagonal 126 | swapIfYes m = 127 | if yesSwap 128 | then swapRows m diagonal (fromMaybe diagonal row) 129 | else m 130 | a' = swapIfYes a 131 | b' = swapIfYes b 132 | 133 | transpose :: Matrix -> Matrix 134 | transpose [] = [] 135 | transpose matrix = transpose' matrix [] 136 | where 137 | transpose' :: Matrix -> Matrix -> Matrix 138 | transpose' old new = if arrayHasNothing maybeHeads then new else transpose' tails (new <> [heads]) 139 | where 140 | maybeHeads = map head old 141 | maybeTails = map tail old 142 | heads = map (fromMaybe 0.0) maybeHeads 143 | tails = map (fromMaybe []) maybeTails 144 | arrayHasNothing :: forall a. Array (Maybe a) -> Boolean 145 | arrayHasNothing array = case array !! 0 of 146 | Nothing -> true 147 | (Just x) -> isNothing x 148 | 149 | swapRows :: Matrix -> Int -> Int -> Matrix 150 | swapRows [] _ _ = [] 151 | swapRows matrix a b = fromMaybe [] (updateRow b rowA (updateRow a rowB (Just matrix))) 152 | where 153 | rowA :: Maybe Vector 154 | rowA = matrix !! a 155 | rowB :: Maybe Vector 156 | rowB = matrix !! b 157 | updateRow :: Int -> Maybe Vector -> Maybe Matrix -> Maybe Matrix 158 | updateRow i (Just row) (Just matrix') = updateAt i row matrix' 159 | updateRow _ _ _ = Nothing 160 | 161 | multiplyRow :: Matrix -> Int -> Number -> Matrix 162 | multiplyRow [] _ _ = [] 163 | multiplyRow matrix row multiplier = map (\ row' -> 164 | if row == row' 165 | then map (\ value -> value * multiplier) (matrixRow matrix row') 166 | else matrixRow matrix row' 167 | ) (matrixToRange matrix) 168 | 169 | clearValue :: Tuple Matrix Matrix -> Tuple Int Int -> Tuple Int Int -> Tuple Matrix Matrix 170 | clearValue (Tuple aMat bMat) pivot@(Tuple pRow pCol) target@(Tuple tRow tCol) = Tuple aMat' bMat' 171 | where 172 | pivotRowA :: Vector 173 | pivotRowA = matrixRow aMat pRow 174 | targetRowA :: Vector 175 | targetRowA = matrixRow aMat tRow 176 | pivotValueA :: Number 177 | pivotValueA = rowValue pivotRowA pCol 178 | targetValueA :: Number 179 | targetValueA = rowValue targetRowA tCol 180 | aMat' :: Matrix 181 | aMat' = multiplyAndSubtractRows aMat tRow pRow pivotValueA targetValueA 182 | bMat' :: Matrix 183 | bMat' = multiplyAndSubtractRows bMat tRow pRow pivotValueA targetValueA 184 | rowValue :: Vector -> Int -> Number 185 | rowValue row col = fromMaybe defaultMatrixValue (row !! col) 186 | multiplyAndSubtractRows :: Matrix -> Int -> Int -> Number -> Number -> Matrix 187 | multiplyAndSubtractRows 188 | matrix 189 | leftSideRow 190 | rightSideRow 191 | leftMultiplier 192 | rightMultiplier 193 | = map (\ row -> if row == leftSideRow 194 | then leftRowValues' 195 | else matrixRow matrix row 196 | ) (matrixToRange matrix) 197 | where 198 | leftRowValues = matrixRow matrix leftSideRow 199 | rightRowValues = matrixRow matrix rightSideRow 200 | leftRowValues' = map (\ (Tuple l r) -> 201 | leftMultiplier * l - rightMultiplier * r 202 | ) (zip leftRowValues rightRowValues) 203 | 204 | clearColumnExceptPivot :: Tuple Matrix Matrix -> Tuple Int Int -> Tuple Matrix Matrix 205 | clearColumnExceptPivot t@(Tuple aMat bMat) pivot@(Tuple pRow pCol) = t' 206 | where 207 | t' :: Tuple Matrix Matrix 208 | t' = foldl folder t (matrixToRange aMat) 209 | folder :: Tuple Matrix Matrix -> Int -> Tuple Matrix Matrix 210 | folder acc@(Tuple aMat' bMat') row = 211 | if row == pRow 212 | then acc 213 | else clearValue acc pivot (Tuple row pCol) 214 | 215 | containsZeroRowOrCol :: Matrix -> Boolean 216 | containsZeroRowOrCol matrix = containsZeroRow matrix || containsZeroCol matrix 217 | 218 | containsZeroCol :: Matrix -> Boolean 219 | containsZeroCol = containsZeroRow <<< transpose 220 | 221 | containsZeroRow :: Matrix -> Boolean 222 | containsZeroRow = foldl (\ acc row -> acc || foldl (\ acc' value -> acc' && value == 0.0) true row) false 223 | 224 | isSquareMatrix :: Matrix -> Boolean 225 | isSquareMatrix matrix = foldl (\ acc row -> acc && length row == matrixLength) true matrix 226 | where 227 | matrixLength = length matrix 228 | 229 | matrixToRange :: Matrix -> Array Int 230 | matrixToRange [] = [] 231 | matrixToRange matrix = (range 0 (length matrix - 1)) 232 | 233 | maxMatrixSize :: Int 234 | maxMatrixSize = 10 235 | 236 | minMatrixSize :: Int 237 | minMatrixSize = 2 238 | 239 | defaultMatrixValue :: Number 240 | defaultMatrixValue = 0.0 241 | -------------------------------------------------------------------------------- /src/LinearRegression.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module LinearRegression ( 7 | runLinearRegressionWithUnscaled 8 | , calculatePressStatistic 9 | ) where 10 | 11 | import Prelude 12 | 13 | import Math (pow) 14 | 15 | import Data.Ord (abs) 16 | import Data.Maybe (Maybe(..), fromMaybe, isNothing) 17 | import Data.Either (Either(..)) 18 | import Data.Foldable (sum, foldl) 19 | import Data.Array (zip, (!!), range, length) 20 | import Data.Tuple (Tuple(..)) 21 | 22 | import Utils (lengthNum, containsNothing) 23 | 24 | import Matrix (Vector, Matrix, transpose, multiplyMatrices, invertMatrix) 25 | 26 | runLinearRegressionWithUnscaled :: Int -> Number -> Number -> Vector -> Vector -> Matrix -> Vector 27 | runLinearRegressionWithUnscaled 28 | maxIterations 29 | maxCost 30 | learningRate 31 | coefficients 32 | regressands 33 | unscaledDesignMatrix 34 | = if containsNothing unscaledUpdatedCoefficents then [] else map (fromMaybe 0.0) unscaledUpdatedCoefficents 35 | where 36 | transposedUnscaledDesignMatrix = transpose unscaledDesignMatrix 37 | maybeMeans = map mean transposedUnscaledDesignMatrix 38 | maybeStandardDeviations = map (\ (Tuple m v) -> 39 | standardDeviation m v 40 | ) (zip maybeMeans transposedUnscaledDesignMatrix) 41 | scaledTransposedDesignMatrix = scaleTransposedDesignMatrix maybeMeans maybeStandardDeviations transposedUnscaledDesignMatrix 42 | scaledDesignMatrix = transpose scaledTransposedDesignMatrix 43 | scaledUpdatedCoefficents = 44 | runLinearRegressionWithScaled 45 | 0 46 | maxIterations 47 | maxCost 48 | learningRate 49 | coefficients 50 | regressands 51 | scaledDesignMatrix 52 | unscaledUpdatedCoefficents = unscaleCoefficients maybeMeans maybeStandardDeviations scaledUpdatedCoefficents 53 | 54 | runLinearRegressionWithScaled :: Int -> Int -> Number -> Number -> Vector -> Vector -> Matrix -> Vector 55 | runLinearRegressionWithScaled 56 | currentIteration 57 | maxIterations 58 | maxCost 59 | learningRate 60 | coefficients 61 | regressands 62 | scaledDesignMatrix 63 | = 64 | if 65 | currentCalculatedCost <= maxCost || 66 | currentIteration >= maxIterations || 67 | abs (currentCalculatedCost - previousCalculatedCost) == 0.0 68 | then coefficients' 69 | else 70 | runLinearRegressionWithScaled 71 | (currentIteration + 1) 72 | maxIterations 73 | maxCost 74 | learningRate' 75 | coefficients' 76 | regressands 77 | scaledDesignMatrix 78 | where 79 | updatedCoefficients = updateCoefficients learningRate coefficients scaledDesignMatrix regressands 80 | previousCalculatedCost = calculateCost coefficients scaledDesignMatrix regressands 81 | currentCalculatedCost = calculateCost updatedCoefficients scaledDesignMatrix regressands 82 | -- Bold Driver - http://www.willamette.edu/~gorr/classes/cs449/momrate.html 83 | coefficients' = if previousCalculatedCost < currentCalculatedCost then coefficients else updatedCoefficients 84 | learningRate' = 85 | if previousCalculatedCost < currentCalculatedCost 86 | then learningRate - (learningRate * 0.5) 87 | else learningRate + (learningRate * 0.5) 88 | 89 | hypothesis :: Vector -> Vector -> Number 90 | hypothesis coefficients regressors = sum $ map (\ (Tuple c r) -> c * r) tuples 91 | where 92 | tuples = zip coefficients ([1.0] <> regressors) 93 | 94 | calculateCost :: Vector -> Matrix -> Vector -> Number 95 | calculateCost _ _ [] = 0.0 96 | calculateCost coefficients designMatrix regressands = sum errors / size 97 | where 98 | size = lengthNum regressands 99 | regressands' = map (hypothesis coefficients) designMatrix 100 | errors = map (\ (Tuple y' y) -> pow (y' - y) 2.0) (zip regressands' regressands) 101 | 102 | partialDerivative :: Int -> Vector -> Matrix -> Vector -> Number 103 | partialDerivative _ [] _ _ = 0.0 104 | partialDerivative _ _ [] _ = 0.0 105 | partialDerivative _ _ _ [] = 0.0 106 | partialDerivative i coefficients designMatrix regressands = if i < 0 then 0.0 else result 107 | where 108 | size = lengthNum regressands 109 | tuples = zip regressands designMatrix 110 | result = (1.0 / size) * (sum (map mapper tuples)) 111 | mapper :: Tuple Number Vector -> Number 112 | mapper (Tuple _ []) = 0.0 113 | mapper (Tuple y regressors) = ((hypothesis coefficients regressors) - y) * xj 114 | where 115 | xj = if i == 0 then 1.0 else (fromMaybe 0.0 (regressors !! (i - 1))) 116 | 117 | updateCoefficients :: Number -> Vector -> Matrix -> Vector -> Vector 118 | updateCoefficients learningRate coefficients designMatrix regressands = result 119 | where 120 | paritalDerivativeMapper i = partialDerivative i coefficients designMatrix regressands 121 | gradient = map paritalDerivativeMapper (range 0 (length coefficients - 1)) 122 | result = map (\ (Tuple o g) -> o - (learningRate * g)) (zip coefficients gradient) 123 | 124 | scaleTransposedDesignMatrix :: Array (Maybe Number) -> Array (Maybe Number) -> Matrix -> Matrix 125 | scaleTransposedDesignMatrix [] _ _ = [] 126 | scaleTransposedDesignMatrix _ [] _ = [] 127 | scaleTransposedDesignMatrix _ _ [] = [] 128 | scaleTransposedDesignMatrix maybeMeans maybeStandardDeviations transposedDesignMatrix = map scaleVector range' 129 | where 130 | scaleValue' :: Maybe Number -> Maybe Number -> Number -> Number 131 | scaleValue' mm ms e = fromMaybe e (scaleValue mm ms e) 132 | scaleVector :: Int -> Vector 133 | scaleVector i = map (scaleValue' (getMaybeMean i) (getMaybeStandardDeviation i)) (getRow i) 134 | range' :: Array Int 135 | range' = range 0 (length transposedDesignMatrix - 1) 136 | getMaybeMean :: Int -> Maybe Number 137 | getMaybeMean i = fromMaybe Nothing (maybeMeans !! i) 138 | getMaybeStandardDeviation :: Int -> Maybe Number 139 | getMaybeStandardDeviation i = fromMaybe Nothing (maybeStandardDeviations !! i) 140 | getRow :: Int -> Vector 141 | getRow i = fromMaybe [] (transposedDesignMatrix !! i) 142 | 143 | scaleValue :: Maybe Number -> Maybe Number -> Number -> Maybe Number 144 | scaleValue _ (Just 0.0) unscaledValue = Nothing 145 | scaleValue (Just mean') (Just standardDeviation') unscaledValue = Just ((unscaledValue - mean') / standardDeviation') 146 | scaleValue _ _ _ = Nothing 147 | 148 | unscaleCoefficients :: Array (Maybe Number) -> Array (Maybe Number) -> Vector -> Array (Maybe Number) 149 | unscaleCoefficients [] _ _ = [] 150 | unscaleCoefficients _ [] _ = [] 151 | unscaleCoefficients _ _ [] = [] 152 | unscaleCoefficients 153 | maybeMeans 154 | maybeStandardDeviations 155 | coefficients 156 | = 157 | if 158 | length maybeMeans /= length maybeStandardDeviations || 159 | length maybeMeans /= (length coefficients - 1) || 160 | containsNothing maybeMeans || 161 | containsNothing maybeStandardDeviations 162 | then [] 163 | else map (\ i -> extractAndApply i unscale) (range 0 (length coefficients - 1)) 164 | where 165 | maybeMeans' = [Nothing] <> maybeMeans 166 | maybeStandardDeviations' = [Nothing] <> maybeStandardDeviations 167 | extractAndApply :: Int -> (Int -> Number -> Number -> Number -> Maybe Number) -> Maybe Number 168 | extractAndApply index f = 169 | if 170 | index < 0 || 171 | index >= length maybeMeans' || 172 | index >= length maybeStandardDeviations' || 173 | index >= length coefficients 174 | then Nothing 175 | else f index (fromMaybe 0.0 maybeMean) (fromMaybe 0.0 maybeStandardDeviation) coefficient 176 | where 177 | maybeMean :: Maybe Number 178 | maybeMean = fromMaybe Nothing (maybeMeans' !! index) 179 | maybeStandardDeviation :: Maybe Number 180 | maybeStandardDeviation = fromMaybe Nothing (maybeStandardDeviations' !! index) 181 | coefficient :: Number 182 | coefficient = fromMaybe 0.0 (coefficients !! index) 183 | unscale :: Int -> Number -> Number -> Number -> Maybe Number 184 | unscale 0 _ _ coefficient = 185 | if containsNothing summands 186 | then Nothing 187 | else Just (coefficient - summation) 188 | where 189 | summation :: Number 190 | summation = foldl (\ acc x -> acc + (fromMaybe 0.0 x)) 0.0 summands 191 | summands :: Array (Maybe Number) 192 | summands = map (\ i -> 193 | extractAndApply i (\ _ m s c -> 194 | if s == 0.0 then Nothing else Just (c * (m / s)) 195 | ) 196 | ) (range 1 (length coefficients - 1)) 197 | unscale _ _ 0.0 _ = Nothing 198 | unscale index _ std coefficient = if index < 0 then Nothing else Just (coefficient / std) 199 | 200 | calculatePressStatistic :: Vector -> Vector -> Matrix -> Maybe Number 201 | calculatePressStatistic [] _ _ = Nothing 202 | calculatePressStatistic _ [] _ = Nothing 203 | calculatePressStatistic _ _ [] = Nothing 204 | calculatePressStatistic regressands coefficients designMatrix = maybeSummation 205 | where 206 | predictions :: Vector 207 | predictions = map (\ regressors -> hypothesis coefficients regressors) designMatrix 208 | residuals :: Vector 209 | residuals = map (\ (Tuple y y') -> y - y') (zip regressands predictions) 210 | hatMatrix :: Matrix 211 | hatMatrix = fromMaybe [] (calculateHatMatrix designMatrix) 212 | folder :: Maybe Number -> Int -> Maybe Number 213 | folder Nothing _ = Nothing 214 | folder (Just acc) i = 215 | if 216 | isNothing maybeResidual || 217 | isNothing maybeTerm || 218 | 1.0 - term == 0.0 219 | then Nothing 220 | else Just (acc + (pow (residual / (1.0 - term)) 2.0)) 221 | where 222 | maybeResidual :: Maybe Number 223 | maybeResidual = residuals !! i 224 | residual :: Number 225 | residual = fromMaybe 0.0 maybeResidual 226 | row :: Vector 227 | row = fromMaybe [] (hatMatrix !! i) 228 | maybeTerm :: Maybe Number 229 | maybeTerm = row !! i 230 | term :: Number 231 | term = fromMaybe 0.0 maybeTerm 232 | maybeSummation :: Maybe Number 233 | maybeSummation = foldl folder (Just 0.0) (range 0 (length regressands - 1)) 234 | 235 | calculateHatMatrix :: Matrix -> Maybe Matrix 236 | calculateHatMatrix [] = Nothing 237 | calculateHatMatrix designMatrix = xxTxIxT 238 | where 239 | xT :: Matrix 240 | xT = transpose designMatrix 241 | xTx :: Matrix 242 | xTx = fromMaybe [] (multiplyMatrices xT designMatrix) 243 | xTxI :: Matrix 244 | xTxI = 245 | case invertMatrix xTx of 246 | (Tuple (Right i) m) -> m 247 | _ -> [] 248 | xxTxI :: Matrix 249 | xxTxI = fromMaybe [] (multiplyMatrices designMatrix xTxI) 250 | xxTxIxT :: Maybe Matrix 251 | xxTxIxT = multiplyMatrices xxTxI xT 252 | 253 | standardDeviation :: Maybe Number -> Vector -> Maybe Number 254 | standardDeviation _ [] = Nothing 255 | standardDeviation (Just mean') es = Just (pow base 0.5) 256 | where 257 | oneOverLength = 1.0 / lengthNum es 258 | summation = sum $ map (\ e -> pow (e - mean') 2.0) es 259 | base = oneOverLength * summation 260 | standardDeviation _ _ = Nothing 261 | 262 | mean :: Vector -> Maybe Number 263 | mean [] = Nothing 264 | mean es = Just (sum es / lengthNum es) 265 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright 2017 David Lettier 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /src/UI.purs: -------------------------------------------------------------------------------- 1 | {- 2 | (C) 2017 David Lettier 3 | lettier.com 4 | -} 5 | 6 | module UI where 7 | 8 | import Prelude 9 | 10 | import Data.Generic (gShow) 11 | import Data.Foldable (foldr) 12 | import Data.Array (drop, (:), length, head, last, range, filter) 13 | import Data.List.Lazy (replicateM, (!!)) 14 | import Data.Maybe (Maybe(..), isNothing, fromMaybe, isJust) 15 | 16 | import Control.Monad.Eff.Random (RANDOM, randomRange) 17 | 18 | import Control.Monad.Aff (Aff) 19 | import Control.Monad.Aff.Free (class Affable) 20 | import Control.Monad.Aff.Console (CONSOLE, log) 21 | 22 | import Halogen as H 23 | import Halogen.HTML.Core (className) 24 | import Halogen.HTML.Events.Indexed as HE 25 | import Halogen.HTML.Properties.Indexed as HP 26 | import Halogen.HTML.Indexed as HH 27 | 28 | import LinearRegression ( 29 | runLinearRegressionWithUnscaled 30 | , calculatePressStatistic 31 | ) 32 | 33 | import Plot (PLOT, PlotData, makePlot) 34 | 35 | import Utils (maybeNumberToString, stringToMaybeNumber, arrayMinOrMax) 36 | 37 | type Effects eff = H.HalogenEffects (plot :: PLOT, console :: CONSOLE, random :: RANDOM | eff) 38 | 39 | type Point = { id :: Int, x :: Maybe Number, y :: Maybe Number } 40 | 41 | data Query a = 42 | PushPoint a | 43 | PopPoint a | 44 | RemovePoint Int a | 45 | RandomPoints a | 46 | UpdatePointCoordinate Int String String a | 47 | RunLinearRegression a 48 | 49 | type State = { 50 | nextId :: Int 51 | , points :: Array Point 52 | , yIntercept :: Maybe Number 53 | , slope :: Maybe Number 54 | , pressStatistic :: Maybe Number 55 | , running :: Boolean 56 | } 57 | 58 | ui :: forall eff. H.Component State Query (Aff (Effects eff)) 59 | ui = H.component { render, eval } 60 | where 61 | render :: State -> H.ComponentHTML Query 62 | render state = 63 | HH.div_ [ 64 | HH.div_ [ 65 | HH.div_ [ 66 | HH.b_ [ 67 | HH.text "Status: " 68 | ] 69 | , HH.text 70 | if state.running 71 | then "Running" 72 | else if hasValidPoints state then "Press run" else "Add points" 73 | ] 74 | , HH.div_ [ 75 | HH.b_ [ 76 | HH.text "Y-Intercept: " 77 | ] 78 | , HH.text 79 | if isJust state.yIntercept && hasValidPoints state 80 | then "" <> (maybeNumberToString state.yIntercept) 81 | else "?" 82 | ] 83 | , HH.div_ [ 84 | HH.b_ [ 85 | HH.text "Slope: " 86 | ] 87 | , HH.text 88 | if isJust state.slope && hasValidPoints state 89 | then "" <> (maybeNumberToString state.slope) 90 | else "?" 91 | ] 92 | , HH.div_ [ 93 | HH.b_ [ 94 | HH.text "PRESS Statistic: " 95 | ] 96 | , HH.text 97 | if isJust state.pressStatistic && hasValidPoints state 98 | then "" <> (maybeNumberToString state.pressStatistic) 99 | else "?" 100 | ] 101 | ] 102 | , HH.div_ [ 103 | HH.button [ 104 | HE.onClick (HE.input_ PushPoint) 105 | ] [ 106 | HH.text "Push Point" 107 | ] 108 | , HH.button [ 109 | HE.onClick (HE.input_ PopPoint) 110 | ] [ 111 | HH.text "Pop Point" 112 | ] 113 | , HH.button [ 114 | HE.onClick (HE.input_ RandomPoints) 115 | , HP.class_ (className "randomPointsButton") 116 | ] [ 117 | HH.text "Random Points" 118 | ] 119 | , HH.button [ 120 | HE.onClick (HE.input_ RunLinearRegression) 121 | , HP.class_ (className "runButton") 122 | ] [ 123 | HH.text "Run" 124 | ] 125 | , HH.div_ ( 126 | map (\ point -> 127 | HH.li_ [ 128 | HH.input [ 129 | HP.value (maybeNumberToString point.x) 130 | , HP.placeholder "Input the X Coordinate" 131 | , HE.onValueChange (HE.input (UpdatePointCoordinate point.id "x")) 132 | , HP.disabled state.running 133 | ] 134 | , HH.input [ 135 | HP.value (maybeNumberToString point.y) 136 | , HP.placeholder "Input the Y Coordinate" 137 | , HE.onValueChange (HE.input (UpdatePointCoordinate point.id "y")) 138 | , HP.disabled state.running 139 | ] 140 | , HH.button [ 141 | HE.onClick (HE.input_ (RemovePoint point.id)) 142 | , HP.class_ (className "removeButton") 143 | ] [ 144 | HH.text "X" 145 | ] 146 | ] 147 | ) 148 | state.points 149 | ) 150 | ] 151 | ] 152 | eval :: Query ~> H.ComponentDSL State Query (Aff (Effects eff)) 153 | eval (PushPoint next) = do 154 | H.modify (\ state -> state { 155 | nextId = state.nextId + 1 156 | , points = newPoint state.nextId : state.points 157 | , yIntercept = Nothing 158 | , slope = Nothing 159 | , pressStatistic = Nothing 160 | } 161 | ) 162 | pure next 163 | eval (PopPoint next) = do 164 | H.modify (\ state -> state { 165 | points = drop 1 state.points 166 | , yIntercept = Nothing 167 | , slope = Nothing 168 | , pressStatistic = Nothing 169 | } 170 | ) 171 | currentState <- H.get 172 | _ <- H.fromAff (makePlot (makePlotDataFromState currentState)) 173 | pure next 174 | eval (RemovePoint id next) = do 175 | H.modify (\ state -> state { 176 | points = foldr (\ point acc -> 177 | if point.id == id then acc else point : acc 178 | ) [] state.points 179 | , yIntercept = Nothing 180 | , slope = Nothing 181 | , pressStatistic = Nothing 182 | } 183 | ) 184 | currentState <- H.get 185 | _ <- H.fromAff (makePlot (makePlotDataFromState currentState)) 186 | pure next 187 | eval (RandomPoints next) = do 188 | let numberOfPoints = 10 189 | xs <- H.fromEff (replicateM numberOfPoints (randomRange (-10.0) 10.0)) 190 | ys <- H.fromEff (replicateM numberOfPoints (randomRange (-10.0) 10.0)) 191 | H.modify (\ state -> state { 192 | points = map (\ i -> { 193 | id: i 194 | , x: xs !! i 195 | , y: ys !! i 196 | } 197 | ) (range 0 (numberOfPoints - 1)) 198 | , yIntercept = Nothing 199 | , slope = Nothing 200 | } 201 | ) 202 | currentState <- H.get 203 | _ <- H.fromAff (makePlot (makePlotDataFromState currentState)) 204 | pure next 205 | eval (UpdatePointCoordinate id key value next) = do 206 | H.modify (\ state -> state { 207 | points = foldr (\ point acc -> 208 | (if point.id == id then updatePointCoordinateFromString point key value else point) : acc 209 | ) [] state.points 210 | , yIntercept = Nothing 211 | , slope = Nothing 212 | , pressStatistic = Nothing 213 | } 214 | ) 215 | currentState <- H.get 216 | _ <- H.fromAff (makePlot (makePlotDataFromState currentState)) 217 | pure next 218 | eval (RunLinearRegression next) = do 219 | H.modify (\ state -> 220 | state { 221 | yIntercept = Nothing 222 | , slope = Nothing 223 | , pressStatistic = Nothing 224 | , running = true 225 | } 226 | ) 227 | currentState <- H.get 228 | let linearRegressionData = dataForLinearRegressionFromState currentState 229 | let result = 230 | runLinearRegressionWithUnscaled 231 | linearRegressionData.maxIterations 232 | linearRegressionData.maxCost 233 | linearRegressionData.learningRate 234 | linearRegressionData.coefficients 235 | linearRegressionData.regressands 236 | linearRegressionData.designMatrix 237 | let pressStatistic = 238 | calculatePressStatistic 239 | linearRegressionData.regressands 240 | result 241 | linearRegressionData.designMatrix 242 | log' (gShow result) 243 | H.modify (\ state -> 244 | state { 245 | yIntercept = head result 246 | , slope = last result 247 | , pressStatistic = pressStatistic 248 | , running = false 249 | } 250 | ) 251 | if isJust (head result) && isJust (last result) 252 | then do 253 | currentState' <- H.get 254 | _ <- H.fromAff (makePlot (makePlotDataFromState currentState')) 255 | pure next 256 | else pure next 257 | pure next 258 | 259 | initialState :: State 260 | initialState = { 261 | nextId: 0 262 | , points: [] 263 | , yIntercept: Nothing 264 | , slope: Nothing 265 | , pressStatistic: Nothing 266 | , running: false 267 | } 268 | 269 | newPoint :: Int -> Point 270 | newPoint id = { id: id, x: Nothing, y: Nothing } 271 | 272 | updatePointCoordinateFromString :: Point -> String -> String -> Point 273 | updatePointCoordinateFromString point "x" s = point { x = stringToMaybeNumber s } 274 | updatePointCoordinateFromString point "y" s = point { y = stringToMaybeNumber s } 275 | updatePointCoordinateFromString point _ _ = point 276 | 277 | dataForLinearRegressionFromState :: 278 | State -> 279 | { 280 | maxIterations :: Int 281 | , maxCost :: Number 282 | , learningRate :: Number 283 | , coefficients :: Array Number 284 | , regressands :: Array Number 285 | , designMatrix :: Array (Array Number) 286 | } 287 | dataForLinearRegressionFromState state = { 288 | maxIterations: 10000 289 | , maxCost: 1e-11 290 | , learningRate: 0.05 291 | , coefficients: [1.0, 1.0] 292 | , regressands: map (\ { y: y } -> fromMaybe 0.0 y ) validPoints 293 | , designMatrix: map (\ { x: x } -> [fromMaybe 0.0 x]) validPoints 294 | } 295 | where 296 | validPoints = filter pointIsValid state.points 297 | 298 | coords :: State -> Array (Array Number) 299 | coords { points: [] } = [] 300 | coords { points: points } = foldr (\ point acc -> 301 | if isNothing point.x || isNothing point.y 302 | then acc 303 | else [fromMaybe 0.0 point.x, fromMaybe 0.0 point.y] : acc 304 | ) [] points 305 | 306 | getXValuesFromState :: State -> Array (Number) 307 | getXValuesFromState { points: points } = foldr (\ point acc -> 308 | if isNothing point.x || isNothing point.y 309 | then acc 310 | else fromMaybe 0.0 point.x : acc 311 | ) [] points 312 | 313 | makePlotDataFromState :: State -> PlotData 314 | makePlotDataFromState state@{ 315 | points: points 316 | , yIntercept: (Just yIntercept) 317 | , slope: (Just slope) 318 | } = { 319 | scatter: pointsToScatterData points 320 | , line: if length xValues > 0 321 | then [ 322 | { 323 | x: minX 324 | , y: slope * minX + yIntercept 325 | } 326 | , { 327 | x: maxX 328 | , y: slope * maxX + yIntercept 329 | } 330 | ] 331 | else [] 332 | } 333 | where 334 | xValues = getXValuesFromState state 335 | minX = arrayMinOrMax min 0.0 xValues 336 | maxX = arrayMinOrMax max 0.0 xValues 337 | makePlotDataFromState state@{ 338 | points: points 339 | , yIntercept: Nothing 340 | , slope: Nothing 341 | } = { 342 | scatter: pointsToScatterData points 343 | , line: [] 344 | } 345 | makePlotDataFromState state@{ 346 | points: points 347 | , yIntercept: (Just _) 348 | , slope: Nothing 349 | } = { 350 | scatter: pointsToScatterData points 351 | , line: [] 352 | } 353 | makePlotDataFromState state@{ 354 | points: points 355 | , yIntercept: Nothing 356 | , slope: (Just _) 357 | } = { 358 | scatter: pointsToScatterData points 359 | , line: [] 360 | } 361 | 362 | pointsToScatterData :: Array Point -> Array { x :: Number, y :: Number } 363 | pointsToScatterData [] = [] 364 | pointsToScatterData points = foldr (\ point acc -> 365 | if isNothing point.x || isNothing point.y 366 | then acc 367 | else { x: fromMaybe 0.0 point.x, y: fromMaybe 0.0 point.y } : acc 368 | ) [] points 369 | 370 | hasValidPoints :: State -> Boolean 371 | hasValidPoints { points: [] } = false 372 | hasValidPoints state = (length <<< coords) state > 0 373 | 374 | pointIsValid :: Point -> Boolean 375 | pointIsValid { id: _, x: (Just x), y: (Just y) } = true 376 | pointIsValid _ = false 377 | 378 | log' :: forall a b. Affable (console :: CONSOLE | b) a => String -> a Unit 379 | log' string = H.fromAff $ when debug $ log string 380 | 381 | debug :: Boolean 382 | debug = false 383 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | abbrev@1: 4 | version "1.0.9" 5 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 6 | 7 | acorn@^1.0.3: 8 | version "1.2.2" 9 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014" 10 | 11 | acorn@^2.7.0: 12 | version "2.7.0" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" 14 | 15 | acorn@^3.1.0: 16 | version "3.3.0" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 18 | 19 | ansi-regex@^2.0.0: 20 | version "2.0.0" 21 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" 22 | 23 | ansi-styles@^2.2.1: 24 | version "2.2.1" 25 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 26 | 27 | anymatch@^1.3.0: 28 | version "1.3.0" 29 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 30 | dependencies: 31 | arrify "^1.0.0" 32 | micromatch "^2.1.5" 33 | 34 | aproba@^1.0.3: 35 | version "1.0.4" 36 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" 37 | 38 | archive-type@^3.0.0, archive-type@^3.0.1: 39 | version "3.2.0" 40 | resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-3.2.0.tgz#9cd9c006957ebe95fadad5bd6098942a813737f6" 41 | dependencies: 42 | file-type "^3.1.0" 43 | 44 | are-we-there-yet@~1.1.2: 45 | version "1.1.2" 46 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 47 | dependencies: 48 | delegates "^1.0.0" 49 | readable-stream "^2.0.0 || ^1.1.13" 50 | 51 | arr-diff@^2.0.0: 52 | version "2.0.0" 53 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 54 | dependencies: 55 | arr-flatten "^1.0.1" 56 | 57 | arr-flatten@^1.0.1: 58 | version "1.0.1" 59 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 60 | 61 | array-differ@^1.0.0: 62 | version "1.0.0" 63 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 64 | 65 | array-filter@~0.0.0: 66 | version "0.0.1" 67 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" 68 | 69 | array-find-index@^1.0.1: 70 | version "1.0.2" 71 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 72 | 73 | array-map@~0.0.0: 74 | version "0.0.0" 75 | resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" 76 | 77 | array-reduce@~0.0.0: 78 | version "0.0.0" 79 | resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" 80 | 81 | array-uniq@^1.0.0, array-uniq@^1.0.2: 82 | version "1.0.3" 83 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 84 | 85 | array-unique@^0.2.1: 86 | version "0.2.1" 87 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 88 | 89 | arrify@^1.0.0, arrify@~1.0.1: 90 | version "1.0.1" 91 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 92 | 93 | asn1.js@^4.0.0: 94 | version "4.9.1" 95 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" 96 | dependencies: 97 | bn.js "^4.0.0" 98 | inherits "^2.0.1" 99 | minimalistic-assert "^1.0.0" 100 | 101 | asn1@~0.2.3: 102 | version "0.2.3" 103 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 104 | 105 | assert-plus@^0.2.0: 106 | version "0.2.0" 107 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 108 | 109 | assert-plus@^1.0.0: 110 | version "1.0.0" 111 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 112 | 113 | assert@^1.4.0: 114 | version "1.4.1" 115 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 116 | dependencies: 117 | util "0.10.3" 118 | 119 | astw@^2.0.0: 120 | version "2.0.0" 121 | resolved "https://registry.yarnpkg.com/astw/-/astw-2.0.0.tgz#08121ac8288d35611c0ceec663f6cd545604897d" 122 | dependencies: 123 | acorn "^1.0.3" 124 | 125 | async-each-series@^1.0.0, async-each-series@^1.1.0: 126 | version "1.1.0" 127 | resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-1.1.0.tgz#f42fd8155d38f21a5b8ea07c28e063ed1700b138" 128 | 129 | async-each@^1.0.0: 130 | version "1.0.1" 131 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 132 | 133 | async-foreach@^0.1.3: 134 | version "0.1.3" 135 | resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" 136 | 137 | async@^1.5.2: 138 | version "1.5.2" 139 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 140 | 141 | async@^2.1.2: 142 | version "2.1.4" 143 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" 144 | dependencies: 145 | lodash "^4.14.0" 146 | 147 | asynckit@^0.4.0: 148 | version "0.4.0" 149 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 150 | 151 | aws-sign2@~0.6.0: 152 | version "0.6.0" 153 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 154 | 155 | aws4@^1.2.1: 156 | version "1.5.0" 157 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" 158 | 159 | balanced-match@^0.4.1: 160 | version "0.4.2" 161 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 162 | 163 | base64-js@^1.0.2: 164 | version "1.2.0" 165 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" 166 | 167 | bcrypt-pbkdf@^1.0.0: 168 | version "1.0.0" 169 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" 170 | dependencies: 171 | tweetnacl "^0.14.3" 172 | 173 | beeper@^1.0.0: 174 | version "1.1.1" 175 | resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" 176 | 177 | bin-build@^2.2.0: 178 | version "2.2.0" 179 | resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-2.2.0.tgz#11f8dd61f70ffcfa2bdcaa5b46f5e8fedd4221cc" 180 | dependencies: 181 | archive-type "^3.0.1" 182 | decompress "^3.0.0" 183 | download "^4.1.2" 184 | exec-series "^1.0.0" 185 | rimraf "^2.2.6" 186 | tempfile "^1.0.0" 187 | url-regex "^3.0.0" 188 | 189 | bin-check@^2.0.0: 190 | version "2.0.0" 191 | resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-2.0.0.tgz#86f8e6f4253893df60dc316957f5af02acb05930" 192 | dependencies: 193 | executable "^1.0.0" 194 | 195 | bin-version-check@^2.1.0: 196 | version "2.1.0" 197 | resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-2.1.0.tgz#e4e5df290b9069f7d111324031efc13fdd11a5b0" 198 | dependencies: 199 | bin-version "^1.0.0" 200 | minimist "^1.1.0" 201 | semver "^4.0.3" 202 | semver-truncate "^1.0.0" 203 | 204 | bin-version@^1.0.0: 205 | version "1.0.4" 206 | resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-1.0.4.tgz#9eb498ee6fd76f7ab9a7c160436f89579435d78e" 207 | dependencies: 208 | find-versions "^1.0.0" 209 | 210 | bin-wrapper@^3.0.2: 211 | version "3.0.2" 212 | resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-3.0.2.tgz#67d3306262e4b1a5f2f88ee23464f6a655677aeb" 213 | dependencies: 214 | bin-check "^2.0.0" 215 | bin-version-check "^2.1.0" 216 | download "^4.0.0" 217 | each-async "^1.1.1" 218 | lazy-req "^1.0.0" 219 | os-filter-obj "^1.0.0" 220 | 221 | binary-extensions@^1.0.0: 222 | version "1.8.0" 223 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 224 | 225 | bl@^1.0.0: 226 | version "1.2.0" 227 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.0.tgz#1397e7ec42c5f5dc387470c500e34a9f6be9ea98" 228 | dependencies: 229 | readable-stream "^2.0.5" 230 | 231 | block-stream@*: 232 | version "0.0.9" 233 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 234 | dependencies: 235 | inherits "~2.0.0" 236 | 237 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 238 | version "4.11.6" 239 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" 240 | 241 | boom@2.x.x: 242 | version "2.10.1" 243 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 244 | dependencies: 245 | hoek "2.x.x" 246 | 247 | brace-expansion@^1.0.0: 248 | version "1.1.6" 249 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 250 | dependencies: 251 | balanced-match "^0.4.1" 252 | concat-map "0.0.1" 253 | 254 | braces@^1.8.2: 255 | version "1.8.5" 256 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 257 | dependencies: 258 | expand-range "^1.8.1" 259 | preserve "^0.2.0" 260 | repeat-element "^1.1.2" 261 | 262 | brorand@^1.0.1: 263 | version "1.0.6" 264 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5" 265 | 266 | browser-pack@^6.0.1: 267 | version "6.0.2" 268 | resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531" 269 | dependencies: 270 | combine-source-map "~0.7.1" 271 | defined "^1.0.0" 272 | JSONStream "^1.0.3" 273 | through2 "^2.0.0" 274 | umd "^3.0.0" 275 | 276 | browser-resolve@^1.11.0, browser-resolve@^1.7.0: 277 | version "1.11.2" 278 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" 279 | dependencies: 280 | resolve "1.1.7" 281 | 282 | browser-split@0.0.1: 283 | version "0.0.1" 284 | resolved "https://registry.yarnpkg.com/browser-split/-/browser-split-0.0.1.tgz#7b097574f8e3ead606fb4664e64adfdda2981a93" 285 | 286 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 287 | version "1.0.6" 288 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" 289 | dependencies: 290 | buffer-xor "^1.0.2" 291 | cipher-base "^1.0.0" 292 | create-hash "^1.1.0" 293 | evp_bytestokey "^1.0.0" 294 | inherits "^2.0.1" 295 | 296 | browserify-cache-api@^3.0.0: 297 | version "3.0.1" 298 | resolved "https://registry.yarnpkg.com/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz#96247e853f068fd6e0d45cc73f0bb2cd9778ef02" 299 | dependencies: 300 | async "^1.5.2" 301 | through2 "^2.0.0" 302 | xtend "^4.0.0" 303 | 304 | browserify-cipher@^1.0.0: 305 | version "1.0.0" 306 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 307 | dependencies: 308 | browserify-aes "^1.0.4" 309 | browserify-des "^1.0.0" 310 | evp_bytestokey "^1.0.0" 311 | 312 | browserify-des@^1.0.0: 313 | version "1.0.0" 314 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 315 | dependencies: 316 | cipher-base "^1.0.1" 317 | des.js "^1.0.0" 318 | inherits "^2.0.1" 319 | 320 | browserify-incremental@^3.0.1: 321 | version "3.1.1" 322 | resolved "https://registry.yarnpkg.com/browserify-incremental/-/browserify-incremental-3.1.1.tgz#0713cb7587247a632a9f08cf1bd169b878b62a8a" 323 | dependencies: 324 | browserify-cache-api "^3.0.0" 325 | JSONStream "^0.10.0" 326 | through2 "^2.0.0" 327 | xtend "^4.0.0" 328 | 329 | browserify-rsa@^4.0.0: 330 | version "4.0.1" 331 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 332 | dependencies: 333 | bn.js "^4.1.0" 334 | randombytes "^2.0.1" 335 | 336 | browserify-sign@^4.0.0: 337 | version "4.0.0" 338 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f" 339 | dependencies: 340 | bn.js "^4.1.1" 341 | browserify-rsa "^4.0.0" 342 | create-hash "^1.1.0" 343 | create-hmac "^1.1.2" 344 | elliptic "^6.0.0" 345 | inherits "^2.0.1" 346 | parse-asn1 "^5.0.0" 347 | 348 | browserify-zlib@~0.1.2: 349 | version "0.1.4" 350 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" 351 | dependencies: 352 | pako "~0.2.0" 353 | 354 | browserify@^13.1.0: 355 | version "13.3.0" 356 | resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.3.0.tgz#b5a9c9020243f0c70e4675bec8223bc627e415ce" 357 | dependencies: 358 | assert "^1.4.0" 359 | browser-pack "^6.0.1" 360 | browser-resolve "^1.11.0" 361 | browserify-zlib "~0.1.2" 362 | buffer "^4.1.0" 363 | cached-path-relative "^1.0.0" 364 | concat-stream "~1.5.1" 365 | console-browserify "^1.1.0" 366 | constants-browserify "~1.0.0" 367 | crypto-browserify "^3.0.0" 368 | defined "^1.0.0" 369 | deps-sort "^2.0.0" 370 | domain-browser "~1.1.0" 371 | duplexer2 "~0.1.2" 372 | events "~1.1.0" 373 | glob "^7.1.0" 374 | has "^1.0.0" 375 | htmlescape "^1.1.0" 376 | https-browserify "~0.0.0" 377 | inherits "~2.0.1" 378 | insert-module-globals "^7.0.0" 379 | JSONStream "^1.0.3" 380 | labeled-stream-splicer "^2.0.0" 381 | module-deps "^4.0.8" 382 | os-browserify "~0.1.1" 383 | parents "^1.0.1" 384 | path-browserify "~0.0.0" 385 | process "~0.11.0" 386 | punycode "^1.3.2" 387 | querystring-es3 "~0.2.0" 388 | read-only-stream "^2.0.0" 389 | readable-stream "^2.0.2" 390 | resolve "^1.1.4" 391 | shasum "^1.0.0" 392 | shell-quote "^1.6.1" 393 | stream-browserify "^2.0.0" 394 | stream-http "^2.0.0" 395 | string_decoder "~0.10.0" 396 | subarg "^1.0.0" 397 | syntax-error "^1.1.1" 398 | through2 "^2.0.0" 399 | timers-browserify "^1.0.1" 400 | tty-browserify "~0.0.0" 401 | url "~0.11.0" 402 | util "~0.10.1" 403 | vm-browserify "~0.0.1" 404 | xtend "^4.0.0" 405 | 406 | buffer-crc32@~0.2.3: 407 | version "0.2.13" 408 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 409 | 410 | buffer-shims@^1.0.0: 411 | version "1.0.0" 412 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 413 | 414 | buffer-to-vinyl@^1.0.0: 415 | version "1.1.0" 416 | resolved "https://registry.yarnpkg.com/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz#00f15faee3ab7a1dda2cde6d9121bffdd07b2262" 417 | dependencies: 418 | file-type "^3.1.0" 419 | readable-stream "^2.0.2" 420 | uuid "^2.0.1" 421 | vinyl "^1.0.0" 422 | 423 | buffer-xor@^1.0.2: 424 | version "1.0.3" 425 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 426 | 427 | buffer@^4.1.0: 428 | version "4.9.1" 429 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 430 | dependencies: 431 | base64-js "^1.0.2" 432 | ieee754 "^1.1.4" 433 | isarray "^1.0.0" 434 | 435 | builtin-modules@^1.0.0: 436 | version "1.1.1" 437 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 438 | 439 | builtin-status-codes@^3.0.0: 440 | version "3.0.0" 441 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 442 | 443 | cached-path-relative@^1.0.0: 444 | version "1.0.0" 445 | resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.0.tgz#d1094c577fbd9a8b8bd43c96af6188aa205d05f4" 446 | 447 | camelcase-keys@^2.0.0: 448 | version "2.1.0" 449 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 450 | dependencies: 451 | camelcase "^2.0.0" 452 | map-obj "^1.0.0" 453 | 454 | camelcase@^2.0.0: 455 | version "2.1.1" 456 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 457 | 458 | camelcase@^3.0.0: 459 | version "3.0.0" 460 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 461 | 462 | camelize@^1.0.0: 463 | version "1.0.0" 464 | resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" 465 | 466 | capture-stack-trace@^1.0.0: 467 | version "1.0.0" 468 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 469 | 470 | caseless@~0.11.0: 471 | version "0.11.0" 472 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 473 | 474 | caw@^1.0.1: 475 | version "1.2.0" 476 | resolved "https://registry.yarnpkg.com/caw/-/caw-1.2.0.tgz#ffb226fe7efc547288dc62ee3e97073c212d1034" 477 | dependencies: 478 | get-proxy "^1.0.1" 479 | is-obj "^1.0.0" 480 | object-assign "^3.0.0" 481 | tunnel-agent "^0.4.0" 482 | 483 | chalk@^1.0.0, chalk@^1.1.1: 484 | version "1.1.3" 485 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 486 | dependencies: 487 | ansi-styles "^2.2.1" 488 | escape-string-regexp "^1.0.2" 489 | has-ansi "^2.0.0" 490 | strip-ansi "^3.0.0" 491 | supports-color "^2.0.0" 492 | 493 | chartjs-color-string@^0.4.0: 494 | version "0.4.0" 495 | resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.4.0.tgz#57748d4530ae28d8db0a5492182ba06dfdf2f468" 496 | dependencies: 497 | color-name "^1.0.0" 498 | 499 | chartjs-color@^2.0.0: 500 | version "2.0.0" 501 | resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.0.0.tgz#7f60c7256589b24914814ece757659117381e35b" 502 | dependencies: 503 | chartjs-color-string "^0.4.0" 504 | color-convert "^0.5.3" 505 | 506 | chokidar@^1.4.3, chokidar@~1.6.0: 507 | version "1.6.1" 508 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 509 | dependencies: 510 | anymatch "^1.3.0" 511 | async-each "^1.0.0" 512 | glob-parent "^2.0.0" 513 | inherits "^2.0.1" 514 | is-binary-path "^1.0.0" 515 | is-glob "^2.0.0" 516 | path-is-absolute "^1.0.0" 517 | readdirp "^2.0.0" 518 | optionalDependencies: 519 | fsevents "^1.0.0" 520 | 521 | cipher-base@^1.0.0, cipher-base@^1.0.1: 522 | version "1.0.3" 523 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" 524 | dependencies: 525 | inherits "^2.0.1" 526 | 527 | cliui@^3.2.0: 528 | version "3.2.0" 529 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 530 | dependencies: 531 | string-width "^1.0.1" 532 | strip-ansi "^3.0.1" 533 | wrap-ansi "^2.0.0" 534 | 535 | clone-stats@^0.0.1: 536 | version "0.0.1" 537 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" 538 | 539 | clone@^0.2.0: 540 | version "0.2.0" 541 | resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" 542 | 543 | clone@^1.0.0: 544 | version "1.0.2" 545 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" 546 | 547 | co@3.1.0: 548 | version "3.1.0" 549 | resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" 550 | 551 | code-point-at@^1.0.0: 552 | version "1.1.0" 553 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 554 | 555 | color-convert@^0.5.3: 556 | version "0.5.3" 557 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" 558 | 559 | color-name@^1.0.0: 560 | version "1.1.1" 561 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" 562 | 563 | colors@>=0.6.0: 564 | version "1.1.2" 565 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 566 | 567 | combine-source-map@~0.7.1: 568 | version "0.7.2" 569 | resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e" 570 | dependencies: 571 | convert-source-map "~1.1.0" 572 | inline-source-map "~0.6.0" 573 | lodash.memoize "~3.0.3" 574 | source-map "~0.5.3" 575 | 576 | combined-stream@^1.0.5, combined-stream@~1.0.5: 577 | version "1.0.5" 578 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 579 | dependencies: 580 | delayed-stream "~1.0.0" 581 | 582 | commander@^2.9.0: 583 | version "2.9.0" 584 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 585 | dependencies: 586 | graceful-readlink ">= 1.0.0" 587 | 588 | commander@~2.8.1: 589 | version "2.8.1" 590 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" 591 | dependencies: 592 | graceful-readlink ">= 1.0.0" 593 | 594 | concat-map@0.0.1: 595 | version "0.0.1" 596 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 597 | 598 | concat-stream@^1.4.6, concat-stream@^1.4.7: 599 | version "1.6.0" 600 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 601 | dependencies: 602 | inherits "^2.0.3" 603 | readable-stream "^2.2.2" 604 | typedarray "^0.0.6" 605 | 606 | concat-stream@~1.5.0, concat-stream@~1.5.1: 607 | version "1.5.2" 608 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" 609 | dependencies: 610 | inherits "~2.0.1" 611 | readable-stream "~2.0.0" 612 | typedarray "~0.0.5" 613 | 614 | console-browserify@^1.1.0: 615 | version "1.1.0" 616 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 617 | dependencies: 618 | date-now "^0.1.4" 619 | 620 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 621 | version "1.1.0" 622 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 623 | 624 | console-stream@^0.1.1: 625 | version "0.1.1" 626 | resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" 627 | 628 | constants-browserify@~1.0.0: 629 | version "1.0.0" 630 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 631 | 632 | convert-source-map@^1.1.1: 633 | version "1.3.0" 634 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" 635 | 636 | convert-source-map@~1.1.0: 637 | version "1.1.3" 638 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" 639 | 640 | core-util-is@~1.0.0: 641 | version "1.0.2" 642 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 643 | 644 | create-ecdh@^4.0.0: 645 | version "4.0.0" 646 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 647 | dependencies: 648 | bn.js "^4.1.0" 649 | elliptic "^6.0.0" 650 | 651 | create-error-class@^3.0.1: 652 | version "3.0.2" 653 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 654 | dependencies: 655 | capture-stack-trace "^1.0.0" 656 | 657 | create-hash@^1.1.0, create-hash@^1.1.1: 658 | version "1.1.2" 659 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" 660 | dependencies: 661 | cipher-base "^1.0.1" 662 | inherits "^2.0.1" 663 | ripemd160 "^1.0.0" 664 | sha.js "^2.3.6" 665 | 666 | create-hmac@^1.1.0, create-hmac@^1.1.2: 667 | version "1.1.4" 668 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" 669 | dependencies: 670 | create-hash "^1.1.0" 671 | inherits "^2.0.1" 672 | 673 | cross-spawn@^3.0.0: 674 | version "3.0.1" 675 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" 676 | dependencies: 677 | lru-cache "^4.0.1" 678 | which "^1.2.9" 679 | 680 | cross-spawn@~4.0.0: 681 | version "4.0.2" 682 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 683 | dependencies: 684 | lru-cache "^4.0.1" 685 | which "^1.2.9" 686 | 687 | cryptiles@2.x.x: 688 | version "2.0.5" 689 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 690 | dependencies: 691 | boom "2.x.x" 692 | 693 | crypto-browserify@^3.0.0: 694 | version "3.11.0" 695 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" 696 | dependencies: 697 | browserify-cipher "^1.0.0" 698 | browserify-sign "^4.0.0" 699 | create-ecdh "^4.0.0" 700 | create-hash "^1.1.0" 701 | create-hmac "^1.1.0" 702 | diffie-hellman "^5.0.0" 703 | inherits "^2.0.1" 704 | pbkdf2 "^3.0.3" 705 | public-encrypt "^4.0.0" 706 | randombytes "^2.0.0" 707 | 708 | currently-unhandled@^0.4.1: 709 | version "0.4.1" 710 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 711 | dependencies: 712 | array-find-index "^1.0.1" 713 | 714 | dashdash@^1.12.0: 715 | version "1.14.1" 716 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 717 | dependencies: 718 | assert-plus "^1.0.0" 719 | 720 | date-now@^0.1.4: 721 | version "0.1.4" 722 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 723 | 724 | dateformat@^2.0.0: 725 | version "2.0.0" 726 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" 727 | 728 | debug@~2.2.0: 729 | version "2.2.0" 730 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 731 | dependencies: 732 | ms "0.7.1" 733 | 734 | decamelize@^1.1.1, decamelize@^1.1.2: 735 | version "1.2.0" 736 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 737 | 738 | decompress-tar@^3.0.0: 739 | version "3.1.0" 740 | resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-3.1.0.tgz#217c789f9b94450efaadc5c5e537978fc333c466" 741 | dependencies: 742 | is-tar "^1.0.0" 743 | object-assign "^2.0.0" 744 | strip-dirs "^1.0.0" 745 | tar-stream "^1.1.1" 746 | through2 "^0.6.1" 747 | vinyl "^0.4.3" 748 | 749 | decompress-tarbz2@^3.0.0: 750 | version "3.1.0" 751 | resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz#8b23935681355f9f189d87256a0f8bdd96d9666d" 752 | dependencies: 753 | is-bzip2 "^1.0.0" 754 | object-assign "^2.0.0" 755 | seek-bzip "^1.0.3" 756 | strip-dirs "^1.0.0" 757 | tar-stream "^1.1.1" 758 | through2 "^0.6.1" 759 | vinyl "^0.4.3" 760 | 761 | decompress-targz@^3.0.0: 762 | version "3.1.0" 763 | resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-3.1.0.tgz#b2c13df98166268991b715d6447f642e9696f5a0" 764 | dependencies: 765 | is-gzip "^1.0.0" 766 | object-assign "^2.0.0" 767 | strip-dirs "^1.0.0" 768 | tar-stream "^1.1.1" 769 | through2 "^0.6.1" 770 | vinyl "^0.4.3" 771 | 772 | decompress-unzip@^3.0.0: 773 | version "3.4.0" 774 | resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-3.4.0.tgz#61475b4152066bbe3fee12f9d629d15fe6478eeb" 775 | dependencies: 776 | is-zip "^1.0.0" 777 | read-all-stream "^3.0.0" 778 | stat-mode "^0.2.0" 779 | strip-dirs "^1.0.0" 780 | through2 "^2.0.0" 781 | vinyl "^1.0.0" 782 | yauzl "^2.2.1" 783 | 784 | decompress@^3.0.0: 785 | version "3.0.0" 786 | resolved "https://registry.yarnpkg.com/decompress/-/decompress-3.0.0.tgz#af1dd50d06e3bfc432461d37de11b38c0d991bed" 787 | dependencies: 788 | buffer-to-vinyl "^1.0.0" 789 | concat-stream "^1.4.6" 790 | decompress-tar "^3.0.0" 791 | decompress-tarbz2 "^3.0.0" 792 | decompress-targz "^3.0.0" 793 | decompress-unzip "^3.0.0" 794 | stream-combiner2 "^1.1.1" 795 | vinyl-assign "^1.0.1" 796 | vinyl-fs "^2.2.0" 797 | 798 | deep-extend@~0.4.0: 799 | version "0.4.1" 800 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 801 | 802 | defined@^1.0.0: 803 | version "1.0.0" 804 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 805 | 806 | delayed-stream@~1.0.0: 807 | version "1.0.0" 808 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 809 | 810 | delegates@^1.0.0: 811 | version "1.0.0" 812 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 813 | 814 | deps-sort@^2.0.0: 815 | version "2.0.0" 816 | resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" 817 | dependencies: 818 | JSONStream "^1.0.3" 819 | shasum "^1.0.0" 820 | subarg "^1.0.0" 821 | through2 "^2.0.0" 822 | 823 | des.js@^1.0.0: 824 | version "1.0.0" 825 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 826 | dependencies: 827 | inherits "^2.0.1" 828 | minimalistic-assert "^1.0.0" 829 | 830 | detective@^4.0.0: 831 | version "4.3.2" 832 | resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.2.tgz#77697e2e7947ac3fe7c8e26a6d6f115235afa91c" 833 | dependencies: 834 | acorn "^3.1.0" 835 | defined "^1.0.0" 836 | 837 | diffie-hellman@^5.0.0: 838 | version "5.0.2" 839 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 840 | dependencies: 841 | bn.js "^4.1.0" 842 | miller-rabin "^4.0.0" 843 | randombytes "^2.0.0" 844 | 845 | dom-walk@^0.1.0: 846 | version "0.1.1" 847 | resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" 848 | 849 | domain-browser@~1.1.0: 850 | version "1.1.7" 851 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 852 | 853 | download@^4.0.0, download@^4.1.2: 854 | version "4.4.3" 855 | resolved "https://registry.yarnpkg.com/download/-/download-4.4.3.tgz#aa55fdad392d95d4b68e8c2be03e0c2aa21ba9ac" 856 | dependencies: 857 | caw "^1.0.1" 858 | concat-stream "^1.4.7" 859 | each-async "^1.0.0" 860 | filenamify "^1.0.1" 861 | got "^5.0.0" 862 | gulp-decompress "^1.2.0" 863 | gulp-rename "^1.2.0" 864 | is-url "^1.2.0" 865 | object-assign "^4.0.1" 866 | read-all-stream "^3.0.0" 867 | readable-stream "^2.0.2" 868 | stream-combiner2 "^1.1.1" 869 | vinyl "^1.0.0" 870 | vinyl-fs "^2.2.0" 871 | ware "^1.2.0" 872 | 873 | duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2: 874 | version "0.1.4" 875 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 876 | dependencies: 877 | readable-stream "^2.0.2" 878 | 879 | duplexer2@0.0.2: 880 | version "0.0.2" 881 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" 882 | dependencies: 883 | readable-stream "~1.1.9" 884 | 885 | duplexify@^3.2.0: 886 | version "3.5.0" 887 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" 888 | dependencies: 889 | end-of-stream "1.0.0" 890 | inherits "^2.0.1" 891 | readable-stream "^2.0.0" 892 | stream-shift "^1.0.0" 893 | 894 | each-async@^1.0.0, each-async@^1.1.1: 895 | version "1.1.1" 896 | resolved "https://registry.yarnpkg.com/each-async/-/each-async-1.1.1.tgz#dee5229bdf0ab6ba2012a395e1b869abf8813473" 897 | dependencies: 898 | onetime "^1.0.0" 899 | set-immediate-shim "^1.0.0" 900 | 901 | ecc-jsbn@~0.1.1: 902 | version "0.1.1" 903 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 904 | dependencies: 905 | jsbn "~0.1.0" 906 | 907 | elliptic@^6.0.0: 908 | version "6.3.2" 909 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48" 910 | dependencies: 911 | bn.js "^4.4.0" 912 | brorand "^1.0.1" 913 | hash.js "^1.0.0" 914 | inherits "^2.0.1" 915 | 916 | end-of-stream@^1.0.0: 917 | version "1.1.0" 918 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" 919 | dependencies: 920 | once "~1.3.0" 921 | 922 | end-of-stream@1.0.0: 923 | version "1.0.0" 924 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" 925 | dependencies: 926 | once "~1.3.0" 927 | 928 | error-ex@^1.2.0: 929 | version "1.3.0" 930 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" 931 | dependencies: 932 | is-arrayish "^0.2.1" 933 | 934 | error@^4.3.0: 935 | version "4.4.0" 936 | resolved "https://registry.yarnpkg.com/error/-/error-4.4.0.tgz#bf69ff251fb4a279c19adccdaa6b61e90d9bf12a" 937 | dependencies: 938 | camelize "^1.0.0" 939 | string-template "~0.2.0" 940 | xtend "~4.0.0" 941 | 942 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 943 | version "1.0.5" 944 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 945 | 946 | ev-store@^7.0.0: 947 | version "7.0.0" 948 | resolved "https://registry.yarnpkg.com/ev-store/-/ev-store-7.0.0.tgz#1ab0c7f82136505dd74b31d17701cb2be6d26558" 949 | dependencies: 950 | individual "^3.0.0" 951 | 952 | events@~1.1.0: 953 | version "1.1.1" 954 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 955 | 956 | evp_bytestokey@^1.0.0: 957 | version "1.0.0" 958 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" 959 | dependencies: 960 | create-hash "^1.1.1" 961 | 962 | exec-series@^1.0.0: 963 | version "1.0.3" 964 | resolved "https://registry.yarnpkg.com/exec-series/-/exec-series-1.0.3.tgz#6d257a9beac482a872c7783bc8615839fc77143a" 965 | dependencies: 966 | async-each-series "^1.1.0" 967 | object-assign "^4.1.0" 968 | 969 | executable@^1.0.0: 970 | version "1.1.0" 971 | resolved "https://registry.yarnpkg.com/executable/-/executable-1.1.0.tgz#877980e9112f3391066da37265de7ad8434ab4d9" 972 | dependencies: 973 | meow "^3.1.0" 974 | 975 | expand-brackets@^0.1.4: 976 | version "0.1.5" 977 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 978 | dependencies: 979 | is-posix-bracket "^0.1.0" 980 | 981 | expand-range@^1.8.1: 982 | version "1.8.2" 983 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 984 | dependencies: 985 | fill-range "^2.1.0" 986 | 987 | extend-shallow@^2.0.1: 988 | version "2.0.1" 989 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 990 | dependencies: 991 | is-extendable "^0.1.0" 992 | 993 | extend@^3.0.0, extend@~3.0.0: 994 | version "3.0.0" 995 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 996 | 997 | extglob@^0.3.1: 998 | version "0.3.2" 999 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1000 | dependencies: 1001 | is-extglob "^1.0.0" 1002 | 1003 | extsprintf@1.0.2: 1004 | version "1.0.2" 1005 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 1006 | 1007 | fancy-log@^1.1.0: 1008 | version "1.3.0" 1009 | resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" 1010 | dependencies: 1011 | chalk "^1.1.1" 1012 | time-stamp "^1.0.0" 1013 | 1014 | fd-slicer@~1.0.1: 1015 | version "1.0.1" 1016 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" 1017 | dependencies: 1018 | pend "~1.2.0" 1019 | 1020 | figures@^1.3.5: 1021 | version "1.7.0" 1022 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 1023 | dependencies: 1024 | escape-string-regexp "^1.0.5" 1025 | object-assign "^4.1.0" 1026 | 1027 | file-type@^3.1.0: 1028 | version "3.9.0" 1029 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 1030 | 1031 | filename-regex@^2.0.0: 1032 | version "2.0.0" 1033 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 1034 | 1035 | filename-reserved-regex@^1.0.0: 1036 | version "1.0.0" 1037 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz#e61cf805f0de1c984567d0386dc5df50ee5af7e4" 1038 | 1039 | filenamify@^1.0.1: 1040 | version "1.2.1" 1041 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-1.2.1.tgz#a9f2ffd11c503bed300015029272378f1f1365a5" 1042 | dependencies: 1043 | filename-reserved-regex "^1.0.0" 1044 | strip-outer "^1.0.0" 1045 | trim-repeated "^1.0.0" 1046 | 1047 | fill-range@^2.1.0: 1048 | version "2.2.3" 1049 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 1050 | dependencies: 1051 | is-number "^2.1.0" 1052 | isobject "^2.0.0" 1053 | randomatic "^1.1.3" 1054 | repeat-element "^1.1.2" 1055 | repeat-string "^1.5.2" 1056 | 1057 | find-up@^1.0.0: 1058 | version "1.1.2" 1059 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1060 | dependencies: 1061 | path-exists "^2.0.0" 1062 | pinkie-promise "^2.0.0" 1063 | 1064 | find-versions@^1.0.0: 1065 | version "1.2.1" 1066 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-1.2.1.tgz#cbde9f12e38575a0af1be1b9a2c5d5fd8f186b62" 1067 | dependencies: 1068 | array-uniq "^1.0.0" 1069 | get-stdin "^4.0.1" 1070 | meow "^3.5.0" 1071 | semver-regex "^1.0.0" 1072 | 1073 | first-chunk-stream@^1.0.0: 1074 | version "1.0.0" 1075 | resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" 1076 | 1077 | for-in@^0.1.5: 1078 | version "0.1.6" 1079 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" 1080 | 1081 | for-own@^0.1.4: 1082 | version "0.1.4" 1083 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" 1084 | dependencies: 1085 | for-in "^0.1.5" 1086 | 1087 | forever-agent@~0.6.1: 1088 | version "0.6.1" 1089 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1090 | 1091 | form-data@~2.1.1: 1092 | version "2.1.2" 1093 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 1094 | dependencies: 1095 | asynckit "^0.4.0" 1096 | combined-stream "^1.0.5" 1097 | mime-types "^2.1.12" 1098 | 1099 | fs.realpath@^1.0.0: 1100 | version "1.0.0" 1101 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1102 | 1103 | fsevents@^1.0.0: 1104 | version "1.0.17" 1105 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" 1106 | dependencies: 1107 | nan "^2.3.0" 1108 | node-pre-gyp "^0.6.29" 1109 | 1110 | fstream-ignore@~1.0.5: 1111 | version "1.0.5" 1112 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1113 | dependencies: 1114 | fstream "^1.0.0" 1115 | inherits "2" 1116 | minimatch "^3.0.0" 1117 | 1118 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: 1119 | version "1.0.10" 1120 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" 1121 | dependencies: 1122 | graceful-fs "^4.1.2" 1123 | inherits "~2.0.0" 1124 | mkdirp ">=0.5 0" 1125 | rimraf "2" 1126 | 1127 | function-bind@^1.0.2: 1128 | version "1.1.0" 1129 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 1130 | 1131 | gauge@~2.7.1: 1132 | version "2.7.2" 1133 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" 1134 | dependencies: 1135 | aproba "^1.0.3" 1136 | console-control-strings "^1.0.0" 1137 | has-unicode "^2.0.0" 1138 | object-assign "^4.1.0" 1139 | signal-exit "^3.0.0" 1140 | string-width "^1.0.1" 1141 | strip-ansi "^3.0.1" 1142 | supports-color "^0.2.0" 1143 | wide-align "^1.1.0" 1144 | 1145 | gaze@^1.0.0: 1146 | version "1.1.2" 1147 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" 1148 | dependencies: 1149 | globule "^1.0.0" 1150 | 1151 | generate-function@^2.0.0: 1152 | version "2.0.0" 1153 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1154 | 1155 | generate-object-property@^1.1.0: 1156 | version "1.2.0" 1157 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1158 | dependencies: 1159 | is-property "^1.0.0" 1160 | 1161 | get-caller-file@^1.0.1: 1162 | version "1.0.2" 1163 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1164 | 1165 | get-proxy@^1.0.1: 1166 | version "1.1.0" 1167 | resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-1.1.0.tgz#894854491bc591b0f147d7ae570f5c678b7256eb" 1168 | dependencies: 1169 | rc "^1.1.2" 1170 | 1171 | get-stdin@^4.0.1: 1172 | version "4.0.1" 1173 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 1174 | 1175 | getpass@^0.1.1: 1176 | version "0.1.6" 1177 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 1178 | dependencies: 1179 | assert-plus "^1.0.0" 1180 | 1181 | glob-base@^0.3.0: 1182 | version "0.3.0" 1183 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1184 | dependencies: 1185 | glob-parent "^2.0.0" 1186 | is-glob "^2.0.0" 1187 | 1188 | glob-parent@^2.0.0: 1189 | version "2.0.0" 1190 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1191 | dependencies: 1192 | is-glob "^2.0.0" 1193 | 1194 | glob-parent@^3.0.0: 1195 | version "3.1.0" 1196 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 1197 | dependencies: 1198 | is-glob "^3.1.0" 1199 | path-dirname "^1.0.0" 1200 | 1201 | glob-stream@^5.3.2: 1202 | version "5.3.5" 1203 | resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" 1204 | dependencies: 1205 | extend "^3.0.0" 1206 | glob "^5.0.3" 1207 | glob-parent "^3.0.0" 1208 | micromatch "^2.3.7" 1209 | ordered-read-streams "^0.3.0" 1210 | through2 "^0.6.0" 1211 | to-absolute-glob "^0.1.1" 1212 | unique-stream "^2.0.2" 1213 | 1214 | glob@^5.0.3: 1215 | version "5.0.15" 1216 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 1217 | dependencies: 1218 | inflight "^1.0.4" 1219 | inherits "2" 1220 | minimatch "2 || 3" 1221 | once "^1.3.0" 1222 | path-is-absolute "^1.0.0" 1223 | 1224 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@~7.1.1: 1225 | version "7.1.1" 1226 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1227 | dependencies: 1228 | fs.realpath "^1.0.0" 1229 | inflight "^1.0.4" 1230 | inherits "2" 1231 | minimatch "^3.0.2" 1232 | once "^1.3.0" 1233 | path-is-absolute "^1.0.0" 1234 | 1235 | global@^4.3.0: 1236 | version "4.3.1" 1237 | resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df" 1238 | dependencies: 1239 | min-document "^2.19.0" 1240 | process "~0.5.1" 1241 | 1242 | globule@^1.0.0: 1243 | version "1.1.0" 1244 | resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f" 1245 | dependencies: 1246 | glob "~7.1.1" 1247 | lodash "~4.16.4" 1248 | minimatch "~3.0.2" 1249 | 1250 | glogg@^1.0.0: 1251 | version "1.0.0" 1252 | resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" 1253 | dependencies: 1254 | sparkles "^1.0.0" 1255 | 1256 | got@^5.0.0: 1257 | version "5.7.1" 1258 | resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" 1259 | dependencies: 1260 | create-error-class "^3.0.1" 1261 | duplexer2 "^0.1.4" 1262 | is-redirect "^1.0.0" 1263 | is-retry-allowed "^1.0.0" 1264 | is-stream "^1.0.0" 1265 | lowercase-keys "^1.0.0" 1266 | node-status-codes "^1.0.0" 1267 | object-assign "^4.0.1" 1268 | parse-json "^2.1.0" 1269 | pinkie-promise "^2.0.0" 1270 | read-all-stream "^3.0.0" 1271 | readable-stream "^2.0.5" 1272 | timed-out "^3.0.0" 1273 | unzip-response "^1.0.2" 1274 | url-parse-lax "^1.0.0" 1275 | 1276 | graceful-fs@^4.0.0, graceful-fs@^4.1.2: 1277 | version "4.1.11" 1278 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1279 | 1280 | "graceful-readlink@>= 1.0.0": 1281 | version "1.0.1" 1282 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1283 | 1284 | gulp-decompress@^1.2.0: 1285 | version "1.2.0" 1286 | resolved "https://registry.yarnpkg.com/gulp-decompress/-/gulp-decompress-1.2.0.tgz#8eeb65a5e015f8ed8532cafe28454960626f0dc7" 1287 | dependencies: 1288 | archive-type "^3.0.0" 1289 | decompress "^3.0.0" 1290 | gulp-util "^3.0.1" 1291 | readable-stream "^2.0.2" 1292 | 1293 | gulp-rename@^1.2.0: 1294 | version "1.2.2" 1295 | resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" 1296 | 1297 | gulp-sourcemaps@1.6.0: 1298 | version "1.6.0" 1299 | resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" 1300 | dependencies: 1301 | convert-source-map "^1.1.1" 1302 | graceful-fs "^4.1.2" 1303 | strip-bom "^2.0.0" 1304 | through2 "^2.0.0" 1305 | vinyl "^1.0.0" 1306 | 1307 | gulp-util@^3.0.1: 1308 | version "3.0.8" 1309 | resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" 1310 | dependencies: 1311 | array-differ "^1.0.0" 1312 | array-uniq "^1.0.2" 1313 | beeper "^1.0.0" 1314 | chalk "^1.0.0" 1315 | dateformat "^2.0.0" 1316 | fancy-log "^1.1.0" 1317 | gulplog "^1.0.0" 1318 | has-gulplog "^0.1.0" 1319 | lodash._reescape "^3.0.0" 1320 | lodash._reevaluate "^3.0.0" 1321 | lodash._reinterpolate "^3.0.0" 1322 | lodash.template "^3.0.0" 1323 | minimist "^1.1.0" 1324 | multipipe "^0.1.2" 1325 | object-assign "^3.0.0" 1326 | replace-ext "0.0.1" 1327 | through2 "^2.0.0" 1328 | vinyl "^0.5.0" 1329 | 1330 | gulplog@^1.0.0: 1331 | version "1.0.0" 1332 | resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" 1333 | dependencies: 1334 | glogg "^1.0.0" 1335 | 1336 | har-validator@~2.0.6: 1337 | version "2.0.6" 1338 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 1339 | dependencies: 1340 | chalk "^1.1.1" 1341 | commander "^2.9.0" 1342 | is-my-json-valid "^2.12.4" 1343 | pinkie-promise "^2.0.0" 1344 | 1345 | has-ansi@^2.0.0: 1346 | version "2.0.0" 1347 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1348 | dependencies: 1349 | ansi-regex "^2.0.0" 1350 | 1351 | has-gulplog@^0.1.0: 1352 | version "0.1.0" 1353 | resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" 1354 | dependencies: 1355 | sparkles "^1.0.0" 1356 | 1357 | has-unicode@^2.0.0: 1358 | version "2.0.1" 1359 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1360 | 1361 | has@^1.0.0: 1362 | version "1.0.1" 1363 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 1364 | dependencies: 1365 | function-bind "^1.0.2" 1366 | 1367 | hash.js@^1.0.0: 1368 | version "1.0.3" 1369 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" 1370 | dependencies: 1371 | inherits "^2.0.1" 1372 | 1373 | hawk@~3.1.3: 1374 | version "3.1.3" 1375 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1376 | dependencies: 1377 | boom "2.x.x" 1378 | cryptiles "2.x.x" 1379 | hoek "2.x.x" 1380 | sntp "1.x.x" 1381 | 1382 | hoek@2.x.x: 1383 | version "2.16.3" 1384 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1385 | 1386 | hosted-git-info@^2.1.4: 1387 | version "2.1.5" 1388 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" 1389 | 1390 | htmlescape@^1.1.0: 1391 | version "1.1.1" 1392 | resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" 1393 | 1394 | http-signature@~1.1.0: 1395 | version "1.1.1" 1396 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1397 | dependencies: 1398 | assert-plus "^0.2.0" 1399 | jsprim "^1.2.2" 1400 | sshpk "^1.7.0" 1401 | 1402 | https-browserify@~0.0.0: 1403 | version "0.0.1" 1404 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 1405 | 1406 | ieee754@^1.1.4: 1407 | version "1.1.8" 1408 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1409 | 1410 | in-publish@^2.0.0: 1411 | version "2.0.0" 1412 | resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" 1413 | 1414 | indent-string@^2.1.0: 1415 | version "2.1.0" 1416 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1417 | dependencies: 1418 | repeating "^2.0.0" 1419 | 1420 | indexof@0.0.1: 1421 | version "0.0.1" 1422 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1423 | 1424 | individual@^3.0.0: 1425 | version "3.0.0" 1426 | resolved "https://registry.yarnpkg.com/individual/-/individual-3.0.0.tgz#e7ca4f85f8957b018734f285750dc22ec2f9862d" 1427 | 1428 | inflight@^1.0.4: 1429 | version "1.0.6" 1430 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1431 | dependencies: 1432 | once "^1.3.0" 1433 | wrappy "1" 1434 | 1435 | inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@2: 1436 | version "2.0.3" 1437 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1438 | 1439 | inherits@2.0.1: 1440 | version "2.0.1" 1441 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1442 | 1443 | ini@~1.3.0: 1444 | version "1.3.4" 1445 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1446 | 1447 | inline-source-map@~0.6.0: 1448 | version "0.6.2" 1449 | resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" 1450 | dependencies: 1451 | source-map "~0.5.3" 1452 | 1453 | insert-module-globals@^7.0.0: 1454 | version "7.0.1" 1455 | resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" 1456 | dependencies: 1457 | combine-source-map "~0.7.1" 1458 | concat-stream "~1.5.1" 1459 | is-buffer "^1.1.0" 1460 | JSONStream "^1.0.3" 1461 | lexical-scope "^1.2.0" 1462 | process "~0.11.0" 1463 | through2 "^2.0.0" 1464 | xtend "^4.0.0" 1465 | 1466 | invert-kv@^1.0.0: 1467 | version "1.0.0" 1468 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1469 | 1470 | ip-regex@^1.0.1: 1471 | version "1.0.3" 1472 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" 1473 | 1474 | is-absolute@^0.1.5: 1475 | version "0.1.7" 1476 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.1.7.tgz#847491119fccb5fb436217cc737f7faad50f603f" 1477 | dependencies: 1478 | is-relative "^0.1.0" 1479 | 1480 | is-arrayish@^0.2.1: 1481 | version "0.2.1" 1482 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1483 | 1484 | is-binary-path@^1.0.0: 1485 | version "1.0.1" 1486 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1487 | dependencies: 1488 | binary-extensions "^1.0.0" 1489 | 1490 | is-buffer@^1.0.2, is-buffer@^1.1.0: 1491 | version "1.1.4" 1492 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 1493 | 1494 | is-builtin-module@^1.0.0: 1495 | version "1.0.0" 1496 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1497 | dependencies: 1498 | builtin-modules "^1.0.0" 1499 | 1500 | is-bzip2@^1.0.0: 1501 | version "1.0.0" 1502 | resolved "https://registry.yarnpkg.com/is-bzip2/-/is-bzip2-1.0.0.tgz#5ee58eaa5a2e9c80e21407bedf23ae5ac091b3fc" 1503 | 1504 | is-dotfile@^1.0.0: 1505 | version "1.0.2" 1506 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1507 | 1508 | is-equal-shallow@^0.1.3: 1509 | version "0.1.3" 1510 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1511 | dependencies: 1512 | is-primitive "^2.0.0" 1513 | 1514 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1515 | version "0.1.1" 1516 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1517 | 1518 | is-extglob@^1.0.0: 1519 | version "1.0.0" 1520 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1521 | 1522 | is-extglob@^2.1.0: 1523 | version "2.1.1" 1524 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1525 | 1526 | is-finite@^1.0.0: 1527 | version "1.0.2" 1528 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1529 | dependencies: 1530 | number-is-nan "^1.0.0" 1531 | 1532 | is-fullwidth-code-point@^1.0.0: 1533 | version "1.0.0" 1534 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1535 | dependencies: 1536 | number-is-nan "^1.0.0" 1537 | 1538 | is-glob@^2.0.0, is-glob@^2.0.1: 1539 | version "2.0.1" 1540 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1541 | dependencies: 1542 | is-extglob "^1.0.0" 1543 | 1544 | is-glob@^3.1.0: 1545 | version "3.1.0" 1546 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1547 | dependencies: 1548 | is-extglob "^2.1.0" 1549 | 1550 | is-gzip@^1.0.0: 1551 | version "1.0.0" 1552 | resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" 1553 | 1554 | is-my-json-valid@^2.12.4: 1555 | version "2.15.0" 1556 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" 1557 | dependencies: 1558 | generate-function "^2.0.0" 1559 | generate-object-property "^1.1.0" 1560 | jsonpointer "^4.0.0" 1561 | xtend "^4.0.0" 1562 | 1563 | is-natural-number@^2.0.0: 1564 | version "2.1.1" 1565 | resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-2.1.1.tgz#7d4c5728377ef386c3e194a9911bf57c6dc335e7" 1566 | 1567 | is-number@^2.0.2, is-number@^2.1.0: 1568 | version "2.1.0" 1569 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1570 | dependencies: 1571 | kind-of "^3.0.2" 1572 | 1573 | is-obj@^1.0.0: 1574 | version "1.0.1" 1575 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1576 | 1577 | is-object@^1.0.1: 1578 | version "1.0.1" 1579 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 1580 | 1581 | is-posix-bracket@^0.1.0: 1582 | version "0.1.1" 1583 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1584 | 1585 | is-primitive@^2.0.0: 1586 | version "2.0.0" 1587 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1588 | 1589 | is-property@^1.0.0: 1590 | version "1.0.2" 1591 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1592 | 1593 | is-redirect@^1.0.0: 1594 | version "1.0.0" 1595 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1596 | 1597 | is-relative@^0.1.0: 1598 | version "0.1.3" 1599 | resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" 1600 | 1601 | is-retry-allowed@^1.0.0: 1602 | version "1.1.0" 1603 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1604 | 1605 | is-stream@^1.0.0, is-stream@^1.0.1: 1606 | version "1.1.0" 1607 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1608 | 1609 | is-tar@^1.0.0: 1610 | version "1.0.0" 1611 | resolved "https://registry.yarnpkg.com/is-tar/-/is-tar-1.0.0.tgz#2f6b2e1792c1f5bb36519acaa9d65c0d26fe853d" 1612 | 1613 | is-typedarray@~1.0.0: 1614 | version "1.0.0" 1615 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1616 | 1617 | is-url@^1.2.0: 1618 | version "1.2.2" 1619 | resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" 1620 | 1621 | is-utf8@^0.2.0: 1622 | version "0.2.1" 1623 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1624 | 1625 | is-valid-glob@^0.3.0: 1626 | version "0.3.0" 1627 | resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" 1628 | 1629 | is-zip@^1.0.0: 1630 | version "1.0.0" 1631 | resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" 1632 | 1633 | isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0: 1634 | version "1.0.0" 1635 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1636 | 1637 | isarray@~0.0.1, isarray@0.0.1: 1638 | version "0.0.1" 1639 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1640 | 1641 | isexe@^1.1.1: 1642 | version "1.1.2" 1643 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" 1644 | 1645 | isobject@^2.0.0: 1646 | version "2.1.0" 1647 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1648 | dependencies: 1649 | isarray "1.0.0" 1650 | 1651 | isstream@~0.1.2: 1652 | version "0.1.2" 1653 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1654 | 1655 | jodid25519@^1.0.0: 1656 | version "1.0.2" 1657 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1658 | dependencies: 1659 | jsbn "~0.1.0" 1660 | 1661 | jsbn@~0.1.0: 1662 | version "0.1.0" 1663 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" 1664 | 1665 | json-schema@0.2.3: 1666 | version "0.2.3" 1667 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1668 | 1669 | json-stable-stringify@^1.0.0: 1670 | version "1.0.1" 1671 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1672 | dependencies: 1673 | jsonify "~0.0.0" 1674 | 1675 | json-stable-stringify@~0.0.0: 1676 | version "0.0.1" 1677 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" 1678 | dependencies: 1679 | jsonify "~0.0.0" 1680 | 1681 | json-stringify-safe@~5.0.1: 1682 | version "5.0.1" 1683 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1684 | 1685 | jsonify@~0.0.0: 1686 | version "0.0.0" 1687 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1688 | 1689 | jsonparse@^1.2.0: 1690 | version "1.2.0" 1691 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd" 1692 | 1693 | jsonparse@0.0.5: 1694 | version "0.0.5" 1695 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" 1696 | 1697 | jsonpointer@^4.0.0: 1698 | version "4.0.1" 1699 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1700 | 1701 | JSONStream@^0.10.0: 1702 | version "0.10.0" 1703 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0" 1704 | dependencies: 1705 | jsonparse "0.0.5" 1706 | through ">=2.2.7 <3" 1707 | 1708 | JSONStream@^1.0.3: 1709 | version "1.3.0" 1710 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.0.tgz#680ab9ac6572a8a1a207e0b38721db1c77b215e5" 1711 | dependencies: 1712 | jsonparse "^1.2.0" 1713 | through ">=2.2.7 <3" 1714 | 1715 | jsprim@^1.2.2: 1716 | version "1.3.1" 1717 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" 1718 | dependencies: 1719 | extsprintf "1.0.2" 1720 | json-schema "0.2.3" 1721 | verror "1.3.6" 1722 | 1723 | kind-of@^3.0.2: 1724 | version "3.1.0" 1725 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1726 | dependencies: 1727 | is-buffer "^1.0.2" 1728 | 1729 | labeled-stream-splicer@^2.0.0: 1730 | version "2.0.0" 1731 | resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59" 1732 | dependencies: 1733 | inherits "^2.0.1" 1734 | isarray "~0.0.1" 1735 | stream-splicer "^2.0.0" 1736 | 1737 | lazy-req@^1.0.0: 1738 | version "1.1.0" 1739 | resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" 1740 | 1741 | lazystream@^1.0.0: 1742 | version "1.0.0" 1743 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" 1744 | dependencies: 1745 | readable-stream "^2.0.5" 1746 | 1747 | lcid@^1.0.0: 1748 | version "1.0.0" 1749 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1750 | dependencies: 1751 | invert-kv "^1.0.0" 1752 | 1753 | lexical-scope@^1.2.0: 1754 | version "1.2.0" 1755 | resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" 1756 | dependencies: 1757 | astw "^2.0.0" 1758 | 1759 | load-json-file@^1.0.0: 1760 | version "1.1.0" 1761 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1762 | dependencies: 1763 | graceful-fs "^4.1.2" 1764 | parse-json "^2.2.0" 1765 | pify "^2.0.0" 1766 | pinkie-promise "^2.0.0" 1767 | strip-bom "^2.0.0" 1768 | 1769 | lodash._basecopy@^3.0.0: 1770 | version "3.0.1" 1771 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 1772 | 1773 | lodash._basetostring@^3.0.0: 1774 | version "3.0.1" 1775 | resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" 1776 | 1777 | lodash._basevalues@^3.0.0: 1778 | version "3.0.0" 1779 | resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" 1780 | 1781 | lodash._getnative@^3.0.0: 1782 | version "3.9.1" 1783 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 1784 | 1785 | lodash._isiterateecall@^3.0.0: 1786 | version "3.0.9" 1787 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 1788 | 1789 | lodash._reescape@^3.0.0: 1790 | version "3.0.0" 1791 | resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" 1792 | 1793 | lodash._reevaluate@^3.0.0: 1794 | version "3.0.0" 1795 | resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" 1796 | 1797 | lodash._reinterpolate@^3.0.0: 1798 | version "3.0.0" 1799 | resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" 1800 | 1801 | lodash._root@^3.0.0: 1802 | version "3.0.1" 1803 | resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" 1804 | 1805 | lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: 1806 | version "4.2.0" 1807 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" 1808 | 1809 | lodash.clonedeep@^4.3.2: 1810 | version "4.5.0" 1811 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1812 | 1813 | lodash.escape@^3.0.0: 1814 | version "3.2.0" 1815 | resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" 1816 | dependencies: 1817 | lodash._root "^3.0.0" 1818 | 1819 | lodash.isarguments@^3.0.0: 1820 | version "3.1.0" 1821 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 1822 | 1823 | lodash.isarray@^3.0.0: 1824 | version "3.0.4" 1825 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 1826 | 1827 | lodash.isequal@^4.0.0: 1828 | version "4.5.0" 1829 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 1830 | 1831 | lodash.keys@^3.0.0: 1832 | version "3.1.2" 1833 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 1834 | dependencies: 1835 | lodash._getnative "^3.0.0" 1836 | lodash.isarguments "^3.0.0" 1837 | lodash.isarray "^3.0.0" 1838 | 1839 | lodash.memoize@~3.0.3: 1840 | version "3.0.4" 1841 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" 1842 | 1843 | lodash.mergewith@^4.6.0: 1844 | version "4.6.0" 1845 | resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" 1846 | 1847 | lodash.restparam@^3.0.0: 1848 | version "3.6.1" 1849 | resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" 1850 | 1851 | lodash.template@^3.0.0: 1852 | version "3.6.2" 1853 | resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" 1854 | dependencies: 1855 | lodash._basecopy "^3.0.0" 1856 | lodash._basetostring "^3.0.0" 1857 | lodash._basevalues "^3.0.0" 1858 | lodash._isiterateecall "^3.0.0" 1859 | lodash._reinterpolate "^3.0.0" 1860 | lodash.escape "^3.0.0" 1861 | lodash.keys "^3.0.0" 1862 | lodash.restparam "^3.0.0" 1863 | lodash.templatesettings "^3.0.0" 1864 | 1865 | lodash.templatesettings@^3.0.0: 1866 | version "3.1.1" 1867 | resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" 1868 | dependencies: 1869 | lodash._reinterpolate "^3.0.0" 1870 | lodash.escape "^3.0.0" 1871 | 1872 | lodash@^4.0.0, lodash@^4.14.0: 1873 | version "4.17.4" 1874 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1875 | 1876 | lodash@~4.16.4: 1877 | version "4.16.6" 1878 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" 1879 | 1880 | logalot@^2.1.0: 1881 | version "2.1.0" 1882 | resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" 1883 | dependencies: 1884 | figures "^1.3.5" 1885 | squeak "^1.0.0" 1886 | 1887 | longest@^1.0.0: 1888 | version "1.0.1" 1889 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1890 | 1891 | loud-rejection@^1.0.0: 1892 | version "1.6.0" 1893 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1894 | dependencies: 1895 | currently-unhandled "^0.4.1" 1896 | signal-exit "^3.0.0" 1897 | 1898 | lowercase-keys@^1.0.0: 1899 | version "1.0.0" 1900 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 1901 | 1902 | lpad-align@^1.0.1: 1903 | version "1.1.0" 1904 | resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.0.tgz#27fa786bcb695fc434ea1500723eb8d0bdc82bf4" 1905 | dependencies: 1906 | get-stdin "^4.0.1" 1907 | longest "^1.0.0" 1908 | lpad "^2.0.1" 1909 | meow "^3.3.0" 1910 | 1911 | lpad@^2.0.1: 1912 | version "2.0.1" 1913 | resolved "https://registry.yarnpkg.com/lpad/-/lpad-2.0.1.tgz#28316b4e7b2015f511f6591459afc0e5944008ad" 1914 | 1915 | lru-cache@^4.0.1: 1916 | version "4.0.2" 1917 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" 1918 | dependencies: 1919 | pseudomap "^1.0.1" 1920 | yallist "^2.0.0" 1921 | 1922 | map-obj@^1.0.0, map-obj@^1.0.1: 1923 | version "1.0.1" 1924 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1925 | 1926 | meow@^3.1.0, meow@^3.3.0, meow@^3.5.0, meow@^3.7.0: 1927 | version "3.7.0" 1928 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1929 | dependencies: 1930 | camelcase-keys "^2.0.0" 1931 | decamelize "^1.1.2" 1932 | loud-rejection "^1.0.0" 1933 | map-obj "^1.0.1" 1934 | minimist "^1.1.3" 1935 | normalize-package-data "^2.3.4" 1936 | object-assign "^4.0.1" 1937 | read-pkg-up "^1.0.1" 1938 | redent "^1.0.0" 1939 | trim-newlines "^1.0.0" 1940 | 1941 | merge-stream@^1.0.0: 1942 | version "1.0.1" 1943 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" 1944 | dependencies: 1945 | readable-stream "^2.0.1" 1946 | 1947 | micromatch@^2.1.5, micromatch@^2.3.7: 1948 | version "2.3.11" 1949 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1950 | dependencies: 1951 | arr-diff "^2.0.0" 1952 | array-unique "^0.2.1" 1953 | braces "^1.8.2" 1954 | expand-brackets "^0.1.4" 1955 | extglob "^0.3.1" 1956 | filename-regex "^2.0.0" 1957 | is-extglob "^1.0.0" 1958 | is-glob "^2.0.1" 1959 | kind-of "^3.0.2" 1960 | normalize-path "^2.0.1" 1961 | object.omit "^2.0.0" 1962 | parse-glob "^3.0.4" 1963 | regex-cache "^0.4.2" 1964 | 1965 | miller-rabin@^4.0.0: 1966 | version "4.0.0" 1967 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" 1968 | dependencies: 1969 | bn.js "^4.0.0" 1970 | brorand "^1.0.1" 1971 | 1972 | mime-db@~1.25.0: 1973 | version "1.25.0" 1974 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" 1975 | 1976 | mime-types@^2.1.12, mime-types@~2.1.7: 1977 | version "2.1.13" 1978 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" 1979 | dependencies: 1980 | mime-db "~1.25.0" 1981 | 1982 | mime@>=1.2.9: 1983 | version "1.3.4" 1984 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 1985 | 1986 | min-document@^2.19.0: 1987 | version "2.19.0" 1988 | resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" 1989 | dependencies: 1990 | dom-walk "^0.1.0" 1991 | 1992 | minimalistic-assert@^1.0.0: 1993 | version "1.0.0" 1994 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 1995 | 1996 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, "minimatch@2 || 3": 1997 | version "3.0.3" 1998 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1999 | dependencies: 2000 | brace-expansion "^1.0.0" 2001 | 2002 | minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0: 2003 | version "1.2.0" 2004 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2005 | 2006 | minimist@~0.0.1: 2007 | version "0.0.10" 2008 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 2009 | 2010 | minimist@0.0.8: 2011 | version "0.0.8" 2012 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2013 | 2014 | mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.1: 2015 | version "0.5.1" 2016 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2017 | dependencies: 2018 | minimist "0.0.8" 2019 | 2020 | module-deps@^4.0.8: 2021 | version "4.0.8" 2022 | resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.0.8.tgz#55fd70623399706c3288bef7a609ff1e8c0ed2bb" 2023 | dependencies: 2024 | browser-resolve "^1.7.0" 2025 | cached-path-relative "^1.0.0" 2026 | concat-stream "~1.5.0" 2027 | defined "^1.0.0" 2028 | detective "^4.0.0" 2029 | duplexer2 "^0.1.2" 2030 | inherits "^2.0.1" 2031 | JSONStream "^1.0.3" 2032 | parents "^1.0.0" 2033 | readable-stream "^2.0.2" 2034 | resolve "^1.1.3" 2035 | stream-combiner2 "^1.1.1" 2036 | subarg "^1.0.0" 2037 | through2 "^2.0.0" 2038 | xtend "^4.0.0" 2039 | 2040 | moment@^2.10.6: 2041 | version "2.17.1" 2042 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82" 2043 | 2044 | ms@0.7.1: 2045 | version "0.7.1" 2046 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 2047 | 2048 | multipipe@^0.1.2: 2049 | version "0.1.2" 2050 | resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" 2051 | dependencies: 2052 | duplexer2 "0.0.2" 2053 | 2054 | mute-stream@~0.0.4: 2055 | version "0.0.7" 2056 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 2057 | 2058 | nan@^2.3.0, nan@^2.3.2: 2059 | version "2.5.0" 2060 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8" 2061 | 2062 | next-tick@^0.2.2: 2063 | version "0.2.2" 2064 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" 2065 | 2066 | node-gyp@^3.3.1: 2067 | version "3.5.0" 2068 | resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a" 2069 | dependencies: 2070 | fstream "^1.0.0" 2071 | glob "^7.0.3" 2072 | graceful-fs "^4.1.2" 2073 | minimatch "^3.0.2" 2074 | mkdirp "^0.5.0" 2075 | nopt "2 || 3" 2076 | npmlog "0 || 1 || 2 || 3 || 4" 2077 | osenv "0" 2078 | request "2" 2079 | rimraf "2" 2080 | semver "2.x || 3.x || 4 || 5" 2081 | tar "^2.0.0" 2082 | which "1" 2083 | 2084 | node-pre-gyp@^0.6.29: 2085 | version "0.6.32" 2086 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5" 2087 | dependencies: 2088 | mkdirp "~0.5.1" 2089 | nopt "~3.0.6" 2090 | npmlog "^4.0.1" 2091 | rc "~1.1.6" 2092 | request "^2.79.0" 2093 | rimraf "~2.5.4" 2094 | semver "~5.3.0" 2095 | tar "~2.2.1" 2096 | tar-pack "~3.3.0" 2097 | 2098 | node-sass@4.3.0: 2099 | version "4.3.0" 2100 | resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.3.0.tgz#d014f64595d77b26af99e9f7a7e74704d9976bda" 2101 | dependencies: 2102 | async-foreach "^0.1.3" 2103 | chalk "^1.1.1" 2104 | cross-spawn "^3.0.0" 2105 | gaze "^1.0.0" 2106 | get-stdin "^4.0.1" 2107 | glob "^7.0.3" 2108 | in-publish "^2.0.0" 2109 | lodash.assign "^4.2.0" 2110 | lodash.clonedeep "^4.3.2" 2111 | lodash.mergewith "^4.6.0" 2112 | meow "^3.7.0" 2113 | mkdirp "^0.5.1" 2114 | nan "^2.3.2" 2115 | node-gyp "^3.3.1" 2116 | npmlog "^4.0.0" 2117 | request "^2.61.0" 2118 | sass-graph "^2.1.1" 2119 | stdout-stream "^1.4.0" 2120 | 2121 | node-static@^0.7.9: 2122 | version "0.7.9" 2123 | resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.9.tgz#9bb69fce2281f7ae3cd1fb983e9ea0ec0cd9fecb" 2124 | dependencies: 2125 | colors ">=0.6.0" 2126 | mime ">=1.2.9" 2127 | optimist ">=0.3.4" 2128 | 2129 | node-status-codes@^1.0.0: 2130 | version "1.0.0" 2131 | resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" 2132 | 2133 | nopt@~3.0.6, "nopt@2 || 3": 2134 | version "3.0.6" 2135 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 2136 | dependencies: 2137 | abbrev "1" 2138 | 2139 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 2140 | version "2.3.5" 2141 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" 2142 | dependencies: 2143 | hosted-git-info "^2.1.4" 2144 | is-builtin-module "^1.0.0" 2145 | semver "2 || 3 || 4 || 5" 2146 | validate-npm-package-license "^3.0.1" 2147 | 2148 | normalize-path@^2.0.1: 2149 | version "2.0.1" 2150 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 2151 | 2152 | npmlog@^4.0.0, npmlog@^4.0.1, "npmlog@0 || 1 || 2 || 3 || 4": 2153 | version "4.0.2" 2154 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 2155 | dependencies: 2156 | are-we-there-yet "~1.1.2" 2157 | console-control-strings "~1.1.0" 2158 | gauge "~2.7.1" 2159 | set-blocking "~2.0.0" 2160 | 2161 | number-is-nan@^1.0.0: 2162 | version "1.0.1" 2163 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2164 | 2165 | oauth-sign@~0.8.1: 2166 | version "0.8.2" 2167 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 2168 | 2169 | object-assign@^2.0.0: 2170 | version "2.1.1" 2171 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" 2172 | 2173 | object-assign@^3.0.0: 2174 | version "3.0.0" 2175 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" 2176 | 2177 | object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: 2178 | version "4.1.0" 2179 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" 2180 | 2181 | object.omit@^2.0.0: 2182 | version "2.0.1" 2183 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2184 | dependencies: 2185 | for-own "^0.1.4" 2186 | is-extendable "^0.1.1" 2187 | 2188 | once@^1.3.0: 2189 | version "1.4.0" 2190 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2191 | dependencies: 2192 | wrappy "1" 2193 | 2194 | once@~1.3.0, once@~1.3.3: 2195 | version "1.3.3" 2196 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 2197 | dependencies: 2198 | wrappy "1" 2199 | 2200 | onchange@^3.2.1: 2201 | version "3.2.1" 2202 | resolved "https://registry.yarnpkg.com/onchange/-/onchange-3.2.1.tgz#7669312c8a8f94d80b4595dc8abe5d119559f7e0" 2203 | dependencies: 2204 | arrify "~1.0.1" 2205 | chokidar "~1.6.0" 2206 | cross-spawn "~4.0.0" 2207 | minimist "~1.2.0" 2208 | tree-kill "~1.1.0" 2209 | 2210 | onetime@^1.0.0: 2211 | version "1.1.0" 2212 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 2213 | 2214 | optimist@>=0.3.4: 2215 | version "0.6.1" 2216 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 2217 | dependencies: 2218 | minimist "~0.0.1" 2219 | wordwrap "~0.0.2" 2220 | 2221 | ordered-read-streams@^0.3.0: 2222 | version "0.3.0" 2223 | resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" 2224 | dependencies: 2225 | is-stream "^1.0.1" 2226 | readable-stream "^2.0.1" 2227 | 2228 | os-browserify@~0.1.1: 2229 | version "0.1.2" 2230 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" 2231 | 2232 | os-filter-obj@^1.0.0: 2233 | version "1.0.3" 2234 | resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-1.0.3.tgz#5915330d90eced557d2d938a31c6dd214d9c63ad" 2235 | 2236 | os-homedir@^1.0.0: 2237 | version "1.0.2" 2238 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2239 | 2240 | os-locale@^1.4.0: 2241 | version "1.4.0" 2242 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 2243 | dependencies: 2244 | lcid "^1.0.0" 2245 | 2246 | os-tmpdir@^1.0.0: 2247 | version "1.0.2" 2248 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2249 | 2250 | osenv@0: 2251 | version "0.1.4" 2252 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 2253 | dependencies: 2254 | os-homedir "^1.0.0" 2255 | os-tmpdir "^1.0.0" 2256 | 2257 | pako@~0.2.0: 2258 | version "0.2.9" 2259 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" 2260 | 2261 | parents@^1.0.0, parents@^1.0.1: 2262 | version "1.0.1" 2263 | resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" 2264 | dependencies: 2265 | path-platform "~0.11.15" 2266 | 2267 | parse-asn1@^5.0.0: 2268 | version "5.0.0" 2269 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" 2270 | dependencies: 2271 | asn1.js "^4.0.0" 2272 | browserify-aes "^1.0.0" 2273 | create-hash "^1.1.0" 2274 | evp_bytestokey "^1.0.0" 2275 | pbkdf2 "^3.0.3" 2276 | 2277 | parse-glob@^3.0.4: 2278 | version "3.0.4" 2279 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2280 | dependencies: 2281 | glob-base "^0.3.0" 2282 | is-dotfile "^1.0.0" 2283 | is-extglob "^1.0.0" 2284 | is-glob "^2.0.0" 2285 | 2286 | parse-json@^2.1.0, parse-json@^2.2.0: 2287 | version "2.2.0" 2288 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2289 | dependencies: 2290 | error-ex "^1.2.0" 2291 | 2292 | path-browserify@~0.0.0: 2293 | version "0.0.0" 2294 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 2295 | 2296 | path-dirname@^1.0.0: 2297 | version "1.0.2" 2298 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 2299 | 2300 | path-exists@^2.0.0: 2301 | version "2.1.0" 2302 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2303 | dependencies: 2304 | pinkie-promise "^2.0.0" 2305 | 2306 | path-is-absolute@^1.0.0: 2307 | version "1.0.1" 2308 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2309 | 2310 | path-platform@~0.11.15: 2311 | version "0.11.15" 2312 | resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" 2313 | 2314 | path-type@^1.0.0: 2315 | version "1.1.0" 2316 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2317 | dependencies: 2318 | graceful-fs "^4.1.2" 2319 | pify "^2.0.0" 2320 | pinkie-promise "^2.0.0" 2321 | 2322 | pbkdf2@^3.0.3: 2323 | version "3.0.9" 2324 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" 2325 | dependencies: 2326 | create-hmac "^1.1.2" 2327 | 2328 | pend@~1.2.0: 2329 | version "1.2.0" 2330 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 2331 | 2332 | pify@^2.0.0: 2333 | version "2.3.0" 2334 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2335 | 2336 | pinkie-promise@^2.0.0: 2337 | version "2.0.1" 2338 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2339 | dependencies: 2340 | pinkie "^2.0.0" 2341 | 2342 | pinkie@^2.0.0: 2343 | version "2.0.4" 2344 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2345 | 2346 | prepend-http@^1.0.1: 2347 | version "1.0.4" 2348 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 2349 | 2350 | preserve@^0.2.0: 2351 | version "0.2.0" 2352 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2353 | 2354 | process-nextick-args@~1.0.6: 2355 | version "1.0.7" 2356 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2357 | 2358 | process@~0.11.0: 2359 | version "0.11.9" 2360 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" 2361 | 2362 | process@~0.5.1: 2363 | version "0.5.2" 2364 | resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" 2365 | 2366 | pseudomap@^1.0.1: 2367 | version "1.0.2" 2368 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2369 | 2370 | public-encrypt@^4.0.0: 2371 | version "4.0.0" 2372 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 2373 | dependencies: 2374 | bn.js "^4.1.0" 2375 | browserify-rsa "^4.0.0" 2376 | create-hash "^1.1.0" 2377 | parse-asn1 "^5.0.0" 2378 | randombytes "^2.0.1" 2379 | 2380 | pulp@^10.0.0: 2381 | version "10.0.0" 2382 | resolved "https://registry.yarnpkg.com/pulp/-/pulp-10.0.0.tgz#934e4b8098d05f5215bbe8a5a7a76cd870f7d40b" 2383 | dependencies: 2384 | browserify "^13.1.0" 2385 | browserify-incremental "^3.0.1" 2386 | concat-stream "^1.4.6" 2387 | glob "^7.1.1" 2388 | minimatch "^3.0.3" 2389 | node-static "^0.7.9" 2390 | read "^1.0.7" 2391 | string-stream "0.0.7" 2392 | temp "^0.8.1" 2393 | through "^2.3.8" 2394 | tree-kill "^1.0.0" 2395 | watchpack "^1.0.1" 2396 | which "^1.2.1" 2397 | wordwrap "1.0.0" 2398 | 2399 | punycode@^1.3.2, punycode@^1.4.1: 2400 | version "1.4.1" 2401 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2402 | 2403 | punycode@1.3.2: 2404 | version "1.3.2" 2405 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 2406 | 2407 | purescript@^0.10.2: 2408 | version "0.10.5" 2409 | resolved "https://registry.yarnpkg.com/purescript/-/purescript-0.10.5.tgz#ddb01e27d3152721e50f2b2541fec415837e09b3" 2410 | dependencies: 2411 | async-each-series "^1.0.0" 2412 | bin-build "^2.2.0" 2413 | bin-wrapper "^3.0.2" 2414 | logalot "^2.1.0" 2415 | to-executable-name "^1.0.0" 2416 | 2417 | qs@~6.3.0: 2418 | version "6.3.0" 2419 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" 2420 | 2421 | querystring-es3@~0.2.0: 2422 | version "0.2.1" 2423 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 2424 | 2425 | querystring@0.2.0: 2426 | version "0.2.0" 2427 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 2428 | 2429 | randomatic@^1.1.3: 2430 | version "1.1.6" 2431 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 2432 | dependencies: 2433 | is-number "^2.0.2" 2434 | kind-of "^3.0.2" 2435 | 2436 | randombytes@^2.0.0, randombytes@^2.0.1: 2437 | version "2.0.3" 2438 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" 2439 | 2440 | rc@^1.1.2, rc@~1.1.6: 2441 | version "1.1.6" 2442 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" 2443 | dependencies: 2444 | deep-extend "~0.4.0" 2445 | ini "~1.3.0" 2446 | minimist "^1.2.0" 2447 | strip-json-comments "~1.0.4" 2448 | 2449 | read-all-stream@^3.0.0: 2450 | version "3.1.0" 2451 | resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" 2452 | dependencies: 2453 | pinkie-promise "^2.0.0" 2454 | readable-stream "^2.0.0" 2455 | 2456 | read-only-stream@^2.0.0: 2457 | version "2.0.0" 2458 | resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" 2459 | dependencies: 2460 | readable-stream "^2.0.2" 2461 | 2462 | read-pkg-up@^1.0.1: 2463 | version "1.0.1" 2464 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2465 | dependencies: 2466 | find-up "^1.0.0" 2467 | read-pkg "^1.0.0" 2468 | 2469 | read-pkg@^1.0.0: 2470 | version "1.1.0" 2471 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2472 | dependencies: 2473 | load-json-file "^1.0.0" 2474 | normalize-package-data "^2.3.2" 2475 | path-type "^1.0.0" 2476 | 2477 | read@^1.0.7: 2478 | version "1.0.7" 2479 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 2480 | dependencies: 2481 | mute-stream "~0.0.4" 2482 | 2483 | readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2: 2484 | version "2.2.2" 2485 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" 2486 | dependencies: 2487 | buffer-shims "^1.0.0" 2488 | core-util-is "~1.0.0" 2489 | inherits "~2.0.1" 2490 | isarray "~1.0.0" 2491 | process-nextick-args "~1.0.6" 2492 | string_decoder "~0.10.x" 2493 | util-deprecate "~1.0.1" 2494 | 2495 | "readable-stream@>=1.0.33-1 <1.1.0-0": 2496 | version "1.0.34" 2497 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 2498 | dependencies: 2499 | core-util-is "~1.0.0" 2500 | inherits "~2.0.1" 2501 | isarray "0.0.1" 2502 | string_decoder "~0.10.x" 2503 | 2504 | readable-stream@~1.1.9: 2505 | version "1.1.14" 2506 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 2507 | dependencies: 2508 | core-util-is "~1.0.0" 2509 | inherits "~2.0.1" 2510 | isarray "0.0.1" 2511 | string_decoder "~0.10.x" 2512 | 2513 | readable-stream@~2.0.0: 2514 | version "2.0.6" 2515 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" 2516 | dependencies: 2517 | core-util-is "~1.0.0" 2518 | inherits "~2.0.1" 2519 | isarray "~1.0.0" 2520 | process-nextick-args "~1.0.6" 2521 | string_decoder "~0.10.x" 2522 | util-deprecate "~1.0.1" 2523 | 2524 | readable-stream@~2.1.4: 2525 | version "2.1.5" 2526 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 2527 | dependencies: 2528 | buffer-shims "^1.0.0" 2529 | core-util-is "~1.0.0" 2530 | inherits "~2.0.1" 2531 | isarray "~1.0.0" 2532 | process-nextick-args "~1.0.6" 2533 | string_decoder "~0.10.x" 2534 | util-deprecate "~1.0.1" 2535 | 2536 | readdirp@^2.0.0: 2537 | version "2.1.0" 2538 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2539 | dependencies: 2540 | graceful-fs "^4.1.2" 2541 | minimatch "^3.0.2" 2542 | readable-stream "^2.0.2" 2543 | set-immediate-shim "^1.0.1" 2544 | 2545 | redent@^1.0.0: 2546 | version "1.0.0" 2547 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 2548 | dependencies: 2549 | indent-string "^2.1.0" 2550 | strip-indent "^1.0.1" 2551 | 2552 | regex-cache@^0.4.2: 2553 | version "0.4.3" 2554 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 2555 | dependencies: 2556 | is-equal-shallow "^0.1.3" 2557 | is-primitive "^2.0.0" 2558 | 2559 | repeat-element@^1.1.2: 2560 | version "1.1.2" 2561 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2562 | 2563 | repeat-string@^1.5.2: 2564 | version "1.6.1" 2565 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2566 | 2567 | repeating@^2.0.0: 2568 | version "2.0.1" 2569 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2570 | dependencies: 2571 | is-finite "^1.0.0" 2572 | 2573 | replace-ext@0.0.1: 2574 | version "0.0.1" 2575 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" 2576 | 2577 | request@^2.61.0, request@^2.79.0, request@2: 2578 | version "2.79.0" 2579 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 2580 | dependencies: 2581 | aws-sign2 "~0.6.0" 2582 | aws4 "^1.2.1" 2583 | caseless "~0.11.0" 2584 | combined-stream "~1.0.5" 2585 | extend "~3.0.0" 2586 | forever-agent "~0.6.1" 2587 | form-data "~2.1.1" 2588 | har-validator "~2.0.6" 2589 | hawk "~3.1.3" 2590 | http-signature "~1.1.0" 2591 | is-typedarray "~1.0.0" 2592 | isstream "~0.1.2" 2593 | json-stringify-safe "~5.0.1" 2594 | mime-types "~2.1.7" 2595 | oauth-sign "~0.8.1" 2596 | qs "~6.3.0" 2597 | stringstream "~0.0.4" 2598 | tough-cookie "~2.3.0" 2599 | tunnel-agent "~0.4.1" 2600 | uuid "^3.0.0" 2601 | 2602 | require-directory@^2.1.1: 2603 | version "2.1.1" 2604 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2605 | 2606 | require-main-filename@^1.0.1: 2607 | version "1.0.1" 2608 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2609 | 2610 | resolve@^1.1.3, resolve@^1.1.4: 2611 | version "1.2.0" 2612 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" 2613 | 2614 | resolve@1.1.7: 2615 | version "1.1.7" 2616 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 2617 | 2618 | rimraf@^2.2.6, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2: 2619 | version "2.5.4" 2620 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 2621 | dependencies: 2622 | glob "^7.0.5" 2623 | 2624 | rimraf@~2.2.6: 2625 | version "2.2.8" 2626 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" 2627 | 2628 | ripemd160@^1.0.0: 2629 | version "1.0.1" 2630 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" 2631 | 2632 | sass-graph@^2.1.1: 2633 | version "2.1.2" 2634 | resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b" 2635 | dependencies: 2636 | glob "^7.0.0" 2637 | lodash "^4.0.0" 2638 | yargs "^4.7.1" 2639 | 2640 | seek-bzip@^1.0.3: 2641 | version "1.0.5" 2642 | resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" 2643 | dependencies: 2644 | commander "~2.8.1" 2645 | 2646 | semver-regex@^1.0.0: 2647 | version "1.0.0" 2648 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" 2649 | 2650 | semver-truncate@^1.0.0: 2651 | version "1.1.2" 2652 | resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" 2653 | dependencies: 2654 | semver "^5.3.0" 2655 | 2656 | semver@^4.0.3: 2657 | version "4.3.6" 2658 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" 2659 | 2660 | semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5": 2661 | version "5.3.0" 2662 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2663 | 2664 | set-blocking@^2.0.0, set-blocking@~2.0.0: 2665 | version "2.0.0" 2666 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2667 | 2668 | set-immediate-shim@^1.0.0, set-immediate-shim@^1.0.1: 2669 | version "1.0.1" 2670 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2671 | 2672 | sha.js@^2.3.6, sha.js@~2.4.4: 2673 | version "2.4.8" 2674 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" 2675 | dependencies: 2676 | inherits "^2.0.1" 2677 | 2678 | shasum@^1.0.0: 2679 | version "1.0.2" 2680 | resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" 2681 | dependencies: 2682 | json-stable-stringify "~0.0.0" 2683 | sha.js "~2.4.4" 2684 | 2685 | shell-quote@^1.6.1: 2686 | version "1.6.1" 2687 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" 2688 | dependencies: 2689 | array-filter "~0.0.0" 2690 | array-map "~0.0.0" 2691 | array-reduce "~0.0.0" 2692 | jsonify "~0.0.0" 2693 | 2694 | signal-exit@^3.0.0: 2695 | version "3.0.2" 2696 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2697 | 2698 | sntp@1.x.x: 2699 | version "1.0.9" 2700 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2701 | dependencies: 2702 | hoek "2.x.x" 2703 | 2704 | source-map@~0.5.3: 2705 | version "0.5.6" 2706 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 2707 | 2708 | sparkles@^1.0.0: 2709 | version "1.0.0" 2710 | resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" 2711 | 2712 | spdx-correct@~1.0.0: 2713 | version "1.0.2" 2714 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2715 | dependencies: 2716 | spdx-license-ids "^1.0.2" 2717 | 2718 | spdx-expression-parse@~1.0.0: 2719 | version "1.0.4" 2720 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2721 | 2722 | spdx-license-ids@^1.0.2: 2723 | version "1.2.2" 2724 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2725 | 2726 | squeak@^1.0.0: 2727 | version "1.3.0" 2728 | resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" 2729 | dependencies: 2730 | chalk "^1.0.0" 2731 | console-stream "^0.1.1" 2732 | lpad-align "^1.0.1" 2733 | 2734 | sshpk@^1.7.0: 2735 | version "1.10.1" 2736 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" 2737 | dependencies: 2738 | asn1 "~0.2.3" 2739 | assert-plus "^1.0.0" 2740 | dashdash "^1.12.0" 2741 | getpass "^0.1.1" 2742 | optionalDependencies: 2743 | bcrypt-pbkdf "^1.0.0" 2744 | ecc-jsbn "~0.1.1" 2745 | jodid25519 "^1.0.0" 2746 | jsbn "~0.1.0" 2747 | tweetnacl "~0.14.0" 2748 | 2749 | stat-mode@^0.2.0: 2750 | version "0.2.2" 2751 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" 2752 | 2753 | stdout-stream@^1.4.0: 2754 | version "1.4.0" 2755 | resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" 2756 | dependencies: 2757 | readable-stream "^2.0.1" 2758 | 2759 | stream-browserify@^2.0.0: 2760 | version "2.0.1" 2761 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 2762 | dependencies: 2763 | inherits "~2.0.1" 2764 | readable-stream "^2.0.2" 2765 | 2766 | stream-combiner2@^1.1.1: 2767 | version "1.1.1" 2768 | resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" 2769 | dependencies: 2770 | duplexer2 "~0.1.0" 2771 | readable-stream "^2.0.2" 2772 | 2773 | stream-http@^2.0.0: 2774 | version "2.6.0" 2775 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12" 2776 | dependencies: 2777 | builtin-status-codes "^3.0.0" 2778 | inherits "^2.0.1" 2779 | readable-stream "^2.1.0" 2780 | to-arraybuffer "^1.0.0" 2781 | xtend "^4.0.0" 2782 | 2783 | stream-shift@^1.0.0: 2784 | version "1.0.0" 2785 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 2786 | 2787 | stream-splicer@^2.0.0: 2788 | version "2.0.0" 2789 | resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" 2790 | dependencies: 2791 | inherits "^2.0.1" 2792 | readable-stream "^2.0.2" 2793 | 2794 | string_decoder@~0.10.0, string_decoder@~0.10.x: 2795 | version "0.10.31" 2796 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2797 | 2798 | string-stream@0.0.7: 2799 | version "0.0.7" 2800 | resolved "https://registry.yarnpkg.com/string-stream/-/string-stream-0.0.7.tgz#cfcde82799fa62f303429aaa79336ee8834332fe" 2801 | 2802 | string-template@~0.2.0: 2803 | version "0.2.1" 2804 | resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" 2805 | 2806 | string-width@^1.0.1: 2807 | version "1.0.2" 2808 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2809 | dependencies: 2810 | code-point-at "^1.0.0" 2811 | is-fullwidth-code-point "^1.0.0" 2812 | strip-ansi "^3.0.0" 2813 | 2814 | stringstream@~0.0.4: 2815 | version "0.0.5" 2816 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2817 | 2818 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2819 | version "3.0.1" 2820 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2821 | dependencies: 2822 | ansi-regex "^2.0.0" 2823 | 2824 | strip-bom-stream@^1.0.0: 2825 | version "1.0.0" 2826 | resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" 2827 | dependencies: 2828 | first-chunk-stream "^1.0.0" 2829 | strip-bom "^2.0.0" 2830 | 2831 | strip-bom@^2.0.0: 2832 | version "2.0.0" 2833 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2834 | dependencies: 2835 | is-utf8 "^0.2.0" 2836 | 2837 | strip-dirs@^1.0.0: 2838 | version "1.1.1" 2839 | resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-1.1.1.tgz#960bbd1287844f3975a4558aa103a8255e2456a0" 2840 | dependencies: 2841 | chalk "^1.0.0" 2842 | get-stdin "^4.0.1" 2843 | is-absolute "^0.1.5" 2844 | is-natural-number "^2.0.0" 2845 | minimist "^1.1.0" 2846 | sum-up "^1.0.1" 2847 | 2848 | strip-indent@^1.0.1: 2849 | version "1.0.1" 2850 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 2851 | dependencies: 2852 | get-stdin "^4.0.1" 2853 | 2854 | strip-json-comments@~1.0.4: 2855 | version "1.0.4" 2856 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 2857 | 2858 | strip-outer@^1.0.0: 2859 | version "1.0.0" 2860 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.0.tgz#aac0ba60d2e90c5d4f275fd8869fd9a2d310ffb8" 2861 | dependencies: 2862 | escape-string-regexp "^1.0.2" 2863 | 2864 | subarg@^1.0.0: 2865 | version "1.0.0" 2866 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" 2867 | dependencies: 2868 | minimist "^1.1.0" 2869 | 2870 | sum-up@^1.0.1: 2871 | version "1.0.3" 2872 | resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" 2873 | dependencies: 2874 | chalk "^1.0.0" 2875 | 2876 | supports-color@^0.2.0: 2877 | version "0.2.0" 2878 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" 2879 | 2880 | supports-color@^2.0.0: 2881 | version "2.0.0" 2882 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2883 | 2884 | syntax-error@^1.1.1: 2885 | version "1.1.6" 2886 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz#b4549706d386cc1c1dc7c2423f18579b6cade710" 2887 | dependencies: 2888 | acorn "^2.7.0" 2889 | 2890 | tar-pack@~3.3.0: 2891 | version "3.3.0" 2892 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" 2893 | dependencies: 2894 | debug "~2.2.0" 2895 | fstream "~1.0.10" 2896 | fstream-ignore "~1.0.5" 2897 | once "~1.3.3" 2898 | readable-stream "~2.1.4" 2899 | rimraf "~2.5.1" 2900 | tar "~2.2.1" 2901 | uid-number "~0.0.6" 2902 | 2903 | tar-stream@^1.1.1: 2904 | version "1.5.2" 2905 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" 2906 | dependencies: 2907 | bl "^1.0.0" 2908 | end-of-stream "^1.0.0" 2909 | readable-stream "^2.0.0" 2910 | xtend "^4.0.0" 2911 | 2912 | tar@^2.0.0, tar@~2.2.1: 2913 | version "2.2.1" 2914 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2915 | dependencies: 2916 | block-stream "*" 2917 | fstream "^1.0.2" 2918 | inherits "2" 2919 | 2920 | temp@^0.8.1: 2921 | version "0.8.3" 2922 | resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" 2923 | dependencies: 2924 | os-tmpdir "^1.0.0" 2925 | rimraf "~2.2.6" 2926 | 2927 | tempfile@^1.0.0: 2928 | version "1.1.1" 2929 | resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" 2930 | dependencies: 2931 | os-tmpdir "^1.0.0" 2932 | uuid "^2.0.1" 2933 | 2934 | through@^2.3.8, "through@>=2.2.7 <3": 2935 | version "2.3.8" 2936 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2937 | 2938 | through2-filter@^2.0.0: 2939 | version "2.0.0" 2940 | resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" 2941 | dependencies: 2942 | through2 "~2.0.0" 2943 | xtend "~4.0.0" 2944 | 2945 | through2@^0.6.0, through2@^0.6.1: 2946 | version "0.6.5" 2947 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" 2948 | dependencies: 2949 | readable-stream ">=1.0.33-1 <1.1.0-0" 2950 | xtend ">=4.0.0 <4.1.0-0" 2951 | 2952 | through2@^2.0.0, through2@~2.0.0: 2953 | version "2.0.3" 2954 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 2955 | dependencies: 2956 | readable-stream "^2.1.5" 2957 | xtend "~4.0.1" 2958 | 2959 | time-stamp@^1.0.0: 2960 | version "1.0.1" 2961 | resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" 2962 | 2963 | timed-out@^3.0.0: 2964 | version "3.1.3" 2965 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" 2966 | 2967 | timers-browserify@^1.0.1: 2968 | version "1.4.2" 2969 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" 2970 | dependencies: 2971 | process "~0.11.0" 2972 | 2973 | to-absolute-glob@^0.1.1: 2974 | version "0.1.1" 2975 | resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" 2976 | dependencies: 2977 | extend-shallow "^2.0.1" 2978 | 2979 | to-arraybuffer@^1.0.0: 2980 | version "1.0.1" 2981 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2982 | 2983 | to-executable-name@^1.0.0: 2984 | version "1.1.0" 2985 | resolved "https://registry.yarnpkg.com/to-executable-name/-/to-executable-name-1.1.0.tgz#3efbf9a370e5d7fb7820530df76f085959b27778" 2986 | 2987 | tough-cookie@~2.3.0: 2988 | version "2.3.2" 2989 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2990 | dependencies: 2991 | punycode "^1.4.1" 2992 | 2993 | tree-kill@^1.0.0, tree-kill@~1.1.0: 2994 | version "1.1.0" 2995 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.1.0.tgz#c963dcf03722892ec59cba569e940b71954d1729" 2996 | 2997 | trim-newlines@^1.0.0: 2998 | version "1.0.0" 2999 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 3000 | 3001 | trim-repeated@^1.0.0: 3002 | version "1.0.0" 3003 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" 3004 | dependencies: 3005 | escape-string-regexp "^1.0.2" 3006 | 3007 | tty-browserify@~0.0.0: 3008 | version "0.0.0" 3009 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 3010 | 3011 | tunnel-agent@^0.4.0, tunnel-agent@~0.4.1: 3012 | version "0.4.3" 3013 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 3014 | 3015 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 3016 | version "0.14.5" 3017 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 3018 | 3019 | typedarray@^0.0.6, typedarray@~0.0.5: 3020 | version "0.0.6" 3021 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 3022 | 3023 | uid-number@~0.0.6: 3024 | version "0.0.6" 3025 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 3026 | 3027 | umd@^3.0.0: 3028 | version "3.0.1" 3029 | resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" 3030 | 3031 | unique-stream@^2.0.2: 3032 | version "2.2.1" 3033 | resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" 3034 | dependencies: 3035 | json-stable-stringify "^1.0.0" 3036 | through2-filter "^2.0.0" 3037 | 3038 | unzip-response@^1.0.2: 3039 | version "1.0.2" 3040 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" 3041 | 3042 | url-parse-lax@^1.0.0: 3043 | version "1.0.0" 3044 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 3045 | dependencies: 3046 | prepend-http "^1.0.1" 3047 | 3048 | url-regex@^3.0.0: 3049 | version "3.2.0" 3050 | resolved "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" 3051 | dependencies: 3052 | ip-regex "^1.0.1" 3053 | 3054 | url@~0.11.0: 3055 | version "0.11.0" 3056 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 3057 | dependencies: 3058 | punycode "1.3.2" 3059 | querystring "0.2.0" 3060 | 3061 | util-deprecate@~1.0.1: 3062 | version "1.0.2" 3063 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3064 | 3065 | util@~0.10.1, util@0.10.3: 3066 | version "0.10.3" 3067 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 3068 | dependencies: 3069 | inherits "2.0.1" 3070 | 3071 | uuid@^2.0.1: 3072 | version "2.0.3" 3073 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" 3074 | 3075 | uuid@^3.0.0: 3076 | version "3.0.1" 3077 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 3078 | 3079 | vali-date@^1.0.0: 3080 | version "1.0.0" 3081 | resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" 3082 | 3083 | validate-npm-package-license@^3.0.1: 3084 | version "3.0.1" 3085 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 3086 | dependencies: 3087 | spdx-correct "~1.0.0" 3088 | spdx-expression-parse "~1.0.0" 3089 | 3090 | verror@1.3.6: 3091 | version "1.3.6" 3092 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 3093 | dependencies: 3094 | extsprintf "1.0.2" 3095 | 3096 | vinyl-assign@^1.0.1: 3097 | version "1.2.1" 3098 | resolved "https://registry.yarnpkg.com/vinyl-assign/-/vinyl-assign-1.2.1.tgz#4d198891b5515911d771a8cd9c5480a46a074a45" 3099 | dependencies: 3100 | object-assign "^4.0.1" 3101 | readable-stream "^2.0.0" 3102 | 3103 | vinyl-fs@^2.2.0: 3104 | version "2.4.4" 3105 | resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" 3106 | dependencies: 3107 | duplexify "^3.2.0" 3108 | glob-stream "^5.3.2" 3109 | graceful-fs "^4.0.0" 3110 | gulp-sourcemaps "1.6.0" 3111 | is-valid-glob "^0.3.0" 3112 | lazystream "^1.0.0" 3113 | lodash.isequal "^4.0.0" 3114 | merge-stream "^1.0.0" 3115 | mkdirp "^0.5.0" 3116 | object-assign "^4.0.0" 3117 | readable-stream "^2.0.4" 3118 | strip-bom "^2.0.0" 3119 | strip-bom-stream "^1.0.0" 3120 | through2 "^2.0.0" 3121 | through2-filter "^2.0.0" 3122 | vali-date "^1.0.0" 3123 | vinyl "^1.0.0" 3124 | 3125 | vinyl@^0.4.3: 3126 | version "0.4.6" 3127 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" 3128 | dependencies: 3129 | clone "^0.2.0" 3130 | clone-stats "^0.0.1" 3131 | 3132 | vinyl@^0.5.0: 3133 | version "0.5.3" 3134 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" 3135 | dependencies: 3136 | clone "^1.0.0" 3137 | clone-stats "^0.0.1" 3138 | replace-ext "0.0.1" 3139 | 3140 | vinyl@^1.0.0: 3141 | version "1.2.0" 3142 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" 3143 | dependencies: 3144 | clone "^1.0.0" 3145 | clone-stats "^0.0.1" 3146 | replace-ext "0.0.1" 3147 | 3148 | virtual-dom@^2.1.1: 3149 | version "2.1.1" 3150 | resolved "https://registry.yarnpkg.com/virtual-dom/-/virtual-dom-2.1.1.tgz#80eda2d481b9ede0c049118cefcb4a05f21d1375" 3151 | dependencies: 3152 | browser-split "0.0.1" 3153 | error "^4.3.0" 3154 | ev-store "^7.0.0" 3155 | global "^4.3.0" 3156 | is-object "^1.0.1" 3157 | next-tick "^0.2.2" 3158 | x-is-array "0.1.0" 3159 | x-is-string "0.1.0" 3160 | 3161 | vm-browserify@~0.0.1: 3162 | version "0.0.4" 3163 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 3164 | dependencies: 3165 | indexof "0.0.1" 3166 | 3167 | ware@^1.2.0: 3168 | version "1.3.0" 3169 | resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" 3170 | dependencies: 3171 | wrap-fn "^0.1.0" 3172 | 3173 | watchpack@^1.0.1: 3174 | version "1.2.0" 3175 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.0.tgz#15d4620f1e7471f13fcb551d5c030d2c3eb42dbb" 3176 | dependencies: 3177 | async "^2.1.2" 3178 | chokidar "^1.4.3" 3179 | graceful-fs "^4.1.2" 3180 | 3181 | which-module@^1.0.0: 3182 | version "1.0.0" 3183 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 3184 | 3185 | which@^1.2.1, which@^1.2.9, which@1: 3186 | version "1.2.12" 3187 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" 3188 | dependencies: 3189 | isexe "^1.1.1" 3190 | 3191 | wide-align@^1.1.0: 3192 | version "1.1.0" 3193 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 3194 | dependencies: 3195 | string-width "^1.0.1" 3196 | 3197 | window-size@^0.2.0: 3198 | version "0.2.0" 3199 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" 3200 | 3201 | wordwrap@~0.0.2: 3202 | version "0.0.3" 3203 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 3204 | 3205 | wordwrap@1.0.0: 3206 | version "1.0.0" 3207 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3208 | 3209 | wrap-ansi@^2.0.0: 3210 | version "2.1.0" 3211 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3212 | dependencies: 3213 | string-width "^1.0.1" 3214 | strip-ansi "^3.0.1" 3215 | 3216 | wrap-fn@^0.1.0: 3217 | version "0.1.5" 3218 | resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" 3219 | dependencies: 3220 | co "3.1.0" 3221 | 3222 | wrappy@1: 3223 | version "1.0.2" 3224 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3225 | 3226 | x-is-array@0.1.0: 3227 | version "0.1.0" 3228 | resolved "https://registry.yarnpkg.com/x-is-array/-/x-is-array-0.1.0.tgz#de520171d47b3f416f5587d629b89d26b12dc29d" 3229 | 3230 | x-is-string@0.1.0: 3231 | version "0.1.0" 3232 | resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" 3233 | 3234 | xtend@^4.0.0, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1: 3235 | version "4.0.1" 3236 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3237 | 3238 | y18n@^3.2.1: 3239 | version "3.2.1" 3240 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3241 | 3242 | yallist@^2.0.0: 3243 | version "2.0.0" 3244 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4" 3245 | 3246 | yargs-parser@^2.4.1: 3247 | version "2.4.1" 3248 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" 3249 | dependencies: 3250 | camelcase "^3.0.0" 3251 | lodash.assign "^4.0.6" 3252 | 3253 | yargs@^4.7.1: 3254 | version "4.8.1" 3255 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" 3256 | dependencies: 3257 | cliui "^3.2.0" 3258 | decamelize "^1.1.1" 3259 | get-caller-file "^1.0.1" 3260 | lodash.assign "^4.0.3" 3261 | os-locale "^1.4.0" 3262 | read-pkg-up "^1.0.1" 3263 | require-directory "^2.1.1" 3264 | require-main-filename "^1.0.1" 3265 | set-blocking "^2.0.0" 3266 | string-width "^1.0.1" 3267 | which-module "^1.0.0" 3268 | window-size "^0.2.0" 3269 | y18n "^3.2.1" 3270 | yargs-parser "^2.4.1" 3271 | 3272 | yauzl@^2.2.1: 3273 | version "2.7.0" 3274 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.7.0.tgz#e21d847868b496fc29eaec23ee87fdd33e9b2bce" 3275 | dependencies: 3276 | buffer-crc32 "~0.2.3" 3277 | fd-slicer "~1.0.1" 3278 | 3279 | --------------------------------------------------------------------------------