~sirn/fanboi2

e9e21d219898091a96906217076682f6e8eb4862 — Kridsada Thanabulpong 2 years ago f81d7f7
Simplify deployments (#51)

* Drop Pipenv in favor for a simpler Virtualenv+Makefile based workflow.
* Move assets back to root directory.
* Cleanup Dockerfile and use S6 to supervise/reap process.
* Update TypeScript assets to work under newer TypeScript version.
M .gitignore => .gitignore +12 -12
@@ 6,31 6,31 @@ Thumbs.db
static/
tmp/
.eggs/
*.dump
*.egg-info/
*.sqlite
*.pyc
*.env
*.log
*.pyc
*.sqlite
*.tmp
*.dump
.env

# Building
.build/

# Assets
/assets/*/
!/assets/app/
!/assets/admin/
!/assets/vendor/
!/assets/legacy/
node_modules/

# Development
!alembic.ini
*.gz
*.iml
*.ini
*.venv
.coverage
.dir-locals.el
.idea
.noseids
.tool-versions
.vagrant
.venv
out/
node_modules/
\ No newline at end of file
node_modules/
out/
\ No newline at end of file

M .pre-commit-config.yaml => .pre-commit-config.yaml +15 -7
@@ 1,4 1,13 @@
repos:
  - repo: local
    hooks:
      - id: prettier
        name: prettier
        entry: prettier --write
        language: node
        language_version: system
        files: \.(scss|ts|js|json)$
        additional_dependencies: ['prettier']
  - repo: https://github.com/ambv/black
    rev: stable
    hooks:


@@ 12,11 21,10 @@ repos:
        name: flake8
        additional_dependencies: ['flake8-bugbear']
        args: [--config=setup.cfg]
  - repo: local
  - repo: https://github.com/awebdeveloper/pre-commit-stylelint
    rev: 0.0.2
    hooks:
      - id: prettier
        name: prettier
        entry: prettier --write
        language: node
        files: \.(scss|ts|js)$
        additional_dependencies: ['prettier']
      - id: stylelint
        name: stylelint
        language_version: system
        additional_dependencies: ['stylelint', 'stylelint-scss', 'stylelint-config-recommended-scss']

A .stylelintrc => .stylelintrc +3 -0
@@ 0,0 1,3 @@
{
    "extends": "stylelint-config-recommended-scss"
}
\ No newline at end of file

M .travis.yml => .travis.yml +8 -2
@@ 1,10 1,12 @@
language: python

cache: pip

python:
  - "3.6"

install:
  - make devinit
  - make .build/.build-test

before_script:
  - psql -c "create database fanboi2;" -U postgres


@@ 16,4 18,8 @@ env:
  - POSTGRESQL_TEST_DATABASE=postgresql://postgres@localhost:5432/fanboi2

notifications:
  email: false
  email:
    recipients:
      - build@fanboi.ch
    on_success: always
    on_failure: always

M CHANGES.rst => CHANGES.rst +2 -2
@@ 1,5 1,5 @@
0.31.0
======
2018.10
=======

- [Change] Merge based rule and banning rules as override rules no longer exists.


M Dockerfile => Dockerfile +59 -16
@@ 1,22 1,65 @@
FROM python:3.6-stretch
RUN pip install pipenv==11.1.3
FROM node:8-alpine as assets

RUN apt-get update -yq \
 && apt-get install curl gnupg -yq \
 && curl -sL https://deb.nodesource.com/setup_8.x | bash \
 && apt-get install nodejs -yq \
 && apt-get autoremove -y
RUN npm install -g yarn
WORKDIR /src

COPY Makefile gulpfile.js package.json tsconfig.json yarn.lock ./
COPY assets ./assets

RUN set -xe \
 && apk add --update --no-cache --virtual .assets-build \
        make \
 && make assets \
 && apk del .assets-build

FROM python:3.6-alpine

ENV S6_VERSION 1.21.7.0

RUN set -xe \
 && apk add --update --no-cache --virtual .s6-fetch \
        ca-certificates \
        curl \
 && S6_DOWNLOAD_URL="https://github.com/just-containers/s6-overlay/releases/download/v${S6_VERSION}/s6-overlay-amd64.tar.gz" \
 && S6_DOWNLOAD_SHA256="7ffd83ad59d00d4c92d594f9c1649faa99c0b87367b920787d185f8335cbac47" \
 && curl -fsL -o s6-overlay.tar.gz "${S6_DOWNLOAD_URL}" \
 && echo "${S6_DOWNLOAD_SHA256}  s6-overlay.tar.gz" |sha256sum -c - \
 && tar -xzC / -f s6-overlay.tar.gz \
 && rm s6-overlay.tar.gz \
 && apk del .s6-fetch

WORKDIR /src
RUN touch README.rst CHANGES.rst
COPY Makefile ./

COPY Pipfile Pipfile.lock setup.py setup.cfg ./
RUN make init
COPY Makefile setup.py setup.cfg ./

RUN set -xe \
 && apk add --update --no-cache --virtual .app-build \
        build-base \
        libffi-dev \
        postgresql-dev \
        py3-virtualenv \
 && make prod \
 && rm -rf /root/.cache \
 && apk del .app-build

COPY alembic.ini ./
COPY fanboi2/ ./fanboi2
COPY migration/ ./migration

COPY --from=assets /src/fanboi2/static ./fanboi2/static

ARG user=fanboi2
ARG group=fanboi2
ARG uid=10000
ARG gid=10000

COPY vendor/rootfs/ /

RUN set -xe \
 && addgroup -g ${gid} ${group} \
 && adduser -D -h /app -u ${uid} -G ${group} ${user} \
 && chown -R "${uid}:${gid}" /src \
 && chmod +x /entrypoint

COPY . .
RUN make assets
ENTRYPOINT ["/init", "/entrypoint"]

ENTRYPOINT ["pipenv", "run"]
CMD ["fbctl", "serve"]
CMD ["serve"]

M MANIFEST.in => MANIFEST.in +2 -2
@@ 1,2 1,2 @@
include *.txt *.ini *.cfg *.rst
recursive-include fanboi2 *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
include *.ini *.cfg *.rst
recursive-include fanboi2 *.ico *.png *.css *.gif *.jpg *.mako *.js

M Makefile => Makefile +114 -42
@@ 1,64 1,136 @@
LDFLAGS     ?= -L/usr/local/lib
CFLAGS      ?= -I/usr/local/include
LDFLAGS     += -L/usr/local/lib
CFLAGS      += -I/usr/local/include

PIPENV      ?= pipenv
SETENV      := env LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)"
BUILDDIR    ?= .build
VENVDIR     ?= .venv
ENVFILE     ?= .env
YARN        ?= yarn

all: prod
VIRTUALENV  ?= virtualenv
ALEMBIC      = $(VENVDIR)/bin/alembic
FBCTL        = $(VENVDIR)/bin/fbctl
FBCELERY     = $(VENVDIR)/bin/fbcelery
HONCHO       = $(VENVDIR)/bin/honcho
PIP          = $(VENVDIR)/bin/pip3
PRECOMMIT    = $(VENVDIR)/bin/pre-commit
PYTHON       = $(VENVDIR)/bin/python3

$(VERBOSE).SILENT:
BUILDENV     = env LDFLAGS="$(LDFLAGS)" CFLAGS="$(CFLAGS)"
RUNENV       = env $$(test -f $(ENVFILE) && cat $(ENVFILE))

ASSETS_SRCS != find assets/ -type f


all: assets prod


## Build target
##


$(VENVDIR):
	$(VIRTUALENV) -p python3.6 $(VENVDIR)


$(BUILDDIR):
	mkdir -p $@


$(BUILDDIR)/.build: $(VENVDIR) $(BUILDDIR) setup.py
	$(BUILDENV) $(PIP) install -e .
	touch $(BUILDDIR)/.build


$(BUILDDIR)/.build-test: $(VENVDIR) $(BUILDDIR) setup.py
	$(BUILDENV) $(PIP) install -e .[test]
	touch \
		$(BUILDDIR)/.build \
		$(BUILDDIR)/.build-test


$(BUILDDIR)/.build-dev: $(VENVDIR) $(BUILDDIR) setup.py
	$(BUILDENV) $(PIP) install -e .[test,dev]
	touch \
		$(BUILDDIR)/.build \
		$(BUILDDIR)/.build-test \
		$(BUILDDIR)/.build-dev


node_modules: package.json yarn.lock
	$(YARN) install

# ----------------------------------------------------------------------
# Prod
# ----------------------------------------------------------------------

.PHONY: prod init
$(BUILDDIR)/.build-assets: $(ASSETS_SRCS) $(BUILDDIR) node_modules
	$(YARN) run gulp
	touch $(BUILDDIR)/.build-assets

prod: init assets

init:
	$(SETENV) $(PIPENV) install
## Production target
##

# ----------------------------------------------------------------------
# Development
# ----------------------------------------------------------------------

.PHONY: develop devinit devhook devserver
prod: $(BUILDDIR)/.build

develop: devinit assets

devinit:
	$(SETENV) $(PIPENV) install --dev $(ARGS)
serve: prod
	$(RUNENV) $(FBCTL) serve

devhook:
	$(PIPENV) run pre-commit install $(ARGS)

devserver:
	$(PIPENV) run honcho start -f Procfile.dev $(ARGS)
worker: prod
	$(RUNENV) $(FBCELERY) worker

# ----------------------------------------------------------------------
# Assets
# ----------------------------------------------------------------------

.PHONY: assets
assets: $(BUILDDIR)/.build-assets

assets:
	cd assets && make

# ----------------------------------------------------------------------
# Testing
# ----------------------------------------------------------------------
## Development target
##

.PHONY: test

test:
	$(PIPENV) run nosetests $(ARGS)
dev: $(BUILDDIR)/.build-dev

# ----------------------------------------------------------------------
# Misc
# ----------------------------------------------------------------------

.PHONY: migrate
devrun: dev $(BUILDDIR)/.build-assets
	$(HONCHO) start \
		-e $(ENVFILE) \
		-f vendor/honcho/Procfile.dev


devhook: dev
	$(PRECOMMIT) install $(ARGS)


devserve: dev
	$(RUNENV) $(FBCTL) serve --reload


devassets: $(BUILDDIR)/.build-assets
	$(YARN) run gulp watch


test: $(BUILDDIR)/.build-test
	$(PYTHON) setup.py nosetests


## Maintenance target
##


migrate: $(BUILDDIR)/.build
	$(RUNENV) $(ALEMBIC) upgrade head $(ARGS)


clean:
	rm -rf \
		$(BUILDDIR) \
		fanboi2.egg-info \
		fanboi2/__pycache__ \
		fanboi2/static \
		node_modules \
		$(VENVDIR)


$(VERBOSE).SILENT:


migrate:
	$(PIPENV) run alembic upgrade head $(ARGS)
.PHONY: all prod serve worker assets dev devrun devserver devassets test migrate clean

D Pipfile => Pipfile +0 -23
@@ 1,23 0,0 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
"e1839a8" = {path = ".", editable = true}

[dev-packages]
coverage = "*"
nose = "*"
rednose = "*"
"flake8" = "*"
"flake8-bugbear" = "*"
pre-commit = "*"
black = "*"
honcho = "*"

[requires]
python_version = "3.6"

[pipenv]
allow_prereleases = true

D Pipfile.lock => Pipfile.lock +0 -704
@@ 1,704 0,0 @@
{
    "_meta": {
        "hash": {
            "sha256": "c55be80914159148c81d269e47c447bcae27e2f55d06a460ca7cef5060433278"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.6"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "alembic": {
            "hashes": [
                "sha256:85bd3ea7633024e4930900bc64fb58f9742dedbc6ebb6ecf25be2ea9a3c1b32e"
            ],
            "version": "==0.9.9"
        },
        "amqp": {
            "hashes": [
                "sha256:4e28d3ea61a64ae61830000c909662cb053642efddbe96503db0e7783a6ee85b",
                "sha256:cba1ace9d4ff6049b190d8b7991f9c1006b443a5238021aca96dd6ad2ac9da22"
            ],
            "version": "==2.2.2"
        },
        "argon2-cffi": {
            "hashes": [
                "sha256:05dd15949be3a7d9f65807fe58fad70526023a319747054bb89da209c4071a33",
                "sha256:07480018d77f4c7447924e6c44c5ba1789a918413fe3efaa391a097958bbd9f6",
                "sha256:10e702dbd98a2148d22de9524a605021bdc55d05304beb90ea801ba58c4a4f1e",
                "sha256:131effd5eabbe08649bc672b5d602fd6e2772b03cfec2ddb2795f9d9babe3fba",
                "sha256:3f3b48b4802e98bb9692d72108ecad2fecea969c254c17660b70ce5730bbe4a6",
                "sha256:4c510232a96e991079a743a9310d3c9a014856cdbca644fccc496db2a1ff0e17",
                "sha256:5f1099b0f5ee4a7148bbd323503983aa4387ab16769ff9b5c51d26f6b0f1719e",
                "sha256:67452b1f10e873ececcea657c25d063e4bb4007e115227a53157369de5848992",
                "sha256:77a3d50e6325df79499e1220b7c38adbd30588c2f6d7c2d764fddb2d3b02e650",
                "sha256:7e4b75611b73f53012117ad21cdde7a17b32d1e99ff6799f22d827eb83a2a59b",
                "sha256:7f4b6d7c38258e76c1db293a6cf55b7e31701927fc773c5108e57578c7f8e09a",
                "sha256:82db759b8a495aaed51aec4762b0f44e5e7ad80256e8baf512ae70cdb3b28c50",
                "sha256:92b3f8f93b19081d520d911f1ce5902693edeeab2181c08aa0bb4130adba51aa",
                "sha256:93f631fa567dbf948f26874476c9e9afb51e0a835372bf1a319df0c5aa071bfb",
                "sha256:9befaa6d9798d9771b8176174ba82160beaf1dcdbcc63cd2dc5212f723e5e2a3",
                "sha256:a14e6d99787a2972d3802615911770fcba9c904401fb0dfb60bdeb250b4c5110",
                "sha256:c60764fe7f62cc52a74f326e366c60f7aa33a1586c8d02107394a01ae9db6e91",
                "sha256:cba2c8c539bed691513ae1bcd5a7da632d2aa2410d8b8ebdf56026eac7e2193f",
                "sha256:d79c918cf8bf981cd23b43a1a547cd1eececb77f3607ba9fa7c0ec01bf1f05a5",
                "sha256:dc3028ec541146924e3c45973b458a7acf390b9e9ee0b64a13ac0853109a69bc",
                "sha256:eb3fcb55224a47b8d50830561977c64761eaad9e349af0b2241eab089af44a14",
                "sha256:f732ca584e81491cc11e3d12e18cbd8c63e137b3f461f378426a6fdaaef47fb0",
                "sha256:fcd5681388d1f18e4a7ee3ff7a9b68650bc04db044b5a0a832728cbce182806d"
            ],
            "version": "==18.1.0"
        },
        "billiard": {
            "hashes": [
                "sha256:1d7b22bdc47aa52841120fcd22a74ae4fc8c13e9d3935643098184f5788c3ce6",
                "sha256:abd9ce008c9a71ccde2c816f8daa36246e92a21e6a799831b887d88277187ecd"
            ],
            "version": "==3.5.0.3"
        },
        "celery": {
            "hashes": [
                "sha256:6fc4678d1692af97e137b2a9f1c04efd8e7e2fb7134c5c5ad60738cdd927762f",
                "sha256:d1f2a3359bdbdfb344edce98b8e891f5fe64f8a11c5a45538ec20ac237c971f5"
            ],
            "version": "==4.1.1"
        },
        "certifi": {
            "hashes": [
                "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7",
                "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0"
            ],
            "version": "==2018.4.16"
        },
        "cffi": {
            "hashes": [
                "sha256:151b7eefd035c56b2b2e1eb9963c90c6302dc15fbd8c1c0a83a163ff2c7d7743",
                "sha256:1553d1e99f035ace1c0544050622b7bc963374a00c467edafac50ad7bd276aef",
                "sha256:1b0493c091a1898f1136e3f4f991a784437fac3673780ff9de3bcf46c80b6b50",
                "sha256:2ba8a45822b7aee805ab49abfe7eec16b90587f7f26df20c71dd89e45a97076f",
                "sha256:3c85641778460581c42924384f5e68076d724ceac0f267d66c757f7535069c93",
                "sha256:3eb6434197633b7748cea30bf0ba9f66727cdce45117a712b29a443943733257",
                "sha256:4c91af6e967c2015729d3e69c2e51d92f9898c330d6a851bf8f121236f3defd3",
                "sha256:770f3782b31f50b68627e22f91cb182c48c47c02eb405fd689472aa7b7aa16dc",
                "sha256:79f9b6f7c46ae1f8ded75f68cf8ad50e5729ed4d590c74840471fc2823457d04",
                "sha256:7a33145e04d44ce95bcd71e522b478d282ad0eafaf34fe1ec5bbd73e662f22b6",
                "sha256:857959354ae3a6fa3da6651b966d13b0a8bed6bbc87a0de7b38a549db1d2a359",
                "sha256:87f37fe5130574ff76c17cab61e7d2538a16f843bb7bca8ebbc4b12de3078596",
                "sha256:95d5251e4b5ca00061f9d9f3d6fe537247e145a8524ae9fd30a2f8fbce993b5b",
                "sha256:9d1d3e63a4afdc29bd76ce6aa9d58c771cd1599fbba8cf5057e7860b203710dd",
                "sha256:a36c5c154f9d42ec176e6e620cb0dd275744aa1d804786a71ac37dc3661a5e95",
                "sha256:ae5e35a2c189d397b91034642cb0eab0e346f776ec2eb44a49a459e6615d6e2e",
                "sha256:b0f7d4a3df8f06cf49f9f121bead236e328074de6449866515cea4907bbc63d6",
                "sha256:b75110fb114fa366b29a027d0c9be3709579602ae111ff61674d28c93606acca",
                "sha256:ba5e697569f84b13640c9e193170e89c13c6244c24400fc57e88724ef610cd31",
                "sha256:be2a9b390f77fd7676d80bc3cdc4f8edb940d8c198ed2d8c0be1319018c778e1",
                "sha256:d5d8555d9bfc3f02385c1c37e9f998e2011f0db4f90e250e5bc0c0a85a813085",
                "sha256:e55e22ac0a30023426564b1059b035973ec82186ddddbac867078435801c7801",
                "sha256:e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4",
                "sha256:ecbb7b01409e9b782df5ded849c178a0aa7c906cf8c5a67368047daab282b184",
                "sha256:ed01918d545a38998bfa5902c7c00e0fee90e957ce036a4000a88e3fe2264917",
                "sha256:edabd457cd23a02965166026fd9bfd196f4324fe6032e866d0f3bd0301cd486f",
                "sha256:fdf1c1dc5bafc32bc5d08b054f94d659422b05aba244d6be4ddc1c72d9aa70fb"
            ],
            "version": "==1.11.5"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "dogpile.cache": {
            "hashes": [
                "sha256:631197e78b4471bb0e93d0a86264c45736bc9ae43b4205d581dcc34fbe9b5f31"
            ],
            "version": "==0.6.5"
        },
        "e1839a8": {
            "editable": true,
            "path": "."
        },
        "geoip2": {
            "hashes": [
                "sha256:a37ddac2d200ffb97c736da8b8ba9d5d8dc47da6ec0f162a461b681ecac53a14",
                "sha256:f7ffe9d258e71a42cf622ce6350d976de1d0312b9f2fbce3975c7d838b57ecf0"
            ],
            "version": "==2.9.0"
        },
        "hiredis": {
            "hashes": [
                "sha256:3f8b334c59c474e2b92580d7f4fb6503a08c013ae8a877ffc5c252f899d90ac6"
            ],
            "version": "==0.2.0"
        },
        "hupper": {
            "hashes": [
                "sha256:20387760e4d32bd4813c2cabc8e51d92b2c22c546102a0af182c33c152cd7ede",
                "sha256:6b8133e9c5cc0a8ec422a29ef3b38aea2c49a809a0af73f419a78a7015b32615"
            ],
            "version": "==1.3"
        },
        "idna": {
            "hashes": [
                "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f",
                "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4"
            ],
            "version": "==2.6"
        },
        "isodate": {
            "hashes": [
                "sha256:2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8",
                "sha256:aa4d33c06640f5352aca96e4b81afd8ab3b47337cc12089822d6f322ac772c81"
            ],
            "version": "==0.6.0"
        },
        "kombu": {
            "hashes": [
                "sha256:416aa6fb7b22125a3b65322eb26f5c4479d4830b3e7bad55191ac46438ef2b2b",
                "sha256:d601c47312833c0f6f4aaf037f293b2627398d4cf8526e6ba0360287294ee1fb"
            ],
            "version": "==4.2.0"
        },
        "mako": {
            "hashes": [
                "sha256:4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae"
            ],
            "version": "==1.0.7"
        },
        "markupsafe": {
            "hashes": [
                "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665"
            ],
            "version": "==1.0"
        },
        "maxminddb": {
            "hashes": [
                "sha256:5c10bc71b4a4d76ec90fa8587684f480bbd88a853b9d5e8abbee7683da0791eb"
            ],
            "version": "==1.4.0"
        },
        "misaka": {
            "hashes": [
                "sha256:87637d90f5f52595d07ed1be93d0576d32632d125694b96b8e4ce55cd4c019fb"
            ],
            "version": "==2.1.0"
        },
        "passlib": {
            "hashes": [
                "sha256:3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0",
                "sha256:43526aea08fa32c6b6dbbbe9963c4c767285b78147b7437597f992812f69d280"
            ],
            "version": "==1.7.1"
        },
        "pastedeploy": {
            "hashes": [
                "sha256:39973e73f391335fac8bc8a8a95f7d34a9f42e2775600ce2dc518d93b37ef943",
                "sha256:d5858f89a255e6294e63ed46b73613c56e3b9a2d82a42f1df4d06c8421a9e3cb"
            ],
            "version": "==1.5.2"
        },
        "plaster": {
            "hashes": [
                "sha256:215c921a438b5349931fd7df9a5a11a3572947f20f4bc6dd622ac08f1c3ba249",
                "sha256:8351c7c7efdf33084c1de88dd0f422cbe7342534537b553c49b857b12d98c8c3"
            ],
            "version": "==1.0"
        },
        "plaster-pastedeploy": {
            "hashes": [
                "sha256:25cc239d767c5fab0afa44b1ed3c1a33a3d7ec6302ff2e599aec674b77ff6667",
                "sha256:70a3185b2a3336996a26e9987968cf35e84cf13390b7e8a0a9a91eb8f6f85ba9"
            ],
            "version": "==0.5"
        },
        "psycopg2": {
            "hashes": [
                "sha256:027ae518d0e3b8fff41990e598bc7774c3d08a3a20e9ecc0b59fb2aaaf152f7f",
                "sha256:092a80da1b052a181b6e6c765849c9b32d46c5dac3b81bf8c9b83e697f3cdbe8",
                "sha256:0b9851e798bae024ed1a2a6377a8dab4b8a128a56ed406f572f9f06194e4b275",
                "sha256:179c52eb870110a8c1b460c86d4f696d58510ea025602cd3f81453746fccb94f",
                "sha256:19983b77ec1fc2a210092aa0333ee48811fd9fb5f194c6cd5b927ed409aea5f8",
                "sha256:1d90379d01d0dc50ae9b40c863933d87ff82d51dd7d52cea5d1cb7019afd72cd",
                "sha256:27467fd5af1dcc0a82d72927113b8f92da8f44b2efbdb8906bd76face95b596d",
                "sha256:32702e3bd8bfe12b36226ba9846ed9e22336fc4bd710039d594b36bd432ae255",
                "sha256:33f9e1032095e1436fa9ec424abcbd4c170da934fb70e391c5d78275d0307c75",
                "sha256:36030ca7f4b4519ee4f52a74edc4ec73c75abfb6ea1d80ac7480953d1c0aa3c3",
                "sha256:363fbbf4189722fc46779be1fad2597e2c40b3f577dc618f353a46391cf5d235",
                "sha256:6f302c486132f8dd11f143e919e236ea4467d53bf18c451cac577e6988ecbd05",
                "sha256:733166464598c239323142c071fa4c9b91c14359176e5ae7e202db6bcc1d2eb5",
                "sha256:7cbc3b21ce2f681ca9ad2d8c0901090b23a30c955e980ebf1006d41f37068a95",
                "sha256:888bba7841116e529f407f15c6d28fe3ef0760df8c45257442ec2f14f161c871",
                "sha256:8966829cb0d21a08a3c5ac971a2eb67c3927ae27c247300a8476554cc0ce2ae8",
                "sha256:8bf51191d60f6987482ef0cfe8511bbf4877a5aa7f313d7b488b53189cf26209",
                "sha256:8eb94c0625c529215b53c08fb4e461546e2f3fc96a49c13d5474b5ad7aeab6cf",
                "sha256:8ebba5314c609a05c6955e5773c7e0e57b8dd817e4f751f30de729be58fa5e78",
                "sha256:932a4c101af007cb3132b1f8a9ffef23386acc53dad46536dc5ba43a3235ae02",
                "sha256:ad75fe10bea19ad2188c5cb5fc4cdf53ee808d9b44578c94a3cd1e9fc2beb656",
                "sha256:aeaba399254ca79c299d9fe6aa811d3c3eac61458dee10270de7f4e71c624998",
                "sha256:b178e0923c93393e16646155794521e063ec17b7cc9f943f15b7d4b39776ea2c",
                "sha256:b68e89bb086a9476fa85298caab43f92d0a6af135a5f433d1f6b6d82cafa7b55",
                "sha256:d74cf9234ba76426add5e123449be08993a9b13ff434c6efa3a07caa305a619f",
                "sha256:f3d3a88128f0c219bdc5b2d9ccd496517199660cea021c560a3252116df91cbd",
                "sha256:fe6a7f87356116f5ea840c65b032af17deef0e1a5c34013a2962dd6f99b860dd"
            ],
            "version": "==2.7.4"
        },
        "pycparser": {
            "hashes": [
                "sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
            ],
            "version": "==2.18"
        },
        "pygments": {
            "hashes": [
                "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d",
                "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc"
            ],
            "version": "==2.2.0"
        },
        "pynacl": {
            "hashes": [
                "sha256:04e30e5bdeeb2d5b34107f28cd2f5bbfdc6c616f3be88fc6f53582ff1669eeca",
                "sha256:0bfa0d94d2be6874e40f896e0a67e290749151e7de767c5aefbad1121cad7512",
                "sha256:11aa4e141b2456ce5cecc19c130e970793fa3a2c2e6fbb8ad65b28f35aa9e6b6",
                "sha256:13bdc1fe084ff9ac7653ae5a924cae03bf4bb07c6667c9eb5b6eb3c570220776",
                "sha256:14339dc233e7a9dda80a3800e64e7ff89d0878ba23360eea24f1af1b13772cac",
                "sha256:1d33e775fab3f383167afb20b9927aaf4961b953d76eeb271a5703a6d756b65b",
                "sha256:2a42b2399d0428619e58dac7734838102d35f6dcdee149e0088823629bf99fbb",
                "sha256:2dce05ac8b3c37b9e2f65eab56c544885607394753e9613fd159d5e2045c2d98",
                "sha256:6453b0dae593163ffc6db6f9c9c1597d35c650598e2c39c0590d1757207a1ac2",
                "sha256:73a5a96fb5fbf2215beee2353a128d382dbca83f5341f0d3c750877a236569ef",
                "sha256:8abb4ef79161a5f58848b30ab6fb98d8c466da21fdd65558ce1d7afc02c70b5f",
                "sha256:8ac1167195b32a8755de06efd5b2d2fe76fc864517dab66aaf65662cc59e1988",
                "sha256:8f505f42f659012794414fa57c498404e64db78f1d98dfd40e318c569f3c783b",
                "sha256:be71cd5fce04061e1f3d39597f93619c80cdd3558a6c9ba99a546f144a8d8101",
                "sha256:cf6877124ae6a0698404e169b3ba534542cfbc43f939d46b927d956daf0a373a",
                "sha256:d0eb5b2795b7ee2cbcfcadacbe95a13afbda048a262bd369da9904fecb568975",
                "sha256:d795f506bcc9463efb5ebb0f65ed77921dcc9e0a50499dedd89f208445de9ecb",
                "sha256:d8aaf7e5d6b0e0ef7d6dbf7abeb75085713d0100b4eb1a4e4e857de76d77ac45",
                "sha256:e0d38fa0a75f65f556fb912f2c6790d1fa29b7dd27a1d9cc5591b281321eaaa9",
                "sha256:eb2acabbd487a46b38540a819ef67e477a674481f84a82a7ba2234b9ba46f752",
                "sha256:eeee629828d0eb4f6d98ac41e9a3a6461d114d1d0aa111a8931c049359298da0",
                "sha256:f5ce9e26d25eb0b2d96f3ef0ad70e1d3ae89b5d60255c462252a3e456a48c053",
                "sha256:fabf73d5d0286f9e078774f3435601d2735c94ce9e514ac4fb945701edead7e4"
            ],
            "version": "==1.2.1"
        },
        "pyramid": {
            "hashes": [
                "sha256:600f12e0d11211a55c2da970120af33214f77607ed45caba6af6c891afeaa771",
                "sha256:cf89a48cb899291639686bf3d4a883b39e496151fa4871fb83cc1a3200d5b925"
            ],
            "version": "==1.9.2"
        },
        "pyramid-debugtoolbar": {
            "hashes": [
                "sha256:5f779aa242009c4aace848f67807da44af2970b303aa1c9682c2efab76b7e79e",
                "sha256:9d7bd8161d18122473a94d991dedf989ef8dafdf44c112a5042d19346f2324a0"
            ],
            "version": "==4.4"
        },
        "pyramid-mako": {
            "hashes": [
                "sha256:6da0987b9874cf53e72139624665a73965bbd7fbde504d1753e4231ce916f3a1"
            ],
            "version": "==1.0.2"
        },
        "pyramid-nacl-session": {
            "hashes": [
                "sha256:12f3486361e6df284d261be22783278805184beadf629ac85c7c58aeba5e609d",
                "sha256:b7dca62622df5d21cd2ee52574d16d4b76c514298ad127f95bb2315e27573a1d"
            ],
            "version": "==0.3"
        },
        "pyramid-services": {
            "hashes": [
                "sha256:533e67659224c2064ed4ffa803c30adb99e6288c2a2c31d7e7447a8a4f19d7b4",
                "sha256:adff1063ddf86e16c9c3d32e160c7b8b44ad28a0831333446fdf7bba8aa7146c"
            ],
            "version": "==1.1"
        },
        "pyramid-tm": {
            "hashes": [
                "sha256:07d03bab7bdd265c3920db4e68dbaa8cbaff27da828700f404b1424244ad617f",
                "sha256:11b0f31482339d655358081bc1366d39679d02588782b5c8019bfb41ae02ba3d"
            ],
            "version": "==2.2"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0",
                "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8"
            ],
            "version": "==2.7.3"
        },
        "python-editor": {
            "hashes": [
                "sha256:a3c066acee22a1c94f63938341d4fb374e3fdd69366ed6603d7b24bed1efc565"
            ],
            "version": "==1.0.3"
        },
        "python3-memcached": {
            "hashes": [
                "sha256:7cbe5951d68eef69d948b7a7ed7decfbd101e15e7f5be007dcd1219ccc584859"
            ],
            "version": "==1.51"
        },
        "pytz": {
            "hashes": [
                "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555",
                "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749"
            ],
            "version": "==2018.4"
        },
        "redis": {
            "hashes": [
                "sha256:8a1900a9f2a0a44ecf6e8b5eb3e967a9909dfed219ad66df094f27f7d6f330fb",
                "sha256:a22ca993cea2962dbb588f9f30d0015ac4afcc45bee27d3978c0dbe9e97c6c0f"
            ],
            "version": "==2.10.6"
        },
        "repoze.lru": {
            "hashes": [
                "sha256:0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77",
                "sha256:f77bf0e1096ea445beadd35f3479c5cff2aa1efe604a133e67150bc8630a62ea"
            ],
            "version": "==0.7"
        },
        "requests": {
            "hashes": [
                "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
                "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
            ],
            "version": "==2.18.4"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        },
        "sqlalchemy": {
            "hashes": [
                "sha256:d6cda03b0187d6ed796ff70e87c9a7dce2c2c9650a7bc3c022cd331416853c31"
            ],
            "version": "==1.2.7"
        },
        "transaction": {
            "hashes": [
                "sha256:269601a3493cd3eddeb869419ceadfc5e6d2bc931e9970d11fc4649dab189c3c",
                "sha256:9de0f93f833713270fbceaf6092194313c1de0afb660e66dea8e089855eb281c",
                "sha256:f2242070e437e5d555ea3df809cb517860513254c828f33847df1c5e4b776c7a"
            ],
            "version": "==2.2.1"
        },
        "translationstring": {
            "hashes": [
                "sha256:4ee44cfa58c52ade8910ea0ebc3d2d84bdcad9fa0422405b1801ec9b9a65b72d",
                "sha256:e26c7bf383413234ed442e0980a2ebe192b95e3745288a8fd2805156d27515b4"
            ],
            "version": "==1.3"
        },
        "urllib3": {
            "hashes": [
                "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
                "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
            ],
            "version": "==1.22"
        },
        "venusian": {
            "hashes": [
                "sha256:757162c5f907e18571b6ab41b7673e5bf18cc8715abf8164292eaef4f1610668",
                "sha256:9902e492c71a89a241a18b2f9950bea7e41d025cc8f3af1ea8d8201346f8577d"
            ],
            "version": "==1.1.0"
        },
        "vine": {
            "hashes": [
                "sha256:52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72",
                "sha256:6849544be74ec3638e84d90bc1cf2e1e9224cc10d96cd4383ec3f69e9bce077b"
            ],
            "version": "==1.1.4"
        },
        "waitress": {
            "hashes": [
                "sha256:40b0f297a7f3af61fbfbdc67e59090c70dc150a1601c39ecc9f5f1d283fb931b",
                "sha256:d33cd3d62426c0f1b3cd84ee3d65779c7003aae3fc060dee60524d10a57f05a9"
            ],
            "version": "==1.1.0"
        },
        "webob": {
            "hashes": [
                "sha256:1771899117c8851153f6f91e8b8a86236972aa8a1b6bd69ad0a36a9879ea2cd7",
                "sha256:54f35073d2fdcddd7a98c2a1dedeede49739150737164a787220f30283139ba6"
            ],
            "version": "==1.8.1"
        },
        "wtforms": {
            "hashes": [
                "sha256:ffdf10bd1fa565b8233380cb77a304cd36fd55c73023e91d4b803c96bc11d46f"
            ],
            "version": "==2.1"
        },
        "zope.deprecation": {
            "hashes": [
                "sha256:7d52e134bbaaa0d72e1e2bc90f0587f1adc116c4bdf15912afaf2f1e8856b224",
                "sha256:c83cfef3085d10dcb07de5a59a2d95713865befa46e0e88784c5648610fba789"
            ],
            "version": "==4.3.0"
        },
        "zope.interface": {
            "hashes": [
                "sha256:21506674d30c009271fe68a242d330c83b1b9d76d62d03d87e1e9528c61beea6",
                "sha256:3d184aff0756c44fff7de69eb4cd5b5311b6f452d4de28cb08343b3f21993763",
                "sha256:467d364b24cb398f76ad5e90398d71b9325eb4232be9e8a50d6a3b3c7a1c8789",
                "sha256:57c38470d9f57e37afb460c399eb254e7193ac7fb8042bd09bdc001981a9c74c",
                "sha256:9ada83f4384bbb12dedc152bcdd46a3ac9f5f7720d43ac3ce3e8e8b91d733c10",
                "sha256:a1daf9c5120f3cc6f2b5fef8e1d2a3fb7bbbb20ed4bfdc25bc8364bc62dcf54b",
                "sha256:e6b77ae84f2b8502d99a7855fa33334a1eb6159de45626905cb3e454c023f339",
                "sha256:e881ef610ff48aece2f4ee2af03d2db1a146dc7c705561bd6089b2356f61641f",
                "sha256:f41037260deaacb875db250021fe883bf536bf6414a4fd25b25059b02e31b120",
                "sha256:727aa737a48dd33d6859296f15edb54e85ccdfa5667513f7a50daf362b3df75b"
            ],
            "version": "==4.5.0"
        },
        "zope.sqlalchemy": {
            "hashes": [
                "sha256:9316a1a8bb9e4f9f59332acf1ad2cc8b664f19a4bde5f68be7f61f3e11f80514"
            ],
            "version": "==1.0"
        }
    },
    "develop": {
        "appdirs": {
            "hashes": [
                "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
                "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
            ],
            "version": "==1.4.3"
        },
        "aspy.yaml": {
            "hashes": [
                "sha256:04d26279513618f1024e1aba46471db870b3b33aef204c2d09bcf93bea9ba13f",
                "sha256:0a77e23fafe7b242068ffc0252cee130d3e509040908fc678d9d1060e7494baa"
            ],
            "version": "==1.1.1"
        },
        "attrs": {
            "hashes": [
                "sha256:4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265",
                "sha256:e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b"
            ],
            "version": "==18.1.0"
        },
        "black": {
            "hashes": [
                "sha256:4fec2566f9fbbd4a58de50a168cbe3ab952713530410d227e82e4c65d1fad946",
                "sha256:5fec0f25486046b9edb97961c946412ced96021247dd1a60ecd9f0567b68b030"
            ],
            "index": "pypi",
            "version": "==18.5b0"
        },
        "cached-property": {
            "hashes": [
                "sha256:67acb3ee8234245e8aea3784a492272239d9c4b487eba2fdcce9d75460d34520",
                "sha256:bf093e640b7294303c7cc7ba3212f00b7a07d0416c1d923465995c9ef860a139"
            ],
            "version": "==1.4.2"
        },
        "cfgv": {
            "hashes": [
                "sha256:2fbaf8d082456d8fff5a68163ff59c1025a52e906914fbc738be7d8ea5b7aa4b",
                "sha256:733aa2f66b5106af32d271336a571610b9808e868de0ad5690d9d5155e5960c5"
            ],
            "version": "==1.0.0"
        },
        "click": {
            "hashes": [
                "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d",
                "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"
            ],
            "version": "==6.7"
        },
        "colorama": {
            "hashes": [
                "sha256:463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda",
                "sha256:48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
            ],
            "version": "==0.3.9"
        },
        "coverage": {
            "hashes": [
                "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba",
                "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed",
                "sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a",
                "sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd",
                "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640",
                "sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2",
                "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162",
                "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508",
                "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249",
                "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694",
                "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a",
                "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287",
                "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1",
                "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000",
                "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1",
                "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e",
                "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5",
                "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062",
                "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba",
                "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc",
                "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc",
                "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99",
                "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653",
                "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c",
                "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558",
                "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f",
                "sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4",
                "sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91",
                "sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d",
                "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9",
                "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd",
                "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d",
                "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6",
                "sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77",
                "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80",
                "sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e"
            ],
            "index": "pypi",
            "version": "==4.5.1"
        },
        "flake8": {
            "hashes": [
                "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
                "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
            ],
            "index": "pypi",
            "version": "==3.5.0"
        },
        "flake8-bugbear": {
            "hashes": [
                "sha256:541746f0f3b2f1a8d7278e1d2d218df298996b60b02677708560db7c7e620e3b",
                "sha256:5f14a99d458e29cb92be9079c970030e0dd398b2decb179d76d39a5266ea1578"
            ],
            "index": "pypi",
            "version": "==18.2.0"
        },
        "honcho": {
            "hashes": [
                "sha256:af5806bf13e3b20acdcb9ff8c0beb91eee6fe07393c3448dfad89667e6ac7576",
                "sha256:c189402ad2e337777283c6a12d0f4f61dc6dd20c254c9a3a4af5087fc66cea6e"
            ],
            "index": "pypi",
            "version": "==1.0.1"
        },
        "identify": {
            "hashes": [
                "sha256:067c206bb7a6926d30de0e77d6297729a176c0aa8b2d810a5be809cb46b045b2",
                "sha256:5eae91e34881bed02ea4f8c3886df8bd1232536d6f0dbf0405ff734268b7f425"
            ],
            "version": "==1.0.18"
        },
        "mccabe": {
            "hashes": [
                "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
                "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
            ],
            "version": "==0.6.1"
        },
        "nodeenv": {
            "hashes": [
                "sha256:dd0a34001090ff042cfdb4b0c8d6a6f7ec9baa49733f00b695bb8a8b4700ba6c"
            ],
            "version": "==1.3.0"
        },
        "nose": {
            "hashes": [
                "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac",
                "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a",
                "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
            ],
            "index": "pypi",
            "version": "==1.3.7"
        },
        "pre-commit": {
            "hashes": [
                "sha256:4b86fd3e4cb602f26c277aec05c68f7f65956ed7de63e42787711a81f5b7b80b",
                "sha256:e3b3548c307b9efd69b2a908f894defcae099c113908553a868db49757d053eb"
            ],
            "index": "pypi",
            "version": "==1.9.0"
        },
        "pycodestyle": {
            "hashes": [
                "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
                "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
            ],
            "version": "==2.3.1"
        },
        "pyflakes": {
            "hashes": [
                "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
                "sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
            ],
            "version": "==1.6.0"
        },
        "pyyaml": {
            "hashes": [
                "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
                "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
                "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
                "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
                "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
                "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
                "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7",
                "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
                "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
                "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
                "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
                "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
                "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
                "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269"
            ],
            "version": "==3.12"
        },
        "rednose": {
            "hashes": [
                "sha256:6da77917788be277b70259edc0bb92fc6f28fe268b765b4ea88206cc3543a3e1"
            ],
            "index": "pypi",
            "version": "==1.3.0"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        },
        "termstyle": {
            "hashes": [
                "sha256:ef74b83698ea014112040cf32b1a093c1ab3d91c4dd18ecc03ec178fd99c9f9f"
            ],
            "version": "==0.1.11"
        },
        "virtualenv": {
            "hashes": [
                "sha256:2ce32cd126117ce2c539f0134eb89de91a8413a29baac49cbab3eb50e2026669",
                "sha256:ca07b4c0b54e14a91af9f34d0919790b016923d157afda5efdde55c96718f752"
            ],
            "version": "==16.0.0"
        }
    }
}

D Procfile.dev => Procfile.dev +0 -3
@@ 1,3 0,0 @@
web: pipenv run fbctl serve --reload
worker: pipenv run fbcelery worker
assets: cd assets && yarn run gulp watch
\ No newline at end of file

M README.rst => README.rst +98 -16
@@ 17,34 17,39 @@ Board engine behind `Fanboi Channel`_ written in Python.
Installation
------------

Fanboi2 requires the following packages to be installed.
Fanboi2 has the following runtime requirements:

- `Python 3.6 <https://www.python.org/downloads/>`_ with `Pipenv <https://pipenv.readthedocs.io>`_
- `PostgreSQL 10 <http://www.postgresql.org/>`_
- `Redis <http://redis.io/>`_
- `Python 3.6 <https://www.python.org/downloads/>`_ with `Virtualenv <https://virtualenv.pypa.io/en/stable/>`_
- `PostgreSQL 10 <https://www.postgresql.org/>`_
- `Redis <https://redis.io/>`_
- `Memcached <https://memcached.org/>`_
- `Node 8 <http://nodejs.org/>`_ with `Yarn <https://yarnpkg.com/>`_ (Node 10 will NOT work)

After all packages are installed and started, you may now clone the application::
Additionally, the following packages are build-time requirements for compiling assets:

  $ git clone https://github.com/forloopend/fanboi2.git fanboi2
- `Node 8 <https://nodejs.org/>`_ (Node 10 will NOT work)
- `Yarn <https://yarnpkg.com/>`_

Then setup the application::
After all packages are installed, you may now setup the application::

  $ git clone https://github.com/forloopend/fanboi2.git fanboi2
  $ cd fanboi2/
  $ make prod
  $ make all -j2

Configure ``.env`` (see the configuring section) and run::
Then configure ``.env`` according to the configuring section below, then run::

  $ make migrate
  $ pipenv run fbctl serve
  $ make serve

You also need to run the worker (in another terminal) with::

  $ make worker

And you're done! Please visit `http://localhost:6543/admin/ <http://localhost:6543/admin/>`_ to perform initial configuration.

Configuring
-----------

Fanboi2 uses environment variable to configure the application. In case `Pipenv <https://docs.pipenv.org/>`_ is used, you can create a file name ``.env`` in the root directory of the project and Pipenv will happily read the file on ``pipenv run``. Otherwise you may want to use something like `Direnv <https://github.com/direnv/direnv>`_.
Fanboi2 uses environment variable to configure the application. In case ``make`` is used, you can create a file named ``.env`` in the root directory of the project and our make configuration will happily use it up on ``make serve`` or ``make devserve``. Otherwise you may want to use something like `Direnv <https://github.com/direnv/direnv>`_.

========================= =========================================================================
Key                       Description


@@ 75,13 80,13 @@ Vagrant

In case you do not want to use Vagrant, you can install the dependencies from the installation section and run::

  $ make develop
  $ make dev
  $ make devhook

You can then configure the application (see configuration section) and run the server::

  $ make migrate
  $ pipenv run honcho start -f Procfile.dev
  $ make devrun

Docker
^^^^^^


@@ 91,7 96,7 @@ Docker
3. Modify the content of ``docker-compose.yml``

   1. Generate both ``AUTH_SECRET`` and ``SESSION_SECRET`` tokens with ``openssl rand -hex 32``
   2. Set a sensible Postgres password
   2. Set a sensible PostgreSQL password
   3. This config assumes fanboi2 was cloned to ``fanboi2``; update the build and mount paths if untrue

4. Start the contraption with ``docker-compose up`` from the same directory as the config files.


@@ 107,6 112,79 @@ Once you've made your changes, simply open a `pull request <https://github.com/f
- Make sure new features has enough tests and no regressions.
- Fix any offenses as reported by pre-commit hooks.

Workflow
--------

Fanboi2 uses a ``Makefile``-based workflow in its development and production cycle. You are encourage to use ``make`` rather than directly invoking underlying commands. The provided ``Makefile`` can be customized to certain extent using environment variable, such as:

========================= =========================================================================
Key                       Description
========================= =========================================================================
``VERBOSE=1``             Prints the underlying command when running ``make``.
``VIRTUALENV=virtualenv`` Specifies the ``virtualenv`` binary (e.g. ``virtualenv-3.6`` for BSDs)
``YARN=yarn``             Specifies the ``yarn`` binary.
``VENVDIR=.venv``         Specifies the virtualenv directory.
``ENVFILE=.env``          Specifies the file containing environment variable to load from.
========================= =========================================================================

The following make targets are available for use in production:

- ``make all`` build the application and assets using production configurations.
- ``make prod`` build the application using production configuration.
- ``make serve`` run the application server.
- ``make worker`` run the application worker.
- ``make assets`` build assets.
- ``make migrate`` migrate daabase.
- ``make clean`` remove everything.

The following make targets are available for use in development:

- ``make dev`` builds the application using development configuration.
- ``make devrun`` run the development application server, application worker and assets watcher.
- ``make devhook`` install development pre-commit hook to the repository.
- ``make devserve`` run the development application server.
- ``make devassets`` run the development assets watcher.

The following make targets are available for use in test environment:

- ``make test`` run tests.

Most of these commands make use of `VENVDIR` and `ENVFILE`.

The Adventurous Way
^^^^^^^^^^^^^^^^^^^

If using ``make`` is not your thing, you can set everything up manually, for example on macOS [1]_::

  $ brew install python@3 node@8 yarn

Create the deploy environment::

  $ mkdir -p $HOME/dev/fanboi2/venv
  $ virtualenv new -p python3 $HOME/dev/fanboi2/venv
  $ git clone https://github.com/forloopend/fanboi2.git $HOME/dev/fanboi2/src

Setup the application::

  $ cd $HOME/dev/fanboi2/src
  $ $HOME/dev/fanboi2/venv/bin/pip3 install -e .[dev,test]
  $ yarn install
  $ yarn run gulp
  $ vi $HOME/dev/fanboi2/envfile

Configure ``envfile`` then::

  $ $HOME/dev/fanboi2/venv/bin/alembic upgrade head
  $ $HOME/dev/fanboi2/venv/bin/fbctl serve --reload

In another terminal, run the worker::

  $ $HOME/dev/fanboi2/venv/bin/fbcelery worker

Also install ``pre-commit-hook`` if you want to contribute to the project::

  $ $HOME/dev/fanboi2/venv/bin/pre-commit install

License
-------



@@ 126,4 204,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
.. _VirtualBox: https://www.virtualbox.org/
.. _Yarn: https://yarnpkg.com/
.. _Gulp: http://gulpjs.com/
.. _Typings: https://github.com/typings/typings

Footnote
--------

.. [1] Brew is horrible at version management. Use `asdf <https://github.com/asdf-vm/asdf>`_ or `pyenv <https://github.com/pyenv/pyenv>`_ instead.

M Vagrantfile => Vagrantfile +18 -61
@@ 2,70 2,27 @@
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "generic/freebsd11"
  config.vm.define "web", primary: true do |web|
    web.vm.box = "generic/freebsd11"

  config.vm.network "private_network", ip: "10.200.80.100"
  config.vm.network "forwarded_port", guest: 6543, host: 6543
  config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ["actimeo=2"]
  config.ssh.shell = "sh"
    web.vm.network "private_network", ip: "10.200.80.100"
    web.vm.network "forwarded_port", guest: 6543, host: 6543
    web.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ["actimeo=2"]
    web.ssh.shell = "sh"

  # Locking pipenv version to 2018.6.25 because of issue with shell detection:
  # https://github.com/sarugaku/shellingham/issues/15
  config.vm.provision :shell, privileged: true, inline: <<-EOF
    sysrc hostname=vagrant
    web.vm.provision :shell, privileged: true, path: "vendor/vagrant/bootstrap_web.sh"
  end

    pkg update
    pkg install -y ca_root_nss git-lite curl ntp bash
    pkg install -y postgresql10-server node8 npm-node8 redis memcached
    pkg install -y bzip2 sqlite3 gmake
    pkg install -y python36 py36-pip py36-pipenv
    npm install -g yarn
  # This is for building Docker image in case you're not a fan of Docker.
  # By default it's not created when running `vagrant up`.
  # To use it, explicitly run `vagrant up builder`.
  config.vm.define "builder", autostart: false do |builder|
    builder.vm.box = "generic/debian9"

    ntpd -qg
    builder.vm.network "private_network", ip: "10.200.80.101"
    builder.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ["actimeo=2"]
    builder.ssh.shell = "sh"

    sysrc ntpd_enable=YES
    sysrc postgresql_enable=YES
    sysrc redis_enable=YES
    sysrc memcached_enable=YES

    service ntpd start
    service postgresql initdb
    service postgresql start
    service redis start
    service memcached start

    sudo -u postgres createuser -ds vagrant || true
    sudo -u postgres createuser -ds fanboi2 || true
    sh -c 'echo "local all all trust" > /var/db/postgres/data10/pg_hba.conf'
    sh -c 'echo "host all all 127.0.0.1/32 trust" >> /var/db/postgres/data10/pg_hba.conf'
    sh -c 'echo "host all all ::1/128 trust" >> /var/db/postgres/data10/pg_hba.conf'
    service postgresql restart
  EOF

  config.vm.provision :shell, privileged: false, inline: <<-EOF
    echo 'EDITOR=vi; export EDITOR' > $HOME/.profile
    echo 'PAGER=more; export PAGER' >> $HOME/.profile
    echo 'ENV=$HOME/.shrc; export ENV' >> $HOME/.profile
    echo 'LANG=en_US.UTF-8; export LANG' >> $HOME/.profile
    echo 'PIPENV=pipenv-3.6; export PIPENV' >> $HOME/.profile

    psql template1 -c "CREATE DATABASE fanboi2_dev;"
    psql template1 -c "CREATE DATABASE fanboi2_test;"

    . $HOME/.profile

    echo 'CELERY_BROKER_URL="redis://127.0.0.1:6379/1"' > /vagrant/.env
    echo 'DATABASE_URL="postgresql://vagrant:@127.0.0.1:5432/fanboi2_dev"' >> /vagrant/.env
    echo 'MEMCACHED_URL="127.0.0.1:11211"' >> /vagrant/.env
    echo 'REDIS_URL="redis://127.0.0.1:6379/0"' >> /vagrant/.env
    echo 'SERVER_DEV=true' >> /vagrant/.env
    echo 'SERVER_HOST="0.0.0.0"' >> /vagrant/.env
    echo 'SERVER_PORT=6543' >> /vagrant/.env
    echo "SESSION_SECRET=$(openssl rand -hex 32)" >> /vagrant/.env
    echo "AUTH_SECRET=$(openssl rand -hex 32)" >> /vagrant/.env

    cd /vagrant
    make develop
    make migrate
  EOF
    builder.vm.provision :shell, privileged: true, path: "vendor/vagrant/bootstrap_builder.sh"
  end
end

D assets/Makefile => assets/Makefile +0 -9
@@ 1,9 0,0 @@
.PHONY: init watch

init:
	yarn
	yarn run typings install
	yarn run gulp

watch:
	yarn run gulp watch

M assets/app/javascripts/components/base.ts => assets/app/javascripts/components/base.ts +1 -1
@@ 36,7 36,7 @@ export class SingletonComponent implements IComponent {
        }, 1);
    }

    protected bindOne(element: Element): void {
    protected bindOne($element: Element): void {
        throw new NotImplementedError();
    }
}

M assets/app/javascripts/components/board_selector.ts => assets/app/javascripts/components/board_selector.ts +5 -2
@@ 94,8 94,11 @@ export class BoardSelector extends SingletonComponent {
            });
        });

        $element.querySelector(".container").appendChild($button);
        addClass($element, ["js-board-selector-wrapper"]);
        let $container = $element.querySelector(".container");
        if ($container) {
            $container.appendChild($button);
            addClass($element, ["js-board-selector-wrapper"]);
        }

        // Attempt to restore height on resize. Since the resize may cause
        // clientHeight to change (and will cause the board selector to be

M assets/app/javascripts/components/topic/topic_load_posts.ts => assets/app/javascripts/components/topic/topic_load_posts.ts +6 -4
@@ 55,10 55,12 @@ export class TopicLoadPosts implements ITopicEventHandler {
            this.collectionElement = create(newCollectionNode);
            let postElements = this.element.querySelectorAll(".post");
            let lastElement = postElements[postElements.length - 1];
            lastElement.parentElement.insertBefore(
                this.collectionElement,
                lastElement.nextSibling,
            );
            if (lastElement && lastElement.parentElement) {
                lastElement.parentElement.insertBefore(
                    this.collectionElement,
                    lastElement.nextSibling,
                );
            }
        } else {
            let patches = diff(this.collectionNode, newCollectionNode);
            this.collectionElement = patch(this.collectionElement, patches);

M assets/app/javascripts/components/topic_inline_reply.ts => assets/app/javascripts/components/topic_inline_reply.ts +26 -24
@@ 17,30 17,32 @@ export class TopicInlineReply extends SingletonComponent {
            let loadingState = new LoadingState();

            $form.addEventListener("submit", (e: Event): void => {
                e.preventDefault();
                loadingState.bind(() => {
                    return new Promise(resolve => {
                        if ($form instanceof HTMLFormElement) {
                            dispatchCustomEvent($form, "newPost", {
                                params: serializeForm($form),
                                callback: () => {
                                    if ($form instanceof HTMLFormElement) {
                                        detachErrors($form);
                                        $form.reset();
                                        resolve();
                                    }
                                },
                                errorCallback: (error: ResourceError) => {
                                    if ($form instanceof HTMLFormElement) {
                                        detachErrors($form);
                                        attachErrors($form, error);
                                        resolve();
                                    }
                                },
                            });
                        }
                    });
                }, $button);
                if ($button) {
                    e.preventDefault();
                    loadingState.bind(() => {
                        return new Promise(resolve => {
                            if ($form instanceof HTMLFormElement) {
                                dispatchCustomEvent($form, "newPost", {
                                    params: serializeForm($form),
                                    callback: () => {
                                        if ($form instanceof HTMLFormElement) {
                                            detachErrors($form);
                                            $form.reset();
                                            resolve();
                                        }
                                    },
                                    errorCallback: (error: ResourceError) => {
                                        if ($form instanceof HTMLFormElement) {
                                            detachErrors($form);
                                            attachErrors($form, error);
                                            resolve();
                                        }
                                    },
                                });
                            }
                        });
                    }, $button);
                }
            });
        }
    }

M assets/app/javascripts/components/topic_quick_reply.ts => assets/app/javascripts/components/topic_quick_reply.ts +2 -5
@@ 18,8 18,6 @@ export class TopicQuickReply extends DelegationComponent {
            if ($target instanceof Element && $target.matches(this.targetSelector)) {
                let anchor = $target.getAttribute("data-topic-quick-reply");
                let $topic = $target.closest("[data-topic]");
                let $input: Element;

                e.preventDefault();

                if (!anchor) {


@@ 27,7 25,7 @@ export class TopicQuickReply extends DelegationComponent {
                }

                if ($topic) {
                    $input = $topic.querySelector("[data-topic-quick-reply-input]");
                    let $input = $topic.querySelector("[data-topic-quick-reply-input]");

                    if ($input instanceof HTMLTextAreaElement) {
                        this.insertTextAtCursor($input, anchor);


@@ 58,7 56,6 @@ export class TopicQuickReply extends DelegationComponent {
    private attachForm($target: Element, $topic: Element, anchor: string): void {
        let $parent = $target.closest(".js-popover");
        let $popover: Element;
        let $textarea: Element;
        let popoverView: PopoverView;
        let popoverNode: VNode;
        let throttleTimer: number;


@@ 115,7 112,7 @@ export class TopicQuickReply extends DelegationComponent {
        new TopicInlineReply($popover);
        new TopicStateTracker($popover);

        $textarea = $popover.querySelector("textarea");
        let $textarea = $popover.querySelector("textarea");
        if ($textarea instanceof HTMLTextAreaElement) {
            this.insertTextAtCursor($textarea, anchor);
        }

M assets/app/javascripts/utils/forms.ts => assets/app/javascripts/utils/forms.ts +15 -7
@@ 62,10 62,12 @@ export let attachErrors = (form: HTMLFormElement, error: ResourceError) => {
            let err = h("span", { className: "form-item-error" }, [message]);

            addClass(formItemElement, ["error"]);
            fieldElement.parentElement.insertBefore(
                create(err),
                fieldElement.nextSibling,
            );
            if (fieldElement.parentElement) {
                fieldElement.parentElement.insertBefore(
                    create(err),
                    fieldElement.nextSibling,
                );
            }
        }
    };



@@ 76,7 78,10 @@ export let attachErrors = (form: HTMLFormElement, error: ResourceError) => {
            }
        }
    } else {
        _attachError(form.querySelector("[data-form-anchor]"), data.message);
        let $formAnchor = form.querySelector("[data-form-anchor]");
        if ($formAnchor) {
            _attachError($formAnchor, data.message);
        }
    }
};



@@ 85,10 90,13 @@ export let detachErrors = (form: HTMLFormElement) => {
    let msgElements = form.querySelectorAll(".form-item-error");

    for (let i = 0, len = errorElements.length; i < len; i++) {
        removeClass(errorElements[0], ["error"]);
        removeClass(errorElements[i], ["error"]);
    }

    for (let i = 0, len = msgElements.length; i < len; i++) {
        msgElements[0].parentElement.removeChild(msgElements[0]);
        let $msgElement = msgElements[i];
        if ($msgElement.parentElement) {
            $msgElement.parentElement.removeChild(msgElements[0]);
        }
    }
};

M assets/app/stylesheets/_mixins.scss => assets/app/stylesheets/_mixins.scss +2 -2
@@ 7,11 7,11 @@
    background-repeat: no-repeat;
    background-size: $width $height;

    @media (min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {
    @media (-webkit-min-device-pixel-ratio: 1.3), (min-resolution: 1.3dppx) {
        background-image: url($image+"@2x."+$extension);
    }

    @media (min-device-pixel-ratio: 2.3), (min-resolution: 2.3dppx) {
    @media (-webkit-min-device-pixel-ratio: 2.3), (min-resolution: 2.3dppx) {
        background-image: url($image+"@3x."+$extension);
    }
}

D assets/gulpfile.js => assets/gulpfile.js +0 -213
@@ 1,213 0,0 @@
var gulp              = require('gulp');
var sourcemaps        = require('gulp-sourcemaps');
var concat            = require('gulp-concat');
var es                = require('event-stream');

var sass              = require('gulp-sass');
var postcss           = require('gulp-postcss');

var uglify            = require('gulp-uglify');
var source            = require('vinyl-source-stream');
var buffer            = require('vinyl-buffer');
var browserify        = require('browserify');
var tsify             = require('tsify');


/* Settings
 * ---------------------------------------------------------------------- */

var paths = {

    /* Path for storing application-specific assets. */
    app: {
        assets: 'app/assets/*',
        stylesheets: [
            'app/stylesheets/app.scss',
            'app/stylesheets/*.scss',
            'app/stylesheets/themes/*.scss'
        ],
        javascripts: {
            glob: 'app/javascripts/**/*.ts',
            base: 'app/javascripts/',
            typings: 'typings/index.d.ts',
            entry: 'app/javascripts/app.ts'
        }
    },

    /* Path for storing admin-specific assets. */
    admin: {
        assets: 'admin/assets/*',
        stylesheets: [
            'admin/stylesheets/*.scss',
            'admin/stylesheets/themes/*.scss'
        ]
    },

    /* Path for storing third-party assets. */
    vendor: {
        assets: 'vendor/assets/*',
        stylesheets: 'vendor/stylesheets/**/*.css',
        javascripts: [
            'vendor/javascripts/**/*.js'
        ]
    },

    /* Path for storing compatibility assets. */
    legacy: {
        assets: 'legacy/assets/*',
        stylesheets: 'legacy/stylesheets/**/*.css',
        javascripts: 'legacy/javascripts/**/*.js'
    },

    /* Path to output compiled assets to. */
    dest: '../fanboi2/static'
};


/* Assets
 * ---------------------------------------------------------------------- */

gulp.task('assets', function(){
    return es.merge([
            gulp.src(paths.app.assets),
            gulp.src(paths.admin.assets),
            gulp.src(paths.vendor.assets),
            gulp.src(paths.legacy.assets)]).
        pipe(gulp.dest(paths.dest));
});


/* Stylesheets
 * ---------------------------------------------------------------------- */

var postcssProcessors = [
    require('autoprefixer'),
    require('postcss-round-subpixels'),
    require('css-mqpacker'),
    require('postcss-urlrev')({
        relativePath: paths.dest,
        replacer: function(url, hash) {
            /* PostCSS-Urlrev uses ?v= by default. Override to
             * make it compatible with ?h= syntax in app. */
            return url + '?h=' + hash.slice(0, 8);
        }
    }),
    require('csswring')
];

gulp.task('styles/app', ['assets'], function(){
    return gulp.
        src(paths.app.stylesheets).
        pipe(sourcemaps.init()).
            pipe(sass().on('error', sass.logError)).
            pipe(concat('app.css')).
            pipe(postcss(postcssProcessors)).
        pipe(sourcemaps.write('.')).
        pipe(gulp.dest(paths.dest));
});

gulp.task('styles/admin', ['assets'], function(){
    return gulp.
        src(paths.admin.stylesheets).
        pipe(sourcemaps.init()).
            pipe(sass().on('error', sass.logError)).
            pipe(concat('admin.css')).
            pipe(postcss(postcssProcessors)).
        pipe(sourcemaps.write('.')).
        pipe(gulp.dest(paths.dest));
});

gulp.task('styles/vendor', function(){
    return gulp.
        src(paths.vendor.stylesheets).
        pipe(sourcemaps.init()).
            pipe(concat('vendor.css')).
            pipe(postcss(postcssProcessors)).
        pipe(sourcemaps.write('.')).
        pipe(gulp.dest(paths.dest));
});

gulp.task('styles', [
    'styles/app',
    'styles/admin',
    'styles/vendor'
]);


/* JavaScripts
 * ---------------------------------------------------------------------- */

var externalDependencies = [
    'dom4',
    'domready',
    'es6-promise',
    'js-cookie',
    'virtual-dom'
];

gulp.task('javascripts/app', function(){
    return browserify({debug: true}).
        plugin(tsify).
        require(paths.app.javascripts.typings, {entry: true}).
        require(paths.app.javascripts.entry, {entry: true}).
        external(externalDependencies).
        bundle().
            on('error', function(err) {
                console.log(err.message);
                this.emit('end');
            }).
            pipe(source('app.js')).
            pipe(buffer()).
            pipe(sourcemaps.init({loadMaps: true})).
                pipe(uglify()).
            pipe(sourcemaps.write('.')).
            pipe(gulp.dest(paths.dest));
});

gulp.task('javascripts/vendor', function(){
    return browserify({debug: true}).
        require(externalDependencies).
        bundle().
            on('error', function(err) {
                console.log(err.message);
                this.emit('end');
            }).
            pipe(source('vendor.js')).
            pipe(buffer()).
            pipe(sourcemaps.init({loadMaps: true})).
                pipe(uglify()).
            pipe(sourcemaps.write('.')).
            pipe(gulp.dest(paths.dest));
});

gulp.task('javascripts/legacy', function(){
    return gulp.
        src(paths.legacy.javascripts).
        pipe(sourcemaps.init()).
            pipe(concat('legacy.js')).
            pipe(uglify()).
        pipe(sourcemaps.write('.')).
        pipe(gulp.dest(paths.dest));
});

gulp.task('javascripts', [
    'javascripts/app',
    'javascripts/vendor',
    'javascripts/legacy'
]);


/* Defaults
 * ---------------------------------------------------------------------- */

gulp.task('default', ['assets', 'styles', 'javascripts']);

gulp.task('watch', ['default'], function(){
    gulp.watch(paths.app.stylesheets, ['styles/app']);
    gulp.watch(paths.admin.stylesheets, ['styles/admin']);
    gulp.watch(paths.vendor.stylesheets, ['styles/vendor']);

    gulp.watch(paths.app.javascripts.glob, ['javascripts/app']);
    gulp.watch(paths.vendor.javascripts, ['javascripts/vendor']);
    gulp.watch(paths.legacy.javascripts, ['javascripts/legacy']);
});

D assets/package.json => assets/package.json +0 -34
@@ 1,34 0,0 @@
{
  "author": "Kridsada Thanabulpong",
  "name": "fanboi2",
  "description": "Assets for Fanboi2 board app",
  "version": "0.30.0",
  "repository": "https://github.com/forloopend/fanboi2.git",
  "license": "BSD-3-Clause",
  "dependencies": {
    "autoprefixer": "^6.0.3",
    "browserify": "^13.1.0",
    "css-mqpacker": "^5.0.1",
    "csswring": "^5.1.0",
    "dom4": "^1.5.2",
    "domready": "^1.0.8",
    "es6-promise": "^4.0.3",
    "event-stream": "^3.3.2",
    "gulp": "^3.9.0",
    "gulp-concat": "^2.6.0",
    "gulp-postcss": "^6.0.1",
    "gulp-sass": "^4.0.1",
    "gulp-sequence": "^0.4.6",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-uglify": "^2.0.0",
    "js-cookie": "^2.1.0",
    "postcss-round-subpixels": "^1.0.0",
    "postcss-urlrev": "^1.1.2",
    "tsify": "^1.0.7",
    "typescript": "~2.0.3",
    "typings": "^2.1.0",
    "vinyl-buffer": "^1.0.0",
    "vinyl-source-stream": "^1.1.0",
    "virtual-dom": "^2.1.1"
  }
}

D assets/tsconfig.json => assets/tsconfig.json +0 -11
@@ 1,11 0,0 @@
{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "strictNullChecks": true
  },
  "files": [
    "typings/index.d.ts",
    "assets/app/javascripts/app.ts"
  ]
}

D assets/typings.json => assets/typings.json +0 -12
@@ 1,12 0,0 @@
{
  "name": "fanboi2",
  "dependencies": {
    "domready": "github:typed-typings/npm-domready#f46b2ea5466978ea3bdd703591d1c16d7ae3832c"
  },
  "devDependencies": {},
  "globalDependencies": {
    "es6-promise": "github:DefinitelyTyped/DefinitelyTyped/es6-promise/es6-promise.d.ts#830e8ebd9ef137d039d5c7ede24a421f08595f83",
    "js-cookie": "github:DefinitelyTyped/DefinitelyTyped/js-cookie/js-cookie.d.ts#bb370b898e6a1528c5959932b4e238a574f22869",
    "virtual-dom": "github:DefinitelyTyped/DefinitelyTyped/virtual-dom/virtual-dom.d.ts#df507c636cf0c799a8a20f35af89a3d0caae6c32"
  }
}

D assets/yarn.lock => assets/yarn.lock +0 -4523
@@ 1,4523 0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


JSONStream@^1.0.3:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.0.tgz#680ab9ac6572a8a1a207e0b38721db1c77b215e5"
  integrity sha1-aAq5rGVyqKGiB+CzhyHbHHeyFeU=
  dependencies:
    jsonparse "^1.2.0"
    through ">=2.2.7 <3"

abbrev@1:
  version "1.0.9"
  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
  integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=

acorn@4.X:
  version "4.0.4"
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
  integrity sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=

acorn@^1.0.3:
  version "1.2.2"
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
  integrity sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=

acorn@^2.7.0:
  version "2.7.0"
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
  integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=

acorn@^3.1.0:
  version "3.3.0"
  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
  integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=

agent-base@2:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e"
  integrity sha1-vY+ehqjrIh//oHvRS+/VXfFCgV4=
  dependencies:
    extend "~3.0.0"
    semver "~5.0.1"

align-text@^0.1.1, align-text@^0.1.3:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
  integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
  dependencies:
    kind-of "^3.0.2"
    longest "^1.0.1"
    repeat-string "^1.5.2"

amdefine@>=0.0.4:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
  integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=

ansi-align@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
  integrity sha1-LwwWWIKXOa3V67FeawxuNCPwFro=
  dependencies:
    string-width "^1.0.1"

ansi-colors@^1.0.1:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
  integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
  dependencies:
    ansi-wrap "^0.1.0"

ansi-escapes@^1.0.0:
  version "1.4.0"
  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
  integrity sha1-06ioOzGapneTZisT52HHkRQiMG4=

ansi-regex@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
  integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=

ansi-regex@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=

ansi-styles@^2.2.1:
  version "2.2.1"
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=

ansi-styles@^3.2.1:
  version "3.2.1"
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
  dependencies:
    color-convert "^1.9.0"

ansi-wrap@^0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
  integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=

any-promise@^1.0.0, any-promise@^1.1.0, any-promise@^1.3.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=

aproba@^1.0.3:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
  integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=

archy@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
  integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=

are-we-there-yet@~1.1.2:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
  integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
  dependencies:
    delegates "^1.0.0"
    readable-stream "^2.0.0 || ^1.1.13"

arr-diff@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
  integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
  dependencies:
    arr-flatten "^1.0.1"

arr-diff@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=

arr-flatten@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
  integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=

arr-union@^3.1.0:
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=

array-differ@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
  integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=

array-filter@~0.0.0:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
  integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=

array-find-index@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
  integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=

array-index@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9"
  integrity sha1-7FanSe4QPk4Ix5C5w1PfFgVbl/k=
  dependencies:
    debug "^2.2.0"
    es6-symbol "^3.0.2"

array-map@~0.0.0:
  version "0.0.0"
  resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
  integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=

array-reduce@~0.0.0:
  version "0.0.0"
  resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
  integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=

array-union@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
  integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
  dependencies:
    array-uniq "^1.0.1"

array-uniq@^1.0.1, array-uniq@^1.0.2:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
  integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=

array-unique@^0.2.1:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
  integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=

arrify@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
  integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=

asn1.js@^4.0.0:
  version "4.9.1"
  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
  integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA=
  dependencies:
    bn.js "^4.0.0"
    inherits "^2.0.1"
    minimalistic-assert "^1.0.0"

asn1@~0.2.3:
  version "0.2.3"
  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
  integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=

assert-plus@^0.2.0:
  version "0.2.0"
  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
  integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=

assert-plus@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
  integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=

assert@~1.3.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/assert/-/assert-1.3.0.tgz#03939a622582a812cc202320a0b9a56c9b815849"
  integrity sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=
  dependencies:
    util "0.10.3"

assign-symbols@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=

astw@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/astw/-/astw-2.0.0.tgz#08121ac8288d35611c0ceec663f6cd545604897d"
  integrity sha1-CBIayCiNNWEcDO7GY/bNVFYEiX0=
  dependencies:
    acorn "^1.0.3"

async-foreach@^0.1.3:
  version "0.1.3"
  resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
  integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=

async@~0.2.6:
  version "0.2.10"
  resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
  integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=

asynckit@^0.4.0:
  version "0.4.0"
  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=

atob@~1.1.0:
  version "1.1.3"
  resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
  integrity sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=

autoprefixer@^6.0.3:
  version "6.6.0"
  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.6.0.tgz#d5b347ebbaf79e79d30b81c0ee3e482b288527bf"
  integrity sha1-1bNH67r3nnnTC4HA7j5IKyiFJ78=
  dependencies:
    browserslist "~1.5.1"
    caniuse-db "^1.0.30000602"
    normalize-range "^0.1.2"
    num2fraction "^1.2.2"
    postcss "^5.2.6"
    postcss-value-parser "^3.2.3"

aws-sign2@~0.6.0:
  version "0.6.0"
  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
  integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=

aws4@^1.2.1:
  version "1.5.0"
  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
  integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=

balanced-match@^0.4.1:
  version "0.4.2"
  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
  integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=

base64-js@^1.0.2:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
  integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=

bcrypt-pbkdf@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
  integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
  dependencies:
    tweetnacl "^0.14.3"

beeper@^1.0.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
  integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=

bl@^0.9.1:
  version "0.9.5"
  resolved "https://registry.yarnpkg.com/bl/-/bl-0.9.5.tgz#c06b797af085ea00bc527afc8efcf11de2232054"
  integrity sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=
  dependencies:
    readable-stream "~1.0.26"

block-stream@*:
  version "0.0.9"
  resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
  integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
  dependencies:
    inherits "~2.0.0"

bluebird@^2.9.34:
  version "2.11.0"
  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
  integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=

bluebird@^3.1.1:
  version "3.4.7"
  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
  integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=

bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
  version "4.11.6"
  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
  integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU=

boom@2.x.x:
  version "2.10.1"
  resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
  integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
  dependencies:
    hoek "2.x.x"

boxen@^0.6.0:
  version "0.6.0"
  resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6"
  integrity sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=
  dependencies:
    ansi-align "^1.1.0"
    camelcase "^2.1.0"
    chalk "^1.1.1"
    cli-boxes "^1.0.0"
    filled-array "^1.0.0"
    object-assign "^4.0.1"
    repeating "^2.0.0"
    string-width "^1.0.1"
    widest-line "^1.0.0"

brace-expansion@^1.0.0:
  version "1.1.6"
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
  integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
  dependencies:
    balanced-match "^0.4.1"
    concat-map "0.0.1"

braces@^1.8.2:
  version "1.8.5"
  resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
  integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
  dependencies:
    expand-range "^1.8.1"
    preserve "^0.2.0"
    repeat-element "^1.1.2"

brorand@^1.0.1:
  version "1.0.6"
  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5"
  integrity sha1-QChwa5FfkfezSaLgvzw3YDnSFuU=

browser-pack@^6.0.1:
  version "6.0.2"
  resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531"
  integrity sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=
  dependencies:
    JSONStream "^1.0.3"
    combine-source-map "~0.7.1"
    defined "^1.0.0"
    through2 "^2.0.0"
    umd "^3.0.0"

browser-resolve@^1.11.0, browser-resolve@^1.7.0:
  version "1.11.2"
  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
  integrity sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=
  dependencies:
    resolve "1.1.7"

browser-split@0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/browser-split/-/browser-split-0.0.1.tgz#7b097574f8e3ead606fb4664e64adfdda2981a93"
  integrity sha1-ewl1dPjj6tYG+0Zk5krf3aKYGpM=

browserify-aes@^1.0.0, browserify-aes@^1.0.4:
  version "1.0.6"
  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
  integrity sha1-Xncl297x/Vkw1OurSFZ85FHEigo=
  dependencies:
    buffer-xor "^1.0.2"
    cipher-base "^1.0.0"
    create-hash "^1.1.0"
    evp_bytestokey "^1.0.0"
    inherits "^2.0.1"

browserify-cipher@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
  integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo=
  dependencies:
    browserify-aes "^1.0.4"
    browserify-des "^1.0.0"
    evp_bytestokey "^1.0.0"

browserify-des@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
  integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=
  dependencies:
    cipher-base "^1.0.1"
    des.js "^1.0.0"
    inherits "^2.0.1"

browserify-rsa@^4.0.0:
  version "4.0.1"
  resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
  integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
  dependencies:
    bn.js "^4.1.0"
    randombytes "^2.0.1"

browserify-sign@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
  integrity sha1-EHc5EMPCBtVCCkaq2GlPgguFlo8=
  dependencies:
    bn.js "^4.1.1"
    browserify-rsa "^4.0.0"
    create-hash "^1.1.0"
    create-hmac "^1.1.2"
    elliptic "^6.0.0"
    inherits "^2.0.1"
    parse-asn1 "^5.0.0"

browserify-zlib@~0.1.2:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
  integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
  dependencies:
    pako "~0.2.0"

browserify@^13.1.0:
  version "13.1.1"
  resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.1.1.tgz#72a2310e2f706ed87db929cf0ee73a5e195d9bb0"
  integrity sha1-cqIxDi9wbth9uSnPDuc6Xhldm7A=
  dependencies:
    JSONStream "^1.0.3"
    assert "~1.3.0"
    browser-pack "^6.0.1"
    browser-resolve "^1.11.0"
    browserify-zlib "~0.1.2"
    buffer "^4.1.0"
    cached-path-relative "^1.0.0"
    concat-stream "~1.5.1"
    console-browserify "^1.1.0"
    constants-browserify "~1.0.0"
    crypto-browserify "^3.0.0"
    defined "^1.0.0"
    deps-sort "^2.0.0"
    domain-browser "~1.1.0"
    duplexer2 "~0.1.2"
    events "~1.1.0"
    glob "^5.0.15"
    has "^1.0.0"
    htmlescape "^1.1.0"
    https-browserify "~0.0.0"
    inherits "~2.0.1"
    insert-module-globals "^7.0.0"
    labeled-stream-splicer "^2.0.0"
    module-deps "^4.0.8"
    os-browserify "~0.1.1"
    parents "^1.0.1"
    path-browserify "~0.0.0"
    process "~0.11.0"
    punycode "^1.3.2"
    querystring-es3 "~0.2.0"
    read-only-stream "^2.0.0"
    readable-stream "^2.0.2"
    resolve "^1.1.4"
    shasum "^1.0.0"
    shell-quote "^1.4.3"
    stream-browserify "^2.0.0"
    stream-http "^2.0.0"
    string_decoder "~0.10.0"
    subarg "^1.0.0"
    syntax-error "^1.1.1"
    through2 "^2.0.0"
    timers-browserify "^1.0.1"
    tty-browserify "~0.0.0"
    url "~0.11.0"
    util "~0.10.1"
    vm-browserify "~0.0.1"
    xtend "^4.0.0"

browserslist@~1.5.1:
  version "1.5.1"
  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.5.1.tgz#67c3f2a1a6ad174cd01d25d2362e6e6083b26986"
  integrity sha1-Z8PyoaatF0zQHSXSNi5uYIOyaYY=
  dependencies:
    caniuse-db "^1.0.30000601"

buffer-shims@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
  integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=

buffer-xor@^1.0.2:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
  integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=

buffer@^4.1.0:
  version "4.9.1"
  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
  integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
  dependencies:
    base64-js "^1.0.2"
    ieee754 "^1.1.4"
    isarray "^1.0.0"

builtin-modules@^1.0.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
  integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=

builtin-status-codes@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz#6f22003baacf003ccd287afe6872151fddc58579"
  integrity sha1-byIAO6rPADzNKHr+aHIVH93FhXk=

cached-path-relative@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.0.tgz#d1094c577fbd9a8b8bd43c96af6188aa205d05f4"
  integrity sha1-0QlMV3+9mouL1DyWr2GIqiBdBfQ=

camelcase-keys@^2.0.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
  integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
  dependencies:
    camelcase "^2.0.0"
    map-obj "^1.0.0"

camelcase@^1.0.2:
  version "1.2.1"
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
  integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=

camelcase@^2.0.0, camelcase@^2.1.0:
  version "2.1.1"
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
  integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=

camelcase@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
  integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=

camelize@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
  integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=

caniuse-db@^1.0.30000601, caniuse-db@^1.0.30000602:
  version "1.0.30000602"
  resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000602.tgz#06b2cbfb6c3aeef7ddb18cd588043549ad1a2d4e"
  integrity sha1-BrLL+2w67vfdsYzViAQ1Sa0aLU4=

capture-stack-trace@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
  integrity sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=

caseless@~0.11.0:
  version "0.11.0"
  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
  integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=

center-align@^0.1.1:
  version "0.1.3"
  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
  integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
  dependencies:
    align-text "^0.1.3"
    lazy-cache "^1.0.3"

chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
  version "1.1.3"
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
  dependencies:
    ansi-styles "^2.2.1"
    escape-string-regexp "^1.0.2"
    has-ansi "^2.0.0"
    strip-ansi "^3.0.0"
    supports-color "^2.0.0"

chalk@^2.3.0:
  version "2.4.1"
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
  integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
  dependencies:
    ansi-styles "^3.2.1"
    escape-string-regexp "^1.0.5"
    supports-color "^5.3.0"

cipher-base@^1.0.0, cipher-base@^1.0.1:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
  integrity sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=
  dependencies:
    inherits "^2.0.1"

cli-boxes@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
  integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=

cli-cursor@^1.0.2:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
  integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
  dependencies:
    restore-cursor "^1.0.1"

cli-truncate@^0.2.1:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
  integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
  dependencies:
    slice-ansi "0.0.4"
    string-width "^1.0.1"

cliui@^2.1.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
  integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
  dependencies:
    center-align "^0.1.1"
    right-align "^0.1.1"
    wordwrap "0.0.2"

cliui@^3.2.0:
  version "3.2.0"
  resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
  integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
  dependencies:
    string-width "^1.0.1"
    strip-ansi "^3.0.1"
    wrap-ansi "^2.0.0"

clone-buffer@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
  integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=

clone-stats@^0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
  integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=

clone-stats@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
  integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=

clone@^0.2.0:
  version "0.2.0"
  resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
  integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=

clone@^1.0.0, clone@^1.0.2:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
  integrity sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=

cloneable-readable@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117"
  integrity sha1-pikNQT8hemEjL5XkWP84QYz7ARc=
  dependencies:
    inherits "^2.0.1"
    process-nextick-args "^1.0.6"
    through2 "^2.0.1"

code-point-at@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=

color-convert@^1.9.0:
  version "1.9.1"
  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
  integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==
  dependencies:
    color-name "^1.1.1"

color-name@^1.1.1:
  version "1.1.3"
  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=

columnify@^1.5.2:
  version "1.5.4"
  resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
  integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=
  dependencies:
    strip-ansi "^3.0.0"
    wcwidth "^1.0.0"

combine-source-map@~0.7.1:
  version "0.7.2"
  resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
  integrity sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=
  dependencies:
    convert-source-map "~1.1.0"
    inline-source-map "~0.6.0"
    lodash.memoize "~3.0.3"
    source-map "~0.5.3"

combined-stream@^1.0.5, combined-stream@~1.0.5:
  version "1.0.5"
  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
  integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
  dependencies:
    delayed-stream "~1.0.0"

commander@^2.9.0:
  version "2.9.0"
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
  integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
  dependencies:
    graceful-readlink ">= 1.0.0"

concat-map@0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=

concat-stream@^1.4.7, concat-stream@~1.5.0, concat-stream@~1.5.1:
  version "1.5.2"
  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
  integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY=
  dependencies:
    inherits "~2.0.1"
    readable-stream "~2.0.0"
    typedarray "~0.0.5"

concat-with-sourcemaps@^1.0.0:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.4.tgz#f55b3be2aeb47601b10a2d5259ccfb70fd2f1dd6"
  integrity sha1-9Vs74q60dgGxCi1SWcz7cP0vHdY=
  dependencies:
    source-map "^0.5.1"

configstore@^2.0.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1"
  integrity sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=
  dependencies:
    dot-prop "^3.0.0"
    graceful-fs "^4.1.2"
    mkdirp "^0.5.0"
    object-assign "^4.0.1"
    os-tmpdir "^1.0.0"
    osenv "^0.1.0"
    uuid "^2.0.1"
    write-file-atomic "^1.1.2"
    xdg-basedir "^2.0.0"

console-browserify@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
  integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
  dependencies:
    date-now "^0.1.4"

console-control-strings@^1.0.0, console-control-strings@~1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
  integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=

constants-browserify@~1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
  integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=

convert-source-map@1.X, convert-source-map@^1.1.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
  integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=

convert-source-map@~1.1.0:
  version "1.1.3"
  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
  integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=

core-util-is@~1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=

create-ecdh@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
  integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=
  dependencies:
    bn.js "^4.1.0"
    elliptic "^6.0.0"

create-error-class@^3.0.1:
  version "3.0.2"
  resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
  integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
  dependencies:
    capture-stack-trace "^1.0.0"

create-hash@^1.1.0, create-hash@^1.1.1:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
  integrity sha1-USEAYte7dHn2xlu0GpIgix1hq60=
  dependencies:
    cipher-base "^1.0.1"
    inherits "^2.0.1"
    ripemd160 "^1.0.0"
    sha.js "^2.3.6"

create-hmac@^1.1.0, create-hmac@^1.1.2:
  version "1.1.4"
  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
  integrity sha1-0/tLolPriz9W456i+8uK90e9MXA=
  dependencies:
    create-hash "^1.1.0"
    inherits "^2.0.1"

cross-spawn@^3.0.0:
  version "3.0.1"
  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
  integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI=
  dependencies:
    lru-cache "^4.0.1"
    which "^1.2.9"

cryptiles@2.x.x:
  version "2.0.5"
  resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
  integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
  dependencies:
    boom "2.x.x"

crypto-browserify@^3.0.0:
  version "3.11.0"
  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
  integrity sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=
  dependencies:
    browserify-cipher "^1.0.0"
    browserify-sign "^4.0.0"
    create-ecdh "^4.0.0"
    create-hash "^1.1.0"
    create-hmac "^1.1.0"
    diffie-hellman "^5.0.0"
    inherits "^2.0.1"
    pbkdf2 "^3.0.3"
    public-encrypt "^4.0.0"
    randombytes "^2.0.0"

css-mqpacker@^5.0.1:
  version "5.0.1"
  resolved "https://registry.yarnpkg.com/css-mqpacker/-/css-mqpacker-5.0.1.tgz#6f2d62252623fd7c33a68e1b88dc1370c885921e"
  integrity sha1-by1iJSYj/Xwzpo4biNwTcMiFkh4=
  dependencies:
    minimist "^1.1.1"
    postcss "^5.0.0"

css@2.X:
  version "2.2.1"
  resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
  integrity sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=
  dependencies:
    inherits "^2.0.1"
    source-map "^0.1.38"
    source-map-resolve "^0.3.0"
    urix "^0.1.0"

csswring@^5.1.0:
  version "5.1.1"
  resolved "https://registry.yarnpkg.com/csswring/-/csswring-5.1.1.tgz#f412b794d87c272f2487e42c05b1b857004f40a9"
  integrity sha1-9BK3lNh8Jy8kh+QsBbG4VwBPQKk=
  dependencies:
    minimist "^1.1.0"
    onecolor "^3.0.4"
    postcss "^5.0.0"

currently-unhandled@^0.4.1:
  version "0.4.1"
  resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
  integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
  dependencies:
    array-find-index "^1.0.1"

d@^0.1.1, d@~0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309"
  integrity sha1-2hhMU10Y2O57oqoim5FACfrhEwk=
  dependencies:
    es5-ext "~0.10.2"

dashdash@^1.12.0:
  version "1.14.1"
  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
  integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
  dependencies:
    assert-plus "^1.0.0"

date-now@^0.1.4:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
  integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=

dateformat@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
  integrity sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=

debug-fabulous@0.0.X:
  version "0.0.4"
  resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763"
  integrity sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=
  dependencies:
    debug "2.X"
    lazy-debug-legacy "0.0.X"
    object-assign "4.1.0"

debug@2, debug@2.X, debug@^2.2.0:
  version "2.5.2"
  resolved "https://registry.yarnpkg.com/debug/-/debug-2.5.2.tgz#50c295a53dbf1657146e0c1b21307275e90d49cb"
  integrity sha1-UMKVpT2/FlcUbgwbITBydekNScs=
  dependencies:
    ms "0.7.2"

decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=

deep-extend@~0.4.0:
  version "0.4.1"
  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
  integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=

defaults@^1.0.0, defaults@^1.0.3:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
  integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
  dependencies:
    clone "^1.0.2"

defined@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
  integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=

delayed-stream@~1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=

delegates@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=

deprecated@^0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19"
  integrity sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=

deps-sort@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
  integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=
  dependencies:
    JSONStream "^1.0.3"
    shasum "^1.0.0"
    subarg "^1.0.0"
    through2 "^2.0.0"

des.js@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
  integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
  dependencies:
    inherits "^2.0.1"
    minimalistic-assert "^1.0.0"

detect-file@^0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
  integrity sha1-STXe39lIhkjgBrASlWbpOGcR6mM=
  dependencies:
    fs-exists-sync "^0.1.0"

detect-indent@^5.0.0:
  version "5.0.0"
  resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
  integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=

detect-newline@2.X:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
  integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=

detective@^4.0.0:
  version "4.3.2"
  resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.2.tgz#77697e2e7947ac3fe7c8e26a6d6f115235afa91c"
  integrity sha1-d2l+LnlHrD/nyOJqbW8RUjWvqRw=
  dependencies:
    acorn "^3.1.0"
    defined "^1.0.0"

diffie-hellman@^5.0.0:
  version "5.0.2"
  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
  integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4=
  dependencies:
    bn.js "^4.1.0"
    miller-rabin "^4.0.0"
    randombytes "^2.0.0"

dom-walk@^0.1.0:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
  integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=

dom4@^1.5.2:
  version "1.8.3"
  resolved "https://registry.yarnpkg.com/dom4/-/dom4-1.8.3.tgz#2b0aa096b46368e33bbd2c2767f0e32dbb3394cd"
  integrity sha1-KwqglrRjaOM7vSwnZ/DjLbszlM0=

domain-browser@~1.1.0:
  version "1.1.7"
  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
  integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=

domready@^1.0.8:
  version "1.0.8"
  resolved "https://registry.yarnpkg.com/domready/-/domready-1.0.8.tgz#91f252e597b65af77e745ae24dd0185d5e26d58c"
  integrity sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=

dot-prop@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177"
  integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc=
  dependencies:
    is-obj "^1.0.0"

duplexer2@0.0.2:
  version "0.0.2"
  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
  integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=
  dependencies:
    readable-stream "~1.1.9"

duplexer2@^0.1.2, duplexer2@^0.1.4, duplexer2@~0.1.0, duplexer2@~0.1.2:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
  integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
  dependencies:
    readable-stream "^2.0.2"

duplexer@~0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
  integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=

ecc-jsbn@~0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
  integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
  dependencies:
    jsbn "~0.1.0"

elegant-spinner@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
  integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=

elliptic@^6.0.0:
  version "6.3.2"
  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48"
  integrity sha1-5MgeCCnPCmWrcOmYuCMnI7XBvEg=
  dependencies:
    bn.js "^4.4.0"
    brorand "^1.0.1"
    hash.js "^1.0.0"
    inherits "^2.0.1"

end-of-stream@~0.1.5:
  version "0.1.5"
  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf"
  integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8=
  dependencies:
    once "~1.3.0"

error-ex@^1.2.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
  integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
  dependencies:
    is-arrayish "^0.2.1"

error@^4.3.0:
  version "4.4.0"
  resolved "https://registry.yarnpkg.com/error/-/error-4.4.0.tgz#bf69ff251fb4a279c19adccdaa6b61e90d9bf12a"
  integrity sha1-v2n/JR+0onnBmtzNqmth6Q2b8So=
  dependencies:
    camelize "^1.0.0"
    string-template "~0.2.0"
    xtend "~4.0.0"

es5-ext@^0.10.7, es5-ext@~0.10.11, es5-ext@~0.10.2:
  version "0.10.12"
  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
  integrity sha1-qoRkHU23a2Krul5F/YBey6sUAEc=
  dependencies:
    es6-iterator "2"
    es6-symbol "~3.1"

es6-iterator@2:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac"
  integrity sha1-vZaFZ9YWNeM8C4BydhPJy0sJa6w=
  dependencies:
    d "^0.1.1"
    es5-ext "^0.10.7"
    es6-symbol "3"

es6-promise@^4.0.3:
  version "4.0.5"
  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42"
  integrity sha1-eILzCt3lskDM+n99eMVIMwlRrkI=

es6-symbol@3, es6-symbol@^3.0.2, es6-symbol@~3.1:
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa"
  integrity sha1-lEgcZV56fK2C66gy2X1UM0ltf/o=
  dependencies:
    d "~0.1.1"
    es5-ext "~0.10.11"

escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
  version "1.0.5"
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=

ev-store@^7.0.0:
  version "7.0.0"
  resolved "https://registry.yarnpkg.com/ev-store/-/ev-store-7.0.0.tgz#1ab0c7f82136505dd74b31d17701cb2be6d26558"
  integrity sha1-GrDH+CE2UF3XSzHRdwHLK+bSZVg=
  dependencies:
    individual "^3.0.0"

event-stream@^3.3.2:
  version "3.3.4"
  resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
  integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
  dependencies:
    duplexer "~0.1.1"
    from "~0"
    map-stream "~0.1.0"
    pause-stream "0.0.11"
    split "0.3"
    stream-combiner "~0.0.4"
    through "~2.3.1"

events@~1.1.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=

evp_bytestokey@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
  integrity sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=
  dependencies:
    create-hash "^1.1.1"

exit-hook@^1.0.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
  integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=

expand-brackets@^0.1.4:
  version "0.1.5"
  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
  integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
  dependencies:
    is-posix-bracket "^0.1.0"

expand-range@^1.8.1:
  version "1.8.2"
  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
  integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
  dependencies:
    fill-range "^2.1.0"

expand-tilde@^1.2.1, expand-tilde@^1.2.2:
  version "1.2.2"
  resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
  integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=
  dependencies:
    os-homedir "^1.0.1"

extend-shallow@^3.0.2:
  version "3.0.2"
  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
  dependencies:
    assign-symbols "^1.0.0"
    is-extendable "^1.0.1"

extend@3, extend@^3.0.0, extend@~3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
  integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=

extglob@^0.3.1:
  version "0.3.2"
  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
  integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
  dependencies:
    is-extglob "^1.0.0"

extsprintf@1.0.2:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
  integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=

fancy-log@^1.1.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
  integrity sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=
  dependencies:
    chalk "^1.1.1"
    time-stamp "^1.0.0"

filename-regex@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
  integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=

fill-range@^2.1.0:
  version "2.2.3"
  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
  integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
  dependencies:
    is-number "^2.1.0"
    isobject "^2.0.0"
    randomatic "^1.1.3"
    repeat-element "^1.1.2"
    repeat-string "^1.5.2"

filled-array@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84"
  integrity sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=

find-index@^0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
  integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=

find-up@^1.0.0:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
  integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
  dependencies:
    path-exists "^2.0.0"
    pinkie-promise "^2.0.0"

findup-sync@^0.4.2:
  version "0.4.3"
  resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12"
  integrity sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=
  dependencies:
    detect-file "^0.1.0"
    is-glob "^2.0.1"
    micromatch "^2.3.7"
    resolve-dir "^0.1.0"

fined@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/fined/-/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97"
  integrity sha1-WyhCS3YNdZiWC374SA3/itNmDpc=
  dependencies:
    expand-tilde "^1.2.1"
    lodash.assignwith "^4.0.7"
    lodash.isempty "^4.2.1"
    lodash.isplainobject "^4.0.4"
    lodash.isstring "^4.0.1"
    lodash.pick "^4.2.1"
    parse-filepath "^1.0.1"

first-chunk-stream@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
  integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=

flagged-respawn@^0.3.2:
  version "0.3.2"
  resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5"
  integrity sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=

for-in@^0.1.5:
  version "0.1.6"
  resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
  integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=

for-own@^0.1.4:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
  integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
  dependencies:
    for-in "^0.1.5"

forever-agent@~0.6.1:
  version "0.6.1"
  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=

form-data@^2.0.0, form-data@~2.1.1:
  version "2.1.2"
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
  integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
  dependencies:
    asynckit "^0.4.0"
    combined-stream "^1.0.5"
    mime-types "^2.1.12"

from@~0:
  version "0.1.3"
  resolved "https://registry.yarnpkg.com/from/-/from-0.1.3.tgz#ef63ac2062ac32acf7862e0d40b44b896f22f3bc"
  integrity sha1-72OsIGKsMqz3hi4NQLRLiW8i87w=

fs-exists-sync@^0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
  integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=

fs.realpath@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=

fstream@^1.0.0, fstream@^1.0.2:
  version "1.0.10"
  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
  integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
  dependencies:
    graceful-fs "^4.1.2"
    inherits "~2.0.0"
    mkdirp ">=0.5 0"
    rimraf "2"

function-bind@^1.0.2:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
  integrity sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=

gauge@~2.6.0:
  version "2.6.0"
  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46"
  integrity sha1-01MBrRjpaQK0dR3LvkD0IYuUKkY=
  dependencies:
    aproba "^1.0.3"
    console-control-strings "^1.0.0"
    has-color "^0.1.7"
    has-unicode "^2.0.0"
    object-assign "^4.1.0"
    signal-exit "^3.0.0"
    string-width "^1.0.1"
    strip-ansi "^3.0.1"
    wide-align "^1.1.0"

gauge@~2.7.1:
  version "2.7.2"
  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
  integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
  dependencies:
    aproba "^1.0.3"
    console-control-strings "^1.0.0"
    has-unicode "^2.0.0"
    object-assign "^4.1.0"
    signal-exit "^3.0.0"
    string-width "^1.0.1"
    strip-ansi "^3.0.1"
    supports-color "^0.2.0"
    wide-align "^1.1.0"

gaze@^0.5.1:
  version "0.5.2"
  resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f"
  integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=
  dependencies:
    globule "~0.1.0"

gaze@^1.0.0:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105"
  integrity sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=
  dependencies:
    globule "^1.0.0"

generate-function@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
  integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=

generate-object-property@^1.1.0:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
  integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
  dependencies:
    is-property "^1.0.0"

get-caller-file@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
  integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=

get-stdin@^4.0.1:
  version "4.0.1"
  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
  integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=

getpass@^0.1.1:
  version "0.1.6"
  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
  integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
  dependencies:
    assert-plus "^1.0.0"

glob-base@^0.3.0:
  version "0.3.0"
  resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
  integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
  dependencies:
    glob-parent "^2.0.0"
    is-glob "^2.0.0"

glob-parent@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
  integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
  dependencies:
    is-glob "^2.0.0"

glob-stream@^3.1.5:
  version "3.1.18"
  resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b"
  integrity sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=
  dependencies:
    glob "^4.3.1"
    glob2base "^0.0.12"
    minimatch "^2.0.1"
    ordered-read-streams "^0.1.0"
    through2 "^0.6.1"
    unique-stream "^1.0.0"

glob-watcher@^0.0.6:
  version "0.0.6"
  resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b"
  integrity sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=
  dependencies:
    gaze "^0.5.1"

glob2base@^0.0.12:
  version "0.0.12"
  resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
  integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=
  dependencies:
    find-index "^0.1.1"

glob@^4.3.1:
  version "4.5.3"
  resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f"
  integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=
  dependencies:
    inflight "^1.0.4"
    inherits "2"
    minimatch "^2.0.1"
    once "^1.3.0"

glob@^5.0.15:
  version "5.0.15"
  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
  integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
  dependencies:
    inflight "^1.0.4"
    inherits "2"
    minimatch "2 || 3"
    once "^1.3.0"
    path-is-absolute "^1.0.0"

glob@^6.0.1, glob@^6.0.4:
  version "6.0.4"
  resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
  integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=
  dependencies:
    inflight "^1.0.4"
    inherits "2"
    minimatch "2 || 3"
    once "^1.3.0"
    path-is-absolute "^1.0.0"

glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1:
  version "7.1.1"
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
  integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
  dependencies:
    fs.realpath "^1.0.0"
    inflight "^1.0.4"
    inherits "2"
    minimatch "^3.0.2"
    once "^1.3.0"
    path-is-absolute "^1.0.0"

glob@~3.1.21:
  version "3.1.21"
  resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
  integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=
  dependencies:
    graceful-fs "~1.2.0"
    inherits "1"
    minimatch "~0.2.11"

global-modules@^0.2.3:
  version "0.2.3"
  resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
  integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=
  dependencies:
    global-prefix "^0.1.4"
    is-windows "^0.2.0"

global-prefix@^0.1.4:
  version "0.1.5"
  resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
  integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=
  dependencies:
    homedir-polyfill "^1.0.0"
    ini "^1.3.4"
    is-windows "^0.2.0"
    which "^1.2.12"

global@^4.3.0:
  version "4.3.1"
  resolved "https://registry.yarnpkg.com/global/-/global-4.3.1.tgz#5f757908c7cbabce54f386ae440e11e26b7916df"
  integrity sha1-X3V5CMfLq85U84auRA4R4mt5Ft8=
  dependencies:
    min-document "^2.19.0"
    process "~0.5.1"

globby@^4.0.0:
  version "4.1.0"
  resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8"
  integrity sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=
  dependencies:
    array-union "^1.0.1"
    arrify "^1.0.0"
    glob "^6.0.1"
    object-assign "^4.0.1"
    pify "^2.0.0"
    pinkie-promise "^2.0.0"

globule@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/globule/-/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f"
  integrity sha1-xJNS5NwYPYWJPuglOF65lLtt9F8=
  dependencies:
    glob "~7.1.1"
    lodash "~4.16.4"
    minimatch "~3.0.2"

globule@~0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
  integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=
  dependencies:
    glob "~3.1.21"
    lodash "~1.0.1"
    minimatch "~0.2.11"

glogg@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
  integrity sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=
  dependencies:
    sparkles "^1.0.0"

got@^5.0.0:
  version "5.7.1"
  resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
  integrity sha1-X4FjWmHkplifGAVp6k44FoClHzU=
  dependencies:
    create-error-class "^3.0.1"
    duplexer2 "^0.1.4"
    is-redirect "^1.0.0"
    is-retry-allowed "^1.0.0"
    is-stream "^1.0.0"
    lowercase-keys "^1.0.0"
    node-status-codes "^1.0.0"
    object-assign "^4.0.1"
    parse-json "^2.1.0"
    pinkie-promise "^2.0.0"
    read-all-stream "^3.0.0"
    readable-stream "^2.0.5"
    timed-out "^3.0.0"
    unzip-response "^1.0.2"
    url-parse-lax "^1.0.0"

graceful-fs@4.X, graceful-fs@^4.1.2, graceful-fs@^4.1.4:
  version "4.1.11"
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
  integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=

graceful-fs@^3.0.0:
  version "3.0.11"
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
  integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=
  dependencies:
    natives "^1.1.0"

graceful-fs@~1.2.0:
  version "1.2.3"
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
  integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=

"graceful-readlink@>= 1.0.0":
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
  integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=

gulp-concat@^2.6.0:
  version "2.6.1"
  resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353"
  integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=
  dependencies:
    concat-with-sourcemaps "^1.0.0"
    through2 "^2.0.0"
    vinyl "^2.0.0"

gulp-postcss@^6.0.1:
  version "6.2.0"
  resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-6.2.0.tgz#be0b7c3ab25aaa9a6ddef3fc65edf52d2be99640"
  integrity sha1-vgt8OrJaqppt3vP8Ze31LSvplkA=
  dependencies:
    gulp-util "^3.0.7"
    postcss "^5.2.0"
    vinyl-sourcemaps-apply "^0.2.0"

gulp-sass@^4.0.1:
  version "4.0.1"
  resolved "https://registry.yarnpkg.com/gulp-sass/-/gulp-sass-4.0.1.tgz#7f43d117eb2d303524968a1b48494af1bc64d1d9"
  integrity sha512-OMQEgWNggpog8Tc5v1MuI6eo+5iiPkVeLL76iBhDoEEScLUPfZlpvzmgTnLkpcqdrNodZxpz5qcv6mS2rulk3g==
  dependencies:
    chalk "^2.3.0"
    lodash.clonedeep "^4.3.2"
    node-sass "^4.8.3"
    plugin-error "^1.0.1"
    replace-ext "^1.0.0"
    strip-ansi "^4.0.0"
    through2 "^2.0.0"
    vinyl-sourcemaps-apply "^0.2.0"

gulp-sequence@^0.4.6:
  version "0.4.6"
  resolved "https://registry.yarnpkg.com/gulp-sequence/-/gulp-sequence-0.4.6.tgz#e388d64311046e05547af43035352d9495501c50"
  integrity sha1-44jWQxEEbgVUevQwNTUtlJVQHFA=
  dependencies:
    gulp-util ">=3.0.0"
    thunks "^4.5.1"

gulp-sourcemaps@^1.6.0:
  version "1.9.1"
  resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.9.1.tgz#80ac2d3845d13e68dd962524d8a967a440b0b753"
  integrity sha1-gKwtOEXRPmjdliUk2KlnpECwt1M=
  dependencies:
    acorn "4.X"
    convert-source-map "1.X"
    css "2.X"
    debug-fabulous "0.0.X"
    detect-newline "2.X"
    graceful-fs "4.X"
    source-map "0.X"
    strip-bom "2.X"
    through2 "2.X"
    vinyl "1.X"

gulp-uglify@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-2.0.0.tgz#cbe4aae4fe0b6bdd760335bc46f200fff699c4af"
  integrity sha1-y+Sq5P4La912AzW8RvIA//aZxK8=
  dependencies:
    gulplog "^1.0.0"
    has-gulplog "^0.1.0"
    lodash "^4.13.1"
    make-error-cause "^1.1.1"
    through2 "^2.0.0"
    uglify-js "2.7.0"
    uglify-save-license "^0.4.1"
    vinyl-sourcemaps-apply "^0.2.0"

gulp-util@>=3.0.0, gulp-util@^3.0.0, gulp-util@^3.0.7:
  version "3.0.8"
  resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
  integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08=
  dependencies:
    array-differ "^1.0.0"
    array-uniq "^1.0.2"
    beeper "^1.0.0"
    chalk "^1.0.0"
    dateformat "^2.0.0"
    fancy-log "^1.1.0"
    gulplog "^1.0.0"
    has-gulplog "^0.1.0"
    lodash._reescape "^3.0.0"
    lodash._reevaluate "^3.0.0"
    lodash._reinterpolate "^3.0.0"
    lodash.template "^3.0.0"
    minimist "^1.1.0"
    multipipe "^0.1.2"
    object-assign "^3.0.0"
    replace-ext "0.0.1"
    through2 "^2.0.0"
    vinyl "^0.5.0"

gulp@^3.9.0:
  version "3.9.1"
  resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4"
  integrity sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=
  dependencies:
    archy "^1.0.0"
    chalk "^1.0.0"
    deprecated "^0.0.1"
    gulp-util "^3.0.0"
    interpret "^1.0.0"
    liftoff "^2.1.0"
    minimist "^1.1.0"
    orchestrator "^0.3.0"
    pretty-hrtime "^1.0.0"
    semver "^4.1.0"
    tildify "^1.0.0"
    v8flags "^2.0.2"
    vinyl-fs "^0.3.0"

gulplog@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
  integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U=
  dependencies:
    glogg "^1.0.0"

har-validator@~2.0.6:
  version "2.0.6"
  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
  integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
  dependencies:
    chalk "^1.1.1"
    commander "^2.9.0"
    is-my-json-valid "^2.12.4"
    pinkie-promise "^2.0.0"

has-ansi@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
  dependencies:
    ansi-regex "^2.0.0"

has-color@^0.1.7:
  version "0.1.7"
  resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f"
  integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=

has-flag@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
  integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=

has-flag@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=

has-gulplog@^0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
  integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=
  dependencies:
    sparkles "^1.0.0"

has-unicode@^2.0.0, has-unicode@^2.0.1:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
  integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=

has@^1.0.0, has@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
  integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg=
  dependencies:
    function-bind "^1.0.2"

hash.js@^1.0.0:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
  integrity sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=
  dependencies:
    inherits "^2.0.1"

hawk@~3.1.3:
  version "3.1.3"
  resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
  integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
  dependencies:
    boom "2.x.x"
    cryptiles "2.x.x"
    hoek "2.x.x"
    sntp "1.x.x"

hoek@2.x.x:
  version "2.16.3"
  resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
  integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=

homedir-polyfill@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
  integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw=
  dependencies:
    parse-passwd "^1.0.0"

hosted-git-info@^2.1.4:
  version "2.1.5"
  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
  integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=

htmlescape@^1.1.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
  integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=

http-proxy-agent@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a"
  integrity sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=
  dependencies:
    agent-base "2"
    debug "2"
    extend "3"

http-signature@~1.1.0:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
  integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
  dependencies:
    assert-plus "^0.2.0"
    jsprim "^1.2.2"
    sshpk "^1.7.0"

https-browserify@~0.0.0:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
  integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=

https-proxy-agent@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6"
  integrity sha1-NffabEjOTdv6JkiRrFk+5f+GceY=
  dependencies:
    agent-base "2"
    debug "2"
    extend "3"

ieee754@^1.1.4:
  version "1.1.8"
  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
  integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=

imurmurhash@^0.1.4:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=

in-publish@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51"
  integrity sha1-4g/146KvwmkDILbcVSaCqcf631E=

indent-string@^2.1.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
  integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
  dependencies:
    repeating "^2.0.0"

indexof@0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
  integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=

individual@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/individual/-/individual-3.0.0.tgz#e7ca4f85f8957b018734f285750dc22ec2f9862d"
  integrity sha1-58pPhfiVewGHNPKFdQ3CLsL5hi0=

inflight@^1.0.4:
  version "1.0.6"
  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
  dependencies:
    once "^1.3.0"
    wrappy "1"

inherits@1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
  integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=

inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
  version "2.0.3"
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=

inherits@2.0.1:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
  integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=

ini@^1.3.4, ini@~1.3.0:
  version "1.3.4"
  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
  integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=

inline-source-map@~0.6.0:
  version "0.6.2"
  resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
  integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=
  dependencies:
    source-map "~0.5.3"

insert-module-globals@^7.0.0:
  version "7.0.1"
  resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
  integrity sha1-wDv04BywhtW15azorQr+eInWOMM=
  dependencies:
    JSONStream "^1.0.3"
    combine-source-map "~0.7.1"
    concat-stream "~1.5.1"
    is-buffer "^1.1.0"
    lexical-scope "^1.2.0"
    process "~0.11.0"
    through2 "^2.0.0"
    xtend "^4.0.0"

interpret@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
  integrity sha1-1Xn7f2k7hYAElHrzn6DbSfeVYCw=

invariant@^2.2.0:
  version "2.2.2"
  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
  integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
  dependencies:
    loose-envify "^1.0.0"

invert-kv@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
  integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=

is-absolute@^0.2.3:
  version "0.2.6"
  resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb"
  integrity sha1-IN5p89uULvLYe5wto28XIjWxtes=
  dependencies:
    is-relative "^0.2.1"
    is-windows "^0.2.0"

is-arrayish@^0.2.1:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=

is-buffer@^1.0.2, is-buffer@^1.1.0:
  version "1.1.4"
  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
  integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=

is-builtin-module@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
  integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
  dependencies:
    builtin-modules "^1.0.0"

is-dotfile@^1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
  integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=

is-equal-shallow@^0.1.3:
  version "0.1.3"
  resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
  integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
  dependencies:
    is-primitive "^2.0.0"

is-extendable@^0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=

is-extendable@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
  dependencies:
    is-plain-object "^2.0.4"

is-extglob@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
  integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=

is-finite@^1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
  integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
  dependencies:
    number-is-nan "^1.0.0"

is-fullwidth-code-point@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
  dependencies:
    number-is-nan "^1.0.0"

is-glob@^2.0.0, is-glob@^2.0.1:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
  integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
  dependencies:
    is-extglob "^1.0.0"

is-my-json-valid@^2.12.4:
  version "2.15.0"
  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
  integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
  dependencies:
    generate-function "^2.0.0"
    generate-object-property "^1.1.0"
    jsonpointer "^4.0.0"
    xtend "^4.0.0"

is-npm@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
  integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=

is-number@^2.0.2, is-number@^2.1.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
  integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
  dependencies:
    kind-of "^3.0.2"

is-obj@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
  integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=

is-object@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
  integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA=

is-plain-obj@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=

is-plain-object@^2.0.4:
  version "2.0.4"
  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
  dependencies:
    isobject "^3.0.1"

is-posix-bracket@^0.1.0:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
  integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=

is-primitive@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
  integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=

is-property@^1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
  integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=

is-redirect@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
  integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=

is-relative@^0.2.1:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5"
  integrity sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=
  dependencies:
    is-unc-path "^0.1.1"

is-retry-allowed@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
  integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=

is-stream@^1.0.0, is-stream@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=

is-typedarray@~1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=

is-unc-path@^0.1.1:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9"
  integrity sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=
  dependencies:
    unc-path-regex "^0.1.0"

is-utf8@^0.2.0:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
  integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=

is-windows@^0.2.0:
  version "0.2.0"
  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
  integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw=

isarray@0.0.1, isarray@~0.0.1:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
  integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=

isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=

isexe@^1.1.1:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
  integrity sha1-NvPiLmB1CSD15yQaR2qMakInWtA=

isobject@^2.0.0, isobject@^2.1.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
  dependencies:
    isarray "1.0.0"

isobject@^3.0.1:
  version "3.0.1"
  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=

isstream@~0.1.2:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
  integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=

jodid25519@^1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
  integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
  dependencies:
    jsbn "~0.1.0"

js-base64@^2.1.8:
  version "2.4.3"
  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582"
  integrity sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==

js-base64@^2.1.9:
  version "2.1.9"
  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
  integrity sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=

js-cookie@^2.1.0:
  version "2.1.3"
  resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.1.3.tgz#48071625217ac9ecfab8c343a13d42ec09ff0526"
  integrity sha1-SAcWJSF6yez6uMNDoT1C7An/BSY=

js-tokens@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
  integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=

jsbn@~0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
  integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=

json-schema@0.2.3:
  version "0.2.3"
  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
  integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=

json-stable-stringify@~0.0.0:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
  integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=
  dependencies:
    jsonify "~0.0.0"

json-stringify-safe@~5.0.1:
  version "5.0.1"
  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=

jsonify@~0.0.0:
  version "0.0.0"
  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
  integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=

jsonparse@^1.2.0:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd"
  integrity sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=

jsonpointer@^4.0.0:
  version "4.0.1"
  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
  integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=

jspm-config@^0.3.0:
  version "0.3.2"
  resolved "https://registry.yarnpkg.com/jspm-config/-/jspm-config-0.3.2.tgz#57683d6472d1cb96b92ad66153f9c56fd92f77ec"
  integrity sha1-V2g9ZHLRy5a5KtZhU/nFb9kvd+w=
  dependencies:
    any-promise "^1.3.0"
    graceful-fs "^4.1.4"
    make-error-cause "^1.2.1"
    object.pick "^1.1.2"
    parse-json "^2.2.0"
    strip-bom "^2.0.0"
    thenify "^3.2.0"
    throat "^3.0.0"
    xtend "^4.0.1"

jsprim@^1.2.2:
  version "1.3.1"
  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
  integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
  dependencies:
    extsprintf "1.0.2"
    json-schema "0.2.3"
    verror "1.3.6"

kind-of@^3.0.2:
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
  integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
  dependencies:
    is-buffer "^1.0.2"

labeled-stream-splicer@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
  integrity sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=
  dependencies:
    inherits "^2.0.1"
    isarray "~0.0.1"
    stream-splicer "^2.0.0"

latest-version@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b"
  integrity sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=
  dependencies:
    package-json "^2.0.0"

lazy-cache@^1.0.3:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
  integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=

lazy-debug-legacy@0.0.X:
  version "0.0.1"
  resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1"
  integrity sha1-U3cWwHduTPeePtG2IfdljCkRsbE=

lazy-req@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
  integrity sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=

lcid@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
  integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
  dependencies:
    invert-kv "^1.0.0"

lexical-scope@^1.2.0:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
  integrity sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=
  dependencies:
    astw "^2.0.0"

liftoff@^2.1.0:
  version "2.3.0"
  resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385"
  integrity sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=
  dependencies:
    extend "^3.0.0"
    findup-sync "^0.4.2"
    fined "^1.0.1"
    flagged-respawn "^0.3.2"
    lodash.isplainobject "^4.0.4"
    lodash.isstring "^4.0.1"
    lodash.mapvalues "^4.4.0"
    rechoir "^0.6.2"
    resolve "^1.1.7"

listify@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.0.tgz#03ca7ba2d150d4267773f74e57558d1053d2bee3"
  integrity sha1-A8p7otFQ1CZ3c/dOV1WNEFPSvuM=

load-json-file@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
  integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
  dependencies:
    graceful-fs "^4.1.2"
    parse-json "^2.2.0"
    pify "^2.0.0"
    pinkie-promise "^2.0.0"
    strip-bom "^2.0.0"

lockfile@^1.0.1:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79"
  integrity sha1-Jjj8OaAzHpysGgS3F5mTHJxQ33k=

lodash._basecopy@^3.0.0:
  version "3.0.1"
  resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
  integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=

lodash._basetostring@^3.0.0:
  version "3.0.1"
  resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
  integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=

lodash._basevalues@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
  integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=

lodash._getnative@^3.0.0:
  version "3.9.1"
  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
  integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=

lodash._isiterateecall@^3.0.0:
  version "3.0.9"
  resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
  integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=

lodash._reescape@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
  integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=

lodash._reevaluate@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
  integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=

lodash._reinterpolate@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
  integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=

lodash._root@^3.0.0:
  version "3.0.1"
  resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
  integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=

lodash.assign@^4.2.0:
  version "4.2.0"
  resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
  integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=

lodash.assignwith@^4.0.7:
  version "4.2.0"
  resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb"
  integrity sha1-EnqX8CrcQXUalU0ksN4X4QDgOOs=

lodash.clonedeep@^4.3.2:
  version "4.5.0"
  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
  integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=

lodash.escape@^3.0.0:
  version "3.2.0"
  resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
  integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=
  dependencies:
    lodash._root "^3.0.0"

lodash.isarguments@^3.0.0:
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
  integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=

lodash.isarray@^3.0.0:
  version "3.0.4"
  resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
  integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=

lodash.isempty@^4.2.1:
  version "4.4.0"
  resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
  integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=

lodash.isplainobject@^4.0.4:
  version "4.0.6"
  resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
  integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=

lodash.isstring@^4.0.1:
  version "4.0.1"
  resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
  integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=

lodash.keys@^3.0.0:
  version "3.1.2"
  resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
  integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=
  dependencies:
    lodash._getnative "^3.0.0"
    lodash.isarguments "^3.0.0"
    lodash.isarray "^3.0.0"

lodash.mapvalues@^4.4.0:
  version "4.6.0"
  resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
  integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=

lodash.memoize@~3.0.3:
  version "3.0.4"
  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
  integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=

lodash.mergewith@^4.6.0:
  version "4.6.1"
  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
  integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==

lodash.pick@^4.2.1:
  version "4.4.0"
  resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
  integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=

lodash.restparam@^3.0.0:
  version "3.6.1"
  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
  integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=

lodash.template@^3.0.0:
  version "3.6.2"
  resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
  integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=
  dependencies:
    lodash._basecopy "^3.0.0"
    lodash._basetostring "^3.0.0"
    lodash._basevalues "^3.0.0"
    lodash._isiterateecall "^3.0.0"
    lodash._reinterpolate "^3.0.0"
    lodash.escape "^3.0.0"
    lodash.keys "^3.0.0"
    lodash.restparam "^3.0.0"
    lodash.templatesettings "^3.0.0"

lodash.templatesettings@^3.0.0:
  version "3.1.1"
  resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
  integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=
  dependencies:
    lodash._reinterpolate "^3.0.0"
    lodash.escape "^3.0.0"

lodash@^4.0.0, lodash@^4.13.1:
  version "4.17.3"
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.3.tgz#557ed7d2a9438cac5fd5a43043ca60cb455e01f7"
  integrity sha1-VX7X0qlDjKxf1aQwQ8pgy0VeAfc=

lodash@~1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
  integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=

lodash@~4.16.4:
  version "4.16.6"
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777"
  integrity sha1-0iyaxmAojzhD4Wun0rXQbMon13c=

log-update@^1.0.2:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
  integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=
  dependencies:
    ansi-escapes "^1.0.0"
    cli-cursor "^1.0.2"

longest@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
  integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=

loose-envify@^1.0.0:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
  integrity sha1-ayYkjEL21PpLDYVC947fzeNWQqg=
  dependencies:
    js-tokens "^2.0.0"

loud-rejection@^1.0.0:
  version "1.6.0"
  resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
  integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
  dependencies:
    currently-unhandled "^0.4.1"
    signal-exit "^3.0.0"

lowercase-keys@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
  integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=

lru-cache@2:
  version "2.7.3"
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
  integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=

lru-cache@^4.0.1:
  version "4.0.2"
  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
  integrity sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=
  dependencies:
    pseudomap "^1.0.1"
    yallist "^2.0.0"

make-error-cause@^1.1.1, make-error-cause@^1.2.1:
  version "1.2.2"
  resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d"
  integrity sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=
  dependencies:
    make-error "^1.2.0"

make-error@^1.2.0:
  version "1.2.1"
  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.1.tgz#9a6dfb4844423b9f145806728d05c6e935670e75"
  integrity sha1-mm37SERCO58UWAZyjQXG6TVnDnU=

map-cache@^0.2.0:
  version "0.2.2"
  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=

map-obj@^1.0.0, map-obj@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
  integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=

map-stream@~0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
  integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=

meow@^3.7.0:
  version "3.7.0"
  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
  integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
  dependencies:
    camelcase-keys "^2.0.0"
    decamelize "^1.1.2"
    loud-rejection "^1.0.0"
    map-obj "^1.0.1"
    minimist "^1.1.3"
    normalize-package-data "^2.3.4"
    object-assign "^4.0.1"
    read-pkg-up "^1.0.1"
    redent "^1.0.0"
    trim-newlines "^1.0.0"

micromatch@^2.3.7:
  version "2.3.11"
  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
  integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
  dependencies:
    arr-diff "^2.0.0"
    array-unique "^0.2.1"
    braces "^1.8.2"
    expand-brackets "^0.1.4"
    extglob "^0.3.1"
    filename-regex "^2.0.0"
    is-extglob "^1.0.0"
    is-glob "^2.0.1"
    kind-of "^3.0.2"
    normalize-path "^2.0.1"
    object.omit "^2.0.0"
    parse-glob "^3.0.4"
    regex-cache "^0.4.2"

miller-rabin@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
  integrity sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=
  dependencies:
    bn.js "^4.0.0"
    brorand "^1.0.1"

mime-db@~1.25.0:
  version "1.25.0"
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
  integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=

mime-types@^2.1.12, mime-types@~2.1.7:
  version "2.1.13"
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
  integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
  dependencies:
    mime-db "~1.25.0"

min-document@^2.19.0:
  version "2.19.0"
  resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
  integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=
  dependencies:
    dom-walk "^0.1.0"

minimalistic-assert@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
  integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=

"minimatch@2 || 3", minimatch@^3.0.2, minimatch@~3.0.2:
  version "3.0.3"
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
  integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
  dependencies:
    brace-expansion "^1.0.0"

minimatch@^2.0.1:
  version "2.0.10"
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
  integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=
  dependencies:
    brace-expansion "^1.0.0"

minimatch@~0.2.11:
  version "0.2.14"
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
  integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=
  dependencies:
    lru-cache "2"
    sigmund "~1.0.0"

minimist@0.0.8:
  version "0.0.8"
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=

minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=

"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1:
  version "0.5.1"
  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
  dependencies:
    minimist "0.0.8"

module-deps@^4.0.8:
  version "4.0.8"
  resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.0.8.tgz#55fd70623399706c3288bef7a609ff1e8c0ed2bb"
  integrity sha1-Vf1wYjOZcGwyiL73pgn/HowO0rs=
  dependencies:
    JSONStream "^1.0.3"
    browser-resolve "^1.7.0"
    cached-path-relative "^1.0.0"
    concat-stream "~1.5.0"
    defined "^1.0.0"
    detective "^4.0.0"
    duplexer2 "^0.1.2"
    inherits "^2.0.1"
    parents "^1.0.0"
    readable-stream "^2.0.2"
    resolve "^1.1.3"
    stream-combiner2 "^1.1.1"
    subarg "^1.0.0"
    through2 "^2.0.0"
    xtend "^4.0.0"

ms@0.7.2:
  version "0.7.2"
  resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
  integrity sha1-riXPJRKziFodldfwN4aNhDESR2U=

multipipe@^0.1.2:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
  integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=
  dependencies:
    duplexer2 "0.0.2"

nan@^2.10.0:
  version "2.10.0"
  resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
  integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==

natives@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31"
  integrity sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=

next-tick@^0.2.2:
  version "0.2.2"
  resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d"
  integrity sha1-ddpKkn7liH45BliABltzNkE7MQ0=

node-gyp@^3.3.1:
  version "3.4.0"
  resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.4.0.tgz#dda558393b3ecbbe24c9e6b8703c71194c63fa36"
  integrity sha1-3aVYOTs+y74kyea4cDxxGUxj+jY=
  dependencies:
    fstream "^1.0.0"
    glob "^7.0.3"
    graceful-fs "^4.1.2"
    minimatch "^3.0.2"
    mkdirp "^0.5.0"
    nopt "2 || 3"
    npmlog "0 || 1 || 2 || 3"
    osenv "0"
    path-array "^1.0.0"
    request "2"
    rimraf "2"
    semver "2.x || 3.x || 4 || 5"
    tar "^2.0.0"
    which "1"

node-sass@^4.8.3:
  version "4.9.0"
  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.0.tgz#d1b8aa855d98ed684d6848db929a20771cc2ae52"
  integrity sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==
  dependencies:
    async-foreach "^0.1.3"
    chalk "^1.1.1"
    cross-spawn "^3.0.0"
    gaze "^1.0.0"
    get-stdin "^4.0.1"
    glob "^7.0.3"
    in-publish "^2.0.0"
    lodash.assign "^4.2.0"
    lodash.clonedeep "^4.3.2"
    lodash.mergewith "^4.6.0"
    meow "^3.7.0"
    mkdirp "^0.5.1"
    nan "^2.10.0"
    node-gyp "^3.3.1"
    npmlog "^4.0.0"
    request "~2.79.0"
    sass-graph "^2.2.4"
    stdout-stream "^1.4.0"
    "true-case-path" "^1.0.2"

node-status-codes@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
  integrity sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=

"nopt@2 || 3":
  version "3.0.6"
  resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
  integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
  dependencies:
    abbrev "1"

nopt@~1.0.10:
  version "1.0.10"
  resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
  integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
  dependencies:
    abbrev "1"

normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
  version "2.3.5"
  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
  integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
  dependencies:
    hosted-git-info "^2.1.4"
    is-builtin-module "^1.0.0"
    semver "2 || 3 || 4 || 5"
    validate-npm-package-license "^3.0.1"

normalize-path@^2.0.1:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
  integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=

normalize-range@^0.1.2:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
  integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=

"npmlog@0 || 1 || 2 || 3":
  version "3.1.2"
  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873"
  integrity sha1-LUb6h0M3r5SYovErtD2NC+SjaHM=
  dependencies:
    are-we-there-yet "~1.1.2"
    console-control-strings "~1.1.0"
    gauge "~2.6.0"
    set-blocking "~2.0.0"

npmlog@^4.0.0:
  version "4.0.2"
  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
  integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
  dependencies:
    are-we-there-yet "~1.1.2"
    console-control-strings "~1.1.0"
    gauge "~2.7.1"
    set-blocking "~2.0.0"

num2fraction@^1.2.2:
  version "1.2.2"
  resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
  integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=

number-is-nan@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=

oauth-sign@~0.8.1:
  version "0.8.2"
  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
  integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=

object-assign@4.1.0, object-assign@^4.0.1, object-assign@^4.1.0:
  version "4.1.0"
  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
  integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=

object-assign@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
  integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=

object.omit@^2.0.0:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
  integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
  dependencies:
    for-own "^0.1.4"
    is-extendable "^0.1.1"

object.pick@^1.1.1, object.pick@^1.1.2:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.2.0.tgz#b5392bee9782da6d9fb7d6afaf539779f1234c2b"
  integrity sha1-tTkr7peC2m2ft9avr1OXefEjTCs=
  dependencies:
    isobject "^2.1.0"

once@^1.3.0:
  version "1.4.0"
  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
  dependencies:
    wrappy "1"

once@~1.3.0:
  version "1.3.3"
  resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
  integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
  dependencies:
    wrappy "1"

onecolor@^3.0.4:
  version "3.0.4"
  resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.4.tgz#75a46f80da6c7aaa5b4daae17a47198bd9652494"
  integrity sha1-daRvgNpseqpbTarhekcZi9llJJQ=

onetime@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
  integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=

orchestrator@^0.3.0:
  version "0.3.8"
  resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e"
  integrity sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=
  dependencies:
    end-of-stream "~0.1.5"
    sequencify "~0.0.7"
    stream-consume "~0.1.0"

ordered-read-streams@^0.1.0:
  version "0.1.0"
  resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126"
  integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=

os-browserify@~0.1.1:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
  integrity sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=

os-homedir@^1.0.0, os-homedir@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=

os-locale@^1.4.0:
  version "1.4.0"
  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
  integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
  dependencies:
    lcid "^1.0.0"

os-tmpdir@^1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=

osenv@0, osenv@^0.1.0:
  version "0.1.4"
  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
  integrity sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=
  dependencies:
    os-homedir "^1.0.0"
    os-tmpdir "^1.0.0"

package-json@^2.0.0:
  version "2.4.0"
  resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb"
  integrity sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=
  dependencies:
    got "^5.0.0"
    registry-auth-token "^3.0.1"
    registry-url "^3.0.3"
    semver "^5.1.0"

pako@~0.2.0:
  version "0.2.9"
  resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
  integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=

parents@^1.0.0, parents@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
  integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=
  dependencies:
    path-platform "~0.11.15"

parse-asn1@^5.0.0:
  version "5.0.0"
  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
  integrity sha1-NQYPbVAV03Yox3D04JGgtaJ4vCM=
  dependencies:
    asn1.js "^4.0.0"
    browserify-aes "^1.0.0"
    create-hash "^1.1.0"
    evp_bytestokey "^1.0.0"
    pbkdf2 "^3.0.3"

parse-filepath@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73"
  integrity sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=
  dependencies:
    is-absolute "^0.2.3"
    map-cache "^0.2.0"
    path-root "^0.1.1"

parse-glob@^3.0.4:
  version "3.0.4"
  resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
  integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
  dependencies:
    glob-base "^0.3.0"
    is-dotfile "^1.0.0"
    is-extglob "^1.0.0"
    is-glob "^2.0.0"

parse-json@^2.1.0, parse-json@^2.2.0:
  version "2.2.0"
  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
  integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
  dependencies:
    error-ex "^1.2.0"

parse-passwd@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
  integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=

path-array@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/path-array/-/path-array-1.0.1.tgz#7e2f0f35f07a2015122b868b7eac0eb2c4fec271"
  integrity sha1-fi8PNfB6IBUSK4aLfqwOssT+wnE=
  dependencies:
    array-index "^1.0.0"

path-browserify@~0.0.0:
  version "0.0.0"
  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
  integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=

path-exists@^2.0.0:
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
  integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
  dependencies:
    pinkie-promise "^2.0.0"

path-is-absolute@^1.0.0:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=

path-platform@~0.11.15:
  version "0.11.15"
  resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
  integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=

path-root-regex@^0.1.0:
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
  integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=

path-root@^0.1.1:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
  integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=
  dependencies:
    path-root-regex "^0.1.0"

path-type@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
  integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
  dependencies:
    graceful-fs "^4.1.2"
    pify "^2.0.0"
    pinkie-promise "^2.0.0"

pause-stream@0.0.11:
  version "0.0.11"
  resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
  integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
  dependencies:
    through "~2.3"

pbkdf2@^3.0.3:
  version "3.0.9"
  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
  integrity sha1-8sSyWmAAWLPDdzwIbDfbvuH/5pM=
  dependencies:
    create-hmac "^1.1.2"

pify@^2.0.0:
  version "2.3.0"
  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=

pinkie-promise@^2.0.0:
  version "2.0.1"
  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
  integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
  dependencies:
    pinkie "^2.0.0"

pinkie@^2.0.0:
  version "2.0.4"
  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
  integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=

plugin-error@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
  integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
  dependencies:
    ansi-colors "^1.0.1"
    arr-diff "^4.0.0"
    arr-union "^3.1.0"
    extend-shallow "^3.0.2"

popsicle-proxy-agent@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/popsicle-proxy-agent/-/popsicle-proxy-agent-3.0.0.tgz#b9133c55d945759ab7ee61b7711364620d3aeadc"
  integrity sha1-uRM8VdlFdZq37mG3cRNkYg066tw=
  dependencies:
    http-proxy-agent "^1.0.0"
    https-proxy-agent "^1.0.0"

popsicle-retry@^3.2.0:
  version "3.2.1"
  resolved "https://registry.yarnpkg.com/popsicle-retry/-/popsicle-retry-3.2.1.tgz#e06e866533b42a7a123eb330cbe63a7cebcba10c"
  integrity sha1-4G6GZTO0KnoSPrMwy+Y6fOvLoQw=
  dependencies:
    any-promise "^1.1.0"
    xtend "^4.0.1"

popsicle-rewrite@^1.0.0:
  version "1.0.0"
  resolved "https://registry.yarnpkg.com/popsicle-rewrite/-/popsicle-rewrite-1.0.0.tgz#1dd4e8ea9c3182351fb820f87934d992f7fb9007"
  integrity sha1-HdTo6pwxgjUfuCD4eTTZkvf7kAc=

popsicle-status@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/popsicle-status/-/popsicle-status-2.0.0.tgz#54e12722376efba0a353abdf53cbf1ce0e852efa"
  integrity sha1-VOEnIjdu+6CjU6vfU8vxzg6FLvo=

popsicle@^9.0.0:
  version "9.0.0"
  resolved "https://registry.yarnpkg.com/popsicle/-/popsicle-9.0.0.tgz#c0cae31ce903076eafad703a4dcd760c31120e6d"
  integrity sha1-wMrjHOkDB26vrXA6Tc12DDESDm0=
  dependencies:
    concat-stream "^1.4.7"
    form-data "^2.0.0"
    make-error-cause "^1.2.1"
    tough-cookie "^2.0.0"

postcss-round-subpixels@^1.0.0:
  version "1.2.0"
  resolved "https://registry.yarnpkg.com/postcss-round-subpixels/-/postcss-round-subpixels-1.2.0.tgz#e21d6ac5952e185f9bdc008b94f004fe509d0a11"
  integrity sha1-4h1qxZUuGF+b3ACLlPAE/lCdChE=
  dependencies:
    postcss "^5.0.2"
    postcss-value-parser "^3.1.2"

postcss-urlrev@^1.1.2:
  version "1.3.0"
  resolved "https://registry.yarnpkg.com/postcss-urlrev/-/postcss-urlrev-1.3.0.tgz#855d619ffc71adfa0df4139142796c071c76c663"
  integrity sha1-hV1hn/xxrfoN9BORQnlsBxx2xmM=
  dependencies:
    bluebird "^2.9.34"
    postcss "^5.0.0"

postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3:
  version "3.3.0"
  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
  integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=

postcss@^5.0.0, postcss@^5.0.2, postcss@^5.2.0, postcss@^5.2.6:
  version "5.2.8"
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.8.tgz#05720c49df23c79bda51fd01daeb1e9222e94390"
  integrity sha1-BXIMSd8jx5vaUf0B2usekiLpQ5A=
  dependencies:
    chalk "^1.1.3"
    js-base64 "^2.1.9"
    source-map "^0.5.6"
    supports-color "^3.1.2"

prepend-http@^1.0.1:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
  integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=

preserve@^0.2.0:
  version "0.2.0"
  resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
  integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=

pretty-hrtime@^1.0.0:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
  integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=

process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
  version "1.0.7"
  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
  integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=

process-nextick-args@~2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
  integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==

process@~0.11.0:
  version "0.11.9"
  resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
  integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=

process@~0.5.1:
  version "0.5.2"
  resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
  integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=

promise-finally@^2.0.1:
  version "2.2.1"
  resolved "https://registry.yarnpkg.com/promise-finally/-/promise-finally-2.2.1.tgz#22616c4ba902916e988bd46c54d7caa08910cd77"
  integrity sha1-ImFsS6kCkW6Yi9RsVNfKoIkQzXc=
  dependencies:
    any-promise "^1.3.0"

promise-finally@^3.0.0:
  version "3.0.0"
  resolved "https://registry.yarnpkg.com/promise-finally/-/promise-finally-3.0.0.tgz#ddd5d0f895432b1206ceb8da1275064d18e7aa23"
  integrity sha1-3dXQ+JVDKxIGzrjaEnUGTRjnqiM=

pseudomap@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=

public-encrypt@^4.0.0:
  version "4.0.0"
  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
  integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=
  dependencies:
    bn.js "^4.1.0"
    browserify-rsa "^4.0.0"
    create-hash "^1.1.0"
    parse-asn1 "^5.0.0"
    randombytes "^2.0.1"

punycode@1.3.2:
  version "1.3.2"
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=

punycode@^1.3.2, punycode@^1.4.1:
  version "1.4.1"
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=

qs@~6.3.0:
  version "6.3.0"
  resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
  integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=

querystring-es3@~0.2.0:
  version "0.2.1"
  resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
  integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=

querystring@0.2.0:
  version "0.2.0"
  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=

randomatic@^1.1.3:
  version "1.1.6"
  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
  integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
  dependencies:
    is-number "^2.0.2"
    kind-of "^3.0.2"

randombytes@^2.0.0, randombytes@^2.0.1:
  version "2.0.3"
  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
  integrity sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=

rc@^1.0.1, rc@^1.1.5, rc@^1.1.6:
  version "1.1.6"
  resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
  integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
  dependencies:
    deep-extend "~0.4.0"
    ini "~1.3.0"
    minimist "^1.2.0"
    strip-json-comments "~1.0.4"

read-all-stream@^3.0.0:
  version "3.1.0"
  resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
  integrity sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=
  dependencies:
    pinkie-promise "^2.0.0"
    readable-stream "^2.0.0"

read-only-stream@^2.0.0:
  version "2.0.0"
  resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
  integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=
  dependencies:
    readable-stream "^2.0.2"

read-pkg-up@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
  integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
  dependencies:
    find-up "^1.0.0"
    read-pkg "^1.0.0"

read-pkg@^1.0.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
  integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
  dependencies:
    load-json-file "^1.0.0"
    normalize-package-data "^2.3.2"
    path-type "^1.0.0"

"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.26:
  version "1.0.34"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
  integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
  dependencies:
    core-util-is "~1.0.0"
    inherits "~2.0.1"
    isarray "0.0.1"
    string_decoder "~0.10.x"

readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5:
  version "2.2.2"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
  integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
  dependencies:
    buffer-shims "^1.0.0"
    core-util-is "~1.0.0"
    inherits "~2.0.1"
    isarray "~1.0.0"
    process-nextick-args "~1.0.6"
    string_decoder "~0.10.x"
    util-deprecate "~1.0.1"

readable-stream@^2.0.1:
  version "2.3.6"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
  dependencies:
    core-util-is "~1.0.0"
    inherits "~2.0.3"
    isarray "~1.0.0"
    process-nextick-args "~2.0.0"
    safe-buffer "~5.1.1"
    string_decoder "~1.1.1"
    util-deprecate "~1.0.1"

readable-stream@~1.1.9:
  version "1.1.14"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
  integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
  dependencies:
    core-util-is "~1.0.0"
    inherits "~2.0.1"
    isarray "0.0.1"
    string_decoder "~0.10.x"

readable-stream@~2.0.0:
  version "2.0.6