diff --git a/CHANGELOG.md b/CHANGELOG.md index 76d14cd..696e6ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] + +### Added +- `posix-millis` field to REST message and header responses for easier date + parsing. + ## [v2.1.0-beta1] diff --git a/etc/dev-start.sh b/etc/dev-start.sh index 995edde..52366be 100755 --- a/etc/dev-start.sh +++ b/etc/dev-start.sh @@ -6,7 +6,7 @@ export INBUCKET_LOGLEVEL="debug" export INBUCKET_SMTP_DISCARDDOMAINS="bitbucket.local" export INBUCKET_WEB_TEMPLATECACHE="false" export INBUCKET_WEB_COOKIEAUTHKEY="not-secret" -export INBUCKET_WEB_UIDIR="ui/build" +export INBUCKET_WEB_UIDIR="ui/dist" export INBUCKET_STORAGE_TYPE="file" export INBUCKET_STORAGE_PARAMS="path:/tmp/inbucket" export INBUCKET_STORAGE_RETENTIONPERIOD="3h" diff --git a/pkg/rest/apiv1_controller.go b/pkg/rest/apiv1_controller.go index 09ff079..1e68013 100644 --- a/pkg/rest/apiv1_controller.go +++ b/pkg/rest/apiv1_controller.go @@ -31,14 +31,15 @@ func MailboxListV1(w http.ResponseWriter, req *http.Request, ctx *web.Context) ( jmessages := make([]*model.JSONMessageHeaderV1, len(messages)) for i, msg := range messages { jmessages[i] = &model.JSONMessageHeaderV1{ - Mailbox: name, - ID: msg.ID, - From: stringutil.StringAddress(msg.From), - To: stringutil.StringAddressList(msg.To), - Subject: msg.Subject, - Date: msg.Date, - Size: msg.Size, - Seen: msg.Seen, + Mailbox: name, + ID: msg.ID, + From: stringutil.StringAddress(msg.From), + To: stringutil.StringAddressList(msg.To), + Subject: msg.Subject, + Date: msg.Date, + PosixMillis: msg.Date.UnixNano() / 1000000, + Size: msg.Size, + Seen: msg.Seen, } } return web.RenderJSON(w, jmessages) @@ -77,15 +78,16 @@ func MailboxShowV1(w http.ResponseWriter, req *http.Request, ctx *web.Context) ( } return web.RenderJSON(w, &model.JSONMessageV1{ - Mailbox: name, - ID: msg.ID, - From: stringutil.StringAddress(msg.From), - To: stringutil.StringAddressList(msg.To), - Subject: msg.Subject, - Date: msg.Date, - Size: msg.Size, - Seen: msg.Seen, - Header: msg.Header(), + Mailbox: name, + ID: msg.ID, + From: stringutil.StringAddress(msg.From), + To: stringutil.StringAddressList(msg.To), + Subject: msg.Subject, + Date: msg.Date, + PosixMillis: msg.Date.UnixNano() / 1000000, + Size: msg.Size, + Seen: msg.Seen, + Header: msg.Header(), Body: &model.JSONMessageBodyV1{ Text: msg.Text(), HTML: msg.HTML(), diff --git a/pkg/rest/apiv1_controller_test.go b/pkg/rest/apiv1_controller_test.go index 0c52673..4b4e4d4 100644 --- a/pkg/rest/apiv1_controller_test.go +++ b/pkg/rest/apiv1_controller_test.go @@ -112,6 +112,7 @@ func TestRestMailboxList(t *testing.T) { decodedStringEquals(t, result, "[0]/to/[0]", "") decodedStringEquals(t, result, "[0]/subject", "subject 1") decodedStringEquals(t, result, "[0]/date", "2012-02-01T10:11:12.000000253-08:00") + decodedNumberEquals(t, result, "[0]/posix-millis", 1328119872000) decodedNumberEquals(t, result, "[0]/size", 0) decodedBoolEquals(t, result, "[0]/seen", false) decodedStringEquals(t, result, "[1]/mailbox", "good") @@ -120,6 +121,7 @@ func TestRestMailboxList(t *testing.T) { decodedStringEquals(t, result, "[1]/to/[0]", "") decodedStringEquals(t, result, "[1]/subject", "subject 2") decodedStringEquals(t, result, "[1]/date", "2012-07-01T10:11:12.000000253-07:00") + decodedNumberEquals(t, result, "[1]/posix-millis", 1341162672000) decodedNumberEquals(t, result, "[1]/size", 0) decodedBoolEquals(t, result, "[1]/seen", false) @@ -221,6 +223,7 @@ func TestRestMessage(t *testing.T) { decodedStringEquals(t, result, "to/[0]", "") decodedStringEquals(t, result, "subject", "subject 1") decodedStringEquals(t, result, "date", "2012-02-01T10:11:12.000000253-08:00") + decodedNumberEquals(t, result, "posix-millis", 1328119872000) decodedNumberEquals(t, result, "size", 0) decodedBoolEquals(t, result, "seen", true) decodedStringEquals(t, result, "body/text", "This is some text") diff --git a/pkg/rest/model/apiv1_model.go b/pkg/rest/model/apiv1_model.go index 2b18e13..9feff81 100644 --- a/pkg/rest/model/apiv1_model.go +++ b/pkg/rest/model/apiv1_model.go @@ -6,14 +6,15 @@ import ( // JSONMessageHeaderV1 contains the basic header data for a message type JSONMessageHeaderV1 struct { - Mailbox string `json:"mailbox"` - ID string `json:"id"` - From string `json:"from"` - To []string `json:"to"` - Subject string `json:"subject"` - Date time.Time `json:"date"` - Size int64 `json:"size"` - Seen bool `json:"seen"` + Mailbox string `json:"mailbox"` + ID string `json:"id"` + From string `json:"from"` + To []string `json:"to"` + Subject string `json:"subject"` + Date time.Time `json:"date"` + PosixMillis int64 `json:"posix-millis"` + Size int64 `json:"size"` + Seen bool `json:"seen"` } // JSONMessageV1 contains the same data as the header plus a JSONMessageBody @@ -24,6 +25,7 @@ type JSONMessageV1 struct { To []string `json:"to"` Subject string `json:"subject"` Date time.Time `json:"date"` + PosixMillis int64 `json:"posix-millis"` Size int64 `json:"size"` Seen bool `json:"seen"` Body *JSONMessageBodyV1 `json:"body"` diff --git a/pkg/rest/socketv1_controller.go b/pkg/rest/socketv1_controller.go index 7c5b019..84e6c72 100644 --- a/pkg/rest/socketv1_controller.go +++ b/pkg/rest/socketv1_controller.go @@ -110,13 +110,14 @@ func (ml *msgListener) WSWriter(conn *websocket.Conn) { return } header := &model.JSONMessageHeaderV1{ - Mailbox: msg.Mailbox, - ID: msg.ID, - From: msg.From, - To: msg.To, - Subject: msg.Subject, - Date: msg.Date, - Size: msg.Size, + Mailbox: msg.Mailbox, + ID: msg.ID, + From: msg.From, + To: msg.To, + Subject: msg.Subject, + Date: msg.Date, + PosixMillis: msg.Date.UnixNano() / 1000000, + Size: msg.Size, } if conn.WriteJSON(header) != nil { // Write failed diff --git a/pkg/rest/testutils_test.go b/pkg/rest/testutils_test.go index 0df7eec..ec1c016 100644 --- a/pkg/rest/testutils_test.go +++ b/pkg/rest/testutils_test.go @@ -79,12 +79,14 @@ func decodedNumberEquals(t *testing.T, json interface{}, path string, want float t.Errorf("JSON result%s", msg) return } - if got, ok := val.(float64); ok { + got, ok := val.(float64) + if ok { if got == want { return } } - t.Errorf("JSON result/%s == %v (%T), want: %v", path, val, val, want) + t.Errorf("JSON result/%s == %v (%T) %v (int64),\nwant: %v / %v", + path, val, val, int64(got), want, int64(want)) } func decodedStringEquals(t *testing.T, json interface{}, path string, want string) { diff --git a/pkg/server/web/handlers.go b/pkg/server/web/handlers.go index aa8dc0e..feb9a5b 100644 --- a/pkg/server/web/handlers.go +++ b/pkg/server/web/handlers.go @@ -2,6 +2,7 @@ package web import ( "net/http" + "os" "github.com/rs/zerolog/log" ) @@ -30,6 +31,29 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) { } } +// fileHandler creates a handler that sends the named file regardless of the requested URL. +func fileHandler(name string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + f, err := os.Open(name) + if err != nil { + log.Error().Str("module", "web").Str("path", req.RequestURI).Str("file", name).Err(err). + Msg("Error opening file") + http.Error(w, "Error opening file", http.StatusInternalServerError) + return + } + defer f.Close() + + d, err := f.Stat() + if err != nil { + log.Error().Str("module", "web").Str("path", req.RequestURI).Str("file", name).Err(err). + Msg("Error stating file") + http.Error(w, "Error opening file", http.StatusInternalServerError) + return + } + http.ServeContent(w, req, d.Name(), d.ModTime(), f) + }) +} + // noMatchHandler creates a handler to log requests that Gorilla mux is unable to route, // returning specified statusCode to the client. func noMatchHandler(statusCode int, message string) http.Handler { diff --git a/pkg/server/web/server.go b/pkg/server/web/server.go index bade0de..fa0c111 100644 --- a/pkg/server/web/server.go +++ b/pkg/server/web/server.go @@ -7,6 +7,7 @@ import ( "net" "net/http" "net/http/pprof" + "path/filepath" "time" "github.com/gorilla/mux" @@ -47,7 +48,7 @@ func init() { m.Set("WebSocketConnectsCurrent", ExpWebSocketConnectsCurrent) } -// Initialize sets up things for unit tests or the Start() method +// Initialize sets up things for unit tests or the Start() method. func Initialize( conf *config.Root, shutdownChan chan bool, @@ -57,11 +58,11 @@ func Initialize( rootConfig = conf globalShutdown = shutdownChan - // NewContext() will use this DataStore for the web handlers + // NewContext() will use this DataStore for the web handlers. msgHub = mh manager = mm - // Content Paths + // Dynamic paths. log.Info().Str("module", "web").Str("phase", "startup").Str("path", conf.Web.UIDir). Msg("Web UI content mapped") Router.Handle("/debug/vars", expvar.Handler()) @@ -74,13 +75,27 @@ func Initialize( log.Warn().Str("module", "web").Str("phase", "startup"). Msg("Go pprof tools installed to /debug/pprof") } - // If no other route matches, attempt to service as UI element. - Router.PathPrefix("/").Handler(http.StripPrefix("/", http.FileServer(http.Dir(conf.Web.UIDir)))) - Router.NotFoundHandler = noMatchHandler(http.StatusNotFound, "No route matches URI path") - Router.MethodNotAllowedHandler = noMatchHandler(http.StatusMethodNotAllowed, - "Method not allowed for URI path") - // Session cookie setup + // Static paths. + Router.PathPrefix("/static").Handler( + http.StripPrefix("/", http.FileServer(http.Dir(conf.Web.UIDir)))) + Router.Path("/favicon.png").Handler( + fileHandler(filepath.Join(conf.Web.UIDir, "favicon.png"))) + + // SPA managed paths. + spaHandler := fileHandler(filepath.Join(conf.Web.UIDir, "index.html")) + Router.Path("/").Handler(spaHandler) + Router.Path("/monitor").Handler(spaHandler) + Router.Path("/status").Handler(spaHandler) + Router.PathPrefix("/m/").Handler(spaHandler) + + // Error handlers. + Router.NotFoundHandler = noMatchHandler( + http.StatusNotFound, "No route matches URI path") + Router.MethodNotAllowedHandler = noMatchHandler( + http.StatusMethodNotAllowed, "Method not allowed for URI path") + + // Session cookie setup. if conf.Web.CookieAuthKey == "" { log.Info().Str("module", "web").Str("phase", "startup"). Msg("Generating random cookie.auth.key") diff --git a/pkg/webui/mailbox_controller.go b/pkg/webui/mailbox_controller.go index 37013aa..4ceab38 100644 --- a/pkg/webui/mailbox_controller.go +++ b/pkg/webui/mailbox_controller.go @@ -23,6 +23,7 @@ type JSONMessage struct { To []string `json:"to"` Subject string `json:"subject"` Date time.Time `json:"date"` + PosixMillis int64 `json:"posix-millis"` Size int64 `json:"size"` Seen bool `json:"seen"` Header map[string][]string `json:"header"` @@ -81,6 +82,7 @@ func MailboxMessage(w http.ResponseWriter, req *http.Request, ctx *web.Context) To: stringutil.StringAddressList(msg.To), Subject: msg.Subject, Date: msg.Date, + PosixMillis: msg.Date.UnixNano() / 1000000, Size: msg.Size, Seen: msg.Seen, Header: msg.Header(), diff --git a/ui/README.md b/ui/README.md index 9eef32c..dae13c2 100644 --- a/ui/README.md +++ b/ui/README.md @@ -1,9 +1,7 @@ # Inbucket User Interface This directory contains the source code for the Inbucket web user interface. -It is written in [Elm] 0.18, a *delightful language for reliable webapps.* - -The UI was bootstrapped with [Create Elm App]. +It is written in [Elm] 0.19, a *delightful language for reliable webapps.* ## Development @@ -11,15 +9,18 @@ With `$INBUCKET` as the root of the git repository. One time setup (assuming [Node.js] is already installed): -``` -npm i create-elm-app@1.10.4 -g -``` - -In terminal 1 (inbucket daemon): - ``` cd $INBUCKET/ui -elm-app build +npm i elm -g +npm i +npm run build +``` + +This will the create `node_modules`, `elm-stuff`, and `dist` directories. + +### Terminal 1: inbucket daemon + +``` cd $INBUCKET make etc/dev-start.sh @@ -29,17 +30,15 @@ Inbucket will start, with HTTP listening on port 9000. You may verify the web UI is functional if this is your first time building Inbucket, but your dev/test cycle should favor the development server below. -In terminal 2 (elm-app development server): +### Terminal 2: webpack development server ``` cd $INBUCKET/ui -elm-app start +npm run dev ``` -[Create Elm App] will start a development HTTP server listening on port 3000. -You should use this server for UI development, as it features hot reload and the -Elm debugger. +npm will start a development HTTP server listening on port 3000. You should use +this server for UI development, as it features hot reload and the Elm debugger. -[Create Elm App]: https://github.com/halfzebra/create-elm-app [Elm]: https://elm-lang.org [Node.js]: https://nodejs.org diff --git a/ui/build/index.html b/ui/build/index.html deleted file mode 100644 index 09e9988..0000000 --- a/ui/build/index.html +++ /dev/null @@ -1 +0,0 @@ -Inbucket
\ No newline at end of file diff --git a/ui/build/manifest.json b/ui/build/manifest.json deleted file mode 100644 index 9b7dc41..0000000 --- a/ui/build/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "Elm App", - "name": "Create Elm App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "192x192", - "type": "image/png" - } - ], - "start_url": "./index.html", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/ui/build/service-worker.js b/ui/build/service-worker.js deleted file mode 100644 index 62e8dba..0000000 --- a/ui/build/service-worker.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var precacheConfig=[["/index.html","ed9e929e14fae109b0cd008ba5adb822"],["/static/css/main.8d438738.css","8d438738f900913d8f787dc7ef9b05f9"],["/static/js/main.04b41a91.js","c9dc7ec55e7e303354fc7423a2afaa38"]],cacheName="sw-precache-v3-sw-precache-webpack-plugin-"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,r){var a=new URL(e);return r&&a.pathname.match(r)||(a.search+=(a.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),a.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.hash="",n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],r=new URL(t,self.location),a=createCacheKey(r,hashParamName,n,/\.\w{8}\./);return[r.toString(),a]}));function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var r=new Request(n,{credentials:"same-origin"});return fetch(r).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);(t=urlsToCacheKeys.has(n))||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^(?!\\/__).*"],e.request.url)&&(n=new URL("/index.html",self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}); \ No newline at end of file diff --git a/ui/build/static/css/main.8d438738.css b/ui/build/static/css/main.8d438738.css deleted file mode 100644 index 04726ca..0000000 --- a/ui/build/static/css/main.8d438738.css +++ /dev/null @@ -1 +0,0 @@ -:root{--bg-color:#fff;--primary-color:#333;--low-color:#666;--high-color:#337ab7;--border-color:#ddd;--placeholder-color:#9f9f9f;--selected-color:#eee}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline}::-webkit-input-placeholder{color:var(--placeholder-color);opacity:1}::-ms-input-placeholder{color:var(--placeholder-color);opacity:1}::placeholder{color:var(--placeholder-color);opacity:1}a{color:#337ab7;text-decoration:none}body{background-color:var(--bg-color)}body,input,table{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.43;color:var(--primary-color)}h1,h2,h3,h4,h5,h6,p{margin-bottom:10px}a.button{background-color:#337ab7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#337ab7),to(#265a88));background-image:-webkit-linear-gradient(top,#337ab7,#265a88);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:linear-gradient(180deg,#337ab7 0,#265a88);border:none;border-radius:4px;color:#fff;display:inline-block;font-size:11px;font-style:normal;margin:4px;padding:3px 8px;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,.2)}.well{background-color:var(--selected-color);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,#f5f5f5);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(180deg,#e8e8e8 0,#f5f5f5);border:1px solid var(--border-color);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05);padding:4px 10px;margin:20px 0}#app{display:grid;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;grid-gap:20px;grid-template:"lpad head rpad" auto "lpad page rpad" 1fr "foot foot foot" auto/minmax(20px,auto) 1fr minmax(20px,auto);height:100vh}@media (max-width:999px){#app{grid-template:"head head head" auto "lpad page rpad" 1fr "foot foot foot" auto/1px 1fr 1px;height:auto}.desktop{display:none}}header{grid-area:head}#page{grid-area:page}footer{background-color:var(--selected-color);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;grid-area:foot}#footer{margin:10px auto}h1{font-size:30px;font-weight:500}.greeting{max-width:1000px}#navbg,.navbar{height:50px}.navbar{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:20px;list-style:none;padding:0;text-shadow:0 -1px 0 rgba(0,0,0,.2)}.navbar li{color:#9d9d9d}.navbar-dropdown span,.navbar a{color:#9d9d9d;display:inline-block;padding:15px;text-decoration:none}li.navbar-active{background-color:#080808}.navbar a:hover,li.navbar-active a,li.navbar-active span{color:#fff}#navbar-brand{font-size:18px;margin-left:-15px}#navbar-recent{margin:0 auto}#navbar-mailbox{padding:8px 0!important}#navbar-mailbox input{padding:5px 10px;margin-top:1px;width:250px}#navbar-mailbox input,.navbar-dropdown-content{border:1px solid var(--border-color);border-radius:4px}.navbar-dropdown-content{background-color:var(--bg-color);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05);display:none;min-width:160px;position:absolute;text-shadow:none;z-index:1}.navbar-dropdown:hover .navbar-dropdown-content{display:block}.navbar-dropdown-content a{color:var(--primary-color)!important;display:block;padding:5px 15px}.navbar-dropdown-content a:hover{background-color:var(--selected-color)}#navbg{background-color:#222;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,#222);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(180deg,#3c3c3c 0,#222);grid-column:1/4;grid-row:1;width:100%;z-index:-1}.button-bar button{background-color:#337ab7;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#337ab7),to(#265a88));background-image:-webkit-linear-gradient(top,#337ab7,#265a88);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:linear-gradient(180deg,#337ab7 0,#265a88);border:none;border-radius:4px;color:#fff;font-size:12px;font-style:normal;font-weight:400;height:30px;margin:0 4px 0 0;padding:5px;text-align:center;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,.2);width:8em}.button-bar button.danger{background-color:#d9534f;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d9534f),to(#c12e2a));background-image:-webkit-linear-gradient(top,#d9534f,#c12e2a);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(180deg,#d9534f 0,#c12e2a)}.mailbox{display:grid;grid-area:page;grid-gap:20px;grid-template-areas:"list" "mesg";justify-self:center}@media (min-width:1000px){.mailbox{grid-template-columns:minmax(200px,300px) minmax(650px,1000px);grid-template-areas:"list mesg";grid-template-rows:1fr}}#message-list{grid-area:list}.message-list-entry{border-color:var(--border-color);border-width:1px;border-style:none solid solid;cursor:pointer;padding:5px 8px}.message-list-entry.selected{background-color:var(--selected-color)}.message-list-entry:first-child{border-style:solid}.message-list-entry .subject{color:var(--high-color)}.message-list-entry.unseen .subject{font-weight:700}.message-list-entry .date,.message-list-entry .from{color:var(--low-color);font-size:85%}#message{grid-area:mesg}#message-header{border:1px solid var(--border-color);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05);padding:10px;margin:10px 0}#message-header dt{color:var(--low-color);font-weight:700}#message-header dd{color:var(--low-color);padding-left:10px}@media (min-width:1000px){#message-header{display:grid;grid-template:auto/5em 1fr}#message-header dt{grid-column:1;text-align:right}#message-header dd{grid-column:2}}.message-body{padding:5px}nav.tab-bar{border-bottom:1px solid var(--border-color);display:-webkit-box;display:-ms-flexbox;display:flex;margin:20px 0 10px}nav.tab-bar a{border-radius:4px 4px 0 0;display:block;margin-bottom:-1px;margin-right:2px;padding:8px 15px;text-decoration:none}nav.tab-bar a.active{color:var(--low-color);border-color:var(--border-color) var(--border-color) var(--bg-color);border-style:solid;border-width:1px}nav.tab-bar a:focus,nav.tab-bar a:hover{background-color:var(--selected-color)}nav.tab-bar a.active:focus,nav.tab-bar a.active:hover{background-color:var(--bg-color)}.attachments{width:100%}.metric-panel{border:1px solid var(--border-color);border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05);margin:20px 0}.metric-panel h2{background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,#e8e8e8);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(180deg,#f5f5f5 0,#e8e8e8);font-size:16px;font-weight:500;padding:10px}.metric-panel .metrics{padding:7px 10px}.metric-panel .metric{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:3px 0}.metric .label{font-weight:700}.metric .label,.metric .value{-ms-flex-preferred-size:15em;flex-basis:15em}.metric .graph{-ms-flex-preferred-size:25em;flex-basis:25em}#monitor{border-collapse:collapse;width:100%}#monitor th{border-bottom:2px solid var(--border-color);text-align:left;padding:5px}#monitor td{border-bottom:1px solid var(--border-color);font-size:12px;padding:5px}#monitor tr:hover{background-color:var(--selected-color);cursor:pointer} \ No newline at end of file diff --git a/ui/build/static/js/main.04b41a91.js b/ui/build/static/js/main.04b41a91.js deleted file mode 100644 index bf6e81c..0000000 --- a/ui/build/static/js/main.04b41a91.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var e={};r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="/",r(r.s=0)}([function(t,r,e){t.exports=e(1)},function(t,r,e){"use strict";function n(){var t=localStorage.session;try{if(t)return JSON.parse(t)}catch(t){console.error(t)}return null}Object.defineProperty(r,"__esModule",{value:!0});var o=e(2),c=(e.n(o),e(3)),u=(e.n(c),e(4)),i=e(5),a=c.Main.embed(document.getElementById("root"),n());Object(i.a)(a),a.ports.storeSession.subscribe(function(t){localStorage.session=JSON.stringify(t)}),window.addEventListener("storage",function(t){t.storageArea===localStorage&&"session"===t.key&&a.ports.onSessionChange.send(n())},!1),a.ports.windowTitle.subscribe(function(t){document.title=t}),Object(u.a)()},function(t,r){},function(t,r){(function(){"use strict";function r(t){function r(r){return function(e){return t(r,e)}}return r.arity=2,r.func=t,r}function e(t){function r(r){return function(e){return function(n){return t(r,e,n)}}}return r.arity=3,r.func=t,r}function n(t){function r(r){return function(e){return function(n){return function(o){return t(r,e,n,o)}}}}return r.arity=4,r.func=t,r}function o(t){function r(r){return function(e){return function(n){return function(o){return function(c){return t(r,e,n,o,c)}}}}}return r.arity=5,r.func=t,r}function c(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return t(r,e,n,o,c,u)}}}}}}return r.arity=6,r.func=t,r}function u(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return t(r,e,n,o,c,u,i)}}}}}}}return r.arity=7,r.func=t,r}function i(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return t(r,e,n,o,c,u,i,a)}}}}}}}}return r.arity=8,r.func=t,r}function a(t){function r(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return t(r,e,n,o,c,u,i,a,_)}}}}}}}}}return r.arity=9,r.func=t,r}function _(t,r,e){return 2===t.arity?t.func(r,e):t(r)(e)}function s(t,r,e,n){return 3===t.arity?t.func(r,e,n):t(r)(e)(n)}function l(t,r,e,n,o){return 4===t.arity?t.func(r,e,n,o):t(r)(e)(n)(o)}function f(t,r,e,n,o,c){return 5===t.arity?t.func(r,e,n,o,c):t(r)(e)(n)(o)(c)}function d(t,r,e,n,o,c,u){return 6===t.arity?t.func(r,e,n,o,c,u):t(r)(e)(n)(o)(c)(u)}var p=function(){function t(t,r){if(t<0||t>=F(r))throw new Error("Index "+t+" is out of range. Check the length of your array first or use getMaybe or getWithDefault.");return n(t,r)}function n(t,r){for(var e=r.height;e>0;e--){for(var n=t>>5*e;r.lengths[n]<=t;)n++;n>0&&(t-=r.lengths[n-1]),r=r.table[n]}return r.table[t]}function o(t,r,e){return t<0||F(e)<=t?e:c(t,r,e)}function c(t,r,e){if(e=P(e),0===e.height)e.table[t]=r;else{var n=I(t,e);n>0&&(t-=e.lengths[n-1]),e.table[n]=c(t,r,e.table[n])}return e}function u(t,r){return t<=0?Y:i(r,Math.floor(Math.log(t)/Math.log(V)),0,t)}function i(t,r,e,n){if(0===r){for(var o=new Array((n-e)%(V+1)),c=0;c0?a[c-1]:0);return{ctor:"_Array",height:r,table:o,lengths:a}}function a(t){if("[]"===t.ctor)return Y;for(var r=new Array(V),e=[],n=0;"[]"!==t.ctor;)if(r[n]=t._0,t=t._1,++n===V){var o={ctor:"_Array",height:0,table:r};s(o,e),r=new Array(V),n=0}if(n>0){var o={ctor:"_Array",height:0,table:r.splice(0,n)};s(o,e)}for(var c=0;c0&&s(e[c],e);var u=e[e.length-1];return u.height>0&&1===u.table.length?u.table[0]:u}function s(t,r){var e=t.height;if(r.length===e){var n={ctor:"_Array",height:e+1,table:[],lengths:[]};r.push(n)}r[e].table.push(t);var o=F(t);r[e].lengths.length>0&&(o+=r[e].lengths[r[e].lengths.length-1]),r[e].lengths.push(o),r[e].table.length===V&&(s(r[e],r),r[e]={ctor:"_Array",height:e+1,table:[],lengths:[]})}function l(t,r){var e=f(t,r);return null!==e?e:j(r,H(t,r.height))}function f(t,r){if(0===r.height){if(r.table.length=0;e--)t=0===r.height?D.Cons(r.table[e],t):p(t,r.table[e]);return t}function h(t,r){var e={ctor:"_Array",height:r.height,table:new Array(r.table.length)};r.height>0&&(e.lengths=r.lengths);for(var n=0;n0&&(n.lengths=r.lengths);for(var o=0;o0?r.lengths[n-1]:0),r.table[n]);if(0===n)return o;var e={ctor:"_Array",height:r.height,table:r.table.slice(0,n),lengths:r.lengths.slice(0,n)};return o.table.length>0&&(e.table[n]=o,e.lengths[n]=F(o)+(n>0?e.lengths[n-1]:0)),e}function T(t,r){if(0===t)return r;if(0===r.height){var e={ctor:"_Array",height:0};return e.table=r.table.slice(t,r.table.length+1),e}var n=I(t,r),o=T(t-(n>0?r.lengths[n-1]:0),r.table[n]);if(n===r.table.length-1)return o;var e={ctor:"_Array",height:r.height,table:r.table.slice(n,r.table.length+1),lengths:new Array(r.table.length-n)};e.table[0]=o;for(var c=0,u=0;u0){for(var n=F(e[0]),o=0;o0){var c=N(t,r);c>G&&(e=A(e[0],e[1],c))}return j(e[0],e[1])}function x(t,r){if(0===t.height&&0===r.height)return[t,r];if(1!==t.height||1!==r.height)if(t.height===r.height){t=P(t),r=P(r);var e=x(O(t),L(r));M(t,e[1]),S(r,e[0])}else if(t.height>r.height){t=P(t);var e=x(O(t),r);M(t,e[0]),r=z(e[1],e[1].height+1)}else{r=P(r);var e=x(t,L(r)),n=0===e[0].table.length?0:1,o=0===n?1:0;S(r,e[n]),t=z(e[o],e[o].height+1)}if(0===t.table.length||0===r.table.length)return[t,r];var c=N(t,r);return c<=G?[t,r]:A(t,r,c)}function M(t,r){var e=t.table.length-1;t.table[e]=r,t.lengths[e]=F(r),t.lengths[e]+=e>0?t.lengths[e-1]:0}function S(t,r){if(r.table.length>0){t.table[0]=r,t.lengths[0]=F(r);for(var e=F(t.table[0]),n=1;n0&&(e.lengths=new Array(r)),e}function A(t,r,e){for(var n=C(t.height,Math.min(V,t.table.length+r.table.length-e)),o=C(t.height,n.table.length-(t.table.length+r.table.length-e)),c=0;B(t.table,r.table,c).table.length%V==0;)R(n.table,o.table,c,B(t.table,r.table,c)),R(n.lengths,o.lengths,c,B(t.lengths,r.lengths,c)),c++;for(var u=c,i=new C(t.height-1,0),a=0;c-u-(i.table.length>0?1:0)0)for(var l=i.lengths.length,f=l;f0?i.lengths[f-1]:0;a+=s,_.table.length<=s&&(c++,a=0),i.table.length===V&&(E(n,o,u,i),i=C(t.height-1,0),u++)}for(i.table.length>0&&(E(n,o,u,i),u++);c0&&(r.lengths=t.lengths.slice()),r}function F(t){return 0===t.height?t.table.length:t.lengths[t.lengths.length-1]}function I(t,r){for(var e=t>>5*r.height;r.lengths[e]<=t;)e++;return e}function H(t,r){return 0===r?{ctor:"_Array",height:0,table:[t]}:{ctor:"_Array",height:r,table:[H(t,r-1)],lengths:[1]}}function z(t,r){return r===t.height?t:{ctor:"_Array",height:r,table:[z(t,r-1)],lengths:[F(t)]}}function j(t,r){return{ctor:"_Array",height:t.height+1,table:[t,r],lengths:[F(t),F(t)+F(r)]}}function U(t){var r=new Array(F(t));return W(r,0,t),r}function W(t,r,e){for(var n=0;n0?u[i-1]:0);return{ctor:"_Array",height:r,table:c,lengths:u}}var V=32,G=2,Y={ctor:"_Array",height:0,table:[]};return{empty:Y,fromList:a,toList:d,initialize:r(u),append:r(w),push:r(l),slice:e(y),get:r(t),set:e(o),map:r(h),indexedMap:r(v),foldl:e(g),foldr:e(b),length:F,toJSArray:U,fromJSArray:q}}(),h=function(){function t(t,r){return t/r|0}function n(t,r){return t%r}function o(t,r){if(0===r)throw new Error("Cannot perform mod 0. Division by zero error.");var e=t%r,n=0===t?0:r>0?t>=0?e:e+r:-o(-t,-r);return n===r?0:n}function c(t,r){return Math.log(r)/Math.log(t)}function u(t){return-t}function i(t){return t<0?-t:t}function a(t,r){return v.cmp(t,r)<0?t:r}function _(t,r){return v.cmp(t,r)>0?t:r}function s(t,r,e){return v.cmp(e,t)<0?t:v.cmp(e,r)>0?r:e}function l(t,r){return{ctor:k[v.cmp(t,r)+1]}}function f(t,r){return t!==r}function d(t){return!t}function p(t){return t===1/0||t===-1/0}function h(t){return 0|t}function m(t){return t*Math.PI/180}function g(t){return 2*Math.PI*t}function b(t){var r=t._0,e=t._1;return v.Tuple2(r*Math.cos(e),r*Math.sin(e))}function y(t){var r=t._0,e=t._1;return v.Tuple2(Math.sqrt(r*r+e*e),Math.atan2(e,r))}var k=["LT","EQ","GT"];return{div:r(t),rem:r(n),mod:r(o),pi:Math.PI,e:Math.E,cos:Math.cos,sin:Math.sin,tan:Math.tan,acos:Math.acos,asin:Math.asin,atan:Math.atan,atan2:r(Math.atan2),degrees:m,turns:g,fromPolar:b,toPolar:y,sqrt:Math.sqrt,logBase:r(c),negate:u,abs:i,min:r(a),max:r(_),clamp:e(s),compare:r(l),xor:r(f),not:d,truncate:h,ceiling:Math.ceil,floor:Math.floor,round:Math.round,toFloat:function(t){return t},isNaN:isNaN,isInfinite:p}}(),v=function(){function t(t,r){for(var n,o=[],c=e(t,r,0,o);c&&(n=o.pop());)c=e(n.x,n.y,0,o);return c}function e(t,r,n,o){if(n>100)return o.push({x:t,y:r}),!0;if(t===r)return!0;if("object"!=typeof t){if("function"==typeof t)throw new Error('Trying to use `(==)` on functions. There is no way to know if functions are "the same" in the Elm sense. Read more about this at http://package.elm-lang.org/packages/elm-lang/core/latest/Basics#== which describes why it is this way and what the better version will look like.');return!1}if(null===t||null===r)return!1;if(t instanceof Date)return t.getTime()===r.getTime();if(!("ctor"in t)){for(var c in t)if(!e(t[c],r[c],n+1,o))return!1;return!0}if("RBNode_elm_builtin"!==t.ctor&&"RBEmpty_elm_builtin"!==t.ctor||(t=$t(t),r=$t(r)),"Set_elm_builtin"===t.ctor&&(t=_elm_lang$core$Set$toList(t),r=_elm_lang$core$Set$toList(r)),"::"===t.ctor){for(var u=t,i=r;"::"===u.ctor&&"::"===i.ctor;){if(!e(u._0,i._0,n+1,o))return!1;u=u._1,i=i._1}return u.ctor===i.ctor}if("_Array"===t.ctor){var a=p.toJSArray(t),_=p.toJSArray(r);if(a.length!==_.length)return!1;for(var s=0;s=1){if((c=n(t._0,r._0))!==m)return c;if(u>=2){if((c=n(t._1,r._1))!==m)return c;if(u>=3){if((c=n(t._2,r._2))!==m)return c;if(u>=4){if((c=n(t._3,r._3))!==m)return c;if(u>=5){if((c=n(t._4,r._4))!==m)return c;if(u>=6){if((c=n(t._5,r._5))!==m)return c;if(u>=7)throw new Error("Comparison error: cannot compare tuples with more than 6 elements.")}}}}}}return m}throw new Error("Comparison error: comparison is only defined on ints, floats, times, chars, strings, lists of comparable values, and tuples of comparable values.")}function o(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}function c(t){return new String(t)}function u(t){return y++}function i(t,r){var e={};for(var n in t)e[n]=t[n];for(var n in r)e[n]=r[n];return e}function a(t,r){return{ctor:"::",_0:t,_1:r}}function _(t,r){if("string"==typeof t)return t+r;if("[]"===t.ctor)return r;var e=a(t._0,k),n=e;for(t=t._1;"[]"!==t.ctor;)n._1=a(t._0,k),t=t._1,n=n._1;return n._1=r,e}function s(t,r){return function(e){throw new Error("Ran into a `Debug.crash` in module `"+t+"` "+f(r)+"\nThe message provided by the code author is:\n\n "+e)}}function l(t,r,e){return function(n){throw new Error("Ran into a `Debug.crash` in module `"+t+"`\n\nThis was caused by the `case` expression "+f(r)+".\nOne of the branches ended with a crash and the following value got through:\n\n "+d(e)+"\n\nThe message provided by the code author is:\n\n "+n)}}function f(t){return t.start.line==t.end.line?"on line "+t.start.line:"between lines "+t.start.line+" and "+t.end.line}function d(t){var r=typeof t;if("function"===r)return"";if("boolean"===r)return t?"True":"False";if("number"===r)return t+"";if(t instanceof String)return"'"+h(t,!0)+"'";if("string"===r)return'"'+h(t,!1)+'"';if(null===t)return"null";if("object"===r&&"ctor"in t){var e=t.ctor.substring(0,5);if("_Tupl"===e){var n=[];for(var o in t)"ctor"!==o&&n.push(d(t[o]));return"("+n.join(",")+")"}if("_Task"===e)return"";if("_Array"===t.ctor){return"Array.fromList "+d(lt(t))}if(""===t.ctor)return"";if("_Process"===t.ctor)return"";if("::"===t.ctor){var n="["+d(t._0);for(t=t._1;"::"===t.ctor;)n+=","+d(t._0),t=t._1;return n+"]"}if("[]"===t.ctor)return"[]";if("Set_elm_builtin"===t.ctor)return"Set.fromList "+d(_elm_lang$core$Set$toList(t));if("RBNode_elm_builtin"===t.ctor||"RBEmpty_elm_builtin"===t.ctor)return"Dict.fromList "+d($t(t));var n="";for(var c in t)if("ctor"!==c){var u=d(t[c]),i=u[0],a="{"===i||"("===i||"<"===i||'"'===i||u.indexOf(" ")<0;n+=" "+(a?u:"("+u+")")}return t.ctor+n}if("object"===r){if(t instanceof Date)return"<"+t.toString()+">";if(t.elm_web_socket)return"";var n=[];for(var o in t)n.push(o+" = "+d(t[o]));return 0===n.length?"{}":"{ "+n.join(", ")+" }"}return""}function h(t,r){var e=t.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return r?e.replace(/\'/g,"\\'"):e.replace(/\"/g,'\\"')}var v=-1,m=0,g=1,b={ctor:"_Tuple0"},y=0,k={ctor:"[]"};return{eq:t,cmp:n,Tuple0:b,Tuple2:o,chr:c,update:i,guid:u,append:r(_),crash:s,crashCase:l,toString:d}}(),m=(r(function(t,r){var e=r;return _(t,e._0,e._1)}),e(function(t,r,e){return t({ctor:"_Tuple2",_0:r,_1:e})}),e(function(t,r,e){return _(t,e,r)}),r(function(t,r){return t})),g=function(t){return t},b=b||{};b["<|"]=r(function(t,r){return t(r)});var b=b||{};b["|>"]=r(function(t,r){return r(t)});var b=b||{};b[">>"]=e(function(t,r,e){return r(t(e))});var b=b||{};b["<<"]=e(function(t,r,e){return t(r(e))});var b=b||{};b["++"]=v.append;var y=v.toString,k=h.isInfinite,T=h.isNaN,w=h.toFloat,x=(h.ceiling,h.floor),b=(h.truncate,h.round,h.not,h.xor,b||{});b["||"]=h.or;var b=b||{};b["&&"]=h.and;var M=h.max,S=h.min,N=h.compare,b=b||{};b[">="]=h.ge;var b=b||{};b["<="]=h.le;var b=b||{};b[">"]=h.gt;var b=b||{};b["<"]=h.lt;var b=b||{};b["/="]=h.neq;var b=b||{};b["=="]=h.eq;var B=(h.e,h.pi,h.clamp,h.logBase,h.abs),R=h.negate,b=(h.sqrt,h.atan2,h.atan,h.asin,h.acos,h.tan,h.sin,h.cos,b||{});b["^"]=h.exp;var b=b||{};b["%"]=h.mod;var b=(h.rem,b||{});b["//"]=h.div;var b=b||{};b["/"]=h.floatDiv;var b=b||{};b["*"]=h.mul;var b=b||{};b["-"]=h.sub;var b=b||{};b["+"]=h.add;var E=(h.toPolar,h.fromPolar,h.turns,h.degrees,r(function(t,r){var e=r;return"Just"===e.ctor?e._0:t})),C={ctor:"Nothing"},A=(r(function(t,r){var e=r;return"Just"===e.ctor?t(e._0):C}),function(t){return{ctor:"Just",_0:t}}),O=r(function(t,r){var e=r;return"Just"===e.ctor?A(t(e._0)):C}),L=e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};return"_Tuple2"===n.ctor&&"Just"===n._0.ctor&&"Just"===n._1.ctor?A(_(t,n._0._0,n._1._0)):C}),D=(n(function(t,r,e,n){var o={ctor:"_Tuple3",_0:r,_1:e,_2:n};return"_Tuple3"===o.ctor&&"Just"===o._0.ctor&&"Just"===o._1.ctor&&"Just"===o._2.ctor?A(s(t,o._0._0,o._1._0,o._2._0)):C}),o(function(t,r,e,n,o){var c={ctor:"_Tuple4",_0:r,_1:e,_2:n,_3:o};return"_Tuple4"===c.ctor&&"Just"===c._0.ctor&&"Just"===c._1.ctor&&"Just"===c._2.ctor&&"Just"===c._3.ctor?A(l(t,c._0._0,c._1._0,c._2._0,c._3._0)):C}),c(function(t,r,e,n,o,c){var u={ctor:"_Tuple5",_0:r,_1:e,_2:n,_3:o,_4:c};return"_Tuple5"===u.ctor&&"Just"===u._0.ctor&&"Just"===u._1.ctor&&"Just"===u._2.ctor&&"Just"===u._3.ctor&&"Just"===u._4.ctor?A(f(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):C}),function(){function t(t,r){return{ctor:"::",_0:t,_1:r}}function u(r){for(var e=y,n=r.length;n--;)e=t(r[n],e);return e}function i(t){for(var r=[];"[]"!==t.ctor;)r.push(t._0),t=t._1;return r}function a(t,r,e){for(var n=i(e),o=r,c=n.length;c--;)o=_(t,n[c],o);return o}function d(t,r,e){for(var n=[];"[]"!==r.ctor&&"[]"!==e.ctor;)n.push(_(t,r._0,e._0)),r=r._1,e=e._1;return u(n)}function p(t,r,e,n){for(var o=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor;)o.push(s(t,r._0,e._0,n._0)),r=r._1,e=e._1,n=n._1;return u(o)}function h(t,r,e,n,o){for(var c=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor&&"[]"!==o.ctor;)c.push(l(t,r._0,e._0,n._0,o._0)),r=r._1,e=e._1,n=n._1,o=o._1;return u(c)}function m(t,r,e,n,o,c){for(var i=[];"[]"!==r.ctor&&"[]"!==e.ctor&&"[]"!==n.ctor&&"[]"!==o.ctor&&"[]"!==c.ctor;)i.push(f(t,r._0,e._0,n._0,o._0,c._0)),r=r._1,e=e._1,n=n._1,o=o._1,c=c._1;return u(i)}function g(t,r){return u(i(r).sort(function(r,e){return v.cmp(t(r),t(e))}))}function b(t,r){return u(i(r).sort(function(r,e){var n=t(r)(e).ctor;return"EQ"===n?0:"LT"===n?-1:1}))}var y={ctor:"[]"};return{Nil:y,Cons:t,cons:r(t),toArray:i,fromArray:u,foldr:e(a),map2:e(d),map3:n(p),map4:o(h),map5:c(m),sortBy:r(g),sortWith:r(b)}}()),P=(D.sortWith,D.sortBy,r(function(t,r){for(;;){if(v.cmp(t,0)<1)return r;var e=r;if("[]"===e.ctor)return r;var n=t-1,o=e._1;t=n,r=o}}),D.map5,D.map4,D.map3,D.map2),F=r(function(t,r){for(;;){var e=r;if("[]"===e.ctor)return!1;if(t(e._0))return!0;var n=t,o=e._1;t=n,r=o}}),I=(r(function(t,r){return!_(F,function(r){return!t(r)},r)}),D.foldr),H=e(function(t,r,e){for(;;){var n=e;if("[]"===n.ctor)return r;var o=t,c=_(t,n._0,r),u=n._1;t=o,r=c,e=u}}),z=function(t){return s(H,r(function(t,r){return r+1}),0,t)},j=function(t){return s(H,r(function(t,r){return t+r}),0,t)},U=(r(function(t,r){return _(F,function(r){return v.eq(r,t)},r)}),function(t){return"[]"===t.ctor}),W=function(t){var r=t;return"::"===r.ctor?A(r._1):C},q=function(t){var r=t;return"::"===r.ctor?A(r._0):C},J=J||{};J["::"]=D.cons;var V=r(function(t,e){return s(I,r(function(r,e){return{ctor:"::",_0:t(r),_1:e}}),{ctor:"[]"},e)}),G=r(function(t,e){var n=r(function(r,e){return t(r)?{ctor:"::",_0:r,_1:e}:e});return s(I,n,{ctor:"[]"},e)}),Y=e(function(t,r,e){var n=t(r);return"Just"===n.ctor?{ctor:"::",_0:n._0,_1:e}:e}),Q=r(function(t,r){return s(I,Y(t),{ctor:"[]"},r)}),$=function(t){return s(H,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),{ctor:"[]"},t)},K=(e(function(t,e,n){var o=r(function(r,e){var n=e;return"::"===n.ctor?{ctor:"::",_0:_(t,r,n._0),_1:e}:{ctor:"[]"}});return $(s(H,o,{ctor:"::",_0:e,_1:{ctor:"[]"}},n))}),r(function(t,e){return"[]"===e.ctor?t:s(I,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),e,t)})),X=function(t){return s(I,K,{ctor:"[]"},t)},Z=r(function(t,r){return X(_(V,t,r))}),tt=(r(function(t,e){var n=r(function(r,e){var n=e,o=n._0,c=n._1;return t(r)?{ctor:"_Tuple2",_0:{ctor:"::",_0:r,_1:o},_1:c}:{ctor:"_Tuple2",_0:o,_1:{ctor:"::",_0:r,_1:c}}});return s(I,n,{ctor:"_Tuple2",_0:{ctor:"[]"},_1:{ctor:"[]"}},e)}),r(function(t,e){var n=e;if("[]"===n.ctor)return{ctor:"[]"};var o=r(function(r,e){return{ctor:"::",_0:t,_1:{ctor:"::",_0:r,_1:e}}}),c=s(I,o,{ctor:"[]"},n._1);return{ctor:"::",_0:n._0,_1:c}}),e(function(t,r,e){for(;;){if(v.cmp(t,0)<1)return e;var n=r;if("[]"===n.ctor)return e;var o=t-1,c=n._1,u={ctor:"::",_0:n._0,_1:e};t=o,r=c,e=u}})),rt=r(function(t,r){return $(s(tt,t,r,{ctor:"[]"}))}),et=e(function(t,r,e){if(v.cmp(r,0)<1)return{ctor:"[]"};var n={ctor:"_Tuple2",_0:r,_1:e};t:do{r:do{if("_Tuple2"!==n.ctor)break t;if("[]"===n._1.ctor)return e;if("::"!==n._1._1.ctor){if(1===n._0)break r;break t}switch(n._0){case 1:break r;case 2:return{ctor:"::",_0:n._1._0,_1:{ctor:"::",_0:n._1._1._0,_1:{ctor:"[]"}}};case 3:if("::"===n._1._1._1.ctor)return{ctor:"::",_0:n._1._0,_1:{ctor:"::",_0:n._1._1._0,_1:{ctor:"::",_0:n._1._1._1._0,_1:{ctor:"[]"}}}};break t;default:if("::"===n._1._1._1.ctor&&"::"===n._1._1._1._1.ctor){var o=n._1._1._1._0,c=n._1._1._0,u=n._1._0,i=n._1._1._1._1._0,a=n._1._1._1._1._1;return v.cmp(t,1e3)>0?{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:_(rt,r-4,a)}}}}:{ctor:"::",_0:u,_1:{ctor:"::",_0:c,_1:{ctor:"::",_0:o,_1:{ctor:"::",_0:i,_1:s(et,t+1,r-4,a)}}}}}break t}}while(!1);return{ctor:"::",_0:n._1._0,_1:{ctor:"[]"}}}while(!1);return e}),nt=r(function(t,r){return s(et,0,t,r)}),ot=e(function(t,r,e){for(;;){if(v.cmp(r,0)<1)return t;var n={ctor:"::",_0:e,_1:t},o=r-1,c=e;t=n,r=o,e=c}}),ct=r(function(t,r){return s(ot,{ctor:"[]"},t,r)}),ut=e(function(t,r,e){for(;;){if(!(v.cmp(t,r)<1))return e;var n=t,o=r-1,c={ctor:"::",_0:r,_1:e};t=n,r=o,e=c}}),it=r(function(t,r){return s(ut,t,r,{ctor:"[]"})}),at=r(function(t,r){return s(P,t,_(it,0,z(r)-1),r)}),_t=(p.append,p.length,p.slice,p.set,r(function(t,r){return v.cmp(0,t)<1&&v.cmp(t,p.length(r))<0?A(_(p.get,t,r)):C})),st=(p.push,p.empty,r(function(t,e){var n=r(function(r,e){return t(r)?_(p.push,r,e):e});return s(p.foldl,n,p.empty,e)}),p.foldr,p.foldl,p.indexedMap,p.map,function(t){return s(P,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),_(it,0,p.length(t)-1),p.toList(t))}),lt=p.toList,ft=p.fromList,dt=p.initialize,pt=(r(function(t,r){return _(dt,t,m(r))}),function(){function t(t,r){var e=t+": "+v.toString(r),n=n||{};return n.stdout?n.stdout.write(e):console.log(e),r}function e(t){throw new Error(t)}return{crash:e,log:r(t)}}()),ht=function(){function t(t){return 0===t.length}function n(t,r){return t+r}function o(t){var r=t[0];return r?A(v.Tuple2(v.chr(r),t.slice(1))):C}function c(t,r){return t+r}function u(t){return D.toArray(t).join("")}function i(t){return t.length}function a(t,r){for(var e=r.split(""),n=e.length;n--;)e[n]=t(v.chr(e[n]));return e.join("")}function s(t,r){return r.split("").map(v.chr).filter(t).join("")}function l(t){return t.split("").reverse().join("")}function f(t,r,e){for(var n=e.length,o=0;o0;)1&t&&(e+=r),t>>=1,r+=r;return e}function g(t,r,e){return e.slice(t,r)}function b(t,r){return t<1?"":r.slice(0,t)}function y(t,r){return t<1?"":r.slice(-t)}function k(t,r){return t<1?r:r.slice(t)}function T(t,r){return t<1?r:r.slice(0,-t)}function w(t,r,e){var n=(t-e.length)/2;return m(Math.ceil(n),r)+e+m(0|n,r)}function x(t,r,e){return e+m(t-e.length,r)}function M(t,r,e){return m(t-e.length,r)+e}function S(t){return t.trim()}function N(t){return t.replace(/^\s+/,"")}function B(t){return t.replace(/\s+$/,"")}function R(t){return D.fromArray(t.trim().split(/\s+/g))}function E(t){return D.fromArray(t.split(/\r\n|\r|\n/g))}function O(t){return t.toUpperCase()}function L(t){return t.toLowerCase()}function P(t,r){for(var e=r.length;e--;)if(t(v.chr(r[e])))return!0;return!1}function F(t,r){for(var e=r.length;e--;)if(!t(v.chr(r[e])))return!1;return!0}function I(t,r){return r.indexOf(t)>-1}function H(t,r){return 0===r.indexOf(t)}function z(t,r){return r.length>=t.length&&r.lastIndexOf(t)===r.length-t.length}function j(t,r){var e=t.length;if(e<1)return D.Nil;for(var n=0,o=[];(n=r.indexOf(t,n))>-1;)o.push(n),n+=e;return D.fromArray(o)}function U(t){var r=t.length;if(0===r)return W(t);var e=t[0];if("0"===e&&"x"===t[1]){for(var n=2;n"9"||e<"0"&&"-"!==e&&"+"!==e)return W(t);for(var n=1;n-1&&v.cmp(n,gt(r))<1})),yt=(_(bt,v.chr("A"),v.chr("Z")),_(bt,v.chr("a"),v.chr("z")),_(bt,v.chr("0"),v.chr("9")),_(bt,v.chr("0"),v.chr("7")),function(t){var r=t;return"Ok"===r.ctor?A(r._0):C}),kt=r(function(t,r){var e=r;return"Ok"===e.ctor?e._0:t}),Tt=function(t){return{ctor:"Err",_0:t}},wt=(r(function(t,r){var e=r;return"Ok"===e.ctor?t(e._0):Tt(e._0)}),function(t){return{ctor:"Ok",_0:t}}),xt=r(function(t,r){var e=r;return"Ok"===e.ctor?wt(t(e._0)):Tt(e._0)}),Mt=(e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};return"Ok"===n._0.ctor?"Ok"===n._1.ctor?wt(_(t,n._0._0,n._1._0)):Tt(n._1._0):Tt(n._0._0)}),n(function(t,r,e,n){var o={ctor:"_Tuple3",_0:r,_1:e,_2:n};return"Ok"===o._0.ctor?"Ok"===o._1.ctor?"Ok"===o._2.ctor?wt(s(t,o._0._0,o._1._0,o._2._0)):Tt(o._2._0):Tt(o._1._0):Tt(o._0._0)}),o(function(t,r,e,n,o){var c={ctor:"_Tuple4",_0:r,_1:e,_2:n,_3:o};return"Ok"===c._0.ctor?"Ok"===c._1.ctor?"Ok"===c._2.ctor?"Ok"===c._3.ctor?wt(l(t,c._0._0,c._1._0,c._2._0,c._3._0)):Tt(c._3._0):Tt(c._2._0):Tt(c._1._0):Tt(c._0._0)}),c(function(t,r,e,n,o,c){var u={ctor:"_Tuple5",_0:r,_1:e,_2:n,_3:o,_4:c};return"Ok"===u._0.ctor?"Ok"===u._1.ctor?"Ok"===u._2.ctor?"Ok"===u._3.ctor?"Ok"===u._4.ctor?wt(f(t,u._0._0,u._1._0,u._2._0,u._3._0,u._4._0)):Tt(u._4._0):Tt(u._3._0):Tt(u._2._0):Tt(u._1._0):Tt(u._0._0)}),r(function(t,r){var e=r;return"Ok"===e.ctor?wt(e._0):Tt(t(e._0))}),r(function(t,r){var e=r;return"Just"===e.ctor?wt(e._0):Tt(t)}),ht.fromList,ht.toList),St=ht.toFloat,Nt=ht.toInt,Bt=(ht.indexes,ht.indexes,ht.endsWith),Rt=ht.startsWith,Et=ht.contains,Ct=(ht.all,ht.any,ht.toLower),At=ht.toUpper,Ot=(ht.lines,ht.words,ht.trimRight,ht.trimLeft,ht.trim,ht.padRight),Lt=(ht.padLeft,ht.pad,ht.dropRight),Dt=ht.dropLeft,Pt=ht.right,Ft=ht.left,It=ht.slice,Ht=ht.repeat,zt=ht.join,jt=ht.split,Ut=(ht.foldr,ht.foldl,ht.reverse),Wt=(ht.filter,ht.map,ht.length),qt=ht.concat,Jt=(ht.append,ht.uncons),Vt=ht.cons,Gt=function(t){return _(Vt,t,"")},Yt=ht.isEmpty,Qt=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return r;var o=t,c=s(t,n._1,n._2,s(Qt,t,r,n._4)),u=n._3;t=o,r=c,e=u}}),$t=function(t){return s(Qt,e(function(t,r,e){return{ctor:"::",_0:{ctor:"_Tuple2",_0:t,_1:r},_1:e}}),{ctor:"[]"},t)},Kt=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return r;var o=t,c=s(t,n._1,n._2,s(Kt,t,r,n._3)),u=n._4;t=o,r=c,e=u}}),Xt=c(function(t,n,o,c,u,i){var a=e(function(r,e,c){for(;;){var u=c,i=u._1,a=u._0,_=a;if("[]"===_.ctor)return{ctor:"_Tuple2",_0:a,_1:s(o,r,e,i)};var f=_._1,d=_._0._1,p=_._0._0;if(!(v.cmp(p,r)<0))return v.cmp(p,r)>0?{ctor:"_Tuple2",_0:a,_1:s(o,r,e,i)}:{ctor:"_Tuple2",_0:f,_1:l(n,p,d,e,i)};var h=r,m=e,g={ctor:"_Tuple2",_0:f,_1:s(t,p,d,i)};r=h,e=m,c=g}}),_=s(Kt,a,{ctor:"_Tuple2",_0:$t(c),_1:i},u),f=_._0,d=_._1;return s(H,r(function(r,e){var n=r;return s(t,n._0,n._1,e)}),d,f)}),Zt=n(function(t,r,e,n){return pt.crash(qt({ctor:"::",_0:"Internal red-black tree invariant violated, expected ",_1:{ctor:"::",_0:t,_1:{ctor:"::",_0:" and got ",_1:{ctor:"::",_0:y(r),_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:e,_1:{ctor:"::",_0:"/",_1:{ctor:"::",_0:n,_1:{ctor:"::",_0:"\nPlease report this bug to ",_1:{ctor:"[]"}}}}}}}}}}))}),tr=function(t){var r=t;t:do{if("RBNode_elm_builtin"===r.ctor){if("BBlack"===r._0.ctor)return!0;break t}if("LBBlack"===r._0.ctor)return!0;break t}while(!1);return!1},rr=r(function(t,r){for(;;){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return t;var n=_(rr,t+1,e._4),o=e._3;t=n,r=o}}),er=r(function(t,r){t:for(;;){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return C;var n=_(N,t,e._1);switch(n.ctor){case"LT":var o=t,c=e._3;t=o,r=c;continue t;case"EQ":return A(e._2);default:var u=t,i=e._4;t=u,r=i;continue t}}}),nr=r(function(t,r){return"Just"===_(er,t,r).ctor}),or=e(function(t,r,e){for(;;){var n=e;if("RBEmpty_elm_builtin"===n.ctor)return{ctor:"_Tuple2",_0:t,_1:r};var o=n._1,c=n._2,u=n._4;t=o,r=c,e=u}}),cr={ctor:"NBlack"},ur={ctor:"BBlack"},ir={ctor:"Black"},ar=function(t){var r=t;if("RBNode_elm_builtin"===r.ctor){var e=r._0;return v.eq(e,ir)||v.eq(e,ur)}return!0},_r={ctor:"Red"},sr=function(t){switch(t.ctor){case"Black":return ur;case"Red":return ir;case"NBlack":return _r;default:return pt.crash("Can't make a double black node more black!")}},lr=function(t){switch(t.ctor){case"BBlack":return ir;case"Black":return _r;case"Red":return cr;default:return pt.crash("Can't make a negative black node less black!")}},fr={ctor:"LBBlack"},dr={ctor:"LBlack"},pr=function(t){return{ctor:"RBEmpty_elm_builtin",_0:t}},hr=pr(dr),vr=o(function(t,r,e,n,o){return{ctor:"RBNode_elm_builtin",_0:t,_1:r,_2:e,_3:n,_4:o}}),mr=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor&&"Red"===r._0.ctor?f(vr,ir,r._1,r._2,r._3,r._4):t},gr=function(t){var r=t;return"RBNode_elm_builtin"===r.ctor?f(vr,lr(r._0),r._1,r._2,r._3,r._4):pr(dr)},br=function(t){return function(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return function(s){return f(vr,lr(t),n,o,f(vr,ir,r,e,i,a),f(vr,ir,c,u,_,s))}}}}}}}}}}},yr=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?pr(dr):f(vr,ir,r._1,r._2,r._3,r._4)},kr=function(t){var r=t;return"RBEmpty_elm_builtin"===r.ctor?pt.crash("can't make a Leaf red"):f(vr,_r,r._1,r._2,r._3,r._4)},Tr=function(t){var r=t;t:do{r:do{e:do{n:do{o:do{c:do{u:do{if("RBNode_elm_builtin"!==r.ctor)break t;if("RBNode_elm_builtin"===r._3.ctor)if("RBNode_elm_builtin"===r._4.ctor)switch(r._3._0.ctor){case"Red":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t}case"NBlack":switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;case"NBlack":if("BBlack"===r._0.ctor){if("RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;if("RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}break t;default:if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t}default:switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:break t}}else switch(r._3._0.ctor){case"Red":if("RBNode_elm_builtin"===r._3._3.ctor&&"Red"===r._3._3._0.ctor)break u;if("RBNode_elm_builtin"===r._3._4.ctor&&"Red"===r._3._4._0.ctor)break c;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._3._3.ctor&&"Black"===r._3._3._0.ctor&&"RBNode_elm_builtin"===r._3._4.ctor&&"Black"===r._3._4._0.ctor)break r;break t;default:break t}else{if("RBNode_elm_builtin"!==r._4.ctor)break t;switch(r._4._0.ctor){case"Red":if("RBNode_elm_builtin"===r._4._3.ctor&&"Red"===r._4._3._0.ctor)break o;if("RBNode_elm_builtin"===r._4._4.ctor&&"Red"===r._4._4._0.ctor)break n;break t;case"NBlack":if("BBlack"===r._0.ctor&&"RBNode_elm_builtin"===r._4._3.ctor&&"Black"===r._4._3._0.ctor&&"RBNode_elm_builtin"===r._4._4.ctor&&"Black"===r._4._4._0.ctor)break e;break t;default:break t}}}while(!1);return br(r._0)(r._3._3._1)(r._3._3._2)(r._3._1)(r._3._2)(r._1)(r._2)(r._3._3._3)(r._3._3._4)(r._3._4)(r._4)}while(!1);return br(r._0)(r._3._1)(r._3._2)(r._3._4._1)(r._3._4._2)(r._1)(r._2)(r._3._3)(r._3._4._3)(r._3._4._4)(r._4)}while(!1);return br(r._0)(r._1)(r._2)(r._4._3._1)(r._4._3._2)(r._4._1)(r._4._2)(r._3)(r._4._3._3)(r._4._3._4)(r._4._4)}while(!1);return br(r._0)(r._1)(r._2)(r._4._1)(r._4._2)(r._4._4._1)(r._4._4._2)(r._3)(r._4._3)(r._4._4._3)(r._4._4._4)}while(!1);return f(vr,ir,r._4._3._1,r._4._3._2,f(vr,ir,r._1,r._2,r._3,r._4._3._3),f(wr,ir,r._4._1,r._4._2,r._4._3._4,kr(r._4._4)))}while(!1);return f(vr,ir,r._3._4._1,r._3._4._2,f(wr,ir,r._3._1,r._3._2,kr(r._3._3),r._3._4._3),f(vr,ir,r._1,r._2,r._3._4._4,r._4))}while(!1);return t},wr=o(function(t,r,e,n,o){var c=f(vr,t,r,e,n,o);return ar(c)?Tr(c):c}),xr=o(function(t,r,e,n,o){return tr(n)||tr(o)?f(wr,sr(t),r,e,gr(n),gr(o)):f(vr,t,r,e,n,o)}),Mr=o(function(t,r,e,n,o){var c=o;return"RBEmpty_elm_builtin"===c.ctor?s(Sr,t,n,o):f(xr,t,r,e,n,f(Mr,c._0,c._1,c._2,c._3,c._4))}),Sr=e(function(t,r,e){var n={ctor:"_Tuple2",_0:r,_1:e};if("RBEmpty_elm_builtin"!==n._0.ctor){if("RBEmpty_elm_builtin"===n._1.ctor){var o=n._1._0,c=n._0._0,u={ctor:"_Tuple3",_0:t,_1:c,_2:o};return"_Tuple3"===u.ctor&&"Black"===u._0.ctor&&"Red"===u._1.ctor&&"LBlack"===u._2.ctor?f(vr,ir,n._0._1,n._0._2,n._0._3,n._0._4):l(Zt,"Black/Red/LBlack",t,y(c),y(o))}var i=n._0._2,a=n._0._4,_=n._0._1,d=f(Mr,n._0._0,_,i,n._0._3,a),p=s(or,_,i,a),h=p._0,v=p._1;return f(xr,t,h,v,d,e)}if("RBEmpty_elm_builtin"!==n._1.ctor){var m=n._1._0,g=n._0._0,b={ctor:"_Tuple3",_0:t,_1:g,_2:m};return"_Tuple3"===b.ctor&&"Black"===b._0.ctor&&"LBlack"===b._1.ctor&&"Red"===b._2.ctor?f(vr,ir,n._1._1,n._1._2,n._1._3,n._1._4):l(Zt,"Black/LBlack/Red",t,y(g),y(m))}switch(t.ctor){case"Red":return pr(dr);case"Black":return pr(fr);default:return pt.crash("cannot have bblack or nblack nodes at this point")}}),Nr=r(function(t,r){var e=r;if("RBEmpty_elm_builtin"===e.ctor)return pr(dr);var n=e._1;return f(vr,e._0,n,_(t,n,e._2),_(Nr,t,e._3),_(Nr,t,e._4))}),Br={ctor:"Same"},Rr={ctor:"Remove"},Er={ctor:"Insert"},Cr=e(function(t,r,e){var n=function(e){var o=e;if("RBEmpty_elm_builtin"===o.ctor){var c=r(C);return"Nothing"===c.ctor?{ctor:"_Tuple2",_0:Br,_1:hr}:{ctor:"_Tuple2",_0:Er,_1:f(vr,_r,t,c._0,hr,hr)}}var u=o._2,i=o._4,a=o._3,l=o._1,d=o._0;switch(_(N,t,l).ctor){case"EQ":var p=r(A(u));return"Nothing"===p.ctor?{ctor:"_Tuple2",_0:Rr,_1:s(Sr,d,a,i)}:{ctor:"_Tuple2",_0:Br,_1:f(vr,d,l,p._0,a,i)};case"LT":var h=n(a),v=h._0,m=h._1;switch(v.ctor){case"Same":return{ctor:"_Tuple2",_0:Br,_1:f(vr,d,l,u,m,i)};case"Insert":return{ctor:"_Tuple2",_0:Er,_1:f(wr,d,l,u,m,i)};default:return{ctor:"_Tuple2",_0:Rr,_1:f(xr,d,l,u,m,i)}}default:var g=n(i),v=g._0,b=g._1;switch(v.ctor){case"Same":return{ctor:"_Tuple2",_0:Br,_1:f(vr,d,l,u,a,b)};case"Insert":return{ctor:"_Tuple2",_0:Er,_1:f(wr,d,l,u,a,b)};default:return{ctor:"_Tuple2",_0:Rr,_1:f(xr,d,l,u,a,b)}}}},o=n(e),c=o._0,u=o._1;switch(c.ctor){case"Same":return u;case"Insert":return mr(u);default:return yr(u)}}),Ar=e(function(t,r,e){return s(Cr,t,m(A(r)),e)}),Or=(r(function(t,r){return s(Ar,t,r,hr)}),r(function(t,r){return s(Kt,Ar,r,t)}),r(function(t,r){var n=e(function(r,e,n){return _(t,r,e)?s(Ar,r,e,n):n});return s(Kt,n,hr,r)})),Lr=(r(function(t,e){return _(Or,r(function(t,r){return _(nr,t,e)}),t)}),r(function(t,r){var n=e(function(r,e,n){var o=n,c=o._1,u=o._0;return _(t,r,e)?{ctor:"_Tuple2",_0:s(Ar,r,e,u),_1:c}:{ctor:"_Tuple2",_0:u,_1:s(Ar,r,e,c)}});return s(Kt,n,{ctor:"_Tuple2",_0:hr,_1:hr},r)}),function(t){return s(H,r(function(t,r){var e=t;return s(Ar,e._0,e._1,r)}),hr,t)}),Dr=r(function(t,r){return s(Cr,t,m(C),r)}),Pr=(r(function(t,r){return s(Kt,e(function(t,r,e){return _(Dr,t,e)}),t,r)}),function(){function t(t){return{ctor:"",tag:"succeed",msg:t}}function _(t){return{ctor:"",tag:"fail",msg:t}}function s(t){return{ctor:"",tag:t}}function l(t,r){return{ctor:"",tag:t,decoder:r}}function f(t){return{ctor:"",tag:"null",value:t}}function d(t,r){return{ctor:"",tag:"field",field:t,decoder:r}}function h(t,r){return{ctor:"",tag:"index",index:t,decoder:r}}function m(t){return{ctor:"",tag:"key-value",decoder:t}}function g(t,r){return{ctor:"",tag:"map-many",func:t,decoders:r}}function b(t,r){return{ctor:"",tag:"andThen",decoder:r,callback:t}}function y(t){return{ctor:"",tag:"oneOf",decoders:t}}function k(t,r){return g(t,[r])}function T(t,r,e){return g(t,[r,e])}function w(t,r,e,n){return g(t,[r,e,n])}function x(t,r,e,n,o){return g(t,[r,e,n,o])}function M(t,r,e,n,o,c){return g(t,[r,e,n,o,c])}function S(t,r,e,n,o,c,u){return g(t,[r,e,n,o,c,u])}function N(t,r,e,n,o,c,u,i){return g(t,[r,e,n,o,c,u,i])}function B(t,r,e,n,o,c,u,i,a){return g(t,[r,e,n,o,c,u,i,a])}function R(t){return{tag:"ok",value:t}}function E(t,r){return{tag:"primitive",type:t,value:r}}function O(t,r){return{tag:"index",index:t,rest:r}}function L(t,r){return{tag:"field",field:t,rest:r}}function O(t,r){return{tag:"index",index:t,rest:r}}function P(t){return{tag:"oneOf",problems:t}}function F(t){return{tag:"fail",msg:t}}function I(t){for(var r="_";t;)switch(t.tag){case"primitive":return"Expecting "+t.type+("_"===r?"":" at "+r)+" but instead got: "+H(t.value);case"index":r+="["+t.index+"]",t=t.rest;break;case"field":r+="."+t.field,t=t.rest;break;case"oneOf":for(var e=t.problems,n=0;n=r.length)return E("a longer array. Need index "+a+" but there are only "+r.length+" entries",r);var o=U(t.decoder,r[a]);return"ok"===o.tag?o:O(a,o);case"key-value":if("object"!=typeof r||null===r||r instanceof Array)return E("an object",r);var _=D.Nil;for(var s in r){var o=U(t.decoder,r[s]);if("ok"!==o.tag)return L(s,o);var l=v.Tuple2(s,o.value);_=D.Cons(l,_)}return R(_);case"map-many":for(var f=t.func,d=t.decoders,n=0;n=0&&c.splice(r,1)}var c=[],u=B[t].converter,i=_e.succeed(null);return B[t].init=i,B[t].onEffects=e(r),{subscribe:n,unsubscribe:o}}function S(t,r){return w(t),B[t]={tag:"sub",subMap:E,converter:r,isForeign:!0},h(t)}function N(t,r){function n(t,r,e){for(var n=o(t,r,e),c=0;c0;){var l=n[_];s[--_]=void 0===l?C:A(l)}o.push({match:n[0],submatches:D.fromArray(s),index:n.index,number:c}),a=r.lastIndex}return r.lastIndex=i,D.fromArray(o)}function a(t,r,e,n){function o(r){if(c++>=t)return r;for(var n=arguments.length-3,o=new Array(n);n>0;){var u=arguments[n];o[--n]=void 0===u?C:A(u)}return e({match:r,submatches:D.fromArray(o),index:arguments[arguments.length-2],number:c})}t="All"===t.ctor?1/0:t._0;var c=0;return n.replace(r,o)}function _(t,r,e){if((t="All"===t.ctor?1/0:t._0)===1/0)return D.fromArray(e.split(r));for(var n,o=e,c=[],u=r.lastIndex,i=r.lastIndex;t--&&(n=r.exec(o));)c.push(o.slice(u,n.index)),u=r.lastIndex;return c.push(o.slice(u)),r.lastIndex=i,D.fromArray(c)}return{regex:c,caseInsensitive:o,escape:t,contains:r(u),find:e(i),replace:n(a),split:e(_)}}(),Se=(Me.split,Me.replace),Ne=(Me.find,Me.contains,Me.caseInsensitive,Me.regex),Be=Me.escape,Re=(n(function(t,r,e,n){return{match:t,submatches:r,index:e,number:n}}),function(t){return{ctor:"AtMost",_0:t}}),Ee=e(function(t,r,e){return _(E,NaN,yt(St(_(t,r,e))))}),Ce=function(t){var r=t,e=r._1,n=r._0;if(v.eq(n,v.chr("9"))){var o=Jt(e);return"Nothing"===o.ctor?"01":_(Vt,v.chr("0"),Ce(o._0))}var c=gt(n);return v.cmp(c,48)>-1&&v.cmp(c,57)<0?_(Vt,mt(c+1),e):"0"},Ae=r(function(t,r){var e=_(F,function(t){return!v.eq(t,v.chr("0"))&&!v.eq(t,v.chr("."))},Mt(r));return _(b["++"],t&&e?"-":"",r)}),Oe=function(t){var r=_(jt,".",t);return"::"===r.ctor?"::"===r._1.ctor?{ctor:"_Tuple2",_0:r._0,_1:r._1._0}:{ctor:"_Tuple2",_0:r._0,_1:"0"}:{ctor:"_Tuple2",_0:"0",_1:"0"}},Le=function(t){var r=_(jt,"e",y(B(t)));if("::"===r.ctor){if("::"===r._1.ctor){var e=r._1._0,n=Oe(r._0),o=n._0,c=n._1,u=_(b["++"],o,c),i=_(E,0,yt(Nt(_(Rt,"+",e)?_(Dt,1,e):e))),a=v.cmp(i,0)<0?_(E,"0",_(O,function(t){var r=t;return _(b["++"],r._0,_(b["++"],".",r._1))},_(O,ce(Gt),Jt(_(b["++"],_(Ht,B(i),"0"),u))))):s(Ot,i+1,v.chr("0"),u);return _(b["++"],v.cmp(t,0)<0?"-":"",a)}return _(b["++"],v.cmp(t,0)<0?"-":"",r._0)}return""},De=e(function(t,e,n){if(k(n)||T(n))return y(n);var o=v.cmp(n,0)<0,c=Oe(Le(B(n))),u=c._0,i=c._1,a=Wt(u)+e,l=_(M,1,a),f=_(b["++"],_(Ht,R(a)+1,"0"),s(Ot,a,v.chr("0"),_(b["++"],u,i))),d=Wt(f),p=_(t,o,s(It,l,d,f)),h=s(It,0,l,f),m=p?Ut(_(E,"1",_(O,Ce,Jt(Ut(h))))):h,g=Wt(m),w=v.eq(m,"0")?m:v.cmp(e,0)<1?_(r(function(t,r){return _(b["++"],t,r)}),m,_(Ht,B(e),"0")):v.cmp(e,Wt(i))<0?_(b["++"],s(It,0,g-e,m),_(b["++"],".",s(It,g-e,g,m))):_(r(function(t,r){return _(b["++"],t,r)}),_(b["++"],u,"."),s(Ot,e,v.chr("0"),i));return _(Ae,o,w)}),Pe=De(r(function(t,r){var e=Jt(r);return"Nothing"!==e.ctor&&("5"===e._0._0.valueOf()?""!==e._0._1||!t:function(r){return v.cmp(r,53)>0&&t||v.cmp(r,53)>-1&&!t}(gt(e._0._0)))})),Fe=(Ee(Pe),De(r(function(t,e){var n=Jt(e);return"Nothing"!==n.ctor&&("_Tuple2"===n._0.ctor&&"0"===n._0._0.valueOf()?_(r(function(t,r){return t&&r}),!t,_(F,r(function(t,r){return!v.eq(t,r)})(v.chr("0")),Mt(n._0._1))):!t)}))),Ie=(Ee(Fe),De(r(function(t,e){var n=Jt(e);return"Nothing"!==n.ctor&&("_Tuple2"===n._0.ctor&&"0"===n._0._0.valueOf()?_(r(function(t,r){return t&&r}),t,_(F,r(function(t,r){return!v.eq(t,r)})(v.chr("0")),Mt(n._0._1))):t)}))),He=r(function(t,r){return v.cmp(r,0)<0?_(Fe,t,r):_(Ie,t,r)}),ze=(Ee(He),r(function(t,r){return v.cmp(r,0)<0?_(Ie,t,r):_(Fe,t,r)})),je=(Ee(ze),Ee(Ie),De(r(function(t,e){return _(r(function(t,r){return v.cmp(t,r)<1}),53,gt(_(E,v.chr("0"),_(O,ie,Jt(e)))))}))),Ue=(Ee(je),Ne("^(\\d+\\.[^0]*)(0+)$")),We=Ne(Be(".")),qe=r(function(t,r){var e=_(Ie,t.decimalPlaces,r),n=l(Se,Re(1),Ue,function(t){var r=t;return _(zt,"",_(V,E(""),_(nt,1,r.submatches)))},e),o=_(Bt,".",n)?_(Lt,1,n):n;return v.eq(t.decimalSeparator,".")?o:l(Se,Re(1),We,function(r){return t.decimalSeparator},o)}),Je={minimumSize:1,abbreviation:"?"},Ve={ctor:"::",_0:{minimumSize:1,abbreviation:"B"},_1:{ctor:"::",_0:{minimumSize:1024,abbreviation:"KiB"},_1:{ctor:"::",_0:{minimumSize:1048576,abbreviation:"MiB"},_1:{ctor:"::",_0:{minimumSize:1073741824,abbreviation:"GiB"},_1:{ctor:"::",_0:{minimumSize:1099511627776,abbreviation:"TiB"},_1:{ctor:"::",_0:{minimumSize:0x4000000000000,abbreviation:"PiB"},_1:{ctor:"[]"}}}}}}},Ge={ctor:"::",_0:{minimumSize:1,abbreviation:"B"},_1:{ctor:"::",_0:{minimumSize:1e3,abbreviation:"kB"},_1:{ctor:"::",_0:{minimumSize:1e6,abbreviation:"MB"},_1:{ctor:"::",_0:{minimumSize:1e9,abbreviation:"GB"},_1:{ctor:"::",_0:{minimumSize:1e12,abbreviation:"TB"},_1:{ctor:"::",_0:{minimumSize:1e15,abbreviation:"PB"},_1:{ctor:"::",_0:{minimumSize:1e18,abbreviation:"EB"},_1:{ctor:"[]"}}}}}}}},Ye=function(t){return"Base10"===t.ctor?Ge:Ve},Qe=r(function(t,r){if(v.eq(r,0))return"0 B";var e=Ye(t.units),n=v.cmp(r,0)<0?{ctor:"_Tuple2",_0:R(r),_1:"-"}:{ctor:"_Tuple2",_0:r,_1:""},o=n._0,c=n._1,u=_(E,Je,q($(_(G,function(t){return v.cmp(o,t.minimumSize)>-1},e)))),i=_(qe,t,w(o)/w(u.minimumSize));return _(b["++"],c,_(b["++"],i,_(b["++"]," ",u.abbreviation)))}),$e=(e(function(t,r,e){return{units:t,decimalPlaces:r,decimalSeparator:e}}),r(function(t,r){return{minimumSize:t,abbreviation:r}}),{ctor:"Base2"}),Ke={ctor:"Base10"},Xe={units:Ke,decimalPlaces:2,decimalSeparator:"."},Ze=Qe(Xe),tn=(Qe(v.update(Xe,{units:$e})),function(){function t(t){var r=new Date(t);return isNaN(r.getTime())?Tt("Unable to parse '"+t+"' as a date. Dates must be in the ISO 8601 format."):wt(r)}var r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];return{fromString:t,year:function(t){return t.getFullYear()},month:function(t){return{ctor:e[t.getMonth()]}},day:function(t){return t.getDate()},hour:function(t){return t.getHours()},minute:function(t){return t.getMinutes()},second:function(t){return t.getSeconds()},millisecond:function(t){return t.getMilliseconds()},toTime:function(t){return t.getTime()},fromTime:function(t){return new Date(t)},dayOfWeek:function(t){return{ctor:r[t.getDay()]}}}}()),rn=_e.onError,en=_e.andThen,nn=r(function(t,r){var e=r;return _e.spawn(_(en,ge(t),e._0))}),on=_e.fail,cn=(r(function(t,r){return _(rn,function(r){return on(t(r))},r)}),_e.succeed),un=r(function(t,r){return _(en,function(r){return cn(t(r))},r)}),an=e(function(t,r,e){return _(en,function(r){return _(en,function(e){return cn(_(t,r,e))},e)},r)}),_n=(n(function(t,r,e,n){return _(en,function(r){return _(en,function(e){return _(en,function(n){return cn(s(t,r,e,n))},n)},e)},r)}),o(function(t,r,e,n,o){return _(en,function(r){return _(en,function(e){return _(en,function(n){return _(en,function(o){return cn(l(t,r,e,n,o))},o)},n)},e)},r)}),c(function(t,r,e,n,o,c){return _(en,function(r){return _(en,function(e){return _(en,function(n){return _(en,function(o){return _(en,function(c){return cn(f(t,r,e,n,o,c))},c)},o)},n)},e)},r)}),function(t){var e=t;return"[]"===e.ctor?cn({ctor:"[]"}):s(an,r(function(t,r){return{ctor:"::",_0:t,_1:r}}),e._0,_n(e._1))}),sn=e(function(t,r,e){return _(un,function(t){return{ctor:"_Tuple0"}},_n(_(V,nn(t),r)))}),ln=cn({ctor:"_Tuple0"}),fn=e(function(t,r,e){return cn({ctor:"_Tuple0"})}),dn=ae.leaf("Task"),pn=function(t){return{ctor:"Perform",_0:t}},hn=r(function(t,r){return dn(pn(_(un,t,r)))}),vn=r(function(t,r){return dn(pn(_(rn,function(r){return cn(t(Tt(r)))},_(en,function(r){return cn(t(wt(r)))},r))))}),mn=r(function(t,r){return pn(_(un,t,r._0))});ae.effectManagers.Task={pkg:"elm-lang/core",init:ln,onEffects:sn,onSelfMsg:fn,tag:"cmd",cmdMap:mn};var gn=function(){function t(t,r){return _e.nativeBinding(function(e){var n=setInterval(function(){_e.rawSpawn(r)},t);return function(){clearInterval(n)}})}return{now:_e.nativeBinding(function(t){t(_e.succeed(Date.now()))}),setInterval_:r(t)}}(),bn=gn.setInterval_,yn=e(function(t,r,e){var n=r;if("[]"===n.ctor)return cn(e);var o=n._0,c=function(r){return s(yn,t,n._1,s(Ar,o,r,e))},u=_e.spawn(_(bn,o,_(me,t,o)));return _(en,c,u)}),kn=r(function(t,r){var e=t,n=e._1,o=e._0,c=_(er,o,r);return"Nothing"===c.ctor?s(Ar,o,{ctor:"::",_0:n,_1:{ctor:"[]"}},r):s(Ar,o,{ctor:"::",_0:n,_1:c._0},r)}),Tn=function(t){return t/36e5},wn=function(t){return t/6e4},xn=function(t){return t/1e3},Mn=gn.now,Sn=e(function(t,r,e){var n=_(er,r,e.taggers);if("Nothing"===n.ctor)return cn(e);var o=function(r){return _n(_(V,function(e){return _(ge,t,e(r))},n._0))};return _(en,function(t){return cn(e)},_(en,o,Mn))}),Nn=ae.leaf("Time"),Bn=r(function(t,r){return{taggers:t,processes:r}}),Rn=cn(_(Bn,hr,hr)),En=e(function(t,r,o){var c=o,u=e(function(t,r,e){var n=e;return{ctor:"_Tuple3",_0:n._0,_1:n._1,_2:_(en,function(t){return n._2},_e.kill(r))}}),i=n(function(t,r,e,n){var o=n;return{ctor:"_Tuple3",_0:o._0,_1:s(Ar,t,e,o._1),_2:o._2}}),a=e(function(t,r,e){var n=e;return{ctor:"_Tuple3",_0:{ctor:"::",_0:t,_1:n._0},_1:n._1,_2:n._2}}),l=s(H,kn,hr,r),f=d(Xt,a,i,u,l,c.processes,{ctor:"_Tuple3",_0:{ctor:"[]"},_1:hr,_2:cn({ctor:"_Tuple0"})}),p=f._0,h=f._1,v=f._2;return _(en,function(t){return cn(_(Bn,l,t))},_(en,function(r){return s(yn,t,p,h)},v))}),Cn=r(function(t,r){return{ctor:"Every",_0:t,_1:r}}),An=r(function(t,r){return Nn(_(Cn,t,r))}),On=r(function(t,r){var e=r;return _(Cn,e._0,function(r){return t(e._1(r))})});ae.effectManagers.Time={pkg:"elm-lang/core",init:Rn,onEffects:En,onSelfMsg:Sn,tag:"sub",subMap:On};var Ln,Dn=(tn.millisecond,tn.second),Pn=tn.minute,Fn=tn.hour,In=tn.dayOfWeek,Hn=tn.day,zn=tn.month,jn=tn.year,Un=tn.fromTime,Wn=tn.toTime,qn=tn.fromString,Jn=(_(un,Un,Mn),{ctor:"Sun"}),Vn={ctor:"Sat"},Gn={ctor:"Fri"},Yn={ctor:"Thu"},Qn={ctor:"Wed"},$n={ctor:"Tue"},Kn={ctor:"Mon"},Xn={ctor:"Dec"},Zn={ctor:"Nov"},to={ctor:"Oct"},ro={ctor:"Sep"},eo={ctor:"Aug"},no={ctor:"Jul"},oo={ctor:"Jun"},co={ctor:"May"},uo={ctor:"Apr"},io={ctor:"Mar"},ao={ctor:"Feb"},_o={ctor:"Jan"},so=_e.kill,lo=(_e.sleep,_e.spawn),fo=function(){function t(t){return function(r,e,n){return _e.nativeBinding(function(o){function c(t){var r=_(Vr,e,t);"Ok"===r.ctor&&_e.rawSpawn(n(r._0))}return t.addEventListener(r,c),function(){t.removeEventListener(r,c)}})}}function n(t,r){return _e.nativeBinding(function(e){b(function(){var n=document.getElementById(t);if(null===n)return void e(_e.fail({ctor:"NotFound",_0:t}));e(_e.succeed(r(n)))})})}function o(t){return n(t,function(t){return t.focus(),v.Tuple0})}function c(t){return n(t,function(t){return t.blur(),v.Tuple0})}function u(t){return n(t,function(t){return t.scrollTop})}function i(t,r){return n(t,function(t){return t.scrollTop=r,v.Tuple0})}function a(t){return n(t,function(t){return t.scrollTop=t.scrollHeight,v.Tuple0})}function s(t){return n(t,function(t){return t.scrollLeft})}function l(t,r){return n(t,function(t){return t.scrollLeft=r,v.Tuple0})}function f(t){return n(t,function(t){return t.scrollLeft=t.scrollWidth,v.Tuple0})}function d(t,r){return n(r,function(r){switch(t.ctor){case"Content":return r.scrollWidth;case"VisibleContent":return r.clientWidth;case"VisibleContentWithBorders":return r.offsetWidth;case"VisibleContentWithBordersAndMargins":var e=r.getBoundingClientRect();return e.right-e.left}})}function p(t,r){return n(r,function(r){switch(t.ctor){case"Content":return r.scrollHeight;case"VisibleContent":return r.clientHeight;case"VisibleContentWithBorders":return r.offsetHeight;case"VisibleContentWithBordersAndMargins":var e=r.getBoundingClientRect();return e.bottom-e.top}})}var h={addEventListener:function(){},removeEventListener:function(){}},m=t("undefined"!=typeof document?document:h),g=t("undefined"!=typeof window?window:h),b="undefined"!=typeof requestAnimationFrame?requestAnimationFrame:function(t){t()};return{onDocument:e(m),onWindow:e(g),focus:o,blur:c,getScrollTop:u,setScrollTop:r(i),getScrollLeft:s,setScrollLeft:r(l),toBottom:a,toRight:f,height:r(p),width:r(d)}}(),po=fo.onWindow,ho=(fo.onDocument,function(){function t(t){return{type:"text",text:t}}function o(t){return r(function(r,e){return c(t,r,e)})}function c(t,r,e){for(var n=h(r),o=n.namespace,c=n.facts,u=[],i=0;"[]"!==e.ctor;){var a=e._0;i+=a.descendantsCount||0,u.push(a),e=e._1}return i+=u.length,{type:"node",tag:t,facts:c,children:u,namespace:o,descendantsCount:i}}function u(t,r,e){for(var n=h(r),o=n.namespace,c=n.facts,u=[],i=0;"[]"!==e.ctor;){var a=e._0;i+=a._1.descendantsCount||0,u.push(a),e=e._1}return i+=u.length,{type:"keyed-node",tag:t,facts:c,children:u,namespace:o,descendantsCount:i}}function i(t,r,e){return{type:"custom",facts:h(t).facts,model:r,impl:e}}function a(t,r){return{type:"tagger",tagger:t,node:r,descendantsCount:1+(r.descendantsCount||0)}}function l(t,r,e){return{type:"thunk",func:t,args:r,thunk:e,node:void 0}}function f(t,r){return l(t,[r],function(){return t(r)})}function d(t,r,e){return l(t,[r,e],function(){return _(t,r,e)})}function p(t,r,e,n){return l(t,[r,e,n],function(){return s(t,r,e,n)})}function h(t){for(var r,e={};"[]"!==t.ctor;){var n=t._0,o=n.key;if(o===dt||o===pt||o===ft){var c=e[o]||{};c[n.realKey]=n.value,e[o]=c}else if(o===lt){for(var u=e[o]||{},i=n.value;"[]"!==i.ctor;){var a=i._0;u[a._0]=a._1,i=i._1}e[o]=u}else if("namespace"===o)r=n.value;else if("className"===o){var _=e[o];e[o]=void 0===_?n.value:_+" "+n.value}else e[o]=n.value;t=t._1}return{facts:e,namespace:r}}function m(t){return{key:lt,value:t}}function g(t,r){return{key:t,value:r}}function b(t,r){return{key:dt,realKey:t,value:r}}function y(t,r,e){return{key:pt,realKey:r,value:{value:e,namespace:t}}}function k(t,r,e){return{key:ft,realKey:t,value:{options:r,decoder:e}}}function T(t,r){return(t.options===r.options||t.options.stopPropagation===r.options.stopPropagation&&t.options.preventDefault===r.options.preventDefault)&&Pr.equality(t.decoder,r.decoder)}function w(t,r){return r.key!==ft?r:k(r.realKey,r.value.options,_(Qr,t,r.value.decoder))}function x(t,r){switch(t.type){case"thunk":return t.node||(t.node=t.thunk()),x(t.node,r);case"tagger":for(var e=t.node,n=t.tagger;"tagger"===e.type;)"object"!=typeof n?n=[n,e.tagger]:n.push(e.tagger),e=e.node;var o={tagger:n,parent:r},c=x(e,o);return c.elm_event_node_ref=o,c;case"text":return ht.createTextNode(t.text);case"node":var c=t.namespace?ht.createElementNS(t.namespace,t.tag):ht.createElement(t.tag);M(c,r,t.facts);for(var u=t.children,i=0;i0&&e.push(A("p-thunk",n,s)));case"tagger":for(var l=t.tagger,f=r.tagger,d=!1,p=t.node;"tagger"===p.type;)d=!0,"object"!=typeof l?l=[l,p.tagger]:l.push(p.tagger),p=p.node;for(var h=r.node;"tagger"===h.type;)d=!0,"object"!=typeof f?f=[f,h.tagger]:f.push(h.tagger),h=h.node;return d&&l.length!==f.length?void e.push(A("p-redraw",n,r)):((d?L(l,f):l===f)||e.push(A("p-tagger",n,f)),void O(p,h,e,n+1));case"text":if(t.text!==r.text)return void e.push(A("p-text",n,r.text));return;case"node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void e.push(A("p-redraw",n,r));var v=D(t.facts,r.facts);return void 0!==v&&e.push(A("p-facts",n,v)),void P(t,r,e,n);case"keyed-node":if(t.tag!==r.tag||t.namespace!==r.namespace)return void e.push(A("p-redraw",n,r));var v=D(t.facts,r.facts);return void 0!==v&&e.push(A("p-facts",n,v)),void F(t,r,e,n);case"custom":if(t.impl!==r.impl)return void e.push(A("p-redraw",n,r));var v=D(t.facts,r.facts);void 0!==v&&e.push(A("p-facts",n,v));var m=r.impl.diff(t,r);if(m)return void e.push(A("p-custom",n,m));return}}}function L(t,r){for(var e=0;ei?e.push(A("p-remove-last",n,u-i)):u0||u.length>0||void 0!==E)&&e.push(A("p-reorder",n,{patches:o,inserts:u,endInserts:E}))}function I(t,r,e,n,o,c){var u=t[e];if(void 0===u)return u={tag:"insert",vnode:n,index:o,data:void 0},c.push({index:o,entry:u}),void(t[e]=u);if("remove"===u.tag){c.push({index:o,entry:u}),u.tag="move";var i=[];return O(u.vnode,n,i,u.index),u.index=o,void(u.data.data={patches:i,entry:u})}I(t,r,e+vt,n,o,c)}function H(t,r,e,n,o){var c=t[e];if(void 0===c){var u=A("p-remove",o,void 0);return r.push(u),void(t[e]={tag:"remove",vnode:n,index:o,data:u})}if("insert"===c.tag){c.tag="move";var i=[];O(n,c.vnode,i,o);var u=A("p-remove",o,{patches:i,entry:c});return void r.push(u)}H(t,r,e+vt,n,o)}function z(t,r,e,n){j(t,r,e,0,0,r.descendantsCount,n)}function j(t,r,e,n,o,c,u){for(var i=e[n],a=i.index;a===o;){var _=i.type;if("p-thunk"===_)z(t,r.node,i.data,u);else if("p-reorder"===_){i.domNode=t,i.eventNode=u;var s=i.data.patches;s.length>0&&j(t,r,s,0,o,c,u)}else if("p-remove"===_){i.domNode=t,i.eventNode=u;var l=i.data;if(void 0!==l){l.entry.data=t;var s=l.patches;s.length>0&&j(t,r,s,0,o,c,u)}}else i.domNode=t,i.eventNode=u;if(n++,!(i=e[n])||(a=i.index)>c)return n}switch(r.type){case"tagger":for(var f=r.node;"tagger"===f.type;)f=f.node;return j(t,f,e,n,o+1,c,t.elm_event_node_ref);case"node":for(var d=r.children,p=t.childNodes,h=0;hc))return n;o=m}return n;case"keyed-node":for(var d=r.children,p=t.childNodes,h=0;hc))return n;o=m}return n;case"text":case"thunk":throw new Error("should never traverse `text` or `thunk` nodes like this")}}function U(t,r,e,n){return 0===e.length?t:(z(t,r,e,n),W(t,e))}function W(t,r){for(var e=0;e"),new Error(t)}function Z(t,r,e,n){r.embed=function(r,e){for(;r.lastChild;)r.removeChild(r.lastChild);return ae.initialize(n(t.init,e,r),t.update,t.subscriptions,tt(r,t.view))},r.fullscreen=function(r){return ae.initialize(n(t.init,r,document.body),t.update,t.subscriptions,tt(document.body,t.view))}}function tt(t,r){return function(e,n){var o={tagger:e,parent:void 0},c=r(n),u=x(c,o);return t.appendChild(u),rt(u,r,c,o)}}function rt(t,r,e,n){function o(){switch(u){case"NO_REQUEST":throw new Error("Unexpected draw callback.\nPlease report this to .");case"PENDING_REQUEST":bt(o),u="EXTRA_REQUEST";var e=r(c),a=C(i,e);return t=U(t,i,a,n),void(i=e);case"EXTRA_REQUEST":return void(u="NO_REQUEST")}}var c,u="NO_REQUEST",i=e;return function(t){"NO_REQUEST"===u&&bt(o),u="PENDING_REQUEST",c=t}}function et(t,r,e,n){r.fullscreen=function(r){var o={doc:void 0};return ae.initialize(n(t.init,r,document.body),t.update(nt(o)),t.subscriptions,ot(e,document.body,o,t.view,t.viewIn,t.viewOut))},r.embed=function(r,o){var c={doc:void 0};return ae.initialize(n(t.init,o,r),t.update(nt(c)),t.subscriptions,ot(e,r,c,t.view,t.viewIn,t.viewOut))}}function nt(t){return _e.nativeBinding(function(r){var e=t.doc;if(e){var n=e.getElementsByClassName("debugger-sidebar-messages")[0];n&&(n.scrollTop=n.scrollHeight)}r(_e.succeed(v.Tuple0))})}function ot(t,r,e,n,o,c){return function(u,i){var a={tagger:u,parent:void 0},_={tagger:u,parent:void 0},s=n(i),l=x(s,a);r.appendChild(l);var f=rt(l,n,s,a),d=o(i)._1,p=x(d,_);r.appendChild(p);var h=it(a,p,o),v=rt(p,h,d,_),m=ct(i,c,_,r,t,e);return function(t){f(t),v(t),m(t)}}}function ct(t,r,e,n,o,c){var u,i;return function(t){if(t.isDebuggerOpen){if(!c.doc)return u=r(t),void(i=ut(o,c,u,e));ht=c.doc;var n=r(t),a=C(u,n);i=U(i,u,a,e),u=n,ht=document}}}function ut(t,r,e,n){function o(){r.doc=void 0,i.close()}var c=screen.width-900,u=screen.height-360,i=window.open("","","width=900,height=360,left="+c+",top="+u);ht=i.document,r.doc=ht,ht.title="Debugger - "+t,ht.body.style.margin="0",ht.body.style.padding="0";var a=x(e,n);return ht.body.appendChild(a),ht.addEventListener("keydown",function(t){t.metaKey&&82===t.which&&window.location.reload(),38===t.which&&(n.tagger({ctor:"Up"}),t.preventDefault()),40===t.which&&(n.tagger({ctor:"Down"}),t.preventDefault())}),window.addEventListener("unload",o),i.addEventListener("unload",function(){r.doc=void 0,window.removeEventListener("unload",o),n.tagger({ctor:"Close"})}),ht=document,a}function it(t,r,e){var n,o=st(r),c="Normal",u=t.tagger,i=function(){};return function(r){var a=e(r),_=a._0.ctor;return t.tagger="Normal"===_?u:i,c!==_&&(at("removeEventListener",o,c),at("addEventListener",o,_),"Normal"===c&&(n=document.body.style.overflow,document.body.style.overflow="hidden"),"Normal"===_&&(document.body.style.overflow=n),c=_),a._1}}function at(t,r,e){switch(e){case"Normal":return;case"Pause":return _t(t,r,yt);case"Message":return _t(t,r,kt)}}function _t(t,r,e){for(var n=0;n0){var u=o.substring(0,c),i=o.substring(c+2);r=s(Cr,u,function(t){return A("Just"===t.ctor?i+", "+t._0:i)},r)}}return r}function f(t){return{responseType:"text",responseToResult:t}}function d(t,r){return{responseType:r.responseType,responseToResult:function(e){var n=r.responseToResult(e);return _(xt,t,n)}}}function p(t){for(var r=new FormData;"[]"!==t.ctor;){var e=t._0;r.append(e._0,e._1),t=t._1}return{ctor:"FormDataBody",_0:r}}return{toTask:r(n),expectStringResponse:f,mapExpect:r(d),multipart:p,encodeUri:t,decodeUri:e}}()),Sc=(r(function(t,r){return v.update(r,{expect:_(Mc.mapExpect,t,r.expect)})}),u(function(t,r,e,n,o,c,u){return{method:t,headers:r,url:e,body:n,expect:o,timeout:c,withCredentials:u}}),function(t){return{ctor:"Request",_0:t}}),Nc=r(function(t,r){return{ctor:"StringBody",_0:t,_1:r}}),Bc={ctor:"EmptyBody"},Rc=(r(function(t,r){return{ctor:"Header",_0:t,_1:r}}),Mc.decodeUri),Ec=(Mc.encodeUri,Mc.expectStringResponse),Cc=function(t){return Ec(function(r){return _(Gr,t,r.body)})},Ac=Ec(function(t){return wt(t.body)}),Oc=(Mc.multipart,function(t){return _(Nc,"application/json",_(zr,0,t))}),Lc=Bc,Dc=Sc,Pc=(e(function(t,r,e){return Dc({method:"POST",headers:{ctor:"[]"},url:t,body:r,expect:Cc(e),timeout:C,withCredentials:!1})}),r(function(t,r){return Dc({method:"GET",headers:{ctor:"[]"},url:t,body:Lc,expect:Cc(r),timeout:C,withCredentials:!1})})),Fc=function(t){var r=t;return _(Mc.toTask,r._0,C)},Ic=r(function(t,r){return _(vn,t,Fc(r))}),Hc=(n(function(t,r,e,n){return{url:t,status:r,headers:e,body:n}}),r(function(t,r){return{ctor:"BadPayload",_0:t,_1:r}}),r(function(t,r){return{ctor:"StringPart",_0:t,_1:r}}),function(){function t(t){return _e.nativeBinding(function(r){0!==t&&history.go(t),r(_e.succeed(v.Tuple0))})}function r(t){return _e.nativeBinding(function(r){history.pushState({},"",t),r(_e.succeed(c()))})}function e(t){return _e.nativeBinding(function(r){history.replaceState({},"",t),r(_e.succeed(c()))})}function n(t){return _e.nativeBinding(function(r){document.location.reload(t),r(_e.succeed(v.Tuple0))})}function o(t){return _e.nativeBinding(function(r){try{window.location=t}catch(t){document.location.reload(!1)}r(_e.succeed(v.Tuple0))})}function c(){var t=document.location;return{href:t.href,host:t.host,hostname:t.hostname,protocol:t.protocol,origin:t.origin,port_:t.port,pathname:t.pathname,search:t.search,hash:t.hash,username:t.username,password:t.password}}function u(){return-1!==window.navigator.userAgent.indexOf("Trident")}return{go:t,setLocation:o,reloadPage:n,pushState:r,replaceState:e,getLocation:c,isInternetExplorer11:u}}()),zc=Hc.replaceState,jc=Hc.pushState,Uc=Hc.go,Wc=Hc.reloadPage,qc=Hc.setLocation,Jc=Jc||{};Jc["&>"]=r(function(t,r){return _(en,function(t){return r},t)});var Vc=e(function(t,r,e){var n=function(r){return _(ge,t,r._0(e))};return _(Jc["&>"],_n(_(V,n,r)),cn({ctor:"_Tuple0"}))}),Gc=e(function(t,r,e){var n=e;switch(n.ctor){case"Jump":return Uc(n._0);case"New":return _(en,_(Vc,t,r),jc(n._0));case"Modify":return _(en,_(Vc,t,r),zc(n._0));case"Visit":return qc(n._0);default:return Wc(n._0)}}),Yc=function(t){var r=t;return"Normal"===r.ctor?so(r._0):_(Jc["&>"],so(r._0),so(r._1))},Qc=e(function(t,r,e){return _(Jc["&>"],s(Vc,t,e.subs,r),cn(e))}),$c=ae.leaf("Navigation"),Kc=ae.leaf("Navigation"),Xc=r(function(t,r){return{subs:t,popWatcher:r}}),Zc=cn(_(Xc,{ctor:"[]"},C)),tu=function(t){return{ctor:"Reload",_0:t}},ru=(Kc(tu(!1)),Kc(tu(!0)),function(t){return{ctor:"Visit",_0:t}}),eu=function(t){return{ctor:"Modify",_0:t}},nu=function(t){return{ctor:"New",_0:t}},ou=function(t){return Kc(nu(t))},cu=function(t){return{ctor:"Jump",_0:t}},uu=r(function(t,r){var e=r;switch(e.ctor){case"Jump":return cu(e._0);case"New":return nu(e._0);case"Modify":return eu(e._0);case"Visit":return ru(e._0);default:return tu(e._0)}}),iu=function(t){return{ctor:"Monitor",_0:t}},au=(r(function(t,r){var e=r.init(Hc.getLocation({ctor:"_Tuple0"})),n=function(e){return pe({ctor:"::",_0:$c(iu(t)),_1:{ctor:"::",_0:r.subscriptions(e),_1:{ctor:"[]"}}})};return Bo({init:e,view:r.view,update:r.update,subscriptions:n})}),r(function(t,r){var e=function(t){return _(r.init,t,Hc.getLocation({ctor:"_Tuple0"}))},n=function(e){return pe({ctor:"::",_0:$c(iu(t)),_1:{ctor:"::",_0:r.subscriptions(e),_1:{ctor:"[]"}}})};return No({init:e,view:r.view,update:r.update,subscriptions:n})})),_u=r(function(t,r){var e=r;return iu(function(r){return t(e._0(r))})}),su=r(function(t,r){return{ctor:"InternetExplorer",_0:t,_1:r}}),lu=function(t){return{ctor:"Normal",_0:t}},fu=function(t){var r=function(r){return _(me,t,Hc.getLocation({ctor:"_Tuple0"}))};return Hc.isInternetExplorer11({ctor:"_Tuple0"})?s(an,su,lo(s(po,"popstate",Ur,r)),lo(s(po,"hashchange",Ur,r))):_(un,lu,lo(s(po,"popstate",Ur,r)))},du=n(function(t,r,e,n){var o=n,c=o.popWatcher,u=function(){var r={ctor:"_Tuple2",_0:e,_1:c};t:do{if("[]"===r._0.ctor){if("Just"===r._1.ctor)return _(Jc["&>"],Yc(r._1._0),cn(_(Xc,e,C)));break t}if("Nothing"===r._1.ctor)return _(un,function(t){return _(Xc,e,A(t))},fu(t));break t}while(!1);return cn(_(Xc,e,c))}();return _(Jc["&>"],_n(_(V,_(Gc,t,e),r)),u)});ae.effectManagers.Navigation={pkg:"elm-lang/navigation",init:Zc,onEffects:du,onSelfMsg:Qc,tag:"fx",cmdMap:uu,subMap:_u};var pu=Mo,hu=_(wo,"namespace",Hr("http://www.w3.org/2000/svg")),vu=e(function(t,r,e){return s(So,t,{ctor:"::",_0:hu,_1:r},e)}),mu=vu("svg"),gu=(vu("foreignObject"),vu("animate"),vu("animateColor"),vu("animateMotion"),vu("animateTransform"),vu("mpath"),vu("set"),vu("a"),vu("defs"),vu("g")),bu=(vu("marker"),vu("mask"),vu("pattern"),vu("switch"),vu("symbol"),vu("desc"),vu("metadata"),vu("title"),vu("feBlend"),vu("feColorMatrix"),vu("feComponentTransfer"),vu("feComposite"),vu("feConvolveMatrix"),vu("feDiffuseLighting"),vu("feDisplacementMap"),vu("feFlood"),vu("feFuncA"),vu("feFuncB"),vu("feFuncG"),vu("feFuncR"),vu("feGaussianBlur"),vu("feImage"),vu("feMerge"),vu("feMergeNode"),vu("feMorphology"),vu("feOffset"),vu("feSpecularLighting"),vu("feTile"),vu("feTurbulence"),vu("font"),vu("linearGradient"),vu("radialGradient"),vu("stop"),vu("circle")),yu=(vu("ellipse"),vu("image"),vu("line"),vu("path")),ku=(vu("polygon"),vu("polyline"),vu("rect")),Tu=(vu("use"),vu("feDistantLight"),vu("fePointLight"),vu("feSpotLight"),vu("altGlyph"),vu("altGlyphDef"),vu("altGlyphItem"),vu("glyph"),vu("glyphRef"),vu("textPath"),vu("text")),wu=(vu("tref"),vu("tspan"),vu("clipPath"),vu("colorProfile"),vu("cursor"),vu("filter"),vu("script"),vu("style"),vu("view"),To("writing-mode"),To("word-spacing"),To("visibility"),To("unicode-bidi"),To("text-rendering"),To("text-decoration"),To("text-anchor"),To("stroke")),xu=To("stroke-width"),Mu=(To("stroke-opacity"),To("stroke-miterlimit"),To("stroke-linejoin"),To("stroke-linecap"),To("stroke-dashoffset"),To("stroke-dasharray"),To("stop-opacity"),To("stop-color"),To("shape-rendering"),To("pointer-events"),To("overflow"),To("opacity"),To("mask"),To("marker-start"),To("marker-mid"),To("marker-end"),To("lighting-color"),To("letter-spacing"),To("kerning"),To("image-rendering"),To("glyph-orientation-vertical"),To("glyph-orientation-horizontal"),To("font-weight"),To("font-variant"),To("font-style"),To("font-stretch"),To("font-size"),To("font-size-adjust"),To("font-family"),To("flood-opacity"),To("flood-color"),To("filter"),To("fill")),Su=(To("fill-rule"),To("fill-opacity"),To("enable-background"),To("dominant-baseline"),To("display"),To("direction"),To("cursor"),To("color"),To("color-rendering"),To("color-profile"),To("color-interpolation"),To("color-interpolation-filters"),To("clip"),To("clip-rule"),To("clip-path"),To("baseline-shift"),To("alignment-baseline"),To("zoomAndPan"),To("z"),To("yChannelSelector"),To("y2"),To("y1"),To("y")),Nu=(_(ko,"http://www.w3.org/XML/1998/namespace","xml:space"),_(ko,"http://www.w3.org/XML/1998/namespace","xml:lang"),_(ko,"http://www.w3.org/XML/1998/namespace","xml:base"),_(ko,"http://www.w3.org/1999/xlink","xlink:type"),_(ko,"http://www.w3.org/1999/xlink","xlink:title"),_(ko,"http://www.w3.org/1999/xlink","xlink:show"),_(ko,"http://www.w3.org/1999/xlink","xlink:role"),_(ko,"http://www.w3.org/1999/xlink","xlink:href"),_(ko,"http://www.w3.org/1999/xlink","xlink:arcrole"),_(ko,"http://www.w3.org/1999/xlink","xlink:actuate"),To("xChannelSelector"),To("x2"),To("x1"),To("x-height"),To("x")),Bu=(To("widths"),To("width")),Ru=(To("viewTarget"),To("viewBox")),Eu=(To("vert-origin-y"),To("vert-origin-x"),To("vert-adv-y"),To("version"),To("values"),To("v-mathematical"),To("v-ideographic"),To("v-hanging"),To("v-alphabetic"),To("units-per-em"),To("unicode-range"),To("unicode"),To("underline-thickness"),To("underline-position"),To("u2"),To("u1"),To("type"),To("transform")),Cu=(To("to"),To("title"),To("textLength"),To("targetY"),To("targetX"),To("target"),To("tableValues"),To("systemLanguage"),To("surfaceScale"),To("style"),To("string"),To("strikethrough-thickness"),To("strikethrough-position"),To("stitchTiles"),To("stemv"),To("stemh"),To("stdDeviation"),To("startOffset"),To("spreadMethod"),To("speed"),To("specularExponent"),To("specularConstant"),To("spacing"),To("slope"),To("seed"),To("scale"),To("ry"),To("rx"),To("rotate"),To("result"),To("restart"),To("requiredFeatures"),To("requiredExtensions"),To("repeatDur"),To("repeatCount"),To("rendering-intent"),To("refY"),To("refX"),To("radius"),To("r")),Au=(To("primitiveUnits"),To("preserveAspectRatio"),To("preserveAlpha"),To("pointsAtZ"),To("pointsAtY"),To("pointsAtX"),To("points"),To("point-order"),To("patternUnits"),To("patternTransform"),To("patternContentUnits"),To("pathLength"),To("path"),To("panose-1"),To("overline-thickness"),To("overline-position"),To("origin"),To("orientation"),To("orient"),To("order"),To("operator"),To("offset"),To("numOctaves"),To("name"),To("mode"),To("min"),To("method"),To("media"),To("max"),To("mathematical"),To("maskUnits"),To("maskContentUnits"),To("markerWidth"),To("markerUnits"),To("markerHeight"),To("local"),To("limitingConeAngle"),To("lengthAdjust"),To("lang"),To("keyTimes"),To("keySplines"),To("keyPoints"),To("kernelUnitLength"),To("kernelMatrix"),To("k4"),To("k3"),To("k2"),To("k1"),To("k"),To("intercept"),To("in2"),To("in"),To("ideographic"),To("id"),To("horiz-origin-y"),To("horiz-origin-x"),To("horiz-adv-x"),To("height")),Ou=(To("hanging"),To("gradientUnits"),To("gradientTransform"),To("glyphRef"),To("glyph-name"),To("g2"),To("g1"),To("fy"),To("fx"),To("from"),To("format"),To("filterUnits"),To("filterRes"),To("externalResourcesRequired"),To("exponent"),To("end"),To("elevation"),To("edgeMode"),To("dy"),To("dx"),To("dur"),To("divisor"),To("diffuseConstant"),To("descent"),To("decelerate"),To("d")),Lu=To("cy"),Du=To("cx"),Pu=(To("contentStyleType"),To("contentScriptType"),To("clipPathUnits"),To("class"),To("cap-height"),To("calcMode"),To("by"),To("bias"),To("begin"),To("bbox"),To("baseProfile"),To("baseFrequency"),To("azimuth"),To("autoReverse"),To("attributeType"),To("attributeName"),To("ascent"),To("arabic-form"),To("amplitude"),To("allowReorder"),To("alphabetic"),To("additive"),To("accumulate"),To("accelerate"),To("accent-height"),function(t){var e=_(jt,"=",t);return"::"===e.ctor&&"::"===e._1.ctor&&"[]"===e._1._1.ctor?s(L,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),Rc(e._0),Rc(e._1._0)):C}),Fu=function(t){return Lr(_(Q,Pu,_(jt,"&",_(Dt,1,t))))},Iu=function(t){var r=_(jt,"/",t);return"::"===r.ctor&&""===r._0?r._1:r},Hu=function(t){for(;;){var r=t;if("[]"===r.ctor)return C;var e=r._0,n=e.unvisited;if("[]"===n.ctor)return A(e.value);if(""===n._0&&"[]"===n._1.ctor)return A(e.value);t=r._1}},zu=e(function(t,r,e){return Hu(t._0({visited:{ctor:"[]"},unvisited:Iu(r),params:e,value:g}))}),ju=r(function(t,r){return s(zu,t,_(Dt,1,r.hash),Fu(r.search))}),Uu=(r(function(t,r){return s(zu,t,r.pathname,Fu(r.search))}),r(function(t,r){var e=r;return{visited:e.visited,unvisited:e.unvisited,params:e.params,value:t(e.value)}})),Wu=n(function(t,r,e,n){return{visited:t,unvisited:r,params:e,value:n}}),qu=function(t){return{ctor:"Parser",_0:t}},Ju=function(t){return qu(function(r){var e=r,n=e.unvisited;if("[]"===n.ctor)return{ctor:"[]"};var o=n._0;return v.eq(o,t)?{ctor:"::",_0:l(Wu,{ctor:"::",_0:o,_1:e.visited},n._1,e.params,e.value),_1:{ctor:"[]"}}:{ctor:"[]"}})},Vu=r(function(t,r){return qu(function(t){var e=t,n=e.unvisited;if("[]"===n.ctor)return{ctor:"[]"};var o=n._0,c=r(o);return"Ok"===c.ctor?{ctor:"::",_0:l(Wu,{ctor:"::",_0:o,_1:e.visited},n._1,e.params,e.value(c._0)),_1:{ctor:"[]"}}:{ctor:"[]"}})}),Gu=_(Vu,"STRING",wt),Yu=(_(Vu,"NUMBER",Nt),Yu||{});Yu[""]=r(function(t,r){var e=t,n=r;return qu(function(t){return _(Z,n._0,e._0(t))})});var Qu=r(function(t,r){var e=r;return qu(function(r){var n=r;return _(V,Uu(n.value),e._0({visited:n.visited,unvisited:n.unvisited,params:n.params,value:t}))})}),Yu=(qu(function(t){return{ctor:"::",_0:t,_1:{ctor:"[]"}}}),Yu||{});Yu[""]=r(function(t,r){var e=t,n=r;return qu(function(t){return _(Z,n._0,e._0(t))})});var $u=function(t){return{ctor:"QueryParser",_0:t}},Ku=(r(function(t,r){return $u(function(e){var n=e,o=n.params;return{ctor:"::",_0:l(Wu,n.visited,n.unvisited,o,n.value(r(_(er,t,o)))),_1:{ctor:"[]"}}})}),function(){return _(Wr,function(t){var r=qn(t);return"Ok"===r.ctor?Jr(r._0):qr(r._0)},ne)}()),Xu=function(t){return function(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return function(s){return{mailbox:t,id:r,from:e,to:n,subject:o,date:c,size:u,seen:i,text:a,html:_,attachments:s}}}}}}}}}}}},Zu=e(function(t,r,e){return{id:t,fileName:r,contentType:e}}),ti=s(xe,"content-type",ne,s(xe,"filename",ne,s(xe,"id",ne,be(Zu)))),ri=s(xe,"attachments",te(ti),s(xe,"html",ne,s(xe,"text",ne,s(xe,"seen",ee,s(xe,"size",re,s(xe,"date",Ku,l(Te,"subject",ne,"",s(xe,"to",te(ne),l(Te,"from",ne,"",s(xe,"id",ne,s(xe,"mailbox",ne,be(Xu)))))))))))),ei=i(function(t,r,e,n,o,c,u,i){return{mailbox:t,id:r,from:e,to:n,subject:o,date:c,size:u,seen:i}}),ni=s(xe,"seen",ee,s(xe,"size",re,s(xe,"date",Ku,l(Te,"subject",ne,"",s(xe,"to",te(ne),l(Te,"from",ne,"",s(xe,"id",ne,s(xe,"mailbox",ne,be(ei))))))))),oi=_(Qr,function(t){return _(V,function(t){return _(kt,0,Nt(t))},_(jt,",",t))},ne),ci=function(t){return function(r){return function(e){return function(n){return function(o){return function(c){return function(u){return function(i){return function(a){return function(_){return function(s){return function(l){return function(f){return function(d){return function(p){return function(h){return function(v){return function(m){return function(g){return function(b){return function(y){return{sysMem:t,heapSize:r,heapUsed:e,heapObjects:n,goRoutines:o,webSockets:c,smtpConnOpen:u,smtpConnTotal:i,smtpConnHist:a,smtpReceivedTotal:_,smtpReceivedHist:s,smtpErrorsTotal:l,smtpErrorsHist:f,smtpWarnsTotal:d,smtpWarnsHist:p,retentionDeletesTotal:h,retentionDeletesHist:v,retainedCount:m,retainedCountHist:g,retainedSize:b,retainedSizeHist:y}}}}}}}}}}}}}}}}}}}}}},ui=s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"SizeHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"RetainedSize",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"RetainedHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"RetainedCurrent",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"DeletesHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"retention",_1:{ctor:"::",_0:"DeletesTotal",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"WarnsHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"WarnsTotal",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ErrorsHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ErrorsTotal",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ReceivedHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ReceivedTotal",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ConnectsHist",_1:{ctor:"[]"}}},oi,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ConnectsTotal",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"smtp",_1:{ctor:"::",_0:"ConnectsCurrent",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"http",_1:{ctor:"::",_0:"WebSocketConnectsCurrent",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"goroutines",_1:{ctor:"[]"}},re,s(we,{ctor:"::",_0:"memstats",_1:{ctor:"::",_0:"HeapObjects",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"memstats",_1:{ctor:"::",_0:"HeapAlloc",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"memstats",_1:{ctor:"::",_0:"HeapSys",_1:{ctor:"[]"}}},re,s(we,{ctor:"::",_0:"memstats",_1:{ctor:"::",_0:"Sys",_1:{ctor:"[]"}}},re,be(ci)))))))))))))))))))))),ii=r(function(t,e){var n=t;switch(n.ctor){case"None":return e;case"SetFlash":return v.update(e,{flash:n._0});case"ClearFlash":return v.update(e,{flash:""});case"DisableRouting":return v.update(e,{routing:!1});case"EnableRouting":return v.update(e,{routing:!0});default:var o=n._0;if(v.eq(q(e.persistent.recentMailboxes),A(o)))return e;var c=e.persistent,u=_(r(function(t,r){return{ctor:"::",_0:t,_1:r}}),o,_(nt,7,_(G,r(function(t,r){return!v.eq(t,r)})(o),e.persistent.recentMailboxes)));return v.update(e,{persistent:v.update(c,{recentMailboxes:u})})}}),ai=n(function(t,r,e,n){return{host:t,flash:r,routing:e,persistent:n}}),_i=r(function(t,r){return l(ai,t.host,"",!0,r)}),si=function(t){return{recentMailboxes:t}},li=l(Te,"recentMailboxes",te(ne),{ctor:"[]"},be(si)),fi=function(t){return _(kt,{recentMailboxes:{ctor:"[]"}},_(Vr,li,t))},di=function(t){return{ctor:"AddRecent",_0:t}},pi={ctor:"EnableRouting"},hi={ctor:"DisableRouting"},vi={ctor:"ClearFlash"},mi=function(t){return{ctor:"SetFlash",_0:t}},gi={ctor:"None"},bi=gi,yi=function(t){var r=t;switch(r.ctor){case"BadUrl":return _(b["++"],"Bad URL: ",r._0);case"Timeout":return"HTTP timeout";case"NetworkError":return"HTTP Network error";case"BadStatus":return _(b["++"],"Bad HTTP status: ",y(r._0.status.code));default:return _(b["++"],"Bad HTTP payload: ",_(b["++"],r._0,_(b["++"]," (",_(b["++"],y(r._1.status.code),")"))))}},ki=r(function(t,r){return Dc({method:"PATCH",headers:{ctor:"[]"},url:t,body:r,expect:Ec(function(t){return wt({ctor:"_Tuple0"})}),timeout:C,withCredentials:!1})}),Ti=function(t){return Dc({method:"DELETE",headers:{ctor:"[]"},url:t,body:Lc,expect:Ec(function(t){return wt({ctor:"_Tuple0"})}),timeout:C,withCredentials:!1})},wi=ae.outgoingPort("monitorCommand",function(t){return t}),xi=ae.incomingPort("monitorMessage",Ur),Mi=ae.incomingPort("onSessionChange",Ur),Si=ae.outgoingPort("storeSession",function(t){return{recentMailboxes:D.toArray(t.recentMailboxes).map(function(t){return t})}}),Ni=ae.outgoingPort("windowTitle",function(t){return t}),Bi=r(function(t,r){return _(Vo,{ctor:"::",_0:_c("page"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("greeting"),_1:{ctor:"::",_0:_(uc,"innerHTML",Hr(r.greeting)),_1:{ctor:"[]"}}},{ctor:"[]"}),_1:{ctor:"[]"}})}),Ri=function(t){return{greeting:t}},Ei=e(function(t,r,e){var n=r;return"Ok"===n._0.ctor?{ctor:"_Tuple3",_0:Ri(n._0._0),_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))}}),Ci=function(t){return{ctor:"GreetingResult",_0:t}},Ai=_(Ic,Ci,function(t){return Dc({method:"GET",headers:{ctor:"[]"},url:t,body:Lc,expect:Ac,timeout:C,withCredentials:!1})}("/serve/greeting")),Oi={ctor:"_Tuple2",_0:Ri(""),_1:se({ctor:"::",_0:Ni("Inbucket"),_1:{ctor:"::",_0:Ai,_1:{ctor:"[]"}}})},Li=function(t){var r=function(){switch(t){case 11:case 12:case 13:return"th";default:switch(_(b["%"],t,10)){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}}();return _(b["++"],y(t),r)},Di=r(function(t,r){var e=y(r),n=t-Wt(e),o=_(zt,"",_(V,function(t){return"0"},_(it,1,n)));return _(b["++"],o,e)}),Pi=function(t){return v.eq(t,0)?12:v.cmp(t,12)<1?t:t-12},Fi=function(t){return v.cmp(Fn(t),11)>0?"pm":"am"},Ii=function(t){return y(jn(t))},Hi=function(t){var r=qn(_(b["++"],y(jn(t)),"-01-01T00:00:00.000Z"));return"Ok"===r.ctor?r._0:t},zi=function(t){switch(In(t).ctor){case"Mon":return"Monday";case"Tue":return"Tuesday";case"Wed":return"Wednesday";case"Thu":return"Thursday";case"Fri":return"Friday";case"Sat":return"Saturday";default:return"Sunday"}},ji=Hn,Ui=function(t){return!!v.eq(_(b["%"],t,4),0)&&(!v.eq(_(b["%"],t,100),0)||!!v.eq(_(b["%"],t,400),0))},Wi=r(function(t,r){switch(r.ctor){case"Jan":return 31;case"Feb":return Ui(t)?29:28;case"Mar":return 31;case"Apr":return 30;case"May":return 31;case"Jun":return 30;case"Jul":case"Aug":return 31;case"Sep":return 30;case"Oct":return 31;case"Nov":return 30;default:return 31}}),qi=function(t){switch(zn(t).ctor){case"Jan":return"January";case"Feb":return"February";case"Mar":return"March";case"Apr":return"April";case"May":return"May";case"Jun":return"June";case"Jul":return"July";case"Aug":return"August";case"Sep":return"September";case"Oct":return"October";case"Nov":return"November";default:return"December"}},Ji={ctor:"::",_0:Jn,_1:{ctor:"::",_0:Kn,_1:{ctor:"::",_0:$n,_1:{ctor:"::",_0:Qn,_1:{ctor:"::",_0:Yn,_1:{ctor:"::",_0:Gn,_1:{ctor:"::",_0:Vn,_1:{ctor:"[]"}}}}}}}},Vi=function(t){return function(t){return t._0}(_(E,{ctor:"_Tuple2",_0:0,_1:Jn},q(_(G,function(r){var e=r;return v.eq(e._1,In(t))},_(at,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),Ji)))))},Gi={ctor:"::",_0:_o,_1:{ctor:"::",_0:ao,_1:{ctor:"::",_0:io,_1:{ctor:"::",_0:uo,_1:{ctor:"::",_0:co,_1:{ctor:"::",_0:oo,_1:{ctor:"::",_0:no,_1:{ctor:"::",_0:eo,_1:{ctor:"::",_0:ro,_1:{ctor:"::",_0:to,_1:{ctor:"::",_0:Zn,_1:{ctor:"::",_0:Xn,_1:{ctor:"[]"}}}}}}}}}}}}},Yi=function(t){return _(E,{ctor:"_Tuple2",_0:0,_1:_o},q(_(G,function(r){var e=r;return v.eq(e._1,zn(t))},_(at,r(function(t,r){return{ctor:"_Tuple2",_0:t,_1:r}}),Gi))))},Qi=function(t){return _(r(function(t,r){return t+r}),1,function(t){return t._0}(Yi(t)))},$i=function(t){return Qi(t)/4|0},Ki=function(t){var r=_(nt,Qi(t)-1,Gi);return j(_(V,Wi(jn(t)),r))+ji(t)},Xi=function(t){var r=Hi(t),e=Vi(r);return 1+((Ki(t)+e)/7|0)},Zi=r(function(t,e){var n=e;switch(n.ctor){case"MonthNumber":return y(Qi(t));case"MonthSuffix":return Li(Qi(t));case"MonthFixed":return _(Di,2,Qi(t));case"MonthNameFirst":return _(Ft,n._0,qi(t));case"MonthNameFull":return qi(t);case"QuarterNumber":return y(_(r(function(t,r){return t+r}),1,$i(t)));case"QuarterSuffix":return Li(_(r(function(t,r){return t+r}),1,$i(t)));case"DayOfMonthNumber":return y(ji(t));case"DayOfMonthSuffix":return Li(ji(t));case"DayOfMonthFixed":return _(Di,2,ji(t));case"DayOfYearNumber":return y(Ki(t));case"DayOfYearSuffix":return Li(Ki(t));case"DayOfYearFixed":return _(Di,3,Ki(t));case"DayOfWeekNumber":return y(Vi(t));case"DayOfWeekSuffix":return Li(Vi(t));case"DayOfWeekNameFirst":return _(Ft,n._0,zi(t));case"DayOfWeekNameFull":return zi(t);case"WeekOfYearNumber":return y(Xi(t));case"WeekOfYearSuffix":return Li(Xi(t));case"WeekOfYearFixed":return _(Di,2,Xi(t));case"YearNumberLastTwo":return _(Pt,2,Ii(t));case"YearNumber":return Ii(t);case"AmPmUppercase":return At(Fi(t));case"AmPmLowercase":return Ct(Fi(t));case"HourMilitaryNumber":return y(Fn(t));case"HourMilitaryFixed":return _(Di,2,Fn(t));case"HourNumber":return y(Pi(Fn(t)));case"HourFixed":return _(Di,2,Pi(Fn(t)));case"HourMilitaryFromOneNumber":return y(_(r(function(t,r){return t+r}),1,Fn(t)));case"HourMilitaryFromOneFixed":return _(Di,2,_(r(function(t,r){return t+r}),1,Fn(t)));case"MinuteNumber":return y(Pn(t));case"MinuteFixed":return _(Di,2,Pn(t));case"SecondNumber":return y(Dn(t));case"SecondFixed":return _(Di,2,Dn(t));default:return n._0}}),ta=r(function(t,r){return _(zt,"",_(V,Zi(r),t))}),ra=(e(function(t,r,e){return{month:t,day:r,year:e}}),function(t){return{ctor:"Text",_0:t}}),ea=ra,na={ctor:"SecondFixed"},oa=na,ca={ctor:"MinuteFixed"},ua=ca,ia={ctor:"HourNumber"},aa=ia,_a={ctor:"AmPmUppercase"},sa=_a,la={ctor:"YearNumber"},fa=la,da=function(t){return{ctor:"DayOfWeekNameFirst",_0:t}},pa=(da(2),da(3),{ctor:"DayOfMonthFixed"}),ha=pa,va={ctor:"DayOfMonthSuffix"},ma=va,ga={ctor:"MonthNameFull"},ba=ga,ya=function(t){return{ctor:"MonthNameFirst",_0:t}}(3),ka=function(t){return v.cmp(t,2)<0?"in a year":_(b["++"],"in ",_(b["++"],y(t)," years"))},Ta=function(t){return v.cmp(t,2)<0?"in a month":_(b["++"],"in ",_(b["++"],y(t)," months"))},wa=function(t){return v.cmp(t,2)<0?"tomorrow":_(b["++"],"in ",_(b["++"],y(t)," days"))},xa=function(t){return v.cmp(t,2)<0?"in an hour":_(b["++"],"in ",_(b["++"],y(t)," hours"))},Ma=function(t){return v.cmp(t,2)<0?"in a minute":_(b["++"],"in ",_(b["++"],y(t)," minutes"))},Sa=function(t){return v.cmp(t,30)<0?"in a few seconds":_(b["++"],"in ",_(b["++"],y(t)," seconds"))},Na=function(t){return v.cmp(t,2)<0?"last year":_(b["++"],y(t)," years ago")},Ba=function(t){return v.cmp(t,2)<0?"last month":_(b["++"],y(t)," months ago")},Ra=function(t){return v.cmp(t,2)<0?"yesterday":_(b["++"],y(t)," days ago")},Ea=function(t){return v.cmp(t,2)<0?"an hour ago":_(b["++"],y(t)," hours ago")},Ca=function(t){return v.cmp(t,2)<0?"a minute ago":_(b["++"],y(t)," minutes ago")},Aa=function(t){return v.cmp(t,30)<0?"just now":_(b["++"],y(t)," seconds ago")},Oa=r(function(t,r){return v.cmp(wn(t),1)<0?r.seconds(x(xn(t))):v.cmp(Tn(t),1)<0?r.minutes(x(wn(t))):v.cmp(Tn(t),24)<0?r.hours(x(Tn(t)/1)):v.cmp(Tn(t),720)<0?r.days(x(Tn(t)/24)):v.cmp(Tn(t),8760)<0?r.months(x(Tn(t)/24/12)):r.years(x(Tn(t)/24/365))}),La=function(t){return xn(Wn(t))},Da={someSecondsAgo:Aa,someMinutesAgo:Ca,someHoursAgo:Ea,someDaysAgo:Ra,someMonthsAgo:Ba,someYearsAgo:Na,inSomeSeconds:Sa,inSomeMinutes:Ma,inSomeHours:xa,inSomeDays:wa,inSomeMonths:Ta,inSomeYears:ka},Pa=c(function(t,r,e,n,o,c){return{seconds:t,minutes:r,hours:e,days:n,months:o,years:c}}),Fa=e(function(t,r,e){var n=La(e)-La(r),o=1e3*B(n);return _(Oa,o,v.cmp(n,0)<0?d(Pa,t.someSecondsAgo,t.someMinutesAgo,t.someHoursAgo,t.someDaysAgo,t.someMonthsAgo,t.someYearsAgo):d(Pa,t.inSomeSeconds,t.inSomeMinutes,t.inSomeHours,t.inSomeDays,t.inSomeMonths,t.inSomeYears))}),Ia=Fa(Da),Ha=function(t){var r=function(){var r=t;switch(r.ctor){case"Unknown":case"Home":return{ctor:"[]"};case"Mailbox":return{ctor:"::",_0:"m",_1:{ctor:"::",_0:r._0,_1:{ctor:"[]"}}};case"Message":return{ctor:"::",_0:"m",_1:{ctor:"::",_0:r._0,_1:{ctor:"::",_0:r._1,_1:{ctor:"[]"}}}};case"Monitor":return{ctor:"::",_0:"monitor",_1:{ctor:"[]"}};default:return{ctor:"::",_0:"status",_1:{ctor:"[]"}}}}();return _(b["++"],"/#/",_(zt,"/",r))},za=function(t){return dc(Ha(t))},ja=function(t){return ou(Ha(t))},Ua={ctor:"Status"},Wa={ctor:"Monitor"},qa=r(function(t,r){return{ctor:"Message",_0:t,_1:r}}),Ja=function(t){return{ctor:"Mailbox",_0:t}},Va={ctor:"Home"},Ga=function(t){return qu(function(r){return _(Z,function(t){return t._0(r)},t)})}({ctor:"::",_0:_(Qu,Va,Ju("")),_1:{ctor:"::",_0:_(Qu,qa,_(Yu[""],Ju("m"),_(Yu[""],Gu,Gu))),_1:{ctor:"::",_0:_(Qu,Ja,_(Yu[""],Ju("m"),Gu)),_1:{ctor:"::",_0:_(Qu,Wa,Ju("monitor")),_1:{ctor:"::",_0:_(Qu,Ua,Ju("status")),_1:{ctor:"[]"}}}}}}),Ya=function(t){return{ctor:"Unknown",_0:t}},Qa=function(t){if(Yt(t.hash))return Va;var r=_(ju,Ga,t);return"Nothing"===r.ctor?Ya(t.hash):r._0},$a=function(t){return v.eq(t.searchFilter,"")?t.headers:_(G,function(r){return _(Et,t.searchFilter,Ct(r.subject))||_(Et,t.searchFilter,Ct(r.from))},t.headers)},Ka=function(t){return Eo(_(ta,{ctor:"::",_0:ba,_1:{ctor:"::",_0:ea(" "),_1:{ctor:"::",_0:ma,_1:{ctor:"::",_0:ea(", "),_1:{ctor:"::",_0:fa,_1:{ctor:"::",_0:ea(" "),_1:{ctor:"::",_0:aa,_1:{ctor:"::",_0:ea(":"),_1:{ctor:"::",_0:ua,_1:{ctor:"::",_0:ea(":"),_1:{ctor:"::",_0:oa,_1:{ctor:"::",_0:ea(" "),_1:{ctor:"::",_0:sa,_1:{ctor:"[]"}}}}}}}}}}}}}},t))},Xa=r(function(t,r){return Eo(_(Ia,t.now,r))}),Za=r(function(t,r){var e=_(b["++"],t,_(b["++"],r.id,_(b["++"],"/",r.fileName)));return _(Zo,{ctor:"[]"},{ctor:"::",_0:_(tc,{ctor:"[]"},{ctor:"::",_0:_(Go,{ctor:"::",_0:dc(e),_1:{ctor:"::",_0:pc("_blank"),_1:{ctor:"[]"}}},{ctor:"::",_0:Eo(r.fileName),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:Eo(_(b["++"]," (",_(b["++"],r.contentType,") "))),_1:{ctor:"[]"}}}),_1:{ctor:"::",_0:_(tc,{ctor:"[]"},{ctor:"::",_0:_(Go,{ctor:"::",_0:dc(e),_1:{ctor:"::",_0:hc(r.fileName),_1:{ctor:"::",_0:ac("button"),_1:{ctor:"[]"}}}},{ctor:"::",_0:Eo("Download"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}})}),t_=function(t){var r=_(b["++"],"/serve/m/attach/",_(b["++"],t.mailbox,_(b["++"],"/",_(b["++"],t.id,"/"))));return U(t.attachments)?_(Vo,{ctor:"[]"},{ctor:"[]"}):_($o,{ctor:"::",_0:ac("attachments well"),_1:{ctor:"[]"}},_(V,Za(r),t.attachments))},r_=e(function(t,r,e){return{headers:t,selected:r,searchFilter:e}}),e_=r(function(t,r){return{message:t,markSeenAt:r}}),n_=o(function(t,r,e,n,o){return{mailboxName:t,state:r,bodyMode:e,searchInput:n,now:o}}),o_={ctor:"SafeHtmlBody"},c_={ctor:"TextBody"},u_=r(function(t,r){return{ctor:"ShowingList",_0:t,_1:r}}),i_=r(function(t,r){var e=v.cmp(Wt(r),1)>0?Ct(r):"",n=t.state;return"LoadingList"===n.ctor?{ctor:"_Tuple3",_0:t,_1:le,_2:bi}:{ctor:"_Tuple3",_0:v.update(t,{searchInput:r,state:_(u_,v.update(n._0,{searchFilter:e}),n._1)}),_1:le,_2:bi}}),a_=function(t){return{ctor:"LoadingList",_0:t}},__=function(t){return{ctor:"Transitioning",_0:t}},s_=function(t){return{ctor:"ShowingMessage",_0:t}},l_={ctor:"LoadingMessage"},f_=r(function(t,r){var e=t.state;if("LoadingList"===e.ctor)return t;var n=v.update(e._0,{selected:A(r)}),o=e._1;switch(o.ctor){case"NoMessage":case"LoadingMessage":return v.update(t,{state:_(u_,n,l_)});case"ShowingMessage":default:return v.update(t,{state:_(u_,n,__(o._0))})}}),d_={ctor:"NoMessage"},p_=function(t){return{ctor:"ViewMessage",_0:t}},h_=function(t){return{ctor:"Tick",_0:t}},v_=function(t){return{ctor:"SeenTick",_0:t}},m_=function(t){var r=function(){var r=t.state;return"ShowingList"===r.ctor&&"ShowingMessage"===r._1.ctor?r._1._0.message.seen?he:_(An,250,v_):he}();return pe({ctor:"::",_0:_(An,3e4,h_),_1:{ctor:"::",_0:r,_1:{ctor:"[]"}}})},g_=function(t){return{ctor:"SearchInput",_0:t}},b_=function(t){return{ctor:"PurgeResult",_0:t}},y_=function(t){var r=_(Ic,b_,Ti(_(b["++"],"/api/v1/mailbox/",t.mailboxName)));return"ShowingList"===t.state.ctor?{ctor:"_Tuple3",_0:v.update(t,{state:_(u_,s(r_,{ctor:"[]"},C,""),d_)}),_1:r,_2:bi}:{ctor:"_Tuple3",_0:t,_1:r,_2:bi}},k_={ctor:"Purge"},T_=function(t){return{ctor:"OpenedTime",_0:t}},w_=r(function(t,r){var e=v.eq(r.html,"")?c_:t.bodyMode,n=t.state;return"LoadingList"===n.ctor?{ctor:"_Tuple3",_0:t,_1:le,_2:bi}:{ctor:"_Tuple3",_0:v.update(t,{state:_(u_,v.update(n._0,{selected:A(r.id)}),s_(_(e_,r,C))),bodyMode:e}),_1:_(hn,T_,Mn),_2:bi}}),x_=function(t){return{ctor:"MessageBody",_0:t}},M_=r(function(t,e){var n=r(function(t,r){return _(Go,{ctor:"::",_0:vc({ctor:"::",_0:{ctor:"_Tuple2",_0:"active",_1:v.eq(e,t)},_1:{ctor:"[]"}}),_1:{ctor:"::",_0:xc(x_(t)),_1:{ctor:"::",_0:dc("javacript:void(0)"),_1:{ctor:"[]"}}}},{ctor:"::",_0:Eo(r),_1:{ctor:"[]"}})}),o=_(n,o_,"Safe HTML"),c=_(n,c_,"Plain Text"),u=v.eq(t.html,"")?{ctor:"::",_0:c,_1:{ctor:"[]"}}:{ctor:"::",_0:o,_1:{ctor:"::",_0:c,_1:{ctor:"[]"}}};return _(Vo,{ctor:"::",_0:ac("tab-panel"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Ao,{ctor:"::",_0:ac("tab-bar"),_1:{ctor:"[]"}},u),_1:{ctor:"::",_0:_(Oo,{ctor:"::",_0:ac("message-body"),_1:{ctor:"[]"}},{ctor:"::",_0:function(){return"SafeHtmlBody"===e.ctor?_(Vo,{ctor:"::",_0:_(uc,"innerHTML",Hr(t.html)),_1:{ctor:"[]"}},{ctor:"[]"}):_(Vo,{ctor:"::",_0:_(uc,"innerHTML",Hr(t.text)),_1:{ctor:"[]"}},{ctor:"[]"})}(),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}})}),S_=function(t){return{ctor:"MessageResult",_0:t}},N_=r(function(t,r){var e=_(b["++"],"/serve/m/",_(b["++"],t,_(b["++"],"/",r)));return _(Ic,S_,_(Pc,e,ri))}),B_=function(t){return{ctor:"MarkSeenResult",_0:t}},R_=r(function(t,e){var n=t.state;if("ShowingList"===n.ctor&&"ShowingMessage"===n._1.ctor){var o=r(function(t,r){return v.update(r,{headers:_(V,t,r.headers)})}),c=_(b["++"],"/api/v1/mailbox/",_(b["++"],e.mailbox,_(b["++"],"/",e.id))),u=_(Ic,B_,_(ki,c,Oc(Fr({ctor:"::",_0:{ctor:"_Tuple2",_0:"seen",_1:Ir(!0)},_1:{ctor:"[]"}})))),i=function(t){return v.eq(t.id,e.id)?v.update(t,{seen:!0}):t};return{ctor:"_Tuple3",_0:v.update(t,{state:_(u_,_(o,i,n._0),s_(v.update(n._1._0,{message:v.update(e,{seen:!0}),markSeenAt:C})))}),_1:u,_2:gi}}return{ctor:"_Tuple3",_0:t,_1:le,_2:bi}}),E_=function(t){return{ctor:"ListResult",_0:t}},C_=function(t){var r=_(b["++"],"/api/v1/mailbox/",t);return _(Ic,E_,_(Pc,r,te(ni)))},A_=function(t){return se({ctor:"::",_0:Ni(_(b["++"],t," - Inbucket")),_1:{ctor:"::",_0:_(hn,h_,Mn),_1:{ctor:"::",_0:C_(t),_1:{ctor:"[]"}}}})},O_=r(function(t,r){return{ctor:"_Tuple2",_0:f(n_,t,a_(r),o_,"",Un(0)),_1:A_(t)}}),L_=function(t){return{ctor:"DeleteMessageResult",_0:t}},D_=r(function(t,e){var n=r(function(t,r){return v.update(r,{headers:_(G,t,r.headers)})}),o=_(b["++"],"/api/v1/mailbox/",_(b["++"],e.mailbox,_(b["++"],"/",e.id))),c=_(Ic,L_,Ti(o)),u=t.state;return"ShowingList"===u.ctor?{ctor:"_Tuple3",_0:v.update(t,{state:_(u_,_(n,function(t){return!v.eq(t.id,e.id)},u._0),d_)}),_1:c,_2:bi}:{ctor:"_Tuple3",_0:t,_1:c,_2:bi}}),P_=e(function(t,r,e){t:for(;;){var n=r;switch(n.ctor){case"ClickMessage":var o=n._0;return{ctor:"_Tuple3",_0:_(f_,e,o),_1:se({ctor:"::",_0:ja(_(qa,e.mailboxName,o)),_1:{ctor:"::",_0:_(N_,e.mailboxName,o),_1:{ctor:"[]"}}}),_2:hi};case"ViewMessage":var c=n._0;return{ctor:"_Tuple3",_0:_(f_,e,c),_1:_(N_,e.mailboxName,c),_2:di(e.mailboxName)};case"DeleteMessage":return _(D_,e,n._0);case"DeleteMessageResult":return"Ok"===n._0.ctor?{ctor:"_Tuple3",_0:e,_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))};case"ListResult":if("Ok"===n._0.ctor){var u=e.state;if("LoadingList"===u.ctor){var i=v.update(e,{state:_(u_,s(r_,n._0._0,C,""),d_)}),a=u._0;if("Just"===a.ctor){var l=t,f=p_(a._0),d=i;t=l,r=f,e=d;continue t}return{ctor:"_Tuple3",_0:i,_1:le,_2:di(e.mailboxName)}}return{ctor:"_Tuple3",_0:e,_1:le,_2:bi}}return{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))};case"MarkSeenResult":return"Ok"===n._0.ctor?{ctor:"_Tuple3",_0:e,_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))};case"MessageResult":return"Ok"===n._0.ctor?_(w_,e,n._0._0):{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))};case"MessageBody":return{ctor:"_Tuple3",_0:v.update(e,{bodyMode:n._0}),_1:le,_2:bi};case"SearchInput":return _(i_,e,n._0);case"OpenedTime":var p=e.state;if("ShowingList"===p.ctor&&"ShowingMessage"===p._1.ctor){var h=p._1._0;return h.message.seen?{ctor:"_Tuple3",_0:e,_1:le,_2:bi}:{ctor:"_Tuple3",_0:v.update(e,{state:_(u_,p._0,s_(v.update(h,{markSeenAt:A(n._0+1500)})))}),_1:le,_2:bi}}return{ctor:"_Tuple3",_0:e,_1:le,_2:bi};case"Purge":return y_(e);case"PurgeResult":return"Ok"===n._0.ctor?{ctor:"_Tuple3",_0:e,_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))};case"SeenTick":var m=e.state;if("ShowingList"===m.ctor&&"ShowingMessage"===m._1.ctor){var g=m._1._0.markSeenAt;return"Just"===g.ctor&&v.cmp(n._0,g._0)>-1?_(R_,e,m._1._0.message):{ctor:"_Tuple3",_0:e,_1:le,_2:bi}}return{ctor:"_Tuple3",_0:e,_1:le,_2:bi};default:return{ctor:"_Tuple3",_0:v.update(e,{now:Un(n._0)}),_1:le,_2:bi}}}}),F_=function(t){return{ctor:"DeleteMessage",_0:t}},I_=r(function(t,r){return _(Vo,{ctor:"[]"},{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("button-bar"),_1:{ctor:"[]"}},{ctor:"::",_0:_(oc,{ctor:"::",_0:ac("danger"),_1:{ctor:"::",_0:xc(F_(t)),_1:{ctor:"[]"}}},{ctor:"::",_0:Eo("Delete"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Go,{ctor:"::",_0:dc(function(t){return _(b["++"],"/serve/m/",_(b["++"],t.mailbox,_(b["++"],"/",_(b["++"],t.id,"/source"))))}(t)),_1:{ctor:"::",_0:pc("_blank"),_1:{ctor:"[]"}}},{ctor:"::",_0:_(oc,{ctor:"[]"},{ctor:"::",_0:Eo("Source"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}),_1:{ctor:"::",_0:_(Wo,{ctor:"::",_0:_c("message-header"),_1:{ctor:"[]"}},{ctor:"::",_0:_(qo,{ctor:"[]"},{ctor:"::",_0:Eo("From:"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Jo,{ctor:"[]"},{ctor:"::",_0:Eo(t.from),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(qo,{ctor:"[]"},{ctor:"::",_0:Eo("To:"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Jo,{ctor:"[]"},_(V,Eo,t.to)),_1:{ctor:"::",_0:_(qo,{ctor:"[]"},{ctor:"::",_0:Eo("Date:"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Jo,{ctor:"[]"},{ctor:"::",_0:Ka(t.date),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(qo,{ctor:"[]"},{ctor:"::",_0:Eo("Subject:"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Jo,{ctor:"[]"},{ctor:"::",_0:Eo(t.subject),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}}}}}}}),_1:{ctor:"::",_0:_(M_,t,r),_1:{ctor:"::",_0:t_(t),_1:{ctor:"[]"}}}}})}),H_=function(t){return{ctor:"ClickMessage",_0:t}},z_=e(function(t,r,e){return _(Vo,{ctor:"::",_0:vc({ctor:"::",_0:{ctor:"_Tuple2",_0:"message-list-entry",_1:!0},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"selected",_1:v.eq(r,A(e.id))},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"unseen",_1:!e.seen},_1:{ctor:"[]"}}}}),_1:{ctor:"::",_0:xc(H_(e.id)),_1:{ctor:"[]"}}},{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("subject"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(e.subject),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("from"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(e.from),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("date"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Xa,t,e.date),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}})}),j_=r(function(t,r){return _(Lo,{ctor:"::",_0:_c("message-list"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Vo,{ctor:"[]"},{ctor:"::",_0:_(nc,{ctor:"::",_0:sc("search"),_1:{ctor:"::",_0:fc("search"),_1:{ctor:"::",_0:wc(g_),_1:{ctor:"::",_0:lc(r.searchInput),_1:{ctor:"[]"}}}}},{ctor:"[]"}),_1:{ctor:"::",_0:_(oc,{ctor:"::",_0:xc(k_),_1:{ctor:"[]"}},{ctor:"::",_0:Eo("Purge"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}),_1:{ctor:"::",_0:function(){var t=r.state;if("LoadingList"===t.ctor)return _(Vo,{ctor:"[]"},{ctor:"[]"});var e=t._0;return _(Vo,{ctor:"[]"},_(V,_(z_,r,e.selected),$($a(e))))}(),_1:{ctor:"[]"}}})}),U_=r(function(t,r){return _(Vo,{ctor:"::",_0:_c("page"),_1:{ctor:"::",_0:ac("mailbox"),_1:{ctor:"[]"}}},{ctor:"::",_0:_(j_,t,r),_1:{ctor:"::",_0:_(Ho,{ctor:"::",_0:_c("message"),_1:{ctor:"[]"}},{ctor:"::",_0:function(){var t=r.state;t:do{if("ShowingList"!==t.ctor)break t;switch(t._1.ctor){case"NoMessage":return Eo(_(b["++"],"Select a message on the left,"," or enter a different username into the box on upper right."));case"ShowingMessage":case"Transitioning":return _(I_,t._1._0.message,r.bodyMode);default:break t}}while(!1);return Eo("")}(),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}})}),W_=function(t){return Eo(_(ta,{ctor:"::",_0:ha,_1:{ctor:"::",_0:ea("-"),_1:{ctor:"::",_0:ya,_1:{ctor:"::",_0:ea(" "),_1:{ctor:"::",_0:aa,_1:{ctor:"::",_0:ea(":"),_1:{ctor:"::",_0:ua,_1:{ctor:"::",_0:ea(" "),_1:{ctor:"::",_0:sa,_1:{ctor:"[]"}}}}}}}}}},t))},q_=e(function(t,r,e){var n=r;if("MonitorResult"===n.ctor)return"Ok"===n._0.ctor?"Connected"===n._0._0.ctor?{ctor:"_Tuple3",_0:v.update(e,{connected:n._0._0._0}),_1:le,_2:bi}:{ctor:"_Tuple3",_0:v.update(e,{messages:{ctor:"::",_0:n._0._0._0,_1:e.messages}}),_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(n._0._0)};var o=n._0;return{ctor:"_Tuple3",_0:e,_1:ja(_(qa,o.mailbox,o.id)),_2:bi}}),J_=r(function(t,r){return{connected:t,messages:r}}),V_={ctor:"_Tuple2",_0:_(J_,!1,{ctor:"[]"}),_1:se({ctor:"::",_0:Ni("Inbucket Monitor"),_1:{ctor:"::",_0:wi(!0),_1:{ctor:"[]"}}})},G_=function(t){return{ctor:"OpenMessage",_0:t}},Y_=function(t){return _(Zo,{ctor:"::",_0:xc(G_(t)),_1:{ctor:"[]"}},{ctor:"::",_0:_(tc,{ctor:"[]"},{ctor:"::",_0:W_(t.date),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(tc,{ctor:"::",_0:ac("desktop"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(t.from),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(tc,{ctor:"[]"},{ctor:"::",_0:Eo(t.mailbox),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(tc,{ctor:"[]"},{ctor:"::",_0:Eo(t.subject),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}}})},Q_=r(function(t,r){return _(Vo,{ctor:"::",_0:_c("page"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Do,{ctor:"[]"},{ctor:"::",_0:Eo("Monitor"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(zo,{ctor:"[]"},{ctor:"::",_0:Eo("Messages will be listed here shortly after delivery. "),_1:{ctor:"::",_0:_(Yo,{ctor:"[]"},{ctor:"::",_0:Eo(r.connected?"Connected.":"Disconnected!"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}),_1:{ctor:"::",_0:_($o,{ctor:"::",_0:_c("monitor"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Xo,{ctor:"[]"},{ctor:"::",_0:_(rc,{ctor:"[]"},{ctor:"::",_0:Eo("Date"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(rc,{ctor:"::",_0:ac("desktop"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo("From"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(rc,{ctor:"[]"},{ctor:"::",_0:Eo("Mailbox"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(rc,{ctor:"[]"},{ctor:"::",_0:Eo("Subject"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}}}),_1:{ctor:"::",_0:_(Ko,{ctor:"[]"},_(V,Y_,r.messages)),_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}}})}),$_=function(t){return{ctor:"MonitorResult",_0:t}},K_=function(t){return{ctor:"Message",_0:t}},X_=function(t){return{ctor:"Connected",_0:t}},Z_=function(t){var r=xi(Vr($r({ctor:"::",_0:_(Qr,K_,ni),_1:{ctor:"::",_0:_(Qr,X_,ee),_1:{ctor:"[]"}}})));return _(ve,$_,r)},ts=ts||{};ts["*="]=r(function(t,r){return t(_(zt," ",_(V,y,r)))});var ts=ts||{};ts[":="]=r(function(t,r){return t(y(r))});var rs=r(function(t,r){var e=t;return _(V,function(t){var r=t;return{ctor:"_Tuple2",_0:e._0(r._0),_1:e._1(r._1)}},r)}),es=function(t){return!0===T(t)?0:t},ns=r(function(t,r){var e=t,n=r,o=n._1._1,c=n._0._0;return{ctor:"_Tuple2",_0:function(t){return es((t-c)*(e._0/(n._1._0-c)))},_1:function(t){return es((o-t)*(e._1/(o-n._0._1)))}}}),os=function(t){var r=t,e=r._1._1,n=r._0._1,o=r._1._0,c=r._0._0;return v.eq(n,e)?{ctor:"_Tuple2",_0:{ctor:"_Tuple2",_0:c,_1:_(S,0,n)},_1:{ctor:"_Tuple2",_0:o,_1:e}}:{ctor:"_Tuple2",_0:{ctor:"_Tuple2",_0:c,_1:n},_1:{ctor:"_Tuple2",_0:o,_1:e}}},cs=function(t){var e=_(Z,function(t){return t},t),n=_(E,{ctor:"_Tuple2",_0:0,_1:0},q(e));return os(s(I,r(function(t,r){var e=t,n=e._1,o=e._0,c=r;return{ctor:"_Tuple2",_0:{ctor:"_Tuple2",_0:_(S,c._0._0,o),_1:_(S,c._0._1,n)},_1:{ctor:"_Tuple2",_0:_(M,c._1._0,o),_1:_(M,c._1._1,n)}}}),{ctor:"_Tuple2",_0:n,_1:n},e))},us=r(function(t,r){var e=t,n=v.eq(r,"")?"M":"L";return _(b["++"],r,_(b["++"],n,_(b["++"],y(e._0),_(b["++"]," ",y(e._1)))))}),is=r(function(t,r){return s(I,us,"",_(rs,t,r))}),as=o(function(t,r,e,n,o){var c=ft(t);return _(Z,function(t){var r=t,n=_(_t,r._0,c);return"Nothing"===n.ctor?{ctor:"[]"}:{ctor:"::",_0:_(Tu,_(b["++"],{ctor:"::",_0:_(ts[":="],Nu,r._1._0),_1:{ctor:"::",_0:_(ts[":="],Su,r._1._1),_1:{ctor:"[]"}}},_(b["++"],e,n._0._1)),{ctor:"::",_0:pu(n._0._2),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}},st(ft(_(rs,o,r))))}),_s=o(function(t,r,e,n,o){var c=n,u=c._0._0,i=o,a=i._1;return _(V,function(r){var n=r,o=n._1,s=n._0,l=v.cmp(o,0)<0?{ctor:"_Tuple2",_0:a(o)-(a(o)-a(0)),_1:a(o)-a(0)}:{ctor:"_Tuple2",_0:a(o),_1:a(0)-a(o)},f=l._0,d=l._1,p=t*((s-u)/(c._1._0-u));return _(ku,_(b["++"],{ctor:"::",_0:_(ts[":="],Nu,i._0(s)-p),_1:{ctor:"::",_0:_(ts[":="],Su,f),_1:{ctor:"::",_0:_(ts[":="],Bu,t),_1:{ctor:"::",_0:_(ts[":="],Au,d),_1:{ctor:"[]"}}}}},e),{ctor:"[]"})},r)}),ss=n(function(t,r,e,n){return _(V,function(t){var e=t;return _(bu,_(b["++"],{ctor:"::",_0:_(ts[":="],Du,e._0),_1:{ctor:"::",_0:_(ts[":="],Lu,e._1),_1:{ctor:"::",_0:_(ts[":="],Cu,2),_1:{ctor:"[]"}}}},r),{ctor:"[]"})},_(rs,n,t))}),ls=n(function(t,r,e,n){return{ctor:"::",_0:_(yu,_(b["++"],{ctor:"::",_0:Mu("none"),_1:{ctor:"::",_0:wu("#000"),_1:{ctor:"::",_0:_(ts[":="],xu,1),_1:{ctor:"::",_0:Ou(_(is,n,t)),_1:{ctor:"[]"}}}}},r),{ctor:"[]"}),_1:{ctor:"[]"}}}),fs=n(function(t,r,e,n){var o=e,c=o._0._0,u=o._0._1,i=o._1._0,a=(o._1._1,{ctor:"_Tuple2",_0:c,_1:u}),s={ctor:"_Tuple2",_0:i,_1:u},f=_(b["++"],{ctor:"::",_0:a,_1:{ctor:"[]"}},_(b["++"],t,{ctor:"::",_0:s,_1:{ctor:"[]"}}));return l(ls,f,r,e,n)}),ds=n(function(t,r,e,n){return{ctor:"[]"}}),ps=n(function(t,r,e,n){var o=e,c=o._0._0,u=(o._0._1,o._1._0);o._1._1;return l(ls,{ctor:"::",_0:{ctor:"_Tuple2",_0:c,_1:0},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:u,_1:0},_1:{ctor:"[]"}}},r,e,n)}),hs=r(function(t,r){var e=t,n=e._0,o=e._3,c=e._2,u=e._1;return _(mu,{ctor:"::",_0:_(ts[":="],Bu,n+2*c),_1:{ctor:"::",_0:_(ts[":="],Au,u+2*o),_1:{ctor:"::",_0:_(ts["*="],Ru,{ctor:"::",_0:0,_1:{ctor:"::",_0:0,_1:{ctor:"::",_0:n+2*c,_1:{ctor:"::",_0:u+2*o,_1:{ctor:"[]"}}}}}),_1:{ctor:"[]"}}}},{ctor:"::",_0:_(gu,{ctor:"::",_0:Eu(_(b["++"],"translate",y({ctor:"_Tuple2",_0:c,_1:o}))),_1:{ctor:"[]"}},r),_1:{ctor:"[]"}})}),vs=function(t){var r=t;switch(r.ctor){case"Bar":return{ctor:"_Tuple4",_0:_s(r._0),_1:r._1,_2:{ctor:"[]"},_3:!1};case"Dot":return{ctor:"_Tuple4",_0:ss,_1:r._0,_2:{ctor:"[]"},_3:!1};case"Line":return{ctor:"_Tuple4",_0:ls,_1:r._0,_2:{ctor:"[]"},_3:!1};case"Area":return{ctor:"_Tuple4",_0:fs,_1:r._0,_2:{ctor:"[]"},_3:!1};case"Domain":return{ctor:"_Tuple4",_0:ds,_1:r._0,_2:{ctor:"[]"},_3:!1};case"Label":var e=r._0,n=_(V,function(t){return t._0},e);return{ctor:"_Tuple4",_0:as(e),_1:n,_2:{ctor:"[]"},_3:!1};case"ZeroLine":return{ctor:"_Tuple4",_0:ps,_1:{ctor:"[]"},_2:{ctor:"[]"},_3:!1};case"Independent":var o=vs(r._0),c=o._0,u=o._1;return{ctor:"_Tuple4",_0:c,_1:u,_2:o._2,_3:!0};default:var i=vs(r._1),c=i._0,u=i._1,a=i._3;return{ctor:"_Tuple4",_0:c,_1:u,_2:r._0,_3:a}}},ms=r(function(t,r){var e=_(V,vs,r),n=cs(_(Z,function(t){return{ctor:"::",_0:t._1,_1:{ctor:"[]"}}},_(G,function(t){var r=t;return!v.eq(r._3,!0)},e))),o=_(ns,t,n);return _(hs,t,_(Z,function(r){var e=r,c=e._1,u=v.eq(e._3,!0)?{ctor:"_Tuple2",_0:cs({ctor:"::",_0:c,_1:{ctor:"[]"}}),_1:_(ns,t,cs({ctor:"::",_0:c,_1:{ctor:"[]"}}))}:{ctor:"_Tuple2",_0:n,_1:o},i=u._0,a=u._1;return l(e._0,c,e._2,i,a)},e))}),gs=r(function(t,r){return{ctor:"Style",_0:t,_1:r}}),bs={ctor:"ZeroLine"},ys=function(t){return{ctor:"Domain",_0:t}},ks=function(t){return{ctor:"Area",_0:t}},Ts=r(function(t,r){return{ctor:"Bar",_0:t,_1:r}}),ws=function(t){var r=function(t){return v.cmp(Wt(t),3)<1?t:_(b["++"],r(s(It,0,-3,t)),_(b["++"],",",_(Pt,3,t)))};return r(y(t))},xs=function(t){var r=60-z(t);return v.cmp(r,0)>0?_(b["++"],_(ct,r,0),t):t},Ms=function(t){var e=_(E,{ctor:"[]"},W(t));return s(P,r(function(t,r){return t-r}),e,t)},Ss=r(function(t,r){return _(Vo,{ctor:"::",_0:ac("metric-panel"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Po,{ctor:"[]"},{ctor:"::",_0:Eo(t),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("metrics"),_1:{ctor:"[]"}},r),_1:{ctor:"[]"}}})}),Ns=gs({ctor:"::",_0:wu("rgba(0,0,0,0.2)"),_1:{ctor:"::",_0:xu("1.0"),_1:{ctor:"[]"}}}),Bs=gs({ctor:"::",_0:Mu("rgba(50,200,50,0.7)"),_1:{ctor:"[]"}}),Rs=gs({ctor:"::",_0:Mu("rgba(50,100,255,0.3)"),_1:{ctor:"::",_0:wu("rgba(50,100,255,1.0)"),_1:{ctor:"::",_0:xu("1.0"),_1:{ctor:"[]"}}}}),Es={ctor:"_Tuple4",_0:180,_1:16,_2:0,_3:0},Cs=function(t){var r=function(){var r=q(t);return"Nothing"===r.ctor?0:ie(r._0)}();return _(ms,Es,{ctor:"::",_0:Bs(_(Ts,2.5,t)),_1:{ctor:"::",_0:Ns(bs),_1:{ctor:"::",_0:ys({ctor:"::",_0:{ctor:"_Tuple2",_0:r,_1:0},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:r,_1:1},_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}}})},As=function(t){var r=function(){var r=q(t);return"Nothing"===r.ctor?0:ie(r._0)}();return _(ms,Es,{ctor:"::",_0:Rs(ks(t)),_1:{ctor:"::",_0:Ns(bs),_1:{ctor:"::",_0:ys({ctor:"::",_0:{ctor:"_Tuple2",_0:r,_1:0},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:r,_1:1},_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}}})},Os=(_(Vo,{ctor:"[]"},{ctor:"[]"}),n(function(t,r,e,n){return _(Vo,{ctor:"::",_0:ac("metric"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("label"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(t),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("value"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(r(e)),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("graph"),_1:{ctor:"[]"}},{ctor:"::",_0:n,_1:{ctor:"::",_0:Eo("(10min)"),_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}}})}),function(t){return _(Vo,{ctor:"::",_0:ac("metric"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("label"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(t.label),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("value"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(t.formatter(t.value)),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("graph"),_1:{ctor:"[]"}},{ctor:"::",_0:t.graph(t.history),_1:{ctor:"::",_0:Eo(_(b["++"],"(",_(b["++"],y(t.minutes),"min)"))),_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}}})}),Ls=r(function(t,r){return _(Vo,{ctor:"::",_0:_c("page"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Do,{ctor:"[]"},{ctor:"::",_0:Eo("Status"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:function(){return"Nothing"===r.metrics.ctor?_(Vo,{ctor:"[]"},{ctor:"::",_0:Eo("Loading metrics..."),_1:{ctor:"[]"}}):_(Vo,{ctor:"[]"},{ctor:"::",_0:_(Ss,"General Metrics",{ctor:"::",_0:Os(r.sysMem),_1:{ctor:"::",_0:Os(r.heapSize),_1:{ctor:"::",_0:Os(r.heapUsed),_1:{ctor:"::",_0:Os(r.heapObjects),_1:{ctor:"::",_0:Os(r.goRoutines),_1:{ctor:"::",_0:Os(r.webSockets),_1:{ctor:"[]"}}}}}}}),_1:{ctor:"::",_0:_(Ss,"SMTP Metrics",{ctor:"::",_0:Os(r.smtpConnOpen),_1:{ctor:"::",_0:Os(r.smtpConnTotal),_1:{ctor:"::",_0:Os(r.smtpReceivedTotal),_1:{ctor:"::",_0:Os(r.smtpErrorsTotal),_1:{ctor:"::",_0:Os(r.smtpWarnsTotal),_1:{ctor:"[]"}}}}}}),_1:{ctor:"::",_0:_(Ss,"Storage Metrics",{ctor:"::",_0:Os(r.retentionDeletesTotal),_1:{ctor:"::",_0:Os(r.retainedCount),_1:{ctor:"::",_0:Os(r.retainedSize),_1:{ctor:"[]"}}}}),_1:{ctor:"[]"}}}})}(),_1:{ctor:"[]"}}})}),Ds=e(function(t,e,n){return v.update(t,{value:e,history:_(at,r(function(t,r){return{ctor:"_Tuple2",_0:w(t),_1:w(r)}}),Ms(xs(n)))})}),Ps=e(function(t,e,n){return v.update(t,{value:e,history:_(at,r(function(t,r){return{ctor:"_Tuple2",_0:w(t),_1:w(r)}}),xs(n))})}),Fs=e(function(t,r,e){return v.update(t,{value:e,history:_(b["++"],_(E,{ctor:"[]"},W(t.history)),{ctor:"::",_0:{ctor:"_Tuple2",_0:r,_1:w(e)},_1:{ctor:"[]"}})})}),Is=r(function(t,r){var e=r.xCounter;return v.update(r,{metrics:A(t),xCounter:e+1,sysMem:s(Fs,r.sysMem,e,t.sysMem),heapSize:s(Fs,r.heapSize,e,t.heapSize),heapUsed:s(Fs,r.heapUsed,e,t.heapUsed),heapObjects:s(Fs,r.heapObjects,e,t.heapObjects),goRoutines:s(Fs,r.goRoutines,e,t.goRoutines),webSockets:s(Fs,r.webSockets,e,t.webSockets),smtpConnOpen:s(Fs,r.smtpConnOpen,e,t.smtpConnOpen),smtpConnTotal:s(Ds,r.smtpConnTotal,t.smtpConnTotal,t.smtpConnHist),smtpReceivedTotal:s(Ds,r.smtpReceivedTotal,t.smtpReceivedTotal,t.smtpReceivedHist),smtpErrorsTotal:s(Ds,r.smtpErrorsTotal,t.smtpErrorsTotal,t.smtpErrorsHist),smtpWarnsTotal:s(Ds,r.smtpWarnsTotal,t.smtpWarnsTotal,t.smtpWarnsHist),retentionDeletesTotal:s(Ds,r.retentionDeletesTotal,t.retentionDeletesTotal,t.retentionDeletesHist),retainedCount:s(Ps,r.retainedCount,t.retainedCount,t.retainedCountHist),retainedSize:s(Ps,r.retainedSize,t.retainedSize,t.retainedSizeHist)})}),Hs=_(V,function(t){return{ctor:"_Tuple2",_0:w(t),_1:0}},_(it,0,59)),zs=c(function(t,r,e,n,o,c){return{label:t,value:r,formatter:e,graph:n,history:o,minutes:c}}),js={metrics:C,xCounter:60,sysMem:d(zs,"System Memory",0,Ze,As,Hs,10),heapSize:d(zs,"Heap Size",0,Ze,As,Hs,10),heapUsed:d(zs,"Heap Used",0,Ze,As,Hs,10),heapObjects:d(zs,"Heap # Objects",0,ws,As,Hs,10),goRoutines:d(zs,"Goroutines",0,ws,As,Hs,10),webSockets:d(zs,"Open WebSockets",0,ws,As,Hs,10),smtpConnOpen:d(zs,"Open Connections",0,ws,As,Hs,10),smtpConnTotal:d(zs,"Total Connections",0,ws,Cs,Hs,60),smtpReceivedTotal:d(zs,"Messages Received",0,ws,Cs,Hs,60),smtpErrorsTotal:d(zs,"Messages Errors",0,ws,Cs,Hs,60),smtpWarnsTotal:d(zs,"Messages Warns",0,ws,Cs,Hs,60),retentionDeletesTotal:d(zs,"Retention Deletes",0,ws,Cs,Hs,60),retainedCount:d(zs,"Stored Messages",0,ws,As,Hs,60),retainedSize:d(zs,"Store Size",0,Ze,As,Hs,60)},Us=function(t){return{ctor:"Tick",_0:t}},Ws=function(t){return _(An,1e4,Us)},qs=function(t){return{ctor:"NewMetrics",_0:t}},Js=_(Ic,qs,_(Pc,"/debug/vars",ui)),Vs=Js,Gs=e(function(t,r,e){var n=r;return"NewMetrics"===n.ctor?"Ok"===n._0.ctor?{ctor:"_Tuple3",_0:_(Is,n._0._0,e),_1:le,_2:bi}:{ctor:"_Tuple3",_0:e,_1:le,_2:mi(yi(n._0._0))}:{ctor:"_Tuple3",_0:e,_1:Js,_2:vi}}),Ys=r(function(t,r){var e={ctor:"_Tuple2",_0:t,_1:r};t:do{if("_Tuple2"!==e.ctor)break t;switch(e._0.ctor){case"Monitor":if("Monitor"===e._1.ctor)return!0;break t;case"Status":if("Status"===e._1.ctor)return!0;break t;default:break t}}while(!1);return!1}),Qs=e(function(t,r,e){return _(Uo,{ctor:"::",_0:vc({ctor:"::",_0:{ctor:"_Tuple2",_0:"navbar-active",_1:_(Ys,t,r)},_1:{ctor:"[]"}}),_1:{ctor:"[]"}},{ctor:"::",_0:_(Go,{ctor:"::",_0:za(r),_1:{ctor:"[]"}},e),_1:{ctor:"[]"}})}),$s=(o(function(t,r,e,n,o){return{viewMailbox:t,mailboxOnInput:r,mailboxValue:e,recentOptions:n,recentActive:o}}),{ctor:"Status"}),Ks={ctor:"Monitor"},Xs={ctor:"Mailbox"},Zs=r(function(t,r){var e=v.eq(t,Xs),n=e?r.recentActive:"Recent Mailboxes",o=e?_(E,{ctor:"[]"},W(r.recentOptions)):r.recentOptions,c=function(t){return _(Go,{ctor:"::",_0:za(Ja(t)),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(t),_1:{ctor:"[]"}})};return _(Uo,{ctor:"::",_0:_c("navbar-recent"),_1:{ctor:"::",_0:vc({ctor:"::",_0:{ctor:"_Tuple2",_0:"navbar-dropdown",_1:!0},_1:{ctor:"::",_0:{ctor:"_Tuple2",_0:"navbar-active",_1:e},_1:{ctor:"[]"}}}),_1:{ctor:"[]"}}},{ctor:"::",_0:_(Qo,{ctor:"[]"},{ctor:"::",_0:Eo(n),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:ac("navbar-dropdown-content"),_1:{ctor:"[]"}},_(V,c,o)),_1:{ctor:"[]"}}})}),tl=n(function(t,r,e,n){return _(Vo,{ctor:"::",_0:_c("app"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Fo,{ctor:"[]"},{ctor:"::",_0:_(jo,{ctor:"::",_0:ac("navbar"),_1:{ctor:"::",_0:_(cc,"role","navigation"),_1:{ctor:"[]"}}},{ctor:"::",_0:_(Uo,{ctor:"::",_0:_c("navbar-brand"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Go,{ctor:"::",_0:za(Va),_1:{ctor:"[]"}},{ctor:"::",_0:Eo("@ inbucket"),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:s(Qs,e,Wa,{ctor:"::",_0:Eo("Monitor"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:s(Qs,e,Ua,{ctor:"::",_0:Eo("Status"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:_(Zs,e,t),_1:{ctor:"::",_0:_(Uo,{ctor:"::",_0:_c("navbar-mailbox"),_1:{ctor:"[]"}},{ctor:"::",_0:_(ec,{ctor:"::",_0:Tc(t.viewMailbox(t.mailboxValue)),_1:{ctor:"[]"}},{ctor:"::",_0:_(nc,{ctor:"::",_0:sc("text"),_1:{ctor:"::",_0:fc("mailbox"),_1:{ctor:"::",_0:lc(t.mailboxValue),_1:{ctor:"::",_0:wc(t.mailboxOnInput),_1:{ctor:"[]"}}}}},{ctor:"[]"}),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}}}}),_1:{ctor:"::",_0:_(Vo,{ctor:"[]"},{ctor:"::",_0:Eo(_(b["++"],"Status: ",r.flash)),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}),_1:{ctor:"::",_0:_(Vo,{ctor:"::",_0:_c("navbg"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo(""),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:n,_1:{ctor:"::",_0:_(Io,{ctor:"[]"},{ctor:"::",_0:_(Vo,{ctor:"::",_0:_c("footer"),_1:{ctor:"[]"}},{ctor:"::",_0:_(Go,{ctor:"::",_0:dc("https://www.inbucket.org"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo("Inbucket"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:Eo(" is an open source projected hosted at "),_1:{ctor:"::",_0:_(Go,{ctor:"::",_0:dc("https://github.com/jhillyerd/inbucket"),_1:{ctor:"[]"}},{ctor:"::",_0:Eo("GitHub"),_1:{ctor:"[]"}}),_1:{ctor:"::",_0:Eo("."),_1:{ctor:"[]"}}}}}),_1:{ctor:"[]"}}),_1:{ctor:"[]"}}}}})}),rl={ctor:"Other"},el=function(t){var r=t,e=r._0,n=r._1,o=_(ii,r._2,e.session),c=v.update(e,{session:o});return v.eq(o.persistent,e.session.persistent)?{ctor:"_Tuple2",_0:c,_1:n}:{ctor:"_Tuple2",_0:c,_1:se({ctor:"::",_0:n,_1:{ctor:"::",_0:Si(o.persistent),_1:{ctor:"[]"}}})}},nl=Mi(Vr(li)),ol=(e(function(t,r,e){return{page:t,session:r,mailboxName:e}}),function(t){return{ctor:"Status",_0:t}}),cl=function(t){return{ctor:"Monitor",_0:t}},ul=function(t){return{ctor:"Mailbox",_0:t}},il=function(t){return{ctor:"Home",_0:t}},al=function(t){return{ctor:"StatusMsg",_0:t}},_l=function(t){return{ctor:"MonitorMsg",_0:t}},sl=function(t){return{ctor:"MailboxMsg",_0:t}},ll=function(t){var r=t;switch(r.ctor){case"Mailbox":return _(ve,sl,m_(r._0));case"Monitor":return _(ve,_l,Z_(r._0));case"Status":return _(ve,al,Ws(r._0));default:return he}},fl=function(t){return{ctor:"HomeMsg",_0:t}},dl=r(function(t,r){var e=o(function(t,e,n,o,c){var u=s(n,r.session,o,c),i=u._0,a=u._1,l=u._2;return{ctor:"_Tuple3",_0:v.update(r,{page:t(i)}),_1:_(de,e,a),_2:l}}),n={ctor:"_Tuple2",_0:t,_1:r.page};t:do{switch(n._1.ctor){case"Home":if("HomeMsg"===n._0.ctor)return f(e,il,fl,Ei,n._0._0,n._1._0);break t;case"Mailbox":if("MailboxMsg"===n._0.ctor)return f(e,ul,sl,P_,n._0._0,n._1._0);break t;case"Monitor":if("MonitorMsg"===n._0.ctor)return f(e,cl,_l,q_,n._0._0,n._1._0);break t;default:if("StatusMsg"===n._0.ctor)return f(e,ol,al,Gs,n._0._0,n._1._0);break t}}while(!1);return{ctor:"_Tuple3",_0:r,_1:le,_2:bi}}),pl=r(function(t,r){var e=function(){var e=t;switch(e.ctor){case"Unknown":return{ctor:"_Tuple3",_0:r,_1:le,_2:mi(_(b["++"],"Unknown route requested: ",e._0))};case"Home":var n=Oi,o=n._0,c=n._1;return{ctor:"_Tuple3",_0:v.update(r,{page:il(o)}),_1:_(de,fl,c),_2:bi};case"Mailbox":var u=_(O_,e._0,C),o=u._0,c=u._1;return{ctor:"_Tuple3",_0:v.update(r,{page:ul(o)}),_1:_(de,sl,c),_2:bi};case"Message":var i=_(O_,e._0,A(e._1)),o=i._0,c=i._1;return{ctor:"_Tuple3",_0:v.update(r,{page:ul(o)}),_1:_(de,sl,c),_2:bi};case"Monitor":var a=V_,o=a._0,c=a._1;return{ctor:"_Tuple3",_0:v.update(r,{page:cl(o)}),_1:_(de,_l,c),_2:bi};default:return{ctor:"_Tuple3",_0:v.update(r,{page:ol(js)}),_1:se({ctor:"::",_0:Ni("Inbucket Status"),_1:{ctor:"::",_0:_(de,al,Vs),_1:{ctor:"[]"}}}),_2:bi}}}(),n=e._0,o=e._1,c=e._2;return"Monitor"===r.page.ctor?{ctor:"_Tuple3",_0:n,_1:se({ctor:"::",_0:wi(!1),_1:{ctor:"::",_0:o,_1:{ctor:"[]"}}}),_2:c}:{ctor:"_Tuple3",_0:n,_1:o,_2:c}}),hl=r(function(t,r){var e=Qa(r),n=Oi,o=n._0,c=_(_i,r,fi(t)),u={page:il(o),session:c,mailboxName:""};return el(_(pl,e,u))}),vl=r(function(t,r){return el(function(){var e=t;switch(e.ctor){case"SetRoute":return{ctor:"_Tuple3",_0:r,_1:ja(e._0),_2:bi};case"NewRoute":return r.session.routing?_(pl,e._0,r):{ctor:"_Tuple3",_0:r,_1:le,_2:pi};case"UpdateSession":if("Ok"===e._0.ctor){var n=r.session;return{ctor:"_Tuple3",_0:v.update(r,{session:v.update(n,{persistent:e._0._0})}),_1:le,_2:bi}}_(oe,"Error decoding session",e._0._0);return{ctor:"_Tuple3",_0:r,_1:le,_2:bi};case"MailboxNameInput":return{ctor:"_Tuple3",_0:v.update(r,{mailboxName:e._0}),_1:le,_2:bi};case"ViewMailbox":return{ctor:"_Tuple3",_0:v.update(r,{mailboxName:""}),_1:ja(Ja(e._0)),_2:bi};default:return _(dl,t,r)}}())}),ml=function(t){return{ctor:"ViewMailbox",_0:t}},gl=function(t){return{ctor:"MailboxNameInput",_0:t}},bl=function(t){var r=function(){var r=t.page;return"Mailbox"===r.ctor?r._0.mailboxName:""}(),e={viewMailbox:ml,mailboxOnInput:gl,mailboxValue:t.mailboxName,recentOptions:t.session.persistent.recentMailboxes,recentActive:r},n=_(tl,e,t.session),o=t.page;switch(o.ctor){case"Home":return _(n,rl,_(Ro,fl,_(Bi,t.session,o._0)));case"Mailbox":return _(n,Xs,_(Ro,sl,_(U_,t.session,o._0)));case"Monitor":return _(n,Ks,_(Ro,_l,_(Q_,t.session,o._0)));default:return _(n,$s,_(Ro,al,_(Ls,t.session,o._0)))}},yl=function(t){return{ctor:"UpdateSession",_0:t}},kl=function(t){return pe({ctor:"::",_0:ll(t.page),_1:{ctor:"::",_0:_(ve,yl,nl),_1:{ctor:"[]"}}})},Tl=function(t){return{ctor:"NewRoute",_0:t}},wl=_(au,function(t){return Tl(Qa(t))},{init:hl,view:bl,update:vl,subscriptions:kl})(Ur),xl={};if(xl.Main=xl.Main||{},void 0!==wl&&wl(xl.Main,"Main",void 0),"function"==typeof define&&define.amd)return void define([],function(){return xl});if("object"==typeof t)return void(t.exports=xl);var Ml=this.Elm;if(void 0===Ml)return void(this.Elm=xl);for(var Sl in xl){if(Sl in Ml)throw new Error("There are two Elm modules called `"+Sl+"` on this page! Rename one of them.");Ml[Sl]=xl[Sl]}}).call(this)},function(t,r,e){"use strict";function n(){if("serviceWorker"in navigator){if(new URL("",window.location).origin!==window.location.origin)return;window.addEventListener("load",function(){var t="/service-worker.js";u?c(t):o(t)})}}function o(t){navigator.serviceWorker.register(t).then(function(t){t.onupdatefound=function(){var r=t.installing;r.onstatechange=function(){"installed"===r.state&&(navigator.serviceWorker.controller?console.log("New content is available; please refresh."):console.log("Content is cached for offline use."))}}}).catch(function(t){console.error("Error during service worker registration:",t)})}function c(t){fetch(t).then(function(r){404===r.status||-1===r.headers.get("content-type").indexOf("javascript")?navigator.serviceWorker.ready.then(function(t){t.unregister().then(function(){window.location.reload()})}):o(t)}).catch(function(){console.log("No internet connection found. App is running in offline mode.")})}r.a=n;var u=Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))},function(t,r,e){"use strict";function n(t){var r=("https:"===window.location.protocol?"wss://":"ws://")+window.location.host+"/api/v1/monitor/messages",e=null;t.ports.monitorCommand.subscribe(function(n){null!=e&&(e.down(),e=null),n&&(e=o(r,t.ports.monitorMessage),e.up())})}function o(t,r){var e=null;return{up:function(){e=new WebSocket(t),e.addEventListener("open",function(t){r.send(!0)}),e.addEventListener("close",function(t){r.send(!1)}),e.addEventListener("message",function(t){var e=JSON.parse(t.data);r.send(e)})},down:function(){e.close()}}}r.a=n}]); \ No newline at end of file diff --git a/ui/build/webpack-assets.json b/ui/build/webpack-assets.json deleted file mode 100644 index 9555fd0..0000000 --- a/ui/build/webpack-assets.json +++ /dev/null @@ -1 +0,0 @@ -{"main":{"js":"/static/js/main.04b41a91.js","css":"/static/css/main.8d438738.css"},"":{"html":"/index.html"}} \ No newline at end of file diff --git a/ui/build/favicon.png b/ui/dist/favicon.png similarity index 100% rename from ui/build/favicon.png rename to ui/dist/favicon.png diff --git a/ui/dist/index.html b/ui/dist/index.html new file mode 100644 index 0000000..d62e75f --- /dev/null +++ b/ui/dist/index.html @@ -0,0 +1,16 @@ + + + + + + + + Inbucket + + + +
+ + diff --git a/ui/dist/static/main.js b/ui/dist/static/main.js new file mode 100644 index 0000000..b107069 --- /dev/null +++ b/ui/dist/static/main.js @@ -0,0 +1 @@ +!function(n){var r={};function t(e){if(r[e])return r[e].exports;var u=r[e]={i:e,l:!1,exports:{}};return n[e].call(u.exports,u,u.exports,t),u.l=!0,u.exports}t.m=n,t.c=r,t.d=function(n,r,e){t.o(n,r)||Object.defineProperty(n,r,{enumerable:!0,get:e})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,r){if(1&r&&(n=t(n)),8&r)return n;if(4&r&&"object"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(t.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:n}),2&r&&"string"!=typeof n)for(var u in n)t.d(e,u,function(r){return n[r]}.bind(null,u));return e},t.n=function(n){var r=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(r,"a",r),r},t.o=function(n,r){return Object.prototype.hasOwnProperty.call(n,r)},t.p="/",t(t.s=7)}([function(n,r,t){!function(n){"use strict";function r(n,r,t){return t.a=n,t.f=r,t}function t(n){return r(2,n,function(r){return function(t){return n(r,t)}})}function e(n){return r(3,n,function(r){return function(t){return function(e){return n(r,t,e)}}})}function u(n){return r(4,n,function(r){return function(t){return function(e){return function(u){return n(r,t,e,u)}}}})}function a(n){return r(5,n,function(r){return function(t){return function(e){return function(u){return function(a){return n(r,t,e,u,a)}}}}})}function o(n){return r(6,n,function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return n(r,t,e,u,a,o)}}}}}})}function i(n){return r(7,n,function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return function(i){return n(r,t,e,u,a,o,i)}}}}}}})}function c(n){return r(8,n,function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return function(i){return function(c){return n(r,t,e,u,a,o,i,c)}}}}}}}})}function f(n){return r(9,n,function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return function(i){return function(c){return function(f){return n(r,t,e,u,a,o,i,c,f)}}}}}}}}})}function s(n,r,t){return 2===n.a?n.f(r,t):n(r)(t)}function b(n,r,t,e){return 3===n.a?n.f(r,t,e):n(r)(t)(e)}function l(n,r,t,e,u){return 4===n.a?n.f(r,t,e,u):n(r)(t)(e)(u)}function v(n,r,t,e,u,a){return 5===n.a?n.f(r,t,e,u,a):n(r)(t)(e)(u)(a)}function d(n,r,t,e,u,a,o){return 6===n.a?n.f(r,t,e,u,a,o):n(r)(t)(e)(u)(a)(o)}function p(n,r,t,e,u,a,o,i){return 7===n.a?n.f(r,t,e,u,a,o,i):n(r)(t)(e)(u)(a)(o)(i)}var h={$:0};function g(n,r){return{$:1,a:n,b:r}}var m=t(g);function $(n){for(var r=h,t=n.length;t--;)r=g(n[t],r);return r}function y(n){for(var r=[];n.b;n=n.b)r.push(n.a);return r}var x=e(function(n,r,t){for(var e=[];r.b&&t.b;r=r.b,t=t.b)e.push(s(n,r.a,t.a));return $(e)});u(function(n,r,t,e){for(var u=[];r.b&&t.b&&e.b;r=r.b,t=t.b,e=e.b)u.push(b(n,r.a,t.a,e.a));return $(u)}),a(function(n,r,t,e,u){for(var a=[];r.b&&t.b&&e.b&&u.b;r=r.b,t=t.b,e=e.b,u=u.b)a.push(l(n,r.a,t.a,e.a,u.a));return $(a)}),o(function(n,r,t,e,u,a){for(var o=[];r.b&&t.b&&e.b&&u.b&&a.b;r=r.b,t=t.b,e=e.b,u=u.b,a=a.b)o.push(v(n,r.a,t.a,e.a,u.a,a.a));return $(o)}),t(function(n,r){return $(y(r).sort(function(r,t){return A(n(r),n(t))}))}),t(function(n,r){return $(y(r).sort(function(r,t){var e=s(n,r,t);return e===it?0:e===ft?-1:1}))});function w(n,r){for(var t,e=[],u=k(n,r,0,e);u&&(t=e.pop());u=k(t.a,t.b,0,e));return u}function k(n,r,t,e){if(t>100)return e.push(E(n,r)),!0;if(n===r)return!0;if("object"!=typeof n||null===n||null===r)return"function"==typeof n&&H(5),!1;for(var u in n.$<0&&(n=lt(n),r=lt(r)),n)if(!k(n[u],r[u],t+1,e))return!1;return!0}t(w);var j=t(function(n,r){return!w(n,r)});function A(n,r,t){if("object"!=typeof n)return n===r?0:n0}),t(function(n,r){return A(n,r)>=0});var S=t(function(n,r){var t=A(n,r);return t<0?ft:t?ct:it}),M=0;function E(n,r){return{a:n,b:r}}function T(n,r,t){return{a:n,b:r,c:t}}function O(n){return n}function C(n,r){var t={};for(var e in n)t[e]=n[e];for(var e in r)t[e]=r[e];return t}t(L);function L(n,r){if("string"==typeof n)return n+r;if(!n.b)return r;var t=g(n.a,r);n=n.b;for(var e=t;n.b;n=n.b)e=e.b=g(n.a,r);return t}var R=e(function(n,r,t){for(var e=new Array(n),u=0;u=0;e--)r=s(n,t[e],r);return r}));t(function(n,r){for(var t=r.length,e=new Array(t),u=0;ut.length&&(u=t.length);for(var a=new Array(e+u),o=0;o"),r});function H(n){throw new Error("https://github.com/elm/core/blob/1.0.0/hints/"+n+".md")}var I=t(function(n,r){return n+r}),P=t(function(n,r){return n-r}),U=(t(function(n,r){return n*r}),t(function(n,r){return n/r}),t(function(n,r){return n/r|0}),t(Math.pow),t(function(n,r){return r%n}),t(function(n,r){var t=r%n;return 0===n?H(11):t>0&&n<0||t<0&&n>0?t+n:t}));Math.PI,Math.E,Math.cos,Math.sin,Math.tan,Math.acos,Math.asin,Math.atan,t(Math.atan2);var D=Math.ceil,J=Math.floor,q=Math.round,z=(Math.sqrt,Math.log),F=isNaN;t(function(n,r){return n&&r}),t(function(n,r){return n||r}),t(function(n,r){return n!==r});var G=t(function(n,r){return n+r});t(function(n,r){return n+r});t(function(n,r){for(var t=r.length,e=new Array(t),u=0;u-1}),X=t(function(n,r){return 0===r.indexOf(n)}),nn=t(function(n,r){return r.length>=n.length&&r.lastIndexOf(n)===r.length-n.length}),rn=t(function(n,r){var t=n.length;if(t<1)return h;for(var e=0,u=[];(e=r.indexOf(n,e))>-1;)u.push(e),e+=t;return $(u)});function tn(n){return n+""}function en(n){return{$:2,b:n}}var un=en(function(n){return"number"!=typeof n?yn("an INT",n):-2147483647=r.length)return yn("a LONGER array. Need index "+u+" but only see "+r.length+" entries",r);e=hn(n.b,r[u]);return Dt(e)?e:Pt(s(zt,u,e.a));case 8:if("object"!=typeof r||null===r||mn(r))return yn("an OBJECT",r);var a=h;for(var o in r)if(r.hasOwnProperty(o)){e=hn(n.b,r[o]);if(!Dt(e))return Pt(s(qt,o,e.a));a=g(E(o,e.a),a)}return Ut(jt(a));case 9:for(var i=n.f,c=n.g,f=0;f=0&&r.splice(t,1)}}}function nr(n,r){return Zn(n),Un[n]={f:rr,r:r,a:tr},Fn(n)}var rr=t(function(n,r){return function(t){return n(r(t))}});function tr(n,r){var t=h,u=Un[n].r,a=Mn(null);return Un[n].b=a,Un[n].c=e(function(n,r,e){return t=r,a}),{send:function(n){var e=s(pn,u,jn(n));Dt(e)||H(4,e.a);for(var a=e.a,o=t;o.b;o=o.b)r(o.a(a))}}}var er=e(function(n,r,t){return En(function(e){function u(n){e(r(t.aE.a(n)))}var a=new XMLHttpRequest;a.addEventListener("error",function(){u(Tu)}),a.addEventListener("timeout",function(){u(Lu)}),a.addEventListener("load",function(){u(function(n,r){return s(200<=r.status&&r.status<300?Eu:Su,function(n){return{a9:n.responseURL,a4:n.status,b5:n.statusText,aJ:function(n){if(!n)return cu;for(var r=cu,t=n.split("\r\n"),e=t.length;e--;){var u=t[e],a=u.indexOf(": ");if(a>0){var o=u.substring(0,a),i=u.substring(a+2);r=b(wu,o,function(n){return Ht(ku(n)?i+", "+n.a:i)},r)}}return r}(n.getAllResponseHeaders())}}(r),n(r.response))}(t.aE.b,a))}),ku(t.a8)&&function(n,r,t){r.upload.addEventListener("progress",function(e){r.c||Cn(s(Au,n,E(t,Cu({bW:e.loaded,bX:e.total}))))}),r.addEventListener("progress",function(e){r.c||Cn(s(Au,n,E(t,Ou({bL:e.loaded,bX:e.lengthComputable?Ht(e.total):It}))))})}(n,a,t.a8.a);try{a.open(t.aO,t.a9,!0)}catch(n){return u(Mu(t.a9))}return function(n,r){for(var t=r.aJ;t.b;t=t.b)n.setRequestHeader(t.a.a,t.a.b);n.timeout=r.a7.a||0,n.responseType=r.aE.d,n.withCredentials=r.s}(a,t),t.ax.a&&a.setRequestHeader("Content-Type",t.ax.a),a.send(t.ax.b),function(){a.c=!0,a.abort()}})});var ur=e(function(n,r,t){return{$:0,d:n,b:r,a:t}}),ar=t(function(n,r){return{$:0,d:r.d,b:r.b,a:function(t){return n(r.a(t))}}});function or(n){return new DataView(n)}var ir=t(function(n,r){return{$:0,a:n,b:r}});t(function(n,r){return new Blob([r],{type:n})});var cr,fr=t(function(n,r){return En(function(t){var e=setInterval(function(){Cn(r)},n);return function(){clearInterval(e)}})});var sr="undefined"!=typeof document?document:{};function br(n,r){n.appendChild(r)}u(function(n,r,t,e){var u=e.node;return u.parentNode.replaceChild(Sr(n,function(){}),u),{}});function lr(n){return{$:0,a:n}}var vr=t(function(n,r){return t(function(t,e){for(var u=[],a=0;e.b;e=e.b){var o=e.a;a+=o.b||0,u.push(o)}return a+=u.length,{$:1,c:r,d:jr(t),e:u,f:n,b:a}})}),dr=vr(void 0);t(function(n,r){return t(function(t,e){for(var u=[],a=0;e.b;e=e.b){var o=e.a;a+=o.b.b||0,u.push(o)}return a+=u.length,{$:2,c:r,d:jr(t),e:u,f:n,b:a}})})(void 0);var pr=t(function(n,r){return{$:4,j:n,k:r,b:1+(r.b||0)}});function hr(n,r){return{$:5,l:n,m:r,k:void 0}}t(function(n,r){return hr([n,r],function(){return n(r)})}),e(function(n,r,t){return hr([n,r,t],function(){return s(n,r,t)})}),u(function(n,r,t,e){return hr([n,r,t,e],function(){return b(n,r,t,e)})}),a(function(n,r,t,e,u){return hr([n,r,t,e,u],function(){return l(n,r,t,e,u)})}),o(function(n,r,t,e,u,a){return hr([n,r,t,e,u,a],function(){return v(n,r,t,e,u,a)})}),i(function(n,r,t,e,u,a,o){return hr([n,r,t,e,u,a,o],function(){return d(n,r,t,e,u,a,o)})}),c(function(n,r,t,e,u,a,o,i){return hr([n,r,t,e,u,a,o,i],function(){return p(n,r,t,e,u,a,o,i)})}),f(function(n,r,t,e,u,a,o,i,c){return hr([n,r,t,e,u,a,o,i,c],function(){return function(n,r,t,e,u,a,o,i,c){return 8===n.a?n.f(r,t,e,u,a,o,i,c):n(r)(t)(e)(u)(a)(o)(i)(c)}(n,r,t,e,u,a,o,i,c)})});var gr=t(function(n,r){return{$:"a0",n:n,o:r}}),mr=(t(function(n,r){return{$:"a1",n:n,o:r}}),t(function(n,r){return{$:"a2",n:n,o:r}})),$r=t(function(n,r){return{$:"a3",n:n,o:r}});e(function(n,r,t){return{$:"a4",n:r,o:{f:n,o:t}}});function yr(n){return/^\s*(javascript:|data:text\/html)/i.test(n)?"":n}t(function(n,r){return"a0"===r.$?s(gr,r.n,function(n,r){var t=qa(r);return{$:r.$,a:t?b(le,t<3?wr:kr,$e(n),r.a):s(la,n,r.a)}}(n,r.o)):r});var xr,wr=t(function(n,r){return E(n(r.a),r.b)}),kr=t(function(n,r){return{o:n(r.o),av:r.av,ak:r.ak}});function jr(n){for(var r={};n.b;n=n.b){var t=n.a,e=t.$,u=t.n,a=t.o;if("a2"!==e){var o=r[e]||(r[e]={});"a3"===e&&"class"===u?Ar(o,u,a):o[u]=a}else"className"===u?Ar(r,u,An(a)):r[u]=An(a)}return r}function Ar(n,r,t){var e=n[r];n[r]=e?e+" "+t:t}function Sr(n,r){var t=n.$;if(5===t)return Sr(n.k||(n.k=n.m()),r);if(0===t)return sr.createTextNode(n.a);if(4===t){for(var e=n.k,u=n.j;4===e.$;)"object"!=typeof u?u=[u,e.j]:u.push(e.j),e=e.k;var a={j:u,p:r};return(o=Sr(e,a)).elm_event_node_ref=a,o}if(3===t)return Mr(o=n.h(n.g),r,n.d),o;var o=n.f?sr.createElementNS(n.f,n.c):sr.createElement(n.c);cr&&"a"==n.c&&o.addEventListener("click",cr(o)),Mr(o,r,n.d);for(var i=n.e,c=0;c0&&_r(t,1,e,s));case 4:for(var b=n.j,l=r.j,v=!1,d=n.k;4===d.$;)v=!0,"object"!=typeof b?b=[b,d.j]:b.push(d.j),d=d.k;for(var p=r.k;4===p.$;)v=!0,"object"!=typeof l?l=[l,p.j]:l.push(p.j),p=p.k;return v&&b.length!==l.length?void _r(t,0,e,r):((v?function(n,r){for(var t=0;ti?_r(t,6,e,{v:i,i:o-i}):o0||o.length>0||E)&&_r(t,8,e,{w:u,x:o,y:E})}var Dr="_elmW6BL";function Jr(n,r,t,e,u,a){var o=n[t];if(!o)return o={c:0,z:e,r:u,s:void 0},a.push({r:u,A:o}),void(n[t]=o);if(1===o.c){a.push({r:u,A:o}),o.c=2;var i=[];return Br(o.z,e,i,o.r),o.r=u,void(o.s.s={w:i,A:o})}Jr(n,r,t+Dr,e,u,a)}function qr(n,r,t,e,u){var a=n[t];if(a){if(0===a.c){a.c=2;var o=[];return Br(e,a.z,o,u),void _r(r,9,u,{w:o,A:a})}qr(n,r,t+Dr,e,u)}else{var i=_r(r,9,u,void 0);n[t]={c:1,z:e,r:u,s:i}}}function zr(n,r,t,e){!function n(r,t,e,u,a,o,i){var c=e[u];var f=c.r;for(;f===a;){var s=c.$;if(1===s)zr(r,t.k,c.s,i);else if(8===s){c.t=r,c.u=i;var b=c.s.w;b.length>0&&n(r,t,b,0,a,o,i)}else if(9===s){c.t=r,c.u=i;var l=c.s;if(l){l.A.s=r;var b=l.w;b.length>0&&n(r,t,b,0,a,o,i)}}else c.t=r,c.u=i;if(!(c=e[++u])||(f=c.r)>o)return u}var v=t.$;if(4===v){for(var d=t.k;4===d.$;)d=d.k;return n(r,d,e,u,a+1,o,r.elm_event_node_ref)}var p=t.e;var h=r.childNodes;for(var g=0;go))return u;a=$}return u}(n,r,t,0,0,r.b,e)}function Fr(n,r,t,e){return 0===t.length?n:(zr(n,r,t,e),Gr(n,t))}function Gr(n,r){for(var t=0;t>n}),t(function(n,r){return r>>>n});var Wr=t(function(n,r){var t="g";n.aS&&(t+="m"),n.ay&&(t+="i");try{return Ht(new RegExp(r,t))}catch(n){return It}}),Zr=(t(function(n,r){return null!==r.match(n)}),e(function(n,r,t){for(var e,u=[],a=0,o=t,i=r.lastIndex,c=-1;a++0;){var b=e[f];s[--f]=b?Ht(b):It}u.push(l(ui,e[0],e.index,a,$(s))),c=r.lastIndex}return r.lastIndex=i,$(u)}),u(function(n,r,t,e){var u=0;return e.replace(r,function(r){if(u++>=n)return r;for(var e=arguments.length-3,a=new Array(e);e>0;){var o=arguments[e];a[--e]=o?Ht(o):It}return t(l(ui,r,arguments[arguments.length-2],u,$(a)))})}));e(function(n,r,t){for(var e=t,u=[],a=r.lastIndex,o=r.lastIndex;n--;){var i=r.exec(e);if(!i)break;u.push(e.slice(a,i.index)),a=r.lastIndex}return u.push(e.slice(a)),r.lastIndex=o,$(u)});u(function(n,r,t,e){return Pn(r,e,n.bx,n.ci,n.b8,function(r,t){var u=n.cj,a=e.node,o=Vr(a);return Xr(t,function(n){var t=u(n),e=Nr(o,t);a=Fr(a,o,e,r),o=t})})});var Yr=u(function(n,r,t,e){return Pn(r,e,n.bx,n.ci,n.b8,function(r,t){var e=n.I&&n.I(r),u=n.cj,a=sr.title,o=sr.body,i=Vr(o);return Xr(t,function(n){cr=e;var t=u(n),c=dr("body")(h)(t.ax),f=Nr(i,c);o=Fr(o,i,f,r),i=c,cr=0,a!==t.cb&&(sr.title=a=t.cb)})})}),Qr=("undefined"!=typeof cancelAnimationFrame&&cancelAnimationFrame,"undefined"!=typeof requestAnimationFrame?requestAnimationFrame:function(n){return setTimeout(n,1e3/60)});function Xr(n,r){r(n);var t=0;function e(){t=1===t?0:(Qr(e),r(n),1)}return function(u,a){n=u,a?(r(n),2===t&&(t=1)):(0===t&&Qr(e),t=2)}}function nt(){return Cf(sr.location.href).a||H(1)}t(function(n,r){return s(Ta,xf,En(function(){r&&history.go(r),n()}))});var rt=t(function(n,r){return s(Ta,xf,En(function(){history.pushState({},"",r),n()}))}),tt=(t(function(n,r){return s(Ta,xf,En(function(){history.replaceState({},"",r),n()}))}),{addEventListener:function(){},removeEventListener:function(){}}),et=("undefined"!=typeof document&&document,"undefined"!=typeof window?window:tt);e(function(n,r,t){return Ln(En(function(e){function u(n){Cn(t(n))}return n.addEventListener(r,u,xr&&{passive:!0}),function(){n.removeEventListener(r,u)}}))}),t(function(n,r){var t=hn(n,r);return Dt(t)?Ht(t.a):It});function ut(n,r){return En(function(t){Qr(function(){var e=document.getElementById(n);t(e?Mn(r(e)):function(n){return{$:1,a:n}}(yf(n)))})})}t(function(n,r){return ut(r,function(r){return r[n](),M})});t(function(n,r){return function(n){return En(function(r){Qr(function(){r(Mn(n()))})})}(function(){return et.scroll(n,r),M})});e(function(n,r,t){return ut(n,function(n){return n.scrollLeft=r,n.scrollTop=t,M})});var at=t(function(n,r){return r(n)}),ot=u(function(n,r,t,e){return{$:0,a:n,b:r,c:t,d:e}}),it=1,ct=2,ft=0,st=e(function(n,r,t){for(;;){if(-2===t.$)return r;var e=t.b,u=t.c,a=t.d,o=t.e,i=n,c=b(n,e,u,b(st,n,r,o));n=i,r=c,t=a}}),bt=m,lt=function(n){return b(st,e(function(n,r,t){return s(bt,E(n,r),t)}),h,n)},vt=B,dt=e(function(n,r,e){var u=e.c,a=e.d,o=t(function(r,t){if(r.$){var e=r.a;return b(vt,n,t,e)}var u=r.a;return b(vt,o,t,u)});return b(vt,o,b(vt,n,r,a),u)}),pt=D,ht=t(function(n,r){return z(r)/z(n)}),gt=pt(s(ht,2,32)),mt=[],$t=l(ot,0,gt,mt,mt),yt=function(n){return{$:1,a:n}},xt=function(n){return{$:0,a:n}},wt=N,kt=e(function(n,r,t){for(;;){if(!t.b)return r;var e=t.a,u=t.b,a=n,o=s(n,e,r);n=a,r=o,t=u}}),jt=function(n){return b(kt,bt,h,n)},At=t(function(n,r){for(;;){var t=s(wt,32,n),e=t.a,u=t.b,a=s(bt,xt(e),r);if(!u.b)return jt(a);n=u,r=a}}),St=function(n){return n.a},Mt=t(function(n,r){for(;;){var t=pt(r/32);if(1===t)return s(wt,32,n).a;n=s(At,n,h),r=t}}),Et=I,Tt=(t(function(n,r){return n(r)}),J),Ot=t(function(n,r){return A(n,r)>0?n:r}),Ct=P,Lt=function(n){return n.length},Rt=t(function(n,r){if(r.b){var t=32*r.b,e=Tt(s(ht,32,t-1)),u=n?jt(r.f):r.f,a=s(Mt,u,r.b);return l(ot,Lt(r.d)+t,s(Ot,5,e*gt),a,r.d)}return l(ot,Lt(r.d),gt,mt,r.d)}),Nt=R,_t=a(function(n,r,t,e,u){for(;;){if(r<0)return s(Rt,!1,{f:e,b:t/32|0,d:u});var a=yt(b(Nt,32,r,n));n=n,r=r-32,t=t,e=s(bt,a,e),u=u}}),Bt=t(function(n,r){if(n<=0)return $t;var t=n%32,e=b(Nt,t,n-t,r);return v(_t,r,n-t-32,n,h,e)}),Ht=function(n){return{$:0,a:n}},It={$:1},Pt=function(n){return{$:1,a:n}},Ut=function(n){return{$:0,a:n}},Dt=function(n){return!n.$},Jt=t(function(n,r){return{$:3,a:n,b:r}}),qt=t(function(n,r){return{$:0,a:n,b:r}}),zt=t(function(n,r){return{$:1,a:n,b:r}}),Ft=function(n){return{$:2,a:n}},Gt=function(n){var r=n.charCodeAt(0);return 55296<=r&&r<=56319?1024*(r-55296)+n.charCodeAt(1)-56320+65536:r},Kt=function(n){var r=Gt(n);return 97<=r&&r<=122},Vt=function(n){var r=Gt(n);return r<=90&&65<=r},Wt=function(n){return Kt(n)||Vt(n)},Zt=function(n){return Kt(n)||Vt(n)||function(n){var r=Gt(n);return r<=57&&48<=r}(n)},Yt=function(n){return b(kt,t(function(n,r){return r+1}),0,n)},Qt=x,Xt=e(function(n,r,t){for(;;){if(!(A(n,r)<1))return t;var e=n,u=r-1,a=s(bt,r,t);n=e,r=u,t=a}}),ne=t(function(n,r){return b(Xt,n,r,h)}),re=t(function(n,r){return b(Qt,n,s(ne,0,Yt(r)-1),r)}),te=Y,ee=tn,ue=t(function(n,r){return s(W,n,y(r))}),ae=function(n){var r=n.charCodeAt(0);return r?Ht(55296<=r&&r<=56319?E(O(n[0]+n[1]),n.slice(2)):E(O(n[0]),n.slice(1))):It},oe=t(function(n,r){return $(s(V,n,r))}),ie=function(n){return s(ue,"\n ",s(oe,"\n",n))},ce=kn,fe=t(function(n,r){return"\n\n("+ee(n+1)+") "+ie(se(r))}),se=function(n){return s(be,n,h)},be=t(function(n,r){n:for(;;)switch(n.$){case 0:var t=n.a,e=n.b,u=function(){var n=ae(t);if(1===n.$)return!1;var r=n.a,e=r.a,u=r.b;return Wt(e)&&s(te,Zt,u)}(),a=e,o=s(bt,u?"."+t:"['"+t+"']",r);n=a,r=o;continue n;case 1:var i=n.a,c=(e=n.b,"["+ee(i)+"]");a=e,o=s(bt,c,r);n=a,r=o;continue n;case 2:var f=n.a;if(f.b){if(f.b.b){var b=(r.b?"The Json.Decode.oneOf at json"+s(ue,"",jt(r)):"Json.Decode.oneOf")+" failed in the following "+ee(Yt(f))+" ways:";return s(ue,"\n\n",s(bt,b,s(re,fe,f)))}n=a=e=f.a,r=o=r;continue n}return"Ran into a Json.Decode.oneOf with no possibilities"+(r.b?" at json"+s(ue,"",jt(r)):"!");default:var l=n.a,v=n.b;return(b=r.b?"Problem with the value at json"+s(ue,"",jt(r))+":\n\n ":"Problem with the given value:\n\n")+(ie(s(ce,4,v))+"\n\n")+l}}),le=vn,ve=le(at),de=bn,pe=pn,he=function(n){return{$:1,a:n}},ge=function(n){return{$:5,c:n}},me=function(n){return{$:11,g:n}},$e=function(n){return{$:0,a:n}},ye=on,xe=e(function(n,r,t){return s(de,function(e){var u=s(pe,n,e);if(u.$)return $e(t);var a=u.a,o=s(pe,function(n){return me($([n,ge(t)]))}(r),a);if(o.$){var i=o.a;return he(se(i))}var c=o.a;return $e(c)},ye)}),we=fn,ke=u(function(n,r,t,e){return s(ve,b(xe,s(we,n,ye),r,t),e)}),je=function(n){return{$:3,b:n}},Ae=cn,Se=l(ke,"recentMailboxes",je(Ae),h,$e(function(n){return{G:n}})),Me=e(function(n,r,t){return r(n(t))}),Ee=t(function(n,r){return r.$?n:r.a}),Te=s(Me,pe(Se),Ee({G:h})),Oe=a(function(n,r,t,e,u){return{aa:t,aK:r,by:n,F:u,am:e}}),Ce=e(function(n,r,t){return v(Oe,n,r.aK,"",!0,t)}),Le=function(n){return{$:0,a:n}},Re=j,Ne=u(function(n,r,t,e){if(e.b){var u=e.a,a=e.b;if(a.b){var o=a.a,i=a.b;if(i.b){var c=i.a,f=i.b;if(f.b){var v=f.a,d=f.b;return s(n,u,s(n,o,s(n,c,s(n,v,t>500?b(kt,n,r,jt(d)):l(Ne,n,r,t+1,d)))))}return s(n,u,s(n,o,s(n,c,r)))}return s(n,u,s(n,o,r))}return s(n,u,r)}return r}),_e=e(function(n,r,t){return l(Ne,n,r,0,t)}),Be=t(function(n,r){return b(_e,t(function(r,t){return n(r)?s(bt,r,t):t}),h,r)}),He=function(n){if(n.b){var r=n.a;n.b;return Ht(r)}return It},Ie=e(function(n,r,t){for(;;){if(n<=0)return t;if(!r.b)return t;var e=r.a;n=n-1,r=r.b,t=s(bt,e,t)}}),Pe=t(function(n,r){return jt(b(Ie,n,r,h))}),Ue=e(function(n,r,t){if(r<=0)return h;var e=E(r,t);n:for(;;){r:for(;;){if(!e.b.b)return t;if(!e.b.b.b){if(1===e.a)break n;break r}switch(e.a){case 1:break n;case 2:var u=e.b;return $([o=u.a,l=u.b.a]);case 3:if(e.b.b.b.b){var a=e.b,o=a.a,i=a.b;return $([o,l=i.a,d=i.b.a])}break r;default:if(e.b.b.b.b&&e.b.b.b.b.b){var c=e.b,o=c.a,f=c.b,l=f.a,v=f.b,d=v.a,p=v.b,g=p.a,m=p.b;return s(bt,o,s(bt,l,s(bt,d,s(bt,g,n>1e3?s(Pe,r-4,m):b(Ue,n+1,r-4,m)))))}break r}}return t}return $([o=e.b.a])}),De=t(function(n,r){return b(Ue,0,n,r)}),Je=t(function(n,r){switch(n.$){case 0:return r;case 1:return C(r,{aa:n.a});case 2:return C(r,{aa:""});case 3:return C(r,{am:!1});case 4:return C(r,{am:!0});default:var t=n.a;if(w(He(r.F.G),Ht(t)))return r;var e=s(bt,t,s(De,7,s(Be,Re(t),r.F.G)));return C(r,{F:C(r.F,{G:e})})}}),qe=t(function(n,r){return jn(b(kt,function(n){return t(function(r,t){return t.push(An(n(r))),t})}(n),[],r))}),ze=function(n){return jn(b(kt,t(function(n,r){var t=n.a,e=n.b;return b(Sn,t,e,r)}),{},n))},Fe=jn,Ge=Yn("storeSession",function(n){return ze($([E("recentMailboxes",qe(Fe)(n.G))]))}),Ke=Gn,Ve=function(n){var r=n.a,t=n.b,e=n.c,u=s(Je,e,r.c),a=C(r,{c:u});return w(u.F,r.c.F)?E(a,t):E(a,Ke($([t,Ge(u.F)])))},We=function(n){return{$:1,a:n}},Ze={$:0},Ye=Ze,Qe=function(n){return{$:6,a:n}},Xe=function(n){return{$:1,a:n}},nu=function(n){return{$:7,a:n}},ru=function(n){return{$:2,a:n}},tu=function(n){return{$:8,a:n}},eu=function(n){return{$:3,a:n}},uu=function(n){return{$:9,a:n}},au=function(n){return{aI:n}},ou=function(n){return n},iu={$:-2},cu=iu,fu=S,su=t(function(n,r){n:for(;;){if(-2===r.$)return It;var t=r.b,e=r.c,u=r.d,a=r.e;switch(s(fu,n,t)){case 0:n=n,r=u;continue n;case 1:return Ht(e);default:n=n,r=a;continue n}}}),bu=a(function(n,r,t,e,u){return{$:-1,a:n,b:r,c:t,d:e,e:u}}),lu=a(function(n,r,t,e,u){if(-1!==u.$||u.a){if(-1!==e.$||e.a||-1!==e.d.$||e.d.a)return v(bu,n,r,t,e,u);e.a,p=e.b,h=e.c;var a=e.d,o=(a.a,a.b),i=a.c,c=a.d,f=a.e;m=e.e;return v(bu,0,p,h,v(bu,1,o,i,c,f),v(bu,1,r,t,m,u))}u.a;var s=u.b,b=u.c,l=u.d,d=u.e;if(-1!==e.$||e.a)return v(bu,n,s,b,v(bu,0,r,t,e,l),d);e.a;var p=e.b,h=e.c,g=e.d,m=e.e;return v(bu,0,r,t,v(bu,1,p,h,g,m),v(bu,1,s,b,l,d))}),vu=e(function(n,r,t){if(-2===t.$)return v(bu,0,n,r,iu,iu);var e=t.a,u=t.b,a=t.c,o=t.d,i=t.e;switch(s(fu,n,u)){case 0:return v(lu,e,u,a,b(vu,n,r,o),i);case 1:return v(bu,e,u,r,o,i);default:return v(lu,e,u,a,o,b(vu,n,r,i))}}),du=e(function(n,r,t){var e=b(vu,n,r,t);if(-1!==e.$||e.a)return e;e.a;var u=e.b,a=e.c,o=e.d,i=e.e;return v(bu,1,u,a,o,i)}),pu=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.e.d.$||n.e.d.a){n.a,u=n.b,a=n.c;var r=n.d,t=(r.a,i=r.b,c=r.c,f=r.d,s=r.e,n.e);t.a,l=t.b,d=t.c,e=t.d,$=t.e;return v(bu,1,u,a,v(bu,0,i,c,f,s),v(bu,0,l,d,e,$))}n.a;var e,u=n.b,a=n.c,o=n.d,i=(o.a,o.b),c=o.c,f=o.d,s=o.e,b=n.e,l=(b.a,b.b),d=b.c,p=((e=b.d).a,e.b),h=e.c,g=e.d,m=e.e,$=b.e;return v(bu,0,p,h,v(bu,1,u,a,v(bu,0,i,c,f,s),g),v(bu,1,l,d,m,$))}return n},hu=function(n){if(-1===n.$&&-1===n.d.$&&-1===n.e.$){if(-1!==n.d.d.$||n.d.d.a){n.a,u=n.b,a=n.c;var r=n.d,t=(r.a,i=r.b,c=r.c,r.d),e=(p=r.e,n.e);e.a,g=e.b,m=e.c,$=e.d,y=e.e;return v(bu,1,u,a,v(bu,0,i,c,t,p),v(bu,0,g,m,$,y))}n.a;var u=n.b,a=n.c,o=n.d,i=(o.a,o.b),c=o.c,f=o.d,s=(f.a,f.b),b=f.c,l=f.d,d=f.e,p=o.e,h=n.e,g=(h.a,h.b),m=h.c,$=h.d,y=h.e;return v(bu,0,i,c,v(bu,1,s,b,l,d),v(bu,1,u,a,p,v(bu,0,g,m,$,y)))}return n},gu=i(function(n,r,t,e,u,a,o){if(-1!==a.$||a.a){n:for(;;){if(-1===o.$&&1===o.a){if(-1===o.d.$){if(1===o.d.a){o.a,o.d.a;return hu(r)}break n}o.a,o.d;return hu(r)}break n}return r}a.a;var i=a.b,c=a.c,f=a.d,s=a.e;return v(bu,t,i,c,f,v(bu,0,e,u,s,o))}),mu=function(n){if(-1===n.$&&-1===n.d.$){var r=n.a,t=n.b,e=n.c,u=n.d,a=u.a,o=u.d,i=n.e;if(1===a){if(-1!==o.$||o.a){var c=pu(n);if(-1===c.$){var f=c.a,s=c.b,b=c.c,l=c.d,d=c.e;return v(lu,f,s,b,mu(l),d)}return iu}o.a;return v(bu,r,t,e,mu(u),i)}return v(bu,r,t,e,mu(u),i)}return iu},$u=t(function(n,r){if(-2===r.$)return iu;var t=r.a,e=r.b,u=r.c,a=r.d,o=r.e;if(A(n,e)<0){if(-1===a.$&&1===a.a){a.a;var i=a.d;if(-1!==i.$||i.a){var c=pu(r);if(-1===c.$){var f=c.a,b=c.b,l=c.c,d=c.d,h=c.e;return v(lu,f,b,l,s($u,n,d),h)}return iu}i.a;return v(bu,t,e,u,s($u,n,a),o)}return v(bu,t,e,u,s($u,n,a),o)}return s(yu,n,p(gu,n,r,t,e,u,a,o))}),yu=t(function(n,r){if(-1===r.$){var t=r.a,e=r.b,u=r.c,a=r.d,o=r.e;if(w(n,e)){var i=function(n){for(;;){if(-1!==n.$||-1!==n.d.$)return n;n=n.d}}(o);if(-1===i.$){var c=i.b,f=i.c;return v(lu,t,c,f,a,mu(o))}return iu}return v(lu,t,e,u,a,s($u,n,o))}return iu}),xu=t(function(n,r){var t=s($u,n,r);if(-1!==t.$||t.a)return t;t.a;var e=t.b,u=t.c,a=t.d,o=t.e;return v(bu,1,e,u,a,o)}),wu=e(function(n,r,t){var e=r(s(su,n,t));if(e.$)return s(xu,n,t);var u=e.a;return b(du,n,u,t)}),ku=function(n){return!n.$},ju=qn,Au=zn,Su=(t(function(n,r){if(r.$){var t=r.a;return Pt(t)}var e=r.a;return Ut(n(e))}),t(function(n,r){return{$:3,a:n,b:r}})),Mu=function(n){return{$:0,a:n}},Eu=t(function(n,r){return{$:4,a:n,b:r}}),Tu={$:2},Ou=function(n){return{$:1,a:n}},Cu=function(n){return{$:0,a:n}},Lu={$:1},Ru=t(function(n,r){return b(ur,"",ou,s(Me,r,n))}),Nu=t(function(n,r){if(r.$){var t=r.a;return Pt(n(t))}var e=r.a;return Ut(e)}),_u=function(n){return{$:4,a:n}},Bu={$:2},Hu={$:1},Iu=t(function(n,r){switch(r.$){case 0:var t=r.a;return Pt(function(n){return{$:0,a:n}}(t));case 1:return Pt(Hu);case 2:return Pt(Bu);case 3:var e=r.a;return Pt(function(n){return{$:3,a:n}}(e.a4));default:var u=r.b;return s(Nu,_u,n(u))}}),Pu={$:0},Uu=function(n){return{$:1,a:n}},Du=Mn,Ju=t(function(n,r){return{a$:n,a5:r}}),qu=Du(s(Ju,cu,h)),zu=Tn,Fu=function(n){return En(function(r){var t=n.f;2===t.$&&t.c&&t.c(),n.f=null,r(Mn(M))})},Gu=Ln,Ku=e(function(n,r,t){n:for(;;){if(r.b){var e=r.a,u=r.b;if(e.$){var a=e.a;return s(zu,function(r){var e=a.a8;if(1===e.$)return b(Ku,n,u,t);var o=e.a;return b(Ku,n,u,b(du,o,r,t))},Gu(b(er,n,ju(n),a)))}var o=e.a,i=s(su,o,t);if(1===i.$){n=n,r=u,t=t;continue n}var c=i.a;return s(zu,function(r){return b(Ku,n,u,s(xu,o,t))},Fu(c))}return Du(t)}}),Vu=u(function(n,r,t,e){return s(zu,function(n){return Du(s(Ju,n,t))},b(Ku,n,r,e.a$))}),Wu=e(function(n,r,t){var e=n(r);if(e.$)return t;var u=e.a;return s(bt,u,t)}),Zu=t(function(n,r){return b(_e,Wu(n),h,r)}),Yu=e(function(n,r,t){return s(zu,function(r){return s(zu,function(t){return Du(s(n,r,t))},t)},r)}),Qu=function(n){return b(_e,Yu(bt),Du(h),n)},Xu=u(function(n,r,t,e){var u=e.a,a=e.b;return w(r,u)?Ht(s(ju,n,a(t))):It}),na=e(function(n,r,t){var e=r.a,u=r.b;return s(zu,function(n){return Du(t)},Qu(s(Zu,b(Xu,n,e,u),t.a5)))}),ra=t(function(n,r){if(r.$){var t=r.a;return Uu({s:t.s,ax:t.ax,aE:s(ar,n,t.aE),aJ:t.aJ,aO:t.aO,a7:t.a7,a8:t.a8,a9:t.a9})}return function(n){return{$:0,a:n}}(r.a)}),ta=t(function(n,r){return{$:0,a:n,b:r}}),ea=t(function(n,r){var t=r.a,e=r.b;return s(ta,t,s(Me,e,n))});Un.Http=Dn(qu,Vu,na,ra,ea);var ua=Fn("Http"),aa=(Fn("Http"),function(n){return ua(Uu({s:!1,ax:n.ax,aE:n.aE,aJ:n.aJ,aO:n.aO,a7:n.a7,a8:n.a8,a9:n.a9}))}),oa=function(n){return aa({ax:Pu,aE:n.aE,aJ:h,aO:"GET",a7:It,a8:It,a9:n.a9})},ia=function(){var n=oa({aE:function(n){return s(Ru,n,Iu(Ut))}(ou),a9:"/serve/greeting"});return E(au(""),n)}(),ca=a(function(n,r,t,e,u){return{t:t,w:n,ai:u,an:e,a:r}}),fa=function(n){return{$:13,a:n}},sa=e(function(n,r,t){return s(ve,s(we,n,r),t)}),ba=un,la=ln,va=ou,da=s(la,va,ba),pa=c(function(n,r,t,e,u,a,o,i){return{bi:a,bn:t,aM:r,bz:n,bV:i,bX:o,b6:u,cc:e}}),ha=an,ga=b(sa,"seen",ha,b(sa,"size",ba,b(sa,"posix-millis",da,l(ke,"subject",Ae,"",b(sa,"to",je(Ae),l(ke,"from",Ae,"",b(sa,"id",Ae,b(sa,"mailbox",Ae,$e(pa))))))))),ma=function(n){return{$:0,a:n}},$a=dn,ya=t(function(n,r){return s(Ru,n,Iu(function(n){return s(Nu,se,s($a,r,n))}))}),xa=Du(0),wa=t(function(n,r){return b(_e,t(function(r,t){return s(bt,n(r),t)}),h,r)}),ka=t(function(n,r){return s(zu,function(r){return Du(n(r))},r)}),ja=t(function(n,r){var t=r;return Ln(s(zu,ju(n),t))}),Aa=e(function(n,r,t){return s(ka,function(n){return 0},Qu(s(wa,ja(n),r)))}),Sa=e(function(n,r,t){return Du(0)}),Ma=t(function(n,r){return s(ka,n,r)});Un.Task=Dn(xa,Aa,Sa,Ma);var Ea=Fn("Task"),Ta=t(function(n,r){return Ea(s(ka,n,r))}),Oa=t(function(n,r){return{$:0,a:n,b:r}}),Ca=function(n){return En(function(r){r(Mn(n(Date.now())))})}(va),La=function(n){return Ke($([s(Ta,fa,Ca),function(n){var r="/api/v1/mailbox/"+n;return oa({aE:s(ya,ma,je(ga)),a9:r})}(n)]))},Ra=t(function(n,r){return E(v(ca,n,function(n){return{$:0,a:n}}(r),1,"",va(0)),La(n))}),Na=t(function(n,r){return{Z:n,R:r}}),_a=jn,Ba=Yn("monitorCommand",_a),Ha=E(s(Na,!1,h),Ba(!0)),Ia=o(function(n,r,t,e,u,a){return{aF:t,aH:e,v:u,aN:n,aP:a,N:r}}),Pa=function(n){return n.length},Ua=Z,Da=t(function(n,r){return n<1?"":b(Ua,-n,Pa(r),r)}),Ja=function(n){var r=function(n){return Pa(n)<=3?n:r(b(Ua,0,-3,n))+","+s(Da,3,n)};return r(ee(n))},qa=function(n){switch(n.$){case 0:return 0;case 1:return 1;case 2:return 2;default:return 3}},za=$r("fill"),Fa=t(function(n,r){return{$:8,a:n,b:r}}),Ga=Fa($([za("rgba(50,200,50,0.7)")])),Ka={bs:16,bC:0,bD:0,cm:180},Va=$r("stroke"),Wa=$r("stroke-width"),Za=Fa($([Va("rgba(0,0,0,0.2)"),Wa("1.0")])),Ya=t(function(n,r){return{$:0,a:n,b:r}}),Qa=function(n){return{$:4,a:n}},Xa={$:6},no=t(function(n,r){return r.b?b(_e,bt,r,n):n}),ro=t(function(n,r){return function(n){return b(_e,no,h,n)}(s(wa,n,r))}),to=t(function(n,r){return A(n,r)<0?n:r}),eo=t(function(n,r){return r.$?n:r.a}),uo=function(n){var r=s(ro,function(n){return n},n),e=s(eo,E(0,0),He(r));return function(n){var r=n.a,t=r.a,e=r.b,u=n.b,a=u.a,o=u.b;return w(e,o)?E(E(t,s(to,0,e)),E(a,o)):E(E(t,e),E(a,o))}(b(_e,t(function(n,r){var t=n.a,e=n.b,u=r.a,a=u.a,o=u.b,i=r.b,c=i.a,f=i.b;return E(E(s(to,a,t),s(to,o,e)),E(s(Ot,c,t),s(Ot,f,e)))}),E(e,e),r))},ao=tn,oo=vr("http://www.w3.org/2000/svg"),io=oo("g"),co=oo("svg"),fo=$r("height"),so=$r("transform"),bo=$r("viewBox"),lo=$r("width"),vo=t(function(n,r){return n(s(ue," ",s(wa,ao,r)))}),po=t(function(n,r){return n(ao(r))}),ho=t(function(n,r){return s(co,$([s(po,lo,n.cm+2*n.bC),s(po,fo,n.bs+2*n.bD),s(vo,bo,$([0,0,n.cm+2*n.bC,n.bs+2*n.bD]))]),$([s(io,$([so("translate("+ao(n.bC)+","+ao(n.bD)+")")]),r)]))}),go=F,mo=function(n){return go(n)?0:n},$o=t(function(n,r){var t=r.a,e=t.a,u=t.b,a=r.b,o=a.a,i=a.b;return E(function(r){return mo((r-e)*(n.cm/(o-e)))},function(r){return mo((i-r)*(n.bs/(i-u)))})}),yo=u(function(n,r,t,e){return{Y:t,D:r,P:e,aO:n}}),xo=oo("path"),wo=$r("d"),ko=t(function(n,r){var t=n.a,e=n.b;return r+((""===r?"M":"L")+(ao(t)+" "))+ao(e)}),jo=t(function(n,r){var t=n.a,e=n.b;return s(wa,function(n){var r=n.a,u=n.b;return E(t(r),e(u))},r)}),Ao=t(function(n,r){return b(_e,ko,"",s(jo,n,r))}),So=u(function(n,r,t,e){return $([s(xo,L($([za("none"),Va("#000"),s(po,Wa,1),wo(s(Ao,e,n))]),r),h)])}),Mo=u(function(n,r,t,e){var u=t,a=u.a,o=a.a,i=a.b,c=u.b,f=c.a,s=(c.b,E(o,i)),b=E(f,i),v=L($([s]),L(n,$([b])));return l(So,v,r,t,e)}),Eo=oo("rect"),To=$r("x"),Oo=$r("y"),Co=a(function(n,r,t,e,u){var a=e.a,o=a.a,i=(a.b,e.b),c=i.a,f=(i.b,u.a),b=u.b;return s(wa,function(r){var e=r.a,u=r.b,a=n*((e-o)/(c-o)),i=u<0?E(b(u)-(b(u)-b(0)),b(u)-b(0)):E(b(u),b(0)-b(u)),l=i.a,v=i.b;return s(Eo,L($([s(po,To,f(e)-a),s(po,Oo,l),s(po,lo,n),s(po,fo,v)]),t),h)},r)}),Lo=oo("circle"),Ro=$r("cx"),No=$r("cy"),_o=$r("r"),Bo=u(function(n,r,t,e){return s(wa,function(n){var t=n.a,e=n.b;return s(Lo,L($([s(po,Ro,t),s(po,No,e),s(po,_o,2)]),r),h)},s(jo,e,n))}),Ho=e(function(n,r,t){for(;;){var e=s(wt,32,n),u=e.a,a=e.b;if(A(Lt(u),32)<0)return s(Rt,!0,{f:r,b:t,d:u});n=a,r=s(bt,yt(u),r),t=t+1}}),Io=function(n){return n.b?b(Ho,n,h,0):$t},Po=4294967295>>>32-gt,Uo=_,Do=e(function(n,r,t){for(;;){var e=s(Uo,Po&r>>>n,t);if(e.$){var u=e.a;return s(Uo,Po&r,u)}var a=e.a;n=n-gt,r=r,t=a}}),Jo=t(function(n,r){var t=r.a,e=r.b,u=r.c,a=r.d;return n<0||A(n,t)>-1?It:A(n,function(n){return n>>>5<<5}(t))>-1?Ht(s(Uo,Po&n,a)):Ht(b(Do,e,n,u))}),qo=function(n){return n.b},zo=lr,Fo=zo,Go=oo("text"),Ko=a(function(n,r,e,u,a){var o=u.a,i=(o.a,o.b,u.b),c=(i.a,i.b,Io(n));return s(ro,function(n){var r=n.a,t=n.b,u=t.a,a=t.b,o=s(Jo,r,c);if(1===o.$)return h;var i=o.a,f=(i.a,i.b),b=i.c;return $([s(Go,L($([s(po,To,u),s(po,Oo,a)]),L(e,f)),$([Fo(b)]))])},function(n){var r=n.a,e=t(function(n,r){var t=r.a,e=r.b;return E(t-1,s(bt,E(t,n),e))});return b(dt,e,E(r-1,h),n).b}(Io(s(jo,a,r))))}),Vo=u(function(n,r,t,e){return h}),Wo=u(function(n,r,t,e){var u=t,a=u.a,o=a.a,i=(a.b,u.b),c=i.a;i.b;return l(So,$([E(o,0),E(c,0)]),r,t,e)}),Zo=function(n){switch(n.$){case 0:var r=n.a,t=n.b;return l(yo,Co(r),t,h,!1);case 1:t=n.a;return l(yo,Bo,t,h,!1);case 2:t=n.a;return l(yo,So,t,h,!1);case 3:t=n.a;return l(yo,Mo,t,h,!1);case 4:t=n.a;return l(yo,Vo,t,h,!1);case 5:var e=n.a;t=s(wa,function(n){return n.a},e);return l(yo,Ko(e),t,h,!1);case 6:return l(yo,Wo,h,h,!1);case 7:var u=n.a;return C(Zo(u),{P:!0});default:var a=n.a;u=n.b;return C(Zo(u),{Y:a})}},Yo=t(function(n,r){var t=s(wa,Zo,r),e=uo(s(ro,function(n){return $([n.D])},s(Be,function(n){return!n.P},t))),u=s($o,n,e);return s(ho,n,s(ro,function(r){var t=r.P?E(uo($([r.D])),s($o,n,uo($([r.D])))):E(e,u),a=t.a,o=t.b;return l(r.aO,r.D,r.Y,a,o)},t))}),Qo=function(n){var r=function(){var r=He(n);return 1===r.$?0:r.a.a}();return s(Yo,Ka,$([Ga(s(Ya,2.5,n)),Za(Xa),Qa($([E(r,0),E(r,1)]))]))},Xo=Fa($([za("rgba(50,100,255,0.3)"),Va("rgba(50,100,255,1.0)"),Wa("1.0")])),ni=function(n){var r=function(){var r=He(n);return 1===r.$?0:r.a.a}();return s(Yo,Ka,$([Xo(function(n){return{$:3,a:n}}(n)),Za(Xa),Qa($([E(r,0),E(r,1)]))]))},ri=s(wa,function(n){return E(n,0)},s(ne,0,59)),ti=$([{g:"B",e:1},{g:"kB",e:1e3},{g:"MB",e:1e6},{g:"GB",e:1e9},{g:"TB",e:1e12},{g:"PB",e:1e15},{g:"EB",e:1e18}]),ei=$([{g:"B",e:1},{g:"KiB",e:1024},{g:"MiB",e:1048576},{g:"GiB",e:1073741824},{g:"TiB",e:1099511627776},{g:"PiB",e:0x4000000000000}]),ui=u(function(n,r,t,e){return{bw:r,bE:n,bG:t,b7:e}}),ai=Wr,oi=function(n){return s(ai,{ay:!1,aS:!1},n)},ii=/.^/,ci=s(eo,ii,oi("\\.")),fi=s(eo,ii,oi("^(\\d+\\.[^0]*)(0+)$")),si=t(function(n,r){return n<1?r:b(Ua,0,-n,r)}),bi=nn,li=Zr,vi=t(function(n,r){for(;;){if(!r.b)return!1;var t=r.a,e=r.b;if(n(t))return!0;n=n,r=e}}),di=K,pi=function(n){return b(di,bt,h,n)},hi=function(n){return n<0?-n:n},gi=function(n){return n===1/0||n===-1/0},mi=t(function(n,r){if(r.$)return It;var t=r.a;return Ht(n(t))}),$i=G,yi=function(n){return s($i,n,"")},xi=e(function(n,r,t){return n<=0?t:b(xi,n>>1,L(r,r),1&n?L(t,r):t)}),wi=t(function(n,r){return b(xi,n,r,"")}),ki=e(function(n,r,t){return L(t,s(wi,n-Pa(t),yi(r)))}),ji=function(n){for(var r=n.length,t=new Array(r),e=0;e=48&&a<57?s($i,Si(a+1),t):"0"},Ei=function(n){var r=s(oe,".",n);return r.b?r.b.b?E(r.a,r.b.a):E(r.a,"0"):E("0","0")},Ti=t(function(n,r){return n<1?r:b(Ua,n,Pa(r),r)}),Oi=X,Ci=function(n){for(var r=0,t=n.charCodeAt(0),e=43==t||45==t?1:0,u=e;u-1},t))));return a+(s(Ni,n,u/o.e)+" ")+o.g}return"0 B"})({_:2,O:".",U:0}),Hi={bo:d(Ia,"Goroutines",0,Ja,ni,ri,10),bp:d(Ia,"Heap # Objects",0,Ja,ni,ri,10),bq:d(Ia,"Heap Size",0,Bi,ni,ri,10),br:d(Ia,"Heap Used",0,Bi,ni,ri,10),S:It,bP:d(Ia,"Stored Messages",0,Ja,ni,ri,60),bR:d(Ia,"Store Size",0,Bi,ni,ri,60),bU:d(Ia,"Retention Deletes",0,Ja,Qo,ri,60),bZ:d(Ia,"Open Connections",0,Ja,ni,ri,10),b_:d(Ia,"Total Connections",0,Ja,Qo,ri,60),b0:d(Ia,"Messages Errors",0,Ja,Qo,ri,60),b2:d(Ia,"Messages Received",0,Ja,Qo,ri,60),b4:d(Ia,"Messages Warns",0,Ja,Qo,ri,60),b9:d(Ia,"System Memory",0,Bi,ni,ri,10),cl:d(Ia,"Open WebSockets",0,Ja,ni,ri,10),W:60},Ii=t(function(n,r){return b(_e,we,r,n)}),Pi=e(function(n,r,t){return s(ve,s(Ii,n,r),t)}),Ui=s(la,wa(s(Me,Ci,eo(0))),s(la,oe(","),Ae)),Di=b(Pi,$(["retention","SizeHist"]),Ui,b(Pi,$(["retention","RetainedSize"]),ba,b(Pi,$(["retention","RetainedHist"]),Ui,b(Pi,$(["retention","RetainedCurrent"]),ba,b(Pi,$(["retention","DeletesHist"]),Ui,b(Pi,$(["retention","DeletesTotal"]),ba,b(Pi,$(["smtp","WarnsHist"]),Ui,b(Pi,$(["smtp","WarnsTotal"]),ba,b(Pi,$(["smtp","ErrorsHist"]),Ui,b(Pi,$(["smtp","ErrorsTotal"]),ba,b(Pi,$(["smtp","ReceivedHist"]),Ui,b(Pi,$(["smtp","ReceivedTotal"]),ba,b(Pi,$(["smtp","ConnectsHist"]),Ui,b(Pi,$(["smtp","ConnectsTotal"]),ba,b(Pi,$(["smtp","ConnectsCurrent"]),ba,b(Pi,$(["http","WebSocketConnectsCurrent"]),ba,b(Pi,$(["goroutines"]),ba,b(Pi,$(["memstats","HeapObjects"]),ba,b(Pi,$(["memstats","HeapAlloc"]),ba,b(Pi,$(["memstats","HeapSys"]),ba,b(Pi,$(["memstats","Sys"]),ba,$e(function(n){return function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return function(i){return function(c){return function(f){return function(s){return function(b){return function(l){return function(v){return function(d){return function(p){return function(h){return function(g){return function(m){return function($){return function(y){return{bo:u,bp:e,bq:r,br:t,bP:g,bQ:m,bR:$,bS:y,bT:h,bU:p,bY:c,bZ:o,b_:i,b$:l,b0:b,b1:s,b2:f,b3:d,b4:v,b9:n,cl:a}}}}}}}}}}}}}}}}}}}}}})))))))))))))))))))))),Ji=oa({aE:s(ya,function(n){return{$:0,a:n}},Di),a9:"/debug/vars"}),qi=Ji,zi=Kn,Fi=Ke(h),Gi=t(function(n,r){var t=function(){switch(n.$){case 0:var t=n.a;return T(r,Fi,We("Unknown route requested: "+t));case 1:var e=ia,u=e.a,a=e.b;return T(C(r,{h:Le(u)}),s(zi,Qe,a),Ye);case 2:var o=n.a,i=s(Ra,o,It);u=i.a,a=i.b;return T(C(r,{h:Xe(u)}),s(zi,nu,a),Ye);case 3:var c=n.a,f=n.b,b=s(Ra,c,Ht(f));u=b.a,a=b.b;return T(C(r,{h:Xe(u)}),s(zi,nu,a),Ye);case 4:var l=Ha;u=l.a,a=l.b;return T(C(r,{h:ru(u)}),s(zi,tu,a),Ye);default:return T(C(r,{h:eu(Hi)}),s(zi,uu,qi),Ye)}}(),e=t.a,u=t.b,a=t.c;return 2===r.h.$?T(e,Ke($([Ba(!1),u])),a):T(e,u,a)}),Ki={$:1},Vi=function(n){return{$:2,a:n}},Wi=t(function(n,r){return{$:3,a:n,b:r}}),Zi={$:4},Yi={$:5},Qi=a(function(n,r,t,e,u){return{n:e,q:t,m:r,N:u,r:n}}),Xi=t(function(n,r){var t=r.r,e=r.m,u=r.q,a=r.n,o=r.N;return v(Qi,t,e,u,a,n(o))}),nc=t(function(n,r){var t=r;return function(r){var e=r.r,u=r.m,a=r.q,o=r.n,i=r.N;return s(wa,Xi(i),t(v(Qi,e,u,a,o,n)))}}),rc=function(n){return function(r){var t=r.r,e=r.m,u=r.q,a=r.n,o=r.N;if(e.b){var i=e.a,c=e.b;return w(i,n)?$([v(Qi,s(bt,i,t),c,u,a,o)]):h}return h}},tc=t(function(n,r){var t=n,e=r;return function(n){return s(ro,e,t(n))}}),ec=s(t(function(n,r){return function(n){var t=n.r,e=n.m,u=n.q,a=n.n,o=n.N;if(e.b){var i=e.a,c=e.b,f=r(i);if(f.$)return h;var b=f.a;return $([v(Qi,s(bt,i,t),c,u,a,o(b))])}return h}}),"STRING",Ht),uc=$([s(nc,Ki,function(n){return $([n])}),s(nc,Wi,s(tc,rc("m"),s(tc,ec,ec))),s(nc,Vi,s(tc,rc("m"),ec)),s(nc,Zi,rc("monitor")),s(nc,Yi,rc("status"))]),ac=function(n){if(n.b){if(""!==n.a||n.b.b){var r=n.a,t=n.b;return s(bt,r,ac(t))}return h}return h},oc=function(n){try{return Ht(decodeURIComponent(n))}catch(n){return It}},ic=t(function(n,r){if(1===r.$)return Ht($([n]));var t=r.a;return Ht(s(bt,n,t))}),cc=t(function(n,r){var t=s(oe,"=",n);if(t.b&&t.b.b&&!t.b.b.b){var e=t.a,u=t.b.a,a=oc(e);if(1===a.$)return r;var o=a.a,i=oc(u);if(1===i.$)return r;var c=i.a;return b(wu,o,ic(c),r)}return r}),fc=t(function(n,r){return function(n){n:for(;;){if(n.b){var r=n.a,t=n.b,e=r.m;if(e.b){if(""!==e.a||e.b.b){n=t;continue n}return Ht(r.N)}return Ht(r.N)}return It}}(n(v(Qi,h,function(n){var r=s(oe,"/",n);if(r.b&&""===r.a){var t=r.b;return ac(t)}return ac(t=r)}(r.bK),function(n){if(1===n.$)return cu;var r=n.a;return b(_e,cc,cu,s(oe,"&",r))}(r.aZ),r.aG,ou)))}),sc=function(n){var r=s(fc,function(n){return function(r){return s(ro,function(n){return n(r)},n)}}(uc),n);return 1===r.$?function(n){return{$:0,a:n}}(n.bK):r.a},bc=e(function(n,r,t){var e=b(Ce,t,r,Te(n)),u=sc(r),a=ia.a,o={w:"",h:Le(a),c:e};return Ve(s(Gi,u,o))}),lc=function(n){return{$:3,a:n}},vc=function(n){return{$:6,a:n}},dc=Gn,pc=dc(h),hc=t(function(n,r){return{$:0,a:n,b:r}}),gc=t(function(n,r){return{aX:r,a6:n}}),mc=Du(s(gc,cu,cu)),$c=e(function(n,r,t){for(;;){if(-2===t.$)return r;var e=t.b,u=t.c,a=t.d,o=t.e,i=n,c=b(n,e,u,b($c,n,r,a));n=i,r=c,t=o}}),yc=o(function(n,r,u,a,o,i){var c=e(function(t,e,a){n:for(;;){var o=a.a,i=a.b;if(o.b){var c=o.a,f=c.a,s=c.b,v=o.b;if(A(f,t)<0){t=t,e=e,a=E(v,b(n,f,s,i));continue n}return A(f,t)>0?E(o,b(u,t,e,i)):E(v,l(r,f,s,e,i))}return E(o,b(u,t,e,i))}}),f=b($c,c,E(lt(a),i),o),s=f.a,v=f.b;return b(kt,t(function(r,t){var e=r.a,u=r.b;return b(n,e,u,t)}),v,s)}),xc=t(function(n,r){var t=n.a,e=n.b,u=s(su,t,r);if(1===u.$)return b(du,t,$([e]),r);var a=u.a;return b(du,t,s(bt,e,a),r)}),wc=fr,kc=e(function(n,r,t){if(r.b){var e=r.a,u=r.b,a=Gu(s(wc,e,s(Au,n,e)));return s(zu,function(r){return b(kc,n,u,b(du,e,r,t))},a)}return Du(t)}),jc=e(function(n,r,t){var a=t.aX,o=e(function(n,r,t){var e=t.a,u=t.b,a=t.c;return T(e,u,s(zu,function(n){return a},Fu(r)))}),i=b(kt,xc,cu,r),c=e(function(n,r,t){var e=t.a,u=t.b,a=t.c;return T(s(bt,n,e),u,a)}),f=u(function(n,r,t,e){var u=e.a,a=e.b,o=e.c;return T(u,b(du,n,t,a),o)}),l=d(yc,c,f,o,i,a,T(h,cu,Du(0))),v=l.a,p=l.b,g=l.c;return s(zu,function(n){return Du(s(gc,i,n))},s(zu,function(r){return b(kc,n,v,p)},g))}),Ac=e(function(n,r,t){var e=s(su,r,t.a6);if(1===e.$)return Du(t);var u=e.a;return s(zu,function(n){return Du(t)},s(zu,function(r){return Qu(s(wa,function(t){return s(ju,n,t(r))},u))},Ca))}),Sc=e(function(n,r,t){return n(r(t))}),Mc=t(function(n,r){var t=r.a,e=r.b;return s(hc,t,s(Sc,n,e))});Un.Time=Dn(mc,jc,Ac,0,Mc);var Ec=Fn("Time"),Tc=t(function(n,r){return Ec(s(hc,n,r))}),Oc=function(n){return{$:0,a:n}},Cc=function(n){return{$:1,a:n}},Lc=function(n){return{$:0,a:n}},Rc=nr("monitorMessage",ye),Nc=Kn,_c=function(n){return{$:1,a:n}},Bc=function(n){switch(n.$){case 1:var r=n.a;return s(Nc,nu,function(n){var r=function(){var r=n.a;return 1===r.$&&2===r.b.$?r.b.a.o.bV?pc:s(Tc,250,vc):pc}();return dc($([s(Tc,3e4,fa),r]))}(r));case 2:r=n.a;return s(Nc,tu,function(n){var r=Rc(pe(me($([s(la,Cc,ga),s(la,Oc,ha)]))));return s(Nc,Lc,r)}());case 3:r=n.a;return s(Nc,uu,s(Tc,1e4,_c));default:return pc}},Hc=nr("onSessionChange",ye)(pe(Se)),Ic={$:4},Pc=function(n){switch(n.$){case 0:return"Bad URL: "+n.a;case 1:return"HTTP timeout";case 2:return"HTTP Network error";case 3:var r=n.a;return"Bad HTTP status: "+ee(r);default:return"Bad HTTP body: "+n.a}},Uc=e(function(n,r,t){if(r.$){var e=r.a;return T(t,Fi,We(Pc(e)))}var u=r.a;return T(au(u),Fi,Ye)}),Dc=function(n){return{$:5,a:n}},Jc={$:3},qc=e(function(n,r,t){return{aJ:n,H:t,T:r}}),zc={$:0},Fc=t(function(n,r){return{$:1,a:n,b:r}}),Gc=function(n){return{$:2,a:n}},Kc=e(function(n,r,t){return{bh:t,bl:r,aM:n}}),Vc=b(sa,"content-type",Ae,b(sa,"filename",Ae,b(sa,"id",Ae,$e(Kc)))),Wc=b(sa,"attachments",je(Vc),b(sa,"html",Ae,b(sa,"text",Ae,b(sa,"seen",ha,b(sa,"size",ba,b(sa,"posix-millis",da,l(ke,"subject",Ae,"",b(sa,"to",je(Ae),l(ke,"from",Ae,"",b(sa,"id",Ae,b(sa,"mailbox",Ae,$e(function(n){return function(r){return function(t){return function(e){return function(u){return function(a){return function(o){return function(i){return function(c){return function(f){return function(s){return{be:s,bi:a,bn:t,bu:f,aM:r,bz:n,bV:i,bX:o,b6:u,ca:c,cc:e}}}}}}}}}}}})))))))))))),Zc=function(n){return{$:3,a:n}},Yc=t(function(n,r){var t="/serve/m/"+n+"/"+r;return oa({aE:s(ya,Zc,Wc),a9:t})}),Qc=t(function(n,r){return b(ur,"arraybuffer",or,s(Me,r,n))}),Xc=function(n){return s(Qc,n,Iu(function(n){return Ut(0)}))},nf=t(function(n,r){return aa({ax:Pu,aE:Xc(n),aJ:h,aO:"DELETE",a7:It,a8:It,a9:r})}),rf=function(n){return{$:9,a:n}},tf=t(function(n,r){var e="/api/v1/mailbox/"+r.bz+"/"+r.aM,u=t(function(n,r){return C(r,{aJ:s(Be,n,r.aJ)})}),a=s(nf,rf,e),o=n.a;if(1===o.$){var i=o.a;return T(C(n,{a:s(Fc,s(u,function(n){return!w(n.aM,r.aM)},i),zc)}),a,Ye)}return T(n,a,Ye)}),ef=e(function(n,r,t){return aa({ax:t,aE:Xc(n),aJ:h,aO:"PATCH",a7:It,a8:It,a9:r})}),uf=function(n){return{$:7,a:n}},af=t(function(n,r){var e=n.a;if(1===e.$&&2===e.b.$){var u=e.a,a=e.b.a,o="/api/v1/mailbox/"+r.bz+"/"+r.aM,i=t(function(n,r){return C(r,{aJ:s(wa,n,r.aJ)})}),c=b(ef,uf,o,function(n){return s(ir,"application/json",s(ce,0,n))}(ze($([E("seen",_a(!0))]))));return T(C(n,{a:s(Fc,s(i,function(n){return w(n.aM,r.aM)?C(n,{bV:!0}):n},u),Gc(C(a,{Q:It,o:C(r,{bV:!0})})))}),c,Ze)}return T(n,Fi,Ye)}),of=function(n){return{$:5,a:n}},cf=t(function(n,r){return{Q:r,o:n}}),ff=t(function(n,r){var t=""===r.bu?0:n.t,e=n.a;if(e.$){var u=e.a;return T(C(n,{t:t,a:s(Fc,C(u,{T:Ht(r.aM)}),Gc(s(cf,r,It)))}),s(Ta,of,Ca),Ye)}return T(n,Fi,Ye)}),sf={$:1},bf=function(n){return{$:3,a:n}},lf=t(function(n,r){var t=n.a;if(!t.$)return n;var e=t.a,u=t.b,a=C(e,{T:Ht(r)});switch(u.$){case 0:case 1:return C(n,{a:s(Fc,a,sf)});case 2:default:var o=u.a;return C(n,{a:s(Fc,a,bf(o))})}}),vf=e(function(n,r,t){return T(s(lf,r,t),s(Yc,r.w,t),Dc(r.w))}),df=function(n){return{$:11,a:n}},pf=function(n){return n.toLowerCase()},hf=t(function(n,r){var t=Pa(r)>1?pf(r):"",e=n.a;if(e.$){var u=e.a,a=e.b;return T(C(n,{an:r,a:s(Fc,C(u,{H:t}),a)}),Fi,Ye)}return T(n,Fi,Ye)}),gf=function(n){var r=function(){switch(n.$){case 0:case 1:return h;case 2:return $(["m",n.a]);case 3:return $(["m",n.a,n.b]);case 4:return $(["monitor"]);default:return $(["status"])}}();return"/"+s(ue,"/",r)},mf=function(n){return{$:1,a:n}},$f=function(n){return{$:0,a:n}},yf=ou,xf=function(n){for(;;){n=n}},wf=rn,kf=function(n){return""===n},jf=t(function(n,r){return n<1?"":b(Ua,0,n,r)}),Af=Q,Sf=o(function(n,r,t,e,u,a){return{aG:a,aK:r,bK:e,aV:t,aY:n,aZ:u}}),Mf=a(function(n,r,t,e,u){if(kf(u)||s(Af,"@",u))return It;var a=s(wf,":",u);if(a.b){if(a.b.b)return It;var o=a.a,i=Ci(s(Ti,o+1,u));if(1===i.$)return It;var c=i;return Ht(d(Sf,n,s(jf,o,u),c,r,t,e))}return Ht(d(Sf,n,u,It,r,t,e))}),Ef=u(function(n,r,t,e){if(kf(e))return It;var u=s(wf,"/",e);if(u.b){var a=u.a;return v(Mf,n,s(Ti,a,e),r,t,s(jf,a,e))}return v(Mf,n,"/",r,t,e)}),Tf=e(function(n,r,t){if(kf(t))return It;var e=s(wf,"?",t);if(e.b){var u=e.a;return l(Ef,n,Ht(s(Ti,u+1,t)),r,s(jf,u,t))}return l(Ef,n,It,r,t)}),Of=t(function(n,r){if(kf(r))return It;var t=s(wf,"#",r);if(t.b){var e=t.a;return b(Tf,n,Ht(s(Ti,e+1,r)),s(jf,e,r))}return b(Tf,n,It,r)}),Cf=function(n){return s(Oi,"http://",n)?s(Of,0,s(Ti,7,n)):s(Oi,"https://",n)?s(Of,1,s(Ti,8,n)):It},Lf=rt,Rf=function(n){return s(Me,gf,Lf(n))},Nf=function(n){return n},_f=e(function(n,r,t){switch(r.$){case 1:var e=r.a;return T(s(lf,t,e),Ke($([s(Rf,n.by,s(Wi,t.w,e)),s(Yc,t.w,e)])),Jc);case 2:e=r.a;return b(vf,n,t,e);case 8:var u=r.a;return s(tf,t,u);case 9:if(r.a.$){var a=r.a.a;return T(t,Fi,We(Pc(a)))}return T(t,Fi,Ye);case 0:if(r.a.$){a=r.a.a;return T(t,Fi,We(Pc(a)))}var o=r.a.a,i=t.a;if(i.$)return T(t,Fi,Ye);var c=i.a,f=C(t,{a:s(Fc,b(qc,o,It,""),zc)});if(c.$)return T(f,Fi,Dc(t.w));e=c.a;return b(vf,n,f,e);case 7:if(r.a.$){a=r.a.a;return T(t,Fi,We(Pc(a)))}return T(t,Fi,Ye);case 3:if(r.a.$){a=r.a.a;return T(t,Fi,We(Pc(a)))}u=r.a.a;return s(ff,t,u);case 4:return T(C(t,{t:r.a}),Fi,Ye);case 12:var l=r.a;return s(hf,t,l);case 5:var v=r.a,d=t.a;if(1===d.$&&2===d.b.$){var p=d.a,g=d.b.a;if(g.o.bV)return T(t,Fi,Ye);var m=Nf(v)+1500;return T(C(t,{a:s(Fc,p,Gc(C(g,{Q:Ht(m)})))}),Fi,Ye)}return T(t,Fi,Ye);case 10:return function(n){var r=s(nf,df,"/api/v1/mailbox/"+n.w),t=n.a;if(1===t.$)return t.a,T(C(n,{a:s(Fc,b(qc,h,It,""),zc)}),r,Ye);return T(n,r,Ye)}(t);case 11:if(r.a.$){a=r.a.a;return T(t,Fi,We(Pc(a)))}return T(t,Fi,Ye);case 6:var y=r.a,x=t.a;if(1===x.$&&2===x.b.$){u=x.b.a.o;if((m=x.b.a.Q).$)return T(t,Fi,Ye);var w=m.a;return A(Nf(y),w)>-1?s(af,t,u):T(t,Fi,Ye)}return T(t,Fi,Ye);default:return T(C(t,{ai:y=r.a}),Fi,Ye)}}),Bf=e(function(n,r,t){if(r.$){u=r.a;return T(t,s(Rf,n.by,s(Wi,u.bz,u.aM)),Ye)}if(r.a.$){var e=r.a.a;return T(t,Fi,We(se(e)))}if(r.a.a.$){var u=r.a.a.a;return T(C(t,{R:s(bt,u,t.R)}),Fi,Ye)}return T(C(t,{Z:r.a.a.a}),Fi,Ye)}),Hf={$:2},If=function(n){if(n.b){n.a;var r=n.b;return Ht(r)}return It},Pf=e(function(n,r,t){return C(n,{v:L(s(eo,h,If(n.v)),$([E(r,t)])),N:t})}),Uf=e(function(n,r,t){for(;;){if(r<=0)return n;n=s(bt,t,n),r=r-1,t=t}}),Df=t(function(n,r){return b(Uf,h,n,r)}),Jf=function(n){var r=60-Yt(n);return r>0?L(s(Df,r,0),n):n},qf=e(function(n,r,e){return C(n,{v:s(re,t(function(n,r){return E(n,r)}),Jf(e)),N:r})}),zf=e(function(n,r,e){return C(n,{v:s(re,t(function(n,r){return E(n,r)}),function(n){var r=s(eo,h,If(n));return b(Qt,Ct,r,n)}(Jf(e))),N:r})}),Ff=t(function(n,r){var t=r.W;return C(r,{bo:b(Pf,r.bo,t,n.bo),bp:b(Pf,r.bp,t,n.bp),bq:b(Pf,r.bq,t,n.bq),br:b(Pf,r.br,t,n.br),S:Ht(n),bP:b(qf,r.bP,n.bP,n.bQ),bR:b(qf,r.bR,n.bR,n.bS),bU:b(zf,r.bU,n.bU,n.bT),bZ:b(Pf,r.bZ,t,n.bZ),b_:b(zf,r.b_,n.b_,n.bY),b0:b(zf,r.b0,n.b0,n.b$),b2:b(zf,r.b2,n.b2,n.b1),b4:b(zf,r.b4,n.b4,n.b3),b9:b(Pf,r.b9,t,n.b9),cl:b(Pf,r.cl,t,n.cl),W:t+1})}),Gf=e(function(n,r,t){if(r.$){r.a;return T(t,Ji,Hf)}if(r.a.$){var e=r.a.a;return T(t,Fi,We(Pc(e)))}var u=r.a.a;return T(s(Ff,u,t),Fi,Ye)}),Kf=t(function(n,r){var t=a(function(n,t,e,u,a){var o=b(e,r.c,u,a),i=o.a,c=o.b,f=o.c;return T(C(r,{h:n(i)}),s(zi,t,c),f)}),e=E(n,r.h);n:for(;;)switch(e.b.$){case 0:if(6===e.a.$){var u=e.a.a,o=e.b.a;return v(t,Le,Qe,Uc,u,o)}break n;case 1:if(7===e.a.$){u=e.a.a,o=e.b.a;return v(t,Xe,nu,_f,u,o)}break n;case 2:if(8===e.a.$){u=e.a.a,o=e.b.a;return v(t,ru,tu,Bf,u,o)}break n;default:if(9===e.a.$){u=e.a.a,o=e.b.a;return v(t,eu,uu,Gf,u,o)}break n}return T(r,Fi,Ye)}),Vf=function(n){return s(Ta,xf,En(function(r){try{et.location=n}catch(n){sr.location.reload(!1)}}))},Wf=t(function(n,r){if(1===n.$)return r;var t=n.a;return r+":"+ee(t)}),Zf=e(function(n,r,t){return 1===r.$?t:L(t,L(n,r.a))}),Yf=t(function(n,r){return Ve(function(){switch(n.$){case 2:var t=n.a;if(t.$){e=t.a;return T(r,Vf(e),Ye)}var e=t.a;return T(r,s(Lf,r.c.by,function(n){var r=n.aY?"https://":"http://";return b(Zf,"#",n.aG,b(Zf,"?",n.aZ,L(s(Wf,n.aV,L(r,n.aK)),n.bK)))}(e)),Ye);case 1:e=n.a;return r.c.am?s(Gi,sc(e),r):T(r,Fi,Ic);case 0:var u=n.a;return T(r,s(Rf,r.c.by,u),Ye);case 3:if(n.a.$){var a=n.a.a;return T(r,Fi,We("Error decoding session: "+se(a)))}var o=n.a.a,i=r.c;return T(C(r,{c:C(i,{F:o})}),Fi,Ye);case 4:var c=n.a;return T(C(r,{w:c}),Fi,Ye);case 5:c=n.a;return T(C(r,{w:""}),s(Rf,r.c.by,Vi(c)),Ye);default:return s(Kf,n,r)}}())}),Qf=function(n){return{$:4,a:n}},Xf=function(n){return{$:5,a:n}},ns=dr("div"),rs=function(n){return dr(function(n){return"script"==n?"p":n}(n))},ts=t(function(n,r){return s(mr,n,Fe(r))}),es=ts("className"),us=ts("id"),as=t(function(n,r){return s(mr,function(n){return"innerHTML"==n||"formAction"==n?"data-"+n:n}(n),yr(r))}),os=t(function(n,r){return{bg:s(ns,$([us("page")]),$([b(rs,"rendered-html",$([es("greeting"),s(as,"content",Fe(r.aI))]),h)])),cb:"Inbucket"}}),is=dr("a"),cs=dr("td"),fs=zo,ss=dr("tr"),bs=function(n){return s(ts,"href",function(n){return/^javascript:/i.test(n.replace(/\s/g,""))?"":n}(n))},ls=ts("target"),vs=t(function(n,r){var t=n+(r.aM+"/")+r.bl;return s(ss,h,$([s(cs,h,$([s(is,$([bs(t),ls("_blank")]),$([fs(r.bl)])),fs(" ("+r.bh+") ")])),s(cs,h,$([s(is,$([bs(t),function(n){return s(ts,"download",n)}(r.bl),es("button")]),$([fs("Download")]))]))]))}),ds=dr("table"),ps=dr("article"),hs=dr("nav"),gs=function(n){return es(s(ue," ",s(wa,St,s(Be,qo,n))))},ms=gr,$s=t(function(n,r){return s(ms,n,function(n){return{$:0,a:n}}(r))}),ys=function(n){return s($s,"click",$e(n))},xs=t(function(n,r){var e=t(function(n,t){return s(is,$([gs($([E("active",w(r,n))])),ys(function(n){return{$:4,a:n}}(n)),bs("javacript:void(0)")]),$([fs(t)]))}),u=s(e,0,"Plain Text"),a=s(e,1,"Safe HTML"),o=""===n.bu?$([u]):$([a,u]);return s(ns,$([es("tab-panel")]),$([s(hs,$([es("tab-bar")]),o),s(ps,$([es("message-body")]),$([b(rs,"rendered-html",$(1===r?[s(as,"content",Fe(n.bu))]:[s(as,"content",Fe(n.ca))]),h)]))]))}),ws=s(Oa,0,h),ks={$:22},js={$:6},As=function(n){return n.toUpperCase()},Ss=U,Ms=t(function(n,r){return Tt(n/r)}),Es=e(function(n,r,t){for(;;){if(!t.b)return r+n;var e=t.a,u=t.b;if(A(e.au,r)<0)return r+e.aT;n=n,r=r,t=u}}),Ts=t(function(n,r){var t=n.a,e=n.b;return b(Es,t,s(Ms,Nf(r),6e4),e)}),Os=t(function(n,r){return s(Ss,24,s(Ms,s(Ts,n,r),60))}),Cs=t(function(n,r){return s(Ss,1e3,Nf(r))}),Ls=t(function(n,r){return s(Ss,60,s(Ts,n,r))}),Rs=function(n){var r=s(Ms,n,1440)+719468,t=(r>=0?r:r-146096)/146097|0,e=r-146097*t,u=(e-(e/1460|0)+(e/36524|0)-(e/146096|0))/365|0,a=e-(365*u+(u/4|0)-(u/100|0)),o=(5*a+2)/153|0,i=o+(o<10?3:-9);return{aA:a-((153*o+2)/5|0)+1,aQ:i,bb:u+400*t+(i<=2?1:0)}},Ns=t(function(n,r){switch(Rs(s(Ts,n,r)).aQ){case 1:return 0;case 2:return 1;case 3:return 2;case 4:return 3;case 5:return 4;case 6:return 5;case 7:return 6;case 8:return 7;case 9:return 8;case 10:return 9;case 11:return 10;default:return 11}}),_s=t(function(n,r){return s(Ss,60,s(Ms,Nf(r),1e3))}),Bs=t(function(n,r){switch(s(Ss,7,s(Ms,s(Ts,n,r),1440))){case 0:return 3;case 1:return 4;case 2:return 5;case 3:return 6;case 4:return 0;case 5:return 1;default:return 2}}),Hs=e(function(n,r,t){return n.cd(s(Os,r,t))}),Is=t(function(n,r){return Rs(s(Ts,n,r)).aA}),Ps=$([6,0,1,2,3,4,5]),Us=t(function(n,r){return function(n){return n.a}(s(eo,E(0,6),He(s(Be,function(t){return w(t.b,s(Bs,n,r))},s(re,t(function(n,r){return E(n,r)}),Ps)))))}),Ds=t(function(n,r){return Rs(s(Ts,n,r)).bb}),Js=t(function(n,r){switch(r){case 0:return 31;case 1:return function(n){return!(s(Ss,4,n)||!s(Ss,100,n)&&s(Ss,400,n))}(n)?29:28;case 2:return 31;case 3:return 30;case 4:return 31;case 5:return 30;case 6:case 7:return 31;case 8:return 30;case 9:return 31;case 10:return 30;default:return 31}}),qs=$([0,1,2,3,4,5,6,7,8,9,10,11]),zs=t(function(n,r){return s(eo,E(0,0),He(s(Be,function(t){t.a;return w(t.b,s(Ns,n,r))},s(re,t(function(n,r){return E(n,r)}),qs))))}),Fs=t(function(n,r){return 1+function(n){var r=n.a;n.b;return r}(s(zs,n,r))}),Gs=t(function(n,r){var t=s(De,s(Fs,n,r)-1,qs);return function(n){return b(kt,Et,0,n)}(s(wa,Js(s(Ds,n,r)),t))+s(Is,n,r)}),Ks=t(function(n,r){return s(Fs,n,r)/4|0}),Vs=t(function(n,r){var t=ee(r),e=n-Pa(t);return L(s(ue,"",s(wa,function(n){return"0"},s(ne,1,e))),t)}),Ws=function(n){return n?n<=12?n:n-12:12},Zs=q(315576e5),Ys=t(function(n,r){return va(Zs*s(Ds,n,r))}),Qs=t(function(n,r){var t=s(Ys,n,r),e=s(Us,n,t);return 1+((s(Gs,n,r)+e)/7|0)}),Xs=t(function(n,r){return ee(s(Ds,n,r))}),nb=u(function(n,r,t,e){switch(e.$){case 0:return ee(s(Fs,r,t));case 1:return function(r){return L(ee(r),n.A(r))}(s(Fs,r,t));case 2:return s(Vs,2,s(Fs,r,t));case 3:return n.ce(s(Ns,r,t));case 4:return n.cf(s(Ns,r,t));case 17:return ee(1+s(Ks,r,t));case 18:return function(r){return L(ee(r),n.A(r))}(1+s(Ks,r,t));case 5:return ee(s(Is,r,t));case 6:return function(r){return L(ee(r),n.A(r))}(s(Is,r,t));case 7:return s(Vs,2,s(Is,r,t));case 8:return ee(s(Gs,r,t));case 9:return function(r){return L(ee(r),n.A(r))}(s(Gs,r,t));case 10:return s(Vs,3,s(Gs,r,t));case 11:return ee(s(Us,r,t));case 12:return function(r){return L(ee(r),n.A(r))}(s(Us,r,t));case 13:return n.cg(s(Bs,r,t));case 14:return n.ch(s(Bs,r,t));case 19:return ee(s(Qs,r,t));case 20:return function(r){return L(ee(r),n.A(r))}(s(Qs,r,t));case 21:return s(Vs,2,s(Qs,r,t));case 15:return s(Da,2,s(Xs,r,t));case 16:return s(Xs,r,t);case 22:return As(b(Hs,n,r,t));case 23:return pf(b(Hs,n,r,t));case 24:return ee(s(Os,r,t));case 25:return s(Vs,2,s(Os,r,t));case 26:return ee(Ws(s(Os,r,t)));case 27:return s(Vs,2,Ws(s(Os,r,t)));case 28:return ee(1+s(Os,r,t));case 29:return s(Vs,2,1+s(Os,r,t));case 30:return ee(s(Ls,r,t));case 31:return s(Vs,2,s(Ls,r,t));case 32:return ee(s(_s,r,t));case 33:return s(Vs,2,s(_s,r,t));case 34:return ee(s(Cs,r,t));case 35:return s(Vs,3,s(Cs,r,t));default:return e.a}}),rb=function(n){switch(n){case 0:return"January";case 1:return"February";case 2:return"March";case 3:return"April";case 4:return"May";case 5:return"June";case 6:return"July";case 7:return"August";case 8:return"September";case 9:return"October";case 10:return"November";default:return"December"}},tb=function(n){switch(n){case 0:return"Monday";case 1:return"Tuesday";case 2:return"Wednesday";case 3:return"Thursday";case 4:return"Friday";case 5:return"Saturday";default:return"Sunday"}},eb=u(function(n,r,t,e){return s(ue,"",s(wa,b(nb,n,t,e),r))})(d(o(function(n,r,t,e,u,a){return{cd:u,ce:r,cf:n,A:a,cg:e,ch:t}}),rb,s(Me,rb,jf(3)),tb,s(Me,tb,jf(3)),function(n){return n>11?"pm":"am"},function(n){switch(s(Ss,100,n)){case 11:case 12:case 13:return"th";default:switch(s(Ss,10,n)){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}})),ub={$:26},ab={$:31},ob={$:4},ib={$:33},cb=function(n){return{$:36,a:n}},fb={$:16},sb=dr("button"),bb=dr("dd"),lb=dr("dl"),vb=dr("dt"),db=t(function(n,r){var t="/serve/m/"+n.bz+"/"+n.aM+"/source";return s(ns,h,$([s(ns,$([es("button-bar")]),$([s(sb,$([es("danger"),ys(function(n){return{$:8,a:n}}(n))]),$([fs("Delete")])),s(is,$([bs(t),ls("_blank")]),$([s(sb,h,$([fs("Source")]))]))])),s(lb,$([us("message-header")]),$([s(vb,h,$([fs("From:")])),s(bb,h,$([fs(n.bn)])),s(vb,h,$([fs("To:")])),s(bb,h,s(wa,fs,n.cc)),s(vb,h,$([fs("Date:")])),s(bb,h,$([function(n){return fs(b(eb,$([ob,cb(" "),js,cb(", "),fb,cb(" "),ub,cb(":"),ab,cb(":"),ib,cb(" "),ks]),ws,n))}(n.bi)])),s(vb,h,$([fs("Subject:")])),s(bb,h,$([fs(n.b6)]))])),s(xs,n,r),function(n){var r="/serve/m/attach/"+n.bz+"/"+n.aM+"/";return function(n){return!n.b}(n.be)?s(ns,h,h):s(ds,$([es("attachments well")]),s(wa,vs(r),n.be))}(n)]))}),pb=function(n){return{$:12,a:n}},hb={$:10},gb={ab:function(n){return n<2?"tomorrow":"in "+ee(n)+" days"},ac:function(n){return n<2?"in an hour":"in "+ee(n)+" hours"},ad:function(n){return n<2?"in a minute":"in "+ee(n)+" minutes"},ae:function(n){return n<2?"in a month":"in "+ee(n)+" months"},af:function(n){return n<30?"in a few seconds":"in "+ee(n)+" seconds"},ag:function(n){return n<2?"in a year":"in "+ee(n)+" years"},al:"right now",ao:function(n){return n<2?"yesterday":ee(n)+" days ago"},ap:function(n){return n<2?"an hour ago":ee(n)+" hours ago"},aq:function(n){return n<2?"a minute ago":ee(n)+" minutes ago"},ar:function(n){return n<2?"last month":ee(n)+" months ago"},as:function(n){return n<30?"just now":ee(n)+" seconds ago"},at:function(n){return n<2?"last year":ee(n)+" years ago"}},mb=o(function(n,r,t,e,u,a){return{aB:e,aL:t,aP:r,aR:u,a3:n,bc:a}}),$b=e(function(n,r,t){var e=r/1e3|0,u=va(r),a=e/60|0,o=a/60|0,i=o/24|0;return a<1?t.a3(s(_s,n,u)):o<1?t.aP(s(Ls,n,u)):o<24?t.aL(s(Os,n,u)):i<30?t.aB(i):i<365?t.aR(i/12|0):t.bc(i/365|0)}),yb=Nf,xb=e(function(n,r,t){var e=yb(t)-yb(r);return e?b($b,ws,hi(e),e<0?d(mb,n.as,n.aq,n.ap,n.ao,n.ar,n.at):d(mb,n.af,n.ad,n.ac,n.ab,n.ae,n.ag)):n.al})(gb),wb=t(function(n,r){return fs(s(xb,n.ai,r))}),kb=e(function(n,r,t){return s(ns,$([gs($([E("message-list-entry",!0),E("selected",w(r,Ht(t.aM))),E("unseen",!t.bV)])),ys(function(n){return{$:1,a:n}}(t.aM))]),$([s(ns,$([es("subject")]),$([fs(t.b6)])),s(ns,$([es("from")]),$([fs(t.bn)])),s(ns,$([es("date")]),$([s(wb,n,t.bi)]))]))}),jb=dr("aside"),Ab=dr("input"),Sb=ts("placeholder"),Mb=ts("type"),Eb=ts("value"),Tb=function(n){return E(n,!0)},Ob=t(function(n,r){return s(ms,n,function(n){return{$:1,a:n}}(r))}),Cb=s(Ii,$(["target","value"]),Ae),Lb=function(n){return s(Ob,"input",s(la,Tb,s(la,n,Cb)))},Rb=t(function(n,r){return s(jb,$([us("message-list")]),$([s(ns,h,$([s(Ab,$([Mb("search"),Sb("search"),Lb(pb),Eb(r.an)]),h),s(sb,$([ys(hb)]),$([fs("Purge")]))])),function(){var n=r.a;if(n.$){var t=n.a;return s(ns,h,s(wa,s(kb,r,t.T),jt(function(n){if(""===n.H)return n.aJ;return s(Be,function(r){return s(Af,n.H,pf(r.b6))||s(Af,n.H,pf(r.bn))},n.aJ)}(t))))}return s(ns,h,h)}()]))}),Nb=dr("main"),_b=t(function(n,r){return{bg:s(ns,$([us("page"),es("mailbox")]),$([s(Rb,n,r),s(Nb,$([us("message")]),$([function(){var n=r.a;n:for(;1===n.$;)switch(n.b.$){case 0:n.b;return fs("Select a message on the left, or enter a different username into the box on upper right.");case 2:case 3:var t=n.b.a.o;return s(db,t,r.t);default:break n}return fs("")}()]))])),cb:r.w+" - Inbucket"}}),Bb={$:7},Hb={$:3},Ib=function(n){return s(ss,$([ys(function(n){return{$:1,a:n}}(n))]),$([s(cs,h,$([function(n){return fs(b(eb,$([Bb,cb("-"),Hb,cb(" "),ub,cb(":"),ab,cb(" "),ks]),ws,n))}(n.bi)])),s(cs,$([es("desktop")]),$([fs(n.bn)])),s(cs,h,$([fs(n.bz)])),s(cs,h,$([fs(n.b6)]))]))},Pb=dr("em"),Ub=dr("h1"),Db=dr("p"),Jb=dr("tbody"),qb=dr("th"),zb=dr("thead"),Fb=t(function(n,r){return{bg:s(ns,$([us("page")]),$([s(Ub,h,$([fs("Monitor")])),s(Db,h,$([fs("Messages will be listed here shortly after delivery. "),s(Pb,h,$([fs(r.Z?"Connected.":"Disconnected!")]))])),s(ds,$([us("monitor")]),$([s(zb,h,$([s(qb,h,$([fs("Date")])),s(qb,$([es("desktop")]),$([fs("From")])),s(qb,h,$([fs("Mailbox")])),s(qb,h,$([fs("Subject")]))])),s(Jb,h,s(wa,Ib,r.R))]))])),cb:"Inbucket Monitor"}}),Gb=dr("h2"),Kb=t(function(n,r){return s(ns,$([es("metric-panel")]),$([s(Gb,h,$([fs(n)])),s(ns,$([es("metrics")]),r)]))}),Vb=function(n){return s(ns,$([es("metric")]),$([s(ns,$([es("label")]),$([fs(n.aN)])),s(ns,$([es("value")]),$([fs(n.aF(n.N))])),s(ns,$([es("graph")]),$([n.aH(n.v),fs("("+ee(n.aP)+"min)")]))]))},Wb=t(function(n,r){return{bg:s(ns,$([us("page")]),$([s(Ub,h,$([fs("Status")])),function(){var n=r.S;if(1===n.$)return s(ns,h,$([fs("Loading metrics...")]));n.a;return s(ns,h,$([s(Kb,"General Metrics",$([Vb(r.b9),Vb(r.bq),Vb(r.br),Vb(r.bp),Vb(r.bo),Vb(r.cl)])),s(Kb,"SMTP Metrics",$([Vb(r.bZ),Vb(r.b_),Vb(r.b2),Vb(r.b0),Vb(r.b4)])),s(Kb,"Storage Metrics",$([Vb(r.bU),Vb(r.bP),Vb(r.bR)]))]))}()])),cb:"Inbucket Status"}}),Zb=t(function(n,r){return bs(gf(r))}),Yb=$r("rel"),Qb=t(function(n,r){return s(is,$([bs(n),ls("_blank"),Yb("noopener")]),$([fs(r)]))}),Xb=t(function(n,r){var t=E(n,r);n:for(;;)switch(t.a){case 2:if(4===t.b.$){t.a,t.b;return!0}break n;case 3:if(5===t.b.$){t.a,t.b;return!0}break n;default:break n}return!1}),nl=dr("li"),rl=u(function(n,r,t,e){return s(nl,$([gs($([E("navbar-active",s(Xb,r,t))]))]),$([s(is,$([s(Zb,n.by,t)]),e)]))}),tl=dr("span"),el=e(function(n,r,t){var e=1===r,u=e?s(eo,h,If(t.bN)):t.bN,a=e?t.bM:"Recent Mailboxes";return s(nl,$([us("navbar-recent"),gs($([E("navbar-dropdown",!0),E("navbar-active",e)]))]),$([s(tl,h,$([fs(a)])),s(ns,$([es("navbar-dropdown-content")]),s(wa,function(r){return s(is,$([s(Zb,n.by,Vi(r))]),$([fs(r)]))},u))]))}),ul=dr("footer"),al=dr("form"),ol=dr("header"),il=dr("ul"),cl=t(function(n,r){return s($r,function(n){return/^(on|formAction$)/i.test(n)?"data-"+n:n}(n),yr(r))}),fl=function(n){return E(n,!0)},sl=t(function(n,r){return s(ms,n,function(n){return{$:2,a:n}}(r))}),bl=u(function(n,r,t,e){return s(ns,$([us("app")]),$([s(ol,h,$([s(il,$([es("navbar"),s(cl,"role","navigation")]),$([s(nl,$([us("navbar-brand")]),$([s(is,$([s(Zb,r.by,Ki)]),$([fs("@ inbucket")]))])),l(rl,r,t,Zi,$([fs("Monitor")])),l(rl,r,t,Yi,$([fs("Status")])),b(el,r,t,n),s(nl,$([us("navbar-mailbox")]),$([s(al,$([function(n){return s(sl,"submit",s(la,fl,$e(n)))}(n.ck(n.bB))]),$([s(Ab,$([Mb("text"),Sb("mailbox"),Eb(n.bB),Lb(n.bA)]),h)]))]))])),s(ns,h,$([fs("Status: "+r.aa)]))])),s(ns,$([us("navbg")]),$([fs("")])),e,s(ul,h,$([s(ns,$([us("footer")]),$([s(Qb,"https://www.inbucket.org","Inbucket"),fs(" is an open source projected hosted at "),s(Qb,"https://github.com/jhillyerd/inbucket","GitHub"),fs(".")]))]))]))}),ll=t(function(n,r){return{ax:r,cb:n}}),vl=pr;!function(r){n.Elm?function n(r,t){for(var e in t)e in r?"init"==e?H(6):n(r[e],t[e]):r[e]=t[e]}(n.Elm,r):n.Elm=r}({Main:{init:function(n){var r=n.bH,e=n.bI,u=function(){u.a(r(nt()))};return u["elm-hot-nav-key"]=!0,Yr({I:function(n){return u.a=n,et.addEventListener("popstate",u),et.navigator.userAgent.indexOf("Trident")<0||et.addEventListener("hashchange",u),t(function(r,t){if(!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&t.button<1&&!r.target&&!r.hasAttribute("download")){t.preventDefault();var u=r.href,a=nt(),o=Cf(u).a;n(e(o&&a.aY===o.aY&&a.aK===o.aK&&a.aV.a===o.aV.a?$f(o):mf(u)))}})},bx:function(r){return b(n.bx,r,nt(),u)},cj:n.cj,ci:n.ci,b8:n.b8})}({bx:bc,bH:function(n){return{$:1,a:n}},bI:function(n){return{$:2,a:n}},b8:function(n){return dc($([Bc(n.h),s(Nc,lc,Hc)]))},ci:Yf,cj:function(n){var r=function(){var r=n.h;return 1===r.$?r.a.w:""}(),t={bA:Qf,bB:n.w,bM:r,bN:n.c.F.G,ck:Xf},u=e(function(r,e,u){var a=u.cb,o=u.bg;return s(ll,a,$([l(bl,t,n.c,r,s(vl,e,o))]))}),a=n.h;switch(a.$){case 0:var o=a.a;return b(u,0,Qe,s(os,n.c,o));case 1:return o=a.a,b(u,1,nu,s(_b,n.c,o));case 2:return o=a.a,b(u,2,tu,s(Fb,n.c,o));default:return o=a.a,b(u,3,uu,s(Wb,n.c,o))}}})(ye)(0)}})}(this)},function(n,r,t){var e=t(2);"string"==typeof e&&(e=[[n.i,e,""]]);var u={hmr:!0,transform:void 0,insertInto:void 0};t(4)(e,u);e.locals&&(n.exports=e.locals)},function(n,r,t){(n.exports=t(3)(!1)).push([n.i,'/** GLOBAL */\n\n:root {\n --bg-color: #fff;\n --primary-color: #333;\n --low-color: #666;\n --high-color: #337ab7;\n --border-color: #ddd;\n --placeholder-color: #9f9f9f;\n --selected-color: #eee;\n}\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n vertical-align: baseline;\n}\n\n::placeholder {\n color: var(--placeholder-color);\n opacity: 1;\n}\n\na {\n color: #337ab7;\n text-decoration: none;\n}\n\nbody {\n background-color: var(--bg-color);\n}\n\nbody, input, table {\n font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.43;\n color: var(--primary-color);\n}\n\nh1, h2, h3, h4, h5, h6, p {\n margin-bottom: 10px;\n}\n\n/** SHARED */\n\na.button {\n background-color: #337ab7;\n background-image: linear-gradient(to bottom, #337ab7 0, #265a88 100%);\n border: none;\n border-radius: 4px;\n color: #fff;\n display: inline-block;\n font-size: 11px;\n font-style: normal;\n margin: 4px;\n padding: 3px 8px;\n text-decoration: none;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.2);\n}\n\n.well {\n background-color: var(--selected-color);\n background-image: linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgba(0,0,0,.05);\n padding: 4px 10px;\n margin: 20px 0;\n}\n\n/** APP */\n\n#app {\n display: grid;\n justify-content: center;\n grid-gap: 20px;\n grid-template:\n "lpad head rpad" auto\n "lpad page rpad" 1fr\n "foot foot foot" auto / minmax(20px, auto) 1fr minmax(20px, auto);\n height: 100vh;\n}\n\n@media (max-width: 999px) {\n #app {\n grid-template:\n "head head head" auto\n "lpad page rpad" 1fr\n "foot foot foot" auto / 1px 1fr 1px;\n height: auto;\n }\n\n .desktop {\n display: none;\n }\n}\n\nheader {\n grid-area: head;\n}\n\n#page {\n grid-area: page;\n}\n\nfooter {\n background-color: var(--selected-color);\n display: flex;\n justify-content: center;\n grid-area: foot;\n}\n\n#footer {\n margin: 10px auto;\n}\n\nh1 {\n font-size: 30px;\n font-weight: 500;\n}\n\n.greeting {\n max-width: 1000px;\n}\n\n/** NAV BAR */\n\n.navbar,\n#navbg {\n height: 50px;\n}\n\n.navbar {\n display: flex;\n line-height: 20px;\n list-style: none;\n padding: 0;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.2);\n}\n\n.navbar li {\n color: #9d9d9d;\n}\n\n.navbar a,\n.navbar-dropdown span {\n color: #9d9d9d;\n display: inline-block;\n padding: 15px;\n text-decoration: none;\n}\n\nli.navbar-active {\n background-color: #080808;\n}\n\nli.navbar-active a,\nli.navbar-active span,\n.navbar a:hover {\n color: #ffffff;\n}\n\n#navbar-brand {\n font-size: 18px;\n margin-left: -15px;\n}\n\n#navbar-recent {\n margin: 0 auto;\n}\n\n#navbar-mailbox {\n padding: 8px 0 !important;\n}\n\n#navbar-mailbox input {\n border: 1px solid var(--border-color);\n border-radius: 4px;\n padding: 5px 10px;\n margin-top: 1px;\n width: 250px;\n}\n\n.navbar-dropdown-content {\n background-color: var(--bg-color);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgba(0,0,0,.05);\n display: none;\n min-width: 160px;\n position: absolute;\n text-shadow: none;\n z-index: 1;\n}\n\n.navbar-dropdown:hover .navbar-dropdown-content {\n display: block;\n}\n\n.navbar-dropdown-content a {\n color: var(--primary-color) !important;\n display: block;\n padding: 5px 15px;\n}\n\n.navbar-dropdown-content a:hover {\n background-color: var(--selected-color);\n}\n\n#navbg {\n background-color: #222;\n background-image: linear-gradient(to bottom, #3c3c3c 0, #222 100%);\n grid-column: 1 / 4;\n grid-row: 1;\n width: 100%;\n z-index: -1;\n}\n\n/** BUTTONS */\n\n.button-bar button {\n background-color: #337ab7;\n background-image: linear-gradient(to bottom, #337ab7 0, #265a88 100%);\n border: none;\n border-radius: 4px;\n color: #fff;\n font-size: 12px;\n font-style: normal;\n font-weight: 400;\n height: 30px;\n margin: 0 4px 0 0;\n padding: 5px;\n text-align: center;\n text-decoration: none;\n text-shadow: 0 -1px 0 rgba(0,0,0,0.2);\n width: 8em;\n}\n\n.button-bar button.danger {\n background-color: #d9534f;\n background-image: linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);\n}\n\n/** MAILBOX */\n\n.mailbox {\n display: grid;\n grid-area: page;\n grid-gap: 20px;\n grid-template-areas:\n "list"\n "mesg";\n justify-self: center;\n}\n\n@media (min-width: 1000px) {\n .mailbox {\n grid-template-columns:\n minmax(200px, 300px)\n minmax(650px, 1000px);\n grid-template-areas:\n "list mesg";\n grid-template-rows: 1fr;\n }\n}\n\n#message-list {\n grid-area: list;\n}\n\n.message-list-entry {\n border-color: var(--border-color);\n border-width: 1px;\n border-style: none solid solid solid;\n cursor: pointer;\n padding: 5px 8px;\n}\n\n.message-list-entry.selected {\n background-color: var(--selected-color);\n}\n\n.message-list-entry:first-child {\n border-style: solid;\n}\n\n.message-list-entry .subject {\n color: var(--high-color);\n}\n\n.message-list-entry.unseen .subject {\n font-weight: bold;\n}\n\n.message-list-entry .from,\n.message-list-entry .date {\n color: var(--low-color);\n font-size: 85%;\n}\n\n\n/** MESSAGE */\n\n#message {\n grid-area: mesg;\n}\n\n#message-header {\n border: 1px solid var(--border-color);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgba(0,0,0,.05);\n padding: 10px;\n margin: 10px 0;\n}\n\n#message-header dt {\n color: var(--low-color);\n font-weight: bold;\n}\n\n#message-header dd {\n color: var(--low-color);\n padding-left: 10px;\n}\n\n@media (min-width: 1000px) {\n #message-header {\n display: grid;\n grid-template: auto / 5em 1fr;\n }\n\n #message-header dt {\n grid-column: 1;\n text-align: right;\n }\n\n #message-header dd {\n grid-column: 2;\n }\n}\n\n.message-body {\n padding: 5px;\n}\n\nnav.tab-bar {\n border-bottom: 1px solid var(--border-color);\n display: flex;\n margin: 20px 0 10px 0;\n}\n\nnav.tab-bar a {\n border-radius: 4px 4px 0 0;\n display: block;\n margin-bottom: -1px;\n margin-right: 2px;\n padding: 8px 15px;\n text-decoration: none;\n}\n\nnav.tab-bar a.active {\n color: var(--low-color);\n border-color: var(--border-color) var(--border-color) var(--bg-color) var(--border-color);\n border-style: solid;\n border-width: 1px;\n}\n\nnav.tab-bar a:focus,\nnav.tab-bar a:hover {\n background-color: var(--selected-color);\n}\n\nnav.tab-bar a.active:focus,\nnav.tab-bar a.active:hover {\n background-color: var(--bg-color);\n}\n\n.attachments {\n width: 100%;\n}\n\n/** STATUS */\n\n.metric-panel {\n border: 1px solid var(--border-color);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgba(0,0,0,.05);\n margin: 20px 0;\n}\n\n.metric-panel h2 {\n background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);\n font-size: 16px;\n font-weight: 500;\n padding: 10px;\n}\n\n.metric-panel .metrics {\n padding: 7px 10px;\n}\n\n.metric-panel .metric {\n display: flex;\n flex-wrap: wrap;\n margin: 3px 0;\n}\n\n.metric .label {\n flex-basis: 15em;\n font-weight: 700;\n}\n\n.metric .value {\n flex-basis: 15em;\n}\n\n.metric .graph {\n flex-basis: 25em;\n}\n\n/** MONITOR **/\n\n#monitor {\n border-collapse: collapse;\n width: 100%;\n}\n\n#monitor th {\n border-bottom: 2px solid var(--border-color);\n text-align: left;\n padding: 5px;\n}\n\n#monitor td {\n border-bottom: 1px solid var(--border-color);\n font-size: 12px;\n padding: 5px;\n}\n\n#monitor tr:hover {\n background-color: var(--selected-color);\n cursor: pointer;\n}\n',""])},function(n,r){n.exports=function(n){var r=[];return r.toString=function(){return this.map(function(r){var t=function(n,r){var t=n[1]||"",e=n[3];if(!e)return t;if(r&&"function"==typeof btoa){var u=function(n){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(n))))+" */"}(e),a=e.sources.map(function(n){return"/*# sourceURL="+e.sourceRoot+n+" */"});return[t].concat(a).concat([u]).join("\n")}return[t].join("\n")}(r,n);return r[2]?"@media "+r[2]+"{"+t+"}":t}).join("")},r.i=function(n,t){"string"==typeof n&&(n=[[null,n,""]]);for(var e={},u=0;u=0&&c.splice(r,1)}function d(n){var r=document.createElement("style");if(void 0===n.attrs.type&&(n.attrs.type="text/css"),void 0===n.attrs.nonce){var e=function(){0;return t.nc}();e&&(n.attrs.nonce=e)}return p(r,n.attrs),l(n,r),r}function p(n,r){Object.keys(r).forEach(function(t){n.setAttribute(t,r[t])})}function h(n,r){var t,e,u,a;if(r.transform&&n.css){if(!(a="function"==typeof r.transform?r.transform(n.css):r.transform.default(n.css)))return function(){};n.css=a}if(r.singleton){var c=i++;t=o||(o=d(r)),e=m.bind(null,t,c,!1),u=m.bind(null,t,c,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(t=function(n){var r=document.createElement("link");return void 0===n.attrs.type&&(n.attrs.type="text/css"),n.attrs.rel="stylesheet",p(r,n.attrs),l(n,r),r}(r),e=function(n,r,t){var e=t.css,u=t.sourceMap,a=void 0===r.convertToAbsoluteUrls&&u;(r.convertToAbsoluteUrls||a)&&(e=f(e));u&&(e+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(u))))+" */");var o=new Blob([e],{type:"text/css"}),i=n.href;n.href=URL.createObjectURL(o),i&&URL.revokeObjectURL(i)}.bind(null,t,r),u=function(){v(t),t.href&&URL.revokeObjectURL(t.href)}):(t=d(r),e=function(n,r){var t=r.css,e=r.media;e&&n.setAttribute("media",e);if(n.styleSheet)n.styleSheet.cssText=t;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(t))}}.bind(null,t),u=function(){v(t)});return e(n),function(r){if(r){if(r.css===n.css&&r.media===n.media&&r.sourceMap===n.sourceMap)return;e(n=r)}else u()}}n.exports=function(n,r){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(r=r||{}).attrs="object"==typeof r.attrs?r.attrs:{},r.singleton||"boolean"==typeof r.singleton||(r.singleton=u()),r.insertInto||(r.insertInto="head"),r.insertAt||(r.insertAt="bottom");var t=b(n,r);return s(t,r),function(n){for(var u=[],a=0;a=0.3.0 <0.4" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz", + "integrity": "sha1-glR3SrR4a4xbPPTfumbOVjkywlI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.84", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz", + "integrity": "sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "elm": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/elm/-/elm-0.19.0.tgz", + "integrity": "sha512-CYgewByRByMOilPk5/yrW1mtflaS/vp+026gwb0EEX6aqUl+TGYoTSTW+uf44XB/FOKgUauV3TDH3Bl0IHZ8Ag==", + "dev": true, + "requires": { + "binwrap": "0.1.4" + } + }, + "elm-hot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elm-hot/-/elm-hot-1.0.1.tgz", + "integrity": "sha512-C6VEX3TqVJv+OhUKMMb2mcaSuRArqvCFNItqxue81/mlfX4PWwvovE5vqocgO3AnrStyHElCRm0KNknfDttEBw==", + "dev": true + }, + "elm-hot-webpack-loader": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/elm-hot-webpack-loader/-/elm-hot-webpack-loader-1.0.2.tgz", + "integrity": "sha512-lkfBivr4VRIPBh9lqITI2gPndQZ8WhtpF3gDmCjndtIEOWNzJ1GaFMQI8P96mn3siY0oOHhTk6qUf9rntmJxwQ==", + "dev": true, + "requires": { + "elm-hot": "^1.0.1" + } + }, + "elm-webpack-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/elm-webpack-loader/-/elm-webpack-loader-5.0.0.tgz", + "integrity": "sha512-d1a06wvnQzXsAAakkI+lB2uQ9m3BREAqRFk/foxdznQ2Ge29ygkBUGQZ3spNwOy8hLo55ULKd9n1eifW9HJ5ag==", + "dev": true, + "requires": { + "elm": "^0.19.0", + "glob": "^7.1.1", + "loader-utils": "^1.0.2", + "node-elm-compiler": "^5.0.0", + "yargs": "^6.5.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-elm-dependencies": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.0.tgz", + "integrity": "sha512-lnLilxwdS3U/CSPoMnfUL1u21MBNolv6NF54y4Yds7WxdRMrTBXrmugrcvIGvakWQ2anYuinmBSUR+jUQy+vpA==", + "dev": true, + "requires": { + "firstline": "1.2.0", + "lodash": "4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "firstline": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz", + "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", + "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-modules-path": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", + "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", + "dev": true + }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "http://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", + "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "match-stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", + "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "readable-stream": "~1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-elm-compiler": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.1.tgz", + "integrity": "sha512-Li9NfZTL83/URoUEWly+iHJeOcZRBYUaeIL4MImnB4r21oe/xpkR6JRHjdNjLf1rMtO0tgPyOvuGW4Beytaaow==", + "dev": true, + "requires": { + "cross-spawn": "4.0.0", + "find-elm-dependencies": "2.0.0", + "lodash": "4.17.10", + "temp": "^0.8.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "node-releases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.4.tgz", + "integrity": "sha512-GqRV9GcHw8JCRDaP/JoeNMNzEGzHAknMvIHqMb2VeTOmg1Cf9+ej8bkV12tHfzWHQMCkQ5zUFgwFUkfraynNCw==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "over": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", + "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.19.tgz", + "integrity": "sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pullstream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", + "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", + "dev": true, + "requires": { + "over": ">= 0.0.5 < 1", + "readable-stream": "~1.0.31", + "setimmediate": ">= 1.0.2 < 2", + "slice-stream": ">= 1.0.0 < 2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.4.0", + "regjsparser": "^0.3.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + } + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", + "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.2", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", + "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "^4.13.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", + "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", + "dev": true, + "requires": { + "readable-stream": "~1.0.31" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "spdy-transport": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz", + "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", + "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "unzip": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", + "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", + "dev": true, + "requires": { + "binary": ">= 0.3.0 < 1", + "fstream": ">= 0.1.30 < 1", + "match-stream": ">= 0.0.2 < 1", + "pullstream": ">= 0.4.1 < 1", + "readable-stream": "~1.0.31", + "setimmediate": ">= 1.0.1 < 2" + }, + "dependencies": { + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "dev": true, + "requires": { + "graceful-fs": "~3.0.2", + "inherits": "~2.0.0", + "mkdirp": "0.5", + "rimraf": "2" + } + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", + "dev": true, + "requires": { + "natives": "^1.1.0" + } + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.25.1.tgz", + "integrity": "sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", + "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.4.tgz", + "integrity": "sha512-f5esswlPO351AnejaO2A1ZZr0zesz19RehQKwiRDqWtrraWrJy16tsUIKgDXFMVytvNOHPVmTiaTh3wO67I0fQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.0" + } + }, + "yargs-parser": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.0.tgz", + "integrity": "sha512-lGA5HsbjkpCfekDBHAhgE5OE8xEoqiUDylowr+BvhRCwG1xVYTsd8hx2CYC0NY4k9RIgJeybFTG2EZW4P2aN1w==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz", + "integrity": "sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } +} diff --git a/ui/package.json b/ui/package.json new file mode 100644 index 0000000..df324aa --- /dev/null +++ b/ui/package.json @@ -0,0 +1,27 @@ +{ + "name": "inbucket-ui", + "version": "3.0.0", + "license": "MIT", + "private": true, + "scripts": { + "build": "webpack --mode production", + "watch": "webpack --mode development --watch", + "dev": "webpack-dev-server --mode development --port 3000 --hot", + "errors": "webpack --mode development --display-error-details" + }, + "dependencies": {}, + "devDependencies": { + "@babel/core": "^7.1.6", + "@babel/preset-env": "^7.1.6", + "babel-loader": "^8.0.4", + "css-loader": "^1.0.1", + "elm-hot-webpack-loader": "^1.0.2", + "elm-webpack-loader": "^5.0.0", + "html-webpack-plugin": "^3.2.0", + "node-elm-compiler": "^5.0.1", + "style-loader": "^0.23.1", + "webpack": "^4.25.1", + "webpack-cli": "^3.1.2", + "webpack-dev-server": "^3.1.10" + } +} diff --git a/ui/public/index.html b/ui/public/index.html index feb4250..4def5dc 100644 --- a/ui/public/index.html +++ b/ui/public/index.html @@ -1,22 +1,16 @@ - - - - - - - - Inbucket + + + + + Inbucket - -
+ +
diff --git a/ui/public/manifest.json b/ui/public/manifest.json index 9b7dc41..e304f40 100644 --- a/ui/public/manifest.json +++ b/ui/public/manifest.json @@ -1,10 +1,10 @@ { - "short_name": "Elm App", - "name": "Create Elm App Sample", + "short_name": "Inbucket", + "name": "Inbucket", "icons": [ { - "src": "favicon.ico", - "sizes": "192x192", + "src": "favicon.png", + "sizes": "16x16", "type": "image/png" } ], diff --git a/ui/src/Data/Date.elm b/ui/src/Data/Date.elm index 2ac0a46..51ab39c 100644 --- a/ui/src/Data/Date.elm +++ b/ui/src/Data/Date.elm @@ -1,21 +1,11 @@ module Data.Date exposing (date) -import Date exposing (Date) -import Json.Decode as Decode exposing (..) +import Json.Decode exposing (..) +import Time exposing (Posix) -{-| Decode an ISO 8601 date +{-| Decode a POSIX milliseconds timestamp. -} -date : Decoder Date +date : Decoder Posix date = - let - convert : String -> Decoder Date - convert raw = - case Date.fromString raw of - Ok date -> - succeed date - - Err error -> - fail error - in - string |> andThen convert + int |> map Time.millisToPosix diff --git a/ui/src/Data/Message.elm b/ui/src/Data/Message.elm index 7377ea2..54c568d 100644 --- a/ui/src/Data/Message.elm +++ b/ui/src/Data/Message.elm @@ -1,9 +1,9 @@ module Data.Message exposing (Attachment, Message, attachmentDecoder, decoder) import Data.Date exposing (date) -import Date exposing (Date) -import Json.Decode as Decode exposing (..) +import Json.Decode exposing (..) import Json.Decode.Pipeline exposing (..) +import Time exposing (Posix) type alias Message = @@ -12,7 +12,7 @@ type alias Message = , from : String , to : List String , subject : String - , date : Date + , date : Posix , size : Int , seen : Bool , text : String @@ -30,13 +30,13 @@ type alias Attachment = decoder : Decoder Message decoder = - decode Message + succeed Message |> required "mailbox" string |> required "id" string |> optional "from" string "" |> required "to" (list string) |> optional "subject" string "" - |> required "date" date + |> required "posix-millis" date |> required "size" int |> required "seen" bool |> required "text" string @@ -46,7 +46,7 @@ decoder = attachmentDecoder : Decoder Attachment attachmentDecoder = - decode Attachment + succeed Attachment |> required "id" string |> required "filename" string |> required "content-type" string diff --git a/ui/src/Data/MessageHeader.elm b/ui/src/Data/MessageHeader.elm index d3fc7fb..e796201 100644 --- a/ui/src/Data/MessageHeader.elm +++ b/ui/src/Data/MessageHeader.elm @@ -1,9 +1,9 @@ module Data.MessageHeader exposing (MessageHeader, decoder) import Data.Date exposing (date) -import Date exposing (Date) -import Json.Decode as Decode exposing (..) +import Json.Decode exposing (..) import Json.Decode.Pipeline exposing (..) +import Time exposing (Posix) type alias MessageHeader = @@ -12,7 +12,7 @@ type alias MessageHeader = , from : String , to : List String , subject : String - , date : Date + , date : Posix , size : Int , seen : Bool } @@ -20,12 +20,12 @@ type alias MessageHeader = decoder : Decoder MessageHeader decoder = - decode MessageHeader + succeed MessageHeader |> required "mailbox" string |> required "id" string |> optional "from" string "" |> required "to" (list string) |> optional "subject" string "" - |> required "date" date + |> required "posix-millis" date |> required "size" int |> required "seen" bool diff --git a/ui/src/Data/Metrics.elm b/ui/src/Data/Metrics.elm index 5662096..cbe0821 100644 --- a/ui/src/Data/Metrics.elm +++ b/ui/src/Data/Metrics.elm @@ -31,7 +31,7 @@ type alias Metrics = decoder : Decoder Metrics decoder = - decode Metrics + succeed Metrics |> requiredAt [ "memstats", "Sys" ] int |> requiredAt [ "memstats", "HeapSys" ] int |> requiredAt [ "memstats", "HeapAlloc" ] int @@ -59,4 +59,6 @@ decoder = -} decodeIntList : Decoder (List Int) decodeIntList = - map (String.split "," >> List.map (String.toInt >> Result.withDefault 0)) string + string + |> map (String.split ",") + |> map (List.map (String.toInt >> Maybe.withDefault 0)) diff --git a/ui/src/Data/Session.elm b/ui/src/Data/Session.elm index efcca4c..c372059 100644 --- a/ui/src/Data/Session.elm +++ b/ui/src/Data/Session.elm @@ -9,13 +9,15 @@ module Data.Session exposing , update ) -import Json.Decode as Decode exposing (..) +import Browser.Navigation as Nav +import Json.Decode exposing (..) import Json.Decode.Pipeline exposing (..) -import Navigation exposing (Location) +import Url exposing (Url) type alias Session = - { host : String + { key : Nav.Key + , host : String , flash : String , routing : Bool , persistent : Persistent @@ -36,9 +38,9 @@ type Msg | AddRecent String -init : Location -> Persistent -> Session -init location persistent = - Session location.host "" True persistent +init : Nav.Key -> Url -> Persistent -> Session +init key location persistent = + Session key location.host "" True persistent update : Msg -> Session -> Session @@ -84,10 +86,10 @@ none = decoder : Decoder Persistent decoder = - decode Persistent + succeed Persistent |> optional "recentMailboxes" (list string) [] decodeValueWithDefault : Value -> Persistent decodeValueWithDefault = - Decode.decodeValue decoder >> Result.withDefault { recentMailboxes = [] } + decodeValue decoder >> Result.withDefault { recentMailboxes = [] } diff --git a/ui/src/HttpUtil.elm b/ui/src/HttpUtil.elm index 4afcb5d..45e0c69 100644 --- a/ui/src/HttpUtil.elm +++ b/ui/src/HttpUtil.elm @@ -3,29 +3,29 @@ module HttpUtil exposing (delete, errorString, patch) import Http -delete : String -> Http.Request () -delete url = +delete : (Result Http.Error () -> msg) -> String -> Cmd msg +delete msg url = Http.request { method = "DELETE" , headers = [] , url = url , body = Http.emptyBody - , expect = Http.expectStringResponse (\_ -> Ok ()) + , expect = Http.expectWhatever msg , timeout = Nothing - , withCredentials = False + , tracker = Nothing } -patch : String -> Http.Body -> Http.Request () -patch url body = +patch : (Result Http.Error () -> msg) -> String -> Http.Body -> Cmd msg +patch msg url body = Http.request { method = "PATCH" , headers = [] , url = url , body = body - , expect = Http.expectStringResponse (\_ -> Ok ()) + , expect = Http.expectWhatever msg , timeout = Nothing - , withCredentials = False + , tracker = Nothing } @@ -42,11 +42,7 @@ errorString error = "HTTP Network error" Http.BadStatus res -> - "Bad HTTP status: " ++ toString res.status.code + "Bad HTTP status: " ++ String.fromInt res - Http.BadPayload msg res -> - "Bad HTTP payload: " - ++ msg - ++ " (" - ++ toString res.status.code - ++ ")" + Http.BadBody msg -> + "Bad HTTP body: " ++ msg diff --git a/ui/src/Main.elm b/ui/src/Main.elm index 81d73f0..5c2e95d 100644 --- a/ui/src/Main.elm +++ b/ui/src/Main.elm @@ -1,15 +1,17 @@ -module Main exposing (Model, Msg(..), Page(..), applySession, init, main, pageSubscriptions, sessionChange, setRoute, subscriptions, update, updatePage, view) +module Main exposing (main) +import Browser exposing (Document, UrlRequest) +import Browser.Navigation as Nav import Data.Session as Session exposing (Session, decoder) import Html exposing (..) -import Json.Decode as Decode exposing (Value) -import Navigation exposing (Location) +import Json.Decode as D exposing (Value) import Page.Home as Home import Page.Mailbox as Mailbox import Page.Monitor as Monitor import Page.Status as Status import Ports import Route exposing (Route) +import Url exposing (Url) import Views.Page as Page exposing (ActivePage(..), frame) @@ -31,11 +33,11 @@ type alias Model = } -init : Value -> Location -> ( Model, Cmd Msg ) -init sessionValue location = +init : Value -> Url -> Nav.Key -> ( Model, Cmd Msg ) +init sessionValue location key = let session = - Session.init location (Session.decodeValueWithDefault sessionValue) + Session.init key location (Session.decodeValueWithDefault sessionValue) ( subModel, _ ) = Home.init @@ -47,16 +49,17 @@ init sessionValue location = } route = - Route.fromLocation location + Route.fromUrl location in applySession (setRoute route model) type Msg = SetRoute Route - | NewRoute Route - | UpdateSession (Result String Session.Persistent) - | MailboxNameInput String + | UrlChanged Url + | LinkClicked UrlRequest + | UpdateSession (Result D.Error Session.Persistent) + | OnMailboxNameInput String | ViewMailbox String | HomeMsg Home.Msg | MailboxMsg Mailbox.Msg @@ -76,9 +79,9 @@ subscriptions model = ] -sessionChange : Sub (Result String Session.Persistent) +sessionChange : Sub (Result D.Error Session.Persistent) sessionChange = - Ports.onSessionChange (Decode.decodeValue Session.decoder) + Ports.onSessionChange (D.decodeValue Session.decoder) pageSubscriptions : Page -> Sub Msg @@ -105,19 +108,27 @@ update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = applySession <| case msg of - SetRoute route -> - -- Updates broser URL to requested route. - ( model, Route.newUrl route, Session.none ) + LinkClicked req -> + case req of + Browser.Internal url -> + ( model, Nav.pushUrl model.session.key (Url.toString url), Session.none ) - NewRoute route -> + Browser.External url -> + ( model, Nav.load url, Session.none ) + + UrlChanged url -> -- Responds to new browser URL. if model.session.routing then - setRoute route model + setRoute (Route.fromUrl url) model else -- Skip once, but re-enable routing. ( model, Cmd.none, Session.EnableRouting ) + SetRoute route -> + -- Updates broser URL to requested route. + ( model, Route.newUrl model.session.key route, Session.none ) + UpdateSession (Ok persistent) -> let session = @@ -129,18 +140,17 @@ update msg model = ) UpdateSession (Err error) -> - let - _ = - Debug.log "Error decoding session" error - in - ( model, Cmd.none, Session.none ) + ( model + , Cmd.none + , Session.SetFlash ("Error decoding session: " ++ D.errorToString error) + ) - MailboxNameInput name -> + OnMailboxNameInput name -> ( { model | mailboxName = name }, Cmd.none, Session.none ) ViewMailbox name -> ( { model | mailboxName = "" } - , Route.newUrl (Route.Mailbox name) + , Route.newUrl model.session.key (Route.Mailbox name) , Session.none ) @@ -230,10 +240,7 @@ setRoute route model = Route.Status -> ( { model | page = Status Status.init } - , Cmd.batch - [ Ports.windowTitle "Inbucket Status" - , Cmd.map StatusMsg Status.load - ] + , Cmd.map StatusMsg Status.load , Session.none ) in @@ -269,7 +276,7 @@ applySession ( model, cmd, sessionMsg ) = -- VIEW -view : Model -> Html Msg +view : Model -> Document Msg view model = let mailbox = @@ -282,31 +289,36 @@ view model = controls = { viewMailbox = ViewMailbox - , mailboxOnInput = MailboxNameInput + , mailboxOnInput = OnMailboxNameInput , mailboxValue = model.mailboxName , recentOptions = model.session.persistent.recentMailboxes , recentActive = mailbox } - frame = - Page.frame controls model.session + framePage : + ActivePage + -> (msg -> Msg) + -> { title : String, content : Html msg } + -> Document Msg + framePage page toMsg { title, content } = + Document title + [ content + |> Html.map toMsg + |> Page.frame controls model.session page + ] in case model.page of Home subModel -> - Html.map HomeMsg (Home.view model.session subModel) - |> frame Page.Other + framePage Page.Other HomeMsg (Home.view model.session subModel) Mailbox subModel -> - Html.map MailboxMsg (Mailbox.view model.session subModel) - |> frame Page.Mailbox + framePage Page.Mailbox MailboxMsg (Mailbox.view model.session subModel) Monitor subModel -> - Html.map MonitorMsg (Monitor.view model.session subModel) - |> frame Page.Monitor + framePage Page.Monitor MonitorMsg (Monitor.view model.session subModel) Status subModel -> - Html.map StatusMsg (Status.view model.session subModel) - |> frame Page.Status + framePage Page.Status StatusMsg (Status.view model.session subModel) @@ -315,9 +327,11 @@ view model = main : Program Value Model Msg main = - Navigation.programWithFlags (Route.fromLocation >> NewRoute) + Browser.application { init = init , view = view , update = update , subscriptions = subscriptions + , onUrlChange = UrlChanged + , onUrlRequest = LinkClicked } diff --git a/ui/src/Page/Home.elm b/ui/src/Page/Home.elm index a460d47..baf0cab 100644 --- a/ui/src/Page/Home.elm +++ b/ui/src/Page/Home.elm @@ -19,18 +19,14 @@ type alias Model = init : ( Model, Cmd Msg ) init = - ( Model "" - , Cmd.batch - [ Ports.windowTitle "Inbucket" - , cmdGreeting - ] - ) - - -cmdGreeting : Cmd Msg -cmdGreeting = - Http.send GreetingResult <| - Http.getString "/serve/greeting" + let + cmdGreeting = + Http.get + { url = "/serve/greeting" + , expect = Http.expectString GreetingLoaded + } + in + ( Model "", cmdGreeting ) @@ -38,16 +34,16 @@ cmdGreeting = type Msg - = GreetingResult (Result Http.Error String) + = GreetingLoaded (Result Http.Error String) update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg ) update session msg model = case msg of - GreetingResult (Ok greeting) -> + GreetingLoaded (Ok greeting) -> ( Model greeting, Cmd.none, Session.none ) - GreetingResult (Err err) -> + GreetingLoaded (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) @@ -55,12 +51,15 @@ update session msg model = -- VIEW -- -view : Session -> Model -> Html Msg +view : Session -> Model -> { title : String, content : Html Msg } view session model = - div [ id "page" ] - [ div - [ class "greeting" - , property "innerHTML" (Encode.string model.greeting) + { title = "Inbucket" + , content = + div [ id "page" ] + [ Html.node "rendered-html" + [ class "greeting" + , property "content" (Encode.string model.greeting) + ] + [] ] - [] - ] + } diff --git a/ui/src/Page/Mailbox.elm b/ui/src/Page/Mailbox.elm index 84e871a..7afed54 100644 --- a/ui/src/Page/Mailbox.elm +++ b/ui/src/Page/Mailbox.elm @@ -3,15 +3,14 @@ module Page.Mailbox exposing (Model, Msg, init, load, subscriptions, update, vie import Data.Message as Message exposing (Message) import Data.MessageHeader as MessageHeader exposing (MessageHeader) import Data.Session as Session exposing (Session) -import Date exposing (Date) -import DateFormat +import DateFormat as DF import DateFormat.Relative as Relative import Html exposing (..) import Html.Attributes exposing ( class , classList - , downloadAs + , download , href , id , placeholder @@ -28,7 +27,7 @@ import Json.Encode as Encode import Ports import Route import Task -import Time exposing (Time) +import Time exposing (Posix) @@ -65,7 +64,7 @@ type alias MessageList = type alias VisibleMessage = { message : Message - , markSeenAt : Maybe Time + , markSeenAt : Maybe Int } @@ -74,13 +73,13 @@ type alias Model = , state : State , bodyMode : Body , searchInput : String - , now : Date + , now : Posix } init : String -> Maybe MessageID -> ( Model, Cmd Msg ) init mailboxName selection = - ( Model mailboxName (LoadingList selection) SafeHtmlBody "" (Date.fromTime 0) + ( Model mailboxName (LoadingList selection) SafeHtmlBody "" (Time.millisToPosix 0) , load mailboxName ) @@ -88,8 +87,7 @@ init mailboxName selection = load : String -> Cmd Msg load mailboxName = Cmd.batch - [ Ports.windowTitle (mailboxName ++ " - Inbucket") - , Task.perform Tick Time.now + [ Task.perform Tick Time.now , getList mailboxName ] @@ -108,13 +106,13 @@ subscriptions model = Sub.none else - Time.every (250 * Time.millisecond) SeenTick + Time.every 250 MarkSeenTick _ -> Sub.none in Sub.batch - [ Time.every (30 * Time.second) Tick + [ Time.every (30 * 1000) Tick , subSeen ] @@ -124,20 +122,20 @@ subscriptions model = type Msg - = ClickMessage MessageID - | DeleteMessage Message - | DeleteMessageResult (Result Http.Error ()) - | ListResult (Result Http.Error (List MessageHeader)) - | MarkSeenResult (Result Http.Error ()) - | MessageResult (Result Http.Error Message) + = ListLoaded (Result Http.Error (List MessageHeader)) + | ClickMessage MessageID + | OpenMessage MessageID + | MessageLoaded (Result Http.Error Message) | MessageBody Body - | OpenedTime Time - | Purge - | PurgeResult (Result Http.Error ()) - | SearchInput String - | SeenTick Time - | Tick Time - | ViewMessage MessageID + | OpenedTime Posix + | MarkSeenTick Posix + | MarkedSeen (Result Http.Error ()) + | DeleteMessage Message + | DeletedMessage (Result Http.Error ()) + | PurgeMailbox + | PurgedMailbox (Result Http.Error ()) + | OnSearchInput String + | Tick Posix update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg ) @@ -147,28 +145,25 @@ update session msg model = ( updateSelected model id , Cmd.batch [ -- Update browser location. - Route.newUrl (Route.Message model.mailboxName id) + Route.newUrl session.key (Route.Message model.mailboxName id) , getMessage model.mailboxName id ] , Session.DisableRouting ) - ViewMessage id -> - ( updateSelected model id - , getMessage model.mailboxName id - , Session.AddRecent model.mailboxName - ) + OpenMessage id -> + updateOpenMessage session model id DeleteMessage message -> updateDeleteMessage model message - DeleteMessageResult (Ok _) -> + DeletedMessage (Ok _) -> ( model, Cmd.none, Session.none ) - DeleteMessageResult (Err err) -> + DeletedMessage (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) - ListResult (Ok headers) -> + ListLoaded (Ok headers) -> case model.state of LoadingList selection -> let @@ -179,8 +174,7 @@ update session msg model = in case selection of Just id -> - -- Recurse to select message id. - update session (ViewMessage id) newModel + updateOpenMessage session newModel id Nothing -> ( newModel, Cmd.none, Session.AddRecent model.mailboxName ) @@ -188,25 +182,25 @@ update session msg model = _ -> ( model, Cmd.none, Session.none ) - ListResult (Err err) -> + ListLoaded (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) - MarkSeenResult (Ok _) -> + MarkedSeen (Ok _) -> ( model, Cmd.none, Session.none ) - MarkSeenResult (Err err) -> + MarkedSeen (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) - MessageResult (Ok message) -> + MessageLoaded (Ok message) -> updateMessageResult model message - MessageResult (Err err) -> + MessageLoaded (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) MessageBody bodyMode -> ( { model | bodyMode = bodyMode }, Cmd.none, Session.none ) - SearchInput searchInput -> + OnSearchInput searchInput -> updateSearchInput model searchInput OpenedTime time -> @@ -216,13 +210,17 @@ update session msg model = ( model, Cmd.none, Session.none ) else - -- Set delay before reporting message as seen to backend. + -- Set 1500ms delay before reporting message as seen to backend. + let + markSeenAt = + Time.posixToMillis time + 1500 + in ( { model | state = ShowingList list (ShowingMessage { visible - | markSeenAt = Just (time + (1.5 * Time.second)) + | markSeenAt = Just markSeenAt } ) } @@ -233,21 +231,21 @@ update session msg model = _ -> ( model, Cmd.none, Session.none ) - Purge -> + PurgeMailbox -> updatePurge model - PurgeResult (Ok _) -> + PurgedMailbox (Ok _) -> ( model, Cmd.none, Session.none ) - PurgeResult (Err err) -> + PurgedMailbox (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) - SeenTick now -> + MarkSeenTick now -> case model.state of ShowingList _ (ShowingMessage { message, markSeenAt }) -> case markSeenAt of Just deadline -> - if now >= deadline then + if Time.posixToMillis now >= deadline then updateMarkMessageSeen model message else @@ -260,7 +258,7 @@ update session msg model = ( model, Cmd.none, Session.none ) Tick now -> - ( { model | now = Date.fromTime now }, Cmd.none, Session.none ) + ( { model | now = now }, Cmd.none, Session.none ) {-| Replace the currently displayed message. @@ -298,8 +296,7 @@ updatePurge model = cmd = "/api/v1/mailbox/" ++ model.mailboxName - |> HttpUtil.delete - |> Http.send PurgeResult + |> HttpUtil.delete PurgedMailbox in case model.state of ShowingList list _ -> @@ -371,8 +368,7 @@ updateDeleteMessage model message = "/api/v1/mailbox/" ++ message.mailbox ++ "/" ++ message.id cmd = - HttpUtil.delete url - |> Http.send DeleteMessageResult + HttpUtil.delete DeletedMessage url filter f messageList = { messageList | headers = List.filter f messageList.headers } @@ -411,8 +407,7 @@ updateMarkMessageSeen model message = -- desired change in the body. Encode.object [ ( "seen", Encode.bool True ) ] |> Http.jsonBody - |> HttpUtil.patch url - |> Http.send MarkSeenResult + |> HttpUtil.patch MarkedSeen url map f messageList = { messageList | headers = List.map f messageList.headers } @@ -435,14 +430,24 @@ updateMarkMessageSeen model message = ( model, Cmd.none, Session.none ) +updateOpenMessage : Session -> Model -> String -> ( Model, Cmd Msg, Session.Msg ) +updateOpenMessage session model id = + ( updateSelected model id + , getMessage model.mailboxName id + , Session.AddRecent model.mailboxName + ) + + getList : String -> Cmd Msg getList mailboxName = let url = "/api/v1/mailbox/" ++ mailboxName in - Http.get url (Decode.list MessageHeader.decoder) - |> Http.send ListResult + Http.get + { url = url + , expect = Http.expectJson ListLoaded (Decode.list MessageHeader.decoder) + } getMessage : String -> MessageID -> Cmd Msg @@ -451,37 +456,42 @@ getMessage mailboxName id = url = "/serve/m/" ++ mailboxName ++ "/" ++ id in - Http.get url Message.decoder - |> Http.send MessageResult + Http.get + { url = url + , expect = Http.expectJson MessageLoaded Message.decoder + } -- VIEW -view : Session -> Model -> Html Msg +view : Session -> Model -> { title : String, content : Html Msg } view session model = - div [ id "page", class "mailbox" ] - [ viewMessageList session model - , main_ - [ id "message" ] - [ case model.state of - ShowingList _ NoMessage -> - text - ("Select a message on the left," - ++ " or enter a different username into the box on upper right." - ) + { title = model.mailboxName ++ " - Inbucket" + , content = + div [ id "page", class "mailbox" ] + [ viewMessageList session model + , main_ + [ id "message" ] + [ case model.state of + ShowingList _ NoMessage -> + text + ("Select a message on the left," + ++ " or enter a different username into the box on upper right." + ) - ShowingList _ (ShowingMessage { message }) -> - viewMessage message model.bodyMode + ShowingList _ (ShowingMessage { message }) -> + viewMessage message model.bodyMode - ShowingList _ (Transitioning { message }) -> - viewMessage message model.bodyMode + ShowingList _ (Transitioning { message }) -> + viewMessage message model.bodyMode - _ -> - text "" + _ -> + text "" + ] ] - ] + } viewMessageList : Session -> Model -> Html Msg @@ -491,11 +501,11 @@ viewMessageList session model = [ input [ type_ "search" , placeholder "search" - , onInput SearchInput + , onInput OnSearchInput , value model.searchInput ] [] - , button [ onClick Purge ] [ text "Purge" ] + , button [ onClick PurgeMailbox ] [ text "Purge" ] ] , case model.state of LoadingList _ -> @@ -530,14 +540,14 @@ messageChip model selected message = viewMessage : Message -> Body -> Html Msg viewMessage message bodyMode = let - sourceUrl message = + sourceUrl = "/serve/m/" ++ message.mailbox ++ "/" ++ message.id ++ "/source" in div [] [ div [ class "button-bar" ] [ button [ class "danger", onClick (DeleteMessage message) ] [ text "Delete" ] , a - [ href (sourceUrl message), target "_blank" ] + [ href sourceUrl, target "_blank" ] [ button [] [ text "Source" ] ] ] , dl [ id "message-header" ] @@ -584,10 +594,10 @@ messageBody message bodyMode = , article [ class "message-body" ] [ case bodyMode of SafeHtmlBody -> - div [ property "innerHTML" (Encode.string message.html) ] [] + Html.node "rendered-html" [ property "content" (Encode.string message.html) ] [] TextBody -> - div [ property "innerHTML" (Encode.string message.text) ] [] + Html.node "rendered-html" [ property "content" (Encode.string message.text) ] [] ] ] @@ -616,34 +626,35 @@ attachmentRow baseUrl attach = [ a [ href url, target "_blank" ] [ text attach.fileName ] , text (" (" ++ attach.contentType ++ ") ") ] - , td [] [ a [ href url, downloadAs attach.fileName, class "button" ] [ text "Download" ] ] + , td [] [ a [ href url, download attach.fileName, class "button" ] [ text "Download" ] ] ] -relativeDate : Model -> Date -> Html Msg +relativeDate : Model -> Posix -> Html Msg relativeDate model date = Relative.relativeTime model.now date |> text -verboseDate : Date -> Html Msg +verboseDate : Posix -> Html Msg verboseDate date = - DateFormat.format - [ DateFormat.monthNameFull - , DateFormat.text " " - , DateFormat.dayOfMonthSuffix - , DateFormat.text ", " - , DateFormat.yearNumber - , DateFormat.text " " - , DateFormat.hourNumber - , DateFormat.text ":" - , DateFormat.minuteFixed - , DateFormat.text ":" - , DateFormat.secondFixed - , DateFormat.text " " - , DateFormat.amPmUppercase - ] - date - |> text + text <| + DF.format + [ DF.monthNameFull + , DF.text " " + , DF.dayOfMonthSuffix + , DF.text ", " + , DF.yearNumber + , DF.text " " + , DF.hourNumber + , DF.text ":" + , DF.minuteFixed + , DF.text ":" + , DF.secondFixed + , DF.text " " + , DF.amPmUppercase + ] + Time.utc + date diff --git a/ui/src/Page/Monitor.elm b/ui/src/Page/Monitor.elm index d88594a..1fc1e1d 100644 --- a/ui/src/Page/Monitor.elm +++ b/ui/src/Page/Monitor.elm @@ -2,22 +2,14 @@ module Page.Monitor exposing (Model, Msg, init, subscriptions, update, view) import Data.MessageHeader as MessageHeader exposing (MessageHeader) import Data.Session as Session exposing (Session) -import Date exposing (Date) -import DateFormat - exposing - ( amPmUppercase - , dayOfMonthFixed - , format - , hourNumber - , minuteFixed - , monthNameFirstThree - ) +import DateFormat as DF import Html exposing (..) import Html.Attributes exposing (..) import Html.Events as Events import Json.Decode as D import Ports import Route +import Time exposing (Posix) @@ -30,14 +22,14 @@ type alias Model = } +type MonitorMessage + = Connected Bool + | Message MessageHeader + + init : ( Model, Cmd Msg ) init = - ( Model False [] - , Cmd.batch - [ Ports.windowTitle "Inbucket Monitor" - , Ports.monitorCommand True - ] - ) + ( Model False [], Ports.monitorCommand True ) @@ -55,7 +47,7 @@ subscriptions model = |> D.decodeValue |> Ports.monitorMessage in - Sub.map MonitorResult monitorMessage + Sub.map MessageReceived monitorMessage @@ -63,30 +55,25 @@ subscriptions model = type Msg - = MonitorResult (Result String MonitorMessage) + = MessageReceived (Result D.Error MonitorMessage) | OpenMessage MessageHeader -type MonitorMessage - = Connected Bool - | Message MessageHeader - - update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg ) update session msg model = case msg of - MonitorResult (Ok (Connected status)) -> + MessageReceived (Ok (Connected status)) -> ( { model | connected = status }, Cmd.none, Session.none ) - MonitorResult (Ok (Message msg)) -> - ( { model | messages = msg :: model.messages }, Cmd.none, Session.none ) + MessageReceived (Ok (Message header)) -> + ( { model | messages = header :: model.messages }, Cmd.none, Session.none ) - MonitorResult (Err err) -> - ( model, Cmd.none, Session.SetFlash err ) + MessageReceived (Err err) -> + ( model, Cmd.none, Session.SetFlash (D.errorToString err) ) - OpenMessage msg -> + OpenMessage header -> ( model - , Route.newUrl (Route.Message msg.mailbox msg.id) + , Route.newUrl session.key (Route.Message header.mailbox header.id) , Session.none ) @@ -95,32 +82,35 @@ update session msg model = -- VIEW -view : Session -> Model -> Html Msg +view : Session -> Model -> { title : String, content : Html Msg } view session model = - div [ id "page" ] - [ h1 [] [ text "Monitor" ] - , p [] - [ text "Messages will be listed here shortly after delivery. " - , em [] - [ text - (if model.connected then - "Connected." + { title = "Inbucket Monitor" + , content = + div [ id "page" ] + [ h1 [] [ text "Monitor" ] + , p [] + [ text "Messages will be listed here shortly after delivery. " + , em [] + [ text + (if model.connected then + "Connected." - else - "Disconnected!" - ) + else + "Disconnected!" + ) + ] + ] + , table [ id "monitor" ] + [ thead [] + [ th [] [ text "Date" ] + , th [ class "desktop" ] [ text "From" ] + , th [] [ text "Mailbox" ] + , th [] [ text "Subject" ] + ] + , tbody [] (List.map viewMessage model.messages) ] ] - , table [ id "monitor" ] - [ thead [] - [ th [] [ text "Date" ] - , th [ class "desktop" ] [ text "From" ] - , th [] [ text "Mailbox" ] - , th [] [ text "Subject" ] - ] - , tbody [] (List.map viewMessage model.messages) - ] - ] + } viewMessage : MessageHeader -> Html Msg @@ -133,18 +123,19 @@ viewMessage message = ] -shortDate : Date -> Html Msg +shortDate : Posix -> Html Msg shortDate date = - format - [ dayOfMonthFixed - , DateFormat.text "-" - , monthNameFirstThree - , DateFormat.text " " - , hourNumber - , DateFormat.text ":" - , minuteFixed - , DateFormat.text " " - , amPmUppercase + DF.format + [ DF.dayOfMonthFixed + , DF.text "-" + , DF.monthNameAbbreviated + , DF.text " " + , DF.hourNumber + , DF.text ":" + , DF.minuteFixed + , DF.text " " + , DF.amPmUppercase ] + Time.utc date |> text diff --git a/ui/src/Page/Status.elm b/ui/src/Page/Status.elm index 7413047..915d727 100644 --- a/ui/src/Page/Status.elm +++ b/ui/src/Page/Status.elm @@ -7,9 +7,9 @@ import Html exposing (..) import Html.Attributes exposing (..) import Http exposing (Error) import HttpUtil -import Sparkline exposing (DataSet, Point, Size, sparkline) +import Sparkline as Spark import Svg.Attributes as SvgAttrib -import Time exposing (Time) +import Time exposing (Posix) @@ -40,8 +40,8 @@ type alias Metric = { label : String , value : Int , formatter : Int -> String - , graph : DataSet -> Html Msg - , history : DataSet + , graph : Spark.DataSet -> Html Msg + , history : Spark.DataSet , minutes : Int } @@ -67,7 +67,7 @@ init = } -initDataSet : DataSet +initDataSet : Spark.DataSet initDataSet = List.range 0 59 |> List.map (\x -> ( toFloat x, 0 )) @@ -84,7 +84,7 @@ load = subscriptions : Model -> Sub Msg subscriptions model = - Time.every (10 * Time.second) Tick + Time.every (10 * 1000) Tick @@ -92,17 +92,17 @@ subscriptions model = type Msg - = NewMetrics (Result Http.Error Metrics) - | Tick Time + = MetricsReceived (Result Http.Error Metrics) + | Tick Posix update : Session -> Msg -> Model -> ( Model, Cmd Msg, Session.Msg ) update session msg model = case msg of - NewMetrics (Ok metrics) -> + MetricsReceived (Ok metrics) -> ( updateMetrics metrics model, Cmd.none, Session.none ) - NewMetrics (Err err) -> + MetricsReceived (Err err) -> ( model, Cmd.none, Session.SetFlash (HttpUtil.errorString err) ) Tick time -> @@ -207,46 +207,51 @@ updateRemoteTotal metric value history = getMetrics : Cmd Msg getMetrics = - Http.get "/debug/vars" Metrics.decoder - |> Http.send NewMetrics + Http.get + { url = "/debug/vars" + , expect = Http.expectJson MetricsReceived Metrics.decoder + } -- VIEW -- -view : Session -> Model -> Html Msg +view : Session -> Model -> { title : String, content : Html Msg } view session model = - div [ id "page" ] - [ h1 [] [ text "Status" ] - , case model.metrics of - Nothing -> - div [] [ text "Loading metrics..." ] + { title = "Inbucket Status" + , content = + div [ id "page" ] + [ h1 [] [ text "Status" ] + , case model.metrics of + Nothing -> + div [] [ text "Loading metrics..." ] - Just metrics -> - div [] - [ framePanel "General Metrics" - [ viewMetric model.sysMem - , viewMetric model.heapSize - , viewMetric model.heapUsed - , viewMetric model.heapObjects - , viewMetric model.goRoutines - , viewMetric model.webSockets + Just metrics -> + div [] + [ framePanel "General Metrics" + [ viewMetric model.sysMem + , viewMetric model.heapSize + , viewMetric model.heapUsed + , viewMetric model.heapObjects + , viewMetric model.goRoutines + , viewMetric model.webSockets + ] + , framePanel "SMTP Metrics" + [ viewMetric model.smtpConnOpen + , viewMetric model.smtpConnTotal + , viewMetric model.smtpReceivedTotal + , viewMetric model.smtpErrorsTotal + , viewMetric model.smtpWarnsTotal + ] + , framePanel "Storage Metrics" + [ viewMetric model.retentionDeletesTotal + , viewMetric model.retainedCount + , viewMetric model.retainedSize + ] ] - , framePanel "SMTP Metrics" - [ viewMetric model.smtpConnOpen - , viewMetric model.smtpConnTotal - , viewMetric model.smtpReceivedTotal - , viewMetric model.smtpErrorsTotal - , viewMetric model.smtpWarnsTotal - ] - , framePanel "Storage Metrics" - [ viewMetric model.retentionDeletesTotal - , viewMetric model.retainedCount - , viewMetric model.retainedSize - ] - ] - ] + ] + } viewMetric : Metric -> Html Msg @@ -256,7 +261,7 @@ viewMetric metric = , div [ class "value" ] [ text (metric.formatter metric.value) ] , div [ class "graph" ] [ metric.graph metric.history - , text ("(" ++ toString metric.minutes ++ "min)") + , text ("(" ++ String.fromInt metric.minutes ++ "min)") ] ] @@ -278,30 +283,34 @@ graphNull = div [] [] -graphSize : Size +graphSize : Spark.Size graphSize = - ( 180, 16, 0, 0 ) + { width = 180 + , height = 16 + , marginLR = 0 + , marginTB = 0 + } -areaStyle : Sparkline.Param a -> Sparkline.Param a +areaStyle : Spark.Param a -> Spark.Param a areaStyle = - Sparkline.Style + Spark.Style [ SvgAttrib.fill "rgba(50,100,255,0.3)" , SvgAttrib.stroke "rgba(50,100,255,1.0)" , SvgAttrib.strokeWidth "1.0" ] -barStyle : Sparkline.Param a -> Sparkline.Param a +barStyle : Spark.Param a -> Spark.Param a barStyle = - Sparkline.Style + Spark.Style [ SvgAttrib.fill "rgba(50,200,50,0.7)" ] -zeroStyle : Sparkline.Param a -> Sparkline.Param a +zeroStyle : Spark.Param a -> Spark.Param a zeroStyle = - Sparkline.Style + Spark.Style [ SvgAttrib.stroke "rgba(0,0,0,0.2)" , SvgAttrib.strokeWidth "1.0" ] @@ -309,7 +318,7 @@ zeroStyle = {-| Bar graph to be used with updateRemoteTotal metrics (change instead of absolute values). -} -graphChange : DataSet -> Html a +graphChange : Spark.DataSet -> Html a graphChange data = let -- Used with Domain to stop sparkline forgetting about zero; continue scrolling graph. @@ -321,16 +330,16 @@ graphChange data = Just point -> Tuple.first point in - sparkline graphSize - [ Sparkline.Bar 2.5 data |> barStyle - , Sparkline.ZeroLine |> zeroStyle - , Sparkline.Domain [ ( x, 0 ), ( x, 1 ) ] + Spark.sparkline graphSize + [ Spark.Bar 2.5 data |> barStyle + , Spark.ZeroLine |> zeroStyle + , Spark.Domain [ ( x, 0 ), ( x, 1 ) ] ] {-| Zero based area graph, for charting absolute values relative to 0. -} -graphZero : DataSet -> Html a +graphZero : Spark.DataSet -> Html a graphZero data = let -- Used with Domain to stop sparkline forgetting about zero; continue scrolling graph. @@ -342,10 +351,10 @@ graphZero data = Just point -> Tuple.first point in - sparkline graphSize - [ Sparkline.Area data |> areaStyle - , Sparkline.ZeroLine |> zeroStyle - , Sparkline.Domain [ ( x, 0 ), ( x, 1 ) ] + Spark.sparkline graphSize + [ Spark.Area data |> areaStyle + , Spark.ZeroLine |> zeroStyle + , Spark.Domain [ ( x, 0 ), ( x, 1 ) ] ] @@ -400,4 +409,4 @@ fmtInt n = else thousands (String.slice 0 -3 str) ++ "," ++ String.right 3 str in - thousands (toString n) + thousands (String.fromInt n) diff --git a/ui/src/Ports.elm b/ui/src/Ports.elm index 108c1f0..9d85612 100644 --- a/ui/src/Ports.elm +++ b/ui/src/Ports.elm @@ -3,7 +3,6 @@ port module Ports exposing , monitorMessage , onSessionChange , storeSession - , windowTitle ) import Data.Session exposing (Persistent) @@ -20,6 +19,3 @@ port onSessionChange : (Value -> msg) -> Sub msg port storeSession : Persistent -> Cmd msg - - -port windowTitle : String -> Cmd msg diff --git a/ui/src/Route.elm b/ui/src/Route.elm index 64bb271..349556e 100644 --- a/ui/src/Route.elm +++ b/ui/src/Route.elm @@ -1,9 +1,10 @@ -module Route exposing (Route(..), fromLocation, href, modifyUrl, newUrl) +module Route exposing (Route(..), fromUrl, href, modifyUrl, newUrl) +import Browser.Navigation as Navigation exposing (Key) import Html exposing (Attribute) import Html.Attributes as Attr -import Navigation exposing (Location) -import UrlParser as Url exposing ((), Parser, parseHash, s, string) +import Url exposing (Url) +import Url.Parser as Parser exposing ((), Parser, map, oneOf, s, string, top) type Route @@ -15,17 +16,20 @@ type Route | Status -matcher : Parser (Route -> a) a -matcher = - Url.oneOf - [ Url.map Home (s "") - , Url.map Message (s "m" string string) - , Url.map Mailbox (s "m" string) - , Url.map Monitor (s "monitor") - , Url.map Status (s "status") - ] +{-| Routes our application handles. +-} +routes : List (Parser (Route -> a) a) +routes = + [ map Home top + , map Message (s "m" string string) + , map Mailbox (s "m" string) + , map Monitor (s "monitor") + , map Status (s "status") + ] +{-| Convert route to a URI. +-} routeToString : Route -> String routeToString page = let @@ -49,37 +53,35 @@ routeToString page = Status -> [ "status" ] in - "/#/" ++ String.join "/" pieces + "/" ++ String.join "/" pieces -- PUBLIC HELPERS -href : Route -> Attribute msg -href route = +href : Key -> Route -> Attribute msg +href key route = Attr.href (routeToString route) -modifyUrl : Route -> Cmd msg -modifyUrl = - routeToString >> Navigation.modifyUrl +modifyUrl : Key -> Route -> Cmd msg +modifyUrl key = + routeToString >> Navigation.replaceUrl key -newUrl : Route -> Cmd msg -newUrl = - routeToString >> Navigation.newUrl +newUrl : Key -> Route -> Cmd msg +newUrl key = + routeToString >> Navigation.pushUrl key -fromLocation : Location -> Route -fromLocation location = - if String.isEmpty location.hash then - Home +{-| Returns the Route for a given URL. +-} +fromUrl : Url -> Route +fromUrl location = + case Parser.parse (oneOf routes) location of + Nothing -> + Unknown location.path - else - case parseHash matcher location of - Nothing -> - Unknown location.hash - - Just route -> - route + Just route -> + route diff --git a/ui/src/Views/Page.elm b/ui/src/Views/Page.elm index c6860a1..63374b8 100644 --- a/ui/src/Views/Page.elm +++ b/ui/src/Views/Page.elm @@ -10,7 +10,9 @@ import Html.Attributes , href , id , placeholder + , rel , selected + , target , type_ , value ) @@ -39,10 +41,11 @@ frame controls session page content = div [ id "app" ] [ header [] [ ul [ class "navbar", attribute "role" "navigation" ] - [ li [ id "navbar-brand" ] [ a [ Route.href Route.Home ] [ text "@ inbucket" ] ] - , navbarLink page Route.Monitor [ text "Monitor" ] - , navbarLink page Route.Status [ text "Status" ] - , navbarRecent page controls + [ li [ id "navbar-brand" ] + [ a [ Route.href session.key Route.Home ] [ text "@ inbucket" ] ] + , navbarLink session page Route.Monitor [ text "Monitor" ] + , navbarLink session page Route.Status [ text "Status" ] + , navbarRecent session page controls , li [ id "navbar-mailbox" ] [ form [ Events.onSubmit (controls.viewMailbox controls.mailboxValue) ] [ input @@ -61,33 +64,35 @@ frame controls session page content = , content , footer [] [ div [ id "footer" ] - [ a [ href "https://www.inbucket.org" ] [ text "Inbucket" ] + [ externalLink "https://www.inbucket.org" "Inbucket" , text " is an open source projected hosted at " - , a [ href "https://github.com/jhillyerd/inbucket" ] [ text "GitHub" ] + , externalLink "https://github.com/jhillyerd/inbucket" "GitHub" , text "." ] ] ] -navbarLink : ActivePage -> Route -> List (Html a) -> Html a -navbarLink page route linkContent = +externalLink : String -> String -> Html a +externalLink url title = + a [ href url, target "_blank", rel "noopener" ] [ text title ] + + +navbarLink : Session -> ActivePage -> Route -> List (Html a) -> Html a +navbarLink session page route linkContent = li [ classList [ ( "navbar-active", isActive page route ) ] ] - [ a [ Route.href route ] linkContent ] + [ a [ Route.href session.key route ] linkContent ] {-| Renders list of recent mailboxes, selecting the currently active mailbox. -} -navbarRecent : ActivePage -> FrameControls msg -> Html msg -navbarRecent page controls = +navbarRecent : Session -> ActivePage -> FrameControls msg -> Html msg +navbarRecent session page controls = let - recentItemLink mailbox = - a [ Route.href (Route.Mailbox mailbox) ] [ text mailbox ] - active = page == Mailbox - -- Navbar tab title, is current mailbox when active. + -- Recent tab title is the name of the current mailbox when active. title = if active then controls.recentActive @@ -95,20 +100,23 @@ navbarRecent page controls = else "Recent Mailboxes" - -- Items to show in recent list, doesn't include active mailbox. - items = + -- Mailboxes to show in recent list, doesn't include active mailbox. + recentMailboxes = if active then List.tail controls.recentOptions |> Maybe.withDefault [] else controls.recentOptions + + recentLink mailbox = + a [ Route.href session.key (Route.Mailbox mailbox) ] [ text mailbox ] in li [ id "navbar-recent" , classList [ ( "navbar-dropdown", True ), ( "navbar-active", active ) ] ] [ span [] [ text title ] - , div [ class "navbar-dropdown-content" ] (List.map recentItemLink items) + , div [ class "navbar-dropdown-content" ] (List.map recentLink recentMailboxes) ] diff --git a/ui/src/index.js b/ui/src/index.js index 6b1f476..70ccdcb 100644 --- a/ui/src/index.js +++ b/ui/src/index.js @@ -1,10 +1,13 @@ import './main.css' -import { Main } from './Main.elm' -import registerServiceWorker from './registerServiceWorker' +import { Elm } from './Main.elm' import registerMonitorPorts from './registerMonitor' +import './renderedHtml' // App startup. -var app = Main.embed(document.getElementById('root'), sessionObject()) +var app = Elm.Main.init({ + node: document.getElementById('root'), + flags: sessionObject() +}) // Message monitor. registerMonitorPorts(app) @@ -31,10 +34,3 @@ function sessionObject() { } return null } - -// Window title. -app.ports.windowTitle.subscribe(function (title) { - document.title = title -}) - -registerServiceWorker() diff --git a/ui/src/registerServiceWorker.js b/ui/src/registerServiceWorker.js deleted file mode 100644 index 4a3ccf0..0000000 --- a/ui/src/registerServiceWorker.js +++ /dev/null @@ -1,108 +0,0 @@ -// In production, we register a service worker to serve assets from local cache. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on the "N+1" visit to a page, since previously -// cached resources are updated in the background. - -// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. -// This link also includes instructions on opting out of this behavior. - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match( - /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ - ) -); - -export default function register() { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (!isLocalhost) { - // Is not local host. Just register service worker - registerValidSW(swUrl); - } else { - // This is running on localhost. Lets check if a service worker still exists or not. - checkValidServiceWorker(swUrl); - } - }); - } -} - -function registerValidSW(swUrl) { - navigator.serviceWorker - .register(swUrl) - .then(registration => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the old content will have been purged and - // the fresh content will have been added to the cache. - // It's the perfect time to display a "New content is - // available; please refresh." message in your web app. - console.log('New content is available; please refresh.'); - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - } - } - }; - }; - }) - .catch(error => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then(response => { - // Ensure service worker exists, and that we really are getting a JS file. - if ( - response.status === 404 || - response.headers.get('content-type').indexOf('javascript') === -1 - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then(registration => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl); - } - }) - .catch(() => { - console.log( - 'No internet connection found. App is running in offline mode.' - ); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then(registration => { - registration.unregister(); - }); - } -} diff --git a/ui/src/renderedHtml.js b/ui/src/renderedHtml.js new file mode 100644 index 0000000..62b04ad --- /dev/null +++ b/ui/src/renderedHtml.js @@ -0,0 +1,24 @@ +// This element allows Inbucket to draw server rendered HTML, aka HTML email. +// https://leveljournal.com/server-rendered-html-in-elm + +customElements.define( + "rendered-html", + class RenderedHtml extends HTMLElement { + constructor() { + super() + this._content = "" + } + + set content(value) { + if (this._content === value) { + return + } + this._content = value + this.innerHTML = value + } + + get content() { + return this._content + } + } +) diff --git a/ui/webpack.config.js b/ui/webpack.config.js new file mode 100644 index 0000000..c68f747 --- /dev/null +++ b/ui/webpack.config.js @@ -0,0 +1,70 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin') +const webpack = require('webpack') + +module.exports = (env, argv) => { + const production = argv.mode === 'production' + const config = { + output: { + filename: 'static/[name].js', + publicPath: '/', + }, + module: { + rules: [ + { + test: /\.js$/, + exclude: [/elm-stuff/, /node_modules/], + loader: 'babel-loader', + query: { + presets: [ + '@babel/preset-env', + ], + }, + }, + { + test: /\.elm$/, + exclude: [/elm-stuff/, /node_modules/], + use: [ + { loader: 'elm-hot-webpack-loader' }, + { + loader: 'elm-webpack-loader', + options: { + debug: !production, + optimize: production, + }, + }, + ], + }, + { + test: /\.css$/, + exclude: [/node_modules/], + loader: ['style-loader', 'css-loader'], + }, + ] + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'public/index.html', + favicon: 'public/favicon.png', + }), + ], + devServer: { + inline: true, + historyApiFallback: true, + stats: { colors: true }, + overlay: true, + open: true, + proxy: [{ + context: ['/api', '/debug', '/serve'], + target: 'http://localhost:9000', + ws: true, + }], + watchOptions: { + ignored: /node_modules/, + }, + }, + } + if (argv.hot) { + config.plugins.push(new webpack.HotModuleReplacementPlugin()) + } + return config +}