├── icon.png
├── favicon.ico
├── screenshot.png
├── sass
├── index.scss
├── components
│ ├── _dropzone.scss
│ ├── _loading-indicator.scss
│ ├── _icons.scss
│ ├── _tags.scss
│ ├── _details.scss
│ ├── _alerts.scss
│ ├── _list-group.scss
│ ├── _cards.scss
│ ├── _progress-bar.scss
│ ├── _tables.scss
│ ├── _tooltips.scss
│ ├── components.scss
│ ├── _buttons.scss
│ └── _forms.scss
├── _print.scss
├── _grid.scss
├── _markdown.scss
├── _utilities.scss
├── _syntax.scss
├── _layout.scss
├── _variables.scss
└── _normalize.scss
├── .editorconfig
├── manifest.json
├── package.json
├── LICENSE
├── README.md
├── icons.svg
├── index.html
└── tawian-frontend.css
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maxbeier/tawian-frontend/HEAD/icon.png
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maxbeier/tawian-frontend/HEAD/favicon.ico
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/maxbeier/tawian-frontend/HEAD/screenshot.png
--------------------------------------------------------------------------------
/sass/index.scss:
--------------------------------------------------------------------------------
1 | @import 'variables';
2 | @import 'normalize';
3 | @import 'markdown';
4 | @import 'grid';
5 | @import 'layout';
6 | @import 'components/components';
7 | @import 'utilities';
8 | @import "syntax";
9 | @import "print";
10 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | end_of_line = lf
7 | indent_size = 3
8 | indent_style = space
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.scss]
13 | indent_size = 2
14 |
15 | [*.md]
16 | trim_trailing_whitespace = false
17 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tawian",
3 | "short_name": "Tawian",
4 | "theme_color": "#2196f3",
5 | "background_color": "#ffffff",
6 | "icons": [{
7 | "src": "icon.png",
8 | "sizes": "512x512",
9 | "type": "image/png"
10 | }],
11 | "start_url": "index.html",
12 | "display": "standalone",
13 | "orientation": "portrait"
14 | }
15 |
--------------------------------------------------------------------------------
/sass/components/_dropzone.scss:
--------------------------------------------------------------------------------
1 | .dropzone {
2 | display: flex;
3 | align-items: center;
4 | justify-content: center;
5 | height: 9rem;
6 | padding: 1rem;
7 | border: 2px dashed $grey-300;
8 | text-align: center;
9 | color: $grey-400;
10 | cursor: pointer;
11 |
12 | &.active,
13 | &.rejected { color: $grey; }
14 |
15 | &.active { background-color: $grey-50; }
16 | &.rejected { background-color: $red-50; }
17 | }
18 |
--------------------------------------------------------------------------------
/sass/components/_loading-indicator.scss:
--------------------------------------------------------------------------------
1 | .loading {
2 | display: inline-block;
3 | overflow: hidden;
4 | height: 1.3em;
5 | margin-top: -.3em;
6 | line-height: 1.5em;
7 | vertical-align: text-bottom;
8 |
9 | &::after {
10 | display: inline-table;
11 | white-space: pre;
12 |
13 | content: "\A.\A..\A...";
14 | text-align: left;
15 | animation: spin 2s steps(4) infinite;
16 | }
17 | }
18 |
19 | @keyframes spin { to { transform: translateY(-6em); } }
20 |
--------------------------------------------------------------------------------
/sass/components/_icons.scss:
--------------------------------------------------------------------------------
1 | // svg,
2 | // svg symbol { overflow: visible; }
3 |
4 | .i {
5 | position: relative;
6 | top: .0625em;
7 | width: .75rem;
8 | height: .75rem;
9 | fill: none;
10 | font-size: inherit;
11 | stroke: currentColor;
12 | stroke-width: 4px;
13 | stroke-linecap: round;
14 | stroke-linejoin: round;
15 | }
16 |
17 | .i-medium .i,
18 | .i.i-medium {
19 | width: 1.5rem;
20 | height: 1.5rem;
21 | stroke-width: 2px;
22 | }
23 |
24 | .i-large .i,
25 | .i.i-large {
26 | width: 2rem;
27 | height: 2rem;
28 | stroke-width: 2px;
29 | }
30 |
--------------------------------------------------------------------------------
/sass/components/_tags.scss:
--------------------------------------------------------------------------------
1 | @mixin tag ($color) {
2 | color: $white;
3 | background-color: $color;
4 | box-shadow: 0 -1px 0 3px $color, inset 0 0 0 1px $color; // second shadow to fix a glitch in Edge
5 | }
6 |
7 | .tag {
8 | @include tag ($grey);
9 |
10 | position: relative;
11 | top: -.1em;
12 | padding: 0 .25em;
13 | border-radius: 1px;
14 | font-size: .8em;
15 | font-weight: normal;
16 | white-space: nowrap;
17 | vertical-align: baseline;
18 | text-rendering: optimizeLegibility; // more readable with smaller font sizes
19 |
20 | &:empty { display: none; } // don't show if empty
21 |
22 | &.tag-primary { @include tag ($blue); }
23 | &.tag-success { @include tag ($green); }
24 | &.tag-info { @include tag ($cyan); }
25 | &.tag-warning { @include tag ($orange); }
26 | &.tag-error { @include tag ($red); }
27 | }
28 |
29 |
30 |
--------------------------------------------------------------------------------
/sass/components/_details.scss:
--------------------------------------------------------------------------------
1 | // Faulty in Safari: http://stackoverflow.com/questions/40556442/safari-renders-wrong-after-details-element-when-use-rem-font-size
2 |
3 | details { margin-bottom: 1rem; }
4 |
5 | summary {
6 | outline: none;
7 | &:hover { cursor: pointer; }
8 | }
9 |
10 | details:not(.card) {
11 | padding-left: 1rem;
12 |
13 | summary {
14 | margin-bottom: 1rem;
15 | margin-left: -1rem;
16 |
17 | &:hover {
18 | background-color: $grey-100;
19 | box-shadow: -.5rem -.1rem 0 .5rem $grey-100;
20 | }
21 | }
22 | }
23 |
24 | details.card {
25 | summary::-webkit-details-marker {
26 | display: none;
27 | }
28 |
29 | summary::before {
30 | content: '▶';
31 | float: left;
32 | padding-right: .75rem;
33 | color: $grey;
34 | }
35 |
36 | &[open] summary::before {
37 | content: '▼';
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tawian-frontend",
3 | "version": "2.1.4",
4 | "description": "Simple CSS framework for Tawian",
5 | "main": "tawian-frontend.css",
6 | "style": "tawian-frontend.css",
7 | "files": [
8 | "LICENSE",
9 | "tawian-frontend.css",
10 | "icons.svg"
11 | ],
12 | "repository": "maxbeier/tawian-frontend",
13 | "author": "Maximilian Beier",
14 | "license": "MIT",
15 | "keywords": [
16 | "frontend",
17 | "framework"
18 | ],
19 | "bugs": "https://github.com/maxbeier/tawian-frontend/issues",
20 | "homepage": "http://maxbeier.github.io/tawian-frontend",
21 | "scripts": {
22 | "build": "sass sass/index.scss --style compressed | postcss --use autoprefixer > tawian-frontend.css",
23 | "watch": "fswatch -o sass/* | xargs -n1 sh -c 'sass sass/index.scss --style compressed | postcss --use autoprefixer > tawian-frontend.css'",
24 | "version": "npm run build; git add tawian-frontend.css"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sass/components/_alerts.scss:
--------------------------------------------------------------------------------
1 | @mixin alert ($color, $background-color) {
2 | color: $color;
3 | border-color: $color;
4 | background-color: $background-color;
5 | }
6 |
7 | .alert {
8 | position: relative;
9 | padding: calc(.5rem - 2px) .75rem .25rem;
10 | border: $border-width solid;
11 | border-radius: $button-radius;
12 |
13 | .close {
14 | float: right;
15 | margin: -.5rem -.75rem 0 0;
16 | padding: calc(.5rem + 1px) .75rem 0;
17 | opacity: .5;
18 | border: 0;
19 | background: none;
20 | font-size: 1.5rem;
21 | line-height: 1;
22 | color: inherit;
23 | cursor: pointer;
24 |
25 | &:hover {
26 | opacity: 1;
27 | text-decoration: none;
28 | }
29 | }
30 | }
31 |
32 | .alert { @include alert ($grey-700, $grey-50); }
33 | .alert-success { @include alert ($green-700, $green-50); }
34 | .alert-info { @include alert ($cyan-700, $cyan-50); }
35 | .alert-warning { @include alert ($orange-700, $orange-50); }
36 | .alert-error { @include alert ($red-700, $red-50); }
37 |
--------------------------------------------------------------------------------
/sass/_print.scss:
--------------------------------------------------------------------------------
1 | @media print {
2 |
3 | html,
4 | button,
5 | input,
6 | optgroup,
7 | select,
8 | textarea {
9 | font-size: 14px;
10 | line-height: 1.15;
11 | text-size-adjust: 100%;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | text-rendering: optimizeLegibility;
15 | }
16 |
17 | h1,
18 | h2,
19 | h3,
20 | h4,
21 | h5,
22 | h6 {
23 | &:before { display: none; }
24 | }
25 |
26 | *,
27 | *:before,
28 | *:after,
29 | *:first-letter,
30 | p:first-line,
31 | div:first-line,
32 | blockquote:first-line,
33 | li:first-line {
34 | background: transparent !important;
35 | color: #000 !important;
36 | box-shadow: none !important;
37 | text-shadow: none !important;
38 | }
39 |
40 | a[href]:after {
41 | content: " (" attr(href) ")";
42 | }
43 |
44 | abbr[title]:after {
45 | content: " (" attr(title) ")";
46 | }
47 |
48 | .btn { border: 1px solid #000; }
49 |
50 | .no-print { display: none !important; }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/sass/components/_list-group.scss:
--------------------------------------------------------------------------------
1 | .list-striped > *:nth-child(even):not(.btn) {
2 | background-color: $grey-100;
3 | }
4 |
5 | .list-group {
6 | padding: 0;
7 | border: $border-width solid $grey-300;
8 | border-radius: $button-radius;
9 |
10 | & > * {
11 | display: block;
12 | margin: 0;
13 | padding: calc(.5rem - 1px) .5rem .25rem;
14 | border: 0;
15 |
16 | &:first-child { padding-top: calc(.5rem - 2px); }
17 | }
18 |
19 | & > a,
20 | & > button {
21 | width: 100%;
22 | border-radius: 0;
23 | }
24 |
25 | button:not(.btn) {
26 | @extend a;
27 | text-align: left;
28 | background-color: $white;
29 | }
30 |
31 | & > li:before { display: none; }
32 |
33 | & > *:not(:last-child) {
34 | border-bottom: $border-width solid $grey-300;
35 | }
36 |
37 | & > .disabled {
38 | color: $grey;
39 | cursor: not-allowed;
40 | background-color: $grey-200;
41 | }
42 |
43 | & > .active.active,
44 | & > .active.active:hover {
45 | color: $white;
46 | background-color: $blue;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 tawian
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/sass/components/_cards.scss:
--------------------------------------------------------------------------------
1 | @mixin card ($color) {
2 | border: $border-width solid $color;
3 |
4 | .card-header {
5 | color: $white;
6 | background-color: $color;
7 | border-bottom-color: $color;
8 | font-weight: normal;
9 | }
10 | }
11 |
12 | .card {
13 | border: $border-width solid $grey-300;
14 | border-radius: $button-radius;
15 |
16 | .card-header {
17 | display: block;
18 | padding: calc(.5rem - 1px) .75rem .25rem;
19 | background-color: $grey-200;
20 | text-align: center;
21 | font-weight: bold;
22 | color: $grey-800;
23 | }
24 |
25 | .card-body {
26 | padding: calc(.5rem - 2px) .75rem .25rem;
27 | &:last-child { margin-bottom: 0; }
28 | }
29 |
30 | & > * + * {
31 | border: 0;
32 | border-radius: 0;
33 | border-top: $border-width solid;
34 | border-color: inherit;
35 | }
36 |
37 | &.card-success { @include card ($green); }
38 | &.card-info { @include card ($cyan); }
39 | &.card-warning { @include card ($orange); }
40 | &.card-error { @include card ($red); }
41 | }
42 |
43 | // Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589475
44 | details.card > * + * { border-color: $grey-300; }
45 |
--------------------------------------------------------------------------------
/sass/components/_progress-bar.scss:
--------------------------------------------------------------------------------
1 | .progress-bar {
2 | height: 1rem;
3 | background-color: $grey-300;
4 |
5 | &.narrow { height: 0.5rem; }
6 |
7 | &.progress-bar-show-percent {
8 | margin-top: 2rem;
9 |
10 | & > div {
11 | &:before { // Arrow
12 | content: '';
13 | border: 6px solid transparent;
14 | border-top-color: $grey;
15 | position: absolute;
16 | top: -12px;
17 | right: -6px;
18 | }
19 | &:after { // Text
20 | color: $grey-600;
21 | content: attr(data-filled);
22 | display: block;
23 | font-size: 12px;
24 | white-space: nowrap;
25 | position: absolute;
26 | border: 6px solid transparent;
27 | top: -36px;
28 | right: 0;
29 | transform: translateX(50%);
30 | }
31 | }
32 | }
33 |
34 | & > div { // Filling
35 | position: relative;
36 | height: 100%;
37 | width: 0;
38 | max-width: 100%;
39 | background-color: $grey;
40 | transition: width .3s ease;
41 | text-align: center;
42 | font-size: 12px;
43 | color: $white;
44 | }
45 |
46 | &.progress-primary > div { background-color: $blue; }
47 | &.progress-success > div { background-color: $green; }
48 | &.progress-info > div { background-color: $cyan; }
49 | &.progress-warning > div { background-color: $orange; }
50 | &.progress-error > div { background-color: $red; }
51 | }
52 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [Tawian Frontend](http://maxbeier.github.io/tawian-frontend) [![npm package][npm-badge]][npm]
2 |
3 | Simple CSS framework with a markdowny touch. Intended for developer facing applications.
4 |
5 |
6 | ## Usage
7 |
8 | ```html
9 |
10 |
11 | ```
12 |
13 | or via [npm][npm]
14 |
15 | ```sh
16 | npm install --save tawian-frontend typeface-cousine
17 | ```
18 |
19 | And then, for example (as used in [curious-containers/cc-ui](https://github.com/curious-containers/cc-ui)):
20 |
21 | ```js
22 | import 'tawian-frontend';
23 | import 'typeface-cousine';
24 | ```
25 |
26 | To use the icons, you have to place [icons.svg](https://raw.githubusercontent.com/maxbeier/tawian-frontend/master/icons.svg) at the root of your public path (or anywhere else and adjust the path in the icons svg code) or inline them in your HTML to make them work in Edge.
27 |
28 |
29 | ## Preview
30 |
31 | [](http://maxbeier.github.io/tawian-frontend/)
32 |
33 |
34 | ## Build
35 |
36 | ```sh
37 | npm run build
38 |
39 | npm run watch # builds continuously
40 | ```
41 |
42 |
43 | ## Credits
44 |
45 | The project was inspired by [hack](https://github.com/egoist/hack).
46 |
47 |
48 | [npm-badge]: https://img.shields.io/npm/v/tawian-frontend.svg?style=flat-square
49 | [npm]: https://www.npmjs.org/package/tawian-frontend
50 |
--------------------------------------------------------------------------------
/sass/components/_tables.scss:
--------------------------------------------------------------------------------
1 | // Table ------------------------------------------------------
2 |
3 | table {
4 | width: 100%;
5 | border-collapse: collapse;
6 | border-spacing: 0;
7 | }
8 |
9 | td,
10 | th {
11 | vertical-align: top;
12 | border: $border-width solid $grey-300;
13 | padding: calc(.5rem - 1px) .5rem .3rem;
14 | }
15 |
16 | thead th {
17 | color: $grey-800;
18 | text-align: center;
19 | background-color: $grey-200;
20 | }
21 |
22 | caption {
23 | caption-side: bottom;
24 | padding-top: .75rem;
25 | color: $grey;
26 | }
27 |
28 | // Modifiers --------------------------------------------------
29 |
30 | .table-fixed { table-layout: fixed; }
31 |
32 | .table-striped tr:nth-child(even) td {
33 | background-color: $grey-100;
34 | }
35 |
36 | .table-hover tr:hover td {
37 | background-color: $grey-200;
38 | }
39 |
40 | .table-narrow td,
41 | .table-narrow th { padding: calc(.25rem - 1px) .5rem 0; }
42 |
43 | .table-wide td,
44 | .table-wide th { padding: calc(.875rem - 1px) 1rem .625rem; }
45 |
46 | thead.text-left > tr > th { text-align: left; }
47 |
48 |
49 | // States -----------------------------------------------------
50 |
51 | // TODO re-evaluate
52 |
53 | // @mixin cell-border ($border-color) {
54 | // border-top-color: $border-color;
55 | // border-bottom-color: $border-color;
56 | // }
57 |
58 | // table {
59 | // .bg-active { @include cell-border ($blue-200); }
60 | // .bg-success { @include cell-border ($green-200); }
61 | // .bg-info { @include cell-border ($cyan-200); }
62 | // .bg-warning { @include cell-border ($orange-200); }
63 | // .bg-error { @include cell-border ($red-200); }
64 | // }
65 |
--------------------------------------------------------------------------------
/sass/components/_tooltips.scss:
--------------------------------------------------------------------------------
1 | // Based on https://github.com/mightyCrow/wenk
2 |
3 | @keyframes tooltip-appear { to { opacity: 1; } }
4 |
5 | [data-tooltip] {
6 | position: relative;
7 |
8 | &:after {
9 | content: attr(data-tooltip);
10 | position: absolute;
11 | z-index: 1;
12 | bottom: 100%;
13 | left: 50%;
14 | display: none;
15 | padding: calc(.5rem - 2px) .5rem .25rem;
16 | transform: translate(-50%, -.5rem);
17 | pointer-events: none;
18 | box-shadow: 0 0 0 .25rem $white;
19 | border: $border-width solid $grey-300;
20 | border-radius: 2px;
21 | background-color: $grey-50;
22 | white-space: pre;
23 | color: $grey-900;
24 | opacity: 0;
25 | }
26 |
27 | &:focus:after,
28 | &:hover:after {
29 | display: block;
30 | animation: tooltip-appear .1s ease-in .1s forwards;
31 | }
32 |
33 | &.tooltip-bottom:after {
34 | bottom: auto;
35 | top: 100%;
36 | left: 50%;
37 | transform: translate(-50%, .5rem);
38 | }
39 |
40 | &.tooltip-left:after {
41 | bottom: auto;
42 | left: auto;
43 | top: 50%;
44 | right: 100%;
45 | transform: translate(-.5rem, -50%);
46 | }
47 |
48 | &.tooltip-right:after {
49 | bottom: auto;
50 | top: 50%;
51 | left: 100%;
52 | transform: translate(.5rem, -50%);
53 | }
54 |
55 | @mixin tooltip-state ($color) {
56 | color: $white;
57 | background-color: $color;
58 | }
59 |
60 | &.tooltip-active:after { @include tooltip-state ($blue); }
61 | &.tooltip-success:after { @include tooltip-state ($green); }
62 | &.tooltip-info:after { @include tooltip-state ($cyan); }
63 | &.tooltip-warning:after { @include tooltip-state ($orange); }
64 | &.tooltip-error:after { @include tooltip-state ($red); }
65 | }
66 |
--------------------------------------------------------------------------------
/sass/_grid.scss:
--------------------------------------------------------------------------------
1 | // Grid ------------------------------------------------------
2 |
3 | .grid {
4 | display: flex;
5 | flex-wrap: wrap;
6 | }
7 |
8 | .grid-top { align-items: flex-start; }
9 | .grid-middle { align-items: center; }
10 | .grid-bottom { align-items: flex-end; }
11 | .grid-stretch { align-items: stretch; }
12 | .grid-baseline { align-items: baseline; }
13 |
14 | .grid-left { justify-content: flex-start; }
15 | .grid-center { justify-content: center; }
16 | .grid-right { justify-content: flex-end; }
17 | .grid-between { justify-content: space-between; }
18 | .grid-around { justify-content: space-around; }
19 |
20 |
21 | // Cells ------------------------------------------------------
22 |
23 | .cell { flex: 1; }
24 | .cell > *:last-child { margin-bottom: 0; }
25 |
26 | .cell-top { margin-bottom: auto; }
27 | .cell-middle { margin: auto 0; }
28 | .cell-bottom { margin-top: auto; }
29 |
30 | .cell-1 { flex: 0 0 calc(100% * 1 / 12); min-width: calc(100% * 1 / 12); } // `min-width` for IE
31 | .cell-2 { flex: 0 0 calc(100% * 2 / 12); min-width: calc(100% * 2 / 12); }
32 | .cell-3 { flex: 0 0 calc(100% * 3 / 12); min-width: calc(100% * 3 / 12); }
33 | .cell-4 { flex: 0 0 calc(100% * 4 / 12); min-width: calc(100% * 4 / 12); }
34 | .cell-5 { flex: 0 0 calc(100% * 5 / 12); min-width: calc(100% * 5 / 12); }
35 | .cell-6 { flex: 0 0 calc(100% * 6 / 12); min-width: calc(100% * 6 / 12); }
36 | .cell-7 { flex: 0 0 calc(100% * 7 / 12); min-width: calc(100% * 7 / 12); }
37 | .cell-8 { flex: 0 0 calc(100% * 8 / 12); min-width: calc(100% * 8 / 12); }
38 | .cell-9 { flex: 0 0 calc(100% * 9 / 12); min-width: calc(100% * 9 / 12); }
39 | .cell-10 { flex: 0 0 calc(100% * 10 / 12); min-width: calc(100% * 10 / 12); }
40 | .cell-11 { flex: 0 0 calc(100% * 11 / 12); min-width: calc(100% * 11 / 12); }
41 | .cell-12 { flex: 0 0 calc(100% * 12 / 12); min-width: calc(100% * 12 / 12); }
42 |
43 |
44 | // Inner Spacing ----------------------------------------------
45 |
46 | @mixin spacing ($width) {
47 | margin-left: -$width;
48 | margin-top: -$width;
49 |
50 | .cell {
51 | padding-left: $width;
52 | padding-top: $width;
53 | }
54 | }
55 |
56 | .grid { @include spacing (1rem); }
57 | .grid-narrow { @include spacing (0); }
58 | .grid-wide { @include spacing (2rem); }
59 |
60 | .grid-inline {
61 | display: flex;
62 | flex-wrap: wrap;
63 | align-items: baseline;
64 |
65 | & > *:not(:last-child) { margin-right: 1rem; }
66 | }
67 |
68 |
69 | // Responsiveness ---------------------------------------------
70 |
71 | @media #{$medium} {
72 | .grid {
73 | flex-direction: column;
74 | flex-wrap: nowrap; // prevents image overflow bug
75 | }
76 |
77 | .cell {
78 | flex: 0 0 auto;
79 | min-width: auto;
80 | }
81 |
82 | .grid-inline {
83 | display: flex;
84 | flex-wrap: wrap;
85 | align-items: baseline;
86 |
87 | & > * { flex: 1 1 100%; }
88 | & > *:not(:last-child) { margin: 0 0 .75rem; }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/sass/_markdown.scss:
--------------------------------------------------------------------------------
1 | // From https://github.com/mrcoles/markdown-css and https://github.com/egoist/hack
2 |
3 |
4 | // Normalize -------------------------------------------------
5 |
6 | h1,
7 | h2,
8 | h3,
9 | h4,
10 | h5,
11 | h6,
12 | ol,
13 | ul,
14 | li,
15 | code,
16 | blockquote {
17 | margin: 0;
18 | padding: 0;
19 | font-size: 1rem;
20 | }
21 |
22 |
23 | // Headings ---------------------------------------------------
24 |
25 | h1,
26 | h2,
27 | h3,
28 | h4,
29 | h5,
30 | h6 {
31 | position: relative;
32 |
33 | &:before {
34 | position: absolute;
35 | left: -4.675rem;
36 | width: 4rem;
37 | text-align: right;
38 | color: $grey-400;
39 | }
40 |
41 | @media screen and (max-width : $container + 4rem) {
42 | &:before {
43 | position: static;
44 | padding-right: 1ch;
45 | }
46 | }
47 | }
48 |
49 | h1:before { content: "#"; }
50 | h2:before { content: "##"; }
51 | h3:before { content: "###"; }
52 | h4:before { content: "####"; }
53 | h5:before { content: "#####"; }
54 | h6:before { content: "######"; }
55 |
56 |
57 | // Lists ------------------------------------------------------
58 |
59 | ol { counter-reset: ol; }
60 |
61 | ul > li { padding-left: 2ch; }
62 | ol > li { padding-left: 3ch; }
63 |
64 | li {
65 | position: relative;
66 | display: block;
67 |
68 | &:before {
69 | position: absolute;
70 | top: 0;
71 | left: 0;
72 | color: $grey-400;
73 | }
74 | }
75 |
76 | ul > li:before { content: "–"; }
77 |
78 | ol > li:before {
79 | content: counter(ol) ".";
80 | counter-increment: ol;
81 | }
82 |
83 |
84 | // Horizontal Rules -------------------------------------------
85 |
86 | hr {
87 | height: 1rem;
88 | margin: 1.75rem 0;
89 | border: 0;
90 |
91 | &:after {
92 | display: block;
93 | height: 1rem;
94 | overflow: hidden;
95 | content: "* * *";
96 | text-align: center;
97 | overflow: hidden;
98 | color: $grey-400;
99 | font-size: .75rem;
100 | }
101 | }
102 |
103 | %dashed {
104 | content: "– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –";
105 | position: absolute;
106 | left: 0;
107 | overflow: hidden;
108 | width: 100%;
109 | height: 1rem;
110 | line-height: 1;
111 | word-wrap: break-word;
112 | text-align: justify;
113 | letter-spacing: -.25rem;
114 | font-size: 1rem;
115 | color: $grey-300;
116 | }
117 |
118 | .dashed-top {
119 | position: relative;
120 | &:before {
121 | @extend %dashed;
122 | top: -.5rem;
123 | }
124 | }
125 |
126 | .dashed-bottom {
127 | position: relative;
128 | &:after {
129 | @extend %dashed;
130 | bottom: -.5rem;
131 | }
132 | }
133 |
134 | hr.dashed {
135 | @extend .dashed-top;
136 | margin: 2rem 0 1rem;
137 | }
138 |
--------------------------------------------------------------------------------
/sass/components/components.scss:
--------------------------------------------------------------------------------
1 | @import 'alerts';
2 | @import 'forms';
3 | @import 'buttons';
4 | @import 'list-group';
5 | @import 'cards'; // styles contained .list-group
6 | @import 'loading-indicator';
7 | @import 'progress-bar';
8 | @import 'tables';
9 | @import 'tags';
10 | @import 'tooltips';
11 | @import 'icons';
12 | @import 'details';
13 | @import 'dropzone';
14 |
15 |
16 | // Code ------------------------------------------------------
17 |
18 | code {
19 | padding: .25em .25em .125em;
20 | border-radius: 2px;
21 | background-color: $grey-100;
22 | }
23 |
24 | samp {
25 | display: inline-block;
26 | margin-top: -3px;
27 | padding: 1px .25em 0;
28 | background-color: $grey-50;
29 | }
30 |
31 | pre { padding: calc(.75rem - 1px) 1rem; }
32 |
33 | samp,
34 | pre {
35 | border: $border-width solid $grey-300;
36 | border-radius: 2px;
37 | white-space: pre-wrap;
38 | word-wrap: break-word;
39 | word-break: break-all;
40 | page-break-inside: avoid;
41 |
42 | &.scroll {
43 | overflow: auto;
44 | white-space: pre;
45 | }
46 | }
47 |
48 | pre code {
49 | padding: 0;
50 | color: inherit;
51 | background-color: transparent;
52 | }
53 |
54 |
55 | // Links -----------------------------------------------------
56 |
57 | a {
58 | cursor: pointer;
59 | color: $blue;
60 | text-decoration: none;
61 |
62 | &:hover {
63 | color: $blue-700;
64 | text-decoration: underline;
65 | }
66 | }
67 |
68 |
69 | // Images -----------------------------------------------------
70 |
71 | img {
72 | max-width: 100%;
73 |
74 | &.full-width { display: block; }
75 | }
76 |
77 | figure {
78 | margin: 0;
79 |
80 | img { width: 100%; }
81 | }
82 |
83 | figcaption {
84 | text-align: center;
85 | color: $grey;
86 | }
87 |
88 |
89 | // Quotes -----------------------------------------------------
90 |
91 | blockquote {
92 | overflow: hidden;
93 | padding-left: 1rem;
94 | border-left: .25rem solid $grey-300;
95 | & > *:last-child { margin-bottom: 0; }
96 | }
97 |
98 | cite {
99 | float: right;
100 | color: $grey;
101 | &:before { content: "– "; }
102 | }
103 |
104 |
105 | // Inline Text Elements ---------------------------------------
106 |
107 | mark {
108 | box-decoration-break: clone;
109 | background-color: $yellow-200;
110 | box-shadow: 0 -1px 0 3px $yellow-200;
111 |
112 | mark {
113 | background-color: $yellow-600;
114 | box-shadow: 0 -1px 0 3px $yellow-600;
115 | }
116 |
117 | samp, kbd, code {
118 | background-color: $yellow-50;
119 | }
120 | }
121 |
122 | abbr[title] {
123 | text-decoration: none;
124 | border-bottom: 2px dashed $grey-300;
125 | }
126 |
127 | kbd {
128 | display: inline-block;
129 | padding: .1em .4em 0;
130 | vertical-align: middle;
131 | color: $grey-800;
132 | border: solid 1px $grey-200;
133 | border-bottom-color: $grey-300;
134 | border-radius: 3px;
135 | background-color: $grey-50;
136 | box-shadow: inset 0 -1px 0 $grey-300;
137 | font-size: .9em;
138 | }
139 |
140 | // Footnotes --------------------------------------------------
141 |
142 | .footnotes {
143 | padding-top: 3rem;
144 | margin-top: 1.5rem;
145 | }
146 |
--------------------------------------------------------------------------------
/sass/components/_buttons.scss:
--------------------------------------------------------------------------------
1 | // top right bottom left
2 | $button-border-width: 2px;
3 | $border-strength: .2;
4 | $button-padding: calc(.5rem - 3px) .75rem calc(.25rem - 1px);
5 | $dark: rgba(0,0,0,$border-strength);
6 | $light: rgba(255,255,255,$border-strength);
7 | $border-outset: $light $dark $dark $light;
8 | $border-inset: $dark $light $light $dark;
9 |
10 | @mixin button ($color, $hover-color) {
11 | background-color: $color;
12 |
13 | &:hover,
14 | &:focus {
15 | background-color: $hover-color;
16 | }
17 |
18 | &.btn-ghost {
19 | border-color: $color;
20 | color: $color;
21 | }
22 | }
23 |
24 |
25 | // Button -----------------------------------------------------
26 |
27 | .btn {
28 | position: relative;
29 | padding: $button-padding;
30 | border-width: $button-border-width;
31 | border-style: solid;
32 | border-radius: $button-radius;
33 | border-color: $border-outset;
34 | outline: none;
35 | cursor: pointer;
36 | user-select: none;
37 | color: $white;
38 |
39 | &:hover,
40 | &:focus {
41 | text-decoration: none;
42 | border-color: $border-inset;
43 | }
44 |
45 | &:active {
46 | box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
47 | }
48 |
49 | &.btn-ghost {
50 | background-color: transparent;
51 |
52 | &:hover,
53 | &:focus {
54 | color: $white;
55 | border-color: $border-inset;
56 | }
57 | }
58 | }
59 |
60 | .btn-primary { @include button ($blue, $blue-700); }
61 | .btn-success { @include button ($green, $green-700); }
62 | .btn-info { @include button ($cyan, $cyan-700); }
63 | .btn-warning { @include button ($orange, $orange-700); }
64 | .btn-error { @include button ($red, $red-700); }
65 |
66 | .btn-default {
67 | background-color: $grey-200;
68 | color: $grey-700;
69 |
70 | &:hover,
71 | &:focus {
72 | background-color: $grey-400;
73 | color: $white;
74 | }
75 |
76 | &.btn-ghost {
77 | border-color: $grey-400;
78 | color: $grey-700;
79 | }
80 | }
81 |
82 | .btn-link {
83 | border-color: transparent;
84 | background-color: transparent;
85 | color: $blue;
86 |
87 | &:hover,
88 | &:focus {
89 | border-color: transparent;
90 | color: $blue-700;
91 | text-decoration: underline;
92 | }
93 | }
94 |
95 | .btn[disabled] {
96 | cursor: not-allowed;
97 |
98 | &,
99 | &:hover,
100 | &:focus {
101 | background-color: $grey-100;
102 | border-color: $border-outset;
103 | color: $grey-400;
104 | }
105 |
106 | &.btn-ghost,
107 | &.btn-ghost:hover {
108 | background-color: transparent;
109 | border-color: $grey-400;
110 | color: $grey-400;
111 | }
112 | }
113 |
114 |
115 | // Button Group -----------------------------------------------
116 |
117 | .btn-addon {
118 | padding: $button-padding;
119 | border: $button-border-width solid transparent;
120 |
121 | &:first-child { padding-left: 0; }
122 | }
123 |
124 | .btn-group {
125 | @extend .input-group;
126 |
127 | .btn {
128 | flex-grow: 1;
129 | border-radius: 0;
130 | word-break: break-all;
131 | word-break: break-word; // If supported
132 |
133 | &:first-of-type { border-radius: $button-radius 0 0 $button-radius; }
134 | &:last-of-type { border-radius: 0 $button-radius $button-radius 0; }
135 | }
136 |
137 | .btn-ghost:not(:first-child) { margin-left: -$button-border-width; }
138 | }
139 |
--------------------------------------------------------------------------------
/sass/_utilities.scss:
--------------------------------------------------------------------------------
1 | // Space and Size ---------------------------------------------
2 |
3 | .narrow { padding: 0 !important; }
4 | .inner { padding: .5rem .75rem .25rem !important; }
5 | .inner-wide { padding: 1rem 1rem .75rem !important; }
6 |
7 | .p-t-0 { padding-top: 0 !important; }
8 | .p-t-1 { padding-top: 1.5rem !important; }
9 | .p-t-2 { padding-top: 3.0rem !important; }
10 | .p-t-3 { padding-top: 4.5rem !important; }
11 |
12 | .p-b-0 { padding-bottom: 0 !important; }
13 | .p-b-1 { padding-bottom: 1.5rem !important; }
14 | .p-b-2 { padding-bottom: 3.0rem !important; }
15 | .p-b-3 { padding-bottom: 4.5rem !important; }
16 |
17 | .m-t-0 { margin-top: 0 !important; }
18 | .m-t-1 { margin-top: 1.5rem !important; }
19 | .m-t-2 { margin-top: 3.0rem !important; }
20 | .m-t-3 { margin-top: 4.5rem !important; }
21 |
22 | .m-b-0 { margin-bottom: 0 !important; }
23 | .m-b-1 { margin-bottom: 1.5rem !important; }
24 | .m-b-2 { margin-bottom: 3.0rem !important; }
25 | .m-b-3 { margin-bottom: 4.5rem !important; }
26 |
27 | .pull-left { float: left !important; }
28 | .pull-right { float: right !important; }
29 |
30 | .full-width { width: 100% !important; }
31 | .block { display: block !important; }
32 |
33 |
34 | // Hiding -----------------------------------------------------
35 |
36 | .invisible { visibility: hidden !important; }
37 |
38 | .hidden { display: none !important; }
39 |
40 | .hide-text {
41 | font: 0/0 a;
42 | color: transparent;
43 | text-shadow: none;
44 | background-color: transparent;
45 | border: 0;
46 | }
47 |
48 | @media #{$large} {
49 | .hidden-if-large { display: none !important; }
50 | }
51 |
52 | @media #{$medium} {
53 | .hidden-if-medium { display: none !important; }
54 | }
55 |
56 | @media #{$small} {
57 | .hidden-if-small { display: none !important; }
58 | }
59 |
60 |
61 | // Text -------------------------------------------------------
62 |
63 | .lead {
64 | margin-bottom: 1.5rem;
65 | font-size: 1.25em;
66 | line-height: 1.2em;
67 |
68 | }
69 |
70 | .truncate {
71 | overflow: hidden;
72 | white-space: nowrap;
73 | text-overflow: ellipsis;
74 | }
75 |
76 | .text-left { text-align: left; }
77 | .text-center { text-align: center; }
78 | .text-right { text-align: right; }
79 |
80 | .text-bold { font-weight: bold; }
81 | .text-italic { font-style: italic; }
82 |
83 |
84 | // Color ------------------------------------------------------
85 |
86 | .bg-muted { background-color: $grey-100 !important; }
87 | .bg-active { background-color: $blue-100 !important; }
88 | .bg-success { background-color: $green-100 !important; }
89 | .bg-info { background-color: $cyan-100 !important; }
90 | .bg-warning { background-color: $orange-100 !important; }
91 | .bg-error { background-color: $red-100 !important; }
92 |
93 | .text-muted { color: $grey; }
94 | .text-primary { color: $blue; }
95 | .text-success { color: $green; }
96 | .text-info { color: $cyan; }
97 | .text-warning { color: $orange; }
98 | .text-error { color: $red; }
99 |
--------------------------------------------------------------------------------
/sass/_syntax.scss:
--------------------------------------------------------------------------------
1 | // From https://github.com/poole/lanyon/blob/master/public/css/syntax.css
2 |
3 | .highlight .hll { background-color: #ffc; }
4 | .highlight .c { color: #999; } /* Comment */
5 | .highlight .err { color: #a00; background-color: #faa } /* Error */
6 | .highlight .k { color: #069; } /* Keyword */
7 | .highlight .o { color: #555 } /* Operator */
8 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
9 | .highlight .cp { color: #099 } /* Comment.Preproc */
10 | .highlight .c1 { color: #999; } /* Comment.Single */
11 | .highlight .cs { color: #999; } /* Comment.Special */
12 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
13 | .highlight .ge { font-style: italic } /* Generic.Emph */
14 | .highlight .gr { color: #f00 } /* Generic.Error */
15 | .highlight .gh { color: #030; } /* Generic.Heading */
16 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
17 | .highlight .go { color: #aaa } /* Generic.Output */
18 | .highlight .gp { color: #009; } /* Generic.Prompt */
19 | .highlight .gs { } /* Generic.Strong */
20 | .highlight .gu { color: #030; } /* Generic.Subheading */
21 | .highlight .gt { color: #9c6 } /* Generic.Traceback */
22 | .highlight .kc { color: #069; } /* Keyword.Constant */
23 | .highlight .kd { color: #069; } /* Keyword.Declaration */
24 | .highlight .kn { color: #069; } /* Keyword.Namespace */
25 | .highlight .kp { color: #069 } /* Keyword.Pseudo */
26 | .highlight .kr { color: #069; } /* Keyword.Reserved */
27 | .highlight .kt { color: #078; } /* Keyword.Type */
28 | .highlight .m { color: #f60 } /* Literal.Number */
29 | .highlight .s { color: #d44950 } /* Literal.String */
30 | .highlight .na { color: #4f9fcf } /* Name.Attribute */
31 | .highlight .nb { color: #366 } /* Name.Builtin */
32 | .highlight .nc { color: #0a8; } /* Name.Class */
33 | .highlight .no { color: #360 } /* Name.Constant */
34 | .highlight .nd { color: #99f } /* Name.Decorator */
35 | .highlight .ni { color: #999; } /* Name.Entity */
36 | .highlight .ne { color: #c00; } /* Name.Exception */
37 | .highlight .nf { color: #c0f } /* Name.Function */
38 | .highlight .nl { color: #99f } /* Name.Label */
39 | .highlight .nn { color: #0cf; } /* Name.Namespace */
40 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */
41 | .highlight .nv { color: #033 } /* Name.Variable */
42 | .highlight .ow { color: #000; } /* Operator.Word */
43 | .highlight .w { color: #bbb } /* Text.Whitespace */
44 | .highlight .mf { color: #f60 } /* Literal.Number.Float */
45 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */
46 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */
47 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */
48 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */
49 | .highlight .sc { color: #c30 } /* Literal.String.Char */
50 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
51 | .highlight .s2 { color: #c30 } /* Literal.String.Double */
52 | .highlight .se { color: #c30; } /* Literal.String.Escape */
53 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */
54 | .highlight .si { color: #a00 } /* Literal.String.Interpol */
55 | .highlight .sx { color: #c30 } /* Literal.String.Other */
56 | .highlight .sr { color: #3aa } /* Literal.String.Regex */
57 | .highlight .s1 { color: #c30 } /* Literal.String.Single */
58 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */
59 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
60 | .highlight .vc { color: #033 } /* Name.Variable.Class */
61 | .highlight .vg { color: #033 } /* Name.Variable.Global */
62 | .highlight .vi { color: #033 } /* Name.Variable.Instance */
63 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
64 |
--------------------------------------------------------------------------------
/sass/_layout.scss:
--------------------------------------------------------------------------------
1 | // Basic Styles -----------------------------------------------
2 |
3 | // check vertical rhythm (with a baseline of 24px)
4 | // body { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAAYCAYAAADQ+yzZAAAAF0lEQVQYV2NkgALG4cEoLy//39nZyQgAHvQEGSEIElQAAAAASUVORK5CYII=); }
5 |
6 | * {
7 | box-sizing: border-box;
8 | text-rendering: geometricPrecision;
9 | }
10 |
11 | ::selection { background: $blue-100; }
12 |
13 | html,
14 | button,
15 | input,
16 | optgroup,
17 | select,
18 | textarea {
19 | color: $grey-900;
20 | font-size: 16px;
21 | line-height: 1.5;
22 | font-family: "Cousine", Menlo, Lucida Console, Courier New, monospace;
23 | }
24 |
25 | code,
26 | pre,
27 | samp,
28 | kbd {
29 | font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
30 | }
31 |
32 | h1,
33 | h2,
34 | h3,
35 | h4,
36 | h5,
37 | h6 {
38 | line-height: 1.5rem;
39 | margin-top: 1.5rem;
40 | margin-bottom: 1.5rem;
41 |
42 | &.pure,
43 | .grid & {
44 | &:before { display: none; }
45 | }
46 |
47 | .grid & {
48 | margin-top: 0rem;
49 | margin-bottom: 1rem;
50 | }
51 |
52 | & > small {
53 | color: $grey;
54 | line-height: 1.5;
55 | }
56 | }
57 |
58 | h1 {
59 | font-size: 1.5rem;
60 | }
61 | h2 {
62 | font-size: 1.25rem;
63 | }
64 |
65 | p,
66 | ul,
67 | ol,
68 | pre,
69 | form,
70 | table,
71 | blockquote {
72 | margin-top: 0;
73 | margin-bottom: 1.5rem;
74 | }
75 |
76 | ul ul,
77 | ol ol,
78 | ul ol,
79 | ol ul { margin-bottom: 0; }
80 |
81 | small { font-size: .75em; }
82 |
83 |
84 | // Page -------------------------------------------------------
85 |
86 | .container {
87 | max-width: $container;
88 | margin-left: auto;
89 | margin-right: auto;
90 | padding-left: 1rem;
91 | padding-right: 1rem;
92 | }
93 |
94 | .site-header {
95 | display: flex;
96 | flex-wrap: wrap;
97 | align-items: center;
98 | padding: .875rem 0 .625rem;
99 | }
100 |
101 | .site-title {
102 | font-size: 2rem;
103 | color: $blue-grey-600;
104 | }
105 |
106 | .site-search { margin: 0; }
107 |
108 | .site-nav {
109 | display: inline-flex;
110 | align-items: baseline;
111 | margin-left: auto;
112 | margin-top: -.25rem; // diff of .site-header padding
113 |
114 | ul {
115 | display: inline-flex;
116 | flex-wrap: wrap;
117 | align-items: center;
118 | justify-content: flex-end;
119 | margin: 0;
120 | }
121 |
122 | li {
123 | padding-left: 2ch;
124 |
125 | &:last-child { padding-right: 0; }
126 | &:before { display: none; }
127 | }
128 |
129 | &.nav-separated {
130 | overflow: hidden;
131 |
132 | & > ul { margin-right: -2ch; }
133 |
134 | li {
135 | padding-left: 1ch;
136 |
137 | &:after {
138 | content: "|";
139 | color: $grey-200;
140 | padding-left: 1ch;
141 | }
142 | }
143 | }
144 |
145 | .active { font-weight: bold; }
146 |
147 | @media #{$medium} {
148 | flex: 1;
149 | flex-direction: column;
150 | text-align: right;
151 |
152 | li { padding-top: 1rem; }
153 | }
154 | }
155 |
156 | .responsive-nav {
157 | display: none;
158 | flex: 1;
159 | text-align: right;
160 |
161 | label {
162 | cursor: pointer;
163 | color: $blue-grey-600;
164 | }
165 |
166 | svg {
167 | width: 2rem;
168 | height: 2rem;
169 | stroke-width: 2.5px;
170 | }
171 |
172 | & + input[type=checkbox] { display: none; }
173 |
174 | @media #{$medium} {
175 | display: block;
176 |
177 | & ~ .site-nav {
178 | display: none;
179 | min-width: 100%; // so it gets its own row
180 | flex-basis: 100%;
181 | }
182 |
183 | & + input[type=checkbox]:checked ~ .site-nav { display: block; }
184 |
185 | // Animated Version (uses a magic number and timing is slighly off)
186 | &.responsive-nav-animated {
187 | & ~ .site-nav {
188 | display: block;
189 | max-height: 0;
190 | transition: max-height .5s ease-out;
191 | overflow: hidden;
192 | }
193 |
194 | & + input[type=checkbox]:checked ~ .site-nav {
195 | max-height: 10rem; // magic number; should be as near at the real value as possible to reduce perceived delays while the animation hides unused space
196 | transition-timing-function: ease-in;
197 | }
198 | }
199 | }
200 | }
201 |
202 | .site-main {
203 | margin-top: 3rem;
204 | margin-bottom: 3rem;
205 | }
206 |
207 | .site-footer {
208 | margin-top: 3rem;
209 | padding: 3rem 0;
210 | color: $grey-400;
211 | text-align: center;
212 |
213 | a { color: $blue-300; }
214 | }
215 |
--------------------------------------------------------------------------------
/sass/components/_forms.scss:
--------------------------------------------------------------------------------
1 | // Raw Elements -----------------------------------------------
2 |
3 | input[type='email'],
4 | input[type='number'],
5 | input[type='password'],
6 | input[type='search'],
7 | input[type='tel'],
8 | input[type='text'],
9 | input[type='url'],
10 | textarea,
11 | select {
12 | padding: calc(.5rem - 3px) .625rem calc(.25rem - 1px);
13 | appearance: none;
14 | border: 2px solid $grey-300;
15 | border-radius: $button-radius;
16 | background-color: transparent;
17 | box-shadow: none;
18 | outline: 0;
19 |
20 | &:focus {
21 | border-color: $grey-500;
22 | }
23 | }
24 |
25 | input[type="file"] {
26 | line-height: 1;
27 | background-color: transparent; // Edge
28 | }
29 |
30 | input::-webkit-file-upload-button {
31 | padding: .2rem .3rem .05rem;
32 | background-color: $white;
33 | border: 2px solid $grey-400;
34 | border-radius: $button-radius;
35 | }
36 |
37 | input::placeholder { color: $grey-400; }
38 |
39 | select {
40 | padding-right: 1.8rem;
41 | background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2214%22%20viewBox%3D%220%200%2029%2014%22%20width%3D%2229%22%3E%3Cpath%20fill%3D%22%23e0e0e0%22%20d%3D%22M9.37727%203.625l5.08154%206.93523L19.54036%203.625%22%2F%3E%3C%2Fsvg%3E');
42 | background-repeat: no-repeat;
43 | background-position: center right;
44 |
45 | &:focus {
46 | background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2214%22%20viewBox%3D%220%200%2029%2014%22%20width%3D%2229%22%3E%3Cpath%20fill%3D%22%239e9e9e%22%20d%3D%22M9.37727%203.625l5.08154%206.93523L19.54036%203.625%22%2F%3E%3C%2Fsvg%3E');
47 | }
48 | }
49 |
50 | select::-ms-expand { display: none; }
51 |
52 | textarea {
53 | height: auto;
54 | min-height: 2rem;
55 | }
56 |
57 |
58 | // Form ------------------------------------------------------
59 |
60 | .form {
61 | @media #{$small} { width: 100%; }
62 | }
63 |
64 |
65 | // Group ------------------------------------------------------
66 |
67 | .form-group {
68 | display: flex;
69 | flex-wrap: wrap;
70 | margin-bottom: 1.5rem;
71 | }
72 |
73 |
74 | // Label ------------------------------------------------------
75 |
76 | .form-label {
77 | order: 1;
78 | position: relative;
79 | min-width: $form-label-width;
80 | height: 2rem; // so border-bottom style works for textareas as well
81 | color: $grey-800;
82 | border-bottom: $form-border-width solid $grey-300;
83 | line-height: 2rem;
84 | }
85 |
86 |
87 | // Control ----------------------------------------------------
88 |
89 | html .form-control { // specificity fight against input[type]
90 | flex: 1;
91 | order: 2;
92 | min-width: calc(100% - #{$form-label-width});
93 | padding: .25rem 1rem 0;
94 | border: 0;
95 | border-bottom: $form-border-width solid $grey-300;
96 | border-radius: 0; // iOS
97 |
98 | &:focus { border-color: $grey-500; }
99 |
100 | label + label { padding-left: 2rem; }
101 | }
102 |
103 | textarea.form-control {
104 | padding-left: calc(1rem - #{$form-border-width});
105 | // resize: none;
106 | border-bottom: $form-border-width solid $grey-300;
107 | border-left: $form-border-width solid $grey-300;
108 |
109 | & + .form-label:before { // paint over the little border
110 | position: absolute;
111 | content: '';
112 | width: $form-border-width;
113 | background-color: $white;
114 | right: -$form-border-width;
115 | top: 0;
116 | bottom: 0;
117 | }
118 | }
119 |
120 | select.form-control { border-radius: 0; }
121 |
122 |
123 | // States -----------------------------------------------------
124 |
125 | @mixin state ($color, $focus-color) {
126 | .help-block,
127 | .form-label { color: $color; }
128 |
129 | input,
130 | textarea,
131 | select,
132 | .form-label,
133 | .form-control {
134 | border-color: $color;
135 | &:focus { border-color: $focus-color; }
136 | }
137 | }
138 |
139 | .form-success { @include state ($green, $green-800); }
140 | .form-info { @include state ($cyan, $cyan-800); }
141 | .form-warning { @include state ($orange, $orange-800); }
142 | .form-error { @include state ($red, $red-800); }
143 |
144 | .form-control:disabled,
145 | .form-control:disabled + .form-label {
146 | cursor: not-allowed;
147 | color: $grey-400;
148 | -webkit-text-fill-color: $grey-400; // Safari
149 | opacity: 1; // iOS
150 | }
151 |
152 | .form-control[readonly],
153 | .form-control[readonly] + .form-label {
154 | color: $grey;
155 | }
156 |
157 | .form-control:required + .form-label:after {
158 | content: " *";
159 | color: $red-400;
160 | }
161 |
162 |
163 | // Help Block -------------------------------------------------
164 |
165 | .help-block {
166 | order: 3;
167 | min-width: 100%;
168 | flex-basis: 100%;
169 | margin-top: .5rem;
170 | padding-left: 1rem + $form-label-width;
171 | color: $grey;
172 | }
173 |
174 | // Input Group ------------------------------------------------
175 |
176 | .input-group {
177 | display: inline-flex;
178 | flex-wrap: wrap;
179 | // & > *:not(:first-child) { margin-left: -2px; } // maybe?
180 | }
181 |
182 | // Vertical / Responsive --------------------------------------
183 |
184 | @mixin form-control {
185 | display: flex;
186 | flex-wrap: wrap;
187 | min-width: 100%;
188 | flex-basis: 100%;
189 | padding: 0 0 .15rem;
190 |
191 | label { padding-right: 1rem; }
192 | label + label { padding-left: 0; }
193 | }
194 |
195 | @mixin form-vertical {
196 | .form-label {
197 | border-bottom: none;
198 | min-width: 100%;
199 | flex-basis: 100%;
200 | }
201 |
202 | textarea.form-control {
203 | & + .form-label:before { display: none; } // paint over the little border
204 | padding-left: 0;
205 | border-left: none;
206 | }
207 |
208 | .help-block { padding-left: 0; }
209 | }
210 |
211 | .form-vertical {
212 | @include form-vertical;
213 | .form-control { @include form-control; }
214 | }
215 |
216 | @media #{$medium} {
217 | @include form-vertical;
218 | html .form-control { @include form-control; }
219 | }
220 |
--------------------------------------------------------------------------------
/sass/_variables.scss:
--------------------------------------------------------------------------------
1 | $container: 64rem;
2 | $breakpoint-medium: 48rem;
3 | $breakpoint-small: 30rem;
4 |
5 | $small: "screen and (max-width : #{$breakpoint-small})";
6 | $medium: "screen and (max-width : #{$breakpoint-medium})";
7 | $large: "screen and (min-width : #{$breakpoint-medium})";
8 |
9 | $button-radius: 2px;
10 | $border-width: 1px;
11 | $form-border-width: 2px;
12 | $form-label-width: 10rem;
13 |
14 |
15 | // Material Design Colors -------------------------------------
16 |
17 | $black: #000000;
18 | $white: #ffffff;
19 |
20 | $red: #f44336;
21 | $red-50: #ffebee;
22 | $red-100: #ffcdd2;
23 | $red-200: #ef9a9a;
24 | $red-300: #e57373;
25 | $red-400: #ef5350;
26 | $red-500: $red;
27 | $red-600: #e53935;
28 | $red-700: #d32f2f;
29 | $red-800: #c62828;
30 | $red-900: #b71c1c;
31 |
32 | $red-a100: #ff8a80;
33 | $red-a200: #ff5252;
34 | $red-a400: #ff1744;
35 | $red-a700: #d50000;
36 |
37 | $pink: #e91e63;
38 | $pink-50: #fce4ec;
39 | $pink-100: #f8bbd0;
40 | $pink-200: #f48fb1;
41 | $pink-300: #f06292;
42 | $pink-400: #ec407a;
43 | $pink-500: $pink;
44 | $pink-600: #d81b60;
45 | $pink-700: #c2185b;
46 | $pink-800: #ad1457;
47 | $pink-900: #880e4f;
48 |
49 | $pink-a100: #ff80ab;
50 | $pink-a200: #ff4081;
51 | $pink-a400: #f50057;
52 | $pink-a700: #c51162;
53 |
54 | $purple: #9c27b0;
55 | $purple-50: #f3e5f5;
56 | $purple-100: #e1bee7;
57 | $purple-200: #ce93d8;
58 | $purple-300: #ba68c8;
59 | $purple-400: #ab47bc;
60 | $purple-500: $purple;
61 | $purple-600: #8e24aa;
62 | $purple-700: #7b1fa2;
63 | $purple-800: #6a1b9a;
64 | $purple-900: #4a148c;
65 |
66 | $purple-a100: #ea80fc;
67 | $purple-a200: #e040fb;
68 | $purple-a400: #d500f9;
69 | $purple-a700: #aa00ff;
70 |
71 | $deep-purple: #673ab7;
72 | $deep-purple-50: #ede7f6;
73 | $deep-purple-100: #d1c4e9;
74 | $deep-purple-200: #b39ddb;
75 | $deep-purple-300: #9575cd;
76 | $deep-purple-400: #7e57c2;
77 | $deep-purple-500: $deep-purple;
78 | $deep-purple-600: #5e35b1;
79 | $deep-purple-700: #512da8;
80 | $deep-purple-800: #4527a0;
81 | $deep-purple-900: #311b92;
82 |
83 | $deep-purple-a100: #b388ff;
84 | $deep-purple-a200: #7c4dff;
85 | $deep-purple-a400: #651fff;
86 | $deep-purple-a700: #6200ea;
87 |
88 | $indigo: #3f51b5;
89 | $indigo-50: #e8eaf6;
90 | $indigo-100: #c5cae9;
91 | $indigo-200: #9fa8da;
92 | $indigo-300: #7986cb;
93 | $indigo-400: #5c6bc0;
94 | $indigo-500: $indigo;
95 | $indigo-600: #3949ab;
96 | $indigo-700: #303f9f;
97 | $indigo-800: #283593;
98 | $indigo-900: #1a237e;
99 |
100 | $indigo-a100: #8c9eff;
101 | $indigo-a200: #536dfe;
102 | $indigo-a400: #3d5afe;
103 | $indigo-a700: #304ffe;
104 |
105 | $blue: #2196f3;
106 | $blue-50: #e3f2fd;
107 | $blue-100: #bbdefb;
108 | $blue-200: #90caf9;
109 | $blue-300: #64b5f6;
110 | $blue-400: #42a5f5;
111 | $blue-500: $blue;
112 | $blue-600: #1e88e5;
113 | $blue-700: #1976d2;
114 | $blue-800: #1565c0;
115 | $blue-900: #0d47a1;
116 |
117 | $blue-a100: #82b1ff;
118 | $blue-a200: #448aff;
119 | $blue-a400: #2979ff;
120 | $blue-a700: #2962ff;
121 |
122 | $light-blue: #03a9f4;
123 | $light-blue-50: #e1f5fe;
124 | $light-blue-100: #b3e5fc;
125 | $light-blue-200: #81d4fa;
126 | $light-blue-300: #4fc3f7;
127 | $light-blue-400: #29b6f6;
128 | $light-blue-500: $light-blue;
129 | $light-blue-600: #039be5;
130 | $light-blue-700: #0288d1;
131 | $light-blue-800: #0277bd;
132 | $light-blue-900: #01579b;
133 |
134 | $light-blue-a100: #80d8ff;
135 | $light-blue-a200: #40c4ff;
136 | $light-blue-a400: #00b0ff;
137 | $light-blue-a700: #0091ea;
138 |
139 | $cyan: #00bcd4;
140 | $cyan-50: #e0f7fa;
141 | $cyan-100: #b2ebf2;
142 | $cyan-200: #80deea;
143 | $cyan-300: #4dd0e1;
144 | $cyan-400: #26c6da;
145 | $cyan-500: $cyan;
146 | $cyan-600: #00acc1;
147 | $cyan-700: #0097a7;
148 | $cyan-800: #00838f;
149 | $cyan-900: #006064;
150 |
151 | $cyan-a100: #84ffff;
152 | $cyan-a200: #18ffff;
153 | $cyan-a400: #00e5ff;
154 | $cyan-a700: #00b8d4;
155 |
156 | $teal: #009688;
157 | $teal-50: #e0f2f1;
158 | $teal-100: #b2dfdb;
159 | $teal-200: #80cbc4;
160 | $teal-300: #4db6ac;
161 | $teal-400: #26a69a;
162 | $teal-500: $teal;
163 | $teal-600: #00897b;
164 | $teal-700: #00796b;
165 | $teal-800: #00695c;
166 | $teal-900: #004d40;
167 |
168 | $teal-a100: #a7ffeb;
169 | $teal-a200: #64ffda;
170 | $teal-a400: #1de9b6;
171 | $teal-a700: #00bfa5;
172 |
173 | $green: #4caf50;
174 | $green-50: #e8f5e9;
175 | $green-100: #c8e6c9;
176 | $green-200: #a5d6a7;
177 | $green-300: #81c784;
178 | $green-400: #66bb6a;
179 | $green-500: $green;
180 | $green-600: #43a047;
181 | $green-700: #388e3c;
182 | $green-800: #2e7d32;
183 | $green-900: #1b5e20;
184 |
185 | $green-a100: #b9f6ca;
186 | $green-a200: #69f0ae;
187 | $green-a400: #00e676;
188 | $green-a700: #00c853;
189 |
190 | $light-green: #8bc34a;
191 | $light-green-50: #f1f8e9;
192 | $light-green-100: #dcedc8;
193 | $light-green-200: #c5e1a5;
194 | $light-green-300: #aed581;
195 | $light-green-400: #9ccc65;
196 | $light-green-500: $light-green;
197 | $light-green-600: #7cb342;
198 | $light-green-700: #689f38;
199 | $light-green-800: #558b2f;
200 | $light-green-900: #33691e;
201 |
202 | $light-green-a100: #ccff90;
203 | $light-green-a200: #b2ff59;
204 | $light-green-a400: #76ff03;
205 | $light-green-a700: #64dd17;
206 |
207 | $lime: #cddc39;
208 | $lime-50: #f9fbe7;
209 | $lime-100: #f0f4c3;
210 | $lime-200: #e6ee9c;
211 | $lime-300: #dce775;
212 | $lime-400: #d4e157;
213 | $lime-500: $lime;
214 | $lime-600: #c0ca33;
215 | $lime-700: #afb42b;
216 | $lime-800: #9e9d24;
217 | $lime-900: #827717;
218 |
219 | $lime-a100: #f4ff81;
220 | $lime-a200: #eeff41;
221 | $lime-a400: #c6ff00;
222 | $lime-a700: #aeea00;
223 |
224 | $yellow: #ffeb3b;
225 | $yellow-50: #fffde7;
226 | $yellow-100: #fff9c4;
227 | $yellow-200: #fff59d;
228 | $yellow-300: #fff176;
229 | $yellow-400: #ffee58;
230 | $yellow-500: $yellow;
231 | $yellow-600: #fdd835;
232 | $yellow-700: #fbc02d;
233 | $yellow-800: #f9a825;
234 | $yellow-900: #f57f17;
235 |
236 | $yellow-a100: #ffff8d;
237 | $yellow-a200: #ffff00;
238 | $yellow-a400: #ffea00;
239 | $yellow-a700: #ffd600;
240 |
241 | $amber: #ffc107;
242 | $amber-50: #fff8e1;
243 | $amber-100: #ffecb3;
244 | $amber-200: #ffe082;
245 | $amber-300: #ffd54f;
246 | $amber-400: #ffca28;
247 | $amber-500: $amber;
248 | $amber-600: #ffb300;
249 | $amber-700: #ffa000;
250 | $amber-800: #ff8f00;
251 | $amber-900: #ff6f00;
252 |
253 | $amber-a100: #ffe57f;
254 | $amber-a200: #ffd740;
255 | $amber-a400: #ffc400;
256 | $amber-a700: #ffab00;
257 |
258 | $orange: #ff9800;
259 | $orange-50: #fff3e0;
260 | $orange-100: #ffe0b2;
261 | $orange-200: #ffcc80;
262 | $orange-300: #ffb74d;
263 | $orange-400: #ffa726;
264 | $orange-500: $orange;
265 | $orange-600: #fb8c00;
266 | $orange-700: #f57c00;
267 | $orange-800: #ef6c00;
268 | $orange-900: #e65100;
269 |
270 | $orange-a100: #ffd180;
271 | $orange-a200: #ffab40;
272 | $orange-a400: #ff9100;
273 | $orange-a700: #ff6d00;
274 |
275 | $deep-orange: #ff5722;
276 | $deep-orange-50: #fbe9e7;
277 | $deep-orange-100: #ffccbc;
278 | $deep-orange-200: #ffab91;
279 | $deep-orange-300: #ff8a65;
280 | $deep-orange-400: #ff7043;
281 | $deep-orange-500: $deep-orange;
282 | $deep-orange-600: #f4511e;
283 | $deep-orange-700: #e64a19;
284 | $deep-orange-800: #d84315;
285 | $deep-orange-900: #bf360c;
286 |
287 | $deep-orange-a100: #ff9e80;
288 | $deep-orange-a200: #ff6e40;
289 | $deep-orange-a400: #ff3d00;
290 | $deep-orange-a700: #dd2c00;
291 |
292 | $brown: #795548;
293 | $brown-50: #efebe9;
294 | $brown-100: #d7ccc8;
295 | $brown-200: #bcaaa4;
296 | $brown-300: #a1887f;
297 | $brown-400: #8d6e63;
298 | $brown-500: $brown;
299 | $brown-600: #6d4c41;
300 | $brown-700: #5d4037;
301 | $brown-800: #4e342e;
302 | $brown-900: #3e2723;
303 |
304 | $grey: #9e9e9e;
305 | $grey-50: #fafafa;
306 | $grey-100: #f5f5f5;
307 | $grey-200: #eeeeee;
308 | $grey-300: #e0e0e0;
309 | $grey-400: #bdbdbd;
310 | $grey-500: $grey;
311 | $grey-600: #757575;
312 | $grey-700: #616161;
313 | $grey-800: #424242;
314 | $grey-900: #212121;
315 |
316 | $blue-grey: #607d8b;
317 | $blue-grey-50: #eceff1;
318 | $blue-grey-100: #cfd8dc;
319 | $blue-grey-200: #b0bec5;
320 | $blue-grey-300: #90a4ae;
321 | $blue-grey-400: #78909c;
322 | $blue-grey-500: $blue-grey;
323 | $blue-grey-600: #546e7a;
324 | $blue-grey-700: #455a64;
325 | $blue-grey-800: #37474f;
326 | $blue-grey-900: #263238;
327 |
--------------------------------------------------------------------------------
/icons.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sass/_normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Change the default font family in all browsers (opinionated).
5 | * 2. Correct the line height in all browsers.
6 | * 3. Prevent adjustments of font size after orientation changes in
7 | * IE on Windows Phone and in iOS.
8 | */
9 |
10 | /* Document
11 | ========================================================================== */
12 |
13 | html {
14 | font-family: sans-serif; /* 1 */
15 | line-height: 1.15; /* 2 */
16 | -ms-text-size-adjust: 100%; /* 3 */
17 | -webkit-text-size-adjust: 100%; /* 3 */
18 | }
19 |
20 | /* Sections
21 | ========================================================================== */
22 |
23 | /**
24 | * Remove the margin in all browsers (opinionated).
25 | */
26 |
27 | body {
28 | margin: 0;
29 | }
30 |
31 | /**
32 | * Add the correct display in IE 9-.
33 | */
34 |
35 | article,
36 | aside,
37 | footer,
38 | header,
39 | nav,
40 | section {
41 | display: block;
42 | }
43 |
44 | /**
45 | * Correct the font size and margin on `h1` elements within `section` and
46 | * `article` contexts in Chrome, Firefox, and Safari.
47 | */
48 |
49 | h1 {
50 | font-size: 2em;
51 | margin: 0.67em 0;
52 | }
53 |
54 | /* Grouping content
55 | ========================================================================== */
56 |
57 | /**
58 | * Add the correct display in IE 9-.
59 | * 1. Add the correct display in IE.
60 | */
61 |
62 | figcaption,
63 | figure,
64 | main { /* 1 */
65 | display: block;
66 | }
67 |
68 | /**
69 | * Add the correct margin in IE 8.
70 | */
71 |
72 | figure {
73 | margin: 1em 40px;
74 | }
75 |
76 | /**
77 | * 1. Add the correct box sizing in Firefox.
78 | * 2. Show the overflow in Edge and IE.
79 | */
80 |
81 | hr {
82 | box-sizing: content-box; /* 1 */
83 | height: 0; /* 1 */
84 | overflow: visible; /* 2 */
85 | }
86 |
87 | /**
88 | * 1. Correct the inheritance and scaling of font size in all browsers.
89 | * 2. Correct the odd `em` font sizing in all browsers.
90 | */
91 |
92 | pre {
93 | font-family: monospace, monospace; /* 1 */
94 | font-size: 1em; /* 2 */
95 | }
96 |
97 | /* Text-level semantics
98 | ========================================================================== */
99 |
100 | /**
101 | * 1. Remove the gray background on active links in IE 10.
102 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
103 | */
104 |
105 | a {
106 | background-color: transparent; /* 1 */
107 | -webkit-text-decoration-skip: objects; /* 2 */
108 | }
109 |
110 | /**
111 | * Remove the outline on focused links when they are also active or hovered
112 | * in all browsers (opinionated).
113 | */
114 |
115 | a:active,
116 | a:hover {
117 | outline-width: 0;
118 | }
119 |
120 | /**
121 | * 1. Remove the bottom border in Firefox 39-.
122 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
123 | */
124 |
125 | abbr[title] {
126 | border-bottom: none; /* 1 */
127 | text-decoration: underline; /* 2 */
128 | text-decoration: underline dotted; /* 2 */
129 | }
130 |
131 | /**
132 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
133 | */
134 |
135 | b,
136 | strong {
137 | font-weight: inherit;
138 | }
139 |
140 | /**
141 | * Add the correct font weight in Chrome, Edge, and Safari.
142 | */
143 |
144 | b,
145 | strong {
146 | font-weight: bolder;
147 | }
148 |
149 | /**
150 | * 1. Correct the inheritance and scaling of font size in all browsers.
151 | * 2. Correct the odd `em` font sizing in all browsers.
152 | */
153 |
154 | code,
155 | kbd,
156 | samp {
157 | font-family: monospace, monospace; /* 1 */
158 | font-size: 1em; /* 2 */
159 | }
160 |
161 | /**
162 | * Add the correct font style in Android 4.3-.
163 | */
164 |
165 | dfn {
166 | font-style: italic;
167 | }
168 |
169 | /**
170 | * Add the correct background and color in IE 9-.
171 | */
172 |
173 | mark {
174 | background-color: #ff0;
175 | color: #000;
176 | }
177 |
178 | /**
179 | * Add the correct font size in all browsers.
180 | */
181 |
182 | small {
183 | font-size: 80%;
184 | }
185 |
186 | /**
187 | * Prevent `sub` and `sup` elements from affecting the line height in
188 | * all browsers.
189 | */
190 |
191 | sub,
192 | sup {
193 | font-size: 75%;
194 | line-height: 0;
195 | position: relative;
196 | vertical-align: baseline;
197 | }
198 |
199 | sub {
200 | bottom: -0.25em;
201 | }
202 |
203 | sup {
204 | top: -0.5em;
205 | }
206 |
207 | /* Embedded content
208 | ========================================================================== */
209 |
210 | /**
211 | * Add the correct display in IE 9-.
212 | */
213 |
214 | audio,
215 | video {
216 | display: inline-block;
217 | }
218 |
219 | /**
220 | * Add the correct display in iOS 4-7.
221 | */
222 |
223 | audio:not([controls]) {
224 | display: none;
225 | height: 0;
226 | }
227 |
228 | /**
229 | * Remove the border on images inside links in IE 10-.
230 | */
231 |
232 | img {
233 | border-style: none;
234 | }
235 |
236 | /**
237 | * Hide the overflow in IE.
238 | */
239 |
240 | svg:not(:root) {
241 | overflow: hidden;
242 | }
243 |
244 | /* Forms
245 | ========================================================================== */
246 |
247 | /**
248 | * 1. Change the font styles in all browsers (opinionated).
249 | * 2. Remove the margin in Firefox and Safari.
250 | */
251 |
252 | button,
253 | input,
254 | optgroup,
255 | select,
256 | textarea {
257 | font-family: sans-serif; /* 1 */
258 | font-size: 100%; /* 1 */
259 | line-height: 1.15; /* 1 */
260 | margin: 0; /* 2 */
261 | }
262 |
263 | /**
264 | * Show the overflow in IE.
265 | * 1. Show the overflow in Edge.
266 | */
267 |
268 | button,
269 | input { /* 1 */
270 | overflow: visible;
271 | }
272 |
273 | /**
274 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
275 | * 1. Remove the inheritance of text transform in Firefox.
276 | */
277 |
278 | button,
279 | select { /* 1 */
280 | text-transform: none;
281 | }
282 |
283 | /**
284 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
285 | * controls in Android 4.
286 | * 2. Correct the inability to style clickable types in iOS and Safari.
287 | */
288 |
289 | button,
290 | html [type="button"], /* 1 */
291 | [type="reset"],
292 | [type="submit"] {
293 | -webkit-appearance: button; /* 2 */
294 | }
295 |
296 | /**
297 | * Remove the inner border and padding in Firefox.
298 | */
299 |
300 | button::-moz-focus-inner,
301 | [type="button"]::-moz-focus-inner,
302 | [type="reset"]::-moz-focus-inner,
303 | [type="submit"]::-moz-focus-inner {
304 | border-style: none;
305 | padding: 0;
306 | }
307 |
308 | /**
309 | * Restore the focus styles unset by the previous rule.
310 | */
311 |
312 | button:-moz-focusring,
313 | [type="button"]:-moz-focusring,
314 | [type="reset"]:-moz-focusring,
315 | [type="submit"]:-moz-focusring {
316 | outline: 1px dotted ButtonText;
317 | }
318 |
319 | /**
320 | * Change the border, margin, and padding in all browsers (opinionated).
321 | */
322 |
323 | fieldset {
324 | border: 1px solid #c0c0c0;
325 | margin: 0 2px;
326 | padding: 0.35em 0.625em 0.75em;
327 | }
328 |
329 | /**
330 | * 1. Correct the text wrapping in Edge and IE.
331 | * 2. Correct the color inheritance from `fieldset` elements in IE.
332 | * 3. Remove the padding so developers are not caught out when they zero out
333 | * `fieldset` elements in all browsers.
334 | */
335 |
336 | legend {
337 | box-sizing: border-box; /* 1 */
338 | color: inherit; /* 2 */
339 | display: table; /* 1 */
340 | max-width: 100%; /* 1 */
341 | padding: 0; /* 3 */
342 | white-space: normal; /* 1 */
343 | }
344 |
345 | /**
346 | * 1. Add the correct display in IE 9-.
347 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
348 | */
349 |
350 | progress {
351 | display: inline-block; /* 1 */
352 | vertical-align: baseline; /* 2 */
353 | }
354 |
355 | /**
356 | * Remove the default vertical scrollbar in IE.
357 | */
358 |
359 | textarea {
360 | overflow: auto;
361 | }
362 |
363 | /**
364 | * 1. Add the correct box sizing in IE 10-.
365 | * 2. Remove the padding in IE 10-.
366 | */
367 |
368 | [type="checkbox"],
369 | [type="radio"] {
370 | box-sizing: border-box; /* 1 */
371 | padding: 0; /* 2 */
372 | }
373 |
374 | /**
375 | * Correct the cursor style of increment and decrement buttons in Chrome.
376 | */
377 |
378 | [type="number"]::-webkit-inner-spin-button,
379 | [type="number"]::-webkit-outer-spin-button {
380 | height: auto;
381 | }
382 |
383 | /**
384 | * 1. Correct the odd appearance in Chrome and Safari.
385 | * 2. Correct the outline style in Safari.
386 | */
387 |
388 | [type="search"] {
389 | -webkit-appearance: textfield; /* 1 */
390 | outline-offset: -2px; /* 2 */
391 | }
392 |
393 | /**
394 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
395 | */
396 |
397 | [type="search"]::-webkit-search-cancel-button,
398 | [type="search"]::-webkit-search-decoration {
399 | -webkit-appearance: none;
400 | }
401 |
402 | /**
403 | * 1. Correct the inability to style clickable types in iOS and Safari.
404 | * 2. Change font properties to `inherit` in Safari.
405 | */
406 |
407 | ::-webkit-file-upload-button {
408 | -webkit-appearance: button; /* 1 */
409 | font: inherit; /* 2 */
410 | }
411 |
412 | /* Interactive
413 | ========================================================================== */
414 |
415 | /*
416 | * Add the correct display in IE 9-.
417 | * 1. Add the correct display in Edge, IE, and Firefox.
418 | */
419 |
420 | details, /* 1 */
421 | menu {
422 | display: block;
423 | }
424 |
425 | /*
426 | * Add the correct display in all browsers.
427 | */
428 |
429 | summary {
430 | display: list-item;
431 | }
432 |
433 | /* Scripting
434 | ========================================================================== */
435 |
436 | /**
437 | * Add the correct display in IE 9-.
438 | */
439 |
440 | canvas {
441 | display: inline-block;
442 | }
443 |
444 | /**
445 | * Add the correct display in IE.
446 | */
447 |
448 | template {
449 | display: none;
450 | }
451 |
452 | /* Hidden
453 | ========================================================================== */
454 |
455 | /**
456 | * Add the correct display in IE 10-.
457 | */
458 |
459 | [hidden] {
460 | display: none;
461 | }
462 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Tawian
9 |
10 |
11 |
12 |
13 |
14 |
15 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
49 |
50 |
51 |
52 | Tawian frontend
53 |
54 | Components
55 |
56 | Links and Typo
57 |
58 | Lead ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
59 |
60 |
61 | Lorem ipsum dolor sit amet adipisicing elit, sed do eiusmod italic incididunt ut bold et dolore magna aliqua. Ut enim ad highlight minim veniam , deletion quis nostrud exercitation insertation ullamco laboris underlined nisi ut aliquip ex small ea commodo consequat abbr . Duis aute irure dolor in reprehenderit ⌘ + Space in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
62 |
63 |
64 | Truncate Truncate Truncate Truncate Truncate Truncate Truncate Truncate Truncate Truncate Truncate Truncate
65 |
66 |
67 | List
68 |
69 |
70 |
71 |
72 | Item
73 |
74 | Sub Item
75 | Sub Item
76 | Sub Item
77 |
78 |
79 | Item
80 | Item
81 |
82 |
83 |
84 |
85 | One
86 | Two
87 | Three
88 |
89 | Three One
90 | Three Two
91 |
92 |
93 | Four
94 |
95 |
96 |
97 |
98 |
99 | Blockquote
100 |
101 |
102 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates quis cumque similique voluptas facilis fugit inventore odit, quidem et ab, quos, blanditiis iure! Ipsum nostrum corrupti architecto fugit, culpa expedita. someone
103 |
104 |
105 |
106 | Code
107 |
108 | You can use inline code, inline sample output or code blocks. Use .scroll to prevent code wrapping.
109 |
110 | while true ; do { echo -e "HTTP/1.1 200 OK \r\n " ; cat index.html; } | nc -l 8080; done
111 |
112 |
113 | $ time sleep 3 3.00 real 0.00 user 0.00 sys $ exit
114 |
115 | Horizontal Rule
116 |
117 |
118 |
119 |
120 | Form
121 |
122 | Inline Form
123 |
124 |
137 |
138 |
139 | Horizontal Form (default on larger screens)
140 |
141 |
202 |
203 |
204 | Stateful Form
205 |
206 |
207 |
208 |
209 |
210 | INFO
211 |
212 |
213 |
214 |
215 | WARNING
216 |
217 |
218 |
219 |
220 |
221 | Help Block
222 |
223 |
224 |
225 |
226 |
227 | NORMAL
228 | Please only use alphanumeric characters
229 |
230 |
231 |
232 |
233 | SUCCESS
234 | Congrats, this name is still available
235 |
236 |
237 |
238 |
239 | ERROR
240 | This does not look like a valid email address
241 |
242 |
243 |
244 |
245 |
246 | Disabled
247 |
248 |
249 |
250 |
251 |
252 | TEXT
253 |
254 |
255 |
256 |
257 | Optione One
258 |
259 | SELECT
260 |
261 |
262 |
263 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam placeat ratione nisi assumenda quo saepe quasi iste temporibus asperiores. Soluta cupuam at reprehenderit facere. Asperiores nulla rerum earum pariatur.
264 | TEXTAREA
265 |
266 |
267 |
268 |
269 |
270 | Readonly
271 |
272 |
273 |
274 |
275 |
276 | TEXT
277 |
278 |
279 |
280 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam placeat ratione nisi assumenda quo saepe quasi iste temporibus asperiores. Soluta cupuam at reprehenderit facere. Asperiores nulla rerum earum pariatur.
281 | TEXTAREA
282 |
283 |
284 |
285 |
286 |
287 | Required
288 |
289 |
290 |
291 |
292 |
293 | TEXT
294 |
295 |
296 |
297 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam placeat ratione nisi assumenda quo saepe quasi iste temporibus asperiores. Soluta cupuam at reprehenderit facere. Asperiores nulla rerum earum pariatur.
298 | TEXTAREA
299 |
300 |
301 |
302 |
303 |
304 | Vertical Form (default on smaller screens)
305 |
306 |
307 |
369 |
370 |
371 |
372 |
373 | File Input with Dropzones, e.g. react-dropzone
374 |
375 |
376 |
379 |
382 |
383 |
Rejected Style
384 |
385 |
386 |
387 |
388 | Table
389 |
390 |
391 |
392 |
393 | states
394 | param
395 | param
396 | param
397 |
398 |
399 |
400 |
401 | cell states
402 | 90
403 | 80
404 | 70
405 |
406 |
407 | normal state
408 | 60
409 | 85
410 | 80
411 |
412 |
413 | row state
414 | 80
415 | 65
416 | 60
417 |
418 |
419 | Table with fixed layout and caption
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 | classes
428 | param
429 | param
430 | param
431 |
432 |
433 |
434 |
435 | narrow
436 | ✗
437 | ✗
438 | ✔
439 |
440 |
441 | striped
442 | ✔
443 | ✔
444 | ✔
445 |
446 |
447 | /
448 | ✔
449 | ✗
450 | ✔
451 |
452 |
453 | /
454 | ✔
455 | ✔
456 | ✗
457 |
458 |
459 | /
460 | ✔
461 | ✗
462 | ✔
463 |
464 |
465 | /
466 | ✔
467 | ✔
468 | ✗
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 | classes
478 | param
479 | param
480 | param
481 |
482 |
483 |
484 |
485 | wide
486 | ✗
487 | ✗
488 | ✔
489 |
490 |
491 | hoverable
492 | ✔
493 | ✗
494 | ✔
495 |
496 |
497 | /
498 | ✔
499 | ✔
500 | ✗
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 | List Group
509 |
510 |
511 |
512 |
513 | Cras justo odio
514 | DISABLED
515 | Morbi leo risus Tag
516 | ACTIVE
517 | Porta ac consectetur
518 |
519 |
520 |
529 |
530 |
531 | Plain Buttons look like Links
532 | Active Plain Button
533 | Success
534 | Ghost Info
535 | Ghost Error
536 |
537 |
538 |
539 |
540 |
541 | Progress bar
542 |
543 |
544 |
545 |
546 |
549 |
550 |
551 |
552 |
555 |
556 |
557 |
558 | with
.narrow
559 |
564 |
565 |
570 |
571 |
576 |
577 |
578 |
579 |
580 | For advanced progress bars consider progressbar.js .
581 |
582 |
583 |
584 | Buttons
585 |
586 |
587 | Default
588 | Primary
589 | Success
590 | Info
591 | Warning
592 | Error
593 | Disabled
594 | Link
595 |
596 |
597 |
598 | Default
599 | Primary
600 | Success
601 | Info
602 | Warning
603 | Error
604 | Disabled
605 |
606 |
607 |
608 | Block Level Button
609 |
610 |
611 |
612 | Button Groups
613 |
614 |
615 |
616 |
617 | Left
618 | Middle
619 | Right
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
629 |
630 |
631 |
632 |
633 | 1
634 | 2
635 | 3
636 |
637 |
638 |
639 |
640 |
641 | Full
642 | Width
643 |
644 |
645 |
646 |
647 |
648 | Way
649 | too many
650 | Elements
651 | to fit in
652 | one line
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 | 1
662 | 2
663 | 3
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 | Prefix
674 | 1
675 | 2
676 | 3
677 | Postfix
678 |
679 |
680 |
681 |
682 |
683 | Loading Indicator
684 |
685 | Loading
686 |
687 |
688 | Tags
689 |
690 |
691 | Tags have different states like
692 | normal and
693 | success and
694 | info and
695 | warning and
696 | error .
697 |
698 |
699 |
700 |
701 |
702 | The icons don't work in IE / Edge. Consider inlining the svg file for Edge or svg4everybody for IE.
703 |
704 |
705 | Text
706 |
707 | Search
708 |
709 |
710 | Reload
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
720 |
721 |
722 |
723 |
724 |
725 |
726 | Yay
727 |
728 |
729 | Can be sized, e.g. normal, medium or large.
730 |
731 |
732 |
733 |
734 |
735 |
736 |
737 |
738 |
739 |
740 |
741 |
742 |
743 |
744 |
745 |
746 |
747 |
748 |
749 |
750 |
751 |
752 |
753 |
754 |
755 |
756 |
757 |
758 |
759 |
760 |
761 |
762 |
763 |
764 |
765 |
766 |
767 |
768 |
769 |
770 |
771 |
772 |
773 |
774 |
775 |
776 |
777 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 |
815 |
816 |
817 |
818 |
819 |
820 |
821 | Tooltips naive version, might be out of screen
822 |
823 |
824 |
825 | Tooltip Top
826 |
827 |
828 | Tooltip Right
829 |
830 |
831 | Tooltip Left
832 |
833 |
834 | Tooltip Bottom
835 |
836 |
837 |
838 |
839 | Cards
840 |
841 |
842 |
843 |
844 |
845 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita, quas ex vero enim in doloribus officiis ullam vel nam esse sapiente velit incidunt. Eaque quod et, aut maiores excepturi sint.
846 |
847 |
848 |
849 |
850 |
851 |
852 |
853 |
854 |
855 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita, quas ex vero enim in doloribus officiis ullam vel nam esse sapiente velit incidunt. Eaque quod et, aut maiores excepturi sint.
856 |
857 |
858 |
859 |
860 |
861 |
862 |
863 | Cras justo odio
864 | Dapibus ac facilisis in
865 | Morbi leo risus
866 | Vestibulum at eros
867 | Porta ac consectetur
868 |
869 |
870 |
871 |
872 |
873 |
874 |
875 |
and a second body
876 |
echo "and a third"
877 |
878 |
879 |
880 |
881 |
882 | Alerts
883 |
884 |
885 |
886 |
887 |
888 |
889 |
890 |
891 |
892 |
893 | Images and Figures
894 |
895 | You can use inline.
896 |
897 | .full-width
898 |
899 |
900 |
901 | Figure with Caption
902 |
903 |
904 |
905 | Bildbeschreibung
906 |
907 |
908 |
909 | Details & Summary
910 |
911 |
912 | Hidden Text Sample
913 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum molestiae et dicta, vero alias ab tempore obcaecati tempora odit voluptates. Eum inventore omnis, ullam rerum tenetur optio quasi a totam!
914 |
915 |
916 |
917 | Hidden Code Sample
918 | $ time sleep 3 3.00 real 0.00 user 0.00 sys $ exit
919 |
920 |
921 | Toggleable Cards
922 |
923 |
924 |
925 |
926 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita, quas ex vero enim in doloribus officiis ullam vel nam esse sapiente velit incidunt. Eaque quod et, aut maiores excepturi sint.
927 |
928 | $ time sleep 3 3.00 real 0.00 user 0.00 sys $ exit
929 |
930 |
931 |
932 | Basic
933 |
934 | Use .container to centralize the main content.
935 |
936 | Use .site-header, .site-main and .site-footer for the main sectioning elements.
937 |
938 | .site-header contains .site-nav which is not responsive by default but can be appended by .responsive-nav to collapse and show a hamburger icon on smaller screens. It can carry .responsive-nav-animated to add a sliding animation to the nav.
939 |
940 |
941 | Grid
942 |
943 |
944 |
945 |
946 |
947 |
948 |
949 |
950 |
951 |
952 |
953 |
954 |
961 |
962 |
968 |
969 |
970 |
971 |
972 |
973 |
974 |
975 |
976 |
977 |
978 |
979 |
980 |
981 |
982 |
983 |
984 |
985 |
986 | Inline Grid
987 |
988 |
989 |
990 | other elements
991 | take the size they need
992 |
993 |
994 |
995 | Modifiers
996 |
997 |
998 |
999 |
.grid modifiers
1000 |
1001 | To change spacing use grid-narrow or grid-wide
1002 |
1003 |
1004 | To align items with align-items use
1005 |
1006 | grid-top: To top
1007 | grid-middle: To middle
1008 | grid-bottom: To bottom
1009 | grid-stretch: Stretch items
1010 | grid-baseline: To baseline
1011 |
1012 |
1013 |
1014 |
1015 | To layout contents with justify-content use
1016 |
1017 | grid-left: To left
1018 | grid-center: To center
1019 | grid-right: To right
1020 | grid-between: Add spaces between items
1021 | grid-around: Add spaces around items
1022 |
1023 |
1024 |
1025 |
1026 |
1027 |
.cell modifiers
1028 |
1029 | grid-top: To top
1030 | grid-middle: To middle
1031 | grid-bottom: To bottom
1032 |
1033 |
1034 | cell-1: Set item width to 8.3% of parent
1035 | cell-2: Set item width to 16.7% of parent
1036 | cell-3: Set item width to 25% of parent
1037 | cell-4: Set item width to 33% of parent
1038 | cell-5: Set item width to 41.7% of parent
1039 | cell-6: Set item width to 50% of parent
1040 | cell-7: Set item width to 58.3% of parent
1041 | cell-8: Set item width to 66.7% of parent
1042 | cell-9: Set item width to 75% of parent
1043 | cell-10: Set item width to 83.3% of parent
1044 | cell-11: Set item width to 91.7% of parent
1045 | cell-12: Set item width to 100% of parent
1046 |
1047 |
1048 |
1049 |
1050 |
1057 |
1058 |
1059 |
1060 |
1063 |
1064 |
1065 |
1066 |
1067 |
1068 |
1069 |
1070 |
1071 |
1072 |
1073 |
1074 |
1075 |
1076 |
1077 |
--------------------------------------------------------------------------------
/tawian-frontend.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a,.list-group button:not(.btn){background-color:transparent;-webkit-text-decoration-skip:objects}a:active,.list-group button:active:not(.btn),a:hover,.list-group button:hover:not(.btn){outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}h1,h2,h3,h4,h5,h6,ol,ul,li,code,blockquote{margin:0;padding:0;font-size:1rem}h1,h2,h3,h4,h5,h6{position:relative}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{position:absolute;left:-4.675rem;width:4rem;text-align:right;color:#bdbdbd}@media screen and (max-width: 68rem){h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{position:static;padding-right:1ch}}h1:before{content:"#"}h2:before{content:"##"}h3:before{content:"###"}h4:before{content:"####"}h5:before{content:"#####"}h6:before{content:"######"}ol{counter-reset:ol}ul>li{padding-left:2ch}ol>li{padding-left:3ch}li{position:relative;display:block}li:before{position:absolute;top:0;left:0;color:#bdbdbd}ul>li:before{content:"–"}ol>li:before{content:counter(ol) ".";counter-increment:ol}hr{height:1rem;margin:1.75rem 0;border:0}hr:after{display:block;height:1rem;overflow:hidden;content:"* * *";text-align:center;overflow:hidden;color:#bdbdbd;font-size:.75rem}.dashed-top:before,hr.dashed:before,.dashed-bottom:after{content:"– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –";position:absolute;left:0;overflow:hidden;width:100%;height:1rem;line-height:1;word-wrap:break-word;text-align:justify;letter-spacing:-.25rem;font-size:1rem;color:#e0e0e0}.dashed-top,hr.dashed{position:relative}.dashed-top:before,hr.dashed:before{top:-.5rem}.dashed-bottom{position:relative}.dashed-bottom:after{bottom:-.5rem}hr.dashed{margin:2rem 0 1rem}.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.grid-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.grid-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.grid-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.grid-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.grid-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.grid-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.grid-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.grid-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.grid-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-around{-ms-flex-pack:distribute;justify-content:space-around}.cell{-webkit-box-flex:1;-ms-flex:1;flex:1}.cell>*:last-child{margin-bottom:0}.cell-top{margin-bottom:auto}.cell-middle{margin:auto 0}.cell-bottom{margin-top:auto}.cell-1{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 1 / 12);flex:0 0 calc(100% * 1 / 12);min-width:calc(100% * 1 / 12)}.cell-2{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 2 / 12);flex:0 0 calc(100% * 2 / 12);min-width:calc(100% * 2 / 12)}.cell-3{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 3 / 12);flex:0 0 calc(100% * 3 / 12);min-width:calc(100% * 3 / 12)}.cell-4{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 4 / 12);flex:0 0 calc(100% * 4 / 12);min-width:calc(100% * 4 / 12)}.cell-5{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 5 / 12);flex:0 0 calc(100% * 5 / 12);min-width:calc(100% * 5 / 12)}.cell-6{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 6 / 12);flex:0 0 calc(100% * 6 / 12);min-width:calc(100% * 6 / 12)}.cell-7{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 7 / 12);flex:0 0 calc(100% * 7 / 12);min-width:calc(100% * 7 / 12)}.cell-8{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 8 / 12);flex:0 0 calc(100% * 8 / 12);min-width:calc(100% * 8 / 12)}.cell-9{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 9 / 12);flex:0 0 calc(100% * 9 / 12);min-width:calc(100% * 9 / 12)}.cell-10{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 10 / 12);flex:0 0 calc(100% * 10 / 12);min-width:calc(100% * 10 / 12)}.cell-11{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 11 / 12);flex:0 0 calc(100% * 11 / 12);min-width:calc(100% * 11 / 12)}.cell-12{-webkit-box-flex:0;-ms-flex:0 0 calc(100% * 12 / 12);flex:0 0 calc(100% * 12 / 12);min-width:calc(100% * 12 / 12)}.grid{margin-left:-1rem;margin-top:-1rem}.grid .cell{padding-left:1rem;padding-top:1rem}.grid-narrow{margin-left:0;margin-top:0}.grid-narrow .cell{padding-left:0;padding-top:0}.grid-wide{margin-left:-2rem;margin-top:-2rem}.grid-wide .cell{padding-left:2rem;padding-top:2rem}.grid-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.grid-inline>*:not(:last-child){margin-right:1rem}@media screen and (max-width: 48rem){.grid{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.cell{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;min-width:auto}.grid-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.grid-inline>*{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.grid-inline>*:not(:last-child){margin:0 0 .75rem}}*{-webkit-box-sizing:border-box;box-sizing:border-box;text-rendering:geometricPrecision}::-moz-selection{background:#bbdefb}::selection{background:#bbdefb}html,button,input,optgroup,select,textarea{color:#212121;font-size:16px;line-height:1.5;font-family:"Cousine", Menlo, Lucida Console, Courier New, monospace}code,pre,samp,kbd{font-family:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace}h1,h2,h3,h4,h5,h6{line-height:1.5rem;margin-top:1.5rem;margin-bottom:1.5rem}h1.pure:before,.grid h1:before,h2.pure:before,.grid h2:before,h3.pure:before,.grid h3:before,h4.pure:before,.grid h4:before,h5.pure:before,.grid h5:before,h6.pure:before,.grid h6:before{display:none}.grid h1,.grid h2,.grid h3,.grid h4,.grid h5,.grid h6{margin-top:0rem;margin-bottom:1rem}h1>small,h2>small,h3>small,h4>small,h5>small,h6>small{color:#9e9e9e;line-height:1.5}h1{font-size:1.5rem}h2{font-size:1.25rem}p,ul,ol,pre,form,table,blockquote{margin-top:0;margin-bottom:1.5rem}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}small{font-size:.75em}.container{max-width:64rem;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}.site-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.875rem 0 .625rem}.site-title{font-size:2rem;color:#546e7a}.site-search{margin:0}.site-nav{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;margin-left:auto;margin-top:-.25rem}.site-nav ul{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:0}.site-nav li{padding-left:2ch}.site-nav li:last-child{padding-right:0}.site-nav li:before{display:none}.site-nav.nav-separated{overflow:hidden}.site-nav.nav-separated>ul{margin-right:-2ch}.site-nav.nav-separated li{padding-left:1ch}.site-nav.nav-separated li:after{content:"|";color:#eee;padding-left:1ch}.site-nav .active{font-weight:bold}@media screen and (max-width: 48rem){.site-nav{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:right}.site-nav li{padding-top:1rem}}.responsive-nav{display:none;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right}.responsive-nav label{cursor:pointer;color:#546e7a}.responsive-nav svg{width:2rem;height:2rem;stroke-width:2.5px}.responsive-nav+input[type=checkbox]{display:none}@media screen and (max-width: 48rem){.responsive-nav{display:block}.responsive-nav ~ .site-nav{display:none;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.responsive-nav+input[type=checkbox]:checked ~ .site-nav{display:block}.responsive-nav.responsive-nav-animated ~ .site-nav{display:block;max-height:0;-webkit-transition:max-height .5s ease-out;transition:max-height .5s ease-out;overflow:hidden}.responsive-nav.responsive-nav-animated+input[type=checkbox]:checked ~ .site-nav{max-height:10rem;-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}}.site-main{margin-top:3rem;margin-bottom:3rem}.site-footer{margin-top:3rem;padding:3rem 0;color:#bdbdbd;text-align:center}.site-footer a,.site-footer .list-group button:not(.btn),.list-group .site-footer button:not(.btn){color:#64b5f6}.alert{position:relative;padding:calc(.5rem - 2px) 0.75rem 0.25rem;border:1px solid;border-radius:2px}.alert .close{float:right;margin:-.5rem -.75rem 0 0;padding:calc(.5rem + 1px) 0.75rem 0;opacity:.5;border:0;background:none;font-size:1.5rem;line-height:1;color:inherit;cursor:pointer}.alert .close:hover{opacity:1;text-decoration:none}.alert{color:#616161;border-color:#616161;background-color:#fafafa}.alert-success{color:#388e3c;border-color:#388e3c;background-color:#e8f5e9}.alert-info{color:#0097a7;border-color:#0097a7;background-color:#e0f7fa}.alert-warning{color:#f57c00;border-color:#f57c00;background-color:#fff3e0}.alert-error{color:#d32f2f;border-color:#d32f2f;background-color:#ffebee}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{padding:calc(.5rem - 3px) 0.625rem calc(.25rem - 1px);-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid #e0e0e0;border-radius:2px;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;outline:0}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#9e9e9e}input[type="file"]{line-height:1;background-color:transparent}input::-webkit-file-upload-button{padding:.2rem .3rem .05rem;background-color:#fff;border:2px solid #bdbdbd;border-radius:2px}input::-webkit-input-placeholder{color:#bdbdbd}input:-ms-input-placeholder{color:#bdbdbd}input::placeholder{color:#bdbdbd}select{padding-right:1.8rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2214%22%20viewBox%3D%220%200%2029%2014%22%20width%3D%2229%22%3E%3Cpath%20fill%3D%22%23e0e0e0%22%20d%3D%22M9.37727%203.625l5.08154%206.93523L19.54036%203.625%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:center right}select:focus{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2214%22%20viewBox%3D%220%200%2029%2014%22%20width%3D%2229%22%3E%3Cpath%20fill%3D%22%239e9e9e%22%20d%3D%22M9.37727%203.625l5.08154%206.93523L19.54036%203.625%22%2F%3E%3C%2Fsvg%3E")}select::-ms-expand{display:none}textarea{height:auto;min-height:2rem}@media screen and (max-width: 30rem){.form{width:100%}}.form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:1.5rem}.form-label{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:relative;min-width:10rem;height:2rem;color:#424242;border-bottom:2px solid #e0e0e0;line-height:2rem}html .form-control{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;min-width:calc(100% - 10rem);padding:.25rem 1rem 0;border:0;border-bottom:2px solid #e0e0e0;border-radius:0}html .form-control:focus{border-color:#9e9e9e}html .form-control label+label{padding-left:2rem}textarea.form-control{padding-left:calc(1rem - 2px);border-bottom:2px solid #e0e0e0;border-left:2px solid #e0e0e0}textarea.form-control+.form-label:before{position:absolute;content:'';width:2px;background-color:#fff;right:-2px;top:0;bottom:0}select.form-control{border-radius:0}.form-success .help-block,.form-success .form-label{color:#4caf50}.form-success input,.form-success textarea,.form-success select,.form-success .form-label,.form-success .form-control{border-color:#4caf50}.form-success input:focus,.form-success textarea:focus,.form-success select:focus,.form-success .form-label:focus,.form-success .form-control:focus{border-color:#2e7d32}.form-info .help-block,.form-info .form-label{color:#00bcd4}.form-info input,.form-info textarea,.form-info select,.form-info .form-label,.form-info .form-control{border-color:#00bcd4}.form-info input:focus,.form-info textarea:focus,.form-info select:focus,.form-info .form-label:focus,.form-info .form-control:focus{border-color:#00838f}.form-warning .help-block,.form-warning .form-label{color:#ff9800}.form-warning input,.form-warning textarea,.form-warning select,.form-warning .form-label,.form-warning .form-control{border-color:#ff9800}.form-warning input:focus,.form-warning textarea:focus,.form-warning select:focus,.form-warning .form-label:focus,.form-warning .form-control:focus{border-color:#ef6c00}.form-error .help-block,.form-error .form-label{color:#f44336}.form-error input,.form-error textarea,.form-error select,.form-error .form-label,.form-error .form-control{border-color:#f44336}.form-error input:focus,.form-error textarea:focus,.form-error select:focus,.form-error .form-label:focus,.form-error .form-control:focus{border-color:#c62828}.form-control:disabled,.form-control:disabled+.form-label{cursor:not-allowed;color:#bdbdbd;-webkit-text-fill-color:#bdbdbd;opacity:1}.form-control[readonly],.form-control[readonly]+.form-label{color:#9e9e9e}.form-control:required+.form-label:after{content:" *";color:#ef5350}.help-block{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%;margin-top:.5rem;padding-left:11rem;color:#9e9e9e}.input-group,.btn-group{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.form-vertical .form-label{border-bottom:none;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.form-vertical textarea.form-control{padding-left:0;border-left:none}.form-vertical textarea.form-control+.form-label:before{display:none}.form-vertical .help-block{padding-left:0}.form-vertical .form-control{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding:0 0 .15rem}.form-vertical .form-control label{padding-right:1rem}.form-vertical .form-control label+label{padding-left:0}@media screen and (max-width: 48rem){.form-label{border-bottom:none;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}textarea.form-control{padding-left:0;border-left:none}textarea.form-control+.form-label:before{display:none}.help-block{padding-left:0}html .form-control{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding:0 0 .15rem}html .form-control label{padding-right:1rem}html .form-control label+label{padding-left:0}}.btn{position:relative;padding:calc(.5rem - 3px) 0.75rem calc(.25rem - 1px);border-width:2px;border-style:solid;border-radius:2px;border-color:rgba(255,255,255,0.2) rgba(0,0,0,0.2) rgba(0,0,0,0.2) rgba(255,255,255,0.2);outline:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fff}.btn:hover,.btn:focus{text-decoration:none;border-color:rgba(0,0,0,0.2) rgba(255,255,255,0.2) rgba(255,255,255,0.2) rgba(0,0,0,0.2)}.btn:active{-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.2);box-shadow:inset 0 1px 3px rgba(0,0,0,0.2)}.btn.btn-ghost{background-color:transparent}.btn.btn-ghost:hover,.btn.btn-ghost:focus{color:#fff;border-color:rgba(0,0,0,0.2) rgba(255,255,255,0.2) rgba(255,255,255,0.2) rgba(0,0,0,0.2)}.btn-primary{background-color:#2196f3}.btn-primary:hover,.btn-primary:focus{background-color:#1976d2}.btn-primary.btn-ghost{border-color:#2196f3;color:#2196f3}.btn-success{background-color:#4caf50}.btn-success:hover,.btn-success:focus{background-color:#388e3c}.btn-success.btn-ghost{border-color:#4caf50;color:#4caf50}.btn-info{background-color:#00bcd4}.btn-info:hover,.btn-info:focus{background-color:#0097a7}.btn-info.btn-ghost{border-color:#00bcd4;color:#00bcd4}.btn-warning{background-color:#ff9800}.btn-warning:hover,.btn-warning:focus{background-color:#f57c00}.btn-warning.btn-ghost{border-color:#ff9800;color:#ff9800}.btn-error{background-color:#f44336}.btn-error:hover,.btn-error:focus{background-color:#d32f2f}.btn-error.btn-ghost{border-color:#f44336;color:#f44336}.btn-default{background-color:#eee;color:#616161}.btn-default:hover,.btn-default:focus{background-color:#bdbdbd;color:#fff}.btn-default.btn-ghost{border-color:#bdbdbd;color:#616161}.btn-link{border-color:transparent;background-color:transparent;color:#2196f3}.btn-link:hover,.btn-link:focus{border-color:transparent;color:#1976d2;text-decoration:underline}.btn[disabled]{cursor:not-allowed}.btn[disabled],.btn[disabled]:hover,.btn[disabled]:focus{background-color:#f5f5f5;border-color:rgba(255,255,255,0.2) rgba(0,0,0,0.2) rgba(0,0,0,0.2) rgba(255,255,255,0.2);color:#bdbdbd}.btn[disabled].btn-ghost,.btn[disabled].btn-ghost:hover{background-color:transparent;border-color:#bdbdbd;color:#bdbdbd}.btn-addon{padding:calc(.5rem - 3px) 0.75rem calc(.25rem - 1px);border:2px solid transparent}.btn-addon:first-child{padding-left:0}.btn-group .btn{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-radius:0;word-break:break-all;word-break:break-word}.btn-group .btn:first-of-type{border-radius:2px 0 0 2px}.btn-group .btn:last-of-type{border-radius:0 2px 2px 0}.btn-group .btn-ghost:not(:first-child){margin-left:-2px}.list-striped>*:nth-child(even):not(.btn){background-color:#f5f5f5}.list-group{padding:0;border:1px solid #e0e0e0;border-radius:2px}.list-group>*{display:block;margin:0;padding:calc(.5rem - 1px) 0.5rem 0.25rem;border:0}.list-group>*:first-child{padding-top:calc(.5rem - 2px)}.list-group>a,.list-group>button:not(.btn),.list-group>button{width:100%;border-radius:0}.list-group button:not(.btn){text-align:left;background-color:#fff}.list-group>li:before{display:none}.list-group>*:not(:last-child){border-bottom:1px solid #e0e0e0}.list-group>.disabled{color:#9e9e9e;cursor:not-allowed;background-color:#eee}.list-group>.active.active,.list-group>.active.active:hover{color:#fff;background-color:#2196f3}.card{border:1px solid #e0e0e0;border-radius:2px}.card .card-header{display:block;padding:calc(.5rem - 1px) 0.75rem 0.25rem;background-color:#eee;text-align:center;font-weight:bold;color:#424242}.card .card-body{padding:calc(.5rem - 2px) 0.75rem 0.25rem}.card .card-body:last-child{margin-bottom:0}.card>*+*{border:0;border-radius:0;border-top:1px solid;border-color:inherit}.card.card-success{border:1px solid #4caf50}.card.card-success .card-header{color:#fff;background-color:#4caf50;border-bottom-color:#4caf50;font-weight:normal}.card.card-info{border:1px solid #00bcd4}.card.card-info .card-header{color:#fff;background-color:#00bcd4;border-bottom-color:#00bcd4;font-weight:normal}.card.card-warning{border:1px solid #ff9800}.card.card-warning .card-header{color:#fff;background-color:#ff9800;border-bottom-color:#ff9800;font-weight:normal}.card.card-error{border:1px solid #f44336}.card.card-error .card-header{color:#fff;background-color:#f44336;border-bottom-color:#f44336;font-weight:normal}details.card>*+*{border-color:#e0e0e0}.loading{display:inline-block;overflow:hidden;height:1.3em;margin-top:-.3em;line-height:1.5em;vertical-align:text-bottom}.loading::after{display:inline-table;white-space:pre;content:"\A.\A..\A...";text-align:left;-webkit-animation:spin 2s steps(4) infinite;animation:spin 2s steps(4) infinite}@-webkit-keyframes spin{to{-webkit-transform:translateY(-6em);transform:translateY(-6em)}}@keyframes spin{to{-webkit-transform:translateY(-6em);transform:translateY(-6em)}}.progress-bar{height:1rem;background-color:#e0e0e0}.progress-bar.narrow{height:0.5rem}.progress-bar.progress-bar-show-percent{margin-top:2rem}.progress-bar.progress-bar-show-percent>div:before{content:'';border:6px solid transparent;border-top-color:#9e9e9e;position:absolute;top:-12px;right:-6px}.progress-bar.progress-bar-show-percent>div:after{color:#757575;content:attr(data-filled);display:block;font-size:12px;white-space:nowrap;position:absolute;border:6px solid transparent;top:-36px;right:0;-webkit-transform:translateX(50%);transform:translateX(50%)}.progress-bar>div{position:relative;height:100%;width:0;max-width:100%;background-color:#9e9e9e;-webkit-transition:width .3s ease;transition:width .3s ease;text-align:center;font-size:12px;color:#fff}.progress-bar.progress-primary>div{background-color:#2196f3}.progress-bar.progress-success>div{background-color:#4caf50}.progress-bar.progress-info>div{background-color:#00bcd4}.progress-bar.progress-warning>div{background-color:#ff9800}.progress-bar.progress-error>div{background-color:#f44336}table{width:100%;border-collapse:collapse;border-spacing:0}td,th{vertical-align:top;border:1px solid #e0e0e0;padding:calc(.5rem - 1px) 0.5rem 0.3rem}thead th{color:#424242;text-align:center;background-color:#eee}caption{caption-side:bottom;padding-top:.75rem;color:#9e9e9e}.table-fixed{table-layout:fixed}.table-striped tr:nth-child(even) td{background-color:#f5f5f5}.table-hover tr:hover td{background-color:#eee}.table-narrow td,.table-narrow th{padding:calc(.25rem - 1px) 0.5rem 0}.table-wide td,.table-wide th{padding:calc(.875rem - 1px) 1rem 0.625rem}thead.text-left>tr>th{text-align:left}.tag{color:#fff;background-color:#9e9e9e;-webkit-box-shadow:0 -1px 0 3px #9e9e9e,inset 0 0 0 1px #9e9e9e;box-shadow:0 -1px 0 3px #9e9e9e,inset 0 0 0 1px #9e9e9e;position:relative;top:-.1em;padding:0 .25em;border-radius:1px;font-size:.8em;font-weight:normal;white-space:nowrap;vertical-align:baseline;text-rendering:optimizeLegibility}.tag:empty{display:none}.tag.tag-primary{color:#fff;background-color:#2196f3;-webkit-box-shadow:0 -1px 0 3px #2196f3,inset 0 0 0 1px #2196f3;box-shadow:0 -1px 0 3px #2196f3,inset 0 0 0 1px #2196f3}.tag.tag-success{color:#fff;background-color:#4caf50;-webkit-box-shadow:0 -1px 0 3px #4caf50,inset 0 0 0 1px #4caf50;box-shadow:0 -1px 0 3px #4caf50,inset 0 0 0 1px #4caf50}.tag.tag-info{color:#fff;background-color:#00bcd4;-webkit-box-shadow:0 -1px 0 3px #00bcd4,inset 0 0 0 1px #00bcd4;box-shadow:0 -1px 0 3px #00bcd4,inset 0 0 0 1px #00bcd4}.tag.tag-warning{color:#fff;background-color:#ff9800;-webkit-box-shadow:0 -1px 0 3px #ff9800,inset 0 0 0 1px #ff9800;box-shadow:0 -1px 0 3px #ff9800,inset 0 0 0 1px #ff9800}.tag.tag-error{color:#fff;background-color:#f44336;-webkit-box-shadow:0 -1px 0 3px #f44336,inset 0 0 0 1px #f44336;box-shadow:0 -1px 0 3px #f44336,inset 0 0 0 1px #f44336}@-webkit-keyframes tooltip-appear{to{opacity:1}}@keyframes tooltip-appear{to{opacity:1}}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;z-index:1;bottom:100%;left:50%;display:none;padding:calc(.5rem - 2px) 0.5rem 0.25rem;-webkit-transform:translate(-50%, -0.5rem);transform:translate(-50%, -0.5rem);pointer-events:none;-webkit-box-shadow:0 0 0 0.25rem #fff;box-shadow:0 0 0 0.25rem #fff;border:1px solid #e0e0e0;border-radius:2px;background-color:#fafafa;white-space:pre;color:#212121;opacity:0}[data-tooltip]:focus:after,[data-tooltip]:hover:after{display:block;-webkit-animation:tooltip-appear .1s ease-in .1s forwards;animation:tooltip-appear .1s ease-in .1s forwards}[data-tooltip].tooltip-bottom:after{bottom:auto;top:100%;left:50%;-webkit-transform:translate(-50%, 0.5rem);transform:translate(-50%, 0.5rem)}[data-tooltip].tooltip-left:after{bottom:auto;left:auto;top:50%;right:100%;-webkit-transform:translate(-0.5rem, -50%);transform:translate(-0.5rem, -50%)}[data-tooltip].tooltip-right:after{bottom:auto;top:50%;left:100%;-webkit-transform:translate(0.5rem, -50%);transform:translate(0.5rem, -50%)}[data-tooltip].tooltip-active:after{color:#fff;background-color:#2196f3}[data-tooltip].tooltip-success:after{color:#fff;background-color:#4caf50}[data-tooltip].tooltip-info:after{color:#fff;background-color:#00bcd4}[data-tooltip].tooltip-warning:after{color:#fff;background-color:#ff9800}[data-tooltip].tooltip-error:after{color:#fff;background-color:#f44336}.i{position:relative;top:.0625em;width:.75rem;height:.75rem;fill:none;font-size:inherit;stroke:currentColor;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.i-medium .i,.i.i-medium{width:1.5rem;height:1.5rem;stroke-width:2px}.i-large .i,.i.i-large{width:2rem;height:2rem;stroke-width:2px}details{margin-bottom:1rem}summary{outline:none}summary:hover{cursor:pointer}details:not(.card){padding-left:1rem}details:not(.card) summary{margin-bottom:1rem;margin-left:-1rem}details:not(.card) summary:hover{background-color:#f5f5f5;-webkit-box-shadow:-0.5rem -0.1rem 0 0.5rem #f5f5f5;box-shadow:-0.5rem -0.1rem 0 0.5rem #f5f5f5}details.card summary::-webkit-details-marker{display:none}details.card summary::before{content:'▶';float:left;padding-right:.75rem;color:#9e9e9e}details.card[open] summary::before{content:'▼'}.dropzone{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:9rem;padding:1rem;border:2px dashed #e0e0e0;text-align:center;color:#bdbdbd;cursor:pointer}.dropzone.active,.dropzone.rejected{color:#9e9e9e}.dropzone.active{background-color:#fafafa}.dropzone.rejected{background-color:#ffebee}code{padding:.25em .25em .125em;border-radius:2px;background-color:#f5f5f5}samp{display:inline-block;margin-top:-3px;padding:1px .25em 0;background-color:#fafafa}pre{padding:calc(.75rem - 1px) 1rem}samp,pre{border:1px solid #e0e0e0;border-radius:2px;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;page-break-inside:avoid}samp.scroll,pre.scroll{overflow:auto;white-space:pre}pre code{padding:0;color:inherit;background-color:transparent}a,.list-group button:not(.btn){cursor:pointer;color:#2196f3;text-decoration:none}a:hover,.list-group button:hover:not(.btn){color:#1976d2;text-decoration:underline}img{max-width:100%}img.full-width{display:block}figure{margin:0}figure img{width:100%}figcaption{text-align:center;color:#9e9e9e}blockquote{overflow:hidden;padding-left:1rem;border-left:0.25rem solid #e0e0e0}blockquote>*:last-child{margin-bottom:0}cite{float:right;color:#9e9e9e}cite:before{content:"– "}mark{-webkit-box-decoration-break:clone;box-decoration-break:clone;background-color:#fff59d;-webkit-box-shadow:0 -1px 0 3px #fff59d;box-shadow:0 -1px 0 3px #fff59d}mark mark{background-color:#fdd835;-webkit-box-shadow:0 -1px 0 3px #fdd835;box-shadow:0 -1px 0 3px #fdd835}mark samp,mark kbd,mark code{background-color:#fffde7}abbr[title]{text-decoration:none;border-bottom:2px dashed #e0e0e0}kbd{display:inline-block;padding:.1em .4em 0;vertical-align:middle;color:#424242;border:solid 1px #eee;border-bottom-color:#e0e0e0;border-radius:3px;background-color:#fafafa;-webkit-box-shadow:inset 0 -1px 0 #e0e0e0;box-shadow:inset 0 -1px 0 #e0e0e0;font-size:.9em}.footnotes{padding-top:3rem;margin-top:1.5rem}.narrow{padding:0 !important}.inner{padding:.5rem .75rem .25rem !important}.inner-wide{padding:1rem 1rem .75rem !important}.p-t-0{padding-top:0 !important}.p-t-1{padding-top:1.5rem !important}.p-t-2{padding-top:3.0rem !important}.p-t-3{padding-top:4.5rem !important}.p-b-0{padding-bottom:0 !important}.p-b-1{padding-bottom:1.5rem !important}.p-b-2{padding-bottom:3.0rem !important}.p-b-3{padding-bottom:4.5rem !important}.m-t-0{margin-top:0 !important}.m-t-1{margin-top:1.5rem !important}.m-t-2{margin-top:3.0rem !important}.m-t-3{margin-top:4.5rem !important}.m-b-0{margin-bottom:0 !important}.m-b-1{margin-bottom:1.5rem !important}.m-b-2{margin-bottom:3.0rem !important}.m-b-3{margin-bottom:4.5rem !important}.pull-left{float:left !important}.pull-right{float:right !important}.full-width{width:100% !important}.block{display:block !important}.invisible{visibility:hidden !important}.hidden{display:none !important}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@media screen and (min-width: 48rem){.hidden-if-large{display:none !important}}@media screen and (max-width: 48rem){.hidden-if-medium{display:none !important}}@media screen and (max-width: 30rem){.hidden-if-small{display:none !important}}.lead{margin-bottom:1.5rem;font-size:1.25em;line-height:1.2em}.truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-bold{font-weight:bold}.text-italic{font-style:italic}.bg-muted{background-color:#f5f5f5 !important}.bg-active{background-color:#bbdefb !important}.bg-success{background-color:#c8e6c9 !important}.bg-info{background-color:#b2ebf2 !important}.bg-warning{background-color:#ffe0b2 !important}.bg-error{background-color:#ffcdd2 !important}.text-muted{color:#9e9e9e}.text-primary{color:#2196f3}.text-success{color:#4caf50}.text-info{color:#00bcd4}.text-warning{color:#ff9800}.text-error{color:#f44336}.highlight .hll{background-color:#ffc}.highlight .c{color:#999}.highlight .err{color:#a00;background-color:#faa}.highlight .k{color:#069}.highlight .o{color:#555}.highlight .cm{color:#09f;font-style:italic}.highlight .cp{color:#099}.highlight .c1{color:#999}.highlight .cs{color:#999}.highlight .gd{background-color:#fcc;border:1px solid #c00}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:#030}.highlight .gi{background-color:#cfc;border:1px solid #0c0}.highlight .go{color:#aaa}.highlight .gp{color:#009}.highlight .gu{color:#030}.highlight .gt{color:#9c6}.highlight .kc{color:#069}.highlight .kd{color:#069}.highlight .kn{color:#069}.highlight .kp{color:#069}.highlight .kr{color:#069}.highlight .kt{color:#078}.highlight .m{color:#f60}.highlight .s{color:#d44950}.highlight .na{color:#4f9fcf}.highlight .nb{color:#366}.highlight .nc{color:#0a8}.highlight .no{color:#360}.highlight .nd{color:#99f}.highlight .ni{color:#999}.highlight .ne{color:#c00}.highlight .nf{color:#c0f}.highlight .nl{color:#99f}.highlight .nn{color:#0cf}.highlight .nt{color:#2f6f9f}.highlight .nv{color:#033}.highlight .ow{color:#000}.highlight .w{color:#bbb}.highlight .mf{color:#f60}.highlight .mh{color:#f60}.highlight .mi{color:#f60}.highlight .mo{color:#f60}.highlight .sb{color:#c30}.highlight .sc{color:#c30}.highlight .sd{color:#c30;font-style:italic}.highlight .s2{color:#c30}.highlight .se{color:#c30}.highlight .sh{color:#c30}.highlight .si{color:#a00}.highlight .sx{color:#c30}.highlight .sr{color:#3aa}.highlight .s1{color:#c30}.highlight .ss{color:#fc3}.highlight .bp{color:#366}.highlight .vc{color:#033}.highlight .vg{color:#033}.highlight .vi{color:#033}.highlight .il{color:#f60}@media print{html,button,input,optgroup,select,textarea{font-size:14px;line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{display:none}*,*:before,*:after,*:first-letter,p:first-line,div:first-line,blockquote:first-line,li:first-line{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a[href]:after,.list-group button[href]:not(.btn):after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.btn{border:1px solid #000}.no-print{display:none !important}}
2 |
3 | /*# sourceMappingURL=data:application/json;base64,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bUNBQW1DLENBQUMsWUFBWSxhQUFhLENBQUMsY0FBYyxhQUFhLENBQUMsY0FBYyxhQUFhLENBQUMsV0FBVyxhQUFhLENBQUMsY0FBYyxhQUFhLENBQUMsWUFBWSxhQUFhLENBQUMsZ0JBQWdCLHFCQUFxQixDQUFDLGNBQWMsVUFBVSxDQUFDLGdCQUFnQixXQUFXLHFCQUFxQixDQUFDLGNBQWMsVUFBVSxDQUFDLGNBQWMsVUFBVSxDQUFDLGVBQWUsV0FBVyxpQkFBaUIsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLHNCQUFzQixxQkFBcUIsQ0FBQyxlQUFlLGlCQUFpQixDQUFDLGVBQWUsU0FBUyxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsc0JBQXNCLHFCQUFxQixDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGNBQWMsVUFBVSxDQUFDLGNBQWMsYUFBYSxDQUFDLGVBQWUsYUFBYSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsYUFBYSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGNBQWMsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsVUFBVSxDQUFDLGVBQWUsV0FBVyxpQkFBaUIsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxlQUFlLFVBQVUsQ0FBQyxhQUFhLDJDQUEyQyxlQUFlLGlCQUFpQiw4QkFBc0IsQUFBdEIsMkJBQXNCLEFBQXRCLDBCQUFzQixBQUF0QixzQkFBc0IsbUNBQW1DLGtDQUFrQyxpQ0FBaUMsQ0FBQyw0REFBNEQsWUFBWSxDQUFDLGtHQUFrRyxrQ0FBa0Msc0JBQXNCLG1DQUEyQixBQUEzQiwyQkFBMkIsMkJBQTJCLENBQUMsdURBQXVELDJCQUEyQixDQUFDLGtCQUFrQiw0QkFBNEIsQ0FBQyxLQUFLLHFCQUFxQixDQUFDLFVBQVUsdUJBQXVCLENBQUMsQ0FBQyIsImZpbGUiOiJzdGRpbiIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY1LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2t9aDF7Zm9udC1zaXplOjJlbTttYXJnaW46MC42N2VtIDB9ZmlnY2FwdGlvbixmaWd1cmUsbWFpbntkaXNwbGF5OmJsb2NrfWZpZ3VyZXttYXJnaW46MWVtIDQwcHh9aHJ7Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6MDtvdmVyZmxvdzp2aXNpYmxlfXByZXtmb250LWZhbWlseTptb25vc3BhY2UsIG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWEsLmxpc3QtZ3JvdXAgYnV0dG9uOm5vdCguYnRuKXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6b2JqZWN0c31hOmFjdGl2ZSwubGlzdC1ncm91cCBidXR0b246YWN0aXZlOm5vdCguYnRuKSxhOmhvdmVyLC5saXN0LWdyb3VwIGJ1dHRvbjpob3Zlcjpub3QoLmJ0bil7b3V0bGluZS13aWR0aDowfWFiYnJbdGl0bGVde2JvcmRlci1ib3R0b206bm9uZTt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLCBtb25vc3BhY2U7Zm9udC1zaXplOjFlbX1kZm57Zm9udC1zdHlsZTppdGFsaWN9bWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZjA7Y29sb3I6IzAwMH1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1Yntib3R0b206LTAuMjVlbX1zdXB7dG9wOi0wLjVlbX1hdWRpbyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9ja31hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lO2hlaWdodDowfWltZ3tib3JkZXItc3R5bGU6bm9uZX1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59YnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0OjEuMTU7bWFyZ2luOjB9YnV0dG9uLGlucHV0e292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIFt0eXBlPVwiYnV0dG9uXCJdLFt0eXBlPVwicmVzZXRcIl0sW3R5cGU9XCJzdWJtaXRcIl17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lcntib3JkZXItc3R5bGU6bm9uZTtwYWRkaW5nOjB9YnV0dG9uOi1tb3otZm9jdXNyaW5nLFt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmd7b3V0bGluZToxcHggZG90dGVkIEJ1dHRvblRleHR9ZmllbGRzZXR7Ym9yZGVyOjFweCBzb2xpZCAjYzBjMGMwO21hcmdpbjowIDJweDtwYWRkaW5nOjAuMzVlbSAwLjYyNWVtIDAuNzVlbX1sZWdlbmR7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTp0YWJsZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm9ybWFsfXByb2dyZXNze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXRleHRhcmVhe292ZXJmbG93OmF1dG99W3R5cGU9XCJjaGVja2JveFwiXSxbdHlwZT1cInJhZGlvXCJde2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9XCJzZWFyY2hcIl17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fVt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9ZGV0YWlscyxtZW51e2Rpc3BsYXk6YmxvY2t9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1jYW52YXN7ZGlzcGxheTppbmxpbmUtYmxvY2t9dGVtcGxhdGV7ZGlzcGxheTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZX1oMSxoMixoMyxoNCxoNSxoNixvbCx1bCxsaSxjb2RlLGJsb2NrcXVvdGV7bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtc2l6ZToxcmVtfWgxLGgyLGgzLGg0LGg1LGg2e3Bvc2l0aW9uOnJlbGF0aXZlfWgxOmJlZm9yZSxoMjpiZWZvcmUsaDM6YmVmb3JlLGg0OmJlZm9yZSxoNTpiZWZvcmUsaDY6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTQuNjc1cmVtO3dpZHRoOjRyZW07dGV4dC1hbGlnbjpyaWdodDtjb2xvcjojYmRiZGJkfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY4cmVtKXtoMTpiZWZvcmUsaDI6YmVmb3JlLGgzOmJlZm9yZSxoNDpiZWZvcmUsaDU6YmVmb3JlLGg2OmJlZm9yZXtwb3NpdGlvbjpzdGF0aWM7cGFkZGluZy1yaWdodDoxY2h9fWgxOmJlZm9yZXtjb250ZW50OlwiI1wifWgyOmJlZm9yZXtjb250ZW50OlwiIyNcIn1oMzpiZWZvcmV7Y29udGVudDpcIiMjI1wifWg0OmJlZm9yZXtjb250ZW50OlwiIyMjI1wifWg1OmJlZm9yZXtjb250ZW50OlwiIyMjIyNcIn1oNjpiZWZvcmV7Y29udGVudDpcIiMjIyMjI1wifW9se2NvdW50ZXItcmVzZXQ6b2x9dWw+bGl7cGFkZGluZy1sZWZ0OjJjaH1vbD5saXtwYWRkaW5nLWxlZnQ6M2NofWxpe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2t9bGk6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtjb2xvcjojYmRiZGJkfXVsPmxpOmJlZm9yZXtjb250ZW50Olwi4oCTXCJ9b2w+bGk6YmVmb3Jle2NvbnRlbnQ6Y291bnRlcihvbCkgXCIuXCI7Y291bnRlci1pbmNyZW1lbnQ6b2x9aHJ7aGVpZ2h0OjFyZW07bWFyZ2luOjEuNzVyZW0gMDtib3JkZXI6MH1ocjphZnRlcntkaXNwbGF5OmJsb2NrO2hlaWdodDoxcmVtO292ZXJmbG93OmhpZGRlbjtjb250ZW50Olwi77yKIO+8iiDvvIpcIjt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47Y29sb3I6I2JkYmRiZDtmb250LXNpemU6Ljc1cmVtfS5kYXNoZWQtdG9wOmJlZm9yZSxoci5kYXNoZWQ6YmVmb3JlLC5kYXNoZWQtYm90dG9tOmFmdGVye2NvbnRlbnQ6XCLigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTIOKAkyDigJMg4oCTXCI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2hlaWdodDoxcmVtO2xpbmUtaGVpZ2h0OjE7d29yZC13cmFwOmJyZWFrLXdvcmQ7dGV4dC1hbGlnbjpqdXN0aWZ5O2xldHRlci1zcGFjaW5nOi0uMjVyZW07Zm9udC1zaXplOjFyZW07Y29sb3I6I2UwZTBlMH0uZGFzaGVkLXRvcCxoci5kYXNoZWR7cG9zaXRpb246cmVsYXRpdmV9LmRhc2hlZC10b3A6YmVmb3JlLGhyLmRhc2hlZDpiZWZvcmV7dG9wOi0uNXJlbX0uZGFzaGVkLWJvdHRvbXtwb3NpdGlvbjpyZWxhdGl2ZX0uZGFzaGVkLWJvdHRvbTphZnRlcntib3R0b206LS41cmVtfWhyLmRhc2hlZHttYXJnaW46MnJlbSAwIDFyZW19LmdyaWR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS5ncmlkLXRvcHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5ncmlkLW1pZGRsZXthbGlnbi1pdGVtczpjZW50ZXJ9LmdyaWQtYm90dG9te2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5ncmlkLXN0cmV0Y2h7YWxpZ24taXRlbXM6c3RyZXRjaH0uZ3JpZC1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JpZC1sZWZ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5ncmlkLWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ncmlkLXJpZ2h0e2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZ3JpZC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5ncmlkLWFyb3VuZHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kfS5jZWxse2ZsZXg6MX0uY2VsbD4qOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5jZWxsLXRvcHttYXJnaW4tYm90dG9tOmF1dG99LmNlbGwtbWlkZGxle21hcmdpbjphdXRvIDB9LmNlbGwtYm90dG9te21hcmdpbi10b3A6YXV0b30uY2VsbC0xe2ZsZXg6MCAwIGNhbGMoMTAwJSAqICAxIC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgMSAvIDEyKX0uY2VsbC0ye2ZsZXg6MCAwIGNhbGMoMTAwJSAqICAyIC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgMiAvIDEyKX0uY2VsbC0ze2ZsZXg6MCAwIGNhbGMoMTAwJSAqICAzIC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgMyAvIDEyKX0uY2VsbC00e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA0IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgNCAvIDEyKX0uY2VsbC01e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA1IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgNSAvIDEyKX0uY2VsbC02e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA2IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgNiAvIDEyKX0uY2VsbC03e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA3IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgNyAvIDEyKX0uY2VsbC04e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA4IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgOCAvIDEyKX0uY2VsbC05e2ZsZXg6MCAwIGNhbGMoMTAwJSAqICA5IC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAgOSAvIDEyKX0uY2VsbC0xMHtmbGV4OjAgMCBjYWxjKDEwMCUgKiAxMCAvIDEyKTttaW4td2lkdGg6Y2FsYygxMDAlICogMTAgLyAxMil9LmNlbGwtMTF7ZmxleDowIDAgY2FsYygxMDAlICogMTEgLyAxMik7bWluLXdpZHRoOmNhbGMoMTAwJSAqIDExIC8gMTIpfS5jZWxsLTEye2ZsZXg6MCAwIGNhbGMoMTAwJSAqIDEyIC8gMTIpO21pbi13aWR0aDpjYWxjKDEwMCUgKiAxMiAvIDEyKX0uZ3JpZHttYXJnaW4tbGVmdDotMXJlbTttYXJnaW4tdG9wOi0xcmVtfS5ncmlkIC5jZWxse3BhZGRpbmctbGVmdDoxcmVtO3BhZGRpbmctdG9wOjFyZW19LmdyaWQtbmFycm93e21hcmdpbi1sZWZ0OjA7bWFyZ2luLXRvcDowfS5ncmlkLW5hcnJvdyAuY2VsbHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXRvcDowfS5ncmlkLXdpZGV7bWFyZ2luLWxlZnQ6LTJyZW07bWFyZ2luLXRvcDotMnJlbX0uZ3JpZC13aWRlIC5jZWxse3BhZGRpbmctbGVmdDoycmVtO3BhZGRpbmctdG9wOjJyZW19LmdyaWQtaW5saW5le2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JpZC1pbmxpbmU+Kjpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1yaWdodDoxcmVtfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4cmVtKXsuZ3JpZHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC13cmFwOm5vd3JhcH0uY2VsbHtmbGV4OjAgMCBhdXRvO21pbi13aWR0aDphdXRvfS5ncmlkLWlubGluZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6YmFzZWxpbmV9LmdyaWQtaW5saW5lPip7ZmxleDoxIDEgMTAwJX0uZ3JpZC1pbmxpbmU+Kjpub3QoOmxhc3QtY2hpbGQpe21hcmdpbjowIDAgLjc1cmVtfX0qe2JveC1zaXppbmc6Ym9yZGVyLWJveDt0ZXh0LXJlbmRlcmluZzpnZW9tZXRyaWNQcmVjaXNpb259OjpzZWxlY3Rpb257YmFja2dyb3VuZDojYmJkZWZifWh0bWwsYnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtjb2xvcjojMjEyMTIxO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNTtmb250LWZhbWlseTpcIkNvdXNpbmVcIiwgTWVubG8sIEx1Y2lkYSBDb25zb2xlLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlfWNvZGUscHJlLHNhbXAsa2Jke2ZvbnQtZmFtaWx5OlwiU0ZNb25vLVJlZ3VsYXJcIiwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIE1lbmxvLCBDb3VyaWVyLCBtb25vc3BhY2V9aDEsaDIsaDMsaDQsaDUsaDZ7bGluZS1oZWlnaHQ6MS41cmVtO21hcmdpbi10b3A6MS41cmVtO21hcmdpbi1ib3R0b206MS41cmVtfWgxLnB1cmU6YmVmb3JlLC5ncmlkIGgxOmJlZm9yZSxoMi5wdXJlOmJlZm9yZSwuZ3JpZCBoMjpiZWZvcmUsaDMucHVyZTpiZWZvcmUsLmdyaWQgaDM6YmVmb3JlLGg0LnB1cmU6YmVmb3JlLC5ncmlkIGg0OmJlZm9yZSxoNS5wdXJlOmJlZm9yZSwuZ3JpZCBoNTpiZWZvcmUsaDYucHVyZTpiZWZvcmUsLmdyaWQgaDY6YmVmb3Jle2Rpc3BsYXk6bm9uZX0uZ3JpZCBoMSwuZ3JpZCBoMiwuZ3JpZCBoMywuZ3JpZCBoNCwuZ3JpZCBoNSwuZ3JpZCBoNnttYXJnaW4tdG9wOjByZW07bWFyZ2luLWJvdHRvbToxcmVtfWgxPnNtYWxsLGgyPnNtYWxsLGgzPnNtYWxsLGg0PnNtYWxsLGg1PnNtYWxsLGg2PnNtYWxse2NvbG9yOiM5ZTllOWU7bGluZS1oZWlnaHQ6MS41fWgxe2ZvbnQtc2l6ZToxLjVyZW19aDJ7Zm9udC1zaXplOjEuMjVyZW19cCx1bCxvbCxwcmUsZm9ybSx0YWJsZSxibG9ja3F1b3Rle21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjEuNXJlbX11bCB1bCxvbCBvbCx1bCBvbCxvbCB1bHttYXJnaW4tYm90dG9tOjB9c21hbGx7Zm9udC1zaXplOi43NWVtfS5jb250YWluZXJ7bWF4LXdpZHRoOjY0cmVtO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy1yaWdodDoxcmVtfS5zaXRlLWhlYWRlcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6Ljg3NXJlbSAwIC42MjVyZW19LnNpdGUtdGl0bGV7Zm9udC1zaXplOjJyZW07Y29sb3I6IzU0NmU3YX0uc2l0ZS1zZWFyY2h7bWFyZ2luOjB9LnNpdGUtbmF2e2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tdG9wOi0uMjVyZW19LnNpdGUtbmF2IHVse2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MH0uc2l0ZS1uYXYgbGl7cGFkZGluZy1sZWZ0OjJjaH0uc2l0ZS1uYXYgbGk6bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjB9LnNpdGUtbmF2IGxpOmJlZm9yZXtkaXNwbGF5Om5vbmV9LnNpdGUtbmF2Lm5hdi1zZXBhcmF0ZWR7b3ZlcmZsb3c6aGlkZGVufS5zaXRlLW5hdi5uYXYtc2VwYXJhdGVkPnVse21hcmdpbi1yaWdodDotMmNofS5zaXRlLW5hdi5uYXYtc2VwYXJhdGVkIGxpe3BhZGRpbmctbGVmdDoxY2h9LnNpdGUtbmF2Lm5hdi1zZXBhcmF0ZWQgbGk6YWZ0ZXJ7Y29udGVudDpcInxcIjtjb2xvcjojZWVlO3BhZGRpbmctbGVmdDoxY2h9LnNpdGUtbmF2IC5hY3RpdmV7Zm9udC13ZWlnaHQ6Ym9sZH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OHJlbSl7LnNpdGUtbmF2e2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47dGV4dC1hbGlnbjpyaWdodH0uc2l0ZS1uYXYgbGl7cGFkZGluZy10b3A6MXJlbX19LnJlc3BvbnNpdmUtbmF2e2Rpc3BsYXk6bm9uZTtmbGV4OjE7dGV4dC1hbGlnbjpyaWdodH0ucmVzcG9uc2l2ZS1uYXYgbGFiZWx7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzU0NmU3YX0ucmVzcG9uc2l2ZS1uYXYgc3Zne3dpZHRoOjJyZW07aGVpZ2h0OjJyZW07c3Ryb2tlLXdpZHRoOjIuNXB4fS5yZXNwb25zaXZlLW5hditpbnB1dFt0eXBlPWNoZWNrYm94XXtkaXNwbGF5Om5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDhyZW0pey5yZXNwb25zaXZlLW5hdntkaXNwbGF5OmJsb2NrfS5yZXNwb25zaXZlLW5hdiB+IC5zaXRlLW5hdntkaXNwbGF5Om5vbmU7bWluLXdpZHRoOjEwMCU7ZmxleC1iYXNpczoxMDAlfS5yZXNwb25zaXZlLW5hditpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gLnNpdGUtbmF2e2Rpc3BsYXk6YmxvY2t9LnJlc3BvbnNpdmUtbmF2LnJlc3BvbnNpdmUtbmF2LWFuaW1hdGVkIH4gLnNpdGUtbmF2e2Rpc3BsYXk6YmxvY2s7bWF4LWhlaWdodDowO3RyYW5zaXRpb246bWF4LWhlaWdodCAuNXMgZWFzZS1vdXQ7b3ZlcmZsb3c6aGlkZGVufS5yZXNwb25zaXZlLW5hdi5yZXNwb25zaXZlLW5hdi1hbmltYXRlZCtpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gLnNpdGUtbmF2e21heC1oZWlnaHQ6MTByZW07dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbn19LnNpdGUtbWFpbnttYXJnaW4tdG9wOjNyZW07bWFyZ2luLWJvdHRvbTozcmVtfS5zaXRlLWZvb3RlcnttYXJnaW4tdG9wOjNyZW07cGFkZGluZzozcmVtIDA7Y29sb3I6I2JkYmRiZDt0ZXh0LWFsaWduOmNlbnRlcn0uc2l0ZS1mb290ZXIgYSwuc2l0ZS1mb290ZXIgLmxpc3QtZ3JvdXAgYnV0dG9uOm5vdCguYnRuKSwubGlzdC1ncm91cCAuc2l0ZS1mb290ZXIgYnV0dG9uOm5vdCguYnRuKXtjb2xvcjojNjRiNWY2fS5hbGVydHtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOmNhbGMoLjVyZW0gLSAycHgpIDAuNzVyZW0gMC4yNXJlbTtib3JkZXI6MXB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4fS5hbGVydCAuY2xvc2V7ZmxvYXQ6cmlnaHQ7bWFyZ2luOi0uNXJlbSAtLjc1cmVtIDAgMDtwYWRkaW5nOmNhbGMoLjVyZW0gKyAxcHgpIDAuNzVyZW0gMDtvcGFjaXR5Oi41O2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MS41cmVtO2xpbmUtaGVpZ2h0OjE7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcn0uYWxlcnQgLmNsb3NlOmhvdmVye29wYWNpdHk6MTt0ZXh0LWRlY29yYXRpb246bm9uZX0uYWxlcnR7Y29sb3I6IzYxNjE2MTtib3JkZXItY29sb3I6IzYxNjE2MTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9LmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzM4OGUzYztib3JkZXItY29sb3I6IzM4OGUzYztiYWNrZ3JvdW5kLWNvbG9yOiNlOGY1ZTl9LmFsZXJ0LWluZm97Y29sb3I6IzAwOTdhNztib3JkZXItY29sb3I6IzAwOTdhNztiYWNrZ3JvdW5kLWNvbG9yOiNlMGY3ZmF9LmFsZXJ0LXdhcm5pbmd7Y29sb3I6I2Y1N2MwMDtib3JkZXItY29sb3I6I2Y1N2MwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYzZTB9LmFsZXJ0LWVycm9ye2NvbG9yOiNkMzJmMmY7Ym9yZGVyLWNvbG9yOiNkMzJmMmY7YmFja2dyb3VuZC1jb2xvcjojZmZlYmVlfWlucHV0W3R5cGU9J2VtYWlsJ10saW5wdXRbdHlwZT0nbnVtYmVyJ10saW5wdXRbdHlwZT0ncGFzc3dvcmQnXSxpbnB1dFt0eXBlPSdzZWFyY2gnXSxpbnB1dFt0eXBlPSd0ZWwnXSxpbnB1dFt0eXBlPSd0ZXh0J10saW5wdXRbdHlwZT0ndXJsJ10sdGV4dGFyZWEsc2VsZWN0e3BhZGRpbmc6Y2FsYyguNXJlbSAtIDNweCkgMC42MjVyZW0gY2FsYyguMjVyZW0gLSAxcHgpO2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MnB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3gtc2hhZG93Om5vbmU7b3V0bGluZTowfWlucHV0W3R5cGU9J2VtYWlsJ106Zm9jdXMsaW5wdXRbdHlwZT0nbnVtYmVyJ106Zm9jdXMsaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpmb2N1cyxpbnB1dFt0eXBlPSdzZWFyY2gnXTpmb2N1cyxpbnB1dFt0eXBlPSd0ZWwnXTpmb2N1cyxpbnB1dFt0eXBlPSd0ZXh0J106Zm9jdXMsaW5wdXRbdHlwZT0ndXJsJ106Zm9jdXMsdGV4dGFyZWE6Zm9jdXMsc2VsZWN0OmZvY3Vze2JvcmRlci1jb2xvcjojOWU5ZTllfWlucHV0W3R5cGU9XCJmaWxlXCJde2xpbmUtaGVpZ2h0OjE7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH1pbnB1dDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257cGFkZGluZzouMnJlbSAuM3JlbSAuMDVyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoycHggc29saWQgI2JkYmRiZDtib3JkZXItcmFkaXVzOjJweH1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I2JkYmRiZH1zZWxlY3R7cGFkZGluZy1yaWdodDoxLjhyZW07YmFja2dyb3VuZC1pbWFnZTp1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMGhlaWdodCUzRCUyMjE0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjklMjAxNCUyMiUyMHdpZHRoJTNEJTIyMjklMjIlM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyM2UwZTBlMCUyMiUyMGQlM0QlMjJNOS4zNzcyNyUyMDMuNjI1bDUuMDgxNTQlMjA2LjkzNTIzTDE5LjU0MDM2JTIwMy42MjUlMjIlMkYlM0UlM0MlMkZzdmclM0VcIik7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIHJpZ2h0fXNlbGVjdDpmb2N1c3tiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwaGVpZ2h0JTNEJTIyMTQlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyOSUyMDE0JTIyJTIwd2lkdGglM0QlMjIyOSUyMiUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzOWU5ZTllJTIyJTIwZCUzRCUyMk05LjM3NzI3JTIwMy42MjVsNS4wODE1NCUyMDYuOTM1MjNMMTkuNTQwMzYlMjAzLjYyNSUyMiUyRiUzRSUzQyUyRnN2ZyUzRVwiKX1zZWxlY3Q6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfXRleHRhcmVhe2hlaWdodDphdXRvO21pbi1oZWlnaHQ6MnJlbX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMHJlbSl7LmZvcm17d2lkdGg6MTAwJX19LmZvcm0tZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MS41cmVtfS5mb3JtLWxhYmVse29yZGVyOjE7cG9zaXRpb246cmVsYXRpdmU7bWluLXdpZHRoOjEwcmVtO2hlaWdodDoycmVtO2NvbG9yOiM0MjQyNDI7Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2UwZTBlMDtsaW5lLWhlaWdodDoycmVtfWh0bWwgLmZvcm0tY29udHJvbHtmbGV4OjE7b3JkZXI6MjttaW4td2lkdGg6Y2FsYygxMDAlIC0gMTByZW0pO3BhZGRpbmc6LjI1cmVtIDFyZW0gMDtib3JkZXI6MDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTBlMGUwO2JvcmRlci1yYWRpdXM6MH1odG1sIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5ZTllOWV9aHRtbCAuZm9ybS1jb250cm9sIGxhYmVsK2xhYmVse3BhZGRpbmctbGVmdDoycmVtfXRleHRhcmVhLmZvcm0tY29udHJvbHtwYWRkaW5nLWxlZnQ6Y2FsYygxcmVtIC0gMnB4KTtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTBlMGUwO2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjZTBlMGUwfXRleHRhcmVhLmZvcm0tY29udHJvbCsuZm9ybS1sYWJlbDpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7Y29udGVudDonJzt3aWR0aDoycHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO3JpZ2h0Oi0ycHg7dG9wOjA7Ym90dG9tOjB9c2VsZWN0LmZvcm0tY29udHJvbHtib3JkZXItcmFkaXVzOjB9LmZvcm0tc3VjY2VzcyAuaGVscC1ibG9jaywuZm9ybS1zdWNjZXNzIC5mb3JtLWxhYmVse2NvbG9yOiM0Y2FmNTB9LmZvcm0tc3VjY2VzcyBpbnB1dCwuZm9ybS1zdWNjZXNzIHRleHRhcmVhLC5mb3JtLXN1Y2Nlc3Mgc2VsZWN0LC5mb3JtLXN1Y2Nlc3MgLmZvcm0tbGFiZWwsLmZvcm0tc3VjY2VzcyAuZm9ybS1jb250cm9se2JvcmRlci1jb2xvcjojNGNhZjUwfS5mb3JtLXN1Y2Nlc3MgaW5wdXQ6Zm9jdXMsLmZvcm0tc3VjY2VzcyB0ZXh0YXJlYTpmb2N1cywuZm9ybS1zdWNjZXNzIHNlbGVjdDpmb2N1cywuZm9ybS1zdWNjZXNzIC5mb3JtLWxhYmVsOmZvY3VzLC5mb3JtLXN1Y2Nlc3MgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzJlN2QzMn0uZm9ybS1pbmZvIC5oZWxwLWJsb2NrLC5mb3JtLWluZm8gLmZvcm0tbGFiZWx7Y29sb3I6IzAwYmNkNH0uZm9ybS1pbmZvIGlucHV0LC5mb3JtLWluZm8gdGV4dGFyZWEsLmZvcm0taW5mbyBzZWxlY3QsLmZvcm0taW5mbyAuZm9ybS1sYWJlbCwuZm9ybS1pbmZvIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiMwMGJjZDR9LmZvcm0taW5mbyBpbnB1dDpmb2N1cywuZm9ybS1pbmZvIHRleHRhcmVhOmZvY3VzLC5mb3JtLWluZm8gc2VsZWN0OmZvY3VzLC5mb3JtLWluZm8gLmZvcm0tbGFiZWw6Zm9jdXMsLmZvcm0taW5mbyAuZm9ybS1jb250cm9sOmZvY3Vze2JvcmRlci1jb2xvcjojMDA4MzhmfS5mb3JtLXdhcm5pbmcgLmhlbHAtYmxvY2ssLmZvcm0td2FybmluZyAuZm9ybS1sYWJlbHtjb2xvcjojZmY5ODAwfS5mb3JtLXdhcm5pbmcgaW5wdXQsLmZvcm0td2FybmluZyB0ZXh0YXJlYSwuZm9ybS13YXJuaW5nIHNlbGVjdCwuZm9ybS13YXJuaW5nIC5mb3JtLWxhYmVsLC5mb3JtLXdhcm5pbmcgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6I2ZmOTgwMH0uZm9ybS13YXJuaW5nIGlucHV0OmZvY3VzLC5mb3JtLXdhcm5pbmcgdGV4dGFyZWE6Zm9jdXMsLmZvcm0td2FybmluZyBzZWxlY3Q6Zm9jdXMsLmZvcm0td2FybmluZyAuZm9ybS1sYWJlbDpmb2N1cywuZm9ybS13YXJuaW5nIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNlZjZjMDB9LmZvcm0tZXJyb3IgLmhlbHAtYmxvY2ssLmZvcm0tZXJyb3IgLmZvcm0tbGFiZWx7Y29sb3I6I2Y0NDMzNn0uZm9ybS1lcnJvciBpbnB1dCwuZm9ybS1lcnJvciB0ZXh0YXJlYSwuZm9ybS1lcnJvciBzZWxlY3QsLmZvcm0tZXJyb3IgLmZvcm0tbGFiZWwsLmZvcm0tZXJyb3IgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6I2Y0NDMzNn0uZm9ybS1lcnJvciBpbnB1dDpmb2N1cywuZm9ybS1lcnJvciB0ZXh0YXJlYTpmb2N1cywuZm9ybS1lcnJvciBzZWxlY3Q6Zm9jdXMsLmZvcm0tZXJyb3IgLmZvcm0tbGFiZWw6Zm9jdXMsLmZvcm0tZXJyb3IgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6I2M2MjgyOH0uZm9ybS1jb250cm9sOmRpc2FibGVkLC5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQrLmZvcm0tbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOiNiZGJkYmQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6I2JkYmRiZDtvcGFjaXR5OjF9LmZvcm0tY29udHJvbFtyZWFkb25seV0sLmZvcm0tY29udHJvbFtyZWFkb25seV0rLmZvcm0tbGFiZWx7Y29sb3I6IzllOWU5ZX0uZm9ybS1jb250cm9sOnJlcXVpcmVkKy5mb3JtLWxhYmVsOmFmdGVye2NvbnRlbnQ6XCIgKlwiO2NvbG9yOiNlZjUzNTB9LmhlbHAtYmxvY2t7b3JkZXI6MzttaW4td2lkdGg6MTAwJTtmbGV4LWJhc2lzOjEwMCU7bWFyZ2luLXRvcDouNXJlbTtwYWRkaW5nLWxlZnQ6MTFyZW07Y29sb3I6IzllOWU5ZX0uaW5wdXQtZ3JvdXAsLmJ0bi1ncm91cHtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtd3JhcDp3cmFwfS5mb3JtLXZlcnRpY2FsIC5mb3JtLWxhYmVse2JvcmRlci1ib3R0b206bm9uZTttaW4td2lkdGg6MTAwJTtmbGV4LWJhc2lzOjEwMCV9LmZvcm0tdmVydGljYWwgdGV4dGFyZWEuZm9ybS1jb250cm9se3BhZGRpbmctbGVmdDowO2JvcmRlci1sZWZ0Om5vbmV9LmZvcm0tdmVydGljYWwgdGV4dGFyZWEuZm9ybS1jb250cm9sKy5mb3JtLWxhYmVsOmJlZm9yZXtkaXNwbGF5Om5vbmV9LmZvcm0tdmVydGljYWwgLmhlbHAtYmxvY2t7cGFkZGluZy1sZWZ0OjB9LmZvcm0tdmVydGljYWwgLmZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWluLXdpZHRoOjEwMCU7ZmxleC1iYXNpczoxMDAlO3BhZGRpbmc6MCAwIC4xNXJlbX0uZm9ybS12ZXJ0aWNhbCAuZm9ybS1jb250cm9sIGxhYmVse3BhZGRpbmctcmlnaHQ6MXJlbX0uZm9ybS12ZXJ0aWNhbCAuZm9ybS1jb250cm9sIGxhYmVsK2xhYmVse3BhZGRpbmctbGVmdDowfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4cmVtKXsuZm9ybS1sYWJlbHtib3JkZXItYm90dG9tOm5vbmU7bWluLXdpZHRoOjEwMCU7ZmxleC1iYXNpczoxMDAlfXRleHRhcmVhLmZvcm0tY29udHJvbHtwYWRkaW5nLWxlZnQ6MDtib3JkZXItbGVmdDpub25lfXRleHRhcmVhLmZvcm0tY29udHJvbCsuZm9ybS1sYWJlbDpiZWZvcmV7ZGlzcGxheTpub25lfS5oZWxwLWJsb2Nre3BhZGRpbmctbGVmdDowfWh0bWwgLmZvcm0tY29udHJvbHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWluLXdpZHRoOjEwMCU7ZmxleC1iYXNpczoxMDAlO3BhZGRpbmc6MCAwIC4xNXJlbX1odG1sIC5mb3JtLWNvbnRyb2wgbGFiZWx7cGFkZGluZy1yaWdodDoxcmVtfWh0bWwgLmZvcm0tY29udHJvbCBsYWJlbCtsYWJlbHtwYWRkaW5nLWxlZnQ6MH19LmJ0bntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOmNhbGMoLjVyZW0gLSAzcHgpIDAuNzVyZW0gY2FsYyguMjVyZW0gLSAxcHgpO2JvcmRlci13aWR0aDoycHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMikgcmdiYSgwLDAsMCwwLjIpIHJnYmEoMCwwLDAsMC4yKSByZ2JhKDI1NSwyNTUsMjU1LDAuMik7b3V0bGluZTpub25lO2N1cnNvcjpwb2ludGVyO3VzZXItc2VsZWN0Om5vbmU7Y29sb3I6I2ZmZn0uYnRuOmhvdmVyLC5idG46Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMC4yKSByZ2JhKDI1NSwyNTUsMjU1LDAuMikgcmdiYSgyNTUsMjU1LDI1NSwwLjIpIHJnYmEoMCwwLDAsMC4yKX0uYnRuOmFjdGl2ZXtib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMil9LmJ0bi5idG4tZ2hvc3R7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLmJ0bi1naG9zdDpob3ZlciwuYnRuLmJ0bi1naG9zdDpmb2N1c3tjb2xvcjojZmZmO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMikgcmdiYSgyNTUsMjU1LDI1NSwwLjIpIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSByZ2JhKDAsMCwwLDAuMil9LmJ0bi1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzIxOTZmM30uYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5OmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzE5NzZkMn0uYnRuLXByaW1hcnkuYnRuLWdob3N0e2JvcmRlci1jb2xvcjojMjE5NmYzO2NvbG9yOiMyMTk2ZjN9LmJ0bi1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzRjYWY1MH0uYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzM4OGUzY30uYnRuLXN1Y2Nlc3MuYnRuLWdob3N0e2JvcmRlci1jb2xvcjojNGNhZjUwO2NvbG9yOiM0Y2FmNTB9LmJ0bi1pbmZve2JhY2tncm91bmQtY29sb3I6IzAwYmNkNH0uYnRuLWluZm86aG92ZXIsLmJ0bi1pbmZvOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzAwOTdhN30uYnRuLWluZm8uYnRuLWdob3N0e2JvcmRlci1jb2xvcjojMDBiY2Q0O2NvbG9yOiMwMGJjZDR9LmJ0bi13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0uYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0uYnRuLXdhcm5pbmcuYnRuLWdob3N0e2JvcmRlci1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZjk4MDB9LmJ0bi1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9LmJ0bi1lcnJvcjpob3ZlciwuYnRuLWVycm9yOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2QzMmYyZn0uYnRuLWVycm9yLmJ0bi1naG9zdHtib3JkZXItY29sb3I6I2Y0NDMzNjtjb2xvcjojZjQ0MzM2fS5idG4tZGVmYXVsdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Y29sb3I6IzYxNjE2MX0uYnRuLWRlZmF1bHQ6aG92ZXIsLmJ0bi1kZWZhdWx0OmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2JkYmRiZDtjb2xvcjojZmZmfS5idG4tZGVmYXVsdC5idG4tZ2hvc3R7Ym9yZGVyLWNvbG9yOiNiZGJkYmQ7Y29sb3I6IzYxNjE2MX0uYnRuLWxpbmt7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxOTZmM30uYnRuLWxpbms6aG92ZXIsLmJ0bi1saW5rOmZvY3Vze2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojMTk3NmQyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmJ0bltkaXNhYmxlZF17Y3Vyc29yOm5vdC1hbGxvd2VkfS5idG5bZGlzYWJsZWRdLC5idG5bZGlzYWJsZWRdOmhvdmVyLC5idG5bZGlzYWJsZWRdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjIpIHJnYmEoMCwwLDAsMC4yKSByZ2JhKDAsMCwwLDAuMikgcmdiYSgyNTUsMjU1LDI1NSwwLjIpO2NvbG9yOiNiZGJkYmR9LmJ0bltkaXNhYmxlZF0uYnRuLWdob3N0LC5idG5bZGlzYWJsZWRdLmJ0bi1naG9zdDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjojYmRiZGJkO2NvbG9yOiNiZGJkYmR9LmJ0bi1hZGRvbntwYWRkaW5nOmNhbGMoLjVyZW0gLSAzcHgpIDAuNzVyZW0gY2FsYyguMjVyZW0gLSAxcHgpO2JvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnR9LmJ0bi1hZGRvbjpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6MH0uYnRuLWdyb3VwIC5idG57ZmxleC1ncm93OjE7Ym9yZGVyLXJhZGl1czowO3dvcmQtYnJlYWs6YnJlYWstYWxsO3dvcmQtYnJlYWs6YnJlYWstd29yZH0uYnRuLWdyb3VwIC5idG46Zmlyc3Qtb2YtdHlwZXtib3JkZXItcmFkaXVzOjJweCAwIDAgMnB4fS5idG4tZ3JvdXAgLmJ0bjpsYXN0LW9mLXR5cGV7Ym9yZGVyLXJhZGl1czowIDJweCAycHggMH0uYnRuLWdyb3VwIC5idG4tZ2hvc3Q6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6LTJweH0ubGlzdC1zdHJpcGVkPio6bnRoLWNoaWxkKGV2ZW4pOm5vdCguYnRuKXtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9Lmxpc3QtZ3JvdXB7cGFkZGluZzowO2JvcmRlcjoxcHggc29saWQgI2UwZTBlMDtib3JkZXItcmFkaXVzOjJweH0ubGlzdC1ncm91cD4qe2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7cGFkZGluZzpjYWxjKC41cmVtIC0gMXB4KSAwLjVyZW0gMC4yNXJlbTtib3JkZXI6MH0ubGlzdC1ncm91cD4qOmZpcnN0LWNoaWxke3BhZGRpbmctdG9wOmNhbGMoLjVyZW0gLSAycHgpfS5saXN0LWdyb3VwPmEsLmxpc3QtZ3JvdXA+YnV0dG9uOm5vdCguYnRuKSwubGlzdC1ncm91cD5idXR0b257d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjB9Lmxpc3QtZ3JvdXAgYnV0dG9uOm5vdCguYnRuKXt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5saXN0LWdyb3VwPmxpOmJlZm9yZXtkaXNwbGF5Om5vbmV9Lmxpc3QtZ3JvdXA+Kjpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlMGUwZTB9Lmxpc3QtZ3JvdXA+LmRpc2FibGVke2NvbG9yOiM5ZTllOWU7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubGlzdC1ncm91cD4uYWN0aXZlLmFjdGl2ZSwubGlzdC1ncm91cD4uYWN0aXZlLmFjdGl2ZTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzIxOTZmM30uY2FyZHtib3JkZXI6MXB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXJhZGl1czoycHh9LmNhcmQgLmNhcmQtaGVhZGVye2Rpc3BsYXk6YmxvY2s7cGFkZGluZzpjYWxjKC41cmVtIC0gMXB4KSAwLjc1cmVtIDAuMjVyZW07YmFja2dyb3VuZC1jb2xvcjojZWVlO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzQyNDI0Mn0uY2FyZCAuY2FyZC1ib2R5e3BhZGRpbmc6Y2FsYyguNXJlbSAtIDJweCkgMC43NXJlbSAwLjI1cmVtfS5jYXJkIC5jYXJkLWJvZHk6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmNhcmQ+Kisqe2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wOjFweCBzb2xpZDtib3JkZXItY29sb3I6aW5oZXJpdH0uY2FyZC5jYXJkLXN1Y2Nlc3N7Ym9yZGVyOjFweCBzb2xpZCAjNGNhZjUwfS5jYXJkLmNhcmQtc3VjY2VzcyAuY2FyZC1oZWFkZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0Y2FmNTA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNGNhZjUwO2ZvbnQtd2VpZ2h0Om5vcm1hbH0uY2FyZC5jYXJkLWluZm97Ym9yZGVyOjFweCBzb2xpZCAjMDBiY2Q0fS5jYXJkLmNhcmQtaW5mbyAuY2FyZC1oZWFkZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwMGJjZDQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDBiY2Q0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0uY2FyZC5jYXJkLXdhcm5pbmd7Ym9yZGVyOjFweCBzb2xpZCAjZmY5ODAwfS5jYXJkLmNhcmQtd2FybmluZyAuY2FyZC1oZWFkZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmY5ODAwO2ZvbnQtd2VpZ2h0Om5vcm1hbH0uY2FyZC5jYXJkLWVycm9ye2JvcmRlcjoxcHggc29saWQgI2Y0NDMzNn0uY2FyZC5jYXJkLWVycm9yIC5jYXJkLWhlYWRlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtib3JkZXItYm90dG9tLWNvbG9yOiNmNDQzMzY7Zm9udC13ZWlnaHQ6bm9ybWFsfWRldGFpbHMuY2FyZD4qKyp7Ym9yZGVyLWNvbG9yOiNlMGUwZTB9LmxvYWRpbmd7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxLjNlbTttYXJnaW4tdG9wOi0uM2VtO2xpbmUtaGVpZ2h0OjEuNWVtO3ZlcnRpY2FsLWFsaWduOnRleHQtYm90dG9tfS5sb2FkaW5nOjphZnRlcntkaXNwbGF5OmlubGluZS10YWJsZTt3aGl0ZS1zcGFjZTpwcmU7Y29udGVudDpcIlxcQS5cXEEuLlxcQS4uLlwiO3RleHQtYWxpZ246bGVmdDthbmltYXRpb246c3BpbiAycyBzdGVwcyg0KSBpbmZpbml0ZX1Aa2V5ZnJhbWVzIHNwaW57dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTZlbSl9fS5wcm9ncmVzcy1iYXJ7aGVpZ2h0OjFyZW07YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwfS5wcm9ncmVzcy1iYXIubmFycm93e2hlaWdodDowLjVyZW19LnByb2dyZXNzLWJhci5wcm9ncmVzcy1iYXItc2hvdy1wZXJjZW50e21hcmdpbi10b3A6MnJlbX0ucHJvZ3Jlc3MtYmFyLnByb2dyZXNzLWJhci1zaG93LXBlcmNlbnQ+ZGl2OmJlZm9yZXtjb250ZW50OicnO2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcC1jb2xvcjojOWU5ZTllO3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTJweDtyaWdodDotNnB4fS5wcm9ncmVzcy1iYXIucHJvZ3Jlc3MtYmFyLXNob3ctcGVyY2VudD5kaXY6YWZ0ZXJ7Y29sb3I6Izc1NzU3NTtjb250ZW50OmF0dHIoZGF0YS1maWxsZWQpO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjo2cHggc29saWQgdHJhbnNwYXJlbnQ7dG9wOi0zNnB4O3JpZ2h0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNTAlKX0ucHJvZ3Jlc3MtYmFyPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MTAwJTt3aWR0aDowO21heC13aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzllOWU5ZTt0cmFuc2l0aW9uOndpZHRoIC4zcyBlYXNlO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiNmZmZ9LnByb2dyZXNzLWJhci5wcm9ncmVzcy1wcmltYXJ5PmRpdntiYWNrZ3JvdW5kLWNvbG9yOiMyMTk2ZjN9LnByb2dyZXNzLWJhci5wcm9ncmVzcy1zdWNjZXNzPmRpdntiYWNrZ3JvdW5kLWNvbG9yOiM0Y2FmNTB9LnByb2dyZXNzLWJhci5wcm9ncmVzcy1pbmZvPmRpdntiYWNrZ3JvdW5kLWNvbG9yOiMwMGJjZDR9LnByb2dyZXNzLWJhci5wcm9ncmVzcy13YXJuaW5nPmRpdntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9LnByb2dyZXNzLWJhci5wcm9ncmVzcy1lcnJvcj5kaXZ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fXRhYmxle3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9dGQsdGh7dmVydGljYWwtYWxpZ246dG9wO2JvcmRlcjoxcHggc29saWQgI2UwZTBlMDtwYWRkaW5nOmNhbGMoLjVyZW0gLSAxcHgpIDAuNXJlbSAwLjNyZW19dGhlYWQgdGh7Y29sb3I6IzQyNDI0Mjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Y2FwdGlvbntjYXB0aW9uLXNpZGU6Ym90dG9tO3BhZGRpbmctdG9wOi43NXJlbTtjb2xvcjojOWU5ZTllfS50YWJsZS1maXhlZHt0YWJsZS1sYXlvdXQ6Zml4ZWR9LnRhYmxlLXN0cmlwZWQgdHI6bnRoLWNoaWxkKGV2ZW4pIHRke2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0udGFibGUtaG92ZXIgdHI6aG92ZXIgdGR7YmFja2dyb3VuZC1jb2xvcjojZWVlfS50YWJsZS1uYXJyb3cgdGQsLnRhYmxlLW5hcnJvdyB0aHtwYWRkaW5nOmNhbGMoLjI1cmVtIC0gMXB4KSAwLjVyZW0gMH0udGFibGUtd2lkZSB0ZCwudGFibGUtd2lkZSB0aHtwYWRkaW5nOmNhbGMoLjg3NXJlbSAtIDFweCkgMXJlbSAwLjYyNXJlbX10aGVhZC50ZXh0LWxlZnQ+dHI+dGh7dGV4dC1hbGlnbjpsZWZ0fS50YWd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM5ZTllOWU7Ym94LXNoYWRvdzowIC0xcHggMCAzcHggIzllOWU5ZSxpbnNldCAwIDAgMCAxcHggIzllOWU5ZTtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LS4xZW07cGFkZGluZzowIC4yNWVtO2JvcmRlci1yYWRpdXM6MXB4O2ZvbnQtc2l6ZTouOGVtO2ZvbnQtd2VpZ2h0Om5vcm1hbDt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fS50YWc6ZW1wdHl7ZGlzcGxheTpub25lfS50YWcudGFnLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMyMTk2ZjM7Ym94LXNoYWRvdzowIC0xcHggMCAzcHggIzIxOTZmMyxpbnNldCAwIDAgMCAxcHggIzIxOTZmM30udGFnLnRhZy1zdWNjZXNze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNGNhZjUwO2JveC1zaGFkb3c6MCAtMXB4IDAgM3B4ICM0Y2FmNTAsaW5zZXQgMCAwIDAgMXB4ICM0Y2FmNTB9LnRhZy50YWctaW5mb3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzAwYmNkNDtib3gtc2hhZG93OjAgLTFweCAwIDNweCAjMDBiY2Q0LGluc2V0IDAgMCAwIDFweCAjMDBiY2Q0fS50YWcudGFnLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym94LXNoYWRvdzowIC0xcHggMCAzcHggI2ZmOTgwMCxpbnNldCAwIDAgMCAxcHggI2ZmOTgwMH0udGFnLnRhZy1lcnJvcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtib3gtc2hhZG93OjAgLTFweCAwIDNweCAjZjQ0MzM2LGluc2V0IDAgMCAwIDFweCAjZjQ0MzM2fUBrZXlmcmFtZXMgdG9vbHRpcC1hcHBlYXJ7dG97b3BhY2l0eToxfX1bZGF0YS10b29sdGlwXXtwb3NpdGlvbjpyZWxhdGl2ZX1bZGF0YS10b29sdGlwXTphZnRlcntjb250ZW50OmF0dHIoZGF0YS10b29sdGlwKTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7Ym90dG9tOjEwMCU7bGVmdDo1MCU7ZGlzcGxheTpub25lO3BhZGRpbmc6Y2FsYyguNXJlbSAtIDJweCkgMC41cmVtIDAuMjVyZW07dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtMC41cmVtKTtwb2ludGVyLWV2ZW50czpub25lO2JveC1zaGFkb3c6MCAwIDAgMC4yNXJlbSAjZmZmO2JvcmRlcjoxcHggc29saWQgI2UwZTBlMDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7d2hpdGUtc3BhY2U6cHJlO2NvbG9yOiMyMTIxMjE7b3BhY2l0eTowfVtkYXRhLXRvb2x0aXBdOmZvY3VzOmFmdGVyLFtkYXRhLXRvb2x0aXBdOmhvdmVyOmFmdGVye2Rpc3BsYXk6YmxvY2s7YW5pbWF0aW9uOnRvb2x0aXAtYXBwZWFyIC4xcyBlYXNlLWluIC4xcyBmb3J3YXJkc31bZGF0YS10b29sdGlwXS50b29sdGlwLWJvdHRvbTphZnRlcntib3R0b206YXV0bzt0b3A6MTAwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsIDAuNXJlbSl9W2RhdGEtdG9vbHRpcF0udG9vbHRpcC1sZWZ0OmFmdGVye2JvdHRvbTphdXRvO2xlZnQ6YXV0bzt0b3A6NTAlO3JpZ2h0OjEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMC41cmVtLCAtNTAlKX1bZGF0YS10b29sdGlwXS50b29sdGlwLXJpZ2h0OmFmdGVye2JvdHRvbTphdXRvO3RvcDo1MCU7bGVmdDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoMC41cmVtLCAtNTAlKX1bZGF0YS10b29sdGlwXS50b29sdGlwLWFjdGl2ZTphZnRlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzIxOTZmM31bZGF0YS10b29sdGlwXS50b29sdGlwLXN1Y2Nlc3M6YWZ0ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0Y2FmNTB9W2RhdGEtdG9vbHRpcF0udG9vbHRpcC1pbmZvOmFmdGVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDBiY2Q0fVtkYXRhLXRvb2x0aXBdLnRvb2x0aXAtd2FybmluZzphZnRlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH1bZGF0YS10b29sdGlwXS50b29sdGlwLWVycm9yOmFmdGVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5pe3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDouMDYyNWVtO3dpZHRoOi43NXJlbTtoZWlnaHQ6Ljc1cmVtO2ZpbGw6bm9uZTtmb250LXNpemU6aW5oZXJpdDtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDo0cHg7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kfS5pLW1lZGl1bSAuaSwuaS5pLW1lZGl1bXt3aWR0aDoxLjVyZW07aGVpZ2h0OjEuNXJlbTtzdHJva2Utd2lkdGg6MnB4fS5pLWxhcmdlIC5pLC5pLmktbGFyZ2V7d2lkdGg6MnJlbTtoZWlnaHQ6MnJlbTtzdHJva2Utd2lkdGg6MnB4fWRldGFpbHN7bWFyZ2luLWJvdHRvbToxcmVtfXN1bW1hcnl7b3V0bGluZTpub25lfXN1bW1hcnk6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9ZGV0YWlsczpub3QoLmNhcmQpe3BhZGRpbmctbGVmdDoxcmVtfWRldGFpbHM6bm90KC5jYXJkKSBzdW1tYXJ5e21hcmdpbi1ib3R0b206MXJlbTttYXJnaW4tbGVmdDotMXJlbX1kZXRhaWxzOm5vdCguY2FyZCkgc3VtbWFyeTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym94LXNoYWRvdzotMC41cmVtIC0wLjFyZW0gMCAwLjVyZW0gI2Y1ZjVmNX1kZXRhaWxzLmNhcmQgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlcntkaXNwbGF5Om5vbmV9ZGV0YWlscy5jYXJkIHN1bW1hcnk6OmJlZm9yZXtjb250ZW50OifilrYnO2Zsb2F0OmxlZnQ7cGFkZGluZy1yaWdodDouNzVyZW07Y29sb3I6IzllOWU5ZX1kZXRhaWxzLmNhcmRbb3Blbl0gc3VtbWFyeTo6YmVmb3Jle2NvbnRlbnQ6J+KWvCd9LmRyb3B6b25le2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtoZWlnaHQ6OXJlbTtwYWRkaW5nOjFyZW07Ym9yZGVyOjJweCBkYXNoZWQgI2UwZTBlMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYmRiZGJkO2N1cnNvcjpwb2ludGVyfS5kcm9wem9uZS5hY3RpdmUsLmRyb3B6b25lLnJlamVjdGVke2NvbG9yOiM5ZTllOWV9LmRyb3B6b25lLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9LmRyb3B6b25lLnJlamVjdGVke2JhY2tncm91bmQtY29sb3I6I2ZmZWJlZX1jb2Rle3BhZGRpbmc6LjI1ZW0gLjI1ZW0gLjEyNWVtO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX1zYW1we2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6LTNweDtwYWRkaW5nOjFweCAuMjVlbSAwO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX1wcmV7cGFkZGluZzpjYWxjKC43NXJlbSAtIDFweCkgMXJlbX1zYW1wLHByZXtib3JkZXI6MXB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXJhZGl1czoycHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC13cmFwOmJyZWFrLXdvcmQ7d29yZC1icmVhazpicmVhay1hbGw7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9c2FtcC5zY3JvbGwscHJlLnNjcm9sbHtvdmVyZmxvdzphdXRvO3doaXRlLXNwYWNlOnByZX1wcmUgY29kZXtwYWRkaW5nOjA7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fWEsLmxpc3QtZ3JvdXAgYnV0dG9uOm5vdCguYnRuKXtjdXJzb3I6cG9pbnRlcjtjb2xvcjojMjE5NmYzO3RleHQtZGVjb3JhdGlvbjpub25lfWE6aG92ZXIsLmxpc3QtZ3JvdXAgYnV0dG9uOmhvdmVyOm5vdCguYnRuKXtjb2xvcjojMTk3NmQyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9aW1ne21heC13aWR0aDoxMDAlfWltZy5mdWxsLXdpZHRoe2Rpc3BsYXk6YmxvY2t9ZmlndXJle21hcmdpbjowfWZpZ3VyZSBpbWd7d2lkdGg6MTAwJX1maWdjYXB0aW9ue3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM5ZTllOWV9YmxvY2txdW90ZXtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy1sZWZ0OjFyZW07Ym9yZGVyLWxlZnQ6MC4yNXJlbSBzb2xpZCAjZTBlMGUwfWJsb2NrcXVvdGU+KjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH1jaXRle2Zsb2F0OnJpZ2h0O2NvbG9yOiM5ZTllOWV9Y2l0ZTpiZWZvcmV7Y29udGVudDpcIuKAkyBcIn1tYXJre2JveC1kZWNvcmF0aW9uLWJyZWFrOmNsb25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjU5ZDtib3gtc2hhZG93OjAgLTFweCAwIDNweCAjZmZmNTlkfW1hcmsgbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZGQ4MzU7Ym94LXNoYWRvdzowIC0xcHggMCAzcHggI2ZkZDgzNX1tYXJrIHNhbXAsbWFyayBrYmQsbWFyayBjb2Rle2JhY2tncm91bmQtY29sb3I6I2ZmZmRlN31hYmJyW3RpdGxlXXt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItYm90dG9tOjJweCBkYXNoZWQgI2UwZTBlMH1rYmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzouMWVtIC40ZW0gMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y29sb3I6IzQyNDI0Mjtib3JkZXI6c29saWQgMXB4ICNlZWU7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZTBlMGUwO2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtib3gtc2hhZG93Omluc2V0IDAgLTFweCAwICNlMGUwZTA7Zm9udC1zaXplOi45ZW19LmZvb3Rub3Rlc3twYWRkaW5nLXRvcDozcmVtO21hcmdpbi10b3A6MS41cmVtfS5uYXJyb3d7cGFkZGluZzowICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0uaW5uZXJ7cGFkZGluZzouNXJlbSAuNzVyZW0gLjI1cmVtICAgICAgICAgICAgICFpbXBvcnRhbnR9LmlubmVyLXdpZGV7cGFkZGluZzoxcmVtIDFyZW0gLjc1cmVtICAgICAgICAgICAhaW1wb3J0YW50fS5wLXQtMHtwYWRkaW5nLXRvcDowICAgICAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ucC10LTF7cGFkZGluZy10b3A6MS41cmVtICAgICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9LnAtdC0ye3BhZGRpbmctdG9wOjMuMHJlbSAgICAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5wLXQtM3twYWRkaW5nLXRvcDo0LjVyZW0gICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ucC1iLTB7cGFkZGluZy1ib3R0b206MCAgICAgICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9LnAtYi0xe3BhZGRpbmctYm90dG9tOjEuNXJlbSAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5wLWItMntwYWRkaW5nLWJvdHRvbTozLjByZW0gICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ucC1iLTN7cGFkZGluZy1ib3R0b206NC41cmVtICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9Lm0tdC0we21hcmdpbi10b3A6MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5tLXQtMXttYXJnaW4tdG9wOjEuNXJlbSAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ubS10LTJ7bWFyZ2luLXRvcDozLjByZW0gICAgICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9Lm0tdC0ze21hcmdpbi10b3A6NC41cmVtICAgICAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5tLWItMHttYXJnaW4tYm90dG9tOjAgICAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ubS1iLTF7bWFyZ2luLWJvdHRvbToxLjVyZW0gICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9Lm0tYi0ye21hcmdpbi1ib3R0b206My4wcmVtICAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5tLWItM3ttYXJnaW4tYm90dG9tOjQuNXJlbSAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0ucHVsbC1sZWZ0e2Zsb2F0OmxlZnQgICAgICAgICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9LnB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHQgICAgICAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5mdWxsLXdpZHRoe3dpZHRoOjEwMCUgICAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0uYmxvY2t7ZGlzcGxheTpibG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbiAgICAgICAgICAgICAgICAgICAhaW1wb3J0YW50fS5oaWRkZW57ZGlzcGxheTpub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIWltcG9ydGFudH0uaGlkZS10ZXh0e2ZvbnQ6MC8wIGE7Y29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4cmVtKXsuaGlkZGVuLWlmLWxhcmdle2Rpc3BsYXk6bm9uZSAgICAgICAgICAgICAgICAhaW1wb3J0YW50fX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OHJlbSl7LmhpZGRlbi1pZi1tZWRpdW17ZGlzcGxheTpub25lICAgICAgICAgICAgICAgIWltcG9ydGFudH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzByZW0pey5oaWRkZW4taWYtc21hbGx7ZGlzcGxheTpub25lICAgICAgICAgICAgICAgICFpbXBvcnRhbnR9fS5sZWFke21hcmdpbi1ib3R0b206MS41cmVtO2ZvbnQtc2l6ZToxLjI1ZW07bGluZS1oZWlnaHQ6MS4yZW19LnRydW5jYXRle292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0udGV4dC1ib2xke2ZvbnQtd2VpZ2h0OmJvbGR9LnRleHQtaXRhbGlje2ZvbnQtc3R5bGU6aXRhbGljfS5iZy1tdXRlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjUgIWltcG9ydGFudH0uYmctYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2JiZGVmYiAhaW1wb3J0YW50fS5iZy1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2M4ZTZjOSAhaW1wb3J0YW50fS5iZy1pbmZve2JhY2tncm91bmQtY29sb3I6I2IyZWJmMiAhaW1wb3J0YW50fS5iZy13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZmZTBiMiAhaW1wb3J0YW50fS5iZy1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDIgIWltcG9ydGFudH0udGV4dC1tdXRlZHtjb2xvcjojOWU5ZTllfS50ZXh0LXByaW1hcnl7Y29sb3I6IzIxOTZmM30udGV4dC1zdWNjZXNze2NvbG9yOiM0Y2FmNTB9LnRleHQtaW5mb3tjb2xvcjojMDBiY2Q0fS50ZXh0LXdhcm5pbmd7Y29sb3I6I2ZmOTgwMH0udGV4dC1lcnJvcntjb2xvcjojZjQ0MzM2fS5oaWdobGlnaHQgLmhsbHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmN9LmhpZ2hsaWdodCAuY3tjb2xvcjojOTk5fS5oaWdobGlnaHQgLmVycntjb2xvcjojYTAwO2JhY2tncm91bmQtY29sb3I6I2ZhYX0uaGlnaGxpZ2h0IC5re2NvbG9yOiMwNjl9LmhpZ2hsaWdodCAub3tjb2xvcjojNTU1fS5oaWdobGlnaHQgLmNte2NvbG9yOiMwOWY7Zm9udC1zdHlsZTppdGFsaWN9LmhpZ2hsaWdodCAuY3B7Y29sb3I6IzA5OX0uaGlnaGxpZ2h0IC5jMXtjb2xvcjojOTk5fS5oaWdobGlnaHQgLmNze2NvbG9yOiM5OTl9LmhpZ2hsaWdodCAuZ2R7YmFja2dyb3VuZC1jb2xvcjojZmNjO2JvcmRlcjoxcHggc29saWQgI2MwMH0uaGlnaGxpZ2h0IC5nZXtmb250LXN0eWxlOml0YWxpY30uaGlnaGxpZ2h0IC5ncntjb2xvcjpyZWR9LmhpZ2hsaWdodCAuZ2h7Y29sb3I6IzAzMH0uaGlnaGxpZ2h0IC5naXtiYWNrZ3JvdW5kLWNvbG9yOiNjZmM7Ym9yZGVyOjFweCBzb2xpZCAjMGMwfS5oaWdobGlnaHQgLmdve2NvbG9yOiNhYWF9LmhpZ2hsaWdodCAuZ3B7Y29sb3I6IzAwOX0uaGlnaGxpZ2h0IC5ndXtjb2xvcjojMDMwfS5oaWdobGlnaHQgLmd0e2NvbG9yOiM5YzZ9LmhpZ2hsaWdodCAua2N7Y29sb3I6IzA2OX0uaGlnaGxpZ2h0IC5rZHtjb2xvcjojMDY5fS5oaWdobGlnaHQgLmtue2NvbG9yOiMwNjl9LmhpZ2hsaWdodCAua3B7Y29sb3I6IzA2OX0uaGlnaGxpZ2h0IC5rcntjb2xvcjojMDY5fS5oaWdobGlnaHQgLmt0e2NvbG9yOiMwNzh9LmhpZ2hsaWdodCAubXtjb2xvcjojZjYwfS5oaWdobGlnaHQgLnN7Y29sb3I6I2Q0NDk1MH0uaGlnaGxpZ2h0IC5uYXtjb2xvcjojNGY5ZmNmfS5oaWdobGlnaHQgLm5ie2NvbG9yOiMzNjZ9LmhpZ2hsaWdodCAubmN7Y29sb3I6IzBhOH0uaGlnaGxpZ2h0IC5ub3tjb2xvcjojMzYwfS5oaWdobGlnaHQgLm5ke2NvbG9yOiM5OWZ9LmhpZ2hsaWdodCAubml7Y29sb3I6Izk5OX0uaGlnaGxpZ2h0IC5uZXtjb2xvcjojYzAwfS5oaWdobGlnaHQgLm5me2NvbG9yOiNjMGZ9LmhpZ2hsaWdodCAubmx7Y29sb3I6Izk5Zn0uaGlnaGxpZ2h0IC5ubntjb2xvcjojMGNmfS5oaWdobGlnaHQgLm50e2NvbG9yOiMyZjZmOWZ9LmhpZ2hsaWdodCAubnZ7Y29sb3I6IzAzM30uaGlnaGxpZ2h0IC5vd3tjb2xvcjojMDAwfS5oaWdobGlnaHQgLnd7Y29sb3I6I2JiYn0uaGlnaGxpZ2h0IC5tZntjb2xvcjojZjYwfS5oaWdobGlnaHQgLm1oe2NvbG9yOiNmNjB9LmhpZ2hsaWdodCAubWl7Y29sb3I6I2Y2MH0uaGlnaGxpZ2h0IC5tb3tjb2xvcjojZjYwfS5oaWdobGlnaHQgLnNie2NvbG9yOiNjMzB9LmhpZ2hsaWdodCAuc2N7Y29sb3I6I2MzMH0uaGlnaGxpZ2h0IC5zZHtjb2xvcjojYzMwO2ZvbnQtc3R5bGU6aXRhbGljfS5oaWdobGlnaHQgLnMye2NvbG9yOiNjMzB9LmhpZ2hsaWdodCAuc2V7Y29sb3I6I2MzMH0uaGlnaGxpZ2h0IC5zaHtjb2xvcjojYzMwfS5oaWdobGlnaHQgLnNpe2NvbG9yOiNhMDB9LmhpZ2hsaWdodCAuc3h7Y29sb3I6I2MzMH0uaGlnaGxpZ2h0IC5zcntjb2xvcjojM2FhfS5oaWdobGlnaHQgLnMxe2NvbG9yOiNjMzB9LmhpZ2hsaWdodCAuc3N7Y29sb3I6I2ZjM30uaGlnaGxpZ2h0IC5icHtjb2xvcjojMzY2fS5oaWdobGlnaHQgLnZje2NvbG9yOiMwMzN9LmhpZ2hsaWdodCAudmd7Y29sb3I6IzAzM30uaGlnaGxpZ2h0IC52aXtjb2xvcjojMDMzfS5oaWdobGlnaHQgLmlse2NvbG9yOiNmNjB9QG1lZGlhIHByaW50e2h0bWwsYnV0dG9uLGlucHV0LG9wdGdyb3VwLHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjE1O3RleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHl9aDE6YmVmb3JlLGgyOmJlZm9yZSxoMzpiZWZvcmUsaDQ6YmVmb3JlLGg1OmJlZm9yZSxoNjpiZWZvcmV7ZGlzcGxheTpub25lfSosKjpiZWZvcmUsKjphZnRlciwqOmZpcnN0LWxldHRlcixwOmZpcnN0LWxpbmUsZGl2OmZpcnN0LWxpbmUsYmxvY2txdW90ZTpmaXJzdC1saW5lLGxpOmZpcnN0LWxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50O2NvbG9yOiMwMDAgIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudDt0ZXh0LXNoYWRvdzpub25lICFpbXBvcnRhbnR9YVtocmVmXTphZnRlciwubGlzdC1ncm91cCBidXR0b25baHJlZl06bm90KC5idG4pOmFmdGVye2NvbnRlbnQ6XCIgKFwiIGF0dHIoaHJlZikgXCIpXCJ9YWJiclt0aXRsZV06YWZ0ZXJ7Y29udGVudDpcIiAoXCIgYXR0cih0aXRsZSkgXCIpXCJ9LmJ0bntib3JkZXI6MXB4IHNvbGlkICMwMDB9Lm5vLXByaW50e2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fX1cbiJdfQ== */
--------------------------------------------------------------------------------