From 89af83ea46793967b6419915dd0dc0bb684b05b1 Mon Sep 17 00:00:00 2001 From: Ilja Neumann Date: Wed, 11 Dec 2019 13:06:26 +0100 Subject: [PATCH] Integreate konnectd library #8 --- .codacy.yml | 1 + Makefile | 6 +- go.mod | 11 +- go.sum | 129 +++++++++++++-- pkg/command/server.go | 20 ++- pkg/config/config.go | 15 +- pkg/flagset/flagset.go | 148 ++++++++++++++++++ pkg/log/logrus_wrapper.go | 73 +++++++++ pkg/server/http/server.go | 12 ++ pkg/service/v0/service.go | 72 ++++++--- web/identifier-webapp/asset-manifest.json | 22 +++ web/identifier-webapp/index.html | 1 + ...nifest.ea8b619599c55ba5f128f51d796152cd.js | 142 +++++++++++++++++ .../static/css/main.ed0ebb7d.chunk.css | 2 + .../static/css/main.ed0ebb7d.chunk.css.map | 1 + web/identifier-webapp/static/favicon.ico | Bin 0 -> 108611 bytes .../static/js/4.f92d7884.chunk.js | 2 + .../static/js/4.f92d7884.chunk.js.map | 1 + .../static/js/5.b1222fed.chunk.js | 2 + .../static/js/5.b1222fed.chunk.js.map | 1 + .../js/identifier-app.b36b0d07.chunk.js | 2 + .../js/identifier-app.b36b0d07.chunk.js.map | 1 + .../js/identifier-container.569688ae.chunk.js | 2 + ...identifier-container.569688ae.chunk.js.map | 1 + .../static/js/main.c5511071.chunk.js | 2 + .../static/js/main.c5511071.chunk.js.map | 1 + .../static/js/runtime~main.766bf48a.js | 2 + .../static/js/runtime~main.766bf48a.js.map | 1 + .../static/media/kopano-logo.10e256c7.svg | 75 +++++++++ .../media/loginscreen-bg-overlay.6f9a3fb0.svg | 95 +++++++++++ .../static/media/loginscreen-bg.cc3ef0e4.jpg | Bin 0 -> 105564 bytes .../media/roboto-latin-100.987b8457.woff2 | Bin 0 -> 15316 bytes .../media/roboto-latin-100.e9dbbe8a.woff | Bin 0 -> 19936 bytes .../roboto-latin-100italic.6232f43d.woff2 | Bin 0 -> 16644 bytes .../roboto-latin-100italic.d704bb3d.woff | Bin 0 -> 21268 bytes .../media/roboto-latin-300.55536c8e.woff2 | Bin 0 -> 15440 bytes .../media/roboto-latin-300.a1471d1d.woff | Bin 0 -> 19916 bytes .../roboto-latin-300italic.210a7c78.woff | Bin 0 -> 21776 bytes .../roboto-latin-300italic.d69924b9.woff2 | Bin 0 -> 17124 bytes .../media/roboto-latin-400.5d4aeb4e.woff2 | Bin 0 -> 15344 bytes .../media/roboto-latin-400.bafb105b.woff | Bin 0 -> 19824 bytes .../roboto-latin-400italic.9680d5a0.woff | Bin 0 -> 21528 bytes .../roboto-latin-400italic.d8bcbe72.woff2 | Bin 0 -> 16944 bytes .../media/roboto-latin-500.28546717.woff2 | Bin 0 -> 15552 bytes .../media/roboto-latin-500.de8b7431.woff | Bin 0 -> 20012 bytes .../roboto-latin-500italic.510dec37.woff2 | Bin 0 -> 16940 bytes .../roboto-latin-500italic.ffcc050b.woff | Bin 0 -> 21564 bytes .../media/roboto-latin-700.037d8304.woff2 | Bin 0 -> 15436 bytes .../media/roboto-latin-700.cf6613d1.woff | Bin 0 -> 19888 bytes .../roboto-latin-700italic.010c1aee.woff2 | Bin 0 -> 16572 bytes .../roboto-latin-700italic.846d1890.woff | Bin 0 -> 21132 bytes .../media/roboto-latin-900.19b7a0ad.woff2 | Bin 0 -> 15340 bytes .../media/roboto-latin-900.8c2ade50.woff | Bin 0 -> 19936 bytes .../roboto-latin-900italic.7b770d6c.woff2 | Bin 0 -> 17156 bytes .../roboto-latin-900italic.bc833e72.woff | Bin 0 -> 21856 bytes 55 files changed, 798 insertions(+), 45 deletions(-) create mode 100644 pkg/log/logrus_wrapper.go create mode 100644 web/identifier-webapp/asset-manifest.json create mode 100644 web/identifier-webapp/index.html create mode 100644 web/identifier-webapp/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js create mode 100644 web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css create mode 100644 web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css.map create mode 100644 web/identifier-webapp/static/favicon.ico create mode 100644 web/identifier-webapp/static/js/4.f92d7884.chunk.js create mode 100644 web/identifier-webapp/static/js/4.f92d7884.chunk.js.map create mode 100644 web/identifier-webapp/static/js/5.b1222fed.chunk.js create mode 100644 web/identifier-webapp/static/js/5.b1222fed.chunk.js.map create mode 100644 web/identifier-webapp/static/js/identifier-app.b36b0d07.chunk.js create mode 100644 web/identifier-webapp/static/js/identifier-app.b36b0d07.chunk.js.map create mode 100644 web/identifier-webapp/static/js/identifier-container.569688ae.chunk.js create mode 100644 web/identifier-webapp/static/js/identifier-container.569688ae.chunk.js.map create mode 100644 web/identifier-webapp/static/js/main.c5511071.chunk.js create mode 100644 web/identifier-webapp/static/js/main.c5511071.chunk.js.map create mode 100644 web/identifier-webapp/static/js/runtime~main.766bf48a.js create mode 100644 web/identifier-webapp/static/js/runtime~main.766bf48a.js.map create mode 100644 web/identifier-webapp/static/media/kopano-logo.10e256c7.svg create mode 100644 web/identifier-webapp/static/media/loginscreen-bg-overlay.6f9a3fb0.svg create mode 100644 web/identifier-webapp/static/media/loginscreen-bg.cc3ef0e4.jpg create mode 100644 web/identifier-webapp/static/media/roboto-latin-100.987b8457.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-100.e9dbbe8a.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-100italic.6232f43d.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-100italic.d704bb3d.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-300.55536c8e.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-300.a1471d1d.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-300italic.210a7c78.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-300italic.d69924b9.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-400.5d4aeb4e.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-400.bafb105b.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-400italic.9680d5a0.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-400italic.d8bcbe72.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-500.28546717.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-500.de8b7431.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-500italic.510dec37.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-500italic.ffcc050b.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-700.037d8304.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-700.cf6613d1.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-700italic.010c1aee.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-700italic.846d1890.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-900.19b7a0ad.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-900.8c2ade50.woff create mode 100644 web/identifier-webapp/static/media/roboto-latin-900italic.7b770d6c.woff2 create mode 100644 web/identifier-webapp/static/media/roboto-latin-900italic.bc833e72.woff diff --git a/.codacy.yml b/.codacy.yml index 855b4f298b..359eff9ad0 100644 --- a/.codacy.yml +++ b/.codacy.yml @@ -4,5 +4,6 @@ exclude_paths: - changelog/** - docs/** - pkg/proto/** + - web/identifier-webapp/** ... diff --git a/Makefile b/Makefile index 5a76fdf852..5d9ba7d42b 100644 --- a/Makefile +++ b/Makefile @@ -92,7 +92,7 @@ install: $(SOURCES) go install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$(NAME) .PHONY: build -build: $(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE)-debug +build: $(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE)-debug webapp-copy $(BIN)/$(EXECUTABLE): $(SOURCES) $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ ./cmd/$(NAME) @@ -100,6 +100,10 @@ $(BIN)/$(EXECUTABLE): $(SOURCES) $(BIN)/$(EXECUTABLE)-debug: $(SOURCES) $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) +.PHONY: webapp-copy +webapp-copy: + cp -r ./web/identifier-webapp $(BIN)/ + .PHONY: release release: release-dirs release-linux release-windows release-darwin release-copy release-check diff --git a/go.mod b/go.mod index ac85dfe781..a7b8d62a95 100644 --- a/go.mod +++ b/go.mod @@ -6,14 +6,17 @@ require ( contrib.go.opencensus.io/exporter/jaeger v0.2.0 contrib.go.opencensus.io/exporter/ocagent v0.6.0 contrib.go.opencensus.io/exporter/zipkin v0.1.1 - github.com/cespare/reflex v0.2.0 // indirect github.com/go-chi/chi v4.0.2+incompatible - github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect + github.com/gorilla/mux v1.7.3 github.com/micro/cli v0.2.0 - github.com/ogier/pflag v0.0.1 // indirect github.com/oklog/run v1.0.0 github.com/openzipkin/zipkin-go v0.2.2 - github.com/owncloud/ocis-pkg v1.2.0 + github.com/owncloud/ocis-pkg v1.3.0 + github.com/rs/zerolog v1.17.2 + github.com/sirupsen/logrus v1.4.2 github.com/spf13/viper v1.6.1 go.opencensus.io v0.22.2 + stash.kopano.io/kc/konnect v0.28.0 ) + +replace stash.kopano.io/kc/konnect => github.com/IljaN/konnect v0.29.0-alpha diff --git a/go.sum b/go.sum index ef88d6cf05..96fa25276a 100644 --- a/go.sum +++ b/go.sum @@ -47,6 +47,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/IljaN/konnect v0.29.0-alpha h1:KSfpqj81eRAXXIqTVrfmldZB8cepy5sKjpzjfScFTJc= +github.com/IljaN/konnect v0.29.0-alpha/go.mod h1:DtAxcWYgNwqm8c9p/U8kDSh2WCvLqcl22N2RQaMrqv8= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -63,6 +65,7 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= +github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75 h1:3ILjVyslFbc4jl1w5TWuvvslFD/nDfR2H8tVaMVLrEY= github.com/alangpierce/go-forceexport v0.0.0-20160317203124-8f1d6941cd75/go.mod h1:uAXEEpARkRhCZfEvy/y0Jcc888f9tHCc1W7/UeEtreE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -97,6 +100,7 @@ github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= +github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -117,12 +121,12 @@ github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4r github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/reflex v0.2.0 h1:6d9WpWJseKjJvZEevKP7Pk42nPx2+BUTqmhNk8wZPwM= -github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= +github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -141,11 +145,16 @@ github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.17+incompatible h1:f/Z3EoDSx1yjaIjLQGo1diYUlQYSBrrAQ5vP8NjwXwo= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= @@ -153,14 +162,21 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= +github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/decker502/dnspod-go v0.2.0/go.mod h1:qsurYu1FgxcDwfSwXJdLt4kRsBLZeosEb9uq4Sy+08g= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= @@ -185,6 +201,8 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/eternnoir/gncp v0.0.0-20170707042257-c70df2d0cd68 h1:DHBMBKJK69xBWnD/jNkTN0sOT7nT7I5If9VMsk9Jj5Y= +github.com/eternnoir/gncp v0.0.0-20170707042257-c70df2d0cd68/go.mod h1:8FuQ7lU9ZvIJGvc04F/qblkjqIfBahAoEFV+XPxByGw= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -205,6 +223,8 @@ github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20180728074245-46e3a41ad493/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-acme/lego/v3 v3.1.0/go.mod h1:074uqt+JS6plx+c9Xaiz6+L+GBb+7itGtzfcDM2AhEE= +github.com/go-asn1-ber/asn1-ber v1.3.1 h1:gvPdv/Hr++TRFCl0UbPFHC54P9N9jgsRPnmnr419Uck= +github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs= github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= @@ -213,7 +233,10 @@ github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3I github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-ldap/ldap v3.0.2+incompatible h1:kD5HQcAzlQ7yrhfn+h+MSABeAy/jAJhvIJ/QDllP44g= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-ldap/ldap/v3 v3.1.3 h1:RIgdpHXJpsUqUK5WXwKyVsESrGFqo5BRWPk3RR4/ogQ= +github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-log/log v0.1.0 h1:wudGTNsiGzrD5ZjgIkVZ517ugi2XRe9Q/xRCzwEO4/U= github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N2M= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -242,6 +265,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -250,8 +274,10 @@ github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bky github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v0.0.0-20170622202551-6a1fa9404c0a/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -262,11 +288,14 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= @@ -289,16 +318,23 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= +github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -344,8 +380,7 @@ github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoI github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5 h1:FdBGmSkD2QpQzRWup//SGObvWf2nq89zj9+ta9OvI3A= -github.com/haya14busa/goverage v0.0.0-20180129164344-eec3514a20b5/go.mod h1:0YZ2wQSuwviXXXGUiK6zXzskyBLAbLXhamxzcFHSLoM= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= @@ -353,12 +388,14 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/joncalhoun/qson v0.0.0-20170526102502-8a9cab3a62b1/go.mod h1:DFXrEwSRX0p/aSvxE21319menCBFeQO0jXpRj7LEZUA= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -369,13 +406,12 @@ github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46O github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -384,12 +420,15 @@ github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/kolo/xmlrpc v0.0.0-20190717152603-07c4ee3fd181/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= @@ -399,10 +438,14 @@ github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= +github.com/longsleep/go-metrics v0.0.0-20170706183227-c1943bcf9047/go.mod h1:Eq9KjddJTZCHG0ja+SEJNp739Um4URrcBuccq3Ih/NI= +github.com/longsleep/go-metrics v0.0.0-20191013204616-cddea569b0ea h1:Q5nKuCPF/m8xXz9oGchzSZJbGpJbb9Rm3SGBBHbBWiQ= +github.com/longsleep/go-metrics v0.0.0-20191013204616-cddea569b0ea/go.mod h1:w6QO1LBkVla70FZrrF6XcB0YN+jTEYugjkn3+6RYTSM= github.com/lucas-clemente/quic-go v0.12.1/go.mod h1:UXJJPE4RfFef/xPO5wQm0tITK8gNfqwTxjbE7s3Vb8s= github.com/lucas-clemente/quic-go v0.13.1 h1:CxtJTXQIh2aboCPk0M6vf530XOov6DZjVBiSE3nSj8s= github.com/lucas-clemente/quic-go v0.13.1/go.mod h1:Vn3/Fb0/77b02SGhQk36KzOUmXgVpFfizUfW5WMaqyU= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -422,6 +465,8 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103 h1:Z/i1e+gTZrmcGeZyWckaLfucYG6KYOXLWo4co8pZYNY= +github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103/go.mod h1:o9YPB5aGP8ob35Vy6+vyq3P3bWe7NQWzf+JLiXCiMaE= github.com/mholt/certmagic v0.7.5/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/mholt/certmagic v0.8.3/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ= github.com/micro/cli v0.2.0 h1:ut3rV5JWqZjsXIa2MvGF+qMUP8DAUTvHX9Br5gO4afA= @@ -471,6 +516,7 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nats-io/jwt v0.3.0 h1:xdnzwFETV++jNc4W1mw//qFyJGb2ABOombmZJQS4+Qo= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/nats-server/v2 v2.1.0 h1:Yi0+ZhRPtPAGeIxFn5erIeJIV9wXA+JznfSxK621Fbk= github.com/nats-io/nats-server/v2 v2.1.0/go.mod h1:r5y0WgCag0dTj/qiHkHrXAcKQ/f5GMOZaEGdoxxnJ4I= github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= @@ -487,8 +533,6 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= -github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= -github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= @@ -497,9 +541,13 @@ github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3 h1:OoxbjfXVZyod1fmWYhI7SEyaD8B00ynP3T+D5GiyHOY= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -513,9 +561,11 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 h1:lNCW6THrCKBiJBpz8kbVGjC7MgdCGKwuvBgc7LoD6sw= +github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= -github.com/owncloud/ocis-pkg v1.2.0 h1:eP0AOSEXAgiblL2yOpNOmriKhDXN+mai+4belBJRkWU= -github.com/owncloud/ocis-pkg v1.2.0/go.mod h1:EfbeXoe60Me2lB/AWjYl8UFNv4isqCPP6lokd5R7nyM= +github.com/owncloud/ocis-pkg v1.3.0 h1:2fkgvfd/spTjschuulYMHRuzxkCGGXae9ocebVYkm74= +github.com/owncloud/ocis-pkg v1.3.0/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -534,9 +584,13 @@ github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -544,11 +598,13 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.2.1 h1:JnMpQc6ppsNgw9QPAGF6Dod479itz7lvlsMzzNayLOI= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= +github.com/prometheus/client_model v0.0.0-20170216185247-6f3806018612/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20170706130215-fb369f752a7f/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -556,6 +612,7 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/procfs v0.0.0-20170703101242-e645f4e5aaa8/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -563,6 +620,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -570,10 +629,12 @@ github.com/restic/calens v0.1.0 h1:RHGokdZ72dICyIz1EjEsfZwUhvNZz/zy2SawxJktdWA= github.com/restic/calens v0.1.0/go.mod h1:u67f5msOjCTDYNzOf/NoAUSdmXP03YXPCwIQLYADy5M= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -581,20 +642,26 @@ github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIH github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.3/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -603,12 +670,16 @@ github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.1/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.0/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= @@ -621,6 +692,7 @@ github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRci github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= @@ -630,6 +702,7 @@ github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6 github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= @@ -638,6 +711,7 @@ github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex github.com/uber/jaeger-client-go v2.15.0+incompatible h1:NP3qsSqNxh8VYr956ur1N/1C1PjvOJnJykCzcD5QHbk= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= @@ -649,11 +723,13 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2 github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -672,12 +748,14 @@ go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.12.0 h1:dySoUQPFBGj6xwjmBzageVL8jGi8uxc6bEmJQjA06bw= go.uber.org/zap v1.12.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= gocloud.dev v0.17.0/go.mod h1:tIHTRdR1V5dlD8sTkzYdTGizBJ314BDykJ8KmadEXwo= gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU2ubfn7C/Uz7Y0= +golang.org/x/crypto v0.0.0-20170711145318-dd85ac7e6a88/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -700,6 +778,9 @@ golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a h1:R/qVym5WAxsZWQqZCwDY/8sdVKV1m1WgU4/S5IRQAzc= golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191128160524-b544559bb6d1/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e h1:egKlR8l7Nu9vHGWbcUV8lqR4987UfUbBd7GbhqGzNYU= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= @@ -744,9 +825,12 @@ golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 h1:bHNaocaoJxYBo5cw41UyTMLjYlb8wPY7+WFrnklbHOM= golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933 h1:e6HwijUxhDe+hPNjZQQn9bA5PW3vNmnN64U2ZW759Lk= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -754,6 +838,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -764,6 +850,7 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -793,6 +880,8 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM= golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9 h1:ZBzSG/7F4eNKz2L3GE9o300RX0Az1Bw5HF7PDraD+qU= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -802,6 +891,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -839,6 +930,7 @@ google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -869,16 +961,20 @@ google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRn google.golang.org/grpc v1.25.1 h1:wdKvqQk7IttEw92GoRyKG2IDrUIpgpj6H6m81yfeMW0= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= gopkg.in/DataDog/dd-trace-go.v1 v1.19.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= @@ -900,10 +996,13 @@ gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.4.0 h1:0kXPskUMGAXXWJlP05ktEMOV0vmzFQUWw6d+aZJQU8A= +gopkg.in/square/go-jose.v2 v2.4.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/telegram-bot-api.v4 v4.6.4/go.mod h1:5DpGO5dbumb40px+dXcwCpcjmeHNYLpk0bp3XRNvWDM= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -911,6 +1010,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -933,4 +1034,12 @@ k8s.io/utils v0.0.0-20191030222137-2b95a09bc58d/go.mod h1:sZAwmy6armz5eXlNoLmJcl pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +stash.kopano.io/kgol/kcc-go/v5 v5.0.1 h1:urR9hOR6TnTKjGkzZKac/a9cA8ws1WecWLTgiYubLQw= +stash.kopano.io/kgol/kcc-go/v5 v5.0.1/go.mod h1:0ZmjWapy3zp+TAjZI6iCrcfh+BthZbB2WM1VfhDgNB4= +stash.kopano.io/kgol/ksurveyclient-go v0.6.0/go.mod h1:LJMDQBROS2oXxBN04eSI6j1KhgWlqMFd8xKjXV4Irtw= +stash.kopano.io/kgol/oidc-go v0.3.1 h1:tIEZV4WMFFlUe2AS06GrG3qrS6uSfJFFGJSkV+jGJP8= +stash.kopano.io/kgol/oidc-go v0.3.1/go.mod h1:roVKz8FVmPcdL4pUu+Gzk+GH2kOhz1UvnuMNTkjHyH8= +stash.kopano.io/kgol/rndm v1.1.0 h1:Yyr92qtm3NENoCru56phnGv9z5mgFxiNKxzNZahm0w4= +stash.kopano.io/kgol/rndm v1.1.0/go.mod h1:CBvpAHlOwyu/XipxfLGk02UN3K3P6hQ8E2JoTbNWfJU= diff --git a/pkg/command/server.go b/pkg/command/server.go index a8e5de2c2c..c6f56ac13a 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -26,14 +26,28 @@ import ( // Server is the entrypoint for the server command. func Server(cfg *config.Config) cli.Command { return cli.Command{ - Name: "server", - Usage: "Start integrated server", - Flags: flagset.ServerWithConfig(cfg), + Name: "server", + Usage: "Start integrated server", + Flags: flagset.ServerWithConfig(cfg), + ArgsUsage: "identity-manger name (one of ldap, kc, dummy, cookie", Before: func(c *cli.Context) error { if cfg.HTTP.Root != "/" { cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") } + // StringSliceFlag doesn't support Destination + if len(c.StringSlice("trusted-proxy")) > 0 { + cfg.Konnectd.TrustedProxy = c.StringSlice("trusted-proxy") + } + + if len(c.StringSlice("allow-scope")) > 0 { + cfg.Konnectd.AllowScope = c.StringSlice("allow-scope") + } + + if len(c.StringSlice("signing-private-key")) > 0 { + cfg.Konnectd.SigningPrivateKeyFiles = c.StringSlice("signing-private-key") + } + return nil }, Action: func(c *cli.Context) error { diff --git a/pkg/config/config.go b/pkg/config/config.go index c92c9820c3..e2251d1bcb 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,5 +1,7 @@ package config +import "stash.kopano.io/kc/konnect/bootstrap" + // Log defines the available logging configuration. type Log struct { Level string @@ -20,6 +22,8 @@ type HTTP struct { Addr string Namespace string Root string + TLSCert string + TLSKey string } // Tracing defines the available tracing configuration. @@ -33,11 +37,12 @@ type Tracing struct { // Config combines all available configuration parts. type Config struct { - File string - Log Log - Debug Debug - HTTP HTTP - Tracing Tracing + File string + Log Log + Debug Debug + HTTP HTTP + Tracing Tracing + Konnectd bootstrap.Config } // New initializes a new configuration with or without defaults. diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 11ae4d2bfe..2b5a21ccc5 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -134,5 +134,153 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag { EnvVar: "KONNECTD_HTTP_NAMESPACE", Destination: &cfg.HTTP.Namespace, }, + &cli.StringFlag{ + Name: "identity-manager", + Value: "ldap", + Usage: "Identity manager (one of ldap,kc,cookie,dummy)", + EnvVar: "KONNECTD_IDENTITY_MANAGER", + Destination: &cfg.Konnectd.IdentityManager, + }, + &cli.StringFlag{ + Name: "transport-tls-cert", + Value: "", + Usage: "Certificate file for transport encryption", + EnvVar: "KONNECTD_TRANSPORT_TLS_CERT", + Destination: &cfg.HTTP.TLSCert, + }, + &cli.StringFlag{ + Name: "transport- tls-key", + Value: "", + Usage: "Secret file for transport encryption", + EnvVar: "KONNECTD_TRANSPORT_TLS_KEY", + Destination: &cfg.HTTP.TLSKey, + }, + &cli.StringFlag{ + Name: "iss", + Usage: "OIDC issuer URL", + EnvVar: "KONNECTD_ISS", + Value: "https://127.0.0.1:9130", + Destination: &cfg.Konnectd.ISS, + }, + &cli.StringSliceFlag{ + Name: "signing-private-key", + Usage: "Full path to PEM encoded private key file (must match the --signing-method algorithm)", + EnvVar: "KONNECTD_SIGNING_PRIVATE_KEY", + Value: nil, + }, + &cli.StringFlag{ + Name: "signing-kid", + Usage: "Value of kid field to use in created tokens (uniquely identifying the signing-private-key)", + EnvVar: "KONNECTD_SIGNING_KID", + Value: "", + Destination: &cfg.Konnectd.SigningKid, + }, + &cli.StringFlag{ + Name: "validation-keys-path", + Usage: "Full path to a folder containg PEM encoded private or public key files used for token validaton (file name without extension is used as kid)", + EnvVar: "KONNECTD_VALIDATION_KEYS_PATH", + Value: "", + Destination: &cfg.Konnectd.ValidationKeysPath, + }, + &cli.StringFlag{ + Name: "encryption-secret", + Usage: "Full path to a file containing a %d bytes secret key", + EnvVar: "KONNECTD_ENCRYPTION_SECRET", + Value: "", + Destination: &cfg.Konnectd.EncryptionSecretFile, + }, + &cli.StringFlag{ + Name: "signing-method", + Usage: "JWT default signing method", + EnvVar: "KONNECTD_SIGNING_METHOD", + Value: "PS256", + Destination: &cfg.Konnectd.SigningMethod, + }, + &cli.StringFlag{ + Name: "uri-base-path", + Usage: "Custom base path for URI endpoints", + EnvVar: "KONNECTD_URI_BASE_PATH", + Value: "", + Destination: &cfg.Konnectd.URIBasePath, + }, + &cli.StringFlag{ + Name: "sign-in-uri", + Usage: "Custom redirection URI to sign-in form", + EnvVar: "KONNECTD_SIGN_IN_URI", + Value: "", + Destination: &cfg.Konnectd.SignInUri, + }, + &cli.StringFlag{ + Name: "signed-out-uri", + Usage: "Custom redirection URI to signed-out goodbye page", + EnvVar: "KONNECTD_SIGN_OUT_URI", + Value: "", + Destination: &cfg.Konnectd.SignedOutUri, + }, + &cli.StringFlag{ + Name: "authorization-endpoint-uri", + Usage: "Custom authorization endpoint URI", + EnvVar: "KONNECTD_ENDPOINT_URI", + Value: "", + Destination: &cfg.Konnectd.AuthorizationEndpointURI, + }, + &cli.StringFlag{ + Name: "endsession-endpoint-uri", + Usage: "Custom endsession endpoint URI", + EnvVar: "KONNECTD_ENDSESSION_ENDPOINT_URI", + Value: "", + Destination: &cfg.Konnectd.EndsessionEndpointURI, + }, + &cli.StringFlag{ + Name: "identifier-client-path", + Usage: "Path to the identifier web client base folder", + EnvVar: "KONNECTD_IDENTIFIER_CLIENT_PATH", + Value: "./identifier-webapp", + Destination: &cfg.Konnectd.IdentifierClientPath, + }, + &cli.StringFlag{ + Name: "identifier-registration-conf", + Usage: "Path to a identifier-registration.yaml configuration file", + EnvVar: "KONNECTD_IDENTIFIER_REGISTRATION_CONF", + Value: "./identifier-registration.yaml", + Destination: &cfg.Konnectd.IdentifierRegistrationConf, + }, + &cli.StringFlag{ + Name: "identifier-scopes-conf", + Usage: "Path to a scopes.yaml configuration file", + EnvVar: "KONNECTD_IDENTIFIER_SCOPES_CONF", + Value: "", + Destination: &cfg.Konnectd.IdentifierScopesConf, + }, + &cli.BoolFlag{ + Name: "insecure", + Usage: "Disable TLS certificate and hostname validation", + EnvVar: "KONNECTD_INSECURE", + Destination: &cfg.Konnectd.Insecure, + }, + &cli.StringSliceFlag{ + Name: "trusted-proxy", + Usage: "Trusted proxy IP or IP network (can be used multiple times)", + EnvVar: "KONNECTD_TRUSTED_PROXY", + Value: nil, + }, + &cli.StringSliceFlag{ + Name: "allow-scope", + Usage: "Allow OAuth 2 scope (can be used multiple times, if not set default scopes are allowed)", + EnvVar: "KONNECTD_ALLOW_SCOPE", + Value: nil, + }, + &cli.BoolFlag{ + Name: "allow-client-guests", + Usage: "Allow sign in of client controlled guest users", + EnvVar: "KONNECTD_ALLOW_CLIENT_GUESTS", + Destination: &cfg.Konnectd.AllowClientGuests, + }, + &cli.BoolFlag{ + Name: "allow-dynamic-client-registration", + Usage: "Allow dynamic OAuth2 client registration", + EnvVar: "KONNECTD_ALLOW_DYNAMIC_CLIENT_REGISTRATION", + Destination: &cfg.Konnectd.AllowDynamicClientRegistration, + }, } } diff --git a/pkg/log/logrus_wrapper.go b/pkg/log/logrus_wrapper.go new file mode 100644 index 0000000000..565b6e77dd --- /dev/null +++ b/pkg/log/logrus_wrapper.go @@ -0,0 +1,73 @@ +package log + +import ( + "github.com/rs/zerolog" + "github.com/sirupsen/logrus" + "io/ioutil" +) + +type levelMap map[logrus.Level]zerolog.Level + +var levelMapping = levelMap{ + logrus.PanicLevel: zerolog.PanicLevel, + logrus.ErrorLevel: zerolog.ErrorLevel, + logrus.TraceLevel: zerolog.TraceLevel, + logrus.DebugLevel: zerolog.DebugLevel, + logrus.WarnLevel: zerolog.WarnLevel, + logrus.InfoLevel: zerolog.InfoLevel, +} + +// LogrusWrapper around zerolog. Required because konnectd uses logrus internally. +type LogrusWrapper struct { + zeroLog *zerolog.Logger + levelMap levelMap +} + +// Wrap return a logrus logger which internally logs to /dev/null. Messages are passed to the +// underlying zerolog via hooks. +func Wrap(zr zerolog.Logger) *logrus.Logger { + lr := logrus.New() + lr.SetOutput(ioutil.Discard) + lr.SetLevel(logrusLevel(zr.GetLevel())) + lr.AddHook(&LogrusWrapper{ + zeroLog: &zr, + levelMap: levelMapping, + }) + + return lr +} + +// Levels on which logrus hooks should be triggered +func (h *LogrusWrapper) Levels() []logrus.Level { + return logrus.AllLevels +} + +// Fire called by logrus on new message +func (h *LogrusWrapper) Fire(entry *logrus.Entry) error { + h.zeroLog.WithLevel(h.levelMap[entry.Level]). + Fields(zeroLogFields(entry.Data)). + Msg(entry.Message) + + return nil +} + +//Convert logrus fields to zerolog +func zeroLogFields(fields logrus.Fields) map[string]interface{} { + fm := make(map[string]interface{}) + for k, v := range fields { + fm[k] = v + } + + return fm +} + +// Convert logrus level to zerolog +func logrusLevel(level zerolog.Level) logrus.Level { + for lrLvl, zrLvl := range levelMapping { + if zrLvl == level { + return lrLvl + } + } + + panic("Unexpected loglevel") +} diff --git a/pkg/server/http/server.go b/pkg/server/http/server.go index d55b7f2d24..375c73e3e8 100644 --- a/pkg/server/http/server.go +++ b/pkg/server/http/server.go @@ -1,16 +1,26 @@ package http import ( + "crypto/tls" svc "github.com/owncloud/ocis-konnectd/pkg/service/v0" "github.com/owncloud/ocis-konnectd/pkg/version" "github.com/owncloud/ocis-pkg/middleware" "github.com/owncloud/ocis-pkg/service/http" + "os" ) // Server initializes the http service and server. func Server(opts ...Option) (http.Service, error) { options := newOptions(opts...) + cer, err := tls.LoadX509KeyPair(options.Config.HTTP.TLSCert, options.Config.HTTP.TLSKey) + if err != nil { + options.Logger.Fatal().Err(err).Msg("Could not setup TLS") + os.Exit(1) + } + + config := &tls.Config{Certificates: []tls.Certificate{cer}} + service := http.NewService( http.Logger(options.Logger), http.Namespace(options.Config.HTTP.Namespace), @@ -19,8 +29,10 @@ func Server(opts ...Option) (http.Service, error) { http.Address(options.Config.HTTP.Addr), http.Context(options.Context), http.Flags(options.Flags...), + http.TLSConfig(config), ) + options.Config.Konnectd.Listen = options.Config.HTTP.Addr handle := svc.NewService( svc.Logger(options.Logger), svc.Config(options.Config), diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 878e97917d..e26bbefbdb 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -1,10 +1,15 @@ package svc import ( - "net/http" - + "context" "github.com/go-chi/chi" + "github.com/gorilla/mux" "github.com/owncloud/ocis-konnectd/pkg/config" + "github.com/owncloud/ocis-konnectd/pkg/log" + "net/http" + "stash.kopano.io/kc/konnect/bootstrap" + kcconfig "stash.kopano.io/kc/konnect/config" + "stash.kopano.io/kc/konnect/server" ) // Service defines the extension handlers. @@ -13,29 +18,52 @@ type Service interface { Dummy(http.ResponseWriter, *http.Request) } -// NewService returns a service implementation for Service. -func NewService(opts ...Option) Service { - options := newOptions(opts...) - - m := chi.NewMux() - m.Use(options.Middleware...) - - svc := Konnectd{ - config: options.Config, - mux: m, - } - - m.Route(options.Config.HTTP.Root, func(r chi.Router) { - r.Get("/", svc.Dummy) - }) - - return svc -} - // Konnectd defines implements the business logic for Service. type Konnectd struct { config *config.Config - mux *chi.Mux + mux http.Handler +} + +// NewService returns a service implementation for Service. +func NewService(opts ...Option) Service { + ctx := context.Background() + options := newOptions(opts...) + logger := options.Logger.Logger + + bs, err := bootstrap.Boot(ctx, &options.Config.Konnectd, &kcconfig.Config{ + Logger: log.Wrap(logger), + }) + + if err != nil { + logger.Fatal().Err(err).Msg("Could not bootstrap konnectd") + } + + routes := []server.WithRoutes{bs.Managers.Must("identity").(server.WithRoutes)} + handlers := bs.Managers.Must("handler").(http.Handler) + + return Konnectd{ + config: options.Config, + mux: newMux(ctx, routes, handlers, options.Middleware), + } +} + +// newMux initializes the internal konnectd gorilla mux and mounts it in to a ocis chi-router +func newMux(ctx context.Context, r []server.WithRoutes, h http.Handler, middleware []func(http.Handler) http.Handler) http.Handler { + gm := mux.NewRouter() + for _, route := range r { + route.AddRoutes(ctx, gm) + } + + // Delegate rest to provider which is also a handler. + if h != nil { + gm.NotFoundHandler = h + } + + m := chi.NewMux() + m.Use(middleware...) + m.Mount("/", gm) + + return m } // ServeHTTP implements the Service interface. diff --git a/web/identifier-webapp/asset-manifest.json b/web/identifier-webapp/asset-manifest.json new file mode 100644 index 0000000000..f39f159ea2 --- /dev/null +++ b/web/identifier-webapp/asset-manifest.json @@ -0,0 +1,22 @@ +{ + "identifier-app.js": "./static/js/identifier-app.b36b0d07.chunk.js", + "identifier-app.js.map": "./static/js/identifier-app.b36b0d07.chunk.js.map", + "identifier-container.js": "./static/js/identifier-container.569688ae.chunk.js", + "identifier-container.js.map": "./static/js/identifier-container.569688ae.chunk.js.map", + "main.css": "./static/css/main.ed0ebb7d.chunk.css", + "main.js": "./static/js/main.c5511071.chunk.js", + "main.js.map": "./static/js/main.c5511071.chunk.js.map", + "runtime~main.js": "./static/js/runtime~main.766bf48a.js", + "runtime~main.js.map": "./static/js/runtime~main.766bf48a.js.map", + "static/js/4.f92d7884.chunk.js": "./static/js/4.f92d7884.chunk.js", + "static/js/4.f92d7884.chunk.js.map": "./static/js/4.f92d7884.chunk.js.map", + "static/js/5.b1222fed.chunk.js": "./static/js/5.b1222fed.chunk.js", + "static/js/5.b1222fed.chunk.js.map": "./static/js/5.b1222fed.chunk.js.map", + "index.html": "./index.html", + "precache-manifest.ea8b619599c55ba5f128f51d796152cd.js": "./precache-manifest.ea8b619599c55ba5f128f51d796152cd.js", + "service-worker.js": "./service-worker.js", + "static/css/main.ed0ebb7d.chunk.css.map": "./static/css/main.ed0ebb7d.chunk.css.map", + "static/media/kopano-logo.svg": "./static/media/kopano-logo.10e256c7.svg", + "static/media/fancy-background.css": "./static/media/loginscreen-bg.cc3ef0e4.jpg", + "static/media/index.css": "./static/media/roboto-latin-900italic.bc833e72.woff" +} \ No newline at end of file diff --git a/web/identifier-webapp/index.html b/web/identifier-webapp/index.html new file mode 100644 index 0000000000..bf242c8153 --- /dev/null +++ b/web/identifier-webapp/index.html @@ -0,0 +1 @@ +Kopano Sign in
aABb
\ No newline at end of file diff --git a/web/identifier-webapp/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js b/web/identifier-webapp/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js new file mode 100644 index 0000000000..a54968d1e8 --- /dev/null +++ b/web/identifier-webapp/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js @@ -0,0 +1,142 @@ +self.__precacheManifest = [ + { + "revision": "7aa085561004b3906a54", + "url": "./static/js/identifier-app.b36b0d07.chunk.js" + }, + { + "revision": "086f2ac22fca8d45f2f1", + "url": "./static/js/identifier-container.569688ae.chunk.js" + }, + { + "revision": "ec7a9d03e50fe60db0c9", + "url": "./static/css/main.ed0ebb7d.chunk.css" + }, + { + "revision": "ec7a9d03e50fe60db0c9", + "url": "./static/js/main.c5511071.chunk.js" + }, + { + "revision": "9987e5e6817f0b1d1511", + "url": "./static/js/runtime~main.766bf48a.js" + }, + { + "revision": "de913ae19ba466b785d7", + "url": "./static/js/4.f92d7884.chunk.js" + }, + { + "revision": "435f63f2b0ecc59d0119", + "url": "./static/js/5.b1222fed.chunk.js" + }, + { + "revision": "d704bb3d579b7d5e40880c75705c8a71", + "url": "./static/media/roboto-latin-100italic.d704bb3d.woff" + }, + { + "revision": "55536c8e9e9a532651e3cf374f290ea3", + "url": "./static/media/roboto-latin-300.55536c8e.woff2" + }, + { + "revision": "a1471d1d6431c893582a5f6a250db3f9", + "url": "./static/media/roboto-latin-300.a1471d1d.woff" + }, + { + "revision": "6232f43d15b0e7a0bf0fe82e295bdd06", + "url": "./static/media/roboto-latin-100italic.6232f43d.woff2" + }, + { + "revision": "d69924b98acd849cdeba9fbff3f88ea6", + "url": "./static/media/roboto-latin-300italic.d69924b9.woff2" + }, + { + "revision": "210a7c781f5a354a0e4985656ab456d9", + "url": "./static/media/roboto-latin-300italic.210a7c78.woff" + }, + { + "revision": "987b84570ea69ee660455b8d5e91f5f1", + "url": "./static/media/roboto-latin-100.987b8457.woff2" + }, + { + "revision": "e9dbbe8a693dd275c16d32feb101f1c1", + "url": "./static/media/roboto-latin-100.e9dbbe8a.woff" + }, + { + "revision": "5d4aeb4e5f5ef754e307d7ffaef688bd", + "url": "./static/media/roboto-latin-400.5d4aeb4e.woff2" + }, + { + "revision": "bafb105baeb22d965c70fe52ba6b49d9", + "url": "./static/media/roboto-latin-400.bafb105b.woff" + }, + { + "revision": "d8bcbe724fd6f4ba44d0ee6a2675890f", + "url": "./static/media/roboto-latin-400italic.d8bcbe72.woff2" + }, + { + "revision": "9680d5a0c32d2fd084e07bbc4c8b2923", + "url": "./static/media/roboto-latin-400italic.9680d5a0.woff" + }, + { + "revision": "285467176f7fe6bb6a9c6873b3dad2cc", + "url": "./static/media/roboto-latin-500.28546717.woff2" + }, + { + "revision": "de8b7431b74642e830af4d4f4b513ec9", + "url": "./static/media/roboto-latin-500.de8b7431.woff" + }, + { + "revision": "510dec37fa69fba39593e01a469ee018", + "url": "./static/media/roboto-latin-500italic.510dec37.woff2" + }, + { + "revision": "ffcc050b2d92d4b14a4fcb527ee0bcc8", + "url": "./static/media/roboto-latin-500italic.ffcc050b.woff" + }, + { + "revision": "037d830416495def72b7881024c14b7b", + "url": "./static/media/roboto-latin-700.037d8304.woff2" + }, + { + "revision": "cf6613d1adf490972c557a8e318e0868", + "url": "./static/media/roboto-latin-700.cf6613d1.woff" + }, + { + "revision": "010c1aeee3c6d1cbb1d5761d80353823", + "url": "./static/media/roboto-latin-700italic.010c1aee.woff2" + }, + { + "revision": "19b7a0adfdd4f808b53af7e2ce2ad4e5", + "url": "./static/media/roboto-latin-900.19b7a0ad.woff2" + }, + { + "revision": "846d1890aee87fde5d8ced8eba360c3a", + "url": "./static/media/roboto-latin-700italic.846d1890.woff" + }, + { + "revision": "8c2ade503b34e31430d6c98aa29a52a3", + "url": "./static/media/roboto-latin-900.8c2ade50.woff" + }, + { + "revision": "7b770d6c53423deb1a8e49d3c9175184", + "url": "./static/media/roboto-latin-900italic.7b770d6c.woff2" + }, + { + "revision": "bc833e725c137257c2c42a789845d82f", + "url": "./static/media/roboto-latin-900italic.bc833e72.woff" + }, + { + "revision": "cc3ef0e44832d84dcdb8fce769840ecd", + "url": "./static/media/loginscreen-bg.cc3ef0e4.jpg" + }, + { + "revision": "6f9a3fb01c61fa1d416601814b69f57a", + "url": "./static/media/loginscreen-bg-overlay.6f9a3fb0.svg" + }, + { + "revision": "10e256c785b6ad2fe0a337b2aa9e6da6", + "url": "./static/media/kopano-logo.10e256c7.svg" + }, + { + "revision": "02abc6e9f1d6def38abd7f6b448b00f0", + "url": "./index.html" + } +]; \ No newline at end of file diff --git a/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css b/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css new file mode 100644 index 0000000000..c553b244b5 --- /dev/null +++ b/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css @@ -0,0 +1,2 @@ +body,html{height:100%}body{margin:0;padding:0}#bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#fff}#loader{position:absolute;bottom:6%;left:50%;font-weight:400;font-family:Roboto,Helvetica,Arial,sans-serif;color:#666;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}#loader>a{color:#1e98d7}#font-preloader{position:absolute;top:-500px;font-weight:400;color:#fff;font-family:Roboto,Helvetica,Arial,sans-serif}#font-preloader>span{font-weight:500}#root{height:100%;display:flex}::-webkit-scrollbar{height:8px;width:10px;background:transparent;overflow:visible}::-webkit-scrollbar-corner{display:none;background:#f5f5f5}::-webkit-scrollbar-button{display:none;height:0;width:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-track{-moz-background-clip:border;-webkit-background-clip:border;background-clip:padding-box;background-color:#f5f5f5}::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-left-width:0;border-right-width:0}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-style:solid;border-color:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#ddd;min-height:40px;padding-top:100px}::-webkit-scrollbar-thumb:hover,body:hover ::-webkit-scrollbar-thumb{background-color:#bdbdbd}::-webkit-scrollbar-thumb:active{background-color:#989898}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{border-width:0}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:100;src:local("Roboto Thin "),local("Roboto-Thin"),url(../../static/media/roboto-latin-100.987b8457.woff2) format("woff2"),url(../../static/media/roboto-latin-100.e9dbbe8a.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:100;src:local("Roboto Thin italic"),local("Roboto-Thinitalic"),url(../../static/media/roboto-latin-100italic.6232f43d.woff2) format("woff2"),url(../../static/media/roboto-latin-100italic.d704bb3d.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:300;src:local("Roboto Light "),local("Roboto-Light"),url(../../static/media/roboto-latin-300.55536c8e.woff2) format("woff2"),url(../../static/media/roboto-latin-300.a1471d1d.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:300;src:local("Roboto Light italic"),local("Roboto-Lightitalic"),url(../../static/media/roboto-latin-300italic.d69924b9.woff2) format("woff2"),url(../../static/media/roboto-latin-300italic.210a7c78.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:local("Roboto Regular "),local("Roboto-Regular"),url(../../static/media/roboto-latin-400.5d4aeb4e.woff2) format("woff2"),url(../../static/media/roboto-latin-400.bafb105b.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:400;src:local("Roboto Regular italic"),local("Roboto-Regularitalic"),url(../../static/media/roboto-latin-400italic.d8bcbe72.woff2) format("woff2"),url(../../static/media/roboto-latin-400italic.9680d5a0.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:local("Roboto Medium "),local("Roboto-Medium"),url(../../static/media/roboto-latin-500.28546717.woff2) format("woff2"),url(../../static/media/roboto-latin-500.de8b7431.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:500;src:local("Roboto Medium italic"),local("Roboto-Mediumitalic"),url(../../static/media/roboto-latin-500italic.510dec37.woff2) format("woff2"),url(../../static/media/roboto-latin-500italic.ffcc050b.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:local("Roboto Bold "),local("Roboto-Bold"),url(../../static/media/roboto-latin-700.037d8304.woff2) format("woff2"),url(../../static/media/roboto-latin-700.cf6613d1.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:700;src:local("Roboto Bold italic"),local("Roboto-Bolditalic"),url(../../static/media/roboto-latin-700italic.010c1aee.woff2) format("woff2"),url(../../static/media/roboto-latin-700italic.846d1890.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:900;src:local("Roboto Black "),local("Roboto-Black"),url(../../static/media/roboto-latin-900.19b7a0ad.woff2) format("woff2"),url(../../static/media/roboto-latin-900.8c2ade50.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:900;src:local("Roboto Black italic"),local("Roboto-Blackitalic"),url(../../static/media/roboto-latin-900italic.7b770d6c.woff2) format("woff2"),url(../../static/media/roboto-latin-900italic.bc833e72.woff) format("woff")}@-webkit-keyframes onAutoFillStart{kopano{keepme:0}}@keyframes onAutoFillStart{kopano{keepme:0}}@-webkit-keyframes onAutoFillCancel{kopano{keepme:0}}@keyframes onAutoFillCancel{kopano{keepme:0}}#bg-thumb{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiPjxmaWx0ZXIgaWQ9ImEiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIvPjxmZUNvbXBvbmVudFRyYW5zZmVyPjxmZUZ1bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMSAxIi8+PC9mZUNvbXBvbmVudFRyYW5zZmVyPjwvZmlsdGVyPjxpbWFnZSBmaWx0ZXI9InVybCgjYSkiIGhyZWY9ImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUJMQUVzQUFELzJ3QkRBQkFMREE0TUNoQU9EUTRTRVJBVEdDZ2FHQllXR0RFakpSMG9Pak05UERrek9EZEFTRnhPUUVSWFJUYzRVRzFSVjE5aVoyaG5QazF4ZVhCa2VGeGxaMlAvd0FBTENBQW9BRWNCQVJFQS84UUFHZ0FBQWdNQkFRQUFBQUFBQUFBQUFBQUFBd1lDQkFVQkFQL0VBQzRRQUFJQkF3SURCZ1lEQVFBQUFBQUFBQUVDQXdBRUVRVWhFaUl4RXhReVFWRmhCbEp4Z1pHaEpHS3gwZi9hQUFnQkFRQUFQd0J3QUJHOVJZQWRhNWhENTBOd0Y2R2hoeGpmTkdqYzRxZU0rZGR3QVBXbHI0c1V5OTNHQ1J2bkFKOVBjRDhtbWRCVVpSc0s5SEVYcU04UlJDYXFBMVYxbTZtc3JXT1NIcVd4MG8razNNbHpaSkxLZWM1enRpcnpNQXRMdnhLVi9qRmlvOFhpSyszemY4cGxRMUtUb0s4a3lSWTQyeG1vWDF4eFFBb1ZhTnhrSE85Wk1seHdLQ0ZKeWNZQjZVRFZ0VHQ0N0FQZVJyd1JudzU1dlQxM3BmOEFoWFZMYnZjc0VsM1BBWjVNb1NBVittL1NtT1RWYmUxV1B2VnlwRFNNaVBqeFlZZ2RLRnJ3Sjd0Z3VBUzNoTER5L3FEV3kwanJHZXpBTDQyejBvVVV0NFV6Y05FRzlFVWtmdXFXb2lZQlhobUtTS0NGd0NTYy9lczY2bnZGc0kxdTVTc2g4Q0p5a0QzeC9sVjdtOTdTMjVTZWJiTlpldTN0eGZMSEc1VGdVWTRlZ3pXWHBwa1NVeHFpOGZGd2JqTzlNa1MyMTFGR2swU2t4dUNpOFI1ZDl6K2FZNWJTQytFSW5KNU1rRWZTamh4OHdyb1lIekZVdFR1cmZUN2RycVZBejlGSG14OUtXdGN1WlZ2bEpqSk1rWVBHRzZmYXNwWkxvbGVPVml1Y2tZb2R4STF5M0NJVEZrNUpMakg3eFI5TTdPMjFOYmx1eXVncEpLbktndDZnMVlGMDBVeVNpMFlrWnl3azJ3ZmJIdldsRGQ2bkZweTZqYkR2SWZab21ROHB6amJCci8vWiIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIvPjwvc3ZnPg==")}#bg{background-color:#fff}#bg>div{position:absolute;top:0;bottom:0;left:0;right:0;background-size:cover;background-repeat:no-repeat;background-position:50%;z-index:0}#loader{color:#fff;text-shadow:#000 0 0 1px}#bg-enhanced{opacity:0;-webkit-transition:opacity 1s;transition:opacity 1s}#bg-enhanced.enhanced{background-image:url(../../static/media/loginscreen-bg.cc3ef0e4.jpg);opacity:1}#bg-enhanced.enhanced:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-image:url(../../static/media/loginscreen-bg-overlay.6f9a3fb0.svg);background-size:cover;background-repeat:no-repeat;background-position:50%} +/*# sourceMappingURL=main.ed0ebb7d.chunk.css.map */ \ No newline at end of file diff --git a/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css.map b/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css.map new file mode 100644 index 0000000000..350f061ac9 --- /dev/null +++ b/web/identifier-webapp/static/css/main.ed0ebb7d.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["/home/ilja/code/konnect/identifier/node_modules/kpop/static/css/base.css","main.ed0ebb7d.chunk.css","/home/ilja/code/konnect/identifier/node_modules/kpop/static/css/scrollbar.css","/home/ilja/code/konnect/identifier/node_modules/typeface-roboto/index.css","/home/ilja/code/konnect/identifier/src/app.css","/home/ilja/code/konnect/identifier/src/images/loginscreen-bg.css","/home/ilja/code/konnect/identifier/src/fancy-background.css"],"names":[],"mappings":"AAAA,UACE,WCCF,CDEA,KACE,QAAA,CACA,SCCF,CDEA,IACE,cAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,eCCF,CDEA,QACE,iBAAA,CACA,SAAA,CACA,QAAA,CACA,eAAA,CACA,6CAAA,CACA,UAAA,CACA,sCAAA,CAAA,8BCEF,CDCA,UACE,aCEF,CDCA,gBACE,iBAAA,CACA,UAAA,CACA,eAAA,CACA,UAAA,CACA,6CCEF,CDCA,qBACE,eCEF,CDCA,MACE,WAAA,CACA,YCEF,CChDA,oBACE,UAAA,CACA,UAAA,CACA,sBAAA,CACA,gBDmDF,CChDA,2BACE,YAAA,CACA,kBDmDF,CChDA,2BACE,YAAA,CACA,QAAA,CACA,ODmDF,CChDA,oFACE,aDmDF,CChDA,sGACE,YDmDF,CChDA,0BACE,2BAAA,CACA,8BAAA,CACA,2BAAA,CACA,wBDmDF,CChDA,wEACE,mBAAA,CACA,oBDmDF,CChDA,gJACE,kBAAA,CACA,wBDmDF,CChDA,0BACE,2BAAA,CACA,qBAAA,CACA,eAAA,CACA,iBDmDF,CC5CA,qEACE,wBDmDF,CChDA,iCACE,wBDmDF,CChDA,wEAGE,cDmDF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,4LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,oNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,8LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,sNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,kMF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,0NF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,gMF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,wNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,4LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,oNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,8LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,sNF2HF,CG7QA,mCACE,OAAS,QAA+D,CHoR1E,CGrRA,2BACE,OAAS,QAA+D,CHuR1E,CGrRA,oCACE,OAAS,QAA+D,CHuR1E,CGxRA,4BACE,OAAS,QAA+D,CH0R1E,CIjSA,UAIE,spDJoSF,CKtSA,IACE,qBL2SF,CKxSA,QACE,iBAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,qBAAA,CACA,2BAAA,CACA,uBAAA,CACA,SL2SF,CKxSA,QAEE,UAAA,CACA,wBL2SF,CKrSA,aACE,SAAA,CACA,6BAAA,CAAA,qBL2SF,CKxSA,sBACE,oEAAkD,CAClD,SL2SF,CKxSA,4BACE,UAAA,CACA,iBAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,4EAA0D,CAC1D,qBAAA,CACA,2BAAA,CACA,uBL2SF","file":"main.ed0ebb7d.chunk.css","sourcesContent":["html, body {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n}\n\n#bg {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: white;\n}\n\n#loader {\n position: absolute;\n bottom: 6%;\n left: 50%;\n font-weight: 400;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n color: #666;\n transform: translate(-50%, -50%);\n}\n\n#loader > a {\n color: #1e98d7 /* KopanoBlue700 */\n}\n\n#font-preloader {\n position: absolute;\n top: -500px;\n font-weight: 400;\n color: white;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n}\n\n#font-preloader > span {\n font-weight: 500;\n}\n\n#root {\n height: 100%;\n display: flex;\n}\n","html, body {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n}\n\n#bg {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: white;\n}\n\n#loader {\n position: absolute;\n bottom: 6%;\n left: 50%;\n font-weight: 400;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n color: #666;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n\n#loader > a {\n color: #1e98d7 /* KopanoBlue700 */\n}\n\n#font-preloader {\n position: absolute;\n top: -500px;\n font-weight: 400;\n color: white;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n}\n\n#font-preloader > span {\n font-weight: 500;\n}\n\n#root {\n height: 100%;\n display: flex;\n}\n\n::-webkit-scrollbar {\n height: 8px;\n width: 10px;\n background: transparent;\n overflow: visible;\n}\n\n::-webkit-scrollbar-corner {\n display: none;\n background: #f5f5f5;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n height:0;\n width: 0;\n}\n\n::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment {\n display: block;\n}\n\n::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement {\n display: none;\n}\n\n::-webkit-scrollbar-track {\n -moz-background-clip: border;\n -webkit-background-clip: border;\n background-clip: padding-box;\n background-color: #f5f5f5;\n}\n\n::-webkit-scrollbar-track:vertical, ::-webkit-scrollbar-track:horizontal {\n border-left-width: 0;\n border-right-width: 0;\n}\n\n::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal {\n border-style: solid;\n border-color: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n background-color: #ddd;\n min-height: 40px;\n padding-top: 100px;\n}\n\nbody:hover ::-webkit-scrollbar-thumb {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:active {\n background-color: #989898;\n}\n\n::-webkit-scrollbar-thumb:vertical, ::-webkit-scrollbar-thumb:horizontal {\n border-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n}\n\n/* roboto-100normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin '),\n local('Roboto-Thin'),\n url(../../static/media/roboto-latin-100.987b8457.woff2) format('woff2'), \n url(../../static/media/roboto-latin-100.e9dbbe8a.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-100italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin italic'),\n local('Roboto-Thinitalic'),\n url(../../static/media/roboto-latin-100italic.6232f43d.woff2) format('woff2'), \n url(../../static/media/roboto-latin-100italic.d704bb3d.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light '),\n local('Roboto-Light'),\n url(../../static/media/roboto-latin-300.55536c8e.woff2) format('woff2'), \n url(../../static/media/roboto-latin-300.a1471d1d.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light italic'),\n local('Roboto-Lightitalic'),\n url(../../static/media/roboto-latin-300italic.d69924b9.woff2) format('woff2'), \n url(../../static/media/roboto-latin-300italic.210a7c78.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular '),\n local('Roboto-Regular'),\n url(../../static/media/roboto-latin-400.5d4aeb4e.woff2) format('woff2'), \n url(../../static/media/roboto-latin-400.bafb105b.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular italic'),\n local('Roboto-Regularitalic'),\n url(../../static/media/roboto-latin-400italic.d8bcbe72.woff2) format('woff2'), \n url(../../static/media/roboto-latin-400italic.9680d5a0.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium '),\n local('Roboto-Medium'),\n url(../../static/media/roboto-latin-500.28546717.woff2) format('woff2'), \n url(../../static/media/roboto-latin-500.de8b7431.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium italic'),\n local('Roboto-Mediumitalic'),\n url(../../static/media/roboto-latin-500italic.510dec37.woff2) format('woff2'), \n url(../../static/media/roboto-latin-500italic.ffcc050b.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold '),\n local('Roboto-Bold'),\n url(../../static/media/roboto-latin-700.037d8304.woff2) format('woff2'), \n url(../../static/media/roboto-latin-700.cf6613d1.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold italic'),\n local('Roboto-Bolditalic'),\n url(../../static/media/roboto-latin-700italic.010c1aee.woff2) format('woff2'), \n url(../../static/media/roboto-latin-700italic.846d1890.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black '),\n local('Roboto-Black'),\n url(../../static/media/roboto-latin-900.19b7a0ad.woff2) format('woff2'), \n url(../../static/media/roboto-latin-900.8c2ade50.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black italic'),\n local('Roboto-Blackitalic'),\n url(../../static/media/roboto-latin-900italic.7b770d6c.woff2) format('woff2'), \n url(../../static/media/roboto-latin-900italic.bc833e72.woff) format('woff'); /* Modern Browsers */\n}\n\n\n/* additional css on top of kpop */\n\n/* Register animations to allow JavaScript hooks to react on browser auto fill. */\n@-webkit-keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@-webkit-keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n\n#bg-thumb {\n /* NOTE(longsleep): This is the base64 encoded svg, inlined directly to show\n this image as early as possible.\n */\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIKICAgICB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIj4KICA8ZmlsdGVyIGlkPSJibHVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIgZWRnZU1vZGU9ImR1cGxpY2F0ZSIgLz4KICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgogICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz4KICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KICA8L2ZpbHRlcj4KICA8aW1hZ2UgZmlsdGVyPSJ1cmwoI2JsdXIpIgogICAgICAgICBocmVmPSJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVCTEFFc0FBRC8yd0JEQUJBTERBNE1DaEFPRFE0U0VSQVRHQ2dhR0JZV0dERWpKUjBvT2pNOVBEa3pPRGRBU0Z4T1FFUlhSVGM0VUcxUlYxOWlaMmhuUGsxeGVYQmtlRnhsWjJQL3dBQUxDQUFvQUVjQkFSRUEvOFFBR2dBQUFnTUJBUUFBQUFBQUFBQUFBQUFBQXdZQ0JBVUJBUC9FQUM0UUFBSUJBd0lEQmdZREFRQUFBQUFBQUFFQ0F3QUVFUVVoRWlJeEV4UXlRVkZoQmxKeGdaR2hKR0t4MGYvYUFBZ0JBUUFBUHdCd0FCRzlSWUFkYTVoRDUwTndGNkdoaHhqZk5HamM0cWVNK2Rkd0FQV2xyNHNVeTkzR0NSdm5BSjlQY0Q4bW1kQlVaUnNLOUhFWHFNOFJSQ2FxQTFWMW02bXNyV09TSHFXeDBvK2szTWx6WkpMS2VjNXp0aXJ6TUF0THZ4S1YvakZpbzhYaUsrM3pmOHBsUTFLVG9LOGt5Ulk0Mnhtb1gxeHhRQW9WYU54a0hPOVpNbHh3S0NGSnljWUI2VURWdFR0NDdBUGVScndSbnc1NXZUMTNwZjhBaFhWTGJ2Y3NFbDNQQVo1TW9TQVYrbS9TbU9UVmJlMVdQdlZ5cERTTWlQanhZWWdkS0Zyd0o3dGd1QVMzaExEeS9xRFd5MGpyR2V6QUw0Mnowb1VVdDRVemNORUc5RVVrZnVxV29pWUJYaG1LU0tDRndDU2MvZXM2Nm52RnNJMXU1U3NoOENKeWtEM3gvbFY3bTk3UzI1U2ViYk5aZXUzdHhmTEhHNVRnVVk0ZWd6V1hwcGtTVXhxaThmRndiak85TWtTMjExRkdrMFNreHVDaThSNWQ5eithWTViU0MrRUluSjVNa0VmU2poeDh3cm9ZSHpGVXRUdXJmVDdkcnFWQXo5RkhteDlLV3RjdVpWdmxKakpNa1lQR0c2ZmFzcFpMb2xlT1ZpdWNrWW9keEkxeTNDSVRGazVKTGpIN3hSOU03TzIxTmJsdXl1Z3BKS25LZ3Q2ZzFZRjAwVXlTaTBZa1p5d2syd2ZiSHZXbERkNm5GcHk2amJEdklmWm9tUThwempiQnIvL1oiCiAgICAgICAgIHg9IjAiIHk9IjAiCiAgICAgICAgIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiLz4KPC9zdmc+Cg==\");\n}\n\n/* fancy background with two components and fade */\n\n#bg {\n background-color: white;\n}\n\n#bg > div {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n z-index: 0;\n}\n\n#loader {\n /* NOTE(longsleep): White here needed because of the background image */\n color: white;\n text-shadow: #000 0px 0px 1px;\n}\n\n/* NOTE(longsleep): This imports the inline image CSS as generated by make. */\n\n#bg-enhanced {\n opacity: 0;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n\n#bg-enhanced.enhanced {\n background-image: url(../../static/media/loginscreen-bg.cc3ef0e4.jpg);\n opacity: 1;\n}\n\n#bg-enhanced.enhanced:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-image: url(../../static/media/loginscreen-bg-overlay.6f9a3fb0.svg);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n","::-webkit-scrollbar {\n height: 8px;\n width: 10px;\n background: transparent;\n overflow: visible;\n}\n\n::-webkit-scrollbar-corner {\n display: none;\n background: #f5f5f5;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n height:0;\n width: 0;\n}\n\n::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment {\n display: block;\n}\n\n::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement {\n display: none;\n}\n\n::-webkit-scrollbar-track {\n -moz-background-clip: border;\n -webkit-background-clip: border;\n background-clip: padding-box;\n background-color: #f5f5f5;\n}\n\n::-webkit-scrollbar-track:vertical, ::-webkit-scrollbar-track:horizontal {\n border-left-width: 0;\n border-right-width: 0;\n}\n\n::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal {\n border-style: solid;\n border-color: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n background-color: #ddd;\n min-height: 40px;\n padding-top: 100px;\n}\n\nbody:hover ::-webkit-scrollbar-thumb {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:active {\n background-color: #989898;\n}\n\n::-webkit-scrollbar-thumb:vertical, ::-webkit-scrollbar-thumb:horizontal {\n border-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n}\n","/* roboto-100normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin '),\n local('Roboto-Thin'),\n url('./files/roboto-latin-100.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-100.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-100italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin italic'),\n local('Roboto-Thinitalic'),\n url('./files/roboto-latin-100italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-100italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light '),\n local('Roboto-Light'),\n url('./files/roboto-latin-300.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-300.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light italic'),\n local('Roboto-Lightitalic'),\n url('./files/roboto-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-300italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular '),\n local('Roboto-Regular'),\n url('./files/roboto-latin-400.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-400.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular italic'),\n local('Roboto-Regularitalic'),\n url('./files/roboto-latin-400italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-400italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium '),\n local('Roboto-Medium'),\n url('./files/roboto-latin-500.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-500.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium italic'),\n local('Roboto-Mediumitalic'),\n url('./files/roboto-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-500italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold '),\n local('Roboto-Bold'),\n url('./files/roboto-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-700.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold italic'),\n local('Roboto-Bolditalic'),\n url('./files/roboto-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-700italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black '),\n local('Roboto-Black'),\n url('./files/roboto-latin-900.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-900.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black italic'),\n local('Roboto-Blackitalic'),\n url('./files/roboto-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-900italic.woff') format('woff'); /* Modern Browsers */\n}\n\n","/* additional css on top of kpop */\n\n/* Register animations to allow JavaScript hooks to react on browser auto fill. */\n@keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n","#bg-thumb {\n /* NOTE(longsleep): This is the base64 encoded svg, inlined directly to show\n this image as early as possible.\n */\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIKICAgICB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIj4KICA8ZmlsdGVyIGlkPSJibHVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIgZWRnZU1vZGU9ImR1cGxpY2F0ZSIgLz4KICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgogICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz4KICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KICA8L2ZpbHRlcj4KICA8aW1hZ2UgZmlsdGVyPSJ1cmwoI2JsdXIpIgogICAgICAgICBocmVmPSJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVCTEFFc0FBRC8yd0JEQUJBTERBNE1DaEFPRFE0U0VSQVRHQ2dhR0JZV0dERWpKUjBvT2pNOVBEa3pPRGRBU0Z4T1FFUlhSVGM0VUcxUlYxOWlaMmhuUGsxeGVYQmtlRnhsWjJQL3dBQUxDQUFvQUVjQkFSRUEvOFFBR2dBQUFnTUJBUUFBQUFBQUFBQUFBQUFBQXdZQ0JBVUJBUC9FQUM0UUFBSUJBd0lEQmdZREFRQUFBQUFBQUFFQ0F3QUVFUVVoRWlJeEV4UXlRVkZoQmxKeGdaR2hKR0t4MGYvYUFBZ0JBUUFBUHdCd0FCRzlSWUFkYTVoRDUwTndGNkdoaHhqZk5HamM0cWVNK2Rkd0FQV2xyNHNVeTkzR0NSdm5BSjlQY0Q4bW1kQlVaUnNLOUhFWHFNOFJSQ2FxQTFWMW02bXNyV09TSHFXeDBvK2szTWx6WkpMS2VjNXp0aXJ6TUF0THZ4S1YvakZpbzhYaUsrM3pmOHBsUTFLVG9LOGt5Ulk0Mnhtb1gxeHhRQW9WYU54a0hPOVpNbHh3S0NGSnljWUI2VURWdFR0NDdBUGVScndSbnc1NXZUMTNwZjhBaFhWTGJ2Y3NFbDNQQVo1TW9TQVYrbS9TbU9UVmJlMVdQdlZ5cERTTWlQanhZWWdkS0Zyd0o3dGd1QVMzaExEeS9xRFd5MGpyR2V6QUw0Mnowb1VVdDRVemNORUc5RVVrZnVxV29pWUJYaG1LU0tDRndDU2MvZXM2Nm52RnNJMXU1U3NoOENKeWtEM3gvbFY3bTk3UzI1U2ViYk5aZXUzdHhmTEhHNVRnVVk0ZWd6V1hwcGtTVXhxaThmRndiak85TWtTMjExRkdrMFNreHVDaThSNWQ5eithWTViU0MrRUluSjVNa0VmU2poeDh3cm9ZSHpGVXRUdXJmVDdkcnFWQXo5RkhteDlLV3RjdVpWdmxKakpNa1lQR0c2ZmFzcFpMb2xlT1ZpdWNrWW9keEkxeTNDSVRGazVKTGpIN3hSOU03TzIxTmJsdXl1Z3BKS25LZ3Q2ZzFZRjAwVXlTaTBZa1p5d2syd2ZiSHZXbERkNm5GcHk2amJEdklmWm9tUThwempiQnIvL1oiCiAgICAgICAgIHg9IjAiIHk9IjAiCiAgICAgICAgIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiLz4KPC9zdmc+Cg==\");\n}\n","/* fancy background with two components and fade */\n\n#bg {\n background-color: white;\n}\n\n#bg > div {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n z-index: 0;\n}\n\n#loader {\n /* NOTE(longsleep): White here needed because of the background image */\n color: white;\n text-shadow: #000 0px 0px 1px;\n}\n\n/* NOTE(longsleep): This imports the inline image CSS as generated by make. */\n@import url(./images/loginscreen-bg.css);\n\n#bg-enhanced {\n opacity: 0;\n transition: opacity 1s;\n}\n\n#bg-enhanced.enhanced {\n background-image: url(./images/loginscreen-bg.jpg);\n opacity: 1;\n}\n\n#bg-enhanced.enhanced:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-image: url(./images/loginscreen-bg-overlay.svg);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n"]} \ No newline at end of file diff --git a/web/identifier-webapp/static/favicon.ico b/web/identifier-webapp/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8dac29ba1a8a8f33841b108bff0a1c3c5f149029 GIT binary patch literal 108611 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

Qzd;Y~t;sUE4IxDXPLMbBC=Coo>gp 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 BE0F*I literal 0 HcmV?d00001 diff --git a/web/identifier-webapp/static/js/4.f92d7884.chunk.js b/web/identifier-webapp/static/js/4.f92d7884.chunk.js new file mode 100644 index 0000000000..00941a75cf --- /dev/null +++ b/web/identifier-webapp/static/js/4.f92d7884.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],[,,,,,,,function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";e.exports=n(222)},function(e,t,n){e.exports=n(227)()},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},,function(e,t,n){"use strict";n.r(t);var r=n(140),o=n.n(r);n.d(t,"componentPropType",function(){return o.a});var a=n(142),i=n.n(a);n.d(t,"chainPropTypes",function(){return i.a});var u=n(143),l=n.n(u);n.d(t,"exactProp",function(){return l.a});var s=n(144),c=n.n(s);n.d(t,"getDisplayName",function(){return c.a});var f=n(145),d=n.n(f);n.d(t,"ponyfillGlobal",function(){return d.a})},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.sheetsManager=void 0;var o=r(n(15)),a=r(n(10)),i=r(n(16)),u=r(n(17)),l=r(n(18)),s=r(n(19)),c=r(n(20)),f=r(n(11)),d=r(n(8)),p=r(n(9)),h=(r(n(21)),r(n(48))),m=n(13),v=n(147),y=r(n(315)),g=r(n(146)),b=r(n(153)),x=r(n(316)),w=r(n(89)),k=r(n(96)),_=r(n(138)),S=r(n(317)),T=r(n(154)),P=(0,v.create)((0,g.default)()),O=(0,_.default)(),N=-1e11,C=new Map;t.sheetsManager=C;var E={},j=(0,w.default)({typography:{suppressWarning:!0}});m.ponyfillGlobal.__MUI_STYLES__||(m.ponyfillGlobal.__MUI_STYLES__={}),m.ponyfillGlobal.__MUI_STYLES__.withStyles||(m.ponyfillGlobal.__MUI_STYLES__.withStyles=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(n){var r,m=t.withTheme,v=void 0!==m&&m,g=t.flip,w=void 0===g?null:g,_=t.name,M=(0,f.default)(t,["withTheme","flip","name"]),L=(0,S.default)(e),A=L.themingEnabled||"string"===typeof _||v;N+=1,L.options.index=N;var R=function(e){function t(e,n){var r;(0,i.default)(this,t),(r=(0,l.default)(this,(0,s.default)(t).call(this,e,n))).jss=n[y.default.jss]||P,r.sheetsManager=C,r.unsubscribeId=null;var o=n.muiThemeProviderOptions;return o&&(o.sheetsManager&&(r.sheetsManager=o.sheetsManager),r.sheetsCache=o.sheetsCache,r.disableStylesGeneration=o.disableStylesGeneration),r.stylesCreatorSaved=L,r.sheetOptions=(0,a.default)({generateClassName:O},n[y.default.sheetOptions]),r.theme=A?k.default.initial(n)||j:E,r.attach(r.theme),r.cacheClasses={value:null,lastProp:null,lastJSS:{}},r}return(0,c.default)(t,e),(0,u.default)(t,[{key:"componentDidMount",value:function(){var e=this;A&&(this.unsubscribeId=k.default.subscribe(this.context,function(t){var n=e.theme;e.theme=t,e.attach(e.theme),e.setState({},function(){e.detach(n)})}))}},{key:"componentDidUpdate",value:function(){this.stylesCreatorSaved}},{key:"componentWillUnmount",value:function(){this.detach(this.theme),null!==this.unsubscribeId&&k.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"getClasses",value:function(){if(this.disableStylesGeneration)return this.props.classes||{};var e=!1,t=x.default.get(this.sheetsManager,this.stylesCreatorSaved,this.theme);return t.sheet.classes!==this.cacheClasses.lastJSS&&(this.cacheClasses.lastJSS=t.sheet.classes,e=!0),this.props.classes!==this.cacheClasses.lastProp&&(this.cacheClasses.lastProp=this.props.classes,e=!0),e&&(this.cacheClasses.value=(0,b.default)({baseClasses:this.cacheClasses.lastJSS,newClasses:this.props.classes,Component:n})),this.cacheClasses.value}},{key:"attach",value:function(e){if(!this.disableStylesGeneration){var t=this.stylesCreatorSaved,n=x.default.get(this.sheetsManager,t,e);if(n||(n={refs:0,sheet:null},x.default.set(this.sheetsManager,t,e,n)),0===n.refs){var r;this.sheetsCache&&(r=x.default.get(this.sheetsCache,t,e)),r||((r=this.createSheet(e)).attach(),this.sheetsCache&&x.default.set(this.sheetsCache,t,e,r)),n.sheet=r;var o=this.context[y.default.sheetsRegistry];o&&o.add(r)}n.refs+=1}}},{key:"createSheet",value:function(e){var t=this.stylesCreatorSaved.create(e,_),r=_;return this.jss.createStyleSheet(t,(0,a.default)({meta:r,classNamePrefix:r,flip:"boolean"===typeof w?w:"rtl"===e.direction,link:!1},this.sheetOptions,this.stylesCreatorSaved.options,{name:_||n.displayName},M))}},{key:"detach",value:function(e){if(!this.disableStylesGeneration){var t=x.default.get(this.sheetsManager,this.stylesCreatorSaved,e);if(t.refs-=1,0===t.refs){x.default.delete(this.sheetsManager,this.stylesCreatorSaved,e),this.jss.removeStyleSheet(t.sheet);var n=this.context[y.default.sheetsRegistry];n&&n.remove(t.sheet)}}}},{key:"render",value:function(){var e=this.props,t=(e.classes,e.innerRef),r=(0,f.default)(e,["classes","innerRef"]),o=(0,T.default)({theme:this.theme,name:_,props:r});return v&&!o.theme&&(o.theme=this.theme),d.default.createElement(n,(0,a.default)({},o,{classes:this.getClasses(),ref:t}))}}]),t}(d.default.Component);return R.contextTypes=(0,a.default)((r={muiThemeProviderOptions:p.default.object},(0,o.default)(r,y.default.jss,p.default.object),(0,o.default)(r,y.default.sheetOptions,p.default.object),(0,o.default)(r,y.default.sheetsRegistry,p.default.object),r),A?k.default.contextTypes:{}),(0,h.default)(R,n),R}});t.default=function(e,t){return m.ponyfillGlobal.__MUI_STYLES__.withStyles(e,(0,a.default)({defaultTheme:j},t))}},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[];(Array.isArray(e)?e:[e]).forEach(function(e){e&&e.locale&&(i.a.__addLocaleData(e),l.a.__addLocaleData(e))})}function b(e){var t=e&&e.toLowerCase();return!(!i.a.__localeData__[t]||!l.a.__localeData__[t])}var x="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},k=function(){function e(e,t){for(var n=0;n":">","<":"<",'"':""","'":"'"},Q=/[&><"']/g;function J(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.reduce(function(t,r){return e.hasOwnProperty(r)?t[r]=e[r]:n.hasOwnProperty(r)&&(t[r]=n[r]),t},{})}function X(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).intl;h()(e,"[React Intl] Could not find required `intl` object. needs to exist in the component ancestry.")}function Z(e,t){if(e===t)return!0;if("object"!==("undefined"===typeof e?"undefined":x(e))||null===e||"object"!==("undefined"===typeof t?"undefined":x(t))||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),a=0;a3&&void 0!==arguments[3]?arguments[3]:{},l=i.intl,s=void 0===l?{}:l,c=u.intl,f=void 0===c?{}:c;return!Z(t,r)||!Z(n,o)||!(f===s||Z(J(f,$),J(s,$)))}function te(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.intlPropName,o=void 0===r?"intl":r,a=n.withRef,i=void 0!==a&&a,u=function(t){function n(e,t){w(this,n);var r=P(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return X(t),r}return T(n,t),k(n,[{key:"getWrappedInstance",value:function(){return h()(i,"[React Intl] To access the wrapped instance, the `{withRef: true}` option must be set when calling: `injectIntl()`"),this.refs.wrappedInstance}},{key:"render",value:function(){return d.a.createElement(e,S({},this.props,_({},o,this.context.intl),{ref:i?"wrappedInstance":null}))}}]),n}(f.Component);return u.displayName="InjectIntl("+((t=e).displayName||t.name||"Component")+")",u.contextTypes={intl:H},u.WrappedComponent=e,u}function ne(e){return e}var re=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};w(this,e);var r,o="ordinal"===n.style,a=(r=function(e){return i.a.prototype._resolveLocale(e)}(t),i.a.prototype._findPluralRuleFunction(r));this.format=function(e){return a(e,o)}},oe=Object.keys(V),ae=Object.keys(G),ie=Object.keys(q),ue=Object.keys(K),le={second:60,minute:60,hour:24,day:30,month:12};function se(e){var t=l.a.thresholds;t.second=e.second,t.minute=e.minute,t.hour=e.hour,t.day=e.day,t.month=e.month}function ce(e,t,n){var r=e&&e[t]&&e[t][n];if(r)return r}function fe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=e.messages,u=e.defaultLocale,l=e.defaultFormats,s=n.id,c=n.defaultMessage;h()(s,"[React Intl] An `id` must be provided to format a message.");var f=i&&i[s];if(!(Object.keys(r).length>0))return f||c||s;var d=void 0;if(f)try{d=t.getMessageFormat(f,o,a).format(r)}catch(p){0}else 0;if(!d&&c)try{d=t.getMessageFormat(c,u,l).format(r)}catch(p){0}return d||f||c||s}var de=Object.freeze({formatDate:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),l=i&&ce(a,"date",i),s=J(r,oe,l);try{return t.getDateTimeFormat(o,s).format(u)}catch(c){}return String(u)},formatTime:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),l=i&&ce(a,"time",i),s=J(r,oe,l);s.hour||s.minute||s.second||(s=S({},s,{hour:"numeric",minute:"numeric"}));try{return t.getDateTimeFormat(o,s).format(u)}catch(c){}return String(u)},formatRelative:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),s=new Date(r.now),c=i&&ce(a,"relative",i),f=J(r,ie,c),d=S({},l.a.thresholds);se(le);try{return t.getRelativeFormat(o,f).format(u,{now:isFinite(s)?s:t.now()})}catch(p){}finally{se(d)}return String(u)},formatNumber:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=i&&ce(a,"number",i),l=J(r,ae,u);try{return t.getNumberFormat(o,l).format(n)}catch(s){}return String(n)},formatPlural:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=J(r,ue);try{return t.getPluralFormat(o,a).format(n)}catch(i){}return"other"},formatMessage:fe,formatHTMLMessage:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return fe(e,t,n,Object.keys(r).reduce(function(e,t){var n=r[t];return e[t]="string"===typeof n?(""+n).replace(Q,function(e){return Y[e]}):n,e},{}))}}),pe=Object.keys(B),he=Object.keys(W),me={formats:{},messages:{},textComponent:"span",defaultLocale:"en",defaultFormats:{}},ve=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};w(this,t);var r=P(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h()("undefined"!==typeof Intl,"[React Intl] The `Intl` APIs must be available in the runtime, and do not appear to be built-in. An `Intl` polyfill should be loaded.\nSee: http://formatjs.io/guides/runtime-environments/");var o=n.intl,a=void 0;a=isFinite(e.initialNow)?Number(e.initialNow):o?o.now():Date.now();var u=(o||{}).formatters,s=void 0===u?{getDateTimeFormat:v()(Intl.DateTimeFormat),getNumberFormat:v()(Intl.NumberFormat),getMessageFormat:v()(i.a),getRelativeFormat:v()(l.a),getPluralFormat:v()(re)}:u;return r.state=S({},s,{now:function(){return r._didDisplay?Date.now():a}}),r}return T(t,e),k(t,[{key:"getConfig",value:function(){var e=this.context.intl,t=J(this.props,pe,e);for(var n in me)void 0===t[n]&&(t[n]=me[n]);if(!function(e){for(var t=(e||"").split("-");t.length>0;){if(b(t.join("-")))return!0;t.pop()}return!1}(t.locale)){var r=t,o=(r.locale,r.defaultLocale),a=r.defaultFormats;0,t=S({},t,{locale:o,formats:a,messages:me.messages})}return t}},{key:"getBoundFormatFns",value:function(e,t){return he.reduce(function(n,r){return n[r]=de[r].bind(null,e,t),n},{})}},{key:"getChildContext",value:function(){var e=this.getConfig(),t=this.getBoundFormatFns(e,this.state),n=this.state,r=n.now,o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(n,["now"]);return{intl:S({},e,t,{formatters:o,now:r})}}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n1?r-1:0),a=1;a0){var m=Math.floor(1099511627776*Math.random()).toString(16),v=function(){var e=0;return function(){return"ELEMENT-"+m+"-"+(e+=1)}}();d="@__"+m+"__@",p={},h={},Object.keys(u).forEach(function(e){var t=u[e];if(Object(f.isValidElement)(t)){var n=v();p[e]=d+n+d,h[n]=t}else p[e]=t})}var y=t({id:o,description:a,defaultMessage:i},p||u),g=void 0;return g=h&&Object.keys(h).length>0?y.split(d).filter(function(e){return!!e}).map(function(e){return h[e]||e}):[y],"function"===typeof c?c.apply(void 0,O(g)):f.createElement.apply(void 0,[s,null].concat(O(g)))}}]),t}(f.Component);Oe.displayName="FormattedMessage",Oe.contextTypes={intl:H},Oe.defaultProps={values:{}};var Ne=function(e){function t(e,n){w(this,t);var r=P(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return X(n),r}return T(t,e),k(t,[{key:"shouldComponentUpdate",value:function(e){var t=this.props.values;if(!Z(e.values,t))return!0;for(var n=S({},e,{values:t}),r=arguments.length,o=Array(r>1?r-1:0),a=1;a=0||(o[n]=e[n]);return o}var p=n(48),h=n.n(p),m=n(133),v=n.n(m),y=n(69),g=null,b={notify:function(){}};var x=function(){function e(e,t,n){this.store=e,this.parentSub=t,this.onStateChange=n,this.unsubscribe=null,this.listeners=b}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var e=[],t=[];return{clear:function(){t=g,e=g},notify:function(){for(var n=e=t,r=0;r, or explicitly pass "'+N+'" as a prop to "'+a+'".'),r.initSelector(),r.initSubscription(),r}r(u,n);var l=u.prototype;return l.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[M]=t||this.context[M],e},l.componentDidMount=function(){P&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},l.componentWillReceiveProps=function(e){this.selector.run(e)},l.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},l.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=_,this.store=null,this.selector.run=_,this.selector.shouldComponentUpdate=!1},l.getWrappedInstance=function(){return v()(E,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+g+"() call."),this.wrappedInstance},l.setWrappedInstance=function(e){this.wrappedInstance=e},l.initSelector=function(){var t=e(this.store.dispatch,i);this.selector=function(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(a){n.shouldComponentUpdate=!0,n.error=a}}};return n}(t,this.store),this.selector.run(this.props)},l.initSubscription=function(){if(P){var e=(this.propsMode?this.props:this.context)[M];this.subscription=new x(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},l.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(k)):this.notifyNestedSubs()},l.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},l.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},l.addExtraProps=function(e){if(!E&&!S&&(!this.propsMode||!this.subscription))return e;var t=f({},e);return E&&(t.ref=this.setWrappedInstance),S&&(t[S]=this.renderCount++),this.propsMode&&this.subscription&&(t[M]=this.subscription),t},l.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(o.createElement)(t,this.addExtraProps(e.props))},u}(o.Component);return u.WrappedComponent=t,u.displayName=a,u.childContextTypes=R,u.contextTypes=A,u.propTypes=A,h()(u,t)}}var T=Object.prototype.hasOwnProperty;function P(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function O(e,t){if(P(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function z(e,t){return e===t}var B=function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?S:n,o=t.mapStateToPropsFactories,a=void 0===o?L:o,i=t.mapDispatchToPropsFactories,u=void 0===i?M:i,l=t.mergePropsFactories,s=void 0===l?R:l,c=t.selectorFactory,p=void 0===c?D:c;return function(e,t,n,o){void 0===o&&(o={});var i=o,l=i.pure,c=void 0===l||l,h=i.areStatesEqual,m=void 0===h?z:h,v=i.areOwnPropsEqual,y=void 0===v?O:v,g=i.areStatePropsEqual,b=void 0===g?O:g,x=i.areMergedPropsEqual,w=void 0===x?O:x,k=d(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_=U(e,a,"mapStateToProps"),S=U(t,u,"mapDispatchToProps"),T=U(n,s,"mergeProps");return r(p,f({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:_,initMapDispatchToProps:S,initMergeProps:T,pure:c,areStatesEqual:m,areOwnPropsEqual:y,areStatePropsEqual:b,areMergedPropsEqual:w},k))}}();n.d(t,"a",function(){return s}),n.d(t,"b",function(){return B})},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},function(e,t,n){e.exports=!n(52)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},,function(e,t,n){var r=n(34),o=n(60);e.exports=n(41)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},,,,function(e,t,n){"use strict";var r=n(69),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function l(e){return r.isMemo(e)?i:u[e.$$typeof]||o}u[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=c(n);f&&(i=i.concat(f(n)));for(var u=l(t),m=l(n),v=0;v=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},,,,function(e,t,n){"use strict";e.exports=n(229)},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",function(){return r})},function(e,t,n){e.exports=function(){"use strict";var e=function(e){return function(e){return!!e&&"object"===typeof e}(e)&&!function(e){var n=Object.prototype.toString.call(e);return"[object RegExp]"===n||"[object Date]"===n||function(e){return e.$$typeof===t}(e)}(e)},t="function"===typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function r(e,t,r){return e.concat(t).map(function(e){return n(e,r)})}function o(e,t,r){var o={};return r.isMergeableObject(e)&&Object.keys(e).forEach(function(t){o[t]=n(e[t],r)}),Object.keys(t).forEach(function(i){r.isMergeableObject(t[i])&&e[i]?o[i]=function(e,t){if(!t.customMerge)return a;var n=t.customMerge(e);return"function"===typeof n?n:a}(i,r)(e[i],t[i],r):o[i]=n(t[i],r)}),o}function a(t,a,i){(i=i||{}).arrayMerge=i.arrayMerge||r,i.isMergeableObject=i.isMergeableObject||e;var u=Array.isArray(a),l=Array.isArray(t),s=u===l;return s?u?i.arrayMerge(t,a,i):o(t,a,i):n(a,i)}return a.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return a(e,n,t)},{})},a}()},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.convertHexToRGB=a,t.rgbToHex=function(e){if(0===e.indexOf("#"))return e;var t=i(e).values;return t=t.map(function(e){return function(e){var t=e.toString(16);return 1===t.length?"0".concat(t):t}(e)}),"#".concat(t.join(""))},t.decomposeColor=i,t.recomposeColor=u,t.getContrastRatio=function(e,t){var n=l(e),r=l(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.getLuminance=l,t.emphasize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return l(e)>.5?s(e,t):c(e,t)},t.fade=function(e,t){if(!e)return e;e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a");return e.values[3]=t,u(e)},t.darken=s,t.lighten=c;r(n(21));function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return en?n:e}function a(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length/3,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map(function(e){return e+e})),n?"rgb(".concat(n.map(function(e){return parseInt(e,16)}).join(", "),")"):""}function i(e){if("#"===e.charAt(0))return i(a(e));var t=e.indexOf("("),n=e.substring(0,t),r=e.substring(t+1,e.length-1).split(",");return{type:n,values:r=r.map(function(e){return parseFloat(e)})}}function u(e){var t=e.type,n=e.values;return-1!==t.indexOf("rgb")&&(n=n.map(function(e,t){return t<3?parseInt(e,10):e})),-1!==t.indexOf("hsl")&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(e.type,"(").concat(n.join(", "),")")}function l(e){var t=i(e);if(-1!==t.type.indexOf("rgb")){var n=t.values.map(function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)});return Number((.2126*n[0]+.7152*n[1]+.0722*n[2]).toFixed(3))}return t.values[2]/100}function s(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return u(e)}function c(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;return u(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!Array.isArray(e))return e;var n="";if(Array.isArray(e[0]))for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:"unnamed",t=arguments[1],n=arguments[2],i=n.jss,u=(0,a.default)(t),l=i.plugins.onCreateRule(e,u,n);if(l)return l;"@"===e[0]&&(0,r.default)(!1,"[JSS] Unknown at-rule %s",e);return new o.default(e,u,n)};var r=i(n(49)),o=i(n(50)),a=i(n(284));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";n.r(t),n.d(t,"isBrowser",function(){return o});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o="object"===("undefined"===typeof window?"undefined":r(window))&&"object"===("undefined"===typeof document?"undefined":r(document))&&9===document.nodeType;t.default=o},function(e,t){function n(e){return(n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(t){return"function"===typeof Symbol&&"symbol"===n(Symbol.iterator)?e.exports=r=function(e){return n(e)}:e.exports=r=function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)},r(t)}e.exports=r},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=r(n(10)),i=r(n(11)),u=r(n(16)),l=r(n(17)),s=r(n(18)),c=r(n(19)),f=r(n(20)),d=r(n(8)),p=(r(n(9)),r(n(48))),h=n(13),m=r(n(89)),v=r(n(96));h.ponyfillGlobal.__MUI_STYLES__||(h.ponyfillGlobal.__MUI_STYLES__={}),h.ponyfillGlobal.__MUI_STYLES__.withTheme||(h.ponyfillGlobal.__MUI_STYLES__.withTheme=function(){return function(e){var t=function(t){function n(e,t){var r;return(0,u.default)(this,n),(r=(0,s.default)(this,(0,c.default)(n).call(this))).state={theme:v.default.initial(t)||o||(o=(0,m.default)({typography:{suppressWarning:!0}}))},r}return(0,f.default)(n,t),(0,l.default)(n,[{key:"componentDidMount",value:function(){var e=this;this.unsubscribeId=v.default.subscribe(this.context,function(t){e.setState({theme:t})})}},{key:"componentWillUnmount",value:function(){null!==this.unsubscribeId&&v.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"render",value:function(){var t=this.props,n=t.innerRef,r=(0,i.default)(t,["innerRef"]);return d.default.createElement(e,(0,a.default)({theme:this.state.theme,ref:n},r))}}]),n}(d.default.Component);return t.contextTypes=v.default.contextTypes,(0,p.default)(t,e),t}});var y=h.ponyfillGlobal.__MUI_STYLES__.withTheme;t.default=y},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(34).f,o=n(44),a=n(24)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){n(340);for(var r=n(23),o=n(43),a=n(54),i=n(24)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,r=e.mixins,y=void 0===r?{}:r,g=e.palette,b=void 0===g?{}:g,x=e.shadows,w=e.spacing,k=void 0===w?{}:w,_=e.typography,S=void 0===_?{}:_,T=(0,a.default)(e,["breakpoints","mixins","palette","shadows","spacing","typography"]),P=(0,c.default)(b),O=(0,l.default)(n),N=(0,o.default)({},h.default,k);return(0,o.default)({breakpoints:O,direction:"ltr",mixins:(0,s.default)(O,N,y),overrides:{},palette:P,props:{},shadows:x||d.default,typography:(0,f.default)(P,S)},(0,i.default)({shape:p.default,spacing:N,transitions:m.default,zIndex:v.default},T,{isMergeableObject:u.default}))};t.default=y},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,u=void 0===r?"px":r,l=e.step,s=void 0===l?5:l,c=(0,a.default)(e,["values","unit","step"]);function f(e){var t="number"===typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(u,")")}function d(e,t){var r=i.indexOf(t)+1;return r===i.length?f(e):"@media (min-width:".concat(n[e]).concat(u,") and ")+"(max-width:".concat(n[i[r]]-s/100).concat(u,")")}return(0,o.default)({keys:i,values:n,up:f,down:function(e){var t=i.indexOf(e)+1,r=n[i[t]];if(t===i.length)return f("xs");return"@media (max-width:".concat(("number"===typeof r&&t>0?r:e)-s/100).concat(u,")")},between:d,only:function(e){return d(e,e)},width:function(e){return n[e]}},c)},t.keys=void 0;var o=r(n(10)),a=r(n(11)),i=["xs","sm","md","lg","xl"];t.keys=i},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.isNumber=t.isString=t.formatMs=t.duration=t.easing=void 0;var o=r(n(11)),a=(r(n(21)),{easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"});t.easing=a;var i={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};t.duration=i;var u=function(e){return"".concat(Math.round(e),"ms")};t.formatMs=u;t.isString=function(e){return"string"===typeof e};t.isNumber=function(e){return!isNaN(parseFloat(e))};var l={easing:a,duration:i,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,r=void 0===n?i.standard:n,l=t.easing,s=void 0===l?a.easeInOut:l,c=t.delay,f=void 0===c?0:c;(0,o.default)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map(function(e){return"".concat(e," ").concat("string"===typeof r?r:u(r)," ").concat(s," ").concat("string"===typeof f?f:u(f))}).join(",")},getAutoHeightDuration:function(e){if(!e)return 0;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r="";if(!t)return r;var o=n.indent,u=void 0===o?0:o,l=t.fallbacks;if(u++,l)if(Array.isArray(l))for(var s=0;s0?o(r(e),9007199254740991):0}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(103)("keys"),o=n(79);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(22),o=n(23),a=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(63)?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){t.f=n(24)},function(e,t,n){var r=n(23),o=n(22),a=n(63),i=n(106),u=n(34).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:i.f(e)})}},function(e,t,n){var r=n(31),o=n(330),a=n(104),i=n(102)("IE_PROTO"),u=function(){},l=function(){var e,t=n(97)("iframe"),r=a.length;for(t.style.display="none",n(162).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("