WIP: JSONRPC server refactoring
Some checks reported errors
Pyxis/orion/feature%2Fjsonrpc-next Something is wrong with the build of this commit
Pyxis/orion/pipeline/head Something is wrong with the build of this commit
LaCanne/orion/pipeline/head Something is wrong with the build of this commit

This commit is contained in:
wpetit 2019-02-12 10:17:06 +01:00
parent 0f0213c326
commit 713ca17c62
69 changed files with 13073 additions and 2728 deletions

4
.editorconfig Normal file
View File

@ -0,0 +1,4 @@
[*.{js,html,tmpl,json}]
charset = utf-8
indent_style = space
indent_size = 2

2
Jenkinsfile vendored
View File

@ -9,7 +9,7 @@ pipeline {
stage('Prepare environment') {
steps {
script {
sh 'make install-devtools'
sh 'make deps'
sh 'make vendor'
}
}

View File

@ -1,4 +1,5 @@
LINT_ARGS ?= ./...
DEPLOY_HOST ?= 192.168.100.1
export GO111MODULE := on
build: bin/server
@ -6,6 +7,10 @@ build: bin/server
bin/server:
CGO_ENABLED=0 go build -mod=vendor -v -o ./bin/server ./cmd/server
cmd/server/static/dist:
cd cmd/server && npm install
cd cmd/server && npm run build
watch:
modd
@ -22,18 +27,28 @@ tidy:
vendor: tidy
go mod vendor
install-devtools: vendor
deps:
# Install modd
GO111MODULE=off go get -u github.com/cortesi/modd/cmd/modd
# Install golangci-lint
GO111MODULE=off go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
release: cmd/server/static/dist
rm -rf release
NODE_ENV=production ./script/release
clean:
rm -rf ./bin
go clean -i -x -r -modcache
deploy: release
rsync -avzz --delete release/server-linux-arm/. root@$(DEPLOY_HOST):/opt/orion/
scp misc/openwrt/orion.init root@$(DEPLOY_HOST):/etc/init.d/orion
ssh root@$(DEPLOY_HOST) chmod +x /etc/init.d/orion
ssh root@$(DEPLOY_HOST) /etc/init.d/orion restart
doc:
@echo "Open your browser to http://localhost:6060/pkg/forge.cadoles.com/Pyxis/orion/ to see the documentation"
@godoc -http=:6060
.PHONY: test clean generate vendor install-devtools lint watch tidy doc bin/server
.PHONY: test clean generate vendor deps lint watch tidy doc bin/server cmd/server/static/dist release

2
cmd/server/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/static/dist
/node_modules

View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2018 Jeremy Thomas
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,6 +23,6 @@ func newDefaultConfig() *config {
HTTPHost: "0.0.0.0",
HTTPPort: "8888",
TemplateDir: "./templates",
AssetDir: "./assets",
AssetDir: "./static",
}
}

View File

@ -0,0 +1,32 @@
package jsonrpc
import (
"net/http"
"forge.cadoles.com/Cadoles/owrt"
"github.com/davecgh/go-spew/spew"
)
type ScanWifiArgs struct{}
type ScanWifiReply struct {
AccessPoints []*owrt.WifiCell
}
// ScanWifi starts a WiFi scan and returns available access points
func (o *OrionService) ScanWifi(r *http.Request, args *ScanWifiArgs, reply *ScanWifiReply) error {
o.UCI.LoadWirelessConf()
ifaces := o.UCI.GetWifiIfaces()
reply.AccessPoints = make([]*owrt.WifiCell, 0)
for _, iface := range ifaces {
scanner := owrt.NewWifiScanner(iface.Name)
cells := scanner.Scan()
spew.Dump(iface, cells)
reply.AccessPoints = append(reply.AccessPoints, cells...)
}
return nil
}

View File

@ -1,8 +1,9 @@
package jsonrpc
import (
"forge.cadoles.com/wpetit/goweb/service"
"github.com/gorilla/rpc"
"forge.cadoles.com/wpetit/goweb/service"
"github.com/pkg/errors"
)
@ -10,17 +11,14 @@ const ServiceName service.Name = "jsonrpc"
// From retrieves the JSONRPC service in the given container or panic
func From(container *service.Container) (*rpc.Server, error) {
service, err := container.Service(ServiceName)
if err != nil {
return nil, errors.Wrapf(err, "error while retrieving '%s' service", ServiceName)
}
jsonRPCService, ok := service.(*rpc.Server)
if !ok {
return nil, errors.Errorf("retrieved service is not a valid '%s' service", ServiceName)
}
return jsonRPCService, nil
}

View File

@ -1,6 +1,17 @@
POST http://192.168.100.1:8888/rpc HTTP/1.1
content-type: application/json
{
"id": 0,
"method": "Orion.OwrtListWifiDevices",
"params": []
}
###
POST http://192.168.100.1:8888/rpc HTTP/1.1
content-type: application/json
{
"id": 1,
"method": "Orion.OwrtCreateWifiInterface",

View File

@ -4,22 +4,19 @@ import (
"fmt"
"log"
"net/http"
"net/rpc"
"github.com/gorilla/sessions"
"forge.cadoles.com/wpetit/goweb/static"
"forge.cadoles.com/wpetit/goweb/session/gorilla"
"forge.cadoles.com/wpetit/goweb/template/html"
"github.com/go-chi/chi/middleware"
goweb "forge.cadoles.com/wpetit/goweb/middleware"
"forge.cadoles.com/wpetit/goweb/service/session"
"forge.cadoles.com/wpetit/goweb/service/template"
"forge.cadoles.com/Pyxis/orion/cmd/server/jsonrpc"
containerMiddleware "forge.cadoles.com/wpetit/goweb/middleware/container"
"forge.cadoles.com/wpetit/goweb/service"
"github.com/go-chi/chi"
)
@ -37,56 +34,34 @@ func main() {
// Create service container
container := service.NewContainer()
container.Provide(jsonrpc.ServiceName, getJSONRPCServiceProvider())
container.Provide(template.ServiceName, getTemplateServiceProvider(conf.TemplateDir))
container.Provide(template.ServiceName, html.ServiceProvider(conf.TemplateDir))
container.Provide(session.ServiceName, getSessionServiceProvider())
router := chi.NewRouter()
r := chi.NewRouter()
router.Use(middleware.Recoverer)
router.Use(middleware.RequestID)
router.Use(middleware.Logger)
router.Use(goweb.ServiceContainer(container))
r.Use(middleware.Recoverer)
r.Use(middleware.RequestID)
r.Use(middleware.Logger)
r.Use(containerMiddleware.ServiceContainer(container))
// Define routes
router.Get("/", serveHomepage)
router.Post("/rpc", handleJSONRPC)
router.Get("/**", static.Dir(conf.AssetDir, "", router.NotFoundHandler()))
configureRoutes(r)
hostStr := fmt.Sprintf("%s:%s", conf.HTTPHost, conf.HTTPPort)
log.Printf("listening on http://%s", hostStr)
if err := http.ListenAndServe(hostStr, router); err != nil {
if err := http.ListenAndServe(hostStr, r); err != nil {
log.Fatal(err)
}
}
func getJSONRPCServiceProvider() service.Provider {
jsonrpc := rpc.NewServer()
jsonrpc := jsonrpc.NewServer()
return func(c *service.Container) (interface{}, error) {
return jsonrpc, nil
}
}
func getTemplateServiceProvider(templateDir string) service.Provider {
// Create templateService at application startup
templateService := html.NewTemplateService()
// Load templates and keep error in cache
err := templateService.LoadTemplates(templateDir)
return func(c *service.Container) (interface{}, error) {
// If an error occured during the templates loading
// return the error
if err != nil {
return nil, err
}
return templateService, nil
}
}
func getSessionServiceProvider() service.Provider {
// Create a new encrypted/authenticated cookie store for the session

5767
cmd/server/package-lock.json generated Normal file
View File

@ -0,0 +1,5767 @@
{
"name": "server",
"version": "0.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@stimulus/core": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@stimulus/core/-/core-1.1.0.tgz",
"integrity": "sha512-tBQkrijjk8p3ZAhMMu2u87kXbTeBLPWiemoZqmb62krUt/IofQMFrbbiSzPAkkVqlv3kwjs0bmlO3H4fWE9HBQ==",
"dev": true,
"requires": {
"@stimulus/mutation-observers": "^1.1.0"
}
},
"@stimulus/multimap": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@stimulus/multimap/-/multimap-1.1.0.tgz",
"integrity": "sha512-LoAyUhHX5b8/gVXHVMKUXT8vZnXSyJAWs1sopQZNBWDs34zSpWF5tqclf0T3TNg3aCbQlWaHnYv3lickpbrNEQ==",
"dev": true
},
"@stimulus/mutation-observers": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@stimulus/mutation-observers/-/mutation-observers-1.1.0.tgz",
"integrity": "sha512-Tr0bmJEFqAm3o0mJPZcCLurlW+lp8gohFeUQNbkjj9bmCGygQKuWr1b3dwyJgG94qRuzo66QdKkvp04tp1o7lw==",
"dev": true,
"requires": {
"@stimulus/multimap": "^1.1.0"
}
},
"@stimulus/webpack-helpers": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@stimulus/webpack-helpers/-/webpack-helpers-1.1.0.tgz",
"integrity": "sha512-trzloYQ7RBZcYIbB5hLLgYvC7MHJkj1avPFIrEFCd2t7WCFhH5wQApyzAZAS+BtjvFwHp0o1o7Rp1OceRgjOCw==",
"dev": true
},
"@webassemblyjs/ast": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz",
"integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==",
"dev": true,
"requires": {
"@webassemblyjs/helper-module-context": "1.7.11",
"@webassemblyjs/helper-wasm-bytecode": "1.7.11",
"@webassemblyjs/wast-parser": "1.7.11"
}
},
"@webassemblyjs/floating-point-hex-parser": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz",
"integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==",
"dev": true
},
"@webassemblyjs/helper-api-error": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz",
"integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==",
"dev": true
},
"@webassemblyjs/helper-buffer": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz",
"integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==",
"dev": true
},
"@webassemblyjs/helper-code-frame": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz",
"integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==",
"dev": true,
"requires": {
"@webassemblyjs/wast-printer": "1.7.11"
}
},
"@webassemblyjs/helper-fsm": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz",
"integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==",
"dev": true
},
"@webassemblyjs/helper-module-context": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz",
"integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==",
"dev": true
},
"@webassemblyjs/helper-wasm-bytecode": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz",
"integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==",
"dev": true
},
"@webassemblyjs/helper-wasm-section": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz",
"integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-buffer": "1.7.11",
"@webassemblyjs/helper-wasm-bytecode": "1.7.11",
"@webassemblyjs/wasm-gen": "1.7.11"
}
},
"@webassemblyjs/ieee754": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz",
"integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==",
"dev": true,
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
},
"@webassemblyjs/leb128": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz",
"integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==",
"dev": true,
"requires": {
"@xtuc/long": "4.2.1"
}
},
"@webassemblyjs/utf8": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz",
"integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==",
"dev": true
},
"@webassemblyjs/wasm-edit": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz",
"integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-buffer": "1.7.11",
"@webassemblyjs/helper-wasm-bytecode": "1.7.11",
"@webassemblyjs/helper-wasm-section": "1.7.11",
"@webassemblyjs/wasm-gen": "1.7.11",
"@webassemblyjs/wasm-opt": "1.7.11",
"@webassemblyjs/wasm-parser": "1.7.11",
"@webassemblyjs/wast-printer": "1.7.11"
}
},
"@webassemblyjs/wasm-gen": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz",
"integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-wasm-bytecode": "1.7.11",
"@webassemblyjs/ieee754": "1.7.11",
"@webassemblyjs/leb128": "1.7.11",
"@webassemblyjs/utf8": "1.7.11"
}
},
"@webassemblyjs/wasm-opt": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz",
"integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-buffer": "1.7.11",
"@webassemblyjs/wasm-gen": "1.7.11",
"@webassemblyjs/wasm-parser": "1.7.11"
}
},
"@webassemblyjs/wasm-parser": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz",
"integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-api-error": "1.7.11",
"@webassemblyjs/helper-wasm-bytecode": "1.7.11",
"@webassemblyjs/ieee754": "1.7.11",
"@webassemblyjs/leb128": "1.7.11",
"@webassemblyjs/utf8": "1.7.11"
}
},
"@webassemblyjs/wast-parser": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz",
"integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/floating-point-hex-parser": "1.7.11",
"@webassemblyjs/helper-api-error": "1.7.11",
"@webassemblyjs/helper-code-frame": "1.7.11",
"@webassemblyjs/helper-fsm": "1.7.11",
"@xtuc/long": "4.2.1"
}
},
"@webassemblyjs/wast-printer": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz",
"integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/wast-parser": "1.7.11",
"@xtuc/long": "4.2.1"
}
},
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"dev": true
},
"@xtuc/long": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz",
"integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==",
"dev": true
},
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"acorn": {
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
"dev": true
},
"acorn-dynamic-import": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
"integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
"dev": true,
"requires": {
"acorn": "^5.0.0"
}
},
"adjust-sourcemap-loader": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz",
"integrity": "sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==",
"dev": true,
"requires": {
"assert": "^1.3.0",
"camelcase": "^1.2.1",
"loader-utils": "^1.1.0",
"lodash.assign": "^4.0.1",
"lodash.defaults": "^3.1.2",
"object-path": "^0.9.2",
"regex-parser": "^2.2.9"
},
"dependencies": {
"camelcase": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
"integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
"dev": true
},
"lodash.defaults": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz",
"integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=",
"dev": true,
"requires": {
"lodash.assign": "^3.0.0",
"lodash.restparam": "^3.0.0"
},
"dependencies": {
"lodash.assign": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz",
"integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
"dev": true,
"requires": {
"lodash._baseassign": "^3.0.0",
"lodash._createassigner": "^3.0.0",
"lodash.keys": "^3.0.0"
}
}
}
}
}
},
"ajv": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
"integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ajv-errors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz",
"integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=",
"dev": true
},
"ajv-keywords": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
"integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
"dev": true
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
"micromatch": "^3.1.4",
"normalize-path": "^2.1.1"
}
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true
},
"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==",
"dev": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"arity-n": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz",
"integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=",
"dev": true
},
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
"integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
"dev": true
},
"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==",
"dev": true
},
"arr-union": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
"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=",
"dev": true
},
"array-unique": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
},
"asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
"dev": true,
"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=",
"dev": true,
"requires": {
"util": "0.10.3"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
"integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
"dev": true
},
"async-foreach": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
"integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"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=",
"dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
"js-tokens": "^3.0.2"
}
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"base": {
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"dev": true,
"requires": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
"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=",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
},
"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==",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"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==",
"dev": true
},
"binary-extensions": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
"integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
"dev": true
},
"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=",
"dev": true,
"requires": {
"inherits": "~2.0.0"
}
},
"bluebird": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
"integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
"dev": true
},
"bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"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==",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true
},
"browserify-aes": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"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==",
"dev": true,
"requires": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
"evp_bytestokey": "^1.0.0"
}
},
"browserify-des": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"dev": true,
"requires": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
"inherits": "^2.0.1",
"safe-buffer": "^5.1.2"
}
},
"browserify-rsa": {
"version": "4.0.1",
"resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"dev": true,
"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=",
"dev": true,
"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==",
"dev": true,
"requires": {
"pako": "~1.0.5"
}
},
"buffer": {
"version": "4.9.1",
"resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true,
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4",
"isarray": "^1.0.0"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
"dev": true
},
"builtin-modules": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
"integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
"dev": true
},
"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=",
"dev": true
},
"bulma": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/bulma/-/bulma-0.7.2.tgz",
"integrity": "sha512-6JHEu8U/1xsyOst/El5ImLcZIiE2JFXgvrz8GGWbnDLwTNRPJzdAM0aoUM1Ns0avALcVb6KZz9NhzmU53dGDcQ==",
"dev": true
},
"cacache": {
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz",
"integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==",
"dev": true,
"requires": {
"bluebird": "^3.5.1",
"chownr": "^1.0.1",
"figgy-pudding": "^3.1.0",
"glob": "^7.1.2",
"graceful-fs": "^4.1.11",
"lru-cache": "^4.1.3",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
"promise-inflight": "^1.0.1",
"rimraf": "^2.6.2",
"ssri": "^6.0.0",
"unique-filename": "^1.1.0",
"y18n": "^4.0.0"
},
"dependencies": {
"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==",
"dev": true
}
}
},
"cache-base": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
"dev": true,
"requires": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
"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"
}
},
"camelcase": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
"dev": true
},
"camelcase-keys": {
"version": "2.1.0",
"resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
"camelcase": "^2.0.0",
"map-obj": "^1.0.0"
}
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"chokidar": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
"integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.0",
"braces": "^2.3.0",
"fsevents": "^1.2.2",
"glob-parent": "^3.1.0",
"inherits": "^2.0.1",
"is-binary-path": "^1.0.0",
"is-glob": "^4.0.0",
"lodash.debounce": "^4.0.8",
"normalize-path": "^2.1.1",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.0.0",
"upath": "^1.0.5"
}
},
"chownr": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
"integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
"dev": true
},
"chrome-trace-event": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
"integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"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==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"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==",
"dev": true,
"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=",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
}
}
},
"cliui": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wrap-ansi": "^2.0.0"
}
},
"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==",
"dev": true,
"requires": {
"for-own": "^1.0.0",
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.0",
"shallow-clone": "^1.0.0"
}
},
"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=",
"dev": true
},
"collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
"requires": {
"map-visit": "^1.0.0",
"object-visit": "^1.0.0"
}
},
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
"color-name": "1.1.3"
}
},
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true
},
"commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
"component-emitter": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
"compose-function": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz",
"integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=",
"dev": true,
"requires": {
"arity-n": "^1.0.4"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"console-browserify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"dev": true,
"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=",
"dev": true
},
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
"dev": true
},
"convert-source-map": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.1"
}
},
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
"dev": true,
"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=",
"dev": true
},
"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=",
"dev": true
},
"create-ecdh": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
"integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
"dev": true,
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.0.0"
}
},
"create-hash": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
"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": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
"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": "3.0.1",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
"integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"which": "^1.2.9"
}
},
"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==",
"dev": true,
"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": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
"integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
"source-map": "^0.6.1",
"source-map-resolve": "^0.5.2",
"urix": "^0.1.0"
}
},
"css-loader": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz",
"integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==",
"dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"css-selector-tokenizer": "^0.7.0",
"icss-utils": "^2.1.0",
"loader-utils": "^1.0.2",
"lodash": "^4.17.11",
"postcss": "^6.0.23",
"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"
}
},
"css-selector-tokenizer": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz",
"integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==",
"dev": true,
"requires": {
"cssesc": "^0.1.0",
"fastparse": "^1.1.1",
"regexpu-core": "^1.0.0"
}
},
"cssesc": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
"integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
"dev": true
},
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"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=",
"dev": true
},
"d": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz",
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"dev": true,
"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=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"date-now": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"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=",
"dev": true
},
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
"dev": true,
"requires": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
},
"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==",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true
},
"des.js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
"integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
"diffie-hellman": {
"version": "5.0.3",
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"dev": true,
"requires": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
"randombytes": "^2.0.0"
}
},
"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==",
"dev": true
},
"duplexify": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz",
"integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==",
"dev": true,
"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.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"elliptic": {
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
"integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
"dev": true,
"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=",
"dev": true
},
"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==",
"dev": true,
"requires": {
"once": "^1.4.0"
}
},
"enhanced-resolve": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
"integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.4.0",
"tapable": "^1.0.0"
}
},
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
"dev": true,
"requires": {
"prr": "~1.0.1"
}
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"es5-ext": {
"version": "0.10.46",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
"integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
"dev": true,
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
"next-tick": "1"
}
},
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"dev": true,
"requires": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"dev": true,
"requires": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"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=",
"dev": true
},
"eslint-scope": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
"integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
}
},
"esrecurse": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"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=",
"dev": true
},
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"events": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
"dev": true
},
"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==",
"dev": true,
"requires": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
}
},
"execa": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
"integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
"dev": true,
"requires": {
"cross-spawn": "^6.0.0",
"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"
},
"dependencies": {
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
}
}
},
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
"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=",
"dev": true,
"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=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
},
"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==",
"dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
}
}
},
"extglob": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
"dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
"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=",
"dev": true,
"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=",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"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=",
"dev": true
},
"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=",
"dev": true
},
"fastparse": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
"integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
"dev": true
},
"figgy-pudding": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
"dev": true
},
"file-loader": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz",
"integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==",
"dev": true,
"requires": {
"loader-utils": "^1.0.2",
"schema-utils": "^1.0.0"
}
},
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
"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=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"find-cache-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz",
"integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==",
"dev": true,
"requires": {
"commondir": "^1.0.1",
"make-dir": "^1.0.0",
"pkg-dir": "^3.0.0"
}
},
"find-up": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"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==",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.4"
}
},
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
"for-own": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
"integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
"dev": true,
"requires": {
"for-in": "^1.0.1"
}
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
"dev": true,
"requires": {
"map-cache": "^0.2.2"
}
},
"from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true
},
"fsevents": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
"integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
"dev": true,
"optional": true,
"requires": {
"nan": "^2.9.2",
"node-pre-gyp": "^0.10.0"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
},
"aproba": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
},
"are-we-there-yet": {
"version": "1.1.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ms": "2.0.0"
}
},
"deep-extend": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true
},
"delegates": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
"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,
"dev": 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,
"dev": true,
"optional": true
},
"iconv-lite": {
"version": "0.4.21",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safer-buffer": "^2.1.0"
}
},
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
},
"ini": {
"version": "1.3.5",
"bundled": true,
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"needle": {
"version": "2.2.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"debug": "^2.1.2",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.10.0",
"bundled": true,
"dev": 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,
"dev": true,
"optional": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.0.3",
"bundled": true,
"dev": true,
"optional": true
},
"npm-packlist": {
"version": "1.1.10",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"dev": 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,
"dev": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"rc": {
"version": "1.2.7",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"deep-extend": "^0.5.1",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"dev": 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,
"dev": true,
"optional": true,
"requires": {
"glob": "^7.0.5"
}
},
"safe-buffer": {
"version": "5.1.1",
"bundled": true,
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"dev": true,
"optional": true
},
"semver": {
"version": "5.5.0",
"bundled": true,
"dev": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.0.1",
"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,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"yallist": {
"version": "3.0.2",
"bundled": true,
"dev": true
}
}
},
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": 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"
}
},
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"requires": {
"globule": "^1.0.0"
}
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true
},
"get-stream": {
"version": "3.0.0",
"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": 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"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"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=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
}
}
}
},
"global-modules-path": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz",
"integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==",
"dev": true
},
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"dev": true,
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.10",
"minimatch": "~3.0.2"
}
},
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true,
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true
},
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
"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=",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"hash.js": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
}
},
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.1"
}
},
"hosted-git-info": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.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=",
"dev": true
},
"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=",
"dev": true
},
"icss-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
"integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
"dev": true,
"requires": {
"postcss": "^6.0.1"
}
},
"ieee754": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
"integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
"dev": true
},
"iferr": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
"dev": true
},
"import-local": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
"integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
"dev": true,
"requires": {
"pkg-dir": "^3.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=",
"dev": true
},
"in-publish": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
"integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
"dev": true
},
"indent-string": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
"repeating": "^2.0.0"
}
},
"indexof": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"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=",
"dev": true
},
"interpret": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
"integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
"dev": true
},
"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=",
"dev": true
},
"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=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"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=",
"dev": true,
"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==",
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"dev": true,
"requires": {
"builtin-modules": "^1.0.0"
}
},
"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=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"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==",
"dev": true
}
}
},
"is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
"dev": true
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
"is-finite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"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=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-glob": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
"integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
}
},
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"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==",
"dev": true,
"requires": {
"isobject": "^3.0.1"
}
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
"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==",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"js-base64": {
"version": "2.4.9",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz",
"integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==",
"dev": true
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
"jsesc": {
"version": "0.5.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
},
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"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=",
"dev": true
},
"json5": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
"dev": true
},
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
"invert-kv": "^1.0.0"
}
},
"load-json-file": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"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"
}
},
"loader-runner": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz",
"integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==",
"dev": true
},
"loader-utils": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
"integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
"dev": true,
"requires": {
"big.js": "^3.1.3",
"emojis-list": "^2.0.0",
"json5": "^0.5.0"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
},
"dependencies": {
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
}
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
},
"lodash._baseassign": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
"dev": true,
"requires": {
"lodash._basecopy": "^3.0.0",
"lodash.keys": "^3.0.0"
}
},
"lodash._basecopy": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
"integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
"dev": true
},
"lodash._bindcallback": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
"integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=",
"dev": true
},
"lodash._createassigner": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz",
"integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
"dev": true,
"requires": {
"lodash._bindcallback": "^3.0.0",
"lodash._isiterateecall": "^3.0.0",
"lodash.restparam": "^3.0.0"
}
},
"lodash._getnative": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
"integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
"dev": true
},
"lodash._isiterateecall": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
"integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
"dev": true
},
"lodash.assign": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
"dev": true
},
"lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
"dev": true
},
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
"lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
"dev": true
},
"lodash.isarguments": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
"integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
"dev": true
},
"lodash.isarray": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
"dev": true
},
"lodash.keys": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
"dev": true,
"requires": {
"lodash._getnative": "^3.0.0",
"lodash.isarguments": "^3.0.0",
"lodash.isarray": "^3.0.0"
}
},
"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==",
"dev": true
},
"lodash.restparam": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
"integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
"dev": true
},
"lodash.tail": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
"integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
"dev": true
},
"loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
"currently-unhandled": "^0.4.1",
"signal-exit": "^3.0.0"
}
},
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"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==",
"dev": true,
"requires": {
"pify": "^3.0.0"
},
"dependencies": {
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
}
}
},
"map-age-cleaner": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
"dev": true,
"requires": {
"p-defer": "^1.0.0"
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
"map-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
},
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
"object-visit": "^1.0.0"
}
},
"md5.js": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
"dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
"safe-buffer": "^5.1.2"
}
},
"mem": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
"integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.1",
"mimic-fn": "^1.0.0",
"p-is-promise": "^1.1.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=",
"dev": true,
"requires": {
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
}
},
"meow": {
"version": "3.7.0",
"resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"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"
}
},
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"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"
}
},
"miller-rabin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"dev": true,
"requires": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
}
},
"mime-db": {
"version": "1.37.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
"dev": true
},
"mime-types": {
"version": "2.1.21",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true,
"requires": {
"mime-db": "~1.37.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==",
"dev": true
},
"mini-css-extract-plugin": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz",
"integrity": "sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
"schema-utils": "^1.0.0",
"webpack-sources": "^1.1.0"
}
},
"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==",
"dev": true
},
"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=",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"mississippi": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
"dev": true,
"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": "^3.0.0",
"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==",
"dev": true,
"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==",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true
}
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
}
},
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
"dev": true,
"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=",
"dev": true
},
"nan": {
"version": "2.11.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
"integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==",
"dev": true
},
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
"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"
}
},
"neo-async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
"integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
"dev": true
},
"next-tick": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
"dev": true
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"node-gyp": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
"integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
"dev": true,
"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.87.0",
"rimraf": "2",
"semver": "~5.3.0",
"tar": "^2.0.0",
"which": "1"
},
"dependencies": {
"semver": {
"version": "5.3.0",
"resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
"dev": true
}
}
},
"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==",
"dev": true,
"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=",
"dev": true
}
}
},
"node-sass": {
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.10.0.tgz",
"integrity": "sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q==",
"dev": true,
"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.8.0",
"npmlog": "^4.0.0",
"request": "^2.88.0",
"sass-graph": "^2.2.4",
"stdout-stream": "^1.4.0",
"true-case-path": "^1.0.2"
}
},
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"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==",
"dev": true,
"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=",
"dev": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
}
},
"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=",
"dev": true,
"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==",
"dev": 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",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"object-copy": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
"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=",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
},
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"object-path": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz",
"integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=",
"dev": true
},
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
"isobject": "^3.0.0"
}
},
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
"isobject": "^3.0.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"os-browserify": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
"os-homedir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
"os-locale": {
"version": "1.4.0",
"resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
"lcid": "^1.0.0"
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
"dev": true
},
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
"p-is-promise": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
"integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
"dev": true
},
"p-limit": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
"integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
"integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
"dev": true
},
"pako": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz",
"integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==",
"dev": true
},
"parallel-transform": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
"dev": true,
"requires": {
"cyclist": "~0.2.2",
"inherits": "^2.0.3",
"readable-stream": "^2.1.5"
}
},
"parse-asn1": {
"version": "5.1.1",
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
"dev": true,
"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-json": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"pascalcase": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
"path-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
"integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
"dev": true
},
"path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
"path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"pbkdf2": {
"version": "3.0.17",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
"integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
"dev": true,
"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": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
"integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
"find-up": "^3.0.0"
},
"dependencies": {
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
"locate-path": "^3.0.0"
}
}
}
},
"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=",
"dev": true
},
"postcss": {
"version": "6.0.23",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
"integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
"source-map": "^0.6.1",
"supports-color": "^5.4.0"
},
"dependencies": {
"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==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"postcss-modules-extract-imports": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz",
"integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true,
"requires": {
"icss-replace-symbols": "^1.1.0",
"postcss": "^6.0.1"
}
},
"postcss-value-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
"dev": true
},
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
},
"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==",
"dev": true
},
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"psl": {
"version": "1.1.29",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
"integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
"dev": true
},
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
"dev": true,
"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",
"safe-buffer": "^5.1.2"
}
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"dev": true,
"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==",
"dev": true,
"requires": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
"pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
"querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
"dev": true
},
"randombytes": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
"integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
"dev": true,
"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==",
"dev": true,
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"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=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
}
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": 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"
}
},
"readdirp": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
"readable-stream": "^2.0.2"
}
},
"redent": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
"indent-string": "^2.1.0",
"strip-indent": "^1.0.1"
}
},
"regenerate": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
"integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
"dev": true
},
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
"dev": true,
"requires": {
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
}
},
"regex-parser": {
"version": "2.2.9",
"resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.9.tgz",
"integrity": "sha512-VncXxOF6uFlYog5prG2j+e2UGJeam5MfNiJnB/qEgo4KTnMm2XrELCg4rNZ6IlaEUZnGlb8aB6lXowCRQtTkkA==",
"dev": true
},
"regexpu-core": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
"integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
"dev": true,
"requires": {
"regenerate": "^1.2.1",
"regjsgen": "^0.2.0",
"regjsparser": "^0.1.4"
}
},
"regjsgen": {
"version": "0.2.0",
"resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
"dev": true
},
"regjsparser": {
"version": "0.1.5",
"resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
"dev": true,
"requires": {
"jsesc": "~0.5.0"
}
},
"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=",
"dev": true
},
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
"integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
"dev": true
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
"repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
"is-finite": "^1.0.0"
}
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"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=",
"dev": true
},
"resolve-cwd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
"integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
"dev": true,
"requires": {
"resolve-from": "^3.0.0"
}
},
"resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
"dev": true
},
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true
},
"resolve-url-loader": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.0.0.tgz",
"integrity": "sha512-ZzRUnpu+pLkrN2ZBsEEifOD6W+9ZNtdIu+kY3vs+11PwuZ2WykxbAY9qO+S9SmasSDRllxNdSm9IhN8HU4xGKg==",
"dev": true,
"requires": {
"adjust-sourcemap-loader": "^1.1.0",
"camelcase": "^4.1.0",
"compose-function": "^3.0.3",
"convert-source-map": "^1.5.1",
"es6-iterator": "^2.0.3",
"loader-utils": "^1.1.0",
"lodash.defaults": "^4.0.0",
"postcss": "^7.0.0",
"rework": "^1.0.1",
"rework-visit": "^1.0.0",
"source-map": "^0.5.7"
},
"dependencies": {
"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==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"camelcase": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"postcss": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz",
"integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
"source-map": "^0.6.1",
"supports-color": "^5.5.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"ret": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
"rework": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
"integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=",
"dev": true,
"requires": {
"convert-source-map": "^0.3.3",
"css": "^2.0.0"
},
"dependencies": {
"convert-source-map": {
"version": "0.3.5",
"resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz",
"integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=",
"dev": true
}
}
},
"rework-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz",
"integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=",
"dev": true
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"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==",
"dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
}
},
"run-queue": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
"dev": true,
"requires": {
"aproba": "^1.1.1"
}
},
"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==",
"dev": true
},
"safe-regex": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
"ret": "~0.1.10"
}
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"sass-graph": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
"integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
"dev": true,
"requires": {
"glob": "^7.0.0",
"lodash": "^4.0.0",
"scss-tokenizer": "^0.2.3",
"yargs": "^7.0.0"
}
},
"sass-loader": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz",
"integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==",
"dev": true,
"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",
"semver": "^5.5.0"
},
"dependencies": {
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
}
}
},
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
"dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-errors": "^1.0.0",
"ajv-keywords": "^3.1.0"
}
},
"scss-tokenizer": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
"integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
"dev": true,
"requires": {
"js-base64": "^2.1.8",
"source-map": "^0.4.2"
},
"dependencies": {
"source-map": {
"version": "0.4.4",
"resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
"amdefine": ">=0.0.4"
}
}
}
},
"semver": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
"integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true
},
"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==",
"dev": true
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"set-value": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
"integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"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=",
"dev": true,
"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=",
"dev": true
},
"sha.js": {
"version": "2.4.11",
"resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true
}
}
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"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=",
"dev": true
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
"dev": true,
"requires": {
"base": "^0.11.1",
"debug": "^2.2.0",
"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=",
"dev": true,
"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=",
"dev": true,
"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=",
"dev": true
}
}
},
"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==",
"dev": true,
"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=",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"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==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
},
"snapdragon-util": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
"dev": true,
"requires": {
"kind-of": "^3.2.0"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"source-list-map": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
"integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"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==",
"dev": true,
"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.5.9",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
"integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"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=",
"dev": true
},
"spdx-correct": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"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==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
"integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
"dev": true
},
"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==",
"dev": true,
"requires": {
"extend-shallow": "^3.0.0"
}
},
"sshpk": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
"integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
"dev": true,
"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"
}
},
"ssri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
"dev": true,
"requires": {
"figgy-pudding": "^3.5.1"
}
},
"static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
},
"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=",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
}
}
},
"stdout-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
"integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
"dev": true,
"requires": {
"readable-stream": "^2.0.1"
}
},
"stimulus": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/stimulus/-/stimulus-1.1.0.tgz",
"integrity": "sha512-H5B/jYGoKHW7KZCdkxsjml16wMp9ubHh/Db2ewcMWIV5Y4LOGKqYOKsNDs650DidKdGht8CBTtF7jAodIOHZMA==",
"dev": true,
"requires": {
"@stimulus/core": "^1.1.0",
"@stimulus/webpack-helpers": "^1.1.0"
}
},
"stream-browserify": {
"version": "2.0.1",
"resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
"integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
"dev": true,
"requires": {
"inherits": "~2.0.1",
"readable-stream": "^2.0.2"
}
},
"stream-each": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
"integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
"dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
}
},
"stream-http": {
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
"integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
"dev": true,
"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=",
"dev": true
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": 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",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
}
},
"strip-eof": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
"strip-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
"get-stdin": "^4.0.1"
}
},
"style-loader": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
"integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
"schema-utils": "^1.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=",
"dev": true
},
"tapable": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
"integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==",
"dev": true
},
"tar": {
"version": "2.2.1",
"resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"dev": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
},
"terser": {
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-3.11.0.tgz",
"integrity": "sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ==",
"dev": true,
"requires": {
"commander": "~2.17.1",
"source-map": "~0.6.1",
"source-map-support": "~0.5.6"
}
},
"terser-webpack-plugin": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz",
"integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==",
"dev": true,
"requires": {
"cacache": "^11.0.2",
"find-cache-dir": "^2.0.0",
"schema-utils": "^1.0.0",
"serialize-javascript": "^1.4.0",
"source-map": "^0.6.1",
"terser": "^3.8.1",
"webpack-sources": "^1.1.0",
"worker-farm": "^1.5.2"
}
},
"through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
"dev": true,
"requires": {
"readable-stream": "~2.3.6",
"xtend": "~4.0.1"
}
},
"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==",
"dev": true,
"requires": {
"setimmediate": "^1.0.4"
}
},
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"to-regex": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
"dev": true,
"requires": {
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"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=",
"dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
}
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
}
}
},
"trim-newlines": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
"true-case-path": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
"integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
"dev": true,
"requires": {
"glob": "^7.1.2"
}
},
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"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=",
"dev": true
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"union-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
"integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"dev": true,
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
"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=",
"dev": true,
"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=",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.1",
"to-object-path": "^0.3.0"
}
}
}
},
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
"dev": true,
"requires": {
"unique-slug": "^2.0.0"
}
},
"unique-slug": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
"integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
"dev": true,
"requires": {
"imurmurhash": "^0.1.4"
}
},
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
"has-value": "^0.3.1",
"isobject": "^3.0.0"
},
"dependencies": {
"has-value": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
"get-value": "^2.0.3",
"has-values": "^0.1.4",
"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=",
"dev": true,
"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=",
"dev": true
}
}
},
"upath": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
"dev": true
},
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"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=",
"dev": true
},
"url": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
"integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
"dev": true,
"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=",
"dev": true
}
}
},
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
"util": {
"version": "0.10.3",
"resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"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=",
"dev": true
}
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true
},
"v8-compile-cache": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
"integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
"dev": true
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"vm-browserify": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
"integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
"dev": true,
"requires": {
"indexof": "0.0.1"
}
},
"watchpack": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
"integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
"dev": true,
"requires": {
"chokidar": "^2.0.2",
"graceful-fs": "^4.1.2",
"neo-async": "^2.5.0"
}
},
"webpack": {
"version": "4.27.1",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.27.1.tgz",
"integrity": "sha512-WArHiLvHrlfyRM8i7f+2SFbr/XbQ0bXqTkPF8JpHOzub5482Y3wx7rEO8stuLGOKOgZJcqcisLhD7LrM/+fVMw==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.7.11",
"@webassemblyjs/helper-module-context": "1.7.11",
"@webassemblyjs/wasm-edit": "1.7.11",
"@webassemblyjs/wasm-parser": "1.7.11",
"acorn": "^5.6.2",
"acorn-dynamic-import": "^3.0.0",
"ajv": "^6.1.0",
"ajv-keywords": "^3.1.0",
"chrome-trace-event": "^1.0.0",
"enhanced-resolve": "^4.1.0",
"eslint-scope": "^4.0.0",
"json-parse-better-errors": "^1.0.2",
"loader-runner": "^2.3.0",
"loader-utils": "^1.1.0",
"memory-fs": "~0.4.1",
"micromatch": "^3.1.8",
"mkdirp": "~0.5.0",
"neo-async": "^2.5.0",
"node-libs-browser": "^2.0.0",
"schema-utils": "^0.4.4",
"tapable": "^1.1.0",
"terser-webpack-plugin": "^1.1.0",
"watchpack": "^1.5.0",
"webpack-sources": "^1.3.0"
},
"dependencies": {
"schema-utils": {
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
"integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"dev": true,
"requires": {
"ajv": "^6.1.0",
"ajv-keywords": "^3.1.0"
}
}
}
},
"webpack-cli": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz",
"integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
"cross-spawn": "^6.0.5",
"enhanced-resolve": "^4.1.0",
"global-modules-path": "^2.3.0",
"import-local": "^2.0.0",
"interpret": "^1.1.0",
"loader-utils": "^1.1.0",
"supports-color": "^5.5.0",
"v8-compile-cache": "^2.0.2",
"yargs": "^12.0.2"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"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==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"camelcase": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
"integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
"dev": true
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"cliui": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
"integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
"string-width": "^2.1.1",
"strip-ansi": "^4.0.0",
"wrap-ansi": "^2.0.0"
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"invert-kv": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
"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=",
"dev": true
},
"lcid": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
"dev": true,
"requires": {
"invert-kv": "^2.0.0"
}
},
"os-locale": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
"integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
"dev": true,
"requires": {
"execa": "^0.10.0",
"lcid": "^2.0.0",
"mem": "^4.0.0"
}
},
"string-width": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^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=",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.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=",
"dev": true
},
"yargs": {
"version": "12.0.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
"dev": true,
"requires": {
"cliui": "^4.0.0",
"decamelize": "^1.2.0",
"find-up": "^3.0.0",
"get-caller-file": "^1.0.1",
"os-locale": "^3.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 || ^4.0.0",
"yargs-parser": "^11.1.1"
}
},
"yargs-parser": {
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"webpack-sources": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
"integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
"dev": true,
"requires": {
"source-list-map": "^2.0.0",
"source-map": "~0.6.1"
}
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
},
"which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
"integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
"dev": true
},
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"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==",
"dev": true,
"requires": {
"errno": "~0.1.7"
}
},
"wrap-ansi": {
"version": "2.1.0",
"resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
},
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
"dev": true
},
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"yargs": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
"integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
"dev": true,
"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"
},
"dependencies": {
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true
}
}
},
"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=",
"dev": true,
"requires": {
"camelcase": "^3.0.0"
},
"dependencies": {
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
"integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
"dev": true
}
}
}
}
}

26
cmd/server/package.json Normal file
View File

@ -0,0 +1,26 @@
{
"name": "server",
"version": "0.0.0",
"description": "Orion web application",
"main": "static/src/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack-cli",
"watch": "webpack-cli --watch"
},
"author": "Cadoles <contact@cadoles.com>",
"license": "AGPL-3.0",
"devDependencies": {
"bulma": "^0.7.2",
"css-loader": "^1.0.1",
"file-loader": "^2.0.0",
"mini-css-extract-plugin": "^0.4.4",
"node-sass": "^4.10.0",
"resolve-url-loader": "^3.0.0",
"sass-loader": "^7.1.0",
"stimulus": "^1.1.0",
"style-loader": "^0.23.1",
"webpack": "^4.25.0",
"webpack-cli": "^3.1.2"
}
}

View File

@ -3,31 +3,35 @@ package main
import (
"net/http"
"forge.cadoles.com/wpetit/goweb/middleware"
"forge.cadoles.com/wpetit/goweb/service"
"forge.cadoles.com/wpetit/goweb/middleware/container"
"forge.cadoles.com/wpetit/goweb/service/template"
"forge.cadoles.com/wpetit/goweb/static"
"github.com/go-chi/chi"
"forge.cadoles.com/Pyxis/orion/cmd/server/jsonrpc"
)
func configureRoutes(r *chi.Mux) {
r.Get("/", serveHomepage)
r.Get("/modules", serveModulesList)
r.Post("/rpc", handleJSONRPC)
r.Get("/**", static.Dir(conf.AssetDir, "", r.NotFoundHandler()))
}
func serveHomepage(w http.ResponseWriter, r *http.Request) {
container := getServiceContainer(r)
templateService := template.Must(container)
if err := templateService.RenderPage(w, "home.html.tmpl", nil); err != nil {
http.Redirect(w, r, "/modules", http.StatusFound)
}
func serveModulesList(w http.ResponseWriter, r *http.Request) {
ctn := container.Must(r.Context())
templateService := template.Must(ctn)
if err := templateService.RenderPage(w, "modules_list.html.tmpl", nil); err != nil {
panic(err)
}
}
func handleJSONRPC(w http.ResponseWriter, r *http.Request) {
container := getServiceContainer(r)
rpcServer := jsonrpc.Must(container)
ctn := container.Must(r.Context())
rpcServer := jsonrpc.Must(ctn)
rpcServer.ServeHTTP(w, r)
}
func getServiceContainer(r *http.Request) *service.Container {
container, err := middleware.GetServiceContainer(r.Context())
if err != nil {
panic(err)
}
return container
}

View File

@ -0,0 +1,21 @@
import { Controller } from "stimulus"
export default class extends Controller {
connect() {
this.updateLinkStatus();
}
updateLinkStatus() {
const href = window.location.href;
const links = Array.from(this.element.querySelectorAll("a[href]"));
links.forEach(l => {
if (l.href === href) {
l.classList.add("is-active");
} else {
l.classList.remove("is-active");
}
});
}
}

View File

@ -0,0 +1,18 @@
import { Controller } from "stimulus"
import { JSONRPC } from "../util/jsonrpc";
export default class extends Controller {
connect() {
this.rpc = new JSONRPC("/rpc");
}
listWifiDevices() {
return this.rpc.call("Orion.ScanWifi");
}
onScanClick() {
this.listWifiDevices().then(result => console.log(result));
}
}

View File

@ -0,0 +1,11 @@
require('bulma/bulma.sass');
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start();
const localContext = require.context("./controllers", true, /\.js$/);
const definitions = [
...definitionsFromContext(localContext),
];
application.load(definitions);

View File

@ -0,0 +1,53 @@
export class RPCError extends Error {
constructor(source) {
super("A remote error occured");
this.source = source;
this.name = this.constructor.name;
if (typeof Error.captureStackTrace === 'function') {
Error.captureStackTrace(this, this.constructor);
} else {
this.stack = (new Error(message)).stack;
}
}
getSource() {
return this.source;
}
}
export class JSONRPC {
constructor(endpoint) {
this.endpoint = endpoint;
this.id = 0;
}
call(method, params, isNotification = false) {
const requestId = this.id++;
return fetch(this.endpoint, {
method: 'POST',
headers:{
'Content-Type': 'application/json',
},
body: JSON.stringify({
id: isNotification ? null : requestId,
method,
params: params || [],
})
})
.then(res => res.json())
.then(result => {
if (result.error) throw new RPCError(result.error);
if (!isNotification && requestId !== result.id) throw new Error("unexpected id in rpc response");
return result;
});
}
}

View File

@ -5,19 +5,23 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orion</title>
<link rel="stylesheet" href="/vendor/bulma-0.7.2/css/bulma.min.css">
<link rel="stylesheet" href="/css/server.css">
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">
Hello World
</h1>
<p class="subtitle">
My first website with <strong>Bulma</strong>!
</p>
</div>
</section>
{{template "navbar" .}}
<section class="section">
<div class="container">
<div class="columns">
<div class="column is-3">
{{template "menu" .}}
</div>
<div class="column is-9">
{{block "page_content" .}}{{end}}
</div>
</div>
</div>
</section>
<script type="text/javascript" src="/server.js"></script>
</body>
</html>
{{end}}

View File

@ -0,0 +1,10 @@
{{define "menu"}}
<aside class="menu" data-controller="menu">
<p class="menu-label">
Gestion de la flotte
</p>
<ul class="menu-list">
<li><a href="/modules">Modules</a></li>
</ul>
</aside>
{{end}}

View File

@ -0,0 +1,10 @@
{{define "navbar"}}
<nav class="navbar is-info" role="navigation" aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<b>Orion</b>
</a>
</div>
</nav>
{{end}}

View File

@ -1 +0,0 @@
{{template "base" .}}

View File

@ -0,0 +1,24 @@
{{define "page_content"}}
<div data-controller="modules">
<div class="level is-mobile">
<div class="level-left">
<h4 class="is-size-4 level-item">Modules à portée</h4>
</div>
<div class="level-right">
<button data-action="click->modules#onScanClick" class="button is-primary">Scanner</button>
</div>
</div>
<table class="table">
<thead>
<tr>
<th>SSID</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
{{end}}
{{template "base" .}}

View File

@ -0,0 +1,68 @@
const path = require('path');
const env = process.env;
// Plugins
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
mode: `${env.NODE_ENV ? env.NODE_ENV : 'production'}`,
entry: {
server: './static/src/index.js',
},
devtool: 'eval-source-map',
output: {
filename: '[name].js',
path: path.join(__dirname, 'static', 'dist')
},
module: {
rules: [{
test: /\.(scss|sass)$/,
include: [
path.resolve(__dirname, 'node_modules'),
],
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {}
},
{
loader: "resolve-url-loader",
options: {}
},
{
loader: "sass-loader",
options: {
sourceMap: true,
sourceMapContents: false
}
}
]
},{
test: /\.(woff(2)?|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: '/fonts/'
}
}]
},{
test: /\.(svg|png|jpg)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: '/img/'
}
}]
}]
},
plugins: [
new MiniCssExtractPlugin({
filename: "/css/[name].css",
chunkFilename: "/css/[id].css"
})
]
}

View File

@ -115,7 +115,7 @@ func configureBase() {
BaseCoordinates: &reachview.BaseCoordinates{
Accumulation: reachview.String("1"),
AntennaOffset: &reachview.AntennaOffset{
Up: reachview.String("2.20"),
Up: reachview.String("0"),
},
Mode: reachview.BaseCoordinatesModeAverageSingle,
Format: reachview.BaseCoordinatesFormatLLH,

2
go.mod
View File

@ -3,7 +3,7 @@ module forge.cadoles.com/Pyxis/orion
require (
forge.cadoles.com/Cadoles/owrt v0.0.0-20181112081730-972e21754f2d
forge.cadoles.com/Pyxis/golang-socketio v0.0.0-20180919100209-bb857ced6b95
forge.cadoles.com/wpetit/goweb v0.0.0-20181206210705-100cf8391731
forge.cadoles.com/wpetit/goweb v0.0.0-20181207091353-38f4c7b7359c
github.com/caarlos0/env v3.4.0+incompatible
github.com/cenkalti/backoff v2.0.0+incompatible // indirect
github.com/davecgh/go-spew v1.1.1

4
go.sum
View File

@ -2,8 +2,8 @@ forge.cadoles.com/Cadoles/owrt v0.0.0-20181112081730-972e21754f2d h1:JrHRNqeepC+
forge.cadoles.com/Cadoles/owrt v0.0.0-20181112081730-972e21754f2d/go.mod h1:VLonz5tZXLI6NIndv6vr3741fCLntobz4gIG37b96xo=
forge.cadoles.com/Pyxis/golang-socketio v0.0.0-20180919100209-bb857ced6b95 h1:o3G5+9RjczCK1xAYFaRMknk1kY9Ule6PNfiW6N6hEpg=
forge.cadoles.com/Pyxis/golang-socketio v0.0.0-20180919100209-bb857ced6b95/go.mod h1:I6kYOFWNkFlNeQLI7ZqfTRz4NdPHZxX0Bzizmzgchs0=
forge.cadoles.com/wpetit/goweb v0.0.0-20181206210705-100cf8391731 h1:PRbNjsIKEV42r/gRKs6RDQgEkNGcftTsirC8JsXGLH0=
forge.cadoles.com/wpetit/goweb v0.0.0-20181206210705-100cf8391731/go.mod h1:0zrl4O5z1OWAlQYtFF8/O/iGpCMsiDmbXx3ZO+PNG3o=
forge.cadoles.com/wpetit/goweb v0.0.0-20181207091353-38f4c7b7359c h1:kGi00vgn8lniN9MSelOWGeJMiRsXWeQyCc6mio00ayI=
forge.cadoles.com/wpetit/goweb v0.0.0-20181207091353-38f4c7b7359c/go.mod h1:0zrl4O5z1OWAlQYtFF8/O/iGpCMsiDmbXx3ZO+PNG3o=
github.com/caarlos0/env v3.4.0+incompatible h1:FRwBdvENjLHZoUbFnULnFss9wKtcapdaM35DfxiTjeM=
github.com/caarlos0/env v3.4.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
github.com/cenkalti/backoff v2.0.0+incompatible h1:5IIPUHhlnUZbcHQsQou5k1Tn58nJkeJL9U+ig5CHJbY=

24
misc/openwrt/orion.init Normal file
View File

@ -0,0 +1,24 @@
#!/bin/sh /etc/rc.common
PID_FILE=/var/run/orion.pid
COMMAND="/opt/orion/server"
WORKDIR=/opt/orion
start() {
cd "$WORKDIR"
start-stop-daemon -S \
-b -m \
-p "$PID_FILE" \
-x "$COMMAND"
}
stop() {
start-stop-daemon -K \
-p "$PID_FILE" \
-x "$COMMAND"
}
restart() {
stop
start
}

View File

@ -7,10 +7,13 @@ Makefile {
prep: make build
daemon: [ -e .env ] && . .env; \
ORION_TEMPLATE_DIR="cmd/server/templates" \
ORION_ASSET_DIR="cmd/server/assets" \
ORION_ASSET_DIR="cmd/server/static/dist" \
./bin/server
}
{
daemon: [ ! -z "$(which node)" ] && cd cmd/server && npm run watch
}
**/*.go
modd.conf

View File

@ -1,82 +0,0 @@
package openwrt
import (
"bufio"
"fmt"
"regexp"
"strings"
)
// DhcpClient represents a dhcp client ... :)
type DhcpClient struct {
exec Executor
iface string
}
// DhcpResult contains sorted result form AskFroIP
type DhcpResult struct {
CmdRes *CommandResult
IP string
Netmask string
}
// NewDhcpClient return an UCI instance to interact with UCI
func NewDhcpClient(netIface string) *DhcpClient {
exec := &localExecutor{}
iface := netIface
return &DhcpClient{exec, iface}
}
// NewDhcpClientWithExecutor return an UCI instance to interact with UCI
func NewDhcpClientWithExecutor(netIface string, exe Executor) *DhcpClient {
exec := exe
iface := netIface
return &DhcpClient{exec, iface}
}
// NewDhcpClient return an UCI instance to interact with UCI
//func NewDhcpClient(netIface string, exe Executor) *DhcpClient {
// var exec Executor
// if exe == nil {
// exec = &localExecutor{}
// } else {
// exec = exe
// }
// iface := netIface
// return &DhcpClient{exec, iface}
//}
func parseDhcpClientOut(out *CommandResult) *DhcpResult {
if out.ReturnCode != 0 {
return &DhcpResult{
out,
"",
"",
}
}
scanner := bufio.NewScanner(strings.NewReader(out.Stdout))
for scanner.Scan() {
line := scanner.Text()
re := regexp.MustCompile(`^udhcpc: ifconfig`)
if re.MatchString(line) {
spl := strings.Split(line, " ")
ip := spl[3]
mask := spl[5]
return &DhcpResult{
out,
ip,
mask,
}
}
}
return nil
}
// AskForIP runs a dhclient ip request with udhcpc
func (dc *DhcpClient) AskForIP() *DhcpResult {
out := dc.exec.Run("udhcpc", "-i", dc.iface)
fmt.Printf("%s\n", out.Stdout)
return parseDhcpClientOut(out)
}

View File

@ -1,12 +0,0 @@
package openwrt
import "testing"
func TestDhcpClientAskForIP(t *testing.T) {
uexec := createMockExecutor("udhcpc: ifconfig wlan1 192.168.42.20 netmask 255.255.255.0 broadcast +", "", 0)
dhc := NewDhcpClientWithExecutor("wlan1", uexec)
res := dhc.AskForIP()
if res.CmdRes.ReturnCode != 0 {
t.Error("Error in DHCP Client !!")
}
}

View File

@ -1,54 +0,0 @@
package openwrt
import (
"bytes"
"log"
"os/exec"
"syscall"
)
// Executor interface to describe command runners signature
type Executor interface {
Run(command string, params ...string) *CommandResult
}
// CommandResult contain all information about a command execution, stdout, stderr
type CommandResult struct {
Stdout string
Stderr string
ReturnCode int
}
type localExecutor struct{}
func (e *localExecutor) Run(command string, params ...string) *CommandResult {
var out bytes.Buffer
var outerr bytes.Buffer
var exitCode int
exe := exec.Command(command, params...)
exe.Stdout = &out
exe.Stderr = &outerr
err := exe.Run()
if err != nil {
// try to get the exit code
if exitError, ok := err.(*exec.ExitError); ok {
ws := exitError.Sys().(syscall.WaitStatus)
exitCode = ws.ExitStatus()
} else {
log.Printf("Could not get exit code for failed program: %v, %v", command, params)
}
} else {
// success, exitCode should be 0 if go is ok
ws := exe.ProcessState.Sys().(syscall.WaitStatus)
exitCode = ws.ExitStatus()
}
return &CommandResult{
Stdout: out.String(),
Stderr: outerr.String(),
ReturnCode: exitCode,
}
}

View File

@ -1,18 +0,0 @@
package openwrt
import (
"testing"
)
func TestRun(t *testing.T) {
exec := &localExecutor{}
res := exec.Run("uname", "-a")
if g, e := res.ReturnCode, 0; g != e {
t.Errorf("Run command failed ! Got bad return code [%d], [%d} is expected\n", g, e)
}
// res = exec.Run("noCommandWithThisNameExists", "-a")
// if g, e := res.ReturnCode, 127; g != e {
// t.Errorf("Run command failed ! Got bad return code [%d], [%d} is expected\n", g, e)
// }
}

View File

@ -1,83 +0,0 @@
package openwrt
import (
"fmt"
"io/ioutil"
"net"
"strings"
)
// Network provides a representation of network
type Network struct {
exec Executor
}
// NewNetwork return an Network instance to interact with OpenWRT Network components
func NewNetwork() *Network {
exec := &localExecutor{}
return &Network{exec}
}
// NewNetworkWithExecutor return an UCI instance to interact with UCI
func NewNetworkWithExecutor(exe Executor) *Network {
exec := exe
return &Network{exec}
}
// ListInterfaces list all available interfaces on a system using "ip" command
func (n *Network) ListInterfaces() []net.Interface {
var result []net.Interface
ifaces, err := net.Interfaces()
if err != nil {
fmt.Print(fmt.Errorf("error listing network interfacess: %+v", err.Error()))
return nil
}
result = append(result, ifaces...)
return result
}
// ListWirelessInterfaces list all wifi cards
// you need to provide the wireless file or "" to use
// Linux default one "/proc/net/wireless"
func (n *Network) ListWirelessInterfaces(wifiFile string) []net.Interface {
var result []net.Interface
var ifaceNames []string
if wifiFile == "" {
wifiFile = "/proc/net/wireless"
}
wifiFileContent, err := ioutil.ReadFile(wifiFile)
check(err)
index := 0
for _, line := range strings.Split(string(wifiFileContent), "\n") {
if index < 2 {
index++
continue
} else {
name := strings.Split(line, ":")[0]
if name != "" {
// remove damened whitespaces
name = strings.Replace(name, " ", "", -1)
ifaceNames = append(ifaceNames, name)
}
}
}
ifaces, err := net.Interfaces()
if err != nil {
fmt.Print(fmt.Errorf("error listing network interfaces : %+v", err.Error()))
return nil
}
for _, name := range ifaceNames {
for _, iface := range ifaces {
if name == iface.Name {
result = append(result, iface)
}
}
}
return result
}

View File

@ -1,26 +0,0 @@
package openwrt
import (
"fmt"
"testing"
)
func TestNetworkListInterfaces(t *testing.T) {
net := NewNetwork()
iface := net.ListInterfaces()
for _, ife := range iface {
fmt.Printf("%s\n", ife.Name)
}
}
func TestListWirelessInterfaces(t *testing.T) {
net := NewNetwork()
res := net.ListWirelessInterfaces("./testdata/proc_net_wireless.txt")
if len(res) != 0 {
t.Error("The wireless interfaces list is not empty !!")
}
for _, el := range res {
fmt.Printf("[%s]\n", el.Name)
}
}

View File

@ -1,35 +0,0 @@
package openwrt
import (
"log"
"strings"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func createMockExecutor(stdout string, stderr string, returnCode int) Executor {
return &mockExecutor{
stdout: stdout,
stderr: stderr,
returnCode: returnCode,
}
}
type mockExecutor struct {
stdout string
stderr string
returnCode int
}
func (e *mockExecutor) Run(command string, params ...string) *CommandResult {
log.Printf("executing '%s %s'", command, strings.Join(params, " "))
return &CommandResult{
Stderr: e.stderr,
Stdout: e.stdout,
ReturnCode: e.returnCode,
}
}

View File

@ -1,4 +0,0 @@
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan1: 0000 0 0 0 0 0 0 0 0 0
wlan0: 0000 0 0 0 0 0 0 0 0 0

View File

@ -1,24 +0,0 @@
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.channel='36'
wireless.radio0.hwmode='11a'
wireless.radio0.htmode='VHT80'
wireless.radio0.country='DE'
wireless.radio0.path='soc/soc:pcie/pci0000:00/0000:00:01.0/0000:01:00.0'
wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.mode='ap'
wireless.default_radio0.macaddr='5a:ef:68:b5:f5:1a'
wireless.default_radio0.ssid='DonDuSang'
wireless.default_radio0.encryption='psk2'
wireless.default_radio0.key='cadoles;21'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.hwmode='11g'
wireless.radio1.htmode='HT20'
wireless.radio1.country='FR'
wireless.radio1.path='soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0'
wireless.radio1.channel='1'
wireless.radio1.legacy_rates='1'
wireless.radio1.disabled='0'

View File

@ -1,30 +0,0 @@
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.channel='36'
wireless.radio0.hwmode='11a'
wireless.radio0.htmode='VHT80'
wireless.radio0.country='DE'
wireless.radio0.path='soc/soc:pcie/pci0000:00/0000:00:01.0/0000:01:00.0'
wireless.default_radio0=wifi-iface
wireless.default_radio0.device='radio0'
wireless.default_radio0.network='lan'
wireless.default_radio0.mode='ap'
wireless.default_radio0.macaddr='5a:ef:68:b5:f5:1a'
wireless.default_radio0.ssid='DonDuSang'
wireless.default_radio0.encryption='psk2'
wireless.default_radio0.key='free_wifi!'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.hwmode='11g'
wireless.radio1.htmode='HT20'
wireless.radio1.country='FR'
wireless.radio1.path='soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0'
wireless.radio1.channel='1'
wireless.radio1.legacy_rates='1'
wireless.radio1.disabled='0'
wireless.@wifi-iface[1]=wifi-iface
wireless.@wifi-iface[1].device='radio1'
wireless.@wifi-iface[1].mode='ap'
wireless.@wifi-iface[1].ssid='Pyxis2'
wireless.@wifi-iface[1].encryption='psk2'
wireless.@wifi-iface[1].key='free_wifi!'

View File

@ -1,31 +0,0 @@
BSS 7c:26:64:66:cc:44(on wlan1)
TSF: 85238642066 usec (0d, 23:40:38)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -63.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: Livebox-32c8
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

View File

@ -1,88 +0,0 @@
BSS 74:3e:2b:08:41:1c(on wlan1)
TSF: 85238642066 usec (0d, 23:40:38)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -63.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: PyxisWifi
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 7e:26:64:66:cc:44(on wlan1)
TSF: 85238646001 usec (0d, 23:40:38)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0421)
signal: -66.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: orange
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 20:47:da:b7:0e:5c(on wlan1)
TSF: 2161066518436 usec (25d, 00:17:46)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -58.00 dBm
last seen: 1640 ms ago
Information elements from Probe Response frame:
SSID: Livebox-596a
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

View File

@ -1,1152 +0,0 @@
BSS 7c:26:64:66:cc:44(on wlan1)
TSF: 85238642066 usec (0d, 23:40:38)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -63.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: Livebox-32c8
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 7e:26:64:66:cc:44(on wlan1)
TSF: 85238646001 usec (0d, 23:40:38)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0421)
signal: -66.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: orange
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS ac:84:c9:2f:59:6e(on wlan1)
TSF: 2161066518436 usec (25d, 00:17:46)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -58.00 dBm
last seen: 1640 ms ago
Information elements from Probe Response frame:
SSID: Livebox-596a
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-23
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS b0:39:56:d8:38:ed(on wlan1)
TSF: 1037415177423 usec (12d, 00:10:15)
freq: 2422
beacon interval: 100 TUs
capability: ESS (0x0c11)
signal: -51.00 dBm
last seen: 1220 ms ago
Information elements from Probe Response frame:
SSID: Frate Dijon EXT
HT capabilities:
Capabilities: 0x11ee
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 40:5a:9b:ed:ba:f0(on wlan1)
TSF: 3568958658654 usec (41d, 07:22:38)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -46.00 dBm
last seen: 740 ms ago
Information elements from Probe Response frame:
SSID: Cadoles
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-15
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 00:a6:ca:10:df:01(on wlan1)
TSF: 1018905678733 usec (11d, 19:01:45)
freq: 2437
beacon interval: 102 TUs
capability: ESS (0x1431)
signal: -80.00 dBm
last seen: 820 ms ago
Information elements from Probe Response frame:
SSID: EFF-Mobility
HT capabilities:
Capabilities: 0x19ac
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS a0:04:60:b2:8a:c8(on wlan1)
TSF: 23484334090837 usec (271d, 19:25:34)
freq: 2472
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -44.00 dBm
last seen: 40 ms ago
Information elements from Probe Response frame:
SSID: Cadoles Formations (N)
HT capabilities:
Capabilities: 0x11ec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 13
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS bc:f6:85:fe:6d:46(on wlan1)
TSF: 5185428505884 usec (60d, 00:23:48)
freq: 2467
beacon interval: 100 TUs
capability: ESS (0x0c11)
signal: -76.00 dBm
last seen: 30 ms ago
Information elements from Probe Response frame:
SSID: Dlink
HT capabilities:
Capabilities: 0x11ee
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 2 usec (0x04)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 12
* secondary channel offset: no secondary
* STA channel width: 20 MHz
Secondary Channel Offset: no secondary (0)
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 90:4d:4a:f7:b9:71(on wlan1)
TSF: 4721041865203 usec (54d, 15:24:01)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0001)
signal: -82.00 dBm
last seen: 300 ms ago
Information elements from Probe Response frame:
SSID: orange
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT Max RX data rate: 384 Mbps
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS e4:9e:12:8b:ef:73(on wlan1)
TSF: 7952485362135 usec (92d, 01:01:25)
freq: 2452
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -80.00 dBm
last seen: 430 ms ago
Information elements from Probe Response frame:
SSID: Freebox-8BEF72
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0xec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 9
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 90:4d:4a:f7:b9:70(on wlan1)
TSF: 4721041856992 usec (54d, 15:24:01)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0011)
signal: -78.00 dBm
last seen: 310 ms ago
Information elements from Probe Response frame:
SSID: Livebox-B970
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT Max RX data rate: 384 Mbps
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 3c:52:82:fc:5e:21(on wlan1)
TSF: 6735883434375 usec (77d, 23:04:43)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0511)
signal: -79.00 dBm
last seen: 970 ms ago
Information elements from Probe Response frame:
SSID: DIRECT-20-HP DeskJet 3630 series
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x20
HT20
Static SM Power Save
RX HT20 SGI
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 32767 bytes (exponent: 0x002)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-7
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 00:a6:ca:10:df:02(on wlan1)
TSF: 1018894510847 usec (11d, 19:01:34)
freq: 2437
beacon interval: 102 TUs
capability: ESS (0x1421)
signal: -73.00 dBm
last seen: 1040 ms ago
Information elements from Probe Response frame:
SSID: Keo-HotSpot
HT capabilities:
Capabilities: 0x19ac
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS a2:17:33:9f:4d:81(on wlan1)
TSF: 3050426691569 usec (35d, 07:20:26)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0401)
signal: -82.00 dBm
last seen: 310 ms ago
Information elements from Probe Response frame:
SSID: SFR WiFi FON
BSS ac:84:c9:1d:c6:7c(on wlan1)
TSF: 2491424200041 usec (28d, 20:03:44)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -80.00 dBm
last seen: 1480 ms ago
Information elements from Probe Response frame:
SSID: Frate Djon
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 78:81:02:5e:b7:15(on wlan1)
TSF: 4786879928619 usec (55d, 09:41:19)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0401)
signal: -83.00 dBm
last seen: 950 ms ago
Information elements from Probe Response frame:
SSID: orange
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT Max RX data rate: 384 Mbps
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 00:a6:ca:10:df:00(on wlan1)
TSF: 1018905280864 usec (11d, 19:01:45)
freq: 2437
beacon interval: 102 TUs
capability: ESS (0x1431)
signal: -76.00 dBm
last seen: 1170 ms ago
Information elements from Probe Response frame:
SSID: \x00
HT capabilities:
Capabilities: 0x19ac
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: IEEE 802.1X
* Capabilities: 4-PTKSA-RC 4-GTKSA-RC (0x0028)
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS a0:1b:29:be:98:26(on wlan1)
TSF: 2931892990829 usec (33d, 22:24:52)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -64.00 dBm
last seen: 970 ms ago
Information elements from Probe Response frame:
SSID: Livebox-9822
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-15
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 40:4a:03:05:d2:68(on wlan1)
TSF: 57377785 usec (0d, 00:00:57)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -76.00 dBm
last seen: 240 ms ago
Information elements from Probe Response frame:
SSID: ZyXEL
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
HT capabilities:
Capabilities: 0x104e
HT20/HT40
SM Power Save disabled
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 11
* secondary channel offset: below
* STA channel width: any
BSS f4:ca:e5:98:3b:de(on wlan1)
TSF: 502449932512 usec (5d, 19:34:09)
freq: 2462
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -86.00 dBm
last seen: 11400 ms ago
Information elements from Probe Response frame:
SSID: FreeWifi_secure
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: IEEE 802.1X
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x6c
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 00:17:33:9f:4d:80(on wlan1)
TSF: 3050426716298 usec (35d, 07:20:26)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -79.00 dBm
last seen: 290 ms ago
Information elements from Probe Response frame:
SSID: NEUF_4D7C
BSS a2:17:33:9f:4d:83(on wlan1)
TSF: 3050426718113 usec (35d, 07:20:26)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -80.00 dBm
last seen: 290 ms ago
Information elements from Probe Response frame:
SSID: SFR WiFi Mobile
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: IEEE 802.1X
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
BSS 30:7c:b2:d1:0b:0d(on wlan1)
TSF: 1059959180138 usec (12d, 06:25:59)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -80.00 dBm
last seen: 11200 ms ago
Information elements from Probe Response frame:
SSID: Livebox-0b09
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT TX/RX MCS rate indexes supported: 0-15
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 68:a3:78:0d:b6:51(on wlan1)
TSF: 136373797215 usec (1d, 13:52:53)
freq: 2462
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -88.00 dBm
last seen: 11230 ms ago
Information elements from Probe Response frame:
SSID: Freebox-0DB650
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0xec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 68:15:90:36:63:60(on wlan1)
TSF: 308936601984 usec (3d, 13:48:56)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -88.00 dBm
last seen: 12650 ms ago
Information elements from Probe Response frame:
SSID: Livebox-6360
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
BSS 0c:8d:db:c4:a0:34(on wlan1)
TSF: 372485216298 usec (4d, 07:28:05)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x1431)
signal: -56.00 dBm
last seen: 1540 ms ago
Information elements from Probe Response frame:
SSID: pfPauvres
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
HT capabilities:
Capabilities: 0x9ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 7935 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-15
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
VHT capabilities:
VHT Capabilities (0x338959b2):
Max MPDU length: 11454
Supported Channel Width: neither 160 nor 80+80
RX LDPC
short GI (80 MHz)
TX STBC
SU Beamformer
SU Beamformee
MU Beamformer
RX antenna pattern consistency
TX antenna pattern consistency
VHT RX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT RX highest supported: 0 Mbps
VHT TX MCS set:
1 streams: MCS 0-9
2 streams: MCS 0-9
3 streams: not supported
4 streams: not supported
5 streams: not supported
6 streams: not supported
7 streams: not supported
8 streams: not supported
VHT TX highest supported: 0 Mbps
VHT operation:
* channel width: 0 (20 or 40 MHz)
* center freq segment 1: 0
* center freq segment 2: 0
* VHT basic MCS set: 0xfffc
BSS ac:3b:77:6a:24:e0(on wlan1)
TSF: 741652789170 usec (8d, 14:00:52)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -87.00 dBm
last seen: 1700 ms ago
Information elements from Probe Response frame:
SSID: Grosorboul
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x18fc
HT20
SM Power Save disabled
RX Greenfield
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 1
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 68:a3:78:6e:d9:24(on wlan1)
TSF: 85494694239 usec (0d, 23:44:54)
freq: 2422
beacon interval: 96 TUs
capability: ESS (0x0401)
signal: -87.00 dBm
last seen: 1340 ms ago
Information elements from Probe Response frame:
SSID: FreeWifi
HT capabilities:
Capabilities: 0xec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 14:0c:76:79:c0:d9(on wlan1)
TSF: 572290498911 usec (6d, 14:58:10)
freq: 2427
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -86.00 dBm
last seen: 1300 ms ago
Information elements from Probe Response frame:
SSID: freebox_ZFSFUA
HT capabilities:
Capabilities: 0x6c
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 4
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 78:81:02:5e:b7:14(on wlan1)
TSF: 4786879917067 usec (55d, 09:41:19)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -84.00 dBm
last seen: 960 ms ago
SSID: Livebox-B714
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x1ad
RX LDPC
HT20
SM Power Save disabled
RX HT20 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT Max RX data rate: 384 Mbps
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS d6:38:9c:67:00:7a(on wlan1)
TSF: 52271652256 usec (0d, 14:31:11)
freq: 2442
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -75.00 dBm
last seen: 680 ms ago
Information elements from Probe Response frame:
SSID: \xc5\xa4\xc3\xa3h\xc3\xae\xc5\x99
HT capabilities:
Capabilities: 0x130
HT20
Static SM Power Save
RX Greenfield
RX HT20 SGI
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-7
HT operation:
* primary channel: 7
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
BSS 00:19:70:4f:de:f2(on wlan1)
TSF: 223832269184 usec (2d, 14:10:32)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -86.00 dBm
last seen: 11260 ms ago
Information elements from Probe Response frame:
SSID: Livebox-45cc
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
HT capabilities:
Capabilities: 0x100c
HT20
SM Power Save disabled
No RX STBC
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 11
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 6c:38:a1:62:1b:28(on wlan1)
TSF: 2704292761929 usec (31d, 07:11:32)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0c11)
signal: -86.00 dBm
last seen: 1660 ms ago
Information elements from Probe Response frame:
SSID: Bbox-1B7889A9
HT capabilities:
Capabilities: 0x1ec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT RX MCS rate indexes supported: 0-23
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 1
* secondary channel offset: above
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 68:a3:78:6e:d9:25(on wlan1)
TSF: 85494497631 usec (0d, 23:44:54)
freq: 2422
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -85.00 dBm
last seen: 1500 ms ago
Information elements from Probe Response frame:
SSID: FreeWifi_secure
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: IEEE 802.1X
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0xec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 56:62:21:de:de:70(on wlan1)
TSF: 5762545254750 usec (66d, 16:42:25)
freq: 2422
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -88.00 dBm
last seen: 1430 ms ago
Information elements from Probe Response frame:
SSID: FREEBOX_JOSIANNE_46
HT capabilities:
Capabilities: 0x106e
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 56:62:21:de:de:71(on wlan1)
TSF: 5762545257087 usec (66d, 16:42:25)
freq: 2422
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -86.00 dBm
last seen: 1430 ms ago
Information elements from Probe Response frame:
SSID:
HT capabilities:
Capabilities: 0x106e
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
No RX STBC
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS 68:a3:78:6e:d9:23(on wlan1)
TSF: 85494792543 usec (0d, 23:44:54)
freq: 2422
beacon interval: 96 TUs
capability: ESS (0x0411)
signal: -86.00 dBm
last seen: 1270 ms ago
Information elements from Probe Response frame:
SSID: Freebox-6ED922
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0xec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 3839 bytes
No DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: No restriction (0x00)
HT TX/RX MCS rate indexes supported: 0-23, 32
HT operation:
* primary channel: 3
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 44:ce:7d:20:5c:a4(on wlan1)
TSF: 2322036531897 usec (26d, 21:00:36)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -82.00 dBm
last seen: 1030 ms ago
Information elements from Probe Response frame:
SSID: SFR_5CA0
HT capabilities:
Capabilities: 0x18ec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS d2:ce:7d:20:5c:a7(on wlan1)
TSF: 2322036535330 usec (26d, 21:00:36)
freq: 2437
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -87.00 dBm
last seen: 1030 ms ago
Information elements from Probe Response frame:
SSID: SFR WiFi Mobile
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: IEEE 802.1X
* Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
HT capabilities:
Capabilities: 0x18ec
HT20
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
No RX STBC
Max AMSDU length: 7935 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 8 usec (0x06)
HT RX MCS rate indexes supported: 0-15
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 6
* secondary channel offset: no secondary
* STA channel width: 20 MHz
BSS 00:22:6b:86:5b:71(on wlan1)
TSF: 13910494312595 usec (161d, 00:01:34)
freq: 2462
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -88.00 dBm
last seen: 350 ms ago
Information elements from Probe Response frame:
SSID: linksys
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: CCMP TKIP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

View File

@ -1,122 +0,0 @@
package openwrt
import (
"fmt"
"time"
)
// Action is the result of an UCI action output and return code
type Action struct {
*CommandResult
Command string
}
// UCI "Object"
type UCI struct {
exec Executor
Wireless *UCIWirelessConf
}
// NewUCI return an UCI instance to interact with UCI
func NewUCI() *UCI {
exec := &localExecutor{}
wireless := &UCIWirelessConf{}
return &UCI{exec, wireless}
}
// NewUCIWithExecutor returns a UCI Instance an gives you the ability to provide
// a different command executor than the default one.
func NewUCIWithExecutor(exec Executor) *UCI {
wireless := &UCIWirelessConf{}
return &UCI{exec, wireless}
}
// uciRun, private method to run the UCI command
func (u *UCI) uciRun(param ...string) *Action {
cmd := "/sbin/uci"
res := u.exec.Run(cmd, param...)
return &Action{res, fmt.Sprintf("%s %s", cmd, param)}
}
// Add add an entry to UCI configuration, specify the Module and the value
func (u *UCI) Add(module string, name string) *Action {
cmd := "uci add"
commandRes := u.exec.Run(cmd, module, name)
return &Action{commandRes, fmt.Sprintf("%s %s %s", cmd, module, name)}
}
// Delete delete an entry from UCI configuration specify the entry name
func (u *UCI) Delete(entry string) *Action {
return u.uciRun("delete", entry)
}
// Set set a value ton an UCI configuration entry
func (u *UCI) Set(entry string, value string) *Action {
return u.uciRun("set", fmt.Sprintf("%s=%s", entry, value))
}
// Commit the recent actions to UCI
func (u *UCI) Commit() *Action {
res := u.uciRun("commit")
return res
}
// Reload reload uci configuration
func (u *UCI) Reload() *Action {
cmdResult := u.exec.Run("reload_config")
time.Sleep(5 * time.Second)
return &Action{cmdResult, "reload_config"}
}
// Show returns the output of uci show command
func (u *UCI) Show(target string) *Action {
cmdRes := u.uciRun("show", target)
return cmdRes
}
// AddWireless Create a new Wireless entry in UCI configuration
func (u *UCI) AddWireless() *Action {
res := u.uciRun("add", "wireless", "wifi-iface")
return res
}
// LoadWirelessConf scan UCI configuration and loads saved Wireless configuration
func (u *UCI) LoadWirelessConf() {
u.Wireless = NewUCIWirelessConf(u)
u.Wireless.Load()
}
// GetWifiIface returns the wifi Interface by Index
func (u *UCI) GetWifiIface(idx int) *UCIWirelessInterface {
ifaces := u.Wireless.Interfaces
if len(ifaces) < idx {
return nil
}
return ifaces[idx]
}
// GetWifiIfaceByName returns the wifi Interface by Index
func (u *UCI) GetWifiIfaceByName(name string) *UCIWirelessInterface {
ifaces := u.Wireless.Interfaces
if len(ifaces) <= 0 {
return nil
}
for _, ifa := range ifaces {
if ifa.Name == name {
return ifa
}
}
return nil
}
// GetWifiIfaces wifi interfaces in configuration
func (u *UCI) GetWifiIfaces() []*UCIWirelessInterface {
return u.Wireless.Interfaces
}
// GetWifiDevices returns the wifi devices in configuration
func (u *UCI) GetWifiDevices() []map[string]string {
return u.Wireless.Devices
}

View File

@ -1,100 +0,0 @@
package openwrt
import (
"fmt"
"testing"
)
func TestUCIAdd(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
res := uci.Add("wireless", "test")
if res.ReturnCode != 0 {
t.Error("Bad Return Code !")
}
if res.Stdout != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stdout is not empty ...")
}
if res.Stderr != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stderr is not empty ...")
}
}
func TestUCIAddFailed(t *testing.T) {
exec := createMockExecutor("", "BigError", 3)
uci := NewUCIWithExecutor(exec)
res := uci.Add("wireless", "test")
if res.ReturnCode != 3 {
t.Error("Bad Return Code !")
}
}
func TestUCIDelete(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
res := uci.Delete("wireless.@wifi-iface[1]")
if res.ReturnCode != 0 {
t.Error("Bad Return Code !")
}
if res.Stdout != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stdout is not empty ...")
}
if res.Stderr != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stderr is not empty ...")
}
}
func TestUCISet(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
res := uci.Set("wireless.@wifi-iface[1].network", "OrionNetwork")
if res.ReturnCode != 0 {
t.Error("Bad Return Code !")
}
if res.Stdout != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stdout is not empty ...")
}
if res.Stderr != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stderr is not empty ...")
}
}
func TestUCICommit(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
res := uci.Commit()
if res.ReturnCode != 0 {
t.Error("Bad Return Code !")
}
if res.Stdout != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stdout is not empty ...")
}
if res.Stderr != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stderr is not empty ...")
}
}
func TestUCIReload(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
res := uci.Reload()
if res.ReturnCode != 0 {
t.Error("Bad Return Code !")
}
if res.Stdout != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stdout is not empty ...")
}
if res.Stderr != "" {
fmt.Printf("[%s] - ", res.Stdout)
t.Error("Stderr is not empty ...")
}
}

View File

@ -1,179 +0,0 @@
package openwrt
import (
"fmt"
"regexp"
"strconv"
"strings"
)
// UCIWirelessConf is the representation of UCI Wireless Configuration
type UCIWirelessConf struct {
uciClient *UCI
Devices []map[string]string
DefaultInterface map[string]string
Interfaces []*UCIWirelessInterface
}
// NewUCIWirelessConf builds a new UCIWirelessConf instance
func NewUCIWirelessConf(uci *UCI) *UCIWirelessConf {
return &UCIWirelessConf{
uciClient: uci,
Devices: []map[string]string{}, //, 10),
DefaultInterface: map[string]string{},
Interfaces: []*UCIWirelessInterface{}, //, 10),
}
}
// parse wireless.default_radio[0-9] section of UCI Configuration
func (wc *UCIWirelessConf) parseDefaultInterface(lines []string) int {
matches := map[string]string{
"Name": "default_radio0=",
"Type": "default_radio0.type=",
"Channel": "default_radio0.channel=",
"Hwmode": "default_radio0.hwmode=",
"Htmode": "default_radio0.htmode=",
"Country": "default_radio0.country=",
"Path": "default_radio0.path=",
}
for _, line := range lines {
for key, value := range matches {
if strings.Contains(line, value) {
wc.DefaultInterface[key] = strings.Split(line, "=")[1]
}
}
}
return 0
}
func (wc *UCIWirelessConf) parseInterfaces(lines []string) int {
matches := map[string]*regexp.Regexp{
"Name": regexp.MustCompile(`@wifi-iface\[[0-9]\]=`),
"Device": regexp.MustCompile(`@wifi-iface\[[0-9]\].device=`),
"Mode": regexp.MustCompile(`@wifi-iface\[[0-9]\].mode=`),
"Ssid": regexp.MustCompile(`@wifi-iface\[[0-9]\].ssid=`),
"Encryption": regexp.MustCompile(`@wifi-iface\[[0-9]\].encryption=`),
"Key": regexp.MustCompile(`@wifi-iface\[[0-9]\].key=`),
}
for _, li := range lines {
var idx int
sIdx := strings.Split(li, "[")[1]
sIdx = strings.Split(sIdx, "]")[0]
if s, err := strconv.ParseInt(sIdx, 10, 32); err == nil {
idx = int(s)
}
if idx >= len(wc.Interfaces) {
for i := 0; i <= idx; i++ {
wc.Interfaces = append(wc.Interfaces, NewUCIWirelessInterface())
}
}
if wc.Interfaces[idx] == nil {
wc.Interfaces[idx] = NewUCIWirelessInterface()
wc.Interfaces[idx].Index = idx
}
for key, expr := range matches {
if expr.MatchString(li) {
value := strings.Split(li, "=")[1]
if key == "Name" {
wc.Interfaces[idx].Name = value
}
if key == "Device" {
wc.Interfaces[idx].Device = value
//FIXME
//dev := fmt.Sprintf("wireless.%s", value)
//path := wc.uciClient.Show(dev)
//wc.Interfaces[idx].DevicePath = strings.Split(path.Stdout, "=")[1]
}
if key == "Mode" {
wc.Interfaces[idx].Mode = value
}
if key == "Ssid" {
wc.Interfaces[idx].Ssid = value
}
if key == "Encryption" {
wc.Interfaces[idx].Encryption = value
}
if key == "Key" {
wc.Interfaces[idx].Key = value
}
}
}
}
return 0
}
func (wc *UCIWirelessConf) parseDevicesConf(lines []string) int {
matches := map[string]string{
"Name": "radio[0-9]=",
"Type": "radio[0-9].type=",
"Channel": "radio[0-9].channel=",
"Hwmode": "radio[0-9].hwmode=",
"Htmode": "radio[0-9].htmode=",
"Country": "radio[0-9].country=",
"Path": "radio[0-9].path=",
}
for _, line := range lines {
var idx int
re := regexp.MustCompile("[0-9]")
rIdx := re.FindString(line)
if s, err := strconv.ParseInt(rIdx, 10, 32); err == nil {
idx = int(s)
}
if len(wc.Devices) == 0 {
wc.Devices = append(wc.Devices, make(map[string]string))
}
if idx >= len(wc.Devices) {
for i := 0; i < idx; i++ {
wc.Devices = append(wc.Devices, make(map[string]string))
}
}
if wc.Devices[idx] == nil {
wc.Devices[idx] = make(map[string]string)
}
for key, expr := range matches {
re := regexp.MustCompile(expr)
if re.MatchString(line) {
value := strings.Split(line, "=")[1]
value = strings.Trim(value, "'")
if key == "Name" {
wc.Devices[idx]["Device"] = fmt.Sprintf("radio%d", idx)
}
wc.Devices[idx][key] = value
}
}
}
return 0
}
func grep(lines string, pattern string) []string {
var res []string
for _, line := range strings.Split(strings.TrimSuffix(lines, "\n"), "\n") {
re := regexp.MustCompile(pattern)
if re.MatchString(line) {
res = append(res, line)
}
}
return res
}
// Load return the Wireless Configuration
func (wc *UCIWirelessConf) Load() *UCIWirelessConf {
conf := wc.uciClient.Show("wireless")
wc.parseDevicesConf(grep(conf.Stdout, "wireless.radio"))
wc.parseDefaultInterface(grep(conf.Stdout, "wireless.default_radio0"))
wc.parseInterfaces(grep(conf.Stdout, "wireless.@wifi-iface"))
return wc
}

View File

@ -1,30 +0,0 @@
package openwrt
import (
"io/ioutil"
"testing"
)
func TestUCIGetWirelessConf(t *testing.T) {
config, err := ioutil.ReadFile("./testdata/uci_show_wireless.txt")
if err != nil {
t.Fatal(err)
}
exec := createMockExecutor(string(config), "", 0)
uci := NewUCIWithExecutor(exec)
uci.LoadWirelessConf()
if g, e := uci.Wireless.DefaultInterface["Name"], "wifi-iface"; g != e {
t.Fatalf("DefaultDevice.Name is expected to be [%s] and we have [%s]", e, g)
}
config, err = ioutil.ReadFile("./testdata/uci_show_wireless_2_cards.txt")
if err != nil {
t.Fatal(err)
}
exec = createMockExecutor(string(config), "", 0)
uci = NewUCIWithExecutor(exec)
uci.LoadWirelessConf()
if g, e := uci.Wireless.Interfaces[1].Name, "wifi-iface"; g != e {
t.Fatalf("DefaultDevice.Name is expected to be [%s] and we have [%s]", e, g)
}
}

View File

@ -1,209 +0,0 @@
package openwrt
import (
"fmt"
"os"
"path/filepath"
"regexp"
"strings"
)
// UCIWirelessInterface is the description of an Wireless interface (cf Openwrt doc) on top of an Wireless Device
type UCIWirelessInterface struct {
Name string
Index int
Device string
DevicePath string
SysDevName string
Mode string
Disabled bool
Ssid string
Bssid string
Network string
Encryption string
Key string
Country string
}
// NewUCIWirelessInterface builds a new UCIWirelessInterface instance
func NewUCIWirelessInterface() *UCIWirelessInterface {
return &UCIWirelessInterface{}
}
// GetSysDevName looks for the system name of Wireless Interface
func (wi *UCIWirelessInterface) GetSysDevName(sysDir string) string {
var found string
if wi.SysDevName != "" {
return wi.SysDevName
}
if sysDir == "" {
sysDir = "/sys/devices/platform"
}
if _, err := os.Stat(sysDir); os.IsNotExist(err) {
return "ERROR123-FILE-DONES-NOT-EXIST"
}
err := filepath.Walk(sysDir, func(path string, f os.FileInfo, _ error) error {
patt := fmt.Sprintf("%s/%s/.*/address", wi.DevicePath, "net")
r, err := regexp.MatchString(patt, path)
if err == nil && r {
res := strings.Split(path, "/")
idx := len(res) - 2
found = res[idx]
}
return nil
})
if err != nil {
return err.Error()
}
wi.SysDevName = found
return found
}
// Create add a new entry for wifi interface in UCI Configuration
func (wi *UCIWirelessInterface) Create(uci *UCI) *Action {
var confPrefix string
addRes := uci.AddWireless()
if addRes.ReturnCode != 0 {
return addRes
}
if wi.Index <= 0 {
confPrefix = fmt.Sprintf("wireless.@wifi-iface[%d]", len(uci.Wireless.Interfaces))
} else {
confPrefix = fmt.Sprintf("wireless.@wifi-iface[%d]", wi.Index)
}
conf := make(map[string][]string)
conf["network"] = append(conf["network"], fmt.Sprintf("%s.network", confPrefix), wi.Network)
conf["ssid"] = append(conf["ssid"], fmt.Sprintf("%s.ssid", confPrefix), wi.Ssid)
conf["enc"] = append(conf["enc"], fmt.Sprintf("%s.encryption", confPrefix), wi.Encryption)
conf["device"] = append(conf["device"], fmt.Sprintf("%s.device", confPrefix), wi.Device)
conf["mode"] = append(conf["mode"], fmt.Sprintf("%s.mode", confPrefix), wi.Mode)
conf["bssid"] = append(conf["bssid"], fmt.Sprintf("%s.bssid", confPrefix), wi.Bssid)
conf["key"] = append(conf["key"], fmt.Sprintf("%s.key", confPrefix), wi.Key)
conf["disabled"] = append(conf["disabled"], fmt.Sprintf("%s.disabled", confPrefix), "0")
conf["country"] = append(conf["country"], fmt.Sprintf("%s.country", confPrefix), wi.Country)
for _, value := range conf {
if value[1] != "" {
result := uci.Set(value[0], value[1])
if result.ReturnCode != 0 {
return result
}
}
}
return &Action{
CommandResult: &CommandResult{
Stdout: "",
Stderr: "",
ReturnCode: 0,
},
}
}
// Save commit and relaod configuration (writes it to files !)
func (wi *UCIWirelessInterface) Save(uci *UCI) *Action {
commitRes := uci.Commit()
if commitRes.ReturnCode != 0 {
return commitRes
}
reload := uci.Reload()
return reload
}
// SysAdd creates the interface in the system using iw command
func (wi *UCIWirelessInterface) SysAdd(uci *UCI) *Action {
cmd := "iw"
opt := "phy"
phydev := fmt.Sprintf("phy%d", wi.Index)
what := "interface"
act := "add"
tpe := "managed"
if wi.SysDevName == "" {
wi.SysDevName = fmt.Sprintf("tmp.radio%d", wi.Index)
}
res := uci.exec.Run(cmd, opt, phydev, what, act, wi.SysDevName, "type", tpe)
return &Action{
CommandResult: res,
Command: fmt.Sprintf("%s %s %s %s %s %s %s %s", cmd, opt, phydev, what, act, wi.SysDevName, "type", tpe),
}
}
// SysDel deletes the interface in the system using iw command
func (wi *UCIWirelessInterface) SysDel(uci *UCI) *Action {
cmd := "iw"
opt := "dev"
act := "del"
if wi.SysDevName == "" {
wi.SysDevName = fmt.Sprintf("tmp.radio%d", wi.Index)
}
res := uci.exec.Run(cmd, opt, wi.SysDevName, act)
return &Action{
CommandResult: res,
Command: fmt.Sprintf("%s %s %s %s", cmd, opt, wi.SysDevName, act),
}
}
// Up brings the interface up in the system using ip command
func (wi *UCIWirelessInterface) Up(uci *UCI) *Action {
cmd := "ip"
opt := "link"
act := "set"
wht := "dev"
res := uci.exec.Run(cmd, opt, act, wht, wi.SysDevName, "up")
return &Action{
CommandResult: res,
}
}
// Delete remove wifi interface from UCI Configuration
func (wi *UCIWirelessInterface) Delete(uci *UCI) *Action {
toDelete := fmt.Sprintf("wireless.@wifi-iface[%d]", wi.Index)
del := uci.Delete(toDelete)
if del.ReturnCode != 0 {
return del
}
return uci.Commit()
}
// Update add a new entry for wifi interface in UCI Configuration
func (wi *UCIWirelessInterface) Update(uci *UCI) *Action {
wi.Delete(uci)
create := wi.Create(uci)
if create.ReturnCode != 0 {
return create
}
return uci.Commit()
}
// Scan starts a scan for wifi networks with this device
func (wi *UCIWirelessInterface) Scan() []*WifiCell {
devName := wi.GetSysDevName("")
wifi := NewWifiScanner(devName)
return wifi.Scan()
}
// Connect updates configuration to connect to the WifiCell
func (wi *UCIWirelessInterface) Connect(uci *UCI, cell *WifiCell, secret string) *Action {
wi.Ssid = cell.Ssid
wi.Bssid = cell.MacAddress
wi.Encryption = cell.Encryption
wi.Mode = "sta"
wi.Key = secret
res := wi.Update(uci)
if res.ReturnCode != 0 {
return res
}
return wi.Save(uci)
}

View File

@ -1,131 +0,0 @@
package openwrt
import (
"testing"
)
const (
ifaceName = "Test"
ifaceNetwork = "Pyxis"
ifaceSysDevName = "wlanX"
ifaceEnc = "psk"
ifaceSSID = "PyxisWifi"
ifaceKey = "qsmdflkjqslmdfkjqslmfkdj"
ifaceDevice = "radioX"
ifaceMode = "ap"
ifaceBssid = "00:00:00:00:00"
)
func TestGetSysDevName(t *testing.T) {
iface := NewUCIWirelessInterface()
iface.Name = ifaceName
iface.Index = 1
iface.Device = ifaceDevice
iface.DevicePath = "soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0"
iface.Mode = ifaceMode
iface.Ssid = ifaceSSID
iface.Bssid = ifaceBssid
iface.Network = ifaceNetwork
iface.Encryption = ifaceEnc
iface.Key = ifaceKey
if g, e := iface.GetSysDevName("testdata/sys/"), "wlan1"; g != e {
t.Fatalf("UCIWirelessInterface.GetDeviceSysName() failed ! Got: %s Expect: %s", g, e)
}
iface.SysDevName = "wlanX"
if g, e := iface.GetSysDevName("testdata/sys/"), "wlanX"; g != e {
t.Fatalf("UCIWirelessInterface.GetDeviceSysName() failed ! Got: %s Expect: %s", g, e)
}
}
func TestCreate(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
iface := NewUCIWirelessInterface()
iface.Name = ifaceName
iface.Device = ifaceDevice
iface.Mode = ifaceMode
iface.Ssid = ifaceSSID
iface.Bssid = ifaceBssid
iface.Network = ifaceNetwork
iface.Encryption = ifaceEnc
iface.Key = ifaceKey
if iface.Create(uci).ReturnCode != 0 {
t.Fatalf("UCIWirelessInterface.Create() failed !")
}
}
func TestUpdate(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
iface := NewUCIWirelessInterface()
iface.Name = ifaceName
iface.Index = 1
iface.Device = ifaceDevice
iface.SysDevName = ifaceSysDevName
iface.Mode = ifaceMode
iface.Ssid = ifaceSSID
iface.Bssid = ifaceBssid
iface.Network = ifaceNetwork
iface.Encryption = ifaceEnc
iface.Key = ifaceKey
if iface.Create(uci).ReturnCode != 0 {
t.Fatalf("UCIWirelessInterface.Create() failed !")
}
iface.Name = "Tutu"
if iface.Update(uci).ReturnCode != 0 {
t.Fatalf("UCIWirelessInterface.Update() failed !")
}
}
func TestDelete(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
iface := NewUCIWirelessInterface()
iface.Name = ifaceName
iface.Index = 1
iface.Device = ifaceDevice
iface.SysDevName = ifaceSysDevName
iface.Mode = ifaceMode
iface.Ssid = ifaceSSID
iface.Bssid = ifaceBssid
iface.Network = ifaceNetwork
iface.Encryption = ifaceEnc
iface.Key = ifaceKey
if iface.Delete(uci).ReturnCode != 0 {
t.Fatalf("UCIWirelessInterface.Delete() failed !")
}
}
func TestConnect(t *testing.T) {
exec := createMockExecutor("", "", 0)
uci := NewUCIWithExecutor(exec)
iface := NewUCIWirelessInterface()
iface.Name = ifaceName
iface.Index = 1
iface.Device = ifaceDevice
iface.SysDevName = ifaceSysDevName
iface.Mode = ifaceMode
iface.Ssid = ifaceSSID
iface.Bssid = ifaceBssid
iface.Network = ifaceNetwork
iface.Encryption = ifaceEnc
iface.Key = ifaceKey
wifiCell := NewWifiCell("PyxisWifi", "01:01:01:01:01", "psk")
if iface.Connect(uci, wifiCell, "Toto").ReturnCode != 0 {
t.Fatalf("UCIWirelessInterface.Delete() failed !")
}
}

View File

@ -1,17 +0,0 @@
package openwrt
// WifiCell reprensents wifi network Cell
type WifiCell struct {
Ssid string
MacAddress string
Encryption string
}
// NewWifiCell returns a new WifiCell object
func NewWifiCell(ssid string, mac string, encrypt string) *WifiCell {
return &WifiCell{
Ssid: ssid,
MacAddress: mac,
Encryption: encrypt,
}
}

View File

@ -1,126 +0,0 @@
package openwrt
import (
"regexp"
"strings"
"time"
)
// NONE contains the string for "none"
const NONE = "none"
// WifiScanner gives access to al OpenWRT Wifi Scan operations
type WifiScanner struct {
exec Executor
iface string
Cells []*WifiCell
}
// NewWifiScanner return an UCI instance to interact with UCI
func NewWifiScanner(wIface string) *WifiScanner {
exec := &localExecutor{}
iface := wIface
Cells := []*WifiCell{}
return &WifiScanner{exec, iface, Cells}
}
// NewWifiWithExecutor returns a Wifi Instance an gives you the ability to provide
// a different command executor than the default one.
func NewWifiWithExecutor(exec Executor, wIface string) *WifiScanner {
return &WifiScanner{exec, wIface, nil}
}
func (w *WifiScanner) getEncryption(line string) string {
var enc string
if strings.Contains(line, "PSK") {
enc = "psk2"
} else if strings.Contains(line, NONE) {
enc = NONE
} else {
enc = "unkn"
}
return enc
}
func (w *WifiScanner) parseWifiCells(stdout string) int {
mac, ssid, enc := "", "", ""
encOff := false
macExpr := `([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])`
for _, line := range strings.Split(strings.TrimSuffix(stdout, "\n"), "\n") {
expr := regexp.MustCompile("^BSS")
if expr.MatchString(line) {
if len(mac) != 0 && len(ssid) != 0 && len(enc) == 0 {
enc = NONE
cell := NewWifiCell(ssid, mac, enc)
w.Cells = append(w.Cells, cell)
ssid, enc = "", ""
}
macRegexp := regexp.MustCompile(macExpr)
mac = macRegexp.FindString(line)
}
if strings.Contains(line, "SSID:") {
ssid = strings.Split(line, " ")[1]
ssid = strings.Trim(ssid, "\"")
//ssid = strings.Trim(ssid, " ")
if ssid == "" {
ssid = " "
}
}
if strings.Contains(line, "Encryption key:off") {
encOff = true
}
if strings.Contains(line, "Authentication suites") {
enc = w.getEncryption(line)
}
if len(mac) > 0 && len(ssid) > 0 && (len(enc) > 0 || encOff) {
if encOff {
enc = NONE
encOff = false
}
cell := NewWifiCell(ssid, mac, enc)
w.Cells = append(w.Cells, cell)
ssid, mac, enc = "", "", ""
}
}
return 0
}
// GetWifiCells retrieves all available wifi cells for a card !
func (w *WifiScanner) GetWifiCells() int {
var res *CommandResult
for try := 0; try != 20; try++ {
res = w.exec.Run("iw", w.iface, "scan")
if res.ReturnCode == 0 {
parsing := w.parseWifiCells(res.Stdout)
if parsing == 0 {
if len(w.Cells) == 0 {
return 242
}
}
return parsing
}
time.Sleep(time.Second * 2)
}
return res.ReturnCode
}
// GetCell retreives an WifiCell by SSID provided in parameter
func (w *WifiScanner) GetCell(ssid string) *WifiCell {
for _, v := range w.Cells {
if v.Ssid == ssid {
return v
}
}
return nil
}
// Scan retreives a list of available wifi cells
func (w *WifiScanner) Scan() []*WifiCell {
_ = w.GetWifiCells()
return w.Cells
}

View File

@ -1,71 +0,0 @@
package openwrt
import (
"fmt"
"io/ioutil"
"testing"
)
// Test GestWifiCells method with 3 Cells
func TestGetWifiCells(t *testing.T) {
cellList, err := ioutil.ReadFile("testdata/wifi_cells_output_3.txt")
if err != nil {
t.Fatal(err)
}
exec := createMockExecutor(string(cellList), "", 0)
wifi := NewWifiWithExecutor(exec, "wlan1")
_ = wifi.GetWifiCells()
if len(wifi.Cells) != 3 {
fmt.Printf("Size of wifi.Cells is %d and not 3 !!!\n", len(wifi.Cells))
t.Error("Cell list is empty ... This can not append !! Fix your code Dummy !")
}
if g, e := wifi.Cells[0].Ssid, "PyxisWifi"; g != e {
t.Errorf("The first Cell have a bad SSID !\n %s is expected and we have %s", e, g)
}
if g, e := wifi.Cells[0].MacAddress, "74:3e:2b:08:41:1c"; g != e {
t.Errorf("The first Cell have a bad MAC !\n [%s] is expected and we have [%s]", e, g)
}
if g, e := wifi.Cells[1].Encryption, "none"; g != e {
t.Errorf("The first Cell have a bad Encryption!\n %s is expected and we have %s", e, g)
}
if g, e := wifi.Cells[2].Encryption, "psk2"; g != e {
t.Errorf("The last Cell have a bad Encryption!\n %s is expected and we have %s", e, g)
}
if g, e := wifi.Cells[2].MacAddress, "20:47:da:b7:0e:5c"; g != e {
t.Errorf("The last Cell have a bad MAC !\n %s is expected and we have %s", e, g)
}
}
// Test GestWifiCells method with empty list
func TestGetWifiCellsEmpty(t *testing.T) {
exec := createMockExecutor("", "", 0)
wifi := NewWifiWithExecutor(exec, "wlan1")
_ = wifi.GetWifiCells()
if len(wifi.Cells) != 0 {
fmt.Printf("Size of wifi.Cells is %d and not 0 !!!\n", len(wifi.Cells))
t.Error("Cell list is empty ... This can not append !! Fix your code Dummy !")
}
}
// Test GestWifiCells method with 3 Cells
func TestGetWifiCellsLarge(t *testing.T) {
cellList, err := ioutil.ReadFile("testdata/wifi_cells_output_large.txt")
if err != nil {
t.Fatal(err)
}
exec := createMockExecutor(string(cellList), "", 0)
wifi := NewWifiWithExecutor(exec, "wlan1")
_ = wifi.GetWifiCells()
if len(wifi.Cells) != 40 {
fmt.Printf("Size of wifi.Cells is %d and not 40 !!!\n", len(wifi.Cells))
t.Error("Cell list is empty ... This can not append !! Fix your code Dummy !")
}
}

Binary file not shown.

View File

@ -0,0 +1,11 @@
# Orion
Récepteur GNSS/RTK pour les topographes et chefs de chantier
## Documentation
[Voir la documentation](./doc)
## License
`GNU GPL v3` http://dachary.org/loic/gpl-french.pdf

BIN
release/server-linux-arm/server Executable file

Binary file not shown.

View File

@ -0,0 +1,6748 @@
/*! bulma.io v0.7.2 | MIT License | github.com/jgthms/bulma */
@keyframes spinAround {
from {
transform: rotate(0deg); }
to {
transform: rotate(359deg); } }
.delete, .modal-close, .is-unselectable, .button, .file, .breadcrumb, .pagination-previous,
.pagination-next,
.pagination-link,
.pagination-ellipsis, .tabs {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; }
.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after {
border: 3px solid transparent;
border-radius: 2px;
border-right: 0;
border-top: 0;
content: " ";
display: block;
height: 0.625em;
margin-top: -0.4375em;
pointer-events: none;
position: absolute;
top: 50%;
transform: rotate(-45deg);
transform-origin: center;
width: 0.625em; }
.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child),
.subtitle:not(:last-child), .block:not(:last-child), .highlight:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .list:not(:last-child), .message:not(:last-child), .tabs:not(:last-child) {
margin-bottom: 1.5rem; }
.delete, .modal-close {
-moz-appearance: none;
-webkit-appearance: none;
background-color: rgba(10, 10, 10, 0.2);
border: none;
border-radius: 290486px;
cursor: pointer;
pointer-events: auto;
display: inline-block;
flex-grow: 0;
flex-shrink: 0;
font-size: 0;
height: 20px;
max-height: 20px;
max-width: 20px;
min-height: 20px;
min-width: 20px;
outline: none;
position: relative;
vertical-align: top;
width: 20px; }
.delete::before, .modal-close::before, .delete::after, .modal-close::after {
background-color: white;
content: "";
display: block;
left: 50%;
position: absolute;
top: 50%;
transform: translateX(-50%) translateY(-50%) rotate(45deg);
transform-origin: center center; }
.delete::before, .modal-close::before {
height: 2px;
width: 50%; }
.delete::after, .modal-close::after {
height: 50%;
width: 2px; }
.delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus {
background-color: rgba(10, 10, 10, 0.3); }
.delete:active, .modal-close:active {
background-color: rgba(10, 10, 10, 0.4); }
.is-small.delete, .is-small.modal-close {
height: 16px;
max-height: 16px;
max-width: 16px;
min-height: 16px;
min-width: 16px;
width: 16px; }
.is-medium.delete, .is-medium.modal-close {
height: 24px;
max-height: 24px;
max-width: 24px;
min-height: 24px;
min-width: 24px;
width: 24px; }
.is-large.delete, .is-large.modal-close {
height: 32px;
max-height: 32px;
max-width: 32px;
min-height: 32px;
min-width: 32px;
width: 32px; }
.button.is-loading::after, .select.is-loading::after, .control.is-loading::after, .loader {
animation: spinAround 500ms infinite linear;
border: 2px solid #dbdbdb;
border-radius: 290486px;
border-right-color: transparent;
border-top-color: transparent;
content: "";
display: block;
height: 1em;
position: relative;
width: 1em; }
.is-overlay, .image.is-square img, .image.is-1by1 img, .image.is-5by4 img, .image.is-4by3 img, .image.is-3by2 img, .image.is-5by3 img, .image.is-16by9 img, .image.is-2by1 img, .image.is-3by1 img, .image.is-4by5 img, .image.is-3by4 img, .image.is-2by3 img, .image.is-3by5 img, .image.is-9by16 img, .image.is-1by2 img, .image.is-1by3 img, .modal, .modal-background, .hero-video {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0; }
.button, .input,
.textarea, .select select, .file-cta,
.file-name, .pagination-previous,
.pagination-next,
.pagination-link,
.pagination-ellipsis {
-moz-appearance: none;
-webkit-appearance: none;
align-items: center;
border: 1px solid transparent;
border-radius: 4px;
box-shadow: none;
display: inline-flex;
font-size: 1rem;
height: 2.25em;
justify-content: flex-start;
line-height: 1.5;
padding-bottom: calc(0.375em - 1px);
padding-left: calc(0.625em - 1px);
padding-right: calc(0.625em - 1px);
padding-top: calc(0.375em - 1px);
position: relative;
vertical-align: top; }
.button:focus, .input:focus,
.textarea:focus, .select select:focus, .file-cta:focus,
.file-name:focus, .pagination-previous:focus,
.pagination-next:focus,
.pagination-link:focus,
.pagination-ellipsis:focus, .is-focused.button, .is-focused.input,
.is-focused.textarea, .select select.is-focused, .is-focused.file-cta,
.is-focused.file-name, .is-focused.pagination-previous,
.is-focused.pagination-next,
.is-focused.pagination-link,
.is-focused.pagination-ellipsis, .button:active, .input:active,
.textarea:active, .select select:active, .file-cta:active,
.file-name:active, .pagination-previous:active,
.pagination-next:active,
.pagination-link:active,
.pagination-ellipsis:active, .is-active.button, .is-active.input,
.is-active.textarea, .select select.is-active, .is-active.file-cta,
.is-active.file-name, .is-active.pagination-previous,
.is-active.pagination-next,
.is-active.pagination-link,
.is-active.pagination-ellipsis {
outline: none; }
.button[disabled], .input[disabled],
.textarea[disabled], .select select[disabled], .file-cta[disabled],
.file-name[disabled], .pagination-previous[disabled],
.pagination-next[disabled],
.pagination-link[disabled],
.pagination-ellipsis[disabled] {
cursor: not-allowed; }
/*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */
html,
body,
p,
ol,
ul,
li,
dl,
dt,
dd,
blockquote,
figure,
fieldset,
legend,
textarea,
pre,
iframe,
hr,
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0; }
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: 100%;
font-weight: normal; }
ul {
list-style: none; }
button,
input,
select,
textarea {
margin: 0; }
html {
box-sizing: border-box; }
*, *::before, *::after {
box-sizing: inherit; }
img,
audio,
video {
height: auto;
max-width: 100%; }
iframe {
border: 0; }
table {
border-collapse: collapse;
border-spacing: 0; }
td,
th {
padding: 0;
text-align: left; }
html {
background-color: white;
font-size: 16px;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
min-width: 300px;
overflow-x: hidden;
overflow-y: scroll;
text-rendering: optimizeLegibility;
text-size-adjust: 100%; }
article,
aside,
figure,
footer,
header,
hgroup,
section {
display: block; }
body,
button,
input,
select,
textarea {
font-family: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; }
code,
pre {
-moz-osx-font-smoothing: auto;
-webkit-font-smoothing: auto;
font-family: monospace; }
body {
color: #4a4a4a;
font-size: 1rem;
font-weight: 400;
line-height: 1.5; }
a {
color: #3273dc;
cursor: pointer;
text-decoration: none; }
a strong {
color: currentColor; }
a:hover {
color: #363636; }
code {
background-color: whitesmoke;
color: #ff3860;
font-size: 0.875em;
font-weight: normal;
padding: 0.25em 0.5em 0.25em; }
hr {
background-color: whitesmoke;
border: none;
display: block;
height: 2px;
margin: 1.5rem 0; }
img {
height: auto;
max-width: 100%; }
input[type="checkbox"],
input[type="radio"] {
vertical-align: baseline; }
small {
font-size: 0.875em; }
span {
font-style: inherit;
font-weight: inherit; }
strong {
color: #363636;
font-weight: 700; }
pre {
-webkit-overflow-scrolling: touch;
background-color: whitesmoke;
color: #4a4a4a;
font-size: 0.875em;
overflow-x: auto;
padding: 1.25rem 1.5rem;
white-space: pre;
word-wrap: normal; }
pre code {
background-color: transparent;
color: currentColor;
font-size: 1em;
padding: 0; }
table td,
table th {
text-align: left;
vertical-align: top; }
table th {
color: #363636; }
.is-clearfix::after {
clear: both;
content: " ";
display: table; }
.is-pulled-left {
float: left !important; }
.is-pulled-right {
float: right !important; }
.is-clipped {
overflow: hidden !important; }
.is-size-1 {
font-size: 3rem !important; }
.is-size-2 {
font-size: 2.5rem !important; }
.is-size-3 {
font-size: 2rem !important; }
.is-size-4 {
font-size: 1.5rem !important; }
.is-size-5 {
font-size: 1.25rem !important; }
.is-size-6 {
font-size: 1rem !important; }
.is-size-7 {
font-size: 0.75rem !important; }
@media screen and (max-width: 768px) {
.is-size-1-mobile {
font-size: 3rem !important; }
.is-size-2-mobile {
font-size: 2.5rem !important; }
.is-size-3-mobile {
font-size: 2rem !important; }
.is-size-4-mobile {
font-size: 1.5rem !important; }
.is-size-5-mobile {
font-size: 1.25rem !important; }
.is-size-6-mobile {
font-size: 1rem !important; }
.is-size-7-mobile {
font-size: 0.75rem !important; } }
@media screen and (min-width: 769px), print {
.is-size-1-tablet {
font-size: 3rem !important; }
.is-size-2-tablet {
font-size: 2.5rem !important; }
.is-size-3-tablet {
font-size: 2rem !important; }
.is-size-4-tablet {
font-size: 1.5rem !important; }
.is-size-5-tablet {
font-size: 1.25rem !important; }
.is-size-6-tablet {
font-size: 1rem !important; }
.is-size-7-tablet {
font-size: 0.75rem !important; } }
@media screen and (max-width: 1087px) {
.is-size-1-touch {
font-size: 3rem !important; }
.is-size-2-touch {
font-size: 2.5rem !important; }
.is-size-3-touch {
font-size: 2rem !important; }
.is-size-4-touch {
font-size: 1.5rem !important; }
.is-size-5-touch {
font-size: 1.25rem !important; }
.is-size-6-touch {
font-size: 1rem !important; }
.is-size-7-touch {
font-size: 0.75rem !important; } }
@media screen and (min-width: 1088px) {
.is-size-1-desktop {
font-size: 3rem !important; }
.is-size-2-desktop {
font-size: 2.5rem !important; }
.is-size-3-desktop {
font-size: 2rem !important; }
.is-size-4-desktop {
font-size: 1.5rem !important; }
.is-size-5-desktop {
font-size: 1.25rem !important; }
.is-size-6-desktop {
font-size: 1rem !important; }
.is-size-7-desktop {
font-size: 0.75rem !important; } }
@media screen and (min-width: 1280px) {
.is-size-1-widescreen {
font-size: 3rem !important; }
.is-size-2-widescreen {
font-size: 2.5rem !important; }
.is-size-3-widescreen {
font-size: 2rem !important; }
.is-size-4-widescreen {
font-size: 1.5rem !important; }
.is-size-5-widescreen {
font-size: 1.25rem !important; }
.is-size-6-widescreen {
font-size: 1rem !important; }
.is-size-7-widescreen {
font-size: 0.75rem !important; } }
@media screen and (min-width: 1472px) {
.is-size-1-fullhd {
font-size: 3rem !important; }
.is-size-2-fullhd {
font-size: 2.5rem !important; }
.is-size-3-fullhd {
font-size: 2rem !important; }
.is-size-4-fullhd {
font-size: 1.5rem !important; }
.is-size-5-fullhd {
font-size: 1.25rem !important; }
.is-size-6-fullhd {
font-size: 1rem !important; }
.is-size-7-fullhd {
font-size: 0.75rem !important; } }
.has-text-centered {
text-align: center !important; }
.has-text-justified {
text-align: justify !important; }
.has-text-left {
text-align: left !important; }
.has-text-right {
text-align: right !important; }
@media screen and (max-width: 768px) {
.has-text-centered-mobile {
text-align: center !important; } }
@media screen and (min-width: 769px), print {
.has-text-centered-tablet {
text-align: center !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.has-text-centered-tablet-only {
text-align: center !important; } }
@media screen and (max-width: 1087px) {
.has-text-centered-touch {
text-align: center !important; } }
@media screen and (min-width: 1088px) {
.has-text-centered-desktop {
text-align: center !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.has-text-centered-desktop-only {
text-align: center !important; } }
@media screen and (min-width: 1280px) {
.has-text-centered-widescreen {
text-align: center !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.has-text-centered-widescreen-only {
text-align: center !important; } }
@media screen and (min-width: 1472px) {
.has-text-centered-fullhd {
text-align: center !important; } }
@media screen and (max-width: 768px) {
.has-text-justified-mobile {
text-align: justify !important; } }
@media screen and (min-width: 769px), print {
.has-text-justified-tablet {
text-align: justify !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.has-text-justified-tablet-only {
text-align: justify !important; } }
@media screen and (max-width: 1087px) {
.has-text-justified-touch {
text-align: justify !important; } }
@media screen and (min-width: 1088px) {
.has-text-justified-desktop {
text-align: justify !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.has-text-justified-desktop-only {
text-align: justify !important; } }
@media screen and (min-width: 1280px) {
.has-text-justified-widescreen {
text-align: justify !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.has-text-justified-widescreen-only {
text-align: justify !important; } }
@media screen and (min-width: 1472px) {
.has-text-justified-fullhd {
text-align: justify !important; } }
@media screen and (max-width: 768px) {
.has-text-left-mobile {
text-align: left !important; } }
@media screen and (min-width: 769px), print {
.has-text-left-tablet {
text-align: left !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.has-text-left-tablet-only {
text-align: left !important; } }
@media screen and (max-width: 1087px) {
.has-text-left-touch {
text-align: left !important; } }
@media screen and (min-width: 1088px) {
.has-text-left-desktop {
text-align: left !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.has-text-left-desktop-only {
text-align: left !important; } }
@media screen and (min-width: 1280px) {
.has-text-left-widescreen {
text-align: left !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.has-text-left-widescreen-only {
text-align: left !important; } }
@media screen and (min-width: 1472px) {
.has-text-left-fullhd {
text-align: left !important; } }
@media screen and (max-width: 768px) {
.has-text-right-mobile {
text-align: right !important; } }
@media screen and (min-width: 769px), print {
.has-text-right-tablet {
text-align: right !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.has-text-right-tablet-only {
text-align: right !important; } }
@media screen and (max-width: 1087px) {
.has-text-right-touch {
text-align: right !important; } }
@media screen and (min-width: 1088px) {
.has-text-right-desktop {
text-align: right !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.has-text-right-desktop-only {
text-align: right !important; } }
@media screen and (min-width: 1280px) {
.has-text-right-widescreen {
text-align: right !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.has-text-right-widescreen-only {
text-align: right !important; } }
@media screen and (min-width: 1472px) {
.has-text-right-fullhd {
text-align: right !important; } }
.is-capitalized {
text-transform: capitalize !important; }
.is-lowercase {
text-transform: lowercase !important; }
.is-uppercase {
text-transform: uppercase !important; }
.is-italic {
font-style: italic !important; }
.has-text-white {
color: white !important; }
a.has-text-white:hover, a.has-text-white:focus {
color: #e6e6e6 !important; }
.has-background-white {
background-color: white !important; }
.has-text-black {
color: #0a0a0a !important; }
a.has-text-black:hover, a.has-text-black:focus {
color: black !important; }
.has-background-black {
background-color: #0a0a0a !important; }
.has-text-light {
color: whitesmoke !important; }
a.has-text-light:hover, a.has-text-light:focus {
color: #dbdbdb !important; }
.has-background-light {
background-color: whitesmoke !important; }
.has-text-dark {
color: #363636 !important; }
a.has-text-dark:hover, a.has-text-dark:focus {
color: #1c1c1c !important; }
.has-background-dark {
background-color: #363636 !important; }
.has-text-primary {
color: #00d1b2 !important; }
a.has-text-primary:hover, a.has-text-primary:focus {
color: #009e86 !important; }
.has-background-primary {
background-color: #00d1b2 !important; }
.has-text-link {
color: #3273dc !important; }
a.has-text-link:hover, a.has-text-link:focus {
color: #205bbc !important; }
.has-background-link {
background-color: #3273dc !important; }
.has-text-info {
color: #209cee !important; }
a.has-text-info:hover, a.has-text-info:focus {
color: #0f81cc !important; }
.has-background-info {
background-color: #209cee !important; }
.has-text-success {
color: #23d160 !important; }
a.has-text-success:hover, a.has-text-success:focus {
color: #1ca64c !important; }
.has-background-success {
background-color: #23d160 !important; }
.has-text-warning {
color: #ffdd57 !important; }
a.has-text-warning:hover, a.has-text-warning:focus {
color: #ffd324 !important; }
.has-background-warning {
background-color: #ffdd57 !important; }
.has-text-danger {
color: #ff3860 !important; }
a.has-text-danger:hover, a.has-text-danger:focus {
color: #ff0537 !important; }
.has-background-danger {
background-color: #ff3860 !important; }
.has-text-black-bis {
color: #121212 !important; }
.has-background-black-bis {
background-color: #121212 !important; }
.has-text-black-ter {
color: #242424 !important; }
.has-background-black-ter {
background-color: #242424 !important; }
.has-text-grey-darker {
color: #363636 !important; }
.has-background-grey-darker {
background-color: #363636 !important; }
.has-text-grey-dark {
color: #4a4a4a !important; }
.has-background-grey-dark {
background-color: #4a4a4a !important; }
.has-text-grey {
color: #7a7a7a !important; }
.has-background-grey {
background-color: #7a7a7a !important; }
.has-text-grey-light {
color: #b5b5b5 !important; }
.has-background-grey-light {
background-color: #b5b5b5 !important; }
.has-text-grey-lighter {
color: #dbdbdb !important; }
.has-background-grey-lighter {
background-color: #dbdbdb !important; }
.has-text-white-ter {
color: whitesmoke !important; }
.has-background-white-ter {
background-color: whitesmoke !important; }
.has-text-white-bis {
color: #fafafa !important; }
.has-background-white-bis {
background-color: #fafafa !important; }
.has-text-weight-light {
font-weight: 300 !important; }
.has-text-weight-normal {
font-weight: 400 !important; }
.has-text-weight-semibold {
font-weight: 600 !important; }
.has-text-weight-bold {
font-weight: 700 !important; }
.is-block {
display: block !important; }
@media screen and (max-width: 768px) {
.is-block-mobile {
display: block !important; } }
@media screen and (min-width: 769px), print {
.is-block-tablet {
display: block !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-block-tablet-only {
display: block !important; } }
@media screen and (max-width: 1087px) {
.is-block-touch {
display: block !important; } }
@media screen and (min-width: 1088px) {
.is-block-desktop {
display: block !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-block-desktop-only {
display: block !important; } }
@media screen and (min-width: 1280px) {
.is-block-widescreen {
display: block !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-block-widescreen-only {
display: block !important; } }
@media screen and (min-width: 1472px) {
.is-block-fullhd {
display: block !important; } }
.is-flex {
display: flex !important; }
@media screen and (max-width: 768px) {
.is-flex-mobile {
display: flex !important; } }
@media screen and (min-width: 769px), print {
.is-flex-tablet {
display: flex !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-flex-tablet-only {
display: flex !important; } }
@media screen and (max-width: 1087px) {
.is-flex-touch {
display: flex !important; } }
@media screen and (min-width: 1088px) {
.is-flex-desktop {
display: flex !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-flex-desktop-only {
display: flex !important; } }
@media screen and (min-width: 1280px) {
.is-flex-widescreen {
display: flex !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-flex-widescreen-only {
display: flex !important; } }
@media screen and (min-width: 1472px) {
.is-flex-fullhd {
display: flex !important; } }
.is-inline {
display: inline !important; }
@media screen and (max-width: 768px) {
.is-inline-mobile {
display: inline !important; } }
@media screen and (min-width: 769px), print {
.is-inline-tablet {
display: inline !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-inline-tablet-only {
display: inline !important; } }
@media screen and (max-width: 1087px) {
.is-inline-touch {
display: inline !important; } }
@media screen and (min-width: 1088px) {
.is-inline-desktop {
display: inline !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-inline-desktop-only {
display: inline !important; } }
@media screen and (min-width: 1280px) {
.is-inline-widescreen {
display: inline !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-inline-widescreen-only {
display: inline !important; } }
@media screen and (min-width: 1472px) {
.is-inline-fullhd {
display: inline !important; } }
.is-inline-block {
display: inline-block !important; }
@media screen and (max-width: 768px) {
.is-inline-block-mobile {
display: inline-block !important; } }
@media screen and (min-width: 769px), print {
.is-inline-block-tablet {
display: inline-block !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-inline-block-tablet-only {
display: inline-block !important; } }
@media screen and (max-width: 1087px) {
.is-inline-block-touch {
display: inline-block !important; } }
@media screen and (min-width: 1088px) {
.is-inline-block-desktop {
display: inline-block !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-inline-block-desktop-only {
display: inline-block !important; } }
@media screen and (min-width: 1280px) {
.is-inline-block-widescreen {
display: inline-block !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-inline-block-widescreen-only {
display: inline-block !important; } }
@media screen and (min-width: 1472px) {
.is-inline-block-fullhd {
display: inline-block !important; } }
.is-inline-flex {
display: inline-flex !important; }
@media screen and (max-width: 768px) {
.is-inline-flex-mobile {
display: inline-flex !important; } }
@media screen and (min-width: 769px), print {
.is-inline-flex-tablet {
display: inline-flex !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-inline-flex-tablet-only {
display: inline-flex !important; } }
@media screen and (max-width: 1087px) {
.is-inline-flex-touch {
display: inline-flex !important; } }
@media screen and (min-width: 1088px) {
.is-inline-flex-desktop {
display: inline-flex !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-inline-flex-desktop-only {
display: inline-flex !important; } }
@media screen and (min-width: 1280px) {
.is-inline-flex-widescreen {
display: inline-flex !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-inline-flex-widescreen-only {
display: inline-flex !important; } }
@media screen and (min-width: 1472px) {
.is-inline-flex-fullhd {
display: inline-flex !important; } }
.is-hidden {
display: none !important; }
.is-sr-only {
border: none !important;
clip: rect(0, 0, 0, 0) !important;
height: 0.01em !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
white-space: nowrap !important;
width: 0.01em !important; }
@media screen and (max-width: 768px) {
.is-hidden-mobile {
display: none !important; } }
@media screen and (min-width: 769px), print {
.is-hidden-tablet {
display: none !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-hidden-tablet-only {
display: none !important; } }
@media screen and (max-width: 1087px) {
.is-hidden-touch {
display: none !important; } }
@media screen and (min-width: 1088px) {
.is-hidden-desktop {
display: none !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-hidden-desktop-only {
display: none !important; } }
@media screen and (min-width: 1280px) {
.is-hidden-widescreen {
display: none !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-hidden-widescreen-only {
display: none !important; } }
@media screen and (min-width: 1472px) {
.is-hidden-fullhd {
display: none !important; } }
.is-invisible {
visibility: hidden !important; }
@media screen and (max-width: 768px) {
.is-invisible-mobile {
visibility: hidden !important; } }
@media screen and (min-width: 769px), print {
.is-invisible-tablet {
visibility: hidden !important; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.is-invisible-tablet-only {
visibility: hidden !important; } }
@media screen and (max-width: 1087px) {
.is-invisible-touch {
visibility: hidden !important; } }
@media screen and (min-width: 1088px) {
.is-invisible-desktop {
visibility: hidden !important; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.is-invisible-desktop-only {
visibility: hidden !important; } }
@media screen and (min-width: 1280px) {
.is-invisible-widescreen {
visibility: hidden !important; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.is-invisible-widescreen-only {
visibility: hidden !important; } }
@media screen and (min-width: 1472px) {
.is-invisible-fullhd {
visibility: hidden !important; } }
.is-marginless {
margin: 0 !important; }
.is-paddingless {
padding: 0 !important; }
.is-radiusless {
border-radius: 0 !important; }
.is-shadowless {
box-shadow: none !important; }
.box {
background-color: white;
border-radius: 6px;
box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
color: #4a4a4a;
display: block;
padding: 1.25rem; }
a.box:hover, a.box:focus {
box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #3273dc; }
a.box:active {
box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #3273dc; }
.button {
background-color: white;
border-color: #dbdbdb;
border-width: 1px;
color: #363636;
cursor: pointer;
justify-content: center;
padding-bottom: calc(0.375em - 1px);
padding-left: 0.75em;
padding-right: 0.75em;
padding-top: calc(0.375em - 1px);
text-align: center;
white-space: nowrap; }
.button strong {
color: inherit; }
.button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large {
height: 1.5em;
width: 1.5em; }
.button .icon:first-child:not(:last-child) {
margin-left: calc(-0.375em - 1px);
margin-right: 0.1875em; }
.button .icon:last-child:not(:first-child) {
margin-left: 0.1875em;
margin-right: calc(-0.375em - 1px); }
.button .icon:first-child:last-child {
margin-left: calc(-0.375em - 1px);
margin-right: calc(-0.375em - 1px); }
.button:hover, .button.is-hovered {
border-color: #b5b5b5;
color: #363636; }
.button:focus, .button.is-focused {
border-color: #3273dc;
color: #363636; }
.button:focus:not(:active), .button.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.button:active, .button.is-active {
border-color: #4a4a4a;
color: #363636; }
.button.is-text {
background-color: transparent;
border-color: transparent;
color: #4a4a4a;
text-decoration: underline; }
.button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused {
background-color: whitesmoke;
color: #363636; }
.button.is-text:active, .button.is-text.is-active {
background-color: #e8e8e8;
color: #363636; }
.button.is-text[disabled] {
background-color: transparent;
border-color: transparent;
box-shadow: none; }
.button.is-white {
background-color: white;
border-color: transparent;
color: #0a0a0a; }
.button.is-white:hover, .button.is-white.is-hovered {
background-color: #f9f9f9;
border-color: transparent;
color: #0a0a0a; }
.button.is-white:focus, .button.is-white.is-focused {
border-color: transparent;
color: #0a0a0a; }
.button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
.button.is-white:active, .button.is-white.is-active {
background-color: #f2f2f2;
border-color: transparent;
color: #0a0a0a; }
.button.is-white[disabled] {
background-color: white;
border-color: transparent;
box-shadow: none; }
.button.is-white.is-inverted {
background-color: #0a0a0a;
color: white; }
.button.is-white.is-inverted:hover {
background-color: black; }
.button.is-white.is-inverted[disabled] {
background-color: #0a0a0a;
border-color: transparent;
box-shadow: none;
color: white; }
.button.is-white.is-loading::after {
border-color: transparent transparent #0a0a0a #0a0a0a !important; }
.button.is-white.is-outlined {
background-color: transparent;
border-color: white;
color: white; }
.button.is-white.is-outlined:hover, .button.is-white.is-outlined:focus {
background-color: white;
border-color: white;
color: #0a0a0a; }
.button.is-white.is-outlined.is-loading::after {
border-color: transparent transparent white white !important; }
.button.is-white.is-outlined[disabled] {
background-color: transparent;
border-color: white;
box-shadow: none;
color: white; }
.button.is-white.is-inverted.is-outlined {
background-color: transparent;
border-color: #0a0a0a;
color: #0a0a0a; }
.button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined:focus {
background-color: #0a0a0a;
color: white; }
.button.is-white.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #0a0a0a;
box-shadow: none;
color: #0a0a0a; }
.button.is-black {
background-color: #0a0a0a;
border-color: transparent;
color: white; }
.button.is-black:hover, .button.is-black.is-hovered {
background-color: #040404;
border-color: transparent;
color: white; }
.button.is-black:focus, .button.is-black.is-focused {
border-color: transparent;
color: white; }
.button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
.button.is-black:active, .button.is-black.is-active {
background-color: black;
border-color: transparent;
color: white; }
.button.is-black[disabled] {
background-color: #0a0a0a;
border-color: transparent;
box-shadow: none; }
.button.is-black.is-inverted {
background-color: white;
color: #0a0a0a; }
.button.is-black.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-black.is-inverted[disabled] {
background-color: white;
border-color: transparent;
box-shadow: none;
color: #0a0a0a; }
.button.is-black.is-loading::after {
border-color: transparent transparent white white !important; }
.button.is-black.is-outlined {
background-color: transparent;
border-color: #0a0a0a;
color: #0a0a0a; }
.button.is-black.is-outlined:hover, .button.is-black.is-outlined:focus {
background-color: #0a0a0a;
border-color: #0a0a0a;
color: white; }
.button.is-black.is-outlined.is-loading::after {
border-color: transparent transparent #0a0a0a #0a0a0a !important; }
.button.is-black.is-outlined[disabled] {
background-color: transparent;
border-color: #0a0a0a;
box-shadow: none;
color: #0a0a0a; }
.button.is-black.is-inverted.is-outlined {
background-color: transparent;
border-color: white;
color: white; }
.button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined:focus {
background-color: white;
color: #0a0a0a; }
.button.is-black.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: white;
box-shadow: none;
color: white; }
.button.is-light {
background-color: whitesmoke;
border-color: transparent;
color: #363636; }
.button.is-light:hover, .button.is-light.is-hovered {
background-color: #eeeeee;
border-color: transparent;
color: #363636; }
.button.is-light:focus, .button.is-light.is-focused {
border-color: transparent;
color: #363636; }
.button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
.button.is-light:active, .button.is-light.is-active {
background-color: #e8e8e8;
border-color: transparent;
color: #363636; }
.button.is-light[disabled] {
background-color: whitesmoke;
border-color: transparent;
box-shadow: none; }
.button.is-light.is-inverted {
background-color: #363636;
color: whitesmoke; }
.button.is-light.is-inverted:hover {
background-color: #292929; }
.button.is-light.is-inverted[disabled] {
background-color: #363636;
border-color: transparent;
box-shadow: none;
color: whitesmoke; }
.button.is-light.is-loading::after {
border-color: transparent transparent #363636 #363636 !important; }
.button.is-light.is-outlined {
background-color: transparent;
border-color: whitesmoke;
color: whitesmoke; }
.button.is-light.is-outlined:hover, .button.is-light.is-outlined:focus {
background-color: whitesmoke;
border-color: whitesmoke;
color: #363636; }
.button.is-light.is-outlined.is-loading::after {
border-color: transparent transparent whitesmoke whitesmoke !important; }
.button.is-light.is-outlined[disabled] {
background-color: transparent;
border-color: whitesmoke;
box-shadow: none;
color: whitesmoke; }
.button.is-light.is-inverted.is-outlined {
background-color: transparent;
border-color: #363636;
color: #363636; }
.button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined:focus {
background-color: #363636;
color: whitesmoke; }
.button.is-light.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #363636;
box-shadow: none;
color: #363636; }
.button.is-dark {
background-color: #363636;
border-color: transparent;
color: whitesmoke; }
.button.is-dark:hover, .button.is-dark.is-hovered {
background-color: #2f2f2f;
border-color: transparent;
color: whitesmoke; }
.button.is-dark:focus, .button.is-dark.is-focused {
border-color: transparent;
color: whitesmoke; }
.button.is-dark:focus:not(:active), .button.is-dark.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
.button.is-dark:active, .button.is-dark.is-active {
background-color: #292929;
border-color: transparent;
color: whitesmoke; }
.button.is-dark[disabled] {
background-color: #363636;
border-color: transparent;
box-shadow: none; }
.button.is-dark.is-inverted {
background-color: whitesmoke;
color: #363636; }
.button.is-dark.is-inverted:hover {
background-color: #e8e8e8; }
.button.is-dark.is-inverted[disabled] {
background-color: whitesmoke;
border-color: transparent;
box-shadow: none;
color: #363636; }
.button.is-dark.is-loading::after {
border-color: transparent transparent whitesmoke whitesmoke !important; }
.button.is-dark.is-outlined {
background-color: transparent;
border-color: #363636;
color: #363636; }
.button.is-dark.is-outlined:hover, .button.is-dark.is-outlined:focus {
background-color: #363636;
border-color: #363636;
color: whitesmoke; }
.button.is-dark.is-outlined.is-loading::after {
border-color: transparent transparent #363636 #363636 !important; }
.button.is-dark.is-outlined[disabled] {
background-color: transparent;
border-color: #363636;
box-shadow: none;
color: #363636; }
.button.is-dark.is-inverted.is-outlined {
background-color: transparent;
border-color: whitesmoke;
color: whitesmoke; }
.button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined:focus {
background-color: whitesmoke;
color: #363636; }
.button.is-dark.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: whitesmoke;
box-shadow: none;
color: whitesmoke; }
.button.is-primary {
background-color: #00d1b2;
border-color: transparent;
color: #fff; }
.button.is-primary:hover, .button.is-primary.is-hovered {
background-color: #00c4a7;
border-color: transparent;
color: #fff; }
.button.is-primary:focus, .button.is-primary.is-focused {
border-color: transparent;
color: #fff; }
.button.is-primary:focus:not(:active), .button.is-primary.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); }
.button.is-primary:active, .button.is-primary.is-active {
background-color: #00b89c;
border-color: transparent;
color: #fff; }
.button.is-primary[disabled] {
background-color: #00d1b2;
border-color: transparent;
box-shadow: none; }
.button.is-primary.is-inverted {
background-color: #fff;
color: #00d1b2; }
.button.is-primary.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-primary.is-inverted[disabled] {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #00d1b2; }
.button.is-primary.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-primary.is-outlined {
background-color: transparent;
border-color: #00d1b2;
color: #00d1b2; }
.button.is-primary.is-outlined:hover, .button.is-primary.is-outlined:focus {
background-color: #00d1b2;
border-color: #00d1b2;
color: #fff; }
.button.is-primary.is-outlined.is-loading::after {
border-color: transparent transparent #00d1b2 #00d1b2 !important; }
.button.is-primary.is-outlined[disabled] {
background-color: transparent;
border-color: #00d1b2;
box-shadow: none;
color: #00d1b2; }
.button.is-primary.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined:focus {
background-color: #fff;
color: #00d1b2; }
.button.is-primary.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #fff;
box-shadow: none;
color: #fff; }
.button.is-link {
background-color: #3273dc;
border-color: transparent;
color: #fff; }
.button.is-link:hover, .button.is-link.is-hovered {
background-color: #276cda;
border-color: transparent;
color: #fff; }
.button.is-link:focus, .button.is-link.is-focused {
border-color: transparent;
color: #fff; }
.button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.button.is-link:active, .button.is-link.is-active {
background-color: #2366d1;
border-color: transparent;
color: #fff; }
.button.is-link[disabled] {
background-color: #3273dc;
border-color: transparent;
box-shadow: none; }
.button.is-link.is-inverted {
background-color: #fff;
color: #3273dc; }
.button.is-link.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-link.is-inverted[disabled] {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #3273dc; }
.button.is-link.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-link.is-outlined {
background-color: transparent;
border-color: #3273dc;
color: #3273dc; }
.button.is-link.is-outlined:hover, .button.is-link.is-outlined:focus {
background-color: #3273dc;
border-color: #3273dc;
color: #fff; }
.button.is-link.is-outlined.is-loading::after {
border-color: transparent transparent #3273dc #3273dc !important; }
.button.is-link.is-outlined[disabled] {
background-color: transparent;
border-color: #3273dc;
box-shadow: none;
color: #3273dc; }
.button.is-link.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined:focus {
background-color: #fff;
color: #3273dc; }
.button.is-link.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #fff;
box-shadow: none;
color: #fff; }
.button.is-info {
background-color: #209cee;
border-color: transparent;
color: #fff; }
.button.is-info:hover, .button.is-info.is-hovered {
background-color: #1496ed;
border-color: transparent;
color: #fff; }
.button.is-info:focus, .button.is-info.is-focused {
border-color: transparent;
color: #fff; }
.button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); }
.button.is-info:active, .button.is-info.is-active {
background-color: #118fe4;
border-color: transparent;
color: #fff; }
.button.is-info[disabled] {
background-color: #209cee;
border-color: transparent;
box-shadow: none; }
.button.is-info.is-inverted {
background-color: #fff;
color: #209cee; }
.button.is-info.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-info.is-inverted[disabled] {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #209cee; }
.button.is-info.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-info.is-outlined {
background-color: transparent;
border-color: #209cee;
color: #209cee; }
.button.is-info.is-outlined:hover, .button.is-info.is-outlined:focus {
background-color: #209cee;
border-color: #209cee;
color: #fff; }
.button.is-info.is-outlined.is-loading::after {
border-color: transparent transparent #209cee #209cee !important; }
.button.is-info.is-outlined[disabled] {
background-color: transparent;
border-color: #209cee;
box-shadow: none;
color: #209cee; }
.button.is-info.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined:focus {
background-color: #fff;
color: #209cee; }
.button.is-info.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #fff;
box-shadow: none;
color: #fff; }
.button.is-success {
background-color: #23d160;
border-color: transparent;
color: #fff; }
.button.is-success:hover, .button.is-success.is-hovered {
background-color: #22c65b;
border-color: transparent;
color: #fff; }
.button.is-success:focus, .button.is-success.is-focused {
border-color: transparent;
color: #fff; }
.button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(35, 209, 96, 0.25); }
.button.is-success:active, .button.is-success.is-active {
background-color: #20bc56;
border-color: transparent;
color: #fff; }
.button.is-success[disabled] {
background-color: #23d160;
border-color: transparent;
box-shadow: none; }
.button.is-success.is-inverted {
background-color: #fff;
color: #23d160; }
.button.is-success.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-success.is-inverted[disabled] {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #23d160; }
.button.is-success.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-success.is-outlined {
background-color: transparent;
border-color: #23d160;
color: #23d160; }
.button.is-success.is-outlined:hover, .button.is-success.is-outlined:focus {
background-color: #23d160;
border-color: #23d160;
color: #fff; }
.button.is-success.is-outlined.is-loading::after {
border-color: transparent transparent #23d160 #23d160 !important; }
.button.is-success.is-outlined[disabled] {
background-color: transparent;
border-color: #23d160;
box-shadow: none;
color: #23d160; }
.button.is-success.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined:focus {
background-color: #fff;
color: #23d160; }
.button.is-success.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #fff;
box-shadow: none;
color: #fff; }
.button.is-warning {
background-color: #ffdd57;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.button.is-warning:hover, .button.is-warning.is-hovered {
background-color: #ffdb4a;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.button.is-warning:focus, .button.is-warning.is-focused {
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }
.button.is-warning:active, .button.is-warning.is-active {
background-color: #ffd83d;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.button.is-warning[disabled] {
background-color: #ffdd57;
border-color: transparent;
box-shadow: none; }
.button.is-warning.is-inverted {
background-color: rgba(0, 0, 0, 0.7);
color: #ffdd57; }
.button.is-warning.is-inverted:hover {
background-color: rgba(0, 0, 0, 0.7); }
.button.is-warning.is-inverted[disabled] {
background-color: rgba(0, 0, 0, 0.7);
border-color: transparent;
box-shadow: none;
color: #ffdd57; }
.button.is-warning.is-loading::after {
border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }
.button.is-warning.is-outlined {
background-color: transparent;
border-color: #ffdd57;
color: #ffdd57; }
.button.is-warning.is-outlined:hover, .button.is-warning.is-outlined:focus {
background-color: #ffdd57;
border-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.button.is-warning.is-outlined.is-loading::after {
border-color: transparent transparent #ffdd57 #ffdd57 !important; }
.button.is-warning.is-outlined[disabled] {
background-color: transparent;
border-color: #ffdd57;
box-shadow: none;
color: #ffdd57; }
.button.is-warning.is-inverted.is-outlined {
background-color: transparent;
border-color: rgba(0, 0, 0, 0.7);
color: rgba(0, 0, 0, 0.7); }
.button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined:focus {
background-color: rgba(0, 0, 0, 0.7);
color: #ffdd57; }
.button.is-warning.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: rgba(0, 0, 0, 0.7);
box-shadow: none;
color: rgba(0, 0, 0, 0.7); }
.button.is-danger {
background-color: #ff3860;
border-color: transparent;
color: #fff; }
.button.is-danger:hover, .button.is-danger.is-hovered {
background-color: #ff2b56;
border-color: transparent;
color: #fff; }
.button.is-danger:focus, .button.is-danger.is-focused {
border-color: transparent;
color: #fff; }
.button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) {
box-shadow: 0 0 0 0.125em rgba(255, 56, 96, 0.25); }
.button.is-danger:active, .button.is-danger.is-active {
background-color: #ff1f4b;
border-color: transparent;
color: #fff; }
.button.is-danger[disabled] {
background-color: #ff3860;
border-color: transparent;
box-shadow: none; }
.button.is-danger.is-inverted {
background-color: #fff;
color: #ff3860; }
.button.is-danger.is-inverted:hover {
background-color: #f2f2f2; }
.button.is-danger.is-inverted[disabled] {
background-color: #fff;
border-color: transparent;
box-shadow: none;
color: #ff3860; }
.button.is-danger.is-loading::after {
border-color: transparent transparent #fff #fff !important; }
.button.is-danger.is-outlined {
background-color: transparent;
border-color: #ff3860;
color: #ff3860; }
.button.is-danger.is-outlined:hover, .button.is-danger.is-outlined:focus {
background-color: #ff3860;
border-color: #ff3860;
color: #fff; }
.button.is-danger.is-outlined.is-loading::after {
border-color: transparent transparent #ff3860 #ff3860 !important; }
.button.is-danger.is-outlined[disabled] {
background-color: transparent;
border-color: #ff3860;
box-shadow: none;
color: #ff3860; }
.button.is-danger.is-inverted.is-outlined {
background-color: transparent;
border-color: #fff;
color: #fff; }
.button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined:focus {
background-color: #fff;
color: #ff3860; }
.button.is-danger.is-inverted.is-outlined[disabled] {
background-color: transparent;
border-color: #fff;
box-shadow: none;
color: #fff; }
.button.is-small {
border-radius: 2px;
font-size: 0.75rem; }
.button.is-medium {
font-size: 1.25rem; }
.button.is-large {
font-size: 1.5rem; }
.button[disabled] {
background-color: white;
border-color: #dbdbdb;
box-shadow: none;
opacity: 0.5; }
.button.is-fullwidth {
display: flex;
width: 100%; }
.button.is-loading {
color: transparent !important;
pointer-events: none; }
.button.is-loading::after {
position: absolute;
left: calc(50% - (1em / 2));
top: calc(50% - (1em / 2));
position: absolute !important; }
.button.is-static {
background-color: whitesmoke;
border-color: #dbdbdb;
color: #7a7a7a;
box-shadow: none;
pointer-events: none; }
.button.is-rounded {
border-radius: 290486px;
padding-left: 1em;
padding-right: 1em; }
.buttons {
align-items: center;
display: flex;
flex-wrap: wrap;
justify-content: flex-start; }
.buttons .button {
margin-bottom: 0.5rem; }
.buttons .button:not(:last-child):not(.is-fullwidth) {
margin-right: 0.5rem; }
.buttons:last-child {
margin-bottom: -0.5rem; }
.buttons:not(:last-child) {
margin-bottom: 1rem; }
.buttons.has-addons .button:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0; }
.buttons.has-addons .button:not(:last-child) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
margin-right: -1px; }
.buttons.has-addons .button:last-child {
margin-right: 0; }
.buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered {
z-index: 2; }
.buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected {
z-index: 3; }
.buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover {
z-index: 4; }
.buttons.has-addons .button.is-expanded {
flex-grow: 1; }
.buttons.is-centered {
justify-content: center; }
.buttons.is-right {
justify-content: flex-end; }
.container {
margin: 0 auto;
position: relative; }
@media screen and (min-width: 1088px) {
.container {
max-width: 960px;
width: 960px; }
.container.is-fluid {
margin-left: 64px;
margin-right: 64px;
max-width: none;
width: auto; } }
@media screen and (max-width: 1279px) {
.container.is-widescreen {
max-width: 1152px;
width: auto; } }
@media screen and (max-width: 1471px) {
.container.is-fullhd {
max-width: 1344px;
width: auto; } }
@media screen and (min-width: 1280px) {
.container {
max-width: 1152px;
width: 1152px; } }
@media screen and (min-width: 1472px) {
.container {
max-width: 1344px;
width: 1344px; } }
.content li + li {
margin-top: 0.25em; }
.content p:not(:last-child),
.content dl:not(:last-child),
.content ol:not(:last-child),
.content ul:not(:last-child),
.content blockquote:not(:last-child),
.content pre:not(:last-child),
.content table:not(:last-child) {
margin-bottom: 1em; }
.content h1,
.content h2,
.content h3,
.content h4,
.content h5,
.content h6 {
color: #363636;
font-weight: 600;
line-height: 1.125; }
.content h1 {
font-size: 2em;
margin-bottom: 0.5em; }
.content h1:not(:first-child) {
margin-top: 1em; }
.content h2 {
font-size: 1.75em;
margin-bottom: 0.5714em; }
.content h2:not(:first-child) {
margin-top: 1.1428em; }
.content h3 {
font-size: 1.5em;
margin-bottom: 0.6666em; }
.content h3:not(:first-child) {
margin-top: 1.3333em; }
.content h4 {
font-size: 1.25em;
margin-bottom: 0.8em; }
.content h5 {
font-size: 1.125em;
margin-bottom: 0.8888em; }
.content h6 {
font-size: 1em;
margin-bottom: 1em; }
.content blockquote {
background-color: whitesmoke;
border-left: 5px solid #dbdbdb;
padding: 1.25em 1.5em; }
.content ol {
list-style-position: outside;
margin-left: 2em;
margin-top: 1em; }
.content ol:not([type]) {
list-style-type: decimal; }
.content ol:not([type]).is-lower-alpha {
list-style-type: lower-alpha; }
.content ol:not([type]).is-lower-roman {
list-style-type: lower-roman; }
.content ol:not([type]).is-upper-alpha {
list-style-type: upper-alpha; }
.content ol:not([type]).is-upper-roman {
list-style-type: upper-roman; }
.content ul {
list-style: disc outside;
margin-left: 2em;
margin-top: 1em; }
.content ul ul {
list-style-type: circle;
margin-top: 0.5em; }
.content ul ul ul {
list-style-type: square; }
.content dd {
margin-left: 2em; }
.content figure {
margin-left: 2em;
margin-right: 2em;
text-align: center; }
.content figure:not(:first-child) {
margin-top: 2em; }
.content figure:not(:last-child) {
margin-bottom: 2em; }
.content figure img {
display: inline-block; }
.content figure figcaption {
font-style: italic; }
.content pre {
-webkit-overflow-scrolling: touch;
overflow-x: auto;
padding: 1.25em 1.5em;
white-space: pre;
word-wrap: normal; }
.content sup,
.content sub {
font-size: 75%; }
.content table {
width: 100%; }
.content table td,
.content table th {
border: 1px solid #dbdbdb;
border-width: 0 0 1px;
padding: 0.5em 0.75em;
vertical-align: top; }
.content table th {
color: #363636;
text-align: left; }
.content table thead td,
.content table thead th {
border-width: 0 0 2px;
color: #363636; }
.content table tfoot td,
.content table tfoot th {
border-width: 2px 0 0;
color: #363636; }
.content table tbody tr:last-child td,
.content table tbody tr:last-child th {
border-bottom-width: 0; }
.content.is-small {
font-size: 0.75rem; }
.content.is-medium {
font-size: 1.25rem; }
.content.is-large {
font-size: 1.5rem; }
.input,
.textarea {
background-color: white;
border-color: #dbdbdb;
color: #363636;
box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
max-width: 100%;
width: 100%; }
.input::-moz-placeholder,
.textarea::-moz-placeholder {
color: rgba(54, 54, 54, 0.3); }
.input::-webkit-input-placeholder,
.textarea::-webkit-input-placeholder {
color: rgba(54, 54, 54, 0.3); }
.input:-moz-placeholder,
.textarea:-moz-placeholder {
color: rgba(54, 54, 54, 0.3); }
.input:-ms-input-placeholder,
.textarea:-ms-input-placeholder {
color: rgba(54, 54, 54, 0.3); }
.input:hover, .input.is-hovered,
.textarea:hover,
.textarea.is-hovered {
border-color: #b5b5b5; }
.input:focus, .input.is-focused, .input:active, .input.is-active,
.textarea:focus,
.textarea.is-focused,
.textarea:active,
.textarea.is-active {
border-color: #3273dc;
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.input[disabled],
.textarea[disabled] {
background-color: whitesmoke;
border-color: whitesmoke;
box-shadow: none;
color: #7a7a7a; }
.input[disabled]::-moz-placeholder,
.textarea[disabled]::-moz-placeholder {
color: rgba(122, 122, 122, 0.3); }
.input[disabled]::-webkit-input-placeholder,
.textarea[disabled]::-webkit-input-placeholder {
color: rgba(122, 122, 122, 0.3); }
.input[disabled]:-moz-placeholder,
.textarea[disabled]:-moz-placeholder {
color: rgba(122, 122, 122, 0.3); }
.input[disabled]:-ms-input-placeholder,
.textarea[disabled]:-ms-input-placeholder {
color: rgba(122, 122, 122, 0.3); }
.input[readonly],
.textarea[readonly] {
box-shadow: none; }
.input.is-white,
.textarea.is-white {
border-color: white; }
.input.is-white:focus, .input.is-white.is-focused, .input.is-white:active, .input.is-white.is-active,
.textarea.is-white:focus,
.textarea.is-white.is-focused,
.textarea.is-white:active,
.textarea.is-white.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
.input.is-black,
.textarea.is-black {
border-color: #0a0a0a; }
.input.is-black:focus, .input.is-black.is-focused, .input.is-black:active, .input.is-black.is-active,
.textarea.is-black:focus,
.textarea.is-black.is-focused,
.textarea.is-black:active,
.textarea.is-black.is-active {
box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
.input.is-light,
.textarea.is-light {
border-color: whitesmoke; }
.input.is-light:focus, .input.is-light.is-focused, .input.is-light:active, .input.is-light.is-active,
.textarea.is-light:focus,
.textarea.is-light.is-focused,
.textarea.is-light:active,
.textarea.is-light.is-active {
box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
.input.is-dark,
.textarea.is-dark {
border-color: #363636; }
.input.is-dark:focus, .input.is-dark.is-focused, .input.is-dark:active, .input.is-dark.is-active,
.textarea.is-dark:focus,
.textarea.is-dark.is-focused,
.textarea.is-dark:active,
.textarea.is-dark.is-active {
box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
.input.is-primary,
.textarea.is-primary {
border-color: #00d1b2; }
.input.is-primary:focus, .input.is-primary.is-focused, .input.is-primary:active, .input.is-primary.is-active,
.textarea.is-primary:focus,
.textarea.is-primary.is-focused,
.textarea.is-primary:active,
.textarea.is-primary.is-active {
box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); }
.input.is-link,
.textarea.is-link {
border-color: #3273dc; }
.input.is-link:focus, .input.is-link.is-focused, .input.is-link:active, .input.is-link.is-active,
.textarea.is-link:focus,
.textarea.is-link.is-focused,
.textarea.is-link:active,
.textarea.is-link.is-active {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.input.is-info,
.textarea.is-info {
border-color: #209cee; }
.input.is-info:focus, .input.is-info.is-focused, .input.is-info:active, .input.is-info.is-active,
.textarea.is-info:focus,
.textarea.is-info.is-focused,
.textarea.is-info:active,
.textarea.is-info.is-active {
box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); }
.input.is-success,
.textarea.is-success {
border-color: #23d160; }
.input.is-success:focus, .input.is-success.is-focused, .input.is-success:active, .input.is-success.is-active,
.textarea.is-success:focus,
.textarea.is-success.is-focused,
.textarea.is-success:active,
.textarea.is-success.is-active {
box-shadow: 0 0 0 0.125em rgba(35, 209, 96, 0.25); }
.input.is-warning,
.textarea.is-warning {
border-color: #ffdd57; }
.input.is-warning:focus, .input.is-warning.is-focused, .input.is-warning:active, .input.is-warning.is-active,
.textarea.is-warning:focus,
.textarea.is-warning.is-focused,
.textarea.is-warning:active,
.textarea.is-warning.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }
.input.is-danger,
.textarea.is-danger {
border-color: #ff3860; }
.input.is-danger:focus, .input.is-danger.is-focused, .input.is-danger:active, .input.is-danger.is-active,
.textarea.is-danger:focus,
.textarea.is-danger.is-focused,
.textarea.is-danger:active,
.textarea.is-danger.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 56, 96, 0.25); }
.input.is-small,
.textarea.is-small {
border-radius: 2px;
font-size: 0.75rem; }
.input.is-medium,
.textarea.is-medium {
font-size: 1.25rem; }
.input.is-large,
.textarea.is-large {
font-size: 1.5rem; }
.input.is-fullwidth,
.textarea.is-fullwidth {
display: block;
width: 100%; }
.input.is-inline,
.textarea.is-inline {
display: inline;
width: auto; }
.input.is-rounded {
border-radius: 290486px;
padding-left: 1em;
padding-right: 1em; }
.input.is-static {
background-color: transparent;
border-color: transparent;
box-shadow: none;
padding-left: 0;
padding-right: 0; }
.textarea {
display: block;
max-width: 100%;
min-width: 100%;
padding: 0.625em;
resize: vertical; }
.textarea:not([rows]) {
max-height: 600px;
min-height: 120px; }
.textarea[rows] {
height: initial; }
.textarea.has-fixed-size {
resize: none; }
.checkbox,
.radio {
cursor: pointer;
display: inline-block;
line-height: 1.25;
position: relative; }
.checkbox input,
.radio input {
cursor: pointer; }
.checkbox:hover,
.radio:hover {
color: #363636; }
.checkbox[disabled],
.radio[disabled] {
color: #7a7a7a;
cursor: not-allowed; }
.radio + .radio {
margin-left: 0.5em; }
.select {
display: inline-block;
max-width: 100%;
position: relative;
vertical-align: top; }
.select:not(.is-multiple) {
height: 2.25em; }
.select:not(.is-multiple):not(.is-loading)::after {
border-color: #3273dc;
right: 1.125em;
z-index: 4; }
.select.is-rounded select {
border-radius: 290486px;
padding-left: 1em; }
.select select {
background-color: white;
border-color: #dbdbdb;
color: #363636;
cursor: pointer;
display: block;
font-size: 1em;
max-width: 100%;
outline: none; }
.select select::-moz-placeholder {
color: rgba(54, 54, 54, 0.3); }
.select select::-webkit-input-placeholder {
color: rgba(54, 54, 54, 0.3); }
.select select:-moz-placeholder {
color: rgba(54, 54, 54, 0.3); }
.select select:-ms-input-placeholder {
color: rgba(54, 54, 54, 0.3); }
.select select:hover, .select select.is-hovered {
border-color: #b5b5b5; }
.select select:focus, .select select.is-focused, .select select:active, .select select.is-active {
border-color: #3273dc;
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.select select[disabled] {
background-color: whitesmoke;
border-color: whitesmoke;
box-shadow: none;
color: #7a7a7a; }
.select select[disabled]::-moz-placeholder {
color: rgba(122, 122, 122, 0.3); }
.select select[disabled]::-webkit-input-placeholder {
color: rgba(122, 122, 122, 0.3); }
.select select[disabled]:-moz-placeholder {
color: rgba(122, 122, 122, 0.3); }
.select select[disabled]:-ms-input-placeholder {
color: rgba(122, 122, 122, 0.3); }
.select select::-ms-expand {
display: none; }
.select select[disabled]:hover {
border-color: whitesmoke; }
.select select:not([multiple]) {
padding-right: 2.5em; }
.select select[multiple] {
height: auto;
padding: 0; }
.select select[multiple] option {
padding: 0.5em 1em; }
.select:not(.is-multiple):not(.is-loading):hover::after {
border-color: #363636; }
.select.is-white:not(:hover)::after {
border-color: white; }
.select.is-white select {
border-color: white; }
.select.is-white select:hover, .select.is-white select.is-hovered {
border-color: #f2f2f2; }
.select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
.select.is-black:not(:hover)::after {
border-color: #0a0a0a; }
.select.is-black select {
border-color: #0a0a0a; }
.select.is-black select:hover, .select.is-black select.is-hovered {
border-color: black; }
.select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active {
box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
.select.is-light:not(:hover)::after {
border-color: whitesmoke; }
.select.is-light select {
border-color: whitesmoke; }
.select.is-light select:hover, .select.is-light select.is-hovered {
border-color: #e8e8e8; }
.select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active {
box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
.select.is-dark:not(:hover)::after {
border-color: #363636; }
.select.is-dark select {
border-color: #363636; }
.select.is-dark select:hover, .select.is-dark select.is-hovered {
border-color: #292929; }
.select.is-dark select:focus, .select.is-dark select.is-focused, .select.is-dark select:active, .select.is-dark select.is-active {
box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
.select.is-primary:not(:hover)::after {
border-color: #00d1b2; }
.select.is-primary select {
border-color: #00d1b2; }
.select.is-primary select:hover, .select.is-primary select.is-hovered {
border-color: #00b89c; }
.select.is-primary select:focus, .select.is-primary select.is-focused, .select.is-primary select:active, .select.is-primary select.is-active {
box-shadow: 0 0 0 0.125em rgba(0, 209, 178, 0.25); }
.select.is-link:not(:hover)::after {
border-color: #3273dc; }
.select.is-link select {
border-color: #3273dc; }
.select.is-link select:hover, .select.is-link select.is-hovered {
border-color: #2366d1; }
.select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active {
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); }
.select.is-info:not(:hover)::after {
border-color: #209cee; }
.select.is-info select {
border-color: #209cee; }
.select.is-info select:hover, .select.is-info select.is-hovered {
border-color: #118fe4; }
.select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active {
box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); }
.select.is-success:not(:hover)::after {
border-color: #23d160; }
.select.is-success select {
border-color: #23d160; }
.select.is-success select:hover, .select.is-success select.is-hovered {
border-color: #20bc56; }
.select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active {
box-shadow: 0 0 0 0.125em rgba(35, 209, 96, 0.25); }
.select.is-warning:not(:hover)::after {
border-color: #ffdd57; }
.select.is-warning select {
border-color: #ffdd57; }
.select.is-warning select:hover, .select.is-warning select.is-hovered {
border-color: #ffd83d; }
.select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); }
.select.is-danger:not(:hover)::after {
border-color: #ff3860; }
.select.is-danger select {
border-color: #ff3860; }
.select.is-danger select:hover, .select.is-danger select.is-hovered {
border-color: #ff1f4b; }
.select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active {
box-shadow: 0 0 0 0.125em rgba(255, 56, 96, 0.25); }
.select.is-small {
border-radius: 2px;
font-size: 0.75rem; }
.select.is-medium {
font-size: 1.25rem; }
.select.is-large {
font-size: 1.5rem; }
.select.is-disabled::after {
border-color: #7a7a7a; }
.select.is-fullwidth {
width: 100%; }
.select.is-fullwidth select {
width: 100%; }
.select.is-loading::after {
margin-top: 0;
position: absolute;
right: 0.625em;
top: 0.625em;
transform: none; }
.select.is-loading.is-small:after {
font-size: 0.75rem; }
.select.is-loading.is-medium:after {
font-size: 1.25rem; }
.select.is-loading.is-large:after {
font-size: 1.5rem; }
.file {
align-items: stretch;
display: flex;
justify-content: flex-start;
position: relative; }
.file.is-white .file-cta {
background-color: white;
border-color: transparent;
color: #0a0a0a; }
.file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta {
background-color: #f9f9f9;
border-color: transparent;
color: #0a0a0a; }
.file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);
color: #0a0a0a; }
.file.is-white:active .file-cta, .file.is-white.is-active .file-cta {
background-color: #f2f2f2;
border-color: transparent;
color: #0a0a0a; }
.file.is-black .file-cta {
background-color: #0a0a0a;
border-color: transparent;
color: white; }
.file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta {
background-color: #040404;
border-color: transparent;
color: white; }
.file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);
color: white; }
.file.is-black:active .file-cta, .file.is-black.is-active .file-cta {
background-color: black;
border-color: transparent;
color: white; }
.file.is-light .file-cta {
background-color: whitesmoke;
border-color: transparent;
color: #363636; }
.file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta {
background-color: #eeeeee;
border-color: transparent;
color: #363636; }
.file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25);
color: #363636; }
.file.is-light:active .file-cta, .file.is-light.is-active .file-cta {
background-color: #e8e8e8;
border-color: transparent;
color: #363636; }
.file.is-dark .file-cta {
background-color: #363636;
border-color: transparent;
color: whitesmoke; }
.file.is-dark:hover .file-cta, .file.is-dark.is-hovered .file-cta {
background-color: #2f2f2f;
border-color: transparent;
color: whitesmoke; }
.file.is-dark:focus .file-cta, .file.is-dark.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25);
color: whitesmoke; }
.file.is-dark:active .file-cta, .file.is-dark.is-active .file-cta {
background-color: #292929;
border-color: transparent;
color: whitesmoke; }
.file.is-primary .file-cta {
background-color: #00d1b2;
border-color: transparent;
color: #fff; }
.file.is-primary:hover .file-cta, .file.is-primary.is-hovered .file-cta {
background-color: #00c4a7;
border-color: transparent;
color: #fff; }
.file.is-primary:focus .file-cta, .file.is-primary.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(0, 209, 178, 0.25);
color: #fff; }
.file.is-primary:active .file-cta, .file.is-primary.is-active .file-cta {
background-color: #00b89c;
border-color: transparent;
color: #fff; }
.file.is-link .file-cta {
background-color: #3273dc;
border-color: transparent;
color: #fff; }
.file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta {
background-color: #276cda;
border-color: transparent;
color: #fff; }
.file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(50, 115, 220, 0.25);
color: #fff; }
.file.is-link:active .file-cta, .file.is-link.is-active .file-cta {
background-color: #2366d1;
border-color: transparent;
color: #fff; }
.file.is-info .file-cta {
background-color: #209cee;
border-color: transparent;
color: #fff; }
.file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta {
background-color: #1496ed;
border-color: transparent;
color: #fff; }
.file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(32, 156, 238, 0.25);
color: #fff; }
.file.is-info:active .file-cta, .file.is-info.is-active .file-cta {
background-color: #118fe4;
border-color: transparent;
color: #fff; }
.file.is-success .file-cta {
background-color: #23d160;
border-color: transparent;
color: #fff; }
.file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta {
background-color: #22c65b;
border-color: transparent;
color: #fff; }
.file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(35, 209, 96, 0.25);
color: #fff; }
.file.is-success:active .file-cta, .file.is-success.is-active .file-cta {
background-color: #20bc56;
border-color: transparent;
color: #fff; }
.file.is-warning .file-cta {
background-color: #ffdd57;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta {
background-color: #ffdb4a;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25);
color: rgba(0, 0, 0, 0.7); }
.file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta {
background-color: #ffd83d;
border-color: transparent;
color: rgba(0, 0, 0, 0.7); }
.file.is-danger .file-cta {
background-color: #ff3860;
border-color: transparent;
color: #fff; }
.file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta {
background-color: #ff2b56;
border-color: transparent;
color: #fff; }
.file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta {
border-color: transparent;
box-shadow: 0 0 0.5em rgba(255, 56, 96, 0.25);
color: #fff; }
.file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta {
background-color: #ff1f4b;
border-color: transparent;
color: #fff; }
.file.is-small {
font-size: 0.75rem; }
.file.is-medium {
font-size: 1.25rem; }
.file.is-medium .file-icon .fa {
font-size: 21px; }
.file.is-large {
font-size: 1.5rem; }
.file.is-large .file-icon .fa {
font-size: 28px; }
.file.has-name .file-cta {
border-bottom-right-radius: 0;
border-top-right-radius: 0; }
.file.has-name .file-name {
border-bottom-left-radius: 0;
border-top-left-radius: 0; }
.file.has-name.is-empty .file-cta {
border-radius: 4px; }
.file.has-name.is-empty .file-name {
display: none; }
.file.is-boxed .file-label {
flex-direction: column; }
.file.is-boxed .file-cta {
flex-direction: column;
height: auto;
padding: 1em 3em; }
.file.is-boxed .file-name {
border-width: 0 1px 1px; }
.file.is-boxed .file-icon {
height: 1.5em;
width: 1.5em; }
.file.is-boxed .file-icon .fa {
font-size: 21px; }
.file.is-boxed.is-small .file-icon .fa {
font-size: 14px; }
.file.is-boxed.is-medium .file-icon .fa {
font-size: 28px; }
.file.is-boxed.is-large .file-icon .fa {
font-size: 35px; }
.file.is-boxed.has-name .file-cta {
border-radius: 4px 4px 0 0; }
.file.is-boxed.has-name .file-name {
border-radius: 0 0 4px 4px;
border-width: 0 1px 1px; }
.file.is-centered {
justify-content: center; }
.file.is-fullwidth .file-label {
width: 100%; }
.file.is-fullwidth .file-name {
flex-grow: 1;
max-width: none; }
.file.is-right {
justify-content: flex-end; }
.file.is-right .file-cta {
border-radius: 0 4px 4px 0; }
.file.is-right .file-name {
border-radius: 4px 0 0 4px;
border-width: 1px 0 1px 1px;
order: -1; }
.file-label {
align-items: stretch;
display: flex;
cursor: pointer;
justify-content: flex-start;
overflow: hidden;
position: relative; }
.file-label:hover .file-cta {
background-color: #eeeeee;
color: #363636; }
.file-label:hover .file-name {
border-color: #d5d5d5; }
.file-label:active .file-cta {
background-color: #e8e8e8;
color: #363636; }
.file-label:active .file-name {
border-color: #cfcfcf; }
.file-input {
height: 100%;
left: 0;
opacity: 0;
outline: none;
position: absolute;
top: 0;
width: 100%; }
.file-cta,
.file-name {
border-color: #dbdbdb;
border-radius: 4px;
font-size: 1em;
padding-left: 1em;
padding-right: 1em;
white-space: nowrap; }
.file-cta {
background-color: whitesmoke;
color: #4a4a4a; }
.file-name {
border-color: #dbdbdb;
border-style: solid;
border-width: 1px 1px 1px 0;
display: block;
max-width: 16em;
overflow: hidden;
text-align: left;
text-overflow: ellipsis; }
.file-icon {
align-items: center;
display: flex;
height: 1em;
justify-content: center;
margin-right: 0.5em;
width: 1em; }
.file-icon .fa {
font-size: 14px; }
.label {
color: #363636;
display: block;
font-size: 1rem;
font-weight: 700; }
.label:not(:last-child) {
margin-bottom: 0.5em; }
.label.is-small {
font-size: 0.75rem; }
.label.is-medium {
font-size: 1.25rem; }
.label.is-large {
font-size: 1.5rem; }
.help {
display: block;
font-size: 0.75rem;
margin-top: 0.25rem; }
.help.is-white {
color: white; }
.help.is-black {
color: #0a0a0a; }
.help.is-light {
color: whitesmoke; }
.help.is-dark {
color: #363636; }
.help.is-primary {
color: #00d1b2; }
.help.is-link {
color: #3273dc; }
.help.is-info {
color: #209cee; }
.help.is-success {
color: #23d160; }
.help.is-warning {
color: #ffdd57; }
.help.is-danger {
color: #ff3860; }
.field:not(:last-child) {
margin-bottom: 0.75rem; }
.field.has-addons {
display: flex;
justify-content: flex-start; }
.field.has-addons .control:not(:last-child) {
margin-right: -1px; }
.field.has-addons .control:not(:first-child):not(:last-child) .button,
.field.has-addons .control:not(:first-child):not(:last-child) .input,
.field.has-addons .control:not(:first-child):not(:last-child) .select select {
border-radius: 0; }
.field.has-addons .control:first-child .button,
.field.has-addons .control:first-child .input,
.field.has-addons .control:first-child .select select {
border-bottom-right-radius: 0;
border-top-right-radius: 0; }
.field.has-addons .control:last-child .button,
.field.has-addons .control:last-child .input,
.field.has-addons .control:last-child .select select {
border-bottom-left-radius: 0;
border-top-left-radius: 0; }
.field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered,
.field.has-addons .control .input:not([disabled]):hover,
.field.has-addons .control .input:not([disabled]).is-hovered,
.field.has-addons .control .select select:not([disabled]):hover,
.field.has-addons .control .select select:not([disabled]).is-hovered {
z-index: 2; }
.field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active,
.field.has-addons .control .input:not([disabled]):focus,
.field.has-addons .control .input:not([disabled]).is-focused,
.field.has-addons .control .input:not([disabled]):active,
.field.has-addons .control .input:not([disabled]).is-active,
.field.has-addons .control .select select:not([disabled]):focus,
.field.has-addons .control .select select:not([disabled]).is-focused,
.field.has-addons .control .select select:not([disabled]):active,
.field.has-addons .control .select select:not([disabled]).is-active {
z-index: 3; }
.field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover,
.field.has-addons .control .input:not([disabled]):focus:hover,
.field.has-addons .control .input:not([disabled]).is-focused:hover,
.field.has-addons .control .input:not([disabled]):active:hover,
.field.has-addons .control .input:not([disabled]).is-active:hover,
.field.has-addons .control .select select:not([disabled]):focus:hover,
.field.has-addons .control .select select:not([disabled]).is-focused:hover,
.field.has-addons .control .select select:not([disabled]):active:hover,
.field.has-addons .control .select select:not([disabled]).is-active:hover {
z-index: 4; }
.field.has-addons .control.is-expanded {
flex-grow: 1; }
.field.has-addons.has-addons-centered {
justify-content: center; }
.field.has-addons.has-addons-right {
justify-content: flex-end; }
.field.has-addons.has-addons-fullwidth .control {
flex-grow: 1;
flex-shrink: 0; }
.field.is-grouped {
display: flex;
justify-content: flex-start; }
.field.is-grouped > .control {
flex-shrink: 0; }
.field.is-grouped > .control:not(:last-child) {
margin-bottom: 0;
margin-right: 0.75rem; }
.field.is-grouped > .control.is-expanded {
flex-grow: 1;
flex-shrink: 1; }
.field.is-grouped.is-grouped-centered {
justify-content: center; }
.field.is-grouped.is-grouped-right {
justify-content: flex-end; }
.field.is-grouped.is-grouped-multiline {
flex-wrap: wrap; }
.field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {
margin-bottom: 0.75rem; }
.field.is-grouped.is-grouped-multiline:last-child {
margin-bottom: -0.75rem; }
.field.is-grouped.is-grouped-multiline:not(:last-child) {
margin-bottom: 0; }
@media screen and (min-width: 769px), print {
.field.is-horizontal {
display: flex; } }
.field-label .label {
font-size: inherit; }
@media screen and (max-width: 768px) {
.field-label {
margin-bottom: 0.5rem; } }
@media screen and (min-width: 769px), print {
.field-label {
flex-basis: 0;
flex-grow: 1;
flex-shrink: 0;
margin-right: 1.5rem;
text-align: right; }
.field-label.is-small {
font-size: 0.75rem;
padding-top: 0.375em; }
.field-label.is-normal {
padding-top: 0.375em; }
.field-label.is-medium {
font-size: 1.25rem;
padding-top: 0.375em; }
.field-label.is-large {
font-size: 1.5rem;
padding-top: 0.375em; } }
.field-body .field .field {
margin-bottom: 0; }
@media screen and (min-width: 769px), print {
.field-body {
display: flex;
flex-basis: 0;
flex-grow: 5;
flex-shrink: 1; }
.field-body .field {
margin-bottom: 0; }
.field-body > .field {
flex-shrink: 1; }
.field-body > .field:not(.is-narrow) {
flex-grow: 1; }
.field-body > .field:not(:last-child) {
margin-right: 0.75rem; } }
.control {
clear: both;
font-size: 1rem;
position: relative;
text-align: left; }
.control.has-icon .icon {
color: #dbdbdb;
height: 2.25em;
pointer-events: none;
position: absolute;
top: 0;
width: 2.25em;
z-index: 4; }
.control.has-icon .input:focus + .icon {
color: #7a7a7a; }
.control.has-icon .input.is-small + .icon {
font-size: 0.75rem; }
.control.has-icon .input.is-medium + .icon {
font-size: 1.25rem; }
.control.has-icon .input.is-large + .icon {
font-size: 1.5rem; }
.control.has-icon:not(.has-icon-right) .icon {
left: 0; }
.control.has-icon:not(.has-icon-right) .input {
padding-left: 2.25em; }
.control.has-icon.has-icon-right .icon {
right: 0; }
.control.has-icon.has-icon-right .input {
padding-right: 2.25em; }
.control.has-icons-left .input:focus ~ .icon,
.control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon,
.control.has-icons-right .select:focus ~ .icon {
color: #7a7a7a; }
.control.has-icons-left .input.is-small ~ .icon,
.control.has-icons-left .select.is-small ~ .icon, .control.has-icons-right .input.is-small ~ .icon,
.control.has-icons-right .select.is-small ~ .icon {
font-size: 0.75rem; }
.control.has-icons-left .input.is-medium ~ .icon,
.control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon,
.control.has-icons-right .select.is-medium ~ .icon {
font-size: 1.25rem; }
.control.has-icons-left .input.is-large ~ .icon,
.control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon,
.control.has-icons-right .select.is-large ~ .icon {
font-size: 1.5rem; }
.control.has-icons-left .icon, .control.has-icons-right .icon {
color: #dbdbdb;
height: 2.25em;
pointer-events: none;
position: absolute;
top: 0;
width: 2.25em;
z-index: 4; }
.control.has-icons-left .input,
.control.has-icons-left .select select {
padding-left: 2.25em; }
.control.has-icons-left .icon.is-left {
left: 0; }
.control.has-icons-right .input,
.control.has-icons-right .select select {
padding-right: 2.25em; }
.control.has-icons-right .icon.is-right {
right: 0; }
.control.is-loading::after {
position: absolute !important;
right: 0.625em;
top: 0.625em;
z-index: 4; }
.control.is-loading.is-small:after {
font-size: 0.75rem; }
.control.is-loading.is-medium:after {
font-size: 1.25rem; }
.control.is-loading.is-large:after {
font-size: 1.5rem; }
.icon {
align-items: center;
display: inline-flex;
justify-content: center;
height: 1.5rem;
width: 1.5rem; }
.icon.is-small {
height: 1rem;
width: 1rem; }
.icon.is-medium {
height: 2rem;
width: 2rem; }
.icon.is-large {
height: 3rem;
width: 3rem; }
.image {
display: block;
position: relative; }
.image img {
display: block;
height: auto;
width: 100%; }
.image img.is-rounded {
border-radius: 290486px; }
.image.is-square img, .image.is-1by1 img, .image.is-5by4 img, .image.is-4by3 img, .image.is-3by2 img, .image.is-5by3 img, .image.is-16by9 img, .image.is-2by1 img, .image.is-3by1 img, .image.is-4by5 img, .image.is-3by4 img, .image.is-2by3 img, .image.is-3by5 img, .image.is-9by16 img, .image.is-1by2 img, .image.is-1by3 img {
height: 100%;
width: 100%; }
.image.is-square, .image.is-1by1 {
padding-top: 100%; }
.image.is-5by4 {
padding-top: 80%; }
.image.is-4by3 {
padding-top: 75%; }
.image.is-3by2 {
padding-top: 66.6666%; }
.image.is-5by3 {
padding-top: 60%; }
.image.is-16by9 {
padding-top: 56.25%; }
.image.is-2by1 {
padding-top: 50%; }
.image.is-3by1 {
padding-top: 33.3333%; }
.image.is-4by5 {
padding-top: 125%; }
.image.is-3by4 {
padding-top: 133.3333%; }
.image.is-2by3 {
padding-top: 150%; }
.image.is-3by5 {
padding-top: 166.6666%; }
.image.is-9by16 {
padding-top: 177.7777%; }
.image.is-1by2 {
padding-top: 200%; }
.image.is-1by3 {
padding-top: 300%; }
.image.is-16x16 {
height: 16px;
width: 16px; }
.image.is-24x24 {
height: 24px;
width: 24px; }
.image.is-32x32 {
height: 32px;
width: 32px; }
.image.is-48x48 {
height: 48px;
width: 48px; }
.image.is-64x64 {
height: 64px;
width: 64px; }
.image.is-96x96 {
height: 96px;
width: 96px; }
.image.is-128x128 {
height: 128px;
width: 128px; }
.notification {
background-color: whitesmoke;
border-radius: 4px;
padding: 1.25rem 2.5rem 1.25rem 1.5rem;
position: relative; }
.notification a:not(.button):not(.dropdown-item) {
color: currentColor;
text-decoration: underline; }
.notification strong {
color: currentColor; }
.notification code,
.notification pre {
background: white; }
.notification pre code {
background: transparent; }
.notification > .delete {
position: absolute;
right: 0.5rem;
top: 0.5rem; }
.notification .title,
.notification .subtitle,
.notification .content {
color: currentColor; }
.notification.is-white {
background-color: white;
color: #0a0a0a; }
.notification.is-black {
background-color: #0a0a0a;
color: white; }
.notification.is-light {
background-color: whitesmoke;
color: #363636; }
.notification.is-dark {
background-color: #363636;
color: whitesmoke; }
.notification.is-primary {
background-color: #00d1b2;
color: #fff; }
.notification.is-link {
background-color: #3273dc;
color: #fff; }
.notification.is-info {
background-color: #209cee;
color: #fff; }
.notification.is-success {
background-color: #23d160;
color: #fff; }
.notification.is-warning {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.notification.is-danger {
background-color: #ff3860;
color: #fff; }
.progress {
-moz-appearance: none;
-webkit-appearance: none;
border: none;
border-radius: 290486px;
display: block;
height: 1rem;
overflow: hidden;
padding: 0;
width: 100%; }
.progress::-webkit-progress-bar {
background-color: #dbdbdb; }
.progress::-webkit-progress-value {
background-color: #4a4a4a; }
.progress::-moz-progress-bar {
background-color: #4a4a4a; }
.progress::-ms-fill {
background-color: #4a4a4a;
border: none; }
.progress.is-white::-webkit-progress-value {
background-color: white; }
.progress.is-white::-moz-progress-bar {
background-color: white; }
.progress.is-white::-ms-fill {
background-color: white; }
.progress.is-black::-webkit-progress-value {
background-color: #0a0a0a; }
.progress.is-black::-moz-progress-bar {
background-color: #0a0a0a; }
.progress.is-black::-ms-fill {
background-color: #0a0a0a; }
.progress.is-light::-webkit-progress-value {
background-color: whitesmoke; }
.progress.is-light::-moz-progress-bar {
background-color: whitesmoke; }
.progress.is-light::-ms-fill {
background-color: whitesmoke; }
.progress.is-dark::-webkit-progress-value {
background-color: #363636; }
.progress.is-dark::-moz-progress-bar {
background-color: #363636; }
.progress.is-dark::-ms-fill {
background-color: #363636; }
.progress.is-primary::-webkit-progress-value {
background-color: #00d1b2; }
.progress.is-primary::-moz-progress-bar {
background-color: #00d1b2; }
.progress.is-primary::-ms-fill {
background-color: #00d1b2; }
.progress.is-link::-webkit-progress-value {
background-color: #3273dc; }
.progress.is-link::-moz-progress-bar {
background-color: #3273dc; }
.progress.is-link::-ms-fill {
background-color: #3273dc; }
.progress.is-info::-webkit-progress-value {
background-color: #209cee; }
.progress.is-info::-moz-progress-bar {
background-color: #209cee; }
.progress.is-info::-ms-fill {
background-color: #209cee; }
.progress.is-success::-webkit-progress-value {
background-color: #23d160; }
.progress.is-success::-moz-progress-bar {
background-color: #23d160; }
.progress.is-success::-ms-fill {
background-color: #23d160; }
.progress.is-warning::-webkit-progress-value {
background-color: #ffdd57; }
.progress.is-warning::-moz-progress-bar {
background-color: #ffdd57; }
.progress.is-warning::-ms-fill {
background-color: #ffdd57; }
.progress.is-danger::-webkit-progress-value {
background-color: #ff3860; }
.progress.is-danger::-moz-progress-bar {
background-color: #ff3860; }
.progress.is-danger::-ms-fill {
background-color: #ff3860; }
.progress.is-small {
height: 0.75rem; }
.progress.is-medium {
height: 1.25rem; }
.progress.is-large {
height: 1.5rem; }
.table {
background-color: white;
color: #363636; }
.table td,
.table th {
border: 1px solid #dbdbdb;
border-width: 0 0 1px;
padding: 0.5em 0.75em;
vertical-align: top; }
.table td.is-white,
.table th.is-white {
background-color: white;
border-color: white;
color: #0a0a0a; }
.table td.is-black,
.table th.is-black {
background-color: #0a0a0a;
border-color: #0a0a0a;
color: white; }
.table td.is-light,
.table th.is-light {
background-color: whitesmoke;
border-color: whitesmoke;
color: #363636; }
.table td.is-dark,
.table th.is-dark {
background-color: #363636;
border-color: #363636;
color: whitesmoke; }
.table td.is-primary,
.table th.is-primary {
background-color: #00d1b2;
border-color: #00d1b2;
color: #fff; }
.table td.is-link,
.table th.is-link {
background-color: #3273dc;
border-color: #3273dc;
color: #fff; }
.table td.is-info,
.table th.is-info {
background-color: #209cee;
border-color: #209cee;
color: #fff; }
.table td.is-success,
.table th.is-success {
background-color: #23d160;
border-color: #23d160;
color: #fff; }
.table td.is-warning,
.table th.is-warning {
background-color: #ffdd57;
border-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.table td.is-danger,
.table th.is-danger {
background-color: #ff3860;
border-color: #ff3860;
color: #fff; }
.table td.is-narrow,
.table th.is-narrow {
white-space: nowrap;
width: 1%; }
.table td.is-selected,
.table th.is-selected {
background-color: #00d1b2;
color: #fff; }
.table td.is-selected a,
.table td.is-selected strong,
.table th.is-selected a,
.table th.is-selected strong {
color: currentColor; }
.table th {
color: #363636;
text-align: left; }
.table tr.is-selected {
background-color: #00d1b2;
color: #fff; }
.table tr.is-selected a,
.table tr.is-selected strong {
color: currentColor; }
.table tr.is-selected td,
.table tr.is-selected th {
border-color: #fff;
color: currentColor; }
.table thead td,
.table thead th {
border-width: 0 0 2px;
color: #363636; }
.table tfoot td,
.table tfoot th {
border-width: 2px 0 0;
color: #363636; }
.table tbody tr:last-child td,
.table tbody tr:last-child th {
border-bottom-width: 0; }
.table.is-bordered td,
.table.is-bordered th {
border-width: 1px; }
.table.is-bordered tr:last-child td,
.table.is-bordered tr:last-child th {
border-bottom-width: 1px; }
.table.is-fullwidth {
width: 100%; }
.table.is-hoverable tbody tr:not(.is-selected):hover {
background-color: #fafafa; }
.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover {
background-color: #fafafa; }
.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) {
background-color: whitesmoke; }
.table.is-narrow td,
.table.is-narrow th {
padding: 0.25em 0.5em; }
.table.is-striped tbody tr:not(.is-selected):nth-child(even) {
background-color: #fafafa; }
.table-container {
-webkit-overflow-scrolling: touch;
overflow: auto;
overflow-y: hidden;
max-width: 100%; }
.tags {
align-items: center;
display: flex;
flex-wrap: wrap;
justify-content: flex-start; }
.tags .tag {
margin-bottom: 0.5rem; }
.tags .tag:not(:last-child) {
margin-right: 0.5rem; }
.tags:last-child {
margin-bottom: -0.5rem; }
.tags:not(:last-child) {
margin-bottom: 1rem; }
.tags.has-addons .tag {
margin-right: 0; }
.tags.has-addons .tag:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0; }
.tags.has-addons .tag:not(:last-child) {
border-bottom-right-radius: 0;
border-top-right-radius: 0; }
.tags.is-centered {
justify-content: center; }
.tags.is-centered .tag {
margin-right: 0.25rem;
margin-left: 0.25rem; }
.tags.is-right {
justify-content: flex-end; }
.tags.is-right .tag:not(:first-child) {
margin-left: 0.5rem; }
.tags.is-right .tag:not(:last-child) {
margin-right: 0; }
.tag:not(body) {
align-items: center;
background-color: whitesmoke;
border-radius: 4px;
color: #4a4a4a;
display: inline-flex;
font-size: 0.75rem;
height: 2em;
justify-content: center;
line-height: 1.5;
padding-left: 0.75em;
padding-right: 0.75em;
white-space: nowrap; }
.tag:not(body) .delete {
margin-left: 0.25rem;
margin-right: -0.375rem; }
.tag:not(body).is-white {
background-color: white;
color: #0a0a0a; }
.tag:not(body).is-black {
background-color: #0a0a0a;
color: white; }
.tag:not(body).is-light {
background-color: whitesmoke;
color: #363636; }
.tag:not(body).is-dark {
background-color: #363636;
color: whitesmoke; }
.tag:not(body).is-primary {
background-color: #00d1b2;
color: #fff; }
.tag:not(body).is-link {
background-color: #3273dc;
color: #fff; }
.tag:not(body).is-info {
background-color: #209cee;
color: #fff; }
.tag:not(body).is-success {
background-color: #23d160;
color: #fff; }
.tag:not(body).is-warning {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.tag:not(body).is-danger {
background-color: #ff3860;
color: #fff; }
.tag:not(body).is-medium {
font-size: 1rem; }
.tag:not(body).is-large {
font-size: 1.25rem; }
.tag:not(body) .icon:first-child:not(:last-child) {
margin-left: -0.375em;
margin-right: 0.1875em; }
.tag:not(body) .icon:last-child:not(:first-child) {
margin-left: 0.1875em;
margin-right: -0.375em; }
.tag:not(body) .icon:first-child:last-child {
margin-left: -0.375em;
margin-right: -0.375em; }
.tag:not(body).is-delete {
margin-left: 1px;
padding: 0;
position: relative;
width: 2em; }
.tag:not(body).is-delete::before, .tag:not(body).is-delete::after {
background-color: currentColor;
content: "";
display: block;
left: 50%;
position: absolute;
top: 50%;
transform: translateX(-50%) translateY(-50%) rotate(45deg);
transform-origin: center center; }
.tag:not(body).is-delete::before {
height: 1px;
width: 50%; }
.tag:not(body).is-delete::after {
height: 50%;
width: 1px; }
.tag:not(body).is-delete:hover, .tag:not(body).is-delete:focus {
background-color: #e8e8e8; }
.tag:not(body).is-delete:active {
background-color: #dbdbdb; }
.tag:not(body).is-rounded {
border-radius: 290486px; }
a.tag:hover {
text-decoration: underline; }
.title,
.subtitle {
word-break: break-word; }
.title em,
.title span,
.subtitle em,
.subtitle span {
font-weight: inherit; }
.title sub,
.subtitle sub {
font-size: 0.75em; }
.title sup,
.subtitle sup {
font-size: 0.75em; }
.title .tag,
.subtitle .tag {
vertical-align: middle; }
.title {
color: #363636;
font-size: 2rem;
font-weight: 600;
line-height: 1.125; }
.title strong {
color: inherit;
font-weight: inherit; }
.title + .highlight {
margin-top: -0.75rem; }
.title:not(.is-spaced) + .subtitle {
margin-top: -1.25rem; }
.title.is-1 {
font-size: 3rem; }
.title.is-2 {
font-size: 2.5rem; }
.title.is-3 {
font-size: 2rem; }
.title.is-4 {
font-size: 1.5rem; }
.title.is-5 {
font-size: 1.25rem; }
.title.is-6 {
font-size: 1rem; }
.title.is-7 {
font-size: 0.75rem; }
.subtitle {
color: #4a4a4a;
font-size: 1.25rem;
font-weight: 400;
line-height: 1.25; }
.subtitle strong {
color: #363636;
font-weight: 600; }
.subtitle:not(.is-spaced) + .title {
margin-top: -1.25rem; }
.subtitle.is-1 {
font-size: 3rem; }
.subtitle.is-2 {
font-size: 2.5rem; }
.subtitle.is-3 {
font-size: 2rem; }
.subtitle.is-4 {
font-size: 1.5rem; }
.subtitle.is-5 {
font-size: 1.25rem; }
.subtitle.is-6 {
font-size: 1rem; }
.subtitle.is-7 {
font-size: 0.75rem; }
.heading {
display: block;
font-size: 11px;
letter-spacing: 1px;
margin-bottom: 5px;
text-transform: uppercase; }
.highlight {
font-weight: 400;
max-width: 100%;
overflow: hidden;
padding: 0; }
.highlight pre {
overflow: auto;
max-width: 100%; }
.number {
align-items: center;
background-color: whitesmoke;
border-radius: 290486px;
display: inline-flex;
font-size: 1.25rem;
height: 2em;
justify-content: center;
margin-right: 1.5rem;
min-width: 2.5em;
padding: 0.25rem 0.5rem;
text-align: center;
vertical-align: top; }
.breadcrumb {
font-size: 1rem;
white-space: nowrap; }
.breadcrumb a {
align-items: center;
color: #3273dc;
display: flex;
justify-content: center;
padding: 0 0.75em; }
.breadcrumb a:hover {
color: #363636; }
.breadcrumb li {
align-items: center;
display: flex; }
.breadcrumb li:first-child a {
padding-left: 0; }
.breadcrumb li.is-active a {
color: #363636;
cursor: default;
pointer-events: none; }
.breadcrumb li + li::before {
color: #b5b5b5;
content: "/"; }
.breadcrumb ul,
.breadcrumb ol {
align-items: flex-start;
display: flex;
flex-wrap: wrap;
justify-content: flex-start; }
.breadcrumb .icon:first-child {
margin-right: 0.5em; }
.breadcrumb .icon:last-child {
margin-left: 0.5em; }
.breadcrumb.is-centered ol,
.breadcrumb.is-centered ul {
justify-content: center; }
.breadcrumb.is-right ol,
.breadcrumb.is-right ul {
justify-content: flex-end; }
.breadcrumb.is-small {
font-size: 0.75rem; }
.breadcrumb.is-medium {
font-size: 1.25rem; }
.breadcrumb.is-large {
font-size: 1.5rem; }
.breadcrumb.has-arrow-separator li + li::before {
content: "\2192"; }
.breadcrumb.has-bullet-separator li + li::before {
content: "\2022"; }
.breadcrumb.has-dot-separator li + li::before {
content: "\B7"; }
.breadcrumb.has-succeeds-separator li + li::before {
content: "\227B"; }
.card {
background-color: white;
box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
color: #4a4a4a;
max-width: 100%;
position: relative; }
.card-header {
background-color: transparent;
align-items: stretch;
box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1);
display: flex; }
.card-header-title {
align-items: center;
color: #363636;
display: flex;
flex-grow: 1;
font-weight: 700;
padding: 0.75rem; }
.card-header-title.is-centered {
justify-content: center; }
.card-header-icon {
align-items: center;
cursor: pointer;
display: flex;
justify-content: center;
padding: 0.75rem; }
.card-image {
display: block;
position: relative; }
.card-content {
background-color: transparent;
padding: 1.5rem; }
.card-footer {
background-color: transparent;
border-top: 1px solid #dbdbdb;
align-items: stretch;
display: flex; }
.card-footer-item {
align-items: center;
display: flex;
flex-basis: 0;
flex-grow: 1;
flex-shrink: 0;
justify-content: center;
padding: 0.75rem; }
.card-footer-item:not(:last-child) {
border-right: 1px solid #dbdbdb; }
.card .media:not(:last-child) {
margin-bottom: 0.75rem; }
.dropdown {
display: inline-flex;
position: relative;
vertical-align: top; }
.dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu {
display: block; }
.dropdown.is-right .dropdown-menu {
left: auto;
right: 0; }
.dropdown.is-up .dropdown-menu {
bottom: 100%;
padding-bottom: 4px;
padding-top: initial;
top: auto; }
.dropdown-menu {
display: none;
left: 0;
min-width: 12rem;
padding-top: 4px;
position: absolute;
top: 100%;
z-index: 20; }
.dropdown-content {
background-color: white;
border-radius: 4px;
box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
padding-bottom: 0.5rem;
padding-top: 0.5rem; }
.dropdown-item {
color: #4a4a4a;
display: block;
font-size: 0.875rem;
line-height: 1.5;
padding: 0.375rem 1rem;
position: relative; }
a.dropdown-item,
button.dropdown-item {
padding-right: 3rem;
text-align: left;
white-space: nowrap;
width: 100%; }
a.dropdown-item:hover,
button.dropdown-item:hover {
background-color: whitesmoke;
color: #0a0a0a; }
a.dropdown-item.is-active,
button.dropdown-item.is-active {
background-color: #3273dc;
color: #fff; }
.dropdown-divider {
background-color: #dbdbdb;
border: none;
display: block;
height: 1px;
margin: 0.5rem 0; }
.level {
align-items: center;
justify-content: space-between; }
.level code {
border-radius: 4px; }
.level img {
display: inline-block;
vertical-align: top; }
.level.is-mobile {
display: flex; }
.level.is-mobile .level-left,
.level.is-mobile .level-right {
display: flex; }
.level.is-mobile .level-left + .level-right {
margin-top: 0; }
.level.is-mobile .level-item:not(:last-child) {
margin-bottom: 0;
margin-right: 0.75rem; }
.level.is-mobile .level-item:not(.is-narrow) {
flex-grow: 1; }
@media screen and (min-width: 769px), print {
.level {
display: flex; }
.level > .level-item:not(.is-narrow) {
flex-grow: 1; } }
.level-item {
align-items: center;
display: flex;
flex-basis: auto;
flex-grow: 0;
flex-shrink: 0;
justify-content: center; }
.level-item .title,
.level-item .subtitle {
margin-bottom: 0; }
@media screen and (max-width: 768px) {
.level-item:not(:last-child) {
margin-bottom: 0.75rem; } }
.level-left,
.level-right {
flex-basis: auto;
flex-grow: 0;
flex-shrink: 0; }
.level-left .level-item.is-flexible,
.level-right .level-item.is-flexible {
flex-grow: 1; }
@media screen and (min-width: 769px), print {
.level-left .level-item:not(:last-child),
.level-right .level-item:not(:last-child) {
margin-right: 0.75rem; } }
.level-left {
align-items: center;
justify-content: flex-start; }
@media screen and (max-width: 768px) {
.level-left + .level-right {
margin-top: 1.5rem; } }
@media screen and (min-width: 769px), print {
.level-left {
display: flex; } }
.level-right {
align-items: center;
justify-content: flex-end; }
@media screen and (min-width: 769px), print {
.level-right {
display: flex; } }
.list {
background-color: white;
border-radius: 4px;
box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); }
.list-item {
display: block;
padding: 0.5em 1em; }
.list-item:not(a) {
color: #4a4a4a; }
.list-item:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px; }
.list-item:last-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px; }
.list-item:not(:last-child) {
border-bottom: 1px solid #dbdbdb; }
.list-item.is-active {
background-color: #3273dc;
color: #fff; }
a.list-item {
background-color: whitesmoke;
cursor: pointer; }
.media {
align-items: flex-start;
display: flex;
text-align: left; }
.media .content:not(:last-child) {
margin-bottom: 0.75rem; }
.media .media {
border-top: 1px solid rgba(219, 219, 219, 0.5);
display: flex;
padding-top: 0.75rem; }
.media .media .content:not(:last-child),
.media .media .control:not(:last-child) {
margin-bottom: 0.5rem; }
.media .media .media {
padding-top: 0.5rem; }
.media .media .media + .media {
margin-top: 0.5rem; }
.media + .media {
border-top: 1px solid rgba(219, 219, 219, 0.5);
margin-top: 1rem;
padding-top: 1rem; }
.media.is-large + .media {
margin-top: 1.5rem;
padding-top: 1.5rem; }
.media-left,
.media-right {
flex-basis: auto;
flex-grow: 0;
flex-shrink: 0; }
.media-left {
margin-right: 1rem; }
.media-right {
margin-left: 1rem; }
.media-content {
flex-basis: auto;
flex-grow: 1;
flex-shrink: 1;
text-align: left; }
@media screen and (max-width: 768px) {
.media-content {
overflow-x: auto; } }
.menu {
font-size: 1rem; }
.menu.is-small {
font-size: 0.75rem; }
.menu.is-medium {
font-size: 1.25rem; }
.menu.is-large {
font-size: 1.5rem; }
.menu-list {
line-height: 1.25; }
.menu-list a {
border-radius: 2px;
color: #4a4a4a;
display: block;
padding: 0.5em 0.75em; }
.menu-list a:hover {
background-color: whitesmoke;
color: #363636; }
.menu-list a.is-active {
background-color: #3273dc;
color: #fff; }
.menu-list li ul {
border-left: 1px solid #dbdbdb;
margin: 0.75em;
padding-left: 0.75em; }
.menu-label {
color: #7a7a7a;
font-size: 0.75em;
letter-spacing: 0.1em;
text-transform: uppercase; }
.menu-label:not(:first-child) {
margin-top: 1em; }
.menu-label:not(:last-child) {
margin-bottom: 1em; }
.message {
background-color: whitesmoke;
border-radius: 4px;
font-size: 1rem; }
.message strong {
color: currentColor; }
.message a:not(.button):not(.tag) {
color: currentColor;
text-decoration: underline; }
.message.is-small {
font-size: 0.75rem; }
.message.is-medium {
font-size: 1.25rem; }
.message.is-large {
font-size: 1.5rem; }
.message.is-white {
background-color: white; }
.message.is-white .message-header {
background-color: white;
color: #0a0a0a; }
.message.is-white .message-body {
border-color: white;
color: #4d4d4d; }
.message.is-black {
background-color: #fafafa; }
.message.is-black .message-header {
background-color: #0a0a0a;
color: white; }
.message.is-black .message-body {
border-color: #0a0a0a;
color: #090909; }
.message.is-light {
background-color: #fafafa; }
.message.is-light .message-header {
background-color: whitesmoke;
color: #363636; }
.message.is-light .message-body {
border-color: whitesmoke;
color: #505050; }
.message.is-dark {
background-color: #fafafa; }
.message.is-dark .message-header {
background-color: #363636;
color: whitesmoke; }
.message.is-dark .message-body {
border-color: #363636;
color: #2a2a2a; }
.message.is-primary {
background-color: #f5fffd; }
.message.is-primary .message-header {
background-color: #00d1b2;
color: #fff; }
.message.is-primary .message-body {
border-color: #00d1b2;
color: #021310; }
.message.is-link {
background-color: #f6f9fe; }
.message.is-link .message-header {
background-color: #3273dc;
color: #fff; }
.message.is-link .message-body {
border-color: #3273dc;
color: #22509a; }
.message.is-info {
background-color: #f6fbfe; }
.message.is-info .message-header {
background-color: #209cee;
color: #fff; }
.message.is-info .message-body {
border-color: #209cee;
color: #12537e; }
.message.is-success {
background-color: #f6fef9; }
.message.is-success .message-header {
background-color: #23d160;
color: #fff; }
.message.is-success .message-body {
border-color: #23d160;
color: #0e301a; }
.message.is-warning {
background-color: #fffdf5; }
.message.is-warning .message-header {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.message.is-warning .message-body {
border-color: #ffdd57;
color: #3b3108; }
.message.is-danger {
background-color: #fff5f7; }
.message.is-danger .message-header {
background-color: #ff3860;
color: #fff; }
.message.is-danger .message-body {
border-color: #ff3860;
color: #cd0930; }
.message-header {
align-items: center;
background-color: #4a4a4a;
border-radius: 4px 4px 0 0;
color: #fff;
display: flex;
font-weight: 700;
justify-content: space-between;
line-height: 1.25;
padding: 0.75em 1em;
position: relative; }
.message-header .delete {
flex-grow: 0;
flex-shrink: 0;
margin-left: 0.75em; }
.message-header + .message-body {
border-width: 0;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.message-body {
border-color: #dbdbdb;
border-radius: 4px;
border-style: solid;
border-width: 0 0 0 4px;
color: #4a4a4a;
padding: 1.25em 1.5em; }
.message-body code,
.message-body pre {
background-color: white; }
.message-body pre code {
background-color: transparent; }
.modal {
align-items: center;
display: none;
flex-direction: column;
justify-content: center;
overflow: hidden;
position: fixed;
z-index: 40; }
.modal.is-active {
display: flex; }
.modal-background {
background-color: rgba(10, 10, 10, 0.86); }
.modal-content,
.modal-card {
margin: 0 20px;
max-height: calc(100vh - 160px);
overflow: auto;
position: relative;
width: 100%; }
@media screen and (min-width: 769px), print {
.modal-content,
.modal-card {
margin: 0 auto;
max-height: calc(100vh - 40px);
width: 640px; } }
.modal-close {
background: none;
height: 40px;
position: fixed;
right: 20px;
top: 20px;
width: 40px; }
.modal-card {
display: flex;
flex-direction: column;
max-height: calc(100vh - 40px);
overflow: hidden;
-ms-overflow-y: visible; }
.modal-card-head,
.modal-card-foot {
align-items: center;
background-color: whitesmoke;
display: flex;
flex-shrink: 0;
justify-content: flex-start;
padding: 20px;
position: relative; }
.modal-card-head {
border-bottom: 1px solid #dbdbdb;
border-top-left-radius: 6px;
border-top-right-radius: 6px; }
.modal-card-title {
color: #363636;
flex-grow: 1;
flex-shrink: 0;
font-size: 1.5rem;
line-height: 1; }
.modal-card-foot {
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
border-top: 1px solid #dbdbdb; }
.modal-card-foot .button:not(:last-child) {
margin-right: 10px; }
.modal-card-body {
-webkit-overflow-scrolling: touch;
background-color: white;
flex-grow: 1;
flex-shrink: 1;
overflow: auto;
padding: 20px; }
.navbar {
background-color: white;
min-height: 3.25rem;
position: relative;
z-index: 30; }
.navbar.is-white {
background-color: white;
color: #0a0a0a; }
.navbar.is-white .navbar-brand > .navbar-item,
.navbar.is-white .navbar-brand .navbar-link {
color: #0a0a0a; }
.navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active,
.navbar.is-white .navbar-brand .navbar-link:hover,
.navbar.is-white .navbar-brand .navbar-link.is-active {
background-color: #f2f2f2;
color: #0a0a0a; }
.navbar.is-white .navbar-brand .navbar-link::after {
border-color: #0a0a0a; }
.navbar.is-white .navbar-burger {
color: #0a0a0a; }
@media screen and (min-width: 1088px) {
.navbar.is-white .navbar-start > .navbar-item,
.navbar.is-white .navbar-start .navbar-link,
.navbar.is-white .navbar-end > .navbar-item,
.navbar.is-white .navbar-end .navbar-link {
color: #0a0a0a; }
.navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active,
.navbar.is-white .navbar-start .navbar-link:hover,
.navbar.is-white .navbar-start .navbar-link.is-active,
.navbar.is-white .navbar-end > a.navbar-item:hover,
.navbar.is-white .navbar-end > a.navbar-item.is-active,
.navbar.is-white .navbar-end .navbar-link:hover,
.navbar.is-white .navbar-end .navbar-link.is-active {
background-color: #f2f2f2;
color: #0a0a0a; }
.navbar.is-white .navbar-start .navbar-link::after,
.navbar.is-white .navbar-end .navbar-link::after {
border-color: #0a0a0a; }
.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #f2f2f2;
color: #0a0a0a; }
.navbar.is-white .navbar-dropdown a.navbar-item.is-active {
background-color: white;
color: #0a0a0a; } }
.navbar.is-black {
background-color: #0a0a0a;
color: white; }
.navbar.is-black .navbar-brand > .navbar-item,
.navbar.is-black .navbar-brand .navbar-link {
color: white; }
.navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active,
.navbar.is-black .navbar-brand .navbar-link:hover,
.navbar.is-black .navbar-brand .navbar-link.is-active {
background-color: black;
color: white; }
.navbar.is-black .navbar-brand .navbar-link::after {
border-color: white; }
.navbar.is-black .navbar-burger {
color: white; }
@media screen and (min-width: 1088px) {
.navbar.is-black .navbar-start > .navbar-item,
.navbar.is-black .navbar-start .navbar-link,
.navbar.is-black .navbar-end > .navbar-item,
.navbar.is-black .navbar-end .navbar-link {
color: white; }
.navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active,
.navbar.is-black .navbar-start .navbar-link:hover,
.navbar.is-black .navbar-start .navbar-link.is-active,
.navbar.is-black .navbar-end > a.navbar-item:hover,
.navbar.is-black .navbar-end > a.navbar-item.is-active,
.navbar.is-black .navbar-end .navbar-link:hover,
.navbar.is-black .navbar-end .navbar-link.is-active {
background-color: black;
color: white; }
.navbar.is-black .navbar-start .navbar-link::after,
.navbar.is-black .navbar-end .navbar-link::after {
border-color: white; }
.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link {
background-color: black;
color: white; }
.navbar.is-black .navbar-dropdown a.navbar-item.is-active {
background-color: #0a0a0a;
color: white; } }
.navbar.is-light {
background-color: whitesmoke;
color: #363636; }
.navbar.is-light .navbar-brand > .navbar-item,
.navbar.is-light .navbar-brand .navbar-link {
color: #363636; }
.navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active,
.navbar.is-light .navbar-brand .navbar-link:hover,
.navbar.is-light .navbar-brand .navbar-link.is-active {
background-color: #e8e8e8;
color: #363636; }
.navbar.is-light .navbar-brand .navbar-link::after {
border-color: #363636; }
.navbar.is-light .navbar-burger {
color: #363636; }
@media screen and (min-width: 1088px) {
.navbar.is-light .navbar-start > .navbar-item,
.navbar.is-light .navbar-start .navbar-link,
.navbar.is-light .navbar-end > .navbar-item,
.navbar.is-light .navbar-end .navbar-link {
color: #363636; }
.navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active,
.navbar.is-light .navbar-start .navbar-link:hover,
.navbar.is-light .navbar-start .navbar-link.is-active,
.navbar.is-light .navbar-end > a.navbar-item:hover,
.navbar.is-light .navbar-end > a.navbar-item.is-active,
.navbar.is-light .navbar-end .navbar-link:hover,
.navbar.is-light .navbar-end .navbar-link.is-active {
background-color: #e8e8e8;
color: #363636; }
.navbar.is-light .navbar-start .navbar-link::after,
.navbar.is-light .navbar-end .navbar-link::after {
border-color: #363636; }
.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #e8e8e8;
color: #363636; }
.navbar.is-light .navbar-dropdown a.navbar-item.is-active {
background-color: whitesmoke;
color: #363636; } }
.navbar.is-dark {
background-color: #363636;
color: whitesmoke; }
.navbar.is-dark .navbar-brand > .navbar-item,
.navbar.is-dark .navbar-brand .navbar-link {
color: whitesmoke; }
.navbar.is-dark .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active,
.navbar.is-dark .navbar-brand .navbar-link:hover,
.navbar.is-dark .navbar-brand .navbar-link.is-active {
background-color: #292929;
color: whitesmoke; }
.navbar.is-dark .navbar-brand .navbar-link::after {
border-color: whitesmoke; }
.navbar.is-dark .navbar-burger {
color: whitesmoke; }
@media screen and (min-width: 1088px) {
.navbar.is-dark .navbar-start > .navbar-item,
.navbar.is-dark .navbar-start .navbar-link,
.navbar.is-dark .navbar-end > .navbar-item,
.navbar.is-dark .navbar-end .navbar-link {
color: whitesmoke; }
.navbar.is-dark .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active,
.navbar.is-dark .navbar-start .navbar-link:hover,
.navbar.is-dark .navbar-start .navbar-link.is-active,
.navbar.is-dark .navbar-end > a.navbar-item:hover,
.navbar.is-dark .navbar-end > a.navbar-item.is-active,
.navbar.is-dark .navbar-end .navbar-link:hover,
.navbar.is-dark .navbar-end .navbar-link.is-active {
background-color: #292929;
color: whitesmoke; }
.navbar.is-dark .navbar-start .navbar-link::after,
.navbar.is-dark .navbar-end .navbar-link::after {
border-color: whitesmoke; }
.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #292929;
color: whitesmoke; }
.navbar.is-dark .navbar-dropdown a.navbar-item.is-active {
background-color: #363636;
color: whitesmoke; } }
.navbar.is-primary {
background-color: #00d1b2;
color: #fff; }
.navbar.is-primary .navbar-brand > .navbar-item,
.navbar.is-primary .navbar-brand .navbar-link {
color: #fff; }
.navbar.is-primary .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active,
.navbar.is-primary .navbar-brand .navbar-link:hover,
.navbar.is-primary .navbar-brand .navbar-link.is-active {
background-color: #00b89c;
color: #fff; }
.navbar.is-primary .navbar-brand .navbar-link::after {
border-color: #fff; }
.navbar.is-primary .navbar-burger {
color: #fff; }
@media screen and (min-width: 1088px) {
.navbar.is-primary .navbar-start > .navbar-item,
.navbar.is-primary .navbar-start .navbar-link,
.navbar.is-primary .navbar-end > .navbar-item,
.navbar.is-primary .navbar-end .navbar-link {
color: #fff; }
.navbar.is-primary .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active,
.navbar.is-primary .navbar-start .navbar-link:hover,
.navbar.is-primary .navbar-start .navbar-link.is-active,
.navbar.is-primary .navbar-end > a.navbar-item:hover,
.navbar.is-primary .navbar-end > a.navbar-item.is-active,
.navbar.is-primary .navbar-end .navbar-link:hover,
.navbar.is-primary .navbar-end .navbar-link.is-active {
background-color: #00b89c;
color: #fff; }
.navbar.is-primary .navbar-start .navbar-link::after,
.navbar.is-primary .navbar-end .navbar-link::after {
border-color: #fff; }
.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #00b89c;
color: #fff; }
.navbar.is-primary .navbar-dropdown a.navbar-item.is-active {
background-color: #00d1b2;
color: #fff; } }
.navbar.is-link {
background-color: #3273dc;
color: #fff; }
.navbar.is-link .navbar-brand > .navbar-item,
.navbar.is-link .navbar-brand .navbar-link {
color: #fff; }
.navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active,
.navbar.is-link .navbar-brand .navbar-link:hover,
.navbar.is-link .navbar-brand .navbar-link.is-active {
background-color: #2366d1;
color: #fff; }
.navbar.is-link .navbar-brand .navbar-link::after {
border-color: #fff; }
.navbar.is-link .navbar-burger {
color: #fff; }
@media screen and (min-width: 1088px) {
.navbar.is-link .navbar-start > .navbar-item,
.navbar.is-link .navbar-start .navbar-link,
.navbar.is-link .navbar-end > .navbar-item,
.navbar.is-link .navbar-end .navbar-link {
color: #fff; }
.navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active,
.navbar.is-link .navbar-start .navbar-link:hover,
.navbar.is-link .navbar-start .navbar-link.is-active,
.navbar.is-link .navbar-end > a.navbar-item:hover,
.navbar.is-link .navbar-end > a.navbar-item.is-active,
.navbar.is-link .navbar-end .navbar-link:hover,
.navbar.is-link .navbar-end .navbar-link.is-active {
background-color: #2366d1;
color: #fff; }
.navbar.is-link .navbar-start .navbar-link::after,
.navbar.is-link .navbar-end .navbar-link::after {
border-color: #fff; }
.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #2366d1;
color: #fff; }
.navbar.is-link .navbar-dropdown a.navbar-item.is-active {
background-color: #3273dc;
color: #fff; } }
.navbar.is-info {
background-color: #209cee;
color: #fff; }
.navbar.is-info .navbar-brand > .navbar-item,
.navbar.is-info .navbar-brand .navbar-link {
color: #fff; }
.navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active,
.navbar.is-info .navbar-brand .navbar-link:hover,
.navbar.is-info .navbar-brand .navbar-link.is-active {
background-color: #118fe4;
color: #fff; }
.navbar.is-info .navbar-brand .navbar-link::after {
border-color: #fff; }
.navbar.is-info .navbar-burger {
color: #fff; }
@media screen and (min-width: 1088px) {
.navbar.is-info .navbar-start > .navbar-item,
.navbar.is-info .navbar-start .navbar-link,
.navbar.is-info .navbar-end > .navbar-item,
.navbar.is-info .navbar-end .navbar-link {
color: #fff; }
.navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active,
.navbar.is-info .navbar-start .navbar-link:hover,
.navbar.is-info .navbar-start .navbar-link.is-active,
.navbar.is-info .navbar-end > a.navbar-item:hover,
.navbar.is-info .navbar-end > a.navbar-item.is-active,
.navbar.is-info .navbar-end .navbar-link:hover,
.navbar.is-info .navbar-end .navbar-link.is-active {
background-color: #118fe4;
color: #fff; }
.navbar.is-info .navbar-start .navbar-link::after,
.navbar.is-info .navbar-end .navbar-link::after {
border-color: #fff; }
.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #118fe4;
color: #fff; }
.navbar.is-info .navbar-dropdown a.navbar-item.is-active {
background-color: #209cee;
color: #fff; } }
.navbar.is-success {
background-color: #23d160;
color: #fff; }
.navbar.is-success .navbar-brand > .navbar-item,
.navbar.is-success .navbar-brand .navbar-link {
color: #fff; }
.navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active,
.navbar.is-success .navbar-brand .navbar-link:hover,
.navbar.is-success .navbar-brand .navbar-link.is-active {
background-color: #20bc56;
color: #fff; }
.navbar.is-success .navbar-brand .navbar-link::after {
border-color: #fff; }
.navbar.is-success .navbar-burger {
color: #fff; }
@media screen and (min-width: 1088px) {
.navbar.is-success .navbar-start > .navbar-item,
.navbar.is-success .navbar-start .navbar-link,
.navbar.is-success .navbar-end > .navbar-item,
.navbar.is-success .navbar-end .navbar-link {
color: #fff; }
.navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active,
.navbar.is-success .navbar-start .navbar-link:hover,
.navbar.is-success .navbar-start .navbar-link.is-active,
.navbar.is-success .navbar-end > a.navbar-item:hover,
.navbar.is-success .navbar-end > a.navbar-item.is-active,
.navbar.is-success .navbar-end .navbar-link:hover,
.navbar.is-success .navbar-end .navbar-link.is-active {
background-color: #20bc56;
color: #fff; }
.navbar.is-success .navbar-start .navbar-link::after,
.navbar.is-success .navbar-end .navbar-link::after {
border-color: #fff; }
.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #20bc56;
color: #fff; }
.navbar.is-success .navbar-dropdown a.navbar-item.is-active {
background-color: #23d160;
color: #fff; } }
.navbar.is-warning {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-brand > .navbar-item,
.navbar.is-warning .navbar-brand .navbar-link {
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active,
.navbar.is-warning .navbar-brand .navbar-link:hover,
.navbar.is-warning .navbar-brand .navbar-link.is-active {
background-color: #ffd83d;
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-brand .navbar-link::after {
border-color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-burger {
color: rgba(0, 0, 0, 0.7); }
@media screen and (min-width: 1088px) {
.navbar.is-warning .navbar-start > .navbar-item,
.navbar.is-warning .navbar-start .navbar-link,
.navbar.is-warning .navbar-end > .navbar-item,
.navbar.is-warning .navbar-end .navbar-link {
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active,
.navbar.is-warning .navbar-start .navbar-link:hover,
.navbar.is-warning .navbar-start .navbar-link.is-active,
.navbar.is-warning .navbar-end > a.navbar-item:hover,
.navbar.is-warning .navbar-end > a.navbar-item.is-active,
.navbar.is-warning .navbar-end .navbar-link:hover,
.navbar.is-warning .navbar-end .navbar-link.is-active {
background-color: #ffd83d;
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-start .navbar-link::after,
.navbar.is-warning .navbar-end .navbar-link::after {
border-color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #ffd83d;
color: rgba(0, 0, 0, 0.7); }
.navbar.is-warning .navbar-dropdown a.navbar-item.is-active {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); } }
.navbar.is-danger {
background-color: #ff3860;
color: #fff; }
.navbar.is-danger .navbar-brand > .navbar-item,
.navbar.is-danger .navbar-brand .navbar-link {
color: #fff; }
.navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active,
.navbar.is-danger .navbar-brand .navbar-link:hover,
.navbar.is-danger .navbar-brand .navbar-link.is-active {
background-color: #ff1f4b;
color: #fff; }
.navbar.is-danger .navbar-brand .navbar-link::after {
border-color: #fff; }
.navbar.is-danger .navbar-burger {
color: #fff; }
@media screen and (min-width: 1088px) {
.navbar.is-danger .navbar-start > .navbar-item,
.navbar.is-danger .navbar-start .navbar-link,
.navbar.is-danger .navbar-end > .navbar-item,
.navbar.is-danger .navbar-end .navbar-link {
color: #fff; }
.navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active,
.navbar.is-danger .navbar-start .navbar-link:hover,
.navbar.is-danger .navbar-start .navbar-link.is-active,
.navbar.is-danger .navbar-end > a.navbar-item:hover,
.navbar.is-danger .navbar-end > a.navbar-item.is-active,
.navbar.is-danger .navbar-end .navbar-link:hover,
.navbar.is-danger .navbar-end .navbar-link.is-active {
background-color: #ff1f4b;
color: #fff; }
.navbar.is-danger .navbar-start .navbar-link::after,
.navbar.is-danger .navbar-end .navbar-link::after {
border-color: #fff; }
.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,
.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #ff1f4b;
color: #fff; }
.navbar.is-danger .navbar-dropdown a.navbar-item.is-active {
background-color: #ff3860;
color: #fff; } }
.navbar > .container {
align-items: stretch;
display: flex;
min-height: 3.25rem;
width: 100%; }
.navbar.has-shadow {
box-shadow: 0 2px 0 0 whitesmoke; }
.navbar.is-fixed-bottom, .navbar.is-fixed-top {
left: 0;
position: fixed;
right: 0;
z-index: 30; }
.navbar.is-fixed-bottom {
bottom: 0; }
.navbar.is-fixed-bottom.has-shadow {
box-shadow: 0 -2px 0 0 whitesmoke; }
.navbar.is-fixed-top {
top: 0; }
html.has-navbar-fixed-top,
body.has-navbar-fixed-top {
padding-top: 3.25rem; }
html.has-navbar-fixed-bottom,
body.has-navbar-fixed-bottom {
padding-bottom: 3.25rem; }
.navbar-brand,
.navbar-tabs {
align-items: stretch;
display: flex;
flex-shrink: 0;
min-height: 3.25rem; }
.navbar-brand a.navbar-item:hover {
background-color: transparent; }
.navbar-tabs {
-webkit-overflow-scrolling: touch;
max-width: 100vw;
overflow-x: auto;
overflow-y: hidden; }
.navbar-burger {
color: #4a4a4a;
cursor: pointer;
display: block;
height: 3.25rem;
position: relative;
width: 3.25rem;
margin-left: auto; }
.navbar-burger span {
background-color: currentColor;
display: block;
height: 1px;
left: calc(50% - 8px);
position: absolute;
transform-origin: center;
transition-duration: 86ms;
transition-property: background-color, opacity, transform;
transition-timing-function: ease-out;
width: 16px; }
.navbar-burger span:nth-child(1) {
top: calc(50% - 6px); }
.navbar-burger span:nth-child(2) {
top: calc(50% - 1px); }
.navbar-burger span:nth-child(3) {
top: calc(50% + 4px); }
.navbar-burger:hover {
background-color: rgba(0, 0, 0, 0.05); }
.navbar-burger.is-active span:nth-child(1) {
transform: translateY(5px) rotate(45deg); }
.navbar-burger.is-active span:nth-child(2) {
opacity: 0; }
.navbar-burger.is-active span:nth-child(3) {
transform: translateY(-5px) rotate(-45deg); }
.navbar-menu {
display: none; }
.navbar-item,
.navbar-link {
color: #4a4a4a;
display: block;
line-height: 1.5;
padding: 0.5rem 0.75rem;
position: relative; }
.navbar-item .icon:only-child,
.navbar-link .icon:only-child {
margin-left: -0.25rem;
margin-right: -0.25rem; }
a.navbar-item,
.navbar-link {
cursor: pointer; }
a.navbar-item:hover, a.navbar-item.is-active,
.navbar-link:hover,
.navbar-link.is-active {
background-color: #fafafa;
color: #3273dc; }
.navbar-item {
display: block;
flex-grow: 0;
flex-shrink: 0; }
.navbar-item img {
max-height: 1.75rem; }
.navbar-item.has-dropdown {
padding: 0; }
.navbar-item.is-expanded {
flex-grow: 1;
flex-shrink: 1; }
.navbar-item.is-tab {
border-bottom: 1px solid transparent;
min-height: 3.25rem;
padding-bottom: calc(0.5rem - 1px); }
.navbar-item.is-tab:hover {
background-color: transparent;
border-bottom-color: #3273dc; }
.navbar-item.is-tab.is-active {
background-color: transparent;
border-bottom-color: #3273dc;
border-bottom-style: solid;
border-bottom-width: 3px;
color: #3273dc;
padding-bottom: calc(0.5rem - 3px); }
.navbar-content {
flex-grow: 1;
flex-shrink: 1; }
.navbar-link:not(.is-arrowless) {
padding-right: 2.5em; }
.navbar-link:not(.is-arrowless)::after {
border-color: #3273dc;
margin-top: -0.375em;
right: 1.125em; }
.navbar-dropdown {
font-size: 0.875rem;
padding-bottom: 0.5rem;
padding-top: 0.5rem; }
.navbar-dropdown .navbar-item {
padding-left: 1.5rem;
padding-right: 1.5rem; }
.navbar-divider {
background-color: whitesmoke;
border: none;
display: none;
height: 2px;
margin: 0.5rem 0; }
@media screen and (max-width: 1087px) {
.navbar > .container {
display: block; }
.navbar-brand .navbar-item,
.navbar-tabs .navbar-item {
align-items: center;
display: flex; }
.navbar-link::after {
display: none; }
.navbar-menu {
background-color: white;
box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);
padding: 0.5rem 0; }
.navbar-menu.is-active {
display: block; }
.navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch {
left: 0;
position: fixed;
right: 0;
z-index: 30; }
.navbar.is-fixed-bottom-touch {
bottom: 0; }
.navbar.is-fixed-bottom-touch.has-shadow {
box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }
.navbar.is-fixed-top-touch {
top: 0; }
.navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu {
-webkit-overflow-scrolling: touch;
max-height: calc(100vh - 3.25rem);
overflow: auto; }
html.has-navbar-fixed-top-touch,
body.has-navbar-fixed-top-touch {
padding-top: 3.25rem; }
html.has-navbar-fixed-bottom-touch,
body.has-navbar-fixed-bottom-touch {
padding-bottom: 3.25rem; } }
@media screen and (min-width: 1088px) {
.navbar,
.navbar-menu,
.navbar-start,
.navbar-end {
align-items: stretch;
display: flex; }
.navbar {
min-height: 3.25rem; }
.navbar.is-spaced {
padding: 1rem 2rem; }
.navbar.is-spaced .navbar-start,
.navbar.is-spaced .navbar-end {
align-items: center; }
.navbar.is-spaced a.navbar-item,
.navbar.is-spaced .navbar-link {
border-radius: 4px; }
.navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active,
.navbar.is-transparent .navbar-link:hover,
.navbar.is-transparent .navbar-link.is-active {
background-color: transparent !important; }
.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link {
background-color: transparent !important; }
.navbar.is-transparent .navbar-dropdown a.navbar-item:hover {
background-color: whitesmoke;
color: #0a0a0a; }
.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active {
background-color: whitesmoke;
color: #3273dc; }
.navbar-burger {
display: none; }
.navbar-item,
.navbar-link {
align-items: center;
display: flex; }
.navbar-item {
display: flex; }
.navbar-item.has-dropdown {
align-items: stretch; }
.navbar-item.has-dropdown-up .navbar-link::after {
transform: rotate(135deg) translate(0.25em, -0.25em); }
.navbar-item.has-dropdown-up .navbar-dropdown {
border-bottom: 2px solid #dbdbdb;
border-radius: 6px 6px 0 0;
border-top: none;
bottom: 100%;
box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1);
top: auto; }
.navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown {
display: block; }
.navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {
opacity: 1;
pointer-events: auto;
transform: translateY(0); }
.navbar-menu {
flex-grow: 1;
flex-shrink: 0; }
.navbar-start {
justify-content: flex-start;
margin-right: auto; }
.navbar-end {
justify-content: flex-end;
margin-left: auto; }
.navbar-dropdown {
background-color: white;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
border-top: 2px solid #dbdbdb;
box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1);
display: none;
font-size: 0.875rem;
left: 0;
min-width: 100%;
position: absolute;
top: 100%;
z-index: 20; }
.navbar-dropdown .navbar-item {
padding: 0.375rem 1rem;
white-space: nowrap; }
.navbar-dropdown a.navbar-item {
padding-right: 3rem; }
.navbar-dropdown a.navbar-item:hover {
background-color: whitesmoke;
color: #0a0a0a; }
.navbar-dropdown a.navbar-item.is-active {
background-color: whitesmoke;
color: #3273dc; }
.navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed {
border-radius: 6px;
border-top: none;
box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
display: block;
opacity: 0;
pointer-events: none;
top: calc(100% + (-4px));
transform: translateY(-5px);
transition-duration: 86ms;
transition-property: opacity, transform; }
.navbar-dropdown.is-right {
left: auto;
right: 0; }
.navbar-divider {
display: block; }
.navbar > .container .navbar-brand,
.container > .navbar .navbar-brand {
margin-left: -.75rem; }
.navbar > .container .navbar-menu,
.container > .navbar .navbar-menu {
margin-right: -.75rem; }
.navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop {
left: 0;
position: fixed;
right: 0;
z-index: 30; }
.navbar.is-fixed-bottom-desktop {
bottom: 0; }
.navbar.is-fixed-bottom-desktop.has-shadow {
box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); }
.navbar.is-fixed-top-desktop {
top: 0; }
html.has-navbar-fixed-top-desktop,
body.has-navbar-fixed-top-desktop {
padding-top: 3.25rem; }
html.has-navbar-fixed-bottom-desktop,
body.has-navbar-fixed-bottom-desktop {
padding-bottom: 3.25rem; }
html.has-spaced-navbar-fixed-top,
body.has-spaced-navbar-fixed-top {
padding-top: 5.25rem; }
html.has-spaced-navbar-fixed-bottom,
body.has-spaced-navbar-fixed-bottom {
padding-bottom: 5.25rem; }
a.navbar-item.is-active,
.navbar-link.is-active {
color: #0a0a0a; }
a.navbar-item.is-active:not(:hover),
.navbar-link.is-active:not(:hover) {
background-color: transparent; }
.navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link {
background-color: #fafafa; } }
.pagination {
font-size: 1rem;
margin: -0.25rem; }
.pagination.is-small {
font-size: 0.75rem; }
.pagination.is-medium {
font-size: 1.25rem; }
.pagination.is-large {
font-size: 1.5rem; }
.pagination.is-rounded .pagination-previous,
.pagination.is-rounded .pagination-next {
padding-left: 1em;
padding-right: 1em;
border-radius: 290486px; }
.pagination.is-rounded .pagination-link {
border-radius: 290486px; }
.pagination,
.pagination-list {
align-items: center;
display: flex;
justify-content: center;
text-align: center; }
.pagination-previous,
.pagination-next,
.pagination-link,
.pagination-ellipsis {
font-size: 1em;
padding-left: 0.5em;
padding-right: 0.5em;
justify-content: center;
margin: 0.25rem;
text-align: center; }
.pagination-previous,
.pagination-next,
.pagination-link {
border-color: #dbdbdb;
color: #363636;
min-width: 2.25em; }
.pagination-previous:hover,
.pagination-next:hover,
.pagination-link:hover {
border-color: #b5b5b5;
color: #363636; }
.pagination-previous:focus,
.pagination-next:focus,
.pagination-link:focus {
border-color: #3273dc; }
.pagination-previous:active,
.pagination-next:active,
.pagination-link:active {
box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); }
.pagination-previous[disabled],
.pagination-next[disabled],
.pagination-link[disabled] {
background-color: #dbdbdb;
border-color: #dbdbdb;
box-shadow: none;
color: #7a7a7a;
opacity: 0.5; }
.pagination-previous,
.pagination-next {
padding-left: 0.75em;
padding-right: 0.75em;
white-space: nowrap; }
.pagination-link.is-current {
background-color: #3273dc;
border-color: #3273dc;
color: #fff; }
.pagination-ellipsis {
color: #b5b5b5;
pointer-events: none; }
.pagination-list {
flex-wrap: wrap; }
@media screen and (max-width: 768px) {
.pagination {
flex-wrap: wrap; }
.pagination-previous,
.pagination-next {
flex-grow: 1;
flex-shrink: 1; }
.pagination-list li {
flex-grow: 1;
flex-shrink: 1; } }
@media screen and (min-width: 769px), print {
.pagination-list {
flex-grow: 1;
flex-shrink: 1;
justify-content: flex-start;
order: 1; }
.pagination-previous {
order: 2; }
.pagination-next {
order: 3; }
.pagination {
justify-content: space-between; }
.pagination.is-centered .pagination-previous {
order: 1; }
.pagination.is-centered .pagination-list {
justify-content: center;
order: 2; }
.pagination.is-centered .pagination-next {
order: 3; }
.pagination.is-right .pagination-previous {
order: 1; }
.pagination.is-right .pagination-next {
order: 2; }
.pagination.is-right .pagination-list {
justify-content: flex-end;
order: 3; } }
.panel {
font-size: 1rem; }
.panel:not(:last-child) {
margin-bottom: 1.5rem; }
.panel-heading,
.panel-tabs,
.panel-block {
border-bottom: 1px solid #dbdbdb;
border-left: 1px solid #dbdbdb;
border-right: 1px solid #dbdbdb; }
.panel-heading:first-child,
.panel-tabs:first-child,
.panel-block:first-child {
border-top: 1px solid #dbdbdb; }
.panel-heading {
background-color: whitesmoke;
border-radius: 4px 4px 0 0;
color: #363636;
font-size: 1.25em;
font-weight: 300;
line-height: 1.25;
padding: 0.5em 0.75em; }
.panel-tabs {
align-items: flex-end;
display: flex;
font-size: 0.875em;
justify-content: center; }
.panel-tabs a {
border-bottom: 1px solid #dbdbdb;
margin-bottom: -1px;
padding: 0.5em; }
.panel-tabs a.is-active {
border-bottom-color: #4a4a4a;
color: #363636; }
.panel-list a {
color: #4a4a4a; }
.panel-list a:hover {
color: #3273dc; }
.panel-block {
align-items: center;
color: #363636;
display: flex;
justify-content: flex-start;
padding: 0.5em 0.75em; }
.panel-block input[type="checkbox"] {
margin-right: 0.75em; }
.panel-block > .control {
flex-grow: 1;
flex-shrink: 1;
width: 100%; }
.panel-block.is-wrapped {
flex-wrap: wrap; }
.panel-block.is-active {
border-left-color: #3273dc;
color: #363636; }
.panel-block.is-active .panel-icon {
color: #3273dc; }
a.panel-block,
label.panel-block {
cursor: pointer; }
a.panel-block:hover,
label.panel-block:hover {
background-color: whitesmoke; }
.panel-icon {
display: inline-block;
font-size: 14px;
height: 1em;
line-height: 1em;
text-align: center;
vertical-align: top;
width: 1em;
color: #7a7a7a;
margin-right: 0.75em; }
.panel-icon .fa {
font-size: inherit;
line-height: inherit; }
.tabs {
-webkit-overflow-scrolling: touch;
align-items: stretch;
display: flex;
font-size: 1rem;
justify-content: space-between;
overflow: hidden;
overflow-x: auto;
white-space: nowrap; }
.tabs a {
align-items: center;
border-bottom-color: #dbdbdb;
border-bottom-style: solid;
border-bottom-width: 1px;
color: #4a4a4a;
display: flex;
justify-content: center;
margin-bottom: -1px;
padding: 0.5em 1em;
vertical-align: top; }
.tabs a:hover {
border-bottom-color: #363636;
color: #363636; }
.tabs li {
display: block; }
.tabs li.is-active a {
border-bottom-color: #3273dc;
color: #3273dc; }
.tabs ul {
align-items: center;
border-bottom-color: #dbdbdb;
border-bottom-style: solid;
border-bottom-width: 1px;
display: flex;
flex-grow: 1;
flex-shrink: 0;
justify-content: flex-start; }
.tabs ul.is-left {
padding-right: 0.75em; }
.tabs ul.is-center {
flex: none;
justify-content: center;
padding-left: 0.75em;
padding-right: 0.75em; }
.tabs ul.is-right {
justify-content: flex-end;
padding-left: 0.75em; }
.tabs .icon:first-child {
margin-right: 0.5em; }
.tabs .icon:last-child {
margin-left: 0.5em; }
.tabs.is-centered ul {
justify-content: center; }
.tabs.is-right ul {
justify-content: flex-end; }
.tabs.is-boxed a {
border: 1px solid transparent;
border-radius: 4px 4px 0 0; }
.tabs.is-boxed a:hover {
background-color: whitesmoke;
border-bottom-color: #dbdbdb; }
.tabs.is-boxed li.is-active a {
background-color: white;
border-color: #dbdbdb;
border-bottom-color: transparent !important; }
.tabs.is-fullwidth li {
flex-grow: 1;
flex-shrink: 0; }
.tabs.is-toggle a {
border-color: #dbdbdb;
border-style: solid;
border-width: 1px;
margin-bottom: 0;
position: relative; }
.tabs.is-toggle a:hover {
background-color: whitesmoke;
border-color: #b5b5b5;
z-index: 2; }
.tabs.is-toggle li + li {
margin-left: -1px; }
.tabs.is-toggle li:first-child a {
border-radius: 4px 0 0 4px; }
.tabs.is-toggle li:last-child a {
border-radius: 0 4px 4px 0; }
.tabs.is-toggle li.is-active a {
background-color: #3273dc;
border-color: #3273dc;
color: #fff;
z-index: 1; }
.tabs.is-toggle ul {
border-bottom: none; }
.tabs.is-toggle.is-toggle-rounded li:first-child a {
border-bottom-left-radius: 290486px;
border-top-left-radius: 290486px;
padding-left: 1.25em; }
.tabs.is-toggle.is-toggle-rounded li:last-child a {
border-bottom-right-radius: 290486px;
border-top-right-radius: 290486px;
padding-right: 1.25em; }
.tabs.is-small {
font-size: 0.75rem; }
.tabs.is-medium {
font-size: 1.25rem; }
.tabs.is-large {
font-size: 1.5rem; }
.column {
display: block;
flex-basis: 0;
flex-grow: 1;
flex-shrink: 1;
padding: 0.75rem; }
.columns.is-mobile > .column.is-narrow {
flex: none; }
.columns.is-mobile > .column.is-full {
flex: none;
width: 100%; }
.columns.is-mobile > .column.is-three-quarters {
flex: none;
width: 75%; }
.columns.is-mobile > .column.is-two-thirds {
flex: none;
width: 66.6666%; }
.columns.is-mobile > .column.is-half {
flex: none;
width: 50%; }
.columns.is-mobile > .column.is-one-third {
flex: none;
width: 33.3333%; }
.columns.is-mobile > .column.is-one-quarter {
flex: none;
width: 25%; }
.columns.is-mobile > .column.is-one-fifth {
flex: none;
width: 20%; }
.columns.is-mobile > .column.is-two-fifths {
flex: none;
width: 40%; }
.columns.is-mobile > .column.is-three-fifths {
flex: none;
width: 60%; }
.columns.is-mobile > .column.is-four-fifths {
flex: none;
width: 80%; }
.columns.is-mobile > .column.is-offset-three-quarters {
margin-left: 75%; }
.columns.is-mobile > .column.is-offset-two-thirds {
margin-left: 66.6666%; }
.columns.is-mobile > .column.is-offset-half {
margin-left: 50%; }
.columns.is-mobile > .column.is-offset-one-third {
margin-left: 33.3333%; }
.columns.is-mobile > .column.is-offset-one-quarter {
margin-left: 25%; }
.columns.is-mobile > .column.is-offset-one-fifth {
margin-left: 20%; }
.columns.is-mobile > .column.is-offset-two-fifths {
margin-left: 40%; }
.columns.is-mobile > .column.is-offset-three-fifths {
margin-left: 60%; }
.columns.is-mobile > .column.is-offset-four-fifths {
margin-left: 80%; }
.columns.is-mobile > .column.is-1 {
flex: none;
width: 8.33333%; }
.columns.is-mobile > .column.is-offset-1 {
margin-left: 8.33333%; }
.columns.is-mobile > .column.is-2 {
flex: none;
width: 16.66667%; }
.columns.is-mobile > .column.is-offset-2 {
margin-left: 16.66667%; }
.columns.is-mobile > .column.is-3 {
flex: none;
width: 25%; }
.columns.is-mobile > .column.is-offset-3 {
margin-left: 25%; }
.columns.is-mobile > .column.is-4 {
flex: none;
width: 33.33333%; }
.columns.is-mobile > .column.is-offset-4 {
margin-left: 33.33333%; }
.columns.is-mobile > .column.is-5 {
flex: none;
width: 41.66667%; }
.columns.is-mobile > .column.is-offset-5 {
margin-left: 41.66667%; }
.columns.is-mobile > .column.is-6 {
flex: none;
width: 50%; }
.columns.is-mobile > .column.is-offset-6 {
margin-left: 50%; }
.columns.is-mobile > .column.is-7 {
flex: none;
width: 58.33333%; }
.columns.is-mobile > .column.is-offset-7 {
margin-left: 58.33333%; }
.columns.is-mobile > .column.is-8 {
flex: none;
width: 66.66667%; }
.columns.is-mobile > .column.is-offset-8 {
margin-left: 66.66667%; }
.columns.is-mobile > .column.is-9 {
flex: none;
width: 75%; }
.columns.is-mobile > .column.is-offset-9 {
margin-left: 75%; }
.columns.is-mobile > .column.is-10 {
flex: none;
width: 83.33333%; }
.columns.is-mobile > .column.is-offset-10 {
margin-left: 83.33333%; }
.columns.is-mobile > .column.is-11 {
flex: none;
width: 91.66667%; }
.columns.is-mobile > .column.is-offset-11 {
margin-left: 91.66667%; }
.columns.is-mobile > .column.is-12 {
flex: none;
width: 100%; }
.columns.is-mobile > .column.is-offset-12 {
margin-left: 100%; }
@media screen and (max-width: 768px) {
.column.is-narrow-mobile {
flex: none; }
.column.is-full-mobile {
flex: none;
width: 100%; }
.column.is-three-quarters-mobile {
flex: none;
width: 75%; }
.column.is-two-thirds-mobile {
flex: none;
width: 66.6666%; }
.column.is-half-mobile {
flex: none;
width: 50%; }
.column.is-one-third-mobile {
flex: none;
width: 33.3333%; }
.column.is-one-quarter-mobile {
flex: none;
width: 25%; }
.column.is-one-fifth-mobile {
flex: none;
width: 20%; }
.column.is-two-fifths-mobile {
flex: none;
width: 40%; }
.column.is-three-fifths-mobile {
flex: none;
width: 60%; }
.column.is-four-fifths-mobile {
flex: none;
width: 80%; }
.column.is-offset-three-quarters-mobile {
margin-left: 75%; }
.column.is-offset-two-thirds-mobile {
margin-left: 66.6666%; }
.column.is-offset-half-mobile {
margin-left: 50%; }
.column.is-offset-one-third-mobile {
margin-left: 33.3333%; }
.column.is-offset-one-quarter-mobile {
margin-left: 25%; }
.column.is-offset-one-fifth-mobile {
margin-left: 20%; }
.column.is-offset-two-fifths-mobile {
margin-left: 40%; }
.column.is-offset-three-fifths-mobile {
margin-left: 60%; }
.column.is-offset-four-fifths-mobile {
margin-left: 80%; }
.column.is-1-mobile {
flex: none;
width: 8.33333%; }
.column.is-offset-1-mobile {
margin-left: 8.33333%; }
.column.is-2-mobile {
flex: none;
width: 16.66667%; }
.column.is-offset-2-mobile {
margin-left: 16.66667%; }
.column.is-3-mobile {
flex: none;
width: 25%; }
.column.is-offset-3-mobile {
margin-left: 25%; }
.column.is-4-mobile {
flex: none;
width: 33.33333%; }
.column.is-offset-4-mobile {
margin-left: 33.33333%; }
.column.is-5-mobile {
flex: none;
width: 41.66667%; }
.column.is-offset-5-mobile {
margin-left: 41.66667%; }
.column.is-6-mobile {
flex: none;
width: 50%; }
.column.is-offset-6-mobile {
margin-left: 50%; }
.column.is-7-mobile {
flex: none;
width: 58.33333%; }
.column.is-offset-7-mobile {
margin-left: 58.33333%; }
.column.is-8-mobile {
flex: none;
width: 66.66667%; }
.column.is-offset-8-mobile {
margin-left: 66.66667%; }
.column.is-9-mobile {
flex: none;
width: 75%; }
.column.is-offset-9-mobile {
margin-left: 75%; }
.column.is-10-mobile {
flex: none;
width: 83.33333%; }
.column.is-offset-10-mobile {
margin-left: 83.33333%; }
.column.is-11-mobile {
flex: none;
width: 91.66667%; }
.column.is-offset-11-mobile {
margin-left: 91.66667%; }
.column.is-12-mobile {
flex: none;
width: 100%; }
.column.is-offset-12-mobile {
margin-left: 100%; } }
@media screen and (min-width: 769px), print {
.column.is-narrow, .column.is-narrow-tablet {
flex: none; }
.column.is-full, .column.is-full-tablet {
flex: none;
width: 100%; }
.column.is-three-quarters, .column.is-three-quarters-tablet {
flex: none;
width: 75%; }
.column.is-two-thirds, .column.is-two-thirds-tablet {
flex: none;
width: 66.6666%; }
.column.is-half, .column.is-half-tablet {
flex: none;
width: 50%; }
.column.is-one-third, .column.is-one-third-tablet {
flex: none;
width: 33.3333%; }
.column.is-one-quarter, .column.is-one-quarter-tablet {
flex: none;
width: 25%; }
.column.is-one-fifth, .column.is-one-fifth-tablet {
flex: none;
width: 20%; }
.column.is-two-fifths, .column.is-two-fifths-tablet {
flex: none;
width: 40%; }
.column.is-three-fifths, .column.is-three-fifths-tablet {
flex: none;
width: 60%; }
.column.is-four-fifths, .column.is-four-fifths-tablet {
flex: none;
width: 80%; }
.column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet {
margin-left: 75%; }
.column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet {
margin-left: 66.6666%; }
.column.is-offset-half, .column.is-offset-half-tablet {
margin-left: 50%; }
.column.is-offset-one-third, .column.is-offset-one-third-tablet {
margin-left: 33.3333%; }
.column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet {
margin-left: 25%; }
.column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet {
margin-left: 20%; }
.column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet {
margin-left: 40%; }
.column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet {
margin-left: 60%; }
.column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet {
margin-left: 80%; }
.column.is-1, .column.is-1-tablet {
flex: none;
width: 8.33333%; }
.column.is-offset-1, .column.is-offset-1-tablet {
margin-left: 8.33333%; }
.column.is-2, .column.is-2-tablet {
flex: none;
width: 16.66667%; }
.column.is-offset-2, .column.is-offset-2-tablet {
margin-left: 16.66667%; }
.column.is-3, .column.is-3-tablet {
flex: none;
width: 25%; }
.column.is-offset-3, .column.is-offset-3-tablet {
margin-left: 25%; }
.column.is-4, .column.is-4-tablet {
flex: none;
width: 33.33333%; }
.column.is-offset-4, .column.is-offset-4-tablet {
margin-left: 33.33333%; }
.column.is-5, .column.is-5-tablet {
flex: none;
width: 41.66667%; }
.column.is-offset-5, .column.is-offset-5-tablet {
margin-left: 41.66667%; }
.column.is-6, .column.is-6-tablet {
flex: none;
width: 50%; }
.column.is-offset-6, .column.is-offset-6-tablet {
margin-left: 50%; }
.column.is-7, .column.is-7-tablet {
flex: none;
width: 58.33333%; }
.column.is-offset-7, .column.is-offset-7-tablet {
margin-left: 58.33333%; }
.column.is-8, .column.is-8-tablet {
flex: none;
width: 66.66667%; }
.column.is-offset-8, .column.is-offset-8-tablet {
margin-left: 66.66667%; }
.column.is-9, .column.is-9-tablet {
flex: none;
width: 75%; }
.column.is-offset-9, .column.is-offset-9-tablet {
margin-left: 75%; }
.column.is-10, .column.is-10-tablet {
flex: none;
width: 83.33333%; }
.column.is-offset-10, .column.is-offset-10-tablet {
margin-left: 83.33333%; }
.column.is-11, .column.is-11-tablet {
flex: none;
width: 91.66667%; }
.column.is-offset-11, .column.is-offset-11-tablet {
margin-left: 91.66667%; }
.column.is-12, .column.is-12-tablet {
flex: none;
width: 100%; }
.column.is-offset-12, .column.is-offset-12-tablet {
margin-left: 100%; } }
@media screen and (max-width: 1087px) {
.column.is-narrow-touch {
flex: none; }
.column.is-full-touch {
flex: none;
width: 100%; }
.column.is-three-quarters-touch {
flex: none;
width: 75%; }
.column.is-two-thirds-touch {
flex: none;
width: 66.6666%; }
.column.is-half-touch {
flex: none;
width: 50%; }
.column.is-one-third-touch {
flex: none;
width: 33.3333%; }
.column.is-one-quarter-touch {
flex: none;
width: 25%; }
.column.is-one-fifth-touch {
flex: none;
width: 20%; }
.column.is-two-fifths-touch {
flex: none;
width: 40%; }
.column.is-three-fifths-touch {
flex: none;
width: 60%; }
.column.is-four-fifths-touch {
flex: none;
width: 80%; }
.column.is-offset-three-quarters-touch {
margin-left: 75%; }
.column.is-offset-two-thirds-touch {
margin-left: 66.6666%; }
.column.is-offset-half-touch {
margin-left: 50%; }
.column.is-offset-one-third-touch {
margin-left: 33.3333%; }
.column.is-offset-one-quarter-touch {
margin-left: 25%; }
.column.is-offset-one-fifth-touch {
margin-left: 20%; }
.column.is-offset-two-fifths-touch {
margin-left: 40%; }
.column.is-offset-three-fifths-touch {
margin-left: 60%; }
.column.is-offset-four-fifths-touch {
margin-left: 80%; }
.column.is-1-touch {
flex: none;
width: 8.33333%; }
.column.is-offset-1-touch {
margin-left: 8.33333%; }
.column.is-2-touch {
flex: none;
width: 16.66667%; }
.column.is-offset-2-touch {
margin-left: 16.66667%; }
.column.is-3-touch {
flex: none;
width: 25%; }
.column.is-offset-3-touch {
margin-left: 25%; }
.column.is-4-touch {
flex: none;
width: 33.33333%; }
.column.is-offset-4-touch {
margin-left: 33.33333%; }
.column.is-5-touch {
flex: none;
width: 41.66667%; }
.column.is-offset-5-touch {
margin-left: 41.66667%; }
.column.is-6-touch {
flex: none;
width: 50%; }
.column.is-offset-6-touch {
margin-left: 50%; }
.column.is-7-touch {
flex: none;
width: 58.33333%; }
.column.is-offset-7-touch {
margin-left: 58.33333%; }
.column.is-8-touch {
flex: none;
width: 66.66667%; }
.column.is-offset-8-touch {
margin-left: 66.66667%; }
.column.is-9-touch {
flex: none;
width: 75%; }
.column.is-offset-9-touch {
margin-left: 75%; }
.column.is-10-touch {
flex: none;
width: 83.33333%; }
.column.is-offset-10-touch {
margin-left: 83.33333%; }
.column.is-11-touch {
flex: none;
width: 91.66667%; }
.column.is-offset-11-touch {
margin-left: 91.66667%; }
.column.is-12-touch {
flex: none;
width: 100%; }
.column.is-offset-12-touch {
margin-left: 100%; } }
@media screen and (min-width: 1088px) {
.column.is-narrow-desktop {
flex: none; }
.column.is-full-desktop {
flex: none;
width: 100%; }
.column.is-three-quarters-desktop {
flex: none;
width: 75%; }
.column.is-two-thirds-desktop {
flex: none;
width: 66.6666%; }
.column.is-half-desktop {
flex: none;
width: 50%; }
.column.is-one-third-desktop {
flex: none;
width: 33.3333%; }
.column.is-one-quarter-desktop {
flex: none;
width: 25%; }
.column.is-one-fifth-desktop {
flex: none;
width: 20%; }
.column.is-two-fifths-desktop {
flex: none;
width: 40%; }
.column.is-three-fifths-desktop {
flex: none;
width: 60%; }
.column.is-four-fifths-desktop {
flex: none;
width: 80%; }
.column.is-offset-three-quarters-desktop {
margin-left: 75%; }
.column.is-offset-two-thirds-desktop {
margin-left: 66.6666%; }
.column.is-offset-half-desktop {
margin-left: 50%; }
.column.is-offset-one-third-desktop {
margin-left: 33.3333%; }
.column.is-offset-one-quarter-desktop {
margin-left: 25%; }
.column.is-offset-one-fifth-desktop {
margin-left: 20%; }
.column.is-offset-two-fifths-desktop {
margin-left: 40%; }
.column.is-offset-three-fifths-desktop {
margin-left: 60%; }
.column.is-offset-four-fifths-desktop {
margin-left: 80%; }
.column.is-1-desktop {
flex: none;
width: 8.33333%; }
.column.is-offset-1-desktop {
margin-left: 8.33333%; }
.column.is-2-desktop {
flex: none;
width: 16.66667%; }
.column.is-offset-2-desktop {
margin-left: 16.66667%; }
.column.is-3-desktop {
flex: none;
width: 25%; }
.column.is-offset-3-desktop {
margin-left: 25%; }
.column.is-4-desktop {
flex: none;
width: 33.33333%; }
.column.is-offset-4-desktop {
margin-left: 33.33333%; }
.column.is-5-desktop {
flex: none;
width: 41.66667%; }
.column.is-offset-5-desktop {
margin-left: 41.66667%; }
.column.is-6-desktop {
flex: none;
width: 50%; }
.column.is-offset-6-desktop {
margin-left: 50%; }
.column.is-7-desktop {
flex: none;
width: 58.33333%; }
.column.is-offset-7-desktop {
margin-left: 58.33333%; }
.column.is-8-desktop {
flex: none;
width: 66.66667%; }
.column.is-offset-8-desktop {
margin-left: 66.66667%; }
.column.is-9-desktop {
flex: none;
width: 75%; }
.column.is-offset-9-desktop {
margin-left: 75%; }
.column.is-10-desktop {
flex: none;
width: 83.33333%; }
.column.is-offset-10-desktop {
margin-left: 83.33333%; }
.column.is-11-desktop {
flex: none;
width: 91.66667%; }
.column.is-offset-11-desktop {
margin-left: 91.66667%; }
.column.is-12-desktop {
flex: none;
width: 100%; }
.column.is-offset-12-desktop {
margin-left: 100%; } }
@media screen and (min-width: 1280px) {
.column.is-narrow-widescreen {
flex: none; }
.column.is-full-widescreen {
flex: none;
width: 100%; }
.column.is-three-quarters-widescreen {
flex: none;
width: 75%; }
.column.is-two-thirds-widescreen {
flex: none;
width: 66.6666%; }
.column.is-half-widescreen {
flex: none;
width: 50%; }
.column.is-one-third-widescreen {
flex: none;
width: 33.3333%; }
.column.is-one-quarter-widescreen {
flex: none;
width: 25%; }
.column.is-one-fifth-widescreen {
flex: none;
width: 20%; }
.column.is-two-fifths-widescreen {
flex: none;
width: 40%; }
.column.is-three-fifths-widescreen {
flex: none;
width: 60%; }
.column.is-four-fifths-widescreen {
flex: none;
width: 80%; }
.column.is-offset-three-quarters-widescreen {
margin-left: 75%; }
.column.is-offset-two-thirds-widescreen {
margin-left: 66.6666%; }
.column.is-offset-half-widescreen {
margin-left: 50%; }
.column.is-offset-one-third-widescreen {
margin-left: 33.3333%; }
.column.is-offset-one-quarter-widescreen {
margin-left: 25%; }
.column.is-offset-one-fifth-widescreen {
margin-left: 20%; }
.column.is-offset-two-fifths-widescreen {
margin-left: 40%; }
.column.is-offset-three-fifths-widescreen {
margin-left: 60%; }
.column.is-offset-four-fifths-widescreen {
margin-left: 80%; }
.column.is-1-widescreen {
flex: none;
width: 8.33333%; }
.column.is-offset-1-widescreen {
margin-left: 8.33333%; }
.column.is-2-widescreen {
flex: none;
width: 16.66667%; }
.column.is-offset-2-widescreen {
margin-left: 16.66667%; }
.column.is-3-widescreen {
flex: none;
width: 25%; }
.column.is-offset-3-widescreen {
margin-left: 25%; }
.column.is-4-widescreen {
flex: none;
width: 33.33333%; }
.column.is-offset-4-widescreen {
margin-left: 33.33333%; }
.column.is-5-widescreen {
flex: none;
width: 41.66667%; }
.column.is-offset-5-widescreen {
margin-left: 41.66667%; }
.column.is-6-widescreen {
flex: none;
width: 50%; }
.column.is-offset-6-widescreen {
margin-left: 50%; }
.column.is-7-widescreen {
flex: none;
width: 58.33333%; }
.column.is-offset-7-widescreen {
margin-left: 58.33333%; }
.column.is-8-widescreen {
flex: none;
width: 66.66667%; }
.column.is-offset-8-widescreen {
margin-left: 66.66667%; }
.column.is-9-widescreen {
flex: none;
width: 75%; }
.column.is-offset-9-widescreen {
margin-left: 75%; }
.column.is-10-widescreen {
flex: none;
width: 83.33333%; }
.column.is-offset-10-widescreen {
margin-left: 83.33333%; }
.column.is-11-widescreen {
flex: none;
width: 91.66667%; }
.column.is-offset-11-widescreen {
margin-left: 91.66667%; }
.column.is-12-widescreen {
flex: none;
width: 100%; }
.column.is-offset-12-widescreen {
margin-left: 100%; } }
@media screen and (min-width: 1472px) {
.column.is-narrow-fullhd {
flex: none; }
.column.is-full-fullhd {
flex: none;
width: 100%; }
.column.is-three-quarters-fullhd {
flex: none;
width: 75%; }
.column.is-two-thirds-fullhd {
flex: none;
width: 66.6666%; }
.column.is-half-fullhd {
flex: none;
width: 50%; }
.column.is-one-third-fullhd {
flex: none;
width: 33.3333%; }
.column.is-one-quarter-fullhd {
flex: none;
width: 25%; }
.column.is-one-fifth-fullhd {
flex: none;
width: 20%; }
.column.is-two-fifths-fullhd {
flex: none;
width: 40%; }
.column.is-three-fifths-fullhd {
flex: none;
width: 60%; }
.column.is-four-fifths-fullhd {
flex: none;
width: 80%; }
.column.is-offset-three-quarters-fullhd {
margin-left: 75%; }
.column.is-offset-two-thirds-fullhd {
margin-left: 66.6666%; }
.column.is-offset-half-fullhd {
margin-left: 50%; }
.column.is-offset-one-third-fullhd {
margin-left: 33.3333%; }
.column.is-offset-one-quarter-fullhd {
margin-left: 25%; }
.column.is-offset-one-fifth-fullhd {
margin-left: 20%; }
.column.is-offset-two-fifths-fullhd {
margin-left: 40%; }
.column.is-offset-three-fifths-fullhd {
margin-left: 60%; }
.column.is-offset-four-fifths-fullhd {
margin-left: 80%; }
.column.is-1-fullhd {
flex: none;
width: 8.33333%; }
.column.is-offset-1-fullhd {
margin-left: 8.33333%; }
.column.is-2-fullhd {
flex: none;
width: 16.66667%; }
.column.is-offset-2-fullhd {
margin-left: 16.66667%; }
.column.is-3-fullhd {
flex: none;
width: 25%; }
.column.is-offset-3-fullhd {
margin-left: 25%; }
.column.is-4-fullhd {
flex: none;
width: 33.33333%; }
.column.is-offset-4-fullhd {
margin-left: 33.33333%; }
.column.is-5-fullhd {
flex: none;
width: 41.66667%; }
.column.is-offset-5-fullhd {
margin-left: 41.66667%; }
.column.is-6-fullhd {
flex: none;
width: 50%; }
.column.is-offset-6-fullhd {
margin-left: 50%; }
.column.is-7-fullhd {
flex: none;
width: 58.33333%; }
.column.is-offset-7-fullhd {
margin-left: 58.33333%; }
.column.is-8-fullhd {
flex: none;
width: 66.66667%; }
.column.is-offset-8-fullhd {
margin-left: 66.66667%; }
.column.is-9-fullhd {
flex: none;
width: 75%; }
.column.is-offset-9-fullhd {
margin-left: 75%; }
.column.is-10-fullhd {
flex: none;
width: 83.33333%; }
.column.is-offset-10-fullhd {
margin-left: 83.33333%; }
.column.is-11-fullhd {
flex: none;
width: 91.66667%; }
.column.is-offset-11-fullhd {
margin-left: 91.66667%; }
.column.is-12-fullhd {
flex: none;
width: 100%; }
.column.is-offset-12-fullhd {
margin-left: 100%; } }
.columns {
margin-left: -0.75rem;
margin-right: -0.75rem;
margin-top: -0.75rem; }
.columns:last-child {
margin-bottom: -0.75rem; }
.columns:not(:last-child) {
margin-bottom: calc(1.5rem - 0.75rem); }
.columns.is-centered {
justify-content: center; }
.columns.is-gapless {
margin-left: 0;
margin-right: 0;
margin-top: 0; }
.columns.is-gapless > .column {
margin: 0;
padding: 0 !important; }
.columns.is-gapless:not(:last-child) {
margin-bottom: 1.5rem; }
.columns.is-gapless:last-child {
margin-bottom: 0; }
.columns.is-mobile {
display: flex; }
.columns.is-multiline {
flex-wrap: wrap; }
.columns.is-vcentered {
align-items: center; }
@media screen and (min-width: 769px), print {
.columns:not(.is-desktop) {
display: flex; } }
@media screen and (min-width: 1088px) {
.columns.is-desktop {
display: flex; } }
.columns.is-variable {
--columnGap: 0.75rem;
margin-left: calc(-1 * var(--columnGap));
margin-right: calc(-1 * var(--columnGap)); }
.columns.is-variable .column {
padding-left: var(--columnGap);
padding-right: var(--columnGap); }
.columns.is-variable.is-0 {
--columnGap: 0rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-0-mobile {
--columnGap: 0rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-0-tablet {
--columnGap: 0rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-0-tablet-only {
--columnGap: 0rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-0-touch {
--columnGap: 0rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-0-desktop {
--columnGap: 0rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-0-desktop-only {
--columnGap: 0rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-0-widescreen {
--columnGap: 0rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-0-widescreen-only {
--columnGap: 0rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-0-fullhd {
--columnGap: 0rem; } }
.columns.is-variable.is-1 {
--columnGap: 0.25rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-1-mobile {
--columnGap: 0.25rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-1-tablet {
--columnGap: 0.25rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-1-tablet-only {
--columnGap: 0.25rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-1-touch {
--columnGap: 0.25rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-1-desktop {
--columnGap: 0.25rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-1-desktop-only {
--columnGap: 0.25rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-1-widescreen {
--columnGap: 0.25rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-1-widescreen-only {
--columnGap: 0.25rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-1-fullhd {
--columnGap: 0.25rem; } }
.columns.is-variable.is-2 {
--columnGap: 0.5rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-2-mobile {
--columnGap: 0.5rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-2-tablet {
--columnGap: 0.5rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-2-tablet-only {
--columnGap: 0.5rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-2-touch {
--columnGap: 0.5rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-2-desktop {
--columnGap: 0.5rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-2-desktop-only {
--columnGap: 0.5rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-2-widescreen {
--columnGap: 0.5rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-2-widescreen-only {
--columnGap: 0.5rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-2-fullhd {
--columnGap: 0.5rem; } }
.columns.is-variable.is-3 {
--columnGap: 0.75rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-3-mobile {
--columnGap: 0.75rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-3-tablet {
--columnGap: 0.75rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-3-tablet-only {
--columnGap: 0.75rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-3-touch {
--columnGap: 0.75rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-3-desktop {
--columnGap: 0.75rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-3-desktop-only {
--columnGap: 0.75rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-3-widescreen {
--columnGap: 0.75rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-3-widescreen-only {
--columnGap: 0.75rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-3-fullhd {
--columnGap: 0.75rem; } }
.columns.is-variable.is-4 {
--columnGap: 1rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-4-mobile {
--columnGap: 1rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-4-tablet {
--columnGap: 1rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-4-tablet-only {
--columnGap: 1rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-4-touch {
--columnGap: 1rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-4-desktop {
--columnGap: 1rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-4-desktop-only {
--columnGap: 1rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-4-widescreen {
--columnGap: 1rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-4-widescreen-only {
--columnGap: 1rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-4-fullhd {
--columnGap: 1rem; } }
.columns.is-variable.is-5 {
--columnGap: 1.25rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-5-mobile {
--columnGap: 1.25rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-5-tablet {
--columnGap: 1.25rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-5-tablet-only {
--columnGap: 1.25rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-5-touch {
--columnGap: 1.25rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-5-desktop {
--columnGap: 1.25rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-5-desktop-only {
--columnGap: 1.25rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-5-widescreen {
--columnGap: 1.25rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-5-widescreen-only {
--columnGap: 1.25rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-5-fullhd {
--columnGap: 1.25rem; } }
.columns.is-variable.is-6 {
--columnGap: 1.5rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-6-mobile {
--columnGap: 1.5rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-6-tablet {
--columnGap: 1.5rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-6-tablet-only {
--columnGap: 1.5rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-6-touch {
--columnGap: 1.5rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-6-desktop {
--columnGap: 1.5rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-6-desktop-only {
--columnGap: 1.5rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-6-widescreen {
--columnGap: 1.5rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-6-widescreen-only {
--columnGap: 1.5rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-6-fullhd {
--columnGap: 1.5rem; } }
.columns.is-variable.is-7 {
--columnGap: 1.75rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-7-mobile {
--columnGap: 1.75rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-7-tablet {
--columnGap: 1.75rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-7-tablet-only {
--columnGap: 1.75rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-7-touch {
--columnGap: 1.75rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-7-desktop {
--columnGap: 1.75rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-7-desktop-only {
--columnGap: 1.75rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-7-widescreen {
--columnGap: 1.75rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-7-widescreen-only {
--columnGap: 1.75rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-7-fullhd {
--columnGap: 1.75rem; } }
.columns.is-variable.is-8 {
--columnGap: 2rem; }
@media screen and (max-width: 768px) {
.columns.is-variable.is-8-mobile {
--columnGap: 2rem; } }
@media screen and (min-width: 769px), print {
.columns.is-variable.is-8-tablet {
--columnGap: 2rem; } }
@media screen and (min-width: 769px) and (max-width: 1087px) {
.columns.is-variable.is-8-tablet-only {
--columnGap: 2rem; } }
@media screen and (max-width: 1087px) {
.columns.is-variable.is-8-touch {
--columnGap: 2rem; } }
@media screen and (min-width: 1088px) {
.columns.is-variable.is-8-desktop {
--columnGap: 2rem; } }
@media screen and (min-width: 1088px) and (max-width: 1279px) {
.columns.is-variable.is-8-desktop-only {
--columnGap: 2rem; } }
@media screen and (min-width: 1280px) {
.columns.is-variable.is-8-widescreen {
--columnGap: 2rem; } }
@media screen and (min-width: 1280px) and (max-width: 1471px) {
.columns.is-variable.is-8-widescreen-only {
--columnGap: 2rem; } }
@media screen and (min-width: 1472px) {
.columns.is-variable.is-8-fullhd {
--columnGap: 2rem; } }
.tile {
align-items: stretch;
display: block;
flex-basis: 0;
flex-grow: 1;
flex-shrink: 1;
min-height: min-content; }
.tile.is-ancestor {
margin-left: -0.75rem;
margin-right: -0.75rem;
margin-top: -0.75rem; }
.tile.is-ancestor:last-child {
margin-bottom: -0.75rem; }
.tile.is-ancestor:not(:last-child) {
margin-bottom: 0.75rem; }
.tile.is-child {
margin: 0 !important; }
.tile.is-parent {
padding: 0.75rem; }
.tile.is-vertical {
flex-direction: column; }
.tile.is-vertical > .tile.is-child:not(:last-child) {
margin-bottom: 1.5rem !important; }
@media screen and (min-width: 769px), print {
.tile:not(.is-child) {
display: flex; }
.tile.is-1 {
flex: none;
width: 8.33333%; }
.tile.is-2 {
flex: none;
width: 16.66667%; }
.tile.is-3 {
flex: none;
width: 25%; }
.tile.is-4 {
flex: none;
width: 33.33333%; }
.tile.is-5 {
flex: none;
width: 41.66667%; }
.tile.is-6 {
flex: none;
width: 50%; }
.tile.is-7 {
flex: none;
width: 58.33333%; }
.tile.is-8 {
flex: none;
width: 66.66667%; }
.tile.is-9 {
flex: none;
width: 75%; }
.tile.is-10 {
flex: none;
width: 83.33333%; }
.tile.is-11 {
flex: none;
width: 91.66667%; }
.tile.is-12 {
flex: none;
width: 100%; } }
.hero {
align-items: stretch;
display: flex;
flex-direction: column;
justify-content: space-between; }
.hero .navbar {
background: none; }
.hero .tabs ul {
border-bottom: none; }
.hero.is-white {
background-color: white;
color: #0a0a0a; }
.hero.is-white a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-white strong {
color: inherit; }
.hero.is-white .title {
color: #0a0a0a; }
.hero.is-white .subtitle {
color: rgba(10, 10, 10, 0.9); }
.hero.is-white .subtitle a:not(.button),
.hero.is-white .subtitle strong {
color: #0a0a0a; }
@media screen and (max-width: 1087px) {
.hero.is-white .navbar-menu {
background-color: white; } }
.hero.is-white .navbar-item,
.hero.is-white .navbar-link {
color: rgba(10, 10, 10, 0.7); }
.hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active,
.hero.is-white .navbar-link:hover,
.hero.is-white .navbar-link.is-active {
background-color: #f2f2f2;
color: #0a0a0a; }
.hero.is-white .tabs a {
color: #0a0a0a;
opacity: 0.9; }
.hero.is-white .tabs a:hover {
opacity: 1; }
.hero.is-white .tabs li.is-active a {
opacity: 1; }
.hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a {
color: #0a0a0a; }
.hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover {
background-color: #0a0a0a;
border-color: #0a0a0a;
color: white; }
.hero.is-white.is-bold {
background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); }
@media screen and (max-width: 768px) {
.hero.is-white.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } }
.hero.is-black {
background-color: #0a0a0a;
color: white; }
.hero.is-black a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-black strong {
color: inherit; }
.hero.is-black .title {
color: white; }
.hero.is-black .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-black .subtitle a:not(.button),
.hero.is-black .subtitle strong {
color: white; }
@media screen and (max-width: 1087px) {
.hero.is-black .navbar-menu {
background-color: #0a0a0a; } }
.hero.is-black .navbar-item,
.hero.is-black .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active,
.hero.is-black .navbar-link:hover,
.hero.is-black .navbar-link.is-active {
background-color: black;
color: white; }
.hero.is-black .tabs a {
color: white;
opacity: 0.9; }
.hero.is-black .tabs a:hover {
opacity: 1; }
.hero.is-black .tabs li.is-active a {
opacity: 1; }
.hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a {
color: white; }
.hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover {
background-color: white;
border-color: white;
color: #0a0a0a; }
.hero.is-black.is-bold {
background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); }
@media screen and (max-width: 768px) {
.hero.is-black.is-bold .navbar-menu {
background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } }
.hero.is-light {
background-color: whitesmoke;
color: #363636; }
.hero.is-light a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-light strong {
color: inherit; }
.hero.is-light .title {
color: #363636; }
.hero.is-light .subtitle {
color: rgba(54, 54, 54, 0.9); }
.hero.is-light .subtitle a:not(.button),
.hero.is-light .subtitle strong {
color: #363636; }
@media screen and (max-width: 1087px) {
.hero.is-light .navbar-menu {
background-color: whitesmoke; } }
.hero.is-light .navbar-item,
.hero.is-light .navbar-link {
color: rgba(54, 54, 54, 0.7); }
.hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active,
.hero.is-light .navbar-link:hover,
.hero.is-light .navbar-link.is-active {
background-color: #e8e8e8;
color: #363636; }
.hero.is-light .tabs a {
color: #363636;
opacity: 0.9; }
.hero.is-light .tabs a:hover {
opacity: 1; }
.hero.is-light .tabs li.is-active a {
opacity: 1; }
.hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a {
color: #363636; }
.hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover {
background-color: #363636;
border-color: #363636;
color: whitesmoke; }
.hero.is-light.is-bold {
background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); }
@media screen and (max-width: 768px) {
.hero.is-light.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } }
.hero.is-dark {
background-color: #363636;
color: whitesmoke; }
.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-dark strong {
color: inherit; }
.hero.is-dark .title {
color: whitesmoke; }
.hero.is-dark .subtitle {
color: rgba(245, 245, 245, 0.9); }
.hero.is-dark .subtitle a:not(.button),
.hero.is-dark .subtitle strong {
color: whitesmoke; }
@media screen and (max-width: 1087px) {
.hero.is-dark .navbar-menu {
background-color: #363636; } }
.hero.is-dark .navbar-item,
.hero.is-dark .navbar-link {
color: rgba(245, 245, 245, 0.7); }
.hero.is-dark a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active,
.hero.is-dark .navbar-link:hover,
.hero.is-dark .navbar-link.is-active {
background-color: #292929;
color: whitesmoke; }
.hero.is-dark .tabs a {
color: whitesmoke;
opacity: 0.9; }
.hero.is-dark .tabs a:hover {
opacity: 1; }
.hero.is-dark .tabs li.is-active a {
opacity: 1; }
.hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a {
color: whitesmoke; }
.hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover {
background-color: whitesmoke;
border-color: whitesmoke;
color: #363636; }
.hero.is-dark.is-bold {
background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); }
@media screen and (max-width: 768px) {
.hero.is-dark.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } }
.hero.is-primary {
background-color: #00d1b2;
color: #fff; }
.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-primary strong {
color: inherit; }
.hero.is-primary .title {
color: #fff; }
.hero.is-primary .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-primary .subtitle a:not(.button),
.hero.is-primary .subtitle strong {
color: #fff; }
@media screen and (max-width: 1087px) {
.hero.is-primary .navbar-menu {
background-color: #00d1b2; } }
.hero.is-primary .navbar-item,
.hero.is-primary .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-primary a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active,
.hero.is-primary .navbar-link:hover,
.hero.is-primary .navbar-link.is-active {
background-color: #00b89c;
color: #fff; }
.hero.is-primary .tabs a {
color: #fff;
opacity: 0.9; }
.hero.is-primary .tabs a:hover {
opacity: 1; }
.hero.is-primary .tabs li.is-active a {
opacity: 1; }
.hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a {
color: #fff; }
.hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover {
background-color: #fff;
border-color: #fff;
color: #00d1b2; }
.hero.is-primary.is-bold {
background-image: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%); }
@media screen and (max-width: 768px) {
.hero.is-primary.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%); } }
.hero.is-link {
background-color: #3273dc;
color: #fff; }
.hero.is-link a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-link strong {
color: inherit; }
.hero.is-link .title {
color: #fff; }
.hero.is-link .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-link .subtitle a:not(.button),
.hero.is-link .subtitle strong {
color: #fff; }
@media screen and (max-width: 1087px) {
.hero.is-link .navbar-menu {
background-color: #3273dc; } }
.hero.is-link .navbar-item,
.hero.is-link .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active,
.hero.is-link .navbar-link:hover,
.hero.is-link .navbar-link.is-active {
background-color: #2366d1;
color: #fff; }
.hero.is-link .tabs a {
color: #fff;
opacity: 0.9; }
.hero.is-link .tabs a:hover {
opacity: 1; }
.hero.is-link .tabs li.is-active a {
opacity: 1; }
.hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a {
color: #fff; }
.hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover {
background-color: #fff;
border-color: #fff;
color: #3273dc; }
.hero.is-link.is-bold {
background-image: linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%); }
@media screen and (max-width: 768px) {
.hero.is-link.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%); } }
.hero.is-info {
background-color: #209cee;
color: #fff; }
.hero.is-info a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-info strong {
color: inherit; }
.hero.is-info .title {
color: #fff; }
.hero.is-info .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-info .subtitle a:not(.button),
.hero.is-info .subtitle strong {
color: #fff; }
@media screen and (max-width: 1087px) {
.hero.is-info .navbar-menu {
background-color: #209cee; } }
.hero.is-info .navbar-item,
.hero.is-info .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active,
.hero.is-info .navbar-link:hover,
.hero.is-info .navbar-link.is-active {
background-color: #118fe4;
color: #fff; }
.hero.is-info .tabs a {
color: #fff;
opacity: 0.9; }
.hero.is-info .tabs a:hover {
opacity: 1; }
.hero.is-info .tabs li.is-active a {
opacity: 1; }
.hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a {
color: #fff; }
.hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover {
background-color: #fff;
border-color: #fff;
color: #209cee; }
.hero.is-info.is-bold {
background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); }
@media screen and (max-width: 768px) {
.hero.is-info.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } }
.hero.is-success {
background-color: #23d160;
color: #fff; }
.hero.is-success a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-success strong {
color: inherit; }
.hero.is-success .title {
color: #fff; }
.hero.is-success .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-success .subtitle a:not(.button),
.hero.is-success .subtitle strong {
color: #fff; }
@media screen and (max-width: 1087px) {
.hero.is-success .navbar-menu {
background-color: #23d160; } }
.hero.is-success .navbar-item,
.hero.is-success .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active,
.hero.is-success .navbar-link:hover,
.hero.is-success .navbar-link.is-active {
background-color: #20bc56;
color: #fff; }
.hero.is-success .tabs a {
color: #fff;
opacity: 0.9; }
.hero.is-success .tabs a:hover {
opacity: 1; }
.hero.is-success .tabs li.is-active a {
opacity: 1; }
.hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a {
color: #fff; }
.hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover {
background-color: #fff;
border-color: #fff;
color: #23d160; }
.hero.is-success.is-bold {
background-image: linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%); }
@media screen and (max-width: 768px) {
.hero.is-success.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%); } }
.hero.is-warning {
background-color: #ffdd57;
color: rgba(0, 0, 0, 0.7); }
.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-warning strong {
color: inherit; }
.hero.is-warning .title {
color: rgba(0, 0, 0, 0.7); }
.hero.is-warning .subtitle {
color: rgba(0, 0, 0, 0.9); }
.hero.is-warning .subtitle a:not(.button),
.hero.is-warning .subtitle strong {
color: rgba(0, 0, 0, 0.7); }
@media screen and (max-width: 1087px) {
.hero.is-warning .navbar-menu {
background-color: #ffdd57; } }
.hero.is-warning .navbar-item,
.hero.is-warning .navbar-link {
color: rgba(0, 0, 0, 0.7); }
.hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active,
.hero.is-warning .navbar-link:hover,
.hero.is-warning .navbar-link.is-active {
background-color: #ffd83d;
color: rgba(0, 0, 0, 0.7); }
.hero.is-warning .tabs a {
color: rgba(0, 0, 0, 0.7);
opacity: 0.9; }
.hero.is-warning .tabs a:hover {
opacity: 1; }
.hero.is-warning .tabs li.is-active a {
opacity: 1; }
.hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a {
color: rgba(0, 0, 0, 0.7); }
.hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover {
background-color: rgba(0, 0, 0, 0.7);
border-color: rgba(0, 0, 0, 0.7);
color: #ffdd57; }
.hero.is-warning.is-bold {
background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); }
@media screen and (max-width: 768px) {
.hero.is-warning.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } }
.hero.is-danger {
background-color: #ff3860;
color: #fff; }
.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag),
.hero.is-danger strong {
color: inherit; }
.hero.is-danger .title {
color: #fff; }
.hero.is-danger .subtitle {
color: rgba(255, 255, 255, 0.9); }
.hero.is-danger .subtitle a:not(.button),
.hero.is-danger .subtitle strong {
color: #fff; }
@media screen and (max-width: 1087px) {
.hero.is-danger .navbar-menu {
background-color: #ff3860; } }
.hero.is-danger .navbar-item,
.hero.is-danger .navbar-link {
color: rgba(255, 255, 255, 0.7); }
.hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active,
.hero.is-danger .navbar-link:hover,
.hero.is-danger .navbar-link.is-active {
background-color: #ff1f4b;
color: #fff; }
.hero.is-danger .tabs a {
color: #fff;
opacity: 0.9; }
.hero.is-danger .tabs a:hover {
opacity: 1; }
.hero.is-danger .tabs li.is-active a {
opacity: 1; }
.hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a {
color: #fff; }
.hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover {
background-color: rgba(10, 10, 10, 0.1); }
.hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover {
background-color: #fff;
border-color: #fff;
color: #ff3860; }
.hero.is-danger.is-bold {
background-image: linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%); }
@media screen and (max-width: 768px) {
.hero.is-danger.is-bold .navbar-menu {
background-image: linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%); } }
.hero.is-small .hero-body {
padding-bottom: 1.5rem;
padding-top: 1.5rem; }
@media screen and (min-width: 769px), print {
.hero.is-medium .hero-body {
padding-bottom: 9rem;
padding-top: 9rem; } }
@media screen and (min-width: 769px), print {
.hero.is-large .hero-body {
padding-bottom: 18rem;
padding-top: 18rem; } }
.hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body {
align-items: center;
display: flex; }
.hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container {
flex-grow: 1;
flex-shrink: 1; }
.hero.is-halfheight {
min-height: 50vh; }
.hero.is-fullheight {
min-height: 100vh; }
.hero.is-fullheight-with-navbar {
min-height: calc(100vh - 3.25rem); }
.hero-video {
overflow: hidden; }
.hero-video video {
left: 50%;
min-height: 100%;
min-width: 100%;
position: absolute;
top: 50%;
transform: translate3d(-50%, -50%, 0); }
.hero-video.is-transparent {
opacity: 0.3; }
@media screen and (max-width: 768px) {
.hero-video {
display: none; } }
.hero-buttons {
margin-top: 1.5rem; }
@media screen and (max-width: 768px) {
.hero-buttons .button {
display: flex; }
.hero-buttons .button:not(:last-child) {
margin-bottom: 0.75rem; } }
@media screen and (min-width: 769px), print {
.hero-buttons {
display: flex;
justify-content: center; }
.hero-buttons .button:not(:last-child) {
margin-right: 1.5rem; } }
.hero-head,
.hero-foot {
flex-grow: 0;
flex-shrink: 0; }
.hero-body {
flex-grow: 1;
flex-shrink: 0;
padding: 3rem 1.5rem; }
.section {
padding: 3rem 1.5rem; }
@media screen and (min-width: 1088px) {
.section.is-medium {
padding: 9rem 1.5rem; }
.section.is-large {
padding: 18rem 1.5rem; } }
.footer {
background-color: #fafafa;
padding: 3rem 1.5rem 6rem; }

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,27 @@
{{define "base"}}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Orion</title>
<link rel="stylesheet" href="/css/server.css">
</head>
<body>
{{template "navbar" .}}
<section class="section">
<div class="container">
<div class="columns">
<div class="column is-3">
{{template "menu" .}}
</div>
<div class="column is-9">
{{block "page_content" .}}{{end}}
</div>
</div>
</div>
</section>
<script type="text/javascript" src="/server.js"></script>
</body>
</html>
{{end}}

View File

@ -0,0 +1,10 @@
{{define "menu"}}
<aside class="menu" data-controller="menu">
<p class="menu-label">
Gestion de la flotte
</p>
<ul class="menu-list">
<li><a href="/modules">Modules</a></li>
</ul>
</aside>
{{end}}

View File

@ -0,0 +1,10 @@
{{define "navbar"}}
<nav class="navbar is-info" role="navigation" aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<b>Orion</b>
</a>
</div>
</nav>
{{end}}

View File

@ -0,0 +1,24 @@
{{define "page_content"}}
<div data-controller="modules">
<div class="level is-mobile">
<div class="level-left">
<h4 class="is-size-4 level-item">Modules à portée</h4>
</div>
<div class="level-right">
<button data-action="click->modules#onScanClick" class="button is-primary">Scanner</button>
</div>
</div>
<table class="table">
<thead>
<tr>
<th>SSID</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr></tr>
</tbody>
</table>
</div>
{{end}}
{{template "base" .}}

83
script/release Executable file
View File

@ -0,0 +1,83 @@
#!/bin/bash
set -eo pipefail
OS_TARGETS=(linux)
ARCH_TARGETS=(arm)
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
function build {
local name=$1
local srcdir=$2
local os=$3
local arch=$4
local dirname="$name-$os-$arch"
local destdir="$DIR/../release/$dirname"
rm -rf "$destdir"
mkdir -p "$destdir"
echo "building $dirname..."
CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build -ldflags="-s -w" -o "$destdir/$name" "$srcdir"
}
function copy {
local name=$1
local os=$2
local arch=$3
local src=$4
local dest=$5
local dirname="$name-$os-$arch"
local destdir="$DIR/../release/$dirname"
echo "copying '$src' to '$destdir/$dest'..."
mkdir -p "$(dirname $destdir/$dest)"
cp -rfL $src "$destdir/$dest"
}
function compress {
local name=$1
local os=$2
local arch=$3
local dirname="$name-$os-$arch"
local destdir="$DIR/../release/$dirname"
echo "compressing $dirname..."
tar -czf "$destdir.tar.gz" -C "$destdir/../" "$dirname"
}
function release_server {
local os=$1
local arch=$2
build 'server' "$DIR/../cmd/server" $os $arch
copy 'server' $os $arch "$DIR/../README.md" "README.md"
copy 'server' $os $arch "$DIR/../cmd/server/static/dist" "static"
copy 'server' $os $arch "$DIR/../cmd/server/templates" "templates"
compress 'server' $os $arch
}
function main {
for os in ${OS_TARGETS[@]}; do
for arch in ${ARCH_TARGETS[@]}; do
release_server $os $arch
done
done
}
main

10
use.go
View File

@ -1,11 +1,11 @@
package main
import (
"forge.cadoles.com/Pyxis/orion/openwrt"
"forge.cadoles.com/Cadoles/owrt"
)
func main() {
uci := openwrt.NewUCI()
uci := owrt.NewUCI()
uci.LoadWirelessConf()
wifaces := uci.GetWifiIfaces()
wDevices := uci.GetWifiDevices()
@ -18,7 +18,7 @@ func main() {
}
// Main Pyxis Interface
pyxis := openwrt.NewUCIWirelessInterface()
pyxis := owrt.NewUCIWirelessInterface()
pyxis.Name = "Pyxis-Network"
pyxis.Network = "pyxis"
pyxis.Index = 0
@ -33,7 +33,7 @@ func main() {
_ = pyxis.Save(uci)
// Client Interface
client := openwrt.NewUCIWirelessInterface()
client := owrt.NewUCIWirelessInterface()
client.Name = "Client-Network"
client.Index = 1
client.SysDevName = "wlan1"
@ -51,6 +51,6 @@ func main() {
}
}
dhcp := openwrt.NewDhcpClient(client.SysDevName)
dhcp := owrt.NewDhcpClient(client.SysDevName)
dhcp.AskForIP()
}