From 5dbef5a694659a9bfee5544ea9d2afa71b0065a6 Mon Sep 17 00:00:00 2001 From: Pawel Kowalski Date: Mon, 6 Aug 2018 23:26:23 +0200 Subject: [PATCH] initial commit --- .gitignore | 39 + Pipfile | 29 + Pipfile.lock | 734 + Procfile | 2 + README.md | 120 + bin/post_compile | 2 + client/.babelrc | 12 + client/.editorconfig | 9 + client/.eslintignore | 4 + client/.eslintrc.js | 32 + client/.gitignore | 14 + client/.postcssrc.js | 10 + client/build/build.js | 41 + client/build/check-versions.js | 54 + client/build/logo.png | Bin 0 -> 6849 bytes client/build/utils.js | 101 + client/build/vue-loader.conf.js | 22 + client/build/webpack.base.conf.js | 97 + client/build/webpack.dev.conf.js | 95 + client/build/webpack.prod.conf.js | 145 + client/config/dev.env.js | 7 + client/config/index.js | 75 + client/config/prod.env.js | 4 + client/index.html | 24 + client/package-lock.json | 11721 ++++++++++++++++ client/package.json | 88 + client/src/App.vue | 50 + client/src/graphql/client.js | 20 + client/src/graphql/gql/masterBlasterQuery.gql | 9 + client/src/main.js | 35 + client/src/pages/PageDashboard.vue | 5 + client/src/pages/PageNotFound.vue | 5 + client/src/router/index.js | 22 + client/src/store/index.js | 20 + client/src/styles/main.scss | 14 + client/src/styles/var.scss | 19 + client/src/util/uuid.js | 5 + client/static/.gitkeep | 0 package-lock.json | 49 + package.json | 15 + release-tasks.sh | 15 + server/.env.example | 7 + server/__init__.py | 0 server/api/__init__.py | 0 server/api/apps.py | 5 + server/api/schema.py | 20 + server/api/urls.py | 12 + server/core/__init__.py | 0 server/core/context_processors.py | 10 + server/core/env_utils.py | 45 + server/core/factories.py | 56 + server/core/management/__init__.py | 0 server/core/management/commands/__init__.py | 0 server/core/management/commands/dropdb.py | 29 + server/core/management/commands/dummy_data.py | 48 + server/core/middleware.py | 76 + server/core/settings.py | 333 + server/core/static/doc/dummy.pdf | Bin 0 -> 16610 bytes server/core/static/img/dummy.jpg | Bin 0 -> 216817 bytes server/core/static/styles/main.scss | 97 + .../materialize/components/_badges.scss | 55 + .../materialize/components/_buttons.scss | 321 + .../styles/materialize/components/_cards.scss | 195 + .../materialize/components/_carousel.scss | 90 + .../styles/materialize/components/_chips.scss | 90 + .../materialize/components/_collapsible.scss | 84 + .../components/_color-classes.scss | 32 + .../components/_color-variables.scss | 370 + .../materialize/components/_datepicker.scss | 187 + .../materialize/components/_dropdown.scss | 76 + .../materialize/components/_global.scss | 769 + .../styles/materialize/components/_grid.scss | 156 + .../components/_icons-material-design.scss | 5 + .../materialize/components/_materialbox.scss | 43 + .../styles/materialize/components/_modal.scss | 90 + .../materialize/components/_navbar.scss | 208 + .../materialize/components/_normalize.scss | 447 + .../materialize/components/_preloader.scss | 334 + .../styles/materialize/components/_pulse.scss | 34 + .../materialize/components/_sidenav.scss | 216 + .../materialize/components/_slider.scss | 92 + .../components/_table_of_contents.scss | 33 + .../styles/materialize/components/_tabs.scss | 99 + .../materialize/components/_tapTarget.scss | 103 + .../materialize/components/_timepicker.scss | 183 + .../styles/materialize/components/_toast.scss | 59 + .../materialize/components/_tooltip.scss | 32 + .../materialize/components/_transitions.scss | 13 + .../materialize/components/_typography.scss | 60 + .../materialize/components/_variables.scss | 348 + .../styles/materialize/components/_waves.scss | 114 + .../components/forms/_checkboxes.scss | 200 + .../components/forms/_file-input.scss | 44 + .../materialize/components/forms/_forms.scss | 22 + .../components/forms/_input-fields.scss | 352 + .../components/forms/_radio-buttons.scss | 115 + .../materialize/components/forms/_range.scss | 161 + .../materialize/components/forms/_select.scss | 178 + .../components/forms/_switches.scss | 89 + .../styles/materialize/materialize.scss | 38 + server/core/templates/base.html | 34 + server/core/templates/generic_page.html | 41 + server/core/templates/registration/login.html | 35 + .../templates/wagtailadmin/admin_base.html | 7 + server/core/templates/wagtailadmin/base.html | 6 + server/core/templates/wagtailadmin/home.html | 3 + server/core/templatetags/__init__.py | 0 server/core/templatetags/core_tags.py | 21 + server/core/urls.py | 34 + server/core/views.py | 24 + server/core/wsgi.py | 16 + server/graphql.config.json | 25 + server/manage.py | 22 + server/user/__init__.py | 0 server/user/admin.py | 6 + server/user/apps.py | 5 + server/user/migrations/0001_initial.py | 44 + server/user/migrations/__init__.py | 0 server/user/models.py | 5 + 119 files changed, 20967 insertions(+) create mode 100644 .gitignore create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 Procfile create mode 100644 README.md create mode 100644 bin/post_compile create mode 100644 client/.babelrc create mode 100644 client/.editorconfig create mode 100644 client/.eslintignore create mode 100644 client/.eslintrc.js create mode 100644 client/.gitignore create mode 100644 client/.postcssrc.js create mode 100644 client/build/build.js create mode 100644 client/build/check-versions.js create mode 100644 client/build/logo.png create mode 100644 client/build/utils.js create mode 100644 client/build/vue-loader.conf.js create mode 100644 client/build/webpack.base.conf.js create mode 100755 client/build/webpack.dev.conf.js create mode 100644 client/build/webpack.prod.conf.js create mode 100644 client/config/dev.env.js create mode 100644 client/config/index.js create mode 100644 client/config/prod.env.js create mode 100644 client/index.html create mode 100644 client/package-lock.json create mode 100644 client/package.json create mode 100644 client/src/App.vue create mode 100644 client/src/graphql/client.js create mode 100644 client/src/graphql/gql/masterBlasterQuery.gql create mode 100644 client/src/main.js create mode 100644 client/src/pages/PageDashboard.vue create mode 100644 client/src/pages/PageNotFound.vue create mode 100644 client/src/router/index.js create mode 100644 client/src/store/index.js create mode 100644 client/src/styles/main.scss create mode 100644 client/src/styles/var.scss create mode 100644 client/src/util/uuid.js create mode 100644 client/static/.gitkeep create mode 100644 package-lock.json create mode 100644 package.json create mode 100755 release-tasks.sh create mode 100644 server/.env.example create mode 100644 server/__init__.py create mode 100644 server/api/__init__.py create mode 100644 server/api/apps.py create mode 100644 server/api/schema.py create mode 100644 server/api/urls.py create mode 100644 server/core/__init__.py create mode 100644 server/core/context_processors.py create mode 100644 server/core/env_utils.py create mode 100644 server/core/factories.py create mode 100644 server/core/management/__init__.py create mode 100644 server/core/management/commands/__init__.py create mode 100644 server/core/management/commands/dropdb.py create mode 100644 server/core/management/commands/dummy_data.py create mode 100644 server/core/middleware.py create mode 100644 server/core/settings.py create mode 100644 server/core/static/doc/dummy.pdf create mode 100644 server/core/static/img/dummy.jpg create mode 100644 server/core/static/styles/main.scss create mode 100644 server/core/static/styles/materialize/components/_badges.scss create mode 100644 server/core/static/styles/materialize/components/_buttons.scss create mode 100644 server/core/static/styles/materialize/components/_cards.scss create mode 100644 server/core/static/styles/materialize/components/_carousel.scss create mode 100644 server/core/static/styles/materialize/components/_chips.scss create mode 100644 server/core/static/styles/materialize/components/_collapsible.scss create mode 100644 server/core/static/styles/materialize/components/_color-classes.scss create mode 100644 server/core/static/styles/materialize/components/_color-variables.scss create mode 100644 server/core/static/styles/materialize/components/_datepicker.scss create mode 100644 server/core/static/styles/materialize/components/_dropdown.scss create mode 100644 server/core/static/styles/materialize/components/_global.scss create mode 100644 server/core/static/styles/materialize/components/_grid.scss create mode 100644 server/core/static/styles/materialize/components/_icons-material-design.scss create mode 100644 server/core/static/styles/materialize/components/_materialbox.scss create mode 100644 server/core/static/styles/materialize/components/_modal.scss create mode 100644 server/core/static/styles/materialize/components/_navbar.scss create mode 100644 server/core/static/styles/materialize/components/_normalize.scss create mode 100644 server/core/static/styles/materialize/components/_preloader.scss create mode 100644 server/core/static/styles/materialize/components/_pulse.scss create mode 100644 server/core/static/styles/materialize/components/_sidenav.scss create mode 100644 server/core/static/styles/materialize/components/_slider.scss create mode 100644 server/core/static/styles/materialize/components/_table_of_contents.scss create mode 100644 server/core/static/styles/materialize/components/_tabs.scss create mode 100644 server/core/static/styles/materialize/components/_tapTarget.scss create mode 100644 server/core/static/styles/materialize/components/_timepicker.scss create mode 100644 server/core/static/styles/materialize/components/_toast.scss create mode 100644 server/core/static/styles/materialize/components/_tooltip.scss create mode 100644 server/core/static/styles/materialize/components/_transitions.scss create mode 100644 server/core/static/styles/materialize/components/_typography.scss create mode 100644 server/core/static/styles/materialize/components/_variables.scss create mode 100644 server/core/static/styles/materialize/components/_waves.scss create mode 100644 server/core/static/styles/materialize/components/forms/_checkboxes.scss create mode 100644 server/core/static/styles/materialize/components/forms/_file-input.scss create mode 100644 server/core/static/styles/materialize/components/forms/_forms.scss create mode 100644 server/core/static/styles/materialize/components/forms/_input-fields.scss create mode 100644 server/core/static/styles/materialize/components/forms/_radio-buttons.scss create mode 100644 server/core/static/styles/materialize/components/forms/_range.scss create mode 100644 server/core/static/styles/materialize/components/forms/_select.scss create mode 100644 server/core/static/styles/materialize/components/forms/_switches.scss create mode 100644 server/core/static/styles/materialize/materialize.scss create mode 100644 server/core/templates/base.html create mode 100644 server/core/templates/generic_page.html create mode 100644 server/core/templates/registration/login.html create mode 100644 server/core/templates/wagtailadmin/admin_base.html create mode 100644 server/core/templates/wagtailadmin/base.html create mode 100644 server/core/templates/wagtailadmin/home.html create mode 100644 server/core/templatetags/__init__.py create mode 100644 server/core/templatetags/core_tags.py create mode 100644 server/core/urls.py create mode 100644 server/core/views.py create mode 100644 server/core/wsgi.py create mode 100644 server/graphql.config.json create mode 100755 server/manage.py create mode 100644 server/user/__init__.py create mode 100644 server/user/admin.py create mode 100644 server/user/apps.py create mode 100644 server/user/migrations/0001_initial.py create mode 100644 server/user/migrations/__init__.py create mode 100644 server/user/models.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..5ac0760c --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +.DS_Store + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +dist/ +server/static/ +t.* + +# C extensions +*.so + +# client +node_modules + +# Envs +.env + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.swp + +# Backend +staticfiles +schema.json + +# Wagtail assets +server/documents +server/images +server/original_images +images/ +original_images/ +server/media/ diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..e02c2bb1 --- /dev/null +++ b/Pipfile @@ -0,0 +1,29 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[dev-packages] +awscli = "*" +ipdb = "*" + +[packages] +factory-boy = "*" +wagtail_factories = {git = "https://github.com/mvantellingen/wagtail-factories.git", ref = "master"} +django = "==2.0.6" +whitenoise = "==4.0b4" +"psycopg2" = "==2.7.3.2" +gunicorn = "==19.7.1" +python-dotenv = "==0.7.1" +dj-database-url = "==0.4.1" +raven = "==6.3.0" +django-extensions = "==1.9.8" +graphene-django = "==2.0.0" +django-filter = "==2.0.0.dev1" +pillow = "==5.0.0" +wagtail = "==2.1" +django-cors-headers = "==2.2.0" +django-storages = "*" +"boto3" = "*" +django-compressor = "*" +django-libsass = "*" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..164c23c0 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,734 @@ +{ + "_meta": { + "hash": { + "sha256": "6a729468480cd51f53f689939028a6ee889ac501e52a6b11c2efc6083c396e99" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.python.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "aniso8601": { + "hashes": [ + "sha256:7849749cf00ae0680ad2bdfe4419c7a662bef19c03691a19e008c8b9a5267802", + "sha256:94f90871fcd314a458a3d4eca1c84448efbd200e86f55fe4c733c7a40149ef50" + ], + "version": "==3.0.2" + }, + "beautifulsoup4": { + "hashes": [ + "sha256:11a9a27b7d3bddc6d86f59fb76afb70e921a25ac2d6cc55b40d072bd68435a76", + "sha256:7015e76bf32f1f574636c4288399a6de66ce08fb7b2457f628a8d70c0fbabb11", + "sha256:808b6ac932dccb0a4126558f7dfdcf41710dd44a4ef497a0bb59a77f9f078e89" + ], + "version": "==4.6.0" + }, + "boto3": { + "hashes": [ + "sha256:5fcbfea71d7bf818ffc51a380b53899502b7046ca6ba52cca9c44bbfe20bb275", + "sha256:7ba18f6edb603db7ef77733427f6f76a300aab217a9259649ddc91d4521b226f" + ], + "index": "pypi", + "version": "==1.7.45" + }, + "botocore": { + "hashes": [ + "sha256:62519fe407354052befda5f928b988c9059a56292e75dba9d0fac31d9344e279", + "sha256:e62645374cbb01f65324fe479c2a389b414344db96db2f62b0f8a55701fe3416" + ], + "version": "==1.10.45" + }, + "certifi": { + "hashes": [ + "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7", + "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0" + ], + "version": "==2018.4.16" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", + "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" + ], + "version": "==6.7" + }, + "dj-database-url": { + "hashes": [ + "sha256:7f4c78d2a090df8dfaf56d5d3ff7bbee17360436e4879558317e2314424864cd" + ], + "index": "pypi", + "version": "==0.4.1" + }, + "django": { + "hashes": [ + "sha256:3eb25c99df1523446ec2dc1b00e25eb2ecbdf42c9d8b0b8b32a204a8db9011f8", + "sha256:69ff89fa3c3a8337015478a1a0744f52a9fef5d12c1efa01a01f99bcce9bf10c" + ], + "index": "pypi", + "version": "==2.0.6" + }, + "django-appconf": { + "hashes": [ + "sha256:6a4d9aea683b4c224d97ab8ee11ad2d29a37072c0c6c509896dd9857466fb261", + "sha256:ddab987d14b26731352c01ee69c090a4ebfc9141ed223bef039d79587f22acd9" + ], + "version": "==1.0.2" + }, + "django-compressor": { + "hashes": [ + "sha256:7732676cfb9d58498dfb522b036f75f3f253f72ea1345ac036434fdc418c2e57", + "sha256:9616570e5b08e92fa9eadc7a1b1b49639cce07ef392fc27c74230ab08075b30f" + ], + "index": "pypi", + "version": "==2.2" + }, + "django-cors-headers": { + "hashes": [ + "sha256:0e9532628b3aa8806442d4d0b15e56112e6cfbef3735e13401935c98b842a2b4", + "sha256:c7ec4816ec49416517b84f317499d1519db62125471922ab78d670474ed9b987" + ], + "index": "pypi", + "version": "==2.2.0" + }, + "django-extensions": { + "hashes": [ + "sha256:7776b6c5f3807997c1459e96f4eed4af2b571fd6bebf61462242fa957166df30", + "sha256:9f1c314cfd4b974f03c5589f46f33051aa1d6b5a38cfb7f8824f59e9337768ae" + ], + "index": "pypi", + "version": "==1.9.8" + }, + "django-filter": { + "hashes": [ + "sha256:57c12c8ed40861e8ec7219ea65adcdd92ed0ea4c5b76a86f9ff9216a80dd5af7", + "sha256:57c5507b0011058a7f2d2227b7ef9fea27e69e53ef65da6d2fbd0b27cdaafed3" + ], + "index": "pypi", + "version": "==2.0.0.dev1" + }, + "django-libsass": { + "hashes": [ + "sha256:49db3334b87e1f7955c4f9fb9945bc296f8bfd27a14d6d89706e4b0e5dc5de1c" + ], + "index": "pypi", + "version": "==0.7" + }, + "django-modelcluster": { + "hashes": [ + "sha256:2a6c0638ba295d44fc316c42b6da20509b186fe3500c674539441d451de5abfe" + ], + "version": "==4.1" + }, + "django-storages": { + "hashes": [ + "sha256:7339070cf0c8042f5a885783a0a909175a8dbb68e7f5697d597571c830a460c4", + "sha256:f1dd5668a4df9a23aff56c8321ea3aac3fda23d9d17473158d308d1b13e5363e" + ], + "index": "pypi", + "version": "==1.6.6" + }, + "django-taggit": { + "hashes": [ + "sha256:58aa3e59e0643446e102523f22d137300298e2a537b1c5b0c310d99143f2c2b8", + "sha256:fd13e304ba37ff09e601c4797d893fb7d3e699a789b5afb0b09d686f94470441" + ], + "version": "==0.22.2" + }, + "django-treebeard": { + "hashes": [ + "sha256:c21db06a8d4943bf2a28d9d7a119058698fb76116df2679ecbf15a46a501de42" + ], + "version": "==4.3" + }, + "djangorestframework": { + "hashes": [ + "sha256:b6714c3e4b0f8d524f193c91ecf5f5450092c2145439ac2769711f7eba89a9d9", + "sha256:c375e4f95a3a64fccac412e36fb42ba36881e52313ec021ef410b40f67cddca4" + ], + "version": "==3.8.2" + }, + "docutils": { + "hashes": [ + "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", + "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", + "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" + ], + "version": "==0.14" + }, + "draftjs-exporter": { + "hashes": [ + "sha256:d2ceeef98185ba02355496851aee17d25951f5d8c72c12f8af6c186e312e9598" + ], + "version": "==2.1.2" + }, + "factory-boy": { + "hashes": [ + "sha256:6f25cc4761ac109efd503f096e2ad99421b1159f01a29dbb917359dcd68e08ca", + "sha256:d552cb872b310ae78bd7429bf318e42e1e903b1a109e899a523293dfa762ea4f" + ], + "index": "pypi", + "version": "==2.11.1" + }, + "faker": { + "hashes": [ + "sha256:04645d946256b835c675c1cef7c03817a164b0c4e452018fd50b212ddff08c22", + "sha256:fe48f35aa3443bc5655b0782d3a2f594bf4882d0e2a947b80207a60494d32907" + ], + "version": "==0.8.16" + }, + "graphene": { + "hashes": [ + "sha256:8fd8e6195c56c15b2936e7dee2e156692eba4752ee1978f65e10925eafe8d014", + "sha256:98e74c32d0415e5b5362738c1c1cb4b7a4e411b5d3d828abb29ccd3efb378c44" + ], + "version": "==2.1.2" + }, + "graphene-django": { + "hashes": [ + "sha256:5cabf46b59f242a533fe1df1912c87d5ad6606246937609be2e6c9086cfdf7a4", + "sha256:70d9358bc48c806b6a9458e8344f0a1211cd1f1ef923a092aa55e6bcacc2c3fc" + ], + "index": "pypi", + "version": "==2.0.0" + }, + "graphql-core": { + "hashes": [ + "sha256:4830699be53f9154273fa15726fc8b0c90bc22bbb8fc7c932586503b3cb9330e", + "sha256:539355351343dede3ecb771e0d273a1b72405cb6d64f45bb8f92ecc4d7109af0" + ], + "version": "==2.0" + }, + "graphql-relay": { + "hashes": [ + "sha256:2716b7245d97091af21abf096fabafac576905096d21ba7118fba722596f65db" + ], + "version": "==0.4.5" + }, + "gunicorn": { + "hashes": [ + "sha256:75af03c99389535f218cc596c7de74df4763803f7b63eb09d77e92b3956b36c6", + "sha256:eee1169f0ca667be05db3351a0960765620dad53f53434262ff8901b68a1b622" + ], + "index": "pypi", + "version": "==19.7.1" + }, + "html5lib": { + "hashes": [ + "sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3", + "sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736" + ], + "version": "==1.0.1" + }, + "idna": { + "hashes": [ + "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", + "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16" + ], + "version": "==2.7" + }, + "iso8601": { + "hashes": [ + "sha256:210e0134677cc0d02f6028087fee1df1e1d76d372ee1db0bf30bf66c5c1c89a3", + "sha256:49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82", + "sha256:bbbae5fb4a7abfe71d4688fd64bff70b91bbd74ef6a99d964bab18f7fdf286dd" + ], + "version": "==0.1.12" + }, + "jmespath": { + "hashes": [ + "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64", + "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63" + ], + "version": "==0.9.3" + }, + "l18n": { + "hashes": [ + "sha256:a72b9a80b297da5bc807f347bfa61aa9900c35bf1bb55e61a17ec7e58d9e0de7" + ], + "version": "==2016.6.4" + }, + "libsass": { + "hashes": [ + "sha256:0f2e421d3e5a53833243e0a5f2cf7ebe9812725a7f27a797c38f3c7190ce2a82", + "sha256:1b74aff85f1560d629a070552ec67f9f0ff9a47446ffafddafad9944f7589ae1", + "sha256:1cf80c04a77d36fd77f00b1ae0a269eee780d971fabd9d493b15d30de9857ae5", + "sha256:1d55dfe8e91a15a7d72d7f8aca16e74da36899e70d911af66d7184f1c82e2b39", + "sha256:23755425149fe0f576fd0ab7bcd151fe09400b2d980fe176c28f6c19e053c830", + "sha256:4a434d5b713b97c4141fb71c59341d4ebff8669114b14c626af51e145a48710e", + "sha256:4dcd5b546bed977276f97eb7a2a13cb7cbf0a38d672e7b5525b7587c8cabcf27", + "sha256:62771c8ead9227579891814dd714be645243741aa23e5cb232ac0c245cf29a37", + "sha256:727fb84326ffa930bc09fad8b706e77ada4d13b3adf35cce134962a434d7eccb", + "sha256:7b9e7179b5f4fc32bc716f86e9ccaeb48ab90e7eb6648b339440346733af8828", + "sha256:a0ffca466b35fb57f2afe1f1c5fd39b4c51a4107596d28ef8c0d3bb0962244b5", + "sha256:cbd5ee83d3603a2b2c2937d8f06acc07b30fd22642ea2460c966d4fd6217f1d0", + "sha256:de1eae502764b3dde294d6652a0046489cf31008de190c4dd8d05e7f4b5e0d71", + "sha256:e00b6c6d75a6e912990cbc23d48ddfdbfefc3e400c20be6593988839292248c5", + "sha256:ed8beef197efc6e6ab0ad03cea0885b31cc11f226290783649b4dafe1fb2ea27" + ], + "version": "==0.14.5" + }, + "pillow": { + "hashes": [ + "sha256:0013f590a8f260df60bcfd65db19d18efc04e7f046c3c82a40e2e2b3292a937c", + "sha256:0b899ee80920bb533f26581af9b4660bc12aff4562555afe74e429101ebf3c94", + "sha256:12f29d6c23424f704c66b5b68c02fe0b571504459605cfe36ab8158359b0e1bb", + "sha256:135e9aa65150c53f7db85bf2bebb8a0e1a48ea850e80cf66e16dd04fa09d309c", + "sha256:153ec6f18f7b61641e0e6e502acfaf4a06c9aba2ea11c0b4b3578ea9f13a4a4a", + "sha256:17fe25efc785194d48c38fad85dce470013ba19d2fb66639e149f14bccf1327f", + "sha256:1912b7230459fd53682dae32b83cbd8e5d642ba36d4be18566f00a9c063aa13d", + "sha256:1a5b93084e01328a1cb1ecdad99d11d75e881e89a95f88d85b523646553b36c2", + "sha256:25193f934d37d836a6b1f4c062ce574a96cbca7c6d9dc8ddfbbac7f9c54deaa4", + "sha256:2c042352b430d678db50c78c5214e19638eff8b688941271da2de21fd298dfe5", + "sha256:2e818dbe445e86fc6c266973fe540c35125c42eb2cf13a6095e9adaa89c0deb5", + "sha256:2fcde9954c8882d1c7f93bb828caa34a4c5e3ee69dbc7895dc8652ad972b455a", + "sha256:35f7d998b8e82fb3fb51ff88b30485eb81cd7dd56ec7e1a8deba23eb88532d44", + "sha256:37cc0339abfa9e295c75d9a7f227d35cb44716feb95057f9449c4a9e9a17daf7", + "sha256:43334f9581cd067945b8898cef9eb5714ee4883f8de0304c011f1dbdb1d4e2aa", + "sha256:4bd4a71501b6d51db4abc07e1f43f5a6fed0a1a9583cca0b401d6af50284b0db", + "sha256:57aa6198ba8acba1313c3b743e267d821a60cac77e6026caf0b55ca58d3d23be", + "sha256:5b0d657460d9f3615876fec6306e97ca15a471f6169b622d76a47e270998acf1", + "sha256:5cd36804f9f06a914a883fe682df5711d16d7b4f44d43189c5f013e7cd91e149", + "sha256:6977cf073d83358b34f93abf5c1f1193b88675fe0e4441e0e28318bc3dcba7a0", + "sha256:718ec7a122b28d64afc5fbc3a9b99bb0545ef511373cac06fe7624520e82cb20", + "sha256:7dfbefdb3fb911ca9faed307bf309861e9995e36cca6b761c7ba6d9b77a9744a", + "sha256:801cca8923508311bf5d6d0f7da5362552e8208ebd8ec0d7b9f2cd2ff5705734", + "sha256:82b172e3264e62372c01b5b009b5b1a02fbb9276cbe5cc57ab00a6d6e5ed9a18", + "sha256:82d1ff571489765df2816785d532e243bde213752156c227fca595723ec5ff42", + "sha256:8580fc58074a16b749905b26cf8363f7b628dd167ba0130f5382cdc91c86b509", + "sha256:931030d1d6282b7900e6b0a7ff9ecdb503b5e1e6781800dab2b71a9f39405bff", + "sha256:9525cd680a6f9e80c6c0af03cf973e6505c59f60b4745f682cd1a449e54b31bb", + "sha256:a224651a81e45ef4f1d0164e256c5f6b4abb49f2ae8f22ba2f3a9d0ff338e608", + "sha256:a370d1c570f1d72e877099651e752332444b1c5009381f043c9da5fd47f3ebae", + "sha256:b1d33c63a55d0d85df0ad02b2c16158fb4d8153afa7b908f1a67330fac694cd6", + "sha256:b2240f298482f823576f397bb9f32ea913ad9456c526e141bc6f0a022b37a3e8", + "sha256:b85f703c2ffe539313e39ce0676bed0f355cec45a16e58c9ab7417445843047c", + "sha256:b9f63451084a718eccdeb1e382768c94647915653af4d6019f64560d9e98642b", + "sha256:c793dfaa130847ccff958492b76ae8b9304e60b8a79a92962cb19e368276a22b", + "sha256:d60c1625b108432ace8b1fa1a584017e5efa73f107d0f493c7f39c79bebf1d41", + "sha256:dc4b018d5c9b636f7546583c5591b9ea00c328c3e5871992ef5b95bac353f097", + "sha256:ddd16ab250b4fc97db1c47407e78c25216a75c29d29d10ad37e51b7a2ec7b2c3", + "sha256:e126ff4fed71e78333840c07279e1617f63cfca76d63ad5b27d65a7277206a3d", + "sha256:f8d49be8c282df8d2e1ab6ab53ab8abd859b1fa6fed384457ee85c9eff64ef97", + "sha256:fcf64c91fd44485100a2965d23bb0e227d093e91f7e776c5ca3b32574766eb56" + ], + "index": "pypi", + "version": "==5.0.0" + }, + "promise": { + "hashes": [ + "sha256:0bca4ed933e3d50e3d18fb54fc1432fa84b0564838cd093e824abcd718ab9304", + "sha256:95506bac89df7a495e0b8c813fd782dd1ae590decb52f95248e316c6659ca49b" + ], + "version": "==2.1" + }, + "psycopg2": { + "hashes": [ + "sha256:009e0bc09a57dbef4b601cb8b46a2abad51f5274c8be4bba276ff2884cd4cc53", + "sha256:0344b181e1aea37a58c218ccb0f0f771295de9aa25a625ed076e6996c6530f9e", + "sha256:0cd4c848f0e9d805d531e44973c8f48962e20eb7fc0edac3db4f9dbf9ed5ab82", + "sha256:1286dd16d0e46d59fa54582725986704a7a3f3d9aca6c5902a7eceb10c60cb7e", + "sha256:1cf5d84290c771eeecb734abe2c6c3120e9837eb12f99474141a862b9061ac51", + "sha256:207ba4f9125a0a4200691e82d5eee7ea1485708eabe99a07fc7f08696fae62f4", + "sha256:25250867a4cd1510fb755ef9cb38da3065def999d8e92c44e49a39b9b76bc893", + "sha256:2954557393cfc9a5c11a5199c7a78cd9c0c793a047552d27b1636da50d013916", + "sha256:317612d5d0ca4a9f7e42afb2add69b10be360784d21ce4ecfbca19f1f5eadf43", + "sha256:37f54452c7787dbdc0a634ca9773362b91709917f0b365ed14b831f03cbd34ba", + "sha256:40fa5630cd7d237cd93c4d4b64b9e5ed9273d1cfce55241c7f9066f5db70629d", + "sha256:57baf63aeb2965ca4b52613ce78e968b6d2bde700c97f6a7e8c6c236b51ab83e", + "sha256:594aa9a095de16614f703d759e10c018bdffeafce2921b8e80a0e8a0ebbc12e5", + "sha256:5c3213be557d0468f9df8fe2487eaf2990d9799202c5ff5cb8d394d09fad9b2a", + "sha256:697ff63bc5451e0b0db48ad205151123d25683b3754198be7ab5fcb44334e519", + "sha256:6c2f1a76a9ebd9ecf7825b9e20860139ca502c2bf1beabf6accf6c9e66a7e0c3", + "sha256:7a75565181e75ba0b9fb174b58172bf6ea9b4331631cfe7bafff03f3641f5d73", + "sha256:7a9c6c62e6e05df5406e9b5235c31c376a22620ef26715a663cee57083b3c2ea", + "sha256:7c31dade89634807196a6b20ced831fbd5bec8a21c4e458ea950c9102c3aa96f", + "sha256:82c40ea3ac1555e0462803380609fbe8b26f52620f3d4f8eb480cfd8ceed8a14", + "sha256:8f5942a4daf1ffac42109dc4a72f786af4baa4fa702ede1d7c57b4b696c2e7d6", + "sha256:92179bd68c2efe72924a99b6745a9172471931fc296f9bfdf9645b75eebd6344", + "sha256:94e4128ba1ea56f02522fffac65520091a9de3f5c00da31539e085e13db4771b", + "sha256:988d2ec7560d42ef0ac34b3b97aad14c4f068792f00e1524fa1d3749fe4e4b64", + "sha256:9d6266348b15b4a48623bf4d3e50445d8e581da413644f365805b321703d0fac", + "sha256:9d64fed2681552ed642e9c0cc831a9e95ab91de72b47d0cb68b5bf506ba88647", + "sha256:b9358e203168fef7bfe9f430afaed3a2a624717a1d19c7afa7dfcbd76e3cd95c", + "sha256:bf708455cd1e9fa96c05126e89a0c59b200d086c7df7bbafc7d9be769e4149a3", + "sha256:d3ac07240e2304181ffdb13c099840b5eb555efc7be9344503c0c03aa681de79", + "sha256:ddca39cc55877653b5fcf59976d073e3d58c7c406ef54ae8e61ddf8782867182", + "sha256:fc993c9331d91766d54757bbc70231e29d5ceb2d1ac08b1570feaa0c38ab9582" + ], + "index": "pypi", + "version": "==2.7.3.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", + "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" + ], + "markers": "python_version >= '2.7'", + "version": "==2.7.3" + }, + "python-dotenv": { + "hashes": [ + "sha256:45e927c34204c90f5faa35ea8709b894f6b1a7712d77eb50940601068040993b", + "sha256:dc7940052cfe170e881aea40feb4ea7776e6a97170ed038fd2ee7e26e47585f2" + ], + "index": "pypi", + "version": "==0.7.1" + }, + "pytz": { + "hashes": [ + "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", + "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" + ], + "version": "==2018.4" + }, + "raven": { + "hashes": [ + "sha256:cb644fb12ee886a341041dcd533540dfc82619a50bf0b7c587af070054bd2c7f", + "sha256:f3e465a545dcdb6a387d1fcb199d08f786ba3732d7ce6aa681718b04da6aedf1" + ], + "index": "pypi", + "version": "==6.3.0" + }, + "rcssmin": { + "hashes": [ + "sha256:ca87b695d3d7864157773a61263e5abb96006e9ff0e021eff90cbe0e1ba18270" + ], + "version": "==1.0.6" + }, + "requests": { + "hashes": [ + "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", + "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" + ], + "version": "==2.19.1" + }, + "rjsmin": { + "hashes": [ + "sha256:dd9591aa73500b08b7db24367f8d32c6470021f39d5ab4e50c7c02e4401386f1" + ], + "version": "==1.0.12" + }, + "rx": { + "hashes": [ + "sha256:13a1d8d9e252625c173dc795471e614eadfe1cf40ffc684e08b8fff0d9748c23", + "sha256:7357592bc7e881a95e0c2013b73326f704953301ab551fbc8133a6fadab84105" + ], + "version": "==1.6.1" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "singledispatch": { + "hashes": [ + "sha256:5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c", + "sha256:833b46966687b3de7f438c761ac475213e53b306740f1abfaa86e1d1aae56aa8" + ], + "version": "==3.4.0.3" + }, + "six": { + "hashes": [ + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + ], + "version": "==1.11.0" + }, + "text-unidecode": { + "hashes": [ + "sha256:5a1375bb2ba7968740508ae38d92e1f889a0832913cb1c447d5e2046061a396d", + "sha256:801e38bd550b943563660a91de8d4b6fa5df60a542be9093f7abf819f86050cc" + ], + "version": "==1.2" + }, + "typing": { + "hashes": [ + "sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf", + "sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8", + "sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2" + ], + "version": "==3.6.4" + }, + "unidecode": { + "hashes": [ + "sha256:280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051", + "sha256:61f807220eda0203a774a09f84b4304a3f93b5944110cc132af29ddb81366883" + ], + "version": "==0.4.21" + }, + "urllib3": { + "hashes": [ + "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", + "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" + ], + "version": "==1.23" + }, + "wagtail": { + "hashes": [ + "sha256:3cdaa2901e566688258ace14963c42e8f35e264a5a7c937fd99b7a17a867dee2", + "sha256:97fe49eba863b7b4a0ec671e6feada30dbb35cbcc339f2eac4a770d5e21250ad" + ], + "index": "pypi", + "version": "==2.1" + }, + "wagtail-factories": { + "git": "https://github.com/mvantellingen/wagtail-factories.git", + "ref": "master" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "whitenoise": { + "hashes": [ + "sha256:9a8ef48d2a2b4a101d84a0e5edbb20759affbc832cd74f3194e803cca7f28f6a", + "sha256:c42d640b8db482924b36ddadcc7087cf49f796fa1faa1583b3d07118f55a4265" + ], + "index": "pypi", + "version": "==4.0b4" + }, + "willow": { + "hashes": [ + "sha256:76a8874304356b7d86923405f5ca1df125c3540fb55b32747e7a33ba59bc1744", + "sha256:818ee11803c90a0a6d49c94b0453d6266be1ef83ae00de72731c45fae4d3e78c" + ], + "version": "==1.1" + } + }, + "develop": { + "appnope": { + "hashes": [ + "sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0", + "sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.0" + }, + "awscli": { + "hashes": [ + "sha256:a5d471074d957b9ab3feb830be4c4f8a1e1309c4d3d03f572b2a20b674d5394e", + "sha256:cd4d680212d9d901c0cfcc0436b137a147e43faae630fda359eb88d6fd9392b2" + ], + "index": "pypi", + "version": "==1.15.45" + }, + "backcall": { + "hashes": [ + "sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4", + "sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2" + ], + "version": "==0.1.0" + }, + "botocore": { + "hashes": [ + "sha256:62519fe407354052befda5f928b988c9059a56292e75dba9d0fac31d9344e279", + "sha256:e62645374cbb01f65324fe479c2a389b414344db96db2f62b0f8a55701fe3416" + ], + "version": "==1.10.45" + }, + "colorama": { + "hashes": [ + "sha256:463f8483208e921368c9f306094eb6f725c6ca42b0f97e313cb5d5512459feda", + "sha256:48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1" + ], + "version": "==0.3.9" + }, + "decorator": { + "hashes": [ + "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", + "sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c" + ], + "version": "==4.3.0" + }, + "docutils": { + "hashes": [ + "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", + "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", + "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" + ], + "version": "==0.14" + }, + "ipdb": { + "hashes": [ + "sha256:7081c65ed7bfe7737f83fa4213ca8afd9617b42ff6b3f1daf9a3419839a2a00a" + ], + "index": "pypi", + "version": "==0.11" + }, + "ipython": { + "hashes": [ + "sha256:a0c96853549b246991046f32d19db7140f5b1a644cc31f0dc1edc86713b7676f", + "sha256:eca537aa61592aca2fef4adea12af8e42f5c335004dfa80c78caf80e8b525e5c" + ], + "version": "==6.4.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "jedi": { + "hashes": [ + "sha256:1972f694c6bc66a2fac8718299e2ab73011d653a6d8059790c3476d2353b99ad", + "sha256:5861f6dc0c16e024cbb0044999f9cf8013b292c05f287df06d3d991a87a4eb89" + ], + "version": "==0.12.0" + }, + "jmespath": { + "hashes": [ + "sha256:6a81d4c9aa62caf061cb517b4d9ad1dd300374cd4706997aff9cd6aedd61fc64", + "sha256:f11b4461f425740a1d908e9a3f7365c3d2e569f6ca68a2ff8bc5bcd9676edd63" + ], + "version": "==0.9.3" + }, + "parso": { + "hashes": [ + "sha256:cdef26e8adc10d589f3ec4eb444bd0a29f3f1eb6d72a4292ab8afcb9d68976a6", + "sha256:f0604a40b96e062b0fd99cf134cc2d5cdf66939d0902f8267d938b0d5b26707f" + ], + "version": "==0.2.1" + }, + "pexpect": { + "hashes": [ + "sha256:2a8e88259839571d1251d278476f3eec5db26deb73a70be5ed5dc5435e418aba", + "sha256:3fbd41d4caf27fa4a377bfd16fef87271099463e6fa73e92a52f92dfee5d425b" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.6.0" + }, + "pickleshare": { + "hashes": [ + "sha256:84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b", + "sha256:c9a2541f25aeabc070f12f452e1f2a8eae2abd51e1cd19e8430402bdf4c1d8b5" + ], + "version": "==0.7.4" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:1df952620eccb399c53ebb359cc7d9a8d3a9538cb34c5a1344bdbeb29fbcc381", + "sha256:3f473ae040ddaa52b52f97f6b4a493cfa9f5920c255a12dc56a7d34397a398a4", + "sha256:858588f1983ca497f1cf4ffde01d978a3ea02b01c8a26a8bbc5cd2e66d816917" + ], + "version": "==1.0.15" + }, + "ptyprocess": { + "hashes": [ + "sha256:923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0", + "sha256:d7cc528d76e76342423ca640335bd3633420dc1366f258cb31d05e865ef5ca1f" + ], + "version": "==0.6.0" + }, + "pyasn1": { + "hashes": [ + "sha256:2f57960dc7a2820ea5a1782b872d974b639aa3b448ac6628d1ecc5d0fe3986f2", + "sha256:3651774ca1c9726307560792877db747ba5e8a844ea1a41feb7670b319800ab3", + "sha256:602fda674355b4701acd7741b2be5ac188056594bf1eecf690816d944e52905e", + "sha256:8fb265066eac1d3bb5015c6988981b009ccefd294008ff7973ed5f64335b0f2d", + "sha256:9334cb427609d2b1e195bb1e251f99636f817d7e3e1dffa150cb3365188fb992", + "sha256:9a15cc13ff6bf5ed29ac936ca941400be050dff19630d6cd1df3fb978ef4c5ad", + "sha256:a66dcda18dbf6e4663bde70eb30af3fc4fe1acb2d14c4867a861681887a5f9a2", + "sha256:ba77f1e8d7d58abc42bfeddd217b545fdab4c1eeb50fd37c2219810ad56303bf", + "sha256:cdc8eb2eaafb56de66786afa6809cd9db2df1b3b595dcb25aa5b9dc61189d40a", + "sha256:d01fbba900c80b42af5c3fe1a999acf61e27bf0e452e0f1ef4619065e57622da", + "sha256:f281bf11fe204f05859225ec2e9da7a7c140b65deccd8a4eb0bc75d0bd6949e0", + "sha256:fb81622d8f3509f0026b0683fe90fea27be7284d3826a5f2edf97f69151ab0fc" + ], + "version": "==0.4.3" + }, + "pygments": { + "hashes": [ + "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", + "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc" + ], + "version": "==2.2.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", + "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" + ], + "markers": "python_version >= '2.7'", + "version": "==2.7.3" + }, + "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" + }, + "rsa": { + "hashes": [ + "sha256:25df4e10c263fb88b5ace923dd84bf9aa7f5019687b5e55382ffcdb8bede9db5", + "sha256:43f682fea81c452c98d09fc316aae12de6d30c4b5c84226642cf8f8fd1c93abd" + ], + "version": "==3.4.2" + }, + "s3transfer": { + "hashes": [ + "sha256:90dc18e028989c609146e241ea153250be451e05ecc0c2832565231dacdf59c1", + "sha256:c7a9ec356982d5e9ab2d4b46391a7d6a950e2b04c472419f5fdec70cc0ada72f" + ], + "version": "==0.1.13" + }, + "simplegeneric": { + "hashes": [ + "sha256:dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173" + ], + "version": "==0.8.1" + }, + "six": { + "hashes": [ + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + ], + "version": "==1.11.0" + }, + "traitlets": { + "hashes": [ + "sha256:9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835", + "sha256:c6cb5e6f57c5a9bdaa40fa71ce7b4af30298fbab9ece9815b5d995ab6217c7d9" + ], + "version": "==4.3.2" + }, + "wcwidth": { + "hashes": [ + "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e", + "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c" + ], + "version": "==0.1.7" + } + } +} diff --git a/Procfile b/Procfile new file mode 100644 index 00000000..3cd117b2 --- /dev/null +++ b/Procfile @@ -0,0 +1,2 @@ +release: ./release-tasks.sh +web: gunicorn --log-file=- --pythonpath server core.wsgi \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..c4539eff --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# skillBox + +Sources + +* [Django](https://docs.djangoproject.com/en/2.0/) +* [Wagtail](http://docs.wagtail.io/) +* [Graphene](https://github.com/graphql-python/graphene-django) +* [Vue-Apollo](https://github.com/Akryum/vue-apollo) +* [Vuetifyjs](https://vuetifyjs.com/en/getting-started/quick-start) + +## Development + +### Server + +* [Install](https://docs.pipenv.org/#install-pipenv-today) pipenv +* Create virtualenv in install dependencies `pipenv --python 3.6 install --dev` +* Create PostgreSQL database & user +* [Install](https://devcenter.heroku.com/articles/heroku-cli#download-and-install) Heroku cli, run `heroku login` and `heroku git:remote -a caruhome` +* Create .env in `server` file with `SECRET_KEY` and `DATABASE_URL` +* Migrate databases: `pipenv run python manage.py migrate` +* Create super user: `pipenv run python manage.py createsuperuser` +* Run: `pipenv run python manage.py runserver` +* Dummy data: `pipenv run python manage.py dummy_data` (restart the development server afterwards) + + +#### Notes + +* `DEBUG=True` enables the debug middleware http://docs.graphene-python.org/projects/django/en/latest/debug/ + + +### Client + +``` bash +# install dependencies +npm install --prefix client + +# serve with hot reload at localhost:8080 +npm run dev --prefix client + +# run storybook +npm run storybook --prefix client + +# build +npm run build --prefix client + +# build for production with minification +export NODE_ENV=production && npm install --prefix client && npm run build --prefix client +``` + +After running `npm run dev` login to the Django admin view on the same domain as the webpack dev server is running. +Example: The client runs on localhost:8080 and Django on localhost:8000. +This way you will have a session and a csrf cookie set and the apollo client will +be able to make requests. + +Production Build + +## Urls + +(trailing slashes are required) + +* Admin interface: http://127.0.0.1:8000/guru/ +* Cms interface: http://127.0.0.1:8000/cms/ +* GraphQL Interface: http://localhost:8000/api/graphiql/ + +## Heroku + +`heroku run python server/manage.py --app ` + +### Rollabck + +After doing a rollback under https://data.heroku.com/ + +`heroku pg:info --app=` + +Change DATABASE URL (e.g after a rollback) + +`heroku pg:promote HEROKU_POSTGRESQL_PINK` + +### Backup + +`heroku pg:backups:capture --app ` + +`heroku pg:backups:url b001 --app ` + +## AWS + +1. Create user with API Access and add `access key id` and `access key` to `.env` and set `USE_AWS=True` +2. Create S3 Bucket in location EU Ireland + +Change bucket `Permissions` / `Bucket Policy` + +``` +{ + "Version": "2008-10-17", + "Statement": [ + { + "Sid": "PublicReadForGetBucketObjects", + "Effect": "Allow", + "Principal": { + "AWS": "*" + }, + "Action": "s3:GetObject", + "Resource": "arn:aws:s3:::/*" + }, + { + "Sid": "", + "Effect": "Allow", + "Principal": { + "AWS": "" + }, + "Action": "s3:*", + "Resource": [ + "arn:aws:s3:::/*", + "arn:aws:s3:::" + ] + } + ] +} + +``` \ No newline at end of file diff --git a/bin/post_compile b/bin/post_compile new file mode 100644 index 00000000..5b82f224 --- /dev/null +++ b/bin/post_compile @@ -0,0 +1,2 @@ +# Has to be in post_compile. Heroku release phase won't work :( +python server/manage.py compress \ No newline at end of file diff --git a/client/.babelrc b/client/.babelrc new file mode 100644 index 00000000..3a280ba3 --- /dev/null +++ b/client/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + ["env", { + "modules": false, + "targets": { + "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] + } + }], + "stage-2" + ], + "plugins": ["transform-vue-jsx", "transform-runtime"] +} diff --git a/client/.editorconfig b/client/.editorconfig new file mode 100644 index 00000000..9d08a1a8 --- /dev/null +++ b/client/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/client/.eslintignore b/client/.eslintignore new file mode 100644 index 00000000..e1fcc9c4 --- /dev/null +++ b/client/.eslintignore @@ -0,0 +1,4 @@ +/build/ +/config/ +/dist/ +/*.js diff --git a/client/.eslintrc.js b/client/.eslintrc.js new file mode 100644 index 00000000..111b39c8 --- /dev/null +++ b/client/.eslintrc.js @@ -0,0 +1,32 @@ +// https://eslint.org/docs/user-guide/configuring + +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint' + }, + env: { + browser: true, + }, + extends: [ + // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention + // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. + 'plugin:vue/essential', + // https://github.com/standard/standard/blob/master/docs/RULES-en.md + 'standard' + ], + // required to lint *.vue files + plugins: [ + 'vue' + ], + // add your custom rules here + rules: { + // allow async-await + 'generator-star-spacing': 'off', + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'indent': 'off', + 'semi': 0, + 'space-before-function-paren': 'off' + } +} diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..de748e1c --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,14 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/client/.postcssrc.js b/client/.postcssrc.js new file mode 100644 index 00000000..eee3e92d --- /dev/null +++ b/client/.postcssrc.js @@ -0,0 +1,10 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + "postcss-import": {}, + "postcss-url": {}, + // to edit target browsers: use "browserslist" field in package.json + "autoprefixer": {} + } +} diff --git a/client/build/build.js b/client/build/build.js new file mode 100644 index 00000000..8f2ad8ad --- /dev/null +++ b/client/build/build.js @@ -0,0 +1,41 @@ +'use strict' +require('./check-versions')() + +process.env.NODE_ENV = 'production' + +const ora = require('ora') +const rm = require('rimraf') +const path = require('path') +const chalk = require('chalk') +const webpack = require('webpack') +const config = require('../config') +const webpackConfig = require('./webpack.prod.conf') + +const spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, (err, stats) => { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. + chunks: false, + chunkModules: false + }) + '\n\n') + + if (stats.hasErrors()) { + console.log(chalk.red(' Build failed with errors.\n')) + process.exit(1) + } + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/client/build/check-versions.js b/client/build/check-versions.js new file mode 100644 index 00000000..3ef972a0 --- /dev/null +++ b/client/build/check-versions.js @@ -0,0 +1,54 @@ +'use strict' +const chalk = require('chalk') +const semver = require('semver') +const packageConfig = require('../package.json') +const shell = require('shelljs') + +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +const versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + } +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + const warnings = [] + + for (let i = 0; i < versionRequirements.length; i++) { + const mod = versionRequirements[i] + + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + + for (let i = 0; i < warnings.length; i++) { + const warning = warnings[i] + console.log(' ' + warning) + } + + console.log() + process.exit(1) + } +} diff --git a/client/build/logo.png b/client/build/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 { + const notifier = require('node-notifier') + + return (severity, errors) => { + if (severity !== 'error') return + + const error = errors[0] + const filename = error.file && error.file.split('!').pop() + + notifier.notify({ + title: packageConfig.name, + message: severity + ': ' + error.name, + subtitle: filename || '', + icon: path.join(__dirname, 'logo.png') + }) + } +} diff --git a/client/build/vue-loader.conf.js b/client/build/vue-loader.conf.js new file mode 100644 index 00000000..33ed58bc --- /dev/null +++ b/client/build/vue-loader.conf.js @@ -0,0 +1,22 @@ +'use strict' +const utils = require('./utils') +const config = require('../config') +const isProduction = process.env.NODE_ENV === 'production' +const sourceMapEnabled = isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: sourceMapEnabled, + extract: isProduction + }), + cssSourceMap: sourceMapEnabled, + cacheBusting: config.dev.cacheBusting, + transformToRequire: { + video: ['src', 'poster'], + source: 'src', + img: 'src', + image: 'xlink:href' + } +} diff --git a/client/build/webpack.base.conf.js b/client/build/webpack.base.conf.js new file mode 100644 index 00000000..aa943a69 --- /dev/null +++ b/client/build/webpack.base.conf.js @@ -0,0 +1,97 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const config = require('../config') +const vueLoaderConfig = require('./vue-loader.conf') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + +const createLintingRule = () => ({ + test: /\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [resolve('src'), resolve('test')], + options: { + formatter: require('eslint-friendly-formatter'), + emitWarning: !config.dev.showEslintErrorsInOverlay + } +}) + +module.exports = { + context: path.resolve(__dirname, '../'), + entry: { + app: './src/main.js' + }, + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' + ? config.build.assetsPublicPath + : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json', '.gql', '.graphql'], + alias: { + '@': resolve('src'), + styles: resolve('styles') + } + }, + module: { + rules: [ + ...(config.dev.useEslint ? [createLintingRule()] : []), + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] + }, + { + test: /\.(gql|graphql)$/, + loader: 'graphql-tag/loader', + exclude: /node_modules/ + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('media/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + } + ] + }, + node: { + // prevent webpack from injecting useless setImmediate polyfill because Vue + // source contains it (although only uses it if it's native). + setImmediate: false, + // prevent webpack from injecting mocks to Node native modules + // that does not make sense for the client + dgram: 'empty', + fs: 'empty', + net: 'empty', + tls: 'empty', + child_process: 'empty' + } +} diff --git a/client/build/webpack.dev.conf.js b/client/build/webpack.dev.conf.js new file mode 100755 index 00000000..070ae221 --- /dev/null +++ b/client/build/webpack.dev.conf.js @@ -0,0 +1,95 @@ +'use strict' +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const path = require('path') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +const portfinder = require('portfinder') + +const HOST = process.env.HOST +const PORT = process.env.PORT && Number(process.env.PORT) + +const devWebpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) + }, + // cheap-module-eval-source-map is faster for development + devtool: config.dev.devtool, + + // these devServer options should be customized in /config/index.js + devServer: { + clientLogLevel: 'warning', + historyApiFallback: { + rewrites: [ + { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, + ], + }, + hot: true, + contentBase: false, // since we use CopyWebpackPlugin. + compress: true, + host: HOST || config.dev.host, + port: PORT || config.dev.port, + open: config.dev.autoOpenBrowser, + overlay: config.dev.errorOverlay + ? { warnings: false, errors: true } + : false, + publicPath: config.dev.assetsPublicPath, + proxy: config.dev.proxyTable, + quiet: true, // necessary for FriendlyErrorsPlugin + watchOptions: { + poll: config.dev.poll, + } + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': require('../config/dev.env') + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + inject: true + }), + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.dev.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +module.exports = new Promise((resolve, reject) => { + portfinder.basePort = process.env.PORT || config.dev.port + portfinder.getPort((err, port) => { + if (err) { + reject(err) + } else { + // publish the new Port, necessary for e2e tests + process.env.PORT = port + // add port to devServer config + devWebpackConfig.devServer.port = port + + // Add FriendlyErrorsPlugin + devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ + compilationSuccessInfo: { + messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], + }, + onErrors: config.dev.notifyOnErrors + ? utils.createNotifierCallback() + : undefined + })) + + resolve(devWebpackConfig) + } + }) +}) diff --git a/client/build/webpack.prod.conf.js b/client/build/webpack.prod.conf.js new file mode 100644 index 00000000..d9f99f65 --- /dev/null +++ b/client/build/webpack.prod.conf.js @@ -0,0 +1,145 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') + +const env = require('../config/prod.env') + +const webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true, + usePostCSS: true + }) + }, + devtool: config.build.productionSourceMap ? config.build.devtool : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new UglifyJsPlugin({ + uglifyOptions: { + compress: { + warnings: false + } + }, + sourceMap: config.build.productionSourceMap, + parallel: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css'), + // Setting the following option to `false` will not extract CSS from codesplit chunks. + // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. + // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, + // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 + allChunks: true, + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: config.build.productionSourceMap + ? { safe: true, map: { inline: false } } + : { safe: true } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.build.index, + template: 'index.html', + inject: true, + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency' + }), + // keep module.id stable when vendor modules does not change + new webpack.HashedModuleIdsPlugin(), + // enable scope hoisting + new webpack.optimize.ModuleConcatenationPlugin(), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks (module) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + // This instance extracts shared chunks from code splitted chunks and bundles them + // in a separate chunk, similar to the vendor chunk + // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +if (config.build.productionGzip) { + const CompressionWebpackPlugin = require('compression-webpack-plugin') + + webpackConfig.plugins.push( + new CompressionWebpackPlugin({ + asset: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp( + '\\.(' + + config.build.productionGzipExtensions.join('|') + + ')$' + ), + threshold: 10240, + minRatio: 0.8 + }) + ) +} + +if (config.build.bundleAnalyzerReport) { + const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/client/config/dev.env.js b/client/config/dev.env.js new file mode 100644 index 00000000..1e22973a --- /dev/null +++ b/client/config/dev.env.js @@ -0,0 +1,7 @@ +'use strict' +const merge = require('webpack-merge') +const prodEnv = require('./prod.env') + +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/client/config/index.js b/client/config/index.js new file mode 100644 index 00000000..31e11b72 --- /dev/null +++ b/client/config/index.js @@ -0,0 +1,75 @@ +'use strict' +// Template version: 1.3.1 +// see http://vuejs-templates.github.io/webpack for documentation. + +const path = require('path') + +module.exports = { + dev: { + + // Paths + assetsSubDirectory: 'static', + assetsPublicPath: '/', + proxyTable: {}, + + // Various Dev Server settings + host: 'localhost', // can be overwritten by process.env.HOST + port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined + autoOpenBrowser: false, + errorOverlay: true, + notifyOnErrors: true, + poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- + + // Use Eslint Loader? + // If true, your code will be linted during bundling and + // linting errors and warnings will be shown in the console. + useEslint: true, + // If true, eslint errors and warnings will also be shown in the error overlay + // in the browser. + showEslintErrorsInOverlay: false, + + /** + * Source Maps + */ + + // https://webpack.js.org/configuration/devtool/#development + devtool: 'cheap-module-eval-source-map', + + // If you have problems debugging vue-files in devtools, + // set this to false - it *may* help + // https://vue-loader.vuejs.org/en/options.html#cachebusting + cacheBusting: true, + + cssSourceMap: true + }, + + build: { + // Template for index.html + index: path.resolve(__dirname, '../dist/index.html'), + assetsRoot: path.resolve(__dirname, '../dist'), + + assetsSubDirectory: 'static', + assetsPublicPath: '/', + + /** + * Source Maps + */ + + productionSourceMap: true, + // https://webpack.js.org/configuration/devtool/#production + devtool: '#source-map', + + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + } +} diff --git a/client/config/prod.env.js b/client/config/prod.env.js new file mode 100644 index 00000000..a6f99761 --- /dev/null +++ b/client/config/prod.env.js @@ -0,0 +1,4 @@ +'use strict' +module.exports = { + NODE_ENV: '"production"' +} diff --git a/client/index.html b/client/index.html new file mode 100644 index 00000000..0d15d531 --- /dev/null +++ b/client/index.html @@ -0,0 +1,24 @@ + + + + + + skillBox + + + + + + + + +
+
+
+
+
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 00000000..592847cb --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,11721 @@ +{ + "name": "frontend", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==" + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + } + } + }, + "@types/async": { + "version": "2.0.49", + "resolved": "https://registry.npmjs.org/@types/async/-/async-2.0.49.tgz", + "integrity": "sha512-Benr3i5odUkvpFkOpzGqrltGdbSs+EVCkEBGXbuR7uT0VzhXKIkhem6PDzHdx5EonA+rfbB3QvP6aDOw5+zp5Q==", + "optional": true + }, + "@types/graphql": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz", + "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ==" + }, + "@types/zen-observable": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz", + "integrity": "sha512-aDvGDAHcVfUqNmd8q4//cHAP+HGxsbChbBbuk3+kMVk5TTxfWLpQWvVN3+UPjohLnwMYN7jr6BWNn2cYNqdm7g==" + }, + "@vimeo/player": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@vimeo/player/-/player-2.6.1.tgz", + "integrity": "sha512-TkGt7EkHSUGCdDwZbaznwO9NdutHoq5B6wJn8sW3auGoKvPw6bJJ7r7/Zf1HIgENxhn2aEO3fQxD9GOolF30tw==", + "requires": { + "es6-collections": "0.5.6", + "native-promise-only": "0.8.1" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "requires": { + "acorn": "^4.0.3" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "apollo-cache": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.1.9.tgz", + "integrity": "sha512-Cc0WdkSz1ZGvzZ4NdPWQHVfm3qXMFgUUqcjvoL2qOB3e2JvWYGXAjtF2zAhzJXXRGMmtA2uACh4V09N4vo6N7A==", + "requires": { + "apollo-utilities": "^1.0.13" + } + }, + "apollo-cache-inmemory": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.2.tgz", + "integrity": "sha512-UtkQDqrPJUfMe0/XfZqRiGF11CyOS5PnNmyPxNwUctoWnq8+KgHquAw21TDijlB47sC/ogBk98S25WMPc0D7NA==", + "requires": { + "apollo-cache": "^1.1.9", + "apollo-utilities": "^1.0.13", + "graphql-anywhere": "^4.1.11" + } + }, + "apollo-client": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.3.2.tgz", + "integrity": "sha512-w7dU+YXOlRXTOnMx9Scp8M3GhN8PvzCLDhTk6Avrbvvy3gZAFr26mwSh8HqyeoaJRItD9ag61RbT0aLpq35mYw==", + "requires": { + "@types/async": "2.0.49", + "@types/zen-observable": "^0.5.3", + "apollo-cache": "^1.1.9", + "apollo-link": "^1.0.0", + "apollo-link-dedup": "^1.0.0", + "apollo-utilities": "^1.0.13", + "symbol-observable": "^1.0.2", + "zen-observable": "^0.8.0" + } + }, + "apollo-link": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz", + "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==", + "requires": { + "@types/graphql": "0.12.6", + "apollo-utilities": "^1.0.0", + "zen-observable-ts": "^0.8.9" + } + }, + "apollo-link-dedup": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/apollo-link-dedup/-/apollo-link-dedup-1.0.9.tgz", + "integrity": "sha512-RbuEKpmSHVMtoREMPh2wUFTeh65q+0XPVeqgaOP/rGEAfvLyOMvX0vT2nVaejMohoMxuUnfZwpldXaDFWnlVbg==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-link-http": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.4.tgz", + "integrity": "sha512-e9Ng3HfnW00Mh3TI6DhNRfozmzQOtKgdi+qUAsHBOEcTP0PTAmb+9XpeyEEOueLyO0GXhB92HUCIhzrWMXgwyg==", + "requires": { + "apollo-link": "^1.2.2", + "apollo-link-http-common": "^0.2.4" + } + }, + "apollo-link-http-common": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.4.tgz", + "integrity": "sha512-4j6o6WoXuSPen9xh4NBaX8/vL98X1xY2cYzUEK1F8SzvHe2oFONfxJBTekwU8hnvapcuq8Qh9Uct+gelu8T10g==", + "requires": { + "apollo-link": "^1.2.2" + } + }, + "apollo-utilities": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.13.tgz", + "integrity": "sha512-WIbKDsFsLXMgPPGmlB2pL2noHT13TOLU2eRSyPjQMQwcz9lO9UKRkwK8pRJ8b4Zo/9qQHm30F/xlfP/OSr2ZSw==" + }, + "appolo": { + "version": "6.0.19", + "resolved": "https://registry.npmjs.org/appolo/-/appolo-6.0.19.tgz", + "integrity": "sha512-JES9kU0phQES+Pokss/6SVh7QsCYqDvFTedJY/ulhEWzLtY1dbpiYiQG5Pk5i7zoQ6d/L3r3DVyTzlDkKQs1Cg==", + "requires": { + "appolo-agent": "^6.0.3", + "appolo-engine": "^6.0.20", + "bluebird": "^3.5.1", + "joi": "^13.2.0", + "lodash": "^4.17.5", + "tslib": "^1.9.0" + } + }, + "appolo-agent": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/appolo-agent/-/appolo-agent-6.0.3.tgz", + "integrity": "sha512-SYnHhE+SNrEFMqz1PwqSrJLSbM/NBHRv/1iP5p3ggtKLnuD3q1A0oJBt/xc+sW2omW5KN2F4xUqIgYf+ss+1NA==", + "requires": { + "appolo-cache": "^6.0.0", + "appolo-route": "^6.0.0", + "bluebird": "^3.5.1", + "cookie": "^0.3.1", + "lodash": "^4.17.5", + "qs": "^6.5.1", + "tslib": "^1.9.0", + "type-is": "^1.6.16" + } + }, + "appolo-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/appolo-cache/-/appolo-cache-6.0.0.tgz", + "integrity": "sha512-vtPugbxZErMA/lTtwdnN0nb6g2bNQlWtxHAfLSkJUY9xkennXVTaT8K5cQ7aEPPW/u6EI6BeIbJYugyF5+p7Dg==" + }, + "appolo-engine": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/appolo-engine/-/appolo-engine-6.0.22.tgz", + "integrity": "sha512-UxoCLZ9DlOOaQr0JK+24XactuTWeR4U2Orf+3Y+zBt7Qr4Soe384rQhbF7sylNpA6Bs2AiCkLyrTHMwb/jjdwA==", + "requires": { + "appolo-inject": "^6.0.3", + "bluebird": "^3.5.1", + "lodash": "^4.17.10", + "tslib": "^1.9.0" + } + }, + "appolo-inject": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/appolo-inject/-/appolo-inject-6.0.3.tgz", + "integrity": "sha512-ljqfMEISe2ZQfCwXfR6Tdvy/R9znCxvx3dp6e3gIIC9P/NQIXPSk3IVQQid7QXO2POJU7W9c9OSLcw5IP9rx3A==", + "requires": { + "lodash": "^4.17.5", + "reflect-metadata": "^0.1.12", + "tslib": "^1.9.0" + } + }, + "appolo-route": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/appolo-route/-/appolo-route-6.0.0.tgz", + "integrity": "sha512-8Xp22i3R8Jqkwp/s+vu1pliQ1tV+QvMZweD740trmuQisUNZ/F8Zhrq+in8defjyEpKHz3xzVevAl53hKz8lXw==", + "requires": { + "appolo-cache": "^6.0.0", + "lodash": "^4.17.5", + "path-to-regexp": "^2.2.0" + }, + "dependencies": { + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + }, + "autoprefixer": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "requires": { + "browserslist": "^2.11.3", + "caniuse-lite": "^1.0.30000805", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.17", + "postcss-value-parser": "^3.2.3" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "aws4": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-eslint": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz", + "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "~3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", + "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=" + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=" + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-vue-jsx": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz", + "integrity": "sha512-W39X07/n3oJMQd8tALBO+440NraGSF//Lo1ydd/9Nme3+QiRGFBb1Q39T9iixh0jZPPbfv3so18tNoIgLatymw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "tryer": "^1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.x.x" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "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": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz", + "integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I=" + }, + "caniuse-lite": { + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", + "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=" + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "requires": { + "source-map": "0.5.x" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "requires": { + "q": "^1.1.2" + } + }, + "coalescy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/coalescy/-/coalescy-1.0.0.tgz", + "integrity": "sha1-SwZYRrg2NhrabEtKSr9LwcrDG/E=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "^1.0.0" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "requires": { + "mime-db": ">= 1.33.0 < 2" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "requires": { + "accepts": "~1.3.4", + "bytes": "3.0.0", + "compressible": "~2.0.13", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.1", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.x.x" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "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", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + } + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" + }, + "electron-to-chromium": { + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=" + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", + "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", + "requires": { + "stackframe": "^1.0.3" + } + }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-collections": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/es6-collections/-/es6-collections-0.5.6.tgz", + "integrity": "sha1-VVLoAK0SwYIM2ivUp5rn27A9iaI=" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "globals": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==" + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=" + }, + "eslint-friendly-formatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-3.0.0.tgz", + "integrity": "sha1-J4h0Q1psRuwdlPoLH/SU4w7wQpA=", + "requires": { + "chalk": "^1.0.0", + "coalescy": "1.0.0", + "extend": "^3.0.0", + "minimist": "^1.2.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + } + }, + "eslint-loader": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz", + "integrity": "sha1-2tMXgSktZmSyUxf9BJ0uKy8CIF0=", + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", + "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "requires": { + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "eslint-plugin-promise": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.7.0.tgz", + "integrity": "sha512-2WO+ZFh7vxUKRfR0cOIMrWgYKdR6S1AlOezw6pC52B6oYpd5WFghN+QHxvrRdZMtbo8h3dfUZ2o1rWb0UPbKtg==" + }, + "eslint-plugin-standard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", + "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==" + }, + "eslint-plugin-vue": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.5.0.tgz", + "integrity": "sha512-2CDidjAZ875tbJgtjKihIQRkqxgk3gVUDOAW2e9dP+Kf39jhCwKy6aMXIsHRKCPjRqQhDWF0jtVRNcywBFWTZA==", + "requires": { + "vue-eslint-parser": "^2.0.3" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "requires": { + "original": ">=0.0.5" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "requires": { + "async": "^2.4.1", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "friendly-errors-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "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", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "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" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "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", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graphql": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz", + "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==", + "requires": { + "iterall": "^1.2.1" + } + }, + "graphql-anywhere": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.1.11.tgz", + "integrity": "sha512-zuNsLVcEwJSrv9HaCePPg9AQEte7Z33MqmmY85RawfOC3IGeew/8fHpY+GQQOKpaYvgvwm5fh/msdyuJOCdCig==", + "requires": { + "apollo-utilities": "^1.0.13" + } + }, + "graphql-tag": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.9.2.tgz", + "integrity": "sha512-qnNmof9pAqj/LUzs3lStP0Gw1qhdVCUS7Ab7+SUB6KD5aX1uqxWQRwMnOGTkhKuLvLNIs1TvNz+iS9kUGl1MhA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=" + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.3.tgz", + "integrity": "sha512-Bmr56pxML1c9kU+NS51SMFkiVQAb+9uFfXwyqR2tn4w2FPvmPt65eZ9aCcEfRXd9G74HkZnILC6p967pED4aiw==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-comment-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz", + "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==", + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.1.x", + "commander": "2.15.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.3.x" + } + }, + "html-webpack-plugin": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz", + "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", + "requires": { + "bluebird": "^3.4.7", + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "toposort": "^1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=" + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "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" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "requires": { + "meow": "^3.3.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==" + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.2.tgz", + "integrity": "sha512-zfRhJn9rFSGhzU5tGZqepRSAj3+g6oTOHxMGGriWNJZzyLPUK8H7VHpqKntegnW8KLyGA9zwuNaCoopl40LTpg==", + "requires": { + "punycode": "2.x.x" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + }, + "joi": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-13.3.0.tgz", + "integrity": "sha512-iF6jEYVfBIoYXztYymia1JfuoVbxBNuOcwdbsdoGin9/jjhBLhonKmfTQOvePss8r8v4tU4JOcNmYPHZzKEFag==", + "requires": { + "hoek": "5.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + } + }, + "js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "last-call-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-CZc+m2xZm51J8qSwdODeiiNeqh8CYkKEq6Rw8IkE4i/4yqf2cJhjQPsA6BtAV970ePRNhwEOXhy2U5xc5Jwh9Q==", + "requires": { + "lodash": "^4.17.4", + "webpack-sources": "^1.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "loader-fs-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "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" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" + }, + "node-gyp": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", + "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": ">=2.9.0 <2.82.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "requires": { + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-sass": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "requires": { + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "requires": { + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=" + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "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": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-hash": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", + "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=" + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-Fjn7wyyadPAriuH2DHamDQw5B8GohEWbroBkKoPeP+vSF2PIAPI7WDihi8WieMRb/At4q7Ea7zTKaMDuSoIAAg==", + "requires": { + "cssnano": "^3.4.0", + "last-call-webpack-plugin": "^2.1.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "ora": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", + "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "requires": { + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" + } + }, + "original": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", + "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", + "requires": { + "url-parse": "~1.4.0" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "requires": { + "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-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "requires": { + "postcss": "^5.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "requires": { + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" + } + }, + "postcss-loader": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", + "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^1.2.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "requires": { + "postcss": "^5.0.5" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "requires": { + "mime": "^1.4.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^6.0.1", + "xxhashjs": "^0.2.1" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "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" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "prettier": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==" + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==" + }, + "randomatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "requires": { + "balanced-match": "^0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==" + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=" + } + } + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup-plugin-babel": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.4.tgz", + "integrity": "sha512-TGhQbliTZnRoUhd2214K3r4KJUBu9J1DPzcrAnkluVXOVrveU9OvAaYQ16KyOmujAoq+LMC1+x6YF2xBrU7t+g==", + "requires": { + "rollup-pluginutils": "^1.5.0" + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "requires": { + "estree-walker": "^0.2.1", + "minimatch": "^3.0.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "*" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.3.tgz", + "integrity": "sha512-iaSFtQcGo4SSgDw5Aes5p4VTrA5jCGSA7sGmhPIcOloBlgI1VktM2MUrk2IHHjbNagckXlPz+HWq1vAAPrcYxA==", + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "requires": { + "ajv": "^5.0.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==" + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.x.x" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "stackframe": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", + "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "throttle-debounce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.0.1.tgz", + "integrity": "sha1-2tD+Ew+drzcZ/eoz3Dao5rp/MLU=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=" + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=" + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "topo": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.0.tgz", + "integrity": "sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw==", + "requires": { + "hoek": "5.x.x" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=" + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" + }, + "true-case-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", + "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", + "requires": { + "glob": "^6.0.4" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=" + }, + "tslib": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", + "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "3.3.27", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.27.tgz", + "integrity": "sha512-O94wxMSb3td/TlofkITYvYIlvIVdldvNXDVRekzK13CQZuL37ua4nrdXX0Ro7MapfUVzglRHs0/+imPRUdOghg==", + "requires": { + "commander": "~2.15.0", + "source-map": "~0.6.1" + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "uri-js": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", + "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-loader": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", + "requires": { + "loader-utils": "^1.0.2", + "mime": "1.3.x" + }, + "dependencies": { + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=" + } + } + }, + "url-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "vue": { + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ==" + }, + "vue-apollo": { + "version": "3.0.0-beta.16", + "resolved": "https://registry.npmjs.org/vue-apollo/-/vue-apollo-3.0.0-beta.16.tgz", + "integrity": "sha512-9B8+qgioMW8/Z5PHnHBUHwNLhSmlh6z0sjFrurtMQR7i2ARyQ8IGph3MAv2b1p/V0xAYzR7ptLg+9Cbh7f6zWg==", + "requires": { + "throttle-debounce": "^1.0.1" + } + }, + "vue-axios": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-2.1.1.tgz", + "integrity": "sha512-Ek1STxe7G8H+ylkru1v1z6sIuUr4UkpYXjNLvDsqQNQIQ1CyrDk17KG2GaCjvhopu1wn7d8iAM9DJ5prn+FnrQ==" + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", + "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==" + }, + "vue-loader": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-14.2.3.tgz", + "integrity": "sha512-mEd2/14gNCVVpKU/44lVDoMDoAteM8PkvaVjzZ4KHyRKtry3pifSh9UMFsjoPBMeVYs9jTEDyT8UKmgPpnP8Yw==", + "requires": { + "consolidate": "^0.14.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "lru-cache": "^4.1.1", + "postcss": "^6.0.8", + "postcss-load-config": "^1.1.0", + "postcss-selector-parser": "^2.0.0", + "prettier": "^1.7.0", + "resolve": "^1.4.0", + "source-map": "^0.6.1", + "vue-hot-reload-api": "^2.2.0", + "vue-style-loader": "^4.0.1", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "vue-style-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.1.tgz", + "integrity": "sha512-GD9a3G9k2dIGYl76IgwNQGCos3KnVbOVBIdXEIfjis0jNY34oEB2Tsrq2ZXl/KIzo/5Bdt7qAWjU1y+0TWcvIA==", + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + } + } + }, + "vue-router": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.1.tgz", + "integrity": "sha512-vLLoY452L+JBpALMP5UHum9+7nzR9PeIBCghU9ZtJ1eWm6ieUI8Zb/DI3MYxH32bxkjzYV1LRjNv4qr8d+uX/w==" + }, + "vue-style-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.16.tgz", + "integrity": "sha512-ZbuhCcF/hTYmldoUOVcu2fcbeSAZnfzwDskGduOrnjBiIWHgELAd+R8nAtX80aZkceWDKGQ6N9/0/EUpt+l22A==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", + "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==" + }, + "vue-vimeo-player": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/vue-vimeo-player/-/vue-vimeo-player-0.0.6.tgz", + "integrity": "sha512-JtQD0hYJ1Yq4FctTWhdBwVYSudzWmJ6Z7hPXDtI8Ecu0KDyLmIZul2Du4ko07e73HoK5LHBEfKAZ2G2JvsmSVQ==", + "requires": { + "@vimeo/player": "^2.2.0", + "babel-plugin-external-helpers": "^6.22.0", + "babel-preset-env": "^1.6.0", + "rollup-plugin-babel": "^3.0.2", + "vue": "^2.4.4" + } + }, + "vuetify": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.1.8.tgz", + "integrity": "sha512-22PQGO/GfO8FG45G9Yz1CISZ4AD3i8XFvAVNuoiJ9vCXZYIevLlMPwx73PTOhZxmfgCC0z+gfWwnLOkPpEUlAQ==" + }, + "vuex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz", + "integrity": "sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==" + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", + "requires": { + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" + }, + "dependencies": { + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "^2.0.0" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", + "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "requires": { + "acorn": "^5.3.0", + "bfj-node4": "^5.2.0", + "chalk": "^2.3.0", + "commander": "^2.13.0", + "ejs": "^2.5.7", + "express": "^4.16.2", + "filesize": "^3.5.11", + "gzip-size": "^4.1.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "opener": "^1.4.3", + "ws": "^4.0.0" + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "requires": { + "memory-fs": "~0.4.1", + "mime": "^1.5.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz", + "integrity": "sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA==", + "requires": { + "ansi-html": "0.0.7", + "array-includes": "^3.0.3", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.17.4", + "import-local": "^1.0.0", + "internal-ip": "1.2.0", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "requires": { + "cuint": "^0.2.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, + "zen-observable": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.8.tgz", + "integrity": "sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg==" + }, + "zen-observable-ts": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz", + "integrity": "sha512-KJz2O8FxbAdAU5CSc8qZ1K2WYEJb1HxS6XDRF+hOJ1rOYcg6eTMmS9xYHCXzqZZzKw6BbXWyF4UpwSsBQnHJeA==", + "requires": { + "zen-observable": "^0.8.0" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 00000000..ae6e3e11 --- /dev/null +++ b/client/package.json @@ -0,0 +1,88 @@ +{ + "name": "frontend", + "version": "1.0.0", + "description": "A Vue.js project", + "author": "maersu ", + "private": true, + "scripts": { + "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", + "start": "npm run dev", + "lint": "eslint --ext .js,.vue src", + "build": "node build/build.js" + }, + "dependencies": { + "apollo-cache-inmemory": "^1.2.2", + "apollo-client": "^2.3.2", + "apollo-link-http": "^1.5.4", + "appolo": "^6.0.19", + "autoprefixer": "^7.1.2", + "axios": "^0.18.0", + "babel-core": "^6.22.1", + "babel-eslint": "^8.2.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "babel-loader": "^7.1.1", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-plugin-transform-vue-jsx": "^3.5.0", + "babel-preset-env": "^1.3.2", + "babel-preset-stage-2": "^6.22.0", + "chalk": "^2.0.1", + "copy-webpack-plugin": "^4.0.1", + "css-loader": "^0.28.0", + "eslint": "^4.15.0", + "eslint-config-standard": "^10.2.1", + "eslint-friendly-formatter": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-node": "^5.2.0", + "eslint-plugin-promise": "^3.4.0", + "eslint-plugin-standard": "^3.0.1", + "eslint-plugin-vue": "^4.0.0", + "extract-text-webpack-plugin": "^3.0.0", + "file-loader": "^1.1.4", + "friendly-errors-webpack-plugin": "^1.6.1", + "graphql": "^0.13.2", + "graphql-tag": "^2.9.2", + "html-webpack-plugin": "^2.30.1", + "lodash": "^4.17.10", + "node-notifier": "^5.1.2", + "node-sass": "^4.9.0", + "optimize-css-assets-webpack-plugin": "^3.2.0", + "ora": "^1.2.0", + "portfinder": "^1.0.13", + "postcss-import": "^11.0.0", + "postcss-loader": "^2.0.8", + "postcss-url": "^7.2.1", + "rimraf": "^2.6.0", + "sass-loader": "^7.0.3", + "semver": "^5.3.0", + "shelljs": "^0.7.6", + "uglifyjs-webpack-plugin": "^1.1.1", + "url-loader": "^0.5.8", + "uuid": "^3.2.1", + "vue": "^2.5.2", + "vue-apollo": "^3.0.0-beta.16", + "vue-axios": "^2.1.1", + "vue-loader": "^14.2.1", + "vue-router": "^3.0.1", + "vue-style-loader": "^3.0.1", + "vue-template-compiler": "^2.5.2", + "vue-vimeo-player": "0.0.6", + "vuetify": "^1.1.8", + "vuex": "^3.0.1", + "webpack": "^3.6.0", + "webpack-bundle-analyzer": "^2.9.0", + "webpack-dev-server": "^2.9.1", + "webpack-merge": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ], + "devDependencies": {} +} diff --git a/client/src/App.vue b/client/src/App.vue new file mode 100644 index 00000000..b9caa4f0 --- /dev/null +++ b/client/src/App.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/client/src/graphql/client.js b/client/src/graphql/client.js new file mode 100644 index 00000000..15f06dfc --- /dev/null +++ b/client/src/graphql/client.js @@ -0,0 +1,20 @@ +import {InMemoryCache} from 'apollo-cache-inmemory/lib/index' +import {HttpLink} from 'apollo-link-http/lib/index' +import {ApolloClient} from 'apollo-client/index' +import fetch from 'unfetch' + +const httpLink = new HttpLink({ + uri: process.env.NODE_ENV !== 'production' ? 'http://localhost:8000/api/graphql/' : '/api/graphql/', + credentials: 'include', + fetch: fetch, + headers: { + 'X-CSRFToken': document.cookie.replace(/(?:(?:^|.*;\s*)csrftoken\s*=\s*([^;]*).*$)|^.*$/, '$1') + } +}) + +// Create the apollo client +export default new ApolloClient({ + link: httpLink, + cache: new InMemoryCache(), + connectToDevTools: true +}) diff --git a/client/src/graphql/gql/masterBlasterQuery.gql b/client/src/graphql/gql/masterBlasterQuery.gql new file mode 100644 index 00000000..ce264b65 --- /dev/null +++ b/client/src/graphql/gql/masterBlasterQuery.gql @@ -0,0 +1,9 @@ +query MasterBlasterQuery { + xAllUsers: allUsers { + edges { + node { + id + } + } + } +} diff --git a/client/src/main.js b/client/src/main.js new file mode 100644 index 00000000..85675213 --- /dev/null +++ b/client/src/main.js @@ -0,0 +1,35 @@ +import 'babel-polyfill' +import Vue from 'vue' +import 'vuetify/dist/vuetify.min.css' +import Vuetify from 'vuetify' +import axios from 'axios' +import VueAxios from 'vue-axios' +import lodash from 'lodash' +import VueVimeoPlayer from 'vue-vimeo-player' +import apolloClient from './graphql/client' +import VueApollo from 'vue-apollo' +import App from './App' +import router from './router' +import store from '@/store/index' + +Vue.config.productionTip = false + +Object.defineProperty(Vue.prototype, '$lodash', { value: lodash }) + +Vue.use(VueApollo) +Vue.use(VueAxios, axios) +Vue.use(Vuetify) +Vue.use(VueVimeoPlayer) + +const apolloProvider = new VueApollo({ + defaultClient: apolloClient +}) + +/* eslint-disable no-new */ +new Vue({ + el: '#app', + store, + router, + provide: apolloProvider.provide(), + render: h => h(App) +}) diff --git a/client/src/pages/PageDashboard.vue b/client/src/pages/PageDashboard.vue new file mode 100644 index 00000000..72723cec --- /dev/null +++ b/client/src/pages/PageDashboard.vue @@ -0,0 +1,5 @@ + diff --git a/client/src/pages/PageNotFound.vue b/client/src/pages/PageNotFound.vue new file mode 100644 index 00000000..a23c668a --- /dev/null +++ b/client/src/pages/PageNotFound.vue @@ -0,0 +1,5 @@ + diff --git a/client/src/router/index.js b/client/src/router/index.js new file mode 100644 index 00000000..ceba4269 --- /dev/null +++ b/client/src/router/index.js @@ -0,0 +1,22 @@ +import Vue from 'vue' +import Router from 'vue-router' +import Dashboard from '@/pages/PageDashboard' +import NotFound from '@/pages/PageNotFound' + +const routerOptions = [ + { path: '/', name: 'dashboard', component: Dashboard }, + { path: '/dashboard', name: 'dashboard', component: Dashboard }, + { path: '*', component: NotFound } +] + +const routes = routerOptions.map(route => { + return { + ...route + } +}) + +Vue.use(Router) +export default new Router({ + routes, + mode: 'history' +}) diff --git a/client/src/store/index.js b/client/src/store/index.js new file mode 100644 index 00000000..b45e7e11 --- /dev/null +++ b/client/src/store/index.js @@ -0,0 +1,20 @@ +import Vuex from 'vuex' +import Vue from 'vue' + +Vue.use(Vuex) + +export default new Vuex.Store({ + modules: { + }, + + state: { + userid: null, + username: null + }, + + getters: {}, + + actions: {}, + + mutations: {} +}) diff --git a/client/src/styles/main.scss b/client/src/styles/main.scss new file mode 100644 index 00000000..5bd82d7e --- /dev/null +++ b/client/src/styles/main.scss @@ -0,0 +1,14 @@ +@import "var"; + +body { + font-family: $font-family; + font-size: $base-font-size; +} + +ul { + margin-left: 16px; +} + +a { + text-decoration: none; +} diff --git a/client/src/styles/var.scss b/client/src/styles/var.scss new file mode 100644 index 00000000..963945f4 --- /dev/null +++ b/client/src/styles/var.scss @@ -0,0 +1,19 @@ +$grey-1: #F7F7F7; +$grey-3: #F3F3F3; +$grey-2: #D8D8D8; +$grey-4: #AFB1B1; +$grey-9: #3F3F3F; + +$orange: #FD6E22; +$orange-shadow: #c54602; + +$blue: #EDF7FA; +$blue-shadow: #B6CCD4; + +$beige: #F3F0EB; + +$text-color: $grey-9; +$font-family: 'Montserrat', Arial, sans-serif; +$base-font-size: 15px; + +$learn-unit-bg-color: $beige; \ No newline at end of file diff --git a/client/src/util/uuid.js b/client/src/util/uuid.js new file mode 100644 index 00000000..a667e54d --- /dev/null +++ b/client/src/util/uuid.js @@ -0,0 +1,5 @@ +export default () => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + let r = Math.random() * 16 | 0 + let v = c === 'x' ? r : (r & 0x3 | 0x8) + return v.toString(16) +}) diff --git a/client/static/.gitkeep b/client/static/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..4e5d5409 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,49 @@ +{ + "name": "cariot", + "version": "1.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + }, + "unfetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-3.0.0.tgz", + "integrity": "sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..19325ce9 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "cariot", + "version": "1.0.1", + "description": "\"Heroku client build\"", + "scripts": { + "postinstall": "npm install --prefix client && npm run build --prefix client" + }, + "engines": { + "node": "8.x" + }, + "dependencies": { + "babel-polyfill": "^6.26.0", + "unfetch": "^3.0.0" + } +} diff --git a/release-tasks.sh b/release-tasks.sh new file mode 100755 index 00000000..99750dcf --- /dev/null +++ b/release-tasks.sh @@ -0,0 +1,15 @@ +# Heroku Release Phase Script +# https://devcenter.heroku.com/articles/release-phase +# https://devcenter.heroku.com/articles/pipelines#can-i-run-scripts-such-as-rake-db-migrate-when-promoting + +# Run migration +python server/manage.py migrate --no-input + +# create dummy data +python server/manage.py dummy_data + +# clear cache +python server/manage.py clear_cache + +# Run production checks +python server/manage.py check --deploy diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 00000000..3478f2ba --- /dev/null +++ b/server/.env.example @@ -0,0 +1,7 @@ +SECRET_KEY=FOOBAR +DATABASE_URL=skillbox://skillbox:skillbox@localhost:5432/skillbox +DEBUG=True +USE_AWS=False +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_STORAGE_BUCKET_NAME= \ No newline at end of file diff --git a/server/__init__.py b/server/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/api/__init__.py b/server/api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/api/apps.py b/server/api/apps.py new file mode 100644 index 00000000..d87006dd --- /dev/null +++ b/server/api/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + name = 'api' diff --git a/server/api/schema.py b/server/api/schema.py new file mode 100644 index 00000000..3169c7e0 --- /dev/null +++ b/server/api/schema.py @@ -0,0 +1,20 @@ +import graphene +from django.conf import settings +from graphene_django.debug import DjangoDebug + + +class Query(graphene.ObjectType): + # This class will inherit from multiple Queries + + if settings.DEBUG: + debug = graphene.Field(DjangoDebug, name='__debug') + + +class Mutation(graphene.ObjectType): + # This class will inherit from multiple Queries + + if settings.DEBUG: + debug = graphene.Field(DjangoDebug, name='__debug') + + +schema = graphene.Schema(query=Query, mutation=Mutation) diff --git a/server/api/urls.py b/server/api/urls.py new file mode 100644 index 00000000..5b1d5e9c --- /dev/null +++ b/server/api/urls.py @@ -0,0 +1,12 @@ +from django.conf import settings +from django.conf.urls import url +from django.views.decorators.csrf import csrf_exempt +from graphene_django.views import GraphQLView + +app_name = 'api' +urlpatterns = [ + url(r'^graphql', csrf_exempt(GraphQLView.as_view())), +] + +if settings.DEBUG: + urlpatterns += [url(r'^graphiql', csrf_exempt(GraphQLView.as_view(graphiql=True, pretty=True)))] diff --git a/server/core/__init__.py b/server/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/core/context_processors.py b/server/core/context_processors.py new file mode 100644 index 00000000..87f0eac9 --- /dev/null +++ b/server/core/context_processors.py @@ -0,0 +1,10 @@ +from django.conf import settings + + +def settings_context(request): + context = { + 'RAVEN_DSN_JS': settings.RAVEN_DSN_JS, + 'GOOGLE_TAG_MANAGER_CONTAINER_ID': settings.GOOGLE_TAG_MANAGER_CONTAINER_ID, + 'DEBUG': settings.DEBUG + } + return context diff --git a/server/core/env_utils.py b/server/core/env_utils.py new file mode 100644 index 00000000..07682a3c --- /dev/null +++ b/server/core/env_utils.py @@ -0,0 +1,45 @@ +import re + +regex = re.compile('^<(?P.*)>\s*(?P.*@.*)') + + +def parse_emails(emails): + """ + Parse a list of emails of the following format: + john@abc.com, boo@bbs.com + :param str emails: "Comma separated emails" + :return: A list of name, email tuples + :rtype: list + """ + if not emails: + return [] + + email_tuples = [] + for email in emails.split(','): + r = regex.match(email.strip()) + if r: + email_tuples.append(r.groups()) + + return email_tuples + + +def bool_value(value, default=False): + """ + Convert strings like 'yes', 'y', 'true', '1', + 'no', 'n', 'false', '0' or '' to boolean values. + :param str value: "Value to parse to bool" + :param bool default: "Default value if unable to convert" + :rtype: bool + """ + if not value: + return default + + true_values = ('yes', 'y', 'true', '1') + false_values = ('no', 'n', 'false', '0', '') + normalized_value = value.strip().lower() + if normalized_value in true_values: + return True + elif normalized_value in false_values: + return False + else: + return default diff --git a/server/core/factories.py b/server/core/factories.py new file mode 100644 index 00000000..fc83e093 --- /dev/null +++ b/server/core/factories.py @@ -0,0 +1,56 @@ +import random + +import os +import wagtail_factories +import factory +from django.conf import settings +from django.contrib.auth import get_user_model +from factory.django import ImageField, FileField +from faker import Faker +from wagtail.documents.models import get_document_model +from wagtail.images import get_image_model + +fake = Faker('de_DE') + + +def fake_title(x): + return fake.sentence(nb_words=random.randint(2, 4)).replace('.', '') + + +class BasePageFactory(wagtail_factories.PageFactory): + title = factory.LazyAttribute(fake_title) + + +class DummyDocumentFactory(factory.DjangoModelFactory): + class Meta: + model = get_document_model() + + title = factory.LazyAttribute(fake_title) + file = FileField( + from_path=os.path.join(settings.BASE_DIR, 'core', 'static', 'doc', 'dummy.pdf') + ) + + +class DummyImageFactory(factory.DjangoModelFactory): + class Meta: + model = get_image_model() + + title = factory.LazyAttribute(fake_title) + file = ImageField( + from_path=os.path.join(settings.BASE_DIR, 'core', 'static', 'img', 'dummy.jpg') + ) + + +class UserFactory(factory.django.DjangoModelFactory): + class Meta: + model = get_user_model() + django_get_or_create = ('username', ) + + first_name = factory.LazyAttribute(lambda x: fake.first_name()) + last_name = factory.LazyAttribute(lambda x: fake.last_name()) + email = factory.LazyAttribute(lambda x: fake.ascii_safe_email()) + + @factory.post_generation + def post(self, create, extracted, **kwargs): + self.set_password('test') + self.save() diff --git a/server/core/management/__init__.py b/server/core/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/core/management/commands/__init__.py b/server/core/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/core/management/commands/dropdb.py b/server/core/management/commands/dropdb.py new file mode 100644 index 00000000..ccb78cd2 --- /dev/null +++ b/server/core/management/commands/dropdb.py @@ -0,0 +1,29 @@ +import os +import shutil + +from django.conf import settings +from django.core import management +from django.core.management import BaseCommand +from django.db import connection + + +class Command(BaseCommand): + + def ensure_clean_dir(self, folder): + path = os.path.join(settings.MEDIA_ROOT, folder) + if os.path.exists(path): + shutil.rmtree(path) + if not os.path.exists(path): + os.makedirs(path) + + def handle(self, *args, **options): + with connection.cursor() as cursor: + cursor.execute("DROP SCHEMA IF EXISTS public CASCADE;") + cursor.execute( + "CREATE SCHEMA IF NOT EXISTS public AUTHORIZATION {};".format(settings.DATABASES['default']['USER'])) + cursor.execute("GRANT ALL ON SCHEMA public TO postgres;") + management.call_command('migrate', verbosity=0, interactive=False) + + self.ensure_clean_dir('images') + self.ensure_clean_dir('original_images') + self.ensure_clean_dir('documents') diff --git a/server/core/management/commands/dummy_data.py b/server/core/management/commands/dummy_data.py new file mode 100644 index 00000000..d3e51e02 --- /dev/null +++ b/server/core/management/commands/dummy_data.py @@ -0,0 +1,48 @@ +import os +import shutil + +import wagtail_factories +from django.conf import settings +from django.core import management +from django.core.management import BaseCommand +from django.db import connection +from wagtail.core.models import Page + +from core.factories import UserFactory + +data = [ +] + + +class Command(BaseCommand): + + def ensure_clean_dir(self, folder): + path = os.path.join(settings.MEDIA_ROOT, folder) + if os.path.exists(path): + shutil.rmtree(path) + if not os.path.exists(path): + os.makedirs(path) + + def handle(self, *args, **options): + with connection.cursor() as cursor: + cursor.execute("DROP SCHEMA IF EXISTS public CASCADE;") + cursor.execute( + "CREATE SCHEMA IF NOT EXISTS public AUTHORIZATION {};".format(settings.DATABASES['default']['USER'])) + cursor.execute("GRANT ALL ON SCHEMA public TO postgres;") + management.call_command('migrate', verbosity=0, interactive=False) + + self.ensure_clean_dir('images') + self.ensure_clean_dir('original_images') + self.ensure_clean_dir('documents') + + site = wagtail_factories.SiteFactory.create(is_default_site=True) + Page.objects.filter(title='Root').delete() + + u = UserFactory( + username='test', + is_staff=True, + is_superuser=True + ) + + for i in range(0, 4): + UserFactory(username='user{}'.format(i)) diff --git a/server/core/middleware.py b/server/core/middleware.py new file mode 100644 index 00000000..4cb0ca3d --- /dev/null +++ b/server/core/middleware.py @@ -0,0 +1,76 @@ +from django.conf import settings +from django.http import Http404, HttpResponsePermanentRedirect, HttpResponseRedirect +from django.utils.deprecation import MiddlewareMixin +from django.shortcuts import redirect +import re + +try: + from threading import local +except ImportError: + from django.utils._threading_local import local + +_thread_locals = local() + + +def get_current_request(): + """ returns the request object for this thread """ + return getattr(_thread_locals, "request", None) + + +def get_current_user(): + """ returns the current user, if exist, otherwise returns None """ + request = get_current_request() + if request: + return getattr(request, "user", None) + + +class ThreadLocalMiddleware(MiddlewareMixin): + """ Simple middleware that adds the request object in thread local storage.""" + + def process_request(self, request): + _thread_locals.request = request + + def process_response(self, request, response): + if hasattr(_thread_locals, 'request'): + del _thread_locals.request + return response + + +class CommonRedirectMiddleware(MiddlewareMixin): + """ + redirects common bad requests or missing images + """ + DEFAULT_REDIRECTS = [ + (re.compile("(?i)(.+\.php|.+wp-admin.+|.+\.htm|\/wordpress\/|\/wp\/|\/mm5\/|\/wp-content\/)"), + 'http://example.org/'), + ] + + def process_exception(self, request, exception): + if exception.__class__ == Http404: + new_path = self.not_found(request) + if new_path: + return redirect(new_path, permanent=True) + + def process_response(self, request, response): + if response.status_code == 404: + new_path = self.not_found(request) + if new_path: + return HttpResponsePermanentRedirect(new_path) + + return response + + def not_found(self, request): + path = request.get_full_path().lower() + # generic stuff + for re_pattern, to in self.DEFAULT_REDIRECTS: + if re_pattern.match(path): + return to + + if settings.USE_404_FALLBACK_IMAGE: + # some static image is missing show a placeholder (use full for local dev) + m = re.match(r".*(max|fill)-(?P\d+x\d+)\.(jpg|png|svg)", path) + if m: + return 'https://picsum.photos/{}'.format(m.group('dimensions').replace('x', '/')) + # or dummy image: return 'http://via.placeholder.com/{}'.format(m.group('dimensions')) + if '.png' in path or '.jpg' in path or '.svg' in path or 'not-found' in path: + return 'https://picsum.photos/400/400' diff --git a/server/core/settings.py b/server/core/settings.py new file mode 100644 index 00000000..13fbb662 --- /dev/null +++ b/server/core/settings.py @@ -0,0 +1,333 @@ +""" +Django settings for cariot_backend project. + +Generated by 'django-admin startproject' using Django 1.11.7. + +For more information on this file, see +https://docs.djangoproject.com/en/1.11/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.11/ref/settings/ +""" +import os +import sys + +import dj_database_url +from django.utils.translation import ugettext_lazy as _ +from dotenv import load_dotenv, find_dotenv + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +from core.env_utils import bool_value + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +load_dotenv(find_dotenv()) + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = os.environ.get('SECRET_KEY') +SIGNING_SECRET = os.environ.get('SIGNING_SECRET') + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = bool_value(os.environ.get('DEBUG', '')) +TEST = 'test' in sys.argv + +ALLOWED_HOSTS = ['*'] + +if not DEBUG: + SECURE_SSL_REDIRECT = True + SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') + +# Application definition + +INSTALLED_APPS = [ + 'core', + 'api', + 'user', + + 'wagtail.contrib.forms', + 'wagtail.contrib.redirects', + 'wagtail.embeds', + 'wagtail.sites', + 'wagtail.users', + 'wagtail.snippets', + 'wagtail.documents', + 'wagtail.images', + 'wagtail.search', + 'wagtail.admin', + 'wagtail.core', + 'wagtail.api.v2', + + 'taggit', + 'modelcluster', + + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'raven.contrib.django.raven_compat', + 'whitenoise.runserver_nostatic', + 'django.contrib.staticfiles', + 'django_filters', + 'graphene_django', + 'django_extensions', + 'compressor', + +] + +if DEBUG: + INSTALLED_APPS += ['wagtail.contrib.styleguide'] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'whitenoise.middleware.WhiteNoiseMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware' +] + +# Enable CORS for local development +if DEBUG: + INSTALLED_APPS += ['corsheaders'] + MIDDLEWARE += ['corsheaders.middleware.CorsMiddleware'] + CORS_ORIGIN_WHITELIST = ( + 'localhost:8080', + ) + CORS_ALLOW_CREDENTIALS = True + +MIDDLEWARE += [ + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + + 'wagtail.core.middleware.SiteMiddleware', + 'wagtail.contrib.redirects.middleware.RedirectMiddleware', + + 'core.middleware.ThreadLocalMiddleware', + 'core.middleware.CommonRedirectMiddleware', +] + +ROOT_URLCONF = 'core.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, '..', 'client/dist'), os.path.join(BASE_DIR, 'templates')], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + 'core.context_processors.settings_context', + ], + }, + }, +] + +WSGI_APPLICATION = 'core.wsgi.application' + +# Database +# https://docs.djangoproject.com/en/1.11/ref/settings/#databases + +# Database +DATABASES = { + 'default': dj_database_url.config() +} + +# Django custom user +AUTH_USER_MODEL = 'user.User' + +# Password validation +# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators + +WEAK_PASSWORDS = DEBUG +if WEAK_PASSWORDS: + AUTH_PASSWORD_VALIDATORS = [] +else: + AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, + ] + +LOGOUT_REDIRECT_URL = '/' +LOGIN_REDIRECT_URL = '/' + +# Internationalization +# https://docs.djangoproject.com/en/1.11/topics/i18n/ + +LANGUAGE_CODE = 'en' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + +LANGUAGES = [ + ('de', _('German')), + ('en', _('English')), +] + +LOCALE_PATHS = [ + os.path.join(BASE_DIR, 'locale') +] + +# Honor the 'X-Forwarded-Proto' header for request.is_secure() +SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.11/howto/static-files/ + +STATIC_ROOT = os.path.join(BASE_DIR, 'static') +STATIC_URL = '/static/' + +STATICFILES_DIRS = ( + os.path.join(BASE_DIR, '..', 'client/dist/static'), +) + +if not TEST: + STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' + +COMPRESS_CSS_FILTERS = [ + # 'django_compressor_autoprefixer.AutoprefixerFilter', + 'compressor.filters.cssmin.CSSMinFilter', +] + +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'compressor.finders.CompressorFinder', +) + +COMPRESS_PRECOMPILERS = ( + ('text/x-scss', 'django_libsass.SassCompiler'), +) + +COMPRESS_ENABLED = True + +if not DEBUG: + COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage' + COMPRESS_OFFLINE = True + +# AWS S3 +# http://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html + +AWS_QUERYSTRING_AUTH = False +AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') +AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') +AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME') +AWS_S3_FILE_OVERWRITE = False + +# use with cloudfront +# AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME +if bool_value(os.environ.get('USE_AWS')): + DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage" + # use with cloudfront + # MEDIA_URL = "https://%s/" % AWS_S3_CUSTOM_DOMAIN +else: + MEDIA_URL = '/media/' + MEDIA_ROOT = os.environ.get('DJANGO_MEDIAFILES', os.path.join(BASE_DIR, 'media')) + +AWS_S3_OBJECT_PARAMETERS = { + 'CacheControl': 'max-age=86400', +} + +# Media Files +USE_404_FALLBACK_IMAGE = bool_value(os.environ.get('USE_404_FALLBACK_IMAGE', 'True')) + +# Logging Conf + +LOGGING = { + 'version': 1, + 'formatters': { + 'verbose_format': { + 'format': '%(levelname)s %(asctime)s %(module)s %(name)s (%(process)d): %(message)s' + }, + 'simple_format': { + 'format': '%(levelname)s %(name)s: %(message)s' + }, + }, + 'disable_existing_loggers': True, + 'handlers': { + 'mail_admins': { + 'level': 'CRITICAL', + 'class': 'django.utils.log.AdminEmailHandler' + }, + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'stream': sys.stdout, + 'formatter': 'simple_format' + }, + }, + 'loggers': { + '': { + 'handlers': ['console'], + 'level': 'INFO', + 'propagate': True, + }, + 'django.security.DisallowedHost': { + 'handlers': ['mail_admins'], + 'level': 'CRITICAL', + 'propagate': False, + }, + } +} + +if not DEBUG and os.environ.get('RAVEN_DSN'): + # import raven + RAVEN_CONFIG = { + 'dsn': os.environ.get('RAVEN_DSN'), + } + + LOGGING['handlers'] = { + 'sentry': { + 'level': 'ERROR', # ERROR, WARNING, INFO + 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', + 'tags': {'custom-tag': 'x'}, + }, + 'console': { + 'level': 'INFO', + 'class': 'logging.StreamHandler', + 'stream': sys.stdout, + 'formatter': 'simple_format' + } + } + + for k, v in LOGGING['loggers'].items(): + LOGGING['loggers'][k]['handlers'] = ['sentry', 'console'] +else: + RAVEN_CONFIG = {} + +RAVEN_DSN_JS = os.environ.get('RAVEN_DSN_JS', '') + +GOOGLE_TAG_MANAGER_CONTAINER_ID = os.environ.get('GOOGLE_TAG_MANAGER_CONTAINER_ID') + +GRAPHENE = { + 'SCHEMA': 'api.schema.schema' +} + +if DEBUG: + GRAPHENE['MIDDLEWARE'] = [ + 'graphene_django.debug.DjangoDebugMiddleware', + ] + +# http://docs.wagtail.io/en/v2.1/advanced_topics/settings.html?highlight=urls +WAGTAIL_SITE_NAME = 'skillBox' diff --git a/server/core/static/doc/dummy.pdf b/server/core/static/doc/dummy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6010cbb897f38f83502a672d476d6c5856cc1ce8 GIT binary patch literal 16610 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≀yKRbGAOmcLIH(G!1N#7N z;0RyP&z;a+ku$QnuVXt9tV4bkfu&=Q1usPT=j4dD_AStj_Kv`gqz##zx zf#U+U0?qA3f{z8C3BD3+68tFmMQ~D(D!48rBqS@ODs)iDNXSa)ypXRDQYcX< zRp_ZusZhPpJE1`#ve2RsS6EVbyYN0?17T}nSK$ERXyKc}nZm`wb;9q3hlHnu=^}z6 zTSYWP^hHjIxQYacTobt~k}Fav(k9X`@?B&_R8Ul2R8!PQ^o*#FXoP68=o8VGqAjBR zqCZ4e#l*yRi0Oz~h`EYg5kre*h?R;pi}j05i7~~c#CM4w6Sot;D2@_O6@Mn)Al@VX zU3^VKN@BN!k%Xf}fJCB1hD5o<8wsMsqNK2-isVsAJ4rvu1j$UvO3C+<SmM87dFRi&fHwHxqtI-Sqa&FvR1PGvdOYV zvTtO`vY?!boT;3rT)bSaT$9{4Io1}XEk;}1x5RJB-O{pUd<%E0%2xBOh^^PRKHvIb z>x{gp{C;^m`7rrM^0o3K@=S&83T6ry6_ORo6uK1_73CE572Oq+6rU@8Qk>r=v+d|M z_iahrinn!cTTt4fWT@n$bW^E9>9f+>c9rdx+plbYv>m^Fa)-zc?H%WLB%0-n_l{yuYs)*`gRS(shs@1Ar)dbbF)h?(dt5vIg+bOj3 z@J`R2DLd*_dll7^Iqu|}{) zw#Fw7#vYA5=l3MYUJt)v4B*KD^_w)8V^^-yUAqJ**p~i`69_kvVeu$R9^uA6eErpy#KT zuQzg3=IH68H;%R*UDH3Te?`AUpL}flF_&YHj`bLb7+4sf4VnxXhPsAfh82dhM(Rcv zjS7s$j1`T~8)p~~m~1k!Gr4QhVJc#J(lpuhof*vRxEaQbUY@K60d0PE+@M+v>hK-5Mb(;=bXk+Ieq5QnXmRc z?JwKc*s~oh9PT@eII21ZIo3FG&Yn7(cJ|vjjdS7Wnw*539G!BVW}J1M6P-KHZ#{qU zeARiDiCfg20nLv#t;V)XvF7>yDvsx?C@3c4fQ2llDiaesmV{u@1kG5znH(5 ze@%dJfJXo>P$h(xIaB_jhP-$p4%U5gru)``9sO+i_ro}sug z?lFzATVf+(`>$zTyL*iicPg$pULgKrJRw0fAt_-Z(KInHk(1<^)PmlDPDD>&%rJ!* z{vQ|rcz0d>`mO7f8#Xs8lckd*l80^{yP0#7d+Xw@_qR1~-@8pqIiK?Sj>?_ucV_RN zxm%N}keZnK^WN!u)%UmFPq_c{!RZIMhl&r;4`GTrRKTieaP3%#}-Hx#1&8q zT?*f0b+ON$$vjJX_PfZlsOP!y^NQl_#i_;Y7gt`4mz*hSEj?6u~#U1%Jx^ner#M=4uV4*1LA7&Zdq~f2_W$ zL8BqBQLgbW9)^#@FTW0c{iDgF=}WU+^M@Am7JTdB)`~Wbw!(I$_Dq5_;qDuuH<&l< zw=r**--W%Kdms4z=Lf`xiI46dM?X1#8ticB=NEP27(kr+8uoSh8|oW- z3^Oh`erG~@B9o*@!!qAfBbRg$IwrYpFgLrOs!1E&j`%io82;-PuWAk z{WARZZtl$7=={a`c`Ay^|DC#^uu!ykaPc+mB<=H(*V5cFYDHirjjl|uST$Jv$Z%%- zSVOLX%=_y*)+<;>tS+`Y`xoaLSB#s(+s|tT?Z63s_`g`-Uo7x17Wfwn{EG$t#RC6g zfq${UzjlFt?E?SW1^%@Q{A(BZ*Dmm{UEu$}c7X`rNZ-G(fFN`i2n+;(l`;U>`#F!f<{8(LKNXQB2Ptch{cKrNVrRSNV#wF zkq(f#vKb|NOD=ay-PUgTIYr@Z8cJ5%FYmagT&qG-6Wgh`3$gp2db7r_y{eja`_TKV z5BxZ&pndvKf==~e(vi)27DprWi;fK#fJO(5T}&{h6=p-`tmCRDPFMt5-Z@!z>XX&f zX~0I=_L$w-Gnehr4q1*BX9?$qoqjoUU1VH$yXjxBc6av(^+bE6c|Z55M|55s_g(aZ z`EL!_7ib!E_HsaQ+?59*&qEu-y2B@tD_4ahw?%11o1q+HF2*9SVdCz`=OmOQ{+aX| z{T9>tN8k0q8^g&XH%D#_-yTfqyVH61ZEDlKn)_uB@*h4*OMVoc9+=^lY4un?OZ|!L z6Mi=JDKY1LE-o)O|7JmW;RUS4Gp(YnMZD)T#eFXtN(xGEm4&`^E;p{&St(k%@M^fK zx%wII_Mag&PPGPgD)oZ(zZ&`*>+!j-|7Z$mwre@us?f@9``O+}sDAVKZQMJ=`;#9I zeBAtz@oBu{O=n5h-R|%nr(T1;9ew=%sewK@K?$>yIdoutvv;tzQejVa9yN zEhaQb!X(OMH~H1~M?X+MJ*G}f@1NN+1J3@YkbZrh`!r9Ww*GEgc)Qp|8(ErJX3^zV zbr_CoQOw-+k1RSzgX_Y(3%=#^A^vLtA7EJm?vS@;TIiW@l*k29BeCt`!s1kkG08!x zj!o~R-^;w){86?~ZfMKYR=PZ>xMka3C6nzgJ0g_ts+6j}Q=8r;ynDC0mB!^g_x4t4 z4(?+d*sf)I5TSkJP>IgR!?Q<3^!6P+sekDh+91cU)~L&P(qz?4)LaR^|G3c!D+?z} z&y)VA!mOgKV^1g8U~I43T|aZ({tpL?Bl>K@xj3g7=jiiSUBXxuC4 z_V)JiLU>*D_Vu}h@bmS*6c8AAB`EZAL@??~Tu4&rjj-F{_mPhxvaaSt7DN?Azd)77 zl*d+FtBk9RuSlp!e3?{&F2WT2k#jxs#)ITrH_^AEZ-=D#-f_Kan`(Yf_rAshg@XjR$8)1!fJmvLx)92=oEiJ7zZRPDn zgxoioZ`0o0d!O>*_QzYFZg-?~-s?*1e$rFeTh>?GPZ;R?Od4Dq5*St-IW%fT^!=Ln zEqAPGd~AX{sYbT^e)-44pY>DYGq71riv6#vb6N9vD)BdCQI>XK>G-nqiXR=h8plAd z{lUbnC$OT~S2*5WN8WMp5MSvp{;L4Vu${0f0Skd4!5|?qq36Oj!s{Z>MbC)|is8k> zBs3+aB%e$9Z`!+wDqSrTv)NKsT6SEnYzu0umAtY%Re_-Rcw4a2@$E|6mv(e27pWwu zo>$Y}DYEm&uIAkt>Y*Ced(`%Xt-=R z4cQk_c{MdMIO=q?CQ1Y~6Z0YV#kJ(POYz4O)Dn1!zO z6>-}pMLmUkXXI{G>g{_z_m4f0en5FhNPGI|YPxNPMh2Mq^>JNR+LMs%(@*#22<1%W ze#k4yPbml~Jc~W{Or=P;i1vJ}xZ_1*NoncRvimP@l*d<~DkEP-R-vjBaVdXh)x4~I zTSsmXYCMehdyQ?HY0+Crvt!+*8t#h0s!vIL+*2^gi;Ow zoZSQf=Zye?rD8y!;T-^b$@s7H1NN6MTNd(Us{=Za2ipenTn7UQz(e3U@ERBZC{S?2 zc9=fob4J1*!m42duw?;x0V4r~z%79)fl)y~@SxxY!P|ljko-{)It}@LYoK#TRoG29 zUAR|7T;#M!ib$uZq^P6lW6=pQ4Kbuxi@3P>1@UrmuEaTsmy$3^Pf5I#f>eyuw@qf7 zUO;}-Sm`MlCz1G?dg5yO~cDq^AhnDGUPR!Pg4XV;yQ#csa2op{IOF7MvE2lvw4 z(ls;Kj|ZQ;dYYOWl7Fty_?hN&#TQbgLN9>|;FVCdoflPrmfjQ{Zu@sCFEEXJrB#)U;lu(7xl(34hyYLg?5fOP2H<3J% z?~vafDcUS1B6eQvh1i<7t$2|*OTt;=Pe~cc2+1KSBdMZIQk&v7{gU>O9+0t;AwVAT zW?2(ig4`*&zAYEF%xp!;i^%6H=qhw6`fmfaVU^%YKewkqKI&2BKU5B?j6pm%Ra@Fw zvde3?!tO!!hZ^>KWcGa7`&1LLZ~s2V{tpMTv@Rbs*H+YCIrLel=5Us7;*kJ7r=u47 z`p2{kGz@nd?KD<5*>9?6cHI0d-2ZsOi7bmc%i)vjRy(cjPRHB4vi)&pyS*!fYrdXS zbqaE>cM)=RbE|R}@wnvq)?3{t1wr$5zx2spKcFmV$K{MGk|8N!Lg619E5=Xwh9KS)jM7I55G?M|qd@Zh_rw z^;M0fJxhC6G}rd=4v1=PJ*cjI^w4P?#NlhYkB`*q4IO11+hJg77-p1X++nhAre%H+ zo_+kYg_Nc3$<$MQ)^exaZHjGaXW;hf4zp*?&*eC+pZ9Pfxb3@;(|Ym zEzGtDgdK05zuWcx=|{0o5gmhF2fE{X-t`IfA0LSR{A{q}%iOTQh~lUw@$gsuZ~9}0 z$M;QaCrOZ2Cnv~+??pe*Ki#JePm4?wXI{>tC>FoOe|?#IGVeiErcV6MU%0R+zc@g< zvvgum{u7Y$0|X=OR~{+syL^rNIWi#|HoZj=|bE zKL80!WGFIn=NZeBf4%;HcMA(e`TeIgIp`@B9_p|W+ob^ge);>Jw1b|?&<~6V{VNU* zDg)ad5boj(rESm$!!J2F{)aXXjI?rsXs9miY(%uh2E7fU10$l(p8roeI{vby14K(f z>5l`VPW{u)vn#%~Pz)L%4W-vcqMTeHS_7irM8!Ctg6Pc{7<@o zKwz+y&EI7N0W5)&|G8@e zfq*ZR69eT%0U^LFM2A5&kWd{YMDP4hIm`bg#pz|6gnXU7cznJi~uWO8frP{pD}K-I)8Oe{uoW zze)%H*Zco60wB2mH~#lOBY@&3|B4BORvHk2_>_;>px&qi{IT);KVQ)S*P=JxEs+s% zk-5)>8|f+8AWNl-o@Br7bp zOZSAxmUF(MyRU9Nay`9BOx>d9t-RCVl7`-;$Q$Ak3X0p5w(r@ixo`i0qx#1T42_H} zPoA=}K5b*`eBQ;?4GOdL^A89Nx*U8ZDjF3Ndo3$kBVKc}W=W+}hs=9gFKtBf_~ zI*YwAFBpVd|GEBe=LIbSOh8CTP)KxRUNC{!jfu+&3GdPskvnlt)c5L^-AAsAZM8@* zs(CA}uIIEQe<^ZMLP6u`k3Gv9Q~PUX|Ia3NgcXDI`RLBN>H0GzNO+OY5xda?bzu=7DDmRf-&z+)w z#oumR!S~bnfQ^;?2vyYZlIKgoG>0-4eXf)0rN3-H&j-|6xRa#C<~--;Rne<$d9fa> zJ(a&02Od}jfV&1>^8twtDua*%!nx^Xb!kC-;JO{RLnYjW62XKvCIlHs0AeRfI)W-mcw zFzxEkIJ?7ije*vDnQ9v|GizL1gri~kxb^G;xuO5%#mg_AJmj>&kJf|L-|iXQeLu6O#BAT2REftuJrbWEPrrW^>+@on{G|QT zSY7btHEJV=mJs64Zadl>E$0!&X3u}?_g=r*x9`JLbYx;@d>Scg_7`U17uxvPU0Evj7DSwzcv=G))#x zEa&6+z$*?PI8?B%>FPu{Mf64_5Y~|N;mTo#IJnp%vp< z1)r1K$EX1qDw{r@+&-Fr|WW1?;jm8MaQm}N|iLtoF@+5rBEazJi4%&3M@j`U|XVIru@Oh*Up&2?f znW6#5(B*Z^nKJEALKzPoDlO3&g23fo<#6WF)k>c_6It0h9Wwp8SQQg>f^sa+Ji~XwX)5l$e-Uf7wU* zww|RU<>ay3Zg$LHykkteHEq?Cuo|v6oH|=(>e>5e1K2n!KgTO9$Q}8emz|*HLDnk! zJ(sYj`pJ6Y0wJLN!CZIM3zT`nXqauCPWDVq;!^}q)$xcfPn3bHEH*#z&f7K$*=deaX-d#PJ+YE5EH&531k8aXHb(Cmqg{>_q?;U zeQtMzXf~eM%hLm2Fu0ChYwwccQ7ahYWMoNLCKtgNR{tX@SDn*Vaci2c&IhvZitORC z$9VCKqfsD}O%CJf^Q`HHh|QRa1B0dC=M@lM*JnS@M5QfLcDF3G;IhlUfjRe?K3EDb z2@EQ<*%3!>pR8HqLZ3eo1GdGhmOTx0NUS}n+ac)}K7H>9AqQ(fEQLE0^@r@%kzB{B zW^Ek`I}?73OVHbWdVJc250oY_Da5o%K9KL4-L^&z@irjRni->P)Q7$t^r9Qh??7TX zoQL6I-rcO43&F+l7RMkdEgB*0-TktX**;HLpsi0yEQ1VM%LsVc=biTmd(lnzuycJViJ6U8xlS#Nqljweqe}BU z!bdBhF;FHsIgu?sT(ZL$+AOiK-Tt-y{N!ECTaa+# zhkB1Q)5T$-?KPE_`Ae^`wNRu5*EL=_S4GZ_cGN#-vMF^WPdrGVIdMq*kzH^mQ zuF1-0mSNyj_9Zu3V+9R=(iy3nzuC&g!gowgUWV=1QBDk<4pwUn`bFn(ItyQ!~>aMs0l6PS*N;Y&#{4( z-Is}=0Gz$f2N-UaH^>1*P&r$^Wys!@52OvSn{>Xq`?_l)wB2JnT3LZkCm>0ufI*uX zNA<&~x#a}6Nscy(;6`r07Ze%ifTpS2zBHKxesSmc}cA!IlH1U!KaBT)dZYW9_ z%GbPri7|8I$|!);i+s; zMKHUM+(zom)tDTATtn+x6~t3%WO;;~qg^|MmUemAovIiet8OO{=VxvlxrNQ9U^J^w zXhicw9jolZ*?VZ76iki{Tz{slhv2Y~LsRrBH9OsJ%(LYKSPwipkHrTN#3*4awE@lf zDL&9SQH3vuPW2G=vQRaUka$0~G>W`DKEP%@xZEQb5l2ZU6S>S16e$TpNGHA^Rv{LPUFq04%>aw=y(Hk!5=V#$qLMXk%JRilF z%FT}67&CSr<(r3czS2!Xjg*0iq07{I^5*fc11j%5yRK>=3~xA+KF-E>M>?u}rQpu> z>sC4zXb}d@5QPf{s48wVyMFm`a7$aPTiwb?FdvYK8GV4icd!=W)rZm{x8&MT_LHW~ zLknaQnY@ToAywq6?1{qm=ETW@Ufx(LS#Btysw9M3ofb4#m2+v|X;$mAj>4P{_}vbl z;-mi!Zv31B%$*;v6$0ACbClBQyptLSO_vkufTQM_&|Ej)oV6y;ITx8CbkSgx$ZTD zC9UImm>jRaWp1GUHw5c4#tVEg#U3>$bI2^+fc^UB1o$tEkJd0v8c1DRn^W|tHEoR&mpO#74OZ&~-gIo6+yB`!0Wn)>hEWP?V!Xw`&c+{XD3 zvB;J#A8+-f*70^)V>7Znf96vaJ?VEmlO4|hF+SItDBLf6;7txr3k-s`cuw}-VrF|d zoIFLOLQ<(*`V@r;WgiJg1#V)t!4VxxVBD)cKDurmAd<~6SaX4AFC%87V#mJJHjc6g z)H0SC#yll=w(`#GDguk9fy#3ww#0c-H76c5!ehsna?TIu&4zV;Y=iiVtwt9Z2EkjF zk!(Jo_v*X8PW!q1!!aDrz+%v668dsoXU@2qmc@*|yo0&PDZ7(B@{0vlS< zd+6M!$|b};!j%HTyY?DB@HDB;!}LGij02O$~@85JN0|aG@qhJr3=a4lcs=D70A&b|rWKg?jEmLIjc;sJJSQ zcd7}piqt^#3?UO~qaS&CAGQ;3>ldhfKr6Ksc6bir!f31ZP6OTKptvxdybw*AZ>~6< z59qj-e*H$`8TZ+4tvT9`yF(aWWc(syvqMm{OHHdbW4vgjb!;`Edb~;sp)mjXTK0u@ zV)pUD`W+8Ee%kdEXuexZc3k4M^TVcUXE*(*g8)>P_%^Z$g_wVxtTI@ zxmi*XiaiLyKW`b-Ikwi^{=#<7-iH}E0s_2Zzp{p%KOWOXxvYDq@#xV9kzu8$)=gBpp3pV0@_wLUev zE?xPZedHHrv#HM2G8Q>t)KvKA*Veh!$~&5Q*VmA%kglVK4Xx(`mN-cjsX)#7hCeTq z-2CXP3TgW_endxHED~X&iN3S5+y)oA5a!CQrumf9h~5oNE13IL+KY@$7TWrUh!$yQ zU+104^voFbcH@}Z>3q91JoD%69g+{M#B|qMT0%nf60qy^*>?QF^6lsOz?lBW#wR_V z)zr#`dHfab>jw>Otl}7=n<7&)Y)kB~xCd*6uC7+!4rqOtpPT)i*2@Q;lnr5hiW$se zv+#mkBAYfF$Jk$5n2T~t0(t%MArXXkslCY|HcEWJjSn1bEoRWDtkI>Hiw#%o0-td3 zm@IBCx&MrNG3udJT5noxPFo_G)KT{|0n7R=^uYFb5FVFbpEyoNGbfqDGl4@tWe!-^bhGlCRD*c> z@D$vP_v88C1Z4AXFacCClZsR4-h&VUZG~<$-lE_tW%nr=c$I-l1F#6^`a`mIX>XMgHFZm@vt?U@MM+odn0d3Au8Ox9G1W6U8g|dbrwp5yRH2b95qNY+0;>TGJ74j-l#gTao*gpG1a>zJf$Uh$iRq4nHpxZ zqnV{e5HciQs(gUitV(F% zVi5G)#|!v^)uh#y1fA}&2@xI^*#}nTEvn%VV4DkPyq}lI#kaRH8ox_QRn3N_#SHg^ zvWy_n4*!%jn#-V8wznN3lW=_#5^^40YFv7t$&n@_i_-(h0mk%fv)OYx*dA!!M=rBx zdo~tguC4#Rhh9#tDBxIOK1BaYS}&)d5mC?q+Ln(@ieICyfYsf73KR5}nE}-@Y;UxB zA(v5grizeT!Ivx3ir_HW(5X&-zf)B>9$7w7@XOrulp;>7DGN*3Hdx&@W_n zM7(+isZO=8MU@O0Q=0j!yaKzZQrntQ z?cZ@sRtsaEK_Jary`LowamXMJL+^{$59&*Z1qry;JdZE!1qjp-m!Q(=ZoSk9$F8U$ zmS2&YP1uvr+UMC76RKz|5ppXbA$DpG#PH6efI2N<(l6W<7}y==$RWyn9RH zxswGLHg8{@Ezh8VMy!~($KklfbA*B7{WjyvVAgpy1kjBO%rQki2u9dC=9fkNUbq|! zJX21d8SpWSUmhY1wK&0_U7?{Waf1r-wd;>Zw8vG zb}!~ZJ)evut`pbYX1giv7-g`j0?g@gB2(CiWpeL>%-3APd+t7?8R<&MTB)-l<~|AJhOM7Q`d3yqlE*5 z1zVXZuP{eL-ZLe(8Zp$Xqo~A(GI)%|XkA;z+z^6VPSmW<#n*W>APGd;!RlERWem~g z2)b#25PzG9T1my^sp1Iz_Gkq}c5i|W^V;|@&lrR4Af|fZ+j5792r~?>H{7*h$c+of zQJr2r$N{j>(=U~~lmOWxZKDXIj-$FbX3IiCu0Y->F)9D`@nukT1k zQLht+$ar{}KKI-0@{(qq_C9J^CW%TY`aSYuym`I3l153O@sO=wdV2}F+=te<#6mJf zzrpsdR?8TBPYZ^~m{`-L>9k?ev(3J38o(TvL7o8#9zQBw*TUj;`tXpga_(={P5p@7 zyKnt)^?r;hkHb3^>43p7*kE&3XDi4D)!p@zG^Y4dW8#!CH8+3Dbfq$1F_J4Vo(p?9w2fbn$NG} z2u%DkkyzLcZHABx6l7{8FM$olyc8xuW__>MSefQ53DU>sF}9Sop~dzo#{iibZU7j# zY4#Oa_uLaE<;$TCTuD?v(j_ULu$}yq+#AZ ziEO?#bS$QEw4*N{B=9hNz;$QT5nB%>RU{*L2GK&Ry$=KGQwitB|n=& zD(F87`_@py9hd>5P7GQu@PTmx=jyEa(FT`W$f@%O2~7nM?ji0EfV7uvB+f%Rxs$Q2 zdd87d{cGe%rAAF;6!;QUGQ~Pv@y{Cv)w)3VHPzUptGwBHt+ZpQeWKH{o=RBZkdaLM#mo_CqE=z!)ktwraWwp#wGnOtkU+O zIbaK_@lDwJ6)xtxvItJk+qU$S{Xnf8W~9gww`g+XRQd0a&+p4@%-Gs4c?slYyYA7J zhTi_Z?fu=|IyE1K(vQNX?@rxGdajE#^!hm6AAZP)T4?jjr~}KHhwK$Cc8t0W#$Wzc49X+hI4|irfh&YnNblCKKVXn#=2qAk`>O%%%{)`JXPQYHOya~pe(y2f zr<|>@|K-P)#8I3^y0vCDAFvN=;R6nF)wdQZTH2iGGh{Zg()%;^!2CFkz|vgLoOce6 zl|7-F_uR7dOuN6qzU;?-w-d|BO8Xbtrqjbf|6++!PBj zXa(&x!)WdZC%24Mw8#@svq5SrL^#E)FHC%;4TVT!P^nD=&Q}UEc#cNHyIdalk#3z2 zBe(D6&7R7fxvr(c`&ybL=E+};0U1jgOYE&NlXe? zO;3(ZvPnJev0}AoS9>m4v8Nc81^v7YhHAoW(4ZC;*^6@_Ww8nlSvB(ZCBPZ1UuzfK(K1pmN z+sh4A&v~NS`W@B`f8?%B?)X5!-%faZo4q5UC3;wUs_@#S;oYh8+scv$Ad7E$NL1Kb zKR7~EExb4L{0j+B3|XwV+Om%AS<%adHroFlzDjoQ?mRX-BL#8dIv&%Pa7bg`QF(5XTk5;dKA zSb=W4;@M(1x)43&9UpQjpt+H~K*09i{8WSwDmt@oO8I)`aDHJzP+`L7(aNq$9alVL z=|aEwRlo<{msPZ=ZP(iDe(w4O&`Gbufn~OCJ~?rZ;HkNuIN8SLrk=B>He^o{xiTNJ zMvh&jA8B{X4^n{-s2?ShiRj`CujXiUbEBKCCZKFU)ZjdFteH!-*Q!F1-7seDyjKD1 z@#))ce}6X9GY%RmjMlZeuq&S6vv34%^G6p_#u7#NjnsF*5;H?()Vn z14F~{%b%fhyR?3jQENM9>AT;h`;?dWjo4FIoZ%dcZJ8Rr&_Zx@Adh^=Xv}9I@K>AG{b9HO%rD))Uk+YjRTJ6vp-*bt>POlRMkZjsn{Fa;2{Yc| z#&ZE95I(`7OSMBvvPPI5!Abg5a#_(AuVas!y+XtST8vKrOyhYaf-Cdxk;k{0N|zZ4 z1?gw5wGS?0e=g8x(GwJQO4n5^GNwA6EnCPVlKy4#fM-})i93x z>GDLwJ3suK=7d_${rG8)^kt`TX2U`PJC-#cIMUEUv}d*~`vq%p`Q>f_1>3=3i0O{`T&Kj)!r@XaA?5N|mW$Es5M+39LX z@{gUQVVlJ}H1EfP#VUr=Et6yJc=8v>nrdU*HW?>i#j&hmvVW-|KZ8u#WJ9K-G-B z4*Pd3kRKnesozUWf~z*S%ttz4Tc#N;gQSoWJZXNE*#03p(hmRgfsnd6_D-J$ZbZj* zFK&Fc`o!rspOXnwynSX@)OPRzN$y|`a+~1ne4H5%-PAGFrN1T2gA|`vTB12Rj;72-Xr=Y+lN4ItS9k6#`q+cEoA6o2a%E3WAMV+QKJkY%tw4t%ru04rs+5 zCeaPxJsU*&3&=g-@C zPZ9^U$3a3h@95kL=gWFSEh5d+2a55?sq+dW4KR3c1hFm3rMz#kBOFKYAuKUhCT9+X zDd4$hJn!9RL2(@v)~HCpws83ufqpCHkZlj*=-ix*NhLHwy=OfmxOT)-$P`80@D{Cv z7!OUS;UKG%C~dg;d=qX^%bS7hVaGI2QVPAj6*8}iA~}>{Hib->@^Lf8t>!S|$R;QaG`XUu0!Nh!Ib9QV;R0OJ=n}xd>&Y#gPHjo>TjxwdfVZ+#2VS#%&{N%7RC@s zRnqpadyQ{h3E=2tK^#`mRC`M6?3QmUakJut3}NQb7ZYifUCnXl%1GbG*x+7_#buWFz0 z?o~&&H)Z#jz!Qc!eT=@aF6*8}1ozQ4XPurMI!uvR#&^j6$DT`j*N(}9EtHe2FRs~# z*ICpiRrJ-(Oav2;Y)kwW7Qka-kx8Q5Bo7F@7nD%A=%KafB>WS?=t5kgM+eTiuqT%t z-v~u}>9lv~AMG=p^qFAYZOeo9z>{=v1;IePX8sC^j~)-P_g=t}W9Pv5+&w)pOoSN} zkF!Xw9*xFqqPA+ zpNO5gU@5<_51grrpKC8jLQ*DYB5_o36SO;Hhi6fjeSKVf!>)fh2Em>YKY}HMu(=_n zw;Zrh4g=l|2)K6mV$kv_X4(vhMxUmuM4t8wtLzCN#nOp}kQ@nwPc8mHL;v)13q`oV zpw0(^dvHi^UJ^!y9oIMUM{j=>=l%ZUIIz}H?|wXEZasn6V*LXh8HV1Gzc=7ZvCw7E z)rA$qI>)kn+5$Bz?>!89`b8nf0eC)N7Y&q%431qz%2ACK7jNr zZ6*|wbr2twCyQq4yS9Cu`*YEkQ@4`>=V3lI|5&bM(SG&LC+e+cPxsp0aqGIU9;oqu zQ1#_eO`XxVwzj2JTU%R45NtuIB1RcShP1Vch>$t}0+Q6CB4CJs5FsSDt+fsy6cCUp zae^=yQkfzNNopOKi4Y({NTLjh5RyPb2pR76efIZz>#gVVFImCMz27}&pMCb;tWg$Q z`6&2~?)ULswkDb8ObGHJvf1crdwlb%hx>9R4;x=a&-qCag^dW>PNHm|yf98)Eh6!s zjb8pax6{Jc3cI|NU;LG$mw+yd>b)dDY=&5}6&J64{P^QLZ6|LwK0Uvts&!9L09~$P z(6;q2aLsB%%-WPy)r3dpoK9(ssm04>e4}Xssbr7OKCw6{?vfCX>BNC49lY$^jTQ>7 z0Cy2^_x#t?#(1))Yy!~De4b<`t1T_5_J@9_n(kcoPEeYYpswRQzJj}9+PtMn7D?_3 zS^x}w)wcTfkY-q>6NADhoZjjm&(U+HNE-gQj&x!f!IVFUW*wIpB9;D@ZjF)gAU!)+S^f7YF$#wyBUgnq3*l%b3h3ZAE8x`;33|@a0FmngVmPl-Z-KAx8|C zj_)iuAF_IbHneZpQ&v~Rl8{*gW6PEf&dsB>U4JXv)yEaIhzzv!T*%A9@ehTIq8$|k1g+4*#FT2W2;Q6Y-XGtVjJ~(;hmdxlM?qK zmG3!?EQl$RpHbn8DI5~GT<~{3w#Lks;RXajVUi&ea*v|1tW?i{jpSZ7*QC7Hr({YD zm--P>@JYsR4zw&=M zZ6Bm$M$QbuksMx6l8h|rxXCSKj&XqAIE+)%5F{(s;PpGzj*ocdl`SQa#iz{uf~|Rb zWyPm^y%ck8N5SSCM>8VyjWMdInT3GJNCHEul1NOR649w`2OmAwP+LjajooEC3X2G2 zJWIl~Z2aIh&22rekG^|-Ti(#e0*w=ep($N zmZv@7dk#y{ZghbS<;;)R7|ZNqJ6hAH3G6o<0)sO$5>J}B;asb4QqS-RU4h<~&ZDT} zrsV8oeeZs>X@2jIGJPe#`esG!jyf4QJHMWBQF{rDmg!RuM0X*-3Yv-*pJpR-#GPMh zMW-7rI!o=^&9!|9bWQ&b;NP9e!$*m)Oj-bf_T#Zh7*reb-sbf?7UnoHIzP*b7^Zt! z8MQWSk#hRoh?Es;!%EhD_Q;oHAKTOp%Y^b3v(*e z6U#pgHyX;3CIlnk6-9@aQURxPanrE}i`-57$be3ZEK^O0p%LHIw@dO7C_-0jiMKfE z&gj7V(_kA=6ra%PMsqY83<}GxP3gw#POkw?l#qQ|j$EE`{S=xjgxh1#<|L zaQ**qzwZg+i~jiQ3ts4yQNf?LG@LkIbIr@IBz@i@v)Iz3JmX^dXm~3%B`u|iX8;rq zS~0h}%@@JddLOdRd~O7&jh2zDp>+-2USZ9t)Ek?@%Rtj9PXHLa;mT}hJ0~5nvV$ST zck2u#e-c`s&UF?rep<63^oryScb|CFY@(eyLnei&$r0~$U{AOv z^Wu?xsi-E;21hlR zV)*rDWPel6Qy!GR^ds%-gNW*AoF$Vc1>z@gf2ib|YQ2$iJDKIglCyH30>UhfcT5X0 zVAa`=cHF7Py7Px8N(l8cx%N#Z0jIJcTpKt3V{hYp*wU^PXxBtu3T{`)50{VZv@cpp zS96_Bdf)U@`BNu(B%y`CA2&|N9Hk59y{=wxVtm)L``CeTj8_C^$L~ zqQ(GGlT`pTS;WV-4$UnV3A8^a8;a~m@f0H!UHk!G>E*NVJNxTkB#;M6W+=b09fK0WZ7cNh`tWwlax0d%x&WE*g#K z!H5N)&PHR#*t`h5@DX&_$2BE|-Y!~0a7bRc!#!Cy-qmr{w%AvTp?JsK%PYW)qoN|> z1*8SDL6cWnsityMWR<-D2-YZ2}=!Fl&l+cMrKF6^eiF%mBOgg)e ziAw2}|`2MN%) z0UFb*Mo|PkwqCuX)NnC03Hf<{j8g8Gu23pf*N0FN99keU8E=Ue*De-K^hV4P4_+7V zq3F}#(YzQh3mdqE;%ka#ClM#)3;wIb|0t*JdFwJdCRu@3aCwp~o5XF7C7+Z`ql^^o zCNDF}2WnIA>Iqp4TWm6y%6i`5^e}`Y9^az7k4j9j?{IH7j->5!$O`}_lh>DICHC?A zow!IqdYOhe-RT`d36;L|HiLo5xgH)XK1>SFd#8N>iVyYX!K@{0I)mgI|hA zQendF&s`LDWN0V>f$rEL>_Chs{a$y?IshZlh8~YtGH4r_@OB9= zhi(M6p(XtI_afYT6H1M_dBPjF}OB?)foOL!dV5jJtiME`4 zmF=-UxYjo4)><78Vjc?JC=*^(HqDREhU`JRwiGL{Qtn}w0e+H@Ar^rnk` zboiP1D~+flP|Ix;cg$Z%!T$gd+W@KwAG)ABJecA=OmP2nzjiFLl+)FfWvrJ-0uc`N z6XhGPp08s2=>F3n;Ag*3laksbQKfQxCFxW!2{*U<7+0j-?McL_S!huycc%32m}+t)!&7BSJ;zPqn>Fl^aM zlSxA8M=pm{KwF7Zo0Ud%5#1ZrAxAl`kK(tLjq@R8S&1lKQ=6dd5o@sJz3b=26uxJ5 z_~egvP6SAkuAla|YO$BSnA>0DthtLc1B&p*IkMusC(+kD){w|!Xofw3GfXBNc;0}a@V%ZJ{nN{gfKhXf|w;zB4V3G^QWS#C&SqlHhCS2Omli8TMc*cE$sA?c2 zFI|kI&9_ftQ1S#%J4OEDP*NmEszFvJd&Z>Fuo89Wj3m{x?|y~@TcMJ%Q(E7 z?=kUl-Fwehc}c$R#q73_E(v$ryW5QLU{qg(iHj#^NUxmRT48(4uvpO~8?T&lPFJgY z^AB>b1Q5I~l-nI+_s)~!deun3tlD^PGw09ehHCVjOH*r`?H|VuE~{gHKAW3Lh>GCy zwv?AWf zDmwjE$>7m+mPJqy=${gE`Ywr}V5pvSf3%E)-v~-21@Bi*eQ@~_veei6lo@ffD+k{ukHcl& zjRXSzC{wI((oiuMe~NG0%w>w^cGgt_LGh>o*sU}c-3iylNn|VK97I5*aBxB_e*}Et zGl=H*kAC%*=bsL=B^MaO(4J_fNaiJPaS|kqSQZc-9DLo5fJgu}n{{nReUBv)bOf3X z*=>%I!0p1}y+&v~RNNCE7TH{gr~9%2`t^lYMoco$$}YN8uhs22`5z*__9*xC8Jrnt zwDh@WHVT<_gM_v^$~_A?zU;GKOlPuGh`r2$M4NuHawcEswvILO%qc*sIkmVXiCBdD zme6WVn?x|xx8LmUQnrOJtu5FG6|;3Jn&SKa-~ZXUc7$HOte5Zl)k_bG#>HRu#&uEe zw&7?+V@2~6QAfezAewW^Sj#=Q=O0p4n%Fg8?(e8DBWXy?3-^Ve5ZrT|JgJ0#o$=%L zh}Z?@Y};4$9mXWcuFVaK>RIVHXd&*(?`pU_C|O7=a(M=dJv5LEe;WHv!@6>DQ(D5E z>cA8S;UVd%ZY0?S2q5f%T;dw|DJlQ8mZdkidHDW>W4QcDoFpB;8wc ziV2yuV<|9oZia_0f@SjyE3XUP(w`+wzn_cJrcux3>S56$O#bulVeq-X)~zl2bXkWk z8je9}{Sl~ufMIs&m)_v93)eWg^jL3q!Kby3-UP#uV6N`gJ4@=a1@`Y2(JEArxkoHe z-^&hw1bXFapTj!Qup&TkRM+ZslG=0 z7r_<()8j+Bf6T~FZgzcdcTP8&r|~!hqd(v6BO*3jiJ8(wr31aDoo9{s^M~w)=H^wS zdp(8@{JX!NGE4M3ex0x>t4y)p&>L5Cl%Wy_xF@hPXg#r{=^>6=JcN2KUvtN~g>Mde z>Ua7dyTvK>v+b27eVLiBaC0K?H+~3r5IpOfJKOe;!pKH z4?MC0(Sv{@%p7W9Y|HhK(^`Z;ljHQ16O^-x9(WhCrs_Qs5c9>_=mcP5OiE`J$e ziXRdLq3J^ZK1L^!WTbfr^m$~kAImk;c(BIr9P>*w1H2IxA&0a zn*H8bpG%w^iRn)C2j&9?7yz^0>DtmEwjn?bA;Cxl_Z5zR@Mc$2B%$Cb$x?s2 z`Z!ol6n_H7OFo>TsEe=t^eAT9%z=9ay@2QmOX~vLg5P)#(+>Z71bgWDmq^L}WMIil zzj@|0Dhdy*GFG+lxx|nPvb840fK>w7pl`41PY+WL%eQ_j^D{inh0(!?e(ER_3h8?{ z1}gZ{#Nf|7gQ9$C{s@L2VsO1x8hEDQcuoN?#p^>KKHz}|qj-a07=LxB3+SRnq2NkVCrref>UI)|ll91kouw*xRR z_jbvKf#1gu(7&h?pccbkAQxe1!;(0o3(qq{><19;gLfu^I+;THt6k#RY~CqSvmG_) zj}E;}j!`8urc~1p18yT0oiEZWk)ID|;oAGe{wr8t1{M5vWcPT!5>)~XKtidv*+!)1 z*By?Xlp!lEtEh~`(>4!Brm~7YA*|`jjJ?|a8ZNvg9iKyeeGds|_PIw058EzcDqiC7mOftz^3EIJ~N)X)*hqRk|kQxG1O zOqoM4M#U)Ns6&V(PsU&#M-(-0k=90iSJ!1=*U(CdLj;}P0Ms`YAZx=tHoa%<>L-oj zea`}=6^(EYF`=fWd5uI26e^p-PUExqei}ZE%)S1+4aw=MFhyn+|W2>Ds|{?Yp$yR-^4 zcK7^a8`{wCzo@xx=FA)&)9*fni%{&jlD6$(?e<%Qu`uw!Aq9|MEa}?bmynQ79(o0B zFI(tMo9{`G)B$QxsoxF1k;pKfL^z|zcl9aHm83+sZ=0vS{***(NV|VYZj8dz1t*Gp zLR~3Z8J^@UE0QV6jnhv&^y%h)nFa04_dOWFiR{jJGdR$5`9s~p6~#xf`^nyByNp5i zv&ugHzDh0+j*@i8M@;Eivf6Y&!|`30ciK7H5$R@MUn5$?PapVK6GfDD+kXC1`I}`a zeX$HMboz-8w=gAo$zQ(gLWeBPb7}C(#S3j%*@4 zJZgTn+fm-uq7eIHl>OBl=hcJUFhSJyL>}9N)d0m;{gU=MYbd|dW@3M`GGFwYkj{(4i^;?=nV=3fODBWxW~Eh-Rq>K$iGdv@h4p8! zZQ!!}!46g#Vq??A1~2}rs~plhauIuWJ>&g`%iEtUU%!;KUqOYfz=N#L9NDUt@KIV^ zwPb-I#witBK$GxT9R>lEVRXehE?lS_9GJda&78tLNh_BFSj3vt=kJ ziC&0x+onyUSk~t-$EOaX{c0P?DMC%XikY~>Fnm^{lnL+!405jEis^6`E86^OR4D)y2?b>Z-_&iUwJwAwe@) z-LWUQo;w~NiK7)>N3u=E;BH-Je7diuDQ7LWD06)fdgaQz`cs3j)%bN&x{hZqf-(=nXx|CF}MywcX-07?LO$ zrkBN!r@#3wdt&IFtlMj=!{{T#upJN|&gc|;7sG5^XW7W!VP1X#tr*UGUf zK+94aJVCJ>(%)XeNNL^1K3(!A?_!M-n|lO*Wc*l8V8e@7eqkE?IcNNjBH<-3`Luju zs9^!yW$+Z^o+NNpi^` zO1EA9ZZW4Q(a?kczzb7<`?KZG?M^qetZ5F+=&d#@GmYQmsJ;k5DvysfUoqGQ2tbw* zHd)Wus@Y+p@Mpi%#tT}-Me-Qqdcce0a0+ST()VB2mnNEUL%`9+oH46L4tmCA?~yPXrv#>tVMc*nvm zvKAZ?K{30)c$1;7D##)lhoQ$yFFh(|Oyu|8crG$RY33H6NBqHkQ^3SOj=k(1!c|EU zilV${N}}LHEiHvy&t^DO%0%7^4J1w3vrD`qJDl%e<}+{Bvq=}n!85DG*|+~LW9k^? z2R96(TV!=?&gMnreL2(v0AC?fqaU~fd_AS1XL4IvQMA_l7!y-!thBQSfkwhgt}>p2 zqwQm;kWlrp1tV-$a=@Bko14pCIYmS9d5X_Vo@}KM-X-lEo=67o7+qyQtXG+231k0j z(y@)*ayliA#tTEjX*&p#Xa-TZXwQ#=!#~=ddTvADqpLS=bl+J11XT#2BLEVGTuNU) z;@+oPOVjJz6|@*gC{E(Q$sD<)?lv6S5U zKnB7CqQ$&57Y*Of@-ORyJaqqBg*_?@T<7+zR1%P z&-$wg)Ah;ONJ5&U1-(J}hlyDNiN>0Aqfc_vKyjS?Y@0dg^yr&AZR$BHUkQddNKmB` z$@(g;$_ZRvs#yYJUTyL6@%*Mgw|6C(SKrG&nS-PSZs$*LdiAAnmO+mk?o+XFPO?d2t?rv$ z_@;i-JkQL3rlj{O2QtFUyDhj`*6)o#G7uqpqWN;f;ydt~MeTZ)zX)L)Uuf(f!Ge)< zDM3dMHU17P9@Oa4s3R}Q*|RI>z5j{t{AVuo=(Xq2=@-v%Ync|u>GBa#a5c=HX>u&YfO(6xP+C<4b2%RN}~PEm<5sgtU7 z9(pa=yuf?9R_EM$V?}gV)UA+UV9R_0AfrTGm~O{fLIVp7@^y4ihb(cc zVDa<+T+9@Hhkn}W$j6^PAUe1Fd#6LZDc>#tO1UI^XiBZ4#m_t#$}EaXXq?sybs7%O z@44@!fvNp^&&9LS?@q(rCpYH<|LEH#83_7NidWS;j_b<*%|UupA!%xD8b^-D@W)N# zB{TPC`E%$Fn~H$1f8rFUswfxd0Uq6P_DE5xrcwh2f-lQXB?jy={(>=|O}wfr>v}vc z%idh#bi5&id$1gM zC1Wrw7#`>rUuKj)VZn`lhj51`5M0?Y;_td5y!t+pj%*vJH*&*3-~6C+R|enH_!npi zTBpb@j6vl+4aYdzPAFOU;kIu@%YfU^@(Ow zx42?r!{xiNSk0t_xnHkT+*uu$?9E*@oG}RIE@kMkXx8$aa*P4)FihC(6?w^P#7bru zftuOX#W3Y<#w;SZI@zWTKa@>u)%SXv;JE(uI0Q@{PROQRf7!kIAPc{{*O!Dms$5Gp zSU0Mord>YvX6uwfFU#&JJ*wYygB!(+fr;BkZVjD|{Sxwt@tGe-U*VsdZ^xvN`BBbr zI@%@Hn*eHTP=|YFX26eM{M&Li+h~o1r|xnDPaKogU+IKS#}h?F*SK0%P_C-g~{>9o#HR3 z&xrF63Ig9q-enkmG!eAMlA4^AEA(A-%vGmN^+cu)UU!Kdj%%t%__n3_@Qvm+j&~Ai z+@VYdd;dxr@QQ6NM}e~*QIga+$}z?p^}10)Zd0nN194SO4IuU}=G|@cR4Y$QclNNInj&pQ+(=>hPC?{V= znA!kdXIUiA@D2+OJ@YO&|Xf91K+L7csbm1FahbwN$d(fd51}PS307>lZg{sQuFqwdO7!!qlOj-Fwi9pv)+gCk5NhV8@d&pf6v&cz{r)oxUN10-HR*+kO5cP-HsPbf_Q zM-{EmPkpy;L&Y(& zdhvu=t)!V^XcS(H=Kon!pG$(8npNXSagGsml|zp}&fCcsNv!_uczMF|A+TD0w*Wwi zxJ!QC7!mKmKAX`}c%bt@Lkc{~SN?+5K2ciUEbUDZU)xcccHcUq&7m<@KQ*ZX;-PK* zv=JkP_w#vCASbE(HVEzu&h>Gu8}+AQYugate*m&Nf_z{q zOCS2{KPKHas1_H*-be6?Ch)C_!$uX8u6G0uM{1KkxM$GbmnxD$MuyG|U0< zx@lYkr;Ri4GdP;`*Pa2N0PDS;!$1o~wx0=iowVdBkaUH>wBgZVGnmhfsJ8PyHB;q| zY31b(xboDMP6jH$q$Z!o;NCMNx2+I{zkFt6 z`Xd)Hs3IyIwL9F`n?|JPI9-i?$w{Y(x zKrRY!damnpS521IiCto#GNu}cO{zy-p}E^ySszAi`1bLBpi4S&Kl@RK4f(U=;~|Ti zD;Lbnje4o3K_&mt0#P!mcvze%bX+d97!W>;5@J zV}RJxiSP7Ib6Pyve{%X{Ts-7$7$i;?)S0Inr%zh-=rEcHfHyQPy(e(WwaYhhhwjzL z+E)3m9Ihkmpl9zwYQDXDJsb$43a!v{D&$WH%R3m6AfsbY#AZJFh+bBRzGA%IY-nB( z`aY!`h~Dz1wf$5c8U=@<0VoXOkBf$i8t)xxX0axRx+0y@ec2}pCLa_@78zKxSnJ}` zkx*B-J48CRKTD<6eGTa;$FPLbQF3xrdLJ5!H-m%)%`W)5#L1XCM zgbZX=i}L;LWj1#$xxL zh8!}W8jc6?@8ffqa_XfU8mCd?V@#4!(?31;#v~O~JorVeN^KJ1yn*Ye>i}Kov!t^> zFnaEz$3<%69>t&TBuEO?bcbQB`{;`11ZW5R)x&kq7=M332=Yqf&zC2_ex#OT$CV&J3;wX9 zov#=%KK4cSD}Mi4=(B!Y_QAz_&m-QCldkWxM7>r8Vqc&p{zR*SHVA(DGoBNB&Sw!t zZ!Y;5>Ss`TK&%|}CZ?tCTxZ3J)TrzK{QMB7I^O-!2#1kA?9DMu)p5GFvO_9tek_<= zTOrg2_zDA0H4*Dax=ioEZ0J>$tRV+%D2LH)=;axoZj{}~NSnj#ZFu4A*2VZtF55r5 zx~%@$0wd-yhx4b?@|82S>w=muRmAcE>mOvcv!o3VXCeFk9sPp(x}kfA=f=yX%C+Bi zqZ`pPo{_Tm-!3VwB}qr@`CnjZ4O|Rz$x|$(5M9@! zjStdut}rrC$%O6Snrb6XZ2zR#K5tBm%{z2@H~hHtQTyRh5w$9MTQn;Ebw)nFD=^A; z6`23skKV7oAPXaVN0P8+&nc2>VndG04;ygo^9nf3)IIJ=LK>;N^_sgQS^rFwBhC`&5bx+ zDhnh^0n`p6_7`ArySW)cgk=^{vwnK^KoU7M$oOK+{+iUYro5K-AWzk52{(=;L zsq(W)igb5hhSL;uS(8v6!bbZk+#@KR8j@bb<`s>08YxH68YbW|(dBrJw^Rx=s%Rz7 z{??7*5Mr{1N<(UhaViUg1Y|G2;krVbsIPgkYvM1S)Vl4wirb9 znMTh(Fufc@qnxH{RF&Lwh-tQCMR)D4Z4c??_7o+20-~cq4$y{q5iSa=(nn}?hETa1 zZ!O|zbfRobfDeI8?#(Wn{%!9+2`C<4s4`8#jbq~72bo+7wlYQ2&Hop~(?Q*poZk2I zwUfUJFao7;)KucDIKyr>=tRly-Eu5DMI0B&MooJ9S~}Rf5XCs0^88oTf_+E+;j_HZ z%Iv-RGE?-%T+P|p&A0uAM$SmGR_Jo|CY^}Bv~G`Z5|b(uAXZ}= zSvnB}6zD!J(@!T>p3{kPu$EW0uD_QyviblyffDK-1xn3%MnXa=iw=sBa4%&`@sFPNl>ouvPaWjGsASHG{?x12GbqPNy%d zb%|Jh0HoBLeke;=WwSz?_IAnVNf^JEAV16(&lTeahlQT$eiR-5ZYGx#t7Vl_eZ;L? z2@wJ_L8PNa-b_rz4|^I?rwy7H&%@GL;@}ddcF=U|P4TOgRayC?D22e$R3Ze?VrQI{ z%8kCK&hE3IbMy~l=FmkG$0)0Hmf;k;r4yOdiBo#tHV3k2io8Bf6COJ}3`H*Nv2PxN zGr+usY%XUQ8VqDGdgujBDN$I7>5G&mmV}pMDJtEPdFWB=<;v_p2kV8)g$vecR&agc zNs;K~^=AWY5^EA##6!;Kx_-K;k($wgoXy}21nR|G&bD5|I^t)tzCY`beL&DRC*X!= zlF;5}k#0n;d+dN>NMTR-rjHXgGJk*ABwJ4}i`Ts0+s0S7-$J^B_Dg39P zAuH$U0$U&s{Y-SjBH07}muau?^j?z5mDEuM-|MS25Y68c(#32|pA`u|?U7fZy z51D0&7!ki3NhuGep`Nx0D+$<=QVl@T41xPTjP?jutGUzOCaI!ylb|T-9WT#I`N?r@>6)&vTS4H7( zWUIuqNt`i8#_~l6V+QtoX8qGGj;kkVaAtxLxnTR-v*|C>@?2CSoem?m_JHVPikKi_ zNOJJZ+2Ihr?Cp|f=(XvE)u(BWrWZ2MdA4TE$)B__MO*R_nx0i<^GqWAeEE*lwn^0? zBaUlvZ5NDL*_@J3$Wkg=0lnf5$5tf)*Kl*eDbz4zCX7ej4tfoz%6=R=IiTJYc=h$4 zT07^vI*e&w)%C3zRQ@Bu2dRP+1KZ9=R3RwK%hh_^=hBNs5!`{FS=s;g;PEQ_(C)G9 z6JQtWTp)Gl5wpJ2 z`bNAy6~4wDgmfH9ob(6s0=@uKk$P0Ag})oq>@t*gk5p^HS}wo=j089ZeWN+-(0_Xw z$3#@uq@|{t)(UcMa=QJ9rQrYPEBHoD=ts^245t`HUbs(%_H~YG?ONLy^~0|sb4))f zWY>qNAbE<Y~f1b*O#u{%Y?tNE?WT? zDzbDhkC6#h(8&ZASL9wg2!i;h75*$IKHiyT4iV_;GQ&vV$!&{Yq|o>9BQxrf4Xox|$$_664=_^CMP4ZC*51oP z)ZvvkpC}aVw!dByUZRd%D7qgCN2U`}2%KO+sOuE&5^Z^g{TTnVIIR7gv!x*_C~b2^ z`HjMAxEx;*-nL$=QCH-^-;k~;iaeU1D`ueR@urK#*&fYnSc7kTJ!ShubqtPPve1-$ z^?N$6Ze*d~tP$~={kySFB~n4ifE&E$wdPJ!>!XHdb~f5mkS&e9cU@67_DPn5$vh`u zU8bw5*o!$1RB;NgT%t0?W+9GROYX#;OFl)yn6!q^NwZ?Pc$^r8$e(JmmT0>xGN7wTKADQ+%6HGn(J`X*k>P~&{e>K zd=DsbfiSC|VpxU#erGUlsJGL^QPr{_=N+F1A4!my3}+YG{WiZ8PeqjYKJZ+-=SKOn zhM?rh{pUd1D=6Bx9?>dEiPU`=hJ_RY0cd!zQihVZ&|FeVilN}q+IX@7&S=fq{o>SR zsLw)^ zkH!|DY2(L#z;-~9N~NSQQFm6mof_z=aVYJ`O$Hpu19$*@)U27EisFq#O)50#+#(kw z1g4xxWxVc~$x2=_6MeDI@K~N!40QC{4?j~}paDnPg%{8FWQ#SG3|I}=J6`Y5(ROML zs;@0<5yh6q>>k>DxZq(+>r>;LoLFSQJp!)wq&>Vw&f6su;D#2Bp&_&E+MSqJ9B$k| zskLf@_n#Q*kXkoGT%Tj$X5_Dc1q1pA)6u-zD050mr37`sqUX+-OqX)J4W(=u-q%w_ zZqmqlP!~FW6#fvl>fDGJ$gMgYcLjb0klqG;_1ISs2lCuZic_(9og&?c;v4#hjTcDL zpkd|k6#c?!?8VPakx*lR^Q{~CB>zvle-CiTN5c2f9MOlR>}vUZN@!%WK2$G-eath@ z^kny-G$8SHcXpWSPoqTCQgrg*+n`Ed(|;akZZz3k*H4AqI4%L|M*&5?dMgN(;x0UXs(Ke;egN4=!=Yww5?x}kAV6#TV)o@iDV@zmK(-5L1 z1f>}16-`qNy>^^1-`wPy5-6z8d1BVdj0+g zCApl1lQV0krp_d@*37DNBNM)VyW}{?B{*b2D~zH;4w@m*vrHG>bf03>Xuz+1AnIK< ztm)cAIBtZs{y7M1DtnOMNWtY8^Lu547Cuh}4sncE^??^ocBtN0^(@%c-Y<67QYz?# z*!bF&t>mAo(ODjt!@7)o0o4BD z{WMey5BJI&Sg7)Dly!^+9x`umjw`NRnhw{ z*M?qV#B_@Xr4l%D$Pg!)_<5SWZy_iB0=(ZXd;WMVQ5T*@jRB3M*{#<1$dJ>cYw)wD z9%~E#ofab}G%H^!(^I}3OyJt`$SKe&T{E{%jE_o`HPdDdGBQG`@L=UOvkF5Z?L3W2 z#ZcYB1sze?0|YdBF^O|$gMHw@j_r+Ac>EbY6+yJ0dSV*0Bg>B-d!*a0`sVt&yI|{V z5JG3fHne#`b4qVK3Lhx`g*q}VX&f|i)Pvk`=4P=d(jrWNd#{XzTrSLE_`ed{H3Y`b zF8quB7$*xi{vbO(w~squpm+`Rh+JinZs%fg}yJ*rJ z8XL|QocNSBK$&^JU#-NaG~cS)1F<39CmL4j{2O8V$jDjokeQm=#WIk?fonkrr-KWW zc#BzNoFG2764tQF^>U|1@A?{MlWcBE(Eq^74ew}rE@_-ez^KPHG^kB~`(s1>6E`Q_ zc3B$RNDZ?zAW->|GmYMVHJsZ2$rF%m`dEO@WsC&H119)`iA1jEZX|g`27cp&jf)$N zb7q)#` zd$vfy5dBhiq45HSC^PAu7Myg7J4+Sv?=U|3TG|~=?@X~)B#2@2xEIV~we%r?NmIBr zyhzO`#wqD{{*xE5<+hhqPQoSX&d*5RDI$%IJHu*j#$9AkG+ksrTuwE`dgq++%JSa9 zv*Q9E(>$Dfw6|3w?b1lfm*uOOlCy7@ytWuDT_YLw;Zgp{pI|(;dOpX*dZ)Ct==D|A zW*IRucEn6K9q<3-NJKap@XnWH$hwl)5^Y)?A;!r^;LsoFRbXjrH~7rGKztP2EJb0V z&C^4n7`3djP!#w^yucpYZc!s)e3~FKtyL_(b#-S1v%os~!WG1ChnJ#9z3EM;s70>~ zvx_3g=0tVu6cRppLvKGeQ$*zNZ_Tp$)>?7i^~IMt3ZSPty4C=%cWBsl6iF|R{3R`d8P{Yjx zA%DJ31E;vl`wfF@sLoW8q1Gd#LyNy4FbtldV zT@R)C2K)QLaeLCFYKfZ=lgEyeto`vcg`F`nq={lm#U_K3Ae#8qgFJD-msvIec;c2< z>3iJJ9IbdUQDEgxcSEz`%>=DjTmJ?f6Al-XHToEn>bPWUwnxnRQ^ry{kj{a8LjL8g zAzTSJOcnzvnboErPj{ylqL$rlEOj84w!yBJM6i5O3NQz+fF8<%7REQcUGjfey3(+w zuC8lat+fuc&I6FQ1*H}g6%mmkuUZA9fPyjwNG&qPkTMS;Nn2+T5D<_tRfforM1c?> zkXr>o#s~qf5J;3MLI{C`5Hj{V_WhoRKMWzc_nf=W-fOS5_9q6&=CA{|a?PH7LE1`` z@HAQCUhKc+k#)OoKw0Sn?q3hTx+e9O$u&wv#TBEC0lq3ENI32s|Nrp^7aNA`gI{S_ zt#oB4U>e%ycX{7zB1lx~g|K;K3s6>lr;dM2Wz>`Kx+GGumR;9U2UU?C;`Jm%#Nvf0 z!Ep?uK!E!o(jk0XdG?Zp^Tl0=?$vHhPoC$*#GZ0*|B`fJrfb{qmv;~e0=xhu6{@O( z5xz*n^P@zNREdwzI?I}z8Rx&K;&*suD!`0aA~ z$3*P(tHktF00RIVO2wfo`%J%kjE?Xw4xO_0@wGr`W70J`(z7oQzoX@^QwfO2-M`VQR#mDj z7!sa-dsWc6iRXzpQ~-XR>m7+93l}IA>=I4G&rpb4la?b&_gCzQs9!i#x6?tslIKF>RRAPDMn+>}Vc0 zt#PK791mQfHDDNn;*a*;P0@}}YaeN7N!_D@L$`+v5Ir%@^kXgsx`fqZLiEVN4qA@w*(($lElv%IbU0+&fU2bMJ=?1wA zNPuA(GFO;6zqwI3>qoIrjob#`eRP;JA76N-HGWq0mo47&Ue5Vo@2j#b;u{C=Pf08r zt+kTqTw=JNs;^00>Af5`Hj8WX5Qt>RB9-J{{@K)Famqc9E+^2!NJI|DfLDzt;Z-VG z|G&Qte&pWjF(6-mIe# z5gqO|+T{PK#G@Vdb284+MUcRn(u*gE?Lym_nP$>eFJ0@ z=;P5@oG0%i3%z1brDWTT+o>twz3jBO$h@Rq2B!+t_8fPJOASeL7&NNS^cM5qDfzg9 zP5#lv4SlYd3&kDU3H5AjJWMzh22Enu46&ru6QS2LzP~qEnuXx+OIu$U++hF$GXe7> zsbyF~Krwji6ci6n9jfd9gM2N=3tkcMj=qe%YSJm|R5$87-vd@xy7$p5fxeel2A_@I zW;d}gT2gDxlO=QVr_heH_c(ERoUn+EH)g#z6goRt4!2 zs<|=a%hR>~I|hL1tUws;V$AYUNmKv=6Y#>C^mBL-2U2y{GTjaVJH_b^6UonL*%-h$ zqh|vMNed-dmYuI8p1>v%B`9Xe;OrrB;J)BnOh`)9;?7%6d=$R zuV_?X=k%kw5|b`Ox`jqQSz#%8RbDB%f=7W4E*tR3jo{3;kU{za_>l7lTHz1o66%jJYNZdOXkT8p?hu@jGjvMC71}5cvQ* zW%J$3zp3qP>6NQ>aXc?J>+l`3S)UVG0&iXm50j@ekYLTCm`y)rECed@-3pL%YD0lc zz%9(kU;ggy112<1r=#=iyGY%@pZ#!WnGuzBzNWHsi|aD_n45BXM*R}`L2^kBoOT7; z=lCDVpZ?6+AMe7v-~a1Y>~HAs&hI9nqe+SXtN|>WBMg|~l4LKsvMQkQ1Re$3oJ9LX zVpbSccXXWzBPqeeF{~d}{FE{sK>D9!2ZWrY7aJ;3%%Y3<|d@v)hdOI_9cV{}cAGs08&fv&J7w zLJ2n4>DY>jsIQ7j;=a}NDoOwqK)>*T?xxD~7-UK~4)If;CF3;aGKXJby(gi*!>n?r z=n%{0CQ>UPT)FAjjD#Nv^WF7M<3AyGAN8KOonW~^QocAuAEnj;YnBtwO|x=ECwmU< zg}J)z(HmQkJo4akq}6qz0{$Xyo-s^c_&8}=2Yn2H(Zt!L79PPGS2ZZ5Rvqu%o+51! zm}rlKVpw)xUZ1L%oyF@;B~kT`6cY|4&eP>6yvd0quNBhD&1XMFj$&_sU#sqBhO`%%!MAca4)Fe5t2C3Uz^yqY247Q z!JZ#h)2j=D4flRGO zIQ00SUs}@pKxG#2MJSzg51(`8P`p%s9ZS3^E26ATLQv$A8G;%=E(ext#Q&r!$<1o`R*+)jjReTngi& zL=mt8li2^PxwmgwLu!ADPX>$8z7KL6+HtOT%IKPv#kt+;XSrM3NmvnuC`mhX*HYH!;f(+A zm{uY=0Xm(M+VZ~vWIgF^o}RvOMP;4ql+8^|HEI_?8?%;uz& zUC1^=JV$k7(6KhWswBGriRbt{6YS*XN^MM2{XP4L6f6VISFsBjQ}HLV9M*MXF)0|+ zk0Zu1D_+34nb+L8%~5J(5R+t86+oxtz0E{zH_nP)h!|g$a5bvI2QRb@^(&ar6!o+d zGJ!m|V3gGirGsOPVJPTUsk{GQgpl44cA(pgWD0x=nIN0_%x|XjXjfoHeZAm{D=GIn zfCK)k-`8k#Y$13&y@d>b%>VC^=^Y$0R`R+-I@iy*Nx{uI)$`Gs8t9HHyH!$KUz@f& z`4RIbQPzD|Sp(dj4u`NC$T}j8B<9S=eAe-E`+0%F!JneYlT0J70(OUJ^X$N=J1>T% zgv`w$&dv{|nYjJu{hNDUa6tYDz+k(xrF2|L^;>PlU+T-IRwJdi+*B3oCBKT*0KFW( zK?X%{JeWuUFxaS5+4ozMjqXe{_0#~J&mqgZ(5-;~5PE9kL$NHcEtG#DL@0&!BtJz) zMy{8MIxcQPiw`iMbazJ9yrN#xv@iV_Ku^t}=|?RD(3AChyFPbSc5%q|3iWjCZxxXh zy?U8!FO@CPFH%n_6zGTx?3c33t$#88>7c-{tA+6Amwbj++jAILTYFJ&zdW1@Nj8EMt-ntC!$Fp>$7KH%GJG7 z300!6NG}Nxy=_axhrnQy9%X@kA{kJS>Hh!uWz50UvAX(#l4skY<#lp^0kV#i@z+U2VPq!^AaO+Cw0HL z1$~H)){k7sjU8wcZ92N7Pm*@`$eJfth0f~&iF3E&sQUV22U-XcR)o412RWGzEJu^HI-f4`A_%3bS z>N{yqj(cLq(b!@=WxRb+v&w4Jq_f7aCI zpZxg&>kFi+fiz9dHCK(0K%!T&OcT*((5qV|BGTN%j6W;~Yp|BSpFBSH1|_NHqx00A zNV@X}1Qe~7GW(#|gj%y3glkjGDU^_5R zEX}m{wb$imf^G@(oD>cjR+(n+ik+npG8W=>dJT09lz54Q(aXvG`cQKPG9j66l~?}H zn)6_;D%TFvN=aeRbn&?IbT5Ir6Ia&z|H13N`R3lw7!5hR?)%Z(I@Hi%CnJtVinO9! z5@ooF?4eZ)-MSkiO5G=TCrqlP#Oxb-k$zaeV|q-P@My_O!|Y3nuZl%HA7Y7{Agp58 ziLI`B*Yl_1r+l=4uauY?2c>9Uo$SurZob zoaR!O-$&H81nJ|?a(Y4(iF-5-5~W>~<1AdWgT)va6%eZDSvt?LtS^PF%!zSY=IA*_ z>dJBOTq5&K7BsYC2a2+j_ROnP?w=IiG9r7Zcu&yXn8+b?mv@ zZB`pCOi4Hr-Kh>SXo|VqL!_SN>5xK9(#Ls~-TmqNUJ4-L7tYY}-9Zqw7m3i=7W_S| zA`Fb>y>B2HR|7PtD$}t{tH@3ti{*F}%B!XGL%~;y))r}KIy`oUY2X{NwH6rk2L)ji zZnS*BX0hGohq?aZ$JOgP`J~MFbBjSGGPTs)ofsAk@AXy z4Mp2BFJ~f;oTo%Szy&@ok!r?Xf3ga+RlmbRVxbafv+3tr(Ua&8TAy}*9{=pVeP;{` zdfg6eJDAlYy(77K2C@9Wkkp^E!FQUx!;V%z-HyoJLr`BGs_cHYF$-w1wy^qv?(QCH;jrN~4G9bCRM3rNIVAApz z79^`|SQ!!3&{fT1Ho;tfFH}5{Dtd3^ns6;U_?X#4+voLPsh4`Edi$*Vl9o@}$ zj1?9aolvX6#24B?Q|E5aw#d$UuPmLfesr;QhwU=Q@0Y#(5|sjujy^CtKQjKa-wsdZ zrJoYNKPlrRD-B4tv9$Y-vd@*wDcDUqgCrZB$$sQmXN5_~tdvwPmNJA=-0@t3gr`#e6=Y1oRE^&d)6*z6(BY!}rNquN{lb+n>^VWHI@V z6YD?fm4#g>Dv0u>4`GHu)c0NP99(GvJFR|n1*Utg&Ik7h+Il$<1u3M!x$4}?-^-m*pL@-(N}PbUx*@b{Nrb;vap%9huA4mb_MbI%3|j?j$r7~la?RjF zr}RXRn+e#uzk_C5@=4;+<)%2Xu1$`&&*Lb(FC2!OA6*f=hP!(GF&L?Qg!2J;hkt0P zS36Vip~ZgkBG$-}1zV=11=bAIVXUJMKZ*ar;_-iEGwMThTRzd6voG)Ju`XBksj(I~ zCYR)L;=+pH^7B>S2Kq|U*9w9{?!p^Tg%1_yO!(rC?da0h586k(VFYpXD^xE?lsrnQ5&J5;zR)670V0mv-(l^s16N-L|}JsHAf}OhKf^oDJ5fA~b2?l~Pe@ET)px96yJh?FYa%FZ~<0J+hrX zhctHAmu75IUB{FIg6<8IYUEG7jLtovCVW{lNex8u`M2cttXZxUAL}CUNbt?_PQfuW za!ka+!oqC*@>u(~y*7@0y~e%9G+FP=`pnbmCwzcM?cwOY=(NTiTmifUTFJs6QCh_i zM&~<%8P9K*#{TgnHNaXZa}lc@Yy1L8JfCy~Js{FMN+O{jTGm)t!(ZPm_xwal|uxlq3x&r>b`(0RPZ$t+K*=}CSen>Ji5 zOmB-6iJe%<%P5v4h#{#Gk*q3i<>X&qkd&v3ahR}=mmR%>xQOLm&PiKxIYH09;pOXH zQT6F~=*p@DEa1z7o#6#?!L#F71(YJyCai$;H>obE$_h6(B|ALaU&?1EDbeuKf8N=F zNoKD2(I3d1$j8~53+2SOgSCgyz_U`E$Bp~MY>Fs_Gjay0Se=K zPY1!un`Qk-FW{e}()6{yg4uev@u|r6(Jho`q0AXGQNW(&G)}wWzJv!ndfiDnKtXTf z{g~RtQ?wgYl+gQ&oy6}Khd!u({g6UQsiFV*noczps85rg2hv0Nb1QKzFIaYx)M4$z z%k-pP`Oy5R@5vTA!TgZHAZ;{EnsxVeTlZS2|LDDID14rHvMvXoFpa#%%75pQxU%ow z2V__iL+v6QK?t}$N~ z$`pP0VXtu2Yk#IBRIYr?B!LgjBqB0&FPe6wwmpCS{d{oHh8y4(eM0`LR!=7*OjP8G z%cGQ1$fG}I7mF3gsAtL!ZwG0`Y!Rdqm;&T?HTu4&MBPn7p-Awe1wa7IhYEI54PL)$ zzeZAqNhw;eKs116(Ycl_20EPdNR`Gq8Cov&%M{H^U8diN8Vm$-4p0~GVkb^6Rj!DX zXnx55`fk>uiqeM38eC_GE!YD>O;sip<-;I?IT^rdsNlq-Mq%gB{1-2%4|?kAvMv2eJKkYb`M-ZKslX z3@~3g(>|Yk``0WLUHDj+dE&x9Yhod^6l3vM2X}sI*t~=x+N)E!k^tbZV}gUhTJm3m z6O0cAcFk|DmuKW4Gxyyyl4?3_=}Pe7&Ad;aWR+2HR&Ls~9nndhNdU_3(3Q+{RX`20MhS?E`HZQ(_x*i)R&E1e&>{2N={Ln! zwe#oEDu6Hm&q%wzMM~A2igmpuKAuF(kN8`blGlAZdqm+Zt4seD@ODT@I_31wo65)c zotO=<)Q%?JGsy*YXd~Dx!j_oN$e1sSET=NVI|-3xuj2VB8y^P_A`^9$-Za{i0)>vG z(WnMMnE@W>wOfz@FKPj}R5wEN?G1jHA?OHKke9oWL9%ABYk2qh+ent+;6^Y0cVfY4 zT&hGy5+%8yQLIaXFYab~X8uGq$swEPHvOcX%1q24ih5H%?dqX3q~kg@c$si+&pnJ0 z78y(8rT6p{MXxF?iT#P-7e{tFUJaBTnDNUVLFB4A!VaOtb6xDM(t?mqX6Gl9gW4J5J`a3cT#8=5Iqj#;dE;?YHod@#&N(?=F-&S zEzUu0w>Vpa{L#rsmR#{GOWI&h(j@D$xwpYY!Da|8YS_K&pEaAC_kBQr1&A?TvDJ1n z)%D-D4DmWKDH*{g97XPB1~rR|%cM`1`LX!Yi#S9I~NV7ztjck7ySinb1Go0bOzLx6?NAdP&{MqSL5b?lAF-PJ#v|Fds9 zwbb_8VCkzabB6Pdij>d4Rg-^?UH^ohM@iR8x>NuIR3hIHhwoSoNrV`s7!bnibJ%y< z_BKPfOuGUjM(VWMmNci~oY3F%Gb9xN2TgmeQhs&e(`H%RXtB%-(zEz#z$&Y|hhGR_ zICC3BE@T;^4p_Q+>_;^1eyu2RcbldhZ=wA`wJWp~U|p zRZUA1aj*-`b!s}n$F|8=BGJ{^Q9KrP_a;&dkgd?BWjC?;PNn&AsSm1qUCy1-5go`F zd|^fveR;EnAHdk6DQNc=6Tv z#dy{wQYw>)w~6F%P|F-i z>$iBsp1k3d>xo-g&i)>9cnBjLYC-R~aN*P;&-#THFjmNCW|aL0;g{~;<}Q^ybewa` zPi{@SLx#B~f_G2umtBfs2wD`l*w``^im{M5^n4+W<=bmQ2da%Y2^?@|eMR`e?>m2d z!4dM?FCgB z=BeU>lF(6O8)J69O;xAm=D3N06_?j515Xfqk!4u@LiUu-m|qNPP4q1I;YoCuRUE#w!L6>Ef2~}3EC=4| zd{DM2*t1jn&l-b8JUo1!@go`L5CDZhnEgZhBa|~^hzFO8<;417-k!ypR?KwWZ=FKz z80b18`Ep&0N*8(`@dfbA&}8HiU-g|FJ$Ziit8;UKTM-p|CN&s#dOOf*spzXwrYFjw zSI~)HT-(ni#El#6*$pC?eF&sU#;ej8&BWb;x@0*Q23_7>2hZag|*K4=%?WC`>Kq}RFf(^}*ecPKGL%}#f z=anQudA%n7)Ily5YGHS41e4QM2mLs9JzT$^Euv$jy+&~|U@XI3UgpTC->q};!7}}M z18O-N@B(5_CI7SLj43`SyPmmGdQAcLbB;db4-v=cKdK&DK^a8+z*7l#OS(*;udinqcBC$l9P=ypg$JnU4GNk znsK1-##jg>8fcum;*P4zUY;9oNfu+1nDs@EDh|e90=D8LinGqp8-Ccn@lT6}jC9To zO^X`-$-G<75wfF~$gQV0FU!$n&C#wg+BKV`z-gq6TihJ`ebfI&S>%_4L{_#h`}&K% z*L_1mMe?#(n-uf&-{^Uw7b>7@m z(2OgoXUPQ=kE#(UP@Y2a6mY>v^m~>(@0gM5>pN}dkRv%>r%G`>ab8J(sQo;@c}-SE z4U}{<`L*$Cip0gIwGf^Iq z)_q8_TrQVbn~}*5;6*Qgcq6dtdikhRs_MKksFJQREGdr6PmOVdu`$j-ZZwM(Oa!?r zivL-&y@`inw`kfz5fZDV6I<5PJ>JRZj&k$k;#qGUfMt3$dL+Jxl^)kY zM|h0s`CW>KisU-9D1aKv?jzAfk`3F>pPz9NeQsn(3>sOI;?D$ZV-6EpDi(^{kDrY2np#pf}eqRYe?9 zKzB5Jd2%D&n`Q} z6U|7V_~E&QsSJnCAER#S0f3y!G1M&6;uAxME9Ss=;4AhJV+XEr*Q9>3AR!ivfbE&7 zix{mbo@Z@3(rb2R+bo#`^IEcPHxYy(+;d2;)u6B{VaDrcJ!fNMe7= zpa{KM^vhHH+`mF~hZE)(H0E?szVP<4HlRybL9wyjB~}%u2S|L^ zUXh4KcOa5?40z4HX<^;A{!h%@2Jze$J*C7~#-LaPc%ngCW>Ju7=YfNDpXqAy4-GYs zVp(VSeyLw4z5r?4(auj?B`RtC|GT$E%eR$s8DVw2ZamA0&57Jsy4X2LcxtcIfXO9{ zQ?!C4!Yrj#8?xWmQrSM_~r1EC`^FQMWN7L+!9aQTh3G zQ^#HtO|4rViLTVTtO?;0$l4g2p-0Ig9bTqO_-l)K+tvu?_z=tV4QZOPszVIdR&a%? z&!(D6OtCx#bk7T-C{^<6-ha)(zvtho8l8ntFau|Dft(5yE1ZpYYd85QM7qe+R}R+A zE6~wsSZPt)Fj$Sljye;>3}bb=Bx{;TQAVHsW7_w2PQRlfGx62N+zf>sBnj|AB9ZCk zj(>^DJo#Y@Eac&IH^}8um*5QhR}iOny{Q78koj8%N3kjzcXbNI$a~8Tg{#zJL1liuu^%GW8Y`2}cM#K^(#YqGfzee38ZdEx0f=PXeBWJQZIp zi){fVbSZhi=*XcSF6X=GdY23dctR1HC3_ucMuC$Iec!9(8beaE|nj&IYCAuYP4nm%X}Ll$xVt6%i`Eq6T6J&Y=tYPbia z=ZK?3Q5QH?G)OnW15Q6OBR74skezul8JfJ3Xq4t;l&#^77k~^ce_hlg~kXSOPr?&*(--$OZvgczSjURtF21I2bBg#QH7l^lk zd;S^6a`r>0m2Y>In(ZceK1^3Bi`P|;2aK(APAMp$)W@i8fj#e$Uxj@+TWudKWvzzf zul%z`0-(*`QH@Hqk6}x$f@d2kaTVkjY)kk4jZPC;+$cw;Z1`3uj$A*;U&~ zW6rmvtf)z?zFItb#-SoFaVul_9w{a>;^mbdwqG9LRt5rKh)l)0hV^UvMn@oj93g&4 zKri^5>kASvWwB*ew@~N1;S_i*A{;>I1I>m{kLl=Q#|=yR?zz;`gd~pog7ha@+oevc zoQ#eKz?k^7Rfbv<_-9h&gUM5?O((2OKrKk>|=^iV+f0GK$O0e*rt0ggGU?ZJYzBb zie-TttlLl$Z?Aew3I{pqEOOJ6McR|A$7_AU+-IwPbkNTjLpkiqp6M2)2Utjko5KJy zfCmHWRT{|?a?Ks74&Y1{??ovH>+*tb$8&81KleXPjO1ybdYET(6+0J6g$nsqWIhQT zyL6fSZDmtpYR)-B-x-(QnZ(3pi4GrI^)KS}2j6=&ZP?BpYvs-zP>s5oYY_{Hpr0&z z15RA&VLdcMA3pvO&`|71??0O<-p^bdb;2IFbKu3EylZNgw8oW}0Q-Alr5zIso zOLL1(blbh~2eq1p4Ux;_(iYY~YaS;RdKKmzQ+9{x3w7RYQfGaV==b~|n(0c#)V0Xh z5dsEwjz>i4PMIo`)3E!c1ia1)T;AtX8&mQQeETRkVUQ^6xqtjoUi4H(nw{(EP6g)* z@|MpboCu>(j`HNYX)h%Au4MjnJ@A>#I1OjqyXT8tYeCFzphl2G;>0s>0F&|n45$7K|zkX z?(LpSiSfG(aT07q8FKEB@Wun)7qbBryKon+KPv!cf-eA1*UuN<Bkf zxJ@(1K6znV}D)$aC9mnHymH(5f_y8R-o!+O%IDRi6Y(pA zVn`j!)|xAdH{h?9g>yrb3|{vZ7kx>kejN3DfFZi-|aa7=R<5m8kq24OtgUiM%OLh;M4yHIY=y>pTxoH8_b1)+@F^gR9)%dsl zK<<_g;~{Bbwp{}q1AC0o7^bSYmno;&}A3dG^VKA)gurog;GAbn!dthR! zD9h!eU?w-$vaa}-YiXf81t8?exVn55JfaWJQkfXZsDeq34o!GEJ5P-n_netSZTymz z<-$NNNkR^nOgUF}BS4*HZUyg*6NERJh@rsR+FI+{n%bIgDY`&5t{^9eyfe?D);6?_sLoX*`rI zhO6fLyYJ>6^O6Wq#%c*}xZS@nRsWE2iVUZ`(jhrP>NX>HL!@Y5&ifn%mo_&iShQ`~ z@MIAQ{2X_yTHwMr6^8FR^6w(2DR~`5WE?Cgwro8EXU!^G8XB9pxoA&2)4am5gOJp?yLcCwBXIK1IH4h%$m~1i>-u~j}b!hMk>A}ygold=yud73vcYc=hrl+^A>8ppi%hOOHo?m8OD#< z)y+e&Cp{i3!4|V~!$)0HeJ}eL4ao&l0xGbbUTK=bj{Gdq!EfxL020TS?+Xy&&ja!) zN_1~{WC7ibfB8aj<2z`cJQzrM_JWe&NXANs}Moky^O@$kVD&$S#axRRSE0W`$)(laTs9OS@jzkVU z22mVF7Tc-dbAlh8@#Y<_!W~W+W03X<`cDLKuZJ}5F9{l>d_B3xq~bF+dpu$JrL~A! zK(a9vbDjBofC`0OD5z8xSBL?pGZxCjc`!qN4Kx0wvIdBf)X=e`Hv|G^fZp}Ot0ge% z5JS!yRnc=4*N4kYnFIbR8>~p1h{_2&*3*&NCg#wMwWPnj&Ozwc^^u0qGw*jAX0icE0UWLJrzh}qKag&OB9WVX;el%S@d`v6(<8L1v)*AS{l=w1sa&~!x|L@iD zYc$L&w=axYU)-!V$w*8_#rOm3p1+2t5JO09fGARZ?|Fnlu}(JGLTF8rqUkJCDEak(E) zvr4QEK`OE=e^eV#GXuS87ZI80s2wQ8QQ)E2I0;4!r-hNA0)dI&c1oherp>Vv$3EXzntTA9Qr09K;s{3 zf4IMlk#GK7v;wqz6KY58~PqQ6qm&e5`O;jS{Fw2IoSh$o>vMFhkj5jNob;5TkFy-lPB6sbh zWI+J~93mn>XY(SjN!X!rSroR}ALGiM9oUPEshy+se@efS9GYJ+v+Z_qM<^xh+7`!n z>+Faf9cM7BB^z^w+ol_;WA#CNy*4y0kpY9f(U0oz)edKa8?8P-e^(AWmRINFO39X5 zs{s=`gMl}Vf>#ti=#q+5WNsn6Va)je!xkSkJ#6olXssg)WzU*z*^<@IS1@4qA%HU1 zJc+Dw_`W`VAp!zh4Az)_cXM-m0{=?0xpAtD32Q*qI)?dcT|=652qJ6|NE76`WR>vY z*M@<9Cx+FT_U$7&5<)cFx84b-Z;w_$qa=ATT1Ee~XtdugW-_q8PA3*_pJhOa;21;> zUBiQN=7%rHO>9TfP$d?Z!BiL_I2tgz3hhnqVFq8}JyKp#%7H9yP2vaak3mD&1?<99 zQ$@kdD^5|Rzi zIiAhpJ;98s;ZGfDLv50dvOo5#+Qe%m{wG2gmjN#vF@PSYLcnwlxKwhGSpuQuClTH~cG&Ra6+P$BNeXc5l+UEMY=`#S0c z^HLvWaSZxeZn{!3Z}C#no<&B=f#HN4pZDQofOr<;FUP4MFO0nLZ%qFA+_H~~FMTqE z_jhYrGKmT?n7EF#dNQdsVged?OeL?^4i1^_pH<9Oo^-P0*`&nzJe4kFpE!QkLO(O| z9&orvspNmb|1YonP4Tv+Ez^-YV@lcvB1$>f7IN9@#TdQSybq+$XW45PcS0Z1_X0P|ua{%4TjQcDy=?sS_VcYCcL{fV-&(#2w%Y4ce?X@FYTtmK${-h;v1-RJGMpxR7>X&}dg-BDq-z`tUQ= zU+;1!JYf?SD@%WMR5?wn6(Wx1+b<1zu#t$|hobkBPmKldhCOj+W^TF~H(45a67^Y@QAF0X7y3Pb4p?1IIzkKK z;}`BbQhj`Kdp40{mFc<>QgL(e?>4w~t5)8tHzo|MTKD>evD~9KG&jjewc@2+1;?3Q zm(GHwG-!a!MAwNUh0(oNeHnX6aMi31A3py3a{6w~kIk!Bs{Ily+z0CnoZVA3q7<^8 zQ|x~7<7CN?=F4guYh8bbrkVFkl<6*?K{pjZl*nGtOo+3$11QVOj@6x*A2|CpZ79R& zJXk~`@arVKvHbE*)@t{wUGZ>k?p}k`nbIqtNPE}C)0xORm6AM%48W_rB6c!sne`Iz z(U5l6o7JDmI#OZ|g`93n;*(G058SionDxJ&aq5x9^d&t^S~>Y_byJfXKcjCkZN5s~0&fV;HF&#J)eB@9lTF_?crY@LHp8lK>MotW-L$?Nvm{?W%* zM5=||>c|nI05N%cveT;1q~4#%?V8BN){dhios;HkMeyGJ)2|DQgUQjll+9WiqwK*y zYu+HQ3ZHxr9UdRb^ZvWeBn*_^|k;*y~@_;l~4iZrru^%5Yf_0Sa_0A9D_gMz~pZUNzygoN!@}ty5(8wN0LL?jm~^?IVjwKQ@rt`$ zI_8C-@1aftvZ3i*ApXS4t)Klri9Ijn$I|OHX6XuO`bip6g^^Q#Pdms=Jlal=JT7QV zI~gbgBVv)UJ!nyH`wyQN&G(-*&ghhOMo7<)L}iWAvPsAm_>s~+G4MYFBMwb>j?$T{ zc?f28^RgE6^xq$MjQK?b1!whOi?1~Th4FVCpXj{E4;6huP6zL$DK({Psa3X`&c8W<+Fb)^xG|AOXe_5+L4_M6qLGJlQZ-ErAu01Hu5|A&UJmTHx&G6KhIc4S5 zo)`9>KCW|<7$-o(Z<6jp$;oMBLR-UT&zQLY78Ao9k~$ui*w1f$OvRU+iGVkn!j-g{J4WplhUrSykjce}Jt{VOQ=t8o9E|k+f zQ`c5cQ|AX5lJcTB7%K>9k9e9jQpR(Wc`ct@86x*IW+ltc2RPv5lyrgf^cOpm(_0NN z11qLYYM|jTHV;*`+t_E0$HV>%sF<>kDypaIcfHLk`>^w*y`zS0E3hI9Iri`2vKy~F z(_2g^ZES9m=p!|rFI}K1DVNm!?0hgf07n+<*m(k(*p4*ZW^_;G4~<)uY9UV*iJ$upC4n zuLG1;q!aPy8Oiq#-(;RMdh@a^O=^e~(IOvw#zFiX=^tZnrQ4+}DXyDosCQt0>vQcZ&h$BhMzK})L9Om+n$k8Z(Vlpq2*VPQ?3pBjYHo!P5p$`+d46S> zPf+t*VqpUJqziGzG}SecD(Jg^kXg<5%DE;)rb5D(?MYuRv~pWauk&@pI1zP}*V4CF zw!%pA*Yp(%v!nyxMBp_K7Qa5 z?%jO&>std&psJv)u#!gk`9(25bW!#Fub)$l2wal<1umoT<*b&p-KgH^&9A%C4`OwF zvPd;&893yWfKW^yRPS95+JA0;@N$G$DX7)tjQg~98VXWOd!?1Ngc(^JkoL%RiJUJB zW0SB6d^HP0ndosL>4hfcRG8)N%!ziv;(BV8f%CHf0B@EkB?9Z^FDm*@HZ50F+3@Ga zLGxTym5A;&s?~F4xDrw2?B1^={U%e>h|TzDf7AD= zYKP^cpXNs9+v$DCoCQpSsSuzKOy=NLmW8kC;<$f5yDV02Gjp zCDGt~cS|lafXS6J$%mR0bA&ySPgj%d%)#{I6Sp}(*D)F!p#~w@s_(&Qo5f0^%j=hn zK49j*`%AXx?rLA^&DIa{*EX|QcQ3XCWrDQ^%lt)3_puB2MEm!-~?p8#&^HCk4f;-2AKo>$T<0Q)#_7RwuK)-8?^*e*flkJdz#rRE zpiExq!}lcaixX2dHb}|`@~r=t=k{^(ul5N)KYq*wPP5>e&<(8ZShJgpd2$VMTQRe( z4t5FPLCCja+jEt(IjRF0AF!XLpgPv`EUWtekEb_rNHTA~hnwk{X{M%}rhQRn(y}sj z$}LxBrp3(EvXoqqDRU*I+!5iPX)jYpO-)T{Q!4^WMN$M>R5BNGgA{>sLnK5+K-PIb zJN{M+gk%I0SM+DGEWdoJC z3+$57F8FD^GtSL!jmr52d@2@dza6L!RZ0 zPn^?nfBu^BG&SK_xwOWa6-rnqt2SNv>2kPV%pX@~aW*=ph#p5#DA1Oz^1I;~4_cBk zlI61t&TZ;XDF>Qg=nu%d?j&U+?Lrc7y6O);`PtOl1XD`X!^syB7j)wO8FmDJ-5H~( zghm!p{g4`OXWL#<*t*X^8<~PhjVAX@i4#)e1pBTJopX!I%!GE$1I$>(kI3;10^!(q zPKO^-YICd#+dYPd{X8!CoRP1Nh~vH=wcPMl;#fT7sZi<_N-b0PPE66TrU5HjQpwC* zNkGX7C=^JF9SK$)iGL;{JN=ulKl}{2EW{F`!LMADz+yckv~s6GlMmB?=MC9MWW4X*|p#b-zP+(#n${G;z3pHOU<}HLqFpijL z2C)NI7b-MfY<^%rl#23z@`+qS{C#qqrxVU7CMKUGg$4jf-oBHa`0LdQeW7ez&4DBf ziwjRC4$%*m%SmFMrY}ObA|PghNa+ToEufnm{9(=O9_>6~+)b4F$~A$g%j}OE$)U(W z>_Mz*11cFbj51m1#@0mr6w}50`7KGM*;ddp!a=C#F(4l*0O^bytO^{?)Z9L=$^KL2 zWiZA$>ue0K+SM2`AJzHqqNBv6GXAllX<&o0rs;}1`qGu(VWnWWt-}tzU{i?%qE5oC z)M8C18@Cl}%p@um3vbtMI*L*xV9paKA@1g*sQ(66EFbPAs6ES}%V5Hrp9=xutU2qi z-hF4Sa*&~M=7Vfm=}H1DU}nR>7ajAB>H*KKy7K27y!7%Sa59|Kn94^(e7_H>04u?Le?#K zp%N?E{zmS^S1rN_n}k4ds%Z+!`}Es}rux>W1E;hP^9?Wfrm{@pmj`xt#etOc5D#vB z!VA3~U@u&j`}>s5c66uKr){D$+Ke*SX0Grp*4V=t!5vLGs)y7H)9|sn=e?L__@j8g zr(4D)m`v+O2Pm-dDnX_SOud)5;-&vZbSQ&%@do`moLK#fN&74pE$uS zwJstG_d_za&NKT+3ckO-Z25Q1T-(yym=LciFp;JDVg%IslV3(pn3SjVo5SRD6&{V2 zGW{g`{O7%z&vEVmY2vF`4U2(F%qB1=*qL77WE}O`q}6SUj0@6NVWj)eN_4MRL0#KmP>B`p4SO#+G2JS90ifl z%ZXI&S8vEI@9D+s6dRmJYf8W!-l#AJWDWccQ+p2Zi|e+HpU58!9PKLD3rN%s6Wo}| zjy14h%Ee|U>vM6~Etj)^JyzB^wxRA7XylszU3ABo`2Xa>%63~rIT?`FeoIXXQ|Wp8 z2B<1c|6d8gZLAY0g*uFS(@9l!7zv%- zfqVN27#8^u`qI~Dca?Z0CN3#FZ|0A~@jf7#SAcCm7aU|hy^-WZau5gCgsneS9|fMw zW7quA0{>aU#0ubE$-no5i@`-auB9p$U(4p0cE8`ka&u;5Yk)Ewo9E1}WtUnJ(y+xa zxS(G(h6sEUNHU~jI7+@GhAMJOq=>JNne1m_*P8cj>7q`h>mL5SxD69?6MG)$JCvt8 zt=SNUoO%23`pm@nO??W!w?wG`b_q-YR>j6x;dAs`0jsn>)qW85(v9;b2lc9Mf#eOG zE@lyzr=MEiaL;i#%C~j=K=ZSk-c;~2F@Qz%bGzMSO>7WtPUU*JSd((e^2yW3nc_0p z194Q$V0!;J`H$>D28+Sgr%g#UJwrN&5!6lg27})$XGEMs*tu|@XXAIgEwhOEPO47A z=1bL?_{$YnN~%mUW=>AU^D#|p=I!vG-kkEhD(3sq^s2t`_dPbTxjNX73%;*2cQs)y z%@3;BKgNe9c15;^s+v#snR+a?(t1*!U;DX>V_?RZ#2A}*>h;Y*C=ALtK#nL6m6PPM z8bXsS#!p6ddB@W$a9Vg}jOJ^3?f-Ytyj<*o zAcp2mvy*GI5ZHIGqBe;)Hvj&y0@KnnC0ate^199UJ1}BaJhYemdD`haoe=!#w(soh zex4XR=T))&)oc25qngs8>s9Mt&MkwlTy8B#9H!_Vob*`%mSl0{vt~%>2bmb9AD`)KY)k^ta|1P>WJMbC*0P17l;cqVo+EYJvN8kh3^S>#K<#d31#-lOw09RrD(bK0Y0Z0G6@-=E?jYp1D-(_?U|n^Z z%X=l7W-f<-hN9W|(8r&D6g~XO@7(WsN#kh*xn-Uyv;&lUCAkvq@iDOH4}TkQtr?M> zM%S)A_CstQanD}4xP4SSY&?Lz{953P25y$A=_+~E{AATOk#1TrXah1zkPv+7KARh`vlt< zdbUshPr!@2HohUPsfx)dT~}mZUL)M+xMbDnXQo5nP38D;4nCSjW|=U4zyUR7kZ!$I zj!&p-$PVDs5sgZ-Z0dbBj}o=k&8ztIjb)g+$udYCRG;)RN*S%UuW->F8Bv71@Q63lmHlRyicSohjO;#Cn`X8@uRrTrSKc9c6XQTyd*?TIAi!2^w zJa16fMOdMJy<6~cR1<#Y&gh(?`+z^Y_I@GWD_D#wm(ix13O5pZA0kz8Ths3|XbP$_ z?0J8@+c(Uddi%|U@PhU$;olk9`*yU$YmWSNE;;;U7J^1f6}QJfrP3eNxm4JnQ5}|r ziR7|`dcgxcqVuEEroE%sTPru`7~;6RT`J<{+{`p;;GHI<__HaEX|$Ehxjs1_=$kqS zMj%mCDmNuM&SF)6D#ILow0^%Y@>^JaM282-BJ$A0t=5$Q@!xB@y1^}&6ZmG}^)cM2 zeM(_4j#Lx1jmK06bnMIsKp#M)^Su*`<3dP6acWEgwQf6$neLTuQ9vQQnZRT$c%ACr zYmSvl?=;|+dtP1>CSYpj1icy-Ls4~;S*!MX6DA)QnaJ~O?T@zoHdVf7o{yl(e}D{D zV|YZ+tuXR$7Rq;t-y2?xkYB4X_y?&Z3?kZif+nw?%!@VV+0ogbWK1nn(SPM#Ckhp2 zl|2zway`Z4%x(RWpn)-H&)zT@#@g&qd%?A`AesbFx??M5n?{RLA_d`H?Y?g|O4- zE0b#AXP?!_Ds0qDm2hw?t_p8Htzx!cRC`=c5s*dnPz_r`4P;e433F=P|FsXBhb@3Q zJTywkL7^gDay{;&U?>u=qwn)H;`gOoJWlBXjH(#)#+J21>4gR)eh$7l$xSU2F~S<2 zeoPN2o8}8Tz7R#K``U{WCyufF$o=!?_~(7pB^303T`8HKM9}zahKoNT(!>mg{@+EC z7cfcL#eFV!*PFXF816tiV*o1|xx}vH0D&qpBmx7*w`cKlxUccpd9JihC*=S{4<&pHEFTpXeADGIPs2BCUv^-%v`_DyYTSjy(#kW3pRVR52za3Z|_rEM9MqBD|#te>@Q@kU7*E>;t-7P_deCxqC{2HW!df*AGDMAh4nX#@RFGVVaURVc4 zRR+lk%+8vqA0BApxdynB4=$0*iKb9RDpTj8QKX5JZJqcykt}FR!!uThyPO%3Nyg9r zE?NhTAKw8Sv)!~8OZ?Il33?J5BMXEVJp+STpc%Y#Vsa?67_LnseLUn{ZrQ^@Py;?t3(P-@@)Q+hn;-TlE+YI1VU5E^_ zj&4HDAK}x#xd9554;b}zPU3^bN_dV9y-OfsD5{A`dc(ViM8~!4D0T@{%GexMCmsX+ z1Xn9t;CY{~imalkTFK4v9_`~la==W68P(O(LEuHZHTJmL=y;f$Lg(p0(OC7m!qWxA zm=a5M*r~3tyszRv<&!CAj|6Tr1SD@xvPlFk5Vx@xH$mAOy3g6bs6EplPIo<2+GDKL zTg$qjHi^zty6&A4n?@Src!*Ae9%0w0a;x$ETvPJGnF;oly!TVR^s@B2DI(|#sgZ-b zYzOa!4||+_%uW$&mzi*oYSMM73u2XHYji@d4R|pj6VMo{PkDFQd-1NQ6UG4(B$2f) zO4|s(5f*S=e&%m$x_uh~PmFL^YE4^46jAu#=g%I43#+Xa?B8fvD$;>&1!#b*F1o{f8Iav)GWdP-D;2FbGt5&3!wIpr(OORy)g~(Yt{1SWoUGswW%x|i)zZw zQ>sQT-YJtEXbQ#%FAFBXSy4%BHuCUIkE1PXe+BvAtHy0SC%P%dFBal#E z>|(pPhsx5h@t_P1)aL^qzZI^}1a0O^hlwDiRk7bq_G>C1fDgqW3L}2eS(^zT%uk*Ss@<>Q>u@7 zKG{DE+I+&v8>2AhP4Igj;^D9U2<~AGvmy`%*7RGchnue3eN(lzA{|~xGX>arg9&Jz z37(5?0O{DmuNv6#sQM$MrCQ=IacqeQ4#23&`mZ=s>z1zt)a2-%EYRCq<{5NQDDTV6 z=VI?Jul9qL4SBvz6QH5_WF3y_|3qzxQ-S=^gUWi@WPpCyhbOQ`-FPr!ly6Cli$_rM9 z+%ik(!>l2etj@D8p5?6n67BHjq6vFr0fkNh_tP7lNT<^N-I1Z>q&F#ae(x`NCl+YW zndT398*06Rpx3y6e#`1BZmz0#u|NUgKDHqUS2{w(AGh=m$hVdEvA zmfxq3ObZR4D~r#*yI(&vZ^(Z+eA0HHEvVrsHs$1UF2t&nq#YXe9AEKs zYxC8kc@a%L3R}Ary)3NMmg30hz}D+KY_7rip~6t%8+G=kT#%_pNnq+HXkel#SuQLD zWLlGFrW9@bn6}RC!1UEI4!QY!{7>3++v*y4Oy5{`*Oh70)X`H{CPu#J4yLec^P^%+ zr5R^IJP@g{G>AP==BMHxpbFE9iSE{qEUtev`wq5J9H1Ueez*V~+KrM8J?zn*50Um3 zI-d7l&c9{nv>ZXE)))xqu#_L7620*$KH#&~k(dHKH7(9hW)HCN2eTH8hf|@2;ge~+ zp@`D2y;qdS{eZJ75CQK(0Bh7-SLRVqojg_(S^*QIqNo8uY>KXIP!WB8UDMmZDXXL> z0fzeWPOd?IU*icP`t0THvN1juq0eMr3Z1jvP5^0>5RYGa{e$L2jA?E6sXYL(2bCfl^#`l9_j=THiJ`I}FkF)dA;>sAFjs*D5u4uc=0!7~ABG@3*z z6!cM?OmzSG*i!_0qJSJIm-Xtf7g_{QiF$F9ahUL@5|Uj7($(v;yzTYwNVbsXXXJB`M9d2Zw2CnniET}yK6BUGpq!i|mXtz@`Gg&2vM zItvtRKOG=fw4{wyPiEcv8;+g85;b}+2p%^UDQ2zSgFy!|9drZ4 zx`H<}DEJhr;6ItpY94yn7a!>B$T}lRcokF8eMadpj(y+>=}e7Ox*GOE$#&AAlnc-& z>b;R<0E(nE2tY8dK*J(lrX-7g=^uM>Y~%9#a512=cX181LcJmaK#LnczkZ)WAE2kR zy^R?D+t*Bg9IH4EE2jDv_aU3=I-K_Ogm-2aJh9ZS8k-v%^5|PBmrr}52OmI@=@LGq z#5teu|F6kLz=6h`rBP|y%UsLgTJ+o*Q&uHBqUdsbCa6Qn^=u@&I&L|?96iH^WD}{O z#ShF4&*i0S?$5mkwFNr@Qz+&et*L*y&-C5{Di|&hkb*L&9Im8Wv+p$aAJuScR%&e@iQ`HNbS|T>ku9qPA z_O_pjF~ap-&C&KWmBhFo9=+kMsx71S&nG83&%MyYpZqEAI!mpo%tP7_3`uy>z*i%a z=#F*iskCXv6iuK=_o(X(Y8&t)bt@*|T$N;SyibJb)j|1VIUycx#|_Ihh&xIXK9*L9 z#v$pXY0!6|GR$r7R3$zCXZ^h#4;B_^v0@3)_qENOsmR6iaFD)h4pOLmW#?($L)sL7ob@Ti32!I)_+b6$p1 zL~ff3+4#$nEyLmM&SHBF;8#~4^PSKWM)O+63d36U&y+V5gP<-zBEom3XiX)C#8Vxx zW&Cq84kfcy#;u8H?n~Ha(1|Gw6==ysF;7bie-6*8G4FtAxsj4NFD730Xbf#KE0Zhj zhJ0wtBKMqmVAk;=Q=dNnw5Dm^7(#QOlQC8L`~zb}e~ZTd9;*}v+%<1kOJt$9-L+vP z0srxLKeTN5;W-$SU2<2h+MI5T!`kW~)E>-zp9oE+Y(SR=9=)5dZCU!&MCwC?Z%*c% z=g!X5LcP6rvH8BB601musk+$W4`VB%uy;n+bR2Vg!4&AKDw?n<5oC%yHr-ouf~H?5 zuNfstaZ`qyJIpV9BJ#H?!ME#ey> zO4W{E1jVObw-RYkHiSYVNe8-TJzW?UPck>ieM5GOvC0g)oro^eetg(WAkzodEKrU4k$?JIjK&1c>J3aGO_Ksz_>ZVtE|Nu%!UWuBsvse_ z6}#bFHjjMJg`HT!yfJ=Q9?$m`o6Jh>0~TOXqJ%&6C=48V#2mJ5bK9&;6VSn7FB}bO z=!3F5eB(5NeSfTa$?fV(kGxX}hsjQ!sAUJ(GHqoGSr^uVj&+s(Y0m9+{~Rt6DDO=8 zUuFA$_i@HuKM|B$YbO%M)}`v_?*i zPUDQA;O*tQlq7uB+I2s+o9T`uS)UxE-|}7e7`RIFYM&_l?YZ+sz$Lf$zor=s(zb{6 z@2%WuwOc#4eB^wsC2jJkCGAjhZr>ifb#vyQ+t2ydZb6={rgtW-ZRTg50G-xwcBuZR zN7IEYCXONMN@d6zP1h>dutK)%alDlHA;4J2;Tt40XgTaYLJwDKCNo>v*Ut<+5!-y$ zvz2{-&kKM_ZmdXhZdO_rOlr}}oWW5I0mGJXK4!jO9NF)($G|9WB2s1jxy(mj&!=}X z(&pf14qB*C?6_#(ql5gVWGfuQ-cY9m7(kE-Z>rxc;aRNXI|}!`Zn6p3WBW#c&jlt+ zRn4qp%F|rqZjO?AxZ<$Is~R@M?!YWKPvvIblHt(v@^tZR3C4-Sm>aSrKjnL+7dqJX zn|$G3p<9RB>}_T#TW7L}Q<&rNl?BGbEXxBOY>zL~dG2bdZxH>eEBl~T6 zKUsc;Zac1Z33I8phy8SDix;A3-TASjOG<|itzn_c%{Q4slQQ3b`z?u_{oR^`vDEy! zU-ETrOB7}pQ=_go!4~u)0lKMgDS0D66_rIlle>_WlhEI;OM-V}TT#0h1RKN4UhG3; zhsC5u(gg$lFIpKFNba`%re z4mj_x+W*pc$_iu6tu@crR-P>Y={a9$TEa=nqksvb7?K%`xbHY`1}*8uQLHlbwH4Z+ z|1_v)u@H0azVbR4k#6o)%aFn4(w{xC{R*xzx~a)HdqFe|*>jf;L|71m*hE#oSygkoerd)Nj_(!Bw;3YXs*D@4XRg4O ziQ>|OM@*wzPLk`*1AlP@?RI&)-sw>z;8OgW0iV<1Hhv|Fs(8lNs|*;)7fcUM2lS2~ zsMZaic|Q+0=J;!l^q;k^XY?v8Uh7&VH$rw%&yKG|hWe^eUS{>L&YKNFJrt~A4}K~> z=U{&YBfda}n`Tp;2oDQ0LE5Qn-Ve~6HsdlcKjOYCr%cmsT}c5C@n-lLE` zs~4bv3#z5;mXeM+@0CuYVLn#qrQVY2fw+gou9kV4J-V@B3jhlqmXDQSS~rweuA}uE z!l*-1XR{=^mCH|^W;zlMmthzL#5u*FfhVXW9t(8ul84a^VpKCuNJglPnU#-cIIS!TdLxTD;Mi`691SXiFYI^32k&Kn`l=6P%<>6# zvv)-4#3#Q$1ZUOH>}B|}?(VsHJRQ-@tb>2hR3^HAA0Zb^WgMWMC6w^V(=-;)BetE( zuG8;eQWdBGxHLA6U^P2U;b|f^F=x%YAA401oN|)l!hP%>;KtvqK91CG`|jso!(J0Q z(7oN<&)Biq)_va}G>ND3Qsg*|0)xQwx;cJ6HaR9laX^JBp~8d9 zl^OR^UYu%*7vt?s$b`O$sBR+k#?Za*=%ZtvzPS_NF4*S^#^8|O;o;)8)Mj+S-A=53Q z^XhgQnv|N(Q-FM%Zp)*yKkO-uqL=LS=)Bkt2EykJ@a`q#&GxkmP6;Yus;p0e!}R$3 z9c~we$(6uG)R^MO+zw394vQI=Zzl}uY1)StsPfxaMH;UcPjuO)lj?HaVdM&QR|}Jxbos= z0!9H}DeohvzFuukW$G9;GE$xx)6U8yp5y}+@v8-=Mf8<i>5{2CUCKrXn)yE{nhaXyD21)(bpKA zU_`=L<)OAhsEKe4+x=uvGEiY1sE8hR&>plC>Bj$T1MjT@!vDSsqJy+G3*-O~52!gxj z_SwL6ybIq?Xi#N}fsyWIlOyvd{g8J*FWLH9w6pqpf<>UuHU{yUoUFCL6s^;lem5}q zZ37oywY#Z(Y?v5)kfKT<_MO5neNr>t(W8~&suj5ON$iTokN9u07^ysrg)}j7o6C>C zFT0!T1MfHfQz(9{_fc)0!yD{Q-9WK))CT~-U?w;Rfm!I~fC!8b3*EWGm{Mh;R#vWrodn)l~u$4%GnSXwq&5O>-JXw?i z0%Z|GF_$}mO_l0xymCCxHt;k`e4;!IwbWC5m@L`iz1&!IDz0-E~ zpJHu89($X@$x2Nf^!}&$r z2~c-c!YfiYcf|rRz;m?k@2l&=UH79;o+({t$_xi3Sa!|0Rw%+CGO|L* zSm{qh%v7CWyNpwWDe~sfOHozPL8BcY+^f=PhWTCP_2DSbc6!<%#zjnvLZ!0Wr{x7W zsZw~`bR3(_*y&<)_@I6zsbro*`%1}*s(B@F-3gAADd+m72~UT&C$RBL?T^c};OD}^ z$89DXyc68g=pmu}ITM?ra$3I<^<9sa*s_Yfgx#mZ|8cP|0Rx5EHUvYL4V^pt4%?E0 zR17}KbBK*&BadJ#;g%#hw@cG#u7h^#=3TfT`;4#R^Obu}j8$l1rmvv)n8B*jOXuEr z)WH~=cl++T^mpZ!YZo#U3le5rw`wrGC#>c{1F4Gbva%+<%9LhA81{;vB^2-PUyI&* zuc6>vo%c?kpMSr0FZ(8#aOQY?R82YfR^m4{h-1RUbo6|>sxiDcja*&9YhZ-a^};4G zDcYYmsDX?T>}vZxIeY*Km2`MgZ*4aN|VevWHeAg(BTve`iQ*M%Ar0GNK=CAh(a6tS{I5fx6G zUkH^rl}f|ab{$J%+f|08&CyknhgT2XU6h3Tp^``pFtN!=$kwgRl~j-zHq{v?Qgn*z zQKFUaCLHJuSeQgQbp10EI+)rUDvZkj0D{~4bsflI17`xIm1vC+H!+P`rK#ilDwHZ& zo$A9-Z*^VX(T0-1gyPbCtHDx0cZm=c6Kx4EfF#!g?(&y? zr(ds68$i)`#!7CD!KriVL_B7SuSP|83Fe^z?)=V~?z;_7Y$x*91g$ztoa3@@fha>K zgB77V(~0@IR@*k7^mr4=(lia%qlrqw+l;#A&3ZxBbEA$M z^#4mpbHgkRpmMqgV%XzP^V>}gHjf(TQkQK2m%2)KzzAydW9Be}EI036j=mkZKwwK3hWy{!|eDv5NyEhc>iVs_2ZSjOp-SAXw!%5&rKT#AZeZbu5oIWQds za8k^#zE#}1t}@5L7UGrNrUzo#Z#W1r-ecmK6|hj2={+40 z-EzM9S}&*uh%$ESN)2cyCobL{>j^z#|MvOkqBX}&SO6c{%kns@zv>B-z5nn=jk^~3 zDQj|K8Bk1j9GP8x9^!%t(MgdwXVDp1<(4uXI=d#u1rcDS^ff&-DZ5MFfddrgU;mY) zB=go!~WAllyGoFG}?J3J@m3v;{U+a#6%|^kbp1!a`AgdSoY9m$|>HK+Wvd` zYkk)frae!C9_bRO$5Ka~Rz08+M@<2yMX>z~?&|!Rw7)TGU#i(Khi(irvO+ACaQUrh zjEUX1Chs}PD3(nm_dj6dbvx_jrig~g>seU6&w)`}=K-r91#xa?_k_i{0dt1Ir{uB1 zx5ZP6uHsXkDozEEVkngHPN2I_7ge@&a@eL3n0!LF!eZdmsU5sd!M9a~L}Clg*JkYq!ZjTrQ5)T{yn;hj3unqy2jvqWh1qQXYNU?pes6O%nu> ziJhrCW2v}^j;;n3-reNJD6;IgJ%jgB1m2{oFJklSTT0K==gGjyS;yrJ+SQqEJE*<- znH8yq6*>x8+(oC`qgn{PX|-tFRH2EboHV;y`BNT9S}#+z9BSA-T%O=8=->S>(Hpqgz88x&nJ3fYwEf4<}*#&nC7N@?0Be znhHNK?`62de}85`=qnrWQh?QD2ZFz=bb?yk+rsnxQBh^G#!B=vnh9EFxYgBf7ho?}UtlyMK5zYsoJR@#&4~fGB`0C@C zP6JY=n4nAVktto{3?UfsUS(t#= zhot^;qL9JRvb&gUO1JO|bA~%IUH-9=wMD!TF$DjHb1Lo;i)NNfun6x^d+ux3@2WXS zn?*{l$+g7-<2t>g=nSYp&BC88e7;X{m|C9|sN>0>()Z9P^9>cCPWkOlJW3!I)rlPF zmAUdnQJH(%k(sy6p&iznqEM=iuP?$%VbfdYnxC%ZN)-h*lh(yZsS6z%5Sl8|T?x-A z8dW()(Wi^@?Mm}~HBq!ZjWE5^s;43sJ6GjuYMkeURb5c~G@_8g0UemSg?|#5A1-h8 zGH}rvB|S~Vl(XSpOh?<6=M;&aw8JX~xcKVtO4wQatnFLxGoTzA9uIX+{MTyiA0O(P zgOS^#gK{kK9N@^#LzS3>&#+u4SnyR$8_JMh!;2CcdwzN?FB&WF-h%jI+^-u& z_C>rwOUZiAP^F1@{B6s>i`MA8731IuUkHAm!tgvDLZOAVJnK9A53>V1DqnX8%Z{eq zIHoWarRLV;4xD^4@T_|tr4Ll_)S2u7RK)aT+a*`v9kZ4kLQbs>#yOGX>?cttxAjGg zjQDPEE)SHvyLt0%q-WLDJ6bS3-_Pr=K#~-E;3R{pg&3@6-kegArqUaIi67LOj&0OO z!_~xlA6|qg*s1F5>y|ftL0~9bGBWCsQm5#BmQfX;S#7H#sS|mAgOfalCR6$(YWvO` zCofahozTfyMpjm%W}ztTypbr>N7M+a&{Y8BYiUnQKRiXvN?d`cOlHF0Vto%?r!uY1 zb3tY<*JL(wJa;(j>01KkMKe)1E>Mz^vV$d80rW7vSSm&uAI()Y}afjc=WRTduYS4AiM$ zOQ!gNAL1Oc~_ji@jv;xRv@LafF{rzrkU{IaAyK_9;}l! zAKFQ8?#F(7xbZURl1^XfTtVP2Z#fo*^xZwSDHh(7n5c{4?_JY(>G5Y1J(S<@jdm-K z-!xD)E=J!z{n+h!#kWtzes|1;JYZGwV|_2yK^yI0MM$)bF8SNU zG9$QBqu#-}tBnY-?vMcvgIW;Tc3`EP)6T$%5FR?;HZP|11s$J0$L~PdvpYTimt9G7 zDi}U;=4EubVyBrZ%Lvy=h#Y%#06dVuoC1_<@v<7>pK;WAyrB*a+2!!a!7iTvo z{}qxK_#4OkFNI>^MEw{wAyb^jBW~4}TGY)bTF%AJCE$N|ROLqr-G>jvVTkry;-c1j zWX4dBj4tWweB@T9Xi}VES&7@3ICK>^@+)Luuu`0wA(WH#DyDj%?#e9XUUj_NMW0AQ zS+T}AK6Jo(a14+Uf1rLIOI7F!ksl5P)g0{Yu`df#jN@dKURL{^3~ettBx$mjj?C0D zLZCO!QQnvbP!z3`oM0}?B3bbZK+*s5?Txlya$bzWV>s^zSWrCCyZ4<26J{X#)~hlx z-9_uX^+VHR^%H4{e7<7xwA2kfHFPQM7&jq4I#RE%Oc()h@@-??urlm${Ep9pOj~|Y zFA%(^siIGOlE;VnI?oHd2||cOHhY*r*g6H7dHpBL*I3q^KJ(@!VbAkf%*|%o+2fyL zTCOF^6AW=P(8xEJf*Q8{o+LP0*BqYEOiM4K@JbkIXgQkXOuj(V;2fC-rJFMQJyGZoFv}5Q&+q?!O?DQkL^y@Z zH+r#Xh%oWQH{U<}Q@rDC)N+~wsV&m7R^2u`fpjEJNE>Y5HlzdW{ zHkX-xgrD>@dvmVgIld|`p1Yh!dK@BsPB%I>Gp_LL*s7t6ZtOQDpa47UJ(-^U@1kfV z>Hw z)dAXzRUw_+mbBU7gC36|9AFnsrHZb_k4>PBeg%8~cy#%}Hovg$`WHTyXCS9O>h!o5 z8)a&|d%{a>WB^(7k8vAwi+*s$77$oSBdZ&+){hQTlr)ZqnjW=$y@VLn+~`1Oob z{?^7b`V;R%o^A`+{`uOhJqk4*dJxgW_FhnEEz-6XgrcL1>3qELM2WV-JDXA;^t`#b zESAMJ&uQs0JtC@*9IfVlO#pE+=1UxF-eruvoqb6f(QL?4yzRrkiw1_z78*}PAYfn~ zJ+t~u=p7r$!7gCk%;xGFEejk>MX+1v`+&pi`)`BV?)Etr*d)#wGv`e&?ym3-<40aj z`&MZM{X;j@>XJ=(hpzBnaB(#U#Pp61-6=_WS#9T2K|^inGIxMS0Gr>k$^RpdUBj5( zI4t4((8EJnjjoE8=b5-j&nJ!Rh(IE+XhkOa?LS4izY?J4Q4LYM8p@-gtO1^K^j8XP zTU1(5KuM>-iiolivsL6zOCWf}U(v6yTi-bNS;|j%2aR?rEln&|#guldVD`6^wYrB1 zHE&?V2}iRr(4O)j?#ZeW0lfje!h0O(Z5Q92F%D#()E2G}o$xJ9Pww42a>eF2c&9E| z8eM;Y91@5hZMMD{O{byr>fYX{!=9tGe-R<;~@+Q0K3c2%`o>-O0f zc7SSLx{{M8QtE+vuhJ029Wt13SUlhfjyk0JIO<6qSLu12Y~8fB5B$`Je4jy2lmM#0byk@u~otOUa%Pfl1S~hl94C{#jYA z54h)f{)T!o;szg|;;%r0Q%aU_q$brG55&-KyV7`bJJ2bG?U3tfT*gCgiN0s`b6-;v zLklYb6~x<%clv3rRLWLHaN`R=FCQt34saU3$xy$Sk61Q7X~IvqHA5N^1Hd zfak24E#ydA9-q1=I52Lk7$Y8SQo0rbbRsV-;=vujX$f^|YJm02UAD3j`xus*Eo@TY z8PY7YU%Zas%&yR20v3{64K7vj{~t@=9+&jJ|KH9oZPjY)W>;-#+48nhGp}sxq?xJR z)D)FfnkgcgA|b+O)ym4$sZ;X?Tc+j(nO9N-)=l$DUVs#Vyb_?IARyO%@15`OKmSl3 z`1!mqujlLayo9*e+0i>vT78)jWX14JV6+axzespenXjuC)1I+^86n2AIv3=F%({D5 z#|#b-Lt`qse0nJDepu*tiAj#~ytG{JG_X^|RINlcc}+D3-mqD@YB?lKme|ujN{`in zDg}DKIQGwtE7vw3e)9}by8I9q-fIgJFFMQ4<~^m;#{@*kUDlf2(zm}Ir&~thOlGdF zr8e98YHFq~JEb4$o`rh9C$LC~5ou%rNG}d3vF}~jGt%uNz*R*}&DwHYCifDFsfY+PN;6x14{uYc;m|Y;7R+&!`JXgfi>>zdRQs_F zP4B`V6%63MZpP-|+PsP+Y!{**7_bk1~n#cmsPIG z<~krKdJM;@In^EbiMNI{RO|iIJ{dG^yV`1gc=2^>MMY=f(z_cOFT*+_<9n;mM`7bw@uoGNqXS1B=bRxC;I%eyxS!aFuz-hNl2g4%BF_t zABK!9js&H7e?Rd_TQBJu);66}`AU*0$uo<1R@m#@6+C)prY{8$r~gPql1kbVKE5z&;xt8@v; ze>9QQcYN2rgx#;-|B#FIvv}k{g$J1?DfO*1c*|q#k#hJ~{torct(;ov!f;^pFdXL6 zHaRG@JX3Us(Q#E{c6L7*?UCbam7?%-$=^)#-iBi5tcFvYuv_Nf` zQ@MtVgPuwlyvXcep*n;$gAZG1x}5mralcc|_@4;JZ}Sew$)cs_(xaMw@2$xVZYS9_ zQc5KwxRA$v9b7S2x1eon0bwC|?Z_rA{K6jIU$-oTfA&}rk-x6@=um=X-@Bogb+pRX z;ykE#VJlG&biMNqhBd%Z)f)ZH%bf|CXI(}c17Nr&*TNn!CJE$NU^Os>85aSVxHnk} z*HP!I3l&%H7o75+)t>mlQh9yf^MPNiSx^tX`t5n>J>3Lz(L6d?{&Ydq3wL0#Acdy` zpoDaOwisad-JN3zg$u;Fsro4KLrnKnZW7Pj9Q8W@^`?)j{Iqf^@EocIwl8dN`hi*d zVvco9f-swaCeT4>qWwzET710;hfA5S_$MhxL~=)mPU9b_fhZUxmWPx1T%XsV@%c}N2a1J z3d43XPU_AhZ`-n@Y0JtTu9ksLMUNj`_=`OTv+S~FjS{704v0wV%wQTLaOczH;q8)fa{O#V)%`e~sNblQtW@X(1BHj1eCx-kZ6cLn zz*8Q5*Vi)r&{7k6ZzP0~4{O&a7R#rz(Ey|svFE485b4@`L*XZCcMUa@!iWnnM-B1v z?OBr)AzM*i*lA`PjO^{Ue$+ff@3PA4xHJ7bK`!jI$60O%T~}&YpeC8B2nJ4J{K|H^ zh;we`qHxfVLx<(wJcsT#ihfX+Xu4pPi6gg3s{RcbpuTsC-APyDwWdHiLDhEO$$wYo z4x0s!t{iJaGq}n~s}bR(M2xFEEeIHjz!Jii}L$qwkg`53| z?%9Bl1deEX5Ny#wX!5FL?0{Yt2I5S9tfc;bO}2^x*$Uov{Sz$sSU|}K0|2kPw1ZRD zMHOSUN*_*BUTMFV{dx0Kdygm*E}0}5PY~gys(BfY zeP?M)$ixh>9f2k%)lLv79D$q;VJM=cTV8H=I%ZA1?aC*F6_-O@7IH@*G)l|U@neP` zs9;Ty)Zyc*eJD9~RHPBq!cUb@!*usgU|k zGk2rFr0)j=nIvc4Zu!w|t`uUm&nSL9m0HF?Ba=lz?LX+cVA57UrSQ~+WyohZEL>|$ib(o%^5Y)^Zuc+yHy+-t#^3V&|KkH z(gVwYz#u0bo_wVB@0!jAqg?0#B+Ce0tXUd}Jb+ zi+48;IkD`85Wz$>ff|E-0~Xl%B&tB?RGgVPTfGZ8!w-M`DPiul<3Af-quE`wr% z-g0@Z^VY4ctU|a-$lF`$NpX&-7!QCMDdc$pP3J#YU!o12qm!$s-Fo-PD{JPJ{ox))>VnuNQO$5S*qC( zn-B&?fz^Y)>Z|({@gdv`+pb@kF~mayj-uVyZcJGvox9S)kqYuDR0_*e)nIRLbZF5T z=ixJnMKV20^UOd1Ox%+n0}rr5jupMn=8gkz)yrZPDV%w&FoiS7vWdRUj2Bt#6&x4!p%1Qw&{aX<8%2HB5fDeyV6=0YhX%!GeH{=BWZBatj z{VCBfEXN?7Zp%;K7jya2&b)_9bXKIBX_u)?cJ#F`hJ}!JF4YOuEH>iRh!XbR6H8=G zkL>3wL zkcO7zLb2Yv_9FJ;tWIonoOfkUZgA##bhh|~)`lV}LSw=*mV;HiUHa?Sa-VPOYXjPC znwQZne0~K#rEO^~B6dmgH}0_IkvBtMd9dwI7+Bh9Ti7EbuK$|(1Pwi5VKIK=EMoUh z6A_WJ7l|~TcSFqf5xY6?Yq1a#>BQT51n6c}NvP7L(lxF&khuvCivZCG{2sNdv0?*C z1(9?jrGg2puxI$Eqa#F}UPQ9gz@qZ34aMtkdrbwSShC$T0@S@c0Q>gG9b=Id=zXv2 zT+Vi+G)0C!$s@}8vV^{A)zO~poMl7m+tp2JCl?Pb9?6M*DtGyojYG$0ZoZ2+EId)6 zV0{XM;!}supwCm4KKr-U))K;-rTkbCDzZeTz?<)^jT`J&Lv}e&;?ss8G8O2Da=5+~ zE5$Ou%qLksp+|h%$W(($0pe?xC34}fuI!D5VN$3*Hkt@dc2zd znYixFw?WjV(B~z*5RK$r_2t^9!+Yp=&!4~g9Q4;Kb3hsNJj99!*wcaME2!D#aMwr)U2^6kg|7-SIkFK<_ujCg zgn9eL`i5(i9rI|R%bUJO3IoeV(`fo7$md@z#!UdH;(T|%JV+~~_kO*9?{0vPRTNiC z{?aeL31i%9oK>nvQbgpjN@+WV)9iJg8Cm#OtTL{6pcXURzwR6OyLY34h=>S`9Jqdq z^?#ljP76(Ivi+gXD@u6rFpfn(!PbFIpd__DPR1w=5SVWN^B>Ouzv^P&dh+}x++mc@ zc7@*bZ;q2n8Sp=s+lT~@N1?>yFIEQ|AdFTc(~f*%rD^EeweQJz4cRfZ6LL_p8UN=J z_et>7S%m#o-yC>+>|Tu$#?@oRT0QUo^29$8d)Y4es~C0M;3f}z?hmaWJeX0+iaka` zyJ9`A-mrgT2AJ_oa5Y4bk8%aGubo8%mtmO^4Nf>*a(hmz;^&16Q+GXke%%{G0?iAm zA*ook8x|`HpdphS-6kdV9;5pa<8?XO_>ZePJbFzu5^WRP& z?KOIxox+Jcm#Re=FY~fE!q3c_-n`B(dN%jc1}sEhD`|A0DMG0=UjH2Pa|xrMp1&EYWrTB>j2eT- z*(KZo(E|64T)?9v*-q38eWMUR%w;F^b?t(bz2JrJr&Z}o7*0bPVDRfghy;Op)^ev@ zQ+rb${A^V2se@nYn*Q{PBB2e9Z*(D5^A?3urpxO8DODZs^41)mJ^03SDJ_c>uII(n%EU<43Peh`Wr56I1r5Lq=;inl1wU}n#<9G6+wTtD*{W+| zP2`#Fu#>t|E}ceLpYjmgA&3rOJ4rlDZsffdm`&^oxqc%fkkitO*cgGUt#}uHAymTE zd}Wa@j_||8RI@$IcJaf<;9!~$vGXMz9tQHZC{9x@>h5=o1$ptCd`GSbu5I*7x$wUzA&cq|7dUIV8djgK*d0@Hke!E2!d1ncRAT;jkj?hyRy~ zM@yi^GqACbt9~*vV6k?eP6p&J>P=fZNy#PtU*K9`b5oPZH~R{J*>vb=Vvp)-aP6I!ZTtDbzD&O- zd2|luB#+J`IJ_`iT!AmrCgi_%xYk|u{W|->%#C^Yn-Tl^=nmh@#<`~LF(qc-0KX24 z|0>^^BX6fGJCrVcht40`V9de6DZ1t{Fjo~PSbu%{*DB0AsS2 ze_z>p3y^U6jRNT_4_sZ*lYG{@E(fF?+fhc1<2TT4e5k z3g|K6b#tDXFB--GI`Kx6VeIVsD) z9Wmznt5tq-K^ou|tqEqK98k=D|>K!f@ zok^30t{I2v-b`m~JiZlT2d0W&y+ptw!8P>U>Glv$5GiPp8;MvUo!&}2V{>=`vj1_L z_PPc2Pb&=U*Q51Uf2R2Bj9h>|VE+CG&tJ!;1n_M>u*~RE6;tg&5^iumOIuwUNT-KP-R@YveOwa`M;DOuz#rg5yof`go%lXu#@1^W% zMbmKqy!ib(u{OkkdsPoCeh`o!nu-Ks(PRaZN0frQJ5nzhNq;$Z^%+Svpqx^WP86lF zgciVJVi%d{YY5&CY{lf7g=N+U!$S1QT{V0Go#km?7(rj4()|08#|w5QCLt4)HeTGk zUUt!ejHgN_qw%_9ac3rkGyvrjg4~UHC#>5C;hcEh?S=xnP*=}Lxc>IPntfktTPuT_ z%#JGXWTlLRY^++)8wWHzUJH05k8*lf|B<<)@<1%ptL+q;P47T}vxkn^$XLQt`z zw<&yRVpIIcaMsA_`Ihp&xQ?v%8hPFv6c)sElB+}5Ax6i?|HdZ20O&r>r+VktL!G_5 zYD(19qqzZ4k+q1*xIR)@NrT&)h;Tq+o@vRtfByWOKp?!2!w8^LVtI=V<);zhz|3XQ z;s3g3xgMH>O}#fJ4!DQ>_j|l^e|jsOQO3g?^@xOrGu7wD_&vsiVKAlV&0cPXN3jjf z2r^PBGM)h>TW7{Hm%EZ?5Q?Cb#N1;EKU2?&7iyAZ!v<5(UvCp|b~E`wgrT$?Qv+1W zBYj~wcHr#(8}KWFYJj6R!j$8Hm)8kx(h^TBfA-Kte|b944w6;Eup-*Z$W7smq!&v_ zuZ>Hzd;6Z{ezDlXBq!VDdvr4LPV1wH;Z^;PCh=VOdfc)HXW!AG!o2x&)g@nLaK}lyU@CteauF?^8fvzZwYWYxdGu02fY=lY zH-}EIPpR^+MqyhujVgT^wP{FB49nkIohGc+wUST_=fla*;$bcEg`qJSfh8ud9TuvF z*ZV&^_lsWfm5d!WRMnz}J)0*W=!0;7J5+G%m~Q*fc|xtO%f*H+!;d0oc*SyB&~<1d z{Hj{>=Lg!RUgTb%+2bzq&#;FSS01YL9%7N`A@@9?HRIdILiqw$19xg2(_q^!^qi0F zK4_=G0^dz%C4Jb>;oK)rcAj)hyKgvZeEWgmrtI86Ec=0v<}mDd=J;{%t~rbg;DECSK!UxL`E>gG9MScVya5hMvy?>P9j1r>U&6z-ONL6dfliKz$F(oJ~`?JuEN`?mZjJ;k;j?d7b^v&tBc}7H$k*aMT@u;KH^ z()KGk)yQ|ZgrGBsua2MB`Q6{!lFt4QK708W+!U$Vo7__KAz_RN5o@~zDXAYW-m9Lw zO1NmZOg{;fJH(V>cE4lsO7_Ht?P=Ca34gs8?UFRbrgCndfX&nuq~7^0?~2_qzjhBc z8kY0VKYH`k24>K}owy*v9YR>@Jhi@zjEB=lF5uqQ`pC8s2Q*9>95f4-y=W_F{ka?N zCszJz`jTgGuDNPDG>m%E(6D52XIi-&xH(iy3_phq3(tG$l}>&Bn(?O9tk~;sXxOnl zd-)KJd%$?^9U;V6Eg02>35I15?EFg2dzld{+xl_Ur4OZ;z{u$2c{{u0f&vunF~Z50 z0vGx^W$dzBH+(|2p-9gXf(g>4`FT@fXKIzjQ-NJ`FC#BLU7qR<83{|K@0)2r0rLL5 zX*lJ|{Xd#6&m^2W@mmB zybq*};&a`SNTlY7NFL9ia#Wu-AvzJWiMK-n9a7F|t`ZU2*jz zb${(GH;a@sRy1HuwZ-+Ddp$eVLJ+{;eeS>`VM4AKEsKWCPw~T)3Zk z;d-($Gf$sEfPIre)*2|D>2d;%Ojcd^cP}#?Duv77Xv^WrSoC9Vl+o{0fgRhGcYHe$P&4TA`3H!Jz3+X>qeC zD%bza+)NY4xy;dzvp1bhezABXYk)h(o#mUn;hyG03Z*ISL%F`ko)Lm7tYysW=*-@y zaBmxY?G{EgkK(_c-k(0}(x<<+t6l_ZUUuR76+bgs@T93V8D{@r8HaM66TNwyGYO=BDW(L`9N-Hnw7 z?E6vTcQ+6dUJUD7Pg-+PELAk@&WJ+_ zndo9Y$=iL&Qp=12v-n{LWtS|nbPr`_Fv5ff4+HQ1+&X<3n27|&IDKWTJz@^ev+lN{ zSq>B&0EccNp2#i5u>Y#xAPVa8EcWx~)VIsTE6Z(F2D*t=vgC1VqC6K})Rr^Fw(=hEd2 z)|7%tGttwF`u0(HY81D*bDJ#%ZMXa`3?b-#D&0s_!vSHFAT~beGVKqmGPI43X24o4 zS|dY4g~_s7ZK??95#vZ|8OvZHJNxB)@I=9h5#QiWV zh@9V;?Oe=Zb+LJ%Me}~M#@Er-3qDWNyDtz4|2C+|nq9$HNGzV}`fE;I>mp4D>yykL zfK+7=Mn6hOl)=wEt+8I{<91Jz)C4$Wzq9TF0kl6b?)Vjw;9Q7XCf4k8v&mu6e*jj7}?Ioa37j##G&| zEzT$9)1nlhcF?FA?nEab$b!FSX-M%KVLb7|h1MsYU>$ETv>2fsswwM$lNtf6?Snx_ zBKX&&`lFF-6Geh|hK15V;x_BQa%=(RBlv9^R#`OsQJNSfFe7jV8SD zKYdcp@|R;<=|J;v`OcDg`4Os{U*d-TUAaGPzSdPnim!Uq=Yav$yz1{}A~i)LL(3}Z z($TK4gjz$pN)(`uK-9YWZLf2pXVB>-uEmONQG_Go(Vt;+uSe6B;5;>7`QX}_G(<=0 zXBwRs)o+HBBadeN3#5?w@3Pt{O<1;4gtUj(!R(_ z-7Hn7)Pq-5B#P|Ow8}N7yP<`&d0H-^RVX~lUidE}?$cZAld^n0 zrg>kd9i;eeNiR=c%G9>%K^PMXwyCiU&%Iu+Z6i@=yoBtK6p{?oS9?|}CjHmG(v_8U zrdM^LX283A)pO&r;?C>2T!`{ulbK;rvVvKNdbBI@i*$JdoUZ#&5*P?N>l+VYK8(~G zZ#OcA@Df%e+i#(xpo4p7bN^>`4cd&Eo`<64;fE&84}dzuYi9+@+8(+fCLrB8PuM>n zSFJM~TUxXGipIA|8Nd7}aIC&EyZ2#F4*B4Lv`5(O;ASyRz3gjxxc~Iuq6^^SqE*sc z1+>;OQ)(RM?TesSzR65BkAP8Pxk4K450PZY9mf1j>F;#*=AmPIffa-&#OXI{-5`0G zQ>?KJ%RK4Dmj{aR%OZb_>Zo{40X9G*E#bpk2oA)?5OnnmWLN|zb9B=^4XnR)JLv5D z!o*L#7&ks!_QZMJ*|A)6x+$?8j^TkFwwA%o_AA{oF-N(glT*)AS4=w!;?b6Ca+(OD zyz4$A-d|U61k&A@q0Bd-o+B#0I}M{3%j#%K; zya}-=!`m>zj{2n|skyN(-qj6+z(NvB$yZVRM)fYEj7SYjV#K)4Rq+diH3RZNP|jf! zb=T|gSeJsDk}X7W5m`G!x~)A+rK|kJy+(vm8aOq+?0)nL&)zN>jGg=aPBX8+y#V*o zcb^?_Xc736V)P#7{u~a63k}-dJ=Bj2I!FlB#{uQ!4Y=Jh5#>^w*)HRn2u|7>*d<}6 z((3_m?I1AcH6gAgpt0KIf9(>YU=p40!TLc9yg*myLLjPDJ&^7-PlWOCk2(Vr_(*gY zqDvmog`0$STp)kVm#7!5uD^^gD0pz$0uVa!`^Iy7bJV|jy6IF@htCVSx}n;Np;SsL z$b(?@o=@hzKBEqf9mP@0@-=uYXSr>9%=Uq(BZuZ|EdW&#V0}ZW(Q2<11Cn14fC_5H z;@SIhgR_iloZ+8U$@9PN$h7XZyj}+Zu@pGbN}afBlGl zS%w*<7}I*ES+zupXo-~%oS(AV8ghBqqBfVL&aV{4>D?Pvcqmu=m3;lbJ}V)7W!ETG zt7a{3F(G(G?CzPG8mb_)T&6O#8Euk&eM7>;LAB^jDtW0=coRBBp(n^Eg9s*Ig{jgQuKs5ndncuSqIo$InyF%fS}waG z8%K~Ce&s!o{%j`x=gf;K2{%wdkQM4oENUO0&u)e+l(v*nM83~q^C~aKDOWaC>9K=! zL2W>2i}5$qg%hTjijHGu$?sJm3b)u1b#mf)44C(E!#+@%v_V=z_H@x~PUp}GI#UU= zdj&FE^JZUbF=ALns?YbF(b!3R#)ZcRcBdDdC#%S9B_4iRWFr)wG{D+lFUk_8E`*=M zO2j93IZ4!E;8~ioO+F<3@S?fd#Zo;u-rkAL%^xuIb zjx0A`f7FOgP^WlB3QApMA8f+C_mf+LGG?Y+Bdtr_Ry|nZv*D-EBO-eq(1jq0NJ(YA zP68Es_{GNkJbuC9kM}2NTPs~JcW>-To5`>o`TeLQ*VS3Iaxx#C%9Hhr3C_}?6qO_e zcl6$ol6itfP=y>@8|GD`2`gR4JvV;f-ix5JhrcOJRF4?b4V;-Bfxof+t?%}28-yY}Ut7@=(cr#-+pFyE4 zGuosVx$>IU`TAO3`9hL%Z@0a2Tlg{bmk}V*HKS*v=~&hY1CBzuV!~oWxH{ReKWzWN z6><=T$`IrV4D(~UKkC1e?nJtTlZETZ;Tk!g%GhVKFxkN?;StrwQ{vUzJ>{H8-mw2U z$I&2{7}y>~3H4_mfPrM=Bl-a~Xa*qs>KXB7V|oTe^@I-7{+REvVTu^dQ8CZtU3-!S z2>r2y2pvqJ1t%qZ;pBRae+p5>djC6!wJXH3*d}lj%W9GNa&cvu@l;roP{W;mYZNi) z#!|9U#4{Y6kSUDN#wi}6H;{!G9?(0t#n+Tov4CIh?b95=P|9*@E=P6p<0|Vbx;*<2 zYQr2{sb~;QGcR*uzfBImh@Ai9AYIgMpSCIW9 zJ~TH&;L!Pqz>Foke#S;tOo~Q33Tg`rb-qdCnKDJLT9&PhNFZ2eXKB6K2$|3HBGvbg z%s*Gsbc*#~++bV6$X;TrI{B7*DqL-%&LrPilj&}aT|%IPWV|6w;F;_LF)9D-d{nyU zg=se|-+HqOx%Ayg2wrZ)z?wztrMbt}C3f$1=-xHoq$$z779XDroX}lirPm(QF6Pd8$Liv?@{audGU=N7cd6O8;X=5v+#FR$`$6kX3>;-RZ17l9xJKZx zB2xmym%i1U+$f+R2uD)pMT(=ncx|wIXp!bva-;7$_Wm@H{Q^8RdNo;#=H(6ZzGzfm zn-_Pm`reMFhhY?k)~;?%kjFR}^z9OVLu#{@srvLTpdL+S$)F!BFzcJ3@;K7|md2Dt z)9soMy7iPATmvp8wd=m+NW~zfB4a>l8YFyiyP8lqrxsndxZK503j3KvWrgs;heWt< z*I$5KCL9#5Z!n>#-4^|48(1Nrkpk#hGM=UL!BVq8fb6fjww&(tKC>qu!m*4o3r4Mc zfPm{aA24IIs0y_=gIbC%`fe%PXy3IBAmu~y@hH-Ul{0e_237``DBc92#?IV#Q+c=? zuLu)b*96Y~>oE3I@M=4}(~*!`$Hr3)feg`h1z7R-3=rbvDr78;*M9EC-OtnY_PdGv zmqWf{Eq0^SZ0km8<$=fDoA}0CJ47vWU`;^~hs(r0NkH}LQ z_98(q8w5CuC*8KS{Ymlh;c?sVF-U76E$Lr7z7FcavqvSShh9am5!SF?>eJ0uyv&)A zTohjn)u#6;J)TWzjBFYBLd^f8g}a>R+|N2XT>@xpA^Hw2DLmbHKKv9;)=8{v{%yCx znEJ2P_StY7A6kN_>=xAPYYCnq&oJBa(4BhxAU~vd#SrtC#`b#fllS@C=|VBDpWuRaoX-Hq0UP<4mm79Vqwms+An%MCSglZS)&I zYbHUeoacLzW?p~$s!?|x_uMnky1MJrgZWX+2JS)_v!4zS7PT~R0^*$;xJY(S`#b1l z%yfpS2zTMIco(T0gLU)7N`$abpSNvouA#bff`vg z(03J9W94-Fqbz&|=jJ?W;h_ml)1k4tpojbURm7y*KW3T z;pM~cC@CS0U(P)qoBy`fZ!L8hM4r((x&^M7^E@<-T^uY(sQ)FCc+T?GeEM`ZyTmO2 z2u=}L^>G!PBPRBUvO(!oh5rK^Lfno1?(*Lermz!=aHsS+^-|aLBZ%9Viq(I=+&z#u zJN!zn%3N+ohOA)1be?wA)JC}t3^aj0QxbkY^1vJZG?Cs1>0BJN5N$vd&ORud;H+>5OE137t#7K;Ilu8`ciSP?8*cS36wH`Fhkpiv5 z0Km`8;_)}_BlZq;bMez5diz53zSctY%yBh7IafBXi3}NqW+w3x;9pn|`UM)3z*adT zsY2i9R|O8zRYYX{Z%RfAkBVR~IH9KD&i60pB|~&U!cymDrKK29OFFolZr7<1w-7Fs z?Ks5HYo}b_RtiA{nvb;a!^5MCw*?xO^`!IHiE?tCr@}w>OBBma(BdnKfOBe*O!_;2 z{&A#Xj2Gb`!s-^1!@|1P+3oaJIHmAI^ZN71PB@m7rQ>wLml2Nw0cWARGP;A7*B98) zh{~K&OluuydqJfMwj^wVS%Pa}$r1`h&ss862;effMBRee`D=lmcH-$7=qQ8%=QNx7 zlj|JeDEsX%7aKX0FczUhg)FKN&m?^{5-=~>YN#LM$(x9Dh68%*h-e_ch_>)>?rYGX z1ODYus{3=9$ys%6RQGXJ&Pz`wG@E2AJk`^$Jm|$1Xsbvb)dZv77}s~VyZY7Bnm-dp z6Z6@HwrTzBIv_u23e$hDC3+DN9C_;#WtSFoDsNgA>5rT8v0pS)2>g+_tCL9lqf_`P zu-Qp3S!DU!W$PAfO>)hkdJ8|n6ar-M&2o+`$wqH;=?8g$ytNifkt3@pawvJy8HcuC zc=D_xcEP?r5?&%JRM2`8t%UKpy)N4wOLGG}UAsI-JoDWUZG1WpDlw#9O=M*#WWz!Q zeR!r`9=4|LZ(w;e)~jrSN`ZrpUK~l64=a_95?ZZAq80jKqdQ8u`IOO@T79^IWS;a5tW&Rik5pv8J+Fra|-IEda|iSj}~Wad$<4g3V6>!c1}zZ z!??a?`>hv4VG&6B5RV}jA)N6x(i{B)R1b<(FXPHH$PEd0ZYaM^l4!EXB&<7dM8`NH z6hPD>aa(K4a0I~}t&?e$cL$&3C6i@V{&W2#t30oiB=Q;F&5>VtqUQ|^{hlSmDtK}p`j_X;Y$~`V5vRx zid{#Hpo%d;J1|}@3OUHrdpjDGS<>g7GUhU`$~K;7WnSM95hBt6XCz@3%XcX}%=)eh zw*Etk^1==B>k!y4ORFDLJu}W!-7W{>;fWoCmiNAz3#k2}>z;kKffx!B-+0bx8@LTO z!ZG*`do$B$7% zX+FA)T#Iaba)CK&9#2V{^-cOF12*<4gTXwcMre(yt(cZwf!sL#=hlP!2y{k5a|(Yp z`l#Y;NN|=!Ycp5CNLGyLcA0Z?m}*X5JzKdfmPA~!_Kl8zYro5?=ol?AgEeI$$iDCQ zYR9C40$|a*B(Asi-+ol8PTLkWBv%!c-+l2#q2;B*?R|`BT^5-)t{(ZDr&f!o(_D?A zOed`^cv4@-N4O+t=2}HQvidv1Ok>u*ThnzRr(XgiVBg=tUE%qw*j17z=QdO!WU%Kb zJ~5kJCD!F1a6>5(0U0S8I&T=P{!E6;`G+rBGxvUeS5I0UjdqDGoAQ`4!y6&)(-0EYw*C48mZHB0}Y zImn@ar}zNO>Wk^)5BfR&E zXNAdyk@ro95BMn4_<3TzNc9$!ln!VfkDJbqfY~LOl)okcHy$}=j4USCL-w&@rZV9_ z=R(``B8PFl6zYbB4L*^h7E~VmQ%bh+x z);!}CFIGAf_Jrl2L>U%h|LsY;t^NL#!gBt&(&{^Crtqi)(Dh~Pz_3}$|M|QpM}QL; za1NYTwB(B`hq*n&0k^iD*?y^&W)v5!F4})0R~rA2_;J;MEURVlsFqV55x2~mCZ9K< z1PnX8h2L-3m%a?58L&d~0!J{sMCh_8B#mu$EA5`{R=>Js4al!Ye2mkt#KuIuhxL5K z4UgpK(>+TV(xKD9U?!Ljuhg}c2nQC_44GM=W~*;RthESE*~CE;YmZk03Cd#jle~ni zQLe9f;C?R{_CCZRK#`;lV<7jkp_dBWom~uUN2zk2z#NCPK-_q*-tJD_(36vaIhega zMtYbQTu+7Obx%XpACj`#BmtY$#Z(!PM0n|QP(y+BWrS_vaWq>>ho$ZPhTrbbLVLeh zU6yTX`KCM&nTkd5at`N3>;wpTrSwYW&NC@jIlIa3CA~1l)NsF8dx^2etfE#irxVJ= z^(@c6D~t+|(}^mUW8M|>UQiR)jQd!{OB*NFAvzT0;yq%oqNyxL(n0IYdKfFHf`;G;PyW{Pz8=Dos`BXC zU&L+ocqa;-hz|u;jR+^uvL&l@1zWytYW|FvAs6i?;Qo;dGxrJHMOZ2s!F`e7M+k|4 zQM;})qhS~EGyk|w5vb_WWhF4OF`R5)U@k*ZJJy%4twU*`By$dk2-XP` z9aIM7N=>s9$Tixa9XCFix9spX+0i3U$rVkeK$?}w`B$?kCK$Js+>`(qMOO0c{}28k z1L2gj!897VM=|8n+XZUqc5{PXr+N(iYY#|9D?c5YQN$bE_vB6uJR6?KnQ9dqqZ(i8 zsWt%A+IuQ&@=TYYg>Ab=+**e1x$jtW06~$Z3^wowXqk?LAj2xRoet*G*2u4x%x;#$ zVRNvpH!@xj_i?O>g`v)0st}*@Z)A0O>+N`@zuXeNSqiRF|D{GRKUc$6l(GrJb zN(mU2^!b${y@fivF0DhQV6>+pEZ5GT4Mzn<^aIR!Bsm+vw}MCwjFkHJ>V+n{9Ug_c zPCDBsPJ-z~;iOiBrW2=&Qr?u4*Ufu?gJesT@Zg2eJ%f8q{W((^CNB@sVOe*9Y`gJ! z3+Py)xlPq-yi6B9KwX>x*mWpp=B*I^X951iFkXAh!m=l?FUu7Y{}JH{E+4nIZzo$~ zpXAhUFGMEkXZAnTutkz15#9v~|ex4M5PsxjFXnGR>=wGq35Cu3boO#n>`nYOk zRpQuhzduK|v?dgp&Vixyv>FUqRn0C$a?Pii#V0PJi-=bOi#qyqKh@`bYq2a}XA*^t ztn=&bL=;}HC9I4BH`dYyv5B6U_!GsA z$I`W1hI!rmT>-z-iu7-$<}Kt986sBbEdm)gdmUX0YFl3VDrvQiM|IDYYUBpge zJMp4T64n~S*Y!7sfGzsBTo3%z*1@gTv_Hr+Hwg&}wv3`IT&X@bVW^m8vxUn%^!H|I92( zf?AkCTG4nVH6A;>^=A(%{`=OaH6*VuyZ3p4rN{`7Rb)M>DN`j<5IQe*G(P{<`|?_! zJIYhcn1ahj-oh2jEW<|c!>hy1t7=Te0%VoJ&G6$gY|Bb6dYe?8TJgHW%`3a|L$S|Y z!_J8tPxQyhcMKL2dPL)gu?Wh@Tc~Or>KdTc#1+CWcW^y?>ySJC5r=;9tb}f0toa{o zJKFs|H`o#0yEm}W$Lw2x_WNG%YHc)$-zZ=+JXcq7!i2wzq%Q{x)v%>j1f*5;l`va&h0>50}>a%HMJSxb`eC{^P3A9UNo| zh{|b6Wz_9+<8fYy+)Xw*rDKQtV$zgL_VP})*$Qj|`!MaN3ApPMy?5Ki@}A;|S3u%G zdGJCiy$ZF|?@D%k@?+&Q(gyq*~r%0LO~$#!3VPetuxy{E0TLs&z7Vx)EJnWWe_ zp`R1_dlV^TVOn9Js#sDOG>ws{`mqyn5r{?oGE1mZEN}6_(S)L0kCIo27^PKkcH9fH zY#mv#WNm2l02?b#wOF8`8tR1|V*re@)Kd={awoT@+s*XOqJyS8bA85di>IS^~>o<$?N z1~{)Xyi|}ME=^X3Gxi!xMB0Ln+H@C4Zr}sU89iHk}JT}g?-3DxVyamPK zs(Mh!uV+Eh+c^nxjVO?AU_Wc|-}Dc8t(RGt1Sl{HD3k7Nd-0hOyGE$hr$fEM=i#T4?J6?!Bm zVfTKNFe+~*!hn>m>5H-I>_Awy>ZN?4C2gq>KuP&69@OYv*WV&P??M&44q66O8kgIkZsuUn=u zVAF+K6tZ=r#I}K?e!LTMxOh-jt}>B?VZynIYJYoL0LW@V>ZpFQF|m#3(^38F2#Uc0 z$VGdPJ!1VeOaIQr!cQay8VMCK@P8l+wzy7f_i+`oh8{Ia(=adQ^}u8SFi92|5D|ym z7L1UQs(csak8UdpN}Cm#bHEjs3y}bKb~dYC#wd{r>CV*Cj+Kj*6>4mIKI+v*AI)hk zLwgwfuTx91@iiary5$=){4t#5cHYbkK=z*S&}LI0K>8-8{(a_m@a~O2F4d9uw!WOv zCIU3XVg<~$8);IXriFn$9f}@0jt=k)`WR(s2)^%Xt-)6Q$J56m7)K7J|279ul;KIi7U1_+FQGl zbI<7;hO0i^ty4xmvB3u=i&SXYptkAe^I=q2KLrCW@0F1{OeJ|Uk`Twyz|W-rQu-)JyG3#&s~^31AIhB)_-KdBhHMo;?o?o#c4Xd-K?-M#Harm{TWQb4Nc_6 zvJhz@6>FTXjS#8FWz@rTZR%5ceF6UJMRr(4a7&{=+R|FEjOG2eg;DoleunPo(9@?^ zSIMmu>aP?)=K1JDtvwMc+KAdKzhzD0`X06KhU; z$2_`k7PsLCD}Pas+=2Ska7b7xt_@K^!~g0NZ|yc4jf&{2RdkWvV-TuHmJ#Y~W0Wfl zP~X2S9I`flTA=8nX-Z(?s&LQ%vM0#SY~gM%m`aW-$#Kz}ED(yTpZ=`gIk+n+qOK&gjrGJ zDmyi5Q93&1YGG<1^NK}deysPbH{qFpS8rmy*SPJ=j8bqykFYdTMiD5xyj0yXV`|25 zk_7tCN|JYTV{5VL1as7`E~|FC5=3^o8hM4o^*7$Qns=mKiOs4#%Xr#c%+bYBnDf%P zcAJ)HDCw*8$ASViv);gC!PCGp*evJGZrBdCF5hjoZn3!+rLNv+;oie8T&=T(qz&LQ zPg1F=&Am@Oyf&=8LTRPO5Se8QMmU{#WdBLZd4YT>L6e!w5|SgZXsQFf_u&z_t%E!Y z+!123PNZULb==u2q_%SD*cX4{%VlHHvw3wAW*9<}+S1V)R!LHfy|g_f2jy!*A|;J3XFmiEM8zrd3k=RY!Y!LxPnYb=its zR{HG$X4|wcbRTs$wT&_qWLEax+=unCv44c{wWKsYpJ3fwn%W(6YCLKmagp;}d zkESn=ODgZbZ`Nj}sb<<2&6zTt7IQ4kTzRIZ%pA2cHAUo^tV{_hcSX3ksbKd8$e=+Job$OsO zTUmoY*Z$vDLrRMZJXb#GkRDUrbFQN)jFQrA_DqX0464qlE;is`?uetL=3^ItMd9{) zV_}}uEW?O!q5W}2rBaW9zVkQ~z4Beg;BlIjchm>f-*5?ZMc?tn>YpVLo#_+e24YaD(A|fi1|^{=RvP2LnVt4COi3P|oz~E@;8H$^ zn)k50)=8G9K9(N67L{oF`Et8D4Pt9P&14+n53K&X$BoZF^Ym10h<4DM!=PvPnAo_4 zzWcZH?Gykc*{MvAQ$eBO6||z1K@M?d5R-qbChr6xIJrVn!=coOg3C2; z%07M-N+>!X5Ni2%9;m;SzXt|F>C;swRo%M`F2qEV-u%Vsw2tX;IIA-6njkKfRNCjyJSVJ_| zTTuLo6@-9NA~<4xON)Ha>C&m}y30C?n<6WJ=z(ltF{g;2j|XxIjbb``C$!8!KCio5 zeqp_M%luj4-PgB|*ET#W4!k?wQQ&c>ZTG9=30^N(XERBZvd`0=)7`c6r)pC}f8sr^ z0%wSXV?vcZk+;4rKUuI7HoMo;6>-gIg}2U=e6ZKagLRdcU~jUCShbQNg3JseB|x*w@q zd@+FXn0yVb3MUyv1p`TUf-5NyJf3zN-+9F33g}y?v7{A_Z{Ty_TTN0zGCs0lefjDhvMehqCh-hW0)!^ zc5Q+61yOohWm6KjD7JwR-Dw}?nyf^z+rc62#amSr+pQhwc2-R`o!OBe9#~vj0#OsF z2roADt_ZCl%Lz`ErGsY6hbvw(P`kFho2@jNkc}v*%dr?$71(tE0H(dcyWkUr%E>gx zAY$qB6sL>P@H`;xog)KJ)dP9ss8NNSk)jE4GrabNX$VthJ@_nV*VFIpDVyW>O`qd4 z7+ZO_Y7UV+W(*AZTT6?wd|BAdGdon$dyN|-fB!YldAzM zxqzzITYLlVSk8VK^~1T(^1lC))0Zu@LQsWt`OUXF)j;>$4B)xtLn6ca^x*Ec?zT7J z%DbT1?oBA2YVEi8T+tF;`@N5zD|rmR(Obe{yzpP?tXXNzVlwud)ch74fxG^#g6h*~ zay5FUtP}p>ggG7kyXT_42{@K$o;dx8g>j%wAiqk2G94+%Uw5*z`cp$BudcN0Bj=uu zjM*PrhSl%+y6$k2jglvAy8cefr^Q?wGLoOXo%j~3E+$je{c!B z7ZZfNv4wbf|Kz#T8EtA%Nf%rN*lihhaRtPu#eL@0t%>t^W*Wi*w`gR+gap6++*)7g z{Aa5b!M3l{RD2++Ak20L@))(#5jc%n(!AUrd`O-C*z4z!(?>f<(P`0pOZ;OJ2o9w$ zPaaM0Tsz&t4efWiJ*clI`#oaXwcP{q#wy39tS>N+$?@xwZJXQMSiT0Kr z9UmId8QBox9c1Z>eG=@+RQDbO2043Bh9nKd_rg&o2ccHzxmuQJH8~nqguC`F5ExS&iRmFsCSuR7{30uOBNjUSaR;w9kFpx*6S7fc$dLhCQx7f_1I8 z`SS_Jm)q<*gzjaNp+DCWk_)G92Jff-2~g-pUi^`xU_oV|Q|!H)ToON+21?BmIOtfZ zH+27ICGFZ&&94Mnhx4YxuWGB%u|Ww_%lG&-k|kL!X`f5!KS@8$xiwv#ehRuIHnN6T zM4dpK9U`bCXD&F7mS#*RZz5IRcFh~zjNjSQ-)fB5*4d|6NLBo5`ixGETA$~|GopUN z9vEM{ z6yV0;kgd4OKcc6n=cLdsn%;fqcdQ zk;;XMm2m?aXN08jqU&qe!*p1s^Dg) z4~Ld4WJ>rXGTspD{8th_(iEvvX%J@mvLADYqEe$S??egl6BLgNf;&H5 z+V8>|w*u3PXT(R4C>;d+6!u5 zvoyr>m-DADMlsK(t&Vbj`6}l%5X{tc6?+$|il&Tr(l|Vh&={`gF$zpLZj}!!-@w=- zI?~>Y{T$hmv0~1(Rdo|6!-`Gb)2OvAzGJt;R=0XP@icfXYWYaVdJ4|r+CpeU&=C4L zkb_eQivrICJ&0~b>PlSZkO8rfWOckJzZ11cT8*-q|_P9Vn^M@ed>r3}N z9^U=gi@CldYl98Ir9s=?@+s`UDXuO=uE(c9f#~UuycFLg31Sn;FL(1hT;z7}RppVc z!wpeglq&PW7Vh9k(0Gc(&p4D;S7!4ys@0|=jlrMVb+CpQ9U~RZbY4y%d`+R``sq9l zOifn5`03@N?*)dlg+y7~B{ z+;bzk;tJ3c=9jh?Px|0C&hIHLmtbw|Ew&@j`LHah=egsh>DiX@FXsGf7W`}M|5@^* zD)n?Vml0_ATeUbUP zz27QvCj5DG%6)aN1P|4qIP2-GkU)OO?2~2|ndfy(M~K?qWq&fJU@)VDzHS4c2llM; zMC9F?%ptQzpz?BhH-Azm?$ob%gCuiG8F(Vs!fg6h=T0QzfNY7$)QTlrrx-PXkA`Wj z4|YSgAq^c;Qdv)r<4Cx$tt??_yqi~`%iT@h{5Rt4ie?hHVT*Uh>+Z(txtv5CM3p3W zw4kawsslZM**mOKW_N0ADG$Tk+CQb9IATZcOkrWE{LqU07MAq}VhC-}zJ|%5N#y5s zLwUH*JvQdevNw0H`i83RJJ9bP8gU6_Lt6t8s~|b{6+jaXJ|X3$^zNx1!8Q|Rv^cG#h{!+!K4hbV>sFCnlcqI99kB3Ylj^%e@kRWqcY%3)(;O*fs9D) z!k^T-^4W9+&x{Igo>fgwHk#0MBW4z;kW$J=XvFluR=@6DFE)u%SwVeJgO;%pO{)7l z9n-arwPg!yzCPuI^)Af3Kdnou5T;y1^(A%UKNX6H_KCWou%S0fkaqd_!dS*3Yvuhk z5-H7Vit$)HES7I7s7TjD#=75~oaNzoyaC(444PrSr`|O*G}^v09VTz=tMGZ}s*P~a z_E!voaFG-+A)-teOi#YsAgNIcl_M-Jd(JgvmG@v|sH(06QF#KyK|sPamoSf6ny_Y@ zPGrMGjW4T<>#&ExJ6{SY0+OM!zBD}0>C@OIDDOW~Mqn!}W@C<#qENsYsQxmT{RiWM zT|IdT`=>Cx=S_j;Iys=m(m`z1NnoHJj*+mL3u?IOW+Xuet?c)LHt~oQlVlH=)cX5` zu$#?QjRBa9+E<}0@*e_e)dCX~e&KVTuX10B?Ya#w_*Iq&@9@KbUma?*x;{99I;zO#;d+yX$sU zK!J7m?>I75TEi<<4M3b4hoofnOs_mHQs3}oRJG7io_8^)dt=c`cd_rb0@Ply@A+Fh z&g_-)ukx=?TWU~I<{x)GTRW>#Yha-BLcaWCw4$O;651cxsWEBYniO`+C-z$`R?%PH zduIFBv6a%Rd?{u?#vZv~ta?nu=q1=a%Bi(G8Vu$0F-asPivxgtf|Crd_v0a7G)SkxXV^vRh*1zn^F09RCEv5lz5;_syV@$`%2TQuc97|1N z3poTS^bNa-fAR^##@-Y37W~MSYZ_u|hV*?vK4Kx))dU7Zj*BRPC7B)8gJeub zTn+!nQ&R?(XU!nJnucboG$Wj3?LjujkjL#{8st!bsEBrXOBnAOFzZ6RdZ14Z=88fm z3G%Aqe#py>vXc$-3=$&Ebw{jGP)?WlT&^DONK3$1OdEHv_Fd!DVJUoY`lpHux@R3$ z#|!UftA~1X4O}TUb2w%4sl;Hn=R|}msjL#<@D8*dPe!;8Ih1* zeE2~~uPXz6kuKtIiI4NH+P)$%sN^?qF885PP?qj3nM0y7cq?l71c2;M;HLFO+grlT z>EhDMsjzqpyP-EuQK6RhX8dF=C?%b%zW4Rh=Lw&^+@CkyOc8nyJm7~CJO2eYG#tJ} z3t*T$T8Ge^6N|~Z)rXa8hgoG4&Du*|V|V{#K#zMQI{jjQFFtXkbYV8ApSk%$ey(gy zD3arcs2@L=k5R1*}3Aicu{Dw&Qu7hcZhv}UyP(D1a(*>=D*6t z&c&qlVT(k&n$HI7B2FXH<5$`#kI+1eOD16AXmRuX+3A{SMfI4On*noq0{tgFG;MZ1 z=ApF5B35a0eSmDKGj{sF0E-;;)%C*1i#a@I$VLa+?4CVQ*Q1bUI4-Rd%Gd z;}&ygfIlc?S)a_>tcgWFVfMwvg}-z7E2N{@$;vl1*YC&MJ?h$tKqSW%iw%N*FJ-bQ zvZc>MjM~AHi}$(y)D|FaYBy{714s*8)4`W7%Js@m9yYabvGvXgzMCFi=$`DHq?%$J z4d%-}b021>A@chp&z#wz$%2RnpoTsT%`jNtmuNsRT&9*uSW5kROt`LK%Ik>7v}SEL z+wgQ)+5?K-J3U_PC_$t2GX+HB(Yd65&3B)~-P~iB8&l@H4tEz^`z^Ug$3N)YKU_-k zX4EPJ^2=97D3f{j5NYCa1?P!GcD7g_8I2XUBBYrB=1w#l2lFwKiO)96t^NGKdH87j zoJ8XXI5R|PGh#E}J{tO^Mq)%*pHK_Aawi0^!4BI&?>Na&wn&VM@Q=PbS6Dn5*i?t> za0COx>k&UG7~~iK=9KhB3$I!7L(lq7mA%&oV&@h8zy5JYjtp(8ny=-f*m)>Trc)Q57fwU3==CB#@$T9TYtb$+4$NO-kN zoq4@sFWPbM7^e1B_GG0#&@giqeq*(|WW~~7q*h-ATaP-LQqcMsMe}zBQ>qhBPj946 z<$h~VjqCgV+wpD$3H|X(25ArS8j7z^If?BH?@|hLVnn#SQCuQ99H%a)9axo#eVmZ5di%yNG$IzX(MNLZ!lN<&Is`%8NM$w5I*Kf<@$y!BC zx))rmWJ*GpX&kBOM3R3EDc$DVIoIX71y)z~}^2&ZHAv)FA{l3AqxwUmW?bS^}0xEC&_58{R zVJlL4x#A~X9wW8@MnxfDuN~|~;OKJbqTIV-eKaUt7OE_$Ze_ybTGDn6%RqHENG>$y z2vG$a%hh0amc>khbZH0$Ux_r~g;)wcQQ1J|hU{}BH3f$pJ{w}nVW?6HZ7CK)F;cFT zpH};|#4*a_j39N70mDk?sVue}H{F~8HX6D?Fi@_J5(Z5rs0~m{mNyvYnYDOXen{L_ z<;RYF$kxU~a91(C+YHpU8}-5~>bh-XYkghQa`L9qs0=OtCvo$RQL#cK=th#my=m;5 z{9-=_PZPae*Cgti*ydUgd>m*4cJs{|>AX#Ty4C+M<(U5|nm+wTe8}qgInzy`Q7>C; z|3GxiSGdRDREH6!*;rJ6OcoLnS8q2Q!>wMUp6{7&%<6aPMk}K1Hi*^`JzMFb;qHF%3^++!=Qcq^4tUOT)P>Ft#r1>J`}fqp_L(c+tiHf-}`La4Y7ypM&=DvIZ9fP z!1oM|0P?fqqpyhI5q6h2^p9XMhu7>f=~Bn8qh=Pf5@z>d=5(i~#WIB+o@6r_%obJD zS2@9}LL0ihjZnVMoW!dKcK++#bAmy1jYWdq#EFgyUpCpst9Qw|IsXIlM7j;NkP~i zGf^9Nd65G(JU-eW6VrYTA9~$$HuPpbS!3g>e|99W*piTUC%V7%@hL8Yz+nyYTo=iy zFTVOxPGqL&MSh?MFMMmbhPqAV)__kKmm`64VH3-->uMLVo5oCTn@r2pbFqas*lMss z=R?h|&2k`92_k*|y+hNKh`xYwS0 zx6Ioy=Q3Mumef<1q{ceKEx57IO##eDK9d$|KttoFSlMcSq?vdV2y(=*!c&vIs98JL zXtgILd#of9pY_j@s5h5#hh&P1=D5B=)nKJwZ|}Khvt!}~wrwAJNRgs%jlekm@$0UeLJK$K=3;hr$^#em`L`X0396x6J<5Ty*4*4+mm3SlT;$So4b za_qDl?jf^o`n?gcPE^-YEjN&34gH;IciveflT^cKPr{v0p9ZZdhq6`3=c-f(yl?@l zURSSvaSBz?Xc-1R>|w+Nq{WO_i72rDPQKgpaHjP_ z>1F`7z|d4z6_X-K8OFXJpScswsEFxak(%Hz?AEcW4dds)M!4bHdj&`vOx2Zv<#6_DBsACfH7aXD~(>=G6yP zD$M9Ibv+qKch!P`^e>t$&#m{mZM)j$;l+C|hcWeX(mEdMUn6y*EvgYEK}F){<$$Uj zD~$*eNs*{?sL+xwSPeelS7X_b=}78$ zE7|)kbk5(SHU0P4Q0Qya+3YXOj`I({5n@HlZQ9*YuU2M9ZX0lJA`ixV?Fysbk$22Z zJxD@B4Pn5+)MIH}>5pY5#apF+H8+4^f z6t<_iLY7etMQ_^KbP7{O;PX|G=N$mR$Qkjgl?!6yjD@6^bQV^YQadC`Br`>e?>RZY z@kCxc-gM&u7+;_oqKz6@^m%i&g+Y-ez>Dh_DHA;hFNFuy$DIifsOP`m=9R&yisTsK z3Y*`(b1W;|%#M?QWbW!J42uFt5P=U+oG0T(Q^MlZjUl5!Yfyryu6d^eBHs3M3AV*& zPI`8@<#pbniaTNC^u(X;(lYH}Ac=^BQ+YCRWb_(jha5=AJuH&cGRHZK>JRfF+G4!% zs6F)vkBDN1lhynatoGt6S;49WcXCZdH?BIoTiA4{_z67za4?6W=FWz z4WS^~Ryp!JXJvHgJ4whwsDG?3CYgsJu-}bIZ~Q54-zGQc`HYP^`n@;ud}Dga9$CbQ z`=6h_>x;I8eH!hRPLwu%!fUd7;t$;QI=scrI*kMWV(;NN(L;&z=7yA;dp*lvp~lCT z7^(Lk36bW=j+qo9i0-fn6)Hk>D)xvZSek@n~7w zLrUK6;r-|K*2H^0F!1-jN38IkNRx|KKRJ>Wt9oM=EX3SZ!I8}|Ne0))!$ZX{Le;5u z(sn1mXzx72*lV-(ql1(c!h+Ij*(R@7P33+mvA@2qg?HC?pO+kK)QDUotp_`nG5rHs zfomQCv+ddm0kfwso!BpB(CX7c@Vv`fs5NBMH<7Oo>MDs84r_^ZVc~1sC*w zUKgoYyLdrS&5fku!8gVkVhka-p0Zd^dM0}bopcYW*nU@BUg{mSm`Glyk%je!50eC6zv(t&q;a>tU*EryJ5JBgu0=5a{3wqZnOp_0Xq_-pH6(bh>d6RrhPIjr%U*7v}EJ zPOt6Fn)B*^gOd?xPM?P}c}aQ|eB9k;O}M--=Ep}zi2-Jd zaB&arfNbd$ON!R=FZTO;XXlsRXz>^w{dJl({xA4GX$p@BOHl zCb?YjpiT$DotjV3Z3U6mnXigoQOfHT{|R5r)rkUfWxjEH&h{ykQs(s?aSu>4>sLR| zUZ8u)zE^lrv|JtxmHsAscrM0CAJ$S2G$93-fxh_B1HPI4eEGjNHT(QlHD6ZzWH_Qj zN3`A>IKn7IaxSN$W^(SOt(*Hv7bPDk%0v&b@X&skplSYB#?Y9*TcUNm-bbj=rMv^Q zPm9{zI+YdyF8GzLYiABd_EEHOpy0iSKQsIIU_ED#=49sK+5r~_@7Ci2I+R8zpV6;B zE|kdkzC=y0jdJOJZ6?iVKZai}%l>jCmH)Cob)7&OFo)HROtP-w3EKu+HqTXEYe5s!F7~E25LvZ#nZ=z%+|ibP-TkkJ(y23Y2t#95Ub=Z-G7`fRet#nPw+lg?7FGV5!h#6>KTD2g z_Lr5qFIavh5=Cku@KrQ}PAJOpzqzuWecFuT!VTtEZmT`io;(8%lZ9i#ty71$z09g!zXiLE>ofp{Y-_Kn)oM|GRN%};Zw}Fvx!$!#{eED~=`vWK zkY{4Y1iWJNCy}K%g~2Q&vPC{bopXuNUQ!5ZTb@Lpa-jPQpY7KxAgfwYPf0z3rP%hq z`sH$X8PuzW`ckEynr{3J0c&tjK^DdIH=`|j&hKS3#vBWPz&N!)x)H=dcDpAx#uNe~ zzJ$8h8*qFQJtE2aa;@Yrf{5|RF0D!}+eux$kd5SK@6H-+cmh3N223Qu%cVB!+kYXF zU1qGV_v7GR(T%8UuE1*6Rdv=f45>Tc$RMMZT3cmN$)^%mFZ!K8d-<6Bjyqne)!>%o zb?#Sp?6Ayo3Cg|D7GA_XS!{*PuRp2cbc@A=Y>U-Q%`V~%84kh*(kg@nsMBh)ND=0tn}jkgGNd(s-u6A$y^pPW#NG#%hM zf~mEV52aK)>@v%gPtsrs+%po8klY?npg8-N)3-AZN0^z-NIc!@@>tTWMs zYI#%EU6B*@&ADK+HWE2YZPxGx(v!694;4AXK-=pFpJL4_Q@TP{jc=C90UKc5rQ-AHlHq zy)4j8YcLTJH$N+*S^*!&-8`y^&F^fH-IdC9u=y zJ~s6C4fsCXIrZu9hk;R47k{yPF;7dY&hP_p3H}~P`jfom?Z5&sG}9B&C%rJl?_4KM z=I;VQc-)J%U}D47z^_<2qGRFn+2kepc?LP~oV=oOX|XE%woj>KX0M&rBRd-V@3W|_ zk?VZF-m-Bp3FW#Ky9sM}D=yu3475npS&j#CXgzg0g;G!uwf6e{%DuFuhd#QU>H)oO z|B+`R-<`QatY=p|J7$deV@EG;Bvu~Q32ZYfg|U>qAuLQ-&X|8x`23ct>cz~6CZ9p3 zAHy4c`+(x2gQCv#h~{wd;`hHVv-W-^ws|HLqM`QEKYM)XB@SP0i1mJP738n<&I;?q zuw3M$PO*#SoUXvpZ_OC6$trr)M+s{vp^gb4asDO5DDutVQ<1RMt}2A%#&?lpf_%jS zIhWCiM(kbuxlsAOpYhJGHVmy#8Hol}^CaTjbu;PiI=@rras$1t13|0IEOA`bmUH6^ zt^7`kmn`dh-vs-la$Ydx-;XVYO9Q^7&nI(vpgy>nUm5leQ$H5CP#qkf(@DwN1!+%~ zeElWTB4ve7)7<9@Xp8_JRNf$rHI^*Q98W>31|gS=_SVZC779u~2e4*a%ob6?MacgsJEGGls&2 zDL#iEk34?$l=f=oo0sGS6JHzQx4UmXJHaf^Te&i&V}zE(ViXTgGv*!V7(G7Q7{defc$^}v@qM6~w0a;R{M1XOoJ|A$caNmsZVl59ZNwRB(sb(mOvR?2fg?|k z+THy1Zf`BZ>h}E7hnO|)nUhlzx@R3H{ISs}kEXE{i;{T((`7v=EgYW~4o8w)mCdqv zL8o=?J=ac6`3*HW0PKPqg!Io6tFjJ6&9Bl*plusQ-UvctCC*HkfX&?|+VuE!*DWe3 zN^RzAqxHOS$K<{lwl+M)3^r<=asi{QQy2A{E>}Mt2kei`HNXozd_{GDqk? zSoN%Yc2jb`KD{zOZ%83OpV&}zF{;C18ChWqnokFJK(59A`?cjj_od*MkuzR;7TSQM zrv&oTPZgy=>l%EGVx?(F#AMesy4Z@A&VJ6wjA7I7Pg<%IScgTo!KxUDeb3ykRa&9i~p_@fCxc(rNv{xeC^ zKT8@!3{p>eabO>|8vP=DS!~hEbu{%)D9Y4p>6h@E8`+ok4V=wWb=(`{(yr=El?u*7Q)OhZ9kC=5|XeK)e>x*~y zUXderbMB<;7>=2-Q9FeVE;u6NXDYp06w21R&nxpnTUC=nIT6QE!4qkxbOq@)R}@?C z(ij;&o=>qt3&+|5L^!yZ=6Ew^-E-@*DV4H*`?<9_NuOhpNPZ z#eh^od1@9ztG{Hc=z7qu!-Z{CsR-~@*(dz$O!Aym*#RTMq~~thndx26N(0#R8jX0m zEJWK+gr1YJf~kuI75T+y_NX|fT6+uF=>=xQ+B8+4;%HRZ8vvV)L~kEgO&l=oUQYTcIq{e%tS^UtTmquiq+lRDm4KVB6CXZ_VQZkB+9 z*KSR)NxJWKEqGDH2p#H%QGeYtYJT;Y{jChg3j1pr zJH}A!Q?CZiRsJrR_p!?!-PL{a#3;vcmdaJz*Y=|7mcz#5D7@#w+R@1Yr&KHU&cDaj z3+7Wjm!)M+&%V~osyrgWlj|P3YEuH(eM#{o#y64(f5RXo!MPG z;uxl(v$uZCs7{!OnrB4*mk%68TDtnJ?mXN5je&j16oT3tI0gEjal^osylNq>rJy(K z1Np{V3qoL+G7%v#YRa7TLhEd=VE-y($ zZeWqQ(WQ}3J1%bV1^Y8cYHypw|D??DUQ1uR@ZKnz#KlT-HF8>WnSbb$`WeTf6f^Tj z`q`M2eZMG0Td##pINIkEzPa@SPcHmotI4G@kip%#(l=Iz$pxp|HAaQVME^CY3gc=r ziyPpo?(lcd5=2mJnAKZaTofCUMwNi zTZoMruMEZv3lvGs+`=_XQTD=}M)RA=@U(T?cW%4cE(x{LnTcip0?=TE!)5{=wKjSY zD?L*&-;p%Pd%>UY2jSy57))XGU8F1V^|XJ_td<$ixS6aiQ@2>uA(pGtmbxJ*CKh$R zX<|yLS#qv!XTIx+;D(-);cT(*kpO+&$rGU*Q)TIJ(`A?MLqcwIkX^B~iUw{ohfvAF z50xavrft8qf-id~`|lH~S!?X^? zjx<2z1DEclP17v*3@~Xpc$eR8yQ({pVWR?0Hi5Yr$~2SbQUew8hT06|J1e%m5?=MU zqTs*o{K{~t2I2?q#TsxjFN8bADqqQ-2P^b_y!fkU_^60}1$o3$94Dj~P>QI9la?&8 z8reXvymh+i>gOz%1fZRLsPw6UbK!P)@1iXgg?gD)wy)m{;T(PDK8#uRN>rvjJj5!9riXj85E^kDt#xJ1jkPp^v!+LYDDGP*jD28Uj#lSc+rBvNVS>XCn^ zEuWm|$3$QvkM>7Iv`}16CQPN3kUbGpe$oq@6gut78auz6+pcdAA8E9xL97*33&Q}S z9QdtBQFgzAK5|ST4UAcR=IFR3x)5nN-Hf;?_(7pxnt~^JV<1a`w9<4cBYM$s+~%W< z^>g;mfr_lPO1QZG=bR+kF;QRvzk5}9D;|g64LlGNo0KI2hx;O`-SGT&HMsn4^kj>_-~BzZbZ$<=XmN(i3H4)_ZMszSu#{NWSE2 z8g9!o-ARwKxK85+?)wZ8k_e@YDaMG1Egp$|NJ}D{dw^R9kAz4E2C?gW)=`(=NpNR! zS}s-l4;x5sBGBr0pVOjLM=YRb=L<#^A8yB`1>JKZDB3#_d41s|19|va+F7Q z+#7tF6g2rd&)P)pqOvKSUEZNqfDR>>NEsXDROW4vPz3YmKiU5t9|E-U`kU-7HK4(2 z01t4Nuv}6l`>m3)-1(+evSv8)s2T*|StfGRE|YbHU2}@X!FWd$4_UI7$I@DFisABm z$-eigHu8PSFZ4)o`TZl6GCfl=){Iw6FxpSb23vl5B(vGgj>=5dT|-S)6+i+%0QuA9 z7TiUzO>0;hQD9lKD=|_PXW17-ctVhpEtsBA#j>eAiaUU&Y;S&8*p3yGp!lUi-cFS+ zUN*LnEU=hp`7AU3Qar}7nLWfcd3E}2+dJk86}r}!MO&U_%L&;)xpQ7M!lO#0y=EGz zv!BTXh=^gtqHlQB*6g{n;=ZuUG#;vf(yXB7VgMQN1+_Kv4#-*@a8b8Jyg?hZ5)$za z-i6`ndwFY|#MVCRtO^M0zP{GyRl)B z_jw4od;pb`7eo@QFrWmi>)WX3&JEg$i?AUI5;5ale2N4{KBAprhj?`&jENXBcqAs= zdd-tqvtLJ&B*lVzTSy>-Ofs#8)Zw!1TJGU2u}ysdIhhrxH3Scq%vIcJL~eMf0p=I-m4~|PAGk5p-;tRl3Ynhs3a)R zm0oISRy__kYgswn;$25y`R;c=_Fjslbs&&bB(e<+c5ikIpW%d_0*MLzWFw~B?#b-0 zJ0K(X)(kToVqTyw%)oXJi@llDKN4bWl>39bH8TlF|XoRe)6Z!eflkD8=`o)Z??HYpy$!EI$|%q^5j05+yi&zZ3x`= zE&de0T9YxX{V>%n|Ii^F-W={gtDrSfcWi(8tG=dvGA$QSOmuv^mvMp`KKd$vbIc@m z49jruV9{7;2g>_kZvt*Jo&ktKhQ>{`fj{-Lb;UK;<<#l<%)HLMIi}$|ccRqZjr8H> zqGMmWvI&FOVo(RZlRl<>&SRtA%&JYPbpLir;r(k=q7x{BYqPbz2Ht4o0%ET=XS;Ws zjXZ}Qf#$@GBTsW%9CJncfOReosZURlq9S0*S9=JoaU)tHx={nXI~7#vP#_#-vf(W5K7 zI?Jd1uY|=UqfI2~^>NNFGmox1rQ$F}5K34T0>@$3Dj5)3QYb?*gxa1K-0hj}msP7@ zZyR2b(fAgsF{US(HK8j<u}| zUT~nX0xuf{s~;F0<^4u^!eMVC^1*G~W7*@>E4B88_QlUO%uj*n8LPBUz%kiim=TrL zPmeMTXcf!g;A+@=E_gd}2v9vU0E16gH@yiL|6*5k-lFNs(D`n)X#w9HxFIcC70v$T z`b>+Znw|K^Y6u0`bqyp_6~KPcs<))t%HY%Zl*j}oZ&G}~0&pcNaLM`)9UHwzu7a|_ z$?7dVJSf(Y0f+=k^s=C${-E7icqQGou}HY#{qJ@jT`{>D}EXyZ9~sB@TwR6UKU*xy53mu0B-jq(SA+eSjqzj zzBzOo&DfcyKzctaw(NmbVK&E7cP@G+ulzFW?=gYnvfG2RBjfCt3hBAJ^w@2d)B4bKte;GUUnTC?PqJJ6#cit83gP^LAd@IKWmH-?5Y=&MS(GbhN zmW8vF)(v=8G9#IS)4`ScTvz9E`vTyybZK6tAp<`#1~XnDpXTkoUk5hfw!z(K#r~%` z_HSCFE}~kp^#?2}6$gMJFIslKJvAZd9OQX(c>-xgU@ZAhb53u2^4prU3ldqfb0(_A z0-H7bMItrAt4N7x5g*?GkL1Qi%Xsv@V`s08XX{A@(8I??_7uxeOa(jFD?Pg+V?qR-1u zzU}<>yE|K7t23I4JHfF!7`-HkA5=#CN_O4hqLP&kpkkE_7AFwDbSNPk$dAV8&K*C$ zd0OUbesTsRpy<7b6TrYtZahu{)!0N&^os8CqL%)%cjnk(+br+1^<`%>vmwJ7-v#=O z&=?NBpI zf!dV8<8WO=KG?>L%NM2nAScVjB+_yXj&h*XnU!b_JdMl6`pV@^Lm=Nr&JFzW6UiHS zI|D0t3YZ2M5~z%tolfZze+Nq%8QK?oF+W*-+kDZ9Z|t|vhs{QTrxHy0r8wrG8H`X` z_pZ~nFOHNvUWfz5v|@{xlK^jg61|6_h2|jCV*Fj(yJsyzmJ*!EWzhp5-;{HJELlr#p)&_68+s|2>B!#%O?8O4z3;cP9O+Qpn75&uN8js@gL5Rm#PwH~`iCjjB1- z3hq@OFAVqO-l@C^+a$!Nikl7^2N?71ZU2Td!hA~U|6}RfqmoMB@0)2p(_AX2t6g;_ zovci))GTkzOp|7&OqN=jGG%2-O6COt@iaBvQ%4;&HQ`gv zBSb_&KyGJ#Z=dgPwU+<1mKV-@-sjo-+0Wimz$H*?$^!Tm8OBV^&C{Dhc0QAtWd;Zp zU%gVvr3zz;KvG1e3^`pJ>9ZsGmDOIQz+vyh;3&EX-8ZSVTdu~ZEM!f1$}XdY4yY(6 z5+VMgr{Lp#4ch$rN3WY+9RH`U&P7z1a|=T8MGBM5NSN@AF0)a(q3JIdIxC{mJx=UkV;ml@FRO!?=W%$Qg`?k7kN$ zR!T|`2UqXTffPoQQPuxW>Y5;K)W=Q(EuJS;0-&ZZ<3-3)Ff{{#u3t0>EWty)vp1t? zYE>5K7^@oapp#y>VHx6`)cp;g6$;5!n&#$mT>41D8zQQ+&4TKOcs4IVS05Wvri8pu z{GWW^&aav!{mKM$KbPf$!=ho)yJ+$)_0XQ_Q&02u

ap62rHhQ)pGa+?XA_x^3up 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 B3=04N literal 0 HcmV?d00001 diff --git a/server/core/static/styles/main.scss b/server/core/static/styles/main.scss new file mode 100644 index 00000000..df906570 --- /dev/null +++ b/server/core/static/styles/main.scss @@ -0,0 +1,97 @@ +@import "materialize/materialize"; + +$white: #fff; + +$grey-1: #F7F7F7; +$grey-3: #F3F3F3; +$grey-2: #D8D8D8; +$grey-4: #AFB1B1; +$grey-9: #3F3F3F; + +$light-white: rgba(255, 255, 255, 0.12); + +$orange: #FD6E22; +$orange-shadow: #c54602; + +$red: #cd3238; +$red-shadow: darken($red, 20%); + +$blue: #EDF7FA; +$blue-shadow: #B6CCD4; + +$text-color: $grey-9; +$font-family: 'Arimo', Arial, sans-serif; +$base-font-size: 15px; + +$space: 10px; + +body { + font-family: $font-family; + font-size: $base-font-size; + color: $text-color; +} + +h4, .h4 { + font-size: 18px; +} + +a { + text-decoration: none; +} + +.alert { + padding: $space; +} + +.alert-error { + border: 1px solid $red-shadow; + background-color: #cd3238; +} + +.alert-info { + border: 1px solid $blue-shadow; + background-color: $blue; + color: $text-color; +} + +.orange-bg { + background-color: $orange; +} + +.dark-bg { + background-color: $grey-9; + color: $white; +} + +.btn-orange { + border: 1px solid $orange !important; + background-color: transparent; + border-radius: 2px; + color: $white; + + &:hover, &:focus { + background-color: $orange-shadow; + } + + box-shadow: none; +} + +input[type=text], input[type=password], select { + width: 100%; + padding: $space; + margin: 8px 0; + display: inline-block; + border: 1px solid $grey-4; + border-radius: 2px; + box-sizing: border-box; + background-color: $light-white; + color: $white; +} + +.mt-1 { + margin-top: $space; +} + +.mb-1 { + margin-bottom: $space; +} \ No newline at end of file diff --git a/server/core/static/styles/materialize/components/_badges.scss b/server/core/static/styles/materialize/components/_badges.scss new file mode 100644 index 00000000..ffed87dc --- /dev/null +++ b/server/core/static/styles/materialize/components/_badges.scss @@ -0,0 +1,55 @@ +// Badges +span.badge { + min-width: 3rem; + padding: 0 6px; + margin-left: 14px; + text-align: center; + font-size: 1rem; + line-height: $badge-height; + height: $badge-height; + color: color('grey', 'darken-1'); + float: right; + box-sizing: border-box; + + &.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: $badge-bg-color; + border-radius: 2px; + } + &.new:after { + content: " new"; + } + + &[data-badge-caption]::after { + content: " " attr(data-badge-caption); + } +} + +// Special cases +nav ul a span.badge { + display: inline-block; + float: none; + margin-left: 4px; + line-height: $badge-height; + height: $badge-height; + -webkit-font-smoothing: auto; +} + +// Line height centering +.collection-item span.badge { + margin-top: calc(#{$collection-line-height / 2} - #{$badge-height / 2}); +} +.collapsible span.badge { + margin-left: auto; +} +.sidenav span.badge { + margin-top: calc(#{$sidenav-line-height / 2} - #{$badge-height / 2}); +} + +table span.badge { + display: inline-block; + float: none; + margin-left: auto; +} diff --git a/server/core/static/styles/materialize/components/_buttons.scss b/server/core/static/styles/materialize/components/_buttons.scss new file mode 100644 index 00000000..f99ab154 --- /dev/null +++ b/server/core/static/styles/materialize/components/_buttons.scss @@ -0,0 +1,321 @@ +// shared styles +.btn, +.btn-flat { + border: $button-border; + border-radius: $button-radius; + display: inline-block; + height: $button-height; + line-height: $button-height; + padding: $button-padding; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; // Gets rid of tap active state +} + +// Disabled shared style +.btn.disabled, +.btn-floating.disabled, +.btn-large.disabled, +.btn-small.disabled, +.btn-flat.disabled, +.btn:disabled, +.btn-floating:disabled, +.btn-large:disabled, +.btn-small:disabled, +.btn-flat:disabled, +.btn[disabled], +.btn-floating[disabled], +.btn-large[disabled], +.btn-small[disabled], +.btn-flat[disabled] { + pointer-events: none; + background-color: $button-disabled-background !important; + box-shadow: none; + color: $button-disabled-color !important; + cursor: default; + &:hover { + background-color: $button-disabled-background !important; + color: $button-disabled-color !important; + } +} + +// Shared icon styles +.btn, +.btn-floating, +.btn-large, +.btn-small, +.btn-flat { + font-size: $button-font-size; + outline: 0; + i { + font-size: $button-icon-font-size; + line-height: inherit; + } +} + +// Shared focus button style +.btn, +.btn-floating { + &:focus { + background-color: darken($button-raised-background, 10%); + } +} + +// Raised Button +.btn { + text-decoration: none; + color: $button-raised-color; + background-color: $button-raised-background; + text-align: center; + letter-spacing: .5px; + @extend .z-depth-1; + transition: background-color .2s ease-out; + cursor: pointer; + &:hover { + background-color: $button-raised-background-hover; + @extend .z-depth-1-half; + } +} + +// Floating button +.btn-floating { + &:hover { + background-color: $button-floating-background-hover; + @extend .z-depth-1-half; + } + &:before { + border-radius: 0; + } + &.btn-large { + &.halfway-fab { + bottom: -$button-floating-large-size / 2; + } + width: $button-floating-large-size; + height: $button-floating-large-size; + padding: 0; + i { + line-height: $button-floating-large-size; + } + } + + &.btn-small { + &.halfway-fab { + bottom: -$button-floating-small-size / 2; + } + width: $button-floating-small-size; + height: $button-floating-small-size; + i { + line-height: $button-floating-small-size; + } + } + + &.halfway-fab { + &.left { + right: auto; + left: 24px; + } + position: absolute; + right: 24px; + bottom: -$button-floating-size / 2; + } + display: inline-block; + color: $button-floating-color; + position: relative; + overflow: hidden; + z-index: 1; + width: $button-floating-size; + height: $button-floating-size; + line-height: $button-floating-size; + padding: 0; + background-color: $button-floating-background; + border-radius: $button-floating-radius; + @extend .z-depth-1; + transition: background-color .3s; + cursor: pointer; + vertical-align: middle; + i { + width: inherit; + display: inline-block; + text-align: center; + color: $button-floating-color; + font-size: $button-large-icon-font-size; + line-height: $button-floating-size; + } +} + +// button fix +button.btn-floating { + border: $button-border; +} + +// Fixed Action Button +.fixed-action-btn { + &.active { + ul { + visibility: visible; + } + } + + // Directions + &.direction-left, + &.direction-right { + padding: 0 0 0 15px; + ul { + text-align: right; + right: 64px; + top: 50%; + transform: translateY(-50%); + height: 100%; + left: auto; + /*width 100% only goes to width of button container */ + width: 500px; + li { + display: inline-block; + margin: 7.5px 15px 0 0; + } + } + } + &.direction-right { + padding: 0 15px 0 0; + ul { + text-align: left; + direction: rtl; + left: 64px; + right: auto; + li { + margin: 7.5px 0 0 15px; + } + } + } + &.direction-bottom { + padding: 0 0 15px 0; + ul { + top: 64px; + bottom: auto; + display: flex; + flex-direction: column-reverse; + li { + margin: 15px 0 0 0; + } + } + } + &.toolbar { + &.active { + &>a i { + opacity: 0; + } + } + padding: 0; + height: $button-floating-large-size; + ul { + display: flex; + top: 0; + bottom: 0; + z-index: 1; + li { + flex: 1; + display: inline-block; + margin: 0; + height: 100%; + transition: none; + a { + display: block; + overflow: hidden; + position: relative; + width: 100%; + height: 100%; + background-color: transparent; + box-shadow: none; + color: #fff; + line-height: $button-floating-large-size; + z-index: 1; + i { + line-height: inherit; + } + } + } + } + } + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 997; + ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; + visibility: hidden; + li { + margin-bottom: 15px; + } + a.btn-floating { + opacity: 0; + } + } + .fab-backdrop { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: $button-floating-size; + height: $button-floating-size; + background-color: $button-floating-background; + border-radius: $button-floating-radius; + transform: scale(0); + } +} + +// Flat button +.btn-flat { + box-shadow: none; + background-color: transparent; + color: $button-flat-color; + cursor: pointer; + transition: background-color .2s; + &:focus, + &:hover { + box-shadow: none; + } + &:focus { + background-color: rgba(0, 0, 0, .1); + } + &.disabled { + background-color: transparent !important; + color: $button-flat-disabled-color !important; + cursor: default; + } +} + +// Large button +.btn-large { + @extend .btn; + height: $button-large-height; + line-height: $button-large-height; + font-size: $button-large-font-size; + padding: 0 28px; + + i { + font-size: $button-large-icon-font-size; + } +} + +// Small button +.btn-small { + @extend .btn; + height: $button-small-height; + line-height: $button-small-height; + font-size: $button-small-font-size; + i { + font-size: $button-small-icon-font-size; + } +} + +// Block button +.btn-block { + display: block; +} diff --git a/server/core/static/styles/materialize/components/_cards.scss b/server/core/static/styles/materialize/components/_cards.scss new file mode 100644 index 00000000..fcbf28ec --- /dev/null +++ b/server/core/static/styles/materialize/components/_cards.scss @@ -0,0 +1,195 @@ + + +.card-panel { + transition: box-shadow .25s; + padding: $card-padding; + margin: $element-top-margin 0 $element-bottom-margin 0; + border-radius: 2px; + @extend .z-depth-1; + background-color: $card-bg-color; +} + +.card { + position: relative; + margin: $element-top-margin 0 $element-bottom-margin 0; + background-color: $card-bg-color; + transition: box-shadow .25s; + border-radius: 2px; + @extend .z-depth-1; + + + .card-title { + font-size: 24px; + font-weight: 300; + &.activator { + cursor: pointer; + } + } + + // Card Sizes + &.small, &.medium, &.large { + position: relative; + + .card-image { + max-height: 60%; + overflow: hidden; + } + .card-image + .card-content { + max-height: 40%; + } + .card-content { + max-height: 100%; + overflow: hidden; + } + .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; + } + } + + &.small { + height: 300px; + } + + &.medium { + height: 400px; + } + + &.large { + height: 500px; + } + + // Horizontal Cards + &.horizontal { + &.small, &.medium, &.large { + .card-image { + height: 100%; + max-height: none; + overflow: visible; + + img { + height: 100%; + } + } + } + + display: flex; + + .card-image { + max-width: 50%; + img { + border-radius: 2px 0 0 2px; + max-width: 100%; + width: auto; + } + } + + .card-stacked { + display: flex; + flex-direction: column; + flex: 1; + position: relative; + + .card-content { + flex-grow: 1; + } + } + } + + // Sticky Action Section + &.sticky-action { + .card-action { + z-index: 2; + } + + .card-reveal { + z-index: 1; + padding-bottom: 64px; + } + } + + + + + .card-image { + position: relative; + + // Image background for content + img { + display: block; + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + } + + .card-title { + color: $card-bg-color; + position: absolute; + bottom: 0; + left: 0; + max-width: 100%; + padding: $card-padding; + } + } + + .card-content { + padding: $card-padding; + border-radius: 0 0 2px 2px; + + p { + margin: 0; + } + .card-title { + display: block; + line-height: 32px; + margin-bottom: 8px; + + i { + line-height: 32px; + } + } + } + + .card-action { + &:last-child { + border-radius: 0 0 2px 2px; + } + background-color: inherit; // Use inherit to inherit color classes + border-top: 1px solid rgba(160,160,160,.2); + position: relative; + padding: 16px $card-padding; + + a:not(.btn):not(.btn-large):not(.btn-floating) { + color: $card-link-color; + margin-right: $card-padding; + transition: color .3s ease; + text-transform: uppercase; + + &:hover { color: $card-link-color-light; } + } + } + + .card-reveal { + padding: $card-padding; + position: absolute; + background-color: $card-bg-color; + width: 100%; + overflow-y: auto; + left: 0; + top: 100%; + height: 100%; + z-index: 3; + display: none; + + .card-title { + cursor: pointer; + display: block; + } + } +} diff --git a/server/core/static/styles/materialize/components/_carousel.scss b/server/core/static/styles/materialize/components/_carousel.scss new file mode 100644 index 00000000..cc36d4b3 --- /dev/null +++ b/server/core/static/styles/materialize/components/_carousel.scss @@ -0,0 +1,90 @@ +.carousel { + &.carousel-slider { + top: 0; + left: 0; + + .carousel-fixed-item { + &.with-indicators { + bottom: 68px; + } + + position: absolute; + left: 0; + right: 0; + bottom: 20px; + z-index: 1; + } + + .carousel-item { + width: 100%; + height: 100%; + min-height: $carousel-height; + position: absolute; + top: 0; + left: 0; + + h2 { + font-size: 24px; + font-weight: 500; + line-height: 32px; + } + + p { + font-size: 15px; + } + } + } + + overflow: hidden; + position: relative; + width: 100%; + height: $carousel-height; + perspective: 500px; + transform-style: preserve-3d; + transform-origin: 0% 50%; + + .carousel-item { + visibility: hidden; + width: $carousel-item-width; + height: $carousel-item-height; + position: absolute; + top: 0; + left: 0; + + & > img { + width: 100%; + } + } + + .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; + + .indicator-item { + &.active { + background-color: #fff; + } + + display: inline-block; + position: relative; + cursor: pointer; + height: 8px; + width: 8px; + margin: 24px 4px; + background-color: rgba(255,255,255,.5); + + transition: background-color .3s; + border-radius: 50%; + } + } + + // Materialbox compatibility + &.scrolling .carousel-item .materialboxed, + .carousel-item:not(.active) .materialboxed { + pointer-events: none; + } +} diff --git a/server/core/static/styles/materialize/components/_chips.scss b/server/core/static/styles/materialize/components/_chips.scss new file mode 100644 index 00000000..27744a8b --- /dev/null +++ b/server/core/static/styles/materialize/components/_chips.scss @@ -0,0 +1,90 @@ +.chip { + &:focus { + outline: none; + background-color: $chip-selected-color; + color: #fff; + } + + display: inline-block; + height: 32px; + font-size: 13px; + font-weight: 500; + color: rgba(0,0,0,.6); + line-height: 32px; + padding: 0 12px; + border-radius: 16px; + background-color: $chip-bg-color; + margin-bottom: $chip-margin; + margin-right: $chip-margin; + + > img { + float: left; + margin: 0 8px 0 -12px; + height: 32px; + width: 32px; + border-radius: 50%; + } + + .close { + cursor: pointer; + float: right; + font-size: 16px; + line-height: 32px; + padding-left: 8px; + } +} + +.chips { + border: none; + border-bottom: 1px solid $chip-border-color; + box-shadow: none; + margin: $input-margin; + min-height: 45px; + outline: none; + transition: all .3s; + + &.focus { + border-bottom: 1px solid $chip-selected-color; + box-shadow: 0 1px 0 0 $chip-selected-color; + } + + &:hover { + cursor: text; + } + + .input { + background: none; + border: 0; + color: rgba(0,0,0,.6); + display: inline-block; + font-size: $input-font-size; + height: $input-height; + line-height: 32px; + outline: 0; + margin: 0; + padding: 0 !important; + width: 120px !important; + } + + .input:focus { + border: 0 !important; + box-shadow: none !important; + } + + // Autocomplete + .autocomplete-content { + margin-top: 0; + margin-bottom: 0; + } +} + +// Form prefix +.prefix ~ .chips { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} +.chips:empty ~ label { + font-size: 0.8rem; + transform: translateY(-140%); +} diff --git a/server/core/static/styles/materialize/components/_collapsible.scss b/server/core/static/styles/materialize/components/_collapsible.scss new file mode 100644 index 00000000..5793a3f5 --- /dev/null +++ b/server/core/static/styles/materialize/components/_collapsible.scss @@ -0,0 +1,84 @@ +.collapsible { + border-top: 1px solid $collapsible-border-color; + border-right: 1px solid $collapsible-border-color; + border-left: 1px solid $collapsible-border-color; + margin: $element-top-margin 0 $element-bottom-margin 0; + @extend .z-depth-1; +} + +.collapsible-header { + display: flex; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + line-height: 1.5; + padding: 1rem; + background-color: $collapsible-header-color; + border-bottom: 1px solid $collapsible-border-color; + + i { + width: 2rem; + font-size: 1.6rem; + display: inline-block; + text-align: center; + margin-right: 1rem; + } +} + +.collapsible-body { + display: none; + border-bottom: 1px solid $collapsible-border-color; + box-sizing: border-box; + padding: 2rem; +} + +// Sidenav collapsible styling +.sidenav, +.sidenav.fixed { + + .collapsible { + border: none; + box-shadow: none; + + li { padding: 0; } + } + + .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + padding: 0 $sidenav-padding; + + &:hover { background-color: rgba(0,0,0,.05); } + i { line-height: inherit; } + } + + .collapsible-body { + border: 0; + background-color: $collapsible-header-color; + + li a { + padding: 0 (7.5px + $sidenav-padding) + 0 (15px + $sidenav-padding); + } + } + +} + +// Popout Collapsible + +.collapsible.popout { + border: none; + box-shadow: none; + > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + // transform: scaleX(.92); + margin: 0 24px; + transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940); + } + > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; + // transform: scaleX(1); + } +} diff --git a/server/core/static/styles/materialize/components/_color-classes.scss b/server/core/static/styles/materialize/components/_color-classes.scss new file mode 100644 index 00000000..155cecd1 --- /dev/null +++ b/server/core/static/styles/materialize/components/_color-classes.scss @@ -0,0 +1,32 @@ +// Color Classes + +@each $color_name, $color in $colors { + @each $color_type, $color_value in $color { + @if $color_type == "base" { + .#{$color_name} { + background-color: $color_value !important; + } + .#{$color_name}-text { + color: $color_value !important; + } + } + @else if $color_name != "shades" { + .#{$color_name}.#{$color_type} { + background-color: $color_value !important; + } + .#{$color_name}-text.text-#{$color_type} { + color: $color_value !important; + } + } + } +} + +// Shade classes +@each $color, $color_value in $shades { + .#{$color} { + background-color: $color_value !important; + } + .#{$color}-text { + color: $color_value !important; + } +} diff --git a/server/core/static/styles/materialize/components/_color-variables.scss b/server/core/static/styles/materialize/components/_color-variables.scss new file mode 100644 index 00000000..062f6a56 --- /dev/null +++ b/server/core/static/styles/materialize/components/_color-variables.scss @@ -0,0 +1,370 @@ +// Google Color Palette defined: http://www.google.com/design/spec/style/color.html + +$materialize-red: ( + "base": #e51c23, + "lighten-5": #fdeaeb, + "lighten-4": #f8c1c3, + "lighten-3": #f3989b, + "lighten-2": #ee6e73, + "lighten-1": #ea454b, + "darken-1": #d0181e, + "darken-2": #b9151b, + "darken-3": #a21318, + "darken-4": #8b1014, +); + +$red: ( + "base": #F44336, + "lighten-5": #FFEBEE, + "lighten-4": #FFCDD2, + "lighten-3": #EF9A9A, + "lighten-2": #E57373, + "lighten-1": #EF5350, + "darken-1": #E53935, + "darken-2": #D32F2F, + "darken-3": #C62828, + "darken-4": #B71C1C, + "accent-1": #FF8A80, + "accent-2": #FF5252, + "accent-3": #FF1744, + "accent-4": #D50000 +); + +$pink: ( + "base": #e91e63, + "lighten-5": #fce4ec, + "lighten-4": #f8bbd0, + "lighten-3": #f48fb1, + "lighten-2": #f06292, + "lighten-1": #ec407a, + "darken-1": #d81b60, + "darken-2": #c2185b, + "darken-3": #ad1457, + "darken-4": #880e4f, + "accent-1": #ff80ab, + "accent-2": #ff4081, + "accent-3": #f50057, + "accent-4": #c51162 +); + +$purple: ( + "base": #9c27b0, + "lighten-5": #f3e5f5, + "lighten-4": #e1bee7, + "lighten-3": #ce93d8, + "lighten-2": #ba68c8, + "lighten-1": #ab47bc, + "darken-1": #8e24aa, + "darken-2": #7b1fa2, + "darken-3": #6a1b9a, + "darken-4": #4a148c, + "accent-1": #ea80fc, + "accent-2": #e040fb, + "accent-3": #d500f9, + "accent-4": #aa00ff +); + +$deep-purple: ( + "base": #673ab7, + "lighten-5": #ede7f6, + "lighten-4": #d1c4e9, + "lighten-3": #b39ddb, + "lighten-2": #9575cd, + "lighten-1": #7e57c2, + "darken-1": #5e35b1, + "darken-2": #512da8, + "darken-3": #4527a0, + "darken-4": #311b92, + "accent-1": #b388ff, + "accent-2": #7c4dff, + "accent-3": #651fff, + "accent-4": #6200ea +); + +$indigo: ( + "base": #3f51b5, + "lighten-5": #e8eaf6, + "lighten-4": #c5cae9, + "lighten-3": #9fa8da, + "lighten-2": #7986cb, + "lighten-1": #5c6bc0, + "darken-1": #3949ab, + "darken-2": #303f9f, + "darken-3": #283593, + "darken-4": #1a237e, + "accent-1": #8c9eff, + "accent-2": #536dfe, + "accent-3": #3d5afe, + "accent-4": #304ffe +); + +$blue: ( + "base": #2196F3, + "lighten-5": #E3F2FD, + "lighten-4": #BBDEFB, + "lighten-3": #90CAF9, + "lighten-2": #64B5F6, + "lighten-1": #42A5F5, + "darken-1": #1E88E5, + "darken-2": #1976D2, + "darken-3": #1565C0, + "darken-4": #0D47A1, + "accent-1": #82B1FF, + "accent-2": #448AFF, + "accent-3": #2979FF, + "accent-4": #2962FF +); + +$light-blue: ( + "base": #03a9f4, + "lighten-5": #e1f5fe, + "lighten-4": #b3e5fc, + "lighten-3": #81d4fa, + "lighten-2": #4fc3f7, + "lighten-1": #29b6f6, + "darken-1": #039be5, + "darken-2": #0288d1, + "darken-3": #0277bd, + "darken-4": #01579b, + "accent-1": #80d8ff, + "accent-2": #40c4ff, + "accent-3": #00b0ff, + "accent-4": #0091ea +); + +$cyan: ( + "base": #00bcd4, + "lighten-5": #e0f7fa, + "lighten-4": #b2ebf2, + "lighten-3": #80deea, + "lighten-2": #4dd0e1, + "lighten-1": #26c6da, + "darken-1": #00acc1, + "darken-2": #0097a7, + "darken-3": #00838f, + "darken-4": #006064, + "accent-1": #84ffff, + "accent-2": #18ffff, + "accent-3": #00e5ff, + "accent-4": #00b8d4 +); + +$teal: ( + "base": #009688, + "lighten-5": #e0f2f1, + "lighten-4": #b2dfdb, + "lighten-3": #80cbc4, + "lighten-2": #4db6ac, + "lighten-1": #26a69a, + "darken-1": #00897b, + "darken-2": #00796b, + "darken-3": #00695c, + "darken-4": #004d40, + "accent-1": #a7ffeb, + "accent-2": #64ffda, + "accent-3": #1de9b6, + "accent-4": #00bfa5 +); + +$green: ( + "base": #4CAF50, + "lighten-5": #E8F5E9, + "lighten-4": #C8E6C9, + "lighten-3": #A5D6A7, + "lighten-2": #81C784, + "lighten-1": #66BB6A, + "darken-1": #43A047, + "darken-2": #388E3C, + "darken-3": #2E7D32, + "darken-4": #1B5E20, + "accent-1": #B9F6CA, + "accent-2": #69F0AE, + "accent-3": #00E676, + "accent-4": #00C853 +); + +$light-green: ( + "base": #8bc34a, + "lighten-5": #f1f8e9, + "lighten-4": #dcedc8, + "lighten-3": #c5e1a5, + "lighten-2": #aed581, + "lighten-1": #9ccc65, + "darken-1": #7cb342, + "darken-2": #689f38, + "darken-3": #558b2f, + "darken-4": #33691e, + "accent-1": #ccff90, + "accent-2": #b2ff59, + "accent-3": #76ff03, + "accent-4": #64dd17 +); + +$lime: ( + "base": #cddc39, + "lighten-5": #f9fbe7, + "lighten-4": #f0f4c3, + "lighten-3": #e6ee9c, + "lighten-2": #dce775, + "lighten-1": #d4e157, + "darken-1": #c0ca33, + "darken-2": #afb42b, + "darken-3": #9e9d24, + "darken-4": #827717, + "accent-1": #f4ff81, + "accent-2": #eeff41, + "accent-3": #c6ff00, + "accent-4": #aeea00 +); + +$yellow: ( + "base": #ffeb3b, + "lighten-5": #fffde7, + "lighten-4": #fff9c4, + "lighten-3": #fff59d, + "lighten-2": #fff176, + "lighten-1": #ffee58, + "darken-1": #fdd835, + "darken-2": #fbc02d, + "darken-3": #f9a825, + "darken-4": #f57f17, + "accent-1": #ffff8d, + "accent-2": #ffff00, + "accent-3": #ffea00, + "accent-4": #ffd600 +); + +$amber: ( + "base": #ffc107, + "lighten-5": #fff8e1, + "lighten-4": #ffecb3, + "lighten-3": #ffe082, + "lighten-2": #ffd54f, + "lighten-1": #ffca28, + "darken-1": #ffb300, + "darken-2": #ffa000, + "darken-3": #ff8f00, + "darken-4": #ff6f00, + "accent-1": #ffe57f, + "accent-2": #ffd740, + "accent-3": #ffc400, + "accent-4": #ffab00 +); + +$orange: ( + "base": #ff9800, + "lighten-5": #fff3e0, + "lighten-4": #ffe0b2, + "lighten-3": #ffcc80, + "lighten-2": #ffb74d, + "lighten-1": #ffa726, + "darken-1": #fb8c00, + "darken-2": #f57c00, + "darken-3": #ef6c00, + "darken-4": #e65100, + "accent-1": #ffd180, + "accent-2": #ffab40, + "accent-3": #ff9100, + "accent-4": #ff6d00 +); + +$deep-orange: ( + "base": #ff5722, + "lighten-5": #fbe9e7, + "lighten-4": #ffccbc, + "lighten-3": #ffab91, + "lighten-2": #ff8a65, + "lighten-1": #ff7043, + "darken-1": #f4511e, + "darken-2": #e64a19, + "darken-3": #d84315, + "darken-4": #bf360c, + "accent-1": #ff9e80, + "accent-2": #ff6e40, + "accent-3": #ff3d00, + "accent-4": #dd2c00 +); + +$brown: ( + "base": #795548, + "lighten-5": #efebe9, + "lighten-4": #d7ccc8, + "lighten-3": #bcaaa4, + "lighten-2": #a1887f, + "lighten-1": #8d6e63, + "darken-1": #6d4c41, + "darken-2": #5d4037, + "darken-3": #4e342e, + "darken-4": #3e2723 +); + +$blue-grey: ( + "base": #607d8b, + "lighten-5": #eceff1, + "lighten-4": #cfd8dc, + "lighten-3": #b0bec5, + "lighten-2": #90a4ae, + "lighten-1": #78909c, + "darken-1": #546e7a, + "darken-2": #455a64, + "darken-3": #37474f, + "darken-4": #263238 +); + +$grey: ( + "base": #9e9e9e, + "lighten-5": #fafafa, + "lighten-4": #f5f5f5, + "lighten-3": #eeeeee, + "lighten-2": #e0e0e0, + "lighten-1": #bdbdbd, + "darken-1": #757575, + "darken-2": #616161, + "darken-3": #424242, + "darken-4": #212121 +); + +$shades: ( + "black": #000000, + "white": #FFFFFF, + "transparent": transparent +); + +$colors: ( + "materialize-red": $materialize-red, + "red": $red, + "pink": $pink, + "purple": $purple, + "deep-purple": $deep-purple, + "indigo": $indigo, + "blue": $blue, + "light-blue": $light-blue, + "cyan": $cyan, + "teal": $teal, + "green": $green, + "light-green": $light-green, + "lime": $lime, + "yellow": $yellow, + "amber": $amber, + "orange": $orange, + "deep-orange": $deep-orange, + "brown": $brown, + "blue-grey": $blue-grey, + "grey": $grey, + "shades": $shades +) !default; + + +// usage: color("name_of_color", "type_of_color") +// to avoid to repeating map-get($colors, ...) + +@function color($color, $type) { + @if map-has-key($colors, $color) { + $curr_color: map-get($colors, $color); + @if map-has-key($curr_color, $type) { + @return map-get($curr_color, $type); + } + } + @warn "Unknown `#{$color}` - `#{$type}` in $colors."; + @return null; +} diff --git a/server/core/static/styles/materialize/components/_datepicker.scss b/server/core/static/styles/materialize/components/_datepicker.scss new file mode 100644 index 00000000..09398a3d --- /dev/null +++ b/server/core/static/styles/materialize/components/_datepicker.scss @@ -0,0 +1,187 @@ +/* Modal */ +.datepicker-modal { + max-width: 325px; + min-width: 300px; + max-height: none; +} + +.datepicker-container.modal-content { + display: flex; + flex-direction: column; + padding: 0; +} + +.datepicker-controls { + display: flex; + justify-content: space-between; + width: 280px; + margin: 0 auto; + + .selects-container { + display: flex; + } + + .select-wrapper { + input { + &:focus { + border-bottom: none; + } + border-bottom: none; + text-align: center; + margin: 0; + } + + .caret { + display: none; + } + } + + .select-year input { + width: 50px; + } + + .select-month input { + width: 70px; + } +} + +.month-prev, .month-next { + margin-top: 4px; + cursor: pointer; + background-color: transparent; + border: none; +} + + +/* Date Display */ +.datepicker-date-display { + flex: 1 auto; + background-color: $secondary-color; + color: #fff; + padding: 20px 22px; + font-weight: 500; + + .year-text { + display: block; + font-size: 1.5rem; + line-height: 25px; + color: $datepicker-year; + } + + .date-text { + display: block; + font-size: 2.8rem; + line-height: 47px; + font-weight: 500; + } +} + + +/* Calendar */ +.datepicker-calendar-container { + flex: 2.5 auto; +} + +.datepicker-table { + width: 280px; + font-size: 1rem; + margin: 0 auto; + + thead { + border-bottom: none; + } + + th { + padding: 10px 5px; + text-align: center; + } + + tr { + border: none; + } + + abbr { + text-decoration: none; + color: $datepicker-calendar-header-color; + } + + td { + &.is-today { + color: $secondary-color; + } + + &.is-selected { + background-color: $secondary-color; + color: #fff; + } + + &.is-outside-current-month, + &.is-disabled { + color: $datepicker-disabled-day-color; + pointer-events: none; + } + + border-radius: 50%; + padding: 0; + } +} + +.datepicker-day-button { + &:focus { + background-color: $datepicker-day-focus; + } + + background-color: transparent; + border: none; + line-height: 38px; + display: block; + width: 100%; + border-radius: 50%; + padding: 0 5px; + cursor: pointer; + color: inherit; +} + + +/* Footer */ +.datepicker-footer { + width: 280px; + margin: 0 auto; + padding-bottom: 5px; + display: flex; + justify-content: space-between; +} + +.datepicker-cancel, +.datepicker-clear, +.datepicker-today, +.datepicker-done { + color: $secondary-color; + padding: 0 1rem; +} + +.datepicker-clear { + color: $error-color; +} + + +/* Media Queries */ +@media #{$medium-and-up} { + .datepicker-modal { + max-width: 625px; + } + + .datepicker-container.modal-content { + flex-direction: row; + } + + .datepicker-controls, + .datepicker-table, + .datepicker-footer { + width: 320px; + } + + .datepicker-day-button { + line-height: 44px; + } +} diff --git a/server/core/static/styles/materialize/components/_dropdown.scss b/server/core/static/styles/materialize/components/_dropdown.scss new file mode 100644 index 00000000..82c02a4f --- /dev/null +++ b/server/core/static/styles/materialize/components/_dropdown.scss @@ -0,0 +1,76 @@ +.dropdown-content { + &:focus { + outline: 0; + } + + + @extend .z-depth-1; + background-color: $dropdown-bg-color; + margin: 0; + display: none; + min-width: 100px; + overflow-y: auto; + opacity: 0; + position: absolute; + left: 0; + top: 0; + z-index: 9999; // TODO: Check if this doesn't break other things + transform-origin: 0 0; + + + li { + &:hover, &.active { + background-color: $dropdown-hover-bg-color; + } + + &:focus { + outline: none; + background-color: darken($dropdown-hover-bg-color, 8%); + } + + &.divider { + min-height: 0; + height: 1px; + } + + & > a, & > span { + font-size: 16px; + color: $dropdown-color; + display: block; + line-height: 22px; + padding: (($dropdown-item-height - 22) / 2) 16px; + } + + & > span > label { + top: 1px; + left: 0; + height: 18px; + } + + // Icon alignment override + & > a > i { + height: inherit; + line-height: inherit; + float: left; + margin: 0 24px 0 0; + width: 24px; + } + + + clear: both; + color: $off-black; + cursor: pointer; + min-height: $dropdown-item-height; + line-height: 1.5rem; + width: 100%; + text-align: left; + } +} + +// Input field specificity bugfix +.input-field.col .dropdown-content [type="checkbox"] + label { + top: 1px; + left: 0; + height: 18px; + transform: none; +} diff --git a/server/core/static/styles/materialize/components/_global.scss b/server/core/static/styles/materialize/components/_global.scss new file mode 100644 index 00000000..39f33db0 --- /dev/null +++ b/server/core/static/styles/materialize/components/_global.scss @@ -0,0 +1,769 @@ +//Default styles + +html { + box-sizing: border-box; +} +*, *:before, *:after { + box-sizing: inherit; +} + +body { + // display: flex; + // min-height: 100vh; + // flex-direction: column; +} + +main { + // flex: 1 0 auto; +} + +button, +input, +optgroup, +select, +textarea { + font-family: $font-stack; +} + +ul { + &:not(.browser-default) { + padding-left: 0; + list-style-type: none; + + & > li { + list-style-type: none; + } + } +} + +a { + color: $link-color; + text-decoration: none; + + // Gets rid of tap active state + -webkit-tap-highlight-color: transparent; +} + + +// Positioning +.valign-wrapper { + display: flex; + align-items: center; +} + + +// classic clearfix +.clearfix { + clear: both; +} + + +// Z-levels +.z-depth-0 { + box-shadow: none !important; +} + +/* 2dp elevation modified*/ +.z-depth-1 { + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), + 0 3px 1px -2px rgba(0,0,0,0.12), + 0 1px 5px 0 rgba(0,0,0,0.2); +} +.z-depth-1-half { + box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2); +} + +/* 6dp elevation modified*/ +.z-depth-2 { + box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), + 0 1px 10px 0 rgba(0,0,0,0.12), + 0 2px 4px -1px rgba(0,0,0,0.3); +} + +/* 12dp elevation modified*/ +.z-depth-3 { + box-shadow: 0 8px 17px 2px rgba(0,0,0,0.14), + 0 3px 14px 2px rgba(0,0,0,0.12), + 0 5px 5px -3px rgba(0, 0, 0, 0.2); +} + +/* 16dp elevation */ +.z-depth-4 { + box-shadow: 0 16px 24px 2px rgba(0,0,0,0.14), + 0 6px 30px 5px rgba(0,0,0,0.12), + 0 8px 10px -7px rgba(0,0,0,0.2); +} + +/* 24dp elevation */ +.z-depth-5 { + box-shadow: 0 24px 38px 3px rgba(0,0,0,0.14), + 0 9px 46px 8px rgba(0,0,0,0.12), + 0 11px 15px -7px rgba(0,0,0,0.2); +} + +.hoverable { + transition: box-shadow .25s; + + &:hover { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + } +} + +// Dividers + +.divider { + height: 1px; + overflow: hidden; + background-color: color("grey", "lighten-2"); +} + + +// Blockquote + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid $primary-color; +} + +// Icon Styles + +i { + line-height: inherit; + + &.left { + float: left; + margin-right: 15px; + } + &.right { + float: right; + margin-left: 15px; + } + &.tiny { + font-size: 1rem; + } + &.small { + font-size: 2rem; + } + &.medium { + font-size: 4rem; + } + &.large { + font-size: 6rem; + } +} + +// Images +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; +} + + +// Pagination + +.pagination { + + li { + display: inline-block; + border-radius: 2px; + text-align: center; + vertical-align: top; + height: 30px; + + a { + color: #444; + display: inline-block; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + } + + &.active a { color: #fff; } + + &.active { background-color: $primary-color; } + + &.disabled a { + cursor: default; + color: #999; + } + + i { + font-size: 2rem; + } + } + + + li.pages ul li { + display: inline-block; + float: none; + } +} +@media #{$medium-and-down} { + .pagination { + width: 100%; + + li.prev, + li.next { + width: 10%; + } + + li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; + } + } +} + +// Breadcrumbs +.breadcrumb { + font-size: 18px; + color: rgba(255,255,255, .7); + + i, + [class^="mdi-"], [class*="mdi-"], + i.material-icons { + display: inline-block; + float: left; + font-size: 24px; + } + + &:before { + content: '\E5CC'; + color: rgba(255,255,255, .7); + vertical-align: top; + display: inline-block; + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 25px; + margin: 0 10px 0 8px; + -webkit-font-smoothing: antialiased; + } + + &:first-child:before { + display: none; + } + + &:last-child { + color: #fff; + } +} + +// Parallax +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; + + .parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; + + img { + opacity: 0; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + transform: translate3d(0,0,0); + transform: translateX(-50%); + } + } +} + +// Pushpin +.pin-top, .pin-bottom { + position: relative; +} +.pinned { + position: fixed !important; +} + +/********************* + Transition Classes +**********************/ + +ul.staggered-list li { + opacity: 0; +} + +.fade-in { + opacity: 0; + transform-origin: 0 50%; +} + + +/********************* + Media Query Classes +**********************/ +.hide-on-small-only, .hide-on-small-and-down { + @media #{$small-and-down} { + display: none !important; + } +} +.hide-on-med-and-down { + @media #{$medium-and-down} { + display: none !important; + } +} +.hide-on-med-and-up { + @media #{$medium-and-up} { + display: none !important; + } +} +.hide-on-med-only { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: none !important; + } +} +.hide-on-large-only { + @media #{$large-and-up} { + display: none !important; + } +} +.hide-on-extra-large-only { + @media #{$extra-large-and-up} { + display: none !important; + } +} +.show-on-extra-large { + @media #{$extra-large-and-up} { + display: block !important; + } +} +.show-on-large { + @media #{$large-and-up} { + display: block !important; + } +} +.show-on-medium { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: block !important; + } +} +.show-on-small { + @media #{$small-and-down} { + display: block !important; + } +} +.show-on-medium-and-up { + @media #{$medium-and-up} { + display: block !important; + } +} +.show-on-medium-and-down { + @media #{$medium-and-down} { + display: block !important; + } +} + + +// Center text on mobile +.center-on-small-only { + @media #{$small-and-down} { + text-align: center; + } +} + +// Footer +.page-footer { + padding-top: 20px; + color: $footer-font-color; + background-color: $footer-bg-color; + + .footer-copyright { + overflow: hidden; + min-height: 50px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 0px; + color: $footer-copyright-font-color; + background-color: $footer-copyright-bg-color; + } +} + +// Tables +table, th, td { + border: none; +} + +table { + width:100%; + display: table; + border-collapse: collapse; + border-spacing: 0; + + &.striped { + tr { + border-bottom: none; + } + + > tbody { + > tr:nth-child(odd) { + background-color: $table-striped-color; + } + + > tr > td { + border-radius: 0; + } + } + } + + &.highlight > tbody > tr { + transition: background-color .25s ease; + &:hover { + background-color: $table-striped-color; + } + } + + &.centered { + thead tr th, tbody tr td { + text-align: center; + } + } +} + +tr { + border-bottom: 1px solid $table-border-color; +} + +td, th{ + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +// Responsive Table +@media #{$medium-and-down} { + + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + + td:empty:before { + content: '\00a0'; + } + + th, + td { + margin: 0; + vertical-align: top; + } + + th { text-align: left; } + thead { + display: block; + float: left; + + tr { + display: block; + padding: 0 10px 0 0; + + th::before { + content: "\00a0"; + } + } + } + tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; + + tr { + display: inline-block; + vertical-align: top; + } + } + th { + display: block; + text-align: right; + } + td { + display: block; + min-height: 1.25em; + text-align: left; + } + tr { + border-bottom: none; + padding: 0 10px; + } + + /* sort out borders */ + thead { + border: 0; + border-right: 1px solid $table-border-color; + } + } + +} + + +// Collections +.collection { + margin: $element-top-margin 0 $element-bottom-margin 0; + border: 1px solid $collection-border-color; + border-radius: 2px; + overflow: hidden; + position: relative; + + .collection-item { + background-color: $collection-bg-color; + line-height: $collection-line-height; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid $collection-border-color; + + // Avatar Collection + &.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; + + // Don't style circles inside preloader classes. + &:not(.circle-clipper) > .circle, + :not(.circle-clipper) > .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; + } + i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; + } + + + .title { + font-size: 16px; + } + + p { + margin: 0; + } + + .secondary-content { + position: absolute; + top: 16px; + right: 16px; + } + + } + + + &:last-child { + border-bottom: none; + } + + &.active { + background-color: $collection-active-bg-color; + color: $collection-active-color; + + .secondary-content { + color: #fff; + } + } + } + a.collection-item{ + display: block; + transition: .25s; + color: $collection-link-color; + &:not(.active) { + &:hover { + background-color: $collection-hover-bg-color; + } + } + } + + &.with-header { + .collection-header { + background-color: $collection-bg-color; + border-bottom: 1px solid $collection-border-color; + padding: 10px 20px; + } + .collection-item { + padding-left: 30px; + } + .collection-item.avatar { + padding-left: 72px; + } + } + +} +// Made less specific to allow easier overriding +.secondary-content { + float: right; + color: $secondary-color; +} +.collapsible .collection { + margin: 0; + border: none; +} + + + +// Responsive Videos +.video-container { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + + iframe, object, embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +// Progress Bar +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: lighten($progress-bar-color, 40%); + border-radius: 2px; + margin: $element-top-margin 0 $element-bottom-margin 0; + overflow: hidden; + .determinate { + position: absolute; + top: 0; + left: 0; + bottom: 0; + background-color: $progress-bar-color; + transition: width .3s linear; + } + .indeterminate { + background-color: $progress-bar-color; + &:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + animation: indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite; + + } + &:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite; + animation-delay: 1.15s; + } + } +} +@keyframes indeterminate { + 0% { + left: -35%; + right:100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + + +/******************* + Utility Classes +*******************/ + +.hide { + display: none !important; +} + +// Text Align +.left-align { + text-align: left; +} +.right-align { + text-align: right +} +.center, .center-align { + text-align: center; +} + +.left { + float: left !important; +} +.right { + float: right !important; +} + +// No Text Select +.no-select { + user-select: none; +} + +.circle { + border-radius: 50%; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.no-padding { + padding: 0 !important; +} diff --git a/server/core/static/styles/materialize/components/_grid.scss b/server/core/static/styles/materialize/components/_grid.scss new file mode 100644 index 00000000..8892f050 --- /dev/null +++ b/server/core/static/styles/materialize/components/_grid.scss @@ -0,0 +1,156 @@ +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; +} +@media #{$medium-and-up} { + .container { + width: 85%; + } +} +@media #{$large-and-up} { + .container { + width: 70%; + } +} +.col .row { + margin-left: (-1 * $gutter-width / 2); + margin-right: (-1 * $gutter-width / 2); +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; + + &.no-pad { + padding: 0; + } + &.no-pad-bot { + padding-bottom: 0; + } + &.no-pad-top { + padding-top: 0; + } +} + + +// Mixins to eliminate code repitition +@mixin reset-offset { + margin-left: auto; + left: auto; + right: auto; +} +@mixin grid-classes($size, $i, $perc) { + &.offset-#{$size}#{$i} { + margin-left: $perc; + } + &.pull-#{$size}#{$i} { + right: $perc; + } + &.push-#{$size}#{$i} { + left: $perc; + } +} + + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + + // Clear floating children + &:after { + content: ""; + display: table; + clear: both; + } + + .col { + float: left; + box-sizing: border-box; + padding: 0 $gutter-width / 2; + min-height: 1px; + + &[class*="push-"], + &[class*="pull-"] { + position: relative; + } + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.s#{$i} { + width: $perc; + @include reset-offset; + } + $i: $i + 1; + } + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + @include grid-classes("s", $i, $perc); + $i: $i + 1; + } + + @media #{$medium-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.m#{$i} { + width: $perc; + @include reset-offset; + } + $i: $i + 1 + } + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + @include grid-classes("m", $i, $perc); + $i: $i + 1; + } + } + + @media #{$large-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.l#{$i} { + width: $perc; + @include reset-offset; + } + $i: $i + 1; + } + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + @include grid-classes("l", $i, $perc); + $i: $i + 1; + } + } + + @media #{$extra-large-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.xl#{$i} { + width: $perc; + @include reset-offset; + } + $i: $i + 1; + } + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + @include grid-classes("xl", $i, $perc); + $i: $i + 1; + } + } + } +} diff --git a/server/core/static/styles/materialize/components/_icons-material-design.scss b/server/core/static/styles/materialize/components/_icons-material-design.scss new file mode 100644 index 00000000..d8d91c19 --- /dev/null +++ b/server/core/static/styles/materialize/components/_icons-material-design.scss @@ -0,0 +1,5 @@ +/* This is needed for some mobile phones to display the Google Icon font properly */ +.material-icons { + text-rendering: optimizeLegibility; + font-feature-settings: 'liga'; +} diff --git a/server/core/static/styles/materialize/components/_materialbox.scss b/server/core/static/styles/materialize/components/_materialbox.scss new file mode 100644 index 00000000..0ebd63ff --- /dev/null +++ b/server/core/static/styles/materialize/components/_materialbox.scss @@ -0,0 +1,43 @@ +.materialboxed { + &:hover { + &:not(.active) { + opacity: .8; + } + } + + display: block; + cursor: zoom-in; + position: relative; + transition: opacity .4s; + -webkit-backface-visibility: hidden; + + &.active { + cursor: zoom-out; + } +} + +#materialbox-overlay { + position:fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #292929; + z-index: 1000; + will-change: opacity; +} + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + left: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; +} \ No newline at end of file diff --git a/server/core/static/styles/materialize/components/_modal.scss b/server/core/static/styles/materialize/components/_modal.scss new file mode 100644 index 00000000..ced75512 --- /dev/null +++ b/server/core/static/styles/materialize/components/_modal.scss @@ -0,0 +1,90 @@ +.modal { + @extend .z-depth-5; + + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + + border-radius: 2px; + will-change: top, opacity; + + @media #{$medium-and-down} { + width: 80%; + } + + h1,h2,h3,h4 { + margin-top: 0; + } + + .modal-content { + padding: 24px; + } + .modal-close { + cursor: pointer; + } + + .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; + text-align: right; + + .btn, .btn-flat { + margin: 6px 0; + } + } +} +.modal-overlay { + position: fixed; + z-index: 999; + top: -25%; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + + will-change: opacity; +} + +// Modal with fixed action footer +.modal.modal-fixed-footer { + padding: 0; + height: 70%; + + .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; + } + + .modal-footer { + border-top: 1px solid rgba(0,0,0,.1); + position: absolute; + bottom: 0; + } +} + +// Modal Bottom Sheet Style +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; +} diff --git a/server/core/static/styles/materialize/components/_navbar.scss b/server/core/static/styles/materialize/components/_navbar.scss new file mode 100644 index 00000000..0317bb26 --- /dev/null +++ b/server/core/static/styles/materialize/components/_navbar.scss @@ -0,0 +1,208 @@ +nav { + &.nav-extended { + height: auto; + + .nav-wrapper { + min-height: $navbar-height-mobile; + height: auto; + } + + .nav-content { + position: relative; + line-height: normal; + } + } + + color: $navbar-font-color; + @extend .z-depth-1; + background-color: $primary-color; + width: 100%; + height: $navbar-height-mobile; + line-height: $navbar-line-height-mobile; + + a { color: $navbar-font-color; } + + i, + [class^="mdi-"], [class*="mdi-"], + i.material-icons { + display: block; + font-size: 24px; + height: $navbar-height-mobile; + line-height: $navbar-line-height-mobile; + } + + .nav-wrapper { + position: relative; + height: 100%; + } + + @media #{$large-and-up} { + a.sidenav-trigger { display: none; } + } + + + // Collapse button + .sidenav-trigger { + float: left; + position: relative; + z-index: 1; + height: $navbar-height-mobile; + margin: 0 18px; + + i { + height: $navbar-height-mobile; + line-height: $navbar-line-height-mobile; + } + } + + + // Logo + .brand-logo { + position: absolute; + color: $navbar-font-color; + display: inline-block; + font-size: $navbar-brand-font-size; + padding: 0; + + &.center { + left: 50%; + transform: translateX(-50%); + } + + @media #{$medium-and-down} { + left: 50%; + transform: translateX(-50%); + + &.left, &.right { + padding: 0; + transform: none; + } + + &.left { left: 0.5rem; } + &.right { + right: 0.5rem; + left: auto; + } + } + + &.right { + right: 0.5rem; + padding: 0; + } + + i, + [class^="mdi-"], [class*="mdi-"], + i.material-icons { + float: left; + margin-right: 15px; + } + } + + + // Title + .nav-title { + display: inline-block; + font-size: 32px; + padding: 28px 0; + } + + + // Navbar Links + ul { + margin: 0; + + li { + transition: background-color .3s; + float: left; + padding: 0; + + &.active { + background-color: rgba(0,0,0,.1); + } + } + a { + transition: background-color .3s; + font-size: $navbar-font-size; + color: $navbar-font-color; + display: block; + padding: 0 15px; + cursor: pointer; + + &.btn, &.btn-large, &.btn-flat, &.btn-floating { + margin-top: -2px; + margin-left: 15px; + margin-right: 15px; + + & > .material-icons { + height: inherit; + line-height: inherit; + } + } + + &:hover { + background-color: rgba(0,0,0,.1); + } + } + + &.left { + float: left; + } + } + + // Navbar Search Form + form { + height: 100%; + } + + .input-field { + margin: 0; + height: 100%; + + input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; + + &:focus, &[type=text]:valid, &[type=password]:valid, + &[type=email]:valid, &[type=url]:valid, &[type=date]:valid { + border: none; + box-shadow: none; + } + } + + label { + top: 0; + left: 0; + + i { + color: rgba(255,255,255,.7); + transition: color .3s; + } + &.active i { color: $navbar-font-color; } + } + } +} + +// Fixed Navbar +.navbar-fixed { + position: relative; + height: $navbar-height-mobile; + z-index: 997; + + nav { + position: fixed; + } +} +@media #{$medium-and-up} { + nav.nav-extended .nav-wrapper { + min-height: $navbar-height; + } + nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i { + height: $navbar-height; + line-height: $navbar-line-height; + } + .navbar-fixed { + height: $navbar-height; + } +} diff --git a/server/core/static/styles/materialize/components/_normalize.scss b/server/core/static/styles/materialize/components/_normalize.scss new file mode 100644 index 00000000..fa4e73dd --- /dev/null +++ b/server/core/static/styles/materialize/components/_normalize.scss @@ -0,0 +1,447 @@ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} diff --git a/server/core/static/styles/materialize/components/_preloader.scss b/server/core/static/styles/materialize/components/_preloader.scss new file mode 100644 index 00000000..fbe862d2 --- /dev/null +++ b/server/core/static/styles/materialize/components/_preloader.scss @@ -0,0 +1,334 @@ +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ + +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ + +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ + + +.preloader-wrapper { + display: inline-block; + position: relative; + width: 50px; + height: 50px; + + &.small { + width: 36px; + height: 36px; + } + + &.big { + width: 64px; + height: 64px; + } + + &.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; + } +} + +@-webkit-keyframes container-rotate { + to { -webkit-transform: rotate(360deg) } +} + +@keyframes container-rotate { + to { transform: rotate(360deg) } +} + +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + border-color: $spinner-default-color; +} + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; +} + +.spinner-red, +.spinner-red-only { + border-color: #db4437; +} + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; +} + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer, +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@keyframes fill-unfill-rotate { + 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@-webkit-keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@-webkit-keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@-webkit-keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@-webkit-keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +@keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; + + .circle { + width: 200%; + height: 100%; + border-width: 3px; /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; + } + + &.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); + } + &.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); + } +} + + + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { -webkit-transform: rotate(130deg); } + 50% { -webkit-transform: rotate(-5deg); } + to { -webkit-transform: rotate(130deg); } +} + +@keyframes left-spin { + from { transform: rotate(130deg); } + 50% { transform: rotate(-5deg); } + to { transform: rotate(130deg); } +} + +@-webkit-keyframes right-spin { + from { -webkit-transform: rotate(-130deg); } + 50% { -webkit-transform: rotate(5deg); } + to { -webkit-transform: rotate(-130deg); } +} + +@keyframes right-spin { + from { transform: rotate(-130deg); } + 50% { transform: rotate(5deg); } + to { transform: rotate(-130deg); } +} + +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +} + +@keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +} diff --git a/server/core/static/styles/materialize/components/_pulse.scss b/server/core/static/styles/materialize/components/_pulse.scss new file mode 100644 index 00000000..a690f367 --- /dev/null +++ b/server/core/static/styles/materialize/components/_pulse.scss @@ -0,0 +1,34 @@ +.pulse { + &::before { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: inherit; + border-radius: inherit; + transition: opacity .3s, transform .3s; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + z-index: -1; + } + + overflow: visible; + position: relative; +} + +@keyframes pulse-animation { + 0% { + opacity: 1; + transform: scale(1); + } + 50% { + opacity: 0; + transform: scale(1.5); + } + 100% { + opacity: 0; + transform: scale(1.5); + } +} diff --git a/server/core/static/styles/materialize/components/_sidenav.scss b/server/core/static/styles/materialize/components/_sidenav.scss new file mode 100644 index 00000000..b6bfe02b --- /dev/null +++ b/server/core/static/styles/materialize/components/_sidenav.scss @@ -0,0 +1,216 @@ +.sidenav { + position: fixed; + width: 300px; + left: 0; + top: 0; + margin: 0; + transform: translateX(-100%); + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); //Temporary Firefox Fix + padding-bottom: 60px; + background-color: $sidenav-bg-color; + z-index: 999; + overflow-y: auto; + will-change: transform; + backface-visibility: hidden; + transform: translateX(-105%); + + @extend .z-depth-1; + + // Right Align + &.right-aligned { + right: 0; + transform: translateX(105%); + left: auto; + transform: translateX(100%); + } + + .collapsible { + margin: 0; + } + + + li { + float: none; + line-height: $sidenav-line-height; + + &.active { background-color: rgba(0,0,0,.05); } + } + + li > a { + color: $sidenav-font-color; + display: block; + font-size: $sidenav-font-size; + font-weight: 500; + height: $sidenav-item-height; + line-height: $sidenav-line-height; + padding: 0 ($sidenav-padding * 2); + + &:hover { background-color: rgba(0,0,0,.05);} + + &.btn, &.btn-large, &.btn-flat, &.btn-floating { + margin: 10px 15px; + } + + &.btn, + &.btn-large, + &.btn-floating { color: $button-raised-color; } + &.btn-flat { color: $button-flat-color; } + + &.btn:hover, + &.btn-large:hover { background-color: lighten($button-raised-background, 5%); } + &.btn-floating:hover { background-color: $button-raised-background; } + + & > i, + & > [class^="mdi-"], li > a > [class*="mdi-"], + & > i.material-icons { + float: left; + height: $sidenav-item-height; + line-height: $sidenav-line-height; + margin: 0 ($sidenav-padding * 2) 0 0; + width: $sidenav-item-height / 2; + color: rgba(0,0,0,.54); + } + } + + + .divider { + margin: ($sidenav-padding / 2) 0 0 0; + } + + .subheader { + &:hover { + background-color: transparent; + } + + cursor: initial; + pointer-events: none; + color: rgba(0,0,0,.54); + font-size: $sidenav-font-size; + font-weight: 500; + line-height: $sidenav-line-height; + } + + .user-view { + position: relative; + padding: ($sidenav-padding * 2) ($sidenav-padding * 2) 0; + margin-bottom: $sidenav-padding / 2; + + & > a { + &:hover { background-color: transparent; } + height: auto; + padding: 0; + } + + .background { + overflow: hidden; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: -1; + } + + .circle, .name, .email { + display: block; + } + + .circle { + height: 64px; + width: 64px; + } + + .name, + .email { + font-size: $sidenav-font-size; + line-height: $sidenav-line-height / 2; + } + + .name { + margin-top: 16px; + font-weight: 500; + } + + .email { + padding-bottom: 16px; + font-weight: 400; + } + } +} + + +// Touch interaction +.drag-target { + // Right Align + &.right-aligned { + right: 0; + } + + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; +} + + +// Fixed Sidenav shown +.sidenav.sidenav-fixed { + // Right Align + &.right-aligned { + right: 0; + left: auto; + } + + left: 0; + transform: translateX(0); + position: fixed; +} + +// Fixed Sidenav hide on smaller +@media #{$medium-and-down} { + .sidenav { + &.sidenav-fixed { + transform: translateX(-105%); + + &.right-aligned { + transform: translateX(105%); + } + } + + > a { + padding: 0 $sidenav-padding; + } + + .user-view { + padding: $sidenav-padding $sidenav-padding 0; + } + } +} + + +.sidenav .collapsible-body > ul:not(.collapsible) > li.active, +.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active { + background-color: $primary-color; + a { + color: $sidenav-bg-color; + } +} +.sidenav .collapsible-body { + padding: 0; +} + + +.sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + opacity: 0; + height: 120vh; + background-color: rgba(0,0,0,.5); + z-index: 997; + display: none; +} diff --git a/server/core/static/styles/materialize/components/_slider.scss b/server/core/static/styles/materialize/components/_slider.scss new file mode 100644 index 00000000..2265cdb0 --- /dev/null +++ b/server/core/static/styles/materialize/components/_slider.scss @@ -0,0 +1,92 @@ +.slider { + position: relative; + height: 400px; + width: 100%; + + // Fullscreen slider + &.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + ul.slides { + height: 100%; + } + + ul.indicators { + z-index: 2; + bottom: 30px; + } + } + + .slides { + background-color: $slider-bg-color; + margin: 0; + height: 400px; + + li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; + + img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; + } + + .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; + + p { color: $slider-bg-color-light; } + } + + &.active { + z-index: 2; + } + } + } + + + .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; + + .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: $slider-bg-color-light; + + transition: background-color .3s; + border-radius: 50%; + + &.active { + background-color: $slider-indicator-color; + } + } + } + +} \ No newline at end of file diff --git a/server/core/static/styles/materialize/components/_table_of_contents.scss b/server/core/static/styles/materialize/components/_table_of_contents.scss new file mode 100644 index 00000000..638009d9 --- /dev/null +++ b/server/core/static/styles/materialize/components/_table_of_contents.scss @@ -0,0 +1,33 @@ +/*************** + Nav List +***************/ +.table-of-contents { + &.fixed { + position: fixed; + } + + li { + padding: 2px 0; + } + a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 16px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; + + &:hover { + color: lighten(#757575, 20%); + padding-left: 15px; + border-left: 1px solid $primary-color; + } + &.active { + font-weight: 500; + padding-left: 14px; + border-left: 2px solid $primary-color; + } + } +} diff --git a/server/core/static/styles/materialize/components/_tabs.scss b/server/core/static/styles/materialize/components/_tabs.scss new file mode 100644 index 00000000..072d4b6c --- /dev/null +++ b/server/core/static/styles/materialize/components/_tabs.scss @@ -0,0 +1,99 @@ +.tabs { + &.tabs-transparent { + background-color: transparent; + + .tab a, + .tab.disabled a, + .tab.disabled a:hover { + color: rgba(255,255,255,0.7); + } + + .tab a:hover, + .tab a.active { + color: #fff; + } + + .indicator { + background-color: #fff; + } + } + + &.tabs-fixed-width { + display: flex; + + .tab { + flex-grow: 1; + } + } + + position: relative; + overflow-x: auto; + overflow-y: hidden; + height: 48px; + width: 100%; + background-color: $tabs-bg-color; + margin: 0 auto; + white-space: nowrap; + + .tab { + display: inline-block; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0; + margin: 0; + text-transform: uppercase; + + a { + &:focus, + &:focus.active { + background-color: transparentize($tabs-underline-color, .8); + outline: none; + } + + &:hover, + &.active { + background-color: transparent; + color: $tabs-text-color; + } + + color: rgba($tabs-text-color, .7); + display: block; + width: 100%; + height: 100%; + padding: 0 24px; + font-size: 14px; + text-overflow: ellipsis; + overflow: hidden; + transition: color .28s ease, background-color .28s ease; + } + + &.disabled a, + &.disabled a:hover { + color: rgba($tabs-text-color, .4); + cursor: default; + } + } + .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: $tabs-underline-color; + will-change: left, right; + } +} + +// Fixed Sidenav hide on smaller +@media #{$medium-and-down} { + .tabs { + display: flex; + + .tab { + flex-grow: 1; + + a { + padding: 0 12px; + } + } + } +} diff --git a/server/core/static/styles/materialize/components/_tapTarget.scss b/server/core/static/styles/materialize/components/_tapTarget.scss new file mode 100644 index 00000000..c015f34a --- /dev/null +++ b/server/core/static/styles/materialize/components/_tapTarget.scss @@ -0,0 +1,103 @@ +.tap-target-wrapper { + width: 800px; + height: 800px; + position: fixed; + z-index: 1000; + visibility: hidden; + transition: visibility 0s .3s; +} + +.tap-target-wrapper.open { + visibility: visible; + transition: visibility 0s; + + .tap-target { + transform: scale(1); + opacity: .95; + transition: + transform .3s cubic-bezier(.42,0,.58,1), + opacity .3s cubic-bezier(.42,0,.58,1); + } + + .tap-target-wave::before { + transform: scale(1); + } + .tap-target-wave::after { + visibility: visible; + animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite; + transition: + opacity .3s, + transform .3s, + visibility 0s 1s; + } +} + +.tap-target { + position: absolute; + font-size: 1rem; + border-radius: 50%; + background-color: $primary-color; + box-shadow: 0 20px 20px 0 rgba(0,0,0,0.14), 0 10px 50px 0 rgba(0,0,0,0.12), 0 30px 10px -20px rgba(0,0,0,0.2); + width: 100%; + height: 100%; + opacity: 0; + transform: scale(0); + transition: + transform .3s cubic-bezier(.42,0,.58,1), + opacity .3s cubic-bezier(.42,0,.58,1); +} + +.tap-target-content { + position: relative; + display: table-cell; +} + +.tap-target-wave { + &::before, + &::after { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #ffffff; + } + &::before { + transform: scale(0); + transition: transform .3s; + } + &::after { + visibility: hidden; + transition: + opacity .3s, + transform .3s, + visibility 0s; + z-index: -1; + } + + position: absolute; + border-radius: 50%; + z-index: 10001; +} + +.tap-target-origin { + &:not(.btn), + &:not(.btn):hover { + background: none; + } + + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + + z-index: 10002; + position: absolute !important; +} + +@media only screen and (max-width: 600px) { + .tap-target, .tap-target-wrapper { + width: 600px; + height: 600px; + } +} diff --git a/server/core/static/styles/materialize/components/_timepicker.scss b/server/core/static/styles/materialize/components/_timepicker.scss new file mode 100644 index 00000000..fa602fbb --- /dev/null +++ b/server/core/static/styles/materialize/components/_timepicker.scss @@ -0,0 +1,183 @@ +/* Timepicker Containers */ +.timepicker-modal { + max-width: 325px; + max-height: none; +} + +.timepicker-container.modal-content { + display: flex; + flex-direction: column; + padding: 0; +} + +.text-primary { + color: rgba(255, 255, 255, 1); +} + + +/* Clock Digital Display */ +.timepicker-digital-display { + flex: 1 auto; + background-color: $secondary-color; + padding: 10px; + font-weight: 300; +} + +.timepicker-text-container { + font-size: 4rem; + font-weight: bold; + text-align: center; + color: rgba(255, 255, 255, 0.6); + font-weight: 400; + position: relative; + user-select: none; +} + +.timepicker-span-hours, +.timepicker-span-minutes, +.timepicker-span-am-pm div { + cursor: pointer; +} + +.timepicker-span-hours { + margin-right: 3px; +} + +.timepicker-span-minutes { + margin-left: 3px; +} + +.timepicker-display-am-pm { + font-size: 1.3rem; + position: absolute; + right: 1rem; + bottom: 1rem; + font-weight: 400; +} + + +/* Analog Clock Display */ +.timepicker-analog-display { + flex: 2.5 auto; +} + +.timepicker-plate { + background-color: $timepicker-clock-plate-bg; + border-radius: 50%; + width: 270px; + height: 270px; + overflow: visible; + position: relative; + margin: auto; + margin-top: 25px; + margin-bottom: 5px; + user-select: none; +} + +.timepicker-canvas, +.timepicker-dial { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} +.timepicker-minutes { + visibility: hidden; +} + +.timepicker-tick { + border-radius: 50%; + color: $timepicker-clock-color; + line-height: 40px; + text-align: center; + width: 40px; + height: 40px; + position: absolute; + cursor: pointer; + font-size: 15px; +} + +.timepicker-tick.active, +.timepicker-tick:hover { + background-color: transparentize($secondary-color, .75); +} +.timepicker-dial { + transition: transform 350ms, opacity 350ms; +} +.timepicker-dial-out { + &.timepicker-hours { + transform: scale(1.1, 1.1); + } + + &.timepicker-minutes { + transform: scale(.8, .8); + } + + opacity: 0; +} +.timepicker-canvas { + transition: opacity 175ms; + + line { + stroke: $secondary-color; + stroke-width: 4; + stroke-linecap: round; + } +} +.timepicker-canvas-out { + opacity: 0.25; +} +.timepicker-canvas-bearing { + stroke: none; + fill: $secondary-color; +} +.timepicker-canvas-bg { + stroke: none; + fill: $secondary-color; +} + + +/* Footer */ +.timepicker-footer { + margin: 0 auto; + padding: 5px 1rem; + display: flex; + justify-content: space-between; +} + +.timepicker-clear { + color: $error-color; +} + +.timepicker-close { + color: $secondary-color; +} + +.timepicker-clear, +.timepicker-close { + padding: 0 20px; +} + +/* Media Queries */ +@media #{$medium-and-up} { + .timepicker-modal { + max-width: 600px; + } + + .timepicker-container.modal-content { + flex-direction: row; + } + + .timepicker-text-container { + top: 32%; + } + + .timepicker-display-am-pm { + position: relative; + right: auto; + bottom: auto; + text-align: center; + margin-top: 1.2rem; + } +} diff --git a/server/core/static/styles/materialize/components/_toast.scss b/server/core/static/styles/materialize/components/_toast.scss new file mode 100644 index 00000000..c1fea086 --- /dev/null +++ b/server/core/static/styles/materialize/components/_toast.scss @@ -0,0 +1,59 @@ +#toast-container { + display:block; + position: fixed; + z-index: 10000; + + @media #{$small-and-down} { + min-width: 100%; + bottom: 0%; + } + @media #{$medium-only} { + left: 5%; + bottom: 7%; + max-width: 90%; + } + @media #{$large-and-up} { + top: 10%; + right: 7%; + max-width: 86%; + } +} + +.toast { + @extend .z-depth-1; + border-radius: 2px; + top: 35px; + width: auto; + margin-top: 10px; + position: relative; + max-width:100%; + height: auto; + min-height: $toast-height; + line-height: 1.5em; + word-break: break-all; + background-color: $toast-color; + padding: 10px 25px; + font-size: 1.1rem; + font-weight: 300; + color: $toast-text-color; + display: flex; + align-items: center; + justify-content: space-between; + cursor: default; + + .toast-action { + color: $toast-action-color; + font-weight: 500; + margin-right: -25px; + margin-left: 3rem; + } + + &.rounded{ + border-radius: 24px; + } + + @media #{$small-and-down} { + width: 100%; + border-radius: 0; + } +} diff --git a/server/core/static/styles/materialize/components/_tooltip.scss b/server/core/static/styles/materialize/components/_tooltip.scss new file mode 100644 index 00000000..5ec4299b --- /dev/null +++ b/server/core/static/styles/materialize/components/_tooltip.scss @@ -0,0 +1,32 @@ +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 120%; + opacity: 0; + position: absolute; + text-align: center; + max-width: calc(100% - 4px); + overflow: hidden; + left: 0; + top: 0; + pointer-events: none; + visibility: hidden; + background-color: #323232; +} + +.backdrop { + position: absolute; + opacity: 0; + height: 7px; + width: 14px; + border-radius: 0 0 50% 50%; + background-color: #323232; + z-index: -1; + transform-origin: 50% 0%; + visibility: hidden; +} diff --git a/server/core/static/styles/materialize/components/_transitions.scss b/server/core/static/styles/materialize/components/_transitions.scss new file mode 100644 index 00000000..9c3660aa --- /dev/null +++ b/server/core/static/styles/materialize/components/_transitions.scss @@ -0,0 +1,13 @@ +// Scale transition +.scale-transition { + &.scale-out { + transform: scale(0); + transition: transform .2s !important; + } + + &.scale-in { + transform: scale(1); + } + + transition: transform .3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important; +} \ No newline at end of file diff --git a/server/core/static/styles/materialize/components/_typography.scss b/server/core/static/styles/materialize/components/_typography.scss new file mode 100644 index 00000000..b9b93b3e --- /dev/null +++ b/server/core/static/styles/materialize/components/_typography.scss @@ -0,0 +1,60 @@ + +a { + text-decoration: none; +} + +html{ + line-height: 1.5; + + @media only screen and (min-width: 0) { + font-size: 14px; + } + + @media only screen and (min-width: $medium-screen) { + font-size: 14.5px; + } + + @media only screen and (min-width: $large-screen) { + font-size: 15px; + } + + font-family: $font-stack; + font-weight: normal; + color: $off-black; +} +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.3; +} + +// Header Styles +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } +h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 1.5) 0 ($h1-fontsize / 2.5) 0;} +h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 1.5) 0 ($h2-fontsize / 2.5) 0;} +h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 1.5) 0 ($h3-fontsize / 2.5) 0;} +h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 1.5) 0 ($h4-fontsize / 2.5) 0;} +h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 1.5) 0 ($h5-fontsize / 2.5) 0;} +h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 1.5) 0 ($h6-fontsize / 2.5) 0;} + +// Text Styles +em { font-style: italic; } +strong { font-weight: 500; } +small { font-size: 75%; } +.light { font-weight: 300; } +.thin { font-weight: 200; } + + +.flow-text{ + $i: 0; + @while $i <= $intervals { + @media only screen and (min-width : 360 + ($i * $interval-size)) { + font-size: 1.2rem * (1 + (.02 * $i)); + } + $i: $i + 1; + } + + // Handle below 360px screen + @media only screen and (max-width: 360px) { + font-size: 1.2rem; + } +} diff --git a/server/core/static/styles/materialize/components/_variables.scss b/server/core/static/styles/materialize/components/_variables.scss new file mode 100644 index 00000000..d0a00701 --- /dev/null +++ b/server/core/static/styles/materialize/components/_variables.scss @@ -0,0 +1,348 @@ +// ========================================================================== +// Materialize variables +// ========================================================================== +// +// Table of Contents: +// +// 1. Colors +// 2. Badges +// 3. Buttons +// 4. Cards +// 5. Carousel +// 6. Collapsible +// 7. Chips +// 8. Date + Time Picker +// 9. Dropdown +// 10. Forms +// 11. Global +// 12. Grid +// 13. Navigation Bar +// 14. Side Navigation +// 15. Photo Slider +// 16. Spinners | Loaders +// 17. Tabs +// 18. Tables +// 19. Toasts +// 20. Typography +// 21. Footer +// 22. Flow Text +// 23. Collections +// 24. Progress Bar + + + +// 1. Colors +// ========================================================================== + +$primary-color: color("materialize-red", "lighten-2") !default; +$primary-color-light: lighten($primary-color, 15%) !default; +$primary-color-dark: darken($primary-color, 15%) !default; + +$secondary-color: color("teal", "lighten-1") !default; +$success-color: color("green", "base") !default; +$error-color: color("red", "base") !default; +$link-color: color("light-blue", "darken-1") !default; + + +// 2. Badges +// ========================================================================== + +$badge-bg-color: $secondary-color !default; +$badge-height: 22px !default; + + +// 3. Buttons +// ========================================================================== + +// Shared styles +$button-border: none !default; +$button-background-focus: lighten($secondary-color, 4%) !default; +$button-font-size: 14px !default; +$button-icon-font-size: 1.3rem !default; +$button-height: 36px !default; +$button-padding: 0 16px !default; +$button-radius: 2px !default; + +// Disabled styles +$button-disabled-background: #DFDFDF !default; +$button-disabled-color: #9F9F9F !default; + +// Raised buttons +$button-raised-background: $secondary-color !default; +$button-raised-background-hover: lighten($button-raised-background, 5%) !default; +$button-raised-color: #fff !default; + +// Large buttons +$button-large-font-size: 15px !default; +$button-large-icon-font-size: 1.6rem !default; +$button-large-height: $button-height * 1.5 !default; +$button-floating-large-size: 56px !default; + +// Small buttons +$button-small-font-size: 13px !default; +$button-small-icon-font-size: 1.2rem !default; +$button-small-height: $button-height * .9 !default; +$button-floating-small-size: $button-height * .9 !default; + +// Flat buttons +$button-flat-color: #343434 !default; +$button-flat-disabled-color: lighten(#999, 10%) !default; + +// Floating buttons +$button-floating-background: $secondary-color !default; +$button-floating-background-hover: $button-floating-background !default; +$button-floating-color: #fff !default; +$button-floating-size: 40px !default; +$button-floating-radius: 50% !default; + + +// 4. Cards +// ========================================================================== + +$card-padding: 24px !default; +$card-bg-color: #fff !default; +$card-link-color: color("orange", "accent-2") !default; +$card-link-color-light: lighten($card-link-color, 20%) !default; + + +// 5. Carousel +// ========================================================================== + +$carousel-height: 400px !default; +$carousel-item-height: $carousel-height / 2 !default; +$carousel-item-width: $carousel-item-height !default; + + +// 6. Collapsible +// ========================================================================== + +$collapsible-height: 3rem !default; +$collapsible-line-height: $collapsible-height !default; +$collapsible-header-color: #fff !default; +$collapsible-border-color: #ddd !default; + + +// 7. Chips +// ========================================================================== + +$chip-bg-color: #e4e4e4 !default; +$chip-border-color: #9e9e9e !default; +$chip-selected-color: #26a69a !default; +$chip-margin: 5px !default; + + +// 8. Date + Time Picker +// ========================================================================== + +$datepicker-display-font-size: 2.8rem; +$datepicker-calendar-header-color: #999; +$datepicker-weekday-color: rgba(0, 0, 0, .87) !default; +$datepicker-weekday-bg: darken($secondary-color, 7%) !default; +$datepicker-date-bg: $secondary-color !default; +$datepicker-year: rgba(255, 255, 255, .7) !default; +$datepicker-focus: rgba(0,0,0, .05) !default; +$datepicker-selected: $secondary-color !default; +$datepicker-selected-outfocus: desaturate(lighten($secondary-color, 35%), 15%) !default; +$datepicker-day-focus: transparentize(desaturate($secondary-color, 5%), .75) !default; +$datepicker-disabled-day-color: rgba(0, 0, 0, .3) !default; + +$timepicker-clock-color: rgba(0, 0, 0, .87) !default; +$timepicker-clock-plate-bg: #eee !default; + + +// 9. Dropdown +// ========================================================================== + +$dropdown-bg-color: #fff !default; +$dropdown-hover-bg-color: #eee !default; +$dropdown-color: $secondary-color !default; +$dropdown-item-height: 50px !default; + + +// 10. Forms +// ========================================================================== + +// Text Inputs + Textarea +$input-height: 3rem !default; +$input-border-color: color("grey", "base") !default; +$input-border: 1px solid $input-border-color !default; +$input-background: #fff !default; +$input-error-color: $error-color !default; +$input-success-color: $success-color !default; +$input-focus-color: $secondary-color !default; +$input-font-size: 16px !default; +$input-margin-bottom: 8px; +$input-margin: 0 0 $input-margin-bottom 0 !default; +$input-padding: 0 !default; +$label-font-size: .8rem !default; +$input-disabled-color: rgba(0,0,0, .42) !default; +$input-disabled-solid-color: #949494 !default; +$input-disabled-border: 1px dotted $input-disabled-color !default; +$input-invalid-border: 1px solid $input-error-color !default; +$input-icon-size: 2rem; +$placeholder-text-color: lighten($input-border-color, 20%) !default; + +// Radio Buttons +$radio-fill-color: $secondary-color !default; +$radio-empty-color: #5a5a5a !default; +$radio-border: 2px solid $radio-fill-color !default; + +// Range +$range-height: 14px !default; +$range-width: 14px !default; +$track-height: 3px !default; + +// Select +$select-border: 1px solid #f2f2f2 !default; +$select-background: rgba(255, 255, 255, 0.90) !default; +$select-focus: 1px solid lighten($secondary-color, 47%) !default; +$select-option-hover: rgba(0,0,0,.08) !default; +$select-option-focus: rgba(0,0,0,.08) !default; +$select-option-selected: rgba(0,0,0,.03) !default; +$select-padding: 5px !default; +$select-radius: 2px !default; +$select-disabled-color: rgba(0,0,0,.3) !default; + +// Switches +$switch-bg-color: $secondary-color !default; +$switch-checked-lever-bg: desaturate(lighten($switch-bg-color, 25%), 25%) !default; +$switch-unchecked-bg: #F1F1F1 !default; +$switch-unchecked-lever-bg: rgba(0,0,0,.38) !default; +$switch-radius: 15px !default; + + +// 11. Global +// ========================================================================== + +// Media Query Ranges +$small-screen-up: 601px !default; +$medium-screen-up: 993px !default; +$large-screen-up: 1201px !default; +$small-screen: 600px !default; +$medium-screen: 992px !default; +$large-screen: 1200px !default; + +$medium-and-up: "only screen and (min-width : #{$small-screen-up})" !default; +$large-and-up: "only screen and (min-width : #{$medium-screen-up})" !default; +$extra-large-and-up: "only screen and (min-width : #{$large-screen-up})" !default; +$small-and-down: "only screen and (max-width : #{$small-screen})" !default; +$medium-and-down: "only screen and (max-width : #{$medium-screen})" !default; +$medium-only: "only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})" !default; + + +// 12. Grid +// ========================================================================== + +$num-cols: 12 !default; +$gutter-width: 1.5rem !default; +$element-top-margin: $gutter-width/3 !default; +$element-bottom-margin: ($gutter-width*2)/3 !default; + + +// 13. Navigation Bar +// ========================================================================== + +$navbar-height: 64px !default; +$navbar-line-height: $navbar-height !default; +$navbar-height-mobile: 56px !default; +$navbar-line-height-mobile: $navbar-height-mobile !default; +$navbar-font-size: 1rem !default; +$navbar-font-color: #fff !default; +$navbar-brand-font-size: 2.1rem !default; + +// 14. Side Navigation +// ========================================================================== + +$sidenav-font-size: 14px !default; +$sidenav-font-color: rgba(0,0,0,.87) !default; +$sidenav-bg-color: #fff !default; +$sidenav-padding: 16px !default; +$sidenav-item-height: 48px !default; +$sidenav-line-height: $sidenav-item-height !default; + + +// 15. Photo Slider +// ========================================================================== + +$slider-bg-color: color('grey', 'base') !default; +$slider-bg-color-light: color('grey', 'lighten-2') !default; +$slider-indicator-color: color('green', 'base') !default; + + +// 16. Spinners | Loaders +// ========================================================================== + +$spinner-default-color: $secondary-color !default; + + +// 17. Tabs +// ========================================================================== + +$tabs-underline-color: $primary-color-light !default; +$tabs-text-color: $primary-color !default; +$tabs-bg-color: #fff !default; + + +// 18. Tables +// ========================================================================== + +$table-border-color: rgba(0,0,0,.12) !default; +$table-striped-color: rgba(242, 242, 242, 0.5) !default; + + +// 19. Toasts +// ========================================================================== + +$toast-height: 48px !default; +$toast-color: #323232 !default; +$toast-text-color: #fff !default; +$toast-action-color: #eeff41; + + +// 20. Typography +// ========================================================================== + +$font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif !default; +$off-black: rgba(0, 0, 0, 0.87) !default; +// Header Styles +$h1-fontsize: 4.2rem !default; +$h2-fontsize: 3.56rem !default; +$h3-fontsize: 2.92rem !default; +$h4-fontsize: 2.28rem !default; +$h5-fontsize: 1.64rem !default; +$h6-fontsize: 1.15rem !default; + + +// 21. Footer +// ========================================================================== + +$footer-font-color: #fff !default; +$footer-bg-color: $primary-color !default; +$footer-copyright-font-color: rgba(255,255,255,.8) !default; +$footer-copyright-bg-color: rgba(51,51,51,.08) !default; + + +// 22. Flow Text +// ========================================================================== + +$range : $large-screen - $small-screen !default; +$intervals: 20 !default; +$interval-size: $range / $intervals !default; + + +// 23. Collections +// ========================================================================== + +$collection-border-color: #e0e0e0 !default; +$collection-bg-color: #fff !default; +$collection-active-bg-color: $secondary-color !default; +$collection-active-color: lighten($secondary-color, 55%) !default; +$collection-hover-bg-color: #ddd !default; +$collection-link-color: $secondary-color !default; +$collection-line-height: 1.5rem !default; + + +// 24. Progress Bar +// ========================================================================== + +$progress-bar-color: $secondary-color !default; diff --git a/server/core/static/styles/materialize/components/_waves.scss b/server/core/static/styles/materialize/components/_waves.scss new file mode 100644 index 00000000..5a3229b2 --- /dev/null +++ b/server/core/static/styles/materialize/components/_waves.scss @@ -0,0 +1,114 @@ + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + + +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + transition: .3s ease-out; + + .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top:-10px; + margin-left:-10px; + opacity: 0; + + background: rgba(0,0,0,0.2); + transition: all 0.7s ease-out; + transition-property: transform, opacity; + transform: scale(0); + pointer-events: none; + } + + // Waves Colors + &.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); + } + &.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, .70); + } + &.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, .70); + } + &.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, .70); + } + &.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.70); + } + &.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.70); + } + &.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.70); + } + + // Style input button bug. + input[type="button"], input[type="reset"], input[type="submit"] { + border: 0; + font-style: normal; + font-size: inherit; + text-transform: inherit; + background: none; + } + + img { + position: relative; + z-index: -1; + } +} + +.waves-notransition { + transition: none #{"!important"}; +} + +.waves-circle { + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); +} + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; + + .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; + } +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} + +.waves-block { + display: block; +} + +/* Firefox Bug: link not triggered */ +.waves-effect .waves-ripple { + z-index: -1; +} \ No newline at end of file diff --git a/server/core/static/styles/materialize/components/forms/_checkboxes.scss b/server/core/static/styles/materialize/components/forms/_checkboxes.scss new file mode 100644 index 00000000..ddc7d961 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_checkboxes.scss @@ -0,0 +1,200 @@ +/* Checkboxes + ========================================================================== */ + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + opacity: 0; + pointer-events: none; +} + +// Checkbox Styles +[type="checkbox"] { + // Text Label Style + + span:not(.lever) { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + user-select: none; + } + + /* checkbox aspect */ + + span:not(.lever):before, + &:not(.filled-in) + span:not(.lever):after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid $radio-empty-color; + border-radius: 1px; + margin-top: 3px; + transition: .2s; + } + + &:not(.filled-in) + span:not(.lever):after { + border: 0; + transform: scale(0); + } + + &:not(:checked):disabled + span:not(.lever):before { + border: none; + background-color: $input-disabled-color; + } + + // Focused styles + &.tabbed:focus + span:not(.lever):after { + transform: scale(1); + border: 0; + border-radius: 50%; + box-shadow: 0 0 0 10px rgba(0,0,0,.1); + background-color: rgba(0,0,0,.1); + } +} + +[type="checkbox"]:checked { + + span:not(.lever):before { + top: -4px; + left: -5px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: $radio-border; + border-bottom: $radio-border; + transform: rotate(40deg); + backface-visibility: hidden; + transform-origin: 100% 100%; + } + + &:disabled + span:before { + border-right: 2px solid $input-disabled-color; + border-bottom: 2px solid $input-disabled-color; + } +} + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate { + + span:not(.lever):before { + top: -11px; + left: -12px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: $radio-border; + border-bottom: none; + transform: rotate(90deg); + backface-visibility: hidden; + transform-origin: 100% 100%; + } + + // Disabled indeterminate + &:disabled + span:not(.lever):before { + border-right: 2px solid $input-disabled-color; + background-color: transparent; + } +} + +// Filled in Style +[type="checkbox"].filled-in { + // General + + span:not(.lever):after { + border-radius: 2px; + } + + + span:not(.lever):before, + + span:not(.lever):after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; + } + + // Unchecked style + &:not(:checked) + span:not(.lever):before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + transform: rotateZ(37deg); + transform-origin: 100% 100%; + } + + &:not(:checked) + span:not(.lever):after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid $radio-empty-color; + top: 0px; + z-index: 0; + } + + // Checked style + &:checked { + + span:not(.lever):before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid $input-background; + border-bottom: 2px solid $input-background; + transform: rotateZ(37deg); + transform-origin: 100% 100%; + } + + + span:not(.lever):after { + top: 0; + width: 20px; + height: 20px; + border: 2px solid $secondary-color; + background-color: $secondary-color; + z-index: 0; + } + } + + // Focused styles + &.tabbed:focus + span:not(.lever):after { + border-radius: 2px; + border-color: $radio-empty-color; + background-color: rgba(0,0,0,.1); + } + + &.tabbed:checked:focus + span:not(.lever):after { + border-radius: 2px; + background-color: $secondary-color; + border-color: $secondary-color; + } + + // Disabled style + &:disabled:not(:checked) + span:not(.lever):before { + background-color: transparent; + border: 2px solid transparent; + } + + &:disabled:not(:checked) + span:not(.lever):after { + border-color: transparent; + background-color: $input-disabled-solid-color; + } + + &:disabled:checked + span:not(.lever):before { + background-color: transparent; + } + + &:disabled:checked + span:not(.lever):after { + background-color: $input-disabled-solid-color; + border-color: $input-disabled-solid-color; + } +} diff --git a/server/core/static/styles/materialize/components/forms/_file-input.scss b/server/core/static/styles/materialize/components/forms/_file-input.scss new file mode 100644 index 00000000..e2becc94 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_file-input.scss @@ -0,0 +1,44 @@ +/* File Input + ========================================================================== */ + +.file-field { + position: relative; + + .file-path-wrapper { + overflow: hidden; + padding-left: 10px; + } + + input.file-path { width: 100%; } + + .btn { + float: left; + height: $input-height; + line-height: $input-height; + } + + span { + cursor: pointer; + } + + input[type=file] { + + // Needed to override webkit button + &::-webkit-file-upload-button { + display: none; + } + + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + } +} diff --git a/server/core/static/styles/materialize/components/forms/_forms.scss b/server/core/static/styles/materialize/components/forms/_forms.scss new file mode 100644 index 00000000..e9b65b43 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_forms.scss @@ -0,0 +1,22 @@ +// Remove Focus Boxes +select:focus { + outline: $select-focus; +} + +button:focus { + outline: none; + background-color: $button-background-focus; +} + +label { + font-size: $label-font-size; + color: $input-border-color; +} + +@import 'input-fields'; +@import 'radio-buttons'; +@import 'checkboxes'; +@import 'switches'; +@import 'select'; +@import 'file-input'; +@import 'range'; diff --git a/server/core/static/styles/materialize/components/forms/_input-fields.scss b/server/core/static/styles/materialize/components/forms/_input-fields.scss new file mode 100644 index 00000000..63bcc0f9 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_input-fields.scss @@ -0,0 +1,352 @@ +/* Text Inputs + Textarea + ========================================================================== */ + +/* Style Placeholders */ + +::placeholder { + color: $placeholder-text-color; +} + +/* Text inputs */ + +input:not([type]), +input[type=text]:not(.browser-default), +input[type=password]:not(.browser-default), +input[type=email]:not(.browser-default), +input[type=url]:not(.browser-default), +input[type=time]:not(.browser-default), +input[type=date]:not(.browser-default), +input[type=datetime]:not(.browser-default), +input[type=datetime-local]:not(.browser-default), +input[type=tel]:not(.browser-default), +input[type=number]:not(.browser-default), +input[type=search]:not(.browser-default), +textarea.materialize-textarea { + + // General Styles + background-color: transparent; + border: none; + border-bottom: $input-border; + border-radius: 0; + outline: none; + height: $input-height; + width: 100%; + font-size: $input-font-size; + margin: $input-margin; + padding: $input-padding; + box-shadow: none; + box-sizing: content-box; + transition: box-shadow .3s, border .3s; + + // Disabled input style + &:disabled, + &[readonly="readonly"] { + color: $input-disabled-color; + border-bottom: $input-disabled-border; + } + + // Disabled label style + &:disabled+label, + &[readonly="readonly"]+label { + color: $input-disabled-color; + } + + // Focused input style + &:focus:not([readonly]) { + border-bottom: 1px solid $input-focus-color; + box-shadow: 0 1px 0 0 $input-focus-color; + } + + // Focused label style + &:focus:not([readonly])+label { + color: $input-focus-color; + } + + // Hide helper text on data message + &.valid ~ .helper-text[data-success], + &:focus.valid ~ .helper-text[data-success], + &.invalid ~ .helper-text[data-error], + &:focus.invalid ~ .helper-text[data-error] { + @extend %hidden-text; + } + + // Valid Input Style + &.valid, + &:focus.valid { + @extend %valid-input-style; + } + + // Custom Success Message + &.valid ~ .helper-text:after, + &:focus.valid ~ .helper-text:after { + @extend %custom-success-message; + } + &:focus.valid ~ label { + color: $input-success-color; + } + + // Invalid Input Style + &.invalid, + &:focus.invalid { + @extend %invalid-input-style; + } + + // Custom Error message + &.invalid ~ .helper-text:after, + &:focus.invalid ~ .helper-text:after { + @extend %custom-error-message; + } + &:focus.invalid ~ label { + color: $input-error-color; + } + + // Full width label when using validate for error messages + &.validate + label { + width: 100%; + } + + // Form Message Shared Styles + & + label:after { + @extend %input-after-style; + } +} + + +/* Validation Sass Placeholders */ +%valid-input-style { + border-bottom: 1px solid $input-success-color; + box-shadow: 0 1px 0 0 $input-success-color; +} +%invalid-input-style { + border-bottom: $input-invalid-border; + box-shadow: 0 1px 0 0 $input-error-color; +} +%hidden-text { + color: transparent; + user-select: none; + pointer-events: none; +} +%custom-success-message { + content: attr(data-success); + color: $input-success-color; +} +%custom-error-message { + content: attr(data-error); + color: $input-error-color; +} +%input-after-style { + display: block; + content: ""; + position: absolute; + top: 100%; + left: 0; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; +} + + +// Styling for input field wrapper +.input-field { + // Inline styles + &.inline { + display: inline-block; + vertical-align: middle; + margin-left: 5px; + + input, + .select-dropdown { + margin-bottom: 1rem; + } + } + + // Gutter spacing + &.col { + label { + left: $gutter-width / 2; + } + + .prefix ~ label, + .prefix ~ .validate ~ label { + width: calc(100% - 3rem - #{$gutter-width}); + } + } + + position: relative; + margin-top: 1rem; + margin-bottom: 1rem; + + & > label { + color: $input-border-color; + position: absolute; + top: 0; + left: 0; + font-size: 1rem; + cursor: text; + transition: transform .2s ease-out, color .2s ease-out; + transform-origin: 0% 100%; + text-align: initial; + transform: translateY(12px); + + &:not(.label-icon).active { + transform: translateY(-14px) scale(.8); + transform-origin: 0 0; + } + } + + & > input[type=date]:not(.browser-default) + label, + & > input[type=time]:not(.browser-default) + label { + transform: translateY(-14px) scale(.8); + transform-origin: 0 0; + } + + .helper-text { + &::after { + opacity: 1; + position: absolute; + top: 0; + left: 0; + } + + position: relative; + min-height: 18px; + display: block; + font-size: 12px; + color: rgba(0,0,0,.54); + } + + // Prefix Icons + .prefix { + position: absolute; + width: $input-height; + font-size: $input-icon-size; + transition: color .2s; + top: ($input-height - $input-icon-size) / 2; + + &.active { color: $input-focus-color; } + } + + .prefix ~ input, + .prefix ~ textarea, + .prefix ~ label, + .prefix ~ .validate ~ label, + .prefix ~ .helper-text, + .prefix ~ .autocomplete-content { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); + } + + .prefix ~ label { margin-left: 3rem; } + + @media #{$medium-and-down} { + .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); + } + } + + @media #{$small-and-down} { + .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); + } + } +} + + +/* Search Field */ + +.input-field input[type=search] { + display: block; + line-height: inherit; + transition: .3s background-color; + + .nav-wrapper & { + height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); + border: 0; + box-shadow: none; + } + + &:focus:not(.browser-default) { + background-color: $input-background; + border: 0; + box-shadow: none; + color: #444; + + & + label i, + & ~ .mdi-navigation-close, + & ~ .material-icons { + color: #444; + } + } + + & + .label-icon { + transform: none; + left: 1rem; + } + + & ~ .mdi-navigation-close, + & ~ .material-icons { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: $input-icon-size; + transition: .3s color; + } +} + + +/* Textarea */ + +// Default textarea +textarea { + width: 100%; + height: $input-height; + background-color: transparent; + + &.materialize-textarea { + line-height: normal; + overflow-y: hidden; /* prevents scroll bar flash */ + padding: .8rem 0 .8rem 0; /* prevents text jump on Enter keypress */ + resize: none; + min-height: $input-height; + box-sizing: border-box; + } +} + +// For textarea autoresize +.hiddendiv { + visibility: hidden; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; /* prevents text jump on Enter keypress */ + + // Reduces repaints + position: absolute; + top: 0; + z-index: -1; +} + + +/* Autocomplete */ +.autocomplete-content { + li { + .highlight { color: #444; } + + img { + height: $dropdown-item-height - 10; + width: $dropdown-item-height - 10; + margin: 5px 15px; + } + } +} + +/* Character Counter */ +.character-counter { + min-height: 18px; +} diff --git a/server/core/static/styles/materialize/components/forms/_radio-buttons.scss b/server/core/static/styles/materialize/components/forms/_radio-buttons.scss new file mode 100644 index 00000000..c9f72962 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_radio-buttons.scss @@ -0,0 +1,115 @@ +/* Radio Buttons + ========================================================================== */ + +// Remove default Radio Buttons +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + opacity: 0; + pointer-events: none; +} + +[type="radio"]:not(:checked) + span, +[type="radio"]:checked + span { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + transition: .28s ease; + user-select: none; +} + +[type="radio"] + span:before, +[type="radio"] + span:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + transition: .28s ease; +} + +/* Unchecked styles */ +[type="radio"]:not(:checked) + span:before, +[type="radio"]:not(:checked) + span:after, +[type="radio"]:checked + span:before, +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:before, +[type="radio"].with-gap:checked + span:after { + border-radius: 50%; +} + +[type="radio"]:not(:checked) + span:before, +[type="radio"]:not(:checked) + span:after { + border: 2px solid $radio-empty-color; +} + +[type="radio"]:not(:checked) + span:after { + transform: scale(0); +} + +/* Checked styles */ +[type="radio"]:checked + span:before { + border: 2px solid transparent; +} + +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:before, +[type="radio"].with-gap:checked + span:after { + border: $radio-border; +} + +[type="radio"]:checked + span:after, +[type="radio"].with-gap:checked + span:after { + background-color: $radio-fill-color; +} + +[type="radio"]:checked + span:after { + transform: scale(1.02); +} + +/* Radio With gap */ +[type="radio"].with-gap:checked + span:after { + transform: scale(.5); +} + +/* Focused styles */ +[type="radio"].tabbed:focus + span:before { + box-shadow: 0 0 0 10px rgba(0,0,0,.1); +} + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + span:before { + border: 2px solid $input-disabled-color; +} + +[type="radio"].with-gap:disabled:checked + span:after { + border: none; + background-color: $input-disabled-color; +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + span:before, +[type="radio"]:disabled:checked + span:before { + background-color: transparent; + border-color: $input-disabled-color; +} + +[type="radio"]:disabled + span { + color: $input-disabled-color; +} + +[type="radio"]:disabled:not(:checked) + span:before { + border-color: $input-disabled-color; +} + +[type="radio"]:disabled:checked + span:after { + background-color: $input-disabled-color; + border-color: $input-disabled-solid-color; +} diff --git a/server/core/static/styles/materialize/components/forms/_range.scss b/server/core/static/styles/materialize/components/forms/_range.scss new file mode 100644 index 00000000..613906ad --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_range.scss @@ -0,0 +1,161 @@ +/* Range + ========================================================================== */ + +.range-field { + position: relative; +} + +input[type=range], +input[type=range] + .thumb { + @extend .no-select; + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0; + padding: 0; + + &:focus { + outline: none; + } +} + +input[type=range] + .thumb { + position: absolute; + top: 10px; + left: 0; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: $radio-fill-color; + margin-left: 7px; + + transform-origin: 50% 50%; + transform: rotate(-45deg); + + .value { + display: block; + width: 30px; + text-align: center; + color: $radio-fill-color; + font-size: 0; + transform: rotate(45deg); + } + + &.active { + border-radius: 50% 50% 50% 0; + + .value { + color: $input-background; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; + } + } +} + +// Shared +@mixin range-track { + height: $track-height; + background: #c2c0c2; + border: none; +} + +@mixin range-thumb { + border: none; + height: $range-height; + width: $range-width; + border-radius: 50%; + background: $radio-fill-color; + transition: box-shadow .3s; +} + +// WebKit +input[type=range] { + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + @include range-track; +} + +input[type=range]::-webkit-slider-thumb { + @include range-thumb; + -webkit-appearance: none; + background-color: $radio-fill-color; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + +} + +input[type=range].focused:focus:not(.active)::-webkit-slider-thumb { + box-shadow: 0 0 0 10px rgba($radio-fill-color, .26); +} + +// FireFox +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + @include range-track; +} + +input[type=range]::-moz-focus-inner { + border: 0; +} + +input[type=range]::-moz-range-thumb { + @include range-thumb; + margin-top: -5px; +} + +// hide the outline behind the border +input[type=range]:-moz-focusring { + outline: 1px solid #fff; + outline-offset: -1px; +} + +input[type=range].focused:focus:not(.active)::-moz-range-thumb { + box-shadow: 0 0 0 10px rgba($radio-fill-color, .26); +} + +// IE 10+ +input[type=range]::-ms-track { + height: $track-height; + + // remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead + background: transparent; + + // leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + + /*remove default tick marks*/ + color: transparent; +} + +input[type=range]::-ms-fill-lower { + background: #777; +} + +input[type=range]::-ms-fill-upper { + background: #ddd; +} + +input[type=range]::-ms-thumb { + @include range-thumb; +} + +input[type=range].focused:focus:not(.active)::-ms-thumb { + box-shadow: 0 0 0 10px rgba($radio-fill-color, .26); +} diff --git a/server/core/static/styles/materialize/components/forms/_select.scss b/server/core/static/styles/materialize/components/forms/_select.scss new file mode 100644 index 00000000..4da615bc --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_select.scss @@ -0,0 +1,178 @@ +/* Select Field + ========================================================================== */ + +select { display: none; } +select.browser-default { display: block; } + +select { + background-color: $select-background; + width: 100%; + padding: $select-padding; + border: $select-border; + border-radius: $select-radius; + height: $input-height; +} + +.select-label { + position: absolute; +} + +.select-wrapper { + &.valid .helper-text[data-success], + &.invalid ~ .helper-text[data-error] { + @extend %hidden-text; + } + + &.valid { + & > input.select-dropdown { + @extend %valid-input-style; + } + + & ~ .helper-text:after { + @extend %custom-success-message; + } + } + + &.invalid { + & > input.select-dropdown, + & > input.select-dropdown:focus { + @extend %invalid-input-style; + } + + & ~ .helper-text:after { + @extend %custom-error-message; + } + } + + &.valid + label, + &.invalid + label { + width: 100%; + pointer-events: none; + } + + & + label:after { + @extend %input-after-style; + } + + position: relative; + + input.select-dropdown { + &:focus { + border-bottom: 1px solid $input-focus-color; + } + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: $input-border; + outline: none; + height: $input-height; + line-height: $input-height; + width: 100%; + font-size: $input-font-size; + margin: $input-margin; + padding: 0; + display: block; + user-select:none; + z-index: 1; + } + + .caret { + position: absolute; + right: 0; + top: 0; + bottom: 0; + margin: auto 0; + z-index: 0; + fill: rgba(0,0,0,.87); + } + + & + label { + position: absolute; + top: -26px; + font-size: $label-font-size; + } +} + +// Disabled styles +select:disabled { + color: $input-disabled-color; +} + +.select-wrapper.disabled { + + label { + color: $input-disabled-color; + } + .caret { + fill: $input-disabled-color; + } +} + +.select-wrapper input.select-dropdown:disabled { + color: $input-disabled-color; + cursor: default; + user-select: none; +} + +.select-wrapper i { + color: $select-disabled-color; +} + +.select-dropdown li.disabled, +.select-dropdown li.disabled > span, +.select-dropdown li.optgroup { + color: $select-disabled-color; + background-color: transparent; +} + +.select-dropdown.dropdown-content { + li { + &:hover { + background-color: $select-option-hover; + } + + &.selected { + background-color: $select-option-selected; + } + + &:focus { + background-color: $select-option-focus; + } + } +} + +// Prefix Icons +.prefix ~ .select-wrapper { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); +} + +.prefix ~ label { margin-left: 3rem; } + +// Icons +.select-dropdown li { + img { + height: $dropdown-item-height - 10; + width: $dropdown-item-height - 10; + margin: 5px 15px; + float: right; + } +} + +// Optgroup styles +.select-dropdown li.optgroup { + border-top: 1px solid $dropdown-hover-bg-color; + + &.selected > span { + color: rgba(0, 0, 0, .7); + } + + & > span { + color: rgba(0, 0, 0, .4); + } + + & ~ li.optgroup-option { + padding-left: 1rem; + } +} diff --git a/server/core/static/styles/materialize/components/forms/_switches.scss b/server/core/static/styles/materialize/components/forms/_switches.scss new file mode 100644 index 00000000..59767797 --- /dev/null +++ b/server/core/static/styles/materialize/components/forms/_switches.scss @@ -0,0 +1,89 @@ +/* Switch + ========================================================================== */ + +.switch, +.switch * { + -webkit-tap-highlight-color: transparent; + user-select: none; +} + +.switch label { + cursor: pointer; +} + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; + + &:checked + .lever { + background-color: $switch-checked-lever-bg; + + &:before, &:after { + left: 18px; + } + + &:after { + background-color: $switch-bg-color; + } + } +} + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 36px; + height: 14px; + background-color: $switch-unchecked-lever-bg; + border-radius: $switch-radius; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; + + &:before, &:after { + content: ""; + position: absolute; + display: inline-block; + width: 20px; + height: 20px; + border-radius: 50%; + left: 0; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease; + } + + &:before { + background-color: transparentize($switch-bg-color, .85); + } + + &:after { + background-color: $switch-unchecked-bg; + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + } +} + +// Switch active style +input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before, +input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before { + transform: scale(2.4); + background-color: transparentize($switch-bg-color, .85); +} + +input[type=checkbox]:not(:disabled) ~ .lever:active:before, +input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before { + transform: scale(2.4); + background-color: rgba(0,0,0,.08); +} + +// Disabled Styles +.switch input[type=checkbox][disabled] + .lever { + cursor: default; + background-color: rgba(0,0,0,.12); +} + +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: $input-disabled-solid-color; +} diff --git a/server/core/static/styles/materialize/materialize.scss b/server/core/static/styles/materialize/materialize.scss new file mode 100644 index 00000000..298797ef --- /dev/null +++ b/server/core/static/styles/materialize/materialize.scss @@ -0,0 +1,38 @@ +@charset "UTF-8"; + +// Color +@import "components/color-variables"; +@import "components/color-classes"; +// Variables; +@import "components/variables"; +// Reset +@import "components/normalize"; +// components +@import "components/global"; +// @import "components/badges"; +@import "components/icons-material-design"; +@import "components/grid"; +@import "components/navbar"; +@import "components/typography"; +// @import "components/transitions"; +// @import "components/cards"; +// @import "components/toast"; +// @import "components/tabs"; +// @import "components/tooltip"; +@import "components/buttons"; +// @import "components/dropdown"; +// @import "components/waves"; +@import "components/modal"; +// @import "components/collapsible"; +// @import "components/chips"; +// @import "components/materialbox"; +//@import "components/forms/forms"; +// @import "components/table_of_contents"; +// @import "components/sidenav"; +// @import "components/preloader"; +// @import "components/slider"; +// @import "components/carousel"; +// @import "components/tapTarget"; +// @import "components/pulse"; +// @import "components/datepicker"; +// @import "components/timepicker"; diff --git a/server/core/templates/base.html b/server/core/templates/base.html new file mode 100644 index 00000000..4e816015 --- /dev/null +++ b/server/core/templates/base.html @@ -0,0 +1,34 @@ +{% load static from staticfiles %} +{% load compress %} + + + + + + + + {% block title %}skillBox{% endblock %} + + + + + + + {% compress css %} + + {% endcompress %} + + + + + + +

+ {% block body %} + {% endblock %} +
+ + \ No newline at end of file diff --git a/server/core/templates/generic_page.html b/server/core/templates/generic_page.html new file mode 100644 index 00000000..28e3288c --- /dev/null +++ b/server/core/templates/generic_page.html @@ -0,0 +1,41 @@ +{% extends 'base.html' %} +{% load core_tags %} + +{% block title %}{{ page.title }}{% endblock %} + +{% block body %} +

{{ page|class_name }}: {{ page.title }}

+ + {% if page.get_ancestors.count > 1 %} +

Ancestors

+
    + {% for a in page.get_ancestors%} + {% if a.is_root == False %} +
  1. + + {{ a.specific|class_name }}: {{ a.title }} + +
  2. + {% endif %} + {% endfor %} +
+ {% endif %} + +

Attributes

+
{{ page|json_dumps }}
+ + {% if page.get_descendants.count %} +

Descendants

+ + {% endif %} + + +{% endblock %} \ No newline at end of file diff --git a/server/core/templates/registration/login.html b/server/core/templates/registration/login.html new file mode 100644 index 00000000..932e6aec --- /dev/null +++ b/server/core/templates/registration/login.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} + +{% block body_class %}dark-bg{% endblock %} + +{% block body %} + +

skillBox

+ + {% if next %} +
Melde dich jetzt an.
+ {% endif %} + + + {% if form.errors %} +

Benutzername und Passwort stimmen nicht überein.

+ {% endif %} + + +
+ {% csrf_token %} + +
+ {{ form.username.label_tag }} + {{ form.username }} +
+
+ {{ form.password.label_tag }} + {{ form.password }} +
+ + + +
+ +{% endblock %} \ No newline at end of file diff --git a/server/core/templates/wagtailadmin/admin_base.html b/server/core/templates/wagtailadmin/admin_base.html new file mode 100644 index 00000000..f90b434a --- /dev/null +++ b/server/core/templates/wagtailadmin/admin_base.html @@ -0,0 +1,7 @@ +{% extends "wagtailadmin/admin_base.html" %} +{% load staticfiles %} + +{% block extra_css %} + +{% endblock %} \ No newline at end of file diff --git a/server/core/templates/wagtailadmin/base.html b/server/core/templates/wagtailadmin/base.html new file mode 100644 index 00000000..60be69da --- /dev/null +++ b/server/core/templates/wagtailadmin/base.html @@ -0,0 +1,6 @@ +{% extends "wagtailadmin/base.html" %} +{% load staticfiles %} + +{% block branding_logo %} + skillBox +{% endblock %} \ No newline at end of file diff --git a/server/core/templates/wagtailadmin/home.html b/server/core/templates/wagtailadmin/home.html new file mode 100644 index 00000000..99baa849 --- /dev/null +++ b/server/core/templates/wagtailadmin/home.html @@ -0,0 +1,3 @@ +{% extends "wagtailadmin/home.html" %} + +{% block branding_welcome %}{% endblock %} \ No newline at end of file diff --git a/server/core/templatetags/__init__.py b/server/core/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/core/templatetags/core_tags.py b/server/core/templatetags/core_tags.py new file mode 100644 index 00000000..e56544e6 --- /dev/null +++ b/server/core/templatetags/core_tags.py @@ -0,0 +1,21 @@ +import json + +from django import template +from rest_framework import serializers + +register = template.Library() + + +@register.filter(name='json_dumps') +def json_dumps(obj): + class Serializer(serializers.ModelSerializer): + class Meta: + model = obj.__class__ + exclude = ['path', 'depth', 'numchild', 'draft_title', 'content_type'] + + return json.dumps(Serializer(obj).data, indent=4) + + +@register.filter(name='class_name') +def class_name(obj): + return str(obj.__class__.__name__) \ No newline at end of file diff --git a/server/core/urls.py b/server/core/urls.py new file mode 100644 index 00000000..2758abd3 --- /dev/null +++ b/server/core/urls.py @@ -0,0 +1,34 @@ +from django.conf.urls import url, include +from django.urls import re_path +from django.contrib import admin +from django.contrib.staticfiles.urls import staticfiles_urlpatterns + +from wagtail.core import urls as wagtail_urls +from wagtail.admin import urls as wagtailadmin_urls +from wagtail.documents import urls as wagtaildocs_urls +from wagtail.search import urls as wagtailsearch_urls +from core import views +from django.conf import settings +from django.conf.urls.static import static + +urlpatterns = [ + url(r'^guru/', admin.site.urls), + url(r'^accounts/', include('django.contrib.auth.urls')), + url(r'^cms/', include(wagtailadmin_urls)), + url(r'^search/', include(wagtailsearch_urls)), + url(r'^documents/', include(wagtaildocs_urls)), + + url(r'^api/', include('api.urls', namespace="api")), +] + +if settings.DEBUG: + urlpatterns += static( + settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, + document_root=settings.STATIC_ROOT) + +# actually we use the cms in headless mode but need the url pattern to get the wagtail_serve function +urlpatterns += [url(r'pages/', include(wagtail_urls)), ] + +urlpatterns += [re_path(r'^.*$', views.home, name='home')] + +admin.site.site_header = 'skillBox Admin' diff --git a/server/core/views.py b/server/core/views.py new file mode 100644 index 00000000..07928be1 --- /dev/null +++ b/server/core/views.py @@ -0,0 +1,24 @@ +import requests +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.http.response import HttpResponse +from django.shortcuts import render +from django.views.decorators.csrf import ensure_csrf_cookie +from graphene_django.views import GraphQLView +from django.conf import settings + + +class PrivateGraphQLView(LoginRequiredMixin, GraphQLView): + pass + + +@login_required +@ensure_csrf_cookie +def home(request): + if settings.DEBUG: + try: + return HttpResponse(requests.get('http://localhost:8080/{}'.format(request.get_full_path())).text) + except Exception as e: + print('Can not connect to dev server at http://localhost:8080:', e) + + return render(request, 'index.html', {}) diff --git a/server/core/wsgi.py b/server/core/wsgi.py new file mode 100644 index 00000000..885a4882 --- /dev/null +++ b/server/core/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for cariot_backend project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") + +application = get_wsgi_application() diff --git a/server/graphql.config.json b/server/graphql.config.json new file mode 100644 index 00000000..8208188c --- /dev/null +++ b/server/graphql.config.json @@ -0,0 +1,25 @@ +{ + "schema": { + "request": { + "url": "http://localhost:8000/graphql", + "method": "POST", + "postIntrospectionQuery": true, + "options": { + "headers": { + "user-agent": "JS GraphQL" + } + } + } + }, + "endpoints": [ + { + "name": "Default (http://localhost:8000/graphql", + "url": "http://localhost:8000/graphql", + "options": { + "headers": { + "user-agent": "JS GraphQL" + } + } + } + ] +} \ No newline at end of file diff --git a/server/manage.py b/server/manage.py new file mode 100755 index 00000000..c0b86142 --- /dev/null +++ b/server/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") + try: + from django.core.management import execute_from_command_line + except ImportError: + # The above import may fail for some other reason. Ensure that the + # issue is really that Django is missing to avoid masking other + # exceptions on Python 2. + try: + import django + except ImportError: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) + raise + execute_from_command_line(sys.argv) diff --git a/server/user/__init__.py b/server/user/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/user/admin.py b/server/user/admin.py new file mode 100644 index 00000000..3757febe --- /dev/null +++ b/server/user/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin +from .models import User + + +admin.site.register(User, UserAdmin) diff --git a/server/user/apps.py b/server/user/apps.py new file mode 100644 index 00000000..35048d48 --- /dev/null +++ b/server/user/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UserConfig(AppConfig): + name = 'user' diff --git a/server/user/migrations/0001_initial.py b/server/user/migrations/0001_initial.py new file mode 100644 index 00000000..2d57d7ea --- /dev/null +++ b/server/user/migrations/0001_initial.py @@ -0,0 +1,44 @@ +# Generated by Django 2.0.6 on 2018-08-06 15:01 + +import django.contrib.auth.models +import django.contrib.auth.validators +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0009_alter_user_last_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), + ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), + ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), + ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), + ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), + ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + ] diff --git a/server/user/migrations/__init__.py b/server/user/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/user/models.py b/server/user/models.py new file mode 100644 index 00000000..3d305253 --- /dev/null +++ b/server/user/models.py @@ -0,0 +1,5 @@ +from django.contrib.auth.models import AbstractUser + + +class User(AbstractUser): + pass