diff --git a/.browserslistrc b/.browserslistrc deleted file mode 100644 index d6471a3..0000000 --- a/.browserslistrc +++ /dev/null @@ -1,2 +0,0 @@ -> 1% -last 2 versions diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 9d08a1a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 2b4dd40..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - root: true, - env: { - node: true, - jest: true - }, - 'extends': [ - 'plugin:vue/essential', - 'eslint:recommended' - ], - rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' - }, - parserOptions: { - parser: 'babel-eslint' - }, - overrides: [ - { - files: [ - '**/__tests__/*.{j,t}s?(x)', - '**/tests/unit/**/*.test.{j,t}s?(x)', - ], - env: { - jest: true - } - } - ] -} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0a154b5..0000000 --- a/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -.DS_Store -node_modules/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln - -# my edits -old/ -old -*.psd -index_old.html -TODO.txt diff --git a/404.html b/404.html new file mode 100644 index 0000000..f6e02e2 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +Johannes Schweig
\ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 3ba5e0b..0000000 --- a/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Portfolio website -This is my portfolio website using Vue.js and GridCSS, deployed on github pages. I made this to learn Vue.js and create a nice portfolio website for me as a UX Designer from the ground up. - -## Getting Started -Clone this repository. There are three branches: -- main: the deployed files for github pages -- vueapp: the vue source code of the latest version of the website -- develop: branch for new features, eventually merged into vueapp -- old_app: an old version of the website written in pure HTML, CSS, JavaScript, jQuery and Bootstrap. - - -### Prerequisites - -You need `nodejs` and `npm`. - -### Running the dev setup - -Switch to branch `vueapp`. Run `npm i` to install the dependencies, then `npm run dev` to start a development server on `localhost:8080`. Open your browser at `localhost:8080`. - -Alternatively, you can also serve the deployed files from `main` branch. I use [http-server](https://www.npmjs.com/package/http-server) for that. Switch to branch `main`. Run `http-server` inside the directory. Visit `localhost:8080` with your webbrowser - -## Linting & Tests - -Linting is done with `npm run lint`. Tests are located in `tests/unit`. Run them with `npm run unit`. - -## Deployment - -If you want to build the files necessary for github pages, run `deploy.sh` in the branch `vueapp`. It will build the project, copy the `index.html` to each routes folder to allow for routes with double slashes (e.g. johannesschweig.github.io/phoenix/) and force push the changes to main. - -## Credits - -**Built with:** -* [GridCSS](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout) - like Bootstrap only newer, more versatile and features less css styles you don't necessarily need -* [Vue.js](https://vuejs.org/) - a JavaScript Framework similar to React or Angular - -## License - -You may reuse my code which is about the technical side of this project (e.g. page setup, build scripts, layout) without asking if you provide attribution somewhere. You may NOT reuse any of my images or copy (i.e. written text). diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 1fa583e..0000000 --- a/TODO.md +++ /dev/null @@ -1,84 +0,0 @@ -# Linux code work -- make previous/nextProject more elegant -- better image src inclusion -- favicon in all formats - -# Ideas -- popup to show images fullscreen -- unit tests -- e2e tests -- Drop shadow also for images in small viewports? -- make the projects extensible -- read more about accessibility of websites (and implement some features) -- Include Google Analytics? - -# DONE -## 2.3.0 -- egl project -- updated packages -## 2.2.0 -- website-wide styles with responsive scaling -- updated packages -## 2.1.0 -- scenario manager -- cover images now in 16:10 format -- cards - - 3 projects look shitty in 2x2 format -## 2.0.0 -- new color scheme -- svg loading of icons -## 1.3.0 -- CV on website -- repair favicon -- Header not sticky -- include old projects (mechanics, thesis) -- basis for unit and e2e tests - -- Code snippets images: - [Image: three manipulation nodes vs one node] - [Image: formulas08 vs formulas01 tabbed interface vs dropdown, first row vs result only] -> Done -- scale bio images to 48x48px -- new images for legal, mail, address -- make ul font size on legal 14px -- vertical-align: middle for img on legal, 1px padding-bottom -- #name larger: 200px -- redo pattern: 830 height -- merge images phoenix hover and tooltip -- create nice illustration for querybuilder -- Legal: align content with header -- phoenix: include tooltips, hover-effects to illustrate affordances/microinteractions -- fix weird cell heights in project preview -- Replace Bootstrap with Grid CSS -- project: text-image under each other -- revisit sticky header paradigm -- 404 for not accessible content -- "Back"-Functionality and design at "Johannes Schweig" -- Orientation for the user, e.g. "Phoenix" centered in header? -- remove require from all entries/* -- scrolling up when visiting a different route -- port to react -> ported to vue - -- Rework favicon -- UseTree projects: name methods that I used, compared with methods of the other team -- phoenix: write UCD process like, name methods in all phases of the process, make up the rest (Design Research, User Research, Sketches, mockups, paper prototyping, 1st evaluation) -- phoenix: delete design critic of itunes -- Review newly written projects -- Include section: Artwork/Layout with posters I co-designed -- Rewrite alt tag for impaired users (description of the image) -- image margins bottom with 1 column layout are too low -> .entry-img 15px padding -- Allow thesis download (generate new version) -- create download icon for thesis -- Include image of condat evaluation -- build collage of projects as preview-img -- icon for artwork -- check images for resolution (800x600 max) - -# DROPPED -- PhoenixJS improvements: create PhoenixJS image, overlay screenshot, screenshot of the auto dj icons -> phoenixjs is about to be retired -- 404 not working due to github pages crap -- Thesis: Fix pdf download -- Padding left of name looks weird compared to content on page -> images are centered (!) -- Illustration for testimonials? Face of the client (too aggro),...? -- Bio Icon (Stylize my face? mb also favicon?) -- scenario manager project -- insert PhoenixJS image -> will be deprecated soon diff --git a/src/assets/bio/CV.pdf b/assets/pdf/CV.f512dad1.pdf similarity index 100% rename from src/assets/bio/CV.pdf rename to assets/pdf/CV.f512dad1.pdf diff --git a/src/assets/thesis/thesis.pdf b/assets/pdf/thesis.0901653d.pdf similarity index 100% rename from src/assets/thesis/thesis.pdf rename to assets/pdf/thesis.0901653d.pdf diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index e955840..0000000 --- a/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/css/app.e9ce6c99.css b/css/app.e9ce6c99.css new file mode 100644 index 0000000..1ee7e64 --- /dev/null +++ b/css/app.e9ce6c99.css @@ -0,0 +1 @@ +#header[data-v-5e2b32e6]{height:64px;width:100%;-webkit-box-shadow:var(--shadow);box-shadow:var(--shadow);background-color:#fff}#grid[data-v-5e2b32e6]{--pad:12px;display:grid;grid-template-columns:200px 1fr 100px 100px}#name[data-v-5e2b32e6]{grid-column:1/2;color:var(--dark);line-height:64px}#work[data-v-5e2b32e6]{grid-column:3/4}#about[data-v-5e2b32e6],#work[data-v-5e2b32e6]{color:var(--light);text-align:center;line-height:62px;background:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#fff),color-stop(50%,var(--light-blue)));background:linear-gradient(180deg,#fff 50%,var(--light-blue) 0);background-size:100% 200%;background-position:0 0;-webkit-transition:all .15s ease;transition:all .15s ease}#about[data-v-5e2b32e6]:hover,#work[data-v-5e2b32e6]:hover{color:var(--blue);background-position:0 100%}#about.active[data-v-5e2b32e6],#work.active[data-v-5e2b32e6]{color:var(--blue);border-bottom:2px solid var(--blue)}.h6sans[data-v-5e2b32e6]{margin:0}a[data-v-e3651c6e]{display:inline-block;cursor:pointer;height:var(--size);color:var(--dark);-webkit-transition:all .2s ease;transition:all .2s ease}svg[data-v-e3651c6e]{display:inline-block;height:var(--size);width:var(--size);vertical-align:top}svg path[data-v-e3651c6e]{-webkit-transition:all .2s ease;transition:all .2s ease}.with-text[data-v-e3651c6e]{border-radius:var(--radius);padding:6px 12px}.with-text[data-v-e3651c6e]:hover{color:#fff;background-color:var(--blue)}.with-text svg[data-v-e3651c6e]{margin-right:8px}.with-text svg path[data-v-e3651c6e]{fill:var(--dark)}.with-text:hover svg path[data-v-e3651c6e]{fill:#fff}.text[data-v-e3651c6e]{display:inline-block;vertical-align:top;line-height:var(--size)}a:not(.with-text) svg path[data-v-e3651c6e]{fill:#fff;opacity:.8}a:not(.with-text):hover svg path[data-v-e3651c6e]{opacity:1}#contact[data-v-0e6a4de4]{background-color:var(--dark);font-family:var(--font-serif);padding-left:var(--content-padding);padding-right:var(--content-padding);height:220px;display:grid;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.container[data-v-0e6a4de4]{text-align:center;margin:0 auto}h3[data-v-0e6a4de4]{color:#fff;margin:0 0 18px 0}a[data-v-0e6a4de4]:nth-child(2){margin-right:40px}#legal[data-v-0e6a4de4]{text-align:center;line-height:32px;color:var(--light)}@media screen and (max-width:768px){#contact[data-v-0e6a4de4]{height:170px}h3[data-v-0e6a4de4]{font-size:var(--size-h4)}}@font-face{font-display:swap;font-family:Lato;font-style:normal;font-weight:300;src:url(../fonts/lato-v23-latin-300.716309aa.woff2) format("woff2"),url(../fonts/lato-v23-latin-300.bbaaef98.woff) format("woff")}@font-face{font-display:swap;font-family:Lato;font-style:normal;font-weight:400;src:url(../fonts/lato-v23-latin-regular.e1b3b590.woff2) format("woff2"),url(../fonts/lato-v23-latin-regular.0e898c13.woff) format("woff")}@font-face{font-display:swap;font-family:Lato;font-style:normal;font-weight:700;src:url(../fonts/lato-v23-latin-700.de69cf9e.woff2) format("woff2"),url(../fonts/lato-v23-latin-700.1833f9fa.woff) format("woff")}@font-face{font-display:swap;font-family:Lora;font-style:normal;font-weight:400;src:url(../fonts/lora-v32-latin-regular.03724bc4.woff2) format("woff2"),url(../fonts/lora-v32-latin-regular.d23ef47d.woff) format("woff")}@font-face{font-display:swap;font-family:Lora;font-style:normal;font-weight:700;src:url(../fonts/lora-v32-latin-700.1af9e198.woff2) format("woff2"),url(../fonts/lora-v32-latin-700.b64c9538.woff) format("woff")}:root{--font-sans:"Lato",sans-serif;--font-serif:"Lora",serif;--content-padding:30px;--dark:#212121;--light:#666;--blue:#355dae;--light-blue:#e6ecf2;--shadow:0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);--grad:linear-gradient(180deg,var(--light-blue),#ebf2f2);--radius:2px;--size-h1:96px;--size-h2:60px;--size-h3:48px;--size-h4:34px;--size-h5:24px;--size-h6:20px;--size-sub1:16px;--size-sub2:14px}body{font-family:var(--font-sans);color:var(--dark);margin:0;background:var(--grad)}#app,body{height:100%}#app{display:grid;grid-template-rows:64px 1fr auto}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:400}h1{font-size:var(--size-h1);margin:112px 0 48px 0}h2{font-size:var(--size-h2);margin:72px 0 32px 0}h3{font-size:var(--size-h3);margin:60px 0 24px 0}h4{font-size:var(--size-h4);margin:40px 0 16px 0}.h5sans,h5{font-size:var(--size-h5);margin:32px 0 12px 0}.h6sans,h6{font-size:var(--size-h6);margin:24px 0 8px 0}.body1,.body2,.h5sans,.h6sans,.subtitle1,.subtitle2{font-family:var(--font-sans)}.subtitle1{font-size:var(--size-sub1)}.subtitle1,.subtitle2{text-transform:uppercase;color:var(--light)}.subtitle2{font-size:var(--size-sub2)}.body1{font-size:var(--size-sub1)}.body2{font-size:var(--size-sub2)}.body1 p{margin:0 0 24px 0;line-height:32px}.body2 p{margin:6px 0;line-height:24px}a{text-decoration:none;color:var(--dark)}ol,p,ul{max-width:700px}p{line-height:28px}ul{margin:0 0 24px 0}ol li,ul li{line-height:28px}.link{border-bottom:2px solid rgba(53,93,174,.5)}.link:hover{border-bottom:2px solid var(--blue)}.responsive{padding-left:var(--content-padding);padding-right:var(--content-padding);max-width:1200px;margin:0 auto}#about[data-v-71f764a6]{min-height:calc(100vh - 316px)}.responsive[data-v-71f764a6]{padding-top:48px;padding-bottom:48px;display:grid;grid-template-columns:4fr 48px 5fr}.responsive>img[data-v-71f764a6]{max-width:100%;grid-column:1/2}#text[data-v-71f764a6]{grid-column:3/4;padding-bottom:0}h4[data-v-71f764a6]{margin-top:0}#text[data-v-71f764a6]{padding-bottom:24px}.icons[data-v-71f764a6]{margin-top:20px}.icons>a[data-v-71f764a6]{margin-right:24px}@media screen and (max-width:768px) and (min-width:550px){.responsive>img[data-v-71f764a6]{max-width:70%;margin-left:auto;margin-right:auto;display:block}}@media screen and (max-width:768px){.responsive[data-v-71f764a6]{display:block}h4[data-v-71f764a6]{font-size:var(--size-h5);margin-top:32px}h5[data-v-71f764a6]{font-size:var(--size-h6)}h6[data-v-71f764a6]{font-size:var(--size-sub1);font-weight:700}}.responsive[data-v-664fedb4]{padding-top:64px;padding-bottom:32px}h2[data-v-664fedb4],h5[data-v-664fedb4]{margin:0}#name-container[data-v-664fedb4]{margin-bottom:32px}#heading-container[data-v-664fedb4]{display:grid;grid-template-rows:1fr 3fr;row-gap:4px;grid-auto-flow:column;max-width:700px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media screen and (max-width:768px){#heading-container[data-v-664fedb4]{row-gap:0}h2[data-v-664fedb4]{font-size:var(--size-h3)}h5[data-v-664fedb4]{font-size:var(--size-h6)}.subtitle1[data-v-664fedb4]{font-size:var(--size-sub2)}}#container[data-v-21430c51]{display:block;padding-top:12px;margin-top:12px;margin-bottom:24px}.body2[data-v-21430c51]{padding-top:12px;padding-bottom:12px;text-align:center;color:var(--light)}.img-lg[data-v-21430c51],.img-md[data-v-21430c51],.img-sm[data-v-21430c51]{margin-left:auto;margin-right:auto;display:block}.img-lg[data-v-21430c51]{max-width:100%}@media screen and (max-width:768px){.img-md[data-v-21430c51],.img-sm[data-v-21430c51]{max-width:100%}}@media screen and (min-width:768px){.img-sm[data-v-21430c51]{max-width:50%}.img-md[data-v-21430c51]{max-width:70%}img.shadow[data-v-21430c51],video.shadow[data-v-21430c51]{-webkit-filter:drop-shadow(0 1px 3px #ccc);filter:drop-shadow(0 1px 3px #ccc)}}#projectArrows[data-v-0a2c1902]{margin-top:64px;margin-bottom:64px;display:-webkit-box;display:-ms-flexbox;display:flex}#projectArrows>a[data-v-0a2c1902]{font-size:var(--size-h6);color:var(--blue);border-radius:var(--radius);border:1px solid var(--blue);padding:6px 16px;background-size:200% 100%;-webkit-transition:all .15s ease;transition:all .15s ease}#projectArrows [data-v-0a2c1902]:first-child{margin-right:8px}#projectArrows>a[data-v-0a2c1902]:hover{color:#fff}svg path[data-v-0a2c1902]{fill:var(--blue);-webkit-transition:all .15s ease;transition:all .15s ease}.previous[data-v-0a2c1902]{background:-webkit-gradient(linear,left top,right top,color-stop(50%,transparent),color-stop(50%,var(--blue)));background:linear-gradient(90deg,transparent 50%,var(--blue) 0);background-position:0 0}.previous[data-v-0a2c1902]:hover{background-position:100% 0}.next[data-v-0a2c1902]{background:-webkit-gradient(linear,right top,left top,color-stop(50%,transparent),color-stop(50%,var(--blue)));background:linear-gradient(270deg,transparent 50%,var(--blue) 0);background-position:100% 0;float:right}.next>svg[data-v-0a2c1902]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.next[data-v-0a2c1902]:hover{background-position:0 0}#projectArrows>a[data-v-0a2c1902]:active{background-color:var(--blue);color:#fff}a:hover svg path[data-v-0a2c1902]{fill:#fff}.flex-grow[data-v-0a2c1902]{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tile[data-v-9ccefd46]{background-color:#fff;border-radius:var(--radius);-webkit-box-shadow:var(--shadow);box-shadow:var(--shadow);--anim-dur:.1s;-webkit-transition:var(--anim-dur) ease;-webkit-transition:all .3s cubic-bezier(.25,.8,.25,1);transition:all .3s cubic-bezier(.25,.8,.25,1)}.tile[data-v-9ccefd46]:hover{-webkit-transform:scale(1.03);transform:scale(1.03);-webkit-box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.img-container[data-v-9ccefd46]{display:inline-block;position:relative;width:100%}.img-container[data-v-9ccefd46]:after{padding-top:62.5%;display:block;content:""}img[data-v-9ccefd46]{position:absolute;top:0;bottom:0;right:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius) var(--radius) 0 0}.text[data-v-9ccefd46]{margin:24px 24px 48px 24px}.h5sans[data-v-9ccefd46]{margin-bottom:12px}.text>.body1[data-v-9ccefd46]{color:var(--blue);padding:4px 8px;border-radius:var(--radius);border:1px solid var(--blue);display:inline-block}@media screen and (max-width:768px){.h5sans[data-v-9ccefd46]{font-size:var(--size-h6)}.text>.body1[data-v-9ccefd46]{font-size:var(--size-sub2)}}h3[data-v-50d30512]{margin-top:48px;margin-bottom:72px}@media screen and (max-width:768px){h3[data-v-50d30512]{font-size:var(--size-h4);margin-top:32px;margin-bottom:50px}}#projects[data-v-2d51f0fc]{display:grid;grid-template-columns:1fr;gap:24px;margin-bottom:100px}@media screen and (min-width:768px){#projects[data-v-2d51f0fc]{grid-template-columns:repeat(2,1fr)}}#content[data-v-e3359912]{padding-bottom:24px}img[data-v-e3359912]{vertical-align:middle}#PageNotFound[data-v-af73ad34]{padding-top:50px}h2[data-v-6a36c1f6]{font-size:14px;font-weight:700;color:var(--light);margin:0 0 4px 0}p[data-v-6a36c1f6]{margin:0 0 24px 0}#download[data-v-6a36c1f6]{display:inline-block;margin-bottom:32px}#download>img[data-v-6a36c1f6]{vertical-align:middle} \ No newline at end of file diff --git a/cypress.json b/cypress.json deleted file mode 100644 index 18b4d5f..0000000 --- a/cypress.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "fileServerFolder": "tests/e2e/", - "fixturesFolder": "tests/e2e/fixtures", - "integrationFolder": "tests/e2e/integration", - "pluginsFile": "tests/e2e/plugins/index.js", - "supportFile": "tests/e2e/support/index.js" -} diff --git a/deploy.sh b/deploy.sh deleted file mode 100644 index 2c6e934..0000000 --- a/deploy.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env sh - -# abort on errors -set -e - -cd dist && cp index.html 404.html && cd .. - -git subtree push --prefix dist origin gh-pages diff --git a/empty.js b/empty.js deleted file mode 100644 index e69de29..0000000 diff --git a/public/favicon.png b/favicon.png similarity index 100% rename from public/favicon.png rename to favicon.png diff --git a/public/fonts/lato-v23-latin-300.woff2 b/fonts/lato-v23-latin-300.716309aa.woff2 similarity index 100% rename from public/fonts/lato-v23-latin-300.woff2 rename to fonts/lato-v23-latin-300.716309aa.woff2 diff --git a/public/fonts/lato-v23-latin-300.woff b/fonts/lato-v23-latin-300.bbaaef98.woff similarity index 100% rename from public/fonts/lato-v23-latin-300.woff rename to fonts/lato-v23-latin-300.bbaaef98.woff diff --git a/fonts/lato-v23-latin-300.woff b/fonts/lato-v23-latin-300.woff new file mode 100644 index 0000000..773a0c7 Binary files /dev/null and b/fonts/lato-v23-latin-300.woff differ diff --git a/fonts/lato-v23-latin-300.woff2 b/fonts/lato-v23-latin-300.woff2 new file mode 100644 index 0000000..aad98a3 Binary files /dev/null and b/fonts/lato-v23-latin-300.woff2 differ diff --git a/public/fonts/lato-v23-latin-700.woff b/fonts/lato-v23-latin-700.1833f9fa.woff similarity index 100% rename from public/fonts/lato-v23-latin-700.woff rename to fonts/lato-v23-latin-700.1833f9fa.woff diff --git a/public/fonts/lato-v23-latin-700.woff2 b/fonts/lato-v23-latin-700.de69cf9e.woff2 similarity index 100% rename from public/fonts/lato-v23-latin-700.woff2 rename to fonts/lato-v23-latin-700.de69cf9e.woff2 diff --git a/fonts/lato-v23-latin-700.woff b/fonts/lato-v23-latin-700.woff new file mode 100644 index 0000000..11ed3b0 Binary files /dev/null and b/fonts/lato-v23-latin-700.woff differ diff --git a/fonts/lato-v23-latin-700.woff2 b/fonts/lato-v23-latin-700.woff2 new file mode 100644 index 0000000..11de83f Binary files /dev/null and b/fonts/lato-v23-latin-700.woff2 differ diff --git a/public/fonts/lato-v23-latin-regular.woff b/fonts/lato-v23-latin-regular.0e898c13.woff similarity index 100% rename from public/fonts/lato-v23-latin-regular.woff rename to fonts/lato-v23-latin-regular.0e898c13.woff diff --git a/public/fonts/lato-v23-latin-regular.woff2 b/fonts/lato-v23-latin-regular.e1b3b590.woff2 similarity index 100% rename from public/fonts/lato-v23-latin-regular.woff2 rename to fonts/lato-v23-latin-regular.e1b3b590.woff2 diff --git a/fonts/lato-v23-latin-regular.woff b/fonts/lato-v23-latin-regular.woff new file mode 100644 index 0000000..42f1997 Binary files /dev/null and b/fonts/lato-v23-latin-regular.woff differ diff --git a/fonts/lato-v23-latin-regular.woff2 b/fonts/lato-v23-latin-regular.woff2 new file mode 100644 index 0000000..ff60934 Binary files /dev/null and b/fonts/lato-v23-latin-regular.woff2 differ diff --git a/public/fonts/lora-v32-latin-700.woff2 b/fonts/lora-v32-latin-700.1af9e198.woff2 similarity index 100% rename from public/fonts/lora-v32-latin-700.woff2 rename to fonts/lora-v32-latin-700.1af9e198.woff2 diff --git a/public/fonts/lora-v32-latin-700.woff b/fonts/lora-v32-latin-700.b64c9538.woff similarity index 100% rename from public/fonts/lora-v32-latin-700.woff rename to fonts/lora-v32-latin-700.b64c9538.woff diff --git a/fonts/lora-v32-latin-700.woff b/fonts/lora-v32-latin-700.woff new file mode 100644 index 0000000..5fe2c17 Binary files /dev/null and b/fonts/lora-v32-latin-700.woff differ diff --git a/fonts/lora-v32-latin-700.woff2 b/fonts/lora-v32-latin-700.woff2 new file mode 100644 index 0000000..98da242 Binary files /dev/null and b/fonts/lora-v32-latin-700.woff2 differ diff --git a/public/fonts/lora-v32-latin-regular.woff2 b/fonts/lora-v32-latin-regular.03724bc4.woff2 similarity index 100% rename from public/fonts/lora-v32-latin-regular.woff2 rename to fonts/lora-v32-latin-regular.03724bc4.woff2 diff --git a/public/fonts/lora-v32-latin-regular.woff b/fonts/lora-v32-latin-regular.d23ef47d.woff similarity index 100% rename from public/fonts/lora-v32-latin-regular.woff rename to fonts/lora-v32-latin-regular.d23ef47d.woff diff --git a/fonts/lora-v32-latin-regular.woff b/fonts/lora-v32-latin-regular.woff new file mode 100644 index 0000000..06b7c4d Binary files /dev/null and b/fonts/lora-v32-latin-regular.woff differ diff --git a/fonts/lora-v32-latin-regular.woff2 b/fonts/lora-v32-latin-regular.woff2 new file mode 100644 index 0000000..33d5992 Binary files /dev/null and b/fonts/lora-v32-latin-regular.woff2 differ diff --git a/src/assets/thesis/adjustable-eyes.jpg b/img/adjustable-eyes.c99ce49e.jpg similarity index 100% rename from src/assets/thesis/adjustable-eyes.jpg rename to img/adjustable-eyes.c99ce49e.jpg diff --git a/src/assets/bio/bio-image.jpg b/img/bio-image.cf1651b2.jpg similarity index 100% rename from src/assets/bio/bio-image.jpg rename to img/bio-image.cf1651b2.jpg diff --git a/src/assets/scenariomanager/brainstorming-sideshot.jpg b/img/brainstorming-sideshot.56840d0c.jpg similarity index 100% rename from src/assets/scenariomanager/brainstorming-sideshot.jpg rename to img/brainstorming-sideshot.56840d0c.jpg diff --git a/src/assets/codesnippets/code-versus.png b/img/code-versus.04241d86.png similarity index 100% rename from src/assets/codesnippets/code-versus.png rename to img/code-versus.04241d86.png diff --git a/src/assets/esgehtlos/colors.png b/img/colors.67cab4bd.png similarity index 100% rename from src/assets/esgehtlos/colors.png rename to img/colors.67cab4bd.png diff --git a/src/assets/codesnippets/column_expressions.png b/img/column_expressions.4e3cf3b0.png similarity index 100% rename from src/assets/codesnippets/column_expressions.png rename to img/column_expressions.4e3cf3b0.png diff --git a/src/assets/knimehub/communities.png b/img/communities.4f837362.png similarity index 100% rename from src/assets/knimehub/communities.png rename to img/communities.4f837362.png diff --git a/src/assets/esgehtlos/components.png b/img/components.ffbc8992.png similarity index 100% rename from src/assets/esgehtlos/components.png rename to img/components.ffbc8992.png diff --git a/src/assets/querybuilder/concept.png b/img/concept.3933ace9.png similarity index 100% rename from src/assets/querybuilder/concept.png rename to img/concept.3933ace9.png diff --git a/src/assets/codesnippets/concept.png b/img/concept.dda3c4ff.png similarity index 100% rename from src/assets/codesnippets/concept.png rename to img/concept.dda3c4ff.png diff --git a/src/assets/thesis/data-coll.png b/img/data-coll.478ebcd0.png similarity index 100% rename from src/assets/thesis/data-coll.png rename to img/data-coll.478ebcd0.png diff --git a/src/assets/esgehtlos/demo.png b/img/demo.82967291.png similarity index 100% rename from src/assets/esgehtlos/demo.png rename to img/demo.82967291.png diff --git a/src/assets/thesis/eye.png b/img/eye.aac1fa3e.png similarity index 100% rename from src/assets/thesis/eye.png rename to img/eye.aac1fa3e.png diff --git a/src/assets/codesnippets/formulas04.jpg b/img/formulas04.507aefad.jpg similarity index 100% rename from src/assets/codesnippets/formulas04.jpg rename to img/formulas04.507aefad.jpg diff --git a/src/assets/thesis/foveated-rendering.png b/img/foveated-rendering.5897ea89.png similarity index 100% rename from src/assets/thesis/foveated-rendering.png rename to img/foveated-rendering.5897ea89.png diff --git a/src/assets/knimehub/front_page.jpg b/img/front_page.6b948d2c.jpg similarity index 100% rename from src/assets/knimehub/front_page.jpg rename to img/front_page.6b948d2c.jpg diff --git a/src/assets/thesis/gnb.png b/img/gnb.a0d7405b.png similarity index 100% rename from src/assets/thesis/gnb.png rename to img/gnb.a0d7405b.png diff --git a/src/assets/greenbox/greenbox_app2.png b/img/greenbox_app2.511cbbbe.png similarity index 100% rename from src/assets/greenbox/greenbox_app2.png rename to img/greenbox_app2.511cbbbe.png diff --git a/src/assets/greenbox/greenbox_app3.png b/img/greenbox_app3.eca497a4.png similarity index 100% rename from src/assets/greenbox/greenbox_app3.png rename to img/greenbox_app3.eca497a4.png diff --git a/src/assets/greenbox/greenbox_presentation.png b/img/greenbox_presentation.eea2892e.png similarity index 100% rename from src/assets/greenbox/greenbox_presentation.png rename to img/greenbox_presentation.eea2892e.png diff --git a/src/assets/greenbox/greenbox_v1.jpg b/img/greenbox_v1.f3127872.jpg similarity index 100% rename from src/assets/greenbox/greenbox_v1.jpg rename to img/greenbox_v1.f3127872.jpg diff --git a/src/assets/greenbox/greenbox_v2.jpg b/img/greenbox_v2.aefd06ed.jpg similarity index 100% rename from src/assets/greenbox/greenbox_v2.jpg rename to img/greenbox_v2.aefd06ed.jpg diff --git a/src/assets/scenariomanager/mass-ass-slide.jpg b/img/mass-ass-slide.06d61890.jpg similarity index 100% rename from src/assets/scenariomanager/mass-ass-slide.jpg rename to img/mass-ass-slide.06d61890.jpg diff --git a/src/assets/mechanics/mechanics.png b/img/mechanics.fd8bc77f.png similarity index 100% rename from src/assets/mechanics/mechanics.png rename to img/mechanics.fd8bc77f.png diff --git a/src/assets/mechanics/mechanics_app.png b/img/mechanics_app.95c69a34.png similarity index 100% rename from src/assets/mechanics/mechanics_app.png rename to img/mechanics_app.95c69a34.png diff --git a/src/assets/mechanics/mechanics_interview.png b/img/mechanics_interview.43f8fc96.png similarity index 100% rename from src/assets/mechanics/mechanics_interview.png rename to img/mechanics_interview.43f8fc96.png diff --git a/src/assets/phoenix/mockup_ps.jpg b/img/mockup_ps.ab6d3908.jpg similarity index 100% rename from src/assets/phoenix/mockup_ps.jpg rename to img/mockup_ps.ab6d3908.jpg diff --git a/src/assets/knimehub/node-issues.png b/img/node-issues.d5af57fb.png similarity index 100% rename from src/assets/knimehub/node-issues.png rename to img/node-issues.d5af57fb.png diff --git a/src/assets/phoenix/paper_prototype.jpg b/img/paper_prototype.6732246c.jpg similarity index 100% rename from src/assets/phoenix/paper_prototype.jpg rename to img/paper_prototype.6732246c.jpg diff --git a/src/assets/pattern.png b/img/pattern.db6777fa.png similarity index 100% rename from src/assets/pattern.png rename to img/pattern.db6777fa.png diff --git a/src/assets/phoenix/phoenix_mp.jpg b/img/phoenix_mp.a48fe521.jpg similarity index 100% rename from src/assets/phoenix/phoenix_mp.jpg rename to img/phoenix_mp.a48fe521.jpg diff --git a/src/assets/scenariomanager/project-plan.png b/img/project-plan.2d8ee402.png similarity index 100% rename from src/assets/scenariomanager/project-plan.png rename to img/project-plan.2d8ee402.png diff --git a/src/assets/querybuilder/querybuilder.png b/img/querybuilder.75ad2214.png similarity index 100% rename from src/assets/querybuilder/querybuilder.png rename to img/querybuilder.75ad2214.png diff --git a/src/assets/querybuilder/querybuilders.png b/img/querybuilders.51618a71.png similarity index 100% rename from src/assets/querybuilder/querybuilders.png rename to img/querybuilders.51618a71.png diff --git a/src/assets/knimehub/quotes.png b/img/quotes.a819a60b.png similarity index 100% rename from src/assets/knimehub/quotes.png rename to img/quotes.a819a60b.png diff --git a/src/assets/thesis/regX.png b/img/regX.94898e50.png similarity index 100% rename from src/assets/thesis/regX.png rename to img/regX.94898e50.png diff --git a/src/assets/querybuilder/row-filter.png b/img/row-filter.8c9b9b08.png similarity index 100% rename from src/assets/querybuilder/row-filter.png rename to img/row-filter.8c9b9b08.png diff --git a/src/assets/knimehub/screens-11-19.png b/img/screens-11-19.6b031aba.png similarity index 100% rename from src/assets/knimehub/screens-11-19.png rename to img/screens-11-19.6b031aba.png diff --git a/src/assets/phoenix/shuffle_tooltip.png b/img/shuffle_tooltip.fde1ca92.png similarity index 100% rename from src/assets/phoenix/shuffle_tooltip.png rename to img/shuffle_tooltip.fde1ca92.png diff --git a/src/assets/trafficticket/ticket1.jpeg b/img/ticket1.fd67465f.jpeg similarity index 100% rename from src/assets/trafficticket/ticket1.jpeg rename to img/ticket1.fd67465f.jpeg diff --git a/src/assets/mechanics/tools.png b/img/tools.09370b15.png similarity index 100% rename from src/assets/mechanics/tools.png rename to img/tools.09370b15.png diff --git a/src/assets/esgehtlos/typo.png b/img/typo.05501c41.png similarity index 100% rename from src/assets/esgehtlos/typo.png rename to img/typo.05501c41.png diff --git a/src/assets/scenariomanager/variants.jpg b/img/variants.08a77f33.jpg similarity index 100% rename from src/assets/scenariomanager/variants.jpg rename to img/variants.08a77f33.jpg diff --git a/src/assets/codesnippets/variations-codesnippets.png b/img/variations-codesnippets.9d59f21a.png similarity index 100% rename from src/assets/codesnippets/variations-codesnippets.png rename to img/variations-codesnippets.9d59f21a.png diff --git a/src/assets/querybuilder/variations.png b/img/variations.e936ca1f.png similarity index 100% rename from src/assets/querybuilder/variations.png rename to img/variations.e936ca1f.png diff --git a/src/assets/phoenix/wireframe_ps_js.png b/img/wireframe_ps_js.38ad42c0.png similarity index 100% rename from src/assets/phoenix/wireframe_ps_js.png rename to img/wireframe_ps_js.38ad42c0.png diff --git a/src/assets/knimehub/wireframes-refined.png b/img/wireframes-refined.5d42eb6b.png similarity index 100% rename from src/assets/knimehub/wireframes-refined.png rename to img/wireframes-refined.5d42eb6b.png diff --git a/src/assets/knimehub/wireframes-rough.png b/img/wireframes-rough.feedd735.png similarity index 100% rename from src/assets/knimehub/wireframes-rough.png rename to img/wireframes-rough.feedd735.png diff --git a/src/assets/mechanics/workflow.png b/img/workflow.dc822e88.png similarity index 100% rename from src/assets/mechanics/workflow.png rename to img/workflow.dc822e88.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..f6e02e2 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Johannes Schweig
\ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 49e5146..0000000 --- a/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - preset: '@vue/cli-plugin-unit-jest', - moduleNameMapper: { - '\\.(pdf|css)': '/empty.js' - } -} diff --git a/js/app.832866c3.js b/js/app.832866c3.js new file mode 100644 index 0000000..404263f --- /dev/null +++ b/js/app.832866c3.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var a,s,o=t[0],c=t[1],l=t[2],h=0,u=[];h768?"48":"40"}},[n("LinkedInIcon")],1),n("Icon",{attrs:{href:"mailto:hello@johannesschweig.de",size:e.windowWidth>768?"48":"40"}},[n("MailIcon")],1)],1)]),n("div",{attrs:{id:"legal"}},[n("router-link",{staticClass:"link body1",attrs:{to:"/legal",id:"legal"}},[e._v(" Legal / Impressum ")])],1)])},v=[],w=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a",{class:{"with-text":e.text},style:e.cssVars,attrs:{href:e.href}},[e._t("default"),e.text?n("div",{staticClass:"text"},[e._v(" "+e._s(e.text)+" ")]):e._e()],2)},b=[],y={props:{href:{type:String},size:{type:String,required:!0},text:{type:String}},computed:{cssVars:function(){return{"--size":this.size+"px"}}}},A=y,_=(n("3e3d"),Object(p["a"])(A,w,b,!1,null,"e3651c6e",null)),k=_.exports,x=n("d06e"),I=n.n(x),j=n("9d95"),z=n.n(j),E={components:{Icon:k,LinkedInIcon:I.a,MailIcon:z.a},data:function(){return{windowWidth:window.innerWidth}},mounted:function(){var e=this;this.$nextTick((function(){window.addEventListener("resize",e.onResize)}))},beforeDestroy:function(){window.removeEventListener("resize",this.onResize)},methods:{onResize:function(){this.windowWidth=window.innerWidth}}},T=E,S=(n("08ce"),Object(p["a"])(T,g,v,!1,null,"0e6a4de4",null)),C=S.exports,M={name:"App",components:{Footer:C,Header:m}},U=M,P=(n("034f"),Object(p["a"])(U,i,r,!1,null,null,null)),V=P.exports,L=n("8c4f"),O=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"about"}},[a("div",{staticClass:"responsive"},[a("img",{attrs:{src:n("5d76")}}),a("div",{staticClass:"body1",attrs:{id:"text"}},[a("h4",[e._v("About me")]),a("p",[e._v("I am a UX Designer with 6 years of experience in building digital products. I am always eager to learn new things and to educate my team on cool new methods I found. I love to code small projects (such as this website) in my free time and also enjoy to drill into data (e.g. google analytics) to gain user insights. Even though I have very broad interests, my passion belongs to tailoring digital products to user needs.")]),a("h5",[e._v("Things I believe in")]),a("h6",[e._v("💎 Rigorous prioritization")]),a("p",[e._v("There will always be more to do than you have time for. Prioritization makes sure that you will have the maximum impact for the limited resources you are provided.")]),a("h6",[e._v("⚙️ Incremental changes")]),a("p",[e._v("You can learn faster what works and what does not which is crucial in fast moving environments.")]),a("h6",[e._v("💬 Strong feedback cultures")]),a("p",[e._v("Everyone makes mistakes and to acknowledge them means to grow in your role and as a person.")]),e._m(0),a("p"),a("div",{staticClass:"icons"},[a("Icon",{attrs:{size:"32",text:"Resume",href:n("2a96")}},[a("CvIcon")],1),a("Icon",{attrs:{size:"32",text:"ux.stackexchange",href:"https://ux.stackexchange.com/users/110814/nash"}},[a("UxIcon")],1),a("Icon",{attrs:{size:"32",text:"GitHub",href:"https://github.com/johannesschweig"}},[a("GhIcon")],1)],1)])])])},D=[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("p",[e._v("Currently, I am working as a Senior IT Consultant for "),n("a",{staticClass:"link",attrs:{href:"https://www.maibornwolff.de/"}},[e._v("MaibornWolff")]),e._v(".")])}],F=n("27fe"),R=n.n(F),B=n("bd3a"),N=n.n(B),X=n("7e77"),W=n.n(X),q={components:{CvIcon:N.a,GhIcon:W.a,Icon:k,UxIcon:R.a}},K=q,G=(n("cb19"),Object(p["a"])(K,O,D,!1,null,"71f764a6",null)),H=G.exports,Q=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("project-header",{attrs:{route:"/codesnippets"}}),a("div",{staticClass:"responsive"},[a("h4",[e._v("TL;DR")]),a("p",[e._v('I designed an interface where users can input multiple "code snippets" to transform their data.')]),a("h4",[e._v("Problem")]),a("styled-image",{attrs:{src:n("9493"),alt:"Combine three nodes into one"}}),a("p",[e._v('A project I worked on for KNIME was to create an interface for a node (KNIME term for encapsulated functionality) where users can create small code snippets to manipulate data. For example, users might want to create a column with the mean of three other columns or cut the surname of a "name surname" formatted column. Previously, this was possible with a String Manipulation node for Strings, a Math Formula node for numerical data and a Rule Engine node for conditions. But what if you needed to alter Strings based on conditions? Then it gets complicated. The new node should make it easier for users to create more complex logic.')]),a("h4",[e._v("Research")]),a("styled-image",{attrs:{src:n("3c01"),alt:"Use of space in the String Manipulation interface"}}),a("p",[e._v("I analyzed the current UI and interaction of the already existing nodes and found out that they had several disadvantages:")]),e._m(0),a("h4",[e._v("Concept")]),a("styled-image",{attrs:{src:n("4c49"),alt:"Two concepts for the code editor: Columns, variables and functions in dropdowns (left) or in a tabbed interface (right)"}}),a("p",[e._v('I improved on these with a design that put the code textfield with a large amount of space in the center of attention. Adding columns, variables and functions was now one click away but this saved precious screen real estate. I also added a small "evaluate" functionality that would check your code on the first row of your data so you could iteratively improve your code snippet without having to run it on your entire data each time. On the top an overview of all the code snippets was presented and you could add more code snippets or alter existing ones. The UI for the code editor was designed to make it reusable in other nodes (e.g. filtering rows according to a code snippet with a boolean statement).')]),a("h4",[e._v("Evaluation")]),a("styled-image",{attrs:{src:n("258a"),alt:"Final UI concept"}}),e._m(1),a("p",[e._v('In the design, however, there is - as always - still room for improvement. The emancipated display of the upper "overview" and the lower "code editor" component does not make it entirely clear that a selection of a code snippet in the "overview" component would change the display in the "code editor" component. This drawback was however favored over a dialog-in-a-dialog design.')]),a("p",[e._v("Also, the design could guide new users better on how to start. They are presented with a blank textfield and a variety of UI components (much like opening a terminal for the first time). The functions which are the core of writing your snippet are hidden behind a dropdown. The aim of the design, however, was to create a good experience for experienced users who want to optimize their data manipulation workflows.")]),a("p",[e._v('On the whole, I am very content with the process and outcome of this project. I was involved from the research phase over the conceptual phase to the implementation and even helped with programming parts of the "code editor" component. Also, the feedback from the community shows that the hours you invest in research and ideation really pay off in the end.')]),a("styled-image",{attrs:{src:n("2bfe"),alt:"User interface as of KNIME Analytics Platform v3.7.1"}})],1),a("project-arrows",{attrs:{route:"/codesnippets"}})],1)},Z=[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",[n("li",[e._v("They were making poor use of space. UI components were getting a lot of space even though they were not as important as others (see image above).")]),n("li",[e._v('Checking if your piece of code was correct could only be done by running the node on all your available data. Depending on the amount of data this could take a while. When you realize then that the "+1" in your code should really have been a "-1" you have to change it and run it again. Seemed too tedious.')])])},function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("p",[e._v("The overall reception was positive. Forum users as well as colleagues gave very enthusiastic feedback on the new functionality. One user even wrote a blogpost about the node calling it "),n("a",{attrs:{href:"https://blog.statinfer.com/knime-multitasking-with-column-expressions-node/"}},[e._v('"The Swiss Army Knife"')]),e._v(".")])}],Y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"responsive",attrs:{id:"project-header"}},[n("div",{attrs:{id:"name-container"}},[n("div",{staticClass:"subtitle1"},[e._v(e._s(e.project.name))]),n("h2",[e._v(e._s(e.project.slogan))])]),n("div",{attrs:{id:"heading-container"}},[n("div",{staticClass:"subtitle1"},[e._v(" Client ")]),n("h5",e._l(e.project.clients,(function(t){return n("div",{key:t},[e._v(" "+e._s(t)+" ")])})),0),n("div",{staticClass:"subtitle1"},[e._v(" Task ")]),n("h5",[e._v(e._s(e.project.task))]),n("div",{staticClass:"subtitle1"},[e._v(" Timeline ")]),n("h5",[e._v(e._s(e.project.date))])])])},J=[],$={data:function(){return{project:null}},props:{route:{type:String,required:!0}},created:function(){var e=this;this.project=c.filter((function(t){return t.route==e.$props.route}))[0]}},ee=$,te=(n("b2a6"),Object(p["a"])(ee,Y,J,!1,null,"664fedb4",null)),ne=te.exports,ae=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"container"}},[e.isVideo()?e._e():n("img",{class:["img-md",{shadow:e.shadow}],attrs:{src:e.src,alt:e.alt}}),e.isVideo()?n("video",{class:["img-md",{shadow:e.shadow}],attrs:{autoplay:"",muted:"",loop:""},domProps:{muted:!0}},[n("source",{attrs:{src:e.src,type:"video/mp4"}}),e._v(" Your browser does not support the video tag. ")]):e._e(),n("div",{staticClass:"body2"},[e._v(e._s(e.alt))])])},ie=[],re=(n("8a79"),{props:{src:{type:String,required:!0},alt:{type:String},shadow:{type:Boolean,default:!0}},methods:{isVideo:function(){return!!this.$props.src.endsWith(".mp4")}}}),se=re,oe=(n("b08d"),Object(p["a"])(se,ae,ie,!1,null,"21430c51",null)),ce=oe.exports,le=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"responsive",attrs:{id:"projectArrows"}},[n("router-link",{staticClass:"previous",attrs:{to:e.previousProject.route}},[n("Arrow"),n("span",[e._v("Previous project: "+e._s(e.previousProject.name))])],1),n("div",{staticClass:"flex-grow"}),n("router-link",{staticClass:"next",attrs:{to:e.nextProject.route}},[n("span",[e._v("Next project: "+e._s(e.nextProject.name))]),n("Arrow")],1)],1)},de=[];n("fb6a");function he(e,t){return(e%t+t)%t}function ue(e){for(var t=l.length,n=0;n"}).$mount("#app")},"5c1c":function(e,t,n){e.exports=n.p+"img/paper_prototype.6732246c.jpg"},"5d76":function(e,t,n){e.exports=n.p+"img/bio-image.cf1651b2.jpg"},"5e1c":function(e,t,n){},6164:function(e,t,n){e.exports=n.p+"img/adjustable-eyes.c99ce49e.jpg"},6269:function(e,t,n){e.exports=n.p+"img/greenbox_app2.511cbbbe.png"},"656c":function(e,t,n){e.exports=n.p+"img/wireframe_ps_js.38ad42c0.png"},"681b":function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKUAAAAPCAMAAACycv9gAAAAMFBMVEVMaXEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEKlNcAAAAAD3RSTlMAu90id0SZZswRqjOIVe4eYAFsAAAB70lEQVR42u2U2ZKtIAxFmUQGlf//295JkOBwXk513ZfblEVUMiySgPkbvzl8bK0d24fVrfnX/zVcPl3jsYxlZ0ms+G/9JEmpmCjagaLz2z36Ak/JXX4kmAf3CvN5Idjnv+iG06NZEgDxzp4Se56sVt6/xxJew5OyzBFc+qoC8UbJAdcRJFqm3Jh9SFPiFJjfPQOm9KScx952NUtI/ZKoOLS9RlkOjUw4hqeVLDOm5rqFplKjGGtH7YPKFC6pVEpoh6MdK74hd4SEhwEBCq+9tZBVNBktsZJ0dqYsoNj6DB9icU3lGIMSW5okt2U+UzkoA/ysMEck36jFBmUx/oikUMkntbIrfFoyJxhbpcWslHggZT4py2tXyrqeI5V1fMN/pxRyKXramFopPXnSihNl5FiSFlbANFHmeECL55My3lL5pOSt3mRP5cglFa/fEhFuHpR8epTynsttzmXvYpnvlKzwoCxW6E4pd9shqVRK7rsidflAWaU9O6X2JbTrEWnnuW2okzNhAd8iM7XnDgtyWLt3ubiyUooTV4asMeOSCrK/Wy53chDqGyXrFUm1WPIZT3TG+SxzfeigFUeHEC55hhpWYSEkmsrIzFI+y5bY9ZAV/U+QEn70JV8q7Lj4V8pPgxW+GDmZfzm+o6Su+G/HD6HrGBNr5t/wAAAAAElFTkSuQmCC"},"6a46":function(e,t,n){},"6b9d":function(e,t,n){e.exports=n.p+"img/formulas04.507aefad.jpg"},"6bb0":function(e,t,n){"use strict";n("6a46")},"6e9c":function(e,t,n){},7038:function(e,t,n){"use strict";n("7b7e")},"729c":function(e,t,n){e.exports=n.p+"assets/pdf/thesis.0901653d.pdf"},"764f":function(e,t,n){e.exports=n.p+"img/shuffle_tooltip.fde1ca92.png"},"79bb":function(e,t,n){e.exports=n.p+"img/variations.e936ca1f.png"},"7b7e":function(e,t,n){},"7dfd":function(e,t,n){e.exports=n.p+"img/gnb.a0d7405b.png"},"7e77":function(e,t,n){var a=n("ded3").default,i=n("4082").default,r=["class","staticClass","style","staticStyle","attrs"];n("99af"),e.exports={functional:!0,render:function(e,t){var n=t._c,s=(t._v,t.data),o=t.children,c=void 0===o?[]:o,l=s.class,d=s.staticClass,h=s.style,u=s.staticStyle,p=s.attrs,f=void 0===p?{}:p,m=i(s,r);return n("svg",a({class:[l,d],style:[h,u],attrs:Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48"},f)},m),c.concat([n("defs"),n("g",{attrs:{id:"Layer_2","data-name":"Layer 2"}},[n("g",{attrs:{id:"github_hover"}},[n("path",{attrs:{d:"M24 .59a24 24 0 00-7.59 46.78c1.2.22 1.64-.52 1.64-1.16v-4.47c-6.68 1.46-8.09-2.83-8.09-2.83-1.12-2.77-2.69-3.51-2.69-3.51-2.18-1.49.16-1.46.16-1.46a5 5 0 013.68 2.47c2.14 3.67 5.62 2.61 7 2a5.07 5.07 0 011.52-3.21C14.3 34.59 8.7 32.54 8.7 23.34a9.26 9.26 0 012.47-6.44 8.63 8.63 0 01.23-6.35s2-.65 6.6 2.46a22.7 22.7 0 0112 0c4.58-3.11 6.6-2.46 6.6-2.46a8.63 8.63 0 01.23 6.35 9.26 9.26 0 012.47 6.44c0 9.22-5.61 11.25-11 11.84a5.76 5.76 0 011.7 4.45v6.58c0 .79.43 1.39 1.65 1.15A24 24 0 0024 .59z","fill-rule":"evenodd"}}),n("path",{staticClass:"cls-3",attrs:{d:"M9.09 35.05c-.05.12-.24.16-.41.07a.3.3 0 01-.22-.36c0-.12.24-.15.42-.07s.27.24.21.36zM10.06 36.14c-.11.1-.34 0-.49-.12a.36.36 0 01-.07-.49.36.36 0 01.49.11c.16.17.19.39.07.5zM11 37.52c-.15.1-.39 0-.54-.21s-.14-.47 0-.57.38 0 .53.2.15.47 0 .58zM12.3 38.85c-.13.15-.41.11-.61-.09s-.27-.47-.14-.61a.45.45 0 01.62.09c.21.19.27.47.13.61zM14.09 39.63c-.05.19-.32.27-.6.19s-.45-.3-.39-.49a.46.46 0 01.6-.19c.27.08.45.3.39.49zM16.06 39.77c0 .2-.23.36-.51.37S15 40 15 39.79s.22-.36.51-.37.52.16.52.35zM17.89 39.46c0 .19-.17.39-.45.45s-.54-.07-.57-.26.16-.4.44-.45.54.06.58.26z"}})])])]))}}},8170:function(e,t,n){},"840e":function(e,t,n){e.exports=n.p+"img/mechanics.fd8bc77f.png"},"85ec":function(e,t,n){},9149:function(e,t,n){"use strict";n("c496")},9493:function(e,t){e.exports="data:image/png;base64,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"},"9be9":function(e,t,n){e.exports=n.p+"media/coverflow.e57db30e.mp4"},"9d89":function(e,t,n){e.exports=n.p+"img/workflow.dc822e88.png"},"9d95":function(e,t,n){var a=n("ded3").default,i=n("4082").default,r=["class","staticClass","style","staticStyle","attrs"];n("99af"),e.exports={functional:!0,render:function(e,t){var n=t._c,s=(t._v,t.data),o=t.children,c=void 0===o?[]:o,l=s.class,d=s.staticClass,h=s.style,u=s.staticStyle,p=s.attrs,f=void 0===p?{}:p,m=i(s,r);return n("svg",a({class:[l,d],style:[h,u],attrs:Object.assign({viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg"},f)},m),c.concat([n("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M2 8a2 2 0 00-2 2v28a2 2 0 002 2h44a2 2 0 002-2V10a2 2 0 00-2-2H2zm2.454 7.895a1 1 0 011.401-.191l11.81 8.977.03.023 5.55 4.22a1.244 1.244 0 00.755.253c.273 0 .538-.089.755-.253l5.55-4.22a.495.495 0 01.014-.01l.017-.013 11.809-8.977a1 1 0 111.21 1.592L32.563 25.5l10.792 8.204a1 1 0 11-1.21 1.592l-11.234-8.54-4.946 3.76a3.25 3.25 0 01-3.93 0l-4.946-3.76-11.234 8.54a1 1 0 01-1.21-1.592L15.437 25.5 4.645 17.296a1 1 0 01-.191-1.401z",fill:"#fff"}})]))}}},"9f04":function(e,t,n){e.exports=n.p+"img/typo.05501c41.png"},a818:function(e,t,n){e.exports=n.p+"img/greenbox_v1.f3127872.jpg"},a81f:function(e,t,n){e.exports=n.p+"img/mechanics_app.95c69a34.png"},aa91:function(e,t,n){e.exports=n.p+"img/phoenix_mp.a48fe521.jpg"},ae40c:function(e,t,n){e.exports=n.p+"img/mass-ass-slide.06d61890.jpg"},ae6e:function(e,t,n){},b08d:function(e,t,n){"use strict";n("fa7e")},b211:function(e,t,n){e.exports=n.p+"img/variants.08a77f33.jpg"},b2a6:function(e,t,n){"use strict";n("8170")},b53d:function(e,t,n){e.exports=n.p+"img/mechanics_interview.43f8fc96.png"},b94f:function(e,t,n){var a=n("ded3").default,i=n("4082").default,r=["class","staticClass","style","staticStyle","attrs"];n("99af"),e.exports={functional:!0,render:function(e,t){var n=t._c,s=(t._v,t.data),o=t.children,c=void 0===o?[]:o,l=s.class,d=s.staticClass,h=s.style,u=s.staticStyle,p=s.attrs,f=void 0===p?{}:p,m=i(s,r);return n("svg",a({class:[l,d],style:[h,u],attrs:Object.assign({width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},f)},m),c.concat([n("path",{attrs:{d:"M1 8l-.354-.354a.5.5 0 000 .708L1 8zm14 .5a.5.5 0 000-1v1zM5.854 3.854a.5.5 0 10-.708-.708l.708.708zm-.708 9a.5.5 0 00.708-.708l-.708.708zM1 8.5h14v-1H1v1zm.354-.146l4.5-4.5-.708-.708-4.5 4.5.708.708zm-.708 0l4.5 4.5.708-.708-4.5-4.5-.708.708z",fill:"#000"}})]))}}},b98a:function(e,t,n){e.exports=n.p+"img/regX.94898e50.png"},babb:function(e,t,n){e.exports=n.p+"img/concept.3933ace9.png"},bd3a:function(e,t,n){var a=n("ded3").default,i=n("4082").default,r=["class","staticClass","style","staticStyle","attrs"];n("99af"),e.exports={functional:!0,render:function(e,t){var n=t._c,s=(t._v,t.data),o=t.children,c=void 0===o?[]:o,l=s.class,d=s.staticClass,h=s.style,u=s.staticStyle,p=s.attrs,f=void 0===p?{}:p,m=i(s,r);return n("svg",a({class:[l,d],style:[h,u],attrs:Object.assign({width:"32",height:"32",fill:"none",xmlns:"http://www.w3.org/2000/svg"},f)},m),c.concat([n("path",{attrs:{d:"M26.666 1.333A1.333 1.333 0 0128 2.667v26.666a1.333 1.333 0 01-1.334 1.334H5.334A1.333 1.333 0 014 29.333V2.667a1.333 1.333 0 011.333-1.334h21.334zm0-1.333H5.334a2.667 2.667 0 00-2.667 2.667v26.666A2.667 2.667 0 005.333 32h21.334a2.667 2.667 0 002.666-2.667V2.667A2.667 2.667 0 0026.667 0z",fill:"#000"}}),n("path",{attrs:{d:"M15.666 6.667a2 2 0 100-4 2 2 0 000 4zM15.667 7A4.667 4.667 0 0011 11.667h9.333A4.667 4.667 0 0015.667 7zM26.333 15.5H5v1.333h21.333V15.5zM26.333 20.587H5v1.333h21.333v-1.333zM26.333 25.667H5V27h21.333v-1.333z",fill:"#000"}})]))}}},c254:function(e,t,n){e.exports=n.p+"img/querybuilder.75ad2214.png"},c496:function(e,t,n){},cb19:function(e,t,n){"use strict";n("4025")},ceff:function(e,t,n){e.exports=n.p+"img/quotes.a819a60b.png"},cf19:function(e,t,n){e.exports=n.p+"img/data-coll.478ebcd0.png"},d06e:function(e,t,n){var a=n("ded3").default,i=n("4082").default,r=["class","staticClass","style","staticStyle","attrs"];n("99af"),e.exports={functional:!0,render:function(e,t){var n=t._c,s=(t._v,t.data),o=t.children,c=void 0===o?[]:o,l=s.class,d=s.staticClass,h=s.style,u=s.staticStyle,p=s.attrs,f=void 0===p?{}:p,m=i(s,r);return n("svg",a({class:[l,d],style:[h,u],attrs:Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48"},f)},m),c.concat([n("path",{attrs:{d:"M40.9 40.9h-7.11V29.76c0-2.65 0-6.07-3.7-6.07s-4.28 2.89-4.28 5.88V40.9H18.7V18h6.83v3.13h.1a7.46 7.46 0 016.73-3.7c7.21 0 8.54 4.74 8.54 10.91V40.9zm-30.22-26a4.13 4.13 0 114.12-4.12 4.13 4.13 0 01-4.12 4.12zm3.56 26H7.12V18h7.12v22.9zM44.45 0H3.54A3.5 3.5 0 000 3.46v41.08A3.5 3.5 0 003.54 48h40.91A3.51 3.51 0 0048 44.54V3.46A3.51 3.51 0 0044.45 0z",fill:"#fff","data-name":"Layer 2"}})]))}}},d375:function(e,t,n){e.exports=n.p+"img/greenbox_app3.eca497a4.png"},d612:function(e,t,n){e.exports=n.p+"img/ticket1.fd67465f.jpeg"},d817:function(e,t,n){},dbc0:function(e,t,n){e.exports=n.p+"img/greenbox_v2.aefd06ed.jpg"},e0cc:function(e,t,n){e.exports=n.p+"img/querybuilders.51618a71.png"},e3b3:function(e,t,n){e.exports=n.p+"img/pattern.db6777fa.png"},e45a:function(e,t,n){},e69e:function(e,t,n){e.exports=n.p+"img/greenbox_presentation.eea2892e.png"},e999:function(e,t,n){e.exports=n.p+"img/demo.82967291.png"},ea1b:function(e,t,n){e.exports=n.p+"img/foveated-rendering.5897ea89.png"},ecd4:function(e,t,n){"use strict";n("f825")},eec2:function(e,t,n){e.exports=n.p+"img/communities.4f837362.png"},ef01:function(e,t,n){e.exports=n.p+"img/brainstorming-sideshot.56840d0c.jpg"},f386:function(e,t,n){e.exports=n.p+"img/project-plan.2d8ee402.png"},f825:function(e,t,n){},fa7e:function(e,t,n){},faf6:function(e,t,n){e.exports=n.p+"img/node-issues.d5af57fb.png"}}); +//# sourceMappingURL=app.832866c3.js.map \ No newline at end of file diff --git a/js/app.832866c3.js.map b/js/app.832866c3.js.map new file mode 100644 index 0000000..d4e98bf --- /dev/null +++ b/js/app.832866c3.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4a62","webpack:///./src/assets/thesis/download.png","webpack:///./src/assets/knimehub/wireframes-rough.png","webpack:///./src/components/elements/Footer.vue?bb12","webpack:///./src/assets/esgehtlos/colors.png","webpack:///./src/components/elements/ProjectArrows.vue?aff0","webpack:///./src/assets/querybuilder/sql.png","webpack:///./src/assets/knimehub/screens-11-19.png","webpack:///./src/assets sync ^\\.\\/.*$","webpack:///./src/assets/mechanics/tools.png","webpack:///./src/assets/knimehub/front_page.jpg","webpack:///./src/assets/thesis/eye.png","webpack:///./src/assets/codesnippets/concept.png","webpack:///./src/assets/bio/ux.svg","webpack:///./src/assets/esgehtlos/components.png","webpack:///./src/assets/bio/CV.pdf","webpack:///./src/assets/codesnippets/column_expressions.png","webpack:///./src/components/projects/Thesis.vue?b535","webpack:///./src/components/content/WelcomeBanner.vue?5126","webpack:///./src/assets/knimehub/wireframes-refined.png","webpack:///./src/assets/phone.png","webpack:///./src/assets/codesnippets/code-versus.png","webpack:///./src/components/elements/Icon.vue?f4f9","webpack:///./src/assets/querybuilder/row-filter.png","webpack:///./src/assets/scenariomanager/snip-gif.mp4","webpack:///./src/components/content/LandingPage.vue?0262","webpack:///./src/assets/codesnippets/variations-codesnippets.png","webpack:///./src/assets/phoenix/mockup_ps.jpg","webpack:///./src/App.vue?a063","webpack:///./src/components/elements/Header.vue?fea9","webpack:///./src/utils/projects.js","webpack:///src/components/elements/Header.vue","webpack:///./src/components/elements/Header.vue?b9e1","webpack:///./src/components/elements/Header.vue?d60c","webpack:///./src/components/elements/Footer.vue?5cd9","webpack:///./src/components/elements/Icon.vue?b331","webpack:///src/components/elements/Icon.vue","webpack:///./src/components/elements/Icon.vue?297d","webpack:///./src/components/elements/Icon.vue?f920","webpack:///src/components/elements/Footer.vue","webpack:///./src/components/elements/Footer.vue?52f4","webpack:///./src/components/elements/Footer.vue?4fb4","webpack:///src/App.vue","webpack:///./src/App.vue?60d0","webpack:///./src/App.vue","webpack:///./src/components/content/About.vue?7d09","webpack:///src/components/content/About.vue","webpack:///./src/components/content/About.vue?0952","webpack:///./src/components/content/About.vue?d47f","webpack:///./src/components/projects/CodeSnippets.vue?2e66","webpack:///./src/components/elements/ProjectHeader.vue?63e6","webpack:///src/components/elements/ProjectHeader.vue","webpack:///./src/components/elements/ProjectHeader.vue?dfc8","webpack:///./src/components/elements/ProjectHeader.vue?88f1","webpack:///./src/components/elements/StyledImage.vue?af8c","webpack:///src/components/elements/StyledImage.vue","webpack:///./src/components/elements/StyledImage.vue?588b","webpack:///./src/components/elements/StyledImage.vue?44d1","webpack:///./src/components/elements/ProjectArrows.vue?e2c1","webpack:///./src/utils/index.js","webpack:///src/components/elements/ProjectArrows.vue","webpack:///./src/components/elements/ProjectArrows.vue?8020","webpack:///./src/components/elements/ProjectArrows.vue?408f","webpack:///src/components/projects/CodeSnippets.vue","webpack:///./src/components/projects/CodeSnippets.vue?4ebb","webpack:///./src/components/projects/CodeSnippets.vue","webpack:///./src/components/projects/EsGehtLos.vue?ca61","webpack:///src/components/projects/EsGehtLos.vue","webpack:///./src/components/projects/EsGehtLos.vue?52e3","webpack:///./src/components/projects/EsGehtLos.vue","webpack:///./src/components/projects/Greenbox.vue?a7d1","webpack:///src/components/projects/Greenbox.vue","webpack:///./src/components/projects/Greenbox.vue?2a72","webpack:///./src/components/projects/Greenbox.vue","webpack:///./src/components/projects/KnimeHub.vue?8a2f","webpack:///src/components/projects/KnimeHub.vue","webpack:///./src/components/projects/KnimeHub.vue?c816","webpack:///./src/components/projects/KnimeHub.vue","webpack:///./src/components/content/LandingPage.vue?13c3","webpack:///./src/components/elements/ProjectPreview.vue?0a8d","webpack:///src/components/elements/ProjectPreview.vue","webpack:///./src/components/elements/ProjectPreview.vue?1300","webpack:///./src/components/elements/ProjectPreview.vue?2620","webpack:///./src/components/content/WelcomeBanner.vue?35ca","webpack:///./src/components/content/WelcomeBanner.vue?ce57","webpack:///src/components/content/LandingPage.vue","webpack:///./src/components/content/LandingPage.vue?500f","webpack:///./src/components/content/LandingPage.vue?e7ff","webpack:///./src/components/content/Legal.vue?aecf","webpack:///src/components/content/Legal.vue","webpack:///./src/components/content/Legal.vue?2f0f","webpack:///./src/components/content/Legal.vue?fbf6","webpack:///./src/components/projects/Mechanics.vue?5f70","webpack:///src/components/projects/Mechanics.vue","webpack:///./src/components/projects/Mechanics.vue?a94e","webpack:///./src/components/projects/Mechanics.vue","webpack:///./src/components/content/PageNotFound.vue?d3b5","webpack:///./src/components/content/PageNotFound.vue?d8e4","webpack:///./src/components/projects/Phoenix.vue?409a","webpack:///src/components/projects/Phoenix.vue","webpack:///./src/components/projects/Phoenix.vue?bdc3","webpack:///./src/components/projects/Phoenix.vue","webpack:///./src/components/projects/QueryBuilder.vue?3958","webpack:///src/components/projects/QueryBuilder.vue","webpack:///./src/components/projects/QueryBuilder.vue?3d52","webpack:///./src/components/projects/QueryBuilder.vue","webpack:///./src/components/projects/ScenarioManager.vue?7f68","webpack:///src/components/projects/ScenarioManager.vue","webpack:///./src/components/projects/ScenarioManager.vue?7cde","webpack:///./src/components/projects/ScenarioManager.vue","webpack:///./src/components/projects/Thesis.vue?cb88","webpack:///src/components/projects/Thesis.vue","webpack:///./src/components/projects/Thesis.vue?2a41","webpack:///./src/components/projects/Thesis.vue?aa52","webpack:///./src/components/projects/TrafficTicket.vue?7c8f","webpack:///src/components/projects/TrafficTicket.vue","webpack:///./src/components/projects/TrafficTicket.vue?dbd9","webpack:///./src/components/projects/TrafficTicket.vue","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/assets/phoenix/paper_prototype.jpg","webpack:///./src/assets/bio/bio-image.jpg","webpack:///./src/assets/thesis/adjustable-eyes.jpg","webpack:///./src/assets/greenbox/greenbox_app2.png","webpack:///./src/assets/phoenix/wireframe_ps_js.png","webpack:///./src/assets/address.png","webpack:///./src/assets/codesnippets/formulas04.jpg","webpack:///./src/components/content/Legal.vue?7c86","webpack:///./src/components/elements/Header.vue?2ac5","webpack:///./src/assets/thesis/thesis.pdf","webpack:///./src/assets/phoenix/shuffle_tooltip.png","webpack:///./src/assets/querybuilder/variations.png","webpack:///./src/assets/thesis/gnb.png","webpack:///./src/assets/bio/github.svg","webpack:///./src/assets/mechanics/mechanics.png","webpack:///./src/components/elements/ProjectPreview.vue?5301","webpack:///./src/assets/codesnippets/3vs1.png","webpack:///./src/assets/phoenix/coverflow.mp4","webpack:///./src/assets/mechanics/workflow.png","webpack:///./src/assets/bio/mail.svg","webpack:///./src/assets/esgehtlos/typo.png","webpack:///./src/assets/greenbox/greenbox_v1.jpg","webpack:///./src/assets/mechanics/mechanics_app.png","webpack:///./src/assets/phoenix/phoenix_mp.jpg","webpack:///./src/assets/scenariomanager/mass-ass-slide.jpg","webpack:///./src/components/elements/StyledImage.vue?a60f","webpack:///./src/assets/scenariomanager/variants.jpg","webpack:///./src/components/elements/ProjectHeader.vue?9dc3","webpack:///./src/assets/mechanics/mechanics_interview.png","webpack:///./src/assets/arrow.svg","webpack:///./src/assets/thesis/regX.png","webpack:///./src/assets/querybuilder/concept.png","webpack:///./src/assets/bio/cv.svg","webpack:///./src/assets/querybuilder/querybuilder.png","webpack:///./src/components/content/About.vue?8d5d","webpack:///./src/assets/knimehub/quotes.png","webpack:///./src/assets/thesis/data-coll.png","webpack:///./src/assets/bio/linkedin.svg","webpack:///./src/assets/greenbox/greenbox_app3.png","webpack:///./src/assets/trafficticket/ticket1.jpeg","webpack:///./src/assets/greenbox/greenbox_v2.jpg","webpack:///./src/assets/querybuilder/querybuilders.png","webpack:///./src/assets/pattern.png","webpack:///./src/assets/greenbox/greenbox_presentation.png","webpack:///./src/assets/esgehtlos/demo.png","webpack:///./src/assets/thesis/foveated-rendering.png","webpack:///./src/components/content/PageNotFound.vue?9c7f","webpack:///./src/assets/knimehub/communities.png","webpack:///./src/assets/scenariomanager/brainstorming-sideshot.jpg","webpack:///./src/assets/scenariomanager/project-plan.png","webpack:///./src/assets/knimehub/node-issues.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","functional","render","_h","_vm","_c","_v","children","classNames","class","staticClass","style","staticStyle","attrs","rest","assign","concat","this","$createElement","_self","staticRenderFns","projectRoutes","indexOf","$route","path","projData","route","image","src","alt","slogan","clients","task","date","active","activeRoutes","filter","component","windowWidth","text","href","_t","_s","_e","components","Icon","LinkedInIcon","MailIcon","innerWidth","mounted","beforeDestroy","methods","_m","CvIcon","GhIcon","UxIcon","project","_l","props","type","String","required","created","isVideo","shadow","domProps","Boolean","default","previousProject","nextProject","getMod","getPreviousNextProjects","found","previous","next","Arrow","previousNext","projProps","buildImgUrl","script","ProjectPreview","WelcomeBanner","title","author","platform","licenseLink","licenseName","sourceLink","Vue","use","Router","routes","LandingPage","About","CodeSnippets","EsGehtLos","Greenbox","KnimeHub","Legal","Mechanics","Phoenix","QueryBuilder","ScenarioManager","Thesis","TrafficTicket","PageNotFound","scrollBehavior","x","y","config","productionTip","h","App","el","router","template","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,IAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,sGCvJT,W,qBCAAW,EAAOD,QAAU,sZ,uBCAjBC,EAAOD,QAAU,IAA0B,qC,oCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,2B,oCCA3C,W,qBCAAC,EAAOD,QAAU,01K,uBCAjBC,EAAOD,QAAU,IAA0B,kC,qBCA3C,IAAI+B,EAAM,CACT,gBAAiB,OACjB,cAAe,OACf,eAAgB,OAChB,sBAAuB,OACvB,eAAgB,OAChB,mBAAoB,OACpB,qBAAsB,OACtB,iBAAkB,OAClB,eAAgB,OAChB,0BAA2B,OAC3B,iCAAkC,OAClC,wCAAyC,OACzC,6BAA8B,OAC9B,gCAAiC,OACjC,6CAA8C,OAC9C,yBAA0B,OAC1B,6BAA8B,OAC9B,uBAAwB,OACxB,uBAAwB,OACxB,+BAAgC,OAChC,+BAAgC,OAChC,uCAAwC,OACxC,6BAA8B,OAC9B,6BAA8B,OAC9B,6BAA8B,OAC9B,4BAA6B,OAC7B,6BAA8B,OAC9B,wBAAyB,OACzB,+BAAgC,OAChC,oCAAqC,OACrC,kCAAmC,OACnC,4BAA6B,OAC7B,gCAAiC,OACjC,sCAAuC,OACvC,wBAAyB,OACzB,2BAA4B,OAC5B,gBAAiB,OACjB,0BAA2B,OAC3B,0BAA2B,OAC3B,gCAAiC,OACjC,2BAA4B,OAC5B,gCAAiC,OACjC,gCAAiC,OACjC,cAAe,OACf,6BAA8B,OAC9B,kCAAmC,OACnC,mCAAoC,OACpC,gCAAiC,OACjC,yBAA0B,OAC1B,gCAAiC,OACjC,+CAAgD,OAChD,uCAAwC,QACxC,qCAAsC,OACtC,iCAAkC,OAClC,iCAAkC,OAClC,+BAAgC,OAChC,yBAA0B,OAC1B,wBAAyB,OACzB,mBAAoB,OACpB,kCAAmC,OACnC,mBAAoB,OACpB,oBAAqB,OACrB,sBAAuB,OACvB,+BAAgC,QAIjC,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,qBCrFpBjC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,wB,uBCA3CC,EAAOD,QAAU,IAA0B,4B,qICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BF,IACnGC,GAELP,EAASS,OAAO,CAACX,EAAG,IAAI,CAACQ,MAAM,CAAC,YAAY,cAAc,KAAO,SAAS,CAACR,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,4KAA4KR,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,yCAAyCR,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,sJAAsJR,EAAG,OAAO,CAACA,EAAG,WAAW,CAACQ,MAAM,CAAC,GAAK,UAAU,CAACR,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,OAAO,EAAI,6B,uBCvBzlBpD,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,uBCA3CC,EAAOD,QAAU,IAA0B,uC,oCCA3C,W,kCCAA,W,uBCAAC,EAAOD,QAAU,IAA0B,uC,mBCA3CC,EAAOD,QAAU,8tB,uBCAjBC,EAAOD,QAAU,IAA0B,gC,oCCA3C,W,8CCAAC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,oCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,4C,qBCA3CC,EAAOD,QAAU,IAA0B,8B,mGCAvC,EAAS,WAAa,IAAI4C,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,QAAQ,CAACR,EAAG,UAAUA,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,YAAY,CAACR,EAAG,gBAAgB,GAAGA,EAAG,WAAW,IAC/Me,EAAkB,GCDlB,EAAS,WAAa,IAAIhB,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,WAAW,CAACR,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,SAAS,CAACR,EAAG,cAAc,CAACK,YAAY,SAASG,MAAM,CAAC,GAAK,OAAO,GAAK,MAAM,CAACT,EAAIE,GAAG,wBAAwBD,EAAG,cAAc,CAACI,MAAM,CAAC,SAAU,CAAC,QAAyD,GAA/CL,EAAIiB,cAAcC,QAAQlB,EAAImB,OAAOC,QAAeX,MAAM,CAAC,GAAK,OAAO,GAAK,MAAM,CAACT,EAAIE,GAAG,YAAYD,EAAG,cAAc,CAACI,MAAM,CAAC,SAAU,CAAC,OAA8B,WAApBL,EAAImB,OAAOC,OAAoBX,MAAM,CAAC,GAAK,QAAQ,GAAK,WAAW,CAACT,EAAIE,GAAG,cAAc,MACvjB,EAAkB,GCATmB,G,wCAAW,CACtB,CACEC,MAAO,iBACPC,MAAO,CACLC,IAAK,6BACLC,IAAK,oCAEP/D,KAAM,iBACNgE,OAAQ,8CACRC,QAAS,CAAC,eAAgB,sBAC1BC,KAAM,eACNC,KAAM,oBACNC,QAAQ,GAEV,CACER,MAAO,aACPC,MAAO,CACLC,IAAK,qBACLC,IAAK,oCAEP/D,KAAM,cACNgE,OAAQ,qCACRC,QAAS,CAAC,eAAgB,+BAC1BC,KAAM,YACNC,KAAM,eACNC,QAAQ,GAEV,CACER,MAAO,mBACPC,MAAO,CACLC,IAAK,6CACLC,IAAK,uBAEP/D,KAAM,mBACNgE,OAAQ,oDACRC,QAAS,CAAC,YACVC,KAAM,cACNC,KAAM,eACNC,QAAQ,GAEV,CACER,MAAO,YACPC,MAAO,CACLC,IAAK,0BACLC,IAAK,+CAEP/D,KAAM,YACNgE,OAAQ,6CACRC,QAAS,CAAC,SACVC,KAAM,eACNC,KAAM,YACNC,QAAQ,GAEV,CACER,MAAO,YACPC,MAAO,CACLC,IAAK,6BACLC,IAAK,sCAEP/D,KAAM,WACNgE,OAAQ,sCACRC,QAAS,CAAC,YACVC,KAAM,uBACNC,KAAM,OACNC,QAAQ,GAEV,CACER,MAAO,WACPC,MAAO,CACLC,IAAK,yBACLC,IAAK,qCAEP/D,KAAM,UACNgE,OAAQ,mDACRC,QAAS,CAAC,UACVC,KAAM,uBACNC,KAAM,YACNC,QAAQ,GAEV,CACER,MAAO,gBACPC,MAAO,CACLC,IAAK,gCACLC,IAAK,wCAEP/D,KAAM,eACNgE,OAAQ,0CACRC,QAAS,CAAC,SACVC,KAAM,eACNC,KAAM,OACNC,QAAQ,GAEV,CACER,MAAO,gBACPC,MAAO,CACLC,IAAK,8BACLC,IAAK,qCAEP/D,KAAM,gBACNgE,OAAQ,+CACRC,QAAS,CAAC,SACVC,KAAM,eACNC,KAAM,OACNC,QAAQ,GAEV,CACER,MAAO,aACPC,MAAO,CACLC,IAAK,0BACLC,IAAK,uDAEP/D,KAAM,YACNgE,OAAQ,qCACRC,QAAS,CAAC,UACVC,KAAM,aACNC,KAAM,OACNC,QAAQ,GAEV,CACER,MAAO,UACPC,MAAO,CACLC,IAAK,6BACLC,IAAK,8BAEP/D,KAAM,SACNgE,OAAQ,uCACRC,QAAS,CAAC,aACVC,KAAM,gBACNC,KAAM,YACNC,QAAQ,KAKCC,EAAeV,EAASW,QAAO,SAAAxC,GAAC,OAAIA,EAAEsC,UAGtCb,EAAgBI,EAASlC,KAAI,SAAAK,GAAC,OAAIA,EAAE8B,SAAOV,OAAO,CAAC,MC5GhE,GACEtF,KADF,WAEI,MAAO,CACL2F,cAAN,KCjC+V,I,wBCQ3VgB,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX,EAAS,WAAa,IAAIjC,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,SAAS,CAACA,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,YAAY,CAACR,EAAG,MAAM,CAACK,YAAY,aAAa,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,kBAAkBD,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,mCAAmC,KAAOT,EAAIkC,YAAc,IAAM,KAAO,OAAO,CAACjC,EAAG,iBAAiB,GAAGA,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,kCAAkC,KAAOT,EAAIkC,YAAc,IAAM,KAAO,OAAO,CAACjC,EAAG,aAAa,IAAI,KAAKA,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,UAAU,CAACR,EAAG,cAAc,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,SAAS,GAAK,UAAU,CAACT,EAAIE,GAAG,0BAA0B,MACvmB,EAAkB,GCDlB,EAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACI,MAAM,CAAC,YAAaL,EAAImC,MAAO5B,MAAOP,EAAW,QAAES,MAAM,CAAC,KAAOT,EAAIoC,OAAO,CAACpC,EAAIqC,GAAG,WAAYrC,EAAQ,KAAEC,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACN,EAAIE,GAAG,IAAIF,EAAIsC,GAAGtC,EAAImC,MAAM,OAAOnC,EAAIuC,MAAM,IAC1R,EAAkB,GCctB,GACE,MAAF,CACI,KAAJ,CACM,KAAN,QAEI,KAAJ,CACM,KAAN,OACM,UAAN,GAEI,KAAJ,CACM,KAAN,SAGE,SAAF,CACI,QADJ,WAEM,MAAN,CACQ,SAAR,mBC/B6V,ICQzV,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,kDCcf,GACEC,WAAY,CACVC,KAAJ,EACIC,aAAJ,IACIC,SAAJ,KAEErH,KANF,WAOI,MAAO,CACL4G,YAAalD,OAAO4D,aAGxBC,QAXF,WAWA,WACI,KAAJ,sBACM,OAAN,0CAIEC,cAjBF,WAkBI,OAAJ,6CAGEC,QAAS,CACP,SADJ,WAEM,KAAN,iCCxD+V,ICQ3V,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCLf,GACE,KAAF,MACE,WAAF,CACI,OAAJ,EACI,OAAJ,IClB8T,ICQ1T,G,UAAY,eACd,EACA,EACA/B,GACA,EACA,KACA,KACA,OAIa,I,oBCnBX,EAAS,WAAa,IAAIhB,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,UAAU,CAACR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,WAAqCR,EAAG,MAAM,CAACK,YAAY,QAAQG,MAAM,CAAC,GAAK,SAAS,CAACR,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACD,EAAIE,GAAG,0aAA0aD,EAAG,KAAK,CAACD,EAAIE,GAAG,yBAAyBD,EAAG,KAAK,CAACD,EAAIE,GAAG,gCAAgCD,EAAG,IAAI,CAACD,EAAIE,GAAG,yKAAyKD,EAAG,KAAK,CAACD,EAAIE,GAAG,4BAA4BD,EAAG,IAAI,CAACD,EAAIE,GAAG,qGAAqGD,EAAG,KAAK,CAACD,EAAIE,GAAG,iCAAiCD,EAAG,IAAI,CAACD,EAAIE,GAAG,iGAAiGF,EAAIgD,GAAG,GAAG/C,EAAG,KAAKA,EAAG,MAAM,CAACK,YAAY,SAAS,CAACL,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,KAAK,KAAO,SAAS,KAAO,EAAQ,UAA6B,CAACR,EAAG,WAAW,GAAGA,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,KAAK,KAAO,mBAAmB,KAAO,mDAAmD,CAACR,EAAG,WAAW,GAAGA,EAAG,OAAO,CAACQ,MAAM,CAAC,KAAO,KAAK,KAAO,SAAS,KAAO,uCAAuC,CAACR,EAAG,WAAW,IAAI,UACptD,EAAkB,CAAC,WAAa,IAAID,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,0DAA0DD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,iCAAiC,CAACT,EAAIE,GAAG,kBAAkBF,EAAIE,GAAG,S,+DCgD9R,GACEsC,WAAY,CACVS,OAAJ,IACIC,OAAJ,IACIT,KAAJ,EACIU,OAAJ,MCtD8V,ICQ1V,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBX,EAAS,WAAa,IAAInD,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,mBAAmBR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,qGAAuGD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAsC,IAAM,kCAAkCR,EAAG,IAAI,CAACD,EAAIE,GAAG,goBAAkoBD,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA6C,IAAM,uDAAuDR,EAAG,IAAI,CAACD,EAAIE,GAAG,gIAAgIF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyD,IAAM,6HAA6HR,EAAG,IAAI,CAACD,EAAIE,GAAG,2sBAA6sBD,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,sBAAsBT,EAAIgD,GAAG,GAAG/C,EAAG,IAAI,CAACD,EAAIE,GAAG,kYAA0YD,EAAG,IAAI,CAACD,EAAIE,GAAG,qaAAqaD,EAAG,IAAI,CAACD,EAAIE,GAAG,2WAA6WD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAoD,IAAM,2DAA2D,GAAGR,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,oBAAoB,IACr9H,EAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,uJAAuJD,EAAG,KAAK,CAACD,EAAIE,GAAG,2TAA+T,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,6LAA6LD,EAAG,IAAI,CAACQ,MAAM,CAAC,KAAO,gFAAgF,CAACT,EAAIE,GAAG,4BAA8BF,EAAIE,GAAG,SCDvhC,EAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,mBAAmB,CAACR,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,mBAAmB,CAACR,EAAG,MAAM,CAACK,YAAY,aAAa,CAACN,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIoD,QAAQ1F,SAASuC,EAAG,KAAK,CAACD,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIoD,QAAQ1B,aAAazB,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,sBAAsB,CAACR,EAAG,MAAM,CAACK,YAAY,aAAa,CAACN,EAAIE,GAAG,cAAcD,EAAG,KAAKD,EAAIqD,GAAIrD,EAAIoD,QAAe,SAAE,SAAS5F,GAAG,OAAOyC,EAAG,MAAM,CAACxB,IAAIjB,GAAG,CAACwC,EAAIE,GAAG,IAAIF,EAAIsC,GAAG9E,GAAG,UAAS,GAAGyC,EAAG,MAAM,CAACK,YAAY,aAAa,CAACN,EAAIE,GAAG,YAAYD,EAAG,KAAK,CAACD,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIoD,QAAQxB,SAAS3B,EAAG,MAAM,CAACK,YAAY,aAAa,CAACN,EAAIE,GAAG,gBAAgBD,EAAG,KAAK,CAACD,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIoD,QAAQvB,cACltB,EAAkB,GC2BtB,GACEvG,KADF,WAEI,MAAO,CACL8H,QAAS,OAGbE,MAAO,CACLhC,MAAO,CACLiC,KAAMC,OACNC,UAAU,IAIdC,QAbF,WAaA,WACI7C,KAAKuC,QAAU/B,EAASW,QAAO,SAAnC,0CC1CsW,KCQlW,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIhC,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACQ,MAAM,CAAC,GAAK,cAAc,CAAGT,EAAI2D,UAAsG3D,EAAIuC,KAA/FtC,EAAG,MAAM,CAACI,MAAM,CAAC,SAAU,CAAE,OAAUL,EAAI4D,SAAUnD,MAAM,CAAC,IAAMT,EAAIwB,IAAI,IAAMxB,EAAIyB,OAAiBzB,EAAI2D,UAAW1D,EAAG,QAAQ,CAACI,MAAM,CAAC,SAAU,CAAE,OAAUL,EAAI4D,SAAUnD,MAAM,CAAC,SAAW,GAAG,MAAQ,GAAG,KAAO,IAAIoD,SAAS,CAAC,OAAQ,IAAO,CAAC5D,EAAG,SAAS,CAACQ,MAAM,CAAC,IAAMT,EAAIwB,IAAI,KAAO,eAAexB,EAAIE,GAAG,oDAAoDF,EAAIuC,KAAKtC,EAAG,MAAM,CAACK,YAAY,SAAS,CAACN,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIyB,WAChjB,GAAkB,GCoBtB,I,UAAA,CACA,OACA,KACA,YACA,aAEA,KACA,aAEImC,OAAQ,CACNL,KAAMO,QACNC,SAAS,IAGf,SAEA,QAFA,WAGA,6CCtCoW,MCQhW,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI/D,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,kBAAkB,CAACR,EAAG,cAAc,CAACK,YAAY,WAAWG,MAAM,CAAC,GAAKT,EAAIgE,gBAAgB1C,QAAQ,CAACrB,EAAG,SAASA,EAAG,OAAO,CAACD,EAAIE,GAAG,qBAAqBF,EAAIsC,GAAGtC,EAAIgE,gBAAgBtG,UAAU,GAAGuC,EAAG,MAAM,CAACK,YAAY,cAAcL,EAAG,cAAc,CAACK,YAAY,OAAOG,MAAM,CAAC,GAAKT,EAAIiE,YAAY3C,QAAQ,CAACrB,EAAG,OAAO,CAACD,EAAIE,GAAG,iBAAiBF,EAAIsC,GAAGtC,EAAIiE,YAAYvG,SAASuC,EAAG,UAAU,IAAI,IAC7gB,GAAkB,G,UCkBtB,SAASiE,GAAOtI,EAAGkB,GACjB,OAASlB,EAAIkB,EAAKA,GAAKA,EAIlB,SAASqH,GAAwB7C,GAItC,IADA,IAAI8C,EAAQrC,EAAajG,OAChBF,EAAI,EAAGA,EAAImG,EAAajG,OAAQF,IACvC,GAAImG,EAAanG,GAAG0F,OAASA,EAAO,CAClC8C,EAAQxI,EACR,MAGJ,IAAIyI,EAAWH,GAAOE,EAAQ,EAAGrC,EAAajG,QAC1CwI,EAAOJ,GAAOE,EAAQ,EAAGrC,EAAajG,QAE1C,MAAO,CACLuI,SAAUtC,EAAasC,GACvBC,KAAMvC,EAAauC,I,4BCjBvB,IACE9B,WAAY,CACV+B,MAAJ,MAEEjJ,KAJF,WAKI,MAAO,CACL0I,gBAAiB,CAAvB,sBACMC,YAAa,CAAnB,wBAGEX,MAAO,CACLhC,MAAO,CACLiC,KAAMC,OACNC,UAAU,IAIdC,QAjBF,WAkBI,IAAJ,iBACI7C,KAAKmD,gBAAkBQ,EAAaH,SACpCxD,KAAKoD,YAAcO,EAAaF,OC1CkU,MCQlW,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCiBf,IACA,YACA,oBACA,kBACA,sBCxCqW,MCOjW,GAAY,eACd,GACA,EACA,GACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAItE,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,gBAAgBR,EAAG,MAAM,CAACK,YAAY,oBAAoB,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,kNAAkND,EAAG,KAAK,CAACD,EAAIE,GAAG,uBAAuBD,EAAG,IAAI,CAACD,EAAIE,GAAG,udAAudD,EAAG,KAAK,CAACD,EAAIE,GAAG,qBAAqBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAqC,IAAM,gDAAgDT,EAAIgD,GAAG,GAAG/C,EAAG,eAAe,CAACQ,MAAM,CAAC,QAAS,EAAM,IAAM,EAAQ,QAAmC,IAAM,sBAAsBR,EAAG,eAAe,CAACQ,MAAM,CAAC,QAAS,EAAM,IAAM,EAAQ,QAAyC,IAAM,oCAAoCR,EAAG,KAAK,CAACD,EAAIE,GAAG,+BAAiCD,EAAG,IAAI,CAACD,EAAIE,GAAG,oPAAoPD,EAAG,SAAS,CAACO,YAAY,CAAC,OAAS,gCAAgCC,MAAM,CAAC,MAAQ,MAAM,OAAS,MAAM,IAAM,uQAAuQ,gBAAkB,MAAMR,EAAG,IAAI,CAACD,EAAIE,GAAG,iFAAiFD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaF,EAAIgD,GAAG,IAAI,GAAG/C,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,iBAAiB,IAChwE,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,2TAA6TD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,6BAA6B,CAACT,EAAIE,GAAG,cAAcF,EAAIE,GAAG,qCAAqC,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,+BAA+B,CAACT,EAAIE,GAAG,iBAAiBF,EAAIE,GAAG,+NAAiOD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,iCAAiC,CAACT,EAAIE,GAAG,kBAAkBF,EAAIE,GAAG,2LCuC7kC,IACA,YACA,oBACA,kBACA,sBC5CkW,MCO9V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,eAAeR,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,aAAa,CAACR,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,uPAAuPD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,wCAAwCT,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,oCAAoCD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA2C,IAAM,2CAA2CR,EAAG,IAAI,CAACD,EAAIE,GAAG,mkBAAmkBD,EAAG,KAAK,CAACD,EAAIE,GAAG,4BAA4BD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,6CAA6CR,EAAG,IAAI,CAACD,EAAIE,GAAG,yIAAyID,EAAG,KAAK,CAACD,EAAIE,GAAG,qCAAqCD,EAAG,IAAI,CAACD,EAAIE,GAAG,uVAAuVD,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAmD,IAAM,iCAAiCR,EAAG,IAAI,CAACD,EAAIE,GAAG,qaAAqaD,EAAG,KAAK,CAACD,EAAIE,GAAG,0BAA0BD,EAAG,IAAI,CAACD,EAAIE,GAAG,qgCAAugC,GAAGD,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,gBAAgB,IACj2H,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,mBAAmBF,EAAIE,GAAG,2MAA6M,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,gEAAgED,EAAG,KAAK,CAACD,EAAIE,GAAG,kDAAkDD,EAAG,KAAK,CAACD,EAAIE,GAAG,kECoCtmB,IACA,YACA,oBACA,kBACA,sBCzCiW,MCO7V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,eAAeR,EAAG,MAAM,CAACK,YAAY,mBAAmBG,MAAM,CAAC,GAAK,aAAa,CAACR,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,4MAA4MD,EAAG,KAAK,CAACD,EAAIE,GAAG,kBAAkBD,EAAG,IAAI,CAACD,EAAIE,GAAG,shBAAwhBD,EAAG,KAAK,CAACD,EAAIE,GAAG,4BAA4BD,EAAG,IAAI,CAACD,EAAIE,GAAG,6XAA6XD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAoC,IAAM,6BAA6B,QAAS,KAASR,EAAG,IAAI,CAACD,EAAIE,GAAG,oXAAoXD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,6BAA6B,QAAS,KAASR,EAAG,IAAI,CAACD,EAAIE,GAAG,uIAAuIF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,mBAAmBD,EAAG,IAAI,CAACD,EAAIE,GAAG,iOAAiOD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,0CAA0CR,EAAG,IAAI,CAACD,EAAIE,GAAG,4MAA4MD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA8C,IAAM,sBAAsBR,EAAG,IAAI,CAACD,EAAIE,GAAG,gSAAgSD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAgD,IAAM,qCAAqCR,EAAG,KAAK,CAACD,EAAIE,GAAG,sCAAsCD,EAAG,IAAI,CAACD,EAAIE,GAAG,iLAAiLD,EAAG,KAAK,CAACD,EAAIE,GAAG,YAAYD,EAAG,IAAI,CAACD,EAAIE,GAAG,uTAAuTF,EAAIgD,GAAG,GAAG/C,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA2C,IAAM,+CAA+C,GAAGR,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,gBAAgB,IACjrI,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,uHAAuHD,EAAG,KAAK,CAACD,EAAIE,GAAG,+GAA+GD,EAAG,KAAK,CAACD,EAAIE,GAAG,yIAAyID,EAAG,KAAK,CAACD,EAAIE,GAAG,+KAA+K,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,oBAAoBD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,0BAA0B,CAACT,EAAIE,GAAG,mBAAmBF,EAAIE,GAAG,SC0D56B,IACA,YACA,oBACA,kBACA,sBC/DiW,MCO7V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiBA,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,aAAaT,EAAIqD,GAAIrD,EAAgB,cAAE,SAASR,GAAG,OAAOS,EAAG,iBAAiB,CAACxB,IAAIe,EAAEF,GAAGmB,MAAM,CAAC,UAAYjB,QAAO,IAAI,IAC/R,GAAkB,GCDlB,GAAS,WAAa,IAAIQ,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,cAAc,CAACK,YAAY,OAAOG,MAAM,CAAC,GAAKT,EAAIyE,UAAUnD,QAAQ,CAACrB,EAAG,MAAM,CAACK,YAAY,iBAAiB,CAACL,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAMT,EAAI0E,YAAY1E,EAAIyE,UAAUlD,MAAMC,KAAK,IAAMxB,EAAIyE,UAAUlD,MAAME,SAASxB,EAAG,MAAM,CAACK,YAAY,QAAQ,CAACL,EAAG,MAAM,CAACK,YAAY,UAAU,CAACN,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIyE,UAAU/C,WAAWzB,EAAG,MAAM,CAACK,YAAY,SAAS,CAACN,EAAIE,GAAGF,EAAIsC,GAAGtC,EAAIyE,UAAU7C,cACld,GAAkB,GCctB,IACE,MAAF,CACI,UAAJ,CACM,KAAN,OACM,UAAN,IAGE,QAAF,CACI,YADJ,SACA,GACM,OAAN,qBCxBuW,MCQnW,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI5B,EAAIa,KAASd,EAAGC,EAAIc,eAAsBd,EAAIe,MAAMd,GAAO,OAAOD,EAAIgD,GAAG,IACnG,GAAkB,CAAC,WAAa,IAAIhD,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACK,YAAY,cAAc,CAACN,EAAIE,GAAG,QAAQD,EAAG,MAAMD,EAAIE,GAAG,4ECAzKyE,I,UAAS,IAMT,GAAY,eACdA,GACA,GACA,IACA,EACA,KACA,WACA,MAIa,M,QCCf,IACEnC,WAAY,CACVoC,eAAJ,GACIC,cAAJ,IAEEvJ,KALF,WAMI,MAAO,CAELyG,aAAN,KC3BoW,MCQhW,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI/B,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,mBAAmBG,MAAM,CAAC,GAAK,YAAY,CAACR,EAAG,KAAK,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,IAAI,CAACD,EAAIE,GAAG,kDAAkDF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaF,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,sEAAsEF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,kDAAkDD,EAAG,KAAKD,EAAIqD,GAAIrD,EAAW,SAAE,SAAS9C,GAAG,OAAO+C,EAAG,KAAK,CAACxB,IAAIvB,EAAE4H,OAAO,CAAC9E,EAAIE,GAAG,IAAIF,EAAIsC,GAAGpF,EAAE4H,OAAO,OAAO9E,EAAIsC,GAAGpF,EAAE6H,QAAQ,SAAS/E,EAAIsC,GAAGpF,EAAE8H,UAAU,eAAe/E,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAOvD,EAAE+H,cAAc,CAACjF,EAAIE,GAAGF,EAAIsC,GAAGpF,EAAEgI,gBAAgBlF,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAOvD,EAAEiI,aAAa,CAACnF,EAAIE,GAAG,eAAc,GAAGD,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBF,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAGhD,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,eAAeD,EAAG,IAAI,CAACD,EAAIE,GAAG,2BAA2BF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaF,EAAIgD,GAAG,IAAIhD,EAAIgD,GAAG,IAAIhD,EAAIgD,GAAG,IAAI/C,EAAG,KAAK,CAACD,EAAIE,GAAG,yDAAyDF,EAAIgD,GAAG,IAAI/C,EAAG,KAAK,CAACD,EAAIE,GAAG,4DAA4DD,EAAG,KAAKD,EAAIqD,GAAIrD,EAAW,SAAE,SAAS9C,GAAG,OAAO+C,EAAG,KAAK,CAACxB,IAAIvB,EAAE4H,OAAO,CAAC9E,EAAIE,GAAG,IAAIF,EAAIsC,GAAGpF,EAAE4H,OAAO,QAAQ9E,EAAIsC,GAAGpF,EAAE6H,QAAQ,QAAQ/E,EAAIsC,GAAGpF,EAAE8H,UAAU,cAAc/E,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAOvD,EAAE+H,cAAc,CAACjF,EAAIE,GAAGF,EAAIsC,GAAGpF,EAAEgI,gBAAgBlF,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAOvD,EAAEiI,aAAa,CAACnF,EAAIE,GAAG,eAAc,GAAGD,EAAG,KAAK,CAACD,EAAIE,GAAG,wBAAwBF,EAAIgD,GAAG,IAAIhD,EAAIgD,GAAG,IAAIhD,EAAIgD,GAAG,IAAIhD,EAAIgD,GAAG,OAC9nD,GAAkB,CAAC,WAAa,IAAIhD,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,eAAeD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA0B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,YAAYD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,oCAAoC,CAACT,EAAIE,GAAG,iCAAiC,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,qBAAqBD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,kCAAkC,CAACT,EAAIE,GAAG,+BAA+B,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,kCAAkCF,EAAIE,GAAG,2mBAA2mB,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,gCAAgCF,EAAIE,GAAG,sSAAsS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,iBAAiBF,EAAIE,GAAG,6hBAA6hB,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,mCAAmC,CAACT,EAAIE,GAAG,uCAAuC,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,aAAaD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA0B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,YAAYD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,oCAAoC,CAACT,EAAIE,GAAG,iCAAiC,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,qBAAqBD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,kCAAkC,CAACT,EAAIE,GAAG,+BAA+B,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4B,IAAM,SAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,2BAA2BF,EAAIE,GAAG,m3BAAm3B,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,yBAAyBF,EAAIE,GAAG,urBAAurB,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,oBAAoBF,EAAIE,GAAG,syBAAsyB,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACD,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,mCAAmC,CAACT,EAAIE,GAAG,wCCwDviO,IACA,KADA,WAEA,OACA,SACA,CACA,eACA,wBACA,4BACA,sCACA,2DACA,4DAEA,CACA,gBACA,sBACA,4BACA,sCACA,2DACA,4DAEA,CACA,qBACA,gBACA,YACA,0BACA,kDACA,2CAEA,CACA,cACA,wBACA,4BACA,sCACA,2DACA,wFAEA,CACA,mBACA,8BACA,kBACA,kCACA,wCACA,uCAEA,CACA,qBACA,8BACA,kBACA,kCACA,wCACA,uCAEA,CACA,cACA,8BACA,kBACA,kCACA,wCACA,uCAEA,CACA,mCACA,sBACA,uBACA,oCACA,mDACA,2EC3H8V,MCQ1V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,gBAAgBR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,2LAA2LD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,gCAAgCR,EAAG,KAAK,CAACD,EAAIE,GAAG,YAAYD,EAAG,IAAI,CAACD,EAAIE,GAAG,oUAAoUD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAkD,IAAM,wCAAwCR,EAAG,KAAK,CAACD,EAAIE,GAAG,0BAA0BD,EAAG,IAAI,CAACD,EAAIE,GAAG,8gBAA8gBD,EAAG,KAAK,CAACD,EAAIE,GAAG,wBAAwBD,EAAG,IAAI,CAACD,EAAIE,GAAG,0IAA0ID,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAuC,IAAM,2CAA2CR,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,IAAI,CAACD,EAAIE,GAAG,wjBAAwjBD,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,IAAI,CAACD,EAAIE,GAAG,0dAA0dD,EAAG,KAAK,CAACD,EAAIE,GAAG,0BAA0BD,EAAG,IAAI,CAACD,EAAIE,GAAG,waAA0a,GAAGD,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,iBAAiB,IACxiH,GAAkB,GCoCtB,IACA,YACA,oBACA,kBACA,sBCzCkW,MCO9V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,aAAaG,MAAM,CAAC,GAAK,iBAAiB,CAACR,EAAG,KAAK,CAACD,EAAIE,GAAG,SAASD,EAAG,IAAI,CAACD,EAAIE,GAAG,mCAAmCD,EAAG,cAAc,CAACQ,MAAM,CAAC,GAAK,MAAM,CAACT,EAAIE,GAAG,uBAAuB,IAC3S,GAAkB,GCAlB,I,UAAS,IAMT,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,cAAcR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,qLAAqLD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,IAAI,CAACD,EAAIE,GAAG,4VAA4VD,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACD,EAAIE,GAAG,+HAA+HF,EAAIgD,GAAG,GAAG/C,EAAG,IAAI,CAACD,EAAIE,GAAG,8uBAA8uBD,EAAG,KAAK,CAACD,EAAIE,GAAG,iBAAiBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,yBAAyBR,EAAG,IAAI,CAACD,EAAIE,GAAG,wHAAwHD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAsC,IAAM,yCAAyCR,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,IAAI,CAACD,EAAIE,GAAG,4mBAA4mBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,oHAAoHR,EAAG,IAAI,CAACD,EAAIE,GAAG,yDAAyDF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,qBAAqBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAsC,IAAM,8CAA8CR,EAAG,IAAI,CAACD,EAAIE,GAAG,mFAAmFF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,IAAI,CAACD,EAAIE,GAAG,8lBAA8lBF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,0BAA0BD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,6CAA6CR,EAAG,IAAI,CAACD,EAAIE,GAAG,keAAkeF,EAAIgD,GAAG,IAAI,GAAG/C,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,eAAe,IACvrJ,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,4FAA4FD,EAAG,KAAK,CAACD,EAAIE,GAAG,+CAA+CD,EAAG,KAAK,CAACD,EAAIE,GAAG,qDAAqD,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,uKAAuKD,EAAG,KAAK,CAACD,EAAIE,GAAG,0EAA0ED,EAAG,KAAK,CAACD,EAAIE,GAAG,oEAAoED,EAAG,KAAK,CAACD,EAAIE,GAAG,6GAA6GD,EAAG,KAAK,CAACD,EAAIE,GAAG,8GAA8G,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,mQAAmQD,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,0EAA0ED,EAAG,KAAK,CAACD,EAAIE,GAAG,iGAAiGD,EAAG,KAAK,CAACD,EAAIE,GAAG,8GAA8GD,EAAG,KAAK,CAACD,EAAIE,GAAG,mTAAmTD,EAAG,KAAK,CAACD,EAAIE,GAAG,4IAA4I,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,+CAA+C,CAACT,EAAIE,GAAG,+BAA+B,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,iDAAiD,CAACT,EAAIE,GAAG,kCC4DtlF,IACA,KADA,WAEA,OACA,6BAGA,YACA,oBACA,kBACA,sBCtEgW,MCO5V,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,mBAAmBR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,8GAA8GD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAqC,IAAM,uBAAuBR,EAAG,IAAI,CAACD,EAAIE,GAAG,oQAAoQD,EAAG,IAAI,CAACD,EAAIE,GAAG,gYAAgYF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA+C,IAAM,kEAAkER,EAAG,IAAI,CAACD,EAAIE,GAAG,mTAAmTD,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,IAAI,CAACD,EAAIE,GAAG,qGAAqGF,EAAIgD,GAAG,GAAG/C,EAAG,IAAI,CAACD,EAAIE,GAAG,6KAA6KD,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,iGAAiGR,EAAG,IAAI,CAACD,EAAIE,GAAG,0rBAA0rBD,EAAG,KAAK,CAACD,EAAIE,GAAG,aAAaD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAyC,IAAM,sBAAsBR,EAAG,IAAI,CAACD,EAAIE,GAAG,gZAAoZD,EAAG,IAAI,CAACD,EAAIE,GAAG,uMAAuMD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA4C,IAAM,2DAA2D,GAAGR,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,oBAAoB,IAC31H,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,+DAA+DD,EAAG,KAAK,CAACD,EAAIE,GAAG,+EAA+ED,EAAG,KAAK,CAACD,EAAIE,GAAG,mKAAmK,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,6EAA6ED,EAAG,KAAK,CAACD,EAAIE,GAAG,kHAAkHD,EAAG,KAAK,CAACD,EAAIE,GAAG,kGC2C/xB,IACA,YACA,oBACA,kBACA,sBChDqW,MCOjW,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,sBAAsBR,EAAG,MAAM,CAACK,YAAY,oBAAoB,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,uNAAuND,EAAG,KAAK,CAACD,EAAIE,GAAG,uBAAuBF,EAAIgD,GAAG,GAAG/C,EAAG,IAAI,CAACD,EAAIE,GAAG,wZAAwZD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAiD,IAAM,0BAA0BR,EAAG,KAAK,CAACD,EAAIE,GAAG,cAAcD,EAAG,KAAK,CAACD,EAAIE,GAAG,yBAAyBD,EAAG,IAAI,CAACD,EAAIE,GAAG,kFAAkFF,EAAIgD,GAAG,GAAG/C,EAAG,IAAI,CAACD,EAAIE,GAAG,gKAAgKD,EAAG,IAAI,CAACD,EAAIE,GAAG,+JAA+JD,EAAG,KAAK,CAACD,EAAIE,GAAG,uBAAuBF,EAAIgD,GAAG,GAAG/C,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA6C,IAAM,oDAAoDR,EAAG,KAAK,CAACD,EAAIE,GAAG,uBAAuBD,EAAG,KAAK,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,IAAI,CAACD,EAAIE,GAAG,6GAA6GD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,SAAmD,IAAM,8CAA8CR,EAAG,KAAK,CAACD,EAAIE,GAAG,iBAAiBD,EAAG,IAAI,CAACD,EAAIE,GAAG,6UAA6UD,EAAG,IAAI,CAACD,EAAIE,GAAG,sNAAsND,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA6C,IAAM,8CAAgDR,EAAG,KAAK,CAACD,EAAIE,GAAG,eAAeD,EAAG,IAAI,CAACD,EAAIE,GAAG,mSAAmSD,EAAG,IAAI,CAACD,EAAIE,GAAG,0HAA0HD,EAAG,IAAI,CAACD,EAAIE,GAAG,uIAAuID,EAAG,IAAI,CAACD,EAAIE,GAAG,4ZAA4Z,GAAGD,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,uBAAuB,IAC14H,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACA,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,8BAA8B,CAACT,EAAIE,GAAG,cAAcF,EAAIE,GAAG,qYAAqY,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,KAAK,CAACA,EAAG,KAAK,CAACD,EAAIE,GAAG,+CAA+CD,EAAG,KAAK,CAACD,EAAIE,GAAG,uCAAuCD,EAAG,KAAK,CAACD,EAAIE,GAAG,yDAAyDD,EAAG,KAAK,CAACD,EAAIE,GAAG,+CAA+CD,EAAG,KAAK,CAACD,EAAIE,GAAG,wEAAwE,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,2HAA2HD,EAAG,IAAI,CAACK,YAAY,OAAOG,MAAM,CAAC,KAAO,8EAA8E,CAACT,EAAIE,GAAG,eAAeF,EAAIE,GAAG,wICuD/3C,IACA,YACA,oBACA,kBACA,sBC5DwW,MCOpW,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,aAAaR,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,mLAAmLD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA8C,IAAM,qCAAqCR,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBF,EAAIgD,GAAG,GAAG/C,EAAG,KAAK,CAACD,EAAIE,GAAG,qBAAqBD,EAAG,IAAI,CAACD,EAAIE,GAAG,wWAAwWD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAqC,IAAM,iCAAiCR,EAAG,KAAK,CAACD,EAAIE,GAAG,oBAAoBD,EAAG,IAAI,CAACD,EAAIE,GAAG,gcAAgcD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAA+B,IAAM,yCAAyCR,EAAG,KAAK,CAACD,EAAIE,GAAG,sBAAsBD,EAAG,IAAI,CAACD,EAAIE,GAAG,+VAA+VD,EAAG,eAAe,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAgC,IAAM,6DAA6DR,EAAG,KAAK,CAACD,EAAIE,GAAG,gBAAgBD,EAAG,IAAI,CAACD,EAAIE,GAAG,6kBAA6kBD,EAAG,IAAI,CAACQ,MAAM,CAAC,GAAK,WAAW,OAAS,SAAS,KAAO,EAAQ,UAAoC,CAACR,EAAG,MAAM,CAACQ,MAAM,CAAC,IAAM,EAAQ,QAAoC,MAAQ,QAAQT,EAAIE,GAAG,8BAA8B,GAAGD,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,cAAc,IAC1mG,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,IAAI,CAACD,EAAIE,GAAG,2IAA2ID,EAAG,IAAI,CAACQ,MAAM,CAAC,OAAS,SAAS,KAAO,4DAA4D,CAACT,EAAIE,GAAG,+BAA+BF,EAAIE,GAAG,4oBC8CtZ,IACA,YACA,oBACA,kBACA,sBCnD+V,MCQ3V,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIF,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,oBAAoBT,EAAIgD,GAAG,GAAG/C,EAAG,iBAAiB,CAACQ,MAAM,CAAC,MAAQ,qBAAqB,IACjO,GAAkB,CAAC,WAAa,IAAIT,EAAIa,KAASd,EAAGC,EAAIc,eAAmBb,EAAGD,EAAIe,MAAMd,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,cAAc,CAACL,EAAG,KAAK,CAACD,EAAIE,GAAG,WAAWD,EAAG,IAAI,CAACD,EAAIE,GAAG,yHAAyHD,EAAG,KAAK,CAACD,EAAIE,GAAG,uGCelU,IACA,KADA,WAEA,OACA,6BAGA,YACA,oBACA,sBCxBsW,MCOlW,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QCDfkF,OAAIC,IAAIC,QAEO,WAAIA,OAAO,CACtBC,OAAQ,CACJ,CAAEnE,KAAM,IAAKa,UAAWuD,IACxB,CAAEpE,KAAM,SAAUa,UAAWwD,GAC7B,CAAErE,KAAM,gBAAiBa,UAAWyD,IACpC,CAAEtE,KAAM,aAAca,UAAW0D,IACjC,CAAEvE,KAAM,YAAaa,UAAW2D,IAChC,CAAExE,KAAM,YAAaa,UAAW4D,IAChC,CAAEzE,KAAM,SAAUa,UAAW6D,IAC7B,CAAE1E,KAAM,aAAca,UAAW8D,IACjC,CAAE3E,KAAM,WAAYa,UAAW+D,IAC/B,CAAE5E,KAAM,gBAAiBa,UAAWgE,IACpC,CAAE7E,KAAM,mBAAoBa,UAAWiE,IACvC,CAAE9E,KAAM,UAAWa,UAAWkE,IAC9B,CAAE/E,KAAM,iBAAkBa,UAAWmE,IACrC,CAAEhF,KAAM,IAAKa,UAAWoE,KAE5BhI,KAAM,UACNiI,eAlBsB,WAmBlB,MAAO,CAAEC,EAAG,EAAGC,EAAG,MChC1BpB,OAAIqB,OAAOC,eAAgB,EAG3B,IAAItB,OAAI,CACNtF,OAAQ,SAAA6G,GAAC,OAAIA,EAAEC,IACfC,GAAI,OACJC,UACAtE,WAAY,CAAEoE,OACdG,SAAU,WACTC,OAAO,S,uBCfV3J,EAAOD,QAAU,IAA0B,oC,uBCA3CC,EAAOD,QAAU,IAA0B,8B,8CCA3CC,EAAOD,QAAU,IAA0B,oC,qBCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,oC,qBCA3CC,EAAOD,QAAU,82B,gDCAjBC,EAAOD,QAAU,IAA0B,+B,oCCA3C,W,2DCAA,W,uBCAAC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,oC,uBCA3CC,EAAOD,QAAU,IAA0B,+B,gDCA3CC,EAAOD,QAAU,IAA0B,wB,qICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,MAAQ,6BAA6B,QAAU,aAAcF,IAChFC,GAELP,EAASS,OAAO,CAACX,EAAG,QAAQA,EAAG,IAAI,CAACQ,MAAM,CAAC,GAAK,UAAU,YAAY,YAAY,CAACR,EAAG,IAAI,CAACQ,MAAM,CAAC,GAAK,iBAAiB,CAACR,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,qfAAqf,YAAY,aAAaR,EAAG,OAAO,CAACK,YAAY,QAAQG,MAAM,CAAC,EAAI,ukB,8CCvBntBpD,EAAOD,QAAU,IAA0B,8B,2DCA3C,W,mBCAAC,EAAOD,QAAU,k8F,uBCAjBC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,6B,qICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,QAAU,YAAY,KAAO,OAAO,MAAQ,8BAA+BF,IAC9FC,GAELP,EAASS,OAAO,CAACX,EAAG,OAAO,CAACQ,MAAM,CAAC,YAAY,UAAU,YAAY,UAAU,EAAI,mbAAmb,KAAO,gB,uBCvBzhBpD,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,+B,sBCA3CC,EAAOD,QAAU,IAA0B,mC,yDCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,6B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,wC,mICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BF,IACnGC,GAELP,EAASS,OAAO,CAACX,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,sPAAsP,KAAO,gB,qBCvBhTpD,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,4B,mICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,MAAQ,KAAK,OAAS,KAAK,KAAO,OAAO,MAAQ,8BAA+BF,IACnGC,GAELP,EAASS,OAAO,CAACX,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,oSAAoS,KAAO,UAAUR,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,oNAAoN,KAAO,gB,qBCvBzlBpD,EAAOD,QAAU,IAA0B,iC,yDCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,8B,mICCrCC,EAAOD,QAAU,CACfyC,YAAY,EACZC,OAFe,SAERC,EAAIC,GACT,IAAQC,EAAgCD,EAAhCC,GAAQ3E,GAAwB0E,EAA5BE,GAA4BF,EAAxB1E,MAAhB,EAAwC0E,EAAlBG,gBAAtB,MAAiC,GAAjC,EAGSC,EAML9E,EANF+E,MACAC,EAKEhF,EALFgF,YACAC,EAIEjF,EAJFiF,MACAC,EAGElF,EAHFkF,YAJF,EAOIlF,EAFFmF,aALF,MAKU,GALV,EAMKC,EANL,EAOIpF,EAPJ,GASA,OAAO2E,EACL,MADO,GAGLI,MAAO,CAACD,EAAWE,GACnBC,MAAO,CAACA,EAAMC,GACdC,MAAO1E,OAAO4E,OAAO,CAAC,MAAQ,6BAA6B,QAAU,aAAcF,IAChFC,GAELP,EAASS,OAAO,CAACX,EAAG,OAAO,CAACQ,MAAM,CAAC,EAAI,kWAAkW,KAAO,OAAO,YAAY,mB,qBCvB/apD,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,4CCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,4B,4CCA3CC,EAAOD,QAAU,IAA0B,0C,qBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,uC,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,2C,qBCA3CC,EAAOD,QAAU,IAA0B,iC,mECA3CC,EAAOD,QAAU,IAA0B","file":"js/app.832866c3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAYAAAAAwr0iAAAACXBIWXMAAAsSAAALEgHS3X78AAAAzUlEQVRIx+2WwQ2DMBAE11EKoBNTgjsgHUAHtEAHtEAJ7sQpIR04HWw+EBARto88+NxIlpDl2xs/kM+QhARjTLKApJHk3XAxKqACKqACKqACKnDPvP0PALVwXhh2W57kMzVAJBeACQBPriGbnzswS3TCxm8AXVF2yaFZws3BueYvAHVx7m4jSQiB1trD5tZaxhhZwPZia0AJMUY2TfPTvG1blrKrlQks9H3/rRvHUVS77WkWi+WPkOC9R1VVcM5JR/v1+x+BsxwK6FtwBR9eNgQha8B33AAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/wireframes-rough.feedd735.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=0e6a4de4&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/colors.67cab4bd.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectArrows.vue?vue&type=style&index=0&id=0a2c1902&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/screens-11-19.6b031aba.png\";","var map = {\n\t\"./address.png\": \"681b\",\n\t\"./arrow.svg\": \"b94f\",\n\t\"./bio/CV.pdf\": \"2a96\",\n\t\"./bio/bio-image.jpg\": \"5d76\",\n\t\"./bio/cv.svg\": \"bd3a\",\n\t\"./bio/github.svg\": \"7e77\",\n\t\"./bio/linkedin.svg\": \"d06e\",\n\t\"./bio/mail.svg\": \"9d95\",\n\t\"./bio/ux.svg\": \"27fe\",\n\t\"./codesnippets/3vs1.png\": \"9493\",\n\t\"./codesnippets/code-versus.png\": \"3c01\",\n\t\"./codesnippets/column_expressions.png\": \"2bfe\",\n\t\"./codesnippets/concept.png\": \"258a\",\n\t\"./codesnippets/formulas04.jpg\": \"6b9d\",\n\t\"./codesnippets/variations-codesnippets.png\": \"4c49\",\n\t\"./esgehtlos/colors.png\": \"0c1d\",\n\t\"./esgehtlos/components.png\": \"28e5\",\n\t\"./esgehtlos/demo.png\": \"e999\",\n\t\"./esgehtlos/typo.png\": \"9f04\",\n\t\"./greenbox/greenbox_app2.png\": \"6269\",\n\t\"./greenbox/greenbox_app3.png\": \"d375\",\n\t\"./greenbox/greenbox_presentation.png\": \"e69e\",\n\t\"./greenbox/greenbox_v1.jpg\": \"a818\",\n\t\"./greenbox/greenbox_v2.jpg\": \"dbc0\",\n\t\"./knimehub/communities.png\": \"eec2\",\n\t\"./knimehub/front_page.jpg\": \"1c1b\",\n\t\"./knimehub/node-issues.png\": \"faf6\",\n\t\"./knimehub/quotes.png\": \"ceff\",\n\t\"./knimehub/screens-11-19.png\": \"0ff3\",\n\t\"./knimehub/wireframes-refined.png\": \"335e\",\n\t\"./knimehub/wireframes-rough.png\": \"084b\",\n\t\"./mechanics/mechanics.png\": \"840e\",\n\t\"./mechanics/mechanics_app.png\": \"a81f\",\n\t\"./mechanics/mechanics_interview.png\": \"b53d\",\n\t\"./mechanics/tools.png\": \"1854\",\n\t\"./mechanics/workflow.png\": \"9d89\",\n\t\"./pattern.png\": \"e3b3\",\n\t\"./phoenix/coverflow.mp4\": \"9be9\",\n\t\"./phoenix/mockup_ps.jpg\": \"5696\",\n\t\"./phoenix/paper_prototype.jpg\": \"5c1c\",\n\t\"./phoenix/phoenix_mp.jpg\": \"aa91\",\n\t\"./phoenix/shuffle_tooltip.png\": \"764f\",\n\t\"./phoenix/wireframe_ps_js.png\": \"656c\",\n\t\"./phone.png\": \"3547\",\n\t\"./querybuilder/concept.png\": \"babb\",\n\t\"./querybuilder/querybuilder.png\": \"c254\",\n\t\"./querybuilder/querybuilders.png\": \"e0cc\",\n\t\"./querybuilder/row-filter.png\": \"41fd\",\n\t\"./querybuilder/sql.png\": \"0cc3\",\n\t\"./querybuilder/variations.png\": \"79bb\",\n\t\"./scenariomanager/brainstorming-sideshot.jpg\": \"ef01\",\n\t\"./scenariomanager/mass-ass-slide.jpg\": \"ae40c\",\n\t\"./scenariomanager/project-plan.png\": \"f386\",\n\t\"./scenariomanager/snip-gif.mp4\": \"4251\",\n\t\"./scenariomanager/variants.jpg\": \"b211\",\n\t\"./thesis/adjustable-eyes.jpg\": \"6164\",\n\t\"./thesis/data-coll.png\": \"cf19\",\n\t\"./thesis/download.png\": \"05bc\",\n\t\"./thesis/eye.png\": \"1fdf\",\n\t\"./thesis/foveated-rendering.png\": \"ea1b\",\n\t\"./thesis/gnb.png\": \"7dfd\",\n\t\"./thesis/regX.png\": \"b98a\",\n\t\"./thesis/thesis.pdf\": \"729c\",\n\t\"./trafficticket/ticket1.jpeg\": \"d612\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"1771\";","module.exports = __webpack_public_path__ + \"img/tools.09370b15.png\";","module.exports = __webpack_public_path__ + \"img/front_page.6b948d2c.jpg\";","module.exports = __webpack_public_path__ + \"img/eye.aac1fa3e.png\";","module.exports = __webpack_public_path__ + \"img/concept.dda3c4ff.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('g',{attrs:{\"clip-path\":\"url(#clip0)\",\"fill\":\"#000\"}},[_c('path',{attrs:{\"d\":\"M32 9l-5.333 7.34L32 23.682h-6.592l-2.038-2.803-2.037 2.803h-6.592l3.296-4.536 5.334 1.733-3.297-4.537 3.296-4.537-5.333 1.733L14.741 9h6.592l2.038 2.804L25.407 9H32z\"}}),_c('path',{attrs:{\"d\":\"M14.74 9v5.608L9.408 16.34V9h5.334z\"}}),_c('path',{attrs:{\"d\":\"M5.333 9v10.145c0 1.733 2.037 1.733 2.037 1.733s2.038 0 2.038-1.733V16.34l5.333 1.733c0 5.607-7.37 5.607-7.37 5.607S0 23.681 0 18.074V9h5.333z\"}})]),_c('defs',[_c('clipPath',{attrs:{\"id\":\"clip0\"}},[_c('path',{attrs:{\"fill\":\"#fff\",\"d\":\"M0 0h32v32H0z\"}})])])])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/components.ffbc8992.png\";","module.exports = __webpack_public_path__ + \"assets/pdf/CV.f512dad1.pdf\";","module.exports = __webpack_public_path__ + \"img/column_expressions.4e3cf3b0.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Thesis.vue?vue&type=style&index=0&id=6a36c1f6&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WelcomeBanner.vue?vue&type=style&index=0&id=50d30512&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/wireframes-refined.5d42eb6b.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAAAPBAMAAABw7A4xAAAAMFBMVEVMaXEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEKlNcAAAAAD3RSTlMAESIzRFVmd4iZqrvM3e5GKvWZAAABgUlEQVQoz82RT07bQBSHPzvg8eBEygEi8AFK6gug+AjcwLlBLLGkUjhB8A3CBRDsuqkUwqqlAgsjsWADEZtQVUKJnRpo8KCxUaUeoFLfbt7oe/r9gX8+5mjpGUdFyPC1C59ZfWIlfmnW4qULFy7Dolt+36oUIwbqY+fSSURm34uU2oz2Ce1o82A9ah1jL5BXViYTKzMy4IMCAs/Mbd/8tRFyg4z00QFW2muKGcEeGyFfGxF5bQ7Gz31gAGcgJ4HHgHXfTvXbyMGemT/QwDf7XsxX7wC/DxzCF4Ty+y795ic6j0v3AZ6gHa0VKnQSkROrUCht8Q+AzErgmqPu1kkJGOfNzlguzFExcU6tBZ7MKqCSxFRLWplwg5iXkloJPY8HCLY7Id+BvAK06Y7PVJte2+MMMdOmjXOXwGOKOaUCjHdAx9oYy1TH+tGl528d6FhbCTSOZUr9knpi5aLrTCpAF2fGS18XtwtCPZfFDZXKyvW+hzkqQvH422Oo1N+t7/A/zBvn4qnBqLFqCgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/code-versus.04241d86.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Icon.vue?vue&type=style&index=0&id=e3651c6e&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/row-filter.8c9b9b08.png\";","module.exports = __webpack_public_path__ + \"media/snip-gif.befa8959.mp4\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LandingPage.vue?vue&type=style&index=0&id=2d51f0fc&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/variations-codesnippets.9d59f21a.png\";","module.exports = __webpack_public_path__ + \"img/mockup_ps.ab6d3908.jpg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Header'),_c('div',{attrs:{\"id\":\"content\"}},[_c('router-view')],1),_c('Footer')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"header\"}},[_c('div',{staticClass:\"responsive\",attrs:{\"id\":\"grid\"}},[_c('router-link',{staticClass:\"h6sans\",attrs:{\"id\":\"name\",\"to\":\"/\"}},[_vm._v(\" Johannes Schweig \")]),_c('router-link',{class:[\"h6sans\", {\"active\": _vm.projectRoutes.indexOf(_vm.$route.path) != -1 }],attrs:{\"id\":\"work\",\"to\":\"/\"}},[_vm._v(\" Work \")]),_c('router-link',{class:[\"h6sans\", {\"active\": _vm.$route.path === \"/about\"}],attrs:{\"id\":\"about\",\"to\":\"/about\"}},[_vm._v(\" About \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// data for the projects\nexport const projData = [\n {\n route: '/trafficticket',\n image: {\n src: 'trafficticket/ticket1.jpeg',\n alt: 'A parking ticket on a windshield'\n },\n name: 'Traffic ticket',\n slogan: 'Processing traffic tickets for a car rental',\n clients: ['MaibornWolff', 'Car rental company'],\n task: 'Project lead',\n date: 'Feb 2022-Jan 2023',\n active: true\n },\n {\n route: '/esgehtlos',\n image: {\n src: 'esgehtlos/demo.png',\n alt: 'Screen design for mobile web app'\n },\n name: 'Es geht los',\n slogan: 'More democracy with civic councils',\n clients: ['MaibornWolff', 'Demokratie Innovation e. V.'],\n task: 'UI Design',\n date: 'Jan-Feb 2022',\n active: true\n },\n {\n route: '/scenariomanager',\n image: {\n src: 'scenariomanager/brainstorming-sideshot.jpg',\n alt: 'Scenario Manager UI'\n },\n name: 'Scenario Manager',\n slogan: 'Helping financial decision makers in stormy times',\n clients: ['Valsight'],\n task: 'UX Research',\n date: 'Jan-Mar 2020',\n active: true // active projects are shown on the landing page, inactive ones are only accessible by route\n },\n {\n route: '/knimehub',\n image: {\n src: 'knimehub/front_page.jpg',\n alt: 'Screenshot of the landing page of KNIME hub'\n },\n name: 'KNIME Hub',\n slogan: 'Collaborative platform for data scientists',\n clients: ['KNIME'],\n task: 'UI/UX Design',\n date: '2018-2019',\n active: true\n },\n {\n route: '/greenbox',\n image: {\n src: 'greenbox/greenbox_app2.png',\n alt: 'Usability test of the greenbox app'\n },\n name: 'Greenbox',\n slogan: 'Turning people into urban gardeners',\n clients: ['Greenbox'],\n task: 'Usability evaluation',\n date: '2015',\n active: false\n },\n {\n route: '/phoenix',\n image: {\n src: 'phoenix/phoenix_mp.jpg',\n alt: 'Screenshot of phoenix application'\n },\n name: 'Phoenix',\n slogan: 'The musicplayer that knows what you want to hear',\n clients: ['Myself'],\n task: 'Design & Development',\n date: '2015-2017',\n active: false\n },\n {\n route: '/querybuilder',\n image: {\n src: 'querybuilder/querybuilder.png',\n alt: 'Graph representation of an SQL query'\n },\n name: 'Querybuilder',\n slogan: 'Finding the needle in the data haystack',\n clients: ['KNIME'],\n task: 'UI/UX Design',\n date: '2018',\n active: false\n },\n {\n route: '/codesnippets',\n image: {\n src: 'codesnippets/formulas04.jpg',\n alt: 'Screenshot of phoenix application'\n },\n name: 'Code snippets',\n slogan: 'Code snippets for faster data transformation',\n clients: ['KNIME'],\n task: 'UI/UX Design',\n date: '2017',\n active: false\n },\n {\n route: '/mechanics',\n image: {\n src: 'mechanics/mechanics.png',\n alt: 'Mechanic with helmet camera interacting with tablet'\n },\n name: 'Mechanics',\n slogan: 'Digitalizing the work of mechanics',\n clients: ['Condat'],\n task: 'Field test',\n date: '2015',\n active: false\n },\n {\n route: '/thesis',\n image: {\n src: 'thesis/adjustable-eyes.jpg',\n alt: 'Adjustable artificial eyes'\n },\n name: 'Thesis',\n slogan: 'How to make eye tracking more robust',\n clients: ['TU Berlin'],\n task: 'Master thesis',\n date: '2016-2017',\n active: false\n },\n]\n\n// only active routes (shown on landing page)\nexport const activeRoutes = projData.filter(e => e.active)\n\n// projectRoutes (all project routes with landing page)\nexport const projectRoutes = projData.map(e => e.route).concat(['/'])\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=5e2b32e6&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=js&\"\nexport * from \"./Header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=5e2b32e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e2b32e6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('div',{attrs:{\"id\":\"contact\"}},[_c('div',{staticClass:\"container\"},[_c('h3',[_vm._v(\"Get in touch\")]),_c('Icon',{attrs:{\"href\":\"https://linkedin.com/in/jschweig\",\"size\":_vm.windowWidth > 768 ? \"48\" : \"40\"}},[_c('LinkedInIcon')],1),_c('Icon',{attrs:{\"href\":\"mailto:hello@johannesschweig.de\",\"size\":_vm.windowWidth > 768 ? \"48\" : \"40\"}},[_c('MailIcon')],1)],1)]),_c('div',{attrs:{\"id\":\"legal\"}},[_c('router-link',{staticClass:\"link body1\",attrs:{\"to\":\"/legal\",\"id\":\"legal\"}},[_vm._v(\" Legal / Impressum \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:{\"with-text\": _vm.text },style:(_vm.cssVars),attrs:{\"href\":_vm.href}},[_vm._t(\"default\"),(_vm.text)?_c('div',{staticClass:\"text\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Icon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Icon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Icon.vue?vue&type=template&id=e3651c6e&scoped=true&\"\nimport script from \"./Icon.vue?vue&type=script&lang=js&\"\nexport * from \"./Icon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Icon.vue?vue&type=style&index=0&id=e3651c6e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3651c6e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=0e6a4de4&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=0e6a4de4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e6a4de4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5076d278&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"about\"}},[_c('div',{staticClass:\"responsive\"},[_c('img',{attrs:{\"src\":require(\"../../assets/bio/bio-image.jpg\")}}),_c('div',{staticClass:\"body1\",attrs:{\"id\":\"text\"}},[_c('h4',[_vm._v(\"About me\")]),_c('p',[_vm._v(\"I am a UX Designer with 6 years of experience in building digital products. I am always eager to learn new things and to educate my team on cool new methods I found. I love to code small projects (such as this website) in my free time and also enjoy to drill into data (e.g. google analytics) to gain user insights. Even though I have very broad interests, my passion belongs to tailoring digital products to user needs.\")]),_c('h5',[_vm._v(\"Things I believe in\")]),_c('h6',[_vm._v(\"💎 Rigorous prioritization\")]),_c('p',[_vm._v(\"There will always be more to do than you have time for. Prioritization makes sure that you will have the maximum impact for the limited resources you are provided.\")]),_c('h6',[_vm._v(\"⚙️ Incremental changes\")]),_c('p',[_vm._v(\"You can learn faster what works and what does not which is crucial in fast moving environments.\")]),_c('h6',[_vm._v(\"💬 Strong feedback cultures\")]),_c('p',[_vm._v(\"Everyone makes mistakes and to acknowledge them means to grow in your role and as a person.\")]),_vm._m(0),_c('p'),_c('div',{staticClass:\"icons\"},[_c('Icon',{attrs:{\"size\":\"32\",\"text\":\"Resume\",\"href\":require(\"../../assets/bio/CV.pdf\")}},[_c('CvIcon')],1),_c('Icon',{attrs:{\"size\":\"32\",\"text\":\"ux.stackexchange\",\"href\":\"https://ux.stackexchange.com/users/110814/nash\"}},[_c('UxIcon')],1),_c('Icon',{attrs:{\"size\":\"32\",\"text\":\"GitHub\",\"href\":\"https://github.com/johannesschweig\"}},[_c('GhIcon')],1)],1)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Currently, I am working as a Senior IT Consultant for \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://www.maibornwolff.de/\"}},[_vm._v(\"MaibornWolff\")]),_vm._v(\".\")])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=71f764a6&scoped=true&\"\nimport script from \"./About.vue?vue&type=script&lang=js&\"\nexport * from \"./About.vue?vue&type=script&lang=js&\"\nimport style0 from \"./About.vue?vue&type=style&index=0&id=71f764a6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71f764a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/codesnippets\"}}),_c('div',{staticClass:\"responsive\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I designed an interface where users can input multiple \\\"code snippets\\\" to transform their data.\")]),_c('h4',[_vm._v(\"Problem\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/codesnippets/3vs1.png\"),\"alt\":\"Combine three nodes into one\"}}),_c('p',[_vm._v(\"A project I worked on for KNIME was to create an interface for a node (KNIME term for encapsulated functionality) where users can create small code snippets to manipulate data. For example, users might want to create a column with the mean of three other columns or cut the surname of a \\\"name surname\\\" formatted column. Previously, this was possible with a String Manipulation node for Strings, a Math Formula node for numerical data and a Rule Engine node for conditions. But what if you needed to alter Strings based on conditions? Then it gets complicated. The new node should make it easier for users to create more complex logic.\")]),_c('h4',[_vm._v(\"Research\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/codesnippets/code-versus.png\"),\"alt\":\"Use of space in the String Manipulation interface\"}}),_c('p',[_vm._v(\"I analyzed the current UI and interaction of the already existing nodes and found out that they had several disadvantages:\")]),_vm._m(0),_c('h4',[_vm._v(\"Concept\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/codesnippets/variations-codesnippets.png\"),\"alt\":\"Two concepts for the code editor: Columns, variables and functions in dropdowns (left) or in a tabbed interface (right)\"}}),_c('p',[_vm._v(\"I improved on these with a design that put the code textfield with a large amount of space in the center of attention. Adding columns, variables and functions was now one click away but this saved precious screen real estate. I also added a small \\\"evaluate\\\" functionality that would check your code on the first row of your data so you could iteratively improve your code snippet without having to run it on your entire data each time. On the top an overview of all the code snippets was presented and you could add more code snippets or alter existing ones. The UI for the code editor was designed to make it reusable in other nodes (e.g. filtering rows according to a code snippet with a boolean statement).\")]),_c('h4',[_vm._v(\"Evaluation\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/codesnippets/concept.png\"),\"alt\":\"Final UI concept\"}}),_vm._m(1),_c('p',[_vm._v(\"In the design, however, there is - as always - still room for improvement. The emancipated display of the upper \\\"overview\\\" and the lower \\\"code editor\\\" component does not make it entirely clear that a selection of a code snippet in the \\\"overview\\\" component would change the display in the \\\"code editor\\\" component. This drawback was however favored over a dialog-in-a-dialog design.\")]),_c('p',[_vm._v(\"Also, the design could guide new users better on how to start. They are presented with a blank textfield and a variety of UI components (much like opening a terminal for the first time). The functions which are the core of writing your snippet are hidden behind a dropdown. The aim of the design, however, was to create a good experience for experienced users who want to optimize their data manipulation workflows.\")]),_c('p',[_vm._v(\"On the whole, I am very content with the process and outcome of this project. I was involved from the research phase over the conceptual phase to the implementation and even helped with programming parts of the \\\"code editor\\\" component. Also, the feedback from the community shows that the hours you invest in research and ideation really pay off in the end.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/codesnippets/column_expressions.png\"),\"alt\":\"User interface as of KNIME Analytics Platform v3.7.1\"}})],1),_c('project-arrows',{attrs:{\"route\":\"/codesnippets\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"They were making poor use of space. UI components were getting a lot of space even though they were not as important as others (see image above).\")]),_c('li',[_vm._v(\"Checking if your piece of code was correct could only be done by running the node on all your available data. Depending on the amount of data this could take a while. When you realize then that the \\\"+1\\\" in your code should really have been a \\\"-1\\\" you have to change it and run it again. Seemed too tedious.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"The overall reception was positive. Forum users as well as colleagues gave very enthusiastic feedback on the new functionality. One user even wrote a blogpost about the node calling it \"),_c('a',{attrs:{\"href\":\"https://blog.statinfer.com/knime-multitasking-with-column-expressions-node/\"}},[_vm._v(\"\\\"The Swiss Army Knife\\\"\")]),_vm._v(\".\")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive\",attrs:{\"id\":\"project-header\"}},[_c('div',{attrs:{\"id\":\"name-container\"}},[_c('div',{staticClass:\"subtitle1\"},[_vm._v(_vm._s(_vm.project.name))]),_c('h2',[_vm._v(_vm._s(_vm.project.slogan))])]),_c('div',{attrs:{\"id\":\"heading-container\"}},[_c('div',{staticClass:\"subtitle1\"},[_vm._v(\" Client \")]),_c('h5',_vm._l((_vm.project.clients),function(c){return _c('div',{key:c},[_vm._v(\" \"+_vm._s(c)+\" \")])}),0),_c('div',{staticClass:\"subtitle1\"},[_vm._v(\" Task \")]),_c('h5',[_vm._v(_vm._s(_vm.project.task))]),_c('div',{staticClass:\"subtitle1\"},[_vm._v(\" Timeline \")]),_c('h5',[_vm._v(_vm._s(_vm.project.date))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectHeader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectHeader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProjectHeader.vue?vue&type=template&id=664fedb4&scoped=true&\"\nimport script from \"./ProjectHeader.vue?vue&type=script&lang=js&\"\nexport * from \"./ProjectHeader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProjectHeader.vue?vue&type=style&index=0&id=664fedb4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"664fedb4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"container\"}},[(!_vm.isVideo())?_c('img',{class:[\"img-md\", { \"shadow\": _vm.shadow }],attrs:{\"src\":_vm.src,\"alt\":_vm.alt}}):_vm._e(),(_vm.isVideo())?_c('video',{class:[\"img-md\", { \"shadow\": _vm.shadow }],attrs:{\"autoplay\":\"\",\"muted\":\"\",\"loop\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":_vm.src,\"type\":\"video/mp4\"}}),_vm._v(\" Your browser does not support the video tag. \")]):_vm._e(),_c('div',{staticClass:\"body2\"},[_vm._v(_vm._s(_vm.alt))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyledImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyledImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./StyledImage.vue?vue&type=template&id=21430c51&scoped=true&\"\nimport script from \"./StyledImage.vue?vue&type=script&lang=js&\"\nexport * from \"./StyledImage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./StyledImage.vue?vue&type=style&index=0&id=21430c51&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21430c51\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive\",attrs:{\"id\":\"projectArrows\"}},[_c('router-link',{staticClass:\"previous\",attrs:{\"to\":_vm.previousProject.route}},[_c('Arrow'),_c('span',[_vm._v(\"Previous project: \"+_vm._s(_vm.previousProject.name))])],1),_c('div',{staticClass:\"flex-grow\"}),_c('router-link',{staticClass:\"next\",attrs:{\"to\":_vm.nextProject.route}},[_c('span',[_vm._v(\"Next project: \"+_vm._s(_vm.nextProject.name))]),_c('Arrow')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { projData, activeRoutes } from './projects.js'\n\n// returns the name of the project from a route (e.g. '/phoenix' -> Phoenix)\nexport function getProjectNameFromRoute(route) {\n // remove trailing /\n if (route !== '/' & route.slice(-1) === '/') {\n route = route.slice(0, -1)\n }\n // check for known routes\n let names = projData.filter(obj => obj.route === route)\n if (names.length) {\n return names[0]\n } else {\n // for 404 routes\n return '404'\n }\n}\n\n// returns a correct modulo\nfunction getMod(i, j) {\n return ((i % j) + j) % j\n}\n\n// returns the route and name of the previous and the next project\nexport function getPreviousNextProjects(route) {\n // find index of current project\n // by default found is the last project (e.g. inactive ones)\n let found = activeRoutes.length;\n for (let i = 0; i < activeRoutes.length; i++) {\n if (activeRoutes[i].route == route) {\n found = i\n break\n }\n }\n let previous = getMod(found - 1, activeRoutes.length)\n let next = getMod(found + 1, activeRoutes.length)\n \n return {\n previous: activeRoutes[previous],\n next: activeRoutes[next]\n }\n}\n\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectArrows.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectArrows.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProjectArrows.vue?vue&type=template&id=0a2c1902&scoped=true&\"\nimport script from \"./ProjectArrows.vue?vue&type=script&lang=js&\"\nexport * from \"./ProjectArrows.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProjectArrows.vue?vue&type=style&index=0&id=0a2c1902&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a2c1902\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeSnippets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeSnippets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeSnippets.vue?vue&type=template&id=6d9c1a17&\"\nimport script from \"./CodeSnippets.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeSnippets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/esgehtlos\"}}),_c('div',{staticClass:\"responsive body1\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I helped to build a product that helps a NGO to organize their citizen councils. One of the big features was a feedback flow for citizens to respond to an invitation for a council and mention their needs.\")]),_c('h4',[_vm._v(\"Problem statement\")]),_c('p',[_vm._v(\"Es geht los organizes citizen councils and has to manage all the candidates that they reached out to and their special needs (e.g. child care, mobility impairments). As there are many people involved it is hard to keep track of all the candidates without a proper tool. Our goal was to build such a tool to help them with keeping track of the candidates, perform statistically sound drawings, organize their agents and collect feedback from their candidates online.\")]),_c('h4',[_vm._v(\"Visual identity\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/esgehtlos/colors.png\"),\"alt\":\"Color palette. New colors are highlighted.\"}}),_vm._m(0),_c('styled-image',{attrs:{\"shadow\":false,\"src\":require(\"../../assets/esgehtlos/typo.png\"),\"alt\":\"Typography scale\"}}),_c('styled-image',{attrs:{\"shadow\":false,\"src\":require(\"../../assets/esgehtlos/components.png\"),\"alt\":\"Components in different states\"}}),_c('h4',[_vm._v(\"Prototype \\\"Feedback flow\\\"\")]),_c('p',[_vm._v(\"In this click prototype (German only) you can see the screens that a candidate goes through after being chosen for a citizen council. The candidate can tick special needs, accept or decline the invitation and give feedback to Es geht los.\")]),_c('iframe',{staticStyle:{\"border\":\"1px solid rgba(0, 0, 0, 0.1)\"},attrs:{\"width\":\"500\",\"height\":\"800\",\"src\":\"https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Fproto%2FzGG70JdPaHszpgRP3uaXGb%2Fegl-portfolio%3Fnode-id%3D7%253A698%26viewport%3D241%252C48%252C0.11%26scaling%3Dscale-down%26page-id%3D0%253A1%26starting-point-node-id%3D7%253A698\",\"allowfullscreen\":\"\"}}),_c('p',[_vm._v(\"Click on the grey background and then restart (R) to restart the prototype.\")]),_c('h4',[_vm._v(\"Clients\")]),_vm._m(1)],1),_c('project-arrows',{attrs:{\"route\":\"/esgehtlos\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"I expanded the existing visual identity (called \\\"Giulia\\\") to address all the needs of a web application. I expanded the color palette, set up a system for typography based on their existing typefaces and created the first components (buttons, checkboxes, textfields). I tailored the system to the CSS framework \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://tailwindcss.com/\"}},[_vm._v(\"Tailwind\")]),_vm._v(\" which we used in development.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://www.esgehtlos.org/\"}},[_vm._v(\"Es geht los\")]),_vm._v(\" is a German NGO and non-partisan think & do tank by Demokratie Innovation e.V. for lot-based (\\\"losbasiert\\\") citizen participation. They organize citizen councils on a local, national level and for public institutions. \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://www.maibornwolff.de/\"}},[_vm._v(\"MaibornWolff\")]),_vm._v(\" offers consulting and software engineering for ambitious IT projects. I was staffed as the UI Designer in a Digital Garage project by MaibornWolff for Demokartie Innovation e.V..\")])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EsGehtLos.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EsGehtLos.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EsGehtLos.vue?vue&type=template&id=4c1df534&\"\nimport script from \"./EsGehtLos.vue?vue&type=script&lang=js&\"\nexport * from \"./EsGehtLos.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/greenbox\"}}),_c('div',{staticClass:\"responsive\",attrs:{\"id\":\"greenbox\"}},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"As part of a university course a design team and a UX research team helped a startup to improve their gardening app. I contributed with planning, conducting and evaluating usability tests as part of the UX research team (3 persons in total).\")]),_c('h4',[_vm._v(\"Problem\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/greenbox/greenbox_v1.jpg\"),\"alt\":\"First version of the gardening app\"}}),_vm._m(0),_vm._m(1),_c('h4',[_vm._v(\"First usability test (my team)\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/greenbox/greenbox_app3.png\"),\"alt\":\"Usability test with the gardening app\"}}),_c('p',[_vm._v(\"In a first usability test participants were introduced to the app with a scenario and asked to perform several tasks while thinking aloud. We recorded the participant's interactions with the application with a camera and evaluated them later. The participants answered two questionnaires (QUESI, meCUE) rating the intuitiveness and the overall impression of the product. Additionally, the team conducted a heuristic analysis (following Jakob Nielsen) to identify usability problems. The insights generated from these methods were condensed and forwarded to the design team.\")]),_c('h4',[_vm._v(\"Redesign (design team)\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/greenbox/greenbox_v2.jpg\"),\"alt\":\"Redesigned version of the gardening app\"}}),_c('p',[_vm._v(\"The design team used the collected insights from the testing and the heuristic analysis to produce a redesigned version of the app.\")]),_c('h4',[_vm._v(\"Second usability test (my team)\")]),_c('p',[_vm._v(\"In a second usability test the redesigned version was evaluated and the results compared to the results of the first version. The same methods were used as in the first usability test to allow for better comparison. Users experienced less problems with the redesigned version and rated it also higher on all scales of the questionnaires.\")]),_c('h4',[_vm._v(\"Reflection\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/greenbox/greenbox_presentation.png\"),\"alt\":\"Final presentation Greenbox\"}}),_c('p',[_vm._v(\"During this project I learnt a lot about the design, conduction and evaluation of usability tests. Experiencing that the insights generated through our group's work were of great use for the startup was a big motivational factor. The cooperation and communication between the design team, the UX research team and the startup was challenging, but rewarded us with different perspectives and insights in the process.\")]),_c('h4',[_vm._v(\"Testimonial (german)\")]),_c('p',[_vm._v(\"\\\"Wir entwickeln momentan eine Smartphone-App und haben uns bei UseTree beworben, weil wir die Abfolge von Bedienschritten für eine innovative Anwendung evaluieren lassen wollten. Daneben war es uns wichtig, herauszufinden, inwieweit wir die Balance zwischen einer spielerischen Bedienung und einem seriösen Design hinbekommen. Das Zusammenspiel von Arbeitspsychologen und Designern im sogenannten Staffellauf, bei dem beide Seiten abwechselnd dieselbe Fragestellung bearbeiten, haben wir als sehr bereichernd und konstruktiv empfunden. Durch die Teilnahme wurde unser Blick für Usability-Fragestellungen maßgeblich geschärft. Zudem haben wir Tools an die Hand bekommen, um diese Fragen zukünftig inhouse weiter bearbeiten zu können. Das Designteam begeisterte uns mit kreativen und hochwertigen Vorschlägen, die wir direkt in die Weiterentwicklung aufnehmen. Nicht zuletzt war ich von der engagierten und offenen Art von UseTree angetan und empfand die Zusammenarbeit als sehr inspierierend.\\\" - Gesche Heitmann (Gründerin)\")])],1),_c('project-arrows',{attrs:{\"route\":\"/greenbox\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Grüner Daumen\")]),_vm._v(\" (\\\"Green thumb\\\") is an upcoming gardening app that is designed to inspire and support users with their plant care. The client had questions regarding the usability and design of their application:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Is the workflow in agreement with the users' expectations?\")]),_c('li',[_vm._v(\"Does the app feel inutitive and easy to use?\")]),_c('li',[_vm._v(\"Do users perceive the app as playful and yet legitimate?\")])])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Greenbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Greenbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Greenbox.vue?vue&type=template&id=559d5905&\"\nimport script from \"./Greenbox.vue?vue&type=script&lang=js&\"\nexport * from \"./Greenbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/knimehub\"}}),_c('div',{staticClass:\"responsive body1\",attrs:{\"id\":\"knimehub\"}},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I helped to build a website where data scientists can read up on existing functionality of the desktop application. This website also enables them to share and collaborate on data analysis projects.\")]),_c('h4',[_vm._v(\"Introduction\")]),_c('p',[_vm._v(\"KNIME develops a data science software which lets users create data analysis workflows with small blocks called \\\"nodes\\\" in a graphical programming paradigm. The community is big and vibrant and we wanted to give users a platform where they can help each other out and work together on general purpose solutions for common data science problems (e.g. churn prediction, anomaly detection). As the UX Designer on the team I was given the task to create a first prototype for the information architecture and the interaction design.\")]),_c('h4',[_vm._v(\"User and task analysis\")]),_c('p',[_vm._v(\"At first I wanted to find out users shared and collaborated with already existing tools. I interviewed 9 internal data scientists on their usage of similar products. I was especially interested in how they make their own work understandable to others and what helps them to understand other people's work (e.g. text descriptions, screenshots, oral explanations, visual cues).\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/quotes.png\"),\"alt\":\"Quotes from the interviews\",\"shadow\":false}}),_c('p',[_vm._v(\"From this research I identified challenges that were only poorly addressed by existing solutions. For example, a big challenge for users was the first time they try to use a new node. Sometimes the user did not know what the node could do, sometimes they were not sure how to set it up and sometimes they tried it out and it did not work the way they expected it to.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/node-issues.png\"),\"alt\":\"User challenges with nodes\",\"shadow\":false}}),_c('p',[_vm._v(\"With these challenges in mind we decided on what user stories to focus and defined the most important features for the KNIME Hub:\")]),_vm._m(0),_c('h4',[_vm._v(\"Screen design\")]),_c('p',[_vm._v(\"In this phase I ranked the content in importance and separated it onto different screens. I drew inspiration from online-communities where users share their content with others (node-red, chefkoch, youtube, soundcloud).\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/communities.png\"),\"alt\":\"Node-RED: a similar online community\"}}),_c('p',[_vm._v(\"I created four pages: A landing page with search, a search results page, a page for nodes and one for workflows. I created links between the pages which should help the users to find what they need.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/wireframes-rough.png\"),\"alt\":\"First wireframes\"}}),_c('p',[_vm._v(\"The first version of the wireframes were discussed in the team and additional content was added. In a second iteration I aimed for higher fidelity in the wireframes and focused more on the layout of the pages. This second version was used for communication to internal stakeholders.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/wireframes-refined.png\"),\"alt\":\"Second, more refined wireframes\"}}),_c('h4',[_vm._v(\"Final visual design and building\")]),_c('p',[_vm._v(\"The final visual design was done by an external designer. I supported the development team during the building process and contributed by taking over small frontend tasks.\")]),_c('h4',[_vm._v(\"Launch\")]),_c('p',[_vm._v(\"The KNIME Hub was released and opened to the public during the KNIME Summit in March 2019. Since then it has received great interest and a growing community of active users. From March until October I assisted in the further development of features such as a deeper integration to the desktop application.\")]),_vm._m(1),_c('styled-image',{attrs:{\"src\":require(\"../../assets/knimehub/screens-11-19.png\"),\"alt\":\"Screens of the application as of Nov. 19\"}})],1),_c('project-arrows',{attrs:{\"route\":\"/knimehub\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Search for nodes: Users can search for nodes and determine if they are a good fit for their data science problem.\")]),_c('li',[_vm._v(\"Search for workflow: Users can search for example workflows that explain a specific data science problem.\")]),_c('li',[_vm._v(\"Install nodes: When users have found the right node, they can install it easily by drag-n-dropping it into the desktop application.\")]),_c('li',[_vm._v(\"Link nodes/workflows: Users can share links of node and workflow pages to provide other users with a nice way of referencing functionality in the desktop application.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Check it out at \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://hub.knime.com\"}},[_vm._v(\"hub.knime.com\")]),_vm._v(\".\")])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KnimeHub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./KnimeHub.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KnimeHub.vue?vue&type=template&id=a15827aa&\"\nimport script from \"./KnimeHub.vue?vue&type=script&lang=js&\"\nexport * from \"./KnimeHub.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('WelcomeBanner'),_c('div',{staticClass:\"responsive\",attrs:{\"id\":\"projects\"}},_vm._l((_vm.activeRoutes),function(e){return _c('ProjectPreview',{key:e.id,attrs:{\"projProps\":e}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-link',{staticClass:\"tile\",attrs:{\"to\":_vm.projProps.route}},[_c('div',{staticClass:\"img-container\"},[_c('img',{attrs:{\"src\":_vm.buildImgUrl(_vm.projProps.image.src),\"alt\":_vm.projProps.image.alt}})]),_c('div',{staticClass:\"text\"},[_c('div',{staticClass:\"h5sans\"},[_vm._v(_vm._s(_vm.projProps.slogan))]),_c('div',{staticClass:\"body1\"},[_vm._v(_vm._s(_vm.projProps.task))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPreview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProjectPreview.vue?vue&type=template&id=9ccefd46&scoped=true&\"\nimport script from \"./ProjectPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ProjectPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProjectPreview.vue?vue&type=style&index=0&id=9ccefd46&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9ccefd46\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h3',{staticClass:\"responsive\"},[_vm._v(\" Hi,\"),_c('br'),_vm._v(\" I am Johannes, a UX Designer based in Berlin, and this is my work. \")])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./WelcomeBanner.vue?vue&type=template&id=50d30512&scoped=true&\"\nvar script = {}\nimport style0 from \"./WelcomeBanner.vue?vue&type=style&index=0&id=50d30512&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50d30512\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LandingPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LandingPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LandingPage.vue?vue&type=template&id=2d51f0fc&scoped=true&\"\nimport script from \"./LandingPage.vue?vue&type=script&lang=js&\"\nexport * from \"./LandingPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LandingPage.vue?vue&type=style&index=0&id=2d51f0fc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d51f0fc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive body2\",attrs:{\"id\":\"content\"}},[_c('h5',[_vm._v(\"Legal Disclosure\")]),_c('p',[_vm._v(\"Information in accordance with section 5 TMG\")]),_vm._m(0),_c('h6',[_vm._v(\"Contact\")]),_vm._m(1),_vm._m(2),_vm._m(3),_c('h6',[_vm._v(\"Person responsible for content in accordance with 55 Abs. 2 RStV\")]),_vm._m(4),_c('h6',[_vm._v(\"Indication of source for images and graphics\")]),_c('ul',_vm._l((_vm.sources),function(s){return _c('li',{key:s.title},[_vm._v(\" \"+_vm._s(s.title)+\" by \"+_vm._s(s.author)+\" from \"+_vm._s(s.platform)+\", license: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":s.licenseLink}},[_vm._v(_vm._s(s.licenseName))]),_vm._v(\", source: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":s.sourceLink}},[_vm._v(\"link\")])])}),0),_c('h6',[_vm._v(\"Disclaimer\")]),_vm._m(5),_vm._m(6),_vm._m(7),_vm._m(8),_c('h5',[_vm._v(\"Impressum\")]),_c('p',[_vm._v(\"Angaben gemäß § 5 TMG\")]),_vm._m(9),_c('h6',[_vm._v(\"Kontakt\")]),_vm._m(10),_vm._m(11),_vm._m(12),_c('h6',[_vm._v(\"Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV\")]),_vm._m(13),_c('h6',[_vm._v(\"Quellenangaben für die verwendeten Bilder und Grafiken\")]),_c('ul',_vm._l((_vm.sources),function(s){return _c('li',{key:s.title},[_vm._v(\" \"+_vm._s(s.title)+\" von \"+_vm._s(s.author)+\" von \"+_vm._s(s.platform)+\", Lizenz: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":s.licenseLink}},[_vm._v(_vm._s(s.licenseName))]),_vm._v(\", Quelle: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":s.sourceLink}},[_vm._v(\"Link\")])])}),0),_c('h6',[_vm._v(\"Haftungsausschluss\")]),_vm._m(14),_vm._m(15),_vm._m(16),_vm._m(17)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Johannes Schweig, \"),_c('img',{attrs:{\"src\":require(\"../../assets/address.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Telephone: \"),_c('img',{attrs:{\"src\":require(\"../../assets/phone.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"E-Mail: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"mailto:hello@johannesschweig.de\"}},[_vm._v(\"hello@johannesschweig.de\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Internetadresse: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"http://www.johannesschweig.de\"}},[_vm._v(\"www.johannesschweig.de\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Johannes Schweig, \"),_c('img',{attrs:{\"src\":require(\"../../assets/address.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Accountability for content: \")]),_vm._v(\" The contents of our pages have been created with the utmost care. However, we cannot guarantee the contents' accuracy, completeness or topicality. According to statutory provisions, we are furthermore responsible for our own content on these web pages. In this context, please note that we are accordingly not obliged to monitor merely the transmitted or saved information of third parties, or investigate circumstances pointing to illegal activity. Our obligations to remove or block the use of information under generally applicable laws remain unaffected by this as per §§ 8 to 10 of the Telemedia Act (TMG).\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Accountability for links: \")]),_vm._v(\"Responsibility for the content of external links (to web pages of third parties) lies solely with the operators of the linked pages. No violations were evident to us at the time of linking. Should any legal infringement become known to us, we will remove the respective link immediately.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Copyright: \")]),_vm._v(\"Our web pages and their contents are subject to German copyright law. Unless expressly permitted by law (§ 44a et seq. of the copyright law), every form of utilizing, reproducing or processing works subject to copyright protection on our web pages requires the prior consent of the respective owner of the rights. Individual reproductions of a work are allowed only for private use, so must not serve either directly or indirectly for earnings. Unauthorized utilization of copyrighted works is punishable (§ 106 of the copyright law).\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Quelle: \")]),_c('a',{staticClass:\"link\",attrs:{\"href\":\"http://www.muster-vorlagen.net\"}},[_vm._v(\"http://www.muster-vorlagen.net\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Johannes Schweig, \"),_c('img',{attrs:{\"src\":require(\"../../assets/address.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Telefon: \"),_c('img',{attrs:{\"src\":require(\"../../assets/phone.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"E-Mail: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"mailto:hello@johannesschweig.de\"}},[_vm._v(\"hello@johannesschweig.de\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Internetadresse: \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"http://www.johannesschweig.de\"}},[_vm._v(\"www.johannesschweig.de\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Johannes Schweig, \"),_c('img',{attrs:{\"src\":require(\"../../assets/address.png\"),\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Haftung für Inhalte: \")]),_vm._v(\"Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Haftung für Links: \")]),_vm._v(\"Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Urheberrecht: \")]),_vm._v(\"Die durch die Seitenbetreiber erstellten bzw. verwendeten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('i',[_vm._v(\"Quelle: \")]),_c('a',{staticClass:\"link\",attrs:{\"href\":\"http://www.muster-vorlagen.net\"}},[_vm._v(\"http://www.muster-vorlagen.net\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Legal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Legal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Legal.vue?vue&type=template&id=e3359912&scoped=true&\"\nimport script from \"./Legal.vue?vue&type=script&lang=js&\"\nexport * from \"./Legal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Legal.vue?vue&type=style&index=0&id=e3359912&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3359912\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/mechanics\"}}),_c('div',{staticClass:\"responsive\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"During my work for UseTree we tested the usability of an application with maintenance workers. The aim of the application is to allow for easy and sustainable transfer of knowledge.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/mechanics/mechanics_app.png\"),\"alt\":\"Tablet with app and engine\"}}),_c('h4',[_vm._v(\"Origin\")]),_c('p',[_vm._v(\"Our client developed an app that should help mechanics with the repair of subway engines. Mechanics can view different material (photo, video,...) on the repair procedure of an engine and even record video themselves. The leading question was if the application provided substantial help for the work of the mechanics.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/mechanics/mechanics_interview.png\"),\"alt\":\"On-the-job interview with mechanic\"}}),_c('h4',[_vm._v(\"Field usability test\")]),_c('p',[_vm._v(\"During a field test at a repair shop I conducted testings with two mechanics each lasting one hour. The test included a exploration phase of the application and an interview afterwards. The test focused on the future use case of the application and was aimed to generate insights into the work processes and the integration of the application in these processes. It was set in a challenging environment: Limited time of the worker, loud noises in the repair shop, sparse familiarity with usability testing of the worker.\")]),_c('h4',[_vm._v(\"Lab usability test\")]),_c('p',[_vm._v(\"An additional test in a usability lab focused on the usability aspects of the application. Four students participated in this study.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/mechanics/workflow.png\"),\"alt\":\"Diagram of the application's workflow\"}}),_c('h4',[_vm._v(\"Evaluation\")]),_c('p',[_vm._v(\"The client was involved in all stages of test conduction and evaluation. This imparted basic usability competencies to the client and was aimed to integrate user-centered design in the client's workflow. The evaluation of the two tests generated valuable insights for the future development of the application. Several problems were identified regarding the integration of the app at the workplace and new ideas could be collected on how to achieve such an integration in a sustainable manner. The usability test unveiled room for improvement of the ease of use.\")]),_c('h4',[_vm._v(\"Reflection\")]),_c('p',[_vm._v(\"I carried out a majority of the field test planning and was the on-site examiner. Thus, I learnt a lot about the internal work processes of the mechanics in the repair shop. This project enhanced my knowledge of usability test design as the field test was set in a challenging environment. Finally, I learnt how to condense knowledge about the work situation, context of use and the functionality of the application to create a vision of a use case of maximum benefit.\")]),_c('h4',[_vm._v(\"Testimonial (german)\")]),_c('p',[_vm._v(\"\\\"Mit Hilfe von UseTree konnten wir das Usability-Konzept unserer Anwendung erfolgreich überprüfen und optimieren. UseTree lieferte wertvolle Hinweise und Verbesserungsansätze und überzeugte uns durch eine professionelle Arbeitsweise und ein hohes Maß an Kreativität. Wir können UseTree als Dienstleister uneingeschränkt weiterempfehlen und freuen uns auf künftige gemeinsame Projekte.\\\" - André Fiedler (Projektleiter)\")])],1),_c('project-arrows',{attrs:{\"route\":\"/mechanics\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mechanics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mechanics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Mechanics.vue?vue&type=template&id=e04c4390&\"\nimport script from \"./Mechanics.vue?vue&type=script&lang=js&\"\nexport * from \"./Mechanics.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive\",attrs:{\"id\":\"PageNotFound\"}},[_c('h1',[_vm._v(\"404\")]),_c('p',[_vm._v(\"This page could not be found.\")]),_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"Back to Homepage\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PageNotFound.vue?vue&type=template&id=af73ad34&scoped=true&\"\nvar script = {}\nimport style0 from \"./PageNotFound.vue?vue&type=style&index=0&id=af73ad34&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"af73ad34\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/phoenix\"}}),_c('div',{staticClass:\"responsive\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"In my free time I programmed a music player and expanded on it over the years. I learnt a lot about User-Centered Design, software engineering and making use of stackoverflow.\")]),_c('h4',[_vm._v(\"Problem\")]),_c('p',[_vm._v(\"I was faced with the challenge of still having a lot of mp3s lying around but no suitable software to play and manage them. As streaming services such as Spotify take over traditional music players have shifted their focus (iTunes) or were abandoned all together (Winamp). So I decided to built a desktop music player suited for my own needs.\")]),_c('h4',[_vm._v(\"Research\")]),_c('p',[_vm._v(\"I tried to specify the context of use and the requirements for the music playing application. I identified the following:\")]),_vm._m(0),_c('p',[_vm._v(\"After that, I studied competing products: iTunes, Winamp, MediaMonkey and Windows Media Player. In what way did they fulfill their goals? What are their shortcomings? All of these applications provide a lot of functionality (playlists, file management, tag writing, equalizer and additional settings) and the user is generally expected to actively cue in his/her songs (except Genius-playlists by iTunes). A lot of space in the user interfaces of these applications is taken up by toolbars, menus, cover previews and large context menus. Also, old UI concepts are still in use such as the tree view navigation. Colors and style are mainly aimed to transport the corporate identity of the manufacturing company (WMP by windows, iTunes by apple).\")]),_c('h4',[_vm._v(\"Prototyping\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/phoenix/paper_prototype.jpg\"),\"alt\":\"UI concept on paper\"}}),_c('p',[_vm._v(\"I transitioned from a low fidelity prototype on paper to a photoshop mockup to a fully-functioning Java prototype.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/phoenix/mockup_ps.jpg\"),\"alt\":\"Photoshop mockup of the application\"}}),_c('h4',[_vm._v(\"Evaluation\")]),_c('p',[_vm._v(\"During the use of the application I documented design flaws, bugs and possible improvements. These were then incorporated in the next version of the application. This iterative process of use and improvement led to a constant development cycle. At first, I made changes and added functionality in rapid succession, but often realized in hindsight that the change did not integrate very well with the rest of the application or provided too little value compard to its development costs. Later in the project I spend more time elaborating on possible features which made my work more sustainable and time-efficient.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/phoenix/shuffle_tooltip.png\"),\"alt\":\"Left: Mouseover effects of the shuffle button: none, hover, active; Right: Photoshop mockup of the application\"}}),_c('p',[_vm._v(\"Five key questions followed me during that process:\")]),_vm._m(1),_c('h4',[_vm._v(\"Design features\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/phoenix/coverflow.mp4\"),\"alt\":\"Coverflow animation when changing tracks\"}}),_c('p',[_vm._v(\"Apart from the common media control I implemented three core design features:\")]),_vm._m(2),_c('h4',[_vm._v(\"Reflection\")]),_c('p',[_vm._v(\"During the iterations of implementation-testing I learnt how to get more efficient in my own workflow and how to counterbalance design and functionality. The experience from my university courses and the job at UseTree about usability, UX and user-centered design guided me through this process. Furthermore, I learnt how to prioritze features and implement only the ones that were important, sustainable and time-efficient. Apart from that my software development skills improved dramatically as I got more proficient in the Java language, the JavaFX frontend framework, SQL and different libraries.\")]),_vm._m(3),_c('h4',[_vm._v(\"Successor: PhoenixJS\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/phoenix/wireframe_ps_js.png\"),\"alt\":\"Wireframe of the Javascript application\"}}),_c('p',[_vm._v(\"In the course of the project I often felt restrained by the limited capabilites of the JavaFX frontend framework. Also, even though I tried, I could never really separate functionality in Model-View-Controller resulting in a messy code base. And in the end I needed a good reason to learn JavaScript, so I decided to rewrite the application with React and Redux. I used nedb for the database part and deployed the whole application as a cross-platfrom compatible electron app.\")]),_vm._m(4)],1),_c('project-arrows',{attrs:{\"route\":\"/phoenix\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Continuous background playback via a suggestion system (similar to YouTube's AutoPlay)\")]),_c('li',[_vm._v(\"A fast search for titles, artists, albums\")]),_c('li',[_vm._v(\"Good performance at low resource consumption\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"How do I provide a visual design that is consistent in colors, icons, animations, hover/interaction effects, element sizes, state of ui elements and affordances?\")]),_c('li',[_vm._v(\"What is the 'product identity' (aka corporate indentity) of Phoenix?\")]),_c('li',[_vm._v(\"How do I provide meaningfull and appropriate (error) feedback?\")]),_c('li',[_vm._v(\"What are the needs of the user and what implications do they have on the functionality of the software?\")]),_c('li',[_vm._v(\"How do I identify core use cases and choose the suitable interaction paradigm (e.g. search, buttons)?\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ol',[_c('li',[_vm._v(\"Auto-Dj: This functionality uses mp3 tag information to generate music suggestions (similar to populat AutoPlay functionalities in YouTube or Souncloud). It provides three modes of operation which start up once the user reaches the end of the tracklist.\")]),_c('ul',[_c('li',[_vm._v(\"Random track: Adds an unknown track that is similar to the last one.\")]),_c('li',[_vm._v(\"Random favourite track: Adds a favourite track of the user that is similar to the last one.\")]),_c('li',[_vm._v(\"Random track from album or artist: Adds a track from the same artist or album like the previous track.\")])]),_c('li',[_vm._v(\"Overlay with information about current track: Shows a short overlay containing information about the currently played track in the top right corner. As the overlay appears on top of all other windows this functionality is well suited to check back on your music while having it play in the background.\")]),_c('li',[_vm._v(\"Search: A SQL backend allowed for very fast and compley queries even with large music databases and made the search lightning fast.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://github.com/johannesschweig/Phoenix\"}},[_vm._v(\"View project on GitHub\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://github.com/johannesschweig/PhoenixJS\"}},[_vm._v(\"View PhoenixJS on GitHub\")])])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Phoenix.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Phoenix.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Phoenix.vue?vue&type=template&id=83073660&\"\nimport script from \"./Phoenix.vue?vue&type=script&lang=js&\"\nexport * from \"./Phoenix.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/querybuilder\"}}),_c('div',{staticClass:\"responsive\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I helped to build a functionality which lets users filter their data based on multiple, nested criteria.\")]),_c('h4',[_vm._v(\"Problem\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/querybuilder/sql.png\"),\"alt\":\"The beauty of SQL\"}}),_c('p',[_vm._v(\"During my time at KNIME I was asked to create an interface for a node (KNIME term for encapsulated functionality) where users can filter their data based on multiple rules (e.g. filter out all rows in the data where the year column is smaller than 2016).\")]),_c('p',[_vm._v(\"The existing solution only supported one rule and the aim was to extend the functionality, so it could also work with multiple rules and it should be possible to nest rules (e.g. [condition A AND condition B] OR condition C). Users would not have to worry anymore about writing their queries in SQL because they could comfortably build them in a UI. This has several advantages:\")]),_vm._m(0),_c('h4',[_vm._v(\"Research\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/querybuilder/querybuilders.png\"),\"alt\":\"Querybuilders by jQuery (left) and Microsoft Outlook (right)\"}}),_c('p',[_vm._v(\"I researched about how others have tried to solve this problem and found a number of different user interfaces. Some of them represented their rules as a graph, some of them as a nested list. And they also differed in how they made the actions such as creating or deleting rules available to the user.\")]),_c('h4',[_vm._v(\"Ideation\")]),_c('p',[_vm._v(\"Then I proceeded to explore the problem space with sketches. This brought up questions such as:\")]),_vm._m(1),_c('p',[_vm._v(\"Trying to answer those questions helped to find possible solutions, narrowed the problem space, but also improved my understanding of the domain (Querying a database).\")]),_c('h4',[_vm._v(\"Variations\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/querybuilder/variations.png\"),\"alt\":\"Variations of rule representations: vertical graph, treeview, inline form, horizontal graph\"}}),_c('p',[_vm._v(\"I came up with a variation where the rules were laid out top to bottom, groups were indicated by different colored rectangles and you could edit the rules right in place (see inline form in image above). It quickly came apparent that this solution would fit for easy queries with few rules and few nesting levels, but not for very complex queries. Then I designed a version where you would have a preview section on one side and an edit section on the other. This would allow for easier layouting as you would only have to display the currently selected rule. All other rules were displayed with a small label. The display of the preview varied: vertical graph, horizontal graph or treeview. \")]),_c('h4',[_vm._v(\"Testing\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/querybuilder/concept.png\"),\"alt\":\"Final UI concept\"}}),_c('p',[_vm._v(\"I created a small paper protoype and showed it to different colleagues. During the test the colleague had to press the buttons on the paper and I would (as responsively as I could) \\\"slide in\\\" the new UI elements (\\\"Wizard of Oz prototyping\\\"). After testing we decided that the AND/OR of groups should be positioned on top of them and not between the rules as our participants prefered by this. .\")]),_c('p',[_vm._v(\"In the end we decided for the treeview as it was easier to implement as the other concepts, was recognized as a familiar component by the users and also showed good results in user interaction.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/querybuilder/row-filter.png\"),\"alt\":\"User interface as of KNIME Analytics Platform v3.7.1\"}})],1),_c('project-arrows',{attrs:{\"route\":\"/querybuilder\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"Avoiding typos by using dropdowns and other UI components\")]),_c('li',[_vm._v(\"Faster rule generation with suggestions (e.g. possible values of columns)\")]),_c('li',[_vm._v(\"Better understanding through hierarchical display of rules (if you have once tried to make sense of another person's excel formulas, you know what I mean)\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"How many different combinations of nested rules could there be? (A lot)\")]),_c('li',[_vm._v(\"How do you present the rules to the user? Inline forms / Graph preview / treeview preview? (see image below)\")]),_c('li',[_vm._v(\"Do you connect items in a group with an AND/OR or do you set it to the top of the group?\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryBuilder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryBuilder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QueryBuilder.vue?vue&type=template&id=ca3af6c2&\"\nimport script from \"./QueryBuilder.vue?vue&type=script&lang=js&\"\nexport * from \"./QueryBuilder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/scenariomanager\"}}),_c('div',{staticClass:\"responsive body1\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I led a discovery project aiming to improve a core functionality in a web application. I interviewed customers and internal stakeholders. As a result a couple of smaller fixes and a big feature were developed.\")]),_c('h4',[_vm._v(\"Problem statement\")]),_vm._m(0),_c('p',[_vm._v(\"The initial timeline for the project was set to 3 weeks. I proposed a project plan with three phases starting with a research phase, then an ideation/creation phase and finally a validation phase. In the end we wanted to have wireframes that we could create stories for and make part of a sprint. In the following, I will focus on the way I conducted the customer interviews and condensed the findings.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/scenariomanager/project-plan.png\"),\"alt\":\"Plan for the project\"}}),_c('h4',[_vm._v(\"Research\")]),_c('h5',[_vm._v(\"Customer interviews\")]),_c('p',[_vm._v(\"I prepared a semi-structured interview with around 10 questions asking about\")]),_vm._m(1),_c('p',[_vm._v(\"I skipped questions that were not applicable for the participant or asked again if there was a chance to gain more insights by diving deeper into a topic.\")]),_c('p',[_vm._v(\"We managed to recruit customers from four companies and I talked to three internal consultants. The interviews were audio recorded and transcribed later.\")]),_c('h5',[_vm._v(\"Condense findings\")]),_vm._m(2),_c('styled-image',{attrs:{\"src\":require(\"../../assets/scenariomanager/snip-gif.mp4\"),\"alt\":\"Data wall with snips moving into bigger topics\"}}),_c('h4',[_vm._v(\"Ideation/Creation\")]),_c('h5',[_vm._v(\"Present findings\")]),_c('p',[_vm._v(\"I presented these topics to my product manager and we decided which topics we would prioritize for now.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/scenariomanager/mass-ass-slide.jpg\"),\"alt\":\"Mass of assumptions was one bigger topic\"}}),_c('h4',[_vm._v(\"Development\")]),_c('p',[_vm._v(\"A couple of smaller features were developed right after concluding the validation with customers. A search functionality was added to the scenario manager to find items in the list faster. Also, a couple of visual tweaks were made to the scenario manager and a convenient keyboard shortcut for faster navigation was introduced.\")]),_c('p',[_vm._v(\"We had a bigger feature idea about grouping similar assumptions together and making it easier to switch between them. This idea was further iterated and refined until it was ready to be developed and shipped.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/scenariomanager/variants.jpg\"),\"alt\":\"Assumptions are grouped using \\\"variants\\\"\"}}),_c('h4',[_vm._v(\"Learnings\")]),_c('p',[_vm._v(\"In hindsight, I was proud and amazed at how often I would come back to my findings for related topics or just look at the written protocols if I vaguely remembered somebody having said something similar in one of the interviews. A powerful quote from a user really sticks in your head!\")]),_c('p',[_vm._v(\"I also enjoyed passing back the positive feedback from the interviews to the developers. They certainly deserved it.\")]),_c('p',[_vm._v(\"The project also inspired lots of people involved in building the product and served as a source of feature ideas for the future.\")]),_c('p',[_vm._v(\"On the other hand, the problem statement could have been clearer. The broad scope of it allowed for a lot of valuable exploration to happen, but it also felt like it was not worth the effort at times. Changing something is very hard if it has been at the core of an application for many years. Usually, there are good reasons why it is the way it is and users are not happy to have their workflow changed.\")])],1),_c('project-arrows',{attrs:{\"route\":\"/scenariomanager\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://www.valsight.com/\"}},[_vm._v(\"Valsight\")]),_vm._v(\" offers a financial planning solution for big companies. One of the core features is the “scenario manager” where you can create and modify assumptions (+10% more sales next year) and add them to scenarios (best case). Historically grown, it was very complex to understand and use. My task was to talk to users and figure out a way to make it easier to understand and better to use.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"The current usage of the scenario manager\")]),_c('li',[_vm._v(\"What worked well and what did not\")]),_c('li',[_vm._v(\"What information was important to them and what not\")]),_c('li',[_vm._v(\"How they worked with the scenario manager\")]),_c('li',[_vm._v(\"Who worked with it the most and how they collaborated as a team\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"I printed out the interview protocols on paper and cut them into small snips of a few sentences each. Then I started a \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://www.thisisservicedesigndoing.com/methods/building-a-research-wall\"}},[_vm._v(\"data wall\")]),_vm._v(\" where I grouped snips to broader topics. After that I removed smaller topics to focus on the big topics that started to emerge.\")])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScenarioManager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScenarioManager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScenarioManager.vue?vue&type=template&id=5052633b&\"\nimport script from \"./ScenarioManager.vue?vue&type=script&lang=js&\"\nexport * from \"./ScenarioManager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/thesis\"}}),_c('div',{staticClass:\"responsive\"},[_c('h2',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"In my master thesis I examined the effects of wearing eyeglasses on eye tracking. I used methods from statistics and machine learning to correct for eyeglass-induced errors.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/thesis/foveated-rendering.png\"),\"alt\":\"Foveated rendering in a VR game\"}}),_c('h2',[_vm._v(\"Background\")]),_vm._m(0),_c('h2',[_vm._v(\"Data collection\")]),_c('p',[_vm._v(\"I collected data using a head model with artificial eyes and different pairs of eyeglasses on various positions of the screen. Two datasets were obtained; one for training and testing the models and one dataset for validation. The validation dataset contained a portion of new data. Its aim was to assess how well the models could generalize on new data.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/thesis/data-coll.png\"),\"alt\":\"Collected eye tracking data\"}}),_c('h2',[_vm._v(\"Classification\")]),_c('p',[_vm._v(\"I employed several popular machine learning algorithms (KNN, SVM, MLP,...) to build classification models. These models were adjusted on the data (hyperparameters) in a grid search paradigm with a 10-fold cross-validation. The final models were evaluated on training, test and validation set. The Multi-layer perceptron model (MLP) showed the highest performance with a fscore of .99 on the test set and a fscore of .73 on the validation set.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/thesis/gnb.png\"),\"alt\":\"Confusion matrix of a trained model\"}}),_c('h2',[_vm._v(\"Error correction\")]),_c('p',[_vm._v(\"I built several models following a weighted-average and a regression approach. The weighted-average model was able to reduce the error by about 50% on the training and test set. The regression model reduced the error by about 25%. Both models performed equally on the validation set with a reduction of 45% in X direction and 10% in Y direction.\")]),_c('styled-image',{attrs:{\"src\":require(\"../../assets/thesis/regX.png\"),\"alt\":\"3D Scatterplot with a regression plane for the X offset\"}}),_c('h2',[_vm._v(\"Reflection\")]),_c('p',[_vm._v(\"My thesis was the first major research project that I conducted from start to finish. I recognized the vitality of an early distinct and definite definition of the task. I learned a lot about the practical application of machine learning on real data and how to deal with problems of data quality like missing and noisy data. I learnt how to make reasonable deductions from preliminary work and how to support my own claims. Lastly, I learnt how to interpret results in the presence of ambiguity and uncertainty and how huge the effort is in order to make small progress in research.\")]),_c('a',{attrs:{\"id\":\"download\",\"target\":\"_blank\",\"href\":require(\"../../assets/thesis/thesis.pdf\")}},[_c('img',{attrs:{\"src\":require(\"../../assets/thesis/download.png\"),\"width\":\"32\"}}),_vm._v(\" Download the pdf here \")])],1),_c('project-arrows',{attrs:{\"route\":\"/thesis\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"Eye tracking is a useful method which is not only used in research and interactive systems but also in future technologies such as the \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://techcrunch.com/2016/12/28/the-eye-tribe-oculus/\"}},[_vm._v(\"foveated rendering for VR\")]),_vm._v(\". Modern eye trackers use a combination of the pupil position and an infrared reflection to infer the point of gaze. Corrective eyeglasses, however, pose a challenge for the eyetracking system. They alter the image of the eye, thus causing errors in the eyetracking signal. These errors are related to the refractive strength of the eyeglasses. In my thesis, I tried to build a classification model that takes eye tracking data as input in order to output the refractive strength of the current user. On the basis of this classification, an error correction is applied that corrects the eye tracking data dependening on the refractive strength.\")])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Thesis.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Thesis.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Thesis.vue?vue&type=template&id=6a36c1f6&scoped=true&\"\nimport script from \"./Thesis.vue?vue&type=script&lang=js&\"\nexport * from \"./Thesis.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Thesis.vue?vue&type=style&index=0&id=6a36c1f6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a36c1f6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('project-header',{attrs:{\"route\":\"/trafficticket\"}}),_vm._m(0),_c('project-arrows',{attrs:{\"route\":\"/trafficticket\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"responsive\"},[_c('h4',[_vm._v(\"TL;DR\")]),_c('p',[_vm._v(\"I was the project lead for a big car rental company building a system that automatically processed traffic tickets.\")]),_c('h5',[_vm._v(\"The nature of this work is confidential. I can tell you more about my involvement in private.\")])])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TrafficTicket.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TrafficTicket.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TrafficTicket.vue?vue&type=template&id=20972d98&\"\nimport script from \"./TrafficTicket.vue?vue&type=script&lang=js&\"\nexport * from \"./TrafficTicket.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Router from 'vue-router'\nimport About from '@/components/content/About.vue'\nimport CodeSnippets from '@/components/projects/CodeSnippets.vue'\nimport EsGehtLos from '@/components/projects/EsGehtLos.vue'\nimport Greenbox from '@/components/projects/Greenbox.vue'\nimport KnimeHub from '@/components/projects/KnimeHub.vue'\nimport LandingPage from '@/components/content/LandingPage.vue'\nimport Legal from '@/components/content/Legal.vue'\nimport Mechanics from '@/components/projects/Mechanics.vue'\nimport PageNotFound from '@/components/content/PageNotFound.vue'\nimport Phoenix from '@/components/projects/Phoenix.vue'\nimport QueryBuilder from '@/components/projects/QueryBuilder.vue'\nimport ScenarioManager from '@/components/projects/ScenarioManager.vue'\nimport Thesis from '@/components/projects/Thesis.vue'\nimport TrafficTicket from '@/components/projects/TrafficTicket.vue'\n\nVue.use(Router)\n\nexport default new Router({\n routes: [\n { path: '/', component: LandingPage },\n { path: '/about', component: About },\n { path: '/codesnippets', component: CodeSnippets },\n { path: '/esgehtlos', component: EsGehtLos },\n { path: '/greenbox', component: Greenbox },\n { path: '/knimehub', component: KnimeHub },\n { path: '/legal', component: Legal},\n { path: '/mechanics', component: Mechanics },\n { path: '/phoenix', component: Phoenix },\n { path: '/querybuilder', component: QueryBuilder },\n { path: '/scenariomanager', component: ScenarioManager },\n { path: '/thesis', component: Thesis },\n { path: '/trafficticket', component: TrafficTicket },\n { path: '*', component: PageNotFound}\n ],\n mode: 'history',\n scrollBehavior () {\n return { x: 0, y: 0 }\n }\n})\n","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\n\nVue.config.productionTip = false\n\n/* eslint-disable no-new */\nnew Vue({\n render: h => h(App),\n el: '#app',\n router,\n components: { App },\n template: ''\n}).$mount('#app')\n","module.exports = __webpack_public_path__ + \"img/paper_prototype.6732246c.jpg\";","module.exports = __webpack_public_path__ + \"img/bio-image.cf1651b2.jpg\";","module.exports = __webpack_public_path__ + \"img/adjustable-eyes.c99ce49e.jpg\";","module.exports = __webpack_public_path__ + \"img/greenbox_app2.511cbbbe.png\";","module.exports = __webpack_public_path__ + \"img/wireframe_ps_js.38ad42c0.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKUAAAAPCAMAAACycv9gAAAAMFBMVEVMaXEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEKlNcAAAAAD3RSTlMAu90id0SZZswRqjOIVe4eYAFsAAAB70lEQVR42u2U2ZKtIAxFmUQGlf//295JkOBwXk513ZfblEVUMiySgPkbvzl8bK0d24fVrfnX/zVcPl3jsYxlZ0ms+G/9JEmpmCjagaLz2z36Ak/JXX4kmAf3CvN5Idjnv+iG06NZEgDxzp4Se56sVt6/xxJew5OyzBFc+qoC8UbJAdcRJFqm3Jh9SFPiFJjfPQOm9KScx952NUtI/ZKoOLS9RlkOjUw4hqeVLDOm5rqFplKjGGtH7YPKFC6pVEpoh6MdK74hd4SEhwEBCq+9tZBVNBktsZJ0dqYsoNj6DB9icU3lGIMSW5okt2U+UzkoA/ysMEck36jFBmUx/oikUMkntbIrfFoyJxhbpcWslHggZT4py2tXyrqeI5V1fMN/pxRyKXramFopPXnSihNl5FiSFlbANFHmeECL55My3lL5pOSt3mRP5cglFa/fEhFuHpR8epTynsttzmXvYpnvlKzwoCxW6E4pd9shqVRK7rsidflAWaU9O6X2JbTrEWnnuW2okzNhAd8iM7XnDgtyWLt3ubiyUooTV4asMeOSCrK/Wy53chDqGyXrFUm1WPIZT3TG+SxzfeigFUeHEC55hhpWYSEkmsrIzFI+y5bY9ZAV/U+QEn70JV8q7Lj4V8pPgxW+GDmZfzm+o6Su+G/HD6HrGBNr5t/wAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"img/formulas04.507aefad.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Legal.vue?vue&type=style&index=0&id=e3359912&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=5e2b32e6&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"assets/pdf/thesis.0901653d.pdf\";","module.exports = __webpack_public_path__ + \"img/shuffle_tooltip.fde1ca92.png\";","module.exports = __webpack_public_path__ + \"img/variations.e936ca1f.png\";","module.exports = __webpack_public_path__ + \"img/gnb.a0d7405b.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 48 48\"}, attrs),\n ...rest,\n },\n children.concat([_c('defs'),_c('g',{attrs:{\"id\":\"Layer_2\",\"data-name\":\"Layer 2\"}},[_c('g',{attrs:{\"id\":\"github_hover\"}},[_c('path',{attrs:{\"d\":\"M24 .59a24 24 0 00-7.59 46.78c1.2.22 1.64-.52 1.64-1.16v-4.47c-6.68 1.46-8.09-2.83-8.09-2.83-1.12-2.77-2.69-3.51-2.69-3.51-2.18-1.49.16-1.46.16-1.46a5 5 0 013.68 2.47c2.14 3.67 5.62 2.61 7 2a5.07 5.07 0 011.52-3.21C14.3 34.59 8.7 32.54 8.7 23.34a9.26 9.26 0 012.47-6.44 8.63 8.63 0 01.23-6.35s2-.65 6.6 2.46a22.7 22.7 0 0112 0c4.58-3.11 6.6-2.46 6.6-2.46a8.63 8.63 0 01.23 6.35 9.26 9.26 0 012.47 6.44c0 9.22-5.61 11.25-11 11.84a5.76 5.76 0 011.7 4.45v6.58c0 .79.43 1.39 1.65 1.15A24 24 0 0024 .59z\",\"fill-rule\":\"evenodd\"}}),_c('path',{staticClass:\"cls-3\",attrs:{\"d\":\"M9.09 35.05c-.05.12-.24.16-.41.07a.3.3 0 01-.22-.36c0-.12.24-.15.42-.07s.27.24.21.36zM10.06 36.14c-.11.1-.34 0-.49-.12a.36.36 0 01-.07-.49.36.36 0 01.49.11c.16.17.19.39.07.5zM11 37.52c-.15.1-.39 0-.54-.21s-.14-.47 0-.57.38 0 .53.2.15.47 0 .58zM12.3 38.85c-.13.15-.41.11-.61-.09s-.27-.47-.14-.61a.45.45 0 01.62.09c.21.19.27.47.13.61zM14.09 39.63c-.05.19-.32.27-.6.19s-.45-.3-.39-.49a.46.46 0 01.6-.19c.27.08.45.3.39.49zM16.06 39.77c0 .2-.23.36-.51.37S15 40 15 39.79s.22-.36.51-.37.52.16.52.35zM17.89 39.46c0 .19-.17.39-.45.45s-.54-.07-.57-.26.16-.4.44-.45.54.06.58.26z\"}})])])])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/mechanics.fd8bc77f.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectPreview.vue?vue&type=style&index=0&id=9ccefd46&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"media/coverflow.e57db30e.mp4\";","module.exports = __webpack_public_path__ + \"img/workflow.dc822e88.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"viewBox\":\"0 0 48 48\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M2 8a2 2 0 00-2 2v28a2 2 0 002 2h44a2 2 0 002-2V10a2 2 0 00-2-2H2zm2.454 7.895a1 1 0 011.401-.191l11.81 8.977.03.023 5.55 4.22a1.244 1.244 0 00.755.253c.273 0 .538-.089.755-.253l5.55-4.22a.495.495 0 01.014-.01l.017-.013 11.809-8.977a1 1 0 111.21 1.592L32.563 25.5l10.792 8.204a1 1 0 11-1.21 1.592l-11.234-8.54-4.946 3.76a3.25 3.25 0 01-3.93 0l-4.946-3.76-11.234 8.54a1 1 0 01-1.21-1.592L15.437 25.5 4.645 17.296a1 1 0 01-.191-1.401z\",\"fill\":\"#fff\"}})])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/typo.05501c41.png\";","module.exports = __webpack_public_path__ + \"img/greenbox_v1.f3127872.jpg\";","module.exports = __webpack_public_path__ + \"img/mechanics_app.95c69a34.png\";","module.exports = __webpack_public_path__ + \"img/phoenix_mp.a48fe521.jpg\";","module.exports = __webpack_public_path__ + \"img/mass-ass-slide.06d61890.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyledImage.vue?vue&type=style&index=0&id=21430c51&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/variants.08a77f33.jpg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectHeader.vue?vue&type=style&index=0&id=664fedb4&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/mechanics_interview.43f8fc96.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"width\":\"16\",\"height\":\"16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M1 8l-.354-.354a.5.5 0 000 .708L1 8zm14 .5a.5.5 0 000-1v1zM5.854 3.854a.5.5 0 10-.708-.708l.708.708zm-.708 9a.5.5 0 00.708-.708l-.708.708zM1 8.5h14v-1H1v1zm.354-.146l4.5-4.5-.708-.708-4.5 4.5.708.708zm-.708 0l4.5 4.5.708-.708-4.5-4.5-.708.708z\",\"fill\":\"#000\"}})])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/regX.94898e50.png\";","module.exports = __webpack_public_path__ + \"img/concept.3933ace9.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"width\":\"32\",\"height\":\"32\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M26.666 1.333A1.333 1.333 0 0128 2.667v26.666a1.333 1.333 0 01-1.334 1.334H5.334A1.333 1.333 0 014 29.333V2.667a1.333 1.333 0 011.333-1.334h21.334zm0-1.333H5.334a2.667 2.667 0 00-2.667 2.667v26.666A2.667 2.667 0 005.333 32h21.334a2.667 2.667 0 002.666-2.667V2.667A2.667 2.667 0 0026.667 0z\",\"fill\":\"#000\"}}),_c('path',{attrs:{\"d\":\"M15.666 6.667a2 2 0 100-4 2 2 0 000 4zM15.667 7A4.667 4.667 0 0011 11.667h9.333A4.667 4.667 0 0015.667 7zM26.333 15.5H5v1.333h21.333V15.5zM26.333 20.587H5v1.333h21.333v-1.333zM26.333 25.667H5V27h21.333v-1.333z\",\"fill\":\"#000\"}})])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/querybuilder.75ad2214.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=style&index=0&id=71f764a6&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/quotes.a819a60b.png\";","module.exports = __webpack_public_path__ + \"img/data-coll.478ebcd0.png\";","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 48 48\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M40.9 40.9h-7.11V29.76c0-2.65 0-6.07-3.7-6.07s-4.28 2.89-4.28 5.88V40.9H18.7V18h6.83v3.13h.1a7.46 7.46 0 016.73-3.7c7.21 0 8.54 4.74 8.54 10.91V40.9zm-30.22-26a4.13 4.13 0 114.12-4.12 4.13 4.13 0 01-4.12 4.12zm3.56 26H7.12V18h7.12v22.9zM44.45 0H3.54A3.5 3.5 0 000 3.46v41.08A3.5 3.5 0 003.54 48h40.91A3.51 3.51 0 0048 44.54V3.46A3.51 3.51 0 0044.45 0z\",\"fill\":\"#fff\",\"data-name\":\"Layer 2\"}})])\n )\n }\n }\n ","module.exports = __webpack_public_path__ + \"img/greenbox_app3.eca497a4.png\";","module.exports = __webpack_public_path__ + \"img/ticket1.fd67465f.jpeg\";","module.exports = __webpack_public_path__ + \"img/greenbox_v2.aefd06ed.jpg\";","module.exports = __webpack_public_path__ + \"img/querybuilders.51618a71.png\";","module.exports = __webpack_public_path__ + \"img/pattern.db6777fa.png\";","module.exports = __webpack_public_path__ + \"img/greenbox_presentation.eea2892e.png\";","module.exports = __webpack_public_path__ + \"img/demo.82967291.png\";","module.exports = __webpack_public_path__ + \"img/foveated-rendering.5897ea89.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=style&index=0&id=af73ad34&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/communities.4f837362.png\";","module.exports = __webpack_public_path__ + \"img/brainstorming-sideshot.56840d0c.jpg\";","module.exports = __webpack_public_path__ + \"img/project-plan.2d8ee402.png\";","module.exports = __webpack_public_path__ + \"img/node-issues.d5af57fb.png\";"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-vendors.7674dbda.js b/js/chunk-vendors.7674dbda.js new file mode 100644 index 0000000..a56d4f6 --- /dev/null +++ b/js/chunk-vendors.7674dbda.js @@ -0,0 +1,13 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"057f":function(t,e,n){var r=n("fc6a"),o=n("241c").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("c04e"),s=n("5135"),u=n("0cfb"),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=c(e,!0),u)try{return f(t,e)}catch(n){}if(s(t,e))return i(!o.f.call(t,e),t[e])}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"159b":function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("17c2"),a=n("9112");for(var c in o){var s=r[c],u=s&&s.prototype;if(u&&u.forEach!==i)try{a(u,"forEach",i)}catch(f){u.forEach=i}}},"17c2":function(t,e,n){"use strict";var r=n("b727").forEach,o=n("a640"),i=n("ae40"),a=o("forEach"),c=i("forEach");t.exports=a&&c?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(s){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(s){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),s=n("9bdd"),u=function(t,e){this.stopped=t,this.result=e},f=t.exports=function(t,e,n,f,l){var p,d,h,v,y,m,g,b=a(e,n,f?2:1);if(l)p=t;else{if(d=c(t),"function"!=typeof d)throw TypeError("Target is not iterable");if(o(d)){for(h=0,v=i(t.length);v>h;h++)if(y=f?b(r(g=t[h])[0],g[1]):b(t[h]),y&&y instanceof u)return y;return new u(!1)}p=d.call(t)}m=p.next;while(!(g=m.call(p)).done)if(y=s(p,b,g.value,f),"object"==typeof y&&y&&y instanceof u)return y;return new u(!1)};f.stop=function(t){return new u(!0,t)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),s=n("e893"),u=n("94ca");t.exports=function(t,e){var n,f,l,p,d,h,v=t.target,y=t.global,m=t.stat;if(f=y?r:m?r[v]||c(v,{}):(r[v]||{}).prototype,f)for(l in e){if(d=e[l],t.noTargetGet?(h=o(f,l),p=h&&h.value):p=f[l],n=u(y?l:v+(m?".":"#")+l,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;s(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(f,l,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,c){var s,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(s=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=s):o&&(s=c?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),s)if(u.functional){u._injectStyles=s;var f=u.render;u.render=function(t,e){return s.call(e),f(t,e)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,s):[s]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2b0e":function(t,e,n){"use strict";(function(t){ +/*! + * Vue.js v2.6.11 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function c(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function s(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function f(t){return"[object Object]"===u.call(t)}function l(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function y(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function _(t,e){return b.call(t,e)}function w(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var x=/-(\w)/g,O=w((function(t){return t.replace(x,(function(t,e){return e?e.toUpperCase():""}))})),C=w((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,S=w((function(t){return t.replace(A,"-$1").toLowerCase()}));function k(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function j(t,e){return t.bind(e)}var $=Function.prototype.bind?j:k;function E(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function P(t){for(var e={},n=0;n0,nt=Z&&Z.indexOf("edge/")>0,rt=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===Q),ot=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),it={}.watch,at=!1;if(J)try{var ct={};Object.defineProperty(ct,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,ct)}catch(Oa){}var st=function(){return void 0===K&&(K=!J&&!Y&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),K},ut=J&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var lt,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);lt="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=I,ht=0,vt=function(){this.id=ht++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){g(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===S(t)){var s=te(String,o.type);(s<0||c0&&(a=ke(a,(e||"")+"_"+n),Se(a[0])&&Se(u)&&(f[s]=xt(u.text+a[0].text),a.shift()),f.push.apply(f,a)):c(a)?Se(u)?f[s]=xt(u.text+a):""!==a&&f.push(xt(a)):Se(a)&&Se(u)?f[s]=xt(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),f.push(a)));return f}function je(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function $e(t){var e=Ee(t.$options.inject,t);e&&($t(!1),Object.keys(e).forEach((function(n){Lt(t,n,e[n])})),$t(!0))}function Ee(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,c=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&c===r.$key&&!i&&!r.$hasNormal)return r;for(var s in o={},t)t[s]&&"$"!==s[0]&&(o[s]=Le(e,s,t[s]))}else o={};for(var u in e)u in o||(o[u]=Re(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),z(o,"$stable",a),z(o,"$key",c),z(o,"$hasNormal",i),o}function Le(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Ae(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Re(t,e){return function(){return t[e]}}function Me(t,e){var n,r,i,a,c;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?E(n):n;for(var r=E(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Kn=function(){return Xn.now()})}function Jn(){var t,e;for(Gn=Kn(),qn=!0,Un.sort((function(t,e){return t.id-e.id})),zn=0;znzn&&Un[n].id>t.id)n--;Un.splice(n+1,0,t)}else Un.push(t);Hn||(Hn=!0,he(Jn))}}var er=0,nr=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++er,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new lt,this.newDepIds=new lt,this.expression="","function"===typeof e?this.getter=e:(this.getter=G(e),this.getter||(this.getter=I)),this.value=this.lazy?void 0:this.get()};nr.prototype.get=function(){var t;mt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Oa){if(!this.user)throw Oa;ee(Oa,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ye(t),gt(),this.cleanupDeps()}return t},nr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},nr.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},nr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():tr(this)},nr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Oa){ee(Oa,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},nr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},nr.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},nr.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var rr={enumerable:!0,configurable:!0,get:I,set:I};function or(t,e,n){rr.get=function(){return this[e][n]},rr.set=function(t){this[e][n]=t},Object.defineProperty(t,n,rr)}function ir(t){t._watchers=[];var e=t.$options;e.props&&ar(t,e.props),e.methods&&hr(t,e.methods),e.data?cr(t):It(t._data={},!0),e.computed&&fr(t,e.computed),e.watch&&e.watch!==it&&vr(t,e.watch)}function ar(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||$t(!1);var a=function(i){o.push(i);var a=Jt(i,e,n,t);Lt(r,i,a),i in t||or(t,"_props",i)};for(var c in e)a(c);$t(!0)}function cr(t){var e=t.$options.data;e=t._data="function"===typeof e?sr(e,t):e||{},f(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&_(r,i)||q(i)||or(t,"_data",i)}It(e,!0)}function sr(t,e){mt();try{return t.call(e,e)}catch(Oa){return ee(Oa,e,"data()"),{}}finally{gt()}}var ur={lazy:!0};function fr(t,e){var n=t._computedWatchers=Object.create(null),r=st();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new nr(t,a||I,I,ur)),o in t||lr(t,o,i)}}function lr(t,e,n){var r=!st();"function"===typeof n?(rr.get=r?pr(e):dr(n),rr.set=I):(rr.get=n.get?r&&!1!==n.cache?pr(e):dr(n.get):I,rr.set=n.set||I),Object.defineProperty(t,e,rr)}function pr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function dr(t){return function(){return t.call(this,this)}}function hr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?I:$(e[n],t)}function vr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=E(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Ar(t){t.mixin=function(t){return this.options=Kt(this.options,t),this}}function Sr(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Kt(n.options,t),a["super"]=n,a.options.props&&kr(a),a.options.computed&&jr(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,U.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}function kr(t){var e=t.options.props;for(var n in e)or(t.prototype,"_props",n)}function jr(t){var e=t.options.computed;for(var n in e)lr(t.prototype,n,e[n])}function $r(t){U.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Er(t){return t&&(t.Ctor.options.name||t.tag)}function Tr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function Pr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var c=Er(a.componentOptions);c&&!e(c)&&Ir(n,i,r,o)}}}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,g(n,e)}br(Or),mr(Or),$n(Or),In(Or),gn(Or);var Lr=[String,RegExp,Array],Rr={name:"keep-alive",abstract:!0,props:{include:Lr,exclude:Lr,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Pr(t,(function(t){return Tr(e,t)}))})),this.$watch("exclude",(function(e){Pr(t,(function(t){return!Tr(e,t)}))}))},render:function(){var t=this.$slots.default,e=On(t),n=e&&e.componentOptions;if(n){var r=Er(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Tr(i,r))||a&&r&&Tr(a,r))return e;var c=this,s=c.cache,u=c.keys,f=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;s[f]?(e.componentInstance=s[f].componentInstance,g(u,f),u.push(f)):(s[f]=e,u.push(f),this.max&&u.length>parseInt(this.max)&&Ir(s,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Mr={KeepAlive:Rr};function Dr(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:dt,extend:T,mergeOptions:Kt,defineReactive:Lt},t.set=Rt,t.delete=Mt,t.nextTick=he,t.observable=function(t){return It(t),t},t.options=Object.create(null),U.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,T(t.options.components,Mr),Cr(t),Ar(t),Sr(t),$r(t)}Dr(Or),Object.defineProperty(Or.prototype,"$isServer",{get:st}),Object.defineProperty(Or.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Or,"FunctionalRenderContext",{value:Ye}),Or.version="2.6.11";var Nr=y("style,class"),Fr=y("input,textarea,option,select,progress"),Ur=function(t,e,n){return"value"===n&&Fr(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Vr=y("contenteditable,draggable,spellcheck"),Br=y("events,caret,typing,plaintext-only"),Hr=function(t,e){return Kr(e)||"false"===e?"false":"contenteditable"===t&&Br(e)?e:"true"},qr=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),zr="http://www.w3.org/1999/xlink",Wr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Gr=function(t){return Wr(t)?t.slice(6,t.length):""},Kr=function(t){return null==t||!1===t};function Xr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Jr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Jr(e,n.data));return Yr(e.staticClass,e.class)}function Jr(t,e){return{staticClass:Qr(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Yr(t,e){return o(t)||o(e)?Qr(t,Zr(e)):""}function Qr(t,e){return t?e?t+" "+e:t:e||""}function Zr(t){return Array.isArray(t)?to(t):s(t)?eo(t):"string"===typeof t?t:""}function to(t){for(var e,n="",r=0,i=t.length;r-1?co[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:co[t]=/HTMLUnknownElement/.test(e.toString())}var uo=y("text,number,password,search,email,tel,url");function fo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function lo(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function po(t,e){return document.createElementNS(no[t],e)}function ho(t){return document.createTextNode(t)}function vo(t){return document.createComment(t)}function yo(t,e,n){t.insertBefore(e,n)}function mo(t,e){t.removeChild(e)}function go(t,e){t.appendChild(e)}function bo(t){return t.parentNode}function _o(t){return t.nextSibling}function wo(t){return t.tagName}function xo(t,e){t.textContent=e}function Oo(t,e){t.setAttribute(e,"")}var Co=Object.freeze({createElement:lo,createElementNS:po,createTextNode:ho,createComment:vo,insertBefore:yo,removeChild:mo,appendChild:go,parentNode:bo,nextSibling:_o,tagName:wo,setTextContent:xo,setStyleScope:Oo}),Ao={create:function(t,e){So(e)},update:function(t,e){t.data.ref!==e.data.ref&&(So(t,!0),So(e))},destroy:function(t){So(t,!0)}};function So(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var ko=new bt("",{},[]),jo=["create","activate","update","remove","destroy"];function $o(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&Eo(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function Eo(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||uo(r)&&uo(i)}function To(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Po(t){var e,n,a={},s=t.modules,u=t.nodeOps;for(e=0;ev?(l=r(n[g+1])?null:n[g+1].elm,O(t,l,n,h,g,i)):h>g&&A(e,p,v)}function j(t,e,n,r){for(var i=n;i-1?Ho(t,e,n):qr(e)?Kr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Vr(e)?t.setAttribute(e,Hr(e,n)):Wr(e)?Kr(n)?t.removeAttributeNS(zr,Gr(e)):t.setAttributeNS(zr,e,n):Ho(t,e,n)}function Ho(t,e,n){if(Kr(n))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var qo={create:Vo,update:Vo};function zo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var c=Xr(e),s=n._transitionClasses;o(s)&&(c=Qr(c,Zr(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}}var Wo,Go={create:zo,update:zo},Ko="__r",Xo="__c";function Jo(t){if(o(t[Ko])){var e=tt?"change":"input";t[e]=[].concat(t[Ko],t[e]||[]),delete t[Ko]}o(t[Xo])&&(t.change=[].concat(t[Xo],t.change||[]),delete t[Xo])}function Yo(t,e,n){var r=Wo;return function o(){var i=e.apply(null,arguments);null!==i&&ti(t,o,n,r)}}var Qo=ae&&!(ot&&Number(ot[1])<=53);function Zo(t,e,n,r){if(Qo){var o=Gn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Wo.addEventListener(t,e,at?{capture:n,passive:r}:n)}function ti(t,e,n,r){(r||Wo).removeEventListener(t,e._wrapper||e,n)}function ei(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Wo=e.elm,Jo(n),_e(n,o,Zo,ti,Yo,e.context),Wo=void 0}}var ni,ri={create:ei,update:ei};function oi(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,c=t.data.domProps||{},s=e.data.domProps||{};for(n in o(s.__ob__)&&(s=e.data.domProps=T({},s)),c)n in s||(a[n]="");for(n in s){if(i=s[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===c[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);ii(a,u)&&(a.value=u)}else if("innerHTML"===n&&oo(a.tagName)&&r(a.innerHTML)){ni=ni||document.createElement("div"),ni.innerHTML=""+i+"";var f=ni.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(f.firstChild)a.appendChild(f.firstChild)}else if(i!==c[n])try{a[n]=i}catch(Oa){}}}}function ii(t,e){return!t.composing&&("OPTION"===t.tagName||ai(t,e)||ci(t,e))}function ai(t,e){var n=!0;try{n=document.activeElement!==t}catch(Oa){}return n&&t.value!==e}function ci(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var si={create:oi,update:oi},ui=w((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function fi(t){var e=li(t.style);return t.staticStyle?T(t.staticStyle,e):e}function li(t){return Array.isArray(t)?P(t):"string"===typeof t?ui(t):t}function pi(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=fi(o.data))&&T(r,n)}(n=fi(t.data))&&T(r,n);var i=t;while(i=i.parent)i.data&&(n=fi(i.data))&&T(r,n);return r}var di,hi=/^--/,vi=/\s*!important$/,yi=function(t,e,n){if(hi.test(e))t.style.setProperty(e,n);else if(vi.test(n))t.style.setProperty(S(e),n.replace(vi,""),"important");else{var r=gi(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(wi).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Oi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(wi).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Ci(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&T(e,Ai(t.name||"v")),T(e,t),e}return"string"===typeof t?Ai(t):void 0}}var Ai=w((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Si=J&&!et,ki="transition",ji="animation",$i="transition",Ei="transitionend",Ti="animation",Pi="animationend";Si&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&($i="WebkitTransition",Ei="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ti="WebkitAnimation",Pi="webkitAnimationEnd"));var Ii=J?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Li(t){Ii((function(){Ii(t)}))}function Ri(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),xi(t,e))}function Mi(t,e){t._transitionClasses&&g(t._transitionClasses,e),Oi(t,e)}function Di(t,e,n){var r=Fi(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var c=o===ki?Ei:Pi,s=0,u=function(){t.removeEventListener(c,f),n()},f=function(e){e.target===t&&++s>=a&&u()};setTimeout((function(){s0&&(n=ki,f=a,l=i.length):e===ji?u>0&&(n=ji,f=u,l=s.length):(f=Math.max(a,u),n=f>0?a>u?ki:ji:null,l=n?n===ki?i.length:s.length:0);var p=n===ki&&Ni.test(r[$i+"Property"]);return{type:n,timeout:f,propCount:l,hasTransform:p}}function Ui(t,e){while(t.length1}function Wi(t,e){!0!==e.data.show&&Bi(e)}var Gi=J?{create:Wi,activate:Wi,remove:function(t,e){!0!==t.data.show?Hi(t,e):e()}}:{},Ki=[qo,Go,ri,si,_i,Gi],Xi=Ki.concat(Uo),Ji=Po({nodeOps:Co,modules:Xi});et&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&oa(t,"input")}));var Yi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?we(n,"postpatch",(function(){Yi.componentUpdated(t,e,n)})):Qi(t,e,n.context),t._vOptions=[].map.call(t.options,ea)):("textarea"===n.tag||uo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",na),t.addEventListener("compositionend",ra),t.addEventListener("change",ra),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Qi(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,ea);if(o.some((function(t,e){return!M(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return ta(t,o)})):e.value!==e.oldValue&&ta(e.value,o);i&&oa(t,"change")}}}};function Qi(t,e,n){Zi(t,e,n),(tt||nt)&&setTimeout((function(){Zi(t,e,n)}),0)}function Zi(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,c=0,s=t.options.length;c-1,a.selected!==i&&(a.selected=i);else if(M(ea(a),r))return void(t.selectedIndex!==c&&(t.selectedIndex=c));o||(t.selectedIndex=-1)}}function ta(t,e){return e.every((function(e){return!M(e,t)}))}function ea(t){return"_value"in t?t._value:t.value}function na(t){t.target.composing=!0}function ra(t){t.target.composing&&(t.target.composing=!1,oa(t.target,"input"))}function oa(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function ia(t){return!t.componentInstance||t.data&&t.data.transition?t:ia(t.componentInstance._vnode)}var aa={bind:function(t,e,n){var r=e.value;n=ia(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Bi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=ia(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Bi(n,(function(){t.style.display=t.__vOriginalDisplay})):Hi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},ca={model:Yi,show:aa},sa={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ua(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ua(On(e.children)):t}function fa(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[O(i)]=o[i];return e}function la(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function pa(t){while(t=t.parent)if(t.data.transition)return!0}function da(t,e){return e.key===t.key&&e.tag===t.tag}var ha=function(t){return t.tag||xn(t)},va=function(t){return"show"===t.name},ya={name:"transition",props:sa,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ha),n.length)){0;var r=this.mode;0;var o=n[0];if(pa(this.$vnode))return o;var i=ua(o);if(!i)return o;if(this._leaving)return la(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:c(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=fa(this),u=this._vnode,f=ua(u);if(i.data.directives&&i.data.directives.some(va)&&(i.data.show=!0),f&&f.data&&!da(i,f)&&!xn(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=T({},s);if("out-in"===r)return this._leaving=!0,we(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),la(t,o);if("in-out"===r){if(xn(i))return u;var p,d=function(){p()};we(s,"afterEnter",d),we(s,"enterCancelled",d),we(l,"delayLeave",(function(t){p=t}))}}return o}}},ma=T({tag:String,moveClass:String},sa);delete ma.mode;var ga={props:ma,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Tn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=fa(this),c=0;cn)e.push(arguments[n++]);return _[++b]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(b),b},v=function(t){delete _[t]},"process"==s(y)?r=function(t){y.nextTick(O(t))}:g&&g.now?r=function(t){g.now(O(t))}:m&&!p?(o=new m,i=o.port2,o.port1.onmessage=C,r=u(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||c(A)||"file:"===d.protocol?r=w in l("script")?function(t){f.appendChild(l("script"))[w]=function(){f.removeChild(this),x(t)}}:function(t){setTimeout(O(t),0)}:(r=A,a.addEventListener("message",C,!1))),t.exports={set:h,clear:v}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),c=r.length,s=0;while(c>s)o.f(t,n=r[s++],e[n]);return t}},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3f8c":function(t,e){t.exports={}},4082:function(t,e,n){n("a4d3");var r=n("f0e4");function o(t,e){if(null==t)return{};var n,o,i=r(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}t.exports=o,t.exports.__esModule=!0,t.exports["default"]=t.exports},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},4930:function(t,e,n){var r=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),f=i(a,u);if(t&&n!=n){while(u>f)if(c=s[f++],c!=c)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4de4":function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").filter,i=n("1dde"),a=n("ae40"),c=i("filter"),s=a("filter");r({target:"Array",proto:!0,forced:!c||!s},{filter:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"5a34":function(t,e,n){var r=n("44e7");t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),s=n("7b0b"),u=n("44ad"),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||i(f({},e)).join("")!=o}))?function(t,e){var n=s(t),o=arguments.length,f=1,l=a.f,p=c.f;while(o>f){var d,h=u(arguments[f++]),v=l?i(h).concat(l(h)):i(h),y=v.length,m=0;while(y>m)d=v[m++],r&&!p.call(h,d)||(n[d]=h[d])}return n}:f},"65f0":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t,e){var n;return o(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!o(n.prototype)?r(n)&&(n=n[a],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),f=n("5135"),l=n("f772"),p=n("d012"),d=c.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},v=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a){var y=new d,m=y.get,g=y.has,b=y.set;r=function(t,e){return b.call(y,t,e),e},o=function(t){return m.call(y,t)||{}},i=function(t){return g.call(y,t)}}else{var _=l("state");p[_]=!0,r=function(t,e){return u(t,_,e),e},o=function(t){return f(t,_)?t[_]:{}},i=function(t){return f(t,_)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:v}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,f=s.enforce,l=String(String).split("String");(t.exports=function(t,e,n,c){var s=!!c&&!!c.unsafe,u=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),f(n).source=l.join("string"==typeof e?e:"")),t!==r?(s?!p&&t[e]&&(u=!0):delete t[e],u?t[e]=n:o(t,e,n)):u?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),s=n("1be4"),u=n("cc12"),f=n("f772"),l=">",p="<",d="prototype",h="script",v=f("IE_PROTO"),y=function(){},m=function(t){return p+h+l+t+p+"/"+h+l},g=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},b=function(){var t,e=u("iframe"),n="java"+h+":";return e.style.display="none",s.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(m("document.F=Object")),t.close(),t.F},_=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}_=r?g(r):b();var t=a.length;while(t--)delete _[d][a[t]];return _()};c[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(y[d]=o(t),n=new y,y[d]=null,n[v]=t):n=_(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),c=n("d44e"),s=n("9112"),u=n("6eeb"),f=n("b622"),l=n("c430"),p=n("3f8c"),d=n("ae93"),h=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,y=f("iterator"),m="keys",g="values",b="entries",_=function(){return this};t.exports=function(t,e,n,f,d,w,x){o(n,e,f);var O,C,A,S=function(t){if(t===d&&T)return T;if(!v&&t in $)return $[t];switch(t){case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)};case b:return function(){return new n(this,t)}}return function(){return new n(this)}},k=e+" Iterator",j=!1,$=t.prototype,E=$[y]||$["@@iterator"]||d&&$[d],T=!v&&E||S(d),P="Array"==e&&$.entries||E;if(P&&(O=i(P.call(new t)),h!==Object.prototype&&O.next&&(l||i(O)===h||(a?a(O,h):"function"!=typeof O[y]&&s(O,y,_)),c(O,k,!0,!0),l&&(p[k]=_))),d==g&&E&&E.name!==g&&(j=!0,T=function(){return E.call(this)}),l&&!x||$[y]===T||s($,y,T),p[e]=T,d)if(C={values:S(g),keys:w?T:S(m),entries:S(b)},x)for(A in C)(v||j||!(A in $))&&u($,A,C[A]);else r({target:e,proto:!0,forced:v||j},C);return C}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("c04e"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8a79":function(t,e,n){"use strict";var r=n("23e7"),o=n("06cf").f,i=n("50c4"),a=n("5a34"),c=n("1d80"),s=n("ab13"),u=n("c430"),f="".endsWith,l=Math.min,p=s("endsWith"),d=!u&&!p&&!!function(){var t=o(String.prototype,"endsWith");return t&&!t.writable}();r({target:"String",proto:!0,forced:!d&&!p},{endsWith:function(t){var e=String(c(this));a(t);var n=arguments.length>1?arguments[1]:void 0,r=i(e.length),o=void 0===n?r:l(i(n),r),s=String(t);return f?f.call(e,s,o):e.slice(o-s.length,o)===s}})},"8c4f":function(t,e,n){"use strict"; +/*! + * vue-router v3.1.6 + * (c) 2020 Evan You + * @license MIT + */function r(t,e){0}function o(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function i(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function a(t,e){for(var n in e)t[n]=e[n];return t}var c={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;var c=o.$createElement,u=n.name,f=o.$route,l=o._routerViewCache||(o._routerViewCache={}),p=0,d=!1;while(o&&o._routerRoot!==o){var h=o.$vnode?o.$vnode.data:{};h.routerView&&p++,h.keepAlive&&o._directInactive&&o._inactive&&(d=!0),o=o.$parent}if(i.routerViewDepth=p,d){var v=l[u],y=v&&v.component;return y?(v.configProps&&s(y,i,v.route,v.configProps),c(y,i,r)):c()}var m=f.matched[p],g=m&&m.components[u];if(!m||!g)return l[u]=null,c();l[u]={component:g},i.registerRouteInstance=function(t,e){var n=m.instances[u];(e&&n!==t||!e&&n===t)&&(m.instances[u]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){m.instances[u]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==m.instances[u]&&(m.instances[u]=t.componentInstance)};var b=m.props&&m.props[u];return b&&(a(l[u],{route:f,configProps:b}),s(g,i,f,b)),c(g,i,r)}};function s(t,e,n,r){var o=e.props=u(n,r);if(o){o=e.props=a({},o);var i=e.attrs=e.attrs||{};for(var c in o)t.props&&c in t.props||(i[c]=o[c],delete o[c])}}function u(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}var f=/[!'()*]/g,l=function(t){return"%"+t.charCodeAt(0).toString(16)},p=/%2C/g,d=function(t){return encodeURIComponent(t).replace(f,l).replace(p,",")},h=decodeURIComponent;function v(t,e,n){void 0===e&&(e={});var r,o=n||y;try{r=o(t||"")}catch(a){r={}}for(var i in e)r[i]=e[i];return r}function y(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=h(n.shift()),o=n.length>0?h(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function m(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return d(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(d(e)):r.push(d(e)+"="+d(t)))})),r.join("&")}return d(e)+"="+d(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var g=/\/?$/;function b(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=_(i)}catch(c){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:O(e,o),matched:t?x(t):[]};return n&&(a.redirectedFrom=O(n,o)),Object.freeze(a)}function _(t){if(Array.isArray(t))return t.map(_);if(t&&"object"===typeof t){var e={};for(var n in t)e[n]=_(t[n]);return e}return t}var w=b(null,{path:"/"});function x(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function O(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;void 0===o&&(o="");var i=e||m;return(n||"/")+i(r)+o}function C(t,e){return e===w?t===e:!!e&&(t.path&&e.path?t.path.replace(g,"")===e.path.replace(g,"")&&t.hash===e.hash&&A(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&A(t.query,e.query)&&A(t.params,e.params)))}function A(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"===typeof r&&"object"===typeof o?A(r,o):String(r)===String(o)}))}function S(t,e){return 0===t.path.replace(g,"/").indexOf(e.path.replace(g,"/"))&&(!e.hash||t.hash===e.hash)&&k(t.query,e.query)}function k(t,e){for(var n in e)if(!(n in t))return!1;return!0}function j(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function E(t){return t.replace(/\/\//g,"/")}var T=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},P=Y,I=N,L=F,R=B,M=J,D=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function N(t,e){var n,r=[],o=0,i=0,a="",c=e&&e.delimiter||"/";while(null!=(n=D.exec(t))){var s=n[0],u=n[1],f=n.index;if(a+=t.slice(i,f),i=f+s.length,u)a+=u[1];else{var l=t[i],p=n[2],d=n[3],h=n[4],v=n[5],y=n[6],m=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=l&&l!==p,b="+"===y||"*"===y,_="?"===y||"*"===y,w=n[2]||c,x=h||v;r.push({name:d||o++,prefix:p||"",delimiter:w,optional:_,repeat:b,partial:g,asterisk:!!m,pattern:x?q(x):m?".*":"[^"+H(w)+"]+?"})}}return i1||!w.length)return 0===w.length?t():t("span",{},w)}if("a"===this.tag)_.on=g,_.attrs={href:s};else{var x=ct(this.$slots.default);if(x){x.isStatic=!1;var O=x.data=a({},x.data);for(var A in O.on=O.on||{},O.on){var k=O.on[A];A in g&&(O.on[A]=Array.isArray(k)?k:[k])}for(var j in g)j in O.on?O.on[j].push(g[j]):O.on[j]=m;var $=x.data.attrs=a({},x.data.attrs);$.href=s}else _.on=g}return t(this.tag,_,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function ct(t){if(t)for(var e,n=0;n-1&&(c.params[p]=n.params[p]);return c.path=Z(u.path,c.params,'named route "'+s+'"'),f(u,c,a)}if(c.path){c.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Nt(t){return function(e,n,r){var i=!1,a=0,c=null;Ft(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){i=!0,a++;var u,f=Ht((function(e){Bt(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),n.components[s]=e,a--,a<=0&&r()})),l=Ht((function(t){var e="Failed to resolve async component "+s+": "+t;c||(c=o(t)?t:new Error(e),r(c))}));try{u=t(f,l)}catch(d){l(d)}if(u)if("function"===typeof u.then)u.then(f,l);else{var p=u.component;p&&"function"===typeof p.then&&p.then(f,l)}}})),i||r()}}function Ft(t,e){return Ut(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Ut(t){return Array.prototype.concat.apply([],t)}var Vt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Bt(t){return t.__esModule||Vt&&"Module"===t[Symbol.toStringTag]}function Ht(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var qt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);qt._name="NavigationDuplicated";var zt=function(t,e){this.router=t,this.base=Wt(e),this.current=w,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Wt(t){if(!t)if(ut){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function Gt(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function se(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ue(t){Lt?Rt(se(t)):window.location.hash=t}function fe(t){Lt?Mt(se(t)):window.location.replace(se(t))}var le=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){i(qt,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(zt),pe=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Lt&&!1!==t.fallback,this.fallback&&(e="hash"),ut||(e="abstract"),this.mode=e,e){case"history":this.history=new ne(this,t.base);break;case"hash":this.history=new oe(this,t.base,this.fallback);break;case"abstract":this.history=new le(this,t.base);break;default:0}},de={currentRoute:{configurable:!0}};function he(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function ve(t,e,n){var r="hash"===n?"#"+e:e;return t?E(t+"/"+r):r}pe.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},de.currentRoute.get=function(){return this.history&&this.history.current},pe.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof ne)n.transitionTo(n.getCurrentLocation());else if(n instanceof oe){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},pe.prototype.beforeEach=function(t){return he(this.beforeHooks,t)},pe.prototype.beforeResolve=function(t){return he(this.resolveHooks,t)},pe.prototype.afterEach=function(t){return he(this.afterHooks,t)},pe.prototype.onReady=function(t,e){this.history.onReady(t,e)},pe.prototype.onError=function(t){this.history.onError(t)},pe.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},pe.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},pe.prototype.go=function(t){this.history.go(t)},pe.prototype.back=function(){this.go(-1)},pe.prototype.forward=function(){this.go(1)},pe.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},pe.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=tt(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,c=ve(a,i,this.mode);return{location:r,route:o,href:c,normalizedTo:r,resolved:o}},pe.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==w&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(pe.prototype,de),pe.install=st,pe.version="3.1.6",ut&&window.Vue&&window.Vue.use(pe),e["a"]=pe},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},"94ca":function(t,e,n){var r=n("d039"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==u||n!=s&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},s=i.NATIVE="N",u=i.POLYFILL="P";t.exports=i},9523:function(t,e){function n(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}t.exports=n,t.exports.__esModule=!0,t.exports["default"]=t.exports},"99af":function(t,e,n){"use strict";var r=n("23e7"),o=n("d039"),i=n("e8b5"),a=n("861d"),c=n("7b0b"),s=n("50c4"),u=n("8418"),f=n("65f0"),l=n("1dde"),p=n("b622"),d=n("2d00"),h=p("isConcatSpreadable"),v=9007199254740991,y="Maximum allowed index exceeded",m=d>=51||!o((function(){var t=[];return t[h]=!1,t.concat()[0]!==t})),g=l("concat"),b=function(t){if(!a(t))return!1;var e=t[h];return void 0!==e?!!e:i(t)},_=!m||!g;r({target:"Array",proto:!0,forced:_},{concat:function(t){var e,n,r,o,i,a=c(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;ev)throw TypeError(y);for(n=0;n=v)throw TypeError(y);u(l,p++,i)}return l.length=p,l}})},"9bdd":function(t,e,n){var r=n("825a");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t["return"];throw void 0!==i&&r(i.call(t)),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),c=n("3f8c"),s=function(){return this};t.exports=function(t,e,n){var u=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,u,!1,!0),c[u]=s,t}},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),s=n("4930"),u=n("fdbf"),f=n("d039"),l=n("5135"),p=n("e8b5"),d=n("861d"),h=n("825a"),v=n("7b0b"),y=n("fc6a"),m=n("c04e"),g=n("5c6c"),b=n("7c73"),_=n("df75"),w=n("241c"),x=n("057f"),O=n("7418"),C=n("06cf"),A=n("9bf2"),S=n("d1e7"),k=n("9112"),j=n("6eeb"),$=n("5692"),E=n("f772"),T=n("d012"),P=n("90e3"),I=n("b622"),L=n("e538"),R=n("746f"),M=n("d44e"),D=n("69f3"),N=n("b727").forEach,F=E("hidden"),U="Symbol",V="prototype",B=I("toPrimitive"),H=D.set,q=D.getterFor(U),z=Object[V],W=o.Symbol,G=i("JSON","stringify"),K=C.f,X=A.f,J=x.f,Y=S.f,Q=$("symbols"),Z=$("op-symbols"),tt=$("string-to-symbol-registry"),et=$("symbol-to-string-registry"),nt=$("wks"),rt=o.QObject,ot=!rt||!rt[V]||!rt[V].findChild,it=c&&f((function(){return 7!=b(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=K(z,e);r&&delete z[e],X(t,e,n),r&&t!==z&&X(z,e,r)}:X,at=function(t,e){var n=Q[t]=b(W[V]);return H(n,{type:U,tag:t,description:e}),c||(n.description=e),n},ct=u?function(t){return"symbol"==typeof t}:function(t){return Object(t)instanceof W},st=function(t,e,n){t===z&&st(Z,e,n),h(t);var r=m(e,!0);return h(n),l(Q,r)?(n.enumerable?(l(t,F)&&t[F][r]&&(t[F][r]=!1),n=b(n,{enumerable:g(0,!1)})):(l(t,F)||X(t,F,g(1,{})),t[F][r]=!0),it(t,r,n)):X(t,r,n)},ut=function(t,e){h(t);var n=y(e),r=_(n).concat(ht(n));return N(r,(function(e){c&&!lt.call(n,e)||st(t,e,n[e])})),t},ft=function(t,e){return void 0===e?b(t):ut(b(t),e)},lt=function(t){var e=m(t,!0),n=Y.call(this,e);return!(this===z&&l(Q,e)&&!l(Z,e))&&(!(n||!l(this,e)||!l(Q,e)||l(this,F)&&this[F][e])||n)},pt=function(t,e){var n=y(t),r=m(e,!0);if(n!==z||!l(Q,r)||l(Z,r)){var o=K(n,r);return!o||!l(Q,r)||l(n,F)&&n[F][r]||(o.enumerable=!0),o}},dt=function(t){var e=J(y(t)),n=[];return N(e,(function(t){l(Q,t)||l(T,t)||n.push(t)})),n},ht=function(t){var e=t===z,n=J(e?Z:y(t)),r=[];return N(n,(function(t){!l(Q,t)||e&&!l(z,t)||r.push(Q[t])})),r};if(s||(W=function(){if(this instanceof W)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,e=P(t),n=function(t){this===z&&n.call(Z,t),l(this,F)&&l(this[F],e)&&(this[F][e]=!1),it(this,e,g(1,t))};return c&&ot&&it(z,e,{configurable:!0,set:n}),at(e,t)},j(W[V],"toString",(function(){return q(this).tag})),j(W,"withoutSetter",(function(t){return at(P(t),t)})),S.f=lt,A.f=st,C.f=pt,w.f=x.f=dt,O.f=ht,L.f=function(t){return at(I(t),t)},c&&(X(W[V],"description",{configurable:!0,get:function(){return q(this).description}}),a||j(z,"propertyIsEnumerable",lt,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!s,sham:!s},{Symbol:W}),N(_(nt),(function(t){R(t)})),r({target:U,stat:!0,forced:!s},{for:function(t){var e=String(t);if(l(tt,e))return tt[e];var n=W(e);return tt[e]=n,et[n]=e,n},keyFor:function(t){if(!ct(t))throw TypeError(t+" is not a symbol");if(l(et,t))return et[t]},useSetter:function(){ot=!0},useSimple:function(){ot=!1}}),r({target:"Object",stat:!0,forced:!s,sham:!c},{create:ft,defineProperty:st,defineProperties:ut,getOwnPropertyDescriptor:pt}),r({target:"Object",stat:!0,forced:!s},{getOwnPropertyNames:dt,getOwnPropertySymbols:ht}),r({target:"Object",stat:!0,forced:f((function(){O.f(1)}))},{getOwnPropertySymbols:function(t){return O.f(v(t))}}),G){var vt=!s||f((function(){var t=W();return"[null]"!=G([t])||"{}"!=G({a:t})||"{}"!=G(Object(t))}));r({target:"JSON",stat:!0,forced:vt},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(d(e)||void 0!==t)&&!ct(t))return p(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!ct(e))return e}),o[1]=e,G.apply(null,o)}})}W[V][B]||k(W[V],B,W[V].valueOf),M(W,U),T[F]=!0},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),s=n("4840"),u=n("cdf9"),f=n("6eeb"),l=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));r({target:"Promise",proto:!0,real:!0,forced:l},{finally:function(t){var e=s(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}}),o||"function"!=typeof i||i.prototype["finally"]||f(i.prototype,"finally",c("Promise").prototype["finally"])},ab13:function(t,e,n){var r=n("b622"),o=r("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,"/./"[t](e)}catch(r){}}return!1}},ae40:function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("5135"),a=Object.defineProperty,c={},s=function(t){throw t};t.exports=function(t,e){if(i(c,t))return c[t];e||(e={});var n=[][t],u=!!i(e,"ACCESSORS")&&e.ACCESSORS,f=i(e,0)?e[0]:s,l=i(e,1)?e[1]:void 0;return c[t]=!!n&&!o((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:s}):t[1]=1,n.call(t,f,l)}))}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("e163"),c=n("9112"),s=n("5135"),u=n("b622"),f=n("c430"),l=u("iterator"),p=!1,d=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=a(a(i)),o!==Object.prototype&&(r=o)):p=!0),void 0==r&&(r={}),f||s(r,l)||c(r,l,d),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b575:function(t,e,n){var r,o,i,a,c,s,u,f,l=n("da84"),p=n("06cf").f,d=n("c6b6"),h=n("2cf4").set,v=n("1cdc"),y=l.MutationObserver||l.WebKitMutationObserver,m=l.process,g=l.Promise,b="process"==d(m),_=p(l,"queueMicrotask"),w=_&&_.value;w||(r=function(){var t,e;b&&(t=m.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},b?a=function(){m.nextTick(r)}:y&&!v?(c=!0,s=document.createTextNode(""),new y(r).observe(s,{characterData:!0}),a=function(){s.data=c=!c}):g&&g.resolve?(u=g.resolve(void 0),f=u.then,a=function(){f.call(u,r)}):a=function(){h.call(l,r)}),t.exports=w||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),f=r.Symbol,l=s?f:f&&f.withoutSetter||a;t.exports=function(t){return i(u,t)||(c&&i(f,t)?u[t]=f[t]:u[t]=l("Symbol."+t)),u[t]}},b64b:function(t,e,n){var r=n("23e7"),o=n("7b0b"),i=n("df75"),a=n("d039"),c=a((function(){i(1)}));r({target:"Object",stat:!0,forced:c},{keys:function(t){return i(o(t))}})},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),s=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,f=4==t,l=6==t,p=5==t||l;return function(d,h,v,y){for(var m,g,b=i(d),_=o(b),w=r(h,v,3),x=a(_.length),O=0,C=y||c,A=e?C(d,x):n?C(d,0):void 0;x>O;O++)if((p||O in _)&&(m=_[O],g=w(m,O,b),t))if(e)A[O]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return O;case 2:s.call(A,m)}else if(f)return!1;return l?-1:u||f?f:A}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d81d:function(t,e,n){"use strict";var r=n("23e7"),o=n("b727").map,i=n("1dde"),a=n("ae40"),c=i("map"),s=a("map");r({target:"Array",proto:!0,forced:!c||!s},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n("c8ba"))},dbb4:function(t,e,n){var r=n("23e7"),o=n("83ab"),i=n("56ef"),a=n("fc6a"),c=n("06cf"),s=n("8418");r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(t){var e,n,r=a(t),o=c.f,u=i(r),f={},l=0;while(u.length>l)n=o(r,e=u[l++]),void 0!==n&&s(f,e,n);return f}})},ded3:function(t,e,n){n("b64b"),n("a4d3"),n("4de4"),n("d3b7"),n("e439"),n("159b"),n("dbb4");var r=n("9523");function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e439:function(t,e,n){var r=n("23e7"),o=n("d039"),i=n("fc6a"),a=n("06cf").f,c=n("83ab"),s=o((function(){a(1)})),u=!c||s;r({target:"Object",stat:!0,forced:u,sham:!c},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),s=n("c430"),u=n("da84"),f=n("d066"),l=n("fea9"),p=n("6eeb"),d=n("e2cc"),h=n("d44e"),v=n("2626"),y=n("861d"),m=n("1c0b"),g=n("19aa"),b=n("c6b6"),_=n("8925"),w=n("2266"),x=n("1c7e"),O=n("4840"),C=n("2cf4").set,A=n("b575"),S=n("cdf9"),k=n("44de"),j=n("f069"),$=n("e667"),E=n("69f3"),T=n("94ca"),P=n("b622"),I=n("2d00"),L=P("species"),R="Promise",M=E.get,D=E.set,N=E.getterFor(R),F=l,U=u.TypeError,V=u.document,B=u.process,H=f("fetch"),q=j.f,z=q,W="process"==b(B),G=!!(V&&V.createEvent&&u.dispatchEvent),K="unhandledrejection",X="rejectionhandled",J=0,Y=1,Q=2,Z=1,tt=2,et=T(R,(function(){var t=_(F)!==String(F);if(!t){if(66===I)return!0;if(!W&&"function"!=typeof PromiseRejectionEvent)return!0}if(s&&!F.prototype["finally"])return!0;if(I>=51&&/native code/.test(F))return!1;var e=F.resolve(1),n=function(t){t((function(){}),(function(){}))},r=e.constructor={};return r[L]=n,!(e.then((function(){}))instanceof n)})),nt=et||!x((function(t){F.all(t)["catch"]((function(){}))})),rt=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},ot=function(t,e,n){if(!e.notified){e.notified=!0;var r=e.reactions;A((function(){var o=e.value,i=e.state==Y,a=0;while(r.length>a){var c,s,u,f=r[a++],l=i?f.ok:f.fail,p=f.resolve,d=f.reject,h=f.domain;try{l?(i||(e.rejection===tt&&st(t,e),e.rejection=Z),!0===l?c=o:(h&&h.enter(),c=l(o),h&&(h.exit(),u=!0)),c===f.promise?d(U("Promise-chain cycle")):(s=rt(c))?s.call(c,p,d):p(c)):d(o)}catch(v){h&&!u&&h.exit(),d(v)}}e.reactions=[],e.notified=!1,n&&!e.rejection&&at(t,e)}))}},it=function(t,e,n){var r,o;G?(r=V.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),u.dispatchEvent(r)):r={promise:e,reason:n},(o=u["on"+t])?o(r):t===K&&k("Unhandled promise rejection",n)},at=function(t,e){C.call(u,(function(){var n,r=e.value,o=ct(e);if(o&&(n=$((function(){W?B.emit("unhandledRejection",r,t):it(K,t,r)})),e.rejection=W||ct(e)?tt:Z,n.error))throw n.value}))},ct=function(t){return t.rejection!==Z&&!t.parent},st=function(t,e){C.call(u,(function(){W?B.emit("rejectionHandled",t):it(X,t,e.value)}))},ut=function(t,e,n,r){return function(o){t(e,n,o,r)}},ft=function(t,e,n,r){e.done||(e.done=!0,r&&(e=r),e.value=n,e.state=Q,ot(t,e,!0))},lt=function(t,e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(t===n)throw U("Promise can't be resolved itself");var o=rt(n);o?A((function(){var r={done:!1};try{o.call(n,ut(lt,t,r,e),ut(ft,t,r,e))}catch(i){ft(t,r,i,e)}})):(e.value=n,e.state=Y,ot(t,e,!1))}catch(i){ft(t,{done:!1},i,e)}}};et&&(F=function(t){g(this,F,R),m(t),r.call(this);var e=M(this);try{t(ut(lt,this,e),ut(ft,this,e))}catch(n){ft(this,e,n)}},r=function(t){D(this,{type:R,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:J,value:void 0})},r.prototype=d(F.prototype,{then:function(t,e){var n=N(this),r=q(O(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=W?B.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=J&&ot(this,n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=M(t);this.promise=t,this.resolve=ut(lt,t,e),this.reject=ut(ft,t,e)},j.f=q=function(t){return t===F||t===i?new o(t):z(t)},s||"function"!=typeof l||(a=l.prototype.then,p(l.prototype,"then",(function(t,e){var n=this;return new F((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof H&&c({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return S(F,H.apply(u,arguments))}}))),c({global:!0,wrap:!0,forced:et},{Promise:F}),h(F,R,!1,!0),v(R),i=f(R),c({target:R,stat:!0,forced:et},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),c({target:R,stat:!0,forced:s||et},{resolve:function(t){return S(s&&this===i?F:this,t)}}),c({target:R,stat:!0,forced:nt},{all:function(t){var e=this,n=q(e),r=n.resolve,o=n.reject,i=$((function(){var n=m(e.resolve),i=[],a=0,c=1;w(t,(function(t){var s=a++,u=!1;i.push(void 0),c++,n.call(e,t).then((function(t){u||(u=!0,i[s]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,o=$((function(){var o=m(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u=0||(o[n]=t[n]);return o}n("b64b"),t.exports=r,t.exports.__esModule=!0,t.exports["default"]=t.exports},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),c=n("50c4"),s=n("fc6a"),u=n("8418"),f=n("b622"),l=n("1dde"),p=n("ae40"),d=l("slice"),h=p("slice",{ACCESSORS:!0,0:0,1:2}),v=f("species"),y=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!d||!h},{slice:function(t,e){var n,r,f,l=s(this),p=c(l.length),d=a(t,p),h=a(void 0===e?p:e,p);if(i(l)&&(n=l.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[v],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return y.call(l,d,h);for(r=new(void 0===n?Array:n)(m(h-d,0)),f=0;d 1 ? arguments[1] : undefined);\n} : [].forEach;\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. - - diff --git a/src/components/projects/Greenbox.vue b/src/components/projects/Greenbox.vue deleted file mode 100644 index dbd8874..0000000 --- a/src/components/projects/Greenbox.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/projects/KnimeHub.vue b/src/components/projects/KnimeHub.vue deleted file mode 100644 index fb3147d..0000000 --- a/src/components/projects/KnimeHub.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/projects/Mechanics.vue b/src/components/projects/Mechanics.vue deleted file mode 100644 index e603f63..0000000 --- a/src/components/projects/Mechanics.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/projects/Phoenix.vue b/src/components/projects/Phoenix.vue deleted file mode 100644 index 33e5706..0000000 --- a/src/components/projects/Phoenix.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/projects/QueryBuilder.vue b/src/components/projects/QueryBuilder.vue deleted file mode 100644 index be0a8ea..0000000 --- a/src/components/projects/QueryBuilder.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/src/components/projects/ScenarioManager.vue b/src/components/projects/ScenarioManager.vue deleted file mode 100644 index 9fd6968..0000000 --- a/src/components/projects/ScenarioManager.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/projects/Thesis.vue b/src/components/projects/Thesis.vue deleted file mode 100644 index e41946f..0000000 --- a/src/components/projects/Thesis.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - - - diff --git a/src/components/projects/TrafficTicket.vue b/src/components/projects/TrafficTicket.vue deleted file mode 100644 index 1143f99..0000000 --- a/src/components/projects/TrafficTicket.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - \ No newline at end of file diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 260aa6e..0000000 --- a/src/main.js +++ /dev/null @@ -1,16 +0,0 @@ -// The Vue build version to load with the `import` command -// (runtime-only or standalone) has been set in webpack.base.conf with an alias. -import Vue from 'vue' -import App from './App' -import router from './router' - -Vue.config.productionTip = false - -/* eslint-disable no-new */ -new Vue({ - render: h => h(App), - el: '#app', - router, - components: { App }, - template: '' -}).$mount('#app') diff --git a/src/router/index.js b/src/router/index.js deleted file mode 100644 index a418014..0000000 --- a/src/router/index.js +++ /dev/null @@ -1,41 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import About from '@/components/content/About.vue' -import CodeSnippets from '@/components/projects/CodeSnippets.vue' -import EsGehtLos from '@/components/projects/EsGehtLos.vue' -import Greenbox from '@/components/projects/Greenbox.vue' -import KnimeHub from '@/components/projects/KnimeHub.vue' -import LandingPage from '@/components/content/LandingPage.vue' -import Legal from '@/components/content/Legal.vue' -import Mechanics from '@/components/projects/Mechanics.vue' -import PageNotFound from '@/components/content/PageNotFound.vue' -import Phoenix from '@/components/projects/Phoenix.vue' -import QueryBuilder from '@/components/projects/QueryBuilder.vue' -import ScenarioManager from '@/components/projects/ScenarioManager.vue' -import Thesis from '@/components/projects/Thesis.vue' -import TrafficTicket from '@/components/projects/TrafficTicket.vue' - -Vue.use(Router) - -export default new Router({ - routes: [ - { path: '/', component: LandingPage }, - { path: '/about', component: About }, - { path: '/codesnippets', component: CodeSnippets }, - { path: '/esgehtlos', component: EsGehtLos }, - { path: '/greenbox', component: Greenbox }, - { path: '/knimehub', component: KnimeHub }, - { path: '/legal', component: Legal}, - { path: '/mechanics', component: Mechanics }, - { path: '/phoenix', component: Phoenix }, - { path: '/querybuilder', component: QueryBuilder }, - { path: '/scenariomanager', component: ScenarioManager }, - { path: '/thesis', component: Thesis }, - { path: '/trafficticket', component: TrafficTicket }, - { path: '*', component: PageNotFound} - ], - mode: 'history', - scrollBehavior () { - return { x: 0, y: 0 } - } -}) diff --git a/src/styles.css b/src/styles.css deleted file mode 100644 index 7248c7d..0000000 --- a/src/styles.css +++ /dev/null @@ -1,192 +0,0 @@ -/* lato-300 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Lato'; - font-style: normal; - font-weight: 300; - src: url('../public/fonts/lato-v23-latin-300.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('../public/fonts/lato-v23-latin-300.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* lato-regular - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Lato'; - font-style: normal; - font-weight: 400; - src: url('../public/fonts/lato-v23-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('../public/fonts/lato-v23-latin-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* lato-700 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Lato'; - font-style: normal; - font-weight: 700; - src: url('../public/fonts/lato-v23-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('../public/fonts/lato-v23-latin-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* lora-regular - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Lora'; - font-style: normal; - font-weight: 400; - src: url('../public/fonts/lora-v32-latin-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('../public/fonts/lora-v32-latin-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* lora-700 - latin */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Lora'; - font-style: normal; - font-weight: 700; - src: url('../public/fonts/lora-v32-latin-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('../public/fonts/lora-v32-latin-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -:root { - --font-sans: "Lato", sans-serif; - --font-serif: "Lora", serif; - --content-padding: 30px; - --dark: #212121; - --light: #666666; - --blue: #355DAE; - --light-blue: #E6ECF2; - --shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); - --grad: linear-gradient(180deg, var(--light-blue) 0%, #EBF2F2 100%); - --radius: 2px; - /* Font sizes */ - --size-h1: 96px; - --size-h2: 60px; - --size-h3: 48px; - --size-h4: 34px; - --size-h5: 24px; - --size-h6: 20px; - --size-sub1: 16px; - --size-sub2: 14px; -} - -body { - font-family: var(--font-sans); - color: var(--dark); - margin: 0; - height: 100%; - background: var(--grad); -} - -#app { - display: grid; - grid-template-rows: 64px 1fr auto; - height: 100%; -} - -/* Headings */ -h1, h2, h3, h4, h5, h6 { - font-family: var(--font-serif); - /* color: red; */ - font-weight: 400; -} - -h1 { - font-size: var(--size-h1); - margin: 112px 0 48px 0; -} - -h2 { - font-size: var(--size-h2); - margin: 72px 0 32px 0; -} - -h3 { - font-size: var(--size-h3); - margin: 60px 0 24px 0; -} - -h4 { - font-size: var(--size-h4); - margin: 40px 0 16px 0; -} - -h5, .h5sans { - font-size: var(--size-h5); - margin: 32px 0 12px 0; -} - -h6, .h6sans { - font-size: var(--size-h6); - margin: 24px 0 8px 0; -} - -.h5sans, .h6sans, .subtitle1, .subtitle2, .body1, .body2 { - font-family: var(--font-sans); -} - -.subtitle1 { - font-size: var(--size-sub1); - text-transform: uppercase; - color: var(--light); -} - -.subtitle2 { - font-size: var(--size-sub2); - text-transform: uppercase; - color: var(--light); -} - -.body1 { - font-size: var(--size-sub1); -} - -.body2 { - font-size: var(--size-sub2); -} - -.body1 p { - margin: 0 0 24px 0; - line-height: 32px; -} - -.body2 p { - margin: 6px 0; - line-height: 24px; -} - - -/* General classes */ -a { - text-decoration: none; - color: var(--dark); -} - -p, ul, ol { - max-width: 700px; -} - -p { - line-height: 28px; -} - -ul { - margin: 0 0 24px 0; -} - -ul li, ol li { - line-height: 28px; -} - -/* custom classes */ -.link { - border-bottom: 2px solid rgba(53, 93, 174, 0.5); -} - -.link:hover { - border-bottom: 2px solid var(--blue); -} - -/* responsive content*/ -.responsive { - padding-left: var(--content-padding); - padding-right: var(--content-padding); - max-width: 1200px; - margin: 0 auto; -} diff --git a/src/utils/index.js b/src/utils/index.js deleted file mode 100644 index 6e2295d..0000000 --- a/src/utils/index.js +++ /dev/null @@ -1,43 +0,0 @@ -import { projData, activeRoutes } from './projects.js' - -// returns the name of the project from a route (e.g. '/phoenix' -> Phoenix) -export function getProjectNameFromRoute(route) { - // remove trailing / - if (route !== '/' & route.slice(-1) === '/') { - route = route.slice(0, -1) - } - // check for known routes - let names = projData.filter(obj => obj.route === route) - if (names.length) { - return names[0] - } else { - // for 404 routes - return '404' - } -} - -// returns a correct modulo -function getMod(i, j) { - return ((i % j) + j) % j -} - -// returns the route and name of the previous and the next project -export function getPreviousNextProjects(route) { - // find index of current project - // by default found is the last project (e.g. inactive ones) - let found = activeRoutes.length; - for (let i = 0; i < activeRoutes.length; i++) { - if (activeRoutes[i].route == route) { - found = i - break - } - } - let previous = getMod(found - 1, activeRoutes.length) - let next = getMod(found + 1, activeRoutes.length) - - return { - previous: activeRoutes[previous], - next: activeRoutes[next] - } -} - diff --git a/src/utils/projects.js b/src/utils/projects.js deleted file mode 100644 index 3b5cc40..0000000 --- a/src/utils/projects.js +++ /dev/null @@ -1,139 +0,0 @@ -// data for the projects -export const projData = [ - { - route: '/trafficticket', - image: { - src: 'trafficticket/ticket1.jpeg', - alt: 'A parking ticket on a windshield' - }, - name: 'Traffic ticket', - slogan: 'Processing traffic tickets for a car rental', - clients: ['MaibornWolff', 'Car rental company'], - task: 'Project lead', - date: 'Feb 2022-Jan 2023', - active: true - }, - { - route: '/esgehtlos', - image: { - src: 'esgehtlos/demo.png', - alt: 'Screen design for mobile web app' - }, - name: 'Es geht los', - slogan: 'More democracy with civic councils', - clients: ['MaibornWolff', 'Demokratie Innovation e. V.'], - task: 'UI Design', - date: 'Jan-Feb 2022', - active: true - }, - { - route: '/scenariomanager', - image: { - src: 'scenariomanager/brainstorming-sideshot.jpg', - alt: 'Scenario Manager UI' - }, - name: 'Scenario Manager', - slogan: 'Helping financial decision makers in stormy times', - clients: ['Valsight'], - task: 'UX Research', - date: 'Jan-Mar 2020', - active: true // active projects are shown on the landing page, inactive ones are only accessible by route - }, - { - route: '/knimehub', - image: { - src: 'knimehub/front_page.jpg', - alt: 'Screenshot of the landing page of KNIME hub' - }, - name: 'KNIME Hub', - slogan: 'Collaborative platform for data scientists', - clients: ['KNIME'], - task: 'UI/UX Design', - date: '2018-2019', - active: true - }, - { - route: '/greenbox', - image: { - src: 'greenbox/greenbox_app2.png', - alt: 'Usability test of the greenbox app' - }, - name: 'Greenbox', - slogan: 'Turning people into urban gardeners', - clients: ['Greenbox'], - task: 'Usability evaluation', - date: '2015', - active: false - }, - { - route: '/phoenix', - image: { - src: 'phoenix/phoenix_mp.jpg', - alt: 'Screenshot of phoenix application' - }, - name: 'Phoenix', - slogan: 'The musicplayer that knows what you want to hear', - clients: ['Myself'], - task: 'Design & Development', - date: '2015-2017', - active: false - }, - { - route: '/querybuilder', - image: { - src: 'querybuilder/querybuilder.png', - alt: 'Graph representation of an SQL query' - }, - name: 'Querybuilder', - slogan: 'Finding the needle in the data haystack', - clients: ['KNIME'], - task: 'UI/UX Design', - date: '2018', - active: false - }, - { - route: '/codesnippets', - image: { - src: 'codesnippets/formulas04.jpg', - alt: 'Screenshot of phoenix application' - }, - name: 'Code snippets', - slogan: 'Code snippets for faster data transformation', - clients: ['KNIME'], - task: 'UI/UX Design', - date: '2017', - active: false - }, - { - route: '/mechanics', - image: { - src: 'mechanics/mechanics.png', - alt: 'Mechanic with helmet camera interacting with tablet' - }, - name: 'Mechanics', - slogan: 'Digitalizing the work of mechanics', - clients: ['Condat'], - task: 'Field test', - date: '2015', - active: false - }, - { - route: '/thesis', - image: { - src: 'thesis/adjustable-eyes.jpg', - alt: 'Adjustable artificial eyes' - }, - name: 'Thesis', - slogan: 'How to make eye tracking more robust', - clients: ['TU Berlin'], - task: 'Master thesis', - date: '2016-2017', - active: false - }, -] - -// only active routes (shown on landing page) -export const activeRoutes = projData.filter(e => e.active) - -// projectRoutes (all project routes with landing page) -export const projectRoutes = projData.map(e => e.route).concat(['/']) diff --git a/tests/e2e/fixtures/example.json b/tests/e2e/fixtures/example.json deleted file mode 100644 index da18d93..0000000 --- a/tests/e2e/fixtures/example.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Using fixtures to represent data", - "email": "hello@cypress.io", - "body": "Fixtures are a great way to mock data for responses to routes" -} \ No newline at end of file diff --git a/tests/e2e/integration/launch.spec.js b/tests/e2e/integration/launch.spec.js deleted file mode 100644 index 8b96ffd..0000000 --- a/tests/e2e/integration/launch.spec.js +++ /dev/null @@ -1,14 +0,0 @@ -describe('Actions', () => { - it('launches landing page', () => { - cy.visit('/') - cy.title().should('eq', 'Johannes Schweig') - // find welcome message - cy.get('#welcome').contains('I am Johannes, a UX Designer based in Berlin, and this is my work.') - // find three projects - cy.get('.tile.responsive').its('length').should('eq', 3) - // find about - cy.get('#about') - // find legal link - cy.get('#legal') - }) -}) diff --git a/tests/e2e/plugins/index.js b/tests/e2e/plugins/index.js deleted file mode 100644 index aa9918d..0000000 --- a/tests/e2e/plugins/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/// -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -} diff --git a/tests/e2e/support/commands.js b/tests/e2e/support/commands.js deleted file mode 100644 index ca4d256..0000000 --- a/tests/e2e/support/commands.js +++ /dev/null @@ -1,25 +0,0 @@ -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add("login", (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) diff --git a/tests/e2e/support/index.js b/tests/e2e/support/index.js deleted file mode 100644 index d68db96..0000000 --- a/tests/e2e/support/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import './commands' - -// Alternatively you can use CommonJS syntax: -// require('./commands') diff --git a/tests/unit/Bio.spec.js b/tests/unit/Bio.spec.js deleted file mode 100644 index 5a03cef..0000000 --- a/tests/unit/Bio.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -import { mount } from '@vue/test-utils' -import About from '@/components/content/About' - -describe('About.vue', () => { - it('renders', () => { - const wrapper = mount(About) - - expect(wrapper.find('#about').exists()).toBeTruthy() - expect(wrapper.find('#mail-address').exists()).toBeFalsy() - wrapper.setData({ mail_activated: true }) - expect(wrapper.find('#mail-address').exists()).toBeTruthy() - }) -}) \ No newline at end of file diff --git a/tests/unit/SocialIcon.spec.js b/tests/unit/SocialIcon.spec.js deleted file mode 100644 index 93bb63a..0000000 --- a/tests/unit/SocialIcon.spec.js +++ /dev/null @@ -1,14 +0,0 @@ -import { mount } from '@vue/test-utils' -import SocialIcon from '@/components/elements/SocialIcon' - -describe('SocialIcon.vue', () => { - it('renders with correct image', () => { - const wrapper = mount(SocialIcon , { - propsData: { - img: 'mail' - } - }) - - expect(wrapper.find('img').exists()).toBeTruthy() - }) -}) \ No newline at end of file diff --git a/tests/unit/utils.spec.js b/tests/unit/utils.spec.js deleted file mode 100644 index c1a0a1a..0000000 --- a/tests/unit/utils.spec.js +++ /dev/null @@ -1,78 +0,0 @@ -import { projData, namedRoutes, activeRoutes } from '@/utils/projects.js' -import { getProjectNameFromRoute, getPreviousNextProjects } from '@/utils/index.js' - -// required props for projects -const requiredProps = ['route', 'image', 'name', 'slogan', 'clients', 'task', 'date', 'active' ] - -describe('utils/index.js', () => { - it('returns names to routes', () => { - // check project routes - for (let i = 0; i < projData.length; i++) { - requiredProps.forEach(p => expect(projData[i].hasOwnProperty(p)).toEqual(true)) - expect(getProjectNameFromRoute(projData[i].route)).toEqual(projData[i].name) - expect(getProjectNameFromRoute(projData[i].route + '/')).toEqual(projData[i].name) - } - // check 404 - expect(getProjectNameFromRoute('foo')).toEqual('404') - // check root - expect(getProjectNameFromRoute('/')).toEqual('Portfolio') - // check legal - expect(getProjectNameFromRoute('/legal')).toEqual('Legal') - }) - - it('returns previous and next projects', () => { - // check active routes - let previousNext - for (let i = 0; i < activeRoutes.length; i++) { - let previous = i - 1 === -1 ? activeRoutes.slice(-1)[0] : activeRoutes[i - 1] - previous = { route: previous.route, name: previous.name } - let next = i + 1 >= activeRoutes.length ? activeRoutes[0] : activeRoutes[i + 1] - next = { route: next.route, name: next.name } - - previousNext = { - previous, - next - } - expect(getPreviousNextProjects(activeRoutes[i].route)).toEqual(previousNext) - } - - // inactive routes and unknown routes - let inactiveRoutes = projData.filter(e => !e.active).concat([{ route: 'foo' }]) - // previous = last, next = first - previousNext = { - previous: { - route: activeRoutes.slice(-1)[0].route, - name: activeRoutes.slice(-1)[0].name, - }, - next: { - route: activeRoutes[0].route, - name: activeRoutes[0].name, - } - } - for (let i = 0; i < inactiveRoutes.length; i++) { - expect(getPreviousNextProjects(inactiveRoutes[i].route)).toEqual(previousNext) - } - }) - - it('returns active routes', () => { - for (let i = 0; i < activeRoutes.length; i++) { - expect(activeRoutes[i].active).toEqual(true) - } - }) - - it('returns named routes', () => { - // contains root and legal route - for (let i = 0; i < namedRoutes.length; i++) { - expect(namedRoutes[i].hasOwnProperty('name')).toEqual(true) - expect(namedRoutes[i].hasOwnProperty('route')).toEqual(true) - // root route - if (namedRoutes[i].route === '/') { - expect(namedRoutes[i].name).toEqual('Portfolio') - } - // legal route - if (namedRoutes[i].route === '/legal') { - expect(namedRoutes[i].name).toEqual('Legal') - } - } - }) -}) diff --git a/vue.config.js b/vue.config.js deleted file mode 100644 index b76b6f0..0000000 --- a/vue.config.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - chainWebpack: config => { - // pdf loading - config.module.rule('pdf') - .test(/\.(pdf)(\?.*)?$/) - .use('file-loader') - .loader('file-loader') - .options({ - name: 'assets/pdf/[name].[hash:8].[ext]' - }) - - // svg loading - const svgRule = config.module.rule('svg'); - svgRule.uses.clear(); - svgRule - .use('babel-loader') - .loader('babel-loader') - .end() - .use('vue-svg-loader') - .loader('vue-svg-loader'); - } -} \ No newline at end of file