diff --git a/build/css/fonts/RobotoSlab-Light.ttf b/build/css/fonts/RobotoSlab-Light.ttf new file mode 100755 index 0000000..ccb99cd Binary files /dev/null and b/build/css/fonts/RobotoSlab-Light.ttf differ diff --git a/build/css/fonts/RobotoSlab-Regular.ttf b/build/css/fonts/RobotoSlab-Regular.ttf new file mode 100755 index 0000000..eb52a79 Binary files /dev/null and b/build/css/fonts/RobotoSlab-Regular.ttf differ diff --git a/build/css/fonts/Ubuntu-B.ttf b/build/css/fonts/Ubuntu-B.ttf new file mode 100644 index 0000000..b173da2 Binary files /dev/null and b/build/css/fonts/Ubuntu-B.ttf differ diff --git a/build/css/fonts/Ubuntu-L.ttf b/build/css/fonts/Ubuntu-L.ttf new file mode 100644 index 0000000..ed0f5bc Binary files /dev/null and b/build/css/fonts/Ubuntu-L.ttf differ diff --git a/build/css/fonts/Ubuntu-LI.ttf b/build/css/fonts/Ubuntu-LI.ttf new file mode 100644 index 0000000..c6cec55 Binary files /dev/null and b/build/css/fonts/Ubuntu-LI.ttf differ diff --git a/build/css/fonts/Ubuntu-M.ttf b/build/css/fonts/Ubuntu-M.ttf new file mode 100644 index 0000000..ca9c03a Binary files /dev/null and b/build/css/fonts/Ubuntu-M.ttf differ diff --git a/build/css/fonts/Ubuntu-R.ttf b/build/css/fonts/Ubuntu-R.ttf new file mode 100644 index 0000000..d748728 Binary files /dev/null and b/build/css/fonts/Ubuntu-R.ttf differ diff --git a/build/css/fonts/icomoon.eot b/build/css/fonts/icomoon.eot new file mode 100755 index 0000000..a94b0fd Binary files /dev/null and b/build/css/fonts/icomoon.eot differ diff --git a/build/css/fonts/icomoon.svg b/build/css/fonts/icomoon.svg new file mode 100755 index 0000000..2a73939 --- /dev/null +++ b/build/css/fonts/icomoon.svg @@ -0,0 +1,15 @@ + + + +Generated by IcoMoon + + + + + + + + + + + \ No newline at end of file diff --git a/build/css/fonts/icomoon.ttf b/build/css/fonts/icomoon.ttf new file mode 100755 index 0000000..e025ff2 Binary files /dev/null and b/build/css/fonts/icomoon.ttf differ diff --git a/build/css/fonts/icomoon.woff b/build/css/fonts/icomoon.woff new file mode 100755 index 0000000..62db938 Binary files /dev/null and b/build/css/fonts/icomoon.woff differ diff --git a/build/css/main.css b/build/css/main.css new file mode 100644 index 0000000..c979c8f --- /dev/null +++ b/build/css/main.css @@ -0,0 +1,986 @@ +@charset "UTF-8"; +/* http://meyerweb.com/eric/tools/css/reset/ +v2.0 | 20110126 +License: none (public domain) +*/ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, .blog-summary .blog-metadata p, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; } + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; } + +body { + width: 100%; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 1; } + +ol, ul { + list-style: none; } + +blockquote, q { + quotes: none; } + +blockquote:before, blockquote:after { + content: ''; + content: none; } + +q:before, q:after { + content: ''; + content: none; } + +li, .blog-summary .blog-metadata p, a { + text-decoration: none; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?xktnuc'); + src: url('fonts/icomoon.eot?xktnuc#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?xktnuc') format('truetype'), url('fonts/icomoon.woff?xktnuc') format('woff'), url('fonts/icomoon.svg?xktnuc#icomoon') format('svg'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'Ubuntu-Light'; + src: url('fonts/Ubuntu-L.ttf'); + font-weight: normal; } + +@font-face { + font-family: 'Ubuntu-Light-Italic'; + src: url('fonts/Ubuntu-LI.ttf'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'Ubuntu-Regular'; + src: url('fonts/Ubuntu-R.ttf'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'Ubuntu-Medium'; + src: url('fonts/Ubuntu-M.ttf'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'Ubuntu-Bold'; + src: url('fonts/Ubuntu-B.ttf'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'RobotoSlab-Light'; + src: url('fonts/RobotoSlab-Light.ttf'); + font-weight: normal; + font-style: normal; } + +@font-face { + font-family: 'RobotoSlab-Regular'; + src: url('fonts/RobotoSlab-Regular.ttf'); + font-weight: normal; + font-style: normal; } + +.icon-pinterest, .icon-google, .icon-twitter, .icon-facebook, .icon-linkedin { + font-family: 'icomoon'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; } + +.icon-pinterest { + font-size: 1.5em; + color: #1e1d24; + width: 100%; } + +.icon-pinterest:before { + content: "\e800"; } + +.icon-google { + font-size: 1.5em; + color: #1e1d24; + width: 100%; } + +.icon-google:before { + content: "\e801"; } + +.icon-twitter { + font-size: 1.5em; + color: #1e1d24; + width: 100%; } + +.icon-twitter:before { + content: "\e802"; } + +.icon-facebook { + font-size: 1.5em; + color: #1e1d24; + width: 100%; } + +.icon-facebook:before { + content: "\e803"; } + +.icon-linkedin { + font-size: 1.5em; + color: #1e1d24; + width: 100%; } + +.icon-linkedin:before { + content: "\e804"; } + +.logo { + font-family: 'Ubuntu-Medium' sans-serif; + font-size: 1.5em; + color: #1e1d24; } + +@media screen and (max-width: 50em) { + .primary-nav-wrap ul { + float: right; + margin: 0; + padding: 0; } + .primary-nav-wrap ul a { + display: block; + line-height: 32px; + padding: 0 15px; } + .primary-nav-wrap ul li, .primary-nav-wrap ul .blog-summary .blog-metadata p, .blog-summary .blog-metadata .primary-nav-wrap ul p { + padding: 0 1em 0 0; + margin: 0 1em 0 0; } + .primary-nav-wrap ul li.current-menu-item, .primary-nav-wrap ul .blog-summary .blog-metadata p.current-menu-item, .blog-summary .blog-metadata .primary-nav-wrap ul p.current-menu-item { + background: #1e1d24; } + .primary-nav-wrap ul li:hover, .primary-nav-wrap ul .blog-summary .blog-metadata p:hover, .blog-summary .blog-metadata .primary-nav-wrap ul p:hover { + background-color: #1e1d24; + position: absolute; } + .primary-nav-wrap ul li:hover > ul, .primary-nav-wrap ul .blog-summary .blog-metadata p:hover > ul, .blog-summary .blog-metadata .primary-nav-wrap ul p:hover > ul { + -webkit-transition: 2s 2s; + float: right; + display: block; + padding: 0 1em 0 0; + margin: 0 1em 0 0; } + .primary-nav-wrap ul ul { + -webkit-transition: 2s 2s; + background-color: #1e1d24; + position: relative; + display: none; + top: 100%; + left: 0; + padding: 0 1em 0 0; + margin: 0 1em 0 0; } + .primary-nav-wrap ul ul li, .primary-nav-wrap ul ul .blog-summary .blog-metadata p, .blog-summary .blog-metadata .primary-nav-wrap ul ul p { + width: 200px; } + .primary-nav-wrap ul ul a { + line-height: 120%; + padding: 10px 15px; } + .primary-nav-wrap ul ul ul { + top: 0; } } + +@media screen and (min-width: 50em) { + .mobile-nav { + display: none; } + .main-nav li ul:hover, .main-nav .blog-summary .blog-metadata p ul:hover, .blog-summary .blog-metadata .main-nav p ul:hover { + display: block; + position: absolute; } + .main-nav li, .main-nav .blog-summary .blog-metadata p, .blog-summary .blog-metadata .main-nav p { + display: inline-block; + padding-right: 1em; } + .main-nav li ul li, .main-nav .blog-summary .blog-metadata p ul li, .blog-summary .blog-metadata .main-nav p ul li, .main-nav li ul .blog-summary .blog-metadata p, .blog-summary .blog-metadata .main-nav li ul p, .main-nav .blog-summary .blog-metadata p ul p, .blog-summary .blog-metadata .main-nav p ul p { + display: none; } } + +.header-container { + background-color: #1e1d24; + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + box-lines: multiple; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + box-orient: horizontal; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + flex-direction: row; + -ms-flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + box-pack: justify; + -webkit-justify-content: space-between; + -moz-justify-content: space-between; + -ms-justify-content: space-between; + -o-justify-content: space-between; + justify-content: space-between; + -ms-flex-pack: justify; + align-content: flex-start; + padding: 4em 3em 4em 2em; } + +.header-container h1 { + color: #fff; } + +.header-container a { + color: #fff; + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 0.875em; } + +.header-container a:hover { + color: #97f1e7; } + +.btn-primary { + font-family: 'Ubuntu-Medium' sans-serif; + font-size: 1em; + letter-spacing: .125em; + display: inline-flex; + justify-content: center; + text-transform: uppercase; + width: 8em; + padding: 1em 0; + border: solid 1px; + background-color: #1e1d24; + color: #fff; + border-color: #fff; + border-radius: .5em; } + +.btn-primary:hover { + background-color: #97f1e7; + color: #fff; + border-color: #fff; } + +@media only screen and (min-width: 50em) { + .btn-primary { + width: 12em; } } + +.btn-primary-alt { + font-family: 'Ubuntu-Medium' sans-serif; + font-size: 1em; + letter-spacing: .125em; + display: inline-flex; + justify-content: center; + text-transform: uppercase; + width: 8em; + padding: 1em 0; + border: solid 1px; + background-color: #fff; + color: #1e1d24; + border-color: #1e1d24; + border-radius: .5em; } + +.btn-primary-alt:hover { + background-color: #1e1d24; + color: #fff; + border-color: #fff; } + +.btn-primary-alt:hover { + border-color: #1e1d24; } + +@media only screen and (min-width: 50em) { + .btn-primary-alt { + width: 12em; } } + +.btn-secondary { + font-family: 'Ubuntu-Medium' sans-serif; + font-size: 1em; + letter-spacing: .125em; + display: inline-flex; + justify-content: center; + text-transform: uppercase; + width: 10em; + padding: 1em 0; + border: solid 1px; + background-color: #97f1e7; + color: #fff; + border-color: #fff; + border-radius: .5em; } + +.btn-secondary:hover { + background-color: #fff; + color: #1e1d24; + border-color: #1e1d24; } + +.btn-secondary:hover { + border-color: #fff; } + +@media only screen and (min-width: 50em) { + .btn-secondary { + width: 12em; } } + +.btn-small { + font-family: 'Ubuntu-Medium' sans-serif; + font-size: 0.875em; + letter-spacing: .125em; + display: inline-flex; + justify-content: center; + text-transform: uppercase; + width: 8em; + padding: 1em 0; + border: solid 1px; + background-color: #fff; + color: #1e1d24; + border-color: #1e1d24; + border-radius: .5em; + padding: .5em; } + +.btn-small:hover { + background-color: #1e1d24; + color: #fff; + border-color: #fff; } + +.btn-small:hover { + border-color: #1e1d24; } + +@media only screen and (min-width: 50em) { + .btn-small { + width: 6em; } } + +.page-banner { + background-color: #97f1e7; + padding: 1.5em; } + +.page-banner h1 { + font-family: 'RobotoSlab-Regular' serif; + font-size: 3em; + margin: 0; } + +.page-banner p { + font-family: 'RobotoSlab-Light' serif; + font-size: 1.5em; + font-color: #b4b3b5; + opacity: .5; + margin: .5em 0 0 0; } + +@media screen and (min-width: 50em) { + .page-banner { + padding: 5em 35% 5em 10%; } } + +.sub-nav { + font-size: 0.875em; + font-family: 'Ubuntu-Light' sans-serif; + text-align: center; + padding: 0.5em; } + +@media screen and (min-width: 50em) { + .sub-nav { + float: left; + padding-left: 5em; } } + +.sub-nav li, .sub-nav .blog-summary .blog-metadata p, .blog-summary .blog-metadata .sub-nav p { + display: inline; } + +.sub-nav li:after, .sub-nav .blog-summary .blog-metadata p:after, .blog-summary .blog-metadata .sub-nav p:after { + content: '\00B7'; + padding-left: 5px; + font-weight: 700; } + +.sub-nav li:last-child, .sub-nav .blog-summary .blog-metadata p:last-child, .blog-summary .blog-metadata .sub-nav p:last-child { + font-family: 'Ubuntu-Medium' sans-serif; + text-transform: uppercase; } + +.sub-nav li:last-child:after, .sub-nav .blog-summary .blog-metadata p:last-child:after, .blog-summary .blog-metadata .sub-nav p:last-child:after { + content: ''; } + +.sub-nav a { + text-decoration: none; + color: #1e1d24; } + +.sub-nav a:hover { + color: #97f1e7; } + +.sub-nav-wrapper { + padding: 0.5em; + border-bottom: 1px solid; + border-color: rgba(0, 0, 0, 0.1); } + +@media screen and (min-width: 50em) { + .sub-nav-wrapper { + padding-left: 5em; + height: 2.5em; } } + +.share-social-icons { + font-size: 0.875em; + font-family: 'Ubuntu-Light' sans-serif; + text-align: center; + padding: 0.5em; } + +@media screen and (min-width: 50em) { + .share-social-icons { + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + box-orient: horizontal; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + flex-direction: row; + -ms-flex-direction: row; + align-content: flex-end; + float: right; + margin-right: 10%; } } + +.share-social-icons p { + display: inline; + color: #1e1d24; + opacity: .4; } + +.share-social-icons ul { + display: inline; + padding-left: 0; } + +.share-social-icons li, .share-social-icons .blog-summary .blog-metadata p, .blog-summary .blog-metadata .share-social-icons p { + display: inline; + padding-left: 0.5em; } + +.share-social-icons a { + opacity: .4; } + +.share-social-icons a:hover { + color: #97f1e7; + opacity: 1; } + +.blog-container { + padding: 5% 10%; } + +@media only screen and (min-width: 50em) { + .blog-container { + padding: 0 20%; } } + +.blog-container h1 { + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 2.125em; + text-align: center; } + +.blog-container ​ .btn-primary-alt:last-child { + display: flex; + margin: 2em auto; } + +.blog-container .search-wrapper { + padding-top: 1em; + margin: 10 auto; + display: block; } + +.blog-container .search-wrapper p, .blog-container .search-wrapper input { + display: inline; } + +.blog-container .search-wrapper p, .blog-container .search-wrapper input { + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 0.875em; + margin: 0.5em; + padding: 0.3em; } + +.blog-summary { + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + box-lines: multiple; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + box-orient: vertical; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: column; + -moz-flex-direction: column; + flex-direction: column; + -ms-flex-direction: column; + -webkit-box-pack: center; + -moz-box-pack: center; + box-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + -ms-justify-content: center; + -o-justify-content: center; + justify-content: center; + -ms-flex-pack: center; + margin: 1em auto; + padding-bottom: 3em; + border-bottom: 1px solid; + border-color: rgba(0, 0, 0, 0.1); } + +@media only screen and (min-width: 50em) { + .blog-summary { + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + box-lines: multiple; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + box-orient: horizontal; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + flex-direction: row; + -ms-flex-direction: row; + -webkit-box-pack: justify; + -moz-box-pack: justify; + box-pack: justify; + -webkit-justify-content: space-between; + -moz-justify-content: space-between; + -ms-justify-content: space-between; + -o-justify-content: space-between; + justify-content: space-between; + -ms-flex-pack: justify; } } + +.blog-summary h1 { + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 1.75em; + text-align: left; + flex-basis: 100%; + order: 1; } + +@media only screen and (min-width: 50em) { + .blog-summary h1 { + flex-basis: 60%; + margin: 1em 0; + order: 1; } } + +.blog-summary p { + font-family: 'Ubuntu-Light' sans-serif; + font-size: 1.25em; + color: #b4b3b5; + padding-bottom: 0.5em; + opacity: .7; + flex-basis: 100%; + order: 3; } + +@media only screen and (min-width: 50em) { + .blog-summary p { + order: 3; } } + +.blog-summary .link-original-view { + font-family: 'Ubuntu-Light' sans-serif; + color: #1e1d24; } + +.blog-summary .link-original-view:hover { + color: #97f1e7; } + +.blog-summary img { + border-radius: 50%; + height: 5em; + width: 5em; + padding: 0.5em; } + +.blog-summary .blog-metadata { + display: inline-block; + flex-basis: 100%; + order: 2; + margin-bottom: 1em; } + +@media only screen and (min-width: 50em) { + .blog-summary .blog-metadata { + flex-basis: 50%; + order: 4; } } + +.blog-summary .blog-metadata li, .blog-summary .blog-metadata p { + font-family: 'Ubuntu-Light-Italic' sans-serif; + font-size: 1em; + color: #b4b3b5; + display: inline-flex; + padding: 1em 1em 0 0; } + +.blog-summary .blog-metadata li:last-child, .blog-summary .blog-metadata p:last-child { + display: none; } + +@media only screen and (min-width: 50em) { + .blog-summary .blog-metadata li:last-child, .blog-summary .blog-metadata p:last-child { + display: inline-flex; } } + +.blog-summary .blog-metadata p { + font-family: 'Ubuntu-Light' sans-serif; } + +.blog-summary .btn-primary { + order: 4; + margin-top: 1em; } + +@media only screen and (min-width: 50em) { + .blog-summary .btn-primary { + order: 5; } } + +.blog-summary .btn-small { + order: 5; + margin: 1em 0; } + +.blog-summary .btn-small:hover { + cursor: pointer; } + +@media only screen and (min-width: 50em) { + .blog-summary .btn-small { + order: 2; } } + +.contact-social-links-wrapper { + padding-bottom: 5em; + margin: 0 auto; + width: 20em; } + +@media screen and (min-width: 50em) { + .contact-social-links-wrapper { + float: right; + padding-right: 5em; + padding-bottom: 6em; + width: 30em; + display: inline; + margin-top: 0; } } + +.contact-social-links-wrapper ul { + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + box-lines: multiple; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: horizontal; + -moz-box-orient: horizontal; + box-orient: horizontal; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + flex-direction: row; + -ms-flex-direction: row; + -webkit-box-pack: center; + -moz-box-pack: center; + box-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + -ms-justify-content: center; + -o-justify-content: center; + justify-content: center; + -ms-flex-pack: center; + padding-left: 0; } + +.contact-social-links-wrapper li, .contact-social-links-wrapper .blog-summary .blog-metadata p, .blog-summary .blog-metadata .contact-social-links-wrapper p { + -webkit-flex-grow: 1; + -webkit-flex-shrink: 0; + flex-grow: 1; + flex-shrink: 0; + list-style-type: none; + display: inline; + padding: 0.5em; } + +.contact-social-links-wrapper a { + position: relative; } + +.contact-social-links-wrapper a:before { + font-size: 1.5em; + background-color: #fff; + border-radius: 50%; + border-color: transparent; } + +.contact-social-links-wrapper a:hover { + color: #97f1e7; } + +.contact-social-links-wrapper span { + text-transform: uppercase; + font-size: 0.5em; + text-align: center; + padding-top: 3.5em; } + +.contact-social-links-wrapper span { + position: absolute; + border: 0.1em solid #b4b3b5; + border-radius: 50%; + width: 8em; + height: 4.5em; + top: 0.1em; + left: 0; + content: ""; + z-index: -1; } + +.contact-info-wrapper { + text-align: center; + padding: 1em; + font-family: 'Ubuntu-Regular' sans-serif; + line-height: 1.5em; } + +@media screen and (min-width: 50em) { + .contact-info-wrapper { + padding: 2em; + width: 50em; + display: inline; } } + +.address-wrapper { + padding-bottom: 1em; } + +@media screen and (min-width: 50em) { + .address-wrapper { + float: left; + padding-left: 5em; + text-align: left; + margin-top: 3em; } } + +.address-wrapper address { + font-style: normal; } + +@media screen and (min-width: 50em) { + .phone-email-wrapper { + float: left; + padding-left: 5em; + text-align: left; + margin-top: 3em; } } + +.phone-email-wrapper a { + text-decoration: none; + color: #1e1d24; } + +.phone-email-wrapper a:hover { + color: #97f1e7; } + +.learn-more-wrapper { + display: -webkit-box; + display: -moz-box; + display: box; + display: -webkit-flex; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -moz-box-align: center; + box-align: center; + -webkit-align-items: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + box-lines: multiple; + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + box-orient: vertical; + -webkit-box-direction: normal; + -moz-box-direction: normal; + box-direction: normal; + -webkit-flex-direction: column; + -moz-flex-direction: column; + flex-direction: column; + -ms-flex-direction: column; + -webkit-box-pack: center; + -moz-box-pack: center; + box-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + -ms-justify-content: center; + -o-justify-content: center; + justify-content: center; + -ms-flex-pack: center; + text-align: center; + padding: 1em; + background: #97f1e7; + color: #fff; + margin: 0 0 1.5em 0; } + +@media only screen and (min-width: 50em) { + .learn-more-wrapper { + padding: 2em 0 4em 0; } } + +.learn-more-wrapper h1 { + font-family: 'Ubuntu-Bold' sans-serif; + font-size: 2.125em; + padding-bottom: 1em; + padding-top: 1em; } + +@media only screen and (min-width: 50em) { + .learn-more-wrapper h1 { + padding-bottom: .5em; } } + +.learn-more-wrapper p { + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 1em; + padding-bottom: 1em; + line-height: 1.5em; } + +@media screen and (min-width: 50em) { + .learn-more-wrapper p { + width: 50%; } } + +.learn-more-wrapper .learn-button-wrapper .btn-secondary { + display: inline-flex; + margin: 1em auto; } + +@media only screen and (min-width: 50em) { + .learn-more-wrapper .learn-button-wrapper .btn-secondary { + margin: 1em .5em; } } + +footer { + text-align: center; + border-top: 0.1em solid black; + padding: 1.5em; + clear: both; + font-family: 'Ubuntu-Light' sans-serif; + font-size: 0.875em; + letter-spacing: 0.1em; } + +@media screen and (min-width: 50em) { + footer { + clear: both; } } + +footer li, footer .blog-summary .blog-metadata p, .blog-summary .blog-metadata footer p { + list-style-type: none; + padding: 0.1em; } + +@media screen and (min-width: 50em) { + footer li, footer .blog-summary .blog-metadata p, .blog-summary .blog-metadata footer p { + display: inline; + padding: 0.5em; } } + +footer a { + text-decoration: none; + color: #1e1d24; } + +footer a:hover { + color: #97f1e7; } + +form { + text-align: center; + padding: 1em; } + +form h1 { + font-family: 'Ubuntu-Regular' sans-serif; + font-size: 1.25em; } + +form textarea { + margin: 1em auto; + padding: 1em; + width: 20em; + height: 10em; + display: block; + font-family: 'Ubuntu-Light' sans-serif; + font-size: 1em; } + +@media screen and (min-width: 50em) { + form textarea { + width: 40em; + height: 15em; + border: .1em solid #ddd; + border-radius: 0.25em; } + form textarea:focus { + outline-color: #97f1e7; + outline-style: solid; + outline-width: .25em; } } + +form input { + padding: 1em; + width: 20em; + display: block; + margin: 1em auto; + font-family: 'Ubuntu-Light' sans-serif; + font-size: 1em; } + +@media screen and (min-width: 50em) { + form input { + border: .1em solid #ddd; + border-radius: 0.25em; } + form input:focus { + outline-color: #97f1e7; + outline-style: solid; + outline-width: .25em; } } + + +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIiwiYmFzZS9fcmVzZXQuc2NzcyIsImJhc2UvX3R5cG9ncmFwaHkuc2NzcyIsInR5cG9ncmFwaHkvX2ljb25zLnNjc3MiLCJjb21wb25lbnRzL2hlYWRlci9faGVhZGVyLWxvZ28uc2NzcyIsImNvbXBvbmVudHMvaGVhZGVyL19oZWFkZXItbmF2LnNjc3MiLCJjb21wb25lbnRzL19mb290ZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mbGV4LWJveC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsImNvbXBvbmVudHMvaGVhZGVyL19oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvX2Zvcm0uc2NzcyIsImNvbXBvbmVudHMvYnV0dG9ucy9fbWl4aW5zLnNjc3MiLCJjb21wb25lbnRzL19sZWFybi1tb3JlLnNjc3MiLCJjb21wb25lbnRzL2J1dHRvbnMvX2J1dHRvbnMuc2NzcyIsImNvbXBvbmVudHMvX3BhZ2VCYW5uZXIuc2NzcyIsImNvbXBvbmVudHMvY29udGFjdC9fY29udGFjdC1zb2NpYWwtbGlua3Muc2NzcyIsImNvbXBvbmVudHMvX3N1Yi1uYXYuc2NzcyIsImNvbXBvbmVudHMvX3NoYXJlLXNvY2lhbC1pY29ucy5zY3NzIiwiY29tcG9uZW50cy9fYmxvZ0NvbnRhaW5lci5zY3NzIiwiY29tcG9uZW50cy9fYmxvZ1N1bW1hcnkuc2NzcyIsInV0aWxzL19nbG9iYWxNaXhpbnMuc2NzcyIsImNvbXBvbmVudHMvY29udGFjdC9fY29udGFjdC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFLQSxBQ0NTO0VBQ1IsQUFBUztFQUNULEFBQVE7RUFDUixBQUFXO0VBQ0w7RUFDVTtFREFmLEFBQWdCOzs7QUFHbEIsQUNFVTtFRERSLEFBQVM7O0FBRVg7RUNHVTtFQUNnQjtFQUNDO0VBQ2I7RUREWixBQUFhOztBQUVmLEFDRWE7RUREWCxBQUFZOztBQUVkLEFDRVM7RUREUCxBQUFROztBQUVWLEFDR1c7RUFDVCxBQUFTO0VERlQsQUFBUzs7QUFFWCxBQUFDLEFDS1U7RUFDQTtFREpULEFBQVM7O0FBRVgsQUNNbUI7RURMakIsQUFBaUI7O0FBRW5CO0VDUUMsQUFBZ0I7RUROZixBQUFnQjs7O0VFekNoQixBQUFJO0VBQ0osQUFBb0U7RUFJcEUsQUFBYTtFQUNiLEFBQVk7RUYwQ1osQUFBWTs7O0VFcENaLEFBQUk7RUFDSixBQUFhO0VGd0NiLEFBQWE7OztFRWxDYixBQUFJO0VBQ0osQUFBYTtFQUNiLEFBQVk7RUZzQ1osQUFBWTs7O0VFL0JaLEFBQUk7RUFDUztFQUNEO0VGbUNaLEFBQVk7OztFRTdCUjtFQUNTO0VBQ0Q7RUZpQ1osQUFBWTs7O0VFM0JaLEFBQUk7RUFDSixBQUFhO0VBQ2IsQUFBWTtFRitCWixBQUFZOzs7RUV6QlosQUFBSTtFQUNKLEFBQWE7RUFDYixBQUFZO0VGNkJaLEFBQVk7OztFRXZCUjtFQUNTO0VBQ0Q7RUYyQlosQUFBWTs7QUFFZCxBRzVGZTtFQUNiLEFBQU87RUFDUCxBQUFZO0VBQ1osQUFBYTtFQUNiLEFBQWM7RUFDZCxBQUFnQjtFQUNoQixBQUFhO0VINkZiLEFBQWE7O0FBRWY7RUdqRlc7RUFDUCxBQUFPO0VBQ1gsQUFBZTs7QUhtRmYsQUdsRmU7RUhtRlgsQUFBUzs7QUFFYjtFR3hGVztFQUNBO0VBQ0M7O0FIMEZaLEFHekZlO0VIMEZYLEFBQVM7O0FBRWI7RUcvRlc7RUFDQTtFQUNFOztBSGlHYixBR2hHZTtFSGlHWCxBQUFTOztBQUViO0VHdEdXO0VBQ0E7RUFDRzs7QUh3R2QsQUd2R2U7RUh3R1gsQUFBUzs7QUFFYjtFRzdHSSxBQUFPO0VBQ1AsQUFBTztFQUNYLEFBQWM7O0FIK0dkLEFHOUdlO0VIK0dYLEFBQVM7O0FBRWI7RUl2SUM7RUFDQTtFSnlJQyxBQUFPOztBQUVUO0VBQ0EsQUt6SVU7SUFDQztJQUNDO0lBQ00sQUFBRztFTDBJckIsQUt6SWE7SUFDVCxBQUFhO0lBQ2IsQUFBUztJQUVtSDtFTHlJaEksQUt4SWE7SUFDVCxBQUFRO0lBQ3FKLEFBQUk7RUx5SXJLLEFLeElLO0lBRXdJO0VMd0k3SSxBS3ZJSztJQUNBLEFBQVU7SUFDdUMsQUFBMEc7RUx3SWhLLEFLdkkwQjtJQUNwQixBQUFPO0lBQ0U7SUFDQTtJQUNEO0lBSU87RUxxSXJCLEFLcEl3QjtJQ1RiLEFEVVA7SUFDQSxBQUFVO0lBQ1YsQUFBUztJQUNULEFBQUs7SUFDTCxBQUFNO0lBQ04sQUFBUztJQUNULEFBQVE7SUFDZ0IsQUFBNkc7RUxxSXpJLEFLcElZO0lBRVk7RUxvSXhCLEFLbklrQjtJQUNiLEFBQVM7SUFFVTtFTG1JeEIsQUtsSVU7SUxtSUYsQUFBSzs7QUFFYjtFQUNBO0lLekhxSDtFTDJIckgsQUsxSGE7SUFDQztJQUdpRjtFTHlIL0YsQUt4SFk7SUFDVCxBQUFlO0lBRXlMLEFBQW9HO0VMd0gvUyxBS3ZIYztJTHdIUixBQUFTOztBQUVmO0VPN0hhO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNULEFBQVM7RUMxQ0wsQUNqQ21CO0VEcUNuQixBQ3JDbUI7RURpRG5CLEFDakRtQjtFRGlDbkIsQUNqQ21CO0VEcUNuQixBQ3JDbUI7RUR5Q25CLEFDekNtQjtFRDZDbkIsQUM3Q21CO0VBQUE7RUFBQTtFRm9KWDtFQUFBO0VBQUE7RUVwSjBCO0VBQUE7RUR5Q2xDLEFDekNrQztFRGlEbEMsQUNqRGtDO0VEaUNsQyxBRG9GUztFQ2hGVCxBRGdGUztFQ3BFVCxBRG9FUztFQ3BGVCxBRGlGTTtFQzdFTixBRDZFTTtFQ2pFTixBRGlFTTtFQ2pGTixBQ2pDb0Q7RURxQ3BELEFDckNvRDtFRGlEcEQsQUNqRG9EO0VGd0kxRCxBRXhJMEQ7RURpQ3BELEFEK0tRO0VDM0tSLEFEMktRO0VDL0pSLEFEK0pRO0VDL0tSLEFDakNtRTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VGNE56RTtFRTNOYztFQUNOO0VBRVYsQUFBa0I7O0FUME9sQixBU3pPRTtFQUdnQjs7QVR3T2xCLEFTdk9JO0VDSGEsQURJYjtFSE5TLEFHT1Q7RUFDZTs7QVR3T25CLEFTdk9NO0VUd09BLEFBQU87O0FBRWI7RVd2UEU7RUFDZ0I7RUFDUDtFQUNRO0VBQ0Q7RUFDaEI7RUFDUztFQUNEO0VBQ1I7RUFDQTtFQUNBO0VBQ2U7RUFDTDs7QVh5UFosQVd4UEk7RUNWSyxBRFdMO0VDWEssQURZTDtFRWZGOztBYnlRQTtFQUNGO0lBQ00sQUFBTzs7QUFFYjtFVzdRRTtFQUNBLEFBQWdCO0VBQ2hCLEFBQVM7RUFDVCxBQUFpQjtFQUNqQixBQUFnQjtFRUVrRSxBRkRsRjtFQUNBLEFBQVM7RUFDVCxBQUFRO0VDSkQsQURLUDtFQUNBO0VBQ0E7RUFDZTtFQUNEOztBWCtRaEIsQVc5UUk7RUFDQTtFQUNBO0VFUlk7O0Fid1JoQixBYXZSSTtFQUVGOztBYnVSQTtFQUNGO0lBQ00sQUFBTzs7QUFFYjtFVWxRZSxBQ25DYjtFQUNBLEFBQWdCO0VBQ2hCLEFBQVM7RUFDUTtFQUNEO0VBQ2hCO0VBQ1M7RUFDRDtFQUNSO0VBQ0E7RUNOTyxBRE9QO0VBQ0EsQUFBZTtFQUNqQixBQUFjOztBWHVTZCxBV3RTSTtFTFNPLEFLUlA7RUxRTyxBS1BQO0VFRVU7O0Fic1NkLEFhclNJO0VBRUY7O0FicVNBO0VBQ0Y7SUFDTSxBQUFPOztBQUViO0VNelRhLEFLSlg7RUFDQSxBQUFnQjtFQUNoQixBQUFTO0VBQ1QsQUFBaUI7RUFDakIsQUFBZ0I7RUVzQmtFLEFGckJsRjtFQUNBLEFBQVM7RUFDVCxBQUFRO0VDSkQsQURLUDtFTGNTLEFLYlQ7RUxhUyxBS1pUO0VBQ0EsQUFBZTtFRWdCTjtFRmZEOztBWGdVVixBVy9USTtFQUNBO0VBQ0E7RUVhTTs7QWJvVFYsQWFuVEk7RUFFRjs7QWJtVEE7RUFDRjtJQUNNLEFBQU87O0FBRWI7RWN0VVc7RUFoQkU7O0FkeVZiLEFjMVU0QjtFQWJiO0VBQ1gsQUFBUTtFQUVDOztBZHdWYixBYzlVaUU7RUFSN0QsQUFBWTtFQUNaLEFDdUNrQjtFRHRDbEIsQUFBUztFQUNULEFBQVE7RUFPVjs7QWRrVkE7RUFDRjtJQUNNLEFBQVM7O0FBRWY7RWdCdFdFO0VBQ1k7RUFDSDtFQUNUOztBaEJ3V0E7RUFDRjtJZ0J2V0ksQUFBYztJQUUwRTs7QWhCd1c1RixBZ0J2V2E7RUFFNEY7O0FoQnVXekcsQWdCdFdZO0VBQ1IsQUFBYTtFQUNBO0VBRWtHOztBaEJzV25ILEFnQnJXaUI7RUFDYixBQUFnQjtFQUNvRSxBQUFrRDs7QWhCc1cxSSxBZ0JyV2U7RUFHTjs7QWhCb1dULEFnQm5XcUI7RUFDakI7RUFDSyxBQUFDOztBaEJvV1YsQWdCbldNO0VoQm9XQSxBQUFPOztBQUViO0VnQi9WRSxBQUFlO0VBQ2YsQUFBYztFQUNkOztBaEJpV0E7RUFDRjtJZ0JoV0ksQUFBUTtJaEJrV04sQUFBUTs7QUFFZDtFVXhXaUIsQU9qQ2Y7RUFDQSxBQUFZO0VBQ1osQUFBUztFQUVUOztBakIwWUE7RUFDRjtJTzVVSSxBQUFTO0lBQ1QsQUFBUztJQUdULEFBQVM7SUFDVCxBQUFTO0lBQ1QsQUFBUztJQUNULEFBQVM7SUMxQ0wsQVMzQnNCO0lUK0J0QixBUy9Cc0I7SVQyQ3RCLEFTM0NzQjtJQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtJVitHYjtJQ2hGVCxBRGdGUztJQ3BFVCxBRG9FUztJQ3BGVCxBRGlGTTtJQzdFTixBRDZFTTtJQ2pFTixBRGlFTTtJQ2pGTixBUzNCMEM7SVQrQjFDLEFTL0IwQztJVDJDMUMsQVMzQzBDO0lBQUE7SUFDL0I7SUFDUjtJQUNPO0lBR0U7O0FqQmthcEIsQWlCamFhO0VBQ1Q7RUFDUztFQUVPOztBakJpYXBCLEFpQmhhYTtFQUNLO0VBRTJHOztBakJnYTdILEFpQi9aYTtFQUNULEFBQWM7RUFFRTs7QWpCK1pwQixBaUI5WmE7RUFDYixBQUFxQjs7QWpCK1pyQixBaUI5Wk07RUFDQSxBQUFTO0VqQitaVCxBQUFTOztBQUVmO0VrQjliRTs7QWxCZ2NBO0VBQ0Y7SWtCOWJnQjs7QWxCZ2NoQixBVTdiaUI7RUVLRjtFTUxYLEFBQVk7RUFFb0I7O0FsQiticEMsQWtCN2JhO0VBQ1QsQUFBUTtFQUVJOztBbEI2YmhCLEFrQjViaUI7RUFDYixBQUFRO0VBQ1IsQUFBUztFQUNzQyxBQUFnQjs7QWxCNmJuRSxBa0I1YmU7RUFFb0Q7O0FsQjRibkUsQVUxY2lCO0VKRko7RVltQkM7RUFDQztFbEI0YlQsQUFBUzs7QUFFZjtFT2xaSSxBQUFTO0VBQ1QsQUFBUztFQUdBO0VBQ0E7RUFDQTtFQUNBO0VZNUVlO0VBQUE7RUFBQTtFWGtDcEIsQVdsQ29CO0VYc0NwQixBV3RDb0I7RVgwQ3BCLEFXMUNvQjtFWDhDcEIsQVc5Q29CO0VYa0RwQixBV2xEb0I7RVpvUDFCLEFZcFAwQjtFWGtDcEIsQURtSFE7RUMvR1IsQUQrR1E7RUNuR1IsQURtR1E7RUNuSFIsQVdsQ21DO0VYc0NuQyxBV3RDbUM7RVgwQ25DLEFXMUNtQztFWGtEbkMsQVdsRG1DO0VYa0NuQyxBRHlGUztFQ3JGVCxBRHFGUztFQ3pFVCxBRHlFUztFQVJIO0VBQUE7RUFBQTtFWW5IK0M7RUFBQTtFQUFBO0VBQUE7RVhrQ3JELEFXbEN1RTtFWHNDdkUsQVd0Q3VFO0VYa0R2RSxBV2xEdUU7RVhrQ3ZFLEFXbEN1RTtFWHNDdkUsQVd0Q3VFO0VYMEN2RSxBVzFDdUU7RVg4Q3ZFLEFXOUN1RTtFWGtEdkUsQVdsRHVFO0VBQUE7RUFDckU7RUFDUTtFQUNEO0VBQ0Q7RUFDZDs7QW5CaWdCQTtFQUNGO0lPbGNhO0lBQ0E7SUFHQTtJQUNBO0lBQ0E7SUFDQTtJWXRFbUI7SUFBQTtJWDRDeEIsQVc1Q3dCO0lYNEJ4QixBVzVCd0I7SVhnQ3hCLEFXaEN3QjtJWG9DeEIsQVdwQ3dCO0lYd0N4QixBV3hDd0I7SVg0Q3hCLEFXNUN3QjtJWjhPOUIsQVk5TzhCO0lYNEJ4QixBRG1IUTtJQUFBO0lBQUE7SVkvSStCO0lBQUE7SUFBQTtJQUFBO0laZ0g5QjtJQ2hGVCxBRGdGUztJQ3BFVCxBRG9FUztJQ3BGVCxBRGlGTTtJQzdFTixBRDZFTTtJQ2pFTixBRGlFTTtJQ2pGTixBVzVCeUQ7SVhnQ3pELEFXaEN5RDtJWDRDekQsQVc1Q3lEO0labUkvRCxBWW5JK0Q7SVg0QnpELEFEK0tRO0lDM0tSLEFEMktRO0lDL0pSLEFEK0pRO0lDL0tSLEFXNUJ3RTtJWGdDeEUsQVdoQ3dFO0lYb0N4RSxBV3BDd0U7SVh3Q3hFLEFXeEN3RTtJQUFBO0ladU45RTtJWXBOWTs7QW5CeWlCZCxBVTNpQmlCO0VTSUY7RUFDQztFQUNBO0VBQ1osQUFBTztFQUNQOztBbkJ5aUJBO0VBQ0osQW1CemlCa0I7SUFDSjtJQUNEO0lBSUM7O0FuQnVpQmQsQVUxaEJpQjtFU1hiLEFUaEJXO0VTaUJYLEFKdUJrQjtFSXRCbEIsQUFBZ0I7RUFDaEIsQUFBUztFQUNULEFBQVk7RUFDWixBQUFPO0VBQ1A7O0FuQnVpQkE7RUFDSixBbUJ2aUJhO0lBSUM7O0FuQnFpQmQsQVVyaUJpQjtFSlpOO0VhZUcsQUFBbUI7O0FuQnFpQmpDLEFVbGlCdUI7RVNDVDs7QW5CbWlCZCxBbUJsaUJtQjtFQUNQO0VBQ0Q7RUFDRTtFQUlDOztBbkJnaUJkLEFtQi9oQmE7RUFDRztFQUNMO0VBQ1AsQUFBZTtFQUNmOztBbkJnaUJBO0VBQ0osQW1CaGlCa0I7SUFDTDtJQUdpRDs7QW5CK2hCOUQsQW1COWhCbUI7RUFDYixBVDFCUztFUzJCVCxBSmZnQjtFSWdCaEIsQUFBUztFQUNULEFBQVM7RUFDNkIsQUFBOEI7O0FuQitoQjFFLEFtQjloQmlCO0VBRVg7O0FuQjhoQkE7RUFDTixBbUI3aEJtQjtJQUlVOztBbkIyaEI3QixBVW5rQmlCO0VTOENIOztBbkJ1aEJkLEFtQnRoQlc7RUFDSztFQUNaOztBbkJ1aEJBO0VBQ0osQW1CdmhCYTtJQUlDOztBbkJxaEJkLEFtQnBoQlc7RUFDQztFQUNFLEFBQVU7O0FuQnFoQnhCLEFtQnBoQmM7RUFFVjs7QW5Cb2hCQTtFQUNKLEFtQnBoQmE7SW5CcWhCTCxBQUFPOztBQUVmO0VldG5CVTtFQUNEO0VBQ1A7O0Fmd25CQTtFQUNGO0lldm5CbUI7SUFDQztJQUNUO0lBQ0U7SUFDRztJQUVjOztBZnduQjlCLEFPL2pCYTtFQUNBO0VBQ0E7RUFHVCxBQUFTO0VBQ1QsQUFBUztFQUNULEFBQVM7RUFDVCxBQUFTO0VDMUNMLEFPdEJzQjtFUDBCdEIsQU8xQnNCO0VQc0N0QixBT3RDc0I7RVBzQnRCLEFPdEJzQjtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RVJ5SWQ7RUFBQTtFQ25HUixBRG1HUTtFQ25IUixBT3RCcUM7RVAwQnJDLEFPMUJxQztFUDhCckMsQU85QnFDO0VQc0NyQyxBT3RDcUM7RVBzQnJDLEFEb0ZTO0VDaEZULEFEZ0ZTO0VDcEVULEFEb0VTO0VDcEZULEFEaUZNO0VDN0VOLEFENkVNO0VDakVOLEFEaUVNO0VDakZOLEFPdEJ1RDtFUDBCdkQsQU8xQnVEO0VQc0N2RCxBT3RDdUQ7RVI2SDdELEFRN0g2RDtFUHNCdkQsQU90QnNFO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RVJpTjVFLEFRak40RTtFQUMxRSxBQUFjO0VBSXlJOztBZjhwQjNKLEFvQnRxQnFCO0VBQ0U7RUFDVjtFQUNFO0VMT007RUFDUjtFQUNBO0VBRWlCOztBZmdxQjlCLEFlL3BCYztFQUVnQixBQUFDOztBZitwQi9CLEFlOXBCaUI7RUh2QlIsQUd3Qkg7RUFDQSxBQUFlO0VBQ2YsQUFBYztFQUVXOztBZjhwQi9CLEFlN3BCTTtFQUl3Qjs7QWYycEI5QixBZXpwQm9CO0VBQ2hCLEFBQVc7RUFDWCxBQUFZO0VBQ1osQUFBYTtFZjBwQmIsQUFBYTs7QUFFakIsQWV2cEJZO0VBQ0Y7RUFDTztFQUNSO0VBQ0M7RUFDSDtFQUNDO0VBQ0U7RUFDUixBQUFTO0Vmd3BCVCxBQUFTOztBQUVYO0VxQmh0Qlc7RUFDVDtFQUNhO0VBQ2I7O0FyQmt0QkE7RUFDRjtJcUJqdEJXO0lBQ0U7SXJCbXRCUCxBQUFTOztBQUVmO0VxQmh0QkU7O0FyQmt0QkE7RUFDRjtJcUJqdEJJLEFBQWM7SUFDZCxBQUFZO0lBQ1osQUFBWTtJQUVDOztBckJrdEJqQixBcUJqdEJnQjtFckJrdEJaLEFBQVk7O0FBRWhCO0VBQ0E7SXFCL3NCa0I7SUFDRjtJQUNBO0lBRUs7O0FyQmd0QnJCLEFxQi9zQnFCO0VmUFYsQWVRUDtFQUNKLEFBQXNCOztBckJndEJ0QixBcUIvc0JNO0VyQmd0QkYsQUFBTzs7QUFFWDtFTzlxQkksQUFBUztFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUs1RWU7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VMcUpaO0VDL0dSLEFEK0dRO0VDbkdSLEFEbUdRO0VDbkhSLEFJbENtQztFSnNDbkMsQUl0Q21DO0VKMENuQyxBSTFDbUM7RUprRG5DLEFJbERtQztFSmtDbkMsQUR5RlM7RUNyRlQsQURxRlM7RUFBQTtFQVJIO0VBQUE7RUFBQTtFS25IK0M7RUFBQTtFQUFBO0VMeUkzRCxBS3pJMkQ7RUprQ3JELEFJbEN1RTtFSnNDdkUsQUl0Q3VFO0VKa0R2RSxBSWxEdUU7RUprQ3ZFLEFJbEN1RTtFSnNDdkUsQUl0Q3VFO0VKMEN2RSxBSTFDdUU7RUo4Q3ZFLEFJOUN1RTtFSmtEdkUsQUlsRHVFO0VMNk43RSxBSzdONkU7RUFDN0UsQUFBWTtFQUNaLEFBQVM7RUZ1Q1ksQUV0Q3JCO0VBQ0EsQUFBTztFQUNQLEFBQVE7RUFDUjs7QVo2eEJBO0VBQ0Y7SVkxeEJvQjs7QVo0eEJwQixBWTN4QmlCO0VBQ0Y7RUFDSztFQUNIO0VBQ2I7O0FaNHhCQTtFQUNKLEFZNXhCc0I7SUFHRjs7QVoyeEJwQixBWTF4Qkk7RUFDQTtFQUNnQjtFQUNIO0VBQ2I7O0FaMnhCQTtFQUNKLEFZM3hCYTtJQU82Qjs7QVpzeEIxQyxBWXJ4QmU7RUFDVCxBQUFRO0VBQ1I7O0Fac3hCRjtFQUNKLEFZdHhCZ0I7SVp1eEJSLEFBQVE7O0FBRWhCO0VNNXpCYztFQUNIO0VBQ0Y7RUlnQ1E7RUo5Qko7RUFDSztFQUNoQjs7QU44ekJBO0VBQ0Y7SU16ekJzRjs7QU4yekJ0RixBTTF6QnFCO0VBQ1I7RUFDVDs7QU4yekJBO0VBQ0osQUFBTyxBTTN6QlE7SUFDQTtJQUdSOztBTjB6QlAsQU16ekJxQjtFQUNWO0VBQ0osQUFBQzs7QU4wekJSLEFVenlCdUI7RVYweUJqQixBQUFPOztBQUViO0VVbjFCVztFQUlOOztBVmsxQkwsQVVqMUJpQjtFQUNGO0VBRVY7O0FWaTFCTCxBVWgxQlk7RUFDQztFQUNULEFBQU87RUFDUCxBQUFRO0VBQ1IsQUFBUztFQUNULEFBbUJhO0VBbEJiLEFBbUJXO0VBbEJYOztBVmkxQkE7RUFDSixBQUFLO0lVaDFCQyxBQUFRO0lBQ1IsQUFBUTtJQUNSLEFBQWU7SUFDckIsQUFBYTtFVmsxQmIsQUFBSyxBVWgwQmtCO0lBaEJBO0lBQ0E7SUFJbEI7O0FWKzBCTCxBVTkwQmE7RUFDVCxBQUFPO0VBQ1AsQUFBUztFQUNULEFBQVE7RUFDUixBQUFhO0VBQ2IsQUFBVztFQUNYOztBViswQkE7RUFDSixBQUFLO0lVOTBCZ0I7SUFDaEIsQUFBSztFVmcxQlYsQUFBSyxBVS8wQkc7SUFDQSxBQUFlO0lBQ2YsQUFBZTtJVmcxQmIsQUFBZSIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiLyogaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9cbnYyLjAgfCAyMDExMDEyNlxuTGljZW5zZTogbm9uZSAocHVibGljIGRvbWFpbilcbiovXG5cbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlcjogMDtcblx0Zm9udC1zaXplOiAxMDAlO1xuXHRmb250OiBpbmhlcml0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLyogSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2VycyAqL1xuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24ge1xuXHRkaXNwbGF5OiBibG9jazsgfVxuXG5ib2R5IHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMCBhdXRvO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblx0bGluZS1oZWlnaHQ6IDE7IH1cblxub2wsIHVsIHtcblx0bGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcblx0cXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGUge1xuXHQmOmJlZm9yZSwgJjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0Y29udGVudDogbm9uZTsgfVxuICB9XG5cbnEge1xuXHQmOmJlZm9yZSwgJjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0Y29udGVudDogbm9uZTsgfVxuICB9XG5cbmxpLCBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG50YWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdGJvcmRlci1zcGFjaW5nOiAwO1xufVxuIiwiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4gIHNyYzp1cmwoJ2ZvbnRzL2ljb21vb24uZW90P3hrdG51YycpO1xuICBzcmM6dXJsKCdmb250cy9pY29tb29uLmVvdD94a3RudWMjaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgdXJsKCdmb250cy9pY29tb29uLnR0Zj94a3RudWMnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgdXJsKCdmb250cy9pY29tb29uLndvZmY/eGt0bnVjJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgdXJsKCdmb250cy9pY29tb29uLnN2Zz94a3RudWMjaWNvbW9vbicpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLy8gVWJ1bnR1IExpZ2h0XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdVYnVudHUtTGlnaHQnO1xuICBzcmM6dXJsKCdmb250cy9VYnVudHUtTC50dGYnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuLy9VYnVudHUgTGlnaHQgSXRhbGljXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdVYnVudHUtTGlnaHQtSXRhbGljJztcbiAgc3JjOnVybCgnZm9udHMvVWJ1bnR1LUxJLnR0ZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cblxuLy8gVWJ1bnR1IFJlZ3VsYXJcbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1VidW50dS1SZWd1bGFyJztcbiAgc3JjOnVybCgnZm9udHMvVWJ1bnR1LVIudHRmJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLy8gVWJ1bnR1IE1lZGl1bVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnVWJ1bnR1LU1lZGl1bSc7XG4gIHNyYzp1cmwoJ2ZvbnRzL1VidW50dS1NLnR0ZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi8vVWJ1bnR1IEJvbGRcbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1VidW50dS1Cb2xkJztcbiAgc3JjOnVybCgnZm9udHMvVWJ1bnR1LUIudHRmJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLy9Sb2JvdG9TbGFiIExpZ2h0XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG9TbGFiLUxpZ2h0JztcbiAgc3JjOnVybCgnZm9udHMvUm9ib3RvU2xhYi1MaWdodC50dGYnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4vL1JvYm90b1NsYWIgUmVndWxhclxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvU2xhYi1SZWd1bGFyJztcbiAgc3JjOnVybCgnZm9udHMvUm9ib3RvU2xhYi1SZWd1bGFyLnR0ZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG4iLCIlaWNvbi1mb250LWJhc2Uge1xuICBmb250LWZhbWlseTogJ2ljb21vb24nO1xuICBzcGVhazogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4kaWNvblByaW1hcnk6XG4ocGludGVyZXN0IDEuNWVtIFwiXFxlODAwXCIpXG4oZ29vZ2xlIDEuNWVtIFwiXFxlODAxXCIpXG4odHdpdHRlciAxLjVlbSBcIlxcZTgwMlwiKVxuKGZhY2Vib29rIDEuNWVtIFwiXFxlODAzXCIpXG4obGlua2VkaW4gMS41ZW0gXCJcXGU4MDRcIik7XG5cbkBlYWNoICRpY29uUCBpbiAkaWNvblByaW1hcnkge1xuICAuaWNvbi0je250aCgkaWNvblAsIDEpfSB7XG4gICAgQGV4dGVuZCAlaWNvbi1mb250LWJhc2U7XG4gICAgZm9udC1zaXplOiAje250aCgkaWNvblAsIDIpfTtcbiAgICBjb2xvcjogIzFlMWQyNDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBudGgoJGljb25QLCAzKTtcbiAgICB9XG4gIH1cbn1cbiIsIi5sb2dvIHtcblx0Zm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ21lZGl1bScpO1xuXHRmb250LXNpemU6IGZvbnQtc2l6ZSgnbGFyZ2UnKTtcblx0Y29sb3I6IGNvbG9yKCdwcmltYXJ5Jyk7XG59XG4iLCIvL2NvbG9yc1xuJGNvbG9yX2FsdG9fYXBwcm94OiBjb2xvcigncHJpbWFyeScpO1xuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MGVtKSB7XG5cdC5wcmltYXJ5LW5hdi13cmFwIHtcblx0XHR1bCB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0YSB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMzJweDtcblx0XHRcdFx0cGFkZGluZzogMCAxNXB4O1xuXHRcdFx0fVxuXHRcdFx0bGkge1xuXHRcdFx0XHRwYWRkaW5nOiAwIDFlbSAwIDA7XG5cdFx0XHRcdG1hcmdpbjogMCAxZW0gMCAwO1xuXHRcdFx0XHQmLmN1cnJlbnQtbWVudS1pdGVtIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfYWx0b19hcHByb3g7XG5cdFx0XHRcdH1cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX2FsdG9fYXBwcm94O1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHQ+IHVsIHtcblx0XHRcdFx0XHRcdC13ZWJraXQtdHJhbnNpdGlvbjogMnMgMnM7XG5cdFx0XHRcdFx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDAgMWVtIDAgMDtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCAxZW0gMCAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dWwge1xuXHRcdFx0XHQtd2Via2l0LXRyYW5zaXRpb246IDJzIDJzO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JfYWx0b19hcHByb3g7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0dG9wOiAxMDAlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRwYWRkaW5nOiAwIDFlbSAwIDA7XG5cdFx0XHRcdG1hcmdpbjogMCAxZW0gMCAwO1xuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0d2lkdGg6IDIwMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGEge1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAxMjAlO1xuXHRcdFx0XHRcdHBhZGRpbmc6IDEwcHggMTVweDtcblx0XHRcdFx0fVxuXHRcdFx0XHR1bCB7XG5cdFx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcblx0Lm1vYmlsZS1uYXYge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblx0Lm1haW4tbmF2IHtcblx0XHRsaSB7XG5cdFx0XHR1bDpob3ZlciB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxpIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDFlbTtcblx0XHRcdHVsIHtcblx0XHRcdFx0bGkge1xuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsImZvb3RlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYm9yZGVyLXRvcDogMC4xZW0gc29saWQgYmxhY2s7XG4gIHBhZGRpbmc6IDEuNWVtO1xuICBjbGVhcjogYm90aDtcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ2xpZ2h0Jyk7XG4gIGZvbnQtc2l6ZTogZm9udC1zaXplKCd4LXNtYWxsJyk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG4gIHVsIHtcblxuICB9XG4gIGxpIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgcGFkZGluZzogMC4xZW07XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgcGFkZGluZzogMC41ZW07XG4gICAgfVxuICB9XG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogY29sb3IoJ3ByaW1hcnknKTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiBjb2xvcignYWNjZW50Jyk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcblxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxuQG1peGluIGJveCgkb3JpZW50OiBpbmxpbmUtYXhpcywgJHBhY2s6IHN0YXJ0LCAkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1ib3g7XG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XG4gIEBpbmNsdWRlIGJveC1wYWNrKCRwYWNrKTtcbiAgQGluY2x1ZGUgYm94LWFsaWduKCRhbGlnbik7XG59XG5cbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbW96LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIElFIDEwXG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBhY2s6ICRwYWNrOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbjogc3RyZXRjaCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1hbGlnbjogJGFsaWduOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiBub3JtYWwpIHtcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKSwgMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkdmFsdWUtMjAwOTogJHZhbHVlO1xuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAkZGlyZWN0aW9uOiBub3JtYWw7XG5cbiAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuICAvLyBBbHQgdmFsdWVzXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICRhbHQtdmFsdWU6IHNpbmdsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICB9XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXdyYXAsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxuQG1peGluIGZsZXgtZmxvdygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXI6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tc2VsZiAoYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1zZWxmKCR2YWx1ZTogYXV0bykge1xuXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xuICB9XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHlcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWVcbi8vLyAgIFZhbHVlIHRvIHVzZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXdlYmtpdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1vcGVyYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xuXG5AbWl4aW4gcHJlZml4ZXIoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXhlcykge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci13ZWJraXQge1xuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1vcGVyYSB7XG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsIi5oZWFkZXItY29udGFpbmVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJ3ByaW1hcnknKTtcblx0QGluY2x1ZGUgZmxleC1ib3goJGFsaWduOiBjZW50ZXIsICR3cmFwOiB3cmFwLCAkZGlyZWN0aW9uOiByb3csICRqdXN0aWZ5OiBzcGFjZS1iZXR3ZWVuKTtcblx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcblx0cGFkZGluZzogNGVtIDNlbSA0ZW0gMmVtO1xuXG5cdGgxIHtcblx0XHRjb2xvcjogY29sb3IoJ2Jhc2UnKTtcblx0fVxuXG4gIGEge1xuICAgIGNvbG9yOiBjb2xvcignYmFzZScpO1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdyZWd1bGFyJyk7XG4gICAgZm9udC1zaXplOiBmb250LXNpemUoJ3gtc21hbGwnKTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiBjb2xvcignYWNjZW50Jyk7XG4gICAgfVxuICB9XG59XG5cblxuIiwiXG5mb3JtIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxZW07XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcblxuICB9XG4gIGgxIHtcbiAgICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAncmVndWxhcicpO1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCRrZXk6ICdtZWRpdW0nKTtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgbWFyZ2luOiAxZW0gYXV0bztcbiAgICBwYWRkaW5nOiAxZW07XG4gICAgd2lkdGg6IDIwZW07XG4gICAgaGVpZ2h0OiAxMGVtO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdsaWdodCcpO1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCdzbWFsbCcpO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgICAgIHdpZHRoOiA0MGVtO1xuICAgICAgaGVpZ2h0OiAxNWVtO1xuICAgICAgYm9yZGVyOiAuMWVtIHNvbGlkICNkZGQ7XG4gICAgICBib3JkZXItcmFkaXVzOiBlbSg0KTtcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lLWNvbG9yOiBjb2xvcignYWNjZW50Jyk7XG4gICAgICAgIG91dGxpbmUtc3R5bGU6IHNvbGlkO1xuICAgICAgICBvdXRsaW5lLXdpZHRoOiAuMjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaW5wdXQge1xuICAgIHBhZGRpbmc6IDFlbTtcbiAgICB3aWR0aDogMjBlbTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDFlbSBhdXRvO1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdsaWdodCcpO1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCdzbWFsbCcpO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgICAgIGJvcmRlcjogLjFlbSBzb2xpZCAjZGRkO1xuICAgICAgYm9yZGVyLXJhZGl1czogZW0oNCk7XG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogY29sb3IoJ2FjY2VudCcpO1xuICAgICAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgb3V0bGluZS13aWR0aDogLjI1ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAvLyAgIGJvcmRlcjogbm9uZTtcbiAgLy8gICBwYWRkaW5nOiAxZW07XG4gIC8vICAgd2lkdGg6IDIwZW07XG4gIC8vICAgZGlzcGxheTogYmxvY2s7XG4gIC8vICAgbWFyZ2luOiAxZW0gYXV0bztcbiAgLy8gICBjb2xvcjogY29sb3IoJGtleTogJ2Jhc2UnKTtcbiAgLy8gICAmOmhvdmVyIHtcbiAgLy8gICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRrZXk6ICdhY2NlbnQnKTtcbiAgLy8gICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgLy8gICB9XG4gIC8vIH1cbn1cbiIsIkBtaXhpbiBidXR0b24oJGJhY2tncm91bmQsICRjb2xvciwgJGhvdmVyLWJnLCAkaG92ZXItY29sb3IsICR3aWR0aCwgJGYtc2l6ZSkge1xuICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAnbWVkaXVtJyk7XG4gIGZvbnQtc2l6ZTogZm9udC1zaXplKCRmLXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogLjEyNWVtO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIHBhZGRpbmc6IDFlbSAwO1xuICBib3JkZXI6IHNvbGlkIDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAmOmhvdmVye1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRob3Zlci1iZztcbiAgICBjb2xvcjogJGhvdmVyLWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJGhvdmVyLWNvbG9yO1xuICB9XG59XG4iLCIubGVhcm4tbW9yZS13cmFwcGVyIHtcbiAgQGluY2x1ZGUgZmxleC1ib3goJGFsaWduOiBjZW50ZXIsICR3cmFwOiB3cmFwLCAkZGlyZWN0aW9uOiBjb2x1bW4sICRqdXN0aWZ5OiBjZW50ZXIpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZDogY29sb3IoJ2FjY2VudCcpO1xuICBjb2xvcjogY29sb3IoJ2Jhc2UnKTtcbiAgbWFyZ2luOiAwIDAgMS41ZW0gMDtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWspIHtcbiAgICBwYWRkaW5nOiAyZW0gMCA0ZW0gMDtcbiAgfVxuXG4gIGgxIHtcbiAgICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAnYm9sZCcpO1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCd4eC1sYXJnZScpO1xuICAgIHBhZGRpbmctYm90dG9tOiAxZW07XG4gICAgcGFkZGluZy10b3A6IDFlbTtcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgICAgcGFkZGluZy1ib3R0b206IC41ZW07XG4gICAgfVxuICB9XG4gIHAge1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdyZWd1bGFyJyk7XG4gICAgZm9udC1zaXplOiBmb250LXNpemUoJ3NtYWxsJyk7XG4gICAgcGFkZGluZy1ib3R0b206IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgLy8gcGFkZGluZzogMmVtIDEwZW07XG4gICAgfVxuICB9XG5cbiAgLmxlYXJuLWJ1dHRvbi13cmFwcGVyIHtcblxuICAgIC5idG4tc2Vjb25kYXJ5IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgbWFyZ2luOiAxZW0gYXV0bztcbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgICAgIG1hcmdpbjogMWVtIC41ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuYnRuLXByaW1hcnkge1xuICBAaW5jbHVkZSBidXR0b24oY29sb3IoJ3ByaW1hcnknKSwgY29sb3IoJ2Jhc2UnKSwgY29sb3IoJ2FjY2VudCcpLCBjb2xvcignYmFzZScpLCA4ZW0sICdzbWFsbCcpO1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgIHdpZHRoOiAxMmVtO1xuICB9XG59XG5cbi5idG4tcHJpbWFyeS1hbHQge1xuICBAaW5jbHVkZSBidXR0b24oY29sb3IoJ2Jhc2UnKSwgY29sb3IoJ3ByaW1hcnknKSwgY29sb3IoJ3ByaW1hcnknKSwgY29sb3IoJ2Jhc2UnKSwgOGVtLCAnc21hbGwnKTtcbiAgJjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiBjb2xvcigncHJpbWFyeScpO1xuICB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgd2lkdGg6IDEyZW07XG4gIH1cbn1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICBAaW5jbHVkZSBidXR0b24oY29sb3IoJ2FjY2VudCcpLCBjb2xvcignYmFzZScpLCBjb2xvcignYmFzZScpLCBjb2xvcigncHJpbWFyeScpLCAxMGVtLCAnc21hbGwnKTtcbiAgJjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiBjb2xvcignYmFzZScpO1xuICB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgd2lkdGg6IDEyZW07XG4gIH1cbn1cblxuLmJ0bi1zbWFsbCB7XG4gIEBpbmNsdWRlIGJ1dHRvbihjb2xvcignYmFzZScpLCBjb2xvcigncHJpbWFyeScpLCBjb2xvcigncHJpbWFyeScpLCBjb2xvcignYmFzZScpLCA4ZW0sICd4LXNtYWxsJyk7XG4gIHBhZGRpbmc6IC41ZW07XG4gICY6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogY29sb3IoJ3ByaW1hcnknKTtcbiAgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgIHdpZHRoOiA2ZW07XG4gIH1cbn1cbiIsIkBtaXhpbiBiYW5uZXIoJGJhY2tncm91bmQsICRoZWFkaW5nLWZhbWlseSwgJHRleHQtZmFtaWx5LCAkaGVhZGluZy1zaXplLCAkdGV4dC1zaXplLCAkdGV4dC1jb2xvcikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkYmFja2dyb3VuZCk7XG4gIGgxIHtcbiAgICBmb250LWZhbWlseTogJGhlYWRpbmctZmFtaWx5O1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCRoZWFkaW5nLXNpemUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBwIHtcbiAgICBmb250LWZhbWlseTogJHRleHQtZmFtaWx5O1xuICAgIGZvbnQtc2l6ZTogIGZvbnQtc2l6ZSgkdGV4dC1zaXplKTtcbiAgICBmb250LWNvbG9yOiBjb2xvcigkdGV4dC1jb2xvcik7XG4gICAgb3BhY2l0eTogLjU7XG4gICAgbWFyZ2luOiAuNWVtIDAgMCAwO1xuICB9XG59XG5cbi5wYWdlLWJhbm5lciB7XG4gIEBpbmNsdWRlIGJhbm5lcignYWNjZW50JywgZm9udC1mYW1pbHkoJ3NlY29uZGFyeScsICdyZWd1bGFyJyksIGZvbnQtZmFtaWx5KCdzZWNvbmRhcnknLCAnbGlnaHQnKSwgJ21lZ2Etc21hbGwnLCAnbGFyZ2UnLCAnc2Vjb25kYXJ5Jyk7XG4gIHBhZGRpbmc6IDEuNWVtO1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gICAgcGFkZGluZzogNWVtIDM1JSA1ZW0gMTAlO1xuICB9XG59XG4iLCIuY29udGFjdC1zb2NpYWwtbGlua3Mtd3JhcHBlciB7XG4gIHBhZGRpbmctYm90dG9tOiA1ZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMjBlbTtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1ZW07XG4gICAgcGFkZGluZy1ib3R0b206IDZlbTtcbiAgICB3aWR0aDogMzBlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICB1bCB7XG4gICAgQGluY2x1ZGUgZmxleC1ib3goJGFsaWduOiBjZW50ZXIsICR3cmFwOiB3cmFwLCAkZGlyZWN0aW9uOiByb3csICRqdXN0aWZ5OiBjZW50ZXIpO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAvLyBtYXJnaW4tcmlnaHQ6IDJlbTtcbiAgICAvLyB3aWR0aDogMTAwJTtcbiAgfVxuICBsaSB7XG4gICAgQGluY2x1ZGUgZmxleGl0ZW07XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBwYWRkaW5nOiAwLjVlbTtcbiAgfVxuICBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLy8gSWNvbiBzdHlsZXMgaW4gYTpiZWZvcmVcbiAgICAmOmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IoJ2Jhc2UnKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gSWNvbiBpcyBpbiB0aGUgPGE+IGJveFxuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogY29sb3IoJ2FjY2VudCcpO1xuICAgIH1cbiAgfVxuICAvLyBTcGFuIGZvciB0ZXh0IGZvciB0ZXh0IHN0eWxlc1xuICBzcGFuIHtcbiAgICBAZXh0ZW5kICVib3JkZXItY2lyY2xlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAwLjVlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IDMuNWVtO1xuICB9XG59XG4vLyBDb2RlIGZvciB0aGUgY2lyY2xlXG4lYm9yZGVyLWNpcmNsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyOiAwLjFlbSBzb2xpZCBjb2xvcignc2Vjb25kYXJ5Jyk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDhlbTtcbiAgaGVpZ2h0OiA0LjVlbTtcbiAgdG9wOiAwLjFlbTtcbiAgbGVmdDogMDtcbiAgY29udGVudDpcIlwiO1xuICB6LWluZGV4OiAtMTtcbn1cblxuXG5cbiIsIi8vIG1pbmkgbmF2IHNlY3Rpb25cbi5zdWItbmF2IHtcbiAgZm9udC1zaXplOiBmb250LXNpemUoJ3gtc21hbGwnKTtcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ2xpZ2h0Jyk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMC41ZW07XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLWxlZnQ6IDVlbTtcbiAgfVxuICBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG4gIGxpOmFmdGVyIHtcbiAgICBjb250ZW50OidcXDAwQjcnO1xuICAgIHBhZGRpbmctbGVmdDo1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgfVxuICBsaTpsYXN0LWNoaWxkIHtcbiAgICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAnbWVkaXVtJyk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgfVxuICBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGNvbG9yKCdwcmltYXJ5Jyk7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogY29sb3IoJ2FjY2VudCcpO1xuICAgIH1cbiAgfVxufVxuXG4uc3ViLW5hdi13cmFwcGVyIHtcbiAgcGFkZGluZzogMC41ZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4xKTtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAgIHBhZGRpbmctbGVmdDogNWVtO1xuICAgIGhlaWdodDogMi41ZW07XG4gIH1cbn1cblxuXG4iLCIvLyBzaGFyZSBzb2NpYWwgaWNvbnNcbi5zaGFyZS1zb2NpYWwtaWNvbnMge1xuICBmb250LXNpemU6IGZvbnQtc2l6ZSgneC1zbWFsbCcpO1xuICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAnbGlnaHQnKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAwLjVlbTtcbiAgLy9PbiBtZWRpYSBjYWxsIGRvIHRoaXM6XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgICBAaW5jbHVkZSBmbGV4LWJveCgkYWxpZ246IGNlbnRlciwgJGRpcmVjdGlvbjogcm93KTtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMCU7XG4gIH1cblxuICBwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgY29sb3I6IGNvbG9yKCdwcmltYXJ5Jyk7XG4gICAgb3BhY2l0eTogLjQ7XG4gIH1cbiAgdWwge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbiAgbGkgeyAvLyBpY29uc1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xuICB9XG4gIGEge1xuICAgIG9wYWNpdHk6IC40O1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IGNvbG9yKCdhY2NlbnQnKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG4iLCIuYmxvZy1jb250YWluZXIge1xuICBwYWRkaW5nOiA1JSAxMCU7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgcGFkZGluZzogMCAyMCU7XG4gIH1cbiAgaDEge1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdyZWd1bGFyJyk7XG4gICAgZm9udC1zaXplOiBmb250LXNpemUoJ3h4LWxhcmdlJyk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG7igItcbiAgLmJ0bi1wcmltYXJ5LWFsdDpsYXN0LWNoaWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMmVtIGF1dG87XG4gIH1cbiAgLnNlYXJjaC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgIG1hcmdpbjogMTAgYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwLCBpbnB1dCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxuICAgIHAsIGlucHV0IHtcbiAgICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdyZWd1bGFyJyk7XG4gICAgICBmb250LXNpemU6IGZvbnQtc2l6ZSgneC1zbWFsbCcpO1xuICAgICAgbWFyZ2luOiAwLjVlbTtcbiAgICAgIHBhZGRpbmc6IDAuM2VtO1xuICAgIH1cbiAgfVxufVxuIiwiLmJsb2ctc3VtbWFyeSB7XG4gIEBpbmNsdWRlIGZsZXgtYm94KCRhbGlnbjogY2VudGVyLCAkd3JhcDogd3JhcCwgJGRpcmVjdGlvbjogY29sdW1uLCAkanVzdGlmeTogY2VudGVyKTtcbiAgbWFyZ2luOiAxZW0gYXV0bztcbiAgcGFkZGluZy1ib3R0b206IDNlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO1xuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpO1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgICAgQGluY2x1ZGUgZmxleC1ib3goJGFsaWduOiBjZW50ZXIsICR3cmFwOiB3cmFwLCAkZGlyZWN0aW9uOiByb3csICRqdXN0aWZ5OiBzcGFjZS1iZXR3ZWVuKTtcbiAgfVxuXG4gIGgxIHtcbiAgICBmb250LWZhbWlseTogZm9udC1mYW1pbHkoJ3ByaW1hcnknLCAncmVndWxhcicpO1xuICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKCd4LWxhcmdlJyk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG9yZGVyOiAxO1xuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgICBmbGV4LWJhc2lzOiA2MCU7XG4gICAgICBtYXJnaW46IDFlbSAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgcCB7XG4gICAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ2xpZ2h0Jyk7XG4gICAgZm9udC1zaXplOiBmb250LXNpemUoJ21lZGl1bScpO1xuICAgIGNvbG9yOiBjb2xvcignc2Vjb25kYXJ5Jyk7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNWVtO1xuICAgIG9wYWNpdHk6IC43O1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgb3JkZXI6IDM7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWspIHtcbiAgICAgIG9yZGVyOiAzO1xuICAgIH1cbiAgfVxuXG4gIC5saW5rLW9yaWdpbmFsLXZpZXcge1xuICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdsaWdodCcpO1xuICAgIGNvbG9yOiBjb2xvcigncHJpbWFyeScpO1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IGNvbG9yKCdhY2NlbnQnKTtcbiAgICB9XG4gIH1cbiAgaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgaGVpZ2h0OiA1ZW07XG4gICAgd2lkdGg6IDVlbTtcbiAgICBwYWRkaW5nOiAwLjVlbTtcbiAgfVxuXG5cbiAgLmJsb2ctbWV0YWRhdGEge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG9yZGVyOiAyO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgICAgZmxleC1iYXNpczogNTAlO1xuICAgICAgb3JkZXI6IDQ7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ2xpZ2h0LWl0YWxpYycpO1xuICAgICAgZm9udC1zaXplOiBmb250LXNpemUoJ3NtYWxsJyk7XG4gICAgICBjb2xvcjogY29sb3IoJ3NlY29uZGFyeScpO1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBwYWRkaW5nOiAxZW0gMWVtIDAgMDtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhaykge1xuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHAge1xuICAgICAgQGV4dGVuZCBsaTtcbiAgICAgIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgncHJpbWFyeScsICdsaWdodCcpO1xuICAgIH1cbiAgfVxuXG4gIC5idG4tcHJpbWFyeSB7XG4gICAgb3JkZXI6IDQ7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgICBvcmRlcjogNVxuICAgIH1cbiAgfVxuXG4gIC5idG4tc21hbGwge1xuICAgIG9yZGVyOiA1O1xuICAgIG1hcmdpbjogMWVtIDA7XG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrKSB7XG4gICAgICBvcmRlcjogMlxuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGZsZXgtYm94KCRhbGlnbjogbnVsbCwgJHdyYXA6IG51bGwsICRkaXJlY3Rpb246IG51bGwsICRqdXN0aWZ5OiBudWxsLCAkYmFzaXM6IG51bGwpIHtcbiAgQGluY2x1ZGUgZGlzcGxheShmbGV4KTtcbiAgQGluY2x1ZGUgYWxpZ24taXRlbXMoJGFsaWduKTtcbiAgQGluY2x1ZGUgZmxleC13cmFwKCR3cmFwKTtcbiAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG4gIEBpbmNsdWRlIGp1c3RpZnktY29udGVudCgkanVzdGlmeSk7XG4gIEBpbmNsdWRlIGZsZXgtYmFzaXMoJGJhc2lzKTtcbn1cblxuQG1peGluIGZsZXhpdGVtIHtcbiAgLXdlYmtpdC1mbGV4LWdyb3c6IDE7XG4gIC13ZWJraXQtZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4iLCIuY29udGFjdC1pbmZvLXdyYXBwZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDFlbTtcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCdwcmltYXJ5JywgJ3JlZ3VsYXInKTtcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gICAgcGFkZGluZzogMmVtO1xuICAgIHdpZHRoOiA1MGVtO1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuLmFkZHJlc3Mtd3JhcHBlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxZW07XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nLWxlZnQ6IDVlbTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1hcmdpbi10b3A6IDNlbTtcbiAgfVxuICBhZGRyZXNzIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cbn1cbi5waG9uZS1lbWFpbC13cmFwcGVyIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmctbGVmdDogNWVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgbWFyZ2luLXRvcDogM2VtO1xuICB9XG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogY29sb3IoJGtleTogJ3ByaW1hcnknKTtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiBjb2xvcigka2V5OiAnYWNjZW50Jyk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ== */ diff --git a/build/html/blogpost.html b/build/html/blogpost.html new file mode 100644 index 0000000..cda0a9f --- /dev/null +++ b/build/html/blogpost.html @@ -0,0 +1,72 @@ + +
+

Github Gists

+

The secular cooling that must someday overtake our planet has already gone far indeed with our neighbour. Its physical condition is still largely a mystery, but we know now that

+
+​ + + +​ +
+

{{error}}

+
+

Searching for: {{search}}

+ +
+
+ +

{{ gist.description }}

+ +

View Original

+ Alina's big face + +

Content: + Object.keys(vm.gist.files)[0] + {{ gist.files[newFilename].content }} +

+​ + + Read More + Delete +​ +
+​ + Add New +​ + + +​ +
diff --git a/build/html/form.html b/build/html/form.html new file mode 100644 index 0000000..bca4241 --- /dev/null +++ b/build/html/form.html @@ -0,0 +1,35 @@ +
+

Add or Edit A Blogpost

+
+ + + + +
+ + + + + + + + + +
diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..d3cd4e0 --- /dev/null +++ b/build/index.html @@ -0,0 +1,105 @@ + + + + + + + + Awesome Gists! + + + +
+

intelly

+ +
+​ + +
+ + +
+​ + +
+
+

Serene in their assurance of their empire over matter

+

No one would have believed in the last years of the nine-teenth century that this world was being watched keenly and closely by intelligence grater than man's

+ +
+
+
+
+ 2319 Hilltop Haven Drive
+ Upper Greenwood Lake, NJ 07421 +
+
+ +
+ +
+​ + + +​ + + + + + diff --git a/gulp/config.js b/gulp/config.js index b58ac80..59a803b 100755 --- a/gulp/config.js +++ b/gulp/config.js @@ -1,27 +1,30 @@ var dest = "./build"; -var src = './src'; +var src = "./src"; module.exports = { javascript: { src: src + '/js/**/*.js', dest: dest + '/js/', - entry: src + '/js/app.js', - outputFilename: 'app.js' - }, - assets: { - src: src + "/assets/**/*", - dest: dest + '/assets/' + entry: src + '/js/entry.js', + outputFilename: 'packed.js' }, sass: { - src: src + "/css/**/*.{sass,scss}", + src: src + "/sass/{,*/}*.{scss,sass}", dest: dest + '/css/', - settings: { - indentedSyntax: true, // Enable .sass syntax! - } + // settings: { + // indentedSyntax: true, + // } + }, + index: { + src: src + "/index.html", + dest: dest + "/" }, html: { - src: src + '/**/*.html', - dest: dest + src: src + "/html/**/*.html", + dest: dest + "/html/" + }, + ngConfig: { + dest: dest + '/js/' }, server: { src: dest, @@ -33,7 +36,6 @@ module.exports = { production: { cssSrc: dest + '/css/*.css', jsSrc: dest + '/js/*.js', - cssDest: dest + '/css/', - jsDest: dest + '/js/', + dest: dest } }; diff --git a/gulp/tasks/assets.js b/gulp/tasks/assets.js deleted file mode 100644 index 460b22d..0000000 --- a/gulp/tasks/assets.js +++ /dev/null @@ -1,9 +0,0 @@ -var gulp = require('gulp'); -var config = require('../config').assets; - -gulp.task('assets', function() { - return gulp.src(config.src) - .pipe(gulp.dest(config.dest)); -}); - - diff --git a/gulp/tasks/default.js b/gulp/tasks/default.js index 7bcae83..a24e40d 100644 --- a/gulp/tasks/default.js +++ b/gulp/tasks/default.js @@ -1,4 +1,4 @@ var gulp = require('gulp'); -gulp.task('default', ['sass', 'markup', 'webpack', 'watch', 'serve']); +gulp.task('default', ['sass', 'html', 'index', 'ngConfig', 'webpack', 'watch', 'serve']); diff --git a/gulp/tasks/html.js b/gulp/tasks/html.js new file mode 100644 index 0000000..10dfe5c --- /dev/null +++ b/gulp/tasks/html.js @@ -0,0 +1,8 @@ +var gulp = require("gulp"); +var config = require('../config').html; + +gulp.task('html', function() { + return gulp.src(config.src) + .pipe(gulp.dest(config.dest)); +}); + diff --git a/gulp/tasks/index.js b/gulp/tasks/index.js new file mode 100644 index 0000000..041f2f8 --- /dev/null +++ b/gulp/tasks/index.js @@ -0,0 +1,7 @@ +var gulp = require("gulp"); +var config = require('../config').index; + +gulp.task('index', function() { + return gulp.src(config.src) + .pipe(gulp.dest(config.dest)); +}); diff --git a/gulp/tasks/markup.js b/gulp/tasks/markup.js deleted file mode 100755 index 89b3eb3..0000000 --- a/gulp/tasks/markup.js +++ /dev/null @@ -1,8 +0,0 @@ -var gulp = require('gulp'); -var config = require('../config').html; - -gulp.task('markup', function() { - return gulp.src(config.src) - .pipe(gulp.dest(config.dest)); -}); - diff --git a/gulp/tasks/ngConfig.js b/gulp/tasks/ngConfig.js new file mode 100644 index 0000000..6cd32dc --- /dev/null +++ b/gulp/tasks/ngConfig.js @@ -0,0 +1,18 @@ +var gulp = require('gulp'); +var ngConfig = require ('gulp-ng-config'); + +var config = require('../config').ngConfig; +var fs = require('fs'); + +gulp.task('ngConfig', function() { + var tokenFile = config.dest + '/token.txt'; + + // Create temp file with token stored in it + fs.writeFileSync(tokenFile, '{"token": "' + process.env.GITHUBTOKEN + '"}'); + + // Generate the token config file + gulp.src(tokenFile) + .pipe(ngConfig('gisty.config')) + .pipe(gulp.dest(config.dest)); + +}); diff --git a/gulp/tasks/production.js b/gulp/tasks/production.js index d9f5efd..7f55a6d 100755 --- a/gulp/tasks/production.js +++ b/gulp/tasks/production.js @@ -3,5 +3,5 @@ var gulp = require('gulp'); // Run this to compress all the things! gulp.task('production', function(){ // This runs only if the karma tests pass - gulp.start(['markup', 'minifyCss', 'uglifyJs']) + gulp.start(['minifyCss', 'uglifyJs']) }); diff --git a/gulp/tasks/sass.js b/gulp/tasks/sass.js index 01b6bc6..73ded26 100755 --- a/gulp/tasks/sass.js +++ b/gulp/tasks/sass.js @@ -1,5 +1,6 @@ var gulp = require('gulp'); var sass = require('gulp-sass'); +var neat = require('node-neat'); var sourcemaps = require('gulp-sourcemaps'); var handleErrors = require('../util/handleErrors'); var autoprefixer = require('gulp-autoprefixer'); @@ -8,10 +9,21 @@ var config = require('../config').sass; gulp.task('sass', function () { return gulp.src(config.src) .pipe(sourcemaps.init()) + .pipe(sass({ + includePaths: [['sass'].concat(neat), + require('node-bourbon').includePaths, + require('node-neat').includePaths + ] + })) .pipe(sass(config.settings)) + .on('error', handleErrors) + .pipe(sourcemaps.write()) - .pipe(autoprefixer({ browsers: ['last 2 version'] })) + + // .pipe(autoprefixer({ browsers: ['last 2 version'], cascade: false })) + .pipe(gulp.dest(config.dest)); }); + diff --git a/gulp/tasks/watch.js b/gulp/tasks/watch.js index 576e992..8aa0783 100755 --- a/gulp/tasks/watch.js +++ b/gulp/tasks/watch.js @@ -3,7 +3,11 @@ var config = require('../config'); gulp.task('watch', function() { gulp.watch(config.javascript.src, ['webpack']); - gulp.watch(config.sass.src, ['sass']); - gulp.watch(config.markup.src, ['markup']); + gulp.watch(config.sass.src, ['sass']); + gulp.watch(config.index.src, ['index']); + gulp.watch(config.html.src, ['html']); + + gulp.watch(['./node_modules/angular/angular.js', './node_modules/angular-route/angular-route.js']); // Watchify will watch and recompile our JS, so no need to gulp.watch it }); + diff --git a/package.json b/package.json index 50f838a..2c5bd48 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,37 @@ { - "name": "", + "name": "blogwithangularandmongo", "version": "1.0.0", - "description": "", + "description": "A awesome blog!", + "main": "server.js", + "scripts": { + "start": "webpack-dev-server --content-base app --hot" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/brain11f/mean-stack-1.git" + }, + "keywords": [ + "code", + "fellows", + "blog", + "angular", + "mongodb" + ], + "author": "Brian Finck and Chris Holt and Alina To", + "license": "ISC", + "bugs": { + "url": "https://github.com/brain11f/mean-stack-1/issues" + }, "dependencies": { + "angular": "^1.4.7", + "angular-route": "^1.4.7", + "bourbon": "^4.2.5", "gulp": "^3.8.11", "gulp-autoprefixer": "^2.1.0", "gulp-changed": "^1.1.1", "gulp-filesize": "0.0.6", "gulp-minify-css": "~0.5.1", + "gulp-ng-config": "^1.2.1", "gulp-notify": "^2.2.0", "gulp-rename": "^1.2.2", "gulp-sass": "~1.3.3", @@ -17,6 +41,9 @@ "gulp-webserver": "^0.9.0", "lodash": "^3.3.1", "merge-stream": "^0.1.7", + "node-bourbon": "^4.2.3", + "node-neat": "^1.7.2", + "node-sass": "^3.3.3", "pretty-hrtime": "~1.0.0", "require-dir": "^0.1.0", "vinyl-source-stream": "~1.0.0", diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/html/blog.html b/src/html/blog.html new file mode 100644 index 0000000..e769295 --- /dev/null +++ b/src/html/blog.html @@ -0,0 +1,53 @@ + +
+

Gist

+
+ + +​ +​ +
+ +
+ Alina's big face +

{{ gists.id }}

+

{{ gist.description }}

+

View Original

+

Content: {{ }}

+
+
diff --git a/src/html/blogpost.html b/src/html/blogpost.html new file mode 100644 index 0000000..cda0a9f --- /dev/null +++ b/src/html/blogpost.html @@ -0,0 +1,72 @@ + +
+

Github Gists

+

The secular cooling that must someday overtake our planet has already gone far indeed with our neighbour. Its physical condition is still largely a mystery, but we know now that

+
+​ + + +​ +
+

{{error}}

+
+

Searching for: {{search}}

+ +
+
+ +

{{ gist.description }}

+ +

View Original

+ Alina's big face + +

Content: + Object.keys(vm.gist.files)[0] + {{ gist.files[newFilename].content }} +

+​ + + Read More + Delete +​ +
+​ + Add New +​ + + +​ +
diff --git a/src/html/form.html b/src/html/form.html new file mode 100644 index 0000000..bca4241 --- /dev/null +++ b/src/html/form.html @@ -0,0 +1,35 @@ +
+

Add or Edit A Blogpost

+
+ + + + +
+ + + + + + + + + +
diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..d3cd4e0 --- /dev/null +++ b/src/index.html @@ -0,0 +1,105 @@ + + + + + + + + Awesome Gists! + + + +
+

intelly

+ +
+​ + +
+ + +
+​ + +
+
+

Serene in their assurance of their empire over matter

+

No one would have believed in the last years of the nine-teenth century that this world was being watched keenly and closely by intelligence grater than man's

+ +
+
+
+
+ 2319 Hilltop Haven Drive
+ Upper Greenwood Lake, NJ 07421 +
+
+ +
+ +
+​ + + +​ + + + + + diff --git a/src/js/blog/app.js b/src/js/blog/app.js new file mode 100644 index 0000000..a325daf --- /dev/null +++ b/src/js/blog/app.js @@ -0,0 +1,45 @@ +require('angular'); +require('angular-route'); + +(function(){ + + 'use strict'; + // Declare app level module which depends on filters, and services + var AwesomeBlogApp = angular.module('AwesomeBlog', ['ngRoute']). + + config(["$routeProvider", function ($routeProvider) { + $routeProvider + + ////route home page blog posts////////// + .when("/blogposts", { + templateUrl: "html/blogpost.html", + controller: "BlogpostsCtrl as vm", + }) + + /////form to make more blog posts/////// + .when("/blogposts/new", { + templateUrl: "html/form.html", + controller: "BlogFormCtrl as vm", + }) + .when("/blogposts/:blogpost_id/edit", { + templateUrl: "html/form.html", + controller: "BlogFormCtrl as vm", + }) + .when("/blogposts/:blogpost_id", { + templateUrl: "html/blog.html", + controller: "BlogpostCtrl as vm", + }) + .otherwise({ + redirectTo: "/blogposts", + }); + + }]); + + // Controller to make DATE work! + AwesomeBlogApp.controller("DateCtrl", ["$scope", function($scope) { + $scope.date = new Date(); + }]); + +}()); + +require('./index.js'); diff --git a/src/js/blog/blog-ctrl.js b/src/js/blog/blog-ctrl.js new file mode 100644 index 0000000..40171bc --- /dev/null +++ b/src/js/blog/blog-ctrl.js @@ -0,0 +1,27 @@ +require("./app"); + +angular.module("AwesomeBlog").controller("BlogpostCtrl", ["BlogpostService", "$routeParams", function(BlogpostService, $routeParams) { + var vm = this; + + start(); + + function start() { + BlogpostService + .get($routeParams.blogpost_id) + .then(function(resp) { + + console.log(resp); + + vm.blogpost = {}; + vm.blogpost.text = ''; + for (file in resp.files) { + vm.blog.text += resp.files[file].content; + } + + vm.blog.date = resp.updated_at; + vm.blog.author = resp.owner.login; + }); + } +}]); + + diff --git a/src/js/blog/blog-details-directive.js b/src/js/blog/blog-details-directive.js new file mode 100644 index 0000000..fb4013a --- /dev/null +++ b/src/js/blog/blog-details-directive.js @@ -0,0 +1,15 @@ +require("./app"); + +(function() { + "use strict"; + + angular.module("AwesomeBlog") + .directive("bl", function () { + return { + scope: { + blogpost: "=blogpost", // functionally the same as ng-model + }, + templateUrl: "templates/blog.html", + }; + }); +})(); diff --git a/src/js/blog/blog-form-ctrl.js b/src/js/blog/blog-form-ctrl.js new file mode 100644 index 0000000..d896fc3 --- /dev/null +++ b/src/js/blog/blog-form-ctrl.js @@ -0,0 +1,39 @@ +require("./app"); + + +(function() { +'use strict'; + + angular.module("AwesomeBlog").controller("BlogFormCtrl", ["BlogpostService", "$routeParams", "$location", function(BlogpostService, $routeParams, $location){ + var vm = this; + + vm.save = saveBlog; + + vm.blogpost = {}; + + start(); + + // IF statement only works when edit + function start() { + + vm.blogpost.date = new Date(Date.now()); + if ($routeParams.blogpost_id) { + BlogpostService.get($routeParams.blogpost_id).then(function (resp) { + + vm.blogpost = resp.data; + vm.blogpost.date = vm.blogpost.date || new Date(Date.now()); + }); + } + } + + function saveBlog () { + var method; + + method = $routeParams.blogpost_id ? "update" : "create"; + BlogpostService[method](vm.blogpost).then(function (resp) { + $location.path("/blogposts/" + resp.data._id); + }); + } + }]); + +}()); diff --git a/src/js/blog/blog-service.js b/src/js/blog/blog-service.js new file mode 100644 index 0000000..8483551 --- /dev/null +++ b/src/js/blog/blog-service.js @@ -0,0 +1,30 @@ +require("./app"); + +(function () { + "use strict"; + + angular.module("AwesomeBlog").service("BlogpostService", ["$http", function ($http) { + var urlRoot = "/blogposts"; + + var Blog = { + get: function (id) { + if (angular.isDefined(id)) { + return $githubGist(id).read(); + } else { + // return $http.get(urlRoot); + console.warn('root url'); + } + }, + update: function (blog) { + return $http.put(urlRoot + "/" + blog._id, blog); + }, + create: function (blog) { + return $http.post(urlRoot, blog); // ideal, but doesn't work + }, + delete: function (blog) { + return $http.delete(urlRoot + "/" + blog._id); + } + }; + return Blog; + }]); +}()); diff --git a/src/js/blog/blogposts-ctrl.js b/src/js/blog/blogposts-ctrl.js new file mode 100644 index 0000000..735c02e --- /dev/null +++ b/src/js/blog/blogposts-ctrl.js @@ -0,0 +1,30 @@ +require("./app"); + +(function() { + 'use strict'; + + angular.module("AwesomeBlog").controller("BlogpostsCtrl", ["BlogpostService", function(BlogpostService) { + var vm = this; + + vm.blogposts = []; + vm.delete = deleteBlog; + + start(); + + function start() { + getBlogposts(); + } + + function getBlogposts() { + BlogpostService.get().then(function(resp) { + vm.blogposts = resp.data; + }); + } + + function deleteBlog (blog) { + BlogpostService.delete(blog).then(function() { + getBlogposts(); + }); + } + }]); +}()); diff --git a/src/js/blog/entry.js b/src/js/blog/entry.js new file mode 100644 index 0000000..3bb5da9 --- /dev/null +++ b/src/js/blog/entry.js @@ -0,0 +1,4 @@ +require("./app.js"); +require("./index.js"); + + diff --git a/src/js/blog/index.js b/src/js/blog/index.js new file mode 100644 index 0000000..57866a7 --- /dev/null +++ b/src/js/blog/index.js @@ -0,0 +1,5 @@ +require("./blog-ctrl.js"); +require("./blog-service.js"); +require("./blog-details-directive.js"); +require("./blog-form-ctrl.js"); +require("./blogposts-ctrl.js"); diff --git a/src/js/entry.js b/src/js/entry.js new file mode 100644 index 0000000..b5bca0f --- /dev/null +++ b/src/js/entry.js @@ -0,0 +1,11 @@ +require("./gists-app.js"); +require("./gist-service.js"); + +require("./gists-ctrl.js"); +require("./gists-filters.js"); + + +require("./gist-form-ctrl.js"); +require("./single-gist-ctrl.js"); + +// require("./gist-date-ctrl.js"); diff --git a/src/js/gist-date-ctrl.js b/src/js/gist-date-ctrl.js new file mode 100644 index 0000000..e374f97 --- /dev/null +++ b/src/js/gist-date-ctrl.js @@ -0,0 +1,11 @@ +// require('./gists-app.js'); + +// Controller to make DATE work! +(function() { + + angular.module("gisty").controller("DateCtrl", ["$scope", function($scope) { + $scope.date = new Date(); + }]); + + +})(); diff --git a/src/js/gist-form-ctrl.js b/src/js/gist-form-ctrl.js new file mode 100644 index 0000000..966490c --- /dev/null +++ b/src/js/gist-form-ctrl.js @@ -0,0 +1,46 @@ +require("./gists-app.js"); + +(function() { +'use strict'; + + angular.module("gisty").controller("GistFormCtrl", ["GistService", "$routeParams", "$location", "$scope", function(GistService, $routeParams, $location, $scope){ + + $scope.save = saveGist; + + $scope.gist = {}; + + start(); + + // IF statement only works when edit + function start() { + + GistService.get($routeParams.id) + .then(successHandler, errorHandler); + $scope.gist.date = $scope.gist.date || new Date(Date.now()); + } + + function successHandler(response) { + var data = response.data; + console.log(data); + $scope.gist = response.data; + // $log.info('response', response); + } // object comes with property of data + + function errorHandler(response) { + $scope.error = response.data; + // $log.error('response', response); + } + + function saveGist () { + var method; + + method = $routeParams.id ? "update" : "create"; + GistService[method]($scope.gist).then(function (resp) { + $location.path("/gists/" + resp.data.id); + }); + } + }]); + +}()); + + diff --git a/src/js/gist-service.js b/src/js/gist-service.js new file mode 100644 index 0000000..2857b7f --- /dev/null +++ b/src/js/gist-service.js @@ -0,0 +1,49 @@ +var app = require("./gists-app.js"); + +(function () { + "use strict"; + + angular.module("gisty").service("GistService", ["$http", "token", function ($http, token) { + + var urlRoot = "https://api.github.com"; + var username = "toalina"; + + var Gist = { + get: function (id) { + if (angular.isDefined(id)) { + // return $githubGist(id).read(); + return $http.get(urlRoot + "/gists/" + id, { + headers: {'Authorization': 'token ' + token,} + }); + } else { + // return $http.get(urlRoot); + console.warn('root url'); + } + }, + update: function (model) { + return $http.patch(urlRoot + "/gists/" + model.id, model, { + headers: { + 'Authorization': 'token ' + '5586e7930bc963ecab29fef165246e6f0a90f248', + } + }); + }, + create: function (model) { + return $http.patch(urlRoot + "/gists/", model, { + headers: { + 'Authorization': 'token ' + token, + } + }); + }, + + delete: function (id) { + return $http.delete(urlRoot + "/gists/" + id, { + headers: { + 'Authorization': 'token ' + '5586e7930bc963ecab29fef165246e6f0a90f248', + } + }); + } + }; + return Gist; + }]); + +}()); diff --git a/src/js/gistlist-ctrl.js b/src/js/gistlist-ctrl.js new file mode 100644 index 0000000..234b34c --- /dev/null +++ b/src/js/gistlist-ctrl.js @@ -0,0 +1,31 @@ +require("./gists-app.js"); + +(function() { + 'use strict'; + + angular.module("gisty").controller("GistListCtrl", ["GistService", function(GistService) { + var vm = this; + + vm.gistList = []; + vm.delete = deleteGist; + + start(); + + function start() { + getGistList(); + } + + function getGistList() { + GistService.get().then(function (resp) { + vm.gistList = resp.data; + }); + } + + function deleteGist (gist) { + GistService.delete(gist).then(function() { + getGistList(); + }); + } + + }]); +}()); diff --git a/src/js/gists-app.js b/src/js/gists-app.js new file mode 100644 index 0000000..1c26eaa --- /dev/null +++ b/src/js/gists-app.js @@ -0,0 +1,53 @@ +var angular = require('angular'); +var route = require('angular-route'); + +(function() { + 'use strict'; + + var app = angular.module('gisty', ['ngRoute', 'gisty.config']). + + config(["$routeProvider", function ($routeProvider) { + $routeProvider + + ////route home page blog posts////////// + .when("/gists", { + templateUrl: "html/blogpost.html", + controller: "GistsCtrl", + }) + + /////form to make more blog posts/////// + .when("/gists/new", { + templateUrl: "html/form.html", + controller: "GistFormCtrl", + }) + .when("/gists/:id", { + templateUrl: "html/blog.html", + controller: "SingleGistCtrl", + }) + .when("/gists/:id/edit", { + templateUrl: "html/form.html", + controller: "GistFormCtrl", + }) + .otherwise({ + redirectTo: "/gists", + }); + }]); +})(); + + +///////===============///// +// STUFF +// /blogs/:gist_id/:hash/:filename +// /blogs?gist_url=https://....... (Maybe routeParams?) +// #/blogs?{{gist_url}}https://... + +// box + border-color: transparent; + } + &:hover { + color: color('accent'); + } + } + // Span for text for text styles + span { + @extend %border-circle; + text-transform: uppercase; + font-size: 0.5em; + text-align: center; + padding-top: 3.5em; + } +} +// Code for the circle +%border-circle { + position: absolute; + border: 0.1em solid color('secondary'); + border-radius: 50%; + width: 8em; + height: 4.5em; + top: 0.1em; + left: 0; + content:""; + z-index: -1; +} + + + diff --git a/src/sass/components/contact/_contact.scss b/src/sass/components/contact/_contact.scss new file mode 100644 index 0000000..4ff458e --- /dev/null +++ b/src/sass/components/contact/_contact.scss @@ -0,0 +1,39 @@ +.contact-info-wrapper { + text-align: center; + padding: 1em; + font-family: font-family('primary', 'regular'); + line-height: 1.5em; + @media screen and (min-width: 50em) { + padding: 2em; + width: 50em; + display: inline; + } +} +.address-wrapper { + padding-bottom: 1em; + @media screen and (min-width: 50em) { + float: left; + padding-left: 5em; + text-align: left; + margin-top: 3em; + } + address { + font-style: normal; + } +} +.phone-email-wrapper { + @media screen and (min-width: 50em) { + float: left; + padding-left: 5em; + text-align: left; + margin-top: 3em; + } + a { + text-decoration: none; + color: color($key: 'primary'); + &:hover { + color: color($key: 'accent'); + } + } +} + diff --git a/src/sass/components/contact/_index.scss b/src/sass/components/contact/_index.scss new file mode 100644 index 0000000..dab668e --- /dev/null +++ b/src/sass/components/contact/_index.scss @@ -0,0 +1,2 @@ +@import "contact-social-links"; +@import "contact"; diff --git a/src/sass/components/header/_header-logo.scss b/src/sass/components/header/_header-logo.scss new file mode 100644 index 0000000..04c1a9a --- /dev/null +++ b/src/sass/components/header/_header-logo.scss @@ -0,0 +1,5 @@ +.logo { + font-family: font-family('primary', 'medium'); + font-size: font-size('large'); + color: color('primary'); +} diff --git a/src/sass/components/header/_header-nav.scss b/src/sass/components/header/_header-nav.scss new file mode 100644 index 0000000..5c66c6f --- /dev/null +++ b/src/sass/components/header/_header-nav.scss @@ -0,0 +1,78 @@ +//colors +$color_alto_approx: color('primary'); + +@media screen and (max-width: 50em) { + .primary-nav-wrap { + ul { + float: right; + margin: 0; + padding: 0; + a { + display: block; + line-height: 32px; + padding: 0 15px; + } + li { + padding: 0 1em 0 0; + margin: 0 1em 0 0; + &.current-menu-item { + background: $color_alto_approx; + } + &:hover { + background-color: $color_alto_approx; + position: absolute; + > ul { + -webkit-transition: 2s 2s; + float: right; + display: block; + padding: 0 1em 0 0; + margin: 0 1em 0 0; + } + } + } + ul { + -webkit-transition: 2s 2s; + background-color: $color_alto_approx; + position: relative; + display: none; + top: 100%; + left: 0; + padding: 0 1em 0 0; + margin: 0 1em 0 0; + li { + width: 200px; + } + a { + line-height: 120%; + padding: 10px 15px; + } + ul { + top: 0; + } + } + } + } +} + +@media screen and (min-width: 50em) { + .mobile-nav { + display: none; + } + .main-nav { + li { + ul:hover { + display: block; + position: absolute; + } + } + li { + display: inline-block; + padding-right: 1em; + ul { + li { + display: none; + } + } + } + } +} diff --git a/src/sass/components/header/_header.scss b/src/sass/components/header/_header.scss new file mode 100644 index 0000000..86480d7 --- /dev/null +++ b/src/sass/components/header/_header.scss @@ -0,0 +1,21 @@ +.header-container { + background-color: color('primary'); + @include flex-box($align: center, $wrap: wrap, $direction: row, $justify: space-between); + align-content: flex-start; + padding: 4em 3em 4em 2em; + + h1 { + color: color('base'); + } + + a { + color: color('base'); + font-family: font-family('primary', 'regular'); + font-size: font-size('x-small'); + &:hover { + color: color('accent'); + } + } +} + + diff --git a/src/sass/components/header/_index.scss b/src/sass/components/header/_index.scss new file mode 100644 index 0000000..dcfe642 --- /dev/null +++ b/src/sass/components/header/_index.scss @@ -0,0 +1,3 @@ +@import "header-logo"; +@import "header-nav"; +@import "header"; diff --git a/src/sass/main.scss b/src/sass/main.scss new file mode 100644 index 0000000..a27d659 --- /dev/null +++ b/src/sass/main.scss @@ -0,0 +1,5 @@ +@import "bourbon"; +@import "base/index"; +@import "typography/index"; +@import "utils/index"; +@import "components/index"; diff --git a/src/sass/typography/_icons.scss b/src/sass/typography/_icons.scss new file mode 100644 index 0000000..5e04f9e --- /dev/null +++ b/src/sass/typography/_icons.scss @@ -0,0 +1,28 @@ +%icon-font-base { + font-family: 'icomoon'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; +} + +$iconPrimary: +(pinterest 1.5em "\e800") +(google 1.5em "\e801") +(twitter 1.5em "\e802") +(facebook 1.5em "\e803") +(linkedin 1.5em "\e804"); + +@each $iconP in $iconPrimary { + .icon-#{nth($iconP, 1)} { + @extend %icon-font-base; + font-size: #{nth($iconP, 2)}; + color: #1e1d24; + width: 100%; + &:before { + content: nth($iconP, 3); + } + } +} diff --git a/src/sass/typography/_index.scss b/src/sass/typography/_index.scss new file mode 100644 index 0000000..c8b0f44 --- /dev/null +++ b/src/sass/typography/_index.scss @@ -0,0 +1 @@ +@import "icons"; diff --git a/src/sass/utils/_functions.scss b/src/sass/utils/_functions.scss new file mode 100644 index 0000000..14b6f4f --- /dev/null +++ b/src/sass/utils/_functions.scss @@ -0,0 +1,17 @@ + +// Map-Get Function for Colors + +@function color($key: 'primary') { + @return map-get($colors, $key); +} + +//Map-Get Function for font-size: +@function font-size($key: 'x-small') { + @return map-get($font-size, $key); +} + +//Map-Get Function for Font-Family +@function font-family($font-name, $font-variant) { + @return map-get(map-get($font-family, $font-name), $font-variant); +} + diff --git a/src/sass/utils/_globalMixins.scss b/src/sass/utils/_globalMixins.scss new file mode 100644 index 0000000..3da3032 --- /dev/null +++ b/src/sass/utils/_globalMixins.scss @@ -0,0 +1,15 @@ +@mixin flex-box($align: null, $wrap: null, $direction: null, $justify: null, $basis: null) { + @include display(flex); + @include align-items($align); + @include flex-wrap($wrap); + @include flex-direction($direction); + @include justify-content($justify); + @include flex-basis($basis); +} + +@mixin flexitem { + -webkit-flex-grow: 1; + -webkit-flex-shrink: 0; + flex-grow: 1; + flex-shrink: 0; +} diff --git a/src/sass/utils/_index.scss b/src/sass/utils/_index.scss new file mode 100644 index 0000000..aa2ed81 --- /dev/null +++ b/src/sass/utils/_index.scss @@ -0,0 +1,2 @@ +@import "functions"; +@import "_globalMixins";