From 1847ff1b6fd2ee401ee6eaaf1f35705083dd54a0 Mon Sep 17 00:00:00 2001 From: lokesh_coder Date: Sat, 21 Oct 2017 09:46:54 -0700 Subject: [PATCH 01/10] init --- .gitignore | 32 + code/fontLibraries.js | 37 + code/snippets.js | 2084 ++++++ code/svgLibraries.js | 5 + config/path-config.json | 39 + config/task-config.js | 42 + package.json | 22 + public/doc/images/chrome.png | Bin 0 -> 1437 bytes public/doc/images/edge.png | Bin 0 -> 565 bytes public/doc/images/firefox.png | Bin 0 -> 1726 bytes public/doc/images/opera.png | Bin 0 -> 1406 bytes public/doc/images/safari.png | Bin 0 -> 1680 bytes public/favicon/android-chrome-192x192.png | Bin 0 -> 9978 bytes public/favicon/android-chrome-512x512.png | Bin 0 -> 31831 bytes public/favicon/apple-touch-icon.png | Bin 0 -> 7896 bytes public/favicon/browserconfig.xml | 9 + public/favicon/favicon-16x16.png | Bin 0 -> 1191 bytes public/favicon/favicon-32x32.png | Bin 0 -> 2047 bytes public/favicon/favicon.ico | Bin 0 -> 15086 bytes public/favicon/manifest.json | 18 + public/favicon/mstile-150x150.png | Bin 0 -> 6272 bytes public/favicon/safari-pinned-tab.svg | 111 + public/img/checked.png | Bin 0 -> 463 bytes public/img/checked/001.png | Bin 0 -> 588 bytes public/img/checked/002.png | Bin 0 -> 460 bytes public/img/checked/003.png | Bin 0 -> 402 bytes public/img/checked/004.png | Bin 0 -> 322 bytes public/img/logo/pclogo.png | Bin 0 -> 80116 bytes public/img/logo/pclogo2.png | Bin 0 -> 66497 bytes public/img/open-iconic/x-6x.png | Bin 0 -> 706 bytes public/img/open-iconic/x-8x.png | Bin 0 -> 929 bytes public/index.html | 0 public/manifest.json | 27 + public/ngsw-worker.js | 2451 +++++++ public/ngsw.json | 56 + public/sprite/open-iconic.html | 929 +++ public/sprite/open-iconic.min.svg | 1 + public/sprite/open-iconic.svg | 452 ++ public/sprite/sprite.html | 926 +++ public/sprite/sprite.min.svg | 1 + public/sprite/sprite.svg | 673 ++ public/stylesheets/app.css | 5613 +++++++++++++++++ public/svg/feathers/check-circle.svg | 1 + public/svg/feathers/check-square.svg | 1 + public/svg/open-iconic/task.svg | 3 + src/html/data/global.js | 3 + src/html/data/global.json | 3 + src/html/index.html | 8 + src/html/layouts/application.html | 116 + src/html/layouts/content.html | 92 + src/html/layouts/header.html | 48 + src/html/layouts/partials/common.html | 61 + src/html/layouts/sections/animations.html | 10 + src/html/layouts/sections/basic_checkbox.html | 11 + src/html/layouts/sections/colors.html | 57 + src/html/layouts/sections/disabled.html | 5 + src/html/layouts/sections/font_icons.html | 6 + src/html/layouts/sections/image.html | 6 + src/html/layouts/sections/installation.html | 26 + src/html/layouts/sections/lock.html | 5 + src/html/layouts/sections/more.html | 141 + src/html/layouts/sections/plain.html | 5 + src/html/layouts/sections/radio_buttons.html | 11 + src/html/layouts/sections/scalability.html | 8 + src/html/layouts/sections/scss_customize.html | 5 + src/html/layouts/sections/size.html | 6 + src/html/layouts/sections/states.html | 12 + src/html/layouts/sections/svg.html | 6 + src/html/layouts/sections/switch.html | 9 + .../layouts/sections/tested_font_icons.html | 14 + src/html/layouts/sections/tested_svg.html | 7 + src/html/layouts/sections/toggle.html | 11 + src/html/macros/helpers.html | 6 + src/html/shared/app-icons.html | 2 + src/javascripts/app.js | 3 + src/javascripts/modules/collapse.js | 21 + src/javascripts/modules/example.js | 6 + src/javascripts/modules/indeterminate.js | 10 + src/javascripts/modules/index.js | 32 + src/javascripts/modules/showcode.js | 20 + src/javascripts/modules/slider.js | 11 + src/static/doc/images/chrome.png | Bin 0 -> 1437 bytes src/static/doc/images/edge.png | Bin 0 -> 565 bytes src/static/doc/images/firefox.png | Bin 0 -> 1726 bytes src/static/doc/images/opera.png | Bin 0 -> 1406 bytes src/static/doc/images/safari.png | Bin 0 -> 1680 bytes src/static/favicon/android-chrome-192x192.png | Bin 0 -> 9978 bytes src/static/favicon/android-chrome-512x512.png | Bin 0 -> 31831 bytes src/static/favicon/apple-touch-icon.png | Bin 0 -> 7896 bytes src/static/favicon/browserconfig.xml | 9 + src/static/favicon/favicon-16x16.png | Bin 0 -> 1191 bytes src/static/favicon/favicon-32x32.png | Bin 0 -> 2047 bytes src/static/favicon/favicon.ico | Bin 0 -> 15086 bytes src/static/favicon/manifest.json | 18 + src/static/favicon/mstile-150x150.png | Bin 0 -> 6272 bytes src/static/favicon/safari-pinned-tab.svg | 111 + src/static/img/checked.png | Bin 0 -> 463 bytes src/static/img/checked/001.png | Bin 0 -> 588 bytes src/static/img/checked/002.png | Bin 0 -> 460 bytes src/static/img/checked/003.png | Bin 0 -> 402 bytes src/static/img/checked/004.png | Bin 0 -> 322 bytes src/static/img/logo/pclogo.png | Bin 0 -> 80116 bytes src/static/img/logo/pclogo2.png | Bin 0 -> 66497 bytes src/static/img/open-iconic/x-6x.png | Bin 0 -> 706 bytes src/static/img/open-iconic/x-8x.png | Bin 0 -> 929 bytes src/static/manifest.json | 27 + src/static/ngsw-worker.js | 2451 +++++++ src/static/ngsw.json | 56 + src/static/sprite/open-iconic.html | 929 +++ src/static/sprite/open-iconic.min.svg | 1 + src/static/sprite/open-iconic.svg | 452 ++ src/static/sprite/sprite.html | 926 +++ src/static/sprite/sprite.min.svg | 1 + src/static/sprite/sprite.svg | 673 ++ src/static/svg/feathers/check-circle.svg | 1 + src/static/svg/feathers/check-square.svg | 1 + src/static/svg/open-iconic/task.svg | 3 + src/stylesheets/app.scss | 8 + src/stylesheets/partials/_bootstrap.scss | 25 + src/stylesheets/partials/_core.scss | 218 + src/stylesheets/partials/_gylph.scss | 32 + .../partials/_pretty-checkbox.scss | 0 src/stylesheets/partials/_reset.scss | 40 + src/stylesheets/partials/_slider.scss | 99 + src/stylesheets/partials/_system-fonts.scss | 57 + src/stylesheets/partials/_varaiables.scss | 5 + 126 files changed, 20479 insertions(+) create mode 100644 .gitignore create mode 100644 code/fontLibraries.js create mode 100644 code/snippets.js create mode 100644 code/svgLibraries.js create mode 100644 config/path-config.json create mode 100644 config/task-config.js create mode 100644 package.json create mode 100644 public/doc/images/chrome.png create mode 100644 public/doc/images/edge.png create mode 100644 public/doc/images/firefox.png create mode 100644 public/doc/images/opera.png create mode 100644 public/doc/images/safari.png create mode 100644 public/favicon/android-chrome-192x192.png create mode 100644 public/favicon/android-chrome-512x512.png create mode 100644 public/favicon/apple-touch-icon.png create mode 100644 public/favicon/browserconfig.xml create mode 100644 public/favicon/favicon-16x16.png create mode 100644 public/favicon/favicon-32x32.png create mode 100644 public/favicon/favicon.ico create mode 100644 public/favicon/manifest.json create mode 100644 public/favicon/mstile-150x150.png create mode 100644 public/favicon/safari-pinned-tab.svg create mode 100644 public/img/checked.png create mode 100644 public/img/checked/001.png create mode 100644 public/img/checked/002.png create mode 100644 public/img/checked/003.png create mode 100644 public/img/checked/004.png create mode 100644 public/img/logo/pclogo.png create mode 100644 public/img/logo/pclogo2.png create mode 100644 public/img/open-iconic/x-6x.png create mode 100644 public/img/open-iconic/x-8x.png create mode 100644 public/index.html create mode 100644 public/manifest.json create mode 100644 public/ngsw-worker.js create mode 100644 public/ngsw.json create mode 100644 public/sprite/open-iconic.html create mode 100644 public/sprite/open-iconic.min.svg create mode 100644 public/sprite/open-iconic.svg create mode 100644 public/sprite/sprite.html create mode 100644 public/sprite/sprite.min.svg create mode 100644 public/sprite/sprite.svg create mode 100644 public/stylesheets/app.css create mode 100644 public/svg/feathers/check-circle.svg create mode 100644 public/svg/feathers/check-square.svg create mode 100644 public/svg/open-iconic/task.svg create mode 100644 src/html/data/global.js create mode 100644 src/html/data/global.json create mode 100644 src/html/index.html create mode 100644 src/html/layouts/application.html create mode 100644 src/html/layouts/content.html create mode 100644 src/html/layouts/header.html create mode 100644 src/html/layouts/partials/common.html create mode 100644 src/html/layouts/sections/animations.html create mode 100644 src/html/layouts/sections/basic_checkbox.html create mode 100644 src/html/layouts/sections/colors.html create mode 100644 src/html/layouts/sections/disabled.html create mode 100644 src/html/layouts/sections/font_icons.html create mode 100644 src/html/layouts/sections/image.html create mode 100644 src/html/layouts/sections/installation.html create mode 100644 src/html/layouts/sections/lock.html create mode 100644 src/html/layouts/sections/more.html create mode 100644 src/html/layouts/sections/plain.html create mode 100644 src/html/layouts/sections/radio_buttons.html create mode 100644 src/html/layouts/sections/scalability.html create mode 100644 src/html/layouts/sections/scss_customize.html create mode 100644 src/html/layouts/sections/size.html create mode 100644 src/html/layouts/sections/states.html create mode 100644 src/html/layouts/sections/svg.html create mode 100644 src/html/layouts/sections/switch.html create mode 100644 src/html/layouts/sections/tested_font_icons.html create mode 100644 src/html/layouts/sections/tested_svg.html create mode 100644 src/html/layouts/sections/toggle.html create mode 100644 src/html/macros/helpers.html create mode 100644 src/html/shared/app-icons.html create mode 100644 src/javascripts/app.js create mode 100644 src/javascripts/modules/collapse.js create mode 100644 src/javascripts/modules/example.js create mode 100644 src/javascripts/modules/indeterminate.js create mode 100644 src/javascripts/modules/index.js create mode 100644 src/javascripts/modules/showcode.js create mode 100644 src/javascripts/modules/slider.js create mode 100644 src/static/doc/images/chrome.png create mode 100644 src/static/doc/images/edge.png create mode 100644 src/static/doc/images/firefox.png create mode 100644 src/static/doc/images/opera.png create mode 100644 src/static/doc/images/safari.png create mode 100644 src/static/favicon/android-chrome-192x192.png create mode 100644 src/static/favicon/android-chrome-512x512.png create mode 100644 src/static/favicon/apple-touch-icon.png create mode 100644 src/static/favicon/browserconfig.xml create mode 100644 src/static/favicon/favicon-16x16.png create mode 100644 src/static/favicon/favicon-32x32.png create mode 100644 src/static/favicon/favicon.ico create mode 100644 src/static/favicon/manifest.json create mode 100644 src/static/favicon/mstile-150x150.png create mode 100644 src/static/favicon/safari-pinned-tab.svg create mode 100644 src/static/img/checked.png create mode 100644 src/static/img/checked/001.png create mode 100644 src/static/img/checked/002.png create mode 100644 src/static/img/checked/003.png create mode 100644 src/static/img/checked/004.png create mode 100644 src/static/img/logo/pclogo.png create mode 100644 src/static/img/logo/pclogo2.png create mode 100644 src/static/img/open-iconic/x-6x.png create mode 100644 src/static/img/open-iconic/x-8x.png create mode 100644 src/static/manifest.json create mode 100644 src/static/ngsw-worker.js create mode 100644 src/static/ngsw.json create mode 100644 src/static/sprite/open-iconic.html create mode 100644 src/static/sprite/open-iconic.min.svg create mode 100644 src/static/sprite/open-iconic.svg create mode 100644 src/static/sprite/sprite.html create mode 100644 src/static/sprite/sprite.min.svg create mode 100644 src/static/sprite/sprite.svg create mode 100644 src/static/svg/feathers/check-circle.svg create mode 100644 src/static/svg/feathers/check-square.svg create mode 100644 src/static/svg/open-iconic/task.svg create mode 100644 src/stylesheets/app.scss create mode 100644 src/stylesheets/partials/_bootstrap.scss create mode 100644 src/stylesheets/partials/_core.scss create mode 100644 src/stylesheets/partials/_gylph.scss create mode 100644 src/stylesheets/partials/_pretty-checkbox.scss create mode 100644 src/stylesheets/partials/_reset.scss create mode 100644 src/stylesheets/partials/_slider.scss create mode 100644 src/stylesheets/partials/_system-fonts.scss create mode 100644 src/stylesheets/partials/_varaiables.scss diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..75a0854 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Node +node_modules +npm-debug.log +package-lock.json +.npmrc + +# Yarn +yarn-error.log +yarn.lock + +# JetBrains +.idea/ + +# VS Code +.vscode/ +.history + +# Windows +Thumbs.db +Desktop.ini + +# Mac +.DS_Store + +# Temporary files +coverage/ +docs +tmp +test + +# Logs +.log diff --git a/code/fontLibraries.js b/code/fontLibraries.js new file mode 100644 index 0000000..a0b238d --- /dev/null +++ b/code/fontLibraries.js @@ -0,0 +1,37 @@ +module.exports = [ + { + name: 'Font awesome', + code: 'checkbox_fonticon_fontawesome', + link: 'http://fontawesome.io/icons/' + }, + { + name: 'Bootstrap Glyphicons', + code: 'checkbox_fonticon_glyphicon', + link: 'http://fontawesome.io/icons/' + }, + { + name: 'Material icon ( MDI )', + code: 'checkbox_fonticon_mdi', + link: 'https://materialdesignicons.com/' + }, + { + name: 'Material icon ( ZMDI )', + code: 'checkbox_fonticon_zmdi', + link: 'http://zavoloklom.github.io/material-design-iconic-font/icons.html' + }, + { + name: 'Typeicons', + code: 'checkbox_fonticon_typcn', + link: 'http://www.typicons.com/' + }, + { + name: 'Ion icons', + code: 'checkbox_fonticon_ion', + link: 'http://ionicons.com/' + }, + { + name: 'Material icon ( Google )', + code: 'checkbox_fonticon_gmdi', + link: 'https://material.io/icons' + } +]; \ No newline at end of file diff --git a/code/snippets.js b/code/snippets.js new file mode 100644 index 0000000..b0dc957 --- /dev/null +++ b/code/snippets.js @@ -0,0 +1,2084 @@ +const c = {}; + +c.install_cli = +` + > yarn add pretty-checkbox //or + > npm install pretty-checkbox +`; + +c.install_cdn = +` + https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css +`; + +c.install_import = +` + @import '~pretty-checkbox/src/pretty-checkbox.scss'; +`; + +c.install_basic = +` +
+ +
+ +
+
+`; + +c.checkbox_basic_square = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_basic_round = +` + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + +c.checkbox_basic_curve = + ` + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + +c.checkbox_switch = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +/* COLORS */ + + +c.checkbox_colors_solid = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_default_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_default_fill = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_default_thick = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + +c.checkbox_colors_default_fill_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_default_thick_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + +c.checkbox_colors_curve = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_curve_fill = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_curve_thick = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + + +c.checkbox_colors_curve_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_curve_fill_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_curve_thick_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + + + +c.checkbox_colors_round = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_round_fill = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_round_thick = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + + +c.checkbox_colors_round_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_round_fill_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +c.checkbox_colors_round_thick_outline = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + + +c.checkbox_colors_switch = +` + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + + +c.checkbox_colors_mixed = +` + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+`; + +/* ANIMATIONS */ + +c.checkbox_animations_smooth = +` +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; +c.checkbox_animations_jelly = +` + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; +c.checkbox_animations_tada = +` + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; +c.checkbox_animations_rotate = +` + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; +c.checkbox_animations_pulse = +` + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+`; + +/* FONT ICONS */ + +c.checkbox_font_icons = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; + +/* SVG */ + +c.checkbox_svg = +` +
+ +
+ + + + + +
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+
+ + +`; + +/* IMAGE */ + +c.checkbox_image = +` + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +`; + +/* PLAIN */ +c.checkbox_plain = +` + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+`; +/* TOGGLE */ +c.checkbox_toggle_basic = +` +
+ +
+ +
+
+ +
+
+`; + +c.checkbox_toggle_icon = +` +
+ +
+ + +
+
+ + +
+
+`; +c.checkbox_toggle_icon_color = +` +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; +c.checkbox_toggle_plain = +` +
+ +
+ + +
+
+ + +
+
+`; +c.checkbox_toggle_icon_only = +` + +
+ +
+ + +
+
+ + +
+
+`; + +/* DISABLED */ +c.disabled = +` + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+`; + +/* LOCKED */ +c.locked = +` + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+`; + +/* STATES */ +c.checkbox_state_hover = +` +
+ +
+ +
+
+ +
+
+`; + +c.checkbox_state_focus = +` +
+ +
+ +
+
+`; +c.checkbox_state_indeterminate = +` +
+ +
+ + +
+
+ + +
+
+`; + + +/* FONT ICON LIBRARIES */ + +c.checkbox_fonticon_fontawesome = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +`; + +c.checkbox_fonticon_glyphicon = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; + +c.checkbox_fonticon_mdi = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; + +c.checkbox_fonticon_zmdi = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; + +c.checkbox_fonticon_typcn = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; + +c.checkbox_fonticon_ion = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+`; + +c.checkbox_fonticon_gmdi = +` +
+ +
+ done + +
+
+ +
+ +
+ clear + +
+
+ +
+ +
+ favorite_border + +
+
+ favorite + +
+
+`; + +/* SVG LIBRARIES */ +c.checkbox_svg_uikit = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; +c.checkbox_svg_feathers = + ` + +
+ +
+ + +
+
+ + +
+ +
+ + + + +
+
+`; + +/* SASS SETTINGS */ +c.sass_settings = +` + // If you felt the name is not-so-pretty, + // you can always change! + + $pretty--class-name: pretty; + + // are you sure, you wanna change my handpicked + // awesome super duper colors? + + $pretty--color-default:#bdc3c7; + $pretty--color-primary:#428bca; + $pretty--color-info:#5bc0de; + $pretty--color-success:#5cb85c; + $pretty--color-warning:#f0ad4e; + $pretty--color-danger:#d9534f; + $pretty--color-dark:#5a656b; + + // uh, boring z-index stuff, who cares. + + $pretty--z-index-back:0; + $pretty--z-index-between:1; + $pretty--z-index-front:2; + + // nobody will change this. + + $pretty--debug:false; + $pretty--dev-err:'Invalid input type!'; +`; +c.sass_import = +` + /* REQUIRED */ + @import '~pretty-checkbox/scss/variables'; + @import '~pretty-checkbox/scss/core'; + + /* OPTIONALS */ + @import '~pretty-checkbox/scss/elements/default/fill'; + @import '~pretty-checkbox/scss/elements/default/outline'; + @import '~pretty-checkbox/scss/elements/default/thick'; + + @import '~pretty-checkbox/scss/elements/font-icon/general'; + + @import '~pretty-checkbox/scss/elements/svg/general'; + + @import '~pretty-checkbox/scss/elements/image/general'; + + @import '~pretty-checkbox/scss/elements/switch/general'; + @import '~pretty-checkbox/scss/elements/switch/fill'; + @import '~pretty-checkbox/scss/elements/switch/slim'; + + @import '~pretty-checkbox/scss/extras/toggle'; + @import '~pretty-checkbox/scss/extras/plain'; + @import '~pretty-checkbox/scss/extras/round'; + @import '~pretty-checkbox/scss/extras/curve'; + @import '~pretty-checkbox/scss/extras/animation'; + @import '~pretty-checkbox/scss/extras/disabled'; + @import '~pretty-checkbox/scss/extras/locked'; + @import '~pretty-checkbox/scss/extras/colors'; + @import '~pretty-checkbox/scss/extras/print'; + + @import '~pretty-checkbox/scss/states/hover'; + @import '~pretty-checkbox/scss/states/focus'; + @import '~pretty-checkbox/scss/states/indeterminate'; +`; + +/* RADIO */ + +c.radio_basic = +` +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + +c.radio_colors = +` +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + +c.radio_icons = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; + +c.radio_icons_solid = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; + +c.radio_plain = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; +c.radio_animations = +` +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+`; + +c.radio_switch = +` +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+`; + +/* SCALABILITY */ +c.scalability = +` +
+
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+`; + +/* BIGGER */ +c.bigger = +` +
+ +
+ done + +
+
+ +
+ +
+ +
+
+`; +module.exports = c; diff --git a/code/svgLibraries.js b/code/svgLibraries.js new file mode 100644 index 0000000..40aac20 --- /dev/null +++ b/code/svgLibraries.js @@ -0,0 +1,5 @@ +module.exports = [{ + name: 'UIKit', + code: 'checkbox_svg_uikit', + link: 'https://getuikit.com/docs/icon' +}]; \ No newline at end of file diff --git a/config/path-config.json b/config/path-config.json new file mode 100644 index 0000000..6b2020b --- /dev/null +++ b/config/path-config.json @@ -0,0 +1,39 @@ +{ + "src": "./src", + "dest": "./public", + + "html": { + "src": "html", + "dest": "./" + }, + + "static": { + "src": "static", + "dest": "./" + }, + + "javascripts": { + "src": "javascripts", + "dest": "javascripts" + }, + + "stylesheets": { + "src": "stylesheets", + "dest": "stylesheets" + }, + + "images": { + "src": "images", + "dest": "images" + }, + + "fonts": { + "src": "fonts", + "dest": "fonts" + }, + + "icons": { + "src": "icons", + "dest": "images" + } +} diff --git a/config/task-config.js b/config/task-config.js new file mode 100644 index 0000000..b4227de --- /dev/null +++ b/config/task-config.js @@ -0,0 +1,42 @@ +var c = require("../code/snippets"); +var f = require("../code/fontLibraries"); +var s = require("../code/svgLibraries"); + +module.exports = { + html : true, + images : true, + fonts : true, + static : true, + svgSprite : true, + ghPages : true, + stylesheets : true, + + javascripts: { + entry: { + // files paths are relative to + // javascripts.dest in path-config.json + app: ["./app.js"] + } + }, + + html: { + dataFile: null, + dataFunction:function(){ + c.svgLibraries=s; + c.fontIconLibraries=f; + return c + } + }, + + browserSync: { + server: { + // should match `dest` in + // path-config.json + baseDir: 'public' + } + }, + + production: { + rev: true + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b433beb --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "blendid", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "blendid": "^4.3.1", + "bootstrap": "4.0.0-beta", + "pretty-checkbox": "^3.0.0" + }, + "scripts": { + "start": "yarn run blendid", + "build": "yarn run blendid -- build" + }, + "gh-pages-deploy": { + "staticpath": "public", + "prep": [ + "build" + ], + "noprompt": false + } +} diff --git a/public/doc/images/chrome.png b/public/doc/images/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3a766afa9f130f2fc57bcb7f4f7dc6f533e3a2 GIT binary patch literal 1437 zcmV;O1!DS%P)N6-?dXn*sO{L3#yQ`;N#p-$ z^Yfk@^5H`UWPnW{`Lyl-%IDYkaJUjg7)%{p`{LK_2L!O~jW3C5#R>t=BH7hXeI%2r z%!2ms6QIGhuXk%NXP!md-cLDSSFR}#1|y8kg!rG(>;C{auikQ%#no$VF~qKX+=Cda z>U1KIm#kj1X|97$t8Si*XF~!x5+K2NG66xBil2vN%U%!cobyE>F9tB(Dp`7;IP1IktaeZ=O7OQjGdKqIRSA4}T1JM&33wyZH8Z;CZjT^X)cI z*_n?%eV4uB)ScudJvtWXgaA#;vIjqe!Gj;c;lT!Eu)=myUG-arSN)Nq+o4ECQD}ad z5(;L-UhfXT+14KO0B*kHh97J2HwTg5{hQ0;t&TRtZb7ITHofL`?7Hg{`Oz^gSMP3- z;Cky4&%9^idZV9_FaHevewPryg1{_eL=ip?yd_zYY4Q68cShZ0zrMo;Zt%}7#Oesw ze9Yt6eU~Tlj&C1jSR1_}AmG%?N-o$eKK!(&aLemof%g0!ilt~i+l+ab-50=a^y8PT zZ9HEHtTjnxC)u0+d?k0k@&Gsf#<%(8#kb_ti)UFj2(%dlqyUFT&K+;i$obiA*Psn+7!5XX)vktKVGH2`1Wkrs$GCc5%f5O8 zacV7Q8G?baAheXZ?Bp&mKte#b&Rn{_&tGq`hSyY?)(im}+Zdlaxzi>#00a_}2)G}T zbkrA2WMJUN4>tvl#%XS{HZoH|3Lsc8MVPI`b=M}=cK71-G*|*O2|AjcL*c5MZ{8slX>ag6TPl8J#tzXS#WS9rn=7a?o|*E{gt2@AdCT87`ZwI+m~W6 zz>g7j=P|xjW_i)$8KgBg|Y<+Er0gU1$s=GNCVyn$dE zU;8Mbw$)DoY~7Ea7XXh{{*i(`9cY2Xgbr0ROr;LjT(XiV=Yp$t^XTPA`Nh4!YfXmF zdvn&0foH@)3@MIk0a)fO-VOJ|Y$K3?2m)YLcR-f2b$Eb0TeCWfkKCpMUSco~&p>k5 zu9-5w1)ykLHhbc|x!xt$4uD(s`+5=nf>{q}HPMNHBxm1r#XGNA^PXFb$TdV8S3VzJ zR<+N6u2ZxCc!<&1dW&r?BYFzQSmO_oYpU!N}h9_nT6^B zca*b!KAdUif0=_p{NG<@dCGm5)O9YrW@rY502K#kZ{ykL zc_e3ZcK%aUKL68Sw!UN4;b!8ezZftHId@aYy=3D`zH#1J_Bgxtnh)O5SH9_5GwhtU rgTMUC{{4UeUiaelu^MFo&LaI6iCqb{!i7I^00000NkvXXu0mjf6)wSU literal 0 HcmV?d00001 diff --git a/public/doc/images/edge.png b/public/doc/images/edge.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2d4ee7ad6f0720354d5abbf5bb6cf004a94d7f GIT binary patch literal 565 zcmV-50?Pe~P);FS^F^-Ceyvo&O2qjdu!MG?h=F z51OEiG{br~Os4!x6msp_q3MU8vIiCPz9N!DWIN0>{#Dm`QCXzG9i`e;?=s*d2I@H( zlIWU9_m{mOE}Lh_YO`pL52&i=T)2nFNaYo_SMXWHlt|aicxHPS zz-F*CR)8|5!b=>&Q5*?yNPB5mtN>L^PtKSX^#4B-ptzaXk0`8fN!>|nXiva@ub(|G zQsaSHax2VHp2U;bw399}TeEqVL@d)SDCRn2>uGN+#HPqHW|(T&Wvc6EoWuf5z;vv` zHSgp-;I|bo$Yk%x{-JDs1T4?JaRZpKUhOh4e=uL=i|2D#1{y!laC{2fc;7H8Bm;YN zdX)l@*^&`RYYoF9imkJo0gSkNS6R9+8vpUL}AQ1e<%yf#uJ6;K1SFssn!= z8lLDGAg-b*72BtsGDEsvd_TsZWM!$zwTi58W}smnzEaIyH_RM9@!gMo`=M|A_#1)z z(8s$3P`Uagt305zp8IIh@L%w$x$m49P1Bi8<5%-%Htn02e~v$N9>jM#FJy91;M9d+0r{ zK6L8+zzg>M;hx3|c0I}gbfrJ*oibDK;zCqKB&*0ZAnUK#)BZ0le-gvvF|A-SwyN-p z5(5N*&xQL3*|>13+;!sufA;c==*(X6^xmFterWB(&+iuPtOl;MkW@>7w=vF9iBrKTl;9GuQ+y_G+{TrwU(Ely9>jU)8rZQWZg7NraENqd2$!cE z?;GO$3;qewD2_RxtU$pV{>7SlnU?o(8Azx`oj}F)Tp}!8*5WHy#(eP~3y5rvZ!)T~ zM9YFIZBk_|I(f<6H?1OTUku5hG0`qY{{Q<2?t69b7roAa_7olJT7vO`>#tH}Fm}Yy z*P6-sjcIfm4T3Nu#Zn~=T#;QrB1KATc#Ng@U&F&6yo0p)Gl^#hdd0rE>&E5{tnkud zmAoUNsT3(etWso#!Gk5ITrY39>f!X%46!#znp(2T!bK(&3*I)<$TL zCusX1R}F{kyth|+MXFI=U~C1}0v>c4N)TIiENJnNGyD1V*+nRp-l$;3)D}ann6YMs zpN-*ML6w4+9D|eHP_?u*@&nnqAWHYFF(=H1=WwhnxH`{;Yp=Q-e53SC0%II+UUd;4 zSpRQcvFbv;biY6IornC6pFH_@ter7PmK(BW!u;7C9 zhOeZ|bIzw^m$jnCC^i7GN@qey6X5~pogxs&&_2VDep%<=-c$zjHn9yDZNh!;ewxio z25C-Il;d?R`Ygo>ehlCxCqSM4zR2X2Mi6Tt6foEEm8>It^{QU_MtnvJkE^7YL;^x` z@-n?vhevKoX}1HKLmu7)GQQ7n_K>*>z&m_}<-UK-|MJ`I=9086TZ|D0YC=F1y1SHh zOA8KrF_)gH(@G1BOE8|#z2+y}ZArq;$;!xq07;bLQOjR14A@<7jRMFoH?6Qh<#{|L z&-ry+6BoyrID#-x#DiL_gpsoET*$sgfD>iOq>6PjbEeEv&b5W+pb%SE{=Ki}nTg`x zz}*1kYrEIdJyICJsi&Xxth_Alk}`_$q8mr72Uw^@N)Uips4SGe!3h*CFsd$ZifJbt zTO8;22Kw8T80mk+5&+(KLBss9(TF}cYrzkv$NoctSSmk4q7V}V;CqU(AlES<-VN6{ zRU_h>6JiI>RsX(xBzY##x1c99fb;%6-~jmh$b?lTdVYWZ8(%+bj@#H>dsug2sR}d? zQ9lqo3)XUIu5mL`~1=NU;aFJ@{^;=p}CxkFwKDl89K*gPO4fNPs UB<7mDGynhq07*qoM6N<$f-?hZy8r+H literal 0 HcmV?d00001 diff --git a/public/doc/images/opera.png b/public/doc/images/opera.png new file mode 100644 index 0000000000000000000000000000000000000000..f694f222a8f7c637f65d9253c6349344e4a0fd44 GIT binary patch literal 1406 zcmV-^1%djBP)<>wd6Un9^cWM-9c z1EVunNyP;UWZdchoj9E9!pdZp@Q2CE6F|b9?i&?dJy-I8aSb^+u!Jl11$oV@1MnkR zGP5lDG$%Y9SSCnKMGcX0kVB~cmO}me!1+I)*`cSC7{GG{`C2~DU7pmlL;-&>ONw(` z_?A%Q)dD5J5EaZAN!naWTEtmu0+Q1pE(YPJ=2d3C2Wb6m^r&9hi2S870Kld~zXHBv zwzRJLLx-#Zyg?=+!G&&1w#Ju-Pjw~|%=ZU~db7ldxQdH3=Yl=MK6?sqxE4jzjmQrx zH6B`?t$^>s@`k!UI+z8dfPlDW5^w*^$jNtoJW2kuI*ihXt1e%u`r2OACxB(CnE`=_ zoNWmY0S<s2P}m zdC+5N_XWV$@+tw4a)nPQ(#knUM({R+7_^<|XkahH)1IGBX3{de6<|!w`U?h~>f%CxS6OMPjNFe7iF?aX(iW zGm(CSX=?NXWEeM7&*cCpgkj^>22{WRlUtehW8b`RVIs)aimg`19~O}%9z1{m9$O0# zadVY06oAldb>tje@qGsle{;izR&eW$|Nra2A649=uSfziv-|%cX%&F>;xM{lnm)Z! z0YF==M+B-|X)4S92q5Pk_AtKxx1EdDYHnAElngTgGtk)V8Nm0Vz+G2ptM0W-0pB%S zIy0Bs;Y5mn0n#;#|1mtg4rodh_R^Rz#kLarnQUL`tGxqH8Q}+Vm$1YtEEL$@_ zyKs4oMlO(RMR=TpFznSFgu-mEnNtSP?dsZ#uB30dwT0|Zd- zF@V?z?wG}U-rnYe|_7Rv*oqwqIy1hQ>glUflO2l zl_2gWLw_0?dL*!Q;TGx!ImKIok30D05b2-)PW#)yfuB6)adJ$M>o)yek9{21`tdLR zCQqe0{qkx#CG#!lT|-!l0>`1UjO~4NX9zHWb9?Wl-#vQJZd5C`03_#ElDA2Zga7~l M07*qoM6N<$f;OG2ApigX literal 0 HcmV?d00001 diff --git a/public/doc/images/safari.png b/public/doc/images/safari.png new file mode 100644 index 0000000000000000000000000000000000000000..63b4d02cfbf853122a533251e6238e1f8df84f5d GIT binary patch literal 1680 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 V|0DIgxr8AAx>|;s_392W{{!8(h5!Hn literal 0 HcmV?d00001 diff --git a/public/favicon/android-chrome-512x512.png b/public/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d4aeb2de8124565693e290f5d1d17a347a19bafd GIT binary patch literal 31831 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 z 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 literal 0 HcmV?d00001 diff --git a/public/favicon/apple-touch-icon.png b/public/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..91b419cb14798bc5f7c03d8881c241f67b4c29f2 GIT binary patch literal 7896 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 + + + + + #da532c + + + diff --git a/public/favicon/favicon-16x16.png b/public/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..06f909a178840d5c3fae7228d7febda75952dc2e GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>t#=yCHkPfp(QLdKq=t?N=olb^+qjTH10sS(LKKu7 zc+jA~9!(0)1*$1N^Q6H5p8|;Y;aZRxKqYAyIZ*BX-MbGJ4Is5re-s> z<<9?jt|WPR_1C<>&pI+OOQpMXMNQ)H=xi*PZ!4!iOb0e z2?;4ro<0^A5D^j+Oif{6ax*OC^wi|cl#H~joWQVnMbn~5o4Qub+SRs9EW#n$J-lCV zjTqAxULIG8nFoB*(v*|M*o1?Pi@Cki1g@XDb?jQ-!FvZUp1j#QbL!2jXYU@qe75^w z^vUDb&)+vvFwnT6rZQ#bOhq5fIl4+lT2^Xidh=`*4LcQYDz++{>e?z>O`bW^P}{ow zpo)3_WbOS63>qX~r0@nCv;AH4NGNZ8P@0^A{pvM)ni@B5^4c!-#K7&?tXp@i+!kDZ zEv?{}KP4k8kMU&3)@_Zp>MKL8^L^Ay4s-8wNS_|b>Y>iCt3*%q#Dhv;=44PUag8WR zNi0dVN-jzTQVd20hUU742D*mkAqFN^CgxU#M%o5ORt5&i5}VecXvob^$xN%ntwG3@ zO9-eTyecH3Bq*_5p`a)~Ei)%op`@}PRUxyWB$Jc1ICAEQ%n|m}4IT@;^cY@=3zmFxGMx&v Og2B_(&t;ucLK6Ty4+hNu literal 0 HcmV?d00001 diff --git a/public/favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a582aa18f9c342e7fb639b549ee73e618f0952c6 GIT binary patch literal 2047 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081Jlz0pAc7|g3|4GOSj)C z-FB}G#JE?y?M{R7hO$*R8%;KpExq1gys@h6c=^I>^~M{Dcibu2akqRsQ02X{9rw$2 z+$#klkgj2ifI$I4KtICSa1l&FpcFhb(9~mcv1-Sv3}Pmx6tW0@dvTe7M;BZQ$UwFT z$VQezlZ8k@)FUf{n}94xYc|l*|NsAct$SP!Oz2-qg8YJkG#0>P7*jWCN?V4#7!#v% z(Vpi&|GYof@4zWuefQs|4caz`{+?YkW9rf)FBC!^U2iZKWY)^uzeO?l<+~1fKB4>f zf`oTHaL)S}A$4&wi)yY!ym;}gzh$f|MET-Q|2cW%yB9~~naM0(JAZyzY5hU|`a5T4 zi>04`?e*h~{dKhZ-xfxV39rs43*>BLlRT9ueXmL?Ye)2VS;5o`(Z_kY*R==iU*=v` zVrl#O>n`u#X>vb&`p+itzg>RgPQpo%hbg^k{Oy-gUzrs|n%tS`qJCS)>e%P-*PTzB zEWWIr_GY%)Y2*3{&BD2h;((rJO!9Vj`F7{FS0a$ZS>O>_%)lU~3c`$@K`I}Bg6t)p zzOL*Kxdd7CdDd4=a|4zV^F3W0Lo80023N-P1d9A!_g2w++l&d4m!>Q-;#|36ir8BT z?~bHjQ*2!{rZ{ouE}2k!TF=|%+uAjrEpL9m+xLI(`pjADHNUU_zWe!};`_V5$Mjuh zF)?~^$2IB3*68xZazPJDm{V-4CBK_FiWLQKwtFTP(9V2e`~0P%S%-J+XOimvpk~IL z6M3uT!GeQj&TnLI+`J(;tLsTSpYxWYqB6;Mw|JJYwQ*Ht*yE;D_4`Lw5kuX- z(t_y>M-Bw8`x+nTEMdzQXesuu`>=&&-~0;#eh~&v7hH~bPF~1pQE@7yQ9#Lksq~e0 z=jFcPt%jU+Y{C;v)fYZo(#p{{!!p}!Y4IV>=houS&*n?+OnA6RBZ&F+#1luo7iq@s z%CS5>^LRo-{^}c|B~P^$rA^rJ<0|JAwRMrZ`(6~r1Q{)p*pfGS*Sx$A0S*;iTjj|? zq1TT2zT&>QZHFbh$2&2py`ev@Z@XgSm3i-*tZCI9Kg)MXESswN&))L>_SSyEA`@d} z+qF`8tJj~GH97dl`M|`(?i#jLZz`0Qa;iUi>`}_?FE+>OtmMo^mnI9In7Mh&h6$Hm z6hBwK`f9@CMpyA2-F^`@oVPY^k5Ahg8on;>vIzTmhdp_RKbi}?O<6Np<%il{(P^t2 zBU^75?FkOL`zol_L81KpU4P}RcU#zxb?`Uxz80MPfYmKzj#wH~s@jhoa|9oB>PCgX z=#zf%()fs1;;Dc`OQxJJ&HZ;s?qjOx7V&fIy#$%}9GTY4_jJAB{gxH^jC*R2>-@hL zm>u;$M>T0<%XO6{qVg=a>;F7?e{15+xQTNo_56rT3S7-;^tmQ+ebSkIA$6hpd{J#5 z9?cSXvPNY6z3uNqt^PB;>}M)(Phr&g^zUWxIr9zo=l-cv{rfNZ$M!SJT$Z)|XFL}p z`#D2ZNf?-VRZCnWN>UO_QmvAUQh^kMk%6JPuAzahp?QdbiIs`Dm7$TgfsvJgL9)cA zbtoEg^HVa@DsgKNa^(^NY6!0ii6{w5ELSKf%1_J8NmVGREJ#(zEGS84V5pe$_!AFD zVVH)-DgV=FJf8+JFe`KGC36ca3wuu%VHQ?!X)rmQ!mPYGMB(&}D<_VeIU;j}{d9xJ c0xvy=SK@*tpPWpm01boFyt=akR{08z!}+W-In literal 0 HcmV?d00001 diff --git a/public/favicon/favicon.ico b/public/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..407e9f11934c1e6db21a9c0a826c2b4f1766ffce GIT binary patch literal 15086 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + diff --git a/public/img/checked.png b/public/img/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..76876ab78a30d597d85fc09ea88b8841625065a8 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*x3 z7#M+i7`Yh5mh3qV6qGD+jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw=TsHi%? zC&cwX5HK+OZ(#WE;P5p_^KFpITYsJRL7E=|R6Yc%e+X9p7^Lw&SmQ&m29N>deh5&)YxiLV*^`Wkj`!OF+jo1JGJMs6fsFt_caR1!TX){~ P&~*%+u6{1-oD!MlpinR(g8$%zH2dih1^v)|cB0TsOs@CkAK z|NlS3|NrLOmH-)+JLY`-`qgUd9II^$e*OAozj40pmN|Bt=GttTXS;c>?dEy5Tjtts zns@*8ORH5=Z8p!h-8|oJ6G+Nt(>%M)^K5_$U?foL*{2Ube*Ad<{yj+J=6Tj@XV`3* zZMz9%j{TPTj$0QvZ(ZQBb)n0)MQ+;`d2C)5jgr=LGM_wvc5SI@4!et!M=lbg?<-g@!$ z&WmTS-@JMA7Kq-y`||nIr%#_hfByFE+xPF^fsXld%ux{NapjUAzhDMNJ^>*~d1X^q z@36FtoPxT#miDfhi`H)1ck1$^XRqJA|NQm!_NmrD<%>LB9780+WBacPH8BXdUVnE? z?Dp2(yIozr{kK2f%E)e;|NLA|48t*5&!@#FCkXR2iCz)>%O}2Cw^!|O(n)TCf4?61 zWJ%hDUjD5fG~cj8$;@2&+r5dkvh6&Nradt%Y-8B3|F(x-Rad28*$T(K=n=fuSK&#co*n3MZ<*)H)n*N#ivfB$;M5B>COTd)0RP&xJN!U<#+|`6hN?g__V5eCXvoN| z_>4=8V=jpYV~nb#E$rfXRal&uO35C?)%zR36<*d7C*ph(4-{~lSWAm0bd-n}lDNO5 zW*;BYq7#4dJ|isVVmw2AZg7sC446nJqgYDfzO25E+1%g&9}BT2ag*+*w@^F5WNxsE z?UJ*Npu2#*P3anQgV)8@)aXJ5JNWhp&subbcQwQf_=;n^C^HCHPVqJ{h8FbT6Mo|e zul_MF?DPg-aEh3o?{`e2QkE{%`pzMQMqI@I{P%lV=4}jkNqz1B00002?- zP7r3aoL#UD$dD{?jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw>;fq{|V)5S5w zqIc@$_1?~b630HCZ{=)~=#dgBEOq?TdNg6i2CWF4w9At&{y$*yhx^F>19^rzGvBBk zW>N21=))3!dhVIc)#hanraZSj|9#*4;&&&N4z1BXy-91D@*_u=Gg}H9_*wMYABoM1 zn2~hP-QJu%?tw&eOh)p`BYT?fbyya#p6~q8GWE!w&hJlRq>Brti72(_J$WW|Z&H=` zYQe-GtznEynuYhM{Sxo{x9c>c=p9jqOSTS=?^h@nhZPtf{L}d>VuxphF`HG$#B;OXk;vd$@?2>{yirX&CW literal 0 HcmV?d00001 diff --git a/public/img/checked/004.png b/public/img/checked/004.png new file mode 100644 index 0000000000000000000000000000000000000000..8339ad6d5fa4892d0d03f477277d32d0e82f6166 GIT binary patch literal 322 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 G`2PR_BKGwF literal 0 HcmV?d00001 diff --git a/public/img/logo/pclogo2.png b/public/img/logo/pclogo2.png new file mode 100644 index 0000000000000000000000000000000000000000..80da84346f48a43eafbd6b404924c2ccbc9b6ef7 GIT binary patch literal 66497 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%0AwRiI7+(HnrAQXf~{MN6aXa!E(4ku19@e|sf z5cSBDK$2iv{prFb?IB7iX7uefTheq@rRIkWV=t(%X@p*##mL`}p4oA59zzD6DX+Mh z+(>z}t-Laz8TQzkas0Y=0JsmQDvCJ2mU^=aW9Q~KOV5Y z8RQARbaVrk39y%;rb}l+#ueU?+@AKC#z_Lf0Wwfd|ezap5*qv_(u9CF zF-soMT0{;N0WawB@Nmb`7l=_hCuim=&*w3{(5%A4h|BwwKbOde5&)3efnLD56bztE z5$p=GYOqL9mL&j?z%fMFC`j+>-5YLzhyIjuQ{T)E&sxU}-44#tWAJOBhEB>q5> ze*aQV=+)v$_`QnYLoO*r->v(H$1sFQ1e{0v4xfwTA04(3uIdp2X5;LWWQp}yApiyK zpIma|FY`WpDRM`8Dh}Ozx=}qQaYTTDjX+ZGO7#yGEr{toc2cl-IXeNl|hj;6lGO-}3nB zujPGs%0ClEuh%X91OppSbGG(BA7QaJa1KpU0D?1_-a@i)9LWZ6A*FI={$~44CI&SD zcaIlT%`=kI4*rr$wEhPH-BuLySRkw$_oL82g&Go9_aa_w@Bo*bHvVJo7x5_6#0az( z#^gcxj_;>NKPg;_c;qBVuZdd5lPEQDt1Iq|Z`N7A3?~%VA>YaZ0ak;mP<-*vsim)ST z?s-?fh%e6er9XotI#_Sf)X)E1UXZqxlNL~Pn7P_1~Zs6KW z`-aWY;PkH_Tf?mbP8auE(WmFfc4mt^CO%@Bq_!V>@VZ{k%}4o}W3l+kcIMSIHR3at zo<*x~ev7*aa8*@Wpp$kqEq&^B7O(skhPsV^FH|7*D}$+P*aTfnEb&}axNd*u#0&VV z#Lg>=X?i75ax=+9hOTrd?%TAV!75w#loO;VSmjlmj=jw9zr1HJ&%Brts6cBjSKjF$ z5;nW%AN{Iujj3e3oq>sS&{bmeWpbAB+!0Hm0}UXrJr|#SeipUg zO3ua{|K2N&d}~pZW{9hH{SHmZOj2gUN4`blvkQS>4eqH2WC%&SJDa)Zd2vPW=IzD_ z@wY!VT1#!03B!6X^x7|%`z5qCn8O>c+}lJSo!Y3-$oovCeqD=wQorNAKT4%k3-v5q z2-HMWTa2MLsc=4-39H(l_1LQmOmmCx4(EuzRbq0?Nk`Kc!79gZrICMy{gUwcQjY#k zd4-7S;E^H5f_(*9Q>i19SSho{EDs;K*3$G@k+c;HG4a{SmtOs&pV}vS_qfJ&0`{KtdJK`P*tke)mILkH$-J#&>>{kRr0Z&5!L-}+6l)*R zq(ZgZuQ0In`rCLR^VZzjNn?$}Cq*fax6yAu5QLB^QR$ZbTzAo@$9tK|y)-GKLTLRA z!baok8=@@fcERLewr#Mkq&?_qkub1rcU(rBb6iGFE02&ZMx2zwI8V$``N@Bbl2}=h zy5FAQTQx*&E_NgZ>NV=9I@4M3HZkF1f6F05DuVo_&Yo4^6T5S%#OI>L?{qWpB$mR6 z3MyI-`JI2CeSe3T`e&MzK7Msysme5t#YygQe&CBbmO5FU%|#yRK5Ch=$}q@y^x zusUp|i?}%Cw`Z$cD#^c~Z!`z2&FM?>I;DAC9==?oT=E;MsTss6O{_VA-^>W>l)lAo zG4}ehpu&&=RJOf^%57$CE5q{0KCZnFKlL@z@yoZG-5F)r*=>{yQ7}scOV2o`JP%(# z-LS>ah|kGj{uu{Bk>%zSVwYKWBqa{oνt2dobUmCX=X^^#C1=OF6p-D#Cid!5e6 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 literal 0 HcmV?d00001 diff --git a/public/img/open-iconic/x-6x.png b/public/img/open-iconic/x-6x.png new file mode 100644 index 0000000000000000000000000000000000000000..175e6482a677811a5a181be6a058243c39dbc3a9 GIT binary patch literal 706 zcmV;z0zLhSP)w z1E3E)toU7Mb+W!qpCSjq82ASaiMNOraGLe~4zyj0)(Dj9vzhU=kEO_}3aO4Xw|G@D9bA*>Kfu1kC z^8+>k|IxAUHE^s#ea9m5FJ^qe0>R4zUY5Q{hm9!G+o zdc{L5qBJD}!B@TyLM)TMqW~{;GN@Sa(k7PkUhvW$)yGYX_=er4 zdMaKCFLkjw|Fj~dhYJDJmSWe9Z$lfxZO438^!{Eg+|nd>;4({08n}uLyI%Pn^Gpz<|%> zQFw_}>=a=Z_`$#a9s@%@lGlQ_RD>DeJGK2i0Y+L$-U!}85vGA}P5f;FqiK@IftOfA zY2#_23a}f~-%Fs7BzY2eiTgl*OGxom0jdf8y#~hOBu@h`v5x26w}vVthnLs}N{y1Y z0`GnIt)U9(;Uzu*6Sb22fRFCJ!@j8hszU4V5<5USn%pP6#0HQz2rp3ureuK?&&efT z0LKi%OPrTQ`f%@ajYYOd_zDUHf9e0lG>h;GC|ZUOQG~a^am(=0BCIJb{th@{8D5lA zEW$_Xyoas8M~m=4$;^TGur+v5Kk!J&R27)C3@;kMwYM7Pc7b!2;YCBZ_Ey8BR(OLK z4ddF|tidvY7v+KH1^_dG7meahSh5Dq1YT6YwYOOVX96!O0&hGRKa}vIG2AgzTf&P< zzF)ZsdNhc$KXORnuH1gZ}u?=2`{k# z90>u}Ol88uODvLc5we7rSOPk? zNjS$iP5dE5U-01C+C`;x*MY$}@G~?YKh=Pb7GX(g{bw{8+?u8S;Bg3eQ3tNQ)$p-J zopGHx4vw5>0Us^GvXY-|+(GW1&a!{mzyiFe6W88q_}am3^nkl&Vhvu@g==p${O!#N z=5W_ctieZ%a6{Xl&q)xCGrMm5O|;haHv~M@O71~Dz#VOWBc%U>65_PB7uVjZ`b#qe z5%Q=y%|vTre+Aq%6Kn9I9Im}p^%v*+f0iF92664Js=pHMnu#@dQ6AUcs`{J2bxzjc zMMc~owyM7}@Kr0h2aU7;okGpu6p{APpeC{H&!+wW#LEk*Y>F#K00000NkvXXu0mjf DaTBaH literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e69de29 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..1eb305c --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,27 @@ +{ + "dir": "ltr", + "lang": "en", + "name": "Pretty checkbox", + "scope": "/", + "display": "standalone", + "start_url": "./?utm_source=web_app_manifest", + "short_name": "Pretty checkbox", + "theme_color": "#105B63", + "description": "", + "orientation": "any", + "background_color": "#DB9E36", + "related_applications": [], + "prefer_related_applications": false, + "icons": [ + { + "src": "./favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/public/ngsw-worker.js b/public/ngsw-worker.js new file mode 100644 index 0000000..0d4112b --- /dev/null +++ b/public/ngsw-worker.js @@ -0,0 +1,2451 @@ +(function () { +'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Adapts the service worker to its runtime environment. + * + * Mostly, this is used to mock out identifiers which are otherwise read + * from the global scope. + */ +class Adapter { + /** + * Wrapper around the `Request` constructor. + */ + newRequest(input, init) { + return new Request(input, init); + } + /** + * Wrapper around the `Response` constructor. + */ + newResponse(body, init) { return new Response(body, init); } + /** + * Wrapper around the `Headers` constructor. + */ + newHeaders(headers) { return new Headers(headers); } + /** + * Test if a given object is an instance of `Client`. + */ + isClient(source) { return (source instanceof Client); } + /** + * Read the current UNIX time in milliseconds. + */ + get time() { return Date.now(); } + /** + * Extract the pathname of a URL. + */ + parseUrl(url, relativeTo) { + const parsed = new URL(url, relativeTo); + return { origin: parsed.origin, path: parsed.pathname }; + } + /** + * Wait for a given amount of time before completing a Promise. + */ + timeout(ms) { + return new Promise(resolve => { setTimeout(() => resolve(), ms); }); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * An error returned in rejected promises if the given key is not found in the table. + */ +class NotFound { + constructor(table, key) { + this.table = table; + this.key = key; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * An implementation of a `Database` that uses the `CacheStorage` API to serialize + * state within mock `Response` objects. + */ +class CacheDatabase { + constructor(scope, adapter) { + this.scope = scope; + this.adapter = adapter; + this.tables = new Map(); + } + 'delete'(name) { + if (this.tables.has(name)) { + this.tables.delete(name); + } + return this.scope.caches.delete(`ngsw:db:${name}`); + } + list() { + return this.scope.caches.keys().then(keys => keys.filter(key => key.startsWith('ngsw:db:'))); + } + open(name) { + if (!this.tables.has(name)) { + const table = this.scope.caches.open(`ngsw:db:${name}`) + .then(cache => new CacheTable(name, cache, this.adapter)); + this.tables.set(name, table); + } + return this.tables.get(name); + } +} +/** + * A `Table` backed by a `Cache`. + */ +class CacheTable { + constructor(table, cache, adapter) { + this.table = table; + this.cache = cache; + this.adapter = adapter; + } + request(key) { return this.adapter.newRequest('/' + key); } + 'delete'(key) { return this.cache.delete(this.request(key)); } + keys() { + return this.cache.keys().then(keys => keys.map(key => key.substr(1))); + } + read(key) { + return this.cache.match(this.request(key)).then(res => { + if (res === undefined) { + return Promise.reject(new NotFound(this.table, key)); + } + return res.json(); + }); + } + write(key, value) { + return this.cache.put(this.request(key), this.adapter.newResponse(JSON.stringify(value))); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var UpdateCacheStatus; +(function (UpdateCacheStatus) { + UpdateCacheStatus[UpdateCacheStatus["NOT_CACHED"] = 0] = "NOT_CACHED"; + UpdateCacheStatus[UpdateCacheStatus["CACHED_BUT_UNUSED"] = 1] = "CACHED_BUT_UNUSED"; + UpdateCacheStatus[UpdateCacheStatus["CACHED"] = 2] = "CACHED"; +})(UpdateCacheStatus || (UpdateCacheStatus = {})); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Compute the SHA1 of the given string + * + * see http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * + * WARNING: this function has not been designed not tested with security in mind. + * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT. + * + * Borrowed from @angular/compiler/src/i18n/digest.ts + */ +function sha1(str) { + const utf8 = str; + const words32 = stringToWords32(utf8, Endian.Big); + return _sha1(words32, utf8.length * 8); +} +function sha1Binary(buffer) { + const words32 = arrayBufferToWords32(buffer, Endian.Big); + return _sha1(words32, buffer.byteLength * 8); +} +function _sha1(words32, len) { + const w = new Array(80); + let [a, b, c, d, e] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + words32[len >> 5] |= 0x80 << (24 - len % 32); + words32[((len + 64 >> 9) << 4) + 15] = len; + for (let i = 0; i < words32.length; i += 16) { + const [h0, h1, h2, h3, h4] = [a, b, c, d, e]; + for (let j = 0; j < 80; j++) { + if (j < 16) { + w[j] = words32[i + j]; + } + else { + w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + const [f, k] = fk(j, b, c, d); + const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); + [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp]; + } + [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)]; + } + return byteStringToHexString(words32ToByteString([a, b, c, d, e])); +} +function add32(a, b) { + return add32to64(a, b)[1]; +} +function add32to64(a, b) { + const low = (a & 0xffff) + (b & 0xffff); + const high = (a >>> 16) + (b >>> 16) + (low >>> 16); + return [high >>> 16, (high << 16) | (low & 0xffff)]; +} +// Rotate a 32b number left `count` position +function rol32(a, count) { + return (a << count) | (a >>> (32 - count)); +} +var Endian; +(function (Endian) { + Endian[Endian["Little"] = 0] = "Little"; + Endian[Endian["Big"] = 1] = "Big"; +})(Endian || (Endian = {})); +function fk(index, b, c, d) { + if (index < 20) { + return [(b & c) | (~b & d), 0x5a827999]; + } + if (index < 40) { + return [b ^ c ^ d, 0x6ed9eba1]; + } + if (index < 60) { + return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc]; + } + return [b ^ c ^ d, 0xca62c1d6]; +} +function stringToWords32(str, endian) { + const words32 = Array((str.length + 3) >>> 2); + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(str, i * 4, endian); + } + return words32; +} +function arrayBufferToWords32(buffer, endian) { + const words32 = Array((buffer.byteLength + 3) >>> 2); + const view = new Uint8Array(buffer); + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(view, i * 4, endian); + } + return words32; +} +function byteAt(str, index) { + if (typeof str === 'string') { + return index >= str.length ? 0 : str.charCodeAt(index) & 0xff; + } + else { + return index >= str.byteLength ? 0 : str[index] & 0xff; + } +} +function wordAt(str, index, endian) { + let word = 0; + if (endian === Endian.Big) { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << (24 - 8 * i); + } + } + else { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 8 * i; + } + } + return word; +} +function words32ToByteString(words32) { + return words32.reduce((str, word) => str + word32ToByteString(word), ''); +} +function word32ToByteString(word) { + let str = ''; + for (let i = 0; i < 4; i++) { + str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff); + } + return str; +} +function byteStringToHexString(str) { + let hex = ''; + for (let i = 0; i < str.length; i++) { + const b = byteAt(str, i); + hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16); + } + return hex.toLowerCase(); +} +// x and y decimal, lowest significant digit first +function addBigInt(x, y) { + let sum = ''; + const len = Math.max(x.length, y.length); + for (let i = 0, carry = 0; i < len || carry; i++) { + const tmpSum = carry + +(x[i] || 0) + +(y[i] || 0); + if (tmpSum >= 10) { + carry = 1; + sum += tmpSum - 10; + } + else { + carry = 0; + sum += tmpSum; + } + } + return sum; +} +function numberTimesBigInt(num, b) { + let product = ''; + let bToThePower = b; + for (; num !== 0; num = num >>> 1) { + if (num & 1) + product = addBigInt(product, bToThePower); + bToThePower = addBigInt(bToThePower, bToThePower); + } + return product; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * A group of assets that are cached in a `Cache` and managed by a given policy. + * + * Concrete classes derive from this base and specify the exact caching policy. + */ +class AssetGroup { + constructor(scope, adapter, idle, config, hashes, db, prefix) { + this.scope = scope; + this.adapter = adapter; + this.idle = idle; + this.config = config; + this.hashes = hashes; + this.db = db; + this.prefix = prefix; + /** + * A deduplication cache, to make sure the SW never makes two network requests + * for the same resource at once. Managed by `fetchAndCacheOnce`. + */ + this.inFlightRequests = new Map(); + /** + * Regular expression patterns. + */ + this.patterns = []; + this.name = config.name; + // Patterns in the config are regular expressions disguised as strings. Breathe life into them. + this.patterns = this.config.patterns.map(pattern => new RegExp(pattern)); + // This is the primary cache, which holds all of the cached requests for this group. If a + // resource + // isn't in this cache, it hasn't been fetched yet. + this.cache = this.scope.caches.open(`${this.prefix}:${this.config.name}:cache`); + // This is the metadata table, which holds specific information for each cached URL, such as + // the timestamp of when it was added to the cache. + this.metadata = this.db.open(`${this.prefix}:${this.config.name}:meta`); + // Determine the origin from the registration scope. This is used to differentiate between + // relative and absolute URLs. + this.origin = + this.adapter.parseUrl(this.scope.registration.scope, this.scope.registration.scope).origin; + } + async cacheStatus(url) { + const cache = await this.cache; + const meta = await this.metadata; + const res = await cache.match(this.adapter.newRequest(url)); + if (res === undefined) { + return UpdateCacheStatus.NOT_CACHED; + } + try { + const data = await meta.read(url); + if (!data.used) { + return UpdateCacheStatus.CACHED_BUT_UNUSED; + } + } + catch (_) { + // Error on the side of safety and assume cached. + } + return UpdateCacheStatus.CACHED; + } + /** + * Clean up all the cached data for this group. + */ + async cleanup() { + await this.scope.caches.delete(`${this.prefix}:${this.config.name}:cache`); + await this.db.delete(`${this.prefix}:${this.config.name}:meta`); + } + /** + * Process a request for a given resource and return it, or return null if it's not available. + */ + async handleFetch(req, ctx) { + const url = this.getConfigUrl(req.url); + // Either the request matches one of the known resource URLs, one of the patterns for + // dynamically matched URLs, or neither. Determine which is the case for this request in + // order to decide how to handle it. + if (this.config.urls.indexOf(url) !== -1 || this.patterns.some(pattern => pattern.test(url))) { + // This URL matches a known resource. Either it's been cached already or it's missing, in + // which case it needs to be loaded from the network. + // Open the cache to check whether this resource is present. + const cache = await this.cache; + // Look for a cached response. If one exists, it can be used to resolve the fetch + // operation. + const cachedResponse = await cache.match(req); + if (cachedResponse !== undefined) { + // A response has already been cached (which presumably matches the hash for this + // resource). Check whether it's safe to serve this resource from cache. + if (this.hashes.has(url)) { + // This resource has a hash, and thus is versioned by the manifest. It's safe to return + // the response. + return cachedResponse; + } + else { + // This resource has no hash, and yet exists in the cache. Check how old this request is + // to make sure it's still usable. + if (await this.needToRevalidate(req, cachedResponse)) { + this.idle.schedule(`revalidate(${this.prefix}, ${this.config.name}): ${req.url}`, async () => { await this.fetchAndCacheOnce(req); }); + } + // In either case (revalidation or not), the cached response must be good. + return cachedResponse; + } + } + // No already-cached response exists, so attempt a fetch/cache operation. The original request + // may specify things like credential inclusion, but for assets these are not honored in order + // to avoid issues with opaque responses. The SW requests the data itself. + const res = await this.fetchAndCacheOnce(this.adapter.newRequest(req.url)); + // If this is successful, the response needs to be cloned as it might be used to respond to + // multiple fetch operations at the same time. + return res.clone(); + } + else { + return null; + } + } + getConfigUrl(url) { + // If the URL is relative to the SW's own origin, then only consider the path relative to + // the domain root. Determine this by checking the URL's origin against the SW's. + const parsed = this.adapter.parseUrl(url, this.scope.registration.scope); + if (parsed.origin === this.origin) { + // The URL is relative to the SW's origin domain. + return parsed.path; + } + else { + return url; + } + } + /** + * Some resources are cached without a hash, meaning that their expiration is controlled + * by HTTP caching headers. Check whether the given request/response pair is still valid + * per the caching headers. + */ + async needToRevalidate(req, res) { + // Three different strategies apply here: + // 1) The request has a Cache-Control header, and thus expiration needs to be based on its age. + // 2) The request has an Expires header, and expiration is based on the current timestamp. + // 3) The request has no applicable caching headers, and must be revalidated. + if (res.headers.has('Cache-Control')) { + // Figure out if there is a max-age directive in the Cache-Control header. + const cacheControl = res.headers.get('Cache-Control'); + const cacheDirectives = cacheControl + .split(',') + .map(v => v.trim()) + .map(v => v.split('=')); + // Lowercase all the directive names. + cacheDirectives.forEach(v => v[0] = v[0].toLowerCase()); + // Find the max-age directive, if one exists. + const cacheAge = cacheDirectives.filter(v => v[0] === 'max-age').map(v => v[1])[0]; + if (cacheAge.length === 0) { + // No usable TTL defined. Must assume that the response is stale. + return true; + } + try { + const maxAge = 1000 * parseInt(cacheAge); + // Determine the origin time of this request. If the SW has metadata on the request (which + // it + // should), it will have the time the request was added to the cache. If it doesn't for some + // reason, the request may have a Date header which will serve the same purpose. + let ts; + try { + // Check the metadata table. If a timestamp is there, use it. + const metaTable = await this.metadata; + ts = (await metaTable.read(req.url)).ts; + } + catch (e) { + // Otherwise, look for a Date header. + const date = res.headers.get('Date'); + if (date === null) { + // Unable to determine when this response was created. Assume that it's stale, and + // revalidate it. + return true; + } + ts = Date.parse(date); + } + const age = this.adapter.time - ts; + return age < 0 || age > maxAge; + } + catch (e) { + // Assume stale. + return true; + } + } + else if (res.headers.has('Expires')) { + // Determine if the expiration time has passed. + const expiresStr = res.headers.get('Expires'); + try { + // The request needs to be revalidated if the current time is later than the expiration + // time, if it parses correctly. + return this.adapter.time > Date.parse(expiresStr); + } + catch (e) { + // The expiration date failed to parse, so revalidate as a precaution. + return true; + } + } + else { + // No way to evaluate staleness, so assume the response is already stale. + return true; + } + } + /** + * Fetch the complete state of a cached resource, or return null if it's not found. + */ + async fetchFromCacheOnly(url) { + const cache = await this.cache; + const metaTable = await this.metadata; + // Lookup the response in the cache. + const response = await cache.match(this.adapter.newRequest(url)); + if (response === undefined) { + // It's not found, return null. + return null; + } + // Next, lookup the cached metadata. + let metadata = undefined; + try { + metadata = await metaTable.read(url); + } + catch (e) { + // Do nothing, not found. This shouldn't happen, but it can be handled. + } + // Return both the response and any available metadata. + return { response, metadata }; + } + /** + * Lookup all resources currently stored in the cache which have no associated hash. + */ + async unhashedResources() { + const cache = await this.cache; + // Start with the set of all cached URLs. + return (await cache.keys()) + .filter(url => !this.hashes.has(url)); + } + /** + * Fetch the given resource from the network, and cache it if able. + */ + async fetchAndCacheOnce(req, used = true) { + // The `inFlightRequests` map holds information about which caching operations are currently + // underway for known resources. If this request appears there, another "thread" is already + // in the process of caching it, and this work should not be duplicated. + if (this.inFlightRequests.has(req.url)) { + // There is a caching operation already in progress for this request. Wait for it to + // complete, and hopefully it will have yielded a useful response. + return this.inFlightRequests.get(req.url); + } + // No other caching operation is being attempted for this resource, so it will be owned here. + // Go to the network and get the correct version. + const fetchOp = this.fetchFromNetwork(req); + // Save this operation in `inFlightRequests` so any other "thread" attempting to cache it + // will block on this chain instead of duplicating effort. + this.inFlightRequests.set(req.url, fetchOp); + // Make sure this attempt is cleaned up properly on failure. + try { + // Wait for a response. If this fails, the request will remain in `inFlightRequests` + // indefinitely. + const res = await fetchOp; + // It's very important that only successful responses are cached. Unsuccessful responses + // should never be cached as this can completely break applications. + if (!res.ok) { + throw new Error(`Response not Ok (fetchAndCacheOnce): request for ${req.url} returned response ${res.status} ${res.statusText}`); + } + // This response is safe to cache (as long as it's cloned). Wait until the cache operation + // is complete. + const cache = await this.scope.caches.open(`${this.prefix}:${this.config.name}:cache`); + await cache.put(req, res.clone()); + // If the request is not hashed, update its metadata, especially the timestamp. This is needed + // for future determination of whether this cached response is stale or not. + if (!this.hashes.has(req.url)) { + // Metadata is tracked for requests that are unhashed. + const meta = { ts: this.adapter.time, used }; + const metaTable = await this.metadata; + await metaTable.write(req.url, meta); + } + return res; + } + finally { + // Finally, it can be removed from `inFlightRequests`. This might result in a double-remove + // if some other chain was already making this request too, but that won't hurt anything. + this.inFlightRequests.delete(req.url); + } + } + async fetchFromNetwork(req, redirectLimit = 3) { + // Make a cache-busted request for the resource. + const res = await this.cacheBustedFetchFromNetwork(req); + // Check for redirected responses, and follow the redirects. + if (res['redirected'] && !!res.url) { + // If the redirect limit is exhausted, fail with an error. + if (redirectLimit === 0) { + throw new Error(`Response hit redirect limit (fetchFromNetwork): request redirected too many times, next is ${res.url}`); + } + // Unwrap the redirect directly. + return this.fetchFromNetwork(this.adapter.newRequest(res.url), redirectLimit - 1); + } + return res; + } + /** + * Load a particular asset from the network, accounting for hash validation. + */ + async cacheBustedFetchFromNetwork(req) { + const url = this.getConfigUrl(req.url); + // If a hash is available for this resource, then compare the fetched version with the + // canonical hash. Otherwise, the network version will have to be trusted. + if (this.hashes.has(url)) { + // It turns out this resource does have a hash. Look it up. Unless the fetched version + // matches this hash, it's invalid and the whole manifest may need to be thrown out. + const canonicalHash = this.hashes.get(url); + // Ideally, the resource would be requested with cache-busting to guarantee the SW gets + // the freshest version. However, doing this would eliminate any chance of the response + // being in the HTTP cache. Given that the browser has recently actively loaded the page, + // it's likely that many of the responses the SW needs to cache are in the HTTP cache and + // are fresh enough to use. In the future, this could be done by setting cacheMode to + // *only* check the browser cache for a cached version of the resource, when cacheMode is + // fully supported. For now, the resource is fetched directly, without cache-busting, and + // if the hash test fails a cache-busted request is tried before concluding that the + // resource isn't correct. This gives the benefit of acceleration via the HTTP cache + // without the risk of stale data, at the expense of a duplicate request in the event of + // a stale response. + // Fetch the resource from the network (possibly hitting the HTTP cache). + const networkResult = await this.safeFetch(req); + // Decide whether a cache-busted request is necessary. It might be for two independent + // reasons: either the non-cache-busted request failed (hopefully transiently) or if the + // hash of the content retrieved does not match the canonical hash from the manifest. It's + // only valid to access the content of the first response if the request was successful. + let makeCacheBustedRequest = networkResult.ok; + if (makeCacheBustedRequest) { + // The request was successful. A cache-busted request is only necessary if the hashes + // don't match. Compare them, making sure to clone the response so it can be used later + // if it proves to be valid. + const fetchedHash = sha1Binary(await networkResult.clone().arrayBuffer()); + makeCacheBustedRequest = (fetchedHash !== canonicalHash); + } + // Make a cache busted request to the network, if necessary. + if (makeCacheBustedRequest) { + // Hash failure, the version that was retrieved under the default URL did not have the + // hash expected. This could be because the HTTP cache got in the way and returned stale + // data, or because the version on the server really doesn't match. A cache-busting + // request will differentiate these two situations. + // TODO: handle case where the URL has parameters already (unlikely for assets). + const cacheBustReq = this.adapter.newRequest(this.cacheBust(req.url)); + const cacheBustedResult = await this.safeFetch(cacheBustReq); + // If the response was unsuccessful, there's nothing more that can be done. + if (!cacheBustedResult.ok) { + throw new Error(`Response not Ok (cacheBustedFetchFromNetwork): cache busted request for ${req.url} returned response ${cacheBustedResult.status} ${cacheBustedResult.statusText}`); + } + // Hash the contents. + const cacheBustedHash = sha1Binary(await cacheBustedResult.clone().arrayBuffer()); + // If the cache-busted version doesn't match, then the manifest is not an accurate + // representation of the server's current set of files, and the SW should give up. + if (canonicalHash !== cacheBustedHash) { + throw new Error(`Hash mismatch (cacheBustedFetchFromNetwork): ${req.url}: expected ${canonicalHash}, got ${cacheBustedHash} (after cache busting)`); + } + // If it does match, then use the cache-busted result. + return cacheBustedResult; + } + // Excellent, the version from the network matched on the first try, with no need for + // cache-busting. Use it. + return networkResult; + } + else { + // This URL doesn't exist in our hash database, so it must be requested directly. + return this.safeFetch(req); + } + } + /** + * Possibly update a resource, if it's expired and needs to be updated. A no-op otherwise. + */ + async maybeUpdate(updateFrom, req, cache) { + const url = this.getConfigUrl(req.url); + const meta = await this.metadata; + // Check if this resource is hashed and already exists in the cache of a prior version. + if (this.hashes.has(url)) { + const hash = this.hashes.get(url); + // Check the caches of prior versions, using the hash to ensure the correct version of + // the resource is loaded. + const res = await updateFrom.lookupResourceWithHash(url, hash); + // If a previously cached version was available, copy it over to this cache. + if (res !== null) { + // Copy to this cache. + await cache.put(req, res); + await meta.write(req.url, { ts: this.adapter.time, used: false }); + // No need to do anything further with this resource, it's now cached properly. + return true; + } + } + // No up-to-date version of this resource could be found. + return false; + } + /** + * Construct a cache-busting URL for a given URL. + */ + cacheBust(url) { + return url + (url.indexOf('?') === -1 ? '?' : '&') + 'ngsw-cache-bust=' + Math.random(); + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } + catch (err) { + return this.adapter.newResponse('', { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} +/** + * An `AssetGroup` that prefetches all of its resources during initialization. + */ +class PrefetchAssetGroup extends AssetGroup { + async initializeFully(updateFrom) { + // Open the cache which actually holds requests. + const cache = await this.cache; + // Cache all known resources serially. As this reduce proceeds, each Promise waits + // on the last before starting the fetch/cache operation for the next request. Any + // errors cause fall-through to the final Promise which rejects. + await this.config.urls.reduce(async (previous, url) => { + // Wait on all previous operations to complete. + await previous; + // Construct the Request for this url. + const req = this.adapter.newRequest(url); + // First, check the cache to see if there is already a copy of this resource. + const alreadyCached = (await cache.match(req)) !== undefined; + // If the resource is in the cache already, it can be skipped. + if (alreadyCached) { + return; + } + // If an update source is available. + if (updateFrom !== undefined && await this.maybeUpdate(updateFrom, req, cache)) { + return; + } + // Otherwise, go to the network and hopefully cache the response (if successful). + await this.fetchAndCacheOnce(req, false); + }, Promise.resolve()); + // Handle updating of unknown (unhashed) resources. This is only possible if there's + // a source to update from. + if (updateFrom !== undefined) { + const metaTable = await this.metadata; + // Select all of the previously cached resources. These are cached unhashed resources + // from previous versions of the app, in any asset group. + await (await updateFrom.previouslyCachedResources()) + .filter(url => this.config.urls.some(cacheUrl => cacheUrl === url) || + this.patterns.some(pattern => pattern.test(url))) + .reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + // It's possible that the resource in question is already cached. If so, + // continue to the next one. + const alreadyCached = (await cache.match(req) !== undefined); + if (alreadyCached) { + return; + } + // Get the most recent old version of the resource. + const res = await updateFrom.lookupResourceWithoutHash(url); + if (res === null || res.metadata === undefined) { + // Unexpected, but not harmful. + return; + } + // Write it into the cache. It may already be expired, but it can still serve + // traffic until it's updated (stale-while-revalidate approach). + await cache.put(req, res.response); + await metaTable.write(url, Object.assign({}, res.metadata, { used: false })); + }, Promise.resolve()); + } + } +} +class LazyAssetGroup extends AssetGroup { + async initializeFully(updateFrom) { + // No action necessary if no update source is available - resources managed in this group + // are all lazily loaded, so there's nothing to initialize. + if (updateFrom === undefined) { + return; + } + // Open the cache which actually holds requests. + const cache = await this.cache; + // Loop through the listed resources, caching any which are available. + await this.config.urls.reduce(async (previous, url) => { + // Wait on all previous operations to complete. + await previous; + // Construct the Request for this url. + const req = this.adapter.newRequest(url); + // First, check the cache to see if there is already a copy of this resource. + const alreadyCached = (await cache.match(req)) !== undefined; + // If the resource is in the cache already, it can be skipped. + if (alreadyCached) { + return; + } + const updated = await this.maybeUpdate(updateFrom, req, cache); + if (this.config.updateMode === 'prefetch' && !updated) { + // If the resource was not updated, either it was not cached before or + // the previously cached version didn't match the updated hash. In that + // case, prefetch update mode dictates that the resource will be updated, + // except if it was not previously utilized. Check the status of the + // cached resource to see. + const cacheStatus = await updateFrom.recentCacheStatus(url); + // If the resource is not cached, or was cached but unused, then it will be + // loaded lazily. + if (cacheStatus !== UpdateCacheStatus.CACHED) { + return; + } + // Update from the network. + await this.fetchAndCacheOnce(req, false); + } + }, Promise.resolve()); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Manages an instance of `LruState` and moves URLs to the head of the + * chain when requested. + */ +class LruList { + constructor(state) { + if (state === undefined) { + state = { + head: null, + tail: null, + map: {}, + count: 0, + }; + } + this.state = state; + } + /** + * The current count of URLs in the list. + */ + get size() { return this.state.count; } + /** + * Remove the tail. + */ + pop() { + // If there is no tail, return null. + if (this.state.tail === null) { + return null; + } + const url = this.state.tail; + // Special case if this is the last node. + if (this.state.head === this.state.tail) { + // When removing the last node, both head and tail pointers become null. + this.state.head = null; + this.state.tail = null; + } + else { + // Normal node removal. All that needs to be done is to clear the next pointer + // of the previous node and make it the new tail. + const block = this.state.map[url]; + const previous = this.state.map[block.previous]; + this.state.tail = previous.url; + previous.next = block.next; + } + // In any case, this URL is no longer tracked, so remove it from the count and the + // map of tracked URLs. + delete this.state.map[url]; + this.state.count--; + // This URL has been successfully evicted. + return url; + } + remove(url) { + const node = this.state.map[url]; + if (node === undefined) { + return false; + } + // Special case if removing the current head. + if (this.state.head === url) { + // The node is the current head. Special case the removal. + if (node.next === null) { + // This is the only node. Reset the cache to be empty. + this.state.head = null; + this.state.tail = null; + this.state.map = {}; + this.state.count = 0; + return true; + } + // There is at least one other node. Make the next node the new head. + const next = this.state.map[node.next]; + next.previous = null; + this.state.head = next.url; + this.state.count--; + return true; + } + // The node is not the head, so it has a previous. It may or may not be the tail. + // If it is not, then it has a next. First, grab the previous node. + const previous = this.state.map[node.previous]; + // Fix the forward pointer to skip over node and go directly to node.next. + previous.next = node.next; + // node.next may or may not be set. If it is, fix the back pointer to skip over node. + // If it's not set, then this node happened to be the tail, and the tail needs to be + // updated to point to the previous node (removing the tail). + if (node.next !== null) { + // There is a next node, fix its back pointer to skip this node. + this.state.map[node.next].previous = node.previous; + } + else { + // There is no next node - the accessed node must be the tail. Move the tail pointer. + this.state.tail = node.previous; + } + // Count the removal. + this.state.count--; + return true; + } + accessed(url) { + // When a URL is accessed, its node needs to be moved to the head of the chain. + // This is accomplished in two steps: + // + // 1) remove the node from its position within the chain. + // 2) insert the node as the new head. + // + // Sometimes, a URL is accessed which has not been seen before. In this case, step 1 can + // be skipped completely (which will grow the chain by one). Of course, if the node is + // already the head, this whole operation can be skipped. + if (this.state.head === url) { + // The URL is already in the head position, accessing it is a no-op. + return; + } + // Look up the node in the map, and construct a new entry if it's + const node = this.state.map[url] || { url, next: null, previous: null }; + // Step 1: remove the node from its position within the chain, if it is in the chain. + if (this.state.map[url] !== undefined) { + this.remove(url); + } + // Step 2: insert the node at the head of the chain. + // First, check if there's an existing head node. If there is, it has previous: null. + // Its previous pointer should be set to the node we're inserting. + if (this.state.head !== null) { + this.state.map[this.state.head].previous = url; + } + // The next pointer of the node being inserted gets set to the old head, before the head + // pointer is updated to this node. + node.next = this.state.head; + // The new head is the new node. + this.state.head = url; + // If there is no tail, then this is the first node, and is both the head and the tail. + if (this.state.tail === null) { + this.state.tail = url; + } + // Set the node in the map of nodes (if the URL has been seen before, this is a no-op) + // and count the insertion. + this.state.map[url] = node; + this.state.count++; + } +} +/** + * A group of cached resources determined by a set of URL patterns which follow a LRU policy + * for caching. + */ +class DataGroup { + constructor(scope, adapter, config, db, prefix) { + this.scope = scope; + this.adapter = adapter; + this.config = config; + this.db = db; + this.prefix = prefix; + /** + * Tracks the LRU state of resources in this cache. + */ + this._lru = null; + this.patterns = this.config.patterns.map(pattern => new RegExp(pattern)); + this.cache = this.scope.caches.open(`${this.prefix}:dynamic:${this.config.name}:cache`); + this.lruTable = this.db.open(`${this.prefix}:dynamic:${this.config.name}:lru`); + this.ageTable = this.db.open(`${this.prefix}:dynamic:${this.config.name}:age`); + } + /** + * Lazily initialize/load the LRU chain. + */ + async lru() { + if (this._lru === null) { + const table = await this.lruTable; + try { + this._lru = new LruList(await table.read('lru')); + } + catch (e) { + this._lru = new LruList(); + } + } + return this._lru; + } + /** + * Sync the LRU chain to non-volatile storage. + */ + async syncLru() { + if (this._lru === null) { + return; + } + const table = await this.lruTable; + return table.write('lru', this._lru.state); + } + /** + * Process a fetch event and return a `Response` if the resource is covered by this group, + * or `null` otherwise. + */ + async handleFetch(req, ctx) { + // Do nothing + if (!this.patterns.some(pattern => pattern.test(req.url))) { + return null; + } + // Lazily initialize the LRU cache. + const lru = await this.lru(); + // The URL matches this cache. First, check whether this is a mutating request or not. + switch (req.method) { + case 'OPTIONS': + // Don't try to cache this - it's non-mutating, but is part of a mutating request. + // Most likely SWs don't even see this, but this guard is here just in case. + return null; + case 'GET': + case 'HEAD': + // Handle the request with whatever strategy was selected. + switch (this.config.strategy) { + case 'freshness': + return this.handleFetchWithFreshness(req, ctx, lru); + case 'performance': + return this.handleFetchWithPerformance(req, ctx, lru); + default: + throw new Error(`Unknown strategy: ${this.config.strategy}`); + } + default: + // This was a mutating request. Assume the cache for this URL is no longer valid. + const wasCached = lru.remove(req.url); + // If there was a cached entry, remove it. + if (wasCached) { + await this.clearCacheForUrl(req.url); + } + // Sync the LRU chain to non-volatile storage. + await this.syncLru(); + // Finally, fall back on the network. + return this.safeFetch(req); + } + } + async handleFetchWithPerformance(req, ctx, lru) { + let res = null; + // Check the cache first. If the resource exists there (and is not expired), the cached + // version can be used. + const fromCache = await this.loadFromCache(req, lru); + if (fromCache !== null) { + res = fromCache.res; + // Check the age of the resource. + if (this.config.refreshAheadMs !== undefined && fromCache.age >= this.config.refreshAheadMs) { + ctx.waitUntil(this.safeCacheResponse(req, this.safeFetch(req))); + } + } + if (res !== null) { + return res; + } + // No match from the cache. Go to the network. Note that this is not an 'await' + // call, networkFetch is the actual Promise. This is due to timeout handling. + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + res = await timeoutFetch; + // Since fetch() will always return a response, undefined indicates a timeout. + if (res === undefined) { + // The request timed out. Return a Gateway Timeout error. + res = this.adapter.newResponse(null, { status: 504, statusText: 'Gateway Timeout' }); + // Cache the network response eventually. + ctx.waitUntil(this.safeCacheResponse(req, networkFetch)); + } + // The request completed in time, so cache it inline with the response flow. + // Make sure to clone it so the real response can still be returned to the user. + await this.cacheResponse(req, res.clone(), lru); + return res; + } + async handleFetchWithFreshness(req, ctx, lru) { + // Start with a network fetch. + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + let res; + // If that fetch errors, treat it as a timed out request. + try { + res = await timeoutFetch; + } + catch (e) { + res = undefined; + } + // If the network fetch times out or errors, fall back on the cache. + if (res === undefined) { + ctx.waitUntil(this.safeCacheResponse(req, networkFetch)); + // Ignore the age, the network response will be cached anyway due to the + // behavior of freshness. + const fromCache = await this.loadFromCache(req, lru); + res = (fromCache !== null) ? fromCache.res : null; + } + else { + await this.cacheResponse(req, res, lru, true); + } + // Either the network fetch didn't time out, or the cache yielded a usable response. + // In either case, use it. + if (res !== null) { + return res; + } + // No response in the cache. No choice but to fall back on the full network fetch. + res = await networkFetch; + await this.cacheResponse(req, res.clone(), lru, true); + return res; + } + networkFetchWithTimeout(req) { + // If there is a timeout configured, race a timeout Promise with the network fetch. + // Otherwise, just fetch from the network directly. + if (this.config.timeoutMs !== undefined) { + const networkFetch = this.scope.fetch(req); + const safeNetworkFetch = (async () => { + try { + return await networkFetch; + } + catch (err) { + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + })(); + const networkFetchUndefinedError = (async () => { + try { + return await networkFetch; + } + catch (err) { + return undefined; + } + })(); + // Construct a Promise for the timeout. + const timeout = this.adapter.timeout(this.config.timeoutMs); + // Race that with the network fetch. This will either be a Response, or `undefined` + // in the event that the request errored or timed out. + return [Promise.race([networkFetchUndefinedError, timeout]), safeNetworkFetch]; + } + else { + const networkFetch = this.safeFetch(req); + // Do a plain fetch. + return [networkFetch, networkFetch]; + } + } + async safeCacheResponse(req, res) { + try { + await this.cacheResponse(req, await res, await this.lru()); + } + catch (e) { + // TODO: handle this error somehow? + } + } + async loadFromCache(req, lru) { + // Look for a response in the cache. If one exists, return it. + const cache = await this.cache; + let res = await cache.match(req); + if (res !== undefined) { + // A response was found in the cache, but its age is not yet known. Look it up. + try { + const ageTable = await this.ageTable; + const age = this.adapter.time - (await ageTable.read(req.url)).age; + // If the response is young enough, use it. + if (age <= this.config.maxAge) { + // Successful match from the cache. Use the response, after marking it as having + // been accessed. + lru.accessed(req.url); + return { res, age }; + } + // Otherwise, or if there was an error, assume the response is expired, and evict it. + } + catch (e) { + // Some error getting the age for the response. Assume it's expired. + } + lru.remove(req.url); + await this.clearCacheForUrl(req.url); + // TODO: avoid duplicate in event of network timeout, maybe. + await this.syncLru(); + } + return null; + } + /** + * Operation for caching the response from the server. This has to happen all + * at once, so that the cache and LRU tracking remain in sync. If the network request + * completes before the timeout, this logic will be run inline with the response flow. + * If the request times out on the server, an error will be returned but the real network + * request will still be running in the background, to be cached when it completes. + */ + async cacheResponse(req, res, lru, okToCacheOpaque = false) { + // Only cache successful responses. + if (!res.ok || (okToCacheOpaque && res.type === 'opaque')) { + return; + } + // If caching this response would make the cache exceed its maximum size, evict something + // first. + if (lru.size >= this.config.maxSize) { + // The cache is too big, evict something. + const evictedUrl = lru.pop(); + if (evictedUrl !== null) { + await this.clearCacheForUrl(evictedUrl); + } + } + // TODO: evaluate for possible race conditions during flaky network periods. + // Mark this resource as having been accessed recently. This ensures it won't be evicted + // until enough other resources are requested that it falls off the end of the LRU chain. + lru.accessed(req.url); + // Store the response in the cache. + await (await this.cache).put(req, res); + // Store the age of the cache. + const ageTable = await this.ageTable; + await ageTable.write(req.url, { age: this.adapter.time }); + // Sync the LRU chain to non-volatile storage. + await this.syncLru(); + } + /** + * Delete all of the saved state which this group uses to track resources. + */ + async cleanup() { + // Remove both the cache and the database entries which track LRU stats. + await Promise.all([ + this.scope.caches.delete(`${this.prefix}:dynamic:${this.config.name}:cache`), + this.db.delete(`${this.prefix}:dynamic:${this.config.name}:age`), + this.db.delete(`${this.prefix}:dynamic:${this.config.name}:lru`), + ]); + } + /** + * Clear the state of the cache for a particular resource. + * + * This doesn't remove the resource from the LRU table, that is assumed to have + * been done already. This clears the GET and HEAD versions of the request from + * the cache itself, as well as the metadata stored in the age table. + */ + async clearCacheForUrl(url) { + const [cache, ageTable] = await Promise.all([this.cache, this.ageTable]); + await Promise.all([ + cache.delete(this.adapter.newRequest(url, { method: 'GET' })), + cache.delete(this.adapter.newRequest(url, { method: 'HEAD' })), + ageTable.delete(url), + ]); + } + async safeFetch(req) { + try { + return this.scope.fetch(req); + } + catch (err) { + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function isNavigationRequest(req, relativeTo, adapter) { + if (req.mode !== 'navigate') { + return false; + } + if (req.url.indexOf('__') !== -1) { + return false; + } + if (hasFileExtension(req.url, relativeTo, adapter)) { + return false; + } + if (!acceptsTextHtml(req)) { + return false; + } + return true; +} +function hasFileExtension(url, relativeTo, adapter) { + const path = adapter.parseUrl(url, relativeTo).path; + const lastSegment = path.split('/').pop(); + return lastSegment.indexOf('.') !== -1; +} +function acceptsTextHtml(req) { + const accept = req.headers.get('Accept'); + if (accept === null) { + return false; + } + const values = accept.split(','); + return values.some(value => value.trim().toLowerCase() === 'text/html'); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * A specific version of the application, identified by a unique manifest + * as determined by its hash. + * + * Each `AppVersion` can be thought of as a published version of the app + * that can be installed as an update to any previously installed versions. + */ +class AppVersion { + constructor(scope, adapter, database, idle, manifest, manifestHash) { + this.scope = scope; + this.adapter = adapter; + this.database = database; + this.idle = idle; + this.manifest = manifest; + this.manifestHash = manifestHash; + /** + * A Map of absolute URL paths (/foo.txt) to the known hash of their + * contents (if available). + */ + this.hashTable = new Map(); + /** + * Tracks whether the manifest has encountered any inconsistencies. + */ + this._okay = true; + // The hashTable within the manifest is an Object - convert it to a Map for easier lookups. + Object.keys(this.manifest.hashTable).forEach(url => { + this.hashTable.set(url, this.manifest.hashTable[url]); + }); + // Process each `AssetGroup` declared in the manifest. Each declared group gets an `AssetGroup` + // instance + // created for it, of a type that depends on the configuration mode. + this.assetGroups = (manifest.assetGroups || []).map(config => { + // Every asset group has a cache that's prefixed by the manifest hash and the name of the + // group. + const prefix = `ngsw:${this.manifestHash}:assets`; + // Check the caching mode, which determines when resources will be fetched/updated. + switch (config.installMode) { + case 'prefetch': + return new PrefetchAssetGroup(this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + case 'lazy': + return new LazyAssetGroup(this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + } + }); + // Process each `DataGroup` declared in the manifest. + this.dataGroups = (manifest.dataGroups || []) + .map(config => new DataGroup(this.scope, this.adapter, config, this.database, `ngsw:${config.version}:data`)); + } + get okay() { return this._okay; } + /** + * Fully initialize this version of the application. If this Promise resolves successfully, all + * required + * data has been safely downloaded. + */ + async initializeFully(updateFrom) { + try { + // Fully initialize each asset group, in series. Starts with an empty Promise, + // and waits for the previous groups to have been initialized before initializing + // the next one in turn. + await this.assetGroups.reduce(async (previous, group) => { + // Wait for the previous groups to complete initialization. If there is a + // failure, this will throw, and each subsequent group will throw, until the + // whole sequence fails. + await previous; + // Initialize this group. + return group.initializeFully(updateFrom); + }, Promise.resolve()); + } + catch (err) { + this._okay = false; + throw err; + } + } + async handleFetch(req, context) { + // Check the request against each `AssetGroup` in sequence. If an `AssetGroup` can't handle the + // request, + // it will return `null`. Thus, the first non-null response is the SW's answer to the request. + // So reduce + // the group list, keeping track of a possible response. If there is one, it gets passed + // through, and if + // not the next group is consulted to produce a candidate response. + const asset = await this.assetGroups.reduce(async (potentialResponse, group) => { + // Wait on the previous potential response. If it's not null, it should just be passed + // through. + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + // No response has been found yet. Maybe this group will have one. + return group.handleFetch(req, context); + }, Promise.resolve(null)); + // The result of the above is the asset response, if there is any, or null otherwise. Return the + // asset + // response if there was one. If not, check with the data caching groups. + if (asset !== null) { + return asset; + } + // Perform the same reduction operation as above, but this time processing + // the data caching groups. + const data = await this.dataGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, context); + }, Promise.resolve(null)); + // If the data caching group returned a response, go with it. + if (data !== null) { + return data; + } + // Next, check if this is a navigation request for a route. Detect circular + // navigations by checking if the request URL is the same as the index URL. + if (isNavigationRequest(req, this.scope.registration.scope, this.adapter) && + req.url !== this.manifest.index) { + // This was a navigation request. Re-enter `handleFetch` with a request for + // the URL. + return this.handleFetch(this.adapter.newRequest(this.manifest.index), context); + } + return null; + } + /** + * Check this version for a given resource with a particular hash. + */ + async lookupResourceWithHash(url, hash) { + const req = this.adapter.newRequest(url); + // Verify that this version has the requested resource cached. If not, + // there's no point in trying. + if (!this.hashTable.has(url)) { + return null; + } + // Next, check whether the resource has the correct hash. If not, any cached + // response isn't usable. + if (this.hashTable.get(url) !== hash) { + return null; + } + // TODO: no-op context and appropriate contract. Currently this is a violation + // of the typings and could cause issues if handleFetch() has side effects. A + // better strategy to deal with side effects is needed. + // TODO: this could result in network fetches if the response is lazy. Refactor + // to avoid them. + return this.handleFetch(req, null); + } + /** + * Check this version for a given resource regardless of its hash. + */ + lookupResourceWithoutHash(url) { + // Limit the search to asset groups, and only scan the cache, don't + // load resources from the network. + return this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + // fetchFromCacheOnly() avoids any network fetches, and returns the + // full set of cache data, not just the Response. + return group.fetchFromCacheOnly(url); + }, Promise.resolve(null)); + } + /** + * List all unhashed resources from all asset groups. + */ + previouslyCachedResources() { + return this.assetGroups.reduce(async (resources, group) => { + return (await resources).concat(await group.unhashedResources()); + }, Promise.resolve([])); + } + async recentCacheStatus(url) { + return this.assetGroups.reduce(async (current, group) => { + const status = await current; + if (status === UpdateCacheStatus.CACHED) { + return status; + } + const groupStatus = await group.cacheStatus(url); + if (groupStatus === UpdateCacheStatus.NOT_CACHED) { + return status; + } + return groupStatus; + }, Promise.resolve(UpdateCacheStatus.NOT_CACHED)); + } + /** + * Erase this application version, by cleaning up all the caches. + */ + async cleanup() { + await Promise.all(this.assetGroups.map(group => group.cleanup())); + await Promise.all(this.dataGroups.map(group => group.cleanup())); + } + /** + * Get the opaque application data which was provided with the manifest. + */ + get appData() { return this.manifest.appData || null; } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const DEBUG_LOG_BUFFER_SIZE = 100; +class DebugHandler { + constructor(driver, adapter) { + this.driver = driver; + this.adapter = adapter; + // There are two debug log message arrays. debugLogA records new debugging messages. + // Once it reaches DEBUG_LOG_BUFFER_SIZE, the array is moved to debugLogB and a new + // array is assigned to debugLogA. This ensures that insertion to the debug log is + // always O(1) no matter the number of logged messages, and that the total number + // of messages in the log never exceeds 2 * DEBUG_LOG_BUFFER_SIZE. + this.debugLogA = []; + this.debugLogB = []; + } + async handleFetch(req) { + const [state, versions, idle] = await Promise.all([ + this.driver.debugState(), + this.driver.debugVersions(), + this.driver.debugIdleState(), + ]); + const msgState = `NGSW Debug Info: + +Driver state: ${state.state} (${state.why}) +Latest manifest hash: ${state.latestHash || 'none'} +Last update check: ${this.since(state.lastUpdateCheck)}`; + const msgVersions = versions + .map(version => `=== Version ${version.hash} === + +Clients: ${version.clients.join(', ')}`) + .join('\n\n'); + const msgIdle = `=== Idle Task Queue === +Last update tick: ${this.since(idle.lastTrigger)} +Last update run: ${this.since(idle.lastRun)} +Task queue: +${idle.queue.map(v => ' * ' + v).join('\n')} + +Debug log: +${this.formatDebugLog(this.debugLogB)} +${this.formatDebugLog(this.debugLogA)} +`; + return this.adapter.newResponse(`${msgState} + +${msgVersions} + +${msgIdle}`, { headers: this.adapter.newHeaders({ 'Content-Type': 'text/plain' }) }); + } + since(time) { + if (time === null) { + return 'never'; + } + let age = this.adapter.time - time; + const days = Math.floor(age / 86400000); + age = age % 86400000; + const hours = Math.floor(age / 3600000); + age = age % 3600000; + const minutes = Math.floor(age / 60000); + age = age % 60000; + const seconds = Math.floor(age / 1000); + const millis = age % 1000; + return '' + (days > 0 ? `${days}d` : '') + (hours > 0 ? `${hours}h` : '') + + (minutes > 0 ? `${minutes}m` : '') + (seconds > 0 ? `${seconds}s` : '') + + (millis > 0 ? `${millis}u` : ''); + } + log(value, context = '') { + // Rotate the buffers if debugLogA has grown too large. + if (this.debugLogA.length === DEBUG_LOG_BUFFER_SIZE) { + this.debugLogB = this.debugLogA; + this.debugLogA = []; + } + // Convert errors to string for logging. + if (typeof value !== 'string') { + value = this.errorToString(value); + } + // Log the message. + this.debugLogA.push({ value, time: this.adapter.time, context }); + } + errorToString(err) { return `${err.name}(${err.message}, ${err.stack})`; } + formatDebugLog(log) { + return log.map(entry => `[${this.since(entry.time)}] ${entry.value} ${entry.context}`) + .join('\n'); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +class IdleScheduler { + constructor(adapter, threshold, debug) { + this.adapter = adapter; + this.threshold = threshold; + this.debug = debug; + this.queue = []; + this.scheduled = null; + this.empty = Promise.resolve(); + this.emptyResolve = null; + this.lastTrigger = null; + this.lastRun = null; + } + async trigger() { + this.lastTrigger = this.adapter.time; + if (this.queue.length === 0) { + return; + } + if (this.scheduled !== null) { + this.scheduled.cancel = true; + } + const scheduled = { + cancel: false, + }; + this.scheduled = scheduled; + await this.adapter.timeout(this.threshold); + if (scheduled.cancel) { + return; + } + this.scheduled = null; + await this.execute(); + } + async execute() { + this.lastRun = this.adapter.time; + while (this.queue.length > 0) { + const queue = this.queue; + this.queue = []; + await queue.reduce(async (previous, task) => { + await previous; + try { + await task.run(); + } + catch (err) { + this.debug.log(err, `while running idle task ${task.desc}`); + } + }, Promise.resolve()); + } + if (this.emptyResolve !== null) { + this.emptyResolve(); + this.emptyResolve = null; + } + this.empty = Promise.resolve(); + } + schedule(desc, run) { + this.queue.push({ desc, run }); + if (this.emptyResolve === null) { + this.empty = new Promise(resolve => { this.emptyResolve = resolve; }); + } + } + get size() { return this.queue.length; } + get taskDescriptions() { return this.queue.map(task => task.desc); } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function hashManifest(manifest) { + return sha1(JSON.stringify(manifest)); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function isMsgCheckForUpdates(msg) { + return msg.action === 'CHECK_FOR_UPDATES'; +} +function isMsgActivateUpdate(msg) { + return msg.action === 'ACTIVATE_UPDATE'; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const IDLE_THRESHOLD = 5000; +const SUPPORTED_CONFIG_VERSION = 1; +const NOTIFICATION_OPTION_NAMES = [ + 'actions', 'body', 'dir', 'icon', 'lang', 'renotify', 'requireInteraction', 'tag', 'vibrate', + 'data' +]; +var DriverReadyState; +(function (DriverReadyState) { + // The SW is operating in a normal mode, responding to all traffic. + DriverReadyState[DriverReadyState["NORMAL"] = 0] = "NORMAL"; + // The SW does not have a clean installation of the latest version of the app, but older + // cached versions are safe to use so long as they don't try to fetch new dependencies. + // This is a degraded state. + DriverReadyState[DriverReadyState["EXISTING_CLIENTS_ONLY"] = 1] = "EXISTING_CLIENTS_ONLY"; + // The SW has decided that caching is completely unreliable, and is forgoing request + // handling until the next restart. + DriverReadyState[DriverReadyState["SAFE_MODE"] = 2] = "SAFE_MODE"; +})(DriverReadyState || (DriverReadyState = {})); +class Driver { + constructor(scope, adapter, db) { + // Set up all the event handlers that the SW needs. + this.scope = scope; + this.adapter = adapter; + this.db = db; + /** + * Tracks the current readiness condition under which the SW is operating. This controls + * whether the SW attempts to respond to some or all requests. + */ + this.state = DriverReadyState.NORMAL; + this.stateMessage = '(nominal)'; + /** + * Tracks whether the SW is in an initialized state or not. Before initialization, + * it's not legal to respond to requests. + */ + this.initialized = null; + /** + * Maps client IDs to the manifest hash of the application version being used to serve + * them. If a client ID is not present here, it has not yet been assigned a version. + * + * If a ManifestHash appears here, it is also present in the `versions` map below. + */ + this.clientVersionMap = new Map(); + /** + * Maps manifest hashes to instances of `AppVersion` for those manifests. + */ + this.versions = new Map(); + /** + * The latest version fetched from the server. + * + * Valid after initialization has completed. + */ + this.latestHash = null; + this.lastUpdateCheck = null; + // The install event is triggered when the service worker is first installed. + this.scope.addEventListener('install', (event) => { + // SW code updates are separate from application updates, so code updates are + // almost as straightforward as restarting the SW. Because of this, it's always + // safe to skip waiting until application tabs are closed, and activate the new + // SW version immediately. + event.waitUntil(this.scope.skipWaiting()); + }); + // The activate event is triggered when this version of the service worker is + // first activated. + this.scope.addEventListener('activate', (event) => { + // As above, it's safe to take over from existing clients immediately, since + // the new SW version will continue to serve the old application. + event.waitUntil(this.scope.clients.claim()); + // Rather than wait for the first fetch event, which may not arrive until + // the next time the application is loaded, the SW takes advantage of the + // activation event to schedule initialization. However, if this were run + // in the context of the 'activate' event, waitUntil() here would cause fetch + // events to block until initialization completed. Thus, the SW does a + // postMessage() to itself, to schedule a new event loop iteration with an + // entirely separate event context. The SW will be kept alive by waitUntil() + // within that separate context while initialization proceeds, while at the + // same time the activation event is allowed to resolve and traffic starts + // being served. + if (this.scope.registration.active !== null) { + this.scope.registration.active.postMessage({ action: 'INITIALIZE' }); + } + }); + // Handle the fetch, message, and push events. + this.scope.addEventListener('fetch', (event) => this.onFetch(event)); + this.scope.addEventListener('message', (event) => this.onMessage(event)); + this.scope.addEventListener('push', (event) => this.onPush(event)); + // The debugger generates debug pages in response to debugging requests. + this.debugger = new DebugHandler(this, this.adapter); + // The IdleScheduler will execute idle tasks after a given delay. + this.idle = new IdleScheduler(this.adapter, IDLE_THRESHOLD, this.debugger); + } + /** + * The handler for fetch events. + * + * This is the transition point between the synchronous event handler and the + * asynchronous execution that eventually resolves for respondWith() and waitUntil(). + */ + onFetch(event) { + // The only thing that is served unconditionally is the debug page. + if (this.adapter.parseUrl(event.request.url, this.scope.registration.scope).path === + '/ngsw/state') { + // Allow the debugger to handle the request, but don't affect SW state in any + // other way. + event.respondWith(this.debugger.handleFetch(event.request)); + return; + } + // If the SW is in a broken state where it's not safe to handle requests at all, + // returning causes the request to fall back on the network. This is preferred over + // `respondWith(fetch(req))` because the latter still shows in DevTools that the + // request was handled by the SW. + // TODO: try to handle DriverReadyState.EXISTING_CLIENTS_ONLY here. + if (this.state === DriverReadyState.SAFE_MODE) { + // Even though the worker is in safe mode, idle tasks still need to happen so + // things like update checks, etc. can take place. + event.waitUntil(this.idle.trigger()); + return; + } + // Past this point, the SW commits to handling the request itself. This could still + // fail (and result in `state` being set to `SAFE_MODE`), but even in that case the + // SW will still deliver a response. + event.respondWith(this.handleFetch(event)); + } + /** + * The handler for message events. + */ + onMessage(event) { + // Ignore message events when the SW is in safe mode, for now. + if (this.state === DriverReadyState.SAFE_MODE) { + return; + } + // If the message doesn't have the expected signature, ignore it. + const data = event.data; + if (!data || !data.action) { + return; + } + // Initialization is the only event which is sent directly from the SW to itself, + // and thus `event.source` is not a Client. Handle it here, before the check + // for Client sources. + if (data.action === 'INITIALIZE' && this.initialized === null) { + // Initialize the SW. + this.initialized = this.initialize(); + // Wait until initialization is properly scheduled, then trigger idle + // events to allow it to complete (assuming the SW is idle). + event.waitUntil((async () => { + await this.initialized; + await this.idle.trigger(); + })()); + } + // Only messages from true clients are accepted past this point (this is essentially + // a typecast). + if (!this.adapter.isClient(event.source)) { + return; + } + // Handle the message and keep the SW alive until it's handled. + event.waitUntil(this.handleMessage(data, event.source)); + } + onPush(msg) { + // Push notifications without data have no effect. + if (!msg.data) { + return; + } + // Handle the push and keep the SW alive until it's handled. + msg.waitUntil(this.handlePush(msg.data)); + } + async handleMessage(msg, from) { + if (isMsgCheckForUpdates(msg)) { + const action = (async () => { await this.checkForUpdate(); })(); + await this.reportStatus(from, action, msg.statusNonce); + } + else if (isMsgActivateUpdate(msg)) { + await this.reportStatus(from, this.updateClient(from), msg.statusNonce); + } + } + async handlePush(data) { + this.broadcast({ + type: 'PUSH', + data, + }); + if (!data.notification || !data.notification.title) { + return; + } + const desc = data.notification; + let options = {}; + NOTIFICATION_OPTION_NAMES.filter(name => desc.hasOwnProperty(name)) + .forEach(name => options[name] = desc[name]); + this.scope.registration.showNotification(desc['title'], options); + } + async reportStatus(client, promise, nonce) { + const response = { type: 'STATUS', nonce, status: true }; + try { + await promise; + client.postMessage(response); + } + catch (e) { + client.postMessage(Object.assign({}, response, { status: false, error: e.toString() })); + } + } + async updateClient(client) { + // Figure out which version the client is on. If it's not on the latest, + // it needs to be moved. + const existing = this.clientVersionMap.get(client.id); + if (existing === this.latestHash) { + // Nothing to do, this client is already on the latest version. + return; + } + // Switch the client over. + let previous = undefined; + // Look up the application data associated with the existing version. If there + // isn't any, fall back on using the hash. + if (existing !== undefined) { + const existingVersion = this.versions.get(existing); + previous = this.mergeHashWithAppData(existingVersion.manifest, existing); + } + // Set the current version used by the client, and sync the mapping to disk. + this.clientVersionMap.set(client.id, this.latestHash); + await this.sync(); + // Notify the client about this activation. + const current = this.versions.get(this.latestHash); + const notice = { + type: 'UPDATE_ACTIVATED', + previous, + current: this.mergeHashWithAppData(current.manifest, this.latestHash), + }; + client.postMessage(notice); + } + async handleFetch(event) { + // Since the SW may have just been started, it may or may not have been initialized already. + // this.initialized will be `null` if initialization has not yet been attempted, or will be a + // Promise which will resolve (successfully or unsuccessfully) if it has. + if (this.initialized === null) { + // Initialization has not yet been attempted, so attempt it. This should only ever happen once + // per SW instantiation. + this.initialized = this.initialize(); + } + // If initialization fails, the SW needs to enter a safe state, where it declines to respond to + // network requests. + try { + // Wait for initialization. + await this.initialized; + } + catch (e) { + // Initialization failed. Enter a safe state. + this.state = DriverReadyState.SAFE_MODE; + this.stateMessage = `Initialization failed due to error: ${errorToString(e)}`; + // Even though the driver entered safe mode, background tasks still need to happen. + event.waitUntil(this.idle.trigger()); + // Since the SW is already committed to responding to the currently active request, + // respond with a network fetch. + return this.safeFetch(event.request); + } + // Decide which version of the app to use to serve this request. This is asynchronous as in + // some cases, a record will need to be written to disk about the assignment that is made. + const appVersion = await this.assignVersion(event); + // Bail out + if (appVersion === null) { + event.waitUntil(this.idle.trigger()); + return this.safeFetch(event.request); + } + // Handle the request. First try the AppVersion. If that doesn't work, fall back on the network. + const res = await appVersion.handleFetch(event.request, event); + // The AppVersion will only return null if the manifest doesn't specify what to do about this + // request. In that case, just fall back on the network. + if (res === null) { + event.waitUntil(this.idle.trigger()); + return this.safeFetch(event.request); + } + // Trigger the idle scheduling system. The Promise returned by trigger() will resolve after + // a specific amount of time has passed. If trigger() hasn't been called again by then (e.g. + // on a subsequent request), the idle task queue will be drained and the Promise won't resolve + // until that operation is complete as well. + event.waitUntil(this.idle.trigger()); + // The AppVersion returned a usable response, so return it. + return res; + } + /** + * Attempt to quickly reach a state where it's safe to serve responses. + */ + async initialize() { + // On initialization, all of the serialized state is read out of the 'control' + // table. This includes: + // - map of hashes to manifests of currently loaded application versions + // - map of client IDs to their pinned versions + // - record of the most recently fetched manifest hash + // + // If these values don't exist in the DB, then this is the either the first time + // the SW has run or the DB state has been wiped or is inconsistent. In that case, + // load a fresh copy of the manifest and reset the state from scratch. + // Open up the DB table. + const table = await this.db.open('control'); + // Attempt to load the needed state from the DB. If this fails, the catch {} block + // will populate these variables with freshly constructed values. + let manifests, assignments, latest; + try { + // Read them from the DB simultaneously. + [manifests, assignments, latest] = await Promise.all([ + table.read('manifests'), + table.read('assignments'), + table.read('latest'), + ]); + // Successfully loaded from saved state. This implies a manifest exists, so + // the update check needs to happen in the background. + this.idle.schedule('init post-load (update, cleanup)', async () => { + await this.checkForUpdate(); + try { + await this.cleanupCaches(); + } + catch (err) { + // Nothing to do - cleanup failed. Just log it. + this.debugger.log(err, 'cleanupCaches @ init post-load'); + } + }); + } + catch (_) { + // Something went wrong. Try to start over by fetching a new manifest from the + // server and building up an empty initial state. + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + manifests = {}; + manifests[hash] = manifest; + assignments = {}; + latest = { latest: hash }; + // Save the initial state to the DB. + await Promise.all([ + table.write('manifests', manifests), + table.write('assignments', assignments), + table.write('latest', latest), + ]); + } + // At this point, either the state has been loaded successfully, or fresh state + // with a new copy of the manifest has been produced. At this point, the `Driver` + // can have its internals hydrated from the state. + // Initialize the `versions` map by setting each hash to a new `AppVersion` instance + // for that manifest. + Object.keys(manifests).forEach((hash) => { + const manifest = manifests[hash]; + // If the manifest is newly initialized, an AppVersion may have already been + // created for it. + if (!this.versions.has(hash)) { + this.versions.set(hash, new AppVersion(this.scope, this.adapter, this.db, this.idle, manifest, hash)); + } + }); + // Map each client ID to its associated hash. Along the way, verify that the hash + // is still valid for that client ID. It should not be possible for a client to + // still be associated with a hash that was since removed from the state. + Object.keys(assignments).forEach((clientId) => { + const hash = assignments[clientId]; + if (this.versions.has(hash)) { + this.clientVersionMap.set(clientId, hash); + } + else { + this.clientVersionMap.set(clientId, latest.latest); + this.debugger.log(`Unknown version ${hash} mapped for client ${clientId}, using latest instead`, `initialize: map assignments`); + } + }); + // Set the latest version. + this.latestHash = latest.latest; + // Finally, assert that the latest version is in fact loaded. + if (!this.versions.has(latest.latest)) { + throw new Error(`Invariant violated (initialize): latest hash ${latest.latest} has no known manifest`); + } + // Finally, wait for the scheduling of initialization of all versions in the + // manifest. Ordinarily this just schedules the initializations to happen during + // the next idle period, but in development mode this might actually wait for the + // full initialization. + // If any of these initializations fail, versionFailed() will be called either + // synchronously or asynchronously to handle the failure and re-map clients. + await Promise.all(Object.keys(manifests).map(async (hash) => { + try { + // Attempt to schedule or initialize this version. If this operation is + // successful, then initialization either succeeded or was scheduled. If + // it fails, then full initialization was attempted and failed. + await this.scheduleInitialization(this.versions.get(hash)); + } + catch (err) { + this.debugger.log(err, `initialize: schedule init of ${hash}`); + return false; + } + })); + } + lookupVersionByHash(hash, debugName = 'lookupVersionByHash') { + // The version should exist, but check just in case. + if (!this.versions.has(hash)) { + throw new Error(`Invariant violated (${debugName}): want AppVersion for ${hash} but not loaded`); + } + return this.versions.get(hash); + } + /** + * Decide which version of the manifest to use for the event. + */ + async assignVersion(event) { + // First, check whether the event has a client ID. If it does, the version may + // already be associated. + const clientId = event.clientId; + if (clientId !== null) { + // Check if there is an assigned client id. + if (this.clientVersionMap.has(clientId)) { + // There is an assignment for this client already. + let hash = this.clientVersionMap.get(clientId); + // Ordinarily, this client would be served from its assigned version. But, if this + // request is a navigation request, this client can be updated to the latest + // version immediately. + if (this.state === DriverReadyState.NORMAL && hash !== this.latestHash && + isNavigationRequest(event.request, this.scope.registration.scope, this.adapter)) { + // Update this client to the latest version immediately. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + const client = await this.scope.clients.get(clientId); + await this.updateClient(client); + hash = this.latestHash; + } + // TODO: make sure the version is valid. + return this.lookupVersionByHash(hash, 'assignVersion'); + } + else { + // This is the first time this client ID has been seen. Whether the SW is in a + // state to handle new clients depends on the current readiness state, so check + // that first. + if (this.state !== DriverReadyState.NORMAL) { + // It's not safe to serve new clients in the current state. It's possible that + // this is an existing client which has not been mapped yet (see below) but + // even if that is the case, it's invalid to make an assignment to a known + // invalid version, even if that assignment was previously implicit. Return + // undefined here to let the caller know that no assignment is possible at + // this time. + return null; + } + // It's safe to handle this request. Two cases apply. Either: + // 1) the browser assigned a client ID at the time of the navigation request, and + // this is truly the first time seeing this client, or + // 2) a navigation request came previously from the same client, but with no client + // ID attached. Browsers do this to avoid creating a client under the origin in + // the event the navigation request is just redirected. + // + // In case 1, the latest version can safely be used. + // In case 2, the latest version can be used, with the assumption that the previous + // navigation request was answered under the same version. This assumption relies + // on the fact that it's unlikely an update will come in between the navigation + // request and requests for subsequent resources on that page. + // First validate the current state. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + // Pin this client ID to the current latest version, indefinitely. + this.clientVersionMap.set(clientId, this.latestHash); + await this.sync(); + // Return the latest `AppVersion`. + return this.lookupVersionByHash(this.latestHash, 'assignVersion'); + } + } + else { + // No client ID was associated with the request. This must be a navigation request + // for a new client. First check that the SW is accepting new clients. + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + // Serve it with the latest version, and assume that the client will actually get + // associated with that version on the next request. + // First validate the current state. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + // Return the latest `AppVersion`. + return this.lookupVersionByHash(this.latestHash, 'assignVersion'); + } + } + /** + * Retrieve a copy of the latest manifest from the server. + */ + async fetchLatestManifest() { + const res = await this.safeFetch(this.adapter.newRequest('/ngsw.json?ngsw-cache-bust=' + Math.random())); + if (!res.ok) { + if (res.status === 404) { + await this.deleteAllCaches(); + this.scope.registration.unregister(); + } + throw new Error('Manifest fetch failed!'); + } + this.lastUpdateCheck = this.adapter.time; + return res.json(); + } + async deleteAllCaches() { + await (await this.scope.caches.keys()) + .filter(key => key.startsWith('ngsw:')) + .reduce(async (previous, key) => { + await Promise.all([ + previous, + this.scope.caches.delete(key), + ]); + }, Promise.resolve()); + } + /** + * Schedule the SW's attempt to reach a fully prefetched state for the given AppVersion + * when the SW is not busy and has connectivity. This returns a Promise which must be + * awaited, as under some conditions the AppVersion might be initialized immediately. + */ + async scheduleInitialization(appVersion) { + const initialize = async () => { + try { + await appVersion.initializeFully(); + } + catch (err) { + this.debugger.log(err, `initializeFully for ${appVersion.manifestHash}`); + await this.versionFailed(appVersion, err); + } + }; + // TODO: better logic for detecting localhost. + if (this.scope.registration.scope.indexOf('://localhost') > -1) { + return initialize(); + } + this.idle.schedule(`initialization(${appVersion.manifestHash})`, initialize); + } + async versionFailed(appVersion, err) { + // This particular AppVersion is broken. First, find the manifest hash. + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === undefined) { + // This version is no longer in use anyway, so nobody cares. + return; + } + const brokenHash = broken[0]; + // TODO: notify affected apps. + // The action taken depends on whether the broken manifest is the active (latest) or not. + // If so, the SW cannot accept new clients, but can continue to service old ones. + if (this.latestHash === brokenHash) { + // The latest manifest is broken. This means that new clients are at the mercy of the + // network, but caches continue to be valid for previous versions. This is + // unfortunate but unavoidable. + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to failed initialization: ${errorToString(err)}`; + // Cancel the binding for these clients. + Array.from(this.clientVersionMap.keys()) + .forEach(clientId => this.clientVersionMap.delete(clientId)); + } + else { + // The current version is viable, but this older version isn't. The only + // possible remedy is to stop serving the older version and go to the network. + // Figure out which clients are affected and put them on the latest. + const affectedClients = Array.from(this.clientVersionMap.keys()) + .filter(clientId => this.clientVersionMap.get(clientId) === brokenHash); + // Push the affected clients onto the latest version. + affectedClients.forEach(clientId => this.clientVersionMap.set(clientId, this.latestHash)); + } + await this.sync(); + } + async setupUpdate(manifest, hash) { + const newVersion = new AppVersion(this.scope, this.adapter, this.db, this.idle, manifest, hash); + // Try to determine a version that's safe to update from. + let updateFrom = undefined; + // It's always safe to update from a version, even a broken one, as it will still + // only have valid resources cached. If there is no latest version, though, this + // update will have to install as a fresh version. + if (this.latestHash !== null) { + updateFrom = this.versions.get(this.latestHash); + } + // Firstly, check if the manifest version is correct. + if (manifest.configVersion !== SUPPORTED_CONFIG_VERSION) { + await this.deleteAllCaches(); + this.scope.registration.unregister(); + throw new Error(`Invalid config version: expected ${SUPPORTED_CONFIG_VERSION}, got ${manifest.configVersion}.`); + } + // Cause the new version to become fully initialized. If this fails, then the + // version will not be available for use. + await newVersion.initializeFully(this); + // Install this as an active version of the app. + this.versions.set(hash, newVersion); + // Future new clients will use this hash as the latest version. + this.latestHash = hash; + await this.sync(); + await this.notifyClientsAboutUpdate(); + } + async checkForUpdate() { + try { + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + // Check whether this is really an update. + if (this.versions.has(hash)) { + return false; + } + await this.setupUpdate(manifest, hash); + return true; + } + catch (_) { + return false; + } + } + /** + * Synchronize the existing state to the underlying database. + */ + async sync() { + // Open up the DB table. + const table = await this.db.open('control'); + // Construct a serializable map of hashes to manifests. + const manifests = {}; + this.versions.forEach((version, hash) => { manifests[hash] = version.manifest; }); + // Construct a serializable map of client ids to version hashes. + const assignments = {}; + this.clientVersionMap.forEach((hash, clientId) => { assignments[clientId] = hash; }); + // Record the latest entry. Since this is a sync which is necessarily happening after + // initialization, latestHash should always be valid. + const latest = { + latest: this.latestHash, + }; + // Synchronize all of these. + await Promise.all([ + table.write('manifests', manifests), + table.write('assignments', assignments), + table.write('latest', latest), + ]); + } + async cleanupCaches() { + // Query for all currently active clients, and list the client ids. This may skip + // some clients in the browser back-forward cache, but not much can be done about + // that. + const activeClients = (await this.scope.clients.matchAll()).map(client => client.id); + // A simple list of client ids that the SW has kept track of. Subtracting + // activeClients from this list will result in the set of client ids which are + // being tracked but are no longer used in the browser, and thus can be cleaned up. + const knownClients = Array.from(this.clientVersionMap.keys()); + // Remove clients in the clientVersionMap that are no longer active. + knownClients.filter(id => activeClients.indexOf(id) === -1) + .forEach(id => this.clientVersionMap.delete(id)); + // Next, determine the set of versions which are still used. All others can be + // removed. + const usedVersions = new Set(); + this.clientVersionMap.forEach((version, _) => usedVersions.add(version)); + // Collect all obsolete versions by filtering out used versions from the set of all versions. + const obsoleteVersions = Array.from(this.versions.keys()) + .filter(version => !usedVersions.has(version) && version !== this.latestHash); + // Remove all the versions which are no longer used. + await obsoleteVersions.reduce(async (previous, version) => { + // Wait for the other cleanup operations to complete. + await previous; + // Try to get past the failure of one particular version to clean up (this + // shouldn't happen, but handle it just in case). + try { + // Get ahold of the AppVersion for this particular hash. + const instance = this.versions.get(version); + // Delete it from the canonical map. + this.versions.delete(version); + // Clean it up. + await instance.cleanup(); + } + catch (err) { + // Oh well? Not much that can be done here. These caches will be removed when + // the SW revs its format version, which happens from time to time. + this.debugger.log(err, `cleanupCaches - cleanup ${version}`); + } + }, Promise.resolve()); + // Commit all the changes to the saved state. + await this.sync(); + } + /** + * Determine if a specific version of the given resource is cached anywhere within the SW, + * and fetch it if so. + */ + lookupResourceWithHash(url, hash) { + return Array + .from(this.versions.values()) + .reduce(async (prev, version) => { + // First, check the previous result. If a non-null result has been found already, just + // return it. + if (await prev !== null) { + return prev; + } + // No result has been found yet. Try the next `AppVersion`. + return version.lookupResourceWithHash(url, hash); + }, Promise.resolve(null)); + } + async lookupResourceWithoutHash(url) { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version.lookupResourceWithoutHash(url); + } + async previouslyCachedResources() { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version.previouslyCachedResources(); + } + recentCacheStatus(url) { + const version = this.versions.get(this.latestHash); + return version.recentCacheStatus(url); + } + mergeHashWithAppData(manifest, hash) { + return { + hash, + appData: manifest.appData, + }; + } + async notifyClientsAboutUpdate() { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + const next = this.versions.get(this.latestHash); + await clients.reduce(async (previous, client) => { + await previous; + // Firstly, determine which version this client is on. + const version = this.clientVersionMap.get(client.id); + if (version === undefined) { + // Unmapped client - assume it's the latest. + return; + } + if (version === this.latestHash) { + // Client is already on the latest version, no need for a notification. + return; + } + const current = this.versions.get(version); + // Send a notice. + const notice = { + type: 'UPDATE_AVAILABLE', + current: this.mergeHashWithAppData(current.manifest, version), + available: this.mergeHashWithAppData(next.manifest, this.latestHash), + }; + client.postMessage(notice); + }, Promise.resolve()); + } + async broadcast(msg) { + const clients = await this.scope.clients.matchAll(); + clients.forEach(client => { client.postMessage(msg); }); + } + async debugState() { + return { + state: DriverReadyState[this.state], + why: this.stateMessage, + latestHash: this.latestHash, + lastUpdateCheck: this.lastUpdateCheck, + }; + } + async debugVersions() { + // Build list of versions. + return Array.from(this.versions.keys()).map(hash => { + const version = this.versions.get(hash); + const clients = Array.from(this.clientVersionMap.entries()) + .filter(([clientId, version]) => version === hash) + .map(([clientId, version]) => clientId); + return { + hash, + manifest: version.manifest, clients, + status: '', + }; + }); + } + async debugIdleState() { + return { + queue: this.idle.taskDescriptions, + lastTrigger: this.idle.lastTrigger, + lastRun: this.idle.lastRun, + }; + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } + catch (err) { + this.debugger.log(err, `Driver.fetch(${req.url})`); + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} +function errorToString(error) { + if (error instanceof Error) { + return `${error.message}\n${error.stack}`; + } + else { + return `${error}`; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const scope = self; +const adapter = new Adapter(); +const driver = new Driver(scope, adapter, new CacheDatabase(scope, adapter)); + +}()); diff --git a/public/ngsw.json b/public/ngsw.json new file mode 100644 index 0000000..bc6f394 --- /dev/null +++ b/public/ngsw.json @@ -0,0 +1,56 @@ +{ + "configVersion": 1, + "index": "/index.html", + "appData": { + "test": true + }, + "assetGroups": [ + { + "name": "appshell", + "installMode": "prefetch", + "updateMode": "prefetch", + "urls": [], + "patterns": [ + "https:\\/\\/fonts\\.gstatic\\.com\\/s\\/materialicons\\/v29\\/2fcrYFNaTjcS6g4U3t-Y5UEw0lE80llgEseQY3FEmqw\\.woff2", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/animate\\.css\\/3\\.5\\.2\\/animate\\.min\\.css", + "https:\\/\\/fonts\\.googleapis\\.com\\/css\\?family=Inconsolata:400,700", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/prism\\/1\\.5\\.1\\/themes\\/prism\\.min\\.css", + "https:\\/\\/cdn\\.materialdesignicons\\.com\\/2\\.0\\.46\\/css\\/materialdesignicons\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/uikit\\/3\\.0\\.0-beta\\.30\\/css\\/uikit\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/font-awesome\\/4\\.6\\.3\\/css\\/font-awesome\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/material-design-iconic-font\\/2\\.2\\.0\\/css\\/material-design-iconic-font\\.min\\.css", + "https:\\/\\/fonts\\.googleapis\\.com\\/icon\\?family=Material\\+Icons", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/font-awesome\\/4\\.6\\.3\\/css\\/font-awesome\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/typicons\\/2\\.0\\.7\\/typicons\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/ionicons\\/2\\.0\\.1\\/css\\/ionicons\\.min\\.css", + "https:\\/\\/netdna\\.bootstrapcdn\\.com\\/bootstrap\\/3\\.0\\.0\\/fonts\\/glyphicons-halflings-regular\\.woff", + "https:\\/\\/netdna\\.bootstrapcdn\\.com\\/bootstrap\\/3\\.0\\.0\\/fonts\\/glyphicons-halflings-regular\\.ttf" + ] + } + ], + "dataGroups": [ + { + "name": "api-freshness", + "patterns": [ + "https:\\/\\/192\\.168\\.43\\.188\\:3040\\/dist\\/pretty-checkbox\\.min\\.css" + ], + "strategy": "freshness", + "maxSize": 100, + "maxAge": 259200000, + "timeoutMs": 60000, + "version": 1 + }, + { + "name": "api-performance", + "patterns": [ + "\\/" + ], + "strategy": "performance", + "maxSize": 100, + "maxAge": 259200000, + "timeoutMs": 60000, + "version": 1 + } + ], + "hashTable": {} +} \ No newline at end of file diff --git a/public/sprite/open-iconic.html b/public/sprite/open-iconic.html new file mode 100644 index 0000000..82b0fb5 --- /dev/null +++ b/public/sprite/open-iconic.html @@ -0,0 +1,929 @@ + + + + + + + + +

+

+ Make sure to run this through a web server otherwise you won’t see any icons. You can use Serve for local testing. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/public/sprite/open-iconic.min.svg b/public/sprite/open-iconic.min.svg new file mode 100644 index 0000000..19b6fcf --- /dev/null +++ b/public/sprite/open-iconic.min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/sprite/open-iconic.svg b/public/sprite/open-iconic.svg new file mode 100644 index 0000000..cba89bc --- /dev/null +++ b/public/sprite/open-iconic.svg @@ -0,0 +1,452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/sprite/sprite.html b/public/sprite/sprite.html new file mode 100644 index 0000000..d945efe --- /dev/null +++ b/public/sprite/sprite.html @@ -0,0 +1,926 @@ + + + + + + + + +
+

Make sure to run this through a web server otherwise you won’t see any icons. You can use Serve for local testing.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/public/sprite/sprite.min.svg b/public/sprite/sprite.min.svg new file mode 100644 index 0000000..af927c6 --- /dev/null +++ b/public/sprite/sprite.min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/sprite/sprite.svg b/public/sprite/sprite.svg new file mode 100644 index 0000000..63d2cf4 --- /dev/null +++ b/public/sprite/sprite.svg @@ -0,0 +1,673 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/stylesheets/app.css b/public/stylesheets/app.css new file mode 100644 index 0000000..d27acb7 --- /dev/null +++ b/public/stylesheets/app.css @@ -0,0 +1,5613 @@ +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; } + a, + a:visited { + text-decoration: underline; } + abbr[title]::after { + content: " (" attr(title) ")"; } + pre { + white-space: pre-wrap !important; } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } + .navbar { + display: none; } + .badge { + border: 1px solid #000; } + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; } } + +*, +*::before, +*::after { + box-sizing: border-box; } + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; } + +@-ms-viewport { + width: device-width; } + +article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; } + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 1rem; + font-weight: normal; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; } + +[tabindex="-1"]:focus { + outline: none !important; } + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; } + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: .5rem; } + +p { + margin-top: 0; + margin-bottom: 1rem; } + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; } + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; } + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; } + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; } + +dt { + font-weight: bold; } + +dd { + margin-bottom: .5rem; + margin-left: 0; } + +blockquote { + margin: 0 0 1rem; } + +dfn { + font-style: italic; } + +b, +strong { + font-weight: bolder; } + +small { + font-size: 80%; } + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sub { + bottom: -.25em; } + +sup { + top: -.5em; } + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; } + a:hover { + color: #0056b3; + text-decoration: underline; } + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus { + outline: 0; } + +pre, +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; } + +figure { + margin: 0 0 1rem; } + +img { + vertical-align: middle; + border-style: none; } + +svg:not(:root) { + overflow: hidden; } + +a, +area, +button, +[role="button"], +input, +label, +select, +summary, +textarea { + -ms-touch-action: manipulation; + touch-action: manipulation; } + +table { + border-collapse: collapse; } + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #868e96; + text-align: left; + caption-side: bottom; } + +th { + text-align: inherit; } + +label { + display: inline-block; + margin-bottom: .5rem; } + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +button, +input { + overflow: visible; } + +button, +select { + text-transform: none; } + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; } + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; } + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; } + +textarea { + overflow: auto; + resize: vertical; } + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; } + +progress { + vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; } + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; } + +output { + display: inline-block; } + +summary { + display: list-item; } + +template { + display: none; } + +[hidden] { + display: none !important; } + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; } + +h1, .h1 { + font-size: 2.5rem; } + +h2, .h2 { + font-size: 2rem; } + +h3, .h3 { + font-size: 1.75rem; } + +h4, .h4 { + font-size: 1.5rem; } + +h5, .h5 { + font-size: 1.25rem; } + +h6, .h6 { + font-size: 1rem; } + +.lead { + font-size: 1.25rem; + font-weight: 300; } + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.1; } + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.1; } + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.1; } + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.1; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + +small, +.small { + font-size: 80%; + font-weight: normal; } + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; } + +.list-unstyled { + padding-left: 0; + list-style: none; } + +.list-inline { + padding-left: 0; + list-style: none; } + +.list-inline-item { + display: inline-block; } + .list-inline-item:not(:last-child) { + margin-right: 5px; } + +.initialism { + font-size: 90%; + text-transform: uppercase; } + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; } + +.blockquote-footer { + display: block; + font-size: 80%; + color: #868e96; } + .blockquote-footer::before { + content: "\2014 \00A0"; } + +code, +kbd, +pre, +samp { + font-family: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +code { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #bd4147; + background-color: #f8f9fa; + border-radius: 0.25rem; } + a > code { + padding: 0; + color: inherit; + background-color: inherit; } + +kbd { + padding: 0.2rem 0.4rem; + font-size: 90%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; } + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + font-size: 90%; + color: #212529; } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + background-color: transparent; + border-radius: 0; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +.container { + margin-right: auto; + margin-left: auto; + padding-right: 15px; + padding-left: 15px; + width: 100%; } + @media (min-width: 576px) { + .container { + max-width: 540px; } } + @media (min-width: 768px) { + .container { + max-width: 720px; } } + @media (min-width: 992px) { + .container { + max-width: 960px; } } + @media (min-width: 1200px) { + .container { + max-width: 1140px; } } + +.container-fluid { + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: 15px; + padding-left: 15px; + width: 100%; } + +.row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; } + +.no-gutters { + margin-right: 0; + margin-left: 0; } + .no-gutters > .col, + .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; } + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; } + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; } + +.col-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; } + +.col-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + +.col-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + +.col-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + +.col-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + +.col-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + +.col-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + +.col-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + +.col-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + +.col-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + +.col-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + +.col-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + +.col-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + +.order-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; } + +.order-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } + +.order-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; } + +.order-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; } + +.order-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; } + +.order-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; } + +.order-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; } + +.order-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; } + +.order-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; } + +.order-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; } + +.order-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; } + +.order-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; } + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; } + .col-sm-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; } + .col-sm-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .col-sm-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .col-sm-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .col-sm-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .col-sm-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .col-sm-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .col-sm-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .col-sm-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .col-sm-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .col-sm-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .col-sm-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .col-sm-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .order-sm-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; } + .order-sm-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } + .order-sm-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; } + .order-sm-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; } + .order-sm-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; } + .order-sm-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; } + .order-sm-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; } + .order-sm-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; } + .order-sm-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; } + .order-sm-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; } + .order-sm-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; } + .order-sm-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; } } + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; } + .col-md-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; } + .col-md-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .col-md-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .col-md-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .col-md-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .col-md-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .col-md-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .col-md-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .col-md-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .col-md-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .col-md-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .col-md-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .col-md-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .order-md-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; } + .order-md-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } + .order-md-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; } + .order-md-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; } + .order-md-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; } + .order-md-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; } + .order-md-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; } + .order-md-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; } + .order-md-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; } + .order-md-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; } + .order-md-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; } + .order-md-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; } } + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; } + .col-lg-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; } + .col-lg-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .col-lg-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .col-lg-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .col-lg-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .col-lg-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .col-lg-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .col-lg-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .col-lg-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .col-lg-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .col-lg-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .col-lg-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .col-lg-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .order-lg-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; } + .order-lg-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } + .order-lg-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; } + .order-lg-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; } + .order-lg-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; } + .order-lg-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; } + .order-lg-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; } + .order-lg-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; } + .order-lg-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; } + .order-lg-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; } + .order-lg-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; } + .order-lg-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; } } + +@media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; } + .col-xl-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none; } + .col-xl-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.33333%; + flex: 0 0 8.33333%; + max-width: 8.33333%; } + .col-xl-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.66667%; + flex: 0 0 16.66667%; + max-width: 16.66667%; } + .col-xl-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + .col-xl-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.33333%; + flex: 0 0 33.33333%; + max-width: 33.33333%; } + .col-xl-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.66667%; + flex: 0 0 41.66667%; + max-width: 41.66667%; } + .col-xl-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + .col-xl-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.33333%; + flex: 0 0 58.33333%; + max-width: 58.33333%; } + .col-xl-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.66667%; + flex: 0 0 66.66667%; + max-width: 66.66667%; } + .col-xl-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + .col-xl-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.33333%; + flex: 0 0 83.33333%; + max-width: 83.33333%; } + .col-xl-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.66667%; + flex: 0 0 91.66667%; + max-width: 91.66667%; } + .col-xl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; } + .order-xl-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; } + .order-xl-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } + .order-xl-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; } + .order-xl-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; } + .order-xl-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; } + .order-xl-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; } + .order-xl-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; } + .order-xl-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; } + .order-xl-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; } + .order-xl-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; } + .order-xl-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; } + .order-xl-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; } } + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent; } + .table th, + .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #e9ecef; } + .table thead th { + vertical-align: bottom; + border-bottom: 2px solid #e9ecef; } + .table tbody + tbody { + border-top: 2px solid #e9ecef; } + .table .table { + background-color: #fff; } + +.table-sm th, +.table-sm td { + padding: 0.3rem; } + +.table-bordered { + border: 1px solid #e9ecef; } + .table-bordered th, + .table-bordered td { + border: 1px solid #e9ecef; } + .table-bordered thead th, + .table-bordered thead td { + border-bottom-width: 2px; } + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); } + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, 0.075); } + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #b8daff; } + +.table-hover .table-primary:hover { + background-color: #9fcdff; } + .table-hover .table-primary:hover > td, + .table-hover .table-primary:hover > th { + background-color: #9fcdff; } + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #dddfe2; } + +.table-hover .table-secondary:hover { + background-color: #cfd2d6; } + .table-hover .table-secondary:hover > td, + .table-hover .table-secondary:hover > th { + background-color: #cfd2d6; } + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; } + +.table-hover .table-success:hover { + background-color: #b1dfbb; } + .table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { + background-color: #b1dfbb; } + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; } + +.table-hover .table-info:hover { + background-color: #abdde5; } + .table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { + background-color: #abdde5; } + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; } + +.table-hover .table-warning:hover { + background-color: #ffe8a1; } + .table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { + background-color: #ffe8a1; } + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; } + +.table-hover .table-danger:hover { + background-color: #f1b0b7; } + .table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { + background-color: #f1b0b7; } + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; } + +.table-hover .table-light:hover { + background-color: #ececf6; } + .table-hover .table-light:hover > td, + .table-hover .table-light:hover > th { + background-color: #ececf6; } + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; } + +.table-hover .table-dark:hover { + background-color: #b9bbbe; } + .table-hover .table-dark:hover > td, + .table-hover .table-dark:hover > th { + background-color: #b9bbbe; } + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); } + .table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); } + +.thead-inverse th { + color: #fff; + background-color: #212529; } + +.thead-default th { + color: #495057; + background-color: #e9ecef; } + +.table-inverse { + color: #fff; + background-color: #212529; } + .table-inverse th, + .table-inverse td, + .table-inverse thead th { + border-color: #32383e; } + .table-inverse.table-bordered { + border: 0; } + .table-inverse.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); } + .table-inverse.table-hover tbody tr:hover { + background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 991px) { + .table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive.table-bordered { + border: 0; } } + +.btn { + display: inline-block; + font-weight: normal; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 0.5rem 0.75rem; + font-size: 1rem; + line-height: 1.25; + border-radius: 0.25rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + .btn:focus, .btn:hover { + text-decoration: none; } + .btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25); } + .btn.disabled, .btn:disabled { + opacity: .65; } + .btn:active, .btn.active { + background-image: none; } + +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; } + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; } + .btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); } + .btn-primary.disabled, .btn-primary:disabled { + background-color: #007bff; + border-color: #007bff; } + .btn-primary:active, .btn-primary.active, + .show > .btn-primary.dropdown-toggle { + background-color: #0069d9; + background-image: none; + border-color: #0062cc; } + +.btn-secondary { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-secondary:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; } + .btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); } + .btn-secondary.disabled, .btn-secondary:disabled { + background-color: #868e96; + border-color: #868e96; } + .btn-secondary:active, .btn-secondary.active, + .show > .btn-secondary.dropdown-toggle { + background-color: #727b84; + background-image: none; + border-color: #6c757d; } + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; } + .btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); } + .btn-success.disabled, .btn-success:disabled { + background-color: #28a745; + border-color: #28a745; } + .btn-success:active, .btn-success.active, + .show > .btn-success.dropdown-toggle { + background-color: #218838; + background-image: none; + border-color: #1e7e34; } + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; } + .btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); } + .btn-info.disabled, .btn-info:disabled { + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:active, .btn-info.active, + .show > .btn-info.dropdown-toggle { + background-color: #138496; + background-image: none; + border-color: #117a8b; } + +.btn-warning { + color: #111; + background-color: #ffc107; + border-color: #ffc107; } + .btn-warning:hover { + color: #111; + background-color: #e0a800; + border-color: #d39e00; } + .btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); } + .btn-warning.disabled, .btn-warning:disabled { + background-color: #ffc107; + border-color: #ffc107; } + .btn-warning:active, .btn-warning.active, + .show > .btn-warning.dropdown-toggle { + background-color: #e0a800; + background-image: none; + border-color: #d39e00; } + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; } + .btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); } + .btn-danger.disabled, .btn-danger:disabled { + background-color: #dc3545; + border-color: #dc3545; } + .btn-danger:active, .btn-danger.active, + .show > .btn-danger.dropdown-toggle { + background-color: #c82333; + background-image: none; + border-color: #bd2130; } + +.btn-light { + color: #111; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:hover { + color: #111; + background-color: #e2e6ea; + border-color: #dae0e5; } + .btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); } + .btn-light.disabled, .btn-light:disabled { + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:active, .btn-light.active, + .show > .btn-light.dropdown-toggle { + background-color: #e2e6ea; + background-image: none; + border-color: #dae0e5; } + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; } + .btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); } + .btn-dark.disabled, .btn-dark:disabled { + background-color: #343a40; + border-color: #343a40; } + .btn-dark:active, .btn-dark.active, + .show > .btn-dark.dropdown-toggle { + background-color: #23272b; + background-image: none; + border-color: #1d2124; } + +.btn-outline-primary { + color: #007bff; + background-color: transparent; + background-image: none; + border-color: #007bff; } + .btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff; } + .btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); } + .btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #007bff; + background-color: transparent; } + .btn-outline-primary:active, .btn-outline-primary.active, + .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff; } + +.btn-outline-secondary { + color: #868e96; + background-color: transparent; + background-image: none; + border-color: #868e96; } + .btn-outline-secondary:hover { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); } + .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #868e96; + background-color: transparent; } + .btn-outline-secondary:active, .btn-outline-secondary.active, + .show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + +.btn-outline-success { + color: #28a745; + background-color: transparent; + background-image: none; + border-color: #28a745; } + .btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); } + .btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; } + .btn-outline-success:active, .btn-outline-success.active, + .show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + +.btn-outline-info { + color: #17a2b8; + background-color: transparent; + background-image: none; + border-color: #17a2b8; } + .btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); } + .btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; } + .btn-outline-info:active, .btn-outline-info.active, + .show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + +.btn-outline-warning { + color: #ffc107; + background-color: transparent; + background-image: none; + border-color: #ffc107; } + .btn-outline-warning:hover { + color: #fff; + background-color: #ffc107; + border-color: #ffc107; } + .btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); } + .btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; } + .btn-outline-warning:active, .btn-outline-warning.active, + .show > .btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #ffc107; + border-color: #ffc107; } + +.btn-outline-danger { + color: #dc3545; + background-color: transparent; + background-image: none; + border-color: #dc3545; } + .btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); } + .btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; } + .btn-outline-danger:active, .btn-outline-danger.active, + .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa; } + .btn-outline-light:hover { + color: #fff; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); } + .btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; } + .btn-outline-light:active, .btn-outline-light.active, + .show > .btn-outline-light.dropdown-toggle { + color: #fff; + background-color: #f8f9fa; + border-color: #f8f9fa; } + +.btn-outline-dark { + color: #343a40; + background-color: transparent; + background-image: none; + border-color: #343a40; } + .btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + .btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); } + .btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; } + .btn-outline-dark:active, .btn-outline-dark.active, + .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; } + +.btn-link { + font-weight: normal; + color: #007bff; + border-radius: 0; } + .btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled { + background-color: transparent; } + .btn-link, .btn-link:focus, .btn-link:active { + border-color: transparent; + box-shadow: none; } + .btn-link:hover { + border-color: transparent; } + .btn-link:focus, .btn-link:hover { + color: #0056b3; + text-decoration: underline; + background-color: transparent; } + .btn-link:disabled { + color: #868e96; } + .btn-link:disabled:focus, .btn-link:disabled:hover { + text-decoration: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.btn-block { + display: block; + width: 100%; } + +.btn-block + .btn-block { + margin-top: 0.5rem; } + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } + +.fade { + opacity: 0; + transition: opacity 0.15s linear; } + .fade.show { + opacity: 1; } + +.collapse { + display: none; } + .collapse.show { + display: block; } + +tr.collapse.show { + display: table-row; } + +tbody.collapse.show { + display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; } + +.dropup, +.dropdown { + position: relative; } + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-left: 0.3em solid transparent; } + +.dropdown-toggle:empty::after { + margin-left: 0; } + +.dropup .dropdown-menu { + margin-top: 0; + margin-bottom: 0.125rem; } + +.dropup .dropdown-toggle::after { + border-top: 0; + border-bottom: 0.3em solid; } + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; } + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: normal; + color: #212529; + text-align: inherit; + white-space: nowrap; + background: none; + border: 0; } + .dropdown-item:focus, .dropdown-item:hover { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; } + .dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff; } + .dropdown-item.disabled, .dropdown-item:disabled { + color: #868e96; + background-color: transparent; } + +.show > a { + outline: 0; } + +.dropdown-menu.show { + display: block; } + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #868e96; + white-space: nowrap; } + +.btn-group, +.btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-bottom: 0; } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { + z-index: 2; } + .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 2; } + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group, + .btn-group-vertical .btn + .btn, + .btn-group-vertical .btn + .btn-group, + .btn-group-vertical .btn-group + .btn, + .btn-group-vertical .btn-group + .btn-group { + margin-left: -1px; } + +.btn-toolbar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .btn-toolbar .input-group { + width: auto; } + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; } + +.btn-group > .btn:first-child { + margin-left: 0; } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.btn-group > .btn-group { + float: left; } + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } + +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.btn + .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; } + .btn + .dropdown-toggle-split::after { + margin-left: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; } + +.btn-group-vertical { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + .btn-group-vertical .btn, + .btn-group-vertical .btn-group { + width: 100%; } + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; } + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; } + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; } + +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } + +.input-group { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; } + .input-group .form-control { + position: relative; + z-index: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; } + .input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover { + z-index: 3; } + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; } + +.input-group-addon, +.input-group-btn { + white-space: nowrap; + vertical-align: middle; } + +.input-group-addon { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: normal; + line-height: 1.25; + color: #495057; + text-align: center; + background-color: #e9ecef; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + .input-group-addon.form-control-sm, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .input-group-addon.btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; } + .input-group-addon.form-control-lg, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .input-group-addon.btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; } + +.input-group .form-control:not(:last-child), +.input-group-addon:not(:last-child), +.input-group-btn:not(:last-child) > .btn, +.input-group-btn:not(:last-child) > .btn-group > .btn, +.input-group-btn:not(:last-child) > .dropdown-toggle, +.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.input-group-addon:not(:last-child) { + border-right: 0; } + +.input-group .form-control:not(:first-child), +.input-group-addon:not(:first-child), +.input-group-btn:not(:first-child) > .btn, +.input-group-btn:not(:first-child) > .btn-group > .btn, +.input-group-btn:not(:first-child) > .dropdown-toggle, +.input-group-btn:not(:last-child) > .btn:not(:first-child), +.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.form-control + .input-group-addon:not(:first-child) { + border-left: 0; } + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; } + .input-group-btn > .btn { + position: relative; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); } + .input-group-btn > .btn + .btn { + margin-left: -1px; } + .input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { + z-index: 3; } + .input-group-btn:not(:last-child) > .btn, + .input-group-btn:not(:last-child) > .btn-group { + margin-right: -1px; } + .input-group-btn:not(:first-child) > .btn, + .input-group-btn:not(:first-child) > .btn-group { + z-index: 2; + margin-left: -1px; } + .input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover, + .input-group-btn:not(:first-child) > .btn-group:focus, + .input-group-btn:not(:first-child) > .btn-group:active, + .input-group-btn:not(:first-child) > .btn-group:hover { + z-index: 3; } + +.custom-control { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + min-height: 1.5rem; + padding-left: 1.5rem; + margin-right: 1rem; } + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; } + .custom-control-input:checked ~ .custom-control-indicator { + color: #fff; + background-color: #007bff; } + .custom-control-input:focus ~ .custom-control-indicator { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff; } + .custom-control-input:active ~ .custom-control-indicator { + color: #fff; + background-color: #b3d7ff; } + .custom-control-input:disabled ~ .custom-control-indicator { + background-color: #e9ecef; } + .custom-control-input:disabled ~ .custom-control-description { + color: #868e96; } + +.custom-control-indicator { + position: absolute; + top: 0.25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #ddd; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50%; } + +.custom-checkbox .custom-control-indicator { + border-radius: 0.25rem; } + +.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { + background-color: #007bff; + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); } + +.custom-radio .custom-control-indicator { + border-radius: 50%; } + +.custom-radio .custom-control-input:checked ~ .custom-control-indicator { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); } + +.custom-controls-stacked { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + .custom-controls-stacked .custom-control { + margin-bottom: 0.25rem; } + .custom-controls-stacked .custom-control + .custom-control { + margin-left: 0; } + +.custom-select { + display: inline-block; + max-width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.25; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + background-clip: padding-box; + background-size: 8px 10px; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + .custom-select:focus { + border-color: #80bdff; + outline: none; } + .custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; } + .custom-select:disabled { + color: #868e96; + background-color: #e9ecef; } + .custom-select::-ms-expand { + opacity: 0; } + +.custom-select-sm { + height: calc(1.8125rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75%; } + +.custom-file { + position: relative; + display: inline-block; + max-width: 100%; + height: calc(2.25rem + 2px); + margin-bottom: 0; } + +.custom-file-input { + min-width: 14rem; + max-width: 100%; + height: calc(2.25rem + 2px); + margin: 0; + opacity: 0; } + .custom-file-input:focus ~ .custom-file-control { + box-shadow: 0 0 0 0.075rem #fff, 0 0 0 0.2rem #007bff; } + +.custom-file-control { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + height: calc(2.25rem + 2px); + padding: 0.5rem 0.75rem; + overflow: hidden; + line-height: 1.25; + color: #495057; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + .custom-file-control:lang(en):empty::after { + content: "Choose file..."; } + .custom-file-control::before { + position: absolute; + top: 0; + right: 0; + z-index: 6; + display: block; + height: calc(2.25rem + 2px); + padding: 0.5rem 0.75rem; + line-height: 1.25; + color: #495057; + background-color: #e9ecef; + border-left: 1px solid rgba(0, 0, 0, 0.15); } + .custom-file-control:lang(en)::before { + content: "Browse"; } + +.nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + +.nav-link { + display: block; + padding: 0.5rem 1rem; } + .nav-link:focus, .nav-link:hover { + text-decoration: none; } + .nav-link.disabled { + color: #868e96; } + +.nav-tabs { + border-bottom: 1px solid #ddd; } + .nav-tabs .nav-item { + margin-bottom: -1px; } + .nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { + border-color: #e9ecef #e9ecef #ddd; } + .nav-tabs .nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent; } + .nav-tabs .nav-link.active, + .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #ddd #ddd #fff; } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.nav-pills .nav-link { + border-radius: 0.25rem; } + .nav-pills .nav-link.active, + .show > .nav-pills .nav-link { + color: #fff; + background-color: #007bff; } + +.nav-fill .nav-item { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; } + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; } + +.tab-content > .tab-pane { + display: none; } + +.tab-content > .active { + display: block; } + +.navbar { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; } + .navbar > .container, + .navbar > .container-fluid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; } + .navbar-brand:focus, .navbar-brand:hover { + text-decoration: none; } + +.navbar-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; } + .navbar-nav .dropdown-menu { + position: static; + float: none; } + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; } + .navbar-toggler:focus, .navbar-toggler:hover { + text-decoration: none; } + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; } + +@media (max-width: 575px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 576px) { + .navbar-expand-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .navbar-expand-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-sm .navbar-nav .dropdown-menu-right { + right: 0; + left: auto; } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .navbar-expand-sm .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .navbar-expand-sm .navbar-toggler { + display: none; } } + +@media (max-width: 767px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 768px) { + .navbar-expand-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .navbar-expand-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-md .navbar-nav .dropdown-menu-right { + right: 0; + left: auto; } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .navbar-expand-md .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .navbar-expand-md .navbar-toggler { + display: none; } } + +@media (max-width: 991px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 992px) { + .navbar-expand-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .navbar-expand-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-lg .navbar-nav .dropdown-menu-right { + right: 0; + left: auto; } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .navbar-expand-lg .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .navbar-expand-lg .navbar-toggler { + display: none; } } + +@media (max-width: 1199px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 1200px) { + .navbar-expand-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .navbar-expand-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-xl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto; } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .navbar-expand-xl .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .navbar-expand-xl .navbar-toggler { + display: none; } } + +.navbar-expand { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; } + .navbar-expand .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand .navbar-nav .dropdown-menu-right { + right: 0; + left: auto; } + .navbar-expand .navbar-nav .nav-link { + padding-right: .5rem; + padding-left: .5rem; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; } + .navbar-expand .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .navbar-expand .navbar-toggler { + display: none; } + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover { + color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { + color: rgba(0, 0, 0, 0.7); } + .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); } + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); } + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); } + +.navbar-dark .navbar-brand { + color: white; } + .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { + color: white; } + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover { + color: rgba(255, 255, 255, 0.75); } + .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); } + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: white; } + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); } + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); } + +.card { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; } + +.card-body { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; } + +.card-title { + margin-bottom: 0.75rem; } + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; } + +.card-text:last-child { + margin-bottom: 0; } + +.card-link:hover { + text-decoration: none; } + +.card-link + .card-link { + margin-left: 1.25rem; } + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); } + .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); } + .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; } + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; } + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; } + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); } + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); } + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); } + +@media (min-width: 576px) { + .card-deck { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; } + .card-deck .card { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-left: 15px; } } + +@media (min-width: 576px) { + .card-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; } + .card-group .card { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; } + .card-group .card + .card { + margin-left: 0; + border-left: 0; } + .card-group .card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .card-group .card:first-child .card-img-top { + border-top-right-radius: 0; } + .card-group .card:first-child .card-img-bottom { + border-bottom-right-radius: 0; } + .card-group .card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .card-group .card:last-child .card-img-top { + border-top-left-radius: 0; } + .card-group .card:last-child .card-img-bottom { + border-bottom-left-radius: 0; } + .card-group .card:not(:first-child):not(:last-child) { + border-radius: 0; } + .card-group .card:not(:first-child):not(:last-child) .card-img-top, + .card-group .card:not(:first-child):not(:last-child) .card-img-bottom { + border-radius: 0; } } + +.card-columns .card { + margin-bottom: 0.75rem; } + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + column-gap: 1.25rem; } + .card-columns .card { + display: inline-block; + width: 100%; } } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #007bff; } + .badge-primary[href]:focus, .badge-primary[href]:hover { + color: #fff; + text-decoration: none; + background-color: #0062cc; } + +.badge-secondary { + color: #fff; + background-color: #868e96; } + .badge-secondary[href]:focus, .badge-secondary[href]:hover { + color: #fff; + text-decoration: none; + background-color: #6c757d; } + +.badge-success { + color: #fff; + background-color: #28a745; } + .badge-success[href]:focus, .badge-success[href]:hover { + color: #fff; + text-decoration: none; + background-color: #1e7e34; } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + .badge-info[href]:focus, .badge-info[href]:hover { + color: #fff; + text-decoration: none; + background-color: #117a8b; } + +.badge-warning { + color: #111; + background-color: #ffc107; } + .badge-warning[href]:focus, .badge-warning[href]:hover { + color: #111; + text-decoration: none; + background-color: #d39e00; } + +.badge-danger { + color: #fff; + background-color: #dc3545; } + .badge-danger[href]:focus, .badge-danger[href]:hover { + color: #fff; + text-decoration: none; + background-color: #bd2130; } + +.badge-light { + color: #111; + background-color: #f8f9fa; } + .badge-light[href]:focus, .badge-light[href]:hover { + color: #111; + text-decoration: none; + background-color: #dae0e5; } + +.badge-dark { + color: #fff; + background-color: #343a40; } + .badge-dark[href]:focus, .badge-dark[href]:hover { + color: #fff; + text-decoration: none; + background-color: #1d2124; } + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; } + @media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; } } + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; } + +.alert { + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; } + +.alert-heading { + color: inherit; } + +.alert-link { + font-weight: bold; } + +.alert-dismissible .close { + position: relative; + top: -0.75rem; + right: -1.25rem; + padding: 0.75rem 1.25rem; + color: inherit; } + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff; } + .alert-primary hr { + border-top-color: #9fcdff; } + .alert-primary .alert-link { + color: #002752; } + +.alert-secondary { + color: #464a4e; + background-color: #e7e8ea; + border-color: #dddfe2; } + .alert-secondary hr { + border-top-color: #cfd2d6; } + .alert-secondary .alert-link { + color: #2e3133; } + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; } + .alert-success hr { + border-top-color: #b1dfbb; } + .alert-success .alert-link { + color: #0b2e13; } + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; } + .alert-info hr { + border-top-color: #abdde5; } + .alert-info .alert-link { + color: #062c33; } + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; } + .alert-warning hr { + border-top-color: #ffe8a1; } + .alert-warning .alert-link { + color: #533f03; } + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; } + .alert-danger hr { + border-top-color: #f1b0b7; } + .alert-danger .alert-link { + color: #491217; } + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; } + .alert-light hr { + border-top-color: #ececf6; } + .alert-light .alert-link { + color: #686868; } + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; } + .alert-dark hr { + border-top-color: #b9bbbe; } + .alert-dark .alert-link { + color: #040505; } + +.media { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; } + +.media-body { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; } + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: normal; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; } + .tooltip.show { + opacity: 0.9; } + .tooltip .arrow { + position: absolute; + display: block; + width: 5px; + height: 5px; } + .tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^="top"] { + padding: 5px 0; } + .tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; } + .tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before { + margin-left: -3px; + content: ""; + border-width: 5px 5px 0; + border-top-color: #000; } + .tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^="right"] { + padding: 0 5px; } + .tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; } + .tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow::before { + margin-top: -3px; + content: ""; + border-width: 5px 5px 5px 0; + border-right-color: #000; } + .tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^="bottom"] { + padding: 5px 0; } + .tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; } + .tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + margin-left: -3px; + content: ""; + border-width: 0 5px 5px; + border-bottom-color: #000; } + .tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^="left"] { + padding: 0 5px; } + .tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; } + .tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow::before { + right: 0; + margin-top: -3px; + content: ""; + border-width: 5px 0 5px 5px; + border-left-color: #000; } + .tooltip .arrow::before { + position: absolute; + border-color: transparent; + border-style: solid; } + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; } + +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #007bff !important; } + +a.bg-primary:focus, a.bg-primary:hover { + background-color: #0062cc !important; } + +.bg-secondary { + background-color: #868e96 !important; } + +a.bg-secondary:focus, a.bg-secondary:hover { + background-color: #6c757d !important; } + +.bg-success { + background-color: #28a745 !important; } + +a.bg-success:focus, a.bg-success:hover { + background-color: #1e7e34 !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:focus, a.bg-info:hover { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #ffc107 !important; } + +a.bg-warning:focus, a.bg-warning:hover { + background-color: #d39e00 !important; } + +.bg-danger { + background-color: #dc3545 !important; } + +a.bg-danger:focus, a.bg-danger:hover { + background-color: #bd2130 !important; } + +.bg-light { + background-color: #f8f9fa !important; } + +a.bg-light:focus, a.bg-light:hover { + background-color: #dae0e5 !important; } + +.bg-dark { + background-color: #343a40 !important; } + +a.bg-dark:focus, a.bg-dark:hover { + background-color: #1d2124 !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #e9ecef !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #007bff !important; } + +.border-secondary { + border-color: #868e96 !important; } + +.border-success { + border-color: #28a745 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #ffc107 !important; } + +.border-danger { + border-color: #dc3545 !important; } + +.border-light { + border-color: #f8f9fa !important; } + +.border-dark { + border-color: #343a40 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded { + border-radius: 0.25rem !important; } + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; } + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-circle { + border-radius: 50%; } + +.rounded-0 { + border-radius: 0; } + +.clearfix::after { + display: block; + clear: both; + content: ""; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + +.d-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + .d-sm-inline { + display: inline !important; } + .d-sm-inline-block { + display: inline-block !important; } + .d-sm-block { + display: block !important; } + .d-sm-table { + display: table !important; } + .d-sm-table-cell { + display: table-cell !important; } + .d-sm-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; } } + +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + .d-md-inline { + display: inline !important; } + .d-md-inline-block { + display: inline-block !important; } + .d-md-block { + display: block !important; } + .d-md-table { + display: table !important; } + .d-md-table-cell { + display: table-cell !important; } + .d-md-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; } } + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + .d-lg-inline { + display: inline !important; } + .d-lg-inline-block { + display: inline-block !important; } + .d-lg-block { + display: block !important; } + .d-lg-table { + display: table !important; } + .d-lg-table-cell { + display: table-cell !important; } + .d-lg-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; } } + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + .d-xl-inline { + display: inline !important; } + .d-xl-inline-block { + display: inline-block !important; } + .d-xl-block { + display: block !important; } + .d-xl-table { + display: table !important; } + .d-xl-table-cell { + display: table-cell !important; } + .d-xl-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; } } + +.d-print-block { + display: none !important; } + @media print { + .d-print-block { + display: block !important; } } + +.d-print-inline { + display: none !important; } + @media print { + .d-print-inline { + display: inline !important; } } + +.d-print-inline-block { + display: none !important; } + @media print { + .d-print-inline-block { + display: inline-block !important; } } + +@media print { + .d-print-none { + display: none !important; } } + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.85714%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; } + +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; } + +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; } + +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; } + +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; } + +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; } + +.justify-content-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; } + +.justify-content-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; } + +.justify-content-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; } + +.justify-content-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; } + +.align-items-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; } + +.align-items-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; } + +.align-items-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; } + +.align-items-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; } + +.align-items-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; } + +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; } + +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; } + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; } + +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; } + +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; } + +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; } + +.align-self-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; } + +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; } + +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; } + +.align-self-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; } + +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; } + +.align-self-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; } + .align-items-sm-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; } + .align-items-sm-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; } + .align-items-sm-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; } + .align-self-sm-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; } } + +@media (min-width: 768px) { + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; } + .justify-content-md-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; } + .justify-content-md-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; } + .justify-content-md-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; } + .align-items-md-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; } + .align-items-md-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; } + .align-items-md-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; } + .align-self-md-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; } } + +@media (min-width: 992px) { + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; } + .align-items-lg-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; } + .align-items-lg-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; } + .align-items-lg-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; } + .align-self-lg-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; } } + +@media (min-width: 1200px) { + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; } + .align-items-xl-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; } + .align-items-xl-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; } + .align-items-xl-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; } + .align-self-xl-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + .float-sm-right { + float: right !important; } + .float-sm-none { + float: none !important; } } + +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + .float-md-right { + float: right !important; } + .float-md-none { + float: none !important; } } + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + .float-lg-right { + float: right !important; } + .float-lg-none { + float: none !important; } } + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + .float-xl-right { + float: right !important; } + .float-xl-none { + float: none !important; } } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + -webkit-clip-path: none; + clip-path: none; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + .m-sm-1 { + margin: 0.25rem !important; } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + .m-sm-2 { + margin: 0.5rem !important; } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + .m-sm-3 { + margin: 1rem !important; } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + .m-sm-4 { + margin: 1.5rem !important; } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + .m-sm-5 { + margin: 3rem !important; } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + .p-sm-0 { + padding: 0 !important; } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + .p-sm-1 { + padding: 0.25rem !important; } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + .p-sm-2 { + padding: 0.5rem !important; } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + .p-sm-3 { + padding: 1rem !important; } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + .p-sm-4 { + padding: 1.5rem !important; } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + .p-sm-5 { + padding: 3rem !important; } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + .m-sm-auto { + margin: auto !important; } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + .m-md-1 { + margin: 0.25rem !important; } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + .m-md-2 { + margin: 0.5rem !important; } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + .m-md-3 { + margin: 1rem !important; } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + .m-md-4 { + margin: 1.5rem !important; } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + .m-md-5 { + margin: 3rem !important; } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + .p-md-0 { + padding: 0 !important; } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + .p-md-1 { + padding: 0.25rem !important; } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + .p-md-2 { + padding: 0.5rem !important; } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + .p-md-3 { + padding: 1rem !important; } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + .p-md-4 { + padding: 1.5rem !important; } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + .p-md-5 { + padding: 3rem !important; } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + .m-md-auto { + margin: auto !important; } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + .m-lg-1 { + margin: 0.25rem !important; } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + .m-lg-2 { + margin: 0.5rem !important; } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + .m-lg-3 { + margin: 1rem !important; } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + .m-lg-4 { + margin: 1.5rem !important; } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + .m-lg-5 { + margin: 3rem !important; } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + .p-lg-0 { + padding: 0 !important; } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + .p-lg-1 { + padding: 0.25rem !important; } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + .p-lg-2 { + padding: 0.5rem !important; } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + .p-lg-3 { + padding: 1rem !important; } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + .p-lg-4 { + padding: 1.5rem !important; } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + .p-lg-5 { + padding: 3rem !important; } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + .m-lg-auto { + margin: auto !important; } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + .m-xl-1 { + margin: 0.25rem !important; } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + .m-xl-2 { + margin: 0.5rem !important; } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + .m-xl-3 { + margin: 1rem !important; } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + .m-xl-4 { + margin: 1.5rem !important; } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + .m-xl-5 { + margin: 3rem !important; } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + .p-xl-0 { + padding: 0 !important; } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + .p-xl-1 { + padding: 0.25rem !important; } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + .p-xl-2 { + padding: 0.5rem !important; } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + .p-xl-3 { + padding: 1rem !important; } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + .p-xl-4 { + padding: 1.5rem !important; } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + .p-xl-5 { + padding: 3rem !important; } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + .m-xl-auto { + margin: auto !important; } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } + +.text-justify { + text-align: justify !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + .text-sm-right { + text-align: right !important; } + .text-sm-center { + text-align: center !important; } } + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + .text-md-right { + text-align: right !important; } + .text-md-center { + text-align: center !important; } } + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + .text-lg-right { + text-align: right !important; } + .text-lg-center { + text-align: center !important; } } + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + .text-xl-right { + text-align: right !important; } + .text-xl-center { + text-align: center !important; } } + +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-normal { + font-weight: normal !important; } + +.font-weight-bold { + font-weight: bold !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #007bff !important; } + +a.text-primary:focus, a.text-primary:hover { + color: #0062cc !important; } + +.text-secondary { + color: #868e96 !important; } + +a.text-secondary:focus, a.text-secondary:hover { + color: #6c757d !important; } + +.text-success { + color: #28a745 !important; } + +a.text-success:focus, a.text-success:hover { + color: #1e7e34 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:focus, a.text-info:hover { + color: #117a8b !important; } + +.text-warning { + color: #ffc107 !important; } + +a.text-warning:focus, a.text-warning:hover { + color: #d39e00 !important; } + +.text-danger { + color: #dc3545 !important; } + +a.text-danger:focus, a.text-danger:hover { + color: #bd2130 !important; } + +.text-light { + color: #f8f9fa !important; } + +a.text-light:focus, a.text-light:hover { + color: #dae0e5 !important; } + +.text-dark { + color: #343a40 !important; } + +a.text-dark:focus, a.text-dark:hover { + color: #1d2124 !important; } + +.text-muted { + color: #868e96 !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +/* system-font.css v1.1.0 | CC0-1.0 License | github.com/jonathantneal/system-font-face */ +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 300; + src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); } + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 300; + src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); } + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 400; + src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); } + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 400; + src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); } + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 500; + src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); } + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 500; + src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); } + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 700; + src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); } + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 700; + src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); } + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot"); + src: url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff") format("woff"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular") format("svg"); } + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; } + +.glyphicon-heart-empty:before { + content: "\e143"; } + +.glyphicon-ok:before { + content: "\e013"; } + +.glyphicon-remove:before { + content: "\e014"; } + +.glyphicon-heart:before { + content: "\e005"; } + +input[type=range].slider { + -webkit-appearance: none; + width: 100%; + margin: 5.2px 0; } + +input[type=range].slider:focus { + outline: none; } + +input[type=range].slider::-webkit-slider-runnable-track { + width: 100%; + height: 5.6px; + cursor: pointer; + box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); + background: rgba(90, 101, 107, 0.32); + border-radius: 25px; + border: 1.9px solid transparent; } + +input[type=range].slider::-webkit-slider-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid transparent; + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.1px; } + +input[type=range].slider:focus::-webkit-slider-runnable-track { + background: rgba(129, 142, 149, 0.32); } + +input[type=range].slider::-moz-range-track { + width: 100%; + height: 5.6px; + cursor: pointer; + box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); + background: rgba(90, 101, 107, 0.32); + border-radius: 25px; + border: 1.9px solid transparent; } + +input[type=range].slider::-moz-range-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid transparent; + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; } + +input[type=range].slider::-ms-track { + width: 100%; + height: 5.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; } + +input[type=range].slider::-ms-fill-lower { + background: rgba(53, 59, 63, 0.32); + border: 1.9px solid transparent; + border-radius: 50px; + box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); } + +input[type=range].slider::-ms-fill-upper { + background: rgba(90, 101, 107, 0.32); + border: 1.9px solid transparent; + border-radius: 50px; + box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); } + +input[type=range].slider::-ms-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid transparent; + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; + height: 5.6px; } + +input[type=range].slider:focus::-ms-fill-lower { + background: rgba(90, 101, 107, 0.32); } + +input[type=range].slider:focus::-ms-fill-upper { + background: rgba(129, 142, 149, 0.32); } + +body { + font-size: 14px; + background-color: rgba(252, 252, 252, 0.29); + color: #5a656b; + font-family: "Segoe UI", system-ui, Tahoma; } + +.jumbotron { + padding: 50px 0; + text-align: center; + background: #8033b0; + border-bottom: 4px solid #75b7dd; + background: linear-gradient(to left, #124665, #8033b0); + position: relative; + color: #fff; } + .jumbotron h1 { + margin: 0 0 20px; + color: #75b7dd; + font-weight: 300; + font-size: 48px; + letter-spacing: -2px; } + .jumbotron p { + color: rgba(255, 255, 255, 0.65); } + .jumbotron .container { + position: relative; } + .jumbotron:before { + content: ''; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 0; + opacity: 0.4; + background-image: url("data:image/svg+xml,"); } + +pre[class*="language-"] { + border: 0; + border-radius: 0; + background: transparent; + padding: 0; } + +code[class*="language-"], +pre[class*="language-"] { + font-family: 'Inconsolata'; + font-size: 14px; } + +.borbot { + border-bottom: 3px solid #f3f3f3; } + +.s-highlight { + color: #e17075; } + +.hide { + display: none; } + +.card { + border-radius: 0; } + .card .card-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.04); } + .card .card-footer { + padding-left: 0; + background: #fcfcfc; } + +prism-block > pre { + margin: 0 !important; + padding: 0 !important; } + +.show-code { + cursor: pointer; + font-size: 12px; } + .show-code:hover { + color: #e17075; } + .show-code i.mdi { + font-size: 18px; + line-height: 1; + display: inline-block; + vertical-align: text-top; + color: #e17075; } + +strong { + font-family: 'Inconsolata'; + font-weight: 700; + padding: 0 4px; + font-size: 100%; + color: #000; + border-radius: 3px; + background: transparent; } + +.btn.btn-small { + padding: 0 10px; + line-height: 1; + background: #f5f5f5; + color: rgba(0, 0, 0, 0.43); + text-transform: uppercase; + font-size: 0.8em; + font-weight: 700; + cursor: pointer; } + +.btn.btn-browser { + font-weight: 500; + font-size: 95%; } + .btn.btn-browser img { + width: 20px; + vertical-align: bottom; } + .btn.btn-browser span { + font-family: Inconsolata; + font-weight: 700; + color: #95acc4; } + +.btn.btn-framework { + padding: 0; + margin-right: 1em; } + +.highlight { + color: #e17075; } + +div#disqus_thread { + background: #ffffff; + padding: 10px; + border: 1px solid #dfdfdf; } + +a.btn.btn-link { + background: #a6b2b9; + color: #fff; + padding: 0 4px; + border-radius: 2px; + margin-right: 10px; } + a.btn.btn-link.facebook:hover { + background-color: #3b5998; } + a.btn.btn-link.twitter:hover { + background-color: #1da1f2; } + a.btn.btn-link.linkedin:hover { + background-color: #0077b5; } + a.btn.btn-link.gplus:hover { + background-color: #dd4b39; } + +.card-info { + background: #f2f5fc; + border-top: 1px solid #dfdfdf; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 1rem; + color: #8992a6; + font-size: 90%; } + .card-info .mdi { + line-height: 1; + vertical-align: middle; + opacity: 0.5; + color: #4f5667; + margin-right: 4px; } + .card-info .mdi:before { + font-size: 18px; } + +.nav-link { + color: #727a81; } + .nav-link i.mdi { + font-size: 1.3rem; + vertical-align: sub; + line-height: 1; } + .nav-link:hover { + color: #e17075; } + +span.color-preview { + display: inline-block; + width: 1em; + height: 1em; + background-color: #bdc3c7; + border-radius: 100%; + margin: 0 2px; } + span.color-preview.primary { + background-color: #428bca; } + span.color-preview.success { + background-color: #5cb85c; } + span.color-preview.info { + background-color: #5bc0de; } + span.color-preview.warning { + background-color: #f0ad4e; } + span.color-preview.danger { + background-color: #d9534f; } + +.note { + background: transparent; + padding: 0 1em; + border: 0; + font-size: 90%; + color: rgba(0, 0, 0, 0.64); + border-left: 3px solid #e17075; } + +h6 { + font-size: 14px; } + +section.section { + margin-bottom: 3em; } + section.section a { + font-weight: 500; } + +.btn-collapse { + background: #fff; + border: 1px solid #dfdfdf; + border-radius: 0; + font-size: 1em; + font-weight: 500; + color: #828b90; + cursor: pointer; + padding: 1em; + margin-bottom: 1em; } + .btn-collapse:hover { + background: #f7f7f7; + border-color: #e6dfdf; + color: #90a1ad; } + +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcHJpbnQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcmVib290LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwiYXBwLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2hvdmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NvZGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2dyaWQtZnJhbWV3b3JrLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RhYmxlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGFibGUtcm93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19idXR0b25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190cmFuc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RyYW5zaXRpb25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Ryb3Bkb3duLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19uYXYtZGl2aWRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b24tZ3JvdXAuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9faW5wdXQtZ3JvdXAuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY3VzdG9tLWZvcm1zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXZiYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2FyZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFkZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fanVtYm90cm9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2FsZXJ0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19hbGVydC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19tZWRpYS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b29sdGlwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19yZXNldC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19hbGlnbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFja2dyb3VuZC12YXJpYW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19iYWNrZ3JvdW5kLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19ib3JkZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZW1iZWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2Zsb2F0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mbG9hdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NjcmVlbnJlYWRlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NpemluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc3BhY2luZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fdGV4dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC10cnVuY2F0ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1lbXBoYXNpcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1oaWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL192aXNpYmlsaXR5LnNjc3MiLCJwYXJ0aWFscy9fc3lzdGVtLWZvbnRzLnNjc3MiLCJwYXJ0aWFscy9fZ3lscGguc2NzcyIsInBhcnRpYWxzL19zbGlkZXIuc2NzcyIsInBhcnRpYWxzL19yZXNldC5zY3NzIiwicGFydGlhbHMvX3ZhcmFpYWJsZXMuc2NzcyIsInBhcnRpYWxzL19jb3JlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0U7RUFDRTs7O0lBTUUsNkJBQTRCO0lBRTVCLDRCQUEyQixFQUM1QjtFQUVEOztJQUVFLDJCQUEwQixFQUMzQjtFQU9EO0lBQ0UsOEJBQTZCLEVBQzlCO0VBYUQ7SUFDRSxpQ0FBZ0MsRUFDakM7RUFDRDs7SUFFRSx1QkFBZ0M7SUFDaEMseUJBQXdCLEVBQ3pCO0VBT0Q7SUFDRSw0QkFBMkIsRUFDNUI7RUFFRDs7SUFFRSx5QkFBd0IsRUFDekI7RUFFRDs7O0lBR0UsV0FBVTtJQUNWLFVBQVMsRUFDVjtFQUVEOztJQUVFLHdCQUF1QixFQUN4QjtFQUtEO0lBQ0UsY0FB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RUFVNUg7RUFFRDtJQU1JLDRDZm9DWSxFZWxDZjtFQUdEO0lBRUUsMEJmNkJjO0llNUJkLHNCZjRCYyxFZTNCZjtFQUVEOztJQUdFLDBCQWhDcUY7SUFpQ3JGLHVCQUFzQjtJQUN0QixzQkFsQzJILEVBb0M1SDs7QURrQkQ7RUNkQSxlZjhCZTtFZTdCZiw4QkFBNkI7RUFDN0IsdUJBQXNCO0VBQ3RCLHNCZjJCZSxFY2RkO0VabERDO0lhd0NBLFlEUzRDO0lDUjVDLDBCZnVCYTtJZXRCYixzQmZzQmEsRUVoRVE7RWE2Q3ZCO0lBRUUsNkNmaUJhLEVlaEJkO0VBRUQ7SUFFRSxlZllhO0llWGIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmSWE7SWVIYixzQmZHYSxFZUZkOztBRGREO0VDZEEsZWZZZ0I7RWVYaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZTZ0IsRWNJZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZLYztJZUpkLHNCZkljLEVFOUNPO0VhNkN2QjtJQUVFLCtDZkRjLEVlRWY7RUFFRDtJQUVFLGVmTmM7SWVPZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZkYztJZWVkLHNCZmZjLEVlZ0JmOztBRGREO0VDZEEsZWZxQ2U7RWVwQ2YsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZrQ2UsRWNyQmQ7RVpsREM7SWF3Q0EsWURTNEM7SUNSNUMsMEJmOEJhO0llN0JiLHNCZjZCYSxFRXZFUTtFYTZDdkI7SUFFRSw2Q2Z3QmEsRWV2QmQ7RUFFRDtJQUVFLGVmbUJhO0llbEJiLDhCQUE2QixFQUM5QjtFQUVEOztJQUdFLFlEVjRDO0lDVzVDLDBCZldhO0llVmIsc0JmVWEsRWVUZDs7QURkRDtFQ2RBLGVmdUNlO0VldENmLDhCQUE2QjtFQUM3Qix1QkFBc0I7RUFDdEIsc0Jmb0NlLEVjdkJkO0VabERDO0lhd0NBLFlEUzRDO0lDUjVDLDBCZmdDYTtJZS9CYixzQmYrQmEsRUV6RVE7RWE2Q3ZCO0lBRUUsOENmMEJhLEVlekJkO0VBRUQ7SUFFRSxlZnFCYTtJZXBCYiw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZhYTtJZVpiLHNCZllhLEVlWGQ7O0FEZEQ7RUNkQSxlZm9DZTtFZW5DZiw4QkFBNkI7RUFDN0IsdUJBQXNCO0VBQ3RCLHNCZmlDZSxFY3BCZDtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmY2QmE7SWU1QmIsc0JmNEJhLEVFdEVRO0VhNkN2QjtJQUVFLDZDZnVCYSxFZXRCZDtFQUVEO0lBRUUsZWZrQmE7SWVqQmIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmVWE7SWVUYixzQmZTYSxFZVJkOztBRGREO0VDZEEsZWZrQ2U7RWVqQ2YsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmYrQmUsRWNsQmQ7RVpsREM7SWF3Q0EsWURTNEM7SUNSNUMsMEJmMkJhO0llMUJiLHNCZjBCYSxFRXBFUTtFYTZDdkI7SUFFRSw2Q2ZxQmEsRWVwQmQ7RUFFRDtJQUVFLGVmZ0JhO0llZmIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmUWE7SWVQYixzQmZPYSxFZU5kOztBRGREO0VDZEEsZWZPZ0I7RWVOaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZJZ0IsRWNTZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZBYztJZUNkLHNCZkRjLEVFekNPO0VhNkN2QjtJQUVFLCtDZk5jLEVlT2Y7RUFFRDtJQUVFLGVmWGM7SWVZZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZuQmM7SWVvQmQsc0JmcEJjLEVlcUJmOztBRGREO0VDZEEsZWZjZ0I7RWViaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZXZ0IsRWNFZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZPYztJZU5kLHNCZk1jLEVFaERPO0VhNkN2QjtJQUVFLDRDZkNjLEVlQWY7RUFFRDtJQUVFLGVmSmM7SWVLZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZ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QztFMEJocEJoQyxvQjFCZ3BCZ0M7RU0vcUI5QixxQk5rckIrQixFMEJqcEJsQzs7QUFPQztFYmlCRSxZQUFXO0VjM0RiLDBCM0J5RWUsRTBCN0JkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViaUJFLFlBQVc7RWMzRGIsMEIzQnVEZ0IsRTBCWGY7RXhCeEJDO0lXdUNBLFlBQVc7SWN0RFQsc0JBQXFCO0lBQ3JCLDBCQUFrQyxFekJpQm5DOztBd0JtQkg7RWJpQkUsWUFBVztFYzNEYiwwQjNCZ0ZlLEUwQnBDZDtFeEJ4QkM7SVd1Q0EsWUFBVztJY3REVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0JrRmUsRTBCdENkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViZUUsWUFBVztFY3pEYiwwQjNCK0VlLEUwQm5DZDtFeEJ4QkM7SVdxQ0EsWUFBVztJY3BEVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0I2RWUsRTBCakNkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViZUUsWUFBVztFY3pEYiwwQjNCa0RnQixFMEJOZjtFeEJ4QkM7SVdxQ0EsWUFBVztJY3BEVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0J5RGdCLEUwQmJmO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QTBCekJMO0VBQ0UsbUJBQW9EO0VBQ3BELG9CNUJ1bUJtQztFNEJ0bUJuQywwQjVCa0RnQjtFTWpEZCxzQk40TjBCLEU0QnZON0I7RW5CK0NHO0ltQnhESjtNQU9JLG1CNUJrbUJpQyxFNEJobUJwQyxFQUFBOztBQUVEO0VBQ0UsaUJBQWdCO0VBQ2hCLGdCQUFlO0V0QlRiLGlCc0JVc0IsRUFDekI7O0FDWEQ7RUFDRSx5QjdCd3RCbUM7RTZCdnRCbkMsb0I3Qnd0QmdDO0U2QnZ0QmhDLDhCQUE2QztFdkJIM0MsdUJOMk4yQixFNkJ0TjlCOztBQUdEO0VBRUUsZUFBYyxFQUNmOztBQUdEO0VBQ0Usa0I3QndPcUIsRTZCdk90Qjs7QUFPRDtFQUdJLG1CQUFrQjtFQUNsQixjN0I2ckJnQztFNkI1ckJoQyxnQjdCNnJCaUM7RTZCNXJCakMseUI3QjRyQmlDO0U2QjNyQmpDLGVBQWMsRUFDZjs7QUFTRDtFQzNDQSxlakJzRmtFO0VpQnJGbEUsMEJqQm1GdUU7RWlCbEZ2RSxzQmpCa0Z1RSxFZ0J2Q3RFO0VDekNEO0lBQ0UsMEJBQXFDLEVBQ3RDO0VBRUQ7SUFDRSxlQUEwQixFQUMzQjs7QURpQ0Q7RUMzQ0EsZWpCc0ZrRTtFaUJyRmxFLDBCakJtRnVFO0VpQmxGdkUsc0JqQmtGdUUsRWdCdkN0RTtFQ3pDRDtJQUNFLDBCQUFxQyxFQUN0QztFQUVEO0lBQ0UsZUFBMEIsRUFDM0I7O0FEaUNEO0VDM0NBLGVqQnNGa0U7RWlCckZsRSwwQmpCbUZ1RTtFaUJsRnZFLHNCakJrRnVFLEVnQnZDdEU7RUN6Q0Q7SUFDRSwwQkFBcUMsRUFDdEM7RUFFRDtJQUNFLGVBQTBCLEVBQzNCOztBRGlDRDtFQzNDQSxlakJzRmtFO0VpQnJGbEUsMEJqQm1GdUU7RWlCbEZ2RSxzQmpCa0Z1RSxFZ0J2Q3RFO0VDekNEO0lBQ0UsMEJBQXFDLEVBQ3RDO0VBRUQ7SUFDRSxlQUEwQixFQUMzQjs7QURpQ0Q7RUMzQ0EsZWpCc0ZrRTtFaUJyRmxFLDBCakJtRnVFO0VpQmxGdkUsc0JqQmtGdUUsRWdCdkN0RTtFQ3pDRDtJQUNFLDBCQUFxQyxFQUN0QztFQUVEO0lBQ0UsZUFBMEIsRUFDM0I7O0FEaUNEO0VDM0NBLGVqQnNGa0U7RWlCckZsRSwwQmpCbUZ1RTtFaUJsRnZFLHNCakJrRnVFLEVnQnZDdEU7RUN6Q0Q7SUFDRSwwQkFBcUMsRUFDdEM7RUFF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NUI7RUFmTDtJQWlCUSwwQkFBeUIsRUFDNUI7RUFsQkw7SUFvQlEsMEJBQXlCLEVBQzVCOztBQUdMO0VBQ0ksd0JBQXVCO0VBQ3ZCLGVBQWM7RUFDZCxVQUFTO0VBQ1QsZUFBYztFQUNkLDJCQUEwQjtFQUMxQiwrQkFBOEIsRUFDakM7O0FBRUQ7RUFDSSxnQkFBZSxFQUNsQjs7QUFFRDtFQUNJLG1CQUFrQixFQUlyQjtFQUxEO0lBR1EsaUJBQWdCLEVBQ25COztBQUdMO0VBQ0ksaUJBQWdCO0VBQ2hCLDBCQUF5QjtFQUN6QixpQkFBZ0I7RUFDaEIsZUFBYztFQUNkLGlCQUFnQjtFQUNoQixlQUFjO0VBQ2QsZ0JBQWU7RUFDZixhQUFZO0VBQ1osbUJBQWtCLEVBTXJCO0VBZkQ7SUFXUSxvQkFBbUI7SUFDbkIsc0JBQXFCO0lBQ3JCLGVBQWMsRUFDakIiLCJmaWxlIjoiYXBwLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNjc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9tYWluLmNzc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgc3R5bGVzLlxuLy8gSW5saW5lZCB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBIVFRQIHJlcXVlc3Q6XG4vLyBodHRwOi8vd3d3LnBocGllZC5jb20vZGVsYXktbG9hZGluZy15b3VyLXByaW50LWNzcy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpZiAkZW5hYmxlLXByaW50LXN0eWxlcyB7XG4gIEBtZWRpYSBwcmludCB7XG4gICAgKixcbiAgICAqOjpiZWZvcmUsXG4gICAgKjo6YWZ0ZXIge1xuICAgICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IG91dCBgY29sb3JgIGFuZCBgYmFja2dyb3VuZGBcbiAgICAgIC8vY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTNcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAvL2JhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgYSxcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IHRoZSBmb2xsb3dpbmcgc2VsZWN0b3Igb3V0XG4gICAgLy9hW2hyZWZdOjphZnRlciB7XG4gICAgLy8gIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgIC8vfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWM7IGNvbW1lbnQgdGhlIGZvbGxvd2luZyBzZWxlY3RvciBvdXRcbiAgICAvL1xuICAgIC8vIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsXG4gICAgLy8gb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgIHBzZXVkbyBwcm90b2NvbFxuICAgIC8vXG5cbiAgICAvL2FbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgICAvL2FbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTo6YWZ0ZXIge1xuICAgIC8vIGNvbnRlbnQ6IFwiXCI7XG4gICAgLy99XG5cbiAgICBwcmUge1xuICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAjOTk5OyAgIC8vIEJvb3RzdHJhcCBjdXN0b20gY29kZTsgdXNpbmcgYCRib3JkZXItd2lkdGhgIGluc3RlYWQgb2YgMXB4XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBQcmludGluZyBUYWJsZXM6XG4gICAgLy8gaHR0cDovL2Nzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUHJpbnRpbmdfVGFibGVzXG4gICAgLy9cblxuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgICB9XG5cbiAgICB0cixcbiAgICBpbWcge1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWMgY2hhbmdlcyBzdGFydFxuXG4gICAgLy8gQm9vdHN0cmFwIGNvbXBvbmVudHNcbiAgICAubmF2YmFyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5iYWRnZSB7XG4gICAgICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgIzAwMDtcbiAgICB9XG5cbiAgICAudGFibGUge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50O1xuXG4gICAgICB0ZCxcbiAgICAgIHRoIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgICAudGFibGUtYm9yZGVyZWQge1xuICAgICAgdGgsXG4gICAgICB0ZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWMgY2hhbmdlcyBlbmRcbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnQsIER1cGxpY2F0ZVByb3BlcnR5LCBWZW5kb3JQcmVmaXhcblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gMS4gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbi8vIDIuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMuXG4vLyAzLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4vLyA0LiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbi8vIDUuIFNldHRpbmcgQHZpZXdwb3J0IGNhdXNlcyBzY3JvbGxiYXJzIHRvIG92ZXJsYXAgY29udGVudCBpbiBJRTExIGFuZCBFZGdlLCBzb1xuLy8gICAgd2UgZm9yY2UgYSBub24tb3ZlcmxhcHBpbmcsIG5vbi1hdXRvLWhpZGluZyBzY3JvbGxiYXIgdG8gY291bnRlcmFjdC5cbi8vIDYuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMlxuICBsaW5lLWhlaWdodDogMS4xNTsgLy8gM1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7IC8vIDVcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApOyAvLyA2XG59XG5cbi8vIElFMTArIGRvZXNuJ3QgaG9ub3IgYDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiPmAgaW4gc29tZSBjYXNlcy5cbkBhdC1yb290IHtcbiAgQC1tcy12aWV3cG9ydCB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbn1cblxuLy8gU2hpbSBmb3IgXCJuZXdcIiBIVE1MNSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHRvIGRpc3BsYXkgY29ycmVjdGx5IChJRTEwLCBvbGRlciBicm93c2VycylcbmFydGljbGUsIGFzaWRlLCBkaWFsb2csIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBTZXQgYW4gZXhwbGljaXQgaW5pdGlhbCB0ZXh0LWFsaWduIHZhbHVlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIHVzZSB0aGVcbi8vICAgIHRoZSBgaW5oZXJpdGAgdmFsdWUgb24gdGhpbmdzIGxpa2UgYDx0aD5gIGVsZW1lbnRzLlxuXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyAvLyAxXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYmFzZTtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuICBjb2xvcjogJGJvZHktY29sb3I7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIDNcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmc7IC8vIDJcbn1cblxuLy8gU3VwcHJlc3MgdGhlIGZvY3VzIG91dGxpbmUgb24gZWxlbWVudHMgdGhhdCBjYW5ub3QgYmUgYWNjZXNzZWQgdmlhIGtleWJvYXJkLlxuLy8gVGhpcyBwcmV2ZW50cyBhbiB1bndhbnRlZCBmb2N1cyBvdXRsaW5lIGZyb20gYXBwZWFyaW5nIGFyb3VuZCBlbGVtZW50cyB0aGF0XG4vLyBtaWdodCBzdGlsbCByZXNwb25kIHRvIHBvaW50ZXIgZXZlbnRzLlxuLy9cbi8vIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZVxuW3RhYmluZGV4PVwiLTFcIl06Zm9jdXMge1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cblxuLy8gQ29udGVudCBncm91cGluZ1xuLy9cbi8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4vLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLy8gMVxuICBoZWlnaHQ6IDA7IC8vIDFcbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbn1cblxuXG4vL1xuLy8gVHlwb2dyYXBoeVxuLy9cblxuLy8gUmVtb3ZlIHRvcCBtYXJnaW5zIGZyb20gaGVhZGluZ3Ncbi8vXG4vLyBCeSBkZWZhdWx0LCBgPGgxPmAtYDxoNj5gIGFsbCByZWNlaXZlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuIFdlIG51a2UgdGhlIHRvcFxuLy8gbWFyZ2luIGZvciBlYXNpZXIgY29udHJvbCB3aXRoaW4gdHlwZSBzY2FsZXMgYXMgaXQgYXZvaWRzIG1hcmdpbiBjb2xsYXBzaW5nLlxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xufVxuXG4vLyBSZXNldCBtYXJnaW5zIG9uIHBhcmFncmFwaHNcbi8vXG4vLyBTaW1pbGFybHksIHRoZSB0b3AgbWFyZ2luIG9uIGA8cD5gcyBnZXQgcmVzZXQuIEhvd2V2ZXIsIHdlIGFsc28gcmVzZXQgdGhlXG4vLyBib3R0b20gbWFyZ2luIHRvIHVzZSBgcmVtYCB1bml0cyBpbnN0ZWFkIG9mIGBlbWAuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xufVxuXG4vLyBBYmJyZXZpYXRpb25zXG4vL1xuLy8gMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuLy8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbi8vIDMuIEFkZCBleHBsaWNpdCBjdXJzb3IgdG8gaW5kaWNhdGUgY2hhbmdlZCBiZWhhdmlvci5cbi8vIDQuIER1cGxpY2F0ZSBiZWhhdmlvciB0byB0aGUgZGF0YS0qIGF0dHJpYnV0ZSBmb3Igb3VyIHRvb2x0aXAgcGx1Z2luXG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7IC8vIDRcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIGN1cnNvcjogaGVscDsgLy8gM1xuICBib3JkZXItYm90dG9tOiAwOyAvLyAxXG59XG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5vbCxcbnVsLFxuZGwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6ICRkdC1mb250LXdlaWdodDtcbn1cblxuZGQge1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7IC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLVxufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaVxufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vyc1xufVxuXG4vL1xuLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4vLyBhbGwgYnJvd3NlcnMuXG4vL1xuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIgeyBib3R0b206IC0uMjVlbTsgfVxuc3VwIHsgdG9wOiAtLjVlbTsgfVxuXG5cbi8vXG4vLyBMaW5rc1xuLy9cblxuYSB7XG4gIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvLyBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG5cbiAgQGluY2x1ZGUgaG92ZXIge1xuICAgIGNvbG9yOiAkbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cbn1cblxuLy8gQW5kIHVuZG8gdGhlc2Ugc3R5bGVzIGZvciBwbGFjZWhvbGRlciBsaW5rcy9uYW1lZCBhbmNob3JzICh3aXRob3V0IGhyZWYpXG4vLyB3aGljaCBoYXZlIG5vdCBiZWVuIG1hZGUgZXhwbGljaXRseSBrZXlib2FyZC1mb2N1c2FibGUgKHdpdGhvdXQgdGFiaW5kZXgpLlxuLy8gSXQgd291bGQgYmUgbW9yZSBzdHJhaWdodGZvcndhcmQgdG8ganVzdCB1c2UgYVtocmVmXSBpbiBwcmV2aW91cyBibG9jaywgYnV0IHRoYXRcbi8vIGNhdXNlcyBzcGVjaWZpY2l0eSBpc3N1ZXMgaW4gbWFueSBvdGhlciBzdHlsZXMgdGhhdCBhcmUgdG9vIGNvbXBsZXggdG8gZml4LlxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk0MDJcblxuYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSkge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cblxuLy9cbi8vIENvZGVcbi8vXG5cbnByZSxcbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICBmb250LXNpemU6IDFlbTsgLy8gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxufVxuXG5wcmUge1xuICAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0IHRvcCBtYXJnaW5cbiAgbWFyZ2luLXRvcDogMDtcbiAgLy8gUmVzZXQgYnJvd3NlciBkZWZhdWx0IG9mIGAxZW1gIHRvIHVzZSBgcmVtYHNcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgLy8gRG9uJ3QgYWxsb3cgY29udGVudCB0byBicmVhayBvdXRzaWRlXG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG5cbi8vXG4vLyBGaWd1cmVzXG4vL1xuXG5maWd1cmUge1xuICAvLyBBcHBseSBhIGNvbnNpc3RlbnQgbWFyZ2luIHN0cmF0ZWd5IChtYXRjaGVzIG91ciB0eXBlIHN0eWxlcykuXG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cblxuLy9cbi8vIEltYWdlcyBhbmQgY29udGVudFxuLy9cblxuaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbn1cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRVxufVxuXG5cbi8vIEF2b2lkIDMwMG1zIGNsaWNrIGRlbGF5IG9uIHRvdWNoIGRldmljZXMgdGhhdCBzdXBwb3J0IHRoZSBgdG91Y2gtYWN0aW9uYCBDU1MgcHJvcGVydHkuXG4vL1xuLy8gSW4gcGFydGljdWxhciwgdW5saWtlIG1vc3Qgb3RoZXIgYnJvd3NlcnMsIElFMTErRWRnZSBvbiBXaW5kb3dzIDEwIG9uIHRvdWNoIGRldmljZXMgYW5kIElFIE1vYmlsZSAxMC0xMVxuLy8gRE9OJ1QgcmVtb3ZlIHRoZSBjbGljayBkZWxheSB3aGVuIGA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoXCI+YCBpcyBwcmVzZW50LlxuLy8gSG93ZXZlciwgdGhleSBETyBzdXBwb3J0IHJlbW92aW5nIHRoZSBjbGljayBkZWxheSB2aWEgYHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uYC5cbi8vIFNlZTpcbi8vICogaHR0cHM6Ly92NC1hbHBoYS5nZXRib290c3RyYXAuY29tL2NvbnRlbnQvcmVib290LyNjbGljay1kZWxheS1vcHRpbWl6YXRpb24tZm9yLXRvdWNoXG4vLyAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtdG91Y2gtYWN0aW9uXG4vLyAqIGh0dHBzOi8vcGF0cmlja2hsYXVrZS5naXRodWIuaW8vdG91Y2gvdGVzdHMvcmVzdWx0cy8jc3VwcHJlc3NpbmctMzAwbXMtZGVsYXlcblxuYSxcbmFyZWEsXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSxcbmlucHV0LFxubGFiZWwsXG5zZWxlY3QsXG5zdW1tYXJ5LFxudGV4dGFyZWEge1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuXG4vL1xuLy8gVGFibGVzXG4vL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnNcbn1cblxuY2FwdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAkdGFibGUtY2VsbC1wYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICAvLyBNYXRjaGVzIGRlZmF1bHQgYDx0ZD5gIGFsaWdubWVudCBieSBpbmhlcml0aW5nIGZyb20gdGhlIGA8Ym9keT5gLCBvciB0aGVcbiAgLy8gY2xvc2VzdCBwYXJlbnQgd2l0aCBhIHNldCBgdGV4dC1hbGlnbmAuXG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cblxuLy9cbi8vIEZvcm1zXG4vL1xuXG5sYWJlbCB7XG4gIC8vIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDsgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbn1cblxuLy8gMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4vLyAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLy8gMVxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDJcbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLVxuICBwYWRkaW5nOiAwOyAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtXG59XG5cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCBhcHBlYXJhbmNlIG9mIHRlbXBvcmFsIGlucHV0cyB0byBhdm9pZCBhIE1vYmlsZSBTYWZhcmlcbiAgLy8gYnVnIHdoZXJlIHNldHRpbmcgYSBjdXN0b20gbGluZS1oZWlnaHQgcHJldmVudHMgdGV4dCBmcm9tIGJlaW5nIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVyZWQgd2l0aGluIHRoZSBpbnB1dC5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk4NDhcbiAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNjZcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQnJvd3NlcnMgc2V0IGEgZGVmYXVsdCBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4gIC8vIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTlcbiAgLy8gYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbi8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG59XG5cbi8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGV4dHJhIHJvdW5kZWQgY29ybmVycyBvbiBzZWFyY2ggaW5wdXRzIGluIGlPUyBzbyB0aGF0IG91clxuICAvLyBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbiAgLy8gYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNTg2LlxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy9cbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4vL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbi8vXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG59XG5cbi8vXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcbi8vXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG59XG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUVcbn1cblxuLy8gQWx3YXlzIGhpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSBgaGlkZGVuYCBIVE1MIGF0dHJpYnV0ZSAoZnJvbSBQdXJlQ1NTKS5cbi8vIE5lZWRlZCBmb3IgcHJvcGVyIGRpc3BsYXkgaW4gSUUgMTAtLlxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBWYXJpYWJsZXNcbi8vXG4vLyBDb3B5IHNldHRpbmdzIGZyb20gdGhpcyBmaWxlIGludG8gdGhlIHByb3ZpZGVkIGBfY3VzdG9tLnNjc3NgIHRvIG92ZXJyaWRlXG4vLyB0aGUgQm9vdHN0cmFwIGRlZmF1bHRzIHdpdGhvdXQgbW9kaWZ5aW5nIGtleSwgdmVyc2lvbmVkIGZpbGVzLlxuLy9cbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxuLy8gY29uc2lzdGVudCBuYW1pbmcuIEV4OiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3IgYW5kICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMuXG5cbi8vIFRhYmxlIG9mIENvbnRlbnRzXG4vL1xuLy8gQ29sb3Igc3lzdGVtXG4vLyBPcHRpb25zXG4vLyBTcGFjaW5nXG4vLyBCb2R5XG4vLyBMaW5rc1xuLy8gUGFyYWdyYXBoc1xuLy8gR3JpZCBicmVha3BvaW50c1xuLy8gR3JpZCBjb250YWluZXJzXG4vLyBHcmlkIGNvbHVtbnNcbi8vIEZvbnRzXG4vLyBDb21wb25lbnRzXG4vLyBUYWJsZXNcbi8vIEJ1dHRvbnNcbi8vIEZvcm1zXG4vLyBEcm9wZG93bnNcbi8vIFotaW5kZXggbWFzdGVyIGxpc3Rcbi8vIE5hdnNcbi8vIE5hdmJhclxuLy8gUGFnaW5hdGlvblxuLy8gSnVtYm90cm9uXG4vLyBGb3JtIHN0YXRlcyBhbmQgYWxlcnRzXG4vLyBDYXJkc1xuLy8gVG9vbHRpcHNcbi8vIFBvcG92ZXJzXG4vLyBCYWRnZXNcbi8vIE1vZGFsc1xuLy8gQWxlcnRzXG4vLyBQcm9ncmVzcyBiYXJzXG4vLyBMaXN0IGdyb3VwXG4vLyBJbWFnZSB0aHVtYm5haWxzXG4vLyBGaWd1cmVzXG4vLyBCcmVhZGNydW1ic1xuLy8gQ2Fyb3VzZWxcbi8vIENsb3NlXG4vLyBDb2RlXG5cblxuLy9cbi8vIENvbG9yIHN5c3RlbVxuLy9cblxuJHdoaXRlOiAgI2ZmZiAhZGVmYXVsdDtcbiRncmF5LTEwMDogI2Y4ZjlmYSAhZGVmYXVsdDtcbiRncmF5LTIwMDogI2U5ZWNlZiAhZGVmYXVsdDtcbiRncmF5LTMwMDogI2RlZTJlNiAhZGVmYXVsdDtcbiRncmF5LTQwMDogI2NlZDRkYSAhZGVmYXVsdDtcbiRncmF5LTUwMDogI2FkYjViZCAhZGVmYXVsdDtcbiRncmF5LTYwMDogIzg2OGU5NiAhZGVmYXVsdDtcbiRncmF5LTcwMDogIzQ5NTA1NyAhZGVmYXVsdDtcbiRncmF5LTgwMDogIzM0M2E0MCAhZGVmYXVsdDtcbiRncmF5LTkwMDogIzIxMjUyOSAhZGVmYXVsdDtcbiRibGFjazogICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKFxuICAxMDA6ICRncmF5LTEwMCxcbiAgMjAwOiAkZ3JheS0yMDAsXG4gIDMwMDogJGdyYXktMzAwLFxuICA0MDA6ICRncmF5LTQwMCxcbiAgNTAwOiAkZ3JheS01MDAsXG4gIDYwMDogJGdyYXktNjAwLFxuICA3MDA6ICRncmF5LTcwMCxcbiAgODAwOiAkZ3JheS04MDAsXG4gIDkwMDogJGdyYXktOTAwXG4pICFkZWZhdWx0O1xuXG4kYmx1ZTogICAgIzAwN2JmZiAhZGVmYXVsdDtcbiRpbmRpZ286ICAjNjYxMGYyICFkZWZhdWx0O1xuJHB1cnBsZTogICM2ZjQyYzEgIWRlZmF1bHQ7XG4kcGluazogICAgI2U4M2U4YyAhZGVmYXVsdDtcbiRyZWQ6ICAgICAjZGMzNTQ1ICFkZWZhdWx0O1xuJG9yYW5nZTogICNmZDdlMTQgIWRlZmF1bHQ7XG4keWVsbG93OiAgI2ZmYzEwNyAhZGVmYXVsdDtcbiRncmVlbjogICAjMjhhNzQ1ICFkZWZhdWx0O1xuJHRlYWw6ICAgICMyMGM5OTcgIWRlZmF1bHQ7XG4kY3lhbjogICAgIzE3YTJiOCAhZGVmYXVsdDtcblxuJGNvbG9yczogKFxuICBibHVlOiAkYmx1ZSxcbiAgaW5kaWdvOiAkaW5kaWdvLFxuICBwdXJwbGU6ICRwdXJwbGUsXG4gIHBpbms6ICRwaW5rLFxuICByZWQ6ICRyZWQsXG4gIG9yYW5nZTogJG9yYW5nZSxcbiAgeWVsbG93OiAkeWVsbG93LFxuICBncmVlbjogJGdyZWVuLFxuICB0ZWFsOiAkdGVhbCxcbiAgY3lhbjogJGN5YW4sXG4gIHdoaXRlOiAkd2hpdGUsXG4gIGdyYXk6ICRncmF5LTYwMCxcbiAgZ3JheS1kYXJrOiAkZ3JheS04MDBcbikgIWRlZmF1bHQ7XG5cbiR0aGVtZS1jb2xvcnM6IChcbiAgcHJpbWFyeTogJGJsdWUsXG4gIHNlY29uZGFyeTogJGdyYXktNjAwLFxuICBzdWNjZXNzOiAkZ3JlZW4sXG4gIGluZm86ICRjeWFuLFxuICB3YXJuaW5nOiAkeWVsbG93LFxuICBkYW5nZXI6ICRyZWQsXG4gIGxpZ2h0OiAkZ3JheS0xMDAsXG4gIGRhcms6ICRncmF5LTgwMFxuKSAhZGVmYXVsdDtcblxuLy8gU2V0IGEgc3BlY2lmaWMganVtcCBwb2ludCBmb3IgcmVxdWVzdGluZyBjb2xvciBqdW1wc1xuJHRoZW1lLWNvbG9yLWludGVydmFsOiA4JSAhZGVmYXVsdDtcblxuXG4vLyBPcHRpb25zXG4vL1xuLy8gUXVpY2tseSBtb2RpZnkgZ2xvYmFsIHN0eWxpbmcgYnkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9wdGlvbmFsIGZlYXR1cmVzLlxuXG4kZW5hYmxlLXJvdW5kZWQ6ICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtc2hhZG93czogICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtZ3JhZGllbnRzOiAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtdHJhbnNpdGlvbnM6ICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmlkLWNsYXNzZXM6ICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXByaW50LXN0eWxlczogICAgICAgdHJ1ZSAhZGVmYXVsdDtcblxuXG4vLyBTcGFjaW5nXG4vL1xuLy8gQ29udHJvbCB0aGUgZGVmYXVsdCBzdHlsaW5nIG9mIG1vc3QgQm9vdHN0cmFwIGVsZW1lbnRzIGJ5IG1vZGlmeWluZyB0aGVzZVxuLy8gdmFyaWFibGVzLiBNb3N0bHkgZm9jdXNlZCBvbiBzcGFjaW5nLlxuLy8gWW91IGNhbiBhZGQgbW9yZSBlbnRyaWVzIHRvIHRoZSAkc3BhY2VycyBtYXAsIHNob3VsZCB5b3UgbmVlZCBtb3JlIHZhcmlhdGlvbi5cblxuJHNwYWNlcjogMXJlbSAhZGVmYXVsdDtcbiRzcGFjZXJzOiAoXG4gIDA6IDAsXG4gIDE6ICgkc3BhY2VyICogLjI1KSxcbiAgMjogKCRzcGFjZXIgKiAuNSksXG4gIDM6ICRzcGFjZXIsXG4gIDQ6ICgkc3BhY2VyICogMS41KSxcbiAgNTogKCRzcGFjZXIgKiAzKVxuKSAhZGVmYXVsdDtcblxuLy8gVGhpcyB2YXJpYWJsZSBhZmZlY3RzIHRoZSBgLmgtKmAgYW5kIGAudy0qYCBjbGFzc2VzLlxuJHNpemVzOiAoXG4gIDI1OiAyNSUsXG4gIDUwOiA1MCUsXG4gIDc1OiA3NSUsXG4gIDEwMDogMTAwJVxuKSAhZGVmYXVsdDtcblxuLy8gQm9keVxuLy9cbi8vIFNldHRpbmdzIGZvciB0aGUgYDxib2R5PmAgZWxlbWVudC5cblxuJGJvZHktYmc6ICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRib2R5LWNvbG9yOiAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICBub25lICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0O1xuXG4vLyBQYXJhZ3JhcGhzXG4vL1xuLy8gU3R5bGUgcCBlbGVtZW50LlxuXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW07XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcbkBpbmNsdWRlIF9hc3NlcnQtYXNjZW5kaW5nKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuQGluY2x1ZGUgX2Fzc2VydC1zdGFydHMtYXQtemVybygkZ3JpZC1icmVha3BvaW50cyk7XG5cblxuLy8gR3JpZCBjb250YWluZXJzXG4vL1xuLy8gRGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGAuY29udGFpbmVyYCBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcy5cblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHhcbikgIWRlZmF1bHQ7XG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogMzBweCAhZGVmYXVsdDtcblxuLy8gQ29tcG9uZW50c1xuLy9cbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cblxuJGxpbmUtaGVpZ2h0LWxnOiAgICAgICAgIDEuNSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAxLjUgIWRlZmF1bHQ7XG5cbiRib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcbiRib3JkZXItY29sb3I6ICRncmF5LTIwMCAhZGVmYXVsdDtcblxuJGJvcmRlci1yYWRpdXM6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAuM3JlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXNtOiAgICAgICAuMnJlbSAhZGVmYXVsdDtcblxuJGNvbXBvbmVudC1hY3RpdmUtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiRjb21wb25lbnQtYWN0aXZlLWJnOiAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG5cbiRjYXJldC13aWR0aDogICAgICAgICAgICAuM2VtICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbi1iYXNlOiAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWZhZGU6ICAgICAgICBvcGFjaXR5IC4xNXMgbGluZWFyICFkZWZhdWx0O1xuJHRyYW5zaXRpb24tY29sbGFwc2U6ICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG5cblxuLy8gRm9udHNcbi8vXG4vLyBGb250LCBsaW5lLWhlaWdodCwgYW5kIGNvbG9yIGZvciBib2R5IHRleHQsIGhlYWRpbmdzLCBhbmQgbW9yZS5cblxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogIFwiU0ZNb25vLVJlZ3VsYXJcIiwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LWJhc2U6ICAgICAgICRmb250LWZhbWlseS1zYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4kZm9udC1zaXplLWJhc2U6IDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxuJGZvbnQtc2l6ZS1sZzogICAxLjI1cmVtICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1zbTogICAuODc1cmVtICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ub3JtYWw6IG5vcm1hbCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkOiBib2xkICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtYmFzZTogJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjUgIWRlZmF1bHQ7XG5cbiRoMS1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcbiRoMi1mb250LXNpemU6IDJyZW0gIWRlZmF1bHQ7XG4kaDMtZm9udC1zaXplOiAxLjc1cmVtICFkZWZhdWx0O1xuJGg0LWZvbnQtc2l6ZTogMS41cmVtICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiAoJHNwYWNlciAvIDIpICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAgIGluaGVyaXQgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgNTAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgIDEuMSAhZGVmYXVsdDtcbiRoZWFkaW5ncy1jb2xvcjogICAgICAgICBpbmhlcml0ICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtc2l6ZTogNnJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5Mi1zaXplOiA1LjVyZW0gIWRlZmF1bHQ7XG4kZGlzcGxheTMtc2l6ZTogNC41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXk0LXNpemU6IDMuNXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXdlaWdodDogICAgIDMwMCAhZGVmYXVsdDtcbiRkaXNwbGF5Mi13ZWlnaHQ6ICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTMtd2VpZ2h0OiAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXk0LXdlaWdodDogICAgIDMwMCAhZGVmYXVsdDtcbiRkaXNwbGF5LWxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRsZWFkLWZvbnQtc2l6ZTogICAxLjI1cmVtICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6IDMwMCAhZGVmYXVsdDtcblxuJHNtYWxsLWZvbnQtc2l6ZTogODAlICFkZWZhdWx0O1xuXG4kdGV4dC1tdXRlZDogJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYmxvY2txdW90ZS1zbWFsbC1jb2xvcjogICRncmF5LTYwMCAhZGVmYXVsdDtcbiRibG9ja3F1b3RlLWZvbnQtc2l6ZTogICAgKCRmb250LXNpemUtYmFzZSAqIDEuMjUpICFkZWZhdWx0O1xuXG4kaHItYm9yZGVyLWNvbG9yOiByZ2JhKCRibGFjaywuMSkgIWRlZmF1bHQ7XG4kaHItYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAuMmVtICFkZWZhdWx0O1xuXG4kZHQtZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4ka2JkLWJveC1zaGFkb3c6ICAgICAgICAgaW5zZXQgMCAtLjFyZW0gMCByZ2JhKCRibGFjaywuMjUpICFkZWZhdWx0O1xuJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4kbGlzdC1pbmxpbmUtcGFkZGluZzogNXB4ICFkZWZhdWx0O1xuXG4kbWFyay1iZzogI2ZjZjhlMyAhZGVmYXVsdDtcblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXG5cbiR0YWJsZS1jZWxsLXBhZGRpbmc6ICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy1zbTogICAgICAgICAuM3JlbSAhZGVmYXVsdDtcblxuJHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjA3NSkgIWRlZmF1bHQ7XG4kdGFibGUtYWN0aXZlLWJnOiAgICAgICAgICAgICAgICR0YWJsZS1ob3Zlci1iZyAhZGVmYXVsdDtcblxuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cbiR0YWJsZS1oZWFkLWJnOiAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHRhYmxlLWhlYWQtY29sb3I6ICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG5cbiR0YWJsZS1pbnZlcnNlLWJnOiAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHRhYmxlLWludmVyc2UtYWNjZW50LWJnOiAgICAgICByZ2JhKCR3aGl0ZSwgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1pbnZlcnNlLWhvdmVyLWJnOiAgICAgICAgcmdiYSgkd2hpdGUsIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWludmVyc2UtYm9yZGVyLWNvbG9yOiAgICBsaWdodGVuKCRncmF5LTkwMCwgNy41JSkgIWRlZmF1bHQ7XG4kdGFibGUtaW52ZXJzZS1jb2xvcjogICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCBhbmQgYm9yZGVyIGNvbG9yLlxuXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteDogICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodDogICAgIDEuMjUgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1zbTogICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtOiAgMS41ICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgMXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGc6ICAxLjUgIWRlZmF1bHQ7XG5cbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kYnRuLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoJHdoaXRlLC4xNSksIDAgMXB4IDFweCByZ2JhKCRibGFjaywuMDc1KSAhZGVmYXVsdDtcbiRidG4tZm9jdXMtYm94LXNoYWRvdzogICAgICAgICAgIDAgMCAwIDNweCByZ2JhKHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSwgLjI1KSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJveC1zaGFkb3c6ICAgICAgICAgIGluc2V0IDAgM3B4IDVweCByZ2JhKCRibGFjaywuMTI1KSAhZGVmYXVsdDtcblxuJGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYnRuLWJsb2NrLXNwYWNpbmcteTogICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIGZvciBjdXN0b21pemluZyBidXR0b24gcmFkaXVzIGluZGVwZW5kZW50bHkgZnJvbSBnbG9iYWwgYm9yZGVyIHJhZGl1c1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kYnRuLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cblxuLy8gRm9ybXNcblxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGlucHV0LWRpc2FibGVkLWJnOiAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG4kaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKCRibGFjaywuMTUpICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDsgLy8gRm9yIGZvcm0gY29udHJvbHMgYW5kIGJ1dHRvbnNcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIGluc2V0IDAgMXB4IDFweCByZ2JhKCRibGFjaywuMDc1KSAhZGVmYXVsdDtcblxuJGlucHV0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtZm9jdXMtYmc6ICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgICBsaWdodGVuKHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSwgMjUlKSAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgICRpbnB1dC1ib3gtc2hhZG93LCAkYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtY29sb3I6ICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAqIDIgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQtaW5uZXI6ICAgICAgICAgICAgKCRmb250LXNpemUtYmFzZSAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQpICsgKCRpbnB1dC1idG4tcGFkZGluZy15ICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0OiAgICAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lci1zbTogICAgICAgICAoJGZvbnQtc2l6ZS1zbSAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQtc20pICsgKCRpbnB1dC1idG4tcGFkZGluZy15LXNtICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyLXNtfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lci1sZzogICAgICAgICAoJGZvbnQtc2l6ZS1sZyAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcpICsgKCRpbnB1dC1idG4tcGFkZGluZy15LWxnICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyLWxnfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cyAhZGVmYXVsdDtcblxuJGZvcm0tdGV4dC1tYXJnaW4tdG9wOiAgICAgLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1tYXJnaW4tYm90dG9tOiAgLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI6ICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi15OiAuMjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDogLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbmxpbmUtbWFyZ2luLXg6IC43NXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tZ3JvdXAtbWFyZ2luLWJvdHRvbTogICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1idG4tYm9yZGVyLWNvbG9yOiAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1ndXR0ZXI6ICAgMS41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLXNwYWNlci15OiAuMjVyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtc3BhY2VyLXg6IDFyZW0gIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTogICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICAgICAgICAgI2RkZCAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZTogICAgNTAlIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdzogaW5zZXQgMCAuMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLC4xKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1kaXNhYmxlZC1iZzogICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWRlc2NyaXB0aW9uLWRpc2FibGVkLWNvbG9yOiAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnOiAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c6IDAgMCAwIDFweCAkYm9keS1iZywgMCAwIDAgM3B4IHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgbGlnaHRlbih0aGVtZS1jb2xvcihcInByaW1hcnlcIiksIDM1JSkgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3gtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9JyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJnOiB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU6IHN0ci1yZXBsYWNlKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nI3skY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWNvbG9yfScgZD0nTTAgMmg0Jy8lM0UlM0Mvc3ZnJTNFXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJveC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6IDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWljb24tY2hlY2tlZDogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yfScvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1oZWlnaHQ6ICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nOiAgIDFyZW0gIWRlZmF1bHQ7IC8vIEV4dHJhIHBhZGRpbmcgdG8gYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBiYWNrZ3JvdW5kLWltYWdlIGJhc2VkIGluZGljYXRvclxuJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWNvbG9yOiAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJnOiAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWJnOiAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJnLXNpemU6ICAgICAgIDhweCAxMHB4ICFkZWZhdWx0OyAvLyBJbiBwaXhlbHMgYmVjYXVzZSBpbWFnZSBkaW1lbnNpb25zXG4kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItY29sb3I6ICMzMzMgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3I6ICAgICBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPScjeyRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcn0nIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aDogICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I6IGxpZ2h0ZW4odGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpLCAyNSUpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdzogICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpLCAwIDAgNXB4IHJnYmEoJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yLCAuNSkgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbTogIDc1JSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTogJGlucHV0LWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLWhlaWdodDogICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtd2lkdGg6ICAgICAgICAgICAgMTRyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdzogMCAwIDAgLjA3NXJlbSAkd2hpdGUsIDAgMCAwIC4ycmVtIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLXBhZGRpbmcteTogICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLXBhZGRpbmcteDogICAgICRpbnB1dC1idG4tcGFkZGluZy14ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWxpbmUtaGVpZ2h0OiAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtY29sb3I6ICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJnOiAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGg6ICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItY29sb3I6ICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1yYWRpdXM6ICRpbnB1dC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJveC1zaGFkb3c6ICAgICRpbnB1dC1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjogICRjdXN0b20tZmlsZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tYmc6ICAgICAkaW5wdXQtZ3JvdXAtYWRkb24tYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtdGV4dDogKFxuICBwbGFjZWhvbGRlcjogKFxuICAgIGVuOiBcIkNob29zZSBmaWxlLi4uXCJcbiAgKSxcbiAgYnV0dG9uLWxhYmVsOiAoXG4gICAgZW46IFwiQnJvd3NlXCJcbiAgKVxuKSAhZGVmYXVsdDtcblxuXG4vLyBGb3JtIHZhbGlkYXRpb25cbiRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yOiAgIHRoZW1lLWNvbG9yKFwic3VjY2Vzc1wiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3I6IHRoZW1lLWNvbG9yKFwiZGFuZ2VyXCIpICFkZWZhdWx0O1xuXG5cbi8vIERyb3Bkb3duc1xuLy9cbi8vIERyb3Bkb3duIG1lbnUgY29udGFpbmVyIGFuZCBjb250ZW50cy5cblxuJGRyb3Bkb3duLW1pbi13aWR0aDogICAgICAgICAgICAgMTByZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICByZ2JhKCRibGFjaywuMTUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci13aWR0aDogICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywuMTc1KSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKCRncmF5LTkwMCwgNSUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItYmc6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteTogICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDogICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG5cbi8vIFotaW5kZXggbWFzdGVyIGxpc3Rcbi8vXG4vLyBXYXJuaW5nOiBBdm9pZCBjdXN0b21pemluZyB0aGVzZSB2YWx1ZXMuIFRoZXkncmUgdXNlZCBmb3IgYSBiaXJkJ3MgZXllIHZpZXdcbi8vIG9mIGNvbXBvbmVudHMgZGVwZW5kZW50IG9uIHRoZSB6LWF4aXMgYW5kIGFyZSBkZXNpZ25lZCB0byBhbGwgd29yayB0b2dldGhlci5cblxuJHppbmRleC1kcm9wZG93bjogICAgICAgICAgIDEwMDAgIWRlZmF1bHQ7XG4kemluZGV4LXN0aWNreTogICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAxMDMwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbC1iYWNrZHJvcDogICAgIDEwNDAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAxMDYwICFkZWZhdWx0O1xuJHppbmRleC10b29sdGlwOiAgICAgICAgICAgIDEwNzAgIWRlZmF1bHQ7XG5cbi8vIE5hdnNcblxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgI2RkZCAhZGVmYXVsdDtcbiRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgI2RkZCAhZGVmYXVsdDtcblxuJG5hdi1waWxscy1ib3JkZXItcmFkaXVzOiAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yOiAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtYmc6ICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4vLyBOYXZiYXJcblxuJG5hdmJhci1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgKCRzcGFjZXIgLyAyKSAhZGVmYXVsdDtcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAgICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcbiRuYXYtbGluay1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRuYXZiYXItYnJhbmQtZm9udC1zaXplICogJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLWhlaWdodDogICAgICAgICAgICAgICAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgKyAkbmF2LWxpbmstcGFkZGluZy15ICogMikgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLXBhZGRpbmcteTogICAgICAgICAgICAoJG5hdmJhci1icmFuZC1oZWlnaHQgLSAkbmF2LWxpbmstaGVpZ2h0KSAvIDIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14OiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAgJGJ0bi1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbmF2YmFyLWRhcmstY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCR3aGl0ZSwuNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstaG92ZXItY29sb3I6ICAgICAgICAgICByZ2JhKCR3aGl0ZSwuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjogICAgICAgICAgcmdiYSgkd2hpdGUsMSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I6ICAgICAgICByZ2JhKCR3aGl0ZSwuMjUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZzogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWNvbG9yfScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjogIHJnYmEoJHdoaXRlLC4xKSAhZGVmYXVsdDtcblxuJG5hdmJhci1saWdodC1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSgkYmxhY2ssLjcpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICAgICAgICAgcmdiYSgkYmxhY2ssLjkpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjogICAgICAgcmdiYSgkYmxhY2ssLjMpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6IHN0ci1yZXBsYWNlKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPScjeyRuYXZiYXItbGlnaHQtY29sb3J9JyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssLjEpICFkZWZhdWx0O1xuXG4vLyBQYWdpbmF0aW9uXG5cbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1sZzogICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LWxnOiAgICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1saW5lLWhlaWdodDogICAgICAgICAgICAgIDEuMjUgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRsaW5rLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICNkZGQgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgI2RkZCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAgICAjZGRkICFkZWZhdWx0O1xuXG5cbi8vIEp1bWJvdHJvblxuXG4kanVtYm90cm9uLXBhZGRpbmc6ICAgICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIENhcmRzXG5cbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAxcHggIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1jb2xvcjogICAgICAgIHJnYmEoJGJsYWNrLC4xMjUpICFkZWZhdWx0O1xuJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1czogY2FsYygjeyRjYXJkLWJvcmRlci1yYWRpdXN9IC0gI3skY2FyZC1ib3JkZXItd2lkdGh9KSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1iZzogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDMpICFkZWZhdWx0O1xuJGNhcmQtYmc6ICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4kY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4kY2FyZC1kZWNrLW1hcmdpbjogICAgICAgICAgKCRncmlkLWd1dHRlci13aWR0aCAvIDIpICFkZWZhdWx0O1xuXG4kY2FyZC1jb2x1bW5zLWNvdW50OiAgICAgICAgMyAhZGVmYXVsdDtcbiRjYXJkLWNvbHVtbnMtZ2FwOiAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcmQtY29sdW1ucy1tYXJnaW46ICAgICAgICRjYXJkLXNwYWNlci15ICFkZWZhdWx0O1xuXG5cbi8vIFRvb2x0aXBzXG5cbiR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJHRvb2x0aXAtb3BhY2l0eTogICAgICAgICAgICAgLjkgIWRlZmF1bHQ7XG4kdG9vbHRpcC1wYWRkaW5nLXk6ICAgICAgICAgICAzcHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAgICAgICA4cHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1tYXJnaW46ICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuXG5cbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgIDVweCAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWhlaWdodDogICAgICAgIDVweCAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICR0b29sdGlwLWJnICFkZWZhdWx0O1xuXG5cbi8vIFBvcG92ZXJzXG5cbiRwb3BvdmVyLWlubmVyLXBhZGRpbmc6ICAgICAgICAgICAgICAgMXB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywuMikgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgNXB4IDEwcHggcmdiYSgkYmxhY2ssLjIpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICAgICBkYXJrZW4oJHBvcG92ZXItYmcsIDMlKSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgICRoZWFkaW5ncy1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgICAgIDhweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgICAgIDE0cHggIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWJvZHktY29sb3I6ICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteTogICAgICAgICAgIDlweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgMTRweCAhZGVmYXVsdDtcblxuJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgICAxMHB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgICA1cHggIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAgICRwb3BvdmVyLWJnICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDogICAgICAgICAgICgkcG9wb3Zlci1hcnJvdy13aWR0aCArIDFweCkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICAgIGZhZGUtaW4oJHBvcG92ZXItYm9yZGVyLWNvbG9yLCAuMDUpICFkZWZhdWx0O1xuXG5cbi8vIEJhZGdlc1xuXG4kYmFkZ2UtY29sb3I6ICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC1zaXplOiAgICAgICAgICAgICA3NSUgIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXk6ICAgICAgICAgICAgIC4yNWVtICFkZWZhdWx0O1xuJGJhZGdlLXBhZGRpbmcteDogICAgICAgICAgICAgLjRlbSAhZGVmYXVsdDtcblxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAgICAgICAgLjZlbSAhZGVmYXVsdDtcbi8vIFVzZSBhIGhpZ2hlciB0aGFuIG5vcm1hbCB2YWx1ZSB0byBlbnN1cmUgY29tcGxldGVseSByb3VuZGVkIGVkZ2VzIHdoZW5cbi8vIGN1c3RvbWl6aW5nIHBhZGRpbmcgb3IgZm9udC1zaXplIG9uIGxhYmVscy5cbiRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXM6ICAgIDEwcmVtICFkZWZhdWx0O1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIGJvZHlcbiRtb2RhbC1pbm5lci1wYWRkaW5nOiAgICAgICAgIDE1cHggIWRlZmF1bHQ7XG5cbiRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgIDEwcHggIWRlZmF1bHQ7XG4kbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwOiAzMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgcmdiYSgkYmxhY2ssLjIpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgIDAgM3B4IDlweCByZ2JhKCRibGFjaywuNSkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwOiAwIDVweCAxNXB4IHJnYmEoJGJsYWNrLC41KSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgLjUgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogICAkbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAgICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOiAgICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgMTVweCAhZGVmYXVsdDtcblxuJG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgODAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtdHJhbnNpdGlvbjogICAgICAgICAgICB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG5cbi8vIEFsZXJ0c1xuLy9cbi8vIERlZmluZSBhbGVydCBjb2xvcnMsIGJvcmRlciByYWRpdXMsIGFuZCBwYWRkaW5nLlxuXG4kYWxlcnQtcGFkZGluZy15OiAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtcGFkZGluZy14OiAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGFsZXJ0LW1hcmdpbi1ib3R0b206ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ6ICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG5cbi8vIFByb2dyZXNzIGJhcnNcblxuJHByb2dyZXNzLWhlaWdodDogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHByb2dyZXNzLWZvbnQtc2l6ZTogICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYm94LXNoYWRvdzogICAgICAgICAgIGluc2V0IDAgLjFyZW0gLjFyZW0gcmdiYSgkYmxhY2ssLjEpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWJnOiAgICAgICAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZzogMXMgbGluZWFyIGluZmluaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAgICAgICB3aWR0aCAuNnMgZWFzZSAhZGVmYXVsdDtcblxuLy8gTGlzdCBncm91cFxuXG4kbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICAgICAgICByZ2JhKCRibGFjaywuMTI1KSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDogICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXk6ICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg6ICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAgICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1kaXNhYmxlZC1iZzogICAgICAgICAkbGlzdC1ncm91cC1iZyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6ICAgICAgICRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvciAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcblxuJHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci13aWR0aDogICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItY29sb3I6ICAgICAgI2RkZCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3gtc2hhZG93OiAgICAgICAgMCAxcHggMnB4IHJnYmEoJGJsYWNrLC4wNzUpICFkZWZhdWx0O1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuXG4vLyBGaWd1cmVzXG5cbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6IDkwJSAhZGVmYXVsdDtcbiRmaWd1cmUtY2FwdGlvbi1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLXBhZGRpbmcteDogICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWl0ZW0tcGFkZGluZzogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLW1hcmdpbi1ib3R0b206ICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItZGl2aWRlcjogICAgICAgICAgICBcIi9cIiAhZGVmYXVsdDtcblxuXG4vLyBDYXJvdXNlbFxuXG4kY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDE1JSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgICAuNSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWluZGljYXRvci13aWR0aDogICAgICAgICAgICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWhlaWdodDogICAgICAgICAgICAgICAgICAgM3B4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICA3MCUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoOiAgICAgICAgICAgICAgICAgMjBweCAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLWJnOiBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTQgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLWJnOiBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTEuNSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC10cmFuc2l0aW9uOiAgICAgICAgICAgdHJhbnNmb3JtIC42cyBlYXNlICFkZWZhdWx0O1xuXG5cbi8vIENsb3NlXG5cbiRjbG9zZS1mb250LXNpemU6ICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNSAhZGVmYXVsdDtcbiRjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGNsb3NlLXRleHQtc2hhZG93OiAgICAgICAgICAgMCAxcHggMCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vIENvZGVcblxuJGNvZGUtZm9udC1zaXplOiAgICAgICAgICAgICAgOTAlICFkZWZhdWx0O1xuJGNvZGUtcGFkZGluZy15OiAgICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG4kY29kZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICNiZDQxNDcgIWRlZmF1bHQ7XG4kY29kZS1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG5cbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcblxuJHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgMzQwcHggIWRlZmF1bHQ7XG4iLCJAbWVkaWEgcHJpbnQge1xuICAqLFxuICAqOjpiZWZvcmUsXG4gICo6OmFmdGVyIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICBhLFxuICBhOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGFiYnJbdGl0bGVdOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiOyB9XG4gIHByZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7IH1cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzOyB9XG4gIGgyLFxuICBoMyB7XG4gICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cbiAgLm5hdmJhciB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAuYmFkZ2Uge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7IH1cbiAgLnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7IH1cbiAgICAudGFibGUgdGQsXG4gICAgLnRhYmxlIHRoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxuICAudGFibGUtYm9yZGVyZWQgdGgsXG4gIC50YWJsZS1ib3JkZXJlZCB0ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50OyB9IH1cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG5ALW1zLXZpZXdwb3J0IHtcbiAgd2lkdGg6IGRldmljZS13aWR0aDsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGlhbG9nLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgfVxuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfVxuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG5hYmJyW3RpdGxlXSxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBjdXJzb3I6IGhlbHA7XG4gIGJvcmRlci1ib3R0b206IDA7IH1cblxuYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuZHQge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTsgfVxuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7IH1cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTsgfVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLS4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLS41ZW07IH1cblxuYSB7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyB9XG4gIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMDA1NmIzO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cywgYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7XG4gICAgb3V0bGluZTogMDsgfVxuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07IH1cblxucHJlIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTsgfVxuXG5pbWcge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBib3JkZXItc3R5bGU6IG5vbmU7IH1cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbmEsXG5hcmVhLFxuYnV0dG9uLFxuW3JvbGU9XCJidXR0b25cIl0sXG5pbnB1dCxcbmxhYmVsLFxuc2VsZWN0LFxuc3VtbWFyeSxcbnRleHRhcmVhIHtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB9XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XG4gIGNvbG9yOiAjODY4ZTk2O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsgfVxuXG50aCB7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IH1cblxubGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtOyB9XG5cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsgfVxuXG5pbnB1dCxcbmJ1dHRvbixcbnNlbGVjdCxcbm9wdGdyb3VwLFxudGV4dGFyZWEge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9XG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyB9XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyB9XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDsgfVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsOyB9XG5cbmZpZWxkc2V0IHtcbiAgbWluLXdpZHRoOiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDsgfVxuXG5sZWdlbmQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IH1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgfVxuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgZm9udDogaW5oZXJpdDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IH1cblxub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgY29sb3I6IGluaGVyaXQ7IH1cblxuaDEsIC5oMSB7XG4gIGZvbnQtc2l6ZTogMi41cmVtOyB9XG5cbmgyLCAuaDIge1xuICBmb250LXNpemU6IDJyZW07IH1cblxuaDMsIC5oMyB7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTsgfVxuXG5oNCwgLmg0IHtcbiAgZm9udC1zaXplOiAxLjVyZW07IH1cblxuaDUsIC5oNSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuXG5oNiwgLmg2IHtcbiAgZm9udC1zaXplOiAxcmVtOyB9XG5cbi5sZWFkIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi5kaXNwbGF5LTEge1xuICBmb250LXNpemU6IDZyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7IH1cblxuLmRpc3BsYXktMiB7XG4gIGZvbnQtc2l6ZTogNS41cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMS4xOyB9XG5cbi5kaXNwbGF5LTMge1xuICBmb250LXNpemU6IDQuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTsgfVxuXG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAzLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7IH1cblxuaHIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cblxuc21hbGwsXG4uc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfVxuXG5tYXJrLFxuLm1hcmsge1xuICBwYWRkaW5nOiAwLjJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsgfVxuXG4ubGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4ubGlzdC1pbmxpbmUge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuLmluaXRpYWxpc20ge1xuICBmb250LXNpemU6IDkwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuXG4uYmxvY2txdW90ZS1mb290ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiA4MCU7XG4gIGNvbG9yOiAjODY4ZTk2OyB9XG4gIC5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAxNCBcXDAwQTBcIjsgfVxuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNGTW9uby1SZWd1bGFyXCIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZTsgfVxuXG5jb2RlIHtcbiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiAjYmQ0MTQ3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG4gIGEgPiBjb2RlIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7IH1cblxua2JkIHtcbiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07IH1cbiAga2JkIGtiZCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBjb2xvcjogIzIxMjUyOTsgfVxuICBwcmUgY29kZSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAzNDBweDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsOyB9XG5cbi5jb250YWluZXIge1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA1NDBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA3MjBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuY29udGFpbmVyIHtcbiAgICAgIG1heC13aWR0aDogMTE0MHB4OyB9IH1cblxuLmNvbnRhaW5lci1mbHVpZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDsgfVxuXG4ubm8tZ3V0dGVycyB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgLm5vLWd1dHRlcnMgPiAuY29sLFxuICAubm8tZ3V0dGVycyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfVxuXG4uY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLFxuLmNvbC1hdXRvLCAuY29sLXNtLTEsIC5jb2wtc20tMiwgLmNvbC1zbS0zLCAuY29sLXNtLTQsIC5jb2wtc20tNSwgLmNvbC1zbS02LCAuY29sLXNtLTcsIC5jb2wtc20tOCwgLmNvbC1zbS05LCAuY29sLXNtLTEwLCAuY29sLXNtLTExLCAuY29sLXNtLTEyLCAuY29sLXNtLFxuLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLFxuLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLFxuLmNvbC1sZy1hdXRvLCAuY29sLXhsLTEsIC5jb2wteGwtMiwgLmNvbC14bC0zLCAuY29sLXhsLTQsIC5jb2wteGwtNSwgLmNvbC14bC02LCAuY29sLXhsLTcsIC5jb2wteGwtOCwgLmNvbC14bC05LCAuY29sLXhsLTEwLCAuY29sLXhsLTExLCAuY29sLXhsLTEyLCAuY29sLXhsLFxuLmNvbC14bC1hdXRvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7IH1cblxuLmNvbCB7XG4gIGZsZXgtYmFzaXM6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi5jb2wtYXV0byB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiBub25lOyB9XG5cbi5jb2wtMSB7XG4gIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxuXG4uY29sLTIge1xuICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuXG4uY29sLTMge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTsgfVxuXG4uY29sLTQge1xuICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxuXG4uY29sLTUge1xuICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuXG4uY29sLTYge1xuICBmbGV4OiAwIDAgNTAlO1xuICBtYXgtd2lkdGg6IDUwJTsgfVxuXG4uY29sLTcge1xuICBmbGV4OiAwIDAgNTguMzMzMzMlO1xuICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxuXG4uY29sLTgge1xuICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuXG4uY29sLTkge1xuICBmbGV4OiAwIDAgNzUlO1xuICBtYXgtd2lkdGg6IDc1JTsgfVxuXG4uY29sLTEwIHtcbiAgZmxleDogMCAwIDgzLjMzMzMzJTtcbiAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cblxuLmNvbC0xMSB7XG4gIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG5cbi5jb2wtMTIge1xuICBmbGV4OiAwIDAgMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi5vcmRlci0xIHtcbiAgb3JkZXI6IDE7IH1cblxuLm9yZGVyLTIge1xuICBvcmRlcjogMjsgfVxuXG4ub3JkZXItMyB7XG4gIG9yZGVyOiAzOyB9XG5cbi5vcmRlci00IHtcbiAgb3JkZXI6IDQ7IH1cblxuLm9yZGVyLTUge1xuICBvcmRlcjogNTsgfVxuXG4ub3JkZXItNiB7XG4gIG9yZGVyOiA2OyB9XG5cbi5vcmRlci03IHtcbiAgb3JkZXI6IDc7IH1cblxuLm9yZGVyLTgge1xuICBvcmRlcjogODsgfVxuXG4ub3JkZXItOSB7XG4gIG9yZGVyOiA5OyB9XG5cbi5vcmRlci0xMCB7XG4gIG9yZGVyOiAxMDsgfVxuXG4ub3JkZXItMTEge1xuICBvcmRlcjogMTE7IH1cblxuLm9yZGVyLTEyIHtcbiAgb3JkZXI6IDEyOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY29sLXNtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgLmNvbC1zbS1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IG5vbmU7IH1cbiAgLmNvbC1zbS0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxuICAuY29sLXNtLTIge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cbiAgLmNvbC1zbS0zIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlOyB9XG4gIC5jb2wtc20tNCB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxuICAuY29sLXNtLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cbiAgLmNvbC1zbS02IHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlOyB9XG4gIC5jb2wtc20tNyB7XG4gICAgZmxleDogMCAwIDU4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxuICAuY29sLXNtLTgge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cbiAgLmNvbC1zbS05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlOyB9XG4gIC5jb2wtc20tMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cbiAgLmNvbC1zbS0xMSB7XG4gICAgZmxleDogMCAwIDkxLjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgLm9yZGVyLXNtLTEge1xuICAgIG9yZGVyOiAxOyB9XG4gIC5vcmRlci1zbS0yIHtcbiAgICBvcmRlcjogMjsgfVxuICAub3JkZXItc20tMyB7XG4gICAgb3JkZXI6IDM7IH1cbiAgLm9yZGVyLXNtLTQge1xuICAgIG9yZGVyOiA0OyB9XG4gIC5vcmRlci1zbS01IHtcbiAgICBvcmRlcjogNTsgfVxuICAub3JkZXItc20tNiB7XG4gICAgb3JkZXI6IDY7IH1cbiAgLm9yZGVyLXNtLTcge1xuICAgIG9yZGVyOiA3OyB9XG4gIC5vcmRlci1zbS04IHtcbiAgICBvcmRlcjogODsgfVxuICAub3JkZXItc20tOSB7XG4gICAgb3JkZXI6IDk7IH1cbiAgLm9yZGVyLXNtLTEwIHtcbiAgICBvcmRlcjogMTA7IH1cbiAgLm9yZGVyLXNtLTExIHtcbiAgICBvcmRlcjogMTE7IH1cbiAgLm9yZGVyLXNtLTEyIHtcbiAgICBvcmRlcjogMTI7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbC1tZCB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5jb2wtbWQtYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiBub25lOyB9XG4gIC5jb2wtbWQtMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC1tZC0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG4gIC5jb2wtbWQtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLW1kLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC1tZC01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG4gIC5jb2wtbWQtNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLW1kLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC1tZC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG4gIC5jb2wtbWQtOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLW1kLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wtbWQtMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmNvbC1tZC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5vcmRlci1tZC0xIHtcbiAgICBvcmRlcjogMTsgfVxuICAub3JkZXItbWQtMiB7XG4gICAgb3JkZXI6IDI7IH1cbiAgLm9yZGVyLW1kLTMge1xuICAgIG9yZGVyOiAzOyB9XG4gIC5vcmRlci1tZC00IHtcbiAgICBvcmRlcjogNDsgfVxuICAub3JkZXItbWQtNSB7XG4gICAgb3JkZXI6IDU7IH1cbiAgLm9yZGVyLW1kLTYge1xuICAgIG9yZGVyOiA2OyB9XG4gIC5vcmRlci1tZC03IHtcbiAgICBvcmRlcjogNzsgfVxuICAub3JkZXItbWQtOCB7XG4gICAgb3JkZXI6IDg7IH1cbiAgLm9yZGVyLW1kLTkge1xuICAgIG9yZGVyOiA5OyB9XG4gIC5vcmRlci1tZC0xMCB7XG4gICAgb3JkZXI6IDEwOyB9XG4gIC5vcmRlci1tZC0xMSB7XG4gICAgb3JkZXI6IDExOyB9XG4gIC5vcmRlci1tZC0xMiB7XG4gICAgb3JkZXI6IDEyOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jb2wtbGcge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuICAuY29sLWxnLWF1dG8ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogbm9uZTsgfVxuICAuY29sLWxnLTEge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XG4gIC5jb2wtbGctMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuICAuY29sLWxnLTMge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7IH1cbiAgLmNvbC1sZy00IHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XG4gIC5jb2wtbGctNSB7XG4gICAgZmxleDogMCAwIDQxLjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuICAuY29sLWxnLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7IH1cbiAgLmNvbC1sZy03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMlO1xuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XG4gIC5jb2wtbGctOCB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuICAuY29sLWxnLTkge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7IH1cbiAgLmNvbC1sZy0xMCB7XG4gICAgZmxleDogMCAwIDgzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxuICAuY29sLWxnLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjclO1xuICAgIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG4gIC5jb2wtbGctMTIge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuICAub3JkZXItbGctMSB7XG4gICAgb3JkZXI6IDE7IH1cbiAgLm9yZGVyLWxnLTIge1xuICAgIG9yZGVyOiAyOyB9XG4gIC5vcmRlci1sZy0zIHtcbiAgICBvcmRlcjogMzsgfVxuICAub3JkZXItbGctNCB7XG4gICAgb3JkZXI6IDQ7IH1cbiAgLm9yZGVyLWxnLTUge1xuICAgIG9yZGVyOiA1OyB9XG4gIC5vcmRlci1sZy02IHtcbiAgICBvcmRlcjogNjsgfVxuICAub3JkZXItbGctNyB7XG4gICAgb3JkZXI6IDc7IH1cbiAgLm9yZGVyLWxnLTgge1xuICAgIG9yZGVyOiA4OyB9XG4gIC5vcmRlci1sZy05IHtcbiAgICBvcmRlcjogOTsgfVxuICAub3JkZXItbGctMTAge1xuICAgIG9yZGVyOiAxMDsgfVxuICAub3JkZXItbGctMTEge1xuICAgIG9yZGVyOiAxMTsgfVxuICAub3JkZXItbGctMTIge1xuICAgIG9yZGVyOiAxMjsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbC14bCB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5jb2wteGwtYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiBub25lOyB9XG4gIC5jb2wteGwtMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC14bC0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG4gIC5jb2wteGwtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLXhsLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC14bC01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG4gIC5jb2wteGwtNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLXhsLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC14bC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG4gIC5jb2wteGwtOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLXhsLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wteGwtMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5vcmRlci14bC0xIHtcbiAgICBvcmRlcjogMTsgfVxuICAub3JkZXIteGwtMiB7XG4gICAgb3JkZXI6IDI7IH1cbiAgLm9yZGVyLXhsLTMge1xuICAgIG9yZGVyOiAzOyB9XG4gIC5vcmRlci14bC00IHtcbiAgICBvcmRlcjogNDsgfVxuICAub3JkZXIteGwtNSB7XG4gICAgb3JkZXI6IDU7IH1cbiAgLm9yZGVyLXhsLTYge1xuICAgIG9yZGVyOiA2OyB9XG4gIC5vcmRlci14bC03IHtcbiAgICBvcmRlcjogNzsgfVxuICAub3JkZXIteGwtOCB7XG4gICAgb3JkZXI6IDg7IH1cbiAgLm9yZGVyLXhsLTkge1xuICAgIG9yZGVyOiA5OyB9XG4gIC5vcmRlci14bC0xMCB7XG4gICAgb3JkZXI6IDEwOyB9XG4gIC5vcmRlci14bC0xMSB7XG4gICAgb3JkZXI6IDExOyB9XG4gIC5vcmRlci14bC0xMiB7XG4gICAgb3JkZXI6IDEyOyB9IH1cblxuLnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlIHRoLFxuICAudGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsgfVxuICAudGFibGUgdGhlYWQgdGgge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZTllY2VmOyB9XG4gIC50YWJsZSAudGFibGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuLnRhYmxlLXNtIHRoLFxuLnRhYmxlLXNtIHRkIHtcbiAgcGFkZGluZzogMC4zcmVtOyB9XG5cbi50YWJsZS1ib3JkZXJlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlLWJvcmRlcmVkIHRoLFxuICAudGFibGUtYm9yZGVyZWQgdGQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRoLFxuICAudGFibGUtYm9yZGVyZWQgdGhlYWQgdGQge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsgfVxuXG4udGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTsgfVxuXG4udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuXG4udGFibGUtcHJpbWFyeSxcbi50YWJsZS1wcmltYXJ5ID4gdGgsXG4udGFibGUtcHJpbWFyeSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsgfVxuXG4udGFibGUtc2Vjb25kYXJ5LFxuLnRhYmxlLXNlY29uZGFyeSA+IHRoLFxuLnRhYmxlLXNlY29uZGFyeSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGZlMjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQyZDY7IH1cbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0ZCxcbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkNjsgfVxuXG4udGFibGUtc3VjY2Vzcyxcbi50YWJsZS1zdWNjZXNzID4gdGgsXG4udGFibGUtc3VjY2VzcyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsgfVxuXG4udGFibGUtaW5mbyxcbi50YWJsZS1pbmZvID4gdGgsXG4udGFibGUtaW5mbyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1OyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsgfVxuXG4udGFibGUtd2FybmluZyxcbi50YWJsZS13YXJuaW5nID4gdGgsXG4udGFibGUtd2FybmluZyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTsgfVxuXG4udGFibGUtZGFuZ2VyLFxuLnRhYmxlLWRhbmdlciA+IHRoLFxuLnRhYmxlLWRhbmdlciA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1YzZjYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7IH1cbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCxcbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsgfVxuXG4udGFibGUtbGlnaHQsXG4udGFibGUtbGlnaHQgPiB0aCxcbi50YWJsZS1saWdodCA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsgfVxuICAudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsXG4gIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsgfVxuXG4udGFibGUtZGFyayxcbi50YWJsZS1kYXJrID4gdGgsXG4udGFibGUtZGFyayA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTsgfVxuXG4udGFibGUtYWN0aXZlLFxuLnRhYmxlLWFjdGl2ZSA+IHRoLFxuLnRhYmxlLWFjdGl2ZSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7IH1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuICAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuXG4udGhlYWQtaW52ZXJzZSB0aCB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OyB9XG5cbi50aGVhZC1kZWZhdWx0IHRoIHtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cblxuLnRhYmxlLWludmVyc2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsgfVxuICAudGFibGUtaW52ZXJzZSB0aCxcbiAgLnRhYmxlLWludmVyc2UgdGQsXG4gIC50YWJsZS1pbnZlcnNlIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6ICMzMjM4M2U7IH1cbiAgLnRhYmxlLWludmVyc2UudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDsgfVxuICAudGFibGUtaW52ZXJzZS50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7IH1cbiAgLnRhYmxlLWludmVyc2UudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAudGFibGUtcmVzcG9uc2l2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsgfVxuICAgIC50YWJsZS1yZXNwb25zaXZlLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgIGJvcmRlcjogMDsgfSB9XG5cbi5idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OyB9XG4gIC5idG46Zm9jdXMsIC5idG46aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAuYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsgfVxuICAuYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNjU7IH1cbiAgLmJ0bjphY3RpdmUsIC5idG4uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyB9XG5cbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXRbZGlzYWJsZWRdIGEuYnRuIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjsgfVxuICAuYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDk7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjOyB9XG4gIC5idG4tcHJpbWFyeTpmb2N1cywgLmJ0bi1wcmltYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxuICAuYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cbiAgLmJ0bi1wcmltYXJ5OmFjdGl2ZSwgLmJ0bi1wcmltYXJ5LmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OWQ5O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjOyB9XG5cbi5idG4tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTY7XG4gIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxuICAuYnRuLXNlY29uZGFyeTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzcyN2I4NDtcbiAgICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7IH1cbiAgLmJ0bi1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tc2Vjb25kYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxMzQsIDE0MiwgMTUwLCAwLjUpOyB9XG4gIC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjtcbiAgICBib3JkZXItY29sb3I6ICM4NjhlOTY7IH1cbiAgLmJ0bi1zZWNvbmRhcnk6YWN0aXZlLCAuYnRuLXNlY29uZGFyeS5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI3Yjg0O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOyB9XG5cbi5idG4tc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7IH1cbiAgLmJ0bi1zdWNjZXNzOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4O1xuICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDsgfVxuICAuYnRuLXN1Y2Nlc3M6Zm9jdXMsIC5idG4tc3VjY2Vzcy5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNDAsIDE2NywgNjksIDAuNSk7IH1cbiAgLmJ0bi1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5idG4tc3VjY2VzczphY3RpdmUsIC5idG4tc3VjY2Vzcy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDsgfVxuXG4uYnRuLWluZm8ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4OyB9XG4gIC5idG4taW5mbzpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjtcbiAgICBib3JkZXItY29sb3I6ICMxMTdhOGI7IH1cbiAgLmJ0bi1pbmZvOmZvY3VzLCAuYnRuLWluZm8uZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxuICAuYnRuLWluZm8uZGlzYWJsZWQsIC5idG4taW5mbzpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cbiAgLmJ0bi1pbmZvOmFjdGl2ZSwgLmJ0bi1pbmZvLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTM4NDk2O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMTE3YThiOyB9XG5cbi5idG4td2FybmluZyB7XG4gIGNvbG9yOiAjMTExO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJ0bi13YXJuaW5nOmhvdmVyIHtcbiAgICBjb2xvcjogIzExMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBhODAwO1xuICAgIGJvcmRlci1jb2xvcjogI2QzOWUwMDsgfVxuICAuYnRuLXdhcm5pbmc6Zm9jdXMsIC5idG4td2FybmluZy5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjU1LCAxOTMsIDcsIDAuNSk7IH1cbiAgLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XG4gICAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3OyB9XG4gIC5idG4td2FybmluZzphY3RpdmUsIC5idG4td2FybmluZy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogI2QzOWUwMDsgfVxuXG4uYnRuLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7IH1cbiAgLmJ0bi1kYW5nZXI6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gICAgYm9yZGVyLWNvbG9yOiAjYmQyMTMwOyB9XG4gIC5idG4tZGFuZ2VyOmZvY3VzLCAuYnRuLWRhbmdlci5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjIwLCA1MywgNjksIDAuNSk7IH1cbiAgLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxuICAuYnRuLWRhbmdlcjphY3RpdmUsIC5idG4tZGFuZ2VyLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNiZDIxMzA7IH1cblxuLmJ0bi1saWdodCB7XG4gIGNvbG9yOiAjMTExO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJ0bi1saWdodDpob3ZlciB7XG4gICAgY29sb3I6ICMxMTE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcbiAgICBib3JkZXItY29sb3I6ICNkYWUwZTU7IH1cbiAgLmJ0bi1saWdodDpmb2N1cywgLmJ0bi1saWdodC5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsgfVxuICAuYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuICAuYnRuLWxpZ2h0OmFjdGl2ZSwgLmJ0bi1saWdodC5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNkYWUwZTU7IH1cblxuLmJ0bi1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLWRhcms6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gICAgYm9yZGVyLWNvbG9yOiAjMWQyMTI0OyB9XG4gIC5idG4tZGFyazpmb2N1cywgLmJ0bi1kYXJrLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwgNTgsIDY0LCAwLjUpOyB9XG4gIC5idG4tZGFyay5kaXNhYmxlZCwgLmJ0bi1kYXJrOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICAgIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLWRhcms6YWN0aXZlLCAuYnRuLWRhcmsuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICMxZDIxMjQ7IH1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnkge1xuICBjb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjsgfVxuICAuYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cbiAgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjMDA3YmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXByaW1hcnkuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gIGNvbG9yOiAjODY4ZTk2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2OyB9XG4gIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTY7XG4gICAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2OyB9XG4gIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDEzNCwgMTQyLCAxNTAsIDAuNSk7IH1cbiAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODY4ZTk2O1xuICAgIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxuXG4uYnRuLW91dGxpbmUtc3VjY2VzcyB7XG4gIGNvbG9yOiAjMjhhNzQ1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTsgfVxuICAuYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOyB9XG4gIC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICMyOGE3NDU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6YWN0aXZlLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTsgfVxuXG4uYnRuLW91dGxpbmUtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4OyB9XG4gIC5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xuICAgIGJvcmRlci1jb2xvcjogIzE3YTJiODsgfVxuICAuYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjMTdhMmI4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1pbmZvOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm8uYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmcge1xuICBjb2xvcjogI2ZmYzEwNztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsgfVxuICAuYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNTUsIDE5MywgNywgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjZmZjMTA3O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cblxuLmJ0bi1vdXRsaW5lLWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XG4gICAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjZGMzNTQ1O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgICBib3JkZXItY29sb3I6ICNkYzM1NDU7IH1cblxuLmJ0bi1vdXRsaW5lLWxpZ2h0IHtcbiAgY29sb3I6ICNmOGY5ZmE7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuICAuYnRuLW91dGxpbmUtbGlnaHQ6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodC5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1saWdodDpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICNmOGY5ZmE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLWxpZ2h0OmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWxpZ2h0LmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuXG4uYnRuLW91dGxpbmUtZGFyayB7XG4gIGNvbG9yOiAjMzQzYTQwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOyB9XG4gIC5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICAgIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLW91dGxpbmUtZGFyazpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhcmsuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7IH1cbiAgLmJ0bi1vdXRsaW5lLWRhcmsuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYXJrOmRpc2FibGVkIHtcbiAgICBjb2xvcjogIzM0M2E0MDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLW91dGxpbmUtZGFyazphY3RpdmUsIC5idG4tb3V0bGluZS1kYXJrLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gICAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOyB9XG5cbi5idG4tbGluayB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG4gIC5idG4tbGluaywgLmJ0bi1saW5rOmFjdGl2ZSwgLmJ0bi1saW5rLmFjdGl2ZSwgLmJ0bi1saW5rOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLWxpbmssIC5idG4tbGluazpmb2N1cywgLmJ0bi1saW5rOmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lOyB9XG4gIC5idG4tbGluazpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluazpob3ZlciB7XG4gICAgY29sb3I6ICMwMDU2YjM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1saW5rOmRpc2FibGVkIHtcbiAgICBjb2xvcjogIzg2OGU5NjsgfVxuICAgIC5idG4tbGluazpkaXNhYmxlZDpmb2N1cywgLmJ0bi1saW5rOmRpc2FibGVkOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4uYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsgfVxuXG4uYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07IH1cblxuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTsgfVxuXG4uYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTsgfVxuXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLmJ0bi1ibG9jayxcbmlucHV0W3R5cGU9XCJyZXNldFwiXS5idG4tYmxvY2ssXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLmJ0bi1ibG9jayB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5mYWRlIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7IH1cbiAgLmZhZGUuc2hvdyB7XG4gICAgb3BhY2l0eTogMTsgfVxuXG4uY29sbGFwc2Uge1xuICBkaXNwbGF5OiBub25lOyB9XG4gIC5jb2xsYXBzZS5zaG93IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuXG50ci5jb2xsYXBzZS5zaG93IHtcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XG5cbnRib2R5LmNvbGxhcHNlLnNob3cge1xuICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH1cblxuLmNvbGxhcHNpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7IH1cblxuLmRyb3B1cCxcbi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG5cbi5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOyB9XG5cbi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDsgfVxuXG4uZHJvcGRvd24tbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuICBkaXNwbGF5OiBub25lO1xuICBmbG9hdDogbGVmdDtcbiAgbWluLXdpZHRoOiAxMHJlbTtcbiAgcGFkZGluZzogMC41cmVtIDA7XG4gIG1hcmdpbjogMC4xMjVyZW0gMCAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiAjMjEyNTI5O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG5cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46IDAuNXJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsgfVxuXG4uZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAxLjVyZW07XG4gIGNsZWFyOiBib3RoO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwOyB9XG4gIC5kcm9wZG93bi1pdGVtOmZvY3VzLCAuZHJvcGRvd24taXRlbTpob3ZlciB7XG4gICAgY29sb3I6ICMxNjE4MWI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmRyb3Bkb3duLWl0ZW0uYWN0aXZlLCAuZHJvcGRvd24taXRlbTphY3RpdmUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOyB9XG4gIC5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnNob3cgPiBhIHtcbiAgb3V0bGluZTogMDsgfVxuXG4uZHJvcGRvd24tbWVudS5zaG93IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLmRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVyZW0gMS41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzg2OGU5NjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4uYnRuLWdyb3VwLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLmJ0bi1ncm91cCA+IC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAgIC5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLFxuICAgIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDI7IH1cbiAgICAuYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsXG4gICAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsXG4gICAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLFxuICAgIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7XG4gICAgICB6LWluZGV4OiAyOyB9XG4gIC5idG4tZ3JvdXAgLmJ0biArIC5idG4sXG4gIC5idG4tZ3JvdXAgLmJ0biArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyB9XG5cbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gIC5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAge1xuICAgIHdpZHRoOiBhdXRvOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG4gIC5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmJ0bi1ncm91cCA+IC5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwIHtcbiAgZmxvYXQ6IGxlZnQ7IH1cblxuLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOmxhc3QtY2hpbGQsXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpID4gLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cblxuLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOyB9XG4gIC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMzc1cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuMzc1cmVtOyB9XG5cbi5idG4tbGcgKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLWxnID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07IH1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLFxuICAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAge1xuICAgIHdpZHRoOiAxMDAlOyB9XG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bixcbiAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLWdyb3VwLFxuICAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7XG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICBtYXJnaW4tbGVmdDogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bjpsYXN0LWNoaWxkLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5bZGF0YS10b2dnbGU9XCJidXR0b25zXCJdID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB3aWR0aDogMSU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAgIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDphY3RpdmUsIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDM7IH1cblxuLmlucHV0LWdyb3VwLWFkZG9uLFxuLmlucHV0LWdyb3VwLWJ0bixcbi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSxcbiAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLFxuICAuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1idG4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi5pbnB1dC1ncm91cC1hZGRvbiB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG4gIC5pbnB1dC1ncm91cC1hZGRvbi5mb3JtLWNvbnRyb2wtc20sXG4gIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbixcbiAgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5pbnB1dC1ncm91cC1hZGRvbi5idG4ge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMC4ycmVtOyB9XG4gIC5pbnB1dC1ncm91cC1hZGRvbi5mb3JtLWNvbnRyb2wtbGcsXG4gIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbixcbiAgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5pbnB1dC1ncm91cC1hZGRvbi5idG4ge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cbiAgLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmxhc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6bGFzdC1jaGlsZCksXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuZHJvcGRvd24tdG9nZ2xlLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uaW5wdXQtZ3JvdXAtYWRkb246bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUsXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG5cbi5mb3JtLWNvbnRyb2wgKyAuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItbGVmdDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAtYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgLmlucHV0LWdyb3VwLWJ0biA+IC5idG4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biArIC5idG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjpmb2N1cywgLmlucHV0LWdyb3VwLWJ0biA+IC5idG46YWN0aXZlLCAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjpob3ZlciB7XG4gICAgICB6LWluZGV4OiAzOyB9XG4gIC5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sXG4gIC5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4tZ3JvdXAge1xuICAgIG1hcmdpbi1yaWdodDogLTFweDsgfVxuICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bixcbiAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAge1xuICAgIHotaW5kZXg6IDI7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmb2N1cywgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46YWN0aXZlLCAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpob3ZlcixcbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpmb2N1cyxcbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDphY3RpdmUsXG4gICAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXA6aG92ZXIge1xuICAgICAgei1pbmRleDogMzsgfVxuXG4uY3VzdG9tLWNvbnRyb2wge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBtaW4taGVpZ2h0OiAxLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDFyZW07IH1cblxuLmN1c3RvbS1jb250cm9sLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAtMTtcbiAgb3BhY2l0eTogMDsgfVxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDNweCAjMDA3YmZmOyB9XG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOyB9XG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWRlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogIzg2OGU5NjsgfVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuMjVyZW07XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTsgfVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0VcIik7IH1cblxuLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlOyB9XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4uY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XG4gIC5jdXN0b20tY29udHJvbHMtc3RhY2tlZCAuY3VzdG9tLWNvbnRyb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH1cbiAgICAuY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQgLmN1c3RvbS1jb250cm9sICsgLmN1c3RvbS1jb250cm9sIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA1JyUzRSUzQ3BhdGggZmlsbD0nJTIzMzMzJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM0UlM0Mvc3ZnJTNFXCIpIG5vLXJlcGVhdCByaWdodCAwLjc1cmVtIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgYXBwZWFyYW5jZTogbm9uZTsgfVxuICAuY3VzdG9tLXNlbGVjdDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xuICAgIG91dGxpbmU6IG5vbmU7IH1cbiAgICAuY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHtcbiAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuICAuY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsgfVxuICAuY3VzdG9tLXNlbGVjdDo6LW1zLWV4cGFuZCB7XG4gICAgb3BhY2l0eTogMDsgfVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcbiAgZm9udC1zaXplOiA3NSU7IH1cblxuLmN1c3RvbS1maWxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5jdXN0b20tZmlsZS1pbnB1dCB7XG4gIG1pbi13aWR0aDogMTRyZW07XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7IH1cbiAgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWNvbnRyb2wge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMDc1cmVtICNmZmYsIDAgMCAwIDAuMnJlbSAjMDA3YmZmOyB9XG5cbi5jdXN0b20tZmlsZS1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiA1O1xuICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAuY3VzdG9tLWZpbGUtY29udHJvbDpsYW5nKGVuKTplbXB0eTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiQ2hvb3NlIGZpbGUuLi5cIjsgfVxuICAuY3VzdG9tLWZpbGUtY29udHJvbDo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDY7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOyB9XG4gIC5jdXN0b20tZmlsZS1jb250cm9sOmxhbmcoZW4pOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiQnJvd3NlXCI7IH1cblxuLm5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsgfVxuICAubmF2LWxpbms6Zm9jdXMsIC5uYXYtbGluazpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIC5uYXYtbGluay5kaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7IH1cblxuLm5hdi10YWJzIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7IH1cbiAgLm5hdi10YWJzIC5uYXYtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDsgfVxuICAubmF2LXRhYnMgLm5hdi1saW5rIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOyB9XG4gICAgLm5hdi10YWJzIC5uYXYtbGluazpmb2N1cywgLm5hdi10YWJzIC5uYXYtbGluazpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6ICNlOWVjZWYgI2U5ZWNlZiAjZGRkOyB9XG4gICAgLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogIzg2OGU5NjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSxcbiAgLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICM0OTUwNTc7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXItY29sb3I6ICNkZGQgI2RkZCAjZmZmOyB9XG4gIC5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7XG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsXG4gIC5zaG93ID4gLm5hdi1waWxscyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cblxuLm5hdi1maWxsIC5uYXYtaXRlbSB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHtcbiAgZmxleC1iYXNpczogMDtcbiAgZmxleC1ncm93OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udGFiLWNvbnRlbnQgPiAuYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtOyB9XG4gIC5uYXZiYXIgPiAuY29udGFpbmVyLFxuICAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cblxuLm5hdmJhci1icmFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6IDAuMzEyNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuMzEyNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4gIC5uYXZiYXItYnJhbmQ6Zm9jdXMsIC5uYXZiYXItYnJhbmQ6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4ubmF2YmFyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuICAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIGZsb2F0OiBub25lOyB9XG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTsgfVxuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAubmF2YmFyLXRvZ2dsZXI6Zm9jdXMsIC5uYXZiYXItdG9nZ2xlcjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXNtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudS1yaWdodCB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvOyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyLWV4cGFuZC1tZCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogLjVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsXG4gICAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwOyB9XG4gICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLXRvZ2dsZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbGcge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLFxuICAgIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2Uge1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm5hdmJhci1leHBhbmQteGwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLFxuICAgIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2Uge1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4ubmF2YmFyLWV4cGFuZCB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBhdXRvOyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxuICAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7IH1cbiAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gIC5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG4gIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxuICAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7IH1cbiAgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7IH1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluayxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDAsIDAsIDAsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFXCIpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIge1xuICAgIGNvbG9yOiB3aGl0ZTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmNhcmQtYm9keSB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBwYWRkaW5nOiAxLjI1cmVtOyB9XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfVxuXG4uY2FyZC1zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3A6IC0wLjM3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5jYXJkLWxpbms6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLmNhcmQtbGluayArIC5jYXJkLWxpbmsge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTsgfVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsgfVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmNhcmQtaGVhZGVyIHtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDMpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7IH1cbiAgLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCkgMCAwOyB9XG5cbi5jYXJkLWZvb3RlciB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOyB9XG4gIC5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpOyB9XG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICBib3JkZXItYm90dG9tOiAwOyB9XG5cbi5jYXJkLWhlYWRlci1waWxscyB7XG4gIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtOyB9XG5cbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6IDEuMjVyZW07IH1cblxuLmNhcmQtaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7IH1cblxuLmNhcmQtaW1nLXRvcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsgfVxuXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1kZWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMTVweDtcbiAgICBtYXJnaW4tbGVmdDogLTE1cHg7IH1cbiAgICAuY2FyZC1kZWNrIC5jYXJkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNhcmQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDsgfVxuICAgIC5jYXJkLWdyb3VwIC5jYXJkIHtcbiAgICAgIGZsZXg6IDEgMCAwJTsgfVxuICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQgKyAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDsgfVxuICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgICAuY2FyZC1ncm91cCAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwOyB9XG4gICAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwOyB9IH1cblxuLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLWNvbHVtbnMge1xuICAgIGNvbHVtbi1jb3VudDogMztcbiAgICBjb2x1bW4tZ2FwOiAxLjI1cmVtOyB9XG4gICAgLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC4yNWVtIDAuNGVtO1xuICBmb250LXNpemU6IDc1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cbiAgLmJhZGdlOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5idG4gLmJhZGdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xcHg7IH1cblxuLmJhZGdlLXBpbGwge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogMTByZW07IH1cblxuLmJhZGdlLXByaW1hcnkge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsgfVxuICAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cywgLmJhZGdlLXByaW1hcnlbaHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjOyB9XG5cbi5iYWRnZS1zZWNvbmRhcnkge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjsgfVxuICAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsgfVxuXG4uYmFkZ2Utc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzLCAuYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7IH1cblxuLmJhZGdlLWluZm8ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsgfVxuICAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cywgLmJhZGdlLWluZm9baHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOyB9XG5cbi5iYWRnZS13YXJuaW5nIHtcbiAgY29sb3I6ICMxMTE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJhZGdlLXdhcm5pbmdbaHJlZl06Zm9jdXMsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogIzExMTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsgfVxuXG4uYmFkZ2UtZGFuZ2VyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7IH1cbiAgLmJhZGdlLWRhbmdlcltocmVmXTpmb2N1cywgLmJhZGdlLWRhbmdlcltocmVmXTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZDIxMzA7IH1cblxuLmJhZGdlLWxpZ2h0IHtcbiAgY29sb3I6ICMxMTE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJhZGdlLWxpZ2h0W2hyZWZdOmZvY3VzLCAuYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjMTExO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1OyB9XG5cbi5iYWRnZS1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7IH1cbiAgLmJhZGdlLWRhcmtbaHJlZl06Zm9jdXMsIC5iYWRnZS1kYXJrW2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsgfVxuXG4uanVtYm90cm9uIHtcbiAgcGFkZGluZzogMnJlbSAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgLmp1bWJvdHJvbiB7XG4gICAgICBwYWRkaW5nOiA0cmVtIDJyZW07IH0gfVxuXG4uanVtYm90cm9uLWZsdWlkIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5hbGVydCB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmFsZXJ0LWhlYWRpbmcge1xuICBjb2xvcjogaW5oZXJpdDsgfVxuXG4uYWxlcnQtbGluayB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTAuNzVyZW07XG4gIHJpZ2h0OiAtMS4yNXJlbTtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBjb2xvcjogaW5oZXJpdDsgfVxuXG4uYWxlcnQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA0MDg1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NlNWZmO1xuICBib3JkZXItY29sb3I6ICNiOGRhZmY7IH1cbiAgLmFsZXJ0LXByaW1hcnkgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM5ZmNkZmY7IH1cbiAgLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjMDAyNzUyOyB9XG5cbi5hbGVydC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzQ2NGE0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZThlYTtcbiAgYm9yZGVyLWNvbG9yOiAjZGRkZmUyOyB9XG4gIC5hbGVydC1zZWNvbmRhcnkgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNjZmQyZDY7IH1cbiAgLmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICMyZTMxMzM7IH1cblxuLmFsZXJ0LXN1Y2Nlc3Mge1xuICBjb2xvcjogIzE1NTcyNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTtcbiAgYm9yZGVyLWNvbG9yOiAjYzNlNmNiOyB9XG4gIC5hbGVydC1zdWNjZXNzIGhyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjYjFkZmJiOyB9XG4gIC5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHtcbiAgICBjb2xvcjogIzBiMmUxMzsgfVxuXG4uYWxlcnQtaW5mbyB7XG4gIGNvbG9yOiAjMGM1NDYwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxO1xuICBib3JkZXItY29sb3I6ICNiZWU1ZWI7IH1cbiAgLmFsZXJ0LWluZm8gaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7IH1cbiAgLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjMDYyYzMzOyB9XG5cbi5hbGVydC13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7XG4gIGJvcmRlci1jb2xvcjogI2ZmZWViYTsgfVxuICAuYWxlcnQtd2FybmluZyBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZThhMTsgfVxuICAuYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICM1MzNmMDM7IH1cblxuLmFsZXJ0LWRhbmdlciB7XG4gIGNvbG9yOiAjNzIxYzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhO1xuICBib3JkZXItY29sb3I6ICNmNWM2Y2I7IH1cbiAgLmFsZXJ0LWRhbmdlciBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2YxYjBiNzsgfVxuICAuYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHtcbiAgICBjb2xvcjogIzQ5MTIxNzsgfVxuXG4uYWxlcnQtbGlnaHQge1xuICBjb2xvcjogIzgxODE4MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcbiAgYm9yZGVyLWNvbG9yOiAjZmRmZGZlOyB9XG4gIC5hbGVydC1saWdodCBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWNmNjsgfVxuICAuYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjNjg2ODY4OyB9XG5cbi5hbGVydC1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7XG4gIGJvcmRlci1jb2xvcjogI2M2YzhjYTsgfVxuICAuYWxlcnQtZGFyayBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2I5YmJiZTsgfVxuICAuYWxlcnQtZGFyayAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICMwNDA1MDU7IH1cblxuLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cblxuLm1lZGlhLWJvZHkge1xuICBmbGV4OiAxOyB9XG5cbi50b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDcwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG9wYWNpdHk6IDA7IH1cbiAgLnRvb2x0aXAuc2hvdyB7XG4gICAgb3BhY2l0eTogMC45OyB9XG4gIC50b29sdGlwIC5hcnJvdyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA1cHg7XG4gICAgaGVpZ2h0OiA1cHg7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC10b3AsIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJ0b3BcIl0ge1xuICAgIHBhZGRpbmc6IDVweCAwOyB9XG4gICAgLnRvb2x0aXAuYnMtdG9vbHRpcC10b3AgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwidG9wXCJdIC5hcnJvdyB7XG4gICAgICBib3R0b206IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggMDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1yaWdodCwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBwYWRkaW5nOiAwIDVweDsgfVxuICAgIC50b29sdGlwLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93IHtcbiAgICAgIGxlZnQ6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93OjpiZWZvcmUge1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1ib3R0b20sIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJib3R0b21cIl0ge1xuICAgIHBhZGRpbmc6IDVweCAwOyB9XG4gICAgLnRvb2x0aXAuYnMtdG9vbHRpcC1ib3R0b20gLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIC5hcnJvdyB7XG4gICAgICB0b3A6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1sZWZ0LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgcGFkZGluZzogMCA1cHg7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWxlZnQgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSAuYXJyb3cge1xuICAgICAgcmlnaHQ6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCAwIDVweCA1cHg7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsgfVxuICAudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuXG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDNweCA4cHg7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmFsaWduLWJhc2VsaW5lIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRvcCB7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tbWlkZGxlIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1ib3R0b20ge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRleHQtYm90dG9tIHtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRleHQtdG9wIHtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnQ7IH1cblxuLmJnLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1wcmltYXJ5OmZvY3VzLCBhLmJnLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7IH1cblxuLmJnLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTYgIWltcG9ydGFudDsgfVxuXG5hLmJnLXNlY29uZGFyeTpmb2N1cywgYS5iZy1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7IH1cblxuLmJnLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1zdWNjZXNzOmZvY3VzLCBhLmJnLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7IH1cblxuLmJnLWluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1pbmZvOmZvY3VzLCBhLmJnLWluZm86aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7IH1cblxuLmJnLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy13YXJuaW5nOmZvY3VzLCBhLmJnLXdhcm5pbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7IH1cblxuLmJnLWRhbmdlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsgfVxuXG5hLmJnLWRhbmdlcjpmb2N1cywgYS5iZy1kYW5nZXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7IH1cblxuLmJnLWxpZ2h0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50OyB9XG5cbmEuYmctbGlnaHQ6Zm9jdXMsIGEuYmctbGlnaHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7IH1cblxuLmJnLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1kYXJrOmZvY3VzLCBhLmJnLWRhcms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7IH1cblxuLmJnLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5iZy10cmFuc3BhcmVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWYgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLTAge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLXRvcC0wIHtcbiAgYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItcmlnaHQtMCB7XG4gIGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItYm90dG9tLTAge1xuICBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1sZWZ0LTAge1xuICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItcHJpbWFyeSB7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZiAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItc2Vjb25kYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1zdWNjZXNzIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1pbmZvIHtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci13YXJuaW5nIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1kYW5nZXIge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLWxpZ2h0IHtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1kYXJrIHtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci13aGl0ZSB7XG4gIGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLnJvdW5kZWQtYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucm91bmRlZC1jaXJjbGUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7IH1cblxuLnJvdW5kZWQtMCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cblxuLmNsZWFyZml4OjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogXCJcIjsgfVxuXG4uZC1ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG5cbi5kLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuXG4uZC10YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cblxuLmQtdGFibGUtY2VsbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuXG4uZC1mbGV4IHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZS1mbGV4IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmQtc20tbm9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIC5kLXNtLWlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgLmQtc20taW5saW5lLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxuICAuZC1zbS1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAuZC1zbS10YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxuICAuZC1zbS10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cbiAgLmQtc20tZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gIC5kLXNtLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5kLW1kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuZC1tZC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gIC5kLW1kLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gIC5kLW1kLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAuZC1tZC1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZC1sZy1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgLmQtbGctaW5saW5lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAuZC1sZy1pbmxpbmUtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLXRhYmxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLXRhYmxlLWNlbGwge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAuZC1sZy1mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cbiAgLmQtbGctaW5saW5lLWZsZXgge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kLXhsLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuZC14bC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gIC5kLXhsLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gIC5kLXhsLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAuZC14bC1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWJsb2NrIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIEBtZWRpYSBwcmludCB7XG4gICAgLmQtcHJpbnQtYmxvY2sge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWlubGluZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgcHJpbnQge1xuICAgIC5kLXByaW50LWlubGluZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgcHJpbnQge1xuICAgIC5kLXByaW50LWlubGluZS1ibG9jayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBwcmludCB7XG4gIC5kLXByaW50LW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi5lbWJlZC1yZXNwb25zaXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLmVtYmVkLXJlc3BvbnNpdmU6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogXCJcIjsgfVxuICAuZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsXG4gIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLFxuICAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsXG4gIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA0Mi44NTcxNCU7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHtcbiAgcGFkZGluZy10b3A6IDc1JTsgfVxuXG4uZW1iZWQtcmVzcG9uc2l2ZS0xYnkxOjpiZWZvcmUge1xuICBwYWRkaW5nLXRvcDogMTAwJTsgfVxuXG4uZmxleC1yb3cge1xuICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtY29sdW1uIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG5cbi5mbGV4LXJvdy1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtY29sdW1uLXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4uZmxleC13cmFwIHtcbiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtbm93cmFwIHtcbiAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxuXG4uZmxleC13cmFwLXJldmVyc2Uge1xuICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG5cbi5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuXG4uanVzdGlmeS1jb250ZW50LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuXG4uanVzdGlmeS1jb250ZW50LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cblxuLmp1c3RpZnktY29udGVudC1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1pdGVtcy1zdGFydCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLWVuZCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1jb250ZW50LXN0YXJ0IHtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1jb250ZW50LWVuZCB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWNvbnRlbnQtY2VudGVyIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWNvbnRlbnQtYmV0d2VlbiB7XG4gIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tY29udGVudC1hcm91bmQge1xuICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tY29udGVudC1zdHJldGNoIHtcbiAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1zZWxmLWF1dG8ge1xuICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtc3RhcnQge1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtZW5kIHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tc2VsZi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tc2VsZi1iYXNlbGluZSB7XG4gIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZsZXgtc20tcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20tY29sdW1uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20tcm93LXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXNtLWNvbHVtbi1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC1zbS13cmFwIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfVxuICAuZmxleC1zbS1ub3dyYXAge1xuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20td3JhcC1yZXZlcnNlIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tZW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtc20tc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLWNlbnRlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1lbmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tY2VudGVyIHtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tYXJvdW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHtcbiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tYXV0byB7XG4gICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tZW5kIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tYmFzZWxpbmUge1xuICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5mbGV4LW1kLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC1tZC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbWQtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbWQtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbWQtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1tZC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1tZC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxleC1sZy1yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy1jb2x1bW4ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy1yb3ctcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbGctY29sdW1uLXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LWxnLXdyYXAge1xuICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LWxnLW5vd3JhcCB7XG4gICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy13cmFwLXJldmVyc2Uge1xuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1lbmQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4ge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1sZy1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1zdGFydCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWVuZCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1jZW50ZXIge1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4ge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1hcm91bmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLXN0cmV0Y2gge1xuICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1hdXRvIHtcbiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtbGctc3RhcnQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1lbmQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtbGctY2VudGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1iYXNlbGluZSB7XG4gICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1zdHJldGNoIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5mbGV4LXhsLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC14bC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgteGwtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgteGwtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC14bC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMteGwtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi14bC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi14bC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfSB9XG5cbi5mbG9hdC1sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuXG4uZmxvYXQtcmlnaHQge1xuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuXG4uZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5mbG9hdC1zbS1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC1zbS1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLmZsb2F0LXNtLW5vbmUge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmZsb2F0LW1kLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLmZsb2F0LW1kLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQtbWQtbm9uZSB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxvYXQtbGctbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQtbGctcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC1sZy1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuZmxvYXQteGwtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQteGwtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC14bC1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuLnBvc2l0aW9uLXN0YXRpYyB7XG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tcmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tZml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50OyB9XG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7IH1cblxuLmZpeGVkLWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAzMDsgfVxuXG5Ac3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHtcbiAgLnN0aWNreS10b3Age1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiAwO1xuICAgIHotaW5kZXg6IDEwMjA7IH0gfVxuXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgYm9yZGVyOiAwOyB9XG5cbi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBjbGlwLXBhdGg6IG5vbmU7IH1cblxuLnctMjUge1xuICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7IH1cblxuLnctNTAge1xuICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7IH1cblxuLnctNzUge1xuICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH1cblxuLnctMTAwIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4uaC0yNSB7XG4gIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7IH1cblxuLmgtNTAge1xuICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50OyB9XG5cbi5oLTc1IHtcbiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsgfVxuXG4uaC0xMDAge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4ubXctMTAwIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLm1oLTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4ubS0wIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cblxuLm10LTAsXG4ubXktMCB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4ubXItMCxcbi5teC0wIHtcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLm1iLTAsXG4ubXktMCB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4ubWwtMCxcbi5teC0wIHtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4ubS0xIHtcbiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLm10LTEsXG4ubXktMSB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubXItMSxcbi5teC0xIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1iLTEsXG4ubXktMSB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubWwtMSxcbi5teC0xIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubS0yIHtcbiAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubXQtMixcbi5teS0yIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1yLTIsXG4ubXgtMiB7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1iLTIsXG4ubXktMiB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tbC0yLFxuLm14LTIge1xuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tMyB7XG4gIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tdC0zLFxuLm15LTMge1xuICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm1yLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tYi0zLFxuLm15LTMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm1sLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tNCB7XG4gIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm10LTQsXG4ubXktNCB7XG4gIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tci00LFxuLm14LTQge1xuICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tYi00LFxuLm15LTQge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubWwtNCxcbi5teC00IHtcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tLTUge1xuICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ubXQtNSxcbi5teS01IHtcbiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5tci01LFxuLm14LTUge1xuICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ubWItNSxcbi5teS01IHtcbiAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5tbC01LFxuLm14LTUge1xuICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTAge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cblxuLnB0LTAsXG4ucHktMCB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cblxuLnByLTAsXG4ucHgtMCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuXG4ucGItMCxcbi5weS0wIHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4ucGwtMCxcbi5weC0wIHtcbiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuLnAtMSB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHQtMSxcbi5weS0xIHtcbiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHItMSxcbi5weC0xIHtcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wYi0xLFxuLnB5LTEge1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wbC0xLFxuLnB4LTEge1xuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucC0yIHtcbiAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLnB0LTIsXG4ucHktMiB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHItMixcbi5weC0yIHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLnBiLTIsXG4ucHktMiB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucGwtMixcbi5weC0yIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucC0zIHtcbiAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wdC0zLFxuLnB5LTMge1xuICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wci0zLFxuLnB4LTMge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLnBiLTMsXG4ucHktMyB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLnBsLTMsXG4ucHgtMyB7XG4gIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTQge1xuICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHQtNCxcbi5weS00IHtcbiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wci00LFxuLnB4LTQge1xuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucGItNCxcbi5weS00IHtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wbC00LFxuLnB4LTQge1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTUge1xuICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLnB0LTUsXG4ucHktNSB7XG4gIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLnByLTUsXG4ucHgtNSB7XG4gIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ucGItNSxcbi5weS01IHtcbiAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ucGwtNSxcbi5weC01IHtcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tYXV0byB7XG4gIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9XG5cbi5tdC1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLm1yLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XG5cbi5tYi1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLm1sLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5tLXNtLTAge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS0wLFxuICAubXktc20tMCB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9XG4gIC5tci1zbS0wLFxuICAubXgtc20tMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTAsXG4gIC5teS1zbS0wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTAsXG4gIC5teC1zbS0wIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9XG4gIC5tLXNtLTEge1xuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS0xLFxuICAubXktc20tMSB7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1zbS0xLFxuICAubXgtc20tMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTEsXG4gIC5teS1zbS0xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTEsXG4gIC5teC1zbS0xIHtcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLXNtLTIge1xuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXNtLTIsXG4gIC5teS1zbS0yIHtcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItc20tMixcbiAgLm14LXNtLTIge1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTIsXG4gIC5teS1zbS0yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtc20tMixcbiAgLm14LXNtLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS0zIHtcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsgfVxuICAubXQtc20tMyxcbiAgLm15LXNtLTMge1xuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubXItc20tMyxcbiAgLm14LXNtLTMge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS0zLFxuICAubXktc20tMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1zbS0zLFxuICAubXgtc20tMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS00IHtcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS00LFxuICAubXktc20tNCB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXNtLTQsXG4gIC5teC1zbS00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS00LFxuICAubXktc20tNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTQsXG4gIC5teC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tc20tNSB7XG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXNtLTUsXG4gIC5teS1zbS01IHtcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXNtLTUsXG4gIC5teC1zbS01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubWItc20tNSxcbiAgLm15LXNtLTUge1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuICAubWwtc20tNSxcbiAgLm14LXNtLTUge1xuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tMCB7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS0wLFxuICAucHktc20tMCB7XG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfVxuICAucHItc20tMCxcbiAgLnB4LXNtLTAge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuICAucGItc20tMCxcbiAgLnB5LXNtLTAge1xuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTAsXG4gIC5weC1zbS0wIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAucC1zbS0xIHtcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXNtLTEsXG4gIC5weS1zbS0xIHtcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1zbS0xLFxuICAucHgtc20tMSB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1zbS0xLFxuICAucHktc20tMSB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtc20tMSxcbiAgLnB4LXNtLTEge1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXNtLTIge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS0yLFxuICAucHktc20tMiB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1zbS0yLFxuICAucHgtc20tMiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXNtLTIsXG4gIC5weS1zbS0yIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTIsXG4gIC5weC1zbS0yIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXNtLTMge1xuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucHQtc20tMyxcbiAgLnB5LXNtLTMge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXNtLTMsXG4gIC5weC1zbS0zIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXNtLTMsXG4gIC5weS1zbS0zIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1zbS0zLFxuICAucHgtc20tMyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tNCB7XG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXNtLTQsXG4gIC5weS1zbS00IHtcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXNtLTQsXG4gIC5weC1zbS00IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItc20tNCxcbiAgLnB5LXNtLTQge1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtc20tNCxcbiAgLnB4LXNtLTQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tNSB7XG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS01LFxuICAucHktc20tNSB7XG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHItc20tNSxcbiAgLnB4LXNtLTUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucGItc20tNSxcbiAgLnB5LXNtLTUge1xuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTUsXG4gIC5weC1zbS01IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS1hdXRvIHtcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfVxuICAubXQtc20tYXV0byxcbiAgLm15LXNtLWF1dG8ge1xuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubXItc20tYXV0byxcbiAgLm14LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS1hdXRvLFxuICAubXktc20tYXV0byB7XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tbC1zbS1hdXRvLFxuICAubXgtc20tYXV0byB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubS1tZC0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuICAubXQtbWQtMCxcbiAgLm15LW1kLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuICAubXItbWQtMCxcbiAgLm14LW1kLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0wLFxuICAubXktbWQtMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC0wLFxuICAubXgtbWQtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAubS1tZC0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbWQtMSxcbiAgLm15LW1kLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItbWQtMSxcbiAgLm14LW1kLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0xLFxuICAubXktbWQtMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC0xLFxuICAubXgtbWQtMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1tZC0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1tZC0yLFxuICAubXktbWQtMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLTIsXG4gIC5teC1tZC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0yLFxuICAubXktbWQtMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLW1kLTIsXG4gIC5teC1tZC0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LW1kLTMsXG4gIC5teS1tZC0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLTMsXG4gIC5teC1tZC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWItbWQtMyxcbiAgLm15LW1kLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbWQtMyxcbiAgLm14LW1kLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbWQtNCxcbiAgLm15LW1kLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1tZC00LFxuICAubXgtbWQtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbWQtNCxcbiAgLm15LW1kLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC00LFxuICAubXgtbWQtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLW1kLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1tZC01LFxuICAubXktbWQtNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1tZC01LFxuICAubXgtbWQtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLW1kLTUsXG4gIC5teS1tZC01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLW1kLTUsXG4gIC5teC1tZC01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuICAucHQtbWQtMCxcbiAgLnB5LW1kLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnByLW1kLTAsXG4gIC5weC1tZC0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTAsXG4gIC5weS1tZC0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC0wLFxuICAucHgtbWQtMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnAtbWQtMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1tZC0xLFxuICAucHktbWQtMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbWQtMSxcbiAgLnB4LW1kLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItbWQtMSxcbiAgLnB5LW1kLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLW1kLTEsXG4gIC5weC1tZC0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1tZC0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbWQtMixcbiAgLnB5LW1kLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbWQtMixcbiAgLnB4LW1kLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1tZC0yLFxuICAucHktbWQtMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC0yLFxuICAucHgtbWQtMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1tZC0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LW1kLTMsXG4gIC5weS1tZC0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1tZC0zLFxuICAucHgtbWQtMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1tZC0zLFxuICAucHktbWQtMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbWQtMyxcbiAgLnB4LW1kLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1tZC00LFxuICAucHktbWQtNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1tZC00LFxuICAucHgtbWQtNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTQsXG4gIC5weS1tZC00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLW1kLTQsXG4gIC5weC1tZC00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbWQtNSxcbiAgLnB5LW1kLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLW1kLTUsXG4gIC5weC1tZC01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTUsXG4gIC5weS1tZC01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC01LFxuICAucHgtbWQtNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm10LW1kLWF1dG8sXG4gIC5teS1tZC1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLWF1dG8sXG4gIC5teC1tZC1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWItbWQtYXV0byxcbiAgLm15LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWwtbWQtYXV0byxcbiAgLm14LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm0tbGctMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTAsXG4gIC5teS1sZy0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1yLWxnLTAsXG4gIC5teC1sZy0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuICAubWItbGctMCxcbiAgLm15LWxnLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICAubWwtbGctMCxcbiAgLm14LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLm0tbGctMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTEsXG4gIC5teS1sZy0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLWxnLTEsXG4gIC5teC1sZy0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbGctMSxcbiAgLm15LWxnLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbGctMSxcbiAgLm14LWxnLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbGctMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1sZy0zLFxuICAubXktbGctMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy0zLFxuICAubXgtbGctMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLTMsXG4gIC5teS1sZy0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLWxnLTMsXG4gIC5teC1sZy0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1sZy01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbGctNSxcbiAgLm15LWxnLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubXItbGctNSxcbiAgLm14LWxnLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1sZy01LFxuICAubXktbGctNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1sZy01LFxuICAubXgtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTAsXG4gIC5weS1sZy0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XG4gIC5wci1sZy0wLFxuICAucHgtbGctMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy0wLFxuICAucHktbGctMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICAucGwtbGctMCxcbiAgLnB4LWxnLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XG4gIC5wLWxnLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbGctMSxcbiAgLnB5LWxnLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLWxnLTEsXG4gIC5weC1sZy0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLWxnLTEsXG4gIC5weS1sZy0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1sZy0xLFxuICAucHgtbGctMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtbGctMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTIsXG4gIC5weS1sZy0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLWxnLTIsXG4gIC5weC1sZy0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItbGctMixcbiAgLnB5LWxnLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbGctMixcbiAgLnB4LWxnLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtbGctMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1sZy0zLFxuICAucHktbGctMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucHItbGctMyxcbiAgLnB4LWxnLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGItbGctMyxcbiAgLnB5LWxnLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLWxnLTMsXG4gIC5weC1sZy0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbGctNCxcbiAgLnB5LWxnLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbGctNCxcbiAgLnB4LWxnLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy00LFxuICAucHktbGctNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1sZy00LFxuICAucHgtbGctNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTUsXG4gIC5weS1sZy01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1sZy01LFxuICAucHgtbGctNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy01LFxuICAucHktbGctNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbGctNSxcbiAgLnB4LWxnLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tdC1sZy1hdXRvLFxuICAubXktbGctYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy1hdXRvLFxuICAubXgtbGctYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLWF1dG8sXG4gIC5teS1sZy1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1sLWxnLWF1dG8sXG4gIC5teC1sZy1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAubS14bC0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuICAubXQteGwtMCxcbiAgLm15LXhsLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuICAubXIteGwtMCxcbiAgLm14LXhsLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0wLFxuICAubXkteGwtMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC0wLFxuICAubXgteGwtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAubS14bC0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQteGwtMSxcbiAgLm15LXhsLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXIteGwtMSxcbiAgLm14LXhsLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0xLFxuICAubXkteGwtMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC0xLFxuICAubXgteGwtMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubS14bC0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC14bC0yLFxuICAubXkteGwtMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLTIsXG4gIC5teC14bC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0yLFxuICAubXkteGwtMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXhsLTIsXG4gIC5teC14bC0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXhsLTMsXG4gIC5teS14bC0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLTMsXG4gIC5teC14bC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWIteGwtMyxcbiAgLm15LXhsLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWwteGwtMyxcbiAgLm14LXhsLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQteGwtNCxcbiAgLm15LXhsLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci14bC00LFxuICAubXgteGwtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWIteGwtNCxcbiAgLm15LXhsLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC00LFxuICAubXgteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLXhsLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC14bC01LFxuICAubXkteGwtNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tci14bC01LFxuICAubXgteGwtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXhsLTUsXG4gIC5teS14bC01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXhsLTUsXG4gIC5teC14bC01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuICAucHQteGwtMCxcbiAgLnB5LXhsLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnByLXhsLTAsXG4gIC5weC14bC0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTAsXG4gIC5weS14bC0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC0wLFxuICAucHgteGwtMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnAteGwtMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC14bC0xLFxuICAucHkteGwtMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHIteGwtMSxcbiAgLnB4LXhsLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGIteGwtMSxcbiAgLnB5LXhsLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXhsLTEsXG4gIC5weC14bC0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucC14bC0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQteGwtMixcbiAgLnB5LXhsLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHIteGwtMixcbiAgLnB4LXhsLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi14bC0yLFxuICAucHkteGwtMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC0yLFxuICAucHgteGwtMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC14bC0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXhsLTMsXG4gIC5weS14bC0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci14bC0zLFxuICAucHgteGwtMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi14bC0zLFxuICAucHkteGwtMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGwteGwtMyxcbiAgLnB4LXhsLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC14bC00LFxuICAucHkteGwtNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci14bC00LFxuICAucHgteGwtNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTQsXG4gIC5weS14bC00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXhsLTQsXG4gIC5weC14bC00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHQteGwtNSxcbiAgLnB5LXhsLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXhsLTUsXG4gIC5weC14bC01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTUsXG4gIC5weS14bC01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC01LFxuICAucHgteGwtNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm10LXhsLWF1dG8sXG4gIC5teS14bC1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLWF1dG8sXG4gIC5teC14bC1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWIteGwtYXV0byxcbiAgLm15LXhsLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWwteGwtYXV0byxcbiAgLm14LXhsLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfVxuXG4udGV4dC1qdXN0aWZ5IHtcbiAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfVxuXG4udGV4dC10cnVuY2F0ZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50ZXh0LWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAudGV4dC1zbS1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtc20tcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtc20tY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGV4dC1tZC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbWQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbWQtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAudGV4dC1sZy1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbGctcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbGctY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRleHQteGwtbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9XG4gIC50ZXh0LXhsLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC50ZXh0LXhsLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfVxuXG4udGV4dC1sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWNhcGl0YWxpemUge1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi5mb250LXdlaWdodC1saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDsgfVxuXG4uZm9udC13ZWlnaHQtbm9ybWFsIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB9XG5cbi5mb250LXdlaWdodC1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsgfVxuXG4uZm9udC1pdGFsaWMge1xuICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsgfVxuXG4udGV4dC13aGl0ZSB7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LXByaW1hcnk6Zm9jdXMsIGEudGV4dC1wcmltYXJ5OmhvdmVyIHtcbiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsgfVxuXG4udGV4dC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzg2OGU5NiAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1zZWNvbmRhcnk6Zm9jdXMsIGEudGV4dC1zZWNvbmRhcnk6aG92ZXIge1xuICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LXN1Y2Nlc3Mge1xuICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1zdWNjZXNzOmZvY3VzLCBhLnRleHQtc3VjY2Vzczpob3ZlciB7XG4gIGNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LWluZm86Zm9jdXMsIGEudGV4dC1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsgfVxuXG4udGV4dC13YXJuaW5nIHtcbiAgY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsgfVxuXG5hLnRleHQtd2FybmluZzpmb2N1cywgYS50ZXh0LXdhcm5pbmc6aG92ZXIge1xuICBjb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LWRhbmdlcjpmb2N1cywgYS50ZXh0LWRhbmdlcjpob3ZlciB7XG4gIGNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1saWdodDpmb2N1cywgYS50ZXh0LWxpZ2h0OmhvdmVyIHtcbiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsgfVxuXG4udGV4dC1kYXJrIHtcbiAgY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsgfVxuXG5hLnRleHQtZGFyazpmb2N1cywgYS50ZXh0LWRhcms6aG92ZXIge1xuICBjb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LW11dGVkIHtcbiAgY29sb3I6ICM4NjhlOTYgIWltcG9ydGFudDsgfVxuXG4udGV4dC1oaWRlIHtcbiAgZm9udDogMC8wIGE7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7IH1cblxuLnZpc2libGUge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7IH1cblxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB9XG5cbi8qIHN5c3RlbS1mb250LmNzcyB2MS4xLjAgfCBDQzAtMS4wIExpY2Vuc2UgfCBnaXRodWIuY29tL2pvbmF0aGFudG5lYWwvc3lzdGVtLWZvbnQtZmFjZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1MaWdodFwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTGlnaHRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0XCIpLCBsb2NhbChcIlVidW50dSBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIGxvY2FsKFwiRHJvaWRTYW5zXCIpLCBsb2NhbChcIlRhaG9tYVwiKTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LUxpZ2h0SXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1JdGFsaWNcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0IEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1MaWdodEl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtUmVndWxhclwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtUmVndWxhclwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUlcIiksIGxvY2FsKFwiVWJ1bnR1XCIpLCBsb2NhbChcIlJvYm90by1SZWd1bGFyXCIpLCBsb2NhbChcIkRyb2lkU2Fuc1wiKSwgbG9jYWwoXCJUYWhvbWFcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1JdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTWVkaXVtXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1NZWRpdW1QNFwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgU2VtaWJvbGRcIiksIGxvY2FsKFwiVWJ1bnR1IE1lZGl1bVwiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTWVkaXVtSXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1NZWRpdW1JdGFsaWNQNFwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgU2VtaWJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkXCIpLCBsb2NhbChcIlVidW50dSBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtQm9sZEl0YWxpY1wiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtQm9sZEl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiVWJ1bnR1IEJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJztcbiAgc3JjOiB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdFwiKTtcbiAgc3JjOiB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcImh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4wLjAvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5zdmcjZ2x5cGhpY29ucy1oYWxmbGluZ3NyZWd1bGFyXCIpIGZvcm1hdChcInN2Z1wiKTsgfVxuXG4uZ2x5cGhpY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDFweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7IH1cblxuLmdseXBoaWNvbi1oZWFydC1lbXB0eTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTE0M1wiOyB9XG5cbi5nbHlwaGljb24tb2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGUwMTNcIjsgfVxuXG4uZ2x5cGhpY29uLXJlbW92ZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTAxNFwiOyB9XG5cbi5nbHlwaGljb24taGVhcnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGUwMDVcIjsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDUuMnB4IDA7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcbiAgYm9yZGVyOiAwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGhlaWdodDogMTZweDtcbiAgd2lkdGg6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDEzcHg7XG4gIGJhY2tncm91bmQ6ICNlMTcwNzU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBtYXJnaW4tdG9wOiAtNy4xcHg7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDMxLCAwcHggMHB4IDBweCAjMDAwMDRiO1xuICBib3JkZXI6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcbiAgYmFja2dyb3VuZDogI2UxNzA3NTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LW1zLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tcy1maWxsLWxvd2VyIHtcbiAgYmFja2dyb3VuZDogcmdiYSg1MywgNTksIDYzLCAwLjMyKTtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtZmlsbC11cHBlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdGh1bWIge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDMxLCAwcHggMHB4IDBweCAjMDAwMDRiO1xuICBib3JkZXI6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcbiAgYmFja2dyb3VuZDogI2UxNzA3NTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDUuNnB4OyB9XG5cbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjpmb2N1czo6LW1zLWZpbGwtbG93ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotbXMtZmlsbC11cHBlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7IH1cblxuYm9keSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTIsIDI1MiwgMjUyLCAwLjI5KTtcbiAgY29sb3I6ICM1YTY1NmI7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIHN5c3RlbS11aSwgVGFob21hOyB9XG5cbi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiA1MHB4IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogIzgwMzNiMDtcbiAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICM3NWI3ZGQ7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAjMTI0NjY1LCAjODAzM2IwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb2xvcjogI2ZmZjsgfVxuICAuanVtYm90cm9uIGgxIHtcbiAgICBtYXJnaW46IDAgMCAyMHB4O1xuICAgIGNvbG9yOiAjNzViN2RkO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgZm9udC1zaXplOiA0OHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAtMnB4OyB9XG4gIC5qdW1ib3Ryb24gcCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NSk7IH1cbiAgLmp1bWJvdHJvbiAuY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLmp1bWJvdHJvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgd2lkdGg9JzY0JyBoZWlnaHQ9JzY0JyB2aWV3Qm94PScwIDAgNjQgNjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6bTAtMmMzLjMxNCAwIDYtMi42ODYgNi02cy0yLjY4Ni02LTYtNi02IDIuNjg2LTYgNiAyLjY4NiA2IDYgNnptMzMuNDE0LTZsNS45NS01Ljk1TDQ1Ljk1LjYzNiA0MCA2LjU4NiAzNC4wNS42MzYgMzIuNjM2IDIuMDUgMzguNTg2IDhsLTUuOTUgNS45NSAxLjQxNCAxLjQxNEw0MCA5LjQxNGw1Ljk1IDUuOTUgMS40MTQtMS40MTRMNDEuNDE0IDh6TTQwIDQ4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4em0wLTJjMy4zMTQgMCA2LTIuNjg2IDYtNnMtMi42ODYtNi02LTYtNiAyLjY4Ni02IDYgMi42ODYgNiA2IDZ6TTkuNDE0IDQwbDUuOTUtNS45NS0xLjQxNC0xLjQxNEw4IDM4LjU4NmwtNS45NS01Ljk1TC42MzYgMzQuMDUgNi41ODYgNDBsLTUuOTUgNS45NSAxLjQxNCAxLjQxNEw4IDQxLjQxNGw1Ljk1IDUuOTUgMS40MTQtMS40MTRMOS40MTQgNDB6JyBmaWxsPScjOUM5MkFDJyBmaWxsLW9wYWNpdHk9JzAuNCcgZmlsbC1ydWxlPSdldmVub2RkJy8+PC9zdmc+XCIpOyB9XG5cbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwOyB9XG5cbmNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLFxucHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSB7XG4gIGZvbnQtZmFtaWx5OiAnSW5jb25zb2xhdGEnO1xuICBmb250LXNpemU6IDE0cHg7IH1cblxuLmJvcmJvdCB7XG4gIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjZjNmM2YzOyB9XG5cbi5zLWhpZ2hsaWdodCB7XG4gIGNvbG9yOiAjZTE3MDc1OyB9XG5cbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4uY2FyZCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cbiAgLmNhcmQgLmNhcmQtaGVhZGVyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA0KTsgfVxuICAuY2FyZCAuY2FyZC1mb290ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmNmY2ZjOyB9XG5cbnByaXNtLWJsb2NrID4gcHJlIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuXG4uc2hvdy1jb2RlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDEycHg7IH1cbiAgLnNob3ctY29kZTpob3ZlciB7XG4gICAgY29sb3I6ICNlMTcwNzU7IH1cbiAgLnNob3ctY29kZSBpLm1kaSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gICAgY29sb3I6ICNlMTcwNzU7IH1cblxuc3Ryb25nIHtcbiAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YSc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICBmb250LXNpemU6IDEwMCU7XG4gIGNvbG9yOiAjMDAwO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG5cbi5idG4uYnRuLXNtYWxsIHtcbiAgcGFkZGluZzogMCAxMHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Myk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4uYnRuLmJ0bi1icm93c2VyIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiA5NSU7IH1cbiAgLmJ0bi5idG4tYnJvd3NlciBpbWcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH1cbiAgLmJ0bi5idG4tYnJvd3NlciBzcGFuIHtcbiAgICBmb250LWZhbWlseTogSW5jb25zb2xhdGE7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzk1YWNjNDsgfVxuXG4uYnRuLmJ0bi1mcmFtZXdvcmsge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDFlbTsgfVxuXG4uaGlnaGxpZ2h0IHtcbiAgY29sb3I6ICNlMTcwNzU7IH1cblxuZGl2I2Rpc3F1c190aHJlYWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGZkZmRmOyB9XG5cbmEuYnRuLmJ0bi1saW5rIHtcbiAgYmFja2dyb3VuZDogI2E2YjJiOTtcbiAgY29sb3I6ICNmZmY7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDsgfVxuICBhLmJ0bi5idG4tbGluay5mYWNlYm9vazpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNiNTk5ODsgfVxuICBhLmJ0bi5idG4tbGluay50d2l0dGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyOyB9XG4gIGEuYnRuLmJ0bi1saW5rLmxpbmtlZGluOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1OyB9XG4gIGEuYnRuLmJ0bi1saW5rLmdwbHVzOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQ0YjM5OyB9XG5cbi5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjZjJmNWZjO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RmZGZkZjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMXJlbTtcbiAgY29sb3I6ICM4OTkyYTY7XG4gIGZvbnQtc2l6ZTogOTAlOyB9XG4gIC5jYXJkLWluZm8gLm1kaSB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY29sb3I6ICM0ZjU2Njc7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cbiAgICAuY2FyZC1pbmZvIC5tZGk6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDsgfVxuXG4ubmF2LWxpbmsge1xuICBjb2xvcjogIzcyN2E4MTsgfVxuICAubmF2LWxpbmsgaS5tZGkge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgLm5hdi1saW5rOmhvdmVyIHtcbiAgICBjb2xvcjogI2UxNzA3NTsgfVxuXG5zcGFuLmNvbG9yLXByZXZpZXcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRjM2M3O1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBtYXJnaW46IDAgMnB4OyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5pbmZvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy53YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5kYW5nZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7IH1cblxuLm5vdGUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMCAxZW07XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjQpO1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkICNlMTcwNzU7IH1cblxuaDYge1xuICBmb250LXNpemU6IDE0cHg7IH1cblxuc2VjdGlvbi5zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogM2VtOyB9XG4gIHNlY3Rpb24uc2VjdGlvbiBhIHtcbiAgICBmb250LXdlaWdodDogNTAwOyB9XG5cbi5idG4tY29sbGFwc2Uge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGZkZmRmO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBmb250LXNpemU6IDFlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICM4MjhiOTA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07IH1cbiAgLmJ0bi1jb2xsYXBzZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgICBib3JkZXItY29sb3I6ICNlNmRmZGY7XG4gICAgY29sb3I6ICM5MGExYWQ7IH1cbiIsIkBtaXhpbiBob3ZlciB7XG4gIC8vIFRPRE86IHJlLWVuYWJsZSBhbG9uZyB3aXRoIG1xNC1ob3Zlci1zaGltXG4vLyAgQGlmICRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnkge1xuLy8gICAgLy8gU2VlIE1lZGlhIFF1ZXJpZXMgTGV2ZWwgNDogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL21lZGlhcXVlcmllcy8jaG92ZXJcbi8vICAgIC8vIEN1cnJlbnRseSBzaGltbWVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL21xNC1ob3Zlci1zaGltXG4vLyAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuLy8gICAgICAmOmhvdmVyIHsgQGNvbnRlbnQgfVxuLy8gICAgfVxuLy8gIH1cbi8vICBAZWxzZSB7XG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBJbmRlbnRhdGlvblxuICAgICY6aG92ZXIgeyBAY29udGVudCB9XG4vLyBzY3NzLWxpbnQ6ZW5hYmxlIEluZGVudGF0aW9uXG4vLyAgfVxufVxuXG5cbkBtaXhpbiBob3Zlci1mb2N1cyB7XG4gIEBpZiAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5IHtcbiAgICAmOmZvY3VzIHsgQGNvbnRlbnQgfVxuICAgIEBpbmNsdWRlIGhvdmVyIHsgQGNvbnRlbnQgfVxuICB9IEBlbHNlIHtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWhvdmVyLWZvY3VzIHtcbiAgQGlmICRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnkge1xuICAgICYsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudFxuICAgIH1cbiAgICBAaW5jbHVkZSBob3ZlciB7IEBjb250ZW50IH1cbiAgfSBAZWxzZSB7XG4gICAgJixcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gIEBpZiAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5IHtcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50XG4gICAgfVxuICAgIEBpbmNsdWRlIGhvdmVyIHsgQGNvbnRlbnQgfVxuICB9IEBlbHNlIHtcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBIZWFkaW5nc1xuLy9cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbn1cblxuaDEsIC5oMSB7IGZvbnQtc2l6ZTogJGgxLWZvbnQtc2l6ZTsgfVxuaDIsIC5oMiB7IGZvbnQtc2l6ZTogJGgyLWZvbnQtc2l6ZTsgfVxuaDMsIC5oMyB7IGZvbnQtc2l6ZTogJGgzLWZvbnQtc2l6ZTsgfVxuaDQsIC5oNCB7IGZvbnQtc2l6ZTogJGg0LWZvbnQtc2l6ZTsgfVxuaDUsIC5oNSB7IGZvbnQtc2l6ZTogJGg1LWZvbnQtc2l6ZTsgfVxuaDYsIC5oNiB7IGZvbnQtc2l6ZTogJGg2LWZvbnQtc2l6ZTsgfVxuXG4ubGVhZCB7XG4gIGZvbnQtc2l6ZTogJGxlYWQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG4uZGlzcGxheS0xIHtcbiAgZm9udC1zaXplOiAkZGlzcGxheTEtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5MS13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cbi5kaXNwbGF5LTIge1xuICBmb250LXNpemU6ICRkaXNwbGF5Mi1zaXplO1xuICBmb250LXdlaWdodDogJGRpc3BsYXkyLXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xufVxuLmRpc3BsYXktMyB7XG4gIGZvbnQtc2l6ZTogJGRpc3BsYXkzLXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTMtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAkZGlzcGxheTQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5NC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cblxuXG4vL1xuLy8gSG9yaXpvbnRhbCBydWxlc1xuLy9cblxuaHIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6ICRoci1ib3JkZXItd2lkdGggc29saWQgJGhyLWJvcmRlci1jb2xvcjtcbn1cblxuXG4vL1xuLy8gRW1waGFzaXNcbi8vXG5cbnNtYWxsLFxuLnNtYWxsIHtcbiAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbn1cblxubWFyayxcbi5tYXJrIHtcbiAgcGFkZGluZzogJG1hcmstcGFkZGluZztcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1hcmstYmc7XG59XG5cblxuLy9cbi8vIExpc3RzXG4vL1xuXG4ubGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQ7XG59XG5cbi8vIElubGluZSB0dXJucyBsaXN0IGl0ZW1zIGludG8gaW5saW5lLWJsb2NrXG4ubGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkO1xufVxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRsaXN0LWlubGluZS1wYWRkaW5nO1xuICB9XG59XG5cblxuLy9cbi8vIE1pc2Ncbi8vXG5cbi8vIEJ1aWxkcyBvbiBgYWJicmBcbi5pbml0aWFsaXNtIHtcbiAgZm9udC1zaXplOiA5MCU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEJsb2NrcXVvdGVzXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXI7XG4gIGZvbnQtc2l6ZTogJGJsb2NrcXVvdGUtZm9udC1zaXplO1xufVxuXG4uYmxvY2txdW90ZS1mb290ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiA4MCU7IC8vIGJhY2sgdG8gZGVmYXVsdCBmb250LXNpemVcbiAgY29sb3I6ICRibG9ja3F1b3RlLXNtYWxsLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMTQgXFwwMEEwXCI7IC8vIGVtIGRhc2gsIG5ic3BcbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiIsIi8vIElubGluZSBhbmQgYmxvY2sgY29kZSBzdHlsZXNcbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG59XG5cbi8vIElubGluZSBjb2RlXG5jb2RlIHtcbiAgcGFkZGluZzogJGNvZGUtcGFkZGluZy15ICRjb2RlLXBhZGRpbmcteDtcbiAgZm9udC1zaXplOiAkY29kZS1mb250LXNpemU7XG4gIGNvbG9yOiAkY29kZS1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFN0cmVhbWxpbmUgdGhlIHN0eWxlIHdoZW4gaW5zaWRlIGFuY2hvcnMgdG8gYXZvaWQgYnJva2VuIHVuZGVybGluZSBhbmQgbW9yZVxuICBhID4gJiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFVzZXIgaW5wdXQgdHlwaWNhbGx5IGVudGVyZWQgdmlhIGtleWJvYXJkXG5rYmQge1xuICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nLXkgJGNvZGUtcGFkZGluZy14O1xuICBmb250LXNpemU6ICRjb2RlLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICRrYmQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRrYmQtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRrYmQtYm94LXNoYWRvdyk7XG5cbiAga2JkIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICBmb250LXdlaWdodDogJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG4vLyBCbG9ja3Mgb2YgY29kZVxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogJGNvZGUtZm9udC1zaXplO1xuICBjb2xvcjogJHByZS1jb2xvcjtcblxuICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFnc1xuICBjb2RlIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG5cbi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAkcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xufVxuIiwiLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1c1xuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cbiIsIi8vIENvbnRhaW5lciB3aWR0aHNcbi8vXG4vLyBTZXQgdGhlIGNvbnRhaW5lciB3aWR0aCwgYW5kIG92ZXJyaWRlIGl0IGZvciBmaXhlZCBuYXZiYXJzIGluIG1lZGlhIHF1ZXJpZXMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gICAgQGluY2x1ZGUgbWFrZS1jb250YWluZXItbWF4LXdpZHRocygpO1xuICB9XG59XG5cbi8vIEZsdWlkIGNvbnRhaW5lclxuLy9cbi8vIFV0aWxpemVzIHRoZSBtaXhpbiBtZWFudCBmb3IgZml4ZWQgd2lkdGggY29udGFpbmVycywgYnV0IHdpdGggMTAwJSB3aWR0aCBmb3Jcbi8vIGZsdWlkLCBmdWxsIHdpZHRoIGxheW91dHMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cbn1cblxuLy8gUm93XG4vL1xuLy8gUm93cyBjb250YWluIGFuZCBjbGVhciB0aGUgZmxvYXRzIG9mIHlvdXIgY29sdW1ucy5cblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgLnJvdyB7XG4gICAgQGluY2x1ZGUgbWFrZS1yb3coKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgbmVnYXRpdmUgbWFyZ2luIGZyb20gZGVmYXVsdCAucm93LCB0aGVuIHRoZSBob3Jpem9udGFsIHBhZGRpbmdcbiAgLy8gZnJvbSBhbGwgaW1tZWRpYXRlIGNoaWxkcmVuIGNvbHVtbnMgKHRvIHByZXZlbnQgcnVuYXdheSBzdHlsZSBpbmhlcml0YW5jZSkuXG4gIC5uby1ndXR0ZXJzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgICA+IC5jb2wsXG4gICAgPiBbY2xhc3MqPVwiY29sLVwiXSB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBDb2x1bW5zXG4vL1xuLy8gQ29tbW9uIHN0eWxlcyBmb3Igc21hbGwgYW5kIGxhcmdlIGdyaWQgY29sdW1uc1xuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICBAaW5jbHVkZSBtYWtlLWdyaWQtY29sdW1ucygpO1xufVxuIiwiLy8vIEdyaWQgc3lzdGVtXG4vL1xuLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLlxuXG5AbWl4aW4gbWFrZS1jb250YWluZXIoKSB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIHBhZGRpbmctcmlnaHQ6ICgkZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTtcbiAgcGFkZGluZy1sZWZ0OiAgKCRncmlkLWd1dHRlci13aWR0aCAvIDIpO1xuICB3aWR0aDogMTAwJTtcbn1cblxuXG4vLyBGb3IgZWFjaCBicmVha3BvaW50LCBkZWZpbmUgdGhlIG1heGltdW0gd2lkdGggb2YgdGhlIGNvbnRhaW5lciBpbiBhIG1lZGlhIHF1ZXJ5XG5AbWl4aW4gbWFrZS1jb250YWluZXItbWF4LXdpZHRocygkbWF4LXdpZHRoczogJGNvbnRhaW5lci1tYXgtd2lkdGhzLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBlYWNoICRicmVha3BvaW50LCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkbWF4LXdpZHRocyB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBtYXgtd2lkdGg6ICRjb250YWluZXItbWF4LXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWFrZS1yb3coKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAoJGdyaWQtZ3V0dGVyLXdpZHRoIC8gLTIpO1xuICBtYXJnaW4tbGVmdDogICgkZ3JpZC1ndXR0ZXItd2lkdGggLyAtMik7XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1yZWFkeSgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBiZWNvbWluZyB0b28gbmFycm93IHdoZW4gYXQgc21hbGxlciBncmlkIHRpZXJzIGJ5XG4gIC8vIGFsd2F5cyBzZXR0aW5nIGB3aWR0aDogMTAwJTtgLiBUaGlzIHdvcmtzIGJlY2F1c2Ugd2UgdXNlIGBmbGV4YCB2YWx1ZXNcbiAgLy8gbGF0ZXIgb24gdG8gb3ZlcnJpZGUgdGhpcyBpbml0aWFsIHdpZHRoLlxuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4OyAvLyBQcmV2ZW50IGNvbGxhcHNpbmdcbiAgcGFkZGluZy1yaWdodDogKCRncmlkLWd1dHRlci13aWR0aCAvIDIpO1xuICBwYWRkaW5nLWxlZnQ6ICAoJGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7XG59XG5cbkBtaXhpbiBtYWtlLWNvbCgkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgZmxleDogMCAwIHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyk7XG4gIC8vIEFkZCBhIGBtYXgtd2lkdGhgIHRvIGVuc3VyZSBjb250ZW50IHdpdGhpbiBlYWNoIGNvbHVtbiBkb2VzIG5vdCBibG93IG91dFxuICAvLyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi4gQXBwbGllcyB0byBJRTEwKyBhbmQgRmlyZWZveC4gQ2hyb21lIGFuZCBTYWZhcmlcbiAgLy8gZG8gbm90IGFwcGVhciB0byByZXF1aXJlIHRoaXMuXG4gIG1heC13aWR0aDogcGVyY2VudGFnZSgkc2l6ZSAvICRjb2x1bW5zKTtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4xLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIDFweCwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW5mcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUpXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUpXG4gIH1cbn1cbiIsIi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIC8vIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgYnJlYWtwb2ludHNcbiAgJWdyaWQtY29sdW1uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMXB4OyAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBjb2xsYXBzaW5nIHdoZW4gZW1wdHlcbiAgICBwYWRkaW5nLXJpZ2h0OiAoJGd1dHRlciAvIDIpO1xuICAgIHBhZGRpbmctbGVmdDogICgkZ3V0dGVyIC8gMik7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG5cbiAgICAvLyBBbGxvdyBjb2x1bW5zIHRvIHN0cmV0Y2ggZnVsbCB3aWR0aCBiZWxvdyB0aGVpciBicmVha3BvaW50c1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgLmNvbCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgIEBleHRlbmQgJWdyaWQtY29sdW1uO1xuICAgICAgfVxuICAgIH1cbiAgICAuY29sI3skaW5maXh9LFxuICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICBAZXh0ZW5kICVncmlkLWNvbHVtbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIC8vIFByb3ZpZGUgYmFzaWMgYC5jb2wte2JwfWAgY2xhc3NlcyBmb3IgZXF1YWwtd2lkdGggZmxleGJveCBjb2x1bW5zXG4gICAgICAuY29sI3skaW5maXh9IHtcbiAgICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAuY29sI3skaW5maXh9LWF1dG8ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTsgLy8gUmVzZXQgZWFybGllciBncmlkIHRpZXJzXG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbCgkaSwgJGNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAub3JkZXIjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgIG9yZGVyOiAkaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2ljIEJvb3RzdHJhcCB0YWJsZVxuLy9cblxuLnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJnOyAvLyBSZXNldCBmb3IgbmVzdGluZyB3aXRoaW4gcGFyZW50cyB3aXRoIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBib3JkZXItdG9wOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0aGVhZCB0aCB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICBib3JkZXItYm90dG9tOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXItdG9wOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICAudGFibGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWJnO1xuICB9XG59XG5cblxuLy9cbi8vIENvbmRlbnNlZCB0YWJsZSB3LyBoYWxmIHBhZGRpbmdcbi8vXG5cbi50YWJsZS1zbSB7XG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZy1zbTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlcmVkIHZlcnNpb25cbi8vXG4vLyBBZGQgYm9yZGVycyBhbGwgYXJvdW5kIHRoZSB0YWJsZSBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbHVtbnMuXG5cbi50YWJsZS1ib3JkZXJlZCB7XG4gIGJvcmRlcjogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuXG4gIHRoLFxuICB0ZCB7XG4gICAgYm9yZGVyOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0aGVhZCB7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogKDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBaZWJyYS1zdHJpcGluZ1xuLy9cbi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpXG5cbi50YWJsZS1zdHJpcGVkIHtcbiAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWFjY2VudC1iZztcbiAgfVxufVxuXG5cbi8vIEhvdmVyIGVmZmVjdFxuLy9cbi8vIFBsYWNlZCBoZXJlIHNpbmNlIGl0IGhhcyB0byBjb21lIGFmdGVyIHRoZSBwb3RlbnRpYWwgemVicmEgc3RyaXBpbmdcblxuLnRhYmxlLWhvdmVyIHtcbiAgdGJvZHkgdHIge1xuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1ob3Zlci1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUYWJsZSBiYWNrZ3JvdW5kc1xuLy9cbi8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50XG4vLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgQGluY2x1ZGUgdGFibGUtcm93LXZhcmlhbnQoJGNvbG9yLCB0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsIC05KSk7XG59XG5cbkBpbmNsdWRlIHRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZSwgJHRhYmxlLWFjdGl2ZS1iZyk7XG5cblxuLy8gSW52ZXJzZSBzdHlsZXNcbi8vXG4vLyBTYW1lIHRhYmxlIG1hcmt1cCwgYnV0IGludmVydGVkIGNvbG9yIHNjaGVtZTogZGFyayBiYWNrZ3JvdW5kIGFuZCBsaWdodCB0ZXh0LlxuXG4udGhlYWQtaW52ZXJzZSB7XG4gIHRoIHtcbiAgICBjb2xvcjogJHRhYmxlLWludmVyc2UtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWludmVyc2UtYmc7XG4gIH1cbn1cblxuLnRoZWFkLWRlZmF1bHQge1xuICB0aCB7XG4gICAgY29sb3I6ICR0YWJsZS1oZWFkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLWJnO1xuICB9XG59XG5cbi50YWJsZS1pbnZlcnNlIHtcbiAgY29sb3I6ICR0YWJsZS1pbnZlcnNlLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1iZztcblxuICB0aCxcbiAgdGQsXG4gIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6ICR0YWJsZS1pbnZlcnNlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICYudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICYudGFibGUtc3RyaXBlZCB7XG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1hY2NlbnQtYmc7XG4gICAgfVxuICB9XG5cbiAgJi50YWJsZS1ob3ZlciB7XG4gICAgdGJvZHkgdHIge1xuICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1ob3Zlci1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBSZXNwb25zaXZlIHRhYmxlc1xuLy9cbi8vIEFkZCBgLnRhYmxlLXJlc3BvbnNpdmVgIHRvIGAudGFibGVgcyBhbmQgd2UnbGwgbWFrZSB0aGVtIG1vYmlsZSBmcmllbmRseSBieVxuLy8gZW5hYmxpbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuIE9ubHkgYXBwbGllcyA8NzY4cHguIEV2ZXJ5dGhpbmcgYWJvdmUgdGhhdFxuLy8gd2lsbCBkaXNwbGF5IG5vcm1hbGx5LlxuXG4udGFibGUtcmVzcG9uc2l2ZSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDA1N1xuXG4gICAgLy8gUHJldmVudCBkb3VibGUgYm9yZGVyIG9uIGhvcml6b250YWwgc2Nyb2xsIGR1ZSB0byB1c2Ugb2YgYGRpc3BsYXk6IGJsb2NrO2BcbiAgICAmLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFRhYmxlc1xuXG5AbWl4aW4gdGFibGUtcm93LXZhcmlhbnQoJHN0YXRlLCAkYmFja2dyb3VuZCkge1xuICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudFxuICAvLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAmLFxuICAgID4gdGgsXG4gICAgPiB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZXMgZm9yIGAudGFibGUtaG92ZXJgXG4gIC8vIE5vdGU6IHRoaXMgaXMgbm90IGF2YWlsYWJsZSBmb3IgY2VsbHMgb3Igcm93cyB3aXRoaW4gYHRoZWFkYCBvciBgdGZvb3RgLlxuICAudGFibGUtaG92ZXIge1xuICAgICRob3Zlci1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDUlKTtcblxuICAgIC50YWJsZS0jeyRzdGF0ZX0ge1xuICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICA+IHRkLFxuICAgICAgICA+IHRoIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQm9vdHN0cmFwIGZ1bmN0aW9uc1xuLy9cbi8vIFV0aWxpdHkgbWl4aW5zIGFuZCBmdW5jdGlvbnMgZm9yIGV2YWx1dGF0aW5nIHNvdXJjZSBjb2RlIGFjcm9zcyBvdXIgdmFyaWFibGVzLCBtYXBzLCBhbmQgbWl4aW5zLlxuXG4vLyBBc2NlbmRpbmdcbi8vIFVzZWQgdG8gZXZhbHVhdGUgU2FzcyBtYXBzIGxpa2Ugb3VyIGdyaWQgYnJlYWtwb2ludHMuXG5AbWl4aW4gX2Fzc2VydC1hc2NlbmRpbmcoJG1hcCwgJG1hcC1uYW1lKSB7XG4gICRwcmV2LWtleTogbnVsbDtcbiAgJHByZXYtbnVtOiBudWxsO1xuICBAZWFjaCAka2V5LCAkbnVtIGluICRtYXAge1xuICAgIEBpZiAkcHJldi1udW0gPT0gbnVsbCB7XG4gICAgICAvLyBEbyBub3RoaW5nXG4gICAgfSBAZWxzZSBpZiBub3QgY29tcGFyYWJsZSgkcHJldi1udW0sICRudW0pIHtcbiAgICAgIEB3YXJuIFwiUG90ZW50aWFsbHkgaW52YWxpZCB2YWx1ZSBmb3IgI3skbWFwLW5hbWV9OiBUaGlzIG1hcCBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciwgYnV0IGtleSAnI3ska2V5fScgaGFzIHZhbHVlICN7JG51bX0gd2hvc2UgdW5pdCBtYWtlcyBpdCBpbmNvbXBhcmFibGUgdG8gI3skcHJldi1udW19LCB0aGUgdmFsdWUgb2YgdGhlIHByZXZpb3VzIGtleSAnI3skcHJldi1rZXl9JyAhXCI7XG4gICAgfSBAZWxzZSBpZiAkcHJldi1udW0gPj0gJG51bSB7XG4gICAgICBAd2FybiBcIkludmFsaWQgdmFsdWUgZm9yICN7JG1hcC1uYW1lfTogVGhpcyBtYXAgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIsIGJ1dCBrZXkgJyN7JGtleX0nIGhhcyB2YWx1ZSAjeyRudW19IHdoaWNoIGlzbid0IGdyZWF0ZXIgdGhhbiAjeyRwcmV2LW51bX0sIHRoZSB2YWx1ZSBvZiB0aGUgcHJldmlvdXMga2V5ICcjeyRwcmV2LWtleX0nICFcIjtcbiAgICB9XG4gICAgJHByZXYta2V5OiAka2V5O1xuICAgICRwcmV2LW51bTogJG51bTtcbiAgfVxufVxuXG4vLyBTdGFydHMgYXQgemVyb1xuLy8gQW5vdGhlciBncmlkIG1peGluIHRoYXQgZW5zdXJlcyB0aGUgbWluLXdpZHRoIG9mIHRoZSBsb3dlc3QgYnJlYWtwb2ludCBzdGFydHMgYXQgMC5cbkBtaXhpbiBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRtYXApIHtcbiAgJHZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgJGZpcnN0LXZhbHVlOiBudGgoJHZhbHVlcywgMSk7XG4gIEBpZiAkZmlyc3QtdmFsdWUgIT0gMCB7XG4gICAgQHdhcm4gXCJGaXJzdCBicmVha3BvaW50IGluIGAkZ3JpZC1icmVha3BvaW50c2AgbXVzdCBzdGFydCBhdCAwLCBidXQgc3RhcnRzIGF0ICN7JGZpcnN0LXZhbHVlfS5cIjtcbiAgfVxufVxuXG4vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG4vLyBVc2VkIG9uIG91ciBTVkcgaWNvbiBiYWNrZ3JvdW5kcyBmb3IgY3VzdG9tIGZvcm1zLlxuLy9cbi8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxuLy8gQHBhcmFtIHtTdHJpbmd9ICRyZXBsYWNlICgnJykgLSBOZXcgdmFsdWVcbi8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiBcIlwiKSB7XG4gICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuLy8gQ29sb3IgY29udHJhc3RcbkBtaXhpbiBjb2xvci15aXEoJGNvbG9yKSB7XG4gICRyOiByZWQoJGNvbG9yKTtcbiAgJGc6IGdyZWVuKCRjb2xvcik7XG4gICRiOiBibHVlKCRjb2xvcik7XG5cbiAgJHlpcTogKCgkciAqIDI5OSkgKyAoJGcgKiA1ODcpICsgKCRiICogMTE0KSkgLyAxMDAwO1xuXG4gIEBpZiAoJHlpcSA+PSAxNTApIHtcbiAgICBjb2xvcjogIzExMTtcbiAgfSBAZWxzZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLy8gUmV0cmVpdmUgY29sb3IgU2FzcyBtYXBzXG5AZnVuY3Rpb24gY29sb3IoJGtleTogXCJibHVlXCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRjb2xvcnMsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gdGhlbWUtY29sb3IoJGtleTogXCJwcmltYXJ5XCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1jb2xvcnMsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gZ3JheXNjYWxlKCRrZXk6IFwiMTAwXCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRncmF5cywgJGtleSk7XG59XG5cbi8vIFJlcXVlc3QgYSB0aGVtZSBjb2xvciBsZXZlbFxuQGZ1bmN0aW9uIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvci1uYW1lOiBcInByaW1hcnlcIiwgJGxldmVsOiAwKSB7XG4gICRjb2xvcjogdGhlbWUtY29sb3IoJGNvbG9yLW5hbWUpO1xuICAkY29sb3ItYmFzZTogaWYoJGxldmVsID4gMCwgIzAwMCwgI2ZmZik7XG5cbiAgQGlmICRsZXZlbCA8IDAge1xuICAgIC8vIExpZ2h0ZXIgdmFsdWVzIG5lZWQgYSBxdWljayBkb3VibGUgbmVnYXRpdmUgZm9yIHRoZSBTYXNzIG1hdGggdG8gd29ya1xuICAgIEByZXR1cm4gbWl4KCRjb2xvci1iYXNlLCAkY29sb3IsICRsZXZlbCAqIC0xICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiBtaXgoJGNvbG9yLWJhc2UsICRjb2xvciwgJGxldmVsICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnRcblxuLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogJGJ0bi1mb250LXdlaWdodDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYm9yZGVyOiAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGlucHV0LWJ0bi1wYWRkaW5nLXksICRpbnB1dC1idG4tcGFkZGluZy14LCAkZm9udC1zaXplLWJhc2UsICRpbnB1dC1idG4tbGluZS1oZWlnaHQsICRidG4tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGJ0bi10cmFuc2l0aW9uKTtcblxuICAvLyBTaGFyZSBob3ZlciBhbmQgZm9jdXMgc3R5bGVzXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkYnRuLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogLjY1O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cblxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWZvY3VzLWJveC1zaGFkb3csICRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbi8vIEZ1dHVyZS1wcm9vZiBkaXNhYmxpbmcgb2YgY2xpY2tzIG9uIGA8YT5gIGVsZW1lbnRzXG5hLmJ0bi5kaXNhYmxlZCxcbmZpZWxkc2V0W2Rpc2FibGVkXSBhLmJ0biB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgYnV0dG9uc1xuLy9cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkdmFsdWUsICR2YWx1ZSk7XG4gIH1cbn1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tb3V0bGluZS0jeyRjb2xvcn0ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJHZhbHVlLCAjZmZmKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBMaW5rIGJ1dHRvbnNcbi8vXG5cbi8vIE1ha2UgYSBidXR0b24gbG9vayBhbmQgYmVoYXZlIGxpa2UgYSBsaW5rXG4uYnRuLWxpbmsge1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICYsXG4gICY6YWN0aXZlLFxuICAmLmFjdGl2ZSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxuICAmLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJGxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1ob3Zlci1kZWNvcmF0aW9uO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIEJ1dHRvbiBTaXplc1xuLy9cblxuLmJ0bi1sZyB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRpbnB1dC1idG4tcGFkZGluZy15LWxnLCAkaW5wdXQtYnRuLXBhZGRpbmcteC1sZywgJGZvbnQtc2l6ZS1sZywgJGxpbmUtaGVpZ2h0LWxnLCAkYnRuLWJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4uYnRuLXNtIHtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGlucHV0LWJ0bi1wYWRkaW5nLXktc20sICRpbnB1dC1idG4tcGFkZGluZy14LXNtLCAkZm9udC1zaXplLXNtLCAkbGluZS1oZWlnaHQtc20sICRidG4tYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cblxuLy9cbi8vIEJsb2NrIGJ1dHRvblxuLy9cblxuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLy8gVmVydGljYWxseSBzcGFjZSBvdXQgbXVsdGlwbGUgYmxvY2sgYnV0dG9uc1xuLmJ0bi1ibG9jayArIC5idG4tYmxvY2sge1xuICBtYXJnaW4tdG9wOiAkYnRuLWJsb2NrLXNwYWNpbmcteTtcbn1cblxuLy8gU3BlY2lmaWNpdHkgb3ZlcnJpZGVzXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXSB7XG4gICYuYnRuLWJsb2NrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLy8gQnV0dG9uIHZhcmlhbnRzXG4vL1xuLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXG5cbkBtaXhpbiBidXR0b24tdmFyaWFudCgkYmFja2dyb3VuZCwgJGJvcmRlciwgJGFjdGl2ZS1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDcuNSUpLCAkYWN0aXZlLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEwJSkpIHtcbiAgQGluY2x1ZGUgY29sb3IteWlxKCRiYWNrZ3JvdW5kKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWJveC1zaGFkb3cpO1xuXG4gICY6aG92ZXIge1xuICAgIEBpbmNsdWRlIGNvbG9yLXlpcSgkYmFja2dyb3VuZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1ib3JkZXI7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkYnRuLWJveC1zaGFkb3csIDAgMCAwIDNweCByZ2JhKCRib3JkZXIsIC41KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKCRib3JkZXIsIC41KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyO1xuICB9XG5cbiAgJjphY3RpdmUsXG4gICYuYWN0aXZlLFxuICAuc2hvdyA+ICYuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBncmFkaWVudCBmb3IgdGhlIHByZXNzZWQvYWN0aXZlIHN0YXRlXG4gICAgYm9yZGVyLWNvbG9yOiAkYWN0aXZlLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24tb3V0bGluZS12YXJpYW50KCRjb2xvciwgJGNvbG9yLWhvdmVyOiAjZmZmKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICBAaW5jbHVkZSBob3ZlciB7XG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgkY29sb3IsIC41KTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUsXG4gIC5zaG93ID4gJi5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vIEJ1dHRvbiBzaXplc1xuQG1peGluIGJ1dHRvbi1zaXplKCRwYWRkaW5nLXksICRwYWRkaW5nLXgsICRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJGJvcmRlci1yYWRpdXMpIHtcbiAgcGFkZGluZzogJHBhZGRpbmcteSAkcGFkZGluZy14O1xuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xufVxuIiwiQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24uLi4pIHtcbiAgQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID09IDAge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb24tYmFzZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiLmZhZGUge1xuICBvcGFjaXR5OiAwO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWZhZGUpO1xuXG4gICYuc2hvdyB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4uY29sbGFwc2Uge1xuICBkaXNwbGF5OiBub25lO1xuICAmLnNob3cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbnRyIHtcbiAgJi5jb2xsYXBzZS5zaG93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gIH1cbn1cblxudGJvZHkge1xuICAmLmNvbGxhcHNlLnNob3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDtcbiAgfVxufVxuXG4uY29sbGFwc2luZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWNvbGxhcHNlKTtcbn1cbiIsIi8vIFRoZSBkcm9wZG93biB3cmFwcGVyIChgPGRpdj5gKVxuLmRyb3B1cCxcbi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIC8vIEdlbmVyYXRlIHRoZSBjYXJldCBhdXRvbWF0aWNhbGx5XG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAkY2FyZXQtd2lkdGggKiAuODU7XG4gICAgdmVydGljYWwtYWxpZ246ICRjYXJldC13aWR0aCAqIC44NTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZDtcbiAgICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgJjplbXB0eTo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KVxuLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LlxuLmRyb3B1cCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206ICRkcm9wZG93bi1zcGFjZXI7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgZHJvcGRvd24gbWVudVxuLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1kcm9wZG93bjtcbiAgZGlzcGxheTogbm9uZTsgLy8gbm9uZSBieSBkZWZhdWx0LCBidXQgYmxvY2sgb24gXCJvcGVuXCIgb2YgdGhlIG1lbnVcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1pbi13aWR0aDogJGRyb3Bkb3duLW1pbi13aWR0aDtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmcteSAwO1xuICBtYXJnaW46ICRkcm9wZG93bi1zcGFjZXIgMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlOyAvLyBSZWRlY2xhcmUgYmVjYXVzZSBuZXN0aW5nIGNhbiBjYXVzZSBpbmhlcml0YW5jZSBpc3N1ZXNcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBFbnN1cmVzIHByb3BlciBhbGlnbm1lbnQgaWYgcGFyZW50IGhhcyBpdCBjaGFuZ2VkIChlLmcuLCBtb2RhbCBmb290ZXIpXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iZztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyLXdpZHRoIHNvbGlkICRkcm9wZG93bi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRkcm9wZG93bi1ib3gtc2hhZG93KTtcbn1cblxuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBgPGhyPmApIHdpdGhpbiB0aGUgZHJvcGRvd25cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgQGluY2x1ZGUgbmF2LWRpdmlkZXIoJGRyb3Bkb3duLWRpdmlkZXItYmcpO1xufVxuXG4vLyBMaW5rcywgYnV0dG9ucywgYW5kIG1vcmUgd2l0aGluIHRoZSBkcm9wZG93biBtZW51XG4vL1xuLy8gYDxidXR0b24+YC1zcGVjaWZpYyBzdHlsZXMgYXJlIGRlbm90ZWQgd2l0aCBgLy8gRm9yIDxidXR0b24+c2Bcbi5kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHNcbiAgcGFkZGluZzogJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy15ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDtcbiAgY2xlYXI6IGJvdGg7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBwcmV2ZW50IGxpbmtzIGZyb20gcmFuZG9tbHkgYnJlYWtpbmcgb250byBuZXcgbGluZXNcbiAgYmFja2dyb3VuZDogbm9uZTsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIGJvcmRlcjogMDsgLy8gRm9yIGA8YnV0dG9uPmBzXG5cbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWxpbmstaG92ZXItYmc7XG4gIH1cblxuICAmLmFjdGl2ZSxcbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZztcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gT3BlbiBzdGF0ZSBmb3IgdGhlIGRyb3Bkb3duXG4uc2hvdyB7XG4gIC8vIFJlbW92ZSB0aGUgb3V0bGluZSB3aGVuIDpmb2N1cyBpcyB0cmlnZ2VyZWRcbiAgPiBhIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi5kcm9wZG93bi1tZW51LnNob3cge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLy8gRHJvcGRvd24gc2VjdGlvbiBoZWFkZXJzXG4uZHJvcGRvd24taGVhZGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nLXkgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBmb3IgdXNlIHdpdGggaGVhZGluZyBlbGVtZW50c1xuICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gIGNvbG9yOiAkZHJvcGRvd24taGVhZGVyLWNvbG9yO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBhcyB3aXRoID4gbGkgPiBhXG59XG4iLCIvLyBIb3Jpem9udGFsIGRpdmlkZXJzXG4vL1xuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIGRyb3Bkb3ducyBhbmQgbmF2IGxpc3RzXG5cbkBtaXhpbiBuYXYtZGl2aWRlcigkY29sb3I6ICNlNWU1ZTUpIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46ICgkc3BhY2VyIC8gMikgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvcjtcbn1cbiIsIi8vIHNjc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vIE1ha2UgdGhlIGRpdiBiZWhhdmUgbGlrZSBhIGJ1dHRvblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBtYXRjaCAuYnRuIGFsaWdubWVudCBnaXZlbiBmb250LXNpemUgaGFjayBhYm92ZVxuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAvLyBCcmluZyB0aGUgaG92ZXIsIGZvY3VzZWQsIGFuZCBcImFjdGl2ZVwiIGJ1dHRvbnMgdG8gdGhlIGZyb250IHRvIG92ZXJsYXlcbiAgICAvLyB0aGUgYm9yZGVycyBwcm9wZXJseVxuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUsXG4gICAgJi5hY3RpdmUge1xuICAgICAgei1pbmRleDogMjtcbiAgICB9XG4gIH1cblxuICAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzIHdoZW4gYnV0dG9ucyBhcmUgbmV4dCB0byBlYWNoIG90aGVyXG4gIC5idG4gKyAuYnRuLFxuICAuYnRuICsgLmJ0bi1ncm91cCxcbiAgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHtcbiAgICBtYXJnaW4tbGVmdDogLSRpbnB1dC1idG4tYm9yZGVyLXdpZHRoO1xuICB9XG59XG5cbi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXJcbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4vLyBTZXQgY29ybmVycyBpbmRpdmlkdWFsIGJlY2F1c2Ugc29tZXRpbWVzIGEgc2luZ2xlIGJ1dHRvbiBjYW4gYmUgaW4gYSAuYnRuLWdyb3VwIGFuZCB3ZSBuZWVkIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQgdG8gYm90aCBtYXRjaFxuLmJ0bi1ncm91cCA+IC5idG46Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tbGVmdDogMDtcblxuICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuICB9XG59XG4vLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0XG4uYnRuLWdyb3VwID4gLmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmJ0bi1ncm91cCA+IC5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG5cbi8vIEN1c3RvbSBlZGl0cyBmb3IgaW5jbHVkaW5nIGJ0bi1ncm91cHMgd2l0aGluIGJ0bi1ncm91cHMgKHVzZWZ1bCBmb3IgaW5jbHVkaW5nIGRyb3Bkb3duIGJ1dHRvbnMgd2l0aGluIGEgYnRuLWdyb3VwKVxuLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAge1xuICBmbG9hdDogbGVmdDtcbn1cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkge1xuICA+IC5idG46bGFzdC1jaGlsZCxcbiAgPiAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuICB9XG59XG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcbn1cblxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi5cblxuLmJ0bi1ncm91cC1zbSA+IC5idG4geyBAZXh0ZW5kIC5idG4tc207IH1cbi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgQGV4dGVuZCAuYnRuLWxnOyB9XG5cblxuLy9cbi8vIFNwbGl0IGJ1dHRvbiBkcm9wZG93bnNcbi8vXG5cbi5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXggKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXggKiAuNzU7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gKiAuNzU7XG59XG5cbi5idG4tbGcgKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgKiAuNzU7XG59XG5cblxuLy8gVGhlIGNsaWNrYWJsZSBidXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBtZW51XG4vLyBTZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlXG4uYnRuLWdyb3VwLnNob3cgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1hY3RpdmUtYm94LXNoYWRvdyk7XG5cbiAgLy8gU2hvdyBubyBzaGFkb3cgZm9yIGAuYnRuLWxpbmtgIHNpbmNlIGl0IGhhcyBubyBvdGhlciBidXR0b24gc3R5bGVzLlxuICAmLmJ0bi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9XG59XG5cblxuLy9cbi8vIFZlcnRpY2FsIGJ1dHRvbiBncm91cHNcbi8vXG5cbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIC5idG4sXG4gIC5idG4tZ3JvdXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgPiAuYnRuICsgLmJ0bixcbiAgPiAuYnRuICsgLmJ0bi1ncm91cCxcbiAgPiAuYnRuLWdyb3VwICsgLmJ0bixcbiAgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7XG4gICAgbWFyZ2luLXRvcDogLSRpbnB1dC1idG4tYm9yZGVyLXdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgJjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG4gICY6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7XG4gIH1cbiAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbiAgfVxufVxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gID4gLmJ0bjpsYXN0LWNoaWxkLFxuICA+IC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKDApO1xuICB9XG59XG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xufVxuXG5cbi8vIENoZWNrYm94IGFuZCByYWRpbyBvcHRpb25zXG4vL1xuLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgYnJvd3NlcidzIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFjaywgcG93ZXJlZCBieSB0aGVcbi8vIGByZXF1aXJlZGAgYXR0cmlidXRlLCB3ZSBoYXZlIHRvIFwiaGlkZVwiIHRoZSBpbnB1dHMgdmlhIGBjbGlwYC4gV2UgY2Fubm90IHVzZVxuLy8gYGRpc3BsYXk6IG5vbmU7YCBvciBgdmlzaWJpbGl0eTogaGlkZGVuO2AgYXMgdGhhdCBhbHNvIGhpZGVzIHRoZSBwb3BvdmVyLlxuLy8gU2ltcGx5IHZpc3VhbGx5IGhpZGluZyB0aGUgaW5wdXRzIHZpYSBgb3BhY2l0eWAgd291bGQgbGVhdmUgdGhlbSBjbGlja2FibGUgaW5cbi8vIGNlcnRhaW4gY2FzZXMgd2hpY2ggaXMgcHJldmVudGVkIGJ5IHVzaW5nIGBjbGlwYCBhbmQgYHBvaW50ZXItZXZlbnRzYC5cbi8vIFRoaXMgd2F5LCB3ZSBlbnN1cmUgYSBET00gZWxlbWVudCBpcyB2aXNpYmxlIHRvIHBvc2l0aW9uIHRoZSBwb3BvdmVyIGZyb20uXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEyNzk0IGFuZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTQ1NTkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0ge1xuICA+IC5idG4sXG4gID4gLmJ0bi1ncm91cCA+IC5idG4ge1xuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY2xpcDogcmVjdCgwLDAsMCwwKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC5mb3JtLWNvbnRyb2wge1xuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbnB1dCBpcyBhbHdheXMgYWJvdmUgdGhlICphcHBlbmRlZCogYWRkb24gYnV0dG9uIGZvclxuICAgIC8vIHByb3BlciBib3JkZXIgY29sb3JzLlxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIC8vIEFkZCB3aWR0aCAxJSBhbmQgZmxleC1iYXNpcyBhdXRvIHRvIGVuc3VyZSB0aGF0IGJ1dHRvbiB3aWxsIG5vdCB3cmFwIG91dFxuICAgIC8vIHRoZSBjb2x1bW4uIEFwcGxpZXMgdG8gSUUgRWRnZSsgYW5kIEZpcmVmb3guIENocm9tZSBkb2VzIG5vdCByZXF1aXJlIHRoaXMuXG4gICAgd2lkdGg6IDElO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAvLyBCcmluZyB0aGUgXCJhY3RpdmVcIiBmb3JtIGNvbnRyb2wgdG8gdGhlIGZyb250XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgICAgIHotaW5kZXg6IDM7XG4gICAgfVxuICB9XG59XG5cbi5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1idG4sXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7XG4gIC8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgY29udGVudCBvZiB0aGUgYWRkb25zIHdpdGhpbiB0aGUgaW5wdXQgZ3JvdXBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gIH1cbn1cblxuLmlucHV0LWdyb3VwLWFkZG9uLFxuLmlucHV0LWdyb3VwLWJ0biB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8vIE1hdGNoIHRoZSBpbnB1dHNcbn1cblxuXG4vLyBTaXppbmcgb3B0aW9uc1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXJcbi8vIG1hbmlwdWxhdGlvbi5cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHtcbiAgQGV4dGVuZCAuZm9ybS1jb250cm9sLWxnO1xufVxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHtcbiAgQGV4dGVuZCAuZm9ybS1jb250cm9sLXNtO1xufVxuXG5cbi8vXG4vLyBUZXh0IGlucHV0IGdyb3Vwc1xuLy9cblxuLmlucHV0LWdyb3VwLWFkZG9uIHtcbiAgcGFkZGluZzogJGlucHV0LWJ0bi1wYWRkaW5nLXkgJGlucHV0LWJ0bi1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIEFsbG93IHVzZSBvZiA8bGFiZWw+IGVsZW1lbnRzIGJ5IG92ZXJyaWRpbmcgb3VyIGRlZmF1bHQgbWFyZ2luLWJvdHRvbVxuICBmb250LXNpemU6ICRmb250LXNpemUtYmFzZTsgLy8gTWF0Y2ggaW5wdXRzXG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWJ0bi1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZ3JvdXAtYWRkb24tYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gU2l6aW5nXG4gICYuZm9ybS1jb250cm9sLXNtIHtcbiAgICBwYWRkaW5nOiAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbTtcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1sZyB7XG4gICAgcGFkZGluZzogJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGc7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMtbGcpO1xuICB9XG5cbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnRcbiAgLy8gTnVrZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBjaGVja2JveGVzIGFuZCByYWRpb3MgdG8gdmVydGljYWxseSBjZW50ZXIgd2l0aGluLlxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAvLyBzY3NzLWxpbnQ6ZW5hYmxlIFF1YWxpZnlpbmdFbGVtZW50XG59XG5cblxuLy9cbi8vIFJlc2V0IHJvdW5kZWQgY29ybmVyc1xuLy9cblxuLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmxhc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bixcbi5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmRyb3Bkb3duLXRvZ2dsZSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xufVxuLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItcmlnaHQ6IDA7XG59XG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUsXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG4uZm9ybS1jb250cm9sICsgLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgYm9yZGVyLWxlZnQ6IDA7XG59XG5cbi8vXG4vLyBCdXR0b24gaW5wdXQgZ3JvdXBzXG4vL1xuXG4uaW5wdXQtZ3JvdXAtYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBKYW5raWx5IHByZXZlbnQgaW5wdXQgYnV0dG9uIGdyb3VwcyBmcm9tIHdyYXBwaW5nIHdpdGggYHdoaXRlLXNwYWNlYCBhbmRcbiAgLy8gYGZvbnQtc2l6ZWAgaW4gY29tYmluYXRpb24gd2l0aCBgaW5saW5lLWJsb2NrYCBvbiBidXR0b25zLlxuICBmb250LXNpemU6IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBzcGFjaW5nLCBwb3NpdGlvbiBmb3IgYnJpbmdpbmcgaG92ZXJlZC9mb2N1c2VkL2FjdGl2ZWRcbiAgLy8gZWxlbWVudCBhYm92ZSB0aGUgc2libGluZ3MuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgYm9yZGVyOiAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCBzb2xpZCAkaW5wdXQtZ3JvdXAtYnRuLWJvcmRlci1jb2xvcjtcblxuICAgICsgLmJ0biB7XG4gICAgICBtYXJnaW4tbGVmdDogKC0kaW5wdXQtYnRuLWJvcmRlci13aWR0aCk7XG4gICAgfVxuXG4gICAgLy8gQnJpbmcgdGhlIFwiYWN0aXZlXCIgYnV0dG9uIHRvIHRoZSBmcm9udFxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gICAgICB6LWluZGV4OiAzO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5lZ2F0aXZlIG1hcmdpbiB0byBvbmx5IGhhdmUgYSBzaW5nbGUsIHNoYXJlZCBib3JkZXIgYmV0d2VlbiB0aGUgdHdvXG4gICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgPiAuYnRuLFxuICAgID4gLmJ0bi1ncm91cCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICgtJGlucHV0LWJ0bi1ib3JkZXItd2lkdGgpO1xuICAgIH1cbiAgfVxuICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICA+IC5idG4sXG4gICAgPiAuYnRuLWdyb3VwIHtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgICBtYXJnaW4tbGVmdDogKC0kaW5wdXQtYnRuLWJvcmRlci13aWR0aCk7XG4gICAgICAvLyBCZWNhdXNlIHNwZWNpZmljaXR5XG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cy1hY3RpdmUge1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUHJvcGVydHlDb3VudCwgVmVuZG9yUHJlZml4XG5cbi8vIEVtYmVkZGVkIGljb25zIGZyb20gT3BlbiBJY29uaWMuXG4vLyBSZWxlYXNlZCB1bmRlciBNSVQgYW5kIGNvcHlyaWdodCAyMDE0IFdheWJ1cnkuXG4vLyBodHRwczovL3VzZWljb25pYy5jb20vb3BlblxuXG5cbi8vIENoZWNrYm94ZXMgYW5kIHJhZGlvc1xuLy9cbi8vIEJhc2UgY2xhc3MgdGFrZXMgY2FyZSBvZiBhbGwgdGhlIGtleSBiZWhhdmlvcmFsIGFzcGVjdHMuXG5cbi5jdXN0b20tY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIG1pbi1oZWlnaHQ6ICgxcmVtICogJGxpbmUtaGVpZ2h0LWJhc2UpO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tY29udHJvbC1ndXR0ZXI7XG4gIG1hcmdpbi1yaWdodDogJGN1c3RvbS1jb250cm9sLXNwYWNlci14O1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IC0xOyAvLyBQdXQgdGhlIGlucHV0IGJlaGluZCB0aGUgbGFiZWwgc28gaXQgZG9lc24ndCBvdmVybGF5IHRleHRcbiAgb3BhY2l0eTogMDtcblxuICAmOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1iZztcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICAvLyB0aGUgbWl4aW4gaXMgbm90IHVzZWQgaGVyZSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZmVlZGJhY2tcbiAgICBib3gtc2hhZG93OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAmOmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZztcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtZGVzY3JpcHRpb24ge1xuICAgICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1kZXNjcmlwdGlvbi1kaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ3VzdG9tIGluZGljYXRvclxuLy9cbi8vIEdlbmVyYXRlcyBhIHNoYWRvdyBlbGVtZW50IHRvIGNyZWF0ZSBvdXIgbWFrZXNoaWZ0IGNoZWNrYm94L3JhZGlvIGJhY2tncm91bmQuXG5cbi5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogKCgkbGluZS1oZWlnaHQtYmFzZSAtICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyKTtcbiAgbGVmdDogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gIGhlaWdodDogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZy1zaXplO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdyk7XG59XG5cbi8vIENoZWNrYm94ZXNcbi8vXG4vLyBUd2VhayBqdXN0IGEgZmV3IHRoaW5ncyBmb3IgY2hlY2tib3hlcy5cblxuLmN1c3RvbS1jaGVja2JveCB7XG4gIC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDtcbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbi8vIFJhZGlvc1xuLy9cbi8vIFR3ZWFrIGp1c3QgYSBmZXcgdGhpbmdzIGZvciByYWRpb3MuXG5cbi5jdXN0b20tcmFkaW8ge1xuICAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1ib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1pY29uLWNoZWNrZWQ7XG4gIH1cbn1cblxuXG4vLyBMYXlvdXQgb3B0aW9uc1xuLy9cbi8vIEJ5IGRlZmF1bHQgcmFkaW9zIGFuZCBjaGVja2JveGVzIGFyZSBgaW5saW5lLWJsb2NrYCB3aXRoIG5vIGFkZGl0aW9uYWwgc3BhY2luZ1xuLy8gc2V0LiBVc2UgdGhlc2Ugb3B0aW9uYWwgY2xhc3NlcyB0byB0d2VhayB0aGUgbGF5b3V0LlxuXG4uY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC5jdXN0b20tY29udHJvbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGN1c3RvbS1jb250cm9sLXNwYWNlci15O1xuXG4gICAgKyAuY3VzdG9tLWNvbnRyb2wge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU2VsZWN0XG4vL1xuLy8gUmVwbGFjZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCBzZWxlY3Qgd2l0aCBhIGN1c3RvbSBvbmUsIG1vc3RseSBwdWxsZWQgZnJvbVxuLy8gaHR0cDovL3ByaW1lcmNzcy5pby5cbi8vXG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgcGFkZGluZzogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgbGluZS1oZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGN1c3RvbS1zZWxlY3QtY29sb3I7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICRjdXN0b20tc2VsZWN0LWJnICRjdXN0b20tc2VsZWN0LWluZGljYXRvciBuby1yZXBlYXQgcmlnaHQgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYmFja2dyb3VuZC1zaXplOiAkY3VzdG9tLXNlbGVjdC1iZy1zaXplO1xuICBib3JkZXI6ICRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aCBzb2xpZCAkY3VzdG9tLXNlbGVjdC1ib3JkZXItY29sb3I7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM7XG4gIH0gQGVsc2Uge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tc2VsZWN0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdyk7XG5cbiAgICAmOjotbXMtdmFsdWUge1xuICAgICAgLy8gRm9yIHZpc3VhbCBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHBsYXRmb3Jtcy9icm93c2VycyxcbiAgICAgIC8vIHN1cHJlc3MgdGhlIGRlZmF1bHQgd2hpdGUgdGV4dCBvbiBibHVlIGJhY2tncm91bmQgaGlnaGxpZ2h0IGdpdmVuIHRvXG4gICAgICAvLyB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRleHQgd2hlbiB0aGUgKHN0aWxsIGNsb3NlZCkgPHNlbGVjdD4gcmVjZWl2ZXMgZm9jdXNcbiAgICAgIC8vIGluIElFIGFuZCAodW5kZXIgY2VydGFpbiBjb25kaXRpb25zKSBFZGdlLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1iZztcbiAgfVxuXG4gIC8vIEhpZGVzIHRoZSBkZWZhdWx0IGNhcmV0IGluIElFMTFcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LXNtO1xuICBwYWRkaW5nLXRvcDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15O1xuICBmb250LXNpemU6ICRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbTtcbn1cblxuXG4vLyBGaWxlXG4vL1xuLy8gQ3VzdG9tIGZpbGUgaW5wdXQuXG5cbi5jdXN0b20tZmlsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgbWluLXdpZHRoOiAkY3VzdG9tLWZpbGUtd2lkdGg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJjpmb2N1cyB+IC5jdXN0b20tZmlsZS1jb250cm9sIHtcbiAgICBib3gtc2hhZG93OiAkY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdztcbiAgfVxufVxuXG4uY3VzdG9tLWZpbGUtY29udHJvbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogNTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGxpbmUtaGVpZ2h0OiAkY3VzdG9tLWZpbGUtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkY3VzdG9tLWZpbGUtY29sb3I7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1maWxlLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1maWxlLWJveC1zaGFkb3cpO1xuXG4gIEBlYWNoICRsYW5nLCAkdGV4dCBpbiBtYXAtZ2V0KCRjdXN0b20tZmlsZS10ZXh0LCBwbGFjZWhvbGRlcikge1xuICAgICY6bGFuZygjeyRsYW5nfSk6ZW1wdHk6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICR0ZXh0O1xuICAgIH1cbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiA2O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gICAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWZpbGUtYnV0dG9uLWJnO1xuICAgIGJvcmRlci1sZWZ0OiAkY3VzdG9tLWZpbGUtYm9yZGVyLXdpZHRoIHNvbGlkICRjdXN0b20tZmlsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICBAZWFjaCAkbGFuZywgJHRleHQgaW4gbWFwLWdldCgkY3VzdG9tLWZpbGUtdGV4dCwgYnV0dG9uLWxhYmVsKSB7XG4gICAgJjpsYW5nKCN7JGxhbmd9KTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICR0ZXh0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEtpY2tzdGFydCBhbnkgbmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBhIHNldCBvZiBzdHlsZSByZXNldHMuIFdvcmtzIHdpdGhcbi8vIGA8bmF2PmBzIG9yIGA8dWw+YHMuXG5cbi5uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRuYXYtbGluay1wYWRkaW5nLXkgJG5hdi1saW5rLXBhZGRpbmcteDtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dFxuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICB9XG59XG5cbi8vXG4vLyBUYWJzXG4vL1xuXG4ubmF2LXRhYnMge1xuICBib3JkZXItYm90dG9tOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkICRuYXYtdGFicy1ib3JkZXItY29sb3I7XG5cbiAgLm5hdi1pdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgfVxuXG4gIC5uYXYtbGluayB7XG4gICAgYm9yZGVyOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRuYXYtdGFicy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yICRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvciAkbmF2LXRhYnMtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvciAkbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yICRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZztcbiAgfVxuXG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICAvLyBNYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXJcbiAgICBtYXJnaW4tdG9wOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudVxuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICB9XG59XG5cblxuLy9cbi8vIFBpbGxzXG4vL1xuXG4ubmF2LXBpbGxzIHtcbiAgLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAmLmFjdGl2ZSxcbiAgICAuc2hvdyA+ICYge1xuICAgICAgY29sb3I6ICRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gIC5uYXYtaXRlbSB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi5uYXYtanVzdGlmaWVkIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuXG4vLyBUYWJiYWJsZSB0YWJzXG4vL1xuLy8gSGlkZSB0YWJiYWJsZSBwYW5lcyB0byBzdGFydCwgc2hvdyB0aGVtIHdoZW4gYC5hY3RpdmVgXG5cbi50YWItY29udGVudCB7XG4gID4gLnRhYi1wYW5lIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gID4gLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi8vIENvbnRlbnRzXG4vL1xuLy8gTmF2YmFyXG4vLyBOYXZiYXIgYnJhbmRcbi8vIE5hdmJhciBuYXZcbi8vIE5hdmJhciB0ZXh0XG4vLyBOYXZiYXIgZGl2aWRlclxuLy8gUmVzcG9uc2l2ZSBuYXZiYXJcbi8vIE5hdmJhciBwb3NpdGlvblxuLy8gTmF2YmFyIHRoZW1lc1xuXG5cbi8vIE5hdmJhclxuLy9cbi8vIFByb3ZpZGUgYSBzdGF0aWMgbmF2YmFyIGZyb20gd2hpY2ggd2UgZXhwYW5kIHRvIGNyZWF0ZSBmdWxsLXdpZHRoLCBmaXhlZCwgYW5kXG4vLyBvdGhlciBuYXZiYXIgdmFyaWF0aW9ucy5cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiAkbmF2YmFyLXBhZGRpbmcteSAkbmF2YmFyLXBhZGRpbmcteDtcblxuICAvLyBCZWNhdXNlIGZsZXggcHJvcGVydGllcyBhcmVuJ3QgaW5oZXJpdGVkLCB3ZSBuZWVkIHRvIHJlZGVjbGFyZSB0aGVzZSBmaXJzdFxuICAvLyBmZXcgcHJvcGVyaXRpZXMgc28gdGhhdCBjb250ZW50IG5lc3RlZCB3aXRoaW4gYmVoYXZlIHByb3Blcmx5LlxuICA+IC5jb250YWluZXIsXG4gID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgYnJhbmRcbi8vXG4vLyBVc2VkIGZvciBicmFuZCwgcHJvamVjdCwgb3Igc2l0ZSBuYW1lcy5cblxuLm5hdmJhci1icmFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXZiYXItYnJhbmQtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJG5hdmJhci1icmFuZC1wYWRkaW5nLXk7XG4gIG1hcmdpbi1yaWdodDogJG5hdmJhci1wYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJG5hdmJhci1icmFuZC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgbmF2XG4vL1xuLy8gQ3VzdG9tIG5hdmJhciBuYXZpZ2F0aW9uIChkb2Vzbid0IHJlcXVpcmUgYC5uYXZgLCBidXQgZG9lcyBtYWtlIHVzZSBvZiBgLm5hdi1saW5rYCkuXG5cbi5uYXZiYXItbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgLy8gY2Fubm90IHVzZSBgaW5oZXJpdGAgdG8gZ2V0IHRoZSBgLm5hdmJhcmBzIHZhbHVlXG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgdGV4dFxuLy9cbi8vXG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xufVxuXG5cbi8vIFJlc3BvbnNpdmUgbmF2YmFyXG4vL1xuLy8gQ3VzdG9tIHN0eWxlcyBmb3IgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGFuZCB0b2dnbGluZyBvZiBuYXZiYXIgY29udGVudHMuXG4vLyBQb3dlcmVkIGJ5IHRoZSBjb2xsYXBzZSBCb290c3RyYXAgSmF2YVNjcmlwdCBwbHVnaW4uXG5cbi8vIFdoZW4gY29sbGFwc2VkLCBwcmV2ZW50IHRoZSB0b2dnbGVhYmxlIG5hdmJhciBjb250ZW50cyBmcm9tIGFwcGVhcmluZyBpblxuLy8gdGhlIGRlZmF1bHQgZmxleGJveCByb3cgb3JpZW5hdGlvbi4gUmVxdWlyZXMgdGhlIHVzZSBvZiBgZmxleC13cmFwOiB3cmFwYFxuLy8gb24gdGhlIGAubmF2YmFyYCBwYXJlbnQuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgLy8gRm9yIGFsd2F5cyBleHBhbmRlZCBvciBleHRyYSBmdWxsIG5hdmJhcnMsIGVuc3VyZSBjb250ZW50IGFsaWducyBpdHNlbGZcbiAgLy8gcHJvcGVybHkgdmVydGljYWxseS4gQ2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIHdpdGggZmxleCB1dGlsaXRpZXMuXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8vIEJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG5hdmJhciB3aGVuIGluIGl0cyBjb2xsYXBzZWQgc3RhdGVcbi5uYXZiYXItdG9nZ2xlciB7XG4gIHBhZGRpbmc6ICRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXkgJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDtcbiAgZm9udC1zaXplOiAkbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzKTtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cbi8vIEtlZXAgYXMgYSBzZXBhcmF0ZSBlbGVtZW50IHNvIGZvbGtzIGNhbiBlYXNpbHkgb3ZlcnJpZGUgaXQgd2l0aCBhbm90aGVyIGljb25cbi8vIG9yIGltYWdlIGZpbGUgYXMgbmVlZGVkLlxuLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxLjVlbTtcbiAgaGVpZ2h0OiAxLjVlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY29udGVudDogXCJcIjtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuXG4vLyBHZW5lcmF0ZSBzZXJpZXMgb2YgYC5uYXZiYXItZXhwYW5kLSpgIHJlc3BvbnNpdmUgY2xhc3NlcyBmb3IgY29uZmlndXJpbmdcbi8vIHdoZXJlIHlvdXIgbmF2YmFyIGNvbGxhcHNlcy5cbi5uYXZiYXItZXhwYW5kIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRuZXh0LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAmI3skaW5maXh9IHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jb250YWluZXIsXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmV4dCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogYXV0bzsgLy8gUmVzZXQgdGhlIGRlZmF1bHQgZnJvbSBgLmRyb3Bkb3duLW1lbnVgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLm5hdi1saW5rIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgbmVzdGluZyBjb250YWluZXJzLCBoYXZlIHRvIHJlZGVjbGFyZSBmb3IgYWxpZ25tZW50IHB1cnBvc2VzXG4gICAgICAgID4gLmNvbnRhaW5lcixcbiAgICAgICAgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNjc3MtbGludDpkaXNhYmxlIEltcG9ydGFudFJ1bGVcbiAgICAgICAgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIHNjc3MtbGludDplbmFibGUgSW1wb3J0YW50UnVsZVxuXG4gICAgICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0aGVtZXNcbi8vXG4vLyBTdHlsZXMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5hdmJhcnMgd2l0aCBsaWdodCBvciBkYXJrIGJhY2tncm91bmQuXG5cbi8vIERhcmsgbGlua3MgYWdhaW5zdCBhIGxpZ2h0IGJhY2tncm91bmRcbi5uYXZiYXItbGlnaHQge1xuICAubmF2YmFyLWJyYW5kIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zaG93ID4gLm5hdi1saW5rLFxuICAgIC5hY3RpdmUgPiAubmF2LWxpbmssXG4gICAgLm5hdi1saW5rLnNob3csXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci10b2dnbGVyIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I7XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc7XG4gIH1cblxuICAubmF2YmFyLXRleHQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWNvbG9yO1xuICB9XG59XG5cbi8vIFdoaXRlIGxpbmtzIGFnYWluc3QgYSBkYXJrIGJhY2tncm91bmRcbi5uYXZiYXItZGFyayB7XG4gIC5uYXZiYXItYnJhbmQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yO1xuXG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuXG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstaG92ZXItY29sb3I7XG4gICAgICB9XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zaG93ID4gLm5hdi1saW5rLFxuICAgIC5hY3RpdmUgPiAubmF2LWxpbmssXG4gICAgLm5hdi1saW5rLnNob3csXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I7XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZztcbiAgfVxuXG4gIC5uYXZiYXItdGV4dCB7XG4gICAgY29sb3I6ICRuYXZiYXItZGFyay1jb2xvcjtcbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XG4gIGJvcmRlcjogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmNhcmQtYm9keSB7XG4gIC8vIEVuYWJsZSBgZmxleC1ncm93OiAxYCBmb3IgZGVja3MgYW5kIGdyb3VwcyBzbyB0aGF0IGNhcmQgYmxvY2tzIHRha2UgdXBcbiAgLy8gYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZSwgZW5zdXJpbmcgZm9vdGVycyBhcmUgYWxpZ25lZCB0byB0aGUgYm90dG9tLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXg7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogJGNhcmQtc3BhY2VyLXk7XG59XG5cbi5jYXJkLXN1YnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogLSgkY2FyZC1zcGFjZXIteSAvIDIpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rIHtcbiAgQGluY2x1ZGUgaG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICsgLmNhcmQtbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6ICRjYXJkLXNwYWNlci14O1xuICB9XG59XG5cbi5jYXJkIHtcbiAgPiAubGlzdC1ncm91cDpmaXJzdC1jaGlsZCB7XG4gICAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gT3B0aW9uYWwgdGV4dHVhbCBjYXBzXG4vL1xuXG4uY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gUmVtb3ZlcyB0aGUgZGVmYXVsdCBtYXJnaW4tYm90dG9tIG9mIDxoTj5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItYm90dG9tOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzIDAgMCk7XG4gIH1cbn1cblxuLmNhcmQtZm9vdGVyIHtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXkgJGNhcmQtc3BhY2VyLXg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWNhcC1iZztcbiAgYm9yZGVyLXRvcDogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAwICRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG4gIH1cbn1cblxuXG4vL1xuLy8gSGVhZGVyIG5hdnNcbi8vXG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG4gIG1hcmdpbi1ib3R0b206IC0kY2FyZC1zcGFjZXIteTtcbiAgbWFyZ2luLWxlZnQ6IC0oJGNhcmQtc3BhY2VyLXggLyAyKTtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtaGVhZGVyLXBpbGxzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG4gIG1hcmdpbi1sZWZ0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6ICRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc7XG59XG5cbi5jYXJkLWltZyB7XG4gIHdpZHRoOiAxMDAlOyAvLyBSZXF1aXJlZCBiZWNhdXNlIHdlIHVzZSBmbGV4Ym94IGFuZCB0aGlzIGluaGVyZW50bHkgYXBwbGllcyBhbGlnbi1zZWxmOiBzdHJldGNoXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIENhcmQgaW1hZ2UgY2Fwc1xuLmNhcmQtaW1nLXRvcCB7XG4gIHdpZHRoOiAxMDAlOyAvLyBSZXF1aXJlZCBiZWNhdXNlIHdlIHVzZSBmbGV4Ym94IGFuZCB0aGlzIGluaGVyZW50bHkgYXBwbGllcyBhbGlnbi1zZWxmOiBzdHJldGNoXG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO1xufVxuXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgd2lkdGg6IDEwMCU7IC8vIFJlcXVpcmVkIGJlY2F1c2Ugd2UgdXNlIGZsZXhib3ggYW5kIHRoaXMgaW5oZXJlbnRseSBhcHBsaWVzIGFsaWduLXNlbGY6IHN0cmV0Y2hcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cblxuLy8gQ2FyZCBkZWNrXG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLmNhcmQtZGVjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIG1hcmdpbi1yaWdodDogLSRjYXJkLWRlY2stbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAtJGNhcmQtZGVjay1tYXJnaW47XG5cbiAgICAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1hcmdpbi1yaWdodDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENhcmQgZ3JvdXBzXG4vL1xuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gIC5jYXJkLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG5cbiAgICAuY2FyZCB7XG4gICAgICBmbGV4OiAxIDAgMCU7XG5cbiAgICAgICsgLmNhcmQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSByb3VuZGVkIGNvcm5lcnNcbiAgICAgIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmNhcmQtaW1nLWJvdHRvbSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wIHtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wLFxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29sdW1uc1xuLy9cblxuLmNhcmQtY29sdW1ucyB7XG4gIC5jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkY2FyZC1jb2x1bW5zLW1hcmdpbjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBjb2x1bW4tY291bnQ6ICRjYXJkLWNvbHVtbnMtY291bnQ7XG4gICAgY29sdW1uLWdhcDogJGNhcmQtY29sdW1ucy1nYXA7XG5cbiAgICAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIERvbid0IGxldCB0aGVtIHZlcnRpY2FsbHkgc3BhbiBtdWx0aXBsZSBjb2x1bW5zXG4gICAgICB3aWR0aDogMTAwJTsgLy8gRG9uJ3QgbGV0IHRoZWlyIHdpZHRoIGNoYW5nZVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIFJlcXVpcmVzIG9uZSBvZiB0aGUgY29udGV4dHVhbCwgY29sb3IgbW9kaWZpZXIgY2xhc3NlcyBmb3IgYGNvbG9yYCBhbmRcbi8vIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZy15ICRiYWRnZS1wYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRiYWRnZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCk7XG5cbiAgLy8gRW1wdHkgYmFkZ2VzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHlcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBRdWljayBmaXggZm9yIGJhZGdlcyBpbiBidXR0b25zXG4uYnRuIC5iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuXG4vLyBQaWxsIGJhZGdlc1xuLy9cbi8vIE1ha2UgdGhlbSBleHRyYSByb3VuZGVkIHdpdGggYSBtb2RpZmllciB0byByZXBsYWNlIHYzJ3MgYmFkZ2VzLlxuXG4uYmFkZ2UtcGlsbCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRiYWRnZS1waWxsLXBhZGRpbmcteDtcbiAgcGFkZGluZy1sZWZ0OiAkYmFkZ2UtcGlsbC1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJhZGdlLXBpbGwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIENvbG9yc1xuLy9cbi8vIENvbnRleHR1YWwgdmFyaWF0aW9ucyAobGlua2VkIGJhZGdlcyBnZXQgZGFya2VyIG9uIDpob3ZlcikuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYmFkZ2UtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBiYWRnZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBiYWRnZS12YXJpYW50KCRiZykge1xuICBAaW5jbHVkZSBjb2xvci15aXEoJGJnKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnO1xuXG4gICZbaHJlZl0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yLXlpcSgkYmcpO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiZywgMTAlKTtcbiAgICB9XG4gIH1cbn1cbiIsIi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiAkanVtYm90cm9uLXBhZGRpbmcgKCRqdW1ib3Ryb24tcGFkZGluZyAvIDIpO1xuICBtYXJnaW4tYm90dG9tOiAkanVtYm90cm9uLXBhZGRpbmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRqdW1ib3Ryb24tYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtbGcpO1xuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBwYWRkaW5nOiAoJGp1bWJvdHJvbi1wYWRkaW5nICogMikgJGp1bWJvdHJvbi1wYWRkaW5nO1xuICB9XG59XG5cbi5qdW1ib3Ryb24tZmx1aWQge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG59XG4iLCIvL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5hbGVydCB7XG4gIHBhZGRpbmc6ICRhbGVydC1wYWRkaW5nLXkgJGFsZXJ0LXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogJGFsZXJ0LW1hcmdpbi1ib3R0b207XG4gIGJvcmRlcjogJGFsZXJ0LWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYWxlcnQtYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzXG4uYWxlcnQtaGVhZGluZyB7XG4gIC8vIFNwZWNpZmllZCB0byBwcmV2ZW50IGNvbmZsaWN0cyBvZiBjaGFuZ2luZyAkaGVhZGluZ3MtY29sb3JcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzXG4uYWxlcnQtbGluayB7XG4gIGZvbnQtd2VpZ2h0OiAkYWxlcnQtbGluay1mb250LXdlaWdodDtcbn1cblxuXG4vLyBEaXNtaXNzaWJsZSBhbGVydHNcbi8vXG4vLyBFeHBhbmQgdGhlIHJpZ2h0IHBhZGRpbmcgYW5kIGFjY291bnQgZm9yIHRoZSBjbG9zZSBidXR0b24ncyBwb3NpdGlvbmluZy5cblxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtJGFsZXJ0LXBhZGRpbmcteTtcbiAgICByaWdodDogLSRhbGVydC1wYWRkaW5nLXg7XG4gICAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAkYWxlcnQtcGFkZGluZy14O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cblxuLy8gQWx0ZXJuYXRlIHN0eWxlc1xuLy9cbi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnQuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYWxlcnQtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBhbGVydC12YXJpYW50KHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgLTEwKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAtOSksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgNikpO1xuICB9XG59XG4iLCJAbWl4aW4gYWxlcnQtdmFyaWFudCgkYmFja2dyb3VuZCwgJGJvcmRlciwgJGNvbG9yKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG5cbiAgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IGRhcmtlbigkYm9yZGVyLCA1JSk7XG4gIH1cblxuICAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gIH1cbn1cbiIsIi5tZWRpYSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ubWVkaWEtYm9keSB7XG4gIGZsZXg6IDE7XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4udG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJHppbmRleC10b29sdGlwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAkdG9vbHRpcC1tYXJnaW47XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSB0b29sdGlwJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgb3BhY2l0eTogMDtcblxuICAmLnNob3cgeyBvcGFjaXR5OiAkdG9vbHRpcC1vcGFjaXR5OyB9XG5cbiAgLmFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgIGhlaWdodDogJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuICB9XG5cbiAgJi5icy10b29sdGlwLXRvcCB7XG4gICAgcGFkZGluZzogJHRvb2x0aXAtYXJyb3ctd2lkdGggMDtcbiAgICAuYXJyb3cge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1yaWdodCB7XG4gICAgcGFkZGluZzogMCAkdG9vbHRpcC1hcnJvdy13aWR0aDtcbiAgICAuYXJyb3cge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tdG9wOiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAwO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbiAgJi5icy10b29sdGlwLWJvdHRvbSB7XG4gICAgcGFkZGluZzogJHRvb2x0aXAtYXJyb3ctd2lkdGggMDtcbiAgICAuYXJyb3cge1xuICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwICR0b29sdGlwLWFycm93LXdpZHRoICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1sZWZ0IHtcbiAgICBwYWRkaW5nOiAwICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgIC5hcnJvdyB7XG4gICAgICByaWdodDogMDtcbiAgICB9XG5cbiAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICByaWdodDogMDtcbiAgICAgIG1hcmdpbi10b3A6IC0oJHRvb2x0aXAtYXJyb3ctd2lkdGggLSAyKTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6ICR0b29sdGlwLWFycm93LXdpZHRoIDAgJHRvb2x0aXAtYXJyb3ctd2lkdGggJHRvb2x0aXAtYXJyb3ctd2lkdGg7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1hdXRvIHtcbiAgICAmW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLXRvcDtcbiAgICB9XG4gICAgJlt4LXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLXJpZ2h0O1xuICAgIH1cbiAgICAmW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLWJvdHRvbTtcbiAgICB9XG4gICAgJlt4LXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtbGVmdDtcbiAgICB9XG4gIH1cblxuICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgfVxufVxuXG4vLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50XG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogJHRvb2x0aXAtbWF4LXdpZHRoO1xuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nLXkgJHRvb2x0aXAtcGFkZGluZy14O1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgRHVwbGljYXRlUHJvcGVydHlcbkBtaXhpbiByZXNldC10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciB3b3JkLXdyYXAuXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxuICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIGxpbmUtYnJlYWs6IGF1dG87XG59XG4iLCIuYWxpZ24tYmFzZWxpbmUgICAgeyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsgfSAvLyBCcm93c2VyIGRlZmF1bHRcbi5hbGlnbi10b3AgICAgICAgICB7IHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsgfVxuLmFsaWduLW1pZGRsZSAgICAgIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9XG4uYWxpZ24tYm90dG9tICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi10ZXh0LWJvdHRvbSB7IHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50OyB9XG4uYWxpZ24tdGV4dC10b3AgICAgeyB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDsgfVxuIiwiLy8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kc1xuXG5AbWl4aW4gYmctdmFyaWFudCgkcGFyZW50LCAkY29sb3IpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSBiZy12YXJpYW50KCcuYmctI3skY29sb3J9JywgJHZhbHVlKTtcbn1cblxuLmJnLXdoaXRlIHsgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7IH1cbi5iZy10cmFuc3BhcmVudCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH1cbiIsIi8vXG4vLyBCb3JkZXJcbi8vXG5cbi5ib3JkZXIgICAgICAgICAgeyBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLTAgICAgICAgIHsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItdG9wLTAgICAgeyBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItcmlnaHQtMCAgeyBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20tMCB7IGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1sZWZ0LTAgICB7IGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5ib3JkZXItI3skY29sb3J9IHtcbiAgICBib3JkZXItY29sb3I6ICR2YWx1ZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4vL1xuLy8gQm9yZGVyLXJhZGl1c1xuLy9cblxuLnJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuLnJvdW5kZWQtdG9wIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cbi5yb3VuZGVkLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuLnJvdW5kZWQtbGVmdCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWNpcmNsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLnJvdW5kZWQtMCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4iLCJAbWl4aW4gY2xlYXJmaXgoKSB7XG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG59XG4iLCIvL1xuLy8gVXRpbGl0aWVzIGZvciBjb21tb24gYGRpc3BsYXlgIHZhbHVlc1xuLy9cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmQjeyRpbmZpeH0tbm9uZSAgICAgICAgIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0taW5saW5lICAgICAgIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICAuZCN7JGluZml4fS1pbmxpbmUtYmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIC5kI3skaW5maXh9LWJsb2NrICAgICAgICB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICAuZCN7JGluZml4fS10YWJsZSAgICAgICAgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0tdGFibGUtY2VsbCAgIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0tZmxleCAgICAgICAgIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0taW5saW5lLWZsZXggIHsgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfVxuICB9XG59XG5cblxuLy9cbi8vIFV0aWxpdGllcyBmb3IgdG9nZ2xpbmcgYGRpc3BsYXlgIGluIHByaW50XG4vL1xuXG4uZC1wcmludC1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtaW5saW5lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtbm9uZSB7XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBDcmVkaXQ6IE5pY29sYXMgR2FsbGFnaGVyIGFuZCBTVUlUIENTUy5cblxuLmVtYmVkLXJlc3BvbnNpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICBpZnJhbWUsXG4gIGVtYmVkLFxuICBvYmplY3QsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMjFieTkge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDkgLyAyMSk7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTkge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDkgLyAxNik7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtNGJ5MyB7XG4gICY6OmJlZm9yZSB7XG4gICAgcGFkZGluZy10b3A6IHBlcmNlbnRhZ2UoMyAvIDQpO1xuICB9XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTFieTEge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDEgLyAxKTtcbiAgfVxufVxuIiwiLy8gRmxleCB2YXJpYXRpb25cbi8vXG4vLyBDdXN0b20gc3R5bGVzIGZvciBhZGRpdGlvbmFsIGZsZXggYWxpZ25tZW50IG9wdGlvbnMuXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5mbGV4I3skaW5maXh9LXJvdyAgICAgICAgICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tY29sdW1uICAgICAgICAgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1yb3ctcmV2ZXJzZSAgICB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tY29sdW1uLXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4gICAgLmZsZXgjeyRpbmZpeH0td3JhcCAgICAgICAgIHsgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1ub3dyYXAgICAgICAgeyBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0td3JhcC1yZXZlcnNlIHsgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1zdGFydCAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWVuZCAgICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWFyb3VuZCAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tc3RhcnQgICAgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWl0ZW1zI3skaW5maXh9LWVuZCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1zdHJldGNoICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LXN0YXJ0ICAgeyBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1lbmQgICAgIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1hcm91bmQgIHsgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1zdHJldGNoIHsgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1hdXRvICAgICB7IGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0YXJ0ICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tZW5kICAgICAgeyBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0cmV0Y2ggIHsgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5mbG9hdCN7JGluZml4fS1sZWZ0ICB7IEBpbmNsdWRlIGZsb2F0LWxlZnQ7IH1cbiAgICAuZmxvYXQjeyRpbmZpeH0tcmlnaHQgeyBAaW5jbHVkZSBmbG9hdC1yaWdodDsgfVxuICAgIC5mbG9hdCN7JGluZml4fS1ub25lICB7IEBpbmNsdWRlIGZsb2F0LW5vbmU7IH1cbiAgfVxufVxuIiwiQG1peGluIGZsb2F0LWxlZnQge1xuICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xufVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG59XG5AbWl4aW4gZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBDb21tb24gdmFsdWVzXG5cbi8vIFNhc3MgbGlzdCBub3QgaW4gdmFyaWFibGVzIHNpbmNlIGl0J3Mgbm90IGludGVuZGVkIGZvciBjdXN0b21pemF0aW9uLlxuJHBvc2l0aW9uczogc3RhdGljLCByZWxhdGl2ZSwgYWJzb2x1dGUsIGZpeGVkLCBzdGlja3k7XG5cbkBlYWNoICRwb3NpdGlvbiBpbiAkcG9zaXRpb25zIHtcbiAgLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7IHBvc2l0aW9uOiAkcG9zaXRpb24gIWltcG9ydGFudDsgfVxufVxuXG4vLyBTaG9ydGhhbmRcblxuLmZpeGVkLXRvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLmZpeGVkLWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLnN0aWNreS10b3Age1xuICBAc3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMDtcbiAgICB6LWluZGV4OiAkemluZGV4LXN0aWNreTtcbiAgfVxufVxuIiwiLy9cbi8vIFNjcmVlbnJlYWRlcnNcbi8vXG5cbi5zci1vbmx5IHtcbiAgQGluY2x1ZGUgc3Itb25seSgpO1xufVxuXG4uc3Itb25seS1mb2N1c2FibGUge1xuICBAaW5jbHVkZSBzci1vbmx5LWZvY3VzYWJsZSgpO1xufVxuIiwiLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnNcbi8vXG4vLyBTZWU6IGh0dHA6Ly9hMTF5cHJvamVjdC5jb20vcG9zdHMvaG93LXRvLWhpZGUtY29udGVudFxuLy8gU2VlOiBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuXG5AbWl4aW4gc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwwLDAsMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCAuc3Itb25seSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZC5cbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDEzL05PVEUtV0NBRzIwLVRFQ0hTLTIwMTMwOTA1L0cxXG4vL1xuLy8gQ3JlZGl0OiBIVE1MNSBCb2lsZXJwbGF0ZVxuXG5AbWl4aW4gc3Itb25seS1mb2N1c2FibGUge1xuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGNsaXAtcGF0aDogbm9uZTtcbiAgfVxufVxuIiwiLy8gV2lkdGggYW5kIGhlaWdodFxuXG5AZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAod2lkdGg6IHcsIGhlaWdodDogaCkge1xuICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc2l6ZXMge1xuICAgIC4jeyRhYmJyZXZ9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi5tdy0xMDAgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuLm1oLTEwMCB7IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuIiwiLy8gTWFyZ2luIGFuZCBQYWRkaW5nXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIEBlYWNoICRwcm9wLCAkYWJicmV2IGluIChtYXJnaW46IG0sIHBhZGRpbmc6IHApIHtcbiAgICAgIEBlYWNoICRzaXplLCAkbGVuZ3RoIGluICRzcGFjZXJzIHtcblxuICAgICAgICAuI3skYWJicmV2fSN7JGluZml4fS0jeyRzaXplfSAgeyAjeyRwcm9wfTogICAgICAgICRsZW5ndGggIWltcG9ydGFudDsgfVxuICAgICAgICAuI3skYWJicmV2fXQjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eSN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tdG9wOiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1yI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXgjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LXJpZ2h0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1iI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXkjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LWJvdHRvbTogJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC4jeyRhYmJyZXZ9bCN7JGluZml4fS0jeyRzaXplfSxcbiAgICAgICAgLiN7JGFiYnJldn14I3skaW5maXh9LSN7JHNpemV9IHtcbiAgICAgICAgICAjeyRwcm9wfS1sZWZ0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb21lIHNwZWNpYWwgbWFyZ2luIHV0aWxzXG4gICAgLm0jeyRpbmZpeH0tYXV0byAgeyBtYXJnaW46ICAgICAgICBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgICAubXQjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tciN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWIjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tbCN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gVGV4dFxuLy9cblxuLy8gQWxpZ25tZW50XG5cbi50ZXh0LWp1c3RpZnkgIHsgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG4udGV4dC1ub3dyYXAgICB7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfVxuLnRleHQtdHJ1bmNhdGUgeyBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlOyB9XG5cbi8vIFJlc3BvbnNpdmUgYWxpZ25tZW50XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC50ZXh0I3skaW5maXh9LWxlZnQgICB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxuICAgIC50ZXh0I3skaW5maXh9LXJpZ2h0ICB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAudGV4dCN7JGluZml4fS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybWF0aW9uXG5cbi50ZXh0LWxvd2VyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXVwcGVyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LWNhcGl0YWxpemUgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi8vIFdlaWdodCBhbmQgaXRhbGljc1xuXG4uZm9udC13ZWlnaHQtbGlnaHQgIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtbm9ybWFsIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWwgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LWJvbGQgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZCAhaW1wb3J0YW50OyB9XG4uZm9udC1pdGFsaWMgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cblxuLy8gQ29udGV4dHVhbCBjb2xvcnNcblxuLnRleHQtd2hpdGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSB0ZXh0LWVtcGhhc2lzLXZhcmlhbnQoJy50ZXh0LSN7JGNvbG9yfScsICR2YWx1ZSk7XG59XG5cbi50ZXh0LW11dGVkIHsgY29sb3I6ICR0ZXh0LW11dGVkICFpbXBvcnRhbnQ7IH1cblxuLy8gTWlzY1xuXG4udGV4dC1oaWRlIHtcbiAgQGluY2x1ZGUgdGV4dC1oaWRlKCk7XG59XG4iLCIvLyBUZXh0IHRydW5jYXRlXG4vLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nXG5cbkBtaXhpbiB0ZXh0LXRydW5jYXRlKCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbiIsIi8vIFR5cG9ncmFwaHlcblxuQG1peGluIHRleHQtZW1waGFzaXMtdmFyaWFudCgkcGFyZW50LCAkY29sb3IpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgY29sb3I6ICRjb2xvciAhaW1wb3J0YW50O1xuICB9XG4gIGEjeyRwYXJlbnR9IHtcbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogZGFya2VuKCRjb2xvciwgMTAlKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50XG5AbWl4aW4gdGV4dC1oaWRlKCkge1xuICBmb250OiAwLzAgYTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbn1cbiIsIi8vXG4vLyBWaXNpYmlsaXR5IHV0aWxpdGllc1xuLy9cblxuLnZpc2libGUge1xuICBAaW5jbHVkZSBpbnZpc2libGUodmlzaWJsZSk7XG59XG5cbi5pbnZpc2libGUge1xuICBAaW5jbHVkZSBpbnZpc2libGUoaGlkZGVuKTtcbn1cbiIsIi8vIFZpc2liaWxpdHlcblxuQG1peGluIGludmlzaWJsZSgkdmlzaWJpbGl0eSkge1xuICB2aXNpYmlsaXR5OiAkdmlzaWJpbGl0eSAhaW1wb3J0YW50O1xufVxuIiwiLyogc3lzdGVtLWZvbnQuY3NzIHYxLjEuMCB8IENDMC0xLjAgTGljZW5zZSB8IGdpdGh1Yi5jb20vam9uYXRoYW50bmVhbC9zeXN0ZW0tZm9udC1mYWNlICovXHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogMzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1MaWdodFwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTGlnaHRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0XCIpLCBsb2NhbChcIlVidW50dSBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIGxvY2FsKFwiRHJvaWRTYW5zXCIpLCBsb2NhbChcIlRhaG9tYVwiKTtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcclxuICAgIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTGlnaHRJdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBMaWdodCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0SXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fuc1wiKSwgbG9jYWwoXCJUYWhvbWFcIik7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LVJlZ3VsYXJcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLVJlZ3VsYXJcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJXCIpLCBsb2NhbChcIlVidW50dVwiKSwgbG9jYWwoXCJSb2JvdG8tUmVndWxhclwiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1JdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1NZWRpdW1cIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLU1lZGl1bVA0XCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBTZW1pYm9sZFwiKSwgbG9jYWwoXCJVYnVudHUgTWVkaXVtXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1cIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LU1lZGl1bUl0YWxpY1wiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTWVkaXVtSXRhbGljUDRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIFNlbWlib2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgTWVkaXVtIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtSXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkXCIpLCBsb2NhbChcIlVidW50dSBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRJdGFsaWNcIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7XHJcbn0iLCJAZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnO1xyXG4gICAgc3JjOiB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90Jyk7XHJcbiAgICBzcmM6IHVybCgnaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4wLjAvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuc3ZnI2dseXBoaWNvbnMtaGFsZmxpbmdzcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XHJcbn1cclxuXHJcbi5nbHlwaGljb24ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyBcclxuICAgIHRvcDogMXB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6ICdHbHlwaGljb25zIEhhbGZsaW5ncyc7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxufVxyXG5cclxuIC5nbHlwaGljb24taGVhcnQtZW1wdHk6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlMTQzXCI7XHJcbn1cclxuXHJcbiAuZ2x5cGhpY29uLW9rOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTAxM1wiO1xyXG59XHJcblxyXG4gLmdseXBoaWNvbi1yZW1vdmU6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlMDE0XCI7XHJcbn1cclxuXHJcbiAuZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTAwNVwiO1xyXG59IiwiLy8gaHR0cDovL2RhbmllbHN0ZXJuLmNhL3JhbmdlLmNzcy8/cmVmPWNzcy10cmlja3MjL1xyXG4gXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlciB7XHJcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogNS4ycHggMDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDUuNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcclxuICAgIGJvcmRlcjogMHB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICB3aWR0aDogMTZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZTE3MDc1O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgbWFyZ2luLXRvcDogLTcuMXB4O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LW1vei1yYW5nZS10cmFjayB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNS42cHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDApLCAwcHggMHB4IDBweCByZ2JhKDEzLCAxMywgMTMsIDApO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSg5MCwgMTAxLCAxMDcsIDAuMzIpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjVweDtcclxuICAgIGJvcmRlcjogMS45cHggc29saWQgcmdiYSgwLCAwLCAwLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbW96LXJhbmdlLXRodW1iIHtcclxuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4ICMwMDAwMzEsIDBweCAwcHggMHB4ICMwMDAwNGI7XHJcbiAgICBib3JkZXI6IDBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDApO1xyXG4gICAgaGVpZ2h0OiAxNnB4O1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xyXG4gICAgYmFja2dyb3VuZDogI2UxNzA3NTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdHJhY2sge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDUuNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tcy1maWxsLWxvd2VyIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoNTMsIDU5LCA2MywgMC4zMik7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtZmlsbC11cHBlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdGh1bWIge1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcclxuICAgIGJvcmRlcjogMHB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICB3aWR0aDogMTZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZTE3MDc1O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgaGVpZ2h0OiA1LjZweDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotbXMtZmlsbC1sb3dlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjpmb2N1czo6LW1zLWZpbGwtdXBwZXIge1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjksIDE0MiwgMTQ5LCAwLjMyKTtcclxufSIsImJvZHkge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTIsIDI1MiwgMjUyLCAwLjI5KTtcclxuICAgIGNvbG9yOiAkY29sLS10ZXh0O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LS1mYW1pbHk7XHJcbn1cclxuXHJcbi5qdW1ib3Ryb24ge1xyXG4gICAgcGFkZGluZzogNTBweCAwO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbC0tcHJpbWFyeTtcclxuICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAkY29sLS1zZWM7XHJcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgIzEyNDY2NSwgJGNvbC0tcHJpbWFyeSk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGgxIHtcclxuICAgICAgICBtYXJnaW46IDAgMCAyMHB4O1xyXG4gICAgICAgIGNvbG9yOiAkY29sLS1zZWM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcclxuICAgICAgICBmb250LXNpemU6IDQ4cHg7XHJcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0ycHg7XHJcbiAgICB9XHJcbiAgICBwIHtcclxuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY1KTtcclxuICAgIH1cclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgb3BhY2l0eTogMC40O1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHdpZHRoPSc2NCcgaGVpZ2h0PSc2NCcgdmlld0JveD0nMCAwIDY0IDY0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J004IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4em0wLTJjMy4zMTQgMCA2LTIuNjg2IDYtNnMtMi42ODYtNi02LTYtNiAyLjY4Ni02IDYgMi42ODYgNiA2IDZ6bTMzLjQxNC02bDUuOTUtNS45NUw0NS45NS42MzYgNDAgNi41ODYgMzQuMDUuNjM2IDMyLjYzNiAyLjA1IDM4LjU4NiA4bC01Ljk1IDUuOTUgMS40MTQgMS40MTRMNDAgOS40MTRsNS45NSA1Ljk1IDEuNDE0LTEuNDE0TDQxLjQxNCA4ek00MCA0OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHptMC0yYzMuMzE0IDAgNi0yLjY4NiA2LTZzLTIuNjg2LTYtNi02LTYgMi42ODYtNiA2IDIuNjg2IDYgNiA2ek05LjQxNCA0MGw1Ljk1LTUuOTUtMS40MTQtMS40MTRMOCAzOC41ODZsLTUuOTUtNS45NUwuNjM2IDM0LjA1IDYuNTg2IDQwbC01Ljk1IDUuOTUgMS40MTQgMS40MTRMOCA0MS40MTRsNS45NSA1Ljk1IDEuNDE0LTEuNDE0TDkuNDE0IDQweicgZmlsbD0nIzlDOTJBQycgZmlsbC1vcGFjaXR5PScwLjQnIGZpbGwtcnVsZT0nZXZlbm9kZCcvPjwvc3ZnPlwiKTtcclxuICAgIH1cclxufSIsIiRjb2wtLXByaW1hcnk6IzgwMzNiMDtcclxuJGNvbC0tc2VjOiM3NWI3ZGQ7XHJcbiRjb2wtLXRleHQ6IzVhNjU2YjtcclxuXHJcbiRmb250LS1mYW1pbHk6XCJTZWdvZSBVSVwiLCBzeXN0ZW0tdWksIFRhaG9tYTsgICIsInByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgcGFkZGluZzogMDtcclxufVxyXG5cclxuY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sXHJcbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xyXG4gICAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YSc7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5ib3Jib3Qge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNmM2YzZjM7XHJcbn1cclxuXHJcbi5zLWhpZ2hsaWdodCB7XHJcbiAgICBjb2xvcjogI2UxNzA3NTtcclxufVxyXG5cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmNhcmQge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIC5jYXJkLWhlYWRlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNCk7XHJcbiAgICB9XHJcbiAgICAuY2FyZC1mb290ZXIge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xyXG4gICAgfVxyXG59XHJcblxyXG5wcmlzbS1ibG9jaz5wcmUge1xyXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5zaG93LWNvZGUge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICNlMTcwNzU7XHJcbiAgICB9XHJcbiAgICBpLm1kaSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XHJcbiAgICAgICAgY29sb3I6ICNlMTcwNzU7XHJcbiAgICB9XHJcbn1cclxuXHJcbnN0cm9uZyB7XHJcbiAgICBmb250LWZhbWlseTogJ0luY29uc29sYXRhJztcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBwYWRkaW5nOiAwIDRweDtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5idG4uYnRuLXNtYWxsIHtcclxuICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDMpO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIGZvbnQtc2l6ZTogMC44ZW07XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYnRuLmJ0bi1icm93c2VyIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBmb250LXNpemU6IDk1JTtcclxuICAgIGltZyB7XHJcbiAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICAgIH1cclxuICAgIHNwYW4ge1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiBJbmNvbnNvbGF0YTtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgIGNvbG9yOiAjOTVhY2M0O1xyXG4gICAgfVxyXG59XHJcblxyXG4uYnRuLmJ0bi1mcmFtZXdvcmsge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtO1xyXG59XHJcblxyXG4uaGlnaGxpZ2h0IHtcclxuICAgIGNvbG9yOiAjZTE3MDc1O1xyXG59XHJcblxyXG5kaXYjZGlzcXVzX3RocmVhZCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZmRmZGY7XHJcbn1cclxuXHJcbmEuYnRuLmJ0bi1saW5rIHtcclxuICAgIGJhY2tncm91bmQ6ICNhNmIyYjk7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIHBhZGRpbmc6IDAgNHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgJi5mYWNlYm9vazpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNiNTk5ODtcclxuICAgIH1cclxuICAgICYudHdpdHRlcjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcclxuICAgIH1cclxuICAgICYubGlua2VkaW46aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc3YjU7XHJcbiAgICB9XHJcbiAgICAmLmdwbHVzOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQ0YjM5O1xyXG4gICAgfVxyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYigyNDIsIDI0NSwgMjUyKTtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGZkZmRmO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgY29sb3I6ICM4OTkyYTY7XHJcbiAgICBmb250LXNpemU6IDkwJTtcclxuICAgIC5tZGkge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIGNvbG9yOiAjNGY1NjY3O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLm5hdi1saW5rIHtcclxuICAgIGNvbG9yOiAjNzI3YTgxO1xyXG4gICAgaS5tZGkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB9XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogI2UxNzA3NTtcclxuICAgIH1cclxufVxyXG5cclxuc3Bhbi5jb2xvci1wcmV2aWV3IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxZW07XHJcbiAgICBoZWlnaHQ6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwIDJweDtcclxuICAgICYucHJpbWFyeSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTtcclxuICAgIH1cclxuICAgICYuc3VjY2VzcyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YztcclxuICAgIH1cclxuICAgICYuaW5mbyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTtcclxuICAgIH1cclxuICAgICYud2FybmluZyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTtcclxuICAgIH1cclxuICAgICYuZGFuZ2VyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmO1xyXG4gICAgfVxyXG59XHJcblxyXG4ubm90ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIHBhZGRpbmc6IDAgMWVtO1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgZm9udC1zaXplOiA5MCU7XHJcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY0KTtcclxuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2UxNzA3NTtcclxufVxyXG5cclxuaDYge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG5zZWN0aW9uLnNlY3Rpb24ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG4gICAgYSB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxufVxyXG5cclxuLmJ0bi1jb2xsYXBzZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RmZGZkZjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBjb2xvcjogIzgyOGI5MDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTZkZmRmO1xyXG4gICAgICAgIGNvbG9yOiAjOTBhMWFkO1xyXG4gICAgfVxyXG59Il19 */ diff --git a/public/svg/feathers/check-circle.svg b/public/svg/feathers/check-circle.svg new file mode 100644 index 0000000..d95153c --- /dev/null +++ b/public/svg/feathers/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/svg/feathers/check-square.svg b/public/svg/feathers/check-square.svg new file mode 100644 index 0000000..8c9aa0c --- /dev/null +++ b/public/svg/feathers/check-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/svg/open-iconic/task.svg b/public/svg/open-iconic/task.svg new file mode 100644 index 0000000..786c7bf --- /dev/null +++ b/public/svg/open-iconic/task.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/html/data/global.js b/src/html/data/global.js new file mode 100644 index 0000000..82c4686 --- /dev/null +++ b/src/html/data/global.js @@ -0,0 +1,3 @@ +var person = { + name:'loky' +}; \ No newline at end of file diff --git a/src/html/data/global.json b/src/html/data/global.json new file mode 100644 index 0000000..03d3350 --- /dev/null +++ b/src/html/data/global.json @@ -0,0 +1,3 @@ +{ + "install_cli": "dd" +} diff --git a/src/html/index.html b/src/html/index.html new file mode 100644 index 0000000..b409290 --- /dev/null +++ b/src/html/index.html @@ -0,0 +1,8 @@ +{% extends 'layouts/application.html' %} + +{% block content %} + {% include 'layouts/header.html' %} + {% include 'layouts/content.html' %} +{% endblock %} + + \ No newline at end of file diff --git a/src/html/layouts/application.html b/src/html/layouts/application.html new file mode 100644 index 0000000..343269a --- /dev/null +++ b/src/html/layouts/application.html @@ -0,0 +1,116 @@ +{% from 'macros/helpers.html' import sprite %} + + + + + {% block title %}{{ title }}{% endblock %} + + Pretty checkbox | Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% include "shared/app-icons.html" %} + {% block head %}{% endblock %} + + + {% block content %}{% endblock %} + + {% block javascript %} + + + + + + + + + + + + + + + + {% endblock %} + + diff --git a/src/html/layouts/content.html b/src/html/layouts/content.html new file mode 100644 index 0000000..9c10ced --- /dev/null +++ b/src/html/layouts/content.html @@ -0,0 +1,92 @@ +
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
+
+ + + + +{% from "./partials/common.html" import section, code,block,codeblock,contentblock %} + +
+
+ + {% include "./sections/installation.html" %} + {% include "./sections/basic_checkbox.html" %} + {% include "./sections/switch.html" %} + {% include "./sections/colors.html" %} + {% include "./sections/font_icons.html" %} + {% include "./sections/svg.html" %} + {% include "./sections/image.html" %} + {% include "./sections/animations.html" %} + {% include "./sections/plain.html" %} + {% include "./sections/toggle.html" %} + {% include "./sections/states.html" %} + {% include "./sections/disabled.html" %} + {% include "./sections/lock.html" %} + {% include "./sections/size.html" %} + {% include "./sections/radio_buttons.html" %} + {% include "./sections/tested_font_icons.html" %} + {% include "./sections/tested_svg.html" %} + {% include "./sections/scalability.html" %} + {% include "./sections/scss_customize.html" %} + {% include "./sections/more.html" %} + +
+
+ + diff --git a/src/html/layouts/header.html b/src/html/layouts/header.html new file mode 100644 index 0000000..8b4d2e3 --- /dev/null +++ b/src/html/layouts/header.html @@ -0,0 +1,48 @@ +
+
+

pretty checkbox

+

A pure css library to beautify checkbox and radio buttons

+
+ Star + + +
+
+
+ + \ No newline at end of file diff --git a/src/html/layouts/partials/common.html b/src/html/layouts/partials/common.html new file mode 100644 index 0000000..cd92615 --- /dev/null +++ b/src/html/layouts/partials/common.html @@ -0,0 +1,61 @@ +{% macro section(heading,d) %} +
+
{{heading}}
+
+ {{d | safe}} +
+
+{% endmacro %} + +{% macro code(hint,language='html') %} +
+
+
+	{{hint}}
+
+
+
+{% endmacro %} + + {% macro block(hint,heading,options={}) %} +
+
+
{{heading}} + {% if options.link %} + + {% endif %} +
+ {{options.action|safe}} +
show code
+
+
+ {{hint|safe}} +
+ +
+{% endmacro %} + + +{% macro codeblock(hint,heading,language='scss') %} +
+
+
{{heading}}
+
+
+
{{hint}}
+
+
+{% endmacro %} + +{% macro contentblock(heading,content) %} +
+
+
{{heading}}
+
+
+ {{content|safe}} +
+
+{% endmacro %} diff --git a/src/html/layouts/sections/animations.html b/src/html/layouts/sections/animations.html new file mode 100644 index 0000000..c799d61 --- /dev/null +++ b/src/html/layouts/sections/animations.html @@ -0,0 +1,10 @@ + {% set desc %} +

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

+ {{block(checkbox_animations_smooth,'Smooth')}} + {{block(checkbox_animations_jelly,'Jelly')}} + {{block(checkbox_animations_tada,'Tada')}} + {{block(checkbox_animations_rotate,'Rotate')}} + {{block(checkbox_animations_pulse,'Pulse')}} +

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

+{% endset %} +{{section('Animations',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/basic_checkbox.html b/src/html/layouts/sections/basic_checkbox.html new file mode 100644 index 0000000..51fcd43 --- /dev/null +++ b/src/html/layouts/sections/basic_checkbox.html @@ -0,0 +1,11 @@ + {% set desc %} +

These are simple checkboxes with three shapes. Add class + p-default as like mentioned in above example. +

+

By default, it will be in + Square shape. To change, add class + p-curve or + p-round. +

+ {{block(checkbox_basic_square,'Default')}} {{block(checkbox_basic_curve,'Curve')}} {{block(checkbox_basic_round,'Round')}} +{% endset %} {{section('Basic checkbox',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/colors.html b/src/html/layouts/sections/colors.html new file mode 100644 index 0000000..3faf194 --- /dev/null +++ b/src/html/layouts/sections/colors.html @@ -0,0 +1,57 @@ +{% set desc %} +

+ There are five colors. + + + + + . Can be used as + Solid ( + p-primary ) or + Outline ( + p-primary-o ). +

+

To apply colors, add class + p-primary to + .state class inside + .pretty +

+{{block(checkbox_colors_solid,'Solid')}} +{{block(checkbox_colors_mixed,'Mixed')}} + +
+ Show colors for all combinations +
+ +
+ {{block(checkbox_colors_default_outline,'Outline')}} + {{block(checkbox_colors_default_fill,'Square & Fill')}} + {{block(checkbox_colors_default_fill_outline,'Square & Fill & Outline')}} + {{block(checkbox_colors_default_thick,'Square & Thick')}} + {{block(checkbox_colors_default_thick_outline,'Square & Thick & Outline')}} + + {{block(checkbox_colors_curve,'Curve')}} + {{block(checkbox_colors_curve_outline,'Curve & Outline')}} + {{block(checkbox_colors_curve_fill,'Curve & Fill')}} + {{block(checkbox_colors_curve_fill_outline,'Curve & Fill & Outline')}} + {{block(checkbox_colors_curve_thick,'Curve & Thick')}} + {{block(checkbox_colors_curve_thick_outline,'Curve & Thick & Outline')}} + + {{block(checkbox_colors_round,'Round')}} + {{block(checkbox_colors_round_outline,'Round & Outline')}} + {{block(checkbox_colors_round_fill,'Round & Fill')}} + {{block(checkbox_colors_round_fill_outline,'Round & Fill & Outline')}} + {{block(checkbox_colors_round_thick,'Round & Thick')}} + {{block(checkbox_colors_round_thick_outline,'Round & Thick & Outline')}} + + {{block(checkbox_colors_switch,'Switch')}} +
+ +
+ Hide combinations +
+ +

Colors can be added, removed, changed from SCSS settings.

+{% endset %} {{section('Colors',desc)}} + + diff --git a/src/html/layouts/sections/disabled.html b/src/html/layouts/sections/disabled.html new file mode 100644 index 0000000..2ae9146 --- /dev/null +++ b/src/html/layouts/sections/disabled.html @@ -0,0 +1,5 @@ + {% set desc %} +

Normal disabled attribute in checkbox is enough.

+ {{block(disabled,'General')}} +{% endset %} +{{section('Disable',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/font_icons.html b/src/html/layouts/sections/font_icons.html new file mode 100644 index 0000000..c428ece --- /dev/null +++ b/src/html/layouts/sections/font_icons.html @@ -0,0 +1,6 @@ +{% set desc %} +

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

+{{block(checkbox_font_icons,'General')}} +

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

+{% endset %} +{{section('Font icons',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/image.html b/src/html/layouts/sections/image.html new file mode 100644 index 0000000..aeff211 --- /dev/null +++ b/src/html/layouts/sections/image.html @@ -0,0 +1,6 @@ + {% set desc %} +

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

+{{block(checkbox_image,'General')}} +

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

+{% endset %} +{{section('Image',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/installation.html b/src/html/layouts/sections/installation.html new file mode 100644 index 0000000..b3da3d1 --- /dev/null +++ b/src/html/layouts/sections/installation.html @@ -0,0 +1,26 @@ + {% set desc %} +

+ Step 1 : Download from + yarn or + npm +

+ {{code(install_cli,'css')}} +

+ Alternatively, you can also use CDN link +

+ {{code(install_cdn,'css')}} +

+ Step 2 : Add + dist/pretty-checkbox.min.css file in your html or import + src/pretty-checkbox.scss file in your scss file +

+ {{code(install_import,'css')}} +

+ Step 3 : Add the mark up in your file. Can be used with + Bootstrap, + Foundation, + Bulma frameworks. +

+ {{code(install_basic)}} +{% endset %} +{{section('Installation',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/lock.html b/src/html/layouts/sections/lock.html new file mode 100644 index 0000000..5d8fd32 --- /dev/null +++ b/src/html/layouts/sections/lock.html @@ -0,0 +1,5 @@ + {% set desc %} +

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

+ {{block(locked,'Lock')}} +{% endset %} +{{section('Lock',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/more.html b/src/html/layouts/sections/more.html new file mode 100644 index 0000000..c6cd717 --- /dev/null +++ b/src/html/layouts/sections/more.html @@ -0,0 +1,141 @@ +{% set browsers %} +
Works in all latest browsers.
+
+
+ >= 10
+
+ >= 25
+
+ >= 40
+
+ >= 8
+
+ >= 25
+
+{% endset %} + +{% set frameworks %} +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+ + + +
+
+ + + + + +
+{% endset %} + +{% set inspiration %} +
+ Awesome Bootstrap Checkbox - Idea +
+ Animista - Animations. +
+{% endset %} + +{% set contributions %} +
+ Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome! +
+{% endset %} + +{% set social %} + +{% endset %} + +{% set credits %} +
+ Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
+ Svg icons from useiconic · sparkk.fr
+ Slider generated from range.css + +
+{% endset %} + +{% set licence %} +
The MIT License
+{% endset %} + +{% set desc %} + {{contentblock('Browser Compatability',browsers)}} + {{contentblock('Framework Compatability',frameworks)}} + {{contentblock('Inspirations',inspiration)}} + {{contentblock('Contributions',contributions)}} + {{contentblock('Support and share',social)}} + {{contentblock('Credits',credits)}} + {{contentblock('Licence',licence)}} +{% endset %} +{{section('More',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/plain.html b/src/html/layouts/sections/plain.html new file mode 100644 index 0000000..58838ab --- /dev/null +++ b/src/html/layouts/sections/plain.html @@ -0,0 +1,5 @@ + {% set desc %} +

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

+ {{block(checkbox_plain,'General')}} +{% endset %} +{{section('Plain',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/radio_buttons.html b/src/html/layouts/sections/radio_buttons.html new file mode 100644 index 0000000..203516c --- /dev/null +++ b/src/html/layouts/sections/radio_buttons.html @@ -0,0 +1,11 @@ + {% set desc %} +

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

+ {{block(radio_basic,'Basic')}} + {{block(radio_colors,'Colors')}} + {{block(radio_icons_solid,'Solid color and icons')}} + {{block(radio_icons,'Outline colors')}} + {{block(radio_animations,'Animations')}} + {{block(radio_plain,'Plain')}} + {{block(radio_switch,'Switch')}} +{% endset %} +{{section('Radio buttons',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/scalability.html b/src/html/layouts/sections/scalability.html new file mode 100644 index 0000000..fb57acd --- /dev/null +++ b/src/html/layouts/sections/scalability.html @@ -0,0 +1,8 @@ +{% set action %} + +{% endset %} + +{% set desc %} +{{block(scalability,'Try changing font size',{action:action,hideCodeLink:true})}} +{% endset %} +{{section('Scalability',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/scss_customize.html b/src/html/layouts/sections/scss_customize.html new file mode 100644 index 0000000..564b802 --- /dev/null +++ b/src/html/layouts/sections/scss_customize.html @@ -0,0 +1,5 @@ +{% set desc %} +{{codeblock(sass_settings,'Settings')}} +{{codeblock(sass_import,'Import','scss')}} +{% endset %} +{{section('SCSS Customize',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/size.html b/src/html/layouts/sections/size.html new file mode 100644 index 0000000..0eae283 --- /dev/null +++ b/src/html/layouts/sections/size.html @@ -0,0 +1,6 @@ +{% set desc %} +

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

+ {{block(bigger,'Bigger')}} +

Alternatively, we can also set font-size property to class .pretty

+{% endset %} +{{section('Size',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/states.html b/src/html/layouts/sections/states.html new file mode 100644 index 0000000..3477500 --- /dev/null +++ b/src/html/layouts/sections/states.html @@ -0,0 +1,12 @@ + +{% set action %} + +{% endset %} + +{% set desc %} +

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

+ {{block(checkbox_state_hover,'Hover')}} + {{block(checkbox_state_focus,'Focus')}} + {{block(checkbox_state_indeterminate,'Indeterminate',{action:action})}} +{% endset %} +{{section('States',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/svg.html b/src/html/layouts/sections/svg.html new file mode 100644 index 0000000..502c814 --- /dev/null +++ b/src/html/layouts/sections/svg.html @@ -0,0 +1,6 @@ + {% set desc %} +

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

+ {{block(checkbox_svg,'General')}} +

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

+{% endset %} +{{section('Svg',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/switch.html b/src/html/layouts/sections/switch.html new file mode 100644 index 0000000..f8803e9 --- /dev/null +++ b/src/html/layouts/sections/switch.html @@ -0,0 +1,9 @@ +{% set desc %} +

Add class + p-switch. For shapes add class, + p-outline or + p-fill or + p-slim +

+ {{block(checkbox_switch,'iOS style')}} +{% endset %} {{section('Switch',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/tested_font_icons.html b/src/html/layouts/sections/tested_font_icons.html new file mode 100644 index 0000000..b3aa352 --- /dev/null +++ b/src/html/layouts/sections/tested_font_icons.html @@ -0,0 +1,14 @@ + {% set desc %} +

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

+ + {{block(checkbox_fonticon_fontawesome,'Font awesome',{link:'http://fontawesome.io/icons/'})}} + {{block(checkbox_fonticon_glyphicon,'Bootstrap Glyphicons',{link:'http://fontawesome.io/icons/'})}} + {{block(checkbox_fonticon_mdi,'Material icon ( MDI )',{link:'https://materialdesignicons.com/'})}} + {{block(checkbox_fonticon_zmdi,'Material icon ( ZMDI )',{link:'http://zavoloklom.github.io/material-design-iconic-font/icons.html'})}} + {{block(checkbox_fonticon_typcn,'Typeicons',{link:'http://www.typicons.com/'})}} + {{block(checkbox_fonticon_ion,'Ion icons',{link:'http://ionicons.com/'})}} + {{block(checkbox_fonticon_gmdi,'Material icon ( Google )',{link:'https://material.io/icons'})}} + +

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

+{% endset %} +{{section('Tested font icon libraries',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/tested_svg.html b/src/html/layouts/sections/tested_svg.html new file mode 100644 index 0000000..22dc1ee --- /dev/null +++ b/src/html/layouts/sections/tested_svg.html @@ -0,0 +1,7 @@ +{% set desc %} +

These are couple of well known svg libraries which is tested at this moment.

+ {{block(checkbox_svg_uikit,'UIKit',{link:'https://getuikit.com/docs/icon'})}} + {{block(checkbox_svg_feathers,'Feathers',{link:'https://feathericons.com/'})}} +

But my instict says, other libraries also should work.

+{% endset %} +{{section('Tested SVG libraries',desc)}} \ No newline at end of file diff --git a/src/html/layouts/sections/toggle.html b/src/html/layouts/sections/toggle.html new file mode 100644 index 0000000..2e2409a --- /dev/null +++ b/src/html/layouts/sections/toggle.html @@ -0,0 +1,11 @@ +{% set desc %} +

Toggles are simple show / hide type. Add class p-toggle to .pretty.

+

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

+ {{block(checkbox_toggle_basic,'Simple')}} + {{block(checkbox_toggle_icon,'With icon')}} + {{block(checkbox_toggle_plain,'Without border')}} + {{block(checkbox_toggle_icon_color,'With color')}} + {{block(checkbox_toggle_icon_only,'Without label')}} +

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

+{% endset %} +{{section('Toggle',desc)}} \ No newline at end of file diff --git a/src/html/macros/helpers.html b/src/html/macros/helpers.html new file mode 100644 index 0000000..f685e11 --- /dev/null +++ b/src/html/macros/helpers.html @@ -0,0 +1,6 @@ +{% macro sprite(id, viewBox, classes) %} + {% set viewBox = viewBox or "0 0 1 1"%} + + + +{% endmacro %} diff --git a/src/html/shared/app-icons.html b/src/html/shared/app-icons.html new file mode 100644 index 0000000..737696b --- /dev/null +++ b/src/html/shared/app-icons.html @@ -0,0 +1,2 @@ + + diff --git a/src/javascripts/app.js b/src/javascripts/app.js new file mode 100644 index 0000000..17e1660 --- /dev/null +++ b/src/javascripts/app.js @@ -0,0 +1,3 @@ +import './modules' + +console.log(`app.js has loaded!`) diff --git a/src/javascripts/modules/collapse.js b/src/javascripts/modules/collapse.js new file mode 100644 index 0000000..9932e49 --- /dev/null +++ b/src/javascripts/modules/collapse.js @@ -0,0 +1,21 @@ +export default class Collapse { + constructor(el) { + this.el = el; + this.el.addEventListener('click', this.action.bind(this)); + } + action(e) { + let name = e.target.getAttribute('data-name'); + let beforeBtnEl = document.getElementById('collapse-before'); + let afterBtnEl = document.getElementById('collapse-after'); + let collapseEl = document.getElementById('collapse-section'); + if(name=='before'){ + beforeBtnEl.className = beforeBtnEl.className += ' hide'; + afterBtnEl.className = afterBtnEl.className.replace(' hide', ''); + collapseEl.className = collapseEl.className.replace(' hide', '') + }else{ + beforeBtnEl.className = beforeBtnEl.className.replace(' hide', ''); + afterBtnEl.className = afterBtnEl.className += ' hide'; + collapseEl.className = collapseEl.className += ' hide' + } + } +} diff --git a/src/javascripts/modules/example.js b/src/javascripts/modules/example.js new file mode 100644 index 0000000..5140ed3 --- /dev/null +++ b/src/javascripts/modules/example.js @@ -0,0 +1,6 @@ +export default class Example { + constructor(el) { + this.el = el + console.log(el.textContent, '- From the example module') + } +} diff --git a/src/javascripts/modules/indeterminate.js b/src/javascripts/modules/indeterminate.js new file mode 100644 index 0000000..aa58ce1 --- /dev/null +++ b/src/javascripts/modules/indeterminate.js @@ -0,0 +1,10 @@ +export default class Indeterminate { + constructor(el) { + this.el = el; + this.el.addEventListener('click', this.action.bind(this)); + } + action(e) { + let checkboxEl = document.getElementsByClassName('p-has-indeterminate')[0].querySelector('input'); + checkboxEl.indeterminate=true; + } +} diff --git a/src/javascripts/modules/index.js b/src/javascripts/modules/index.js new file mode 100644 index 0000000..915be5d --- /dev/null +++ b/src/javascripts/modules/index.js @@ -0,0 +1,32 @@ +/* + Automatically instantiates modules based on data-attributes + specifying module file-names. +*/ + +const moduleElements = document.querySelectorAll('[data-module]') + +for (var i = 0; i < moduleElements.length; i++) { + const el = moduleElements[i] + const name = el.getAttribute('data-module') + const Module = require(`./${name}`).default + new Module(el) +} + + +/* + Usage: + ====== + + html + ---- + + + js + -- + // modules/disappear.js + export default class Disappear { + constructor(el) { + el.style.display = 'none' + } + } +*/ diff --git a/src/javascripts/modules/showcode.js b/src/javascripts/modules/showcode.js new file mode 100644 index 0000000..341f3c4 --- /dev/null +++ b/src/javascripts/modules/showcode.js @@ -0,0 +1,20 @@ +export default class Showcode { + constructor(el) { + this.el = el; + this.isShowing=false; + this.showCodeHTML ='show code '; + this.hideCodeHTML ='hide code '; + this.el.addEventListener('click',(e)=>{ + const footerEl = e.target.parentNode.parentNode.querySelector('.card-footer'); + if (this.isShowing){ + footerEl.className = footerEl.className.replace(' fadeIn', ' hide'); + e.target.innerHTML = this.showCodeHTML; + this.isShowing = false; + }else{ + footerEl.className = footerEl.className.replace(' hide', ' fadeIn'); + e.target.innerHTML = this.hideCodeHTML; + this.isShowing = true; + } + }); + } +} diff --git a/src/javascripts/modules/slider.js b/src/javascripts/modules/slider.js new file mode 100644 index 0000000..7c25afd --- /dev/null +++ b/src/javascripts/modules/slider.js @@ -0,0 +1,11 @@ +export default class Slider { + constructor(el) { + this.el = el; + this.el.addEventListener('input', this.action.bind(this)); + } + action(e) { + console.log('value',e.target.value) + let style = document.getElementById('pretty-scale-test').style; + style.fontSize = e.target.value+'px'; + } +} diff --git a/src/static/doc/images/chrome.png b/src/static/doc/images/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3a766afa9f130f2fc57bcb7f4f7dc6f533e3a2 GIT binary patch literal 1437 zcmV;O1!DS%P)N6-?dXn*sO{L3#yQ`;N#p-$ z^Yfk@^5H`UWPnW{`Lyl-%IDYkaJUjg7)%{p`{LK_2L!O~jW3C5#R>t=BH7hXeI%2r z%!2ms6QIGhuXk%NXP!md-cLDSSFR}#1|y8kg!rG(>;C{auikQ%#no$VF~qKX+=Cda z>U1KIm#kj1X|97$t8Si*XF~!x5+K2NG66xBil2vN%U%!cobyE>F9tB(Dp`7;IP1IktaeZ=O7OQjGdKqIRSA4}T1JM&33wyZH8Z;CZjT^X)cI z*_n?%eV4uB)ScudJvtWXgaA#;vIjqe!Gj;c;lT!Eu)=myUG-arSN)Nq+o4ECQD}ad z5(;L-UhfXT+14KO0B*kHh97J2HwTg5{hQ0;t&TRtZb7ITHofL`?7Hg{`Oz^gSMP3- z;Cky4&%9^idZV9_FaHevewPryg1{_eL=ip?yd_zYY4Q68cShZ0zrMo;Zt%}7#Oesw ze9Yt6eU~Tlj&C1jSR1_}AmG%?N-o$eKK!(&aLemof%g0!ilt~i+l+ab-50=a^y8PT zZ9HEHtTjnxC)u0+d?k0k@&Gsf#<%(8#kb_ti)UFj2(%dlqyUFT&K+;i$obiA*Psn+7!5XX)vktKVGH2`1Wkrs$GCc5%f5O8 zacV7Q8G?baAheXZ?Bp&mKte#b&Rn{_&tGq`hSyY?)(im}+Zdlaxzi>#00a_}2)G}T zbkrA2WMJUN4>tvl#%XS{HZoH|3Lsc8MVPI`b=M}=cK71-G*|*O2|AjcL*c5MZ{8slX>ag6TPl8J#tzXS#WS9rn=7a?o|*E{gt2@AdCT87`ZwI+m~W6 zz>g7j=P|xjW_i)$8KgBg|Y<+Er0gU1$s=GNCVyn$dE zU;8Mbw$)DoY~7Ea7XXh{{*i(`9cY2Xgbr0ROr;LjT(XiV=Yp$t^XTPA`Nh4!YfXmF zdvn&0foH@)3@MIk0a)fO-VOJ|Y$K3?2m)YLcR-f2b$Eb0TeCWfkKCpMUSco~&p>k5 zu9-5w1)ykLHhbc|x!xt$4uD(s`+5=nf>{q}HPMNHBxm1r#XGNA^PXFb$TdV8S3VzJ zR<+N6u2ZxCc!<&1dW&r?BYFzQSmO_oYpU!N}h9_nT6^B zca*b!KAdUif0=_p{NG<@dCGm5)O9YrW@rY502K#kZ{ykL zc_e3ZcK%aUKL68Sw!UN4;b!8ezZftHId@aYy=3D`zH#1J_Bgxtnh)O5SH9_5GwhtU rgTMUC{{4UeUiaelu^MFo&LaI6iCqb{!i7I^00000NkvXXu0mjf6)wSU literal 0 HcmV?d00001 diff --git a/src/static/doc/images/edge.png b/src/static/doc/images/edge.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2d4ee7ad6f0720354d5abbf5bb6cf004a94d7f GIT binary patch literal 565 zcmV-50?Pe~P);FS^F^-Ceyvo&O2qjdu!MG?h=F z51OEiG{br~Os4!x6msp_q3MU8vIiCPz9N!DWIN0>{#Dm`QCXzG9i`e;?=s*d2I@H( zlIWU9_m{mOE}Lh_YO`pL52&i=T)2nFNaYo_SMXWHlt|aicxHPS zz-F*CR)8|5!b=>&Q5*?yNPB5mtN>L^PtKSX^#4B-ptzaXk0`8fN!>|nXiva@ub(|G zQsaSHax2VHp2U;bw399}TeEqVL@d)SDCRn2>uGN+#HPqHW|(T&Wvc6EoWuf5z;vv` zHSgp-;I|bo$Yk%x{-JDs1T4?JaRZpKUhOh4e=uL=i|2D#1{y!laC{2fc;7H8Bm;YN zdX)l@*^&`RYYoF9imkJo0gSkNS6R9+8vpUL}AQ1e<%yf#uJ6;K1SFssn!= z8lLDGAg-b*72BtsGDEsvd_TsZWM!$zwTi58W}smnzEaIyH_RM9@!gMo`=M|A_#1)z z(8s$3P`Uagt305zp8IIh@L%w$x$m49P1Bi8<5%-%Htn02e~v$N9>jM#FJy91;M9d+0r{ zK6L8+zzg>M;hx3|c0I}gbfrJ*oibDK;zCqKB&*0ZAnUK#)BZ0le-gvvF|A-SwyN-p z5(5N*&xQL3*|>13+;!sufA;c==*(X6^xmFterWB(&+iuPtOl;MkW@>7w=vF9iBrKTl;9GuQ+y_G+{TrwU(Ely9>jU)8rZQWZg7NraENqd2$!cE z?;GO$3;qewD2_RxtU$pV{>7SlnU?o(8Azx`oj}F)Tp}!8*5WHy#(eP~3y5rvZ!)T~ zM9YFIZBk_|I(f<6H?1OTUku5hG0`qY{{Q<2?t69b7roAa_7olJT7vO`>#tH}Fm}Yy z*P6-sjcIfm4T3Nu#Zn~=T#;QrB1KATc#Ng@U&F&6yo0p)Gl^#hdd0rE>&E5{tnkud zmAoUNsT3(etWso#!Gk5ITrY39>f!X%46!#znp(2T!bK(&3*I)<$TL zCusX1R}F{kyth|+MXFI=U~C1}0v>c4N)TIiENJnNGyD1V*+nRp-l$;3)D}ann6YMs zpN-*ML6w4+9D|eHP_?u*@&nnqAWHYFF(=H1=WwhnxH`{;Yp=Q-e53SC0%II+UUd;4 zSpRQcvFbv;biY6IornC6pFH_@ter7PmK(BW!u;7C9 zhOeZ|bIzw^m$jnCC^i7GN@qey6X5~pogxs&&_2VDep%<=-c$zjHn9yDZNh!;ewxio z25C-Il;d?R`Ygo>ehlCxCqSM4zR2X2Mi6Tt6foEEm8>It^{QU_MtnvJkE^7YL;^x` z@-n?vhevKoX}1HKLmu7)GQQ7n_K>*>z&m_}<-UK-|MJ`I=9086TZ|D0YC=F1y1SHh zOA8KrF_)gH(@G1BOE8|#z2+y}ZArq;$;!xq07;bLQOjR14A@<7jRMFoH?6Qh<#{|L z&-ry+6BoyrID#-x#DiL_gpsoET*$sgfD>iOq>6PjbEeEv&b5W+pb%SE{=Ki}nTg`x zz}*1kYrEIdJyICJsi&Xxth_Alk}`_$q8mr72Uw^@N)Uips4SGe!3h*CFsd$ZifJbt zTO8;22Kw8T80mk+5&+(KLBss9(TF}cYrzkv$NoctSSmk4q7V}V;CqU(AlES<-VN6{ zRU_h>6JiI>RsX(xBzY##x1c99fb;%6-~jmh$b?lTdVYWZ8(%+bj@#H>dsug2sR}d? zQ9lqo3)XUIu5mL`~1=NU;aFJ@{^;=p}CxkFwKDl89K*gPO4fNPs UB<7mDGynhq07*qoM6N<$f-?hZy8r+H literal 0 HcmV?d00001 diff --git a/src/static/doc/images/opera.png b/src/static/doc/images/opera.png new file mode 100644 index 0000000000000000000000000000000000000000..f694f222a8f7c637f65d9253c6349344e4a0fd44 GIT binary patch literal 1406 zcmV-^1%djBP)<>wd6Un9^cWM-9c z1EVunNyP;UWZdchoj9E9!pdZp@Q2CE6F|b9?i&?dJy-I8aSb^+u!Jl11$oV@1MnkR zGP5lDG$%Y9SSCnKMGcX0kVB~cmO}me!1+I)*`cSC7{GG{`C2~DU7pmlL;-&>ONw(` z_?A%Q)dD5J5EaZAN!naWTEtmu0+Q1pE(YPJ=2d3C2Wb6m^r&9hi2S870Kld~zXHBv zwzRJLLx-#Zyg?=+!G&&1w#Ju-Pjw~|%=ZU~db7ldxQdH3=Yl=MK6?sqxE4jzjmQrx zH6B`?t$^>s@`k!UI+z8dfPlDW5^w*^$jNtoJW2kuI*ihXt1e%u`r2OACxB(CnE`=_ zoNWmY0S<s2P}m zdC+5N_XWV$@+tw4a)nPQ(#knUM({R+7_^<|XkahH)1IGBX3{de6<|!w`U?h~>f%CxS6OMPjNFe7iF?aX(iW zGm(CSX=?NXWEeM7&*cCpgkj^>22{WRlUtehW8b`RVIs)aimg`19~O}%9z1{m9$O0# zadVY06oAldb>tje@qGsle{;izR&eW$|Nra2A649=uSfziv-|%cX%&F>;xM{lnm)Z! z0YF==M+B-|X)4S92q5Pk_AtKxx1EdDYHnAElngTgGtk)V8Nm0Vz+G2ptM0W-0pB%S zIy0Bs;Y5mn0n#;#|1mtg4rodh_R^Rz#kLarnQUL`tGxqH8Q}+Vm$1YtEEL$@_ zyKs4oMlO(RMR=TpFznSFgu-mEnNtSP?dsZ#uB30dwT0|Zd- zF@V?z?wG}U-rnYe|_7Rv*oqwqIy1hQ>glUflO2l zl_2gWLw_0?dL*!Q;TGx!ImKIok30D05b2-)PW#)yfuB6)adJ$M>o)yek9{21`tdLR zCQqe0{qkx#CG#!lT|-!l0>`1UjO~4NX9zHWb9?Wl-#vQJZd5C`03_#ElDA2Zga7~l M07*qoM6N<$f;OG2ApigX literal 0 HcmV?d00001 diff --git a/src/static/doc/images/safari.png b/src/static/doc/images/safari.png new file mode 100644 index 0000000000000000000000000000000000000000..63b4d02cfbf853122a533251e6238e1f8df84f5d GIT binary patch literal 1680 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 V|0DIgxr8AAx>|;s_392W{{!8(h5!Hn literal 0 HcmV?d00001 diff --git a/src/static/favicon/android-chrome-512x512.png b/src/static/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..d4aeb2de8124565693e290f5d1d17a347a19bafd GIT binary patch literal 31831 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 z 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 literal 0 HcmV?d00001 diff --git a/src/static/favicon/apple-touch-icon.png b/src/static/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..91b419cb14798bc5f7c03d8881c241f67b4c29f2 GIT binary patch literal 7896 zcmbVxbyOQq)OOI~E(HP&?ry=oxVt+9w*bLuae})Qr_=e*}Vdv<3tyU%RyooDWyc_u+eOBo-B8V3LX;H#=A>LJV4|4uAaQjR?vPcH`v8DH9{_M@0|1EU0RWWVMculR z$Oo8q>dK0M=l_n?ovAyGarfR- zjUBn^TA)5MJe&#tnT<*)S739{e*v_Ap`rx4TMbHa3|uO z_}=}~Mj%KYO9)_O1%Zq$%zG1XZ`Q0l#GvYKhU3OX%D$t zYjFSdPEg3wQO&~XHQ1~KvhIrUPbDbHZ7B}JGeGOtys}tWSpMjhs*qAFMx_F_LB&j# z0wFzg1!6L}fjC*|RSRHmyl+t++xbzDbiuYghV%#yh89Niw+5PhZU+cGS8 zF_cd{HT}H6r6avXuu@K$WL1~b`#wJm9lOfZmKnkQUJa42S2wT+)+L(n*G5H+N@*2z z$jtX_J~a0TZcGr+``u1u(4Gng6D#>yu#JEJ3a>TgF((n89&(yy`Xz9%P zZe$F${HD^==ESTwyEW#wwWM}Z9i!1ZV0>@ZI#|khC-qf%wcaBjte!i}%>c+CKij4H6Pg-v}4;luKxX;F8tSpgD#jxE0x>XRPN(-n>(>q>>>1}s~T15!Z1BO z)UEH|yoRrs{(p~X>x~}AE$RBR8?Iy4)bSH42H?(nKV-O_5+8;HY$Bhq9YlQ^vHAhQU0t>Vb#b8MP~v<13&l21h@n~GXl z21RJ|EdsLK@kqBa6g-Ct5YM`+%BN3%Tny4M$c(wpXUk1*p@t@doVjwBzlfE;Oxg3c_A41b=eH(;ry03tjjwZ>_c13Z``b@O1rn%{%+;Yj$f#o%JrpFquP{vIV++O zL?KjMXst|zN|iIy!OmrvM&Rr2LJ;66NVcU_g^>2UiD<2)#f+UYl!b2tm`$Cu7}myZ0{ad4&Q z=23xgBP>&Yk22nxyy?G3Sxgs@H5?|MJnMgFLdd#2q1{FtLg(5BUBV|bHRoqSM>fyG zaI4PQm5s;BU|>A~Fy~Eyq(nr7hDjUN2(Xb{cjgVzwiisAth%VxO!oF6CYa994 zc)erORJCO?b#a<%Ebb(WWmbPTih4~;$7pF^F~XvPHE$_4v@jx;q4dkzYna0zR!KXh z)l_+F0`+*I%PGCekU&h=KQV@PpvdChONv<&>C z&fAG2-3|kzze;s$y!5eI%e+3OosOfGBo0*OCC~1NYaGi^eBeXSX6icWecx1;4Q^=I z<>7HAf0$Mwp1SEGXf>gpo%&dj0A>(7Dbz_E<+XNX+lmQaMCq^McbG#xjKhZ!hta6j z?=^c^2GgFoH-0KhT9FI$u}J;hSZ_Pp14WmlYb9(G$Q0f|2nK;ZFIbok~!*J0GjJlFEB5C5Lz@9u;nP|)# zWm+F^2Jw!(FZF+y=N+g$KN;L(3$ek)xAGDwtND{9c^LgAA=Tqw4HPiaqM7i;Nj?zK z?rb;I`B2ii03pdgkKaBpDU5dbE`HR_jIa0u4P}2N|ULqnQ*XAIjkXo zeD{80@rEj)?>+GMB#U@0tORF^Cw2q z?P7FLhZtPT$NMIeZ51doK-?CZNuNmzZuvPjZ#+I<-~LG1erlKcj>D_a1>V(nZ;AiK zbs9izc36Ec+a^nr_}$@qzf9ov5xGc3ld74tE_E2|+?w;Op^=D+X6zPskf#Y}++|1=H^=*@R*?()*5~nEHLY?TU{?mXWN@GHNKhZeS*aPn zm^{cxXr*IsNna(WA)-0-EUIfMl;Fb*X%uhb-UcoP=6diaUx{dWpSqn+MPmEuBY&Dn zHQdFtXd|zxh<`G(X_357dws3VcgOsO(VSSB&WqpsY0QdMq`dhVD6u3_5Cc9krui{y zzoLq@o6iM3gj6rP$O}Y%xQ#Ru4&}-ePmQQEXWlhK4p2nE_& zZW=hF@kY0ZxJ!I#@}k5nK#)7RP}mq6C(D05-2$f(lFMKsaAMR zVPdWud4=6aiF_TrIF0pu^l8g7*5e7be#t5IH!EV_V1TsM;ByMb#Be%y0&!7GR^(8m zBXKr5dno(U?DM<)9wO4`?x5qt`pcbE3cBZ>&l9J;;-EB>Z`Kcdp~v6sq|3}MA|_-5 zWDaSiY28=14fx#}6@h1{CEVll5~>5G`q%K3fjf(U%Xibm#t8T8r@NlZv(SxgP0cWo zHo7l4>F{RbDXx?-aEXQ9&(U2vEZUj&QU1{G+IwAIN1ZO(HzY_$gKtR*3X9!yay7 zPN*o{79K@OY((o0H(a304;ExT&-m7n$ceT0v%n){xMqf?0;ljLFUOnanI5fHyka~U zDn+S}2C+F1!%E|mZ^a{eba>DP8GO`xf3hL<`N%OJ-hHcncE+3YLK~wsOmYI2b|z0n zrf?0s#xEggKM5c)|1pbc4m8!`T0DQ;dkKwRWfGNNyfN{cO3yCbsGAToA(^?ok++QN z{Vp;~A<1%!9K(nbE{mt%C|_~8ke>UzD0Uufycl0S2*svY+8S$OU=0z3z>BjsG;{36 z(nY&>d0BB(P2GA;z=3B`e`h0PN+$|F`!*#}3cNwT3^0$g!p8&N(A1e*QpR&5llhnz zK149hfc-CUK6?sKH2ql7Nq?(U&tCd5j}~hu|LH< zrttFT>iEa_BBgJ@bJ}+Py8+#~2Tj`rc0*;hSZ{RttNdRoGboWS5os zE8O=b?cF-78Nt)X+4Y*+IzQ5;kvE1M9-=lS8_Q1Ap~8PhWKt2p{OX8!jbh7n|8he_ zHT0DMztsb9<-?KG7L7FR+a*-!fJsYorqZJe%&ik?Ed+# zN6A!~k?*?k*Ut)RuMWc=)~bXvRDd$v%mgY-J&#Hq8j);#cJoN0WU2nonimoC2d<*VJ_}vgON?=B=0J4x zY#|fKNyl+W&128A82iP)ghnIGl-nMHAj42`YARkxMZ@XY`(KN1pHM=Q(Opj9u{jc0 zfVw})OV5au@zaF`mRVl{o}GUsPaEzCp13dNU!BcqwlP$R-@RBHYJ3qDRlG9Av7LY> z59*&Vl$ZVJ{@v+{f2caDg3>8P6u&8iSvrDIR(QB(QMQDxwjF^3T zd@jxjdia-%sOlx6gF7<7JfNZ|Bu$RF_Wz(wH}Q>!pR};wn8-D3T`|3xKLXtUY{qXGJ=hCT=0`l%#~!W9R}g9qg2{v zTF9RMllrU4+K?3qA}06cotHsZgc-Z$b~3lR5hw_10G<&uA8YpX>5GI$<9D_ zdCYbpQ(BNaB8XP2MNG?JP1Bq7x^GGPc75esvE^L9=BJLj8x#8bZKc~-s(!=NqZ=au z-!!83W&Q=QKt^ue^)j!%(7W;)_m%2+n)LVtwk&y*Y{nii0LVXTV1E& z(L+Aj^7fO*RHF+-Jk>1q*xizacgl_m_4&AAfLm_exgdGC+wSP^H%cQj$M`AJZ^Da z(NWh&$JSKDJ@02nzW>Fh5u1!)jHSSR^tPpL@7A=4o1zI4GTgOink4UPPI@uCan*lY zm>$)CSf`9s=N4KlUOE@N@_tEHDMS8wf+&)X($7bXRS=bt9_qo}vFfZRN*!=-hXsZS z@I5LpNk2z^#ZOB9c?Hk;V%$+)mh&FD1lyshfn;EDxJovLax8j^f?wi!OfoMsd%Ukg z2G|~#eFK}!E~b$*H0@jM=Zk5<=hjuyIxj~i_@E+sMd?@P_XTGXDp6`2KmTA_PP@b- ztfnb~4$jpYhCHVs!a5B;L$4L;k%T`{_*w7%p^A1pUD8Nl)RWTQ;5S&8hXCsfLF(DL znpXJZmt;tI<>cYwuHe+tetN&>8UTC$sGXn~2M<^)ufUx=mNl%-DRxVs9F?Net5wG) zKYhRl^SM)XP}>^Wao=(D-r1)+JNb8UEtq07+Z@rcoxG9s2RXM`WkUn-(Tz7c@PGc! zZPd4g-@;*LUf|+8U~iUg3~&E3-?kRs-$gD1VtkRo607}!Q852I+DR0vgr$e@%8D#M zyU|O_Z#I3F5@E0VeuN4rX7`OD@_#&ccgD`M{jq`X7)z{EdmO|tWx=yGc*5psTwT5_ zeqztJ+QJ7Wop=$7aDERqI@E=RRRkwYq!j%yJHfU zAxWMU=i07STOj(iJyCl{sEOR2ClB{V{~S_tRoQn3C%4hEDiDVhPG--=eAx8F0l!>( zsm`X`+gViqpe-Z07EjSoKYlnF9Oube0a^|a<%o}B`SpbYH%ClYe)Hbj>@)m;p4F7> zGk(?Yjzct>XZCv7GrNp3t+hjAAvX9gW-1wHs8pd|?T=s@MwR_l9h}9B>0`U@-(G2k znEu1I)5LKr^_@YPg-0=dxKxwnbgR*|wO!5Rz1n=5Btsqx6S(+>eg-$)$$fe0VC=Hf z!GoH-6_#m_VY}|jc@4d%_bxP-A$cc>armX>U@XOzd#9>N zu#3oX00S!NsqL!<-pmwhV!lr4jZztd7 zUG)2YU?)Hw9HJG$IP0XDdB~kzirN!-t%&rQaC=fm00sc2F;{VH)b@6Y!`LTCV=kS5 zCV?tQ4v@s-I2EgZ-f_G96@<>i<@o$kZCe^&?*L&+aHal$Z2Xb#53rf7%uC?_Y4TM; z!~!!`B%-#9_dQ8beBapV1>gPSQpuI3jx`VyDc&I(2GqYL{5Y-7q|Eu-lCp}8KF~J5 z=G?J`E9fh|x*B|!XP|4_hj2r) zgeaDT>JZ=r@J$^kjQ`y~YQaLCek_u^aOubK$-H94#^oIuBFq>p!NaEQJNL?5{Mb-AaH?Wj3T z50LWQjgdCa?3J22N`bwR5zNnv-^~t_SH&th43MO1b#vHXGy(zuR*LV9C*D_?m8j=mBW&zgvUy43di|?wnjqi^LnX5KsXe4Uo1sOvqxl4fY4$4CoA3 z94|1^ia5TiF^eLvETIr^9y(B4iMZ*^TfBz(n0wkZlWzf#S!FO}v7!uT!jT?b?gdgs zW8CDMJH>hnFwx3=;w$WJv#N6tETE`;x}-~et)DF6o(={8+)Pi_kB~~hA>Zt8l|ui@ z^^XTM6~sYWy-h`rw$hCKV!y-A@;>PINYMsNc2KX2`v3qGdQ~^0i#r|7-OuC-({}SR z3obN&soU-j>rZJ?}yLBSRrOTu(xIf-ZhBCVFw)J9{^&1vGM z(Gj3)M}Qa=H^qe#ARNGZ)?8t9o_h!8cC*$nYqv z<~`Cx46BDBjl(s&*V&q{pAWx+_;isv^9l5&_#e#FgqD5Pwpdc^GF0A?^9T8Ep z!72^aD+vI4bV#A*)U|jUq?I*}14$ZWaD33aCKOaX_H`FWHM^=@RTMUdl;j5pWKGHn zkf~;-MHBwCHF($k{TA^|7^@OV;P)vUzcJnjT! z!+XQ1ygucv7}BJv3F0%`Ydf{R;x#P8&2qg15yF|h?Kz8oJnGP}umWMptieFd`8Hg-I_R1E ztA&R6B))s3N(}@JgfvQ1-D16Ke!;d&4f-d`-ku%9~s(zh`8>`r8ljP0}om; zXfcz6_YAe_;r3{9@@42Dp8SI3oE&Tzwd`ypn84U{5x2&|8XtsQSiC)&m7<^O^@E<1 zxE0reZNFGw3YIutRDBK|WksjxzLB2x){<=6v|cyVQ8>`AFU`(S%K?IdK2XjYvi|ik z+%Ilj2XT@a(%5@4+>9a*(*5n#K*_=oQ>9TOQq4$){YdesRpJvjy3eoczgOI7?6X$J zq=KM2SqQdeu}a$QGGoiAP}vurvD8v18C`OnUtB>ol=kOM!6yPJS(#1d$YYCS*)WPV z40yRTb4Mfdixnxk_sedJqz!o*x5z$dY!x-Db8&YdGr7iN7mvKUELS7LW& zY)Cm)b-HW&^sz|a#>YS^f8o!7FLpGE+XOV@^X{tg) z)v&45fqdRFsi-KbWC2hkqa&F>O0s6kNJ%H1K|{!;T!l1DqDy;WeNB&;Fda<2*%Bt5 zhHp^)f8Da&c}7#w46^M|?mS2C%Q8ciOrQ?7P)BilUq@sC5a8n%<>u$(<`*^K6A~8^ z73b&Y_;_e8726;Pz zT)d(70069L`y3C;$B2z>LL2c-bw>|?#)!*fk4wr(s-8)PMha4l6dH0sWBg + + + + + #da532c + + + diff --git a/src/static/favicon/favicon-16x16.png b/src/static/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..06f909a178840d5c3fae7228d7febda75952dc2e GIT binary patch literal 1191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>t#=yCHkPfp(QLdKq=t?N=olb^+qjTH10sS(LKKu7 zc+jA~9!(0)1*$1N^Q6H5p8|;Y;aZRxKqYAyIZ*BX-MbGJ4Is5re-s> z<<9?jt|WPR_1C<>&pI+OOQpMXMNQ)H=xi*PZ!4!iOb0e z2?;4ro<0^A5D^j+Oif{6ax*OC^wi|cl#H~joWQVnMbn~5o4Qub+SRs9EW#n$J-lCV zjTqAxULIG8nFoB*(v*|M*o1?Pi@Cki1g@XDb?jQ-!FvZUp1j#QbL!2jXYU@qe75^w z^vUDb&)+vvFwnT6rZQ#bOhq5fIl4+lT2^Xidh=`*4LcQYDz++{>e?z>O`bW^P}{ow zpo)3_WbOS63>qX~r0@nCv;AH4NGNZ8P@0^A{pvM)ni@B5^4c!-#K7&?tXp@i+!kDZ zEv?{}KP4k8kMU&3)@_Zp>MKL8^L^Ay4s-8wNS_|b>Y>iCt3*%q#Dhv;=44PUag8WR zNi0dVN-jzTQVd20hUU742D*mkAqFN^CgxU#M%o5ORt5&i5}VecXvob^$xN%ntwG3@ zO9-eTyecH3Bq*_5p`a)~Ei)%op`@}PRUxyWB$Jc1ICAEQ%n|m}4IT@;^cY@=3zmFxGMx&v Og2B_(&t;ucLK6Ty4+hNu literal 0 HcmV?d00001 diff --git a/src/static/favicon/favicon-32x32.png b/src/static/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..a582aa18f9c342e7fb639b549ee73e618f0952c6 GIT binary patch literal 2047 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081Jlz0pAc7|g3|4GOSj)C z-FB}G#JE?y?M{R7hO$*R8%;KpExq1gys@h6c=^I>^~M{Dcibu2akqRsQ02X{9rw$2 z+$#klkgj2ifI$I4KtICSa1l&FpcFhb(9~mcv1-Sv3}Pmx6tW0@dvTe7M;BZQ$UwFT z$VQezlZ8k@)FUf{n}94xYc|l*|NsAct$SP!Oz2-qg8YJkG#0>P7*jWCN?V4#7!#v% z(Vpi&|GYof@4zWuefQs|4caz`{+?YkW9rf)FBC!^U2iZKWY)^uzeO?l<+~1fKB4>f zf`oTHaL)S}A$4&wi)yY!ym;}gzh$f|MET-Q|2cW%yB9~~naM0(JAZyzY5hU|`a5T4 zi>04`?e*h~{dKhZ-xfxV39rs43*>BLlRT9ueXmL?Ye)2VS;5o`(Z_kY*R==iU*=v` zVrl#O>n`u#X>vb&`p+itzg>RgPQpo%hbg^k{Oy-gUzrs|n%tS`qJCS)>e%P-*PTzB zEWWIr_GY%)Y2*3{&BD2h;((rJO!9Vj`F7{FS0a$ZS>O>_%)lU~3c`$@K`I}Bg6t)p zzOL*Kxdd7CdDd4=a|4zV^F3W0Lo80023N-P1d9A!_g2w++l&d4m!>Q-;#|36ir8BT z?~bHjQ*2!{rZ{ouE}2k!TF=|%+uAjrEpL9m+xLI(`pjADHNUU_zWe!};`_V5$Mjuh zF)?~^$2IB3*68xZazPJDm{V-4CBK_FiWLQKwtFTP(9V2e`~0P%S%-J+XOimvpk~IL z6M3uT!GeQj&TnLI+`J(;tLsTSpYxWYqB6;Mw|JJYwQ*Ht*yE;D_4`Lw5kuX- z(t_y>M-Bw8`x+nTEMdzQXesuu`>=&&-~0;#eh~&v7hH~bPF~1pQE@7yQ9#Lksq~e0 z=jFcPt%jU+Y{C;v)fYZo(#p{{!!p}!Y4IV>=houS&*n?+OnA6RBZ&F+#1luo7iq@s z%CS5>^LRo-{^}c|B~P^$rA^rJ<0|JAwRMrZ`(6~r1Q{)p*pfGS*Sx$A0S*;iTjj|? zq1TT2zT&>QZHFbh$2&2py`ev@Z@XgSm3i-*tZCI9Kg)MXESswN&))L>_SSyEA`@d} z+qF`8tJj~GH97dl`M|`(?i#jLZz`0Qa;iUi>`}_?FE+>OtmMo^mnI9In7Mh&h6$Hm z6hBwK`f9@CMpyA2-F^`@oVPY^k5Ahg8on;>vIzTmhdp_RKbi}?O<6Np<%il{(P^t2 zBU^75?FkOL`zol_L81KpU4P}RcU#zxb?`Uxz80MPfYmKzj#wH~s@jhoa|9oB>PCgX z=#zf%()fs1;;Dc`OQxJJ&HZ;s?qjOx7V&fIy#$%}9GTY4_jJAB{gxH^jC*R2>-@hL zm>u;$M>T0<%XO6{qVg=a>;F7?e{15+xQTNo_56rT3S7-;^tmQ+ebSkIA$6hpd{J#5 z9?cSXvPNY6z3uNqt^PB;>}M)(Phr&g^zUWxIr9zo=l-cv{rfNZ$M!SJT$Z)|XFL}p z`#D2ZNf?-VRZCnWN>UO_QmvAUQh^kMk%6JPuAzahp?QdbiIs`Dm7$TgfsvJgL9)cA zbtoEg^HVa@DsgKNa^(^NY6!0ii6{w5ELSKf%1_J8NmVGREJ#(zEGS84V5pe$_!AFD zVVH)-DgV=FJf8+JFe`KGC36ca3wuu%VHQ?!X)rmQ!mPYGMB(&}D<_VeIU;j}{d9xJ c0xvy=SK@*tpPWpm01boFyt=akR{08z!}+W-In literal 0 HcmV?d00001 diff --git a/src/static/favicon/favicon.ico b/src/static/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..407e9f11934c1e6db21a9c0a826c2b4f1766ffce GIT binary patch literal 15086 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 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + diff --git a/src/static/img/checked.png b/src/static/img/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..76876ab78a30d597d85fc09ea88b8841625065a8 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*x3 z7#M+i7`Yh5mh3qV6qGD+jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw=TsHi%? zC&cwX5HK+OZ(#WE;P5p_^KFpITYsJRL7E=|R6Yc%e+X9p7^Lw&SmQ&m29N>deh5&)YxiLV*^`Wkj`!OF+jo1JGJMs6fsFt_caR1!TX){~ P&~*%+u6{1-oD!MlpinR(g8$%zH2dih1^v)|cB0TsOs@CkAK z|NlS3|NrLOmH-)+JLY`-`qgUd9II^$e*OAozj40pmN|Bt=GttTXS;c>?dEy5Tjtts zns@*8ORH5=Z8p!h-8|oJ6G+Nt(>%M)^K5_$U?foL*{2Ube*Ad<{yj+J=6Tj@XV`3* zZMz9%j{TPTj$0QvZ(ZQBb)n0)MQ+;`d2C)5jgr=LGM_wvc5SI@4!et!M=lbg?<-g@!$ z&WmTS-@JMA7Kq-y`||nIr%#_hfByFE+xPF^fsXld%ux{NapjUAzhDMNJ^>*~d1X^q z@36FtoPxT#miDfhi`H)1ck1$^XRqJA|NQm!_NmrD<%>LB9780+WBacPH8BXdUVnE? z?Dp2(yIozr{kK2f%E)e;|NLA|48t*5&!@#FCkXR2iCz)>%O}2Cw^!|O(n)TCf4?61 zWJ%hDUjD5fG~cj8$;@2&+r5dkvh6&Nradt%Y-8B3|F(x-Rad28*$T(K=n=fuSK&#co*n3MZ<*)H)n*N#ivfB$;M5B>COTd)0RP&xJN!U<#+|`6hN?g__V5eCXvoN| z_>4=8V=jpYV~nb#E$rfXRal&uO35C?)%zR36<*d7C*ph(4-{~lSWAm0bd-n}lDNO5 zW*;BYq7#4dJ|isVVmw2AZg7sC446nJqgYDfzO25E+1%g&9}BT2ag*+*w@^F5WNxsE z?UJ*Npu2#*P3anQgV)8@)aXJ5JNWhp&subbcQwQf_=;n^C^HCHPVqJ{h8FbT6Mo|e zul_MF?DPg-aEh3o?{`e2QkE{%`pzMQMqI@I{P%lV=4}jkNqz1B00002?- zP7r3aoL#UD$dD{?jVKAuPb(=;EJ|f4FE7{2%*!rLPAo{(%P&fw{mw>;fq{|V)5S5w zqIc@$_1?~b630HCZ{=)~=#dgBEOq?TdNg6i2CWF4w9At&{y$*yhx^F>19^rzGvBBk zW>N21=))3!dhVIc)#hanraZSj|9#*4;&&&N4z1BXy-91D@*_u=Gg}H9_*wMYABoM1 zn2~hP-QJu%?tw&eOh)p`BYT?fbyya#p6~q8GWE!w&hJlRq>Brti72(_J$WW|Z&H=` zYQe-GtznEynuYhM{Sxo{x9c>c=p9jqOSTS=?^h@nhZPtf{L}d>VuxphF`HG$#B;OXk;vd$@?2>{yirX&CW literal 0 HcmV?d00001 diff --git a/src/static/img/checked/004.png b/src/static/img/checked/004.png new file mode 100644 index 0000000000000000000000000000000000000000..8339ad6d5fa4892d0d03f477277d32d0e82f6166 GIT binary patch literal 322 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 G`2PR_BKGwF literal 0 HcmV?d00001 diff --git a/src/static/img/logo/pclogo2.png b/src/static/img/logo/pclogo2.png new file mode 100644 index 0000000000000000000000000000000000000000..80da84346f48a43eafbd6b404924c2ccbc9b6ef7 GIT binary patch literal 66497 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%0AwRiI7+(HnrAQXf~{MN6aXa!E(4ku19@e|sf z5cSBDK$2iv{prFb?IB7iX7uefTheq@rRIkWV=t(%X@p*##mL`}p4oA59zzD6DX+Mh z+(>z}t-Laz8TQzkas0Y=0JsmQDvCJ2mU^=aW9Q~KOV5Y z8RQARbaVrk39y%;rb}l+#ueU?+@AKC#z_Lf0Wwfd|ezap5*qv_(u9CF zF-soMT0{;N0WawB@Nmb`7l=_hCuim=&*w3{(5%A4h|BwwKbOde5&)3efnLD56bztE z5$p=GYOqL9mL&j?z%fMFC`j+>-5YLzhyIjuQ{T)E&sxU}-44#tWAJOBhEB>q5> ze*aQV=+)v$_`QnYLoO*r->v(H$1sFQ1e{0v4xfwTA04(3uIdp2X5;LWWQp}yApiyK zpIma|FY`WpDRM`8Dh}Ozx=}qQaYTTDjX+ZGO7#yGEr{toc2cl-IXeNl|hj;6lGO-}3nB zujPGs%0ClEuh%X91OppSbGG(BA7QaJa1KpU0D?1_-a@i)9LWZ6A*FI={$~44CI&SD zcaIlT%`=kI4*rr$wEhPH-BuLySRkw$_oL82g&Go9_aa_w@Bo*bHvVJo7x5_6#0az( z#^gcxj_;>NKPg;_c;qBVuZdd5lPEQDt1Iq|Z`N7A3?~%VA>YaZ0ak;mP<-*vsim)ST z?s-?fh%e6er9XotI#_Sf)X)E1UXZqxlNL~Pn7P_1~Zs6KW z`-aWY;PkH_Tf?mbP8auE(WmFfc4mt^CO%@Bq_!V>@VZ{k%}4o}W3l+kcIMSIHR3at zo<*x~ev7*aa8*@Wpp$kqEq&^B7O(skhPsV^FH|7*D}$+P*aTfnEb&}axNd*u#0&VV z#Lg>=X?i75ax=+9hOTrd?%TAV!75w#loO;VSmjlmj=jw9zr1HJ&%Brts6cBjSKjF$ z5;nW%AN{Iujj3e3oq>sS&{bmeWpbAB+!0Hm0}UXrJr|#SeipUg zO3ua{|K2N&d}~pZW{9hH{SHmZOj2gUN4`blvkQS>4eqH2WC%&SJDa)Zd2vPW=IzD_ z@wY!VT1#!03B!6X^x7|%`z5qCn8O>c+}lJSo!Y3-$oovCeqD=wQorNAKT4%k3-v5q z2-HMWTa2MLsc=4-39H(l_1LQmOmmCx4(EuzRbq0?Nk`Kc!79gZrICMy{gUwcQjY#k zd4-7S;E^H5f_(*9Q>i19SSho{EDs;K*3$G@k+c;HG4a{SmtOs&pV}vS_qfJ&0`{KtdJK`P*tke)mILkH$-J#&>>{kRr0Z&5!L-}+6l)*R zq(ZgZuQ0In`rCLR^VZzjNn?$}Cq*fax6yAu5QLB^QR$ZbTzAo@$9tK|y)-GKLTLRA z!baok8=@@fcERLewr#Mkq&?_qkub1rcU(rBb6iGFE02&ZMx2zwI8V$``N@Bbl2}=h zy5FAQTQx*&E_NgZ>NV=9I@4M3HZkF1f6F05DuVo_&Yo4^6T5S%#OI>L?{qWpB$mR6 z3MyI-`JI2CeSe3T`e&MzK7Msysme5t#YygQe&CBbmO5FU%|#yRK5Ch=$}q@y^x zusUp|i?}%Cw`Z$cD#^c~Z!`z2&FM?>I;DAC9==?oT=E;MsTss6O{_VA-^>W>l)lAo zG4}ehpu&&=RJOf^%57$CE5q{0KCZnFKlL@z@yoZG-5F)r*=>{yQ7}scOV2o`JP%(# z-LS>ah|kGj{uu{Bk>%zSVwYKWBqa{oνt2dobUmCX=X^^#C1=OF6p-D#Cid!5e6 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 literal 0 HcmV?d00001 diff --git a/src/static/img/open-iconic/x-6x.png b/src/static/img/open-iconic/x-6x.png new file mode 100644 index 0000000000000000000000000000000000000000..175e6482a677811a5a181be6a058243c39dbc3a9 GIT binary patch literal 706 zcmV;z0zLhSP)w z1E3E)toU7Mb+W!qpCSjq82ASaiMNOraGLe~4zyj0)(Dj9vzhU=kEO_}3aO4Xw|G@D9bA*>Kfu1kC z^8+>k|IxAUHE^s#ea9m5FJ^qe0>R4zUY5Q{hm9!G+o zdc{L5qBJD}!B@TyLM)TMqW~{;GN@Sa(k7PkUhvW$)yGYX_=er4 zdMaKCFLkjw|Fj~dhYJDJmSWe9Z$lfxZO438^!{Eg+|nd>;4({08n}uLyI%Pn^Gpz<|%> zQFw_}>=a=Z_`$#a9s@%@lGlQ_RD>DeJGK2i0Y+L$-U!}85vGA}P5f;FqiK@IftOfA zY2#_23a}f~-%Fs7BzY2eiTgl*OGxom0jdf8y#~hOBu@h`v5x26w}vVthnLs}N{y1Y z0`GnIt)U9(;Uzu*6Sb22fRFCJ!@j8hszU4V5<5USn%pP6#0HQz2rp3ureuK?&&efT z0LKi%OPrTQ`f%@ajYYOd_zDUHf9e0lG>h;GC|ZUOQG~a^am(=0BCIJb{th@{8D5lA zEW$_Xyoas8M~m=4$;^TGur+v5Kk!J&R27)C3@;kMwYM7Pc7b!2;YCBZ_Ey8BR(OLK z4ddF|tidvY7v+KH1^_dG7meahSh5Dq1YT6YwYOOVX96!O0&hGRKa}vIG2AgzTf&P< zzF)ZsdNhc$KXORnuH1gZ}u?=2`{k# z90>u}Ol88uODvLc5we7rSOPk? zNjS$iP5dE5U-01C+C`;x*MY$}@G~?YKh=Pb7GX(g{bw{8+?u8S;Bg3eQ3tNQ)$p-J zopGHx4vw5>0Us^GvXY-|+(GW1&a!{mzyiFe6W88q_}am3^nkl&Vhvu@g==p${O!#N z=5W_ctieZ%a6{Xl&q)xCGrMm5O|;haHv~M@O71~Dz#VOWBc%U>65_PB7uVjZ`b#qe z5%Q=y%|vTre+Aq%6Kn9I9Im}p^%v*+f0iF92664Js=pHMnu#@dQ6AUcs`{J2bxzjc zMMc~owyM7}@Kr0h2aU7;okGpu6p{APpeC{H&!+wW#LEk*Y>F#K00000NkvXXu0mjf DaTBaH literal 0 HcmV?d00001 diff --git a/src/static/manifest.json b/src/static/manifest.json new file mode 100644 index 0000000..1eb305c --- /dev/null +++ b/src/static/manifest.json @@ -0,0 +1,27 @@ +{ + "dir": "ltr", + "lang": "en", + "name": "Pretty checkbox", + "scope": "/", + "display": "standalone", + "start_url": "./?utm_source=web_app_manifest", + "short_name": "Pretty checkbox", + "theme_color": "#105B63", + "description": "", + "orientation": "any", + "background_color": "#DB9E36", + "related_applications": [], + "prefer_related_applications": false, + "icons": [ + { + "src": "./favicon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./favicon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/src/static/ngsw-worker.js b/src/static/ngsw-worker.js new file mode 100644 index 0000000..0d4112b --- /dev/null +++ b/src/static/ngsw-worker.js @@ -0,0 +1,2451 @@ +(function () { +'use strict'; + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Adapts the service worker to its runtime environment. + * + * Mostly, this is used to mock out identifiers which are otherwise read + * from the global scope. + */ +class Adapter { + /** + * Wrapper around the `Request` constructor. + */ + newRequest(input, init) { + return new Request(input, init); + } + /** + * Wrapper around the `Response` constructor. + */ + newResponse(body, init) { return new Response(body, init); } + /** + * Wrapper around the `Headers` constructor. + */ + newHeaders(headers) { return new Headers(headers); } + /** + * Test if a given object is an instance of `Client`. + */ + isClient(source) { return (source instanceof Client); } + /** + * Read the current UNIX time in milliseconds. + */ + get time() { return Date.now(); } + /** + * Extract the pathname of a URL. + */ + parseUrl(url, relativeTo) { + const parsed = new URL(url, relativeTo); + return { origin: parsed.origin, path: parsed.pathname }; + } + /** + * Wait for a given amount of time before completing a Promise. + */ + timeout(ms) { + return new Promise(resolve => { setTimeout(() => resolve(), ms); }); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * An error returned in rejected promises if the given key is not found in the table. + */ +class NotFound { + constructor(table, key) { + this.table = table; + this.key = key; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * An implementation of a `Database` that uses the `CacheStorage` API to serialize + * state within mock `Response` objects. + */ +class CacheDatabase { + constructor(scope, adapter) { + this.scope = scope; + this.adapter = adapter; + this.tables = new Map(); + } + 'delete'(name) { + if (this.tables.has(name)) { + this.tables.delete(name); + } + return this.scope.caches.delete(`ngsw:db:${name}`); + } + list() { + return this.scope.caches.keys().then(keys => keys.filter(key => key.startsWith('ngsw:db:'))); + } + open(name) { + if (!this.tables.has(name)) { + const table = this.scope.caches.open(`ngsw:db:${name}`) + .then(cache => new CacheTable(name, cache, this.adapter)); + this.tables.set(name, table); + } + return this.tables.get(name); + } +} +/** + * A `Table` backed by a `Cache`. + */ +class CacheTable { + constructor(table, cache, adapter) { + this.table = table; + this.cache = cache; + this.adapter = adapter; + } + request(key) { return this.adapter.newRequest('/' + key); } + 'delete'(key) { return this.cache.delete(this.request(key)); } + keys() { + return this.cache.keys().then(keys => keys.map(key => key.substr(1))); + } + read(key) { + return this.cache.match(this.request(key)).then(res => { + if (res === undefined) { + return Promise.reject(new NotFound(this.table, key)); + } + return res.json(); + }); + } + write(key, value) { + return this.cache.put(this.request(key), this.adapter.newResponse(JSON.stringify(value))); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +var UpdateCacheStatus; +(function (UpdateCacheStatus) { + UpdateCacheStatus[UpdateCacheStatus["NOT_CACHED"] = 0] = "NOT_CACHED"; + UpdateCacheStatus[UpdateCacheStatus["CACHED_BUT_UNUSED"] = 1] = "CACHED_BUT_UNUSED"; + UpdateCacheStatus[UpdateCacheStatus["CACHED"] = 2] = "CACHED"; +})(UpdateCacheStatus || (UpdateCacheStatus = {})); + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Compute the SHA1 of the given string + * + * see http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf + * + * WARNING: this function has not been designed not tested with security in mind. + * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT. + * + * Borrowed from @angular/compiler/src/i18n/digest.ts + */ +function sha1(str) { + const utf8 = str; + const words32 = stringToWords32(utf8, Endian.Big); + return _sha1(words32, utf8.length * 8); +} +function sha1Binary(buffer) { + const words32 = arrayBufferToWords32(buffer, Endian.Big); + return _sha1(words32, buffer.byteLength * 8); +} +function _sha1(words32, len) { + const w = new Array(80); + let [a, b, c, d, e] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + words32[len >> 5] |= 0x80 << (24 - len % 32); + words32[((len + 64 >> 9) << 4) + 15] = len; + for (let i = 0; i < words32.length; i += 16) { + const [h0, h1, h2, h3, h4] = [a, b, c, d, e]; + for (let j = 0; j < 80; j++) { + if (j < 16) { + w[j] = words32[i + j]; + } + else { + w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + const [f, k] = fk(j, b, c, d); + const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); + [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp]; + } + [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)]; + } + return byteStringToHexString(words32ToByteString([a, b, c, d, e])); +} +function add32(a, b) { + return add32to64(a, b)[1]; +} +function add32to64(a, b) { + const low = (a & 0xffff) + (b & 0xffff); + const high = (a >>> 16) + (b >>> 16) + (low >>> 16); + return [high >>> 16, (high << 16) | (low & 0xffff)]; +} +// Rotate a 32b number left `count` position +function rol32(a, count) { + return (a << count) | (a >>> (32 - count)); +} +var Endian; +(function (Endian) { + Endian[Endian["Little"] = 0] = "Little"; + Endian[Endian["Big"] = 1] = "Big"; +})(Endian || (Endian = {})); +function fk(index, b, c, d) { + if (index < 20) { + return [(b & c) | (~b & d), 0x5a827999]; + } + if (index < 40) { + return [b ^ c ^ d, 0x6ed9eba1]; + } + if (index < 60) { + return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc]; + } + return [b ^ c ^ d, 0xca62c1d6]; +} +function stringToWords32(str, endian) { + const words32 = Array((str.length + 3) >>> 2); + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(str, i * 4, endian); + } + return words32; +} +function arrayBufferToWords32(buffer, endian) { + const words32 = Array((buffer.byteLength + 3) >>> 2); + const view = new Uint8Array(buffer); + for (let i = 0; i < words32.length; i++) { + words32[i] = wordAt(view, i * 4, endian); + } + return words32; +} +function byteAt(str, index) { + if (typeof str === 'string') { + return index >= str.length ? 0 : str.charCodeAt(index) & 0xff; + } + else { + return index >= str.byteLength ? 0 : str[index] & 0xff; + } +} +function wordAt(str, index, endian) { + let word = 0; + if (endian === Endian.Big) { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << (24 - 8 * i); + } + } + else { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 8 * i; + } + } + return word; +} +function words32ToByteString(words32) { + return words32.reduce((str, word) => str + word32ToByteString(word), ''); +} +function word32ToByteString(word) { + let str = ''; + for (let i = 0; i < 4; i++) { + str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff); + } + return str; +} +function byteStringToHexString(str) { + let hex = ''; + for (let i = 0; i < str.length; i++) { + const b = byteAt(str, i); + hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16); + } + return hex.toLowerCase(); +} +// x and y decimal, lowest significant digit first +function addBigInt(x, y) { + let sum = ''; + const len = Math.max(x.length, y.length); + for (let i = 0, carry = 0; i < len || carry; i++) { + const tmpSum = carry + +(x[i] || 0) + +(y[i] || 0); + if (tmpSum >= 10) { + carry = 1; + sum += tmpSum - 10; + } + else { + carry = 0; + sum += tmpSum; + } + } + return sum; +} +function numberTimesBigInt(num, b) { + let product = ''; + let bToThePower = b; + for (; num !== 0; num = num >>> 1) { + if (num & 1) + product = addBigInt(product, bToThePower); + bToThePower = addBigInt(bToThePower, bToThePower); + } + return product; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * A group of assets that are cached in a `Cache` and managed by a given policy. + * + * Concrete classes derive from this base and specify the exact caching policy. + */ +class AssetGroup { + constructor(scope, adapter, idle, config, hashes, db, prefix) { + this.scope = scope; + this.adapter = adapter; + this.idle = idle; + this.config = config; + this.hashes = hashes; + this.db = db; + this.prefix = prefix; + /** + * A deduplication cache, to make sure the SW never makes two network requests + * for the same resource at once. Managed by `fetchAndCacheOnce`. + */ + this.inFlightRequests = new Map(); + /** + * Regular expression patterns. + */ + this.patterns = []; + this.name = config.name; + // Patterns in the config are regular expressions disguised as strings. Breathe life into them. + this.patterns = this.config.patterns.map(pattern => new RegExp(pattern)); + // This is the primary cache, which holds all of the cached requests for this group. If a + // resource + // isn't in this cache, it hasn't been fetched yet. + this.cache = this.scope.caches.open(`${this.prefix}:${this.config.name}:cache`); + // This is the metadata table, which holds specific information for each cached URL, such as + // the timestamp of when it was added to the cache. + this.metadata = this.db.open(`${this.prefix}:${this.config.name}:meta`); + // Determine the origin from the registration scope. This is used to differentiate between + // relative and absolute URLs. + this.origin = + this.adapter.parseUrl(this.scope.registration.scope, this.scope.registration.scope).origin; + } + async cacheStatus(url) { + const cache = await this.cache; + const meta = await this.metadata; + const res = await cache.match(this.adapter.newRequest(url)); + if (res === undefined) { + return UpdateCacheStatus.NOT_CACHED; + } + try { + const data = await meta.read(url); + if (!data.used) { + return UpdateCacheStatus.CACHED_BUT_UNUSED; + } + } + catch (_) { + // Error on the side of safety and assume cached. + } + return UpdateCacheStatus.CACHED; + } + /** + * Clean up all the cached data for this group. + */ + async cleanup() { + await this.scope.caches.delete(`${this.prefix}:${this.config.name}:cache`); + await this.db.delete(`${this.prefix}:${this.config.name}:meta`); + } + /** + * Process a request for a given resource and return it, or return null if it's not available. + */ + async handleFetch(req, ctx) { + const url = this.getConfigUrl(req.url); + // Either the request matches one of the known resource URLs, one of the patterns for + // dynamically matched URLs, or neither. Determine which is the case for this request in + // order to decide how to handle it. + if (this.config.urls.indexOf(url) !== -1 || this.patterns.some(pattern => pattern.test(url))) { + // This URL matches a known resource. Either it's been cached already or it's missing, in + // which case it needs to be loaded from the network. + // Open the cache to check whether this resource is present. + const cache = await this.cache; + // Look for a cached response. If one exists, it can be used to resolve the fetch + // operation. + const cachedResponse = await cache.match(req); + if (cachedResponse !== undefined) { + // A response has already been cached (which presumably matches the hash for this + // resource). Check whether it's safe to serve this resource from cache. + if (this.hashes.has(url)) { + // This resource has a hash, and thus is versioned by the manifest. It's safe to return + // the response. + return cachedResponse; + } + else { + // This resource has no hash, and yet exists in the cache. Check how old this request is + // to make sure it's still usable. + if (await this.needToRevalidate(req, cachedResponse)) { + this.idle.schedule(`revalidate(${this.prefix}, ${this.config.name}): ${req.url}`, async () => { await this.fetchAndCacheOnce(req); }); + } + // In either case (revalidation or not), the cached response must be good. + return cachedResponse; + } + } + // No already-cached response exists, so attempt a fetch/cache operation. The original request + // may specify things like credential inclusion, but for assets these are not honored in order + // to avoid issues with opaque responses. The SW requests the data itself. + const res = await this.fetchAndCacheOnce(this.adapter.newRequest(req.url)); + // If this is successful, the response needs to be cloned as it might be used to respond to + // multiple fetch operations at the same time. + return res.clone(); + } + else { + return null; + } + } + getConfigUrl(url) { + // If the URL is relative to the SW's own origin, then only consider the path relative to + // the domain root. Determine this by checking the URL's origin against the SW's. + const parsed = this.adapter.parseUrl(url, this.scope.registration.scope); + if (parsed.origin === this.origin) { + // The URL is relative to the SW's origin domain. + return parsed.path; + } + else { + return url; + } + } + /** + * Some resources are cached without a hash, meaning that their expiration is controlled + * by HTTP caching headers. Check whether the given request/response pair is still valid + * per the caching headers. + */ + async needToRevalidate(req, res) { + // Three different strategies apply here: + // 1) The request has a Cache-Control header, and thus expiration needs to be based on its age. + // 2) The request has an Expires header, and expiration is based on the current timestamp. + // 3) The request has no applicable caching headers, and must be revalidated. + if (res.headers.has('Cache-Control')) { + // Figure out if there is a max-age directive in the Cache-Control header. + const cacheControl = res.headers.get('Cache-Control'); + const cacheDirectives = cacheControl + .split(',') + .map(v => v.trim()) + .map(v => v.split('=')); + // Lowercase all the directive names. + cacheDirectives.forEach(v => v[0] = v[0].toLowerCase()); + // Find the max-age directive, if one exists. + const cacheAge = cacheDirectives.filter(v => v[0] === 'max-age').map(v => v[1])[0]; + if (cacheAge.length === 0) { + // No usable TTL defined. Must assume that the response is stale. + return true; + } + try { + const maxAge = 1000 * parseInt(cacheAge); + // Determine the origin time of this request. If the SW has metadata on the request (which + // it + // should), it will have the time the request was added to the cache. If it doesn't for some + // reason, the request may have a Date header which will serve the same purpose. + let ts; + try { + // Check the metadata table. If a timestamp is there, use it. + const metaTable = await this.metadata; + ts = (await metaTable.read(req.url)).ts; + } + catch (e) { + // Otherwise, look for a Date header. + const date = res.headers.get('Date'); + if (date === null) { + // Unable to determine when this response was created. Assume that it's stale, and + // revalidate it. + return true; + } + ts = Date.parse(date); + } + const age = this.adapter.time - ts; + return age < 0 || age > maxAge; + } + catch (e) { + // Assume stale. + return true; + } + } + else if (res.headers.has('Expires')) { + // Determine if the expiration time has passed. + const expiresStr = res.headers.get('Expires'); + try { + // The request needs to be revalidated if the current time is later than the expiration + // time, if it parses correctly. + return this.adapter.time > Date.parse(expiresStr); + } + catch (e) { + // The expiration date failed to parse, so revalidate as a precaution. + return true; + } + } + else { + // No way to evaluate staleness, so assume the response is already stale. + return true; + } + } + /** + * Fetch the complete state of a cached resource, or return null if it's not found. + */ + async fetchFromCacheOnly(url) { + const cache = await this.cache; + const metaTable = await this.metadata; + // Lookup the response in the cache. + const response = await cache.match(this.adapter.newRequest(url)); + if (response === undefined) { + // It's not found, return null. + return null; + } + // Next, lookup the cached metadata. + let metadata = undefined; + try { + metadata = await metaTable.read(url); + } + catch (e) { + // Do nothing, not found. This shouldn't happen, but it can be handled. + } + // Return both the response and any available metadata. + return { response, metadata }; + } + /** + * Lookup all resources currently stored in the cache which have no associated hash. + */ + async unhashedResources() { + const cache = await this.cache; + // Start with the set of all cached URLs. + return (await cache.keys()) + .filter(url => !this.hashes.has(url)); + } + /** + * Fetch the given resource from the network, and cache it if able. + */ + async fetchAndCacheOnce(req, used = true) { + // The `inFlightRequests` map holds information about which caching operations are currently + // underway for known resources. If this request appears there, another "thread" is already + // in the process of caching it, and this work should not be duplicated. + if (this.inFlightRequests.has(req.url)) { + // There is a caching operation already in progress for this request. Wait for it to + // complete, and hopefully it will have yielded a useful response. + return this.inFlightRequests.get(req.url); + } + // No other caching operation is being attempted for this resource, so it will be owned here. + // Go to the network and get the correct version. + const fetchOp = this.fetchFromNetwork(req); + // Save this operation in `inFlightRequests` so any other "thread" attempting to cache it + // will block on this chain instead of duplicating effort. + this.inFlightRequests.set(req.url, fetchOp); + // Make sure this attempt is cleaned up properly on failure. + try { + // Wait for a response. If this fails, the request will remain in `inFlightRequests` + // indefinitely. + const res = await fetchOp; + // It's very important that only successful responses are cached. Unsuccessful responses + // should never be cached as this can completely break applications. + if (!res.ok) { + throw new Error(`Response not Ok (fetchAndCacheOnce): request for ${req.url} returned response ${res.status} ${res.statusText}`); + } + // This response is safe to cache (as long as it's cloned). Wait until the cache operation + // is complete. + const cache = await this.scope.caches.open(`${this.prefix}:${this.config.name}:cache`); + await cache.put(req, res.clone()); + // If the request is not hashed, update its metadata, especially the timestamp. This is needed + // for future determination of whether this cached response is stale or not. + if (!this.hashes.has(req.url)) { + // Metadata is tracked for requests that are unhashed. + const meta = { ts: this.adapter.time, used }; + const metaTable = await this.metadata; + await metaTable.write(req.url, meta); + } + return res; + } + finally { + // Finally, it can be removed from `inFlightRequests`. This might result in a double-remove + // if some other chain was already making this request too, but that won't hurt anything. + this.inFlightRequests.delete(req.url); + } + } + async fetchFromNetwork(req, redirectLimit = 3) { + // Make a cache-busted request for the resource. + const res = await this.cacheBustedFetchFromNetwork(req); + // Check for redirected responses, and follow the redirects. + if (res['redirected'] && !!res.url) { + // If the redirect limit is exhausted, fail with an error. + if (redirectLimit === 0) { + throw new Error(`Response hit redirect limit (fetchFromNetwork): request redirected too many times, next is ${res.url}`); + } + // Unwrap the redirect directly. + return this.fetchFromNetwork(this.adapter.newRequest(res.url), redirectLimit - 1); + } + return res; + } + /** + * Load a particular asset from the network, accounting for hash validation. + */ + async cacheBustedFetchFromNetwork(req) { + const url = this.getConfigUrl(req.url); + // If a hash is available for this resource, then compare the fetched version with the + // canonical hash. Otherwise, the network version will have to be trusted. + if (this.hashes.has(url)) { + // It turns out this resource does have a hash. Look it up. Unless the fetched version + // matches this hash, it's invalid and the whole manifest may need to be thrown out. + const canonicalHash = this.hashes.get(url); + // Ideally, the resource would be requested with cache-busting to guarantee the SW gets + // the freshest version. However, doing this would eliminate any chance of the response + // being in the HTTP cache. Given that the browser has recently actively loaded the page, + // it's likely that many of the responses the SW needs to cache are in the HTTP cache and + // are fresh enough to use. In the future, this could be done by setting cacheMode to + // *only* check the browser cache for a cached version of the resource, when cacheMode is + // fully supported. For now, the resource is fetched directly, without cache-busting, and + // if the hash test fails a cache-busted request is tried before concluding that the + // resource isn't correct. This gives the benefit of acceleration via the HTTP cache + // without the risk of stale data, at the expense of a duplicate request in the event of + // a stale response. + // Fetch the resource from the network (possibly hitting the HTTP cache). + const networkResult = await this.safeFetch(req); + // Decide whether a cache-busted request is necessary. It might be for two independent + // reasons: either the non-cache-busted request failed (hopefully transiently) or if the + // hash of the content retrieved does not match the canonical hash from the manifest. It's + // only valid to access the content of the first response if the request was successful. + let makeCacheBustedRequest = networkResult.ok; + if (makeCacheBustedRequest) { + // The request was successful. A cache-busted request is only necessary if the hashes + // don't match. Compare them, making sure to clone the response so it can be used later + // if it proves to be valid. + const fetchedHash = sha1Binary(await networkResult.clone().arrayBuffer()); + makeCacheBustedRequest = (fetchedHash !== canonicalHash); + } + // Make a cache busted request to the network, if necessary. + if (makeCacheBustedRequest) { + // Hash failure, the version that was retrieved under the default URL did not have the + // hash expected. This could be because the HTTP cache got in the way and returned stale + // data, or because the version on the server really doesn't match. A cache-busting + // request will differentiate these two situations. + // TODO: handle case where the URL has parameters already (unlikely for assets). + const cacheBustReq = this.adapter.newRequest(this.cacheBust(req.url)); + const cacheBustedResult = await this.safeFetch(cacheBustReq); + // If the response was unsuccessful, there's nothing more that can be done. + if (!cacheBustedResult.ok) { + throw new Error(`Response not Ok (cacheBustedFetchFromNetwork): cache busted request for ${req.url} returned response ${cacheBustedResult.status} ${cacheBustedResult.statusText}`); + } + // Hash the contents. + const cacheBustedHash = sha1Binary(await cacheBustedResult.clone().arrayBuffer()); + // If the cache-busted version doesn't match, then the manifest is not an accurate + // representation of the server's current set of files, and the SW should give up. + if (canonicalHash !== cacheBustedHash) { + throw new Error(`Hash mismatch (cacheBustedFetchFromNetwork): ${req.url}: expected ${canonicalHash}, got ${cacheBustedHash} (after cache busting)`); + } + // If it does match, then use the cache-busted result. + return cacheBustedResult; + } + // Excellent, the version from the network matched on the first try, with no need for + // cache-busting. Use it. + return networkResult; + } + else { + // This URL doesn't exist in our hash database, so it must be requested directly. + return this.safeFetch(req); + } + } + /** + * Possibly update a resource, if it's expired and needs to be updated. A no-op otherwise. + */ + async maybeUpdate(updateFrom, req, cache) { + const url = this.getConfigUrl(req.url); + const meta = await this.metadata; + // Check if this resource is hashed and already exists in the cache of a prior version. + if (this.hashes.has(url)) { + const hash = this.hashes.get(url); + // Check the caches of prior versions, using the hash to ensure the correct version of + // the resource is loaded. + const res = await updateFrom.lookupResourceWithHash(url, hash); + // If a previously cached version was available, copy it over to this cache. + if (res !== null) { + // Copy to this cache. + await cache.put(req, res); + await meta.write(req.url, { ts: this.adapter.time, used: false }); + // No need to do anything further with this resource, it's now cached properly. + return true; + } + } + // No up-to-date version of this resource could be found. + return false; + } + /** + * Construct a cache-busting URL for a given URL. + */ + cacheBust(url) { + return url + (url.indexOf('?') === -1 ? '?' : '&') + 'ngsw-cache-bust=' + Math.random(); + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } + catch (err) { + return this.adapter.newResponse('', { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} +/** + * An `AssetGroup` that prefetches all of its resources during initialization. + */ +class PrefetchAssetGroup extends AssetGroup { + async initializeFully(updateFrom) { + // Open the cache which actually holds requests. + const cache = await this.cache; + // Cache all known resources serially. As this reduce proceeds, each Promise waits + // on the last before starting the fetch/cache operation for the next request. Any + // errors cause fall-through to the final Promise which rejects. + await this.config.urls.reduce(async (previous, url) => { + // Wait on all previous operations to complete. + await previous; + // Construct the Request for this url. + const req = this.adapter.newRequest(url); + // First, check the cache to see if there is already a copy of this resource. + const alreadyCached = (await cache.match(req)) !== undefined; + // If the resource is in the cache already, it can be skipped. + if (alreadyCached) { + return; + } + // If an update source is available. + if (updateFrom !== undefined && await this.maybeUpdate(updateFrom, req, cache)) { + return; + } + // Otherwise, go to the network and hopefully cache the response (if successful). + await this.fetchAndCacheOnce(req, false); + }, Promise.resolve()); + // Handle updating of unknown (unhashed) resources. This is only possible if there's + // a source to update from. + if (updateFrom !== undefined) { + const metaTable = await this.metadata; + // Select all of the previously cached resources. These are cached unhashed resources + // from previous versions of the app, in any asset group. + await (await updateFrom.previouslyCachedResources()) + .filter(url => this.config.urls.some(cacheUrl => cacheUrl === url) || + this.patterns.some(pattern => pattern.test(url))) + .reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + // It's possible that the resource in question is already cached. If so, + // continue to the next one. + const alreadyCached = (await cache.match(req) !== undefined); + if (alreadyCached) { + return; + } + // Get the most recent old version of the resource. + const res = await updateFrom.lookupResourceWithoutHash(url); + if (res === null || res.metadata === undefined) { + // Unexpected, but not harmful. + return; + } + // Write it into the cache. It may already be expired, but it can still serve + // traffic until it's updated (stale-while-revalidate approach). + await cache.put(req, res.response); + await metaTable.write(url, Object.assign({}, res.metadata, { used: false })); + }, Promise.resolve()); + } + } +} +class LazyAssetGroup extends AssetGroup { + async initializeFully(updateFrom) { + // No action necessary if no update source is available - resources managed in this group + // are all lazily loaded, so there's nothing to initialize. + if (updateFrom === undefined) { + return; + } + // Open the cache which actually holds requests. + const cache = await this.cache; + // Loop through the listed resources, caching any which are available. + await this.config.urls.reduce(async (previous, url) => { + // Wait on all previous operations to complete. + await previous; + // Construct the Request for this url. + const req = this.adapter.newRequest(url); + // First, check the cache to see if there is already a copy of this resource. + const alreadyCached = (await cache.match(req)) !== undefined; + // If the resource is in the cache already, it can be skipped. + if (alreadyCached) { + return; + } + const updated = await this.maybeUpdate(updateFrom, req, cache); + if (this.config.updateMode === 'prefetch' && !updated) { + // If the resource was not updated, either it was not cached before or + // the previously cached version didn't match the updated hash. In that + // case, prefetch update mode dictates that the resource will be updated, + // except if it was not previously utilized. Check the status of the + // cached resource to see. + const cacheStatus = await updateFrom.recentCacheStatus(url); + // If the resource is not cached, or was cached but unused, then it will be + // loaded lazily. + if (cacheStatus !== UpdateCacheStatus.CACHED) { + return; + } + // Update from the network. + await this.fetchAndCacheOnce(req, false); + } + }, Promise.resolve()); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * Manages an instance of `LruState` and moves URLs to the head of the + * chain when requested. + */ +class LruList { + constructor(state) { + if (state === undefined) { + state = { + head: null, + tail: null, + map: {}, + count: 0, + }; + } + this.state = state; + } + /** + * The current count of URLs in the list. + */ + get size() { return this.state.count; } + /** + * Remove the tail. + */ + pop() { + // If there is no tail, return null. + if (this.state.tail === null) { + return null; + } + const url = this.state.tail; + // Special case if this is the last node. + if (this.state.head === this.state.tail) { + // When removing the last node, both head and tail pointers become null. + this.state.head = null; + this.state.tail = null; + } + else { + // Normal node removal. All that needs to be done is to clear the next pointer + // of the previous node and make it the new tail. + const block = this.state.map[url]; + const previous = this.state.map[block.previous]; + this.state.tail = previous.url; + previous.next = block.next; + } + // In any case, this URL is no longer tracked, so remove it from the count and the + // map of tracked URLs. + delete this.state.map[url]; + this.state.count--; + // This URL has been successfully evicted. + return url; + } + remove(url) { + const node = this.state.map[url]; + if (node === undefined) { + return false; + } + // Special case if removing the current head. + if (this.state.head === url) { + // The node is the current head. Special case the removal. + if (node.next === null) { + // This is the only node. Reset the cache to be empty. + this.state.head = null; + this.state.tail = null; + this.state.map = {}; + this.state.count = 0; + return true; + } + // There is at least one other node. Make the next node the new head. + const next = this.state.map[node.next]; + next.previous = null; + this.state.head = next.url; + this.state.count--; + return true; + } + // The node is not the head, so it has a previous. It may or may not be the tail. + // If it is not, then it has a next. First, grab the previous node. + const previous = this.state.map[node.previous]; + // Fix the forward pointer to skip over node and go directly to node.next. + previous.next = node.next; + // node.next may or may not be set. If it is, fix the back pointer to skip over node. + // If it's not set, then this node happened to be the tail, and the tail needs to be + // updated to point to the previous node (removing the tail). + if (node.next !== null) { + // There is a next node, fix its back pointer to skip this node. + this.state.map[node.next].previous = node.previous; + } + else { + // There is no next node - the accessed node must be the tail. Move the tail pointer. + this.state.tail = node.previous; + } + // Count the removal. + this.state.count--; + return true; + } + accessed(url) { + // When a URL is accessed, its node needs to be moved to the head of the chain. + // This is accomplished in two steps: + // + // 1) remove the node from its position within the chain. + // 2) insert the node as the new head. + // + // Sometimes, a URL is accessed which has not been seen before. In this case, step 1 can + // be skipped completely (which will grow the chain by one). Of course, if the node is + // already the head, this whole operation can be skipped. + if (this.state.head === url) { + // The URL is already in the head position, accessing it is a no-op. + return; + } + // Look up the node in the map, and construct a new entry if it's + const node = this.state.map[url] || { url, next: null, previous: null }; + // Step 1: remove the node from its position within the chain, if it is in the chain. + if (this.state.map[url] !== undefined) { + this.remove(url); + } + // Step 2: insert the node at the head of the chain. + // First, check if there's an existing head node. If there is, it has previous: null. + // Its previous pointer should be set to the node we're inserting. + if (this.state.head !== null) { + this.state.map[this.state.head].previous = url; + } + // The next pointer of the node being inserted gets set to the old head, before the head + // pointer is updated to this node. + node.next = this.state.head; + // The new head is the new node. + this.state.head = url; + // If there is no tail, then this is the first node, and is both the head and the tail. + if (this.state.tail === null) { + this.state.tail = url; + } + // Set the node in the map of nodes (if the URL has been seen before, this is a no-op) + // and count the insertion. + this.state.map[url] = node; + this.state.count++; + } +} +/** + * A group of cached resources determined by a set of URL patterns which follow a LRU policy + * for caching. + */ +class DataGroup { + constructor(scope, adapter, config, db, prefix) { + this.scope = scope; + this.adapter = adapter; + this.config = config; + this.db = db; + this.prefix = prefix; + /** + * Tracks the LRU state of resources in this cache. + */ + this._lru = null; + this.patterns = this.config.patterns.map(pattern => new RegExp(pattern)); + this.cache = this.scope.caches.open(`${this.prefix}:dynamic:${this.config.name}:cache`); + this.lruTable = this.db.open(`${this.prefix}:dynamic:${this.config.name}:lru`); + this.ageTable = this.db.open(`${this.prefix}:dynamic:${this.config.name}:age`); + } + /** + * Lazily initialize/load the LRU chain. + */ + async lru() { + if (this._lru === null) { + const table = await this.lruTable; + try { + this._lru = new LruList(await table.read('lru')); + } + catch (e) { + this._lru = new LruList(); + } + } + return this._lru; + } + /** + * Sync the LRU chain to non-volatile storage. + */ + async syncLru() { + if (this._lru === null) { + return; + } + const table = await this.lruTable; + return table.write('lru', this._lru.state); + } + /** + * Process a fetch event and return a `Response` if the resource is covered by this group, + * or `null` otherwise. + */ + async handleFetch(req, ctx) { + // Do nothing + if (!this.patterns.some(pattern => pattern.test(req.url))) { + return null; + } + // Lazily initialize the LRU cache. + const lru = await this.lru(); + // The URL matches this cache. First, check whether this is a mutating request or not. + switch (req.method) { + case 'OPTIONS': + // Don't try to cache this - it's non-mutating, but is part of a mutating request. + // Most likely SWs don't even see this, but this guard is here just in case. + return null; + case 'GET': + case 'HEAD': + // Handle the request with whatever strategy was selected. + switch (this.config.strategy) { + case 'freshness': + return this.handleFetchWithFreshness(req, ctx, lru); + case 'performance': + return this.handleFetchWithPerformance(req, ctx, lru); + default: + throw new Error(`Unknown strategy: ${this.config.strategy}`); + } + default: + // This was a mutating request. Assume the cache for this URL is no longer valid. + const wasCached = lru.remove(req.url); + // If there was a cached entry, remove it. + if (wasCached) { + await this.clearCacheForUrl(req.url); + } + // Sync the LRU chain to non-volatile storage. + await this.syncLru(); + // Finally, fall back on the network. + return this.safeFetch(req); + } + } + async handleFetchWithPerformance(req, ctx, lru) { + let res = null; + // Check the cache first. If the resource exists there (and is not expired), the cached + // version can be used. + const fromCache = await this.loadFromCache(req, lru); + if (fromCache !== null) { + res = fromCache.res; + // Check the age of the resource. + if (this.config.refreshAheadMs !== undefined && fromCache.age >= this.config.refreshAheadMs) { + ctx.waitUntil(this.safeCacheResponse(req, this.safeFetch(req))); + } + } + if (res !== null) { + return res; + } + // No match from the cache. Go to the network. Note that this is not an 'await' + // call, networkFetch is the actual Promise. This is due to timeout handling. + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + res = await timeoutFetch; + // Since fetch() will always return a response, undefined indicates a timeout. + if (res === undefined) { + // The request timed out. Return a Gateway Timeout error. + res = this.adapter.newResponse(null, { status: 504, statusText: 'Gateway Timeout' }); + // Cache the network response eventually. + ctx.waitUntil(this.safeCacheResponse(req, networkFetch)); + } + // The request completed in time, so cache it inline with the response flow. + // Make sure to clone it so the real response can still be returned to the user. + await this.cacheResponse(req, res.clone(), lru); + return res; + } + async handleFetchWithFreshness(req, ctx, lru) { + // Start with a network fetch. + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + let res; + // If that fetch errors, treat it as a timed out request. + try { + res = await timeoutFetch; + } + catch (e) { + res = undefined; + } + // If the network fetch times out or errors, fall back on the cache. + if (res === undefined) { + ctx.waitUntil(this.safeCacheResponse(req, networkFetch)); + // Ignore the age, the network response will be cached anyway due to the + // behavior of freshness. + const fromCache = await this.loadFromCache(req, lru); + res = (fromCache !== null) ? fromCache.res : null; + } + else { + await this.cacheResponse(req, res, lru, true); + } + // Either the network fetch didn't time out, or the cache yielded a usable response. + // In either case, use it. + if (res !== null) { + return res; + } + // No response in the cache. No choice but to fall back on the full network fetch. + res = await networkFetch; + await this.cacheResponse(req, res.clone(), lru, true); + return res; + } + networkFetchWithTimeout(req) { + // If there is a timeout configured, race a timeout Promise with the network fetch. + // Otherwise, just fetch from the network directly. + if (this.config.timeoutMs !== undefined) { + const networkFetch = this.scope.fetch(req); + const safeNetworkFetch = (async () => { + try { + return await networkFetch; + } + catch (err) { + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + })(); + const networkFetchUndefinedError = (async () => { + try { + return await networkFetch; + } + catch (err) { + return undefined; + } + })(); + // Construct a Promise for the timeout. + const timeout = this.adapter.timeout(this.config.timeoutMs); + // Race that with the network fetch. This will either be a Response, or `undefined` + // in the event that the request errored or timed out. + return [Promise.race([networkFetchUndefinedError, timeout]), safeNetworkFetch]; + } + else { + const networkFetch = this.safeFetch(req); + // Do a plain fetch. + return [networkFetch, networkFetch]; + } + } + async safeCacheResponse(req, res) { + try { + await this.cacheResponse(req, await res, await this.lru()); + } + catch (e) { + // TODO: handle this error somehow? + } + } + async loadFromCache(req, lru) { + // Look for a response in the cache. If one exists, return it. + const cache = await this.cache; + let res = await cache.match(req); + if (res !== undefined) { + // A response was found in the cache, but its age is not yet known. Look it up. + try { + const ageTable = await this.ageTable; + const age = this.adapter.time - (await ageTable.read(req.url)).age; + // If the response is young enough, use it. + if (age <= this.config.maxAge) { + // Successful match from the cache. Use the response, after marking it as having + // been accessed. + lru.accessed(req.url); + return { res, age }; + } + // Otherwise, or if there was an error, assume the response is expired, and evict it. + } + catch (e) { + // Some error getting the age for the response. Assume it's expired. + } + lru.remove(req.url); + await this.clearCacheForUrl(req.url); + // TODO: avoid duplicate in event of network timeout, maybe. + await this.syncLru(); + } + return null; + } + /** + * Operation for caching the response from the server. This has to happen all + * at once, so that the cache and LRU tracking remain in sync. If the network request + * completes before the timeout, this logic will be run inline with the response flow. + * If the request times out on the server, an error will be returned but the real network + * request will still be running in the background, to be cached when it completes. + */ + async cacheResponse(req, res, lru, okToCacheOpaque = false) { + // Only cache successful responses. + if (!res.ok || (okToCacheOpaque && res.type === 'opaque')) { + return; + } + // If caching this response would make the cache exceed its maximum size, evict something + // first. + if (lru.size >= this.config.maxSize) { + // The cache is too big, evict something. + const evictedUrl = lru.pop(); + if (evictedUrl !== null) { + await this.clearCacheForUrl(evictedUrl); + } + } + // TODO: evaluate for possible race conditions during flaky network periods. + // Mark this resource as having been accessed recently. This ensures it won't be evicted + // until enough other resources are requested that it falls off the end of the LRU chain. + lru.accessed(req.url); + // Store the response in the cache. + await (await this.cache).put(req, res); + // Store the age of the cache. + const ageTable = await this.ageTable; + await ageTable.write(req.url, { age: this.adapter.time }); + // Sync the LRU chain to non-volatile storage. + await this.syncLru(); + } + /** + * Delete all of the saved state which this group uses to track resources. + */ + async cleanup() { + // Remove both the cache and the database entries which track LRU stats. + await Promise.all([ + this.scope.caches.delete(`${this.prefix}:dynamic:${this.config.name}:cache`), + this.db.delete(`${this.prefix}:dynamic:${this.config.name}:age`), + this.db.delete(`${this.prefix}:dynamic:${this.config.name}:lru`), + ]); + } + /** + * Clear the state of the cache for a particular resource. + * + * This doesn't remove the resource from the LRU table, that is assumed to have + * been done already. This clears the GET and HEAD versions of the request from + * the cache itself, as well as the metadata stored in the age table. + */ + async clearCacheForUrl(url) { + const [cache, ageTable] = await Promise.all([this.cache, this.ageTable]); + await Promise.all([ + cache.delete(this.adapter.newRequest(url, { method: 'GET' })), + cache.delete(this.adapter.newRequest(url, { method: 'HEAD' })), + ageTable.delete(url), + ]); + } + async safeFetch(req) { + try { + return this.scope.fetch(req); + } + catch (err) { + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function isNavigationRequest(req, relativeTo, adapter) { + if (req.mode !== 'navigate') { + return false; + } + if (req.url.indexOf('__') !== -1) { + return false; + } + if (hasFileExtension(req.url, relativeTo, adapter)) { + return false; + } + if (!acceptsTextHtml(req)) { + return false; + } + return true; +} +function hasFileExtension(url, relativeTo, adapter) { + const path = adapter.parseUrl(url, relativeTo).path; + const lastSegment = path.split('/').pop(); + return lastSegment.indexOf('.') !== -1; +} +function acceptsTextHtml(req) { + const accept = req.headers.get('Accept'); + if (accept === null) { + return false; + } + const values = accept.split(','); + return values.some(value => value.trim().toLowerCase() === 'text/html'); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** + * A specific version of the application, identified by a unique manifest + * as determined by its hash. + * + * Each `AppVersion` can be thought of as a published version of the app + * that can be installed as an update to any previously installed versions. + */ +class AppVersion { + constructor(scope, adapter, database, idle, manifest, manifestHash) { + this.scope = scope; + this.adapter = adapter; + this.database = database; + this.idle = idle; + this.manifest = manifest; + this.manifestHash = manifestHash; + /** + * A Map of absolute URL paths (/foo.txt) to the known hash of their + * contents (if available). + */ + this.hashTable = new Map(); + /** + * Tracks whether the manifest has encountered any inconsistencies. + */ + this._okay = true; + // The hashTable within the manifest is an Object - convert it to a Map for easier lookups. + Object.keys(this.manifest.hashTable).forEach(url => { + this.hashTable.set(url, this.manifest.hashTable[url]); + }); + // Process each `AssetGroup` declared in the manifest. Each declared group gets an `AssetGroup` + // instance + // created for it, of a type that depends on the configuration mode. + this.assetGroups = (manifest.assetGroups || []).map(config => { + // Every asset group has a cache that's prefixed by the manifest hash and the name of the + // group. + const prefix = `ngsw:${this.manifestHash}:assets`; + // Check the caching mode, which determines when resources will be fetched/updated. + switch (config.installMode) { + case 'prefetch': + return new PrefetchAssetGroup(this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + case 'lazy': + return new LazyAssetGroup(this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + } + }); + // Process each `DataGroup` declared in the manifest. + this.dataGroups = (manifest.dataGroups || []) + .map(config => new DataGroup(this.scope, this.adapter, config, this.database, `ngsw:${config.version}:data`)); + } + get okay() { return this._okay; } + /** + * Fully initialize this version of the application. If this Promise resolves successfully, all + * required + * data has been safely downloaded. + */ + async initializeFully(updateFrom) { + try { + // Fully initialize each asset group, in series. Starts with an empty Promise, + // and waits for the previous groups to have been initialized before initializing + // the next one in turn. + await this.assetGroups.reduce(async (previous, group) => { + // Wait for the previous groups to complete initialization. If there is a + // failure, this will throw, and each subsequent group will throw, until the + // whole sequence fails. + await previous; + // Initialize this group. + return group.initializeFully(updateFrom); + }, Promise.resolve()); + } + catch (err) { + this._okay = false; + throw err; + } + } + async handleFetch(req, context) { + // Check the request against each `AssetGroup` in sequence. If an `AssetGroup` can't handle the + // request, + // it will return `null`. Thus, the first non-null response is the SW's answer to the request. + // So reduce + // the group list, keeping track of a possible response. If there is one, it gets passed + // through, and if + // not the next group is consulted to produce a candidate response. + const asset = await this.assetGroups.reduce(async (potentialResponse, group) => { + // Wait on the previous potential response. If it's not null, it should just be passed + // through. + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + // No response has been found yet. Maybe this group will have one. + return group.handleFetch(req, context); + }, Promise.resolve(null)); + // The result of the above is the asset response, if there is any, or null otherwise. Return the + // asset + // response if there was one. If not, check with the data caching groups. + if (asset !== null) { + return asset; + } + // Perform the same reduction operation as above, but this time processing + // the data caching groups. + const data = await this.dataGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, context); + }, Promise.resolve(null)); + // If the data caching group returned a response, go with it. + if (data !== null) { + return data; + } + // Next, check if this is a navigation request for a route. Detect circular + // navigations by checking if the request URL is the same as the index URL. + if (isNavigationRequest(req, this.scope.registration.scope, this.adapter) && + req.url !== this.manifest.index) { + // This was a navigation request. Re-enter `handleFetch` with a request for + // the URL. + return this.handleFetch(this.adapter.newRequest(this.manifest.index), context); + } + return null; + } + /** + * Check this version for a given resource with a particular hash. + */ + async lookupResourceWithHash(url, hash) { + const req = this.adapter.newRequest(url); + // Verify that this version has the requested resource cached. If not, + // there's no point in trying. + if (!this.hashTable.has(url)) { + return null; + } + // Next, check whether the resource has the correct hash. If not, any cached + // response isn't usable. + if (this.hashTable.get(url) !== hash) { + return null; + } + // TODO: no-op context and appropriate contract. Currently this is a violation + // of the typings and could cause issues if handleFetch() has side effects. A + // better strategy to deal with side effects is needed. + // TODO: this could result in network fetches if the response is lazy. Refactor + // to avoid them. + return this.handleFetch(req, null); + } + /** + * Check this version for a given resource regardless of its hash. + */ + lookupResourceWithoutHash(url) { + // Limit the search to asset groups, and only scan the cache, don't + // load resources from the network. + return this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + // fetchFromCacheOnly() avoids any network fetches, and returns the + // full set of cache data, not just the Response. + return group.fetchFromCacheOnly(url); + }, Promise.resolve(null)); + } + /** + * List all unhashed resources from all asset groups. + */ + previouslyCachedResources() { + return this.assetGroups.reduce(async (resources, group) => { + return (await resources).concat(await group.unhashedResources()); + }, Promise.resolve([])); + } + async recentCacheStatus(url) { + return this.assetGroups.reduce(async (current, group) => { + const status = await current; + if (status === UpdateCacheStatus.CACHED) { + return status; + } + const groupStatus = await group.cacheStatus(url); + if (groupStatus === UpdateCacheStatus.NOT_CACHED) { + return status; + } + return groupStatus; + }, Promise.resolve(UpdateCacheStatus.NOT_CACHED)); + } + /** + * Erase this application version, by cleaning up all the caches. + */ + async cleanup() { + await Promise.all(this.assetGroups.map(group => group.cleanup())); + await Promise.all(this.dataGroups.map(group => group.cleanup())); + } + /** + * Get the opaque application data which was provided with the manifest. + */ + get appData() { return this.manifest.appData || null; } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const DEBUG_LOG_BUFFER_SIZE = 100; +class DebugHandler { + constructor(driver, adapter) { + this.driver = driver; + this.adapter = adapter; + // There are two debug log message arrays. debugLogA records new debugging messages. + // Once it reaches DEBUG_LOG_BUFFER_SIZE, the array is moved to debugLogB and a new + // array is assigned to debugLogA. This ensures that insertion to the debug log is + // always O(1) no matter the number of logged messages, and that the total number + // of messages in the log never exceeds 2 * DEBUG_LOG_BUFFER_SIZE. + this.debugLogA = []; + this.debugLogB = []; + } + async handleFetch(req) { + const [state, versions, idle] = await Promise.all([ + this.driver.debugState(), + this.driver.debugVersions(), + this.driver.debugIdleState(), + ]); + const msgState = `NGSW Debug Info: + +Driver state: ${state.state} (${state.why}) +Latest manifest hash: ${state.latestHash || 'none'} +Last update check: ${this.since(state.lastUpdateCheck)}`; + const msgVersions = versions + .map(version => `=== Version ${version.hash} === + +Clients: ${version.clients.join(', ')}`) + .join('\n\n'); + const msgIdle = `=== Idle Task Queue === +Last update tick: ${this.since(idle.lastTrigger)} +Last update run: ${this.since(idle.lastRun)} +Task queue: +${idle.queue.map(v => ' * ' + v).join('\n')} + +Debug log: +${this.formatDebugLog(this.debugLogB)} +${this.formatDebugLog(this.debugLogA)} +`; + return this.adapter.newResponse(`${msgState} + +${msgVersions} + +${msgIdle}`, { headers: this.adapter.newHeaders({ 'Content-Type': 'text/plain' }) }); + } + since(time) { + if (time === null) { + return 'never'; + } + let age = this.adapter.time - time; + const days = Math.floor(age / 86400000); + age = age % 86400000; + const hours = Math.floor(age / 3600000); + age = age % 3600000; + const minutes = Math.floor(age / 60000); + age = age % 60000; + const seconds = Math.floor(age / 1000); + const millis = age % 1000; + return '' + (days > 0 ? `${days}d` : '') + (hours > 0 ? `${hours}h` : '') + + (minutes > 0 ? `${minutes}m` : '') + (seconds > 0 ? `${seconds}s` : '') + + (millis > 0 ? `${millis}u` : ''); + } + log(value, context = '') { + // Rotate the buffers if debugLogA has grown too large. + if (this.debugLogA.length === DEBUG_LOG_BUFFER_SIZE) { + this.debugLogB = this.debugLogA; + this.debugLogA = []; + } + // Convert errors to string for logging. + if (typeof value !== 'string') { + value = this.errorToString(value); + } + // Log the message. + this.debugLogA.push({ value, time: this.adapter.time, context }); + } + errorToString(err) { return `${err.name}(${err.message}, ${err.stack})`; } + formatDebugLog(log) { + return log.map(entry => `[${this.since(entry.time)}] ${entry.value} ${entry.context}`) + .join('\n'); + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +class IdleScheduler { + constructor(adapter, threshold, debug) { + this.adapter = adapter; + this.threshold = threshold; + this.debug = debug; + this.queue = []; + this.scheduled = null; + this.empty = Promise.resolve(); + this.emptyResolve = null; + this.lastTrigger = null; + this.lastRun = null; + } + async trigger() { + this.lastTrigger = this.adapter.time; + if (this.queue.length === 0) { + return; + } + if (this.scheduled !== null) { + this.scheduled.cancel = true; + } + const scheduled = { + cancel: false, + }; + this.scheduled = scheduled; + await this.adapter.timeout(this.threshold); + if (scheduled.cancel) { + return; + } + this.scheduled = null; + await this.execute(); + } + async execute() { + this.lastRun = this.adapter.time; + while (this.queue.length > 0) { + const queue = this.queue; + this.queue = []; + await queue.reduce(async (previous, task) => { + await previous; + try { + await task.run(); + } + catch (err) { + this.debug.log(err, `while running idle task ${task.desc}`); + } + }, Promise.resolve()); + } + if (this.emptyResolve !== null) { + this.emptyResolve(); + this.emptyResolve = null; + } + this.empty = Promise.resolve(); + } + schedule(desc, run) { + this.queue.push({ desc, run }); + if (this.emptyResolve === null) { + this.empty = new Promise(resolve => { this.emptyResolve = resolve; }); + } + } + get size() { return this.queue.length; } + get taskDescriptions() { return this.queue.map(task => task.desc); } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function hashManifest(manifest) { + return sha1(JSON.stringify(manifest)); +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +function isMsgCheckForUpdates(msg) { + return msg.action === 'CHECK_FOR_UPDATES'; +} +function isMsgActivateUpdate(msg) { + return msg.action === 'ACTIVATE_UPDATE'; +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const IDLE_THRESHOLD = 5000; +const SUPPORTED_CONFIG_VERSION = 1; +const NOTIFICATION_OPTION_NAMES = [ + 'actions', 'body', 'dir', 'icon', 'lang', 'renotify', 'requireInteraction', 'tag', 'vibrate', + 'data' +]; +var DriverReadyState; +(function (DriverReadyState) { + // The SW is operating in a normal mode, responding to all traffic. + DriverReadyState[DriverReadyState["NORMAL"] = 0] = "NORMAL"; + // The SW does not have a clean installation of the latest version of the app, but older + // cached versions are safe to use so long as they don't try to fetch new dependencies. + // This is a degraded state. + DriverReadyState[DriverReadyState["EXISTING_CLIENTS_ONLY"] = 1] = "EXISTING_CLIENTS_ONLY"; + // The SW has decided that caching is completely unreliable, and is forgoing request + // handling until the next restart. + DriverReadyState[DriverReadyState["SAFE_MODE"] = 2] = "SAFE_MODE"; +})(DriverReadyState || (DriverReadyState = {})); +class Driver { + constructor(scope, adapter, db) { + // Set up all the event handlers that the SW needs. + this.scope = scope; + this.adapter = adapter; + this.db = db; + /** + * Tracks the current readiness condition under which the SW is operating. This controls + * whether the SW attempts to respond to some or all requests. + */ + this.state = DriverReadyState.NORMAL; + this.stateMessage = '(nominal)'; + /** + * Tracks whether the SW is in an initialized state or not. Before initialization, + * it's not legal to respond to requests. + */ + this.initialized = null; + /** + * Maps client IDs to the manifest hash of the application version being used to serve + * them. If a client ID is not present here, it has not yet been assigned a version. + * + * If a ManifestHash appears here, it is also present in the `versions` map below. + */ + this.clientVersionMap = new Map(); + /** + * Maps manifest hashes to instances of `AppVersion` for those manifests. + */ + this.versions = new Map(); + /** + * The latest version fetched from the server. + * + * Valid after initialization has completed. + */ + this.latestHash = null; + this.lastUpdateCheck = null; + // The install event is triggered when the service worker is first installed. + this.scope.addEventListener('install', (event) => { + // SW code updates are separate from application updates, so code updates are + // almost as straightforward as restarting the SW. Because of this, it's always + // safe to skip waiting until application tabs are closed, and activate the new + // SW version immediately. + event.waitUntil(this.scope.skipWaiting()); + }); + // The activate event is triggered when this version of the service worker is + // first activated. + this.scope.addEventListener('activate', (event) => { + // As above, it's safe to take over from existing clients immediately, since + // the new SW version will continue to serve the old application. + event.waitUntil(this.scope.clients.claim()); + // Rather than wait for the first fetch event, which may not arrive until + // the next time the application is loaded, the SW takes advantage of the + // activation event to schedule initialization. However, if this were run + // in the context of the 'activate' event, waitUntil() here would cause fetch + // events to block until initialization completed. Thus, the SW does a + // postMessage() to itself, to schedule a new event loop iteration with an + // entirely separate event context. The SW will be kept alive by waitUntil() + // within that separate context while initialization proceeds, while at the + // same time the activation event is allowed to resolve and traffic starts + // being served. + if (this.scope.registration.active !== null) { + this.scope.registration.active.postMessage({ action: 'INITIALIZE' }); + } + }); + // Handle the fetch, message, and push events. + this.scope.addEventListener('fetch', (event) => this.onFetch(event)); + this.scope.addEventListener('message', (event) => this.onMessage(event)); + this.scope.addEventListener('push', (event) => this.onPush(event)); + // The debugger generates debug pages in response to debugging requests. + this.debugger = new DebugHandler(this, this.adapter); + // The IdleScheduler will execute idle tasks after a given delay. + this.idle = new IdleScheduler(this.adapter, IDLE_THRESHOLD, this.debugger); + } + /** + * The handler for fetch events. + * + * This is the transition point between the synchronous event handler and the + * asynchronous execution that eventually resolves for respondWith() and waitUntil(). + */ + onFetch(event) { + // The only thing that is served unconditionally is the debug page. + if (this.adapter.parseUrl(event.request.url, this.scope.registration.scope).path === + '/ngsw/state') { + // Allow the debugger to handle the request, but don't affect SW state in any + // other way. + event.respondWith(this.debugger.handleFetch(event.request)); + return; + } + // If the SW is in a broken state where it's not safe to handle requests at all, + // returning causes the request to fall back on the network. This is preferred over + // `respondWith(fetch(req))` because the latter still shows in DevTools that the + // request was handled by the SW. + // TODO: try to handle DriverReadyState.EXISTING_CLIENTS_ONLY here. + if (this.state === DriverReadyState.SAFE_MODE) { + // Even though the worker is in safe mode, idle tasks still need to happen so + // things like update checks, etc. can take place. + event.waitUntil(this.idle.trigger()); + return; + } + // Past this point, the SW commits to handling the request itself. This could still + // fail (and result in `state` being set to `SAFE_MODE`), but even in that case the + // SW will still deliver a response. + event.respondWith(this.handleFetch(event)); + } + /** + * The handler for message events. + */ + onMessage(event) { + // Ignore message events when the SW is in safe mode, for now. + if (this.state === DriverReadyState.SAFE_MODE) { + return; + } + // If the message doesn't have the expected signature, ignore it. + const data = event.data; + if (!data || !data.action) { + return; + } + // Initialization is the only event which is sent directly from the SW to itself, + // and thus `event.source` is not a Client. Handle it here, before the check + // for Client sources. + if (data.action === 'INITIALIZE' && this.initialized === null) { + // Initialize the SW. + this.initialized = this.initialize(); + // Wait until initialization is properly scheduled, then trigger idle + // events to allow it to complete (assuming the SW is idle). + event.waitUntil((async () => { + await this.initialized; + await this.idle.trigger(); + })()); + } + // Only messages from true clients are accepted past this point (this is essentially + // a typecast). + if (!this.adapter.isClient(event.source)) { + return; + } + // Handle the message and keep the SW alive until it's handled. + event.waitUntil(this.handleMessage(data, event.source)); + } + onPush(msg) { + // Push notifications without data have no effect. + if (!msg.data) { + return; + } + // Handle the push and keep the SW alive until it's handled. + msg.waitUntil(this.handlePush(msg.data)); + } + async handleMessage(msg, from) { + if (isMsgCheckForUpdates(msg)) { + const action = (async () => { await this.checkForUpdate(); })(); + await this.reportStatus(from, action, msg.statusNonce); + } + else if (isMsgActivateUpdate(msg)) { + await this.reportStatus(from, this.updateClient(from), msg.statusNonce); + } + } + async handlePush(data) { + this.broadcast({ + type: 'PUSH', + data, + }); + if (!data.notification || !data.notification.title) { + return; + } + const desc = data.notification; + let options = {}; + NOTIFICATION_OPTION_NAMES.filter(name => desc.hasOwnProperty(name)) + .forEach(name => options[name] = desc[name]); + this.scope.registration.showNotification(desc['title'], options); + } + async reportStatus(client, promise, nonce) { + const response = { type: 'STATUS', nonce, status: true }; + try { + await promise; + client.postMessage(response); + } + catch (e) { + client.postMessage(Object.assign({}, response, { status: false, error: e.toString() })); + } + } + async updateClient(client) { + // Figure out which version the client is on. If it's not on the latest, + // it needs to be moved. + const existing = this.clientVersionMap.get(client.id); + if (existing === this.latestHash) { + // Nothing to do, this client is already on the latest version. + return; + } + // Switch the client over. + let previous = undefined; + // Look up the application data associated with the existing version. If there + // isn't any, fall back on using the hash. + if (existing !== undefined) { + const existingVersion = this.versions.get(existing); + previous = this.mergeHashWithAppData(existingVersion.manifest, existing); + } + // Set the current version used by the client, and sync the mapping to disk. + this.clientVersionMap.set(client.id, this.latestHash); + await this.sync(); + // Notify the client about this activation. + const current = this.versions.get(this.latestHash); + const notice = { + type: 'UPDATE_ACTIVATED', + previous, + current: this.mergeHashWithAppData(current.manifest, this.latestHash), + }; + client.postMessage(notice); + } + async handleFetch(event) { + // Since the SW may have just been started, it may or may not have been initialized already. + // this.initialized will be `null` if initialization has not yet been attempted, or will be a + // Promise which will resolve (successfully or unsuccessfully) if it has. + if (this.initialized === null) { + // Initialization has not yet been attempted, so attempt it. This should only ever happen once + // per SW instantiation. + this.initialized = this.initialize(); + } + // If initialization fails, the SW needs to enter a safe state, where it declines to respond to + // network requests. + try { + // Wait for initialization. + await this.initialized; + } + catch (e) { + // Initialization failed. Enter a safe state. + this.state = DriverReadyState.SAFE_MODE; + this.stateMessage = `Initialization failed due to error: ${errorToString(e)}`; + // Even though the driver entered safe mode, background tasks still need to happen. + event.waitUntil(this.idle.trigger()); + // Since the SW is already committed to responding to the currently active request, + // respond with a network fetch. + return this.safeFetch(event.request); + } + // Decide which version of the app to use to serve this request. This is asynchronous as in + // some cases, a record will need to be written to disk about the assignment that is made. + const appVersion = await this.assignVersion(event); + // Bail out + if (appVersion === null) { + event.waitUntil(this.idle.trigger()); + return this.safeFetch(event.request); + } + // Handle the request. First try the AppVersion. If that doesn't work, fall back on the network. + const res = await appVersion.handleFetch(event.request, event); + // The AppVersion will only return null if the manifest doesn't specify what to do about this + // request. In that case, just fall back on the network. + if (res === null) { + event.waitUntil(this.idle.trigger()); + return this.safeFetch(event.request); + } + // Trigger the idle scheduling system. The Promise returned by trigger() will resolve after + // a specific amount of time has passed. If trigger() hasn't been called again by then (e.g. + // on a subsequent request), the idle task queue will be drained and the Promise won't resolve + // until that operation is complete as well. + event.waitUntil(this.idle.trigger()); + // The AppVersion returned a usable response, so return it. + return res; + } + /** + * Attempt to quickly reach a state where it's safe to serve responses. + */ + async initialize() { + // On initialization, all of the serialized state is read out of the 'control' + // table. This includes: + // - map of hashes to manifests of currently loaded application versions + // - map of client IDs to their pinned versions + // - record of the most recently fetched manifest hash + // + // If these values don't exist in the DB, then this is the either the first time + // the SW has run or the DB state has been wiped or is inconsistent. In that case, + // load a fresh copy of the manifest and reset the state from scratch. + // Open up the DB table. + const table = await this.db.open('control'); + // Attempt to load the needed state from the DB. If this fails, the catch {} block + // will populate these variables with freshly constructed values. + let manifests, assignments, latest; + try { + // Read them from the DB simultaneously. + [manifests, assignments, latest] = await Promise.all([ + table.read('manifests'), + table.read('assignments'), + table.read('latest'), + ]); + // Successfully loaded from saved state. This implies a manifest exists, so + // the update check needs to happen in the background. + this.idle.schedule('init post-load (update, cleanup)', async () => { + await this.checkForUpdate(); + try { + await this.cleanupCaches(); + } + catch (err) { + // Nothing to do - cleanup failed. Just log it. + this.debugger.log(err, 'cleanupCaches @ init post-load'); + } + }); + } + catch (_) { + // Something went wrong. Try to start over by fetching a new manifest from the + // server and building up an empty initial state. + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + manifests = {}; + manifests[hash] = manifest; + assignments = {}; + latest = { latest: hash }; + // Save the initial state to the DB. + await Promise.all([ + table.write('manifests', manifests), + table.write('assignments', assignments), + table.write('latest', latest), + ]); + } + // At this point, either the state has been loaded successfully, or fresh state + // with a new copy of the manifest has been produced. At this point, the `Driver` + // can have its internals hydrated from the state. + // Initialize the `versions` map by setting each hash to a new `AppVersion` instance + // for that manifest. + Object.keys(manifests).forEach((hash) => { + const manifest = manifests[hash]; + // If the manifest is newly initialized, an AppVersion may have already been + // created for it. + if (!this.versions.has(hash)) { + this.versions.set(hash, new AppVersion(this.scope, this.adapter, this.db, this.idle, manifest, hash)); + } + }); + // Map each client ID to its associated hash. Along the way, verify that the hash + // is still valid for that client ID. It should not be possible for a client to + // still be associated with a hash that was since removed from the state. + Object.keys(assignments).forEach((clientId) => { + const hash = assignments[clientId]; + if (this.versions.has(hash)) { + this.clientVersionMap.set(clientId, hash); + } + else { + this.clientVersionMap.set(clientId, latest.latest); + this.debugger.log(`Unknown version ${hash} mapped for client ${clientId}, using latest instead`, `initialize: map assignments`); + } + }); + // Set the latest version. + this.latestHash = latest.latest; + // Finally, assert that the latest version is in fact loaded. + if (!this.versions.has(latest.latest)) { + throw new Error(`Invariant violated (initialize): latest hash ${latest.latest} has no known manifest`); + } + // Finally, wait for the scheduling of initialization of all versions in the + // manifest. Ordinarily this just schedules the initializations to happen during + // the next idle period, but in development mode this might actually wait for the + // full initialization. + // If any of these initializations fail, versionFailed() will be called either + // synchronously or asynchronously to handle the failure and re-map clients. + await Promise.all(Object.keys(manifests).map(async (hash) => { + try { + // Attempt to schedule or initialize this version. If this operation is + // successful, then initialization either succeeded or was scheduled. If + // it fails, then full initialization was attempted and failed. + await this.scheduleInitialization(this.versions.get(hash)); + } + catch (err) { + this.debugger.log(err, `initialize: schedule init of ${hash}`); + return false; + } + })); + } + lookupVersionByHash(hash, debugName = 'lookupVersionByHash') { + // The version should exist, but check just in case. + if (!this.versions.has(hash)) { + throw new Error(`Invariant violated (${debugName}): want AppVersion for ${hash} but not loaded`); + } + return this.versions.get(hash); + } + /** + * Decide which version of the manifest to use for the event. + */ + async assignVersion(event) { + // First, check whether the event has a client ID. If it does, the version may + // already be associated. + const clientId = event.clientId; + if (clientId !== null) { + // Check if there is an assigned client id. + if (this.clientVersionMap.has(clientId)) { + // There is an assignment for this client already. + let hash = this.clientVersionMap.get(clientId); + // Ordinarily, this client would be served from its assigned version. But, if this + // request is a navigation request, this client can be updated to the latest + // version immediately. + if (this.state === DriverReadyState.NORMAL && hash !== this.latestHash && + isNavigationRequest(event.request, this.scope.registration.scope, this.adapter)) { + // Update this client to the latest version immediately. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + const client = await this.scope.clients.get(clientId); + await this.updateClient(client); + hash = this.latestHash; + } + // TODO: make sure the version is valid. + return this.lookupVersionByHash(hash, 'assignVersion'); + } + else { + // This is the first time this client ID has been seen. Whether the SW is in a + // state to handle new clients depends on the current readiness state, so check + // that first. + if (this.state !== DriverReadyState.NORMAL) { + // It's not safe to serve new clients in the current state. It's possible that + // this is an existing client which has not been mapped yet (see below) but + // even if that is the case, it's invalid to make an assignment to a known + // invalid version, even if that assignment was previously implicit. Return + // undefined here to let the caller know that no assignment is possible at + // this time. + return null; + } + // It's safe to handle this request. Two cases apply. Either: + // 1) the browser assigned a client ID at the time of the navigation request, and + // this is truly the first time seeing this client, or + // 2) a navigation request came previously from the same client, but with no client + // ID attached. Browsers do this to avoid creating a client under the origin in + // the event the navigation request is just redirected. + // + // In case 1, the latest version can safely be used. + // In case 2, the latest version can be used, with the assumption that the previous + // navigation request was answered under the same version. This assumption relies + // on the fact that it's unlikely an update will come in between the navigation + // request and requests for subsequent resources on that page. + // First validate the current state. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + // Pin this client ID to the current latest version, indefinitely. + this.clientVersionMap.set(clientId, this.latestHash); + await this.sync(); + // Return the latest `AppVersion`. + return this.lookupVersionByHash(this.latestHash, 'assignVersion'); + } + } + else { + // No client ID was associated with the request. This must be a navigation request + // for a new client. First check that the SW is accepting new clients. + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + // Serve it with the latest version, and assume that the client will actually get + // associated with that version on the next request. + // First validate the current state. + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + // Return the latest `AppVersion`. + return this.lookupVersionByHash(this.latestHash, 'assignVersion'); + } + } + /** + * Retrieve a copy of the latest manifest from the server. + */ + async fetchLatestManifest() { + const res = await this.safeFetch(this.adapter.newRequest('/ngsw.json?ngsw-cache-bust=' + Math.random())); + if (!res.ok) { + if (res.status === 404) { + await this.deleteAllCaches(); + this.scope.registration.unregister(); + } + throw new Error('Manifest fetch failed!'); + } + this.lastUpdateCheck = this.adapter.time; + return res.json(); + } + async deleteAllCaches() { + await (await this.scope.caches.keys()) + .filter(key => key.startsWith('ngsw:')) + .reduce(async (previous, key) => { + await Promise.all([ + previous, + this.scope.caches.delete(key), + ]); + }, Promise.resolve()); + } + /** + * Schedule the SW's attempt to reach a fully prefetched state for the given AppVersion + * when the SW is not busy and has connectivity. This returns a Promise which must be + * awaited, as under some conditions the AppVersion might be initialized immediately. + */ + async scheduleInitialization(appVersion) { + const initialize = async () => { + try { + await appVersion.initializeFully(); + } + catch (err) { + this.debugger.log(err, `initializeFully for ${appVersion.manifestHash}`); + await this.versionFailed(appVersion, err); + } + }; + // TODO: better logic for detecting localhost. + if (this.scope.registration.scope.indexOf('://localhost') > -1) { + return initialize(); + } + this.idle.schedule(`initialization(${appVersion.manifestHash})`, initialize); + } + async versionFailed(appVersion, err) { + // This particular AppVersion is broken. First, find the manifest hash. + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === undefined) { + // This version is no longer in use anyway, so nobody cares. + return; + } + const brokenHash = broken[0]; + // TODO: notify affected apps. + // The action taken depends on whether the broken manifest is the active (latest) or not. + // If so, the SW cannot accept new clients, but can continue to service old ones. + if (this.latestHash === brokenHash) { + // The latest manifest is broken. This means that new clients are at the mercy of the + // network, but caches continue to be valid for previous versions. This is + // unfortunate but unavoidable. + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to failed initialization: ${errorToString(err)}`; + // Cancel the binding for these clients. + Array.from(this.clientVersionMap.keys()) + .forEach(clientId => this.clientVersionMap.delete(clientId)); + } + else { + // The current version is viable, but this older version isn't. The only + // possible remedy is to stop serving the older version and go to the network. + // Figure out which clients are affected and put them on the latest. + const affectedClients = Array.from(this.clientVersionMap.keys()) + .filter(clientId => this.clientVersionMap.get(clientId) === brokenHash); + // Push the affected clients onto the latest version. + affectedClients.forEach(clientId => this.clientVersionMap.set(clientId, this.latestHash)); + } + await this.sync(); + } + async setupUpdate(manifest, hash) { + const newVersion = new AppVersion(this.scope, this.adapter, this.db, this.idle, manifest, hash); + // Try to determine a version that's safe to update from. + let updateFrom = undefined; + // It's always safe to update from a version, even a broken one, as it will still + // only have valid resources cached. If there is no latest version, though, this + // update will have to install as a fresh version. + if (this.latestHash !== null) { + updateFrom = this.versions.get(this.latestHash); + } + // Firstly, check if the manifest version is correct. + if (manifest.configVersion !== SUPPORTED_CONFIG_VERSION) { + await this.deleteAllCaches(); + this.scope.registration.unregister(); + throw new Error(`Invalid config version: expected ${SUPPORTED_CONFIG_VERSION}, got ${manifest.configVersion}.`); + } + // Cause the new version to become fully initialized. If this fails, then the + // version will not be available for use. + await newVersion.initializeFully(this); + // Install this as an active version of the app. + this.versions.set(hash, newVersion); + // Future new clients will use this hash as the latest version. + this.latestHash = hash; + await this.sync(); + await this.notifyClientsAboutUpdate(); + } + async checkForUpdate() { + try { + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + // Check whether this is really an update. + if (this.versions.has(hash)) { + return false; + } + await this.setupUpdate(manifest, hash); + return true; + } + catch (_) { + return false; + } + } + /** + * Synchronize the existing state to the underlying database. + */ + async sync() { + // Open up the DB table. + const table = await this.db.open('control'); + // Construct a serializable map of hashes to manifests. + const manifests = {}; + this.versions.forEach((version, hash) => { manifests[hash] = version.manifest; }); + // Construct a serializable map of client ids to version hashes. + const assignments = {}; + this.clientVersionMap.forEach((hash, clientId) => { assignments[clientId] = hash; }); + // Record the latest entry. Since this is a sync which is necessarily happening after + // initialization, latestHash should always be valid. + const latest = { + latest: this.latestHash, + }; + // Synchronize all of these. + await Promise.all([ + table.write('manifests', manifests), + table.write('assignments', assignments), + table.write('latest', latest), + ]); + } + async cleanupCaches() { + // Query for all currently active clients, and list the client ids. This may skip + // some clients in the browser back-forward cache, but not much can be done about + // that. + const activeClients = (await this.scope.clients.matchAll()).map(client => client.id); + // A simple list of client ids that the SW has kept track of. Subtracting + // activeClients from this list will result in the set of client ids which are + // being tracked but are no longer used in the browser, and thus can be cleaned up. + const knownClients = Array.from(this.clientVersionMap.keys()); + // Remove clients in the clientVersionMap that are no longer active. + knownClients.filter(id => activeClients.indexOf(id) === -1) + .forEach(id => this.clientVersionMap.delete(id)); + // Next, determine the set of versions which are still used. All others can be + // removed. + const usedVersions = new Set(); + this.clientVersionMap.forEach((version, _) => usedVersions.add(version)); + // Collect all obsolete versions by filtering out used versions from the set of all versions. + const obsoleteVersions = Array.from(this.versions.keys()) + .filter(version => !usedVersions.has(version) && version !== this.latestHash); + // Remove all the versions which are no longer used. + await obsoleteVersions.reduce(async (previous, version) => { + // Wait for the other cleanup operations to complete. + await previous; + // Try to get past the failure of one particular version to clean up (this + // shouldn't happen, but handle it just in case). + try { + // Get ahold of the AppVersion for this particular hash. + const instance = this.versions.get(version); + // Delete it from the canonical map. + this.versions.delete(version); + // Clean it up. + await instance.cleanup(); + } + catch (err) { + // Oh well? Not much that can be done here. These caches will be removed when + // the SW revs its format version, which happens from time to time. + this.debugger.log(err, `cleanupCaches - cleanup ${version}`); + } + }, Promise.resolve()); + // Commit all the changes to the saved state. + await this.sync(); + } + /** + * Determine if a specific version of the given resource is cached anywhere within the SW, + * and fetch it if so. + */ + lookupResourceWithHash(url, hash) { + return Array + .from(this.versions.values()) + .reduce(async (prev, version) => { + // First, check the previous result. If a non-null result has been found already, just + // return it. + if (await prev !== null) { + return prev; + } + // No result has been found yet. Try the next `AppVersion`. + return version.lookupResourceWithHash(url, hash); + }, Promise.resolve(null)); + } + async lookupResourceWithoutHash(url) { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version.lookupResourceWithoutHash(url); + } + async previouslyCachedResources() { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version.previouslyCachedResources(); + } + recentCacheStatus(url) { + const version = this.versions.get(this.latestHash); + return version.recentCacheStatus(url); + } + mergeHashWithAppData(manifest, hash) { + return { + hash, + appData: manifest.appData, + }; + } + async notifyClientsAboutUpdate() { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + const next = this.versions.get(this.latestHash); + await clients.reduce(async (previous, client) => { + await previous; + // Firstly, determine which version this client is on. + const version = this.clientVersionMap.get(client.id); + if (version === undefined) { + // Unmapped client - assume it's the latest. + return; + } + if (version === this.latestHash) { + // Client is already on the latest version, no need for a notification. + return; + } + const current = this.versions.get(version); + // Send a notice. + const notice = { + type: 'UPDATE_AVAILABLE', + current: this.mergeHashWithAppData(current.manifest, version), + available: this.mergeHashWithAppData(next.manifest, this.latestHash), + }; + client.postMessage(notice); + }, Promise.resolve()); + } + async broadcast(msg) { + const clients = await this.scope.clients.matchAll(); + clients.forEach(client => { client.postMessage(msg); }); + } + async debugState() { + return { + state: DriverReadyState[this.state], + why: this.stateMessage, + latestHash: this.latestHash, + lastUpdateCheck: this.lastUpdateCheck, + }; + } + async debugVersions() { + // Build list of versions. + return Array.from(this.versions.keys()).map(hash => { + const version = this.versions.get(hash); + const clients = Array.from(this.clientVersionMap.entries()) + .filter(([clientId, version]) => version === hash) + .map(([clientId, version]) => clientId); + return { + hash, + manifest: version.manifest, clients, + status: '', + }; + }); + } + async debugIdleState() { + return { + queue: this.idle.taskDescriptions, + lastTrigger: this.idle.lastTrigger, + lastRun: this.idle.lastRun, + }; + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } + catch (err) { + this.debugger.log(err, `Driver.fetch(${req.url})`); + return this.adapter.newResponse(null, { + status: 504, + statusText: 'Gateway Timeout', + }); + } + } +} +function errorToString(error) { + if (error instanceof Error) { + return `${error.message}\n${error.stack}`; + } + else { + return `${error}`; + } +} + +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +const scope = self; +const adapter = new Adapter(); +const driver = new Driver(scope, adapter, new CacheDatabase(scope, adapter)); + +}()); diff --git a/src/static/ngsw.json b/src/static/ngsw.json new file mode 100644 index 0000000..bc6f394 --- /dev/null +++ b/src/static/ngsw.json @@ -0,0 +1,56 @@ +{ + "configVersion": 1, + "index": "/index.html", + "appData": { + "test": true + }, + "assetGroups": [ + { + "name": "appshell", + "installMode": "prefetch", + "updateMode": "prefetch", + "urls": [], + "patterns": [ + "https:\\/\\/fonts\\.gstatic\\.com\\/s\\/materialicons\\/v29\\/2fcrYFNaTjcS6g4U3t-Y5UEw0lE80llgEseQY3FEmqw\\.woff2", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/animate\\.css\\/3\\.5\\.2\\/animate\\.min\\.css", + "https:\\/\\/fonts\\.googleapis\\.com\\/css\\?family=Inconsolata:400,700", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/prism\\/1\\.5\\.1\\/themes\\/prism\\.min\\.css", + "https:\\/\\/cdn\\.materialdesignicons\\.com\\/2\\.0\\.46\\/css\\/materialdesignicons\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/uikit\\/3\\.0\\.0-beta\\.30\\/css\\/uikit\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/font-awesome\\/4\\.6\\.3\\/css\\/font-awesome\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/material-design-iconic-font\\/2\\.2\\.0\\/css\\/material-design-iconic-font\\.min\\.css", + "https:\\/\\/fonts\\.googleapis\\.com\\/icon\\?family=Material\\+Icons", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/font-awesome\\/4\\.6\\.3\\/css\\/font-awesome\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/typicons\\/2\\.0\\.7\\/typicons\\.min\\.css", + "https:\\/\\/cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/ionicons\\/2\\.0\\.1\\/css\\/ionicons\\.min\\.css", + "https:\\/\\/netdna\\.bootstrapcdn\\.com\\/bootstrap\\/3\\.0\\.0\\/fonts\\/glyphicons-halflings-regular\\.woff", + "https:\\/\\/netdna\\.bootstrapcdn\\.com\\/bootstrap\\/3\\.0\\.0\\/fonts\\/glyphicons-halflings-regular\\.ttf" + ] + } + ], + "dataGroups": [ + { + "name": "api-freshness", + "patterns": [ + "https:\\/\\/192\\.168\\.43\\.188\\:3040\\/dist\\/pretty-checkbox\\.min\\.css" + ], + "strategy": "freshness", + "maxSize": 100, + "maxAge": 259200000, + "timeoutMs": 60000, + "version": 1 + }, + { + "name": "api-performance", + "patterns": [ + "\\/" + ], + "strategy": "performance", + "maxSize": 100, + "maxAge": 259200000, + "timeoutMs": 60000, + "version": 1 + } + ], + "hashTable": {} +} \ No newline at end of file diff --git a/src/static/sprite/open-iconic.html b/src/static/sprite/open-iconic.html new file mode 100644 index 0000000..82b0fb5 --- /dev/null +++ b/src/static/sprite/open-iconic.html @@ -0,0 +1,929 @@ + + + + + + + + +

+

+ Make sure to run this through a web server otherwise you won’t see any icons. You can use Serve for local testing. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/src/static/sprite/open-iconic.min.svg b/src/static/sprite/open-iconic.min.svg new file mode 100644 index 0000000..19b6fcf --- /dev/null +++ b/src/static/sprite/open-iconic.min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/sprite/open-iconic.svg b/src/static/sprite/open-iconic.svg new file mode 100644 index 0000000..cba89bc --- /dev/null +++ b/src/static/sprite/open-iconic.svg @@ -0,0 +1,452 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/static/sprite/sprite.html b/src/static/sprite/sprite.html new file mode 100644 index 0000000..d945efe --- /dev/null +++ b/src/static/sprite/sprite.html @@ -0,0 +1,926 @@ + + + + + + + + +
+

Make sure to run this through a web server otherwise you won’t see any icons. You can use Serve for local testing.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/src/static/sprite/sprite.min.svg b/src/static/sprite/sprite.min.svg new file mode 100644 index 0000000..af927c6 --- /dev/null +++ b/src/static/sprite/sprite.min.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/sprite/sprite.svg b/src/static/sprite/sprite.svg new file mode 100644 index 0000000..63d2cf4 --- /dev/null +++ b/src/static/sprite/sprite.svg @@ -0,0 +1,673 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/static/svg/feathers/check-circle.svg b/src/static/svg/feathers/check-circle.svg new file mode 100644 index 0000000..d95153c --- /dev/null +++ b/src/static/svg/feathers/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/svg/feathers/check-square.svg b/src/static/svg/feathers/check-square.svg new file mode 100644 index 0000000..8c9aa0c --- /dev/null +++ b/src/static/svg/feathers/check-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/svg/open-iconic/task.svg b/src/static/svg/open-iconic/task.svg new file mode 100644 index 0000000..786c7bf --- /dev/null +++ b/src/static/svg/open-iconic/task.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/stylesheets/app.scss b/src/stylesheets/app.scss new file mode 100644 index 0000000..3fe5c91 --- /dev/null +++ b/src/stylesheets/app.scss @@ -0,0 +1,8 @@ +@import './partials/varaiables'; +@import './partials/bootstrap'; +@import './partials/system-fonts'; +@import './partials/gylph'; +@import './partials/pretty-checkbox'; +@import './partials/slider'; +@import './partials/reset'; +@import './partials/core'; \ No newline at end of file diff --git a/src/stylesheets/partials/_bootstrap.scss b/src/stylesheets/partials/_bootstrap.scss new file mode 100644 index 0000000..279eab5 --- /dev/null +++ b/src/stylesheets/partials/_bootstrap.scss @@ -0,0 +1,25 @@ +@import "../../../node_modules/bootstrap/scss/functions"; +@import "../../../node_modules/bootstrap/scss/variables"; +@import "../../../node_modules/bootstrap/scss/mixins"; +// @import "../../../node_modules/bootstrap/scss/root"; +@import "../../../node_modules/bootstrap/scss/print"; +@import "../../../node_modules/bootstrap/scss/reboot"; +@import "../../../node_modules/bootstrap/scss/type"; +@import "../../../node_modules/bootstrap/scss/code"; +@import "../../../node_modules/bootstrap/scss/grid"; +@import "../../../node_modules/bootstrap/scss/tables"; +@import "../../../node_modules/bootstrap/scss/buttons"; +@import "../../../node_modules/bootstrap/scss/transitions"; +@import "../../../node_modules/bootstrap/scss/dropdown"; +@import "../../../node_modules/bootstrap/scss/button-group"; +@import "../../../node_modules/bootstrap/scss/input-group"; +@import "../../../node_modules/bootstrap/scss/custom-forms"; +@import "../../../node_modules/bootstrap/scss/nav"; +@import "../../../node_modules/bootstrap/scss/navbar"; +@import "../../../node_modules/bootstrap/scss/card"; +@import "../../../node_modules/bootstrap/scss/badge"; +@import "../../../node_modules/bootstrap/scss/jumbotron"; +@import "../../../node_modules/bootstrap/scss/alert"; +@import "../../../node_modules/bootstrap/scss/media"; +@import "../../../node_modules/bootstrap/scss/tooltip"; +@import "../../../node_modules/bootstrap/scss/utilities"; \ No newline at end of file diff --git a/src/stylesheets/partials/_core.scss b/src/stylesheets/partials/_core.scss new file mode 100644 index 0000000..b9fc415 --- /dev/null +++ b/src/stylesheets/partials/_core.scss @@ -0,0 +1,218 @@ +pre[class*="language-"] { + border: 0; + border-radius: 0; + background: transparent; + padding: 0; +} + +code[class*="language-"], +pre[class*="language-"] { + font-family: 'Inconsolata'; + font-size: 14px; +} + +.borbot { + border-bottom: 3px solid #f3f3f3; +} + +.s-highlight { + color: #e17075; +} + +.hide { + display: none; +} + +.card { + border-radius: 0; + .card-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.04); + } + .card-footer { + padding-left: 0; + background: #fcfcfc; + } +} + +prism-block>pre { + margin: 0 !important; + padding: 0 !important; +} + +.show-code { + cursor: pointer; + font-size: 12px; + &:hover { + color: #e17075; + } + i.mdi { + font-size: 18px; + line-height: 1; + display: inline-block; + vertical-align: text-top; + color: #e17075; + } +} + +strong { + font-family: 'Inconsolata'; + font-weight: 700; + padding: 0 4px; + font-size: 100%; + color: #000; + border-radius: 3px; + background: transparent; +} + +.btn.btn-small { + padding: 0 10px; + line-height: 1; + background: #f5f5f5; + color: rgba(0, 0, 0, 0.43); + text-transform: uppercase; + font-size: 0.8em; + font-weight: 700; + cursor: pointer; +} + +.btn.btn-browser { + font-weight: 500; + font-size: 95%; + img { + width: 20px; + vertical-align: bottom; + } + span { + font-family: Inconsolata; + font-weight: 700; + color: #95acc4; + } +} + +.btn.btn-framework { + padding: 0; + margin-right: 1em; +} + +.highlight { + color: #e17075; +} + +div#disqus_thread { + background: #ffffff; + padding: 10px; + border: 1px solid #dfdfdf; +} + +a.btn.btn-link { + background: #a6b2b9; + color: #fff; + padding: 0 4px; + border-radius: 2px; + margin-right: 10px; + &.facebook:hover { + background-color: #3b5998; + } + &.twitter:hover { + background-color: #1da1f2; + } + &.linkedin:hover { + background-color: #0077b5; + } + &.gplus:hover { + background-color: #dd4b39; + } +} + +.card-info { + background: rgb(242, 245, 252); + border-top: 1px solid #dfdfdf; + align-items: center; + display: flex; + padding: 1rem; + color: #8992a6; + font-size: 90%; + .mdi { + line-height: 1; + vertical-align: middle; + opacity: 0.5; + color: #4f5667; + margin-right: 4px; + &:before { + font-size: 18px; + } + } +} + +.nav-link { + color: #727a81; + i.mdi { + font-size: 1.3rem; + vertical-align: sub; + line-height: 1; + } + &:hover { + color: #e17075; + } +} + +span.color-preview { + display: inline-block; + width: 1em; + height: 1em; + background-color: #bdc3c7; + border-radius: 100%; + margin: 0 2px; + &.primary { + background-color: #428bca; + } + &.success { + background-color: #5cb85c; + } + &.info { + background-color: #5bc0de; + } + &.warning { + background-color: #f0ad4e; + } + &.danger { + background-color: #d9534f; + } +} + +.note { + background: transparent; + padding: 0 1em; + border: 0; + font-size: 90%; + color: rgba(0, 0, 0, 0.64); + border-left: 3px solid #e17075; +} + +h6 { + font-size: 14px; +} + +section.section { + margin-bottom: 3em; + a { + font-weight: 500; + } +} + +.btn-collapse { + background: #fff; + border: 1px solid #dfdfdf; + border-radius: 0; + font-size: 1em; + font-weight: 500; + color: #828b90; + cursor: pointer; + padding: 1em; + margin-bottom: 1em; + &:hover { + background: #f7f7f7; + border-color: #e6dfdf; + color: #90a1ad; + } +} \ No newline at end of file diff --git a/src/stylesheets/partials/_gylph.scss b/src/stylesheets/partials/_gylph.scss new file mode 100644 index 0000000..9c54d2d --- /dev/null +++ b/src/stylesheets/partials/_gylph.scss @@ -0,0 +1,32 @@ +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot'); + src: url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff') format('woff'), url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + + .glyphicon-heart-empty:before { + content: "\e143"; +} + + .glyphicon-ok:before { + content: "\e013"; +} + + .glyphicon-remove:before { + content: "\e014"; +} + + .glyphicon-heart:before { + content: "\e005"; +} \ No newline at end of file diff --git a/src/stylesheets/partials/_pretty-checkbox.scss b/src/stylesheets/partials/_pretty-checkbox.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/stylesheets/partials/_reset.scss b/src/stylesheets/partials/_reset.scss new file mode 100644 index 0000000..682f45b --- /dev/null +++ b/src/stylesheets/partials/_reset.scss @@ -0,0 +1,40 @@ +body { + font-size: 14px; + background-color: rgba(252, 252, 252, 0.29); + color: $col--text; + font-family: $font--family; +} + +.jumbotron { + padding: 50px 0; + text-align: center; + background: $col--primary; + border-bottom: 4px solid $col--sec; + background: linear-gradient(to left, #124665, $col--primary); + position: relative; + color: #fff; + h1 { + margin: 0 0 20px; + color: $col--sec; + font-weight: 300; + font-size: 48px; + letter-spacing: -2px; + } + p { + color: rgba(255, 255, 255, 0.65); + } + .container { + position: relative; + } + &:before { + content: ''; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 0; + opacity: 0.4; + background-image: url("data:image/svg+xml,"); + } +} \ No newline at end of file diff --git a/src/stylesheets/partials/_slider.scss b/src/stylesheets/partials/_slider.scss new file mode 100644 index 0000000..3e21cf1 --- /dev/null +++ b/src/stylesheets/partials/_slider.scss @@ -0,0 +1,99 @@ +// http://danielstern.ca/range.css/?ref=css-tricks#/ + +input[type=range].slider { + -webkit-appearance: none; + width: 100%; + margin: 5.2px 0; +} + +input[type=range].slider:focus { + outline: none; +} + +input[type=range].slider::-webkit-slider-runnable-track { + width: 100%; + height: 5.6px; + cursor: pointer; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); + background: rgba(90, 101, 107, 0.32); + border-radius: 25px; + border: 1.9px solid rgba(0, 0, 0, 0); +} + +input[type=range].slider::-webkit-slider-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid rgba(0, 0, 0, 0); + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.1px; +} + +input[type=range].slider:focus::-webkit-slider-runnable-track { + background: rgba(129, 142, 149, 0.32); +} + +input[type=range].slider::-moz-range-track { + width: 100%; + height: 5.6px; + cursor: pointer; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); + background: rgba(90, 101, 107, 0.32); + border-radius: 25px; + border: 1.9px solid rgba(0, 0, 0, 0); +} + +input[type=range].slider::-moz-range-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid rgba(0, 0, 0, 0); + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; +} + +input[type=range].slider::-ms-track { + width: 100%; + height: 5.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} + +input[type=range].slider::-ms-fill-lower { + background: rgba(53, 59, 63, 0.32); + border: 1.9px solid rgba(0, 0, 0, 0); + border-radius: 50px; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); +} + +input[type=range].slider::-ms-fill-upper { + background: rgba(90, 101, 107, 0.32); + border: 1.9px solid rgba(0, 0, 0, 0); + border-radius: 50px; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); +} + +input[type=range].slider::-ms-thumb { + box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; + border: 0px solid rgba(0, 0, 0, 0); + height: 16px; + width: 16px; + border-radius: 13px; + background: #e17075; + cursor: pointer; + height: 5.6px; +} + +input[type=range].slider:focus::-ms-fill-lower { + background: rgba(90, 101, 107, 0.32); +} + +input[type=range].slider:focus::-ms-fill-upper { + background: rgba(129, 142, 149, 0.32); +} \ No newline at end of file diff --git a/src/stylesheets/partials/_system-fonts.scss b/src/stylesheets/partials/_system-fonts.scss new file mode 100644 index 0000000..8343b87 --- /dev/null +++ b/src/stylesheets/partials/_system-fonts.scss @@ -0,0 +1,57 @@ +/* system-font.css v1.1.0 | CC0-1.0 License | github.com/jonathantneal/system-font-face */ + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 300; + src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 300; + src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 400; + src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 400; + src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 500; + src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 500; + src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: normal; + font-weight: 700; + src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); +} + +@font-face { + font-family: system-ui; + font-style: italic; + font-weight: 700; + src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); +} \ No newline at end of file diff --git a/src/stylesheets/partials/_varaiables.scss b/src/stylesheets/partials/_varaiables.scss new file mode 100644 index 0000000..1232b60 --- /dev/null +++ b/src/stylesheets/partials/_varaiables.scss @@ -0,0 +1,5 @@ +$col--primary:#8033b0; +$col--sec:#75b7dd; +$col--text:#5a656b; + +$font--family:"Segoe UI", system-ui, Tahoma; \ No newline at end of file From 5b95d8a037ea1d37c07954cb95148c2a15f9aa9d Mon Sep 17 00:00:00 2001 From: lokesh_coder Date: Sat, 21 Oct 2017 10:09:10 -0700 Subject: [PATCH 02/10] build file --- public/index.html | 5489 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 5489 insertions(+) diff --git a/public/index.html b/public/index.html index e69de29..68503dd 100644 --- a/public/index.html +++ b/public/index.html @@ -0,0 +1,5489 @@ + + + + + + + + Pretty checkbox | Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

pretty checkbox

+

A pure css library to beautify checkbox and radio buttons

+
+ Star + + +
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
+
+ + + + + + +
+
+ + + +
+
Installation
+
+ +

+ Step 1 : Download from + yarn or + npm +

+ +
+
+
+	             
+    > yarn add pretty-checkbox  //or
+    > npm install pretty-checkbox
+
+
+
+
+ +

+ Alternatively, you can also use CDN link +

+ +
+
+
+	
+    https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css
+
+
+
+
+ +

+ Step 2 : Add + dist/pretty-checkbox.min.css file in your html or import + src/pretty-checkbox.scss file in your scss file +

+ +
+
+
+	
+    @import '~pretty-checkbox/src/pretty-checkbox.scss';
+
+
+
+
+ +

+ Step 3 : Add the mark up in your file. Can be used with + Bootstrap, + Foundation, + Bulma frameworks. +

+ +
+
+
+	
+    <div class="pretty p-default">
+        <input type="checkbox" />
+        <div class="state">
+            <label>Check</label>
+        </div>
+    </div>
+
+
+
+
+ + +
+
+ + +
+
Basic checkbox
+
+ +

These are simple checkboxes with three shapes. Add class + p-default as like mentioned in above example. +

+

By default, it will be in + Square shape. To change, add class + p-curve or + p-round. +

+ +
+
+
Default + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
Curve + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
Round + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
Switch
+
+ +

Add class + p-switch. For shapes add class, + p-outline or + p-fill or + p-slim +

+ +
+
+
iOS style + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
Colors
+
+ +

+ There are five colors. + + + + + . Can be used as + Solid ( + p-primary ) or + Outline ( + p-primary-o ). +

+

To apply colors, add class + p-primary to + .state class inside + .pretty +

+ +
+
+
Solid + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Mixed + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+ Show colors for all combinations +
+ +
+ +
+
+
Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Curve + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Round + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Switch + +
+ +
show code
+
+
+ + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ Hide combinations +
+ +

Colors can be added, removed, changed from SCSS settings.

+ +
+
+ + + + + + +
+
Font icons
+
+ +

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

+ +
+
+
General + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

+ +
+
+ + + +
+
Svg
+
+ +

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

+ +
+
+
General + +
+ +
show code
+
+
+ +
+ +
+ + + + + +
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+
+ + + +
+ +
+ +

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

+ +
+
+ + + +
+
Image
+
+ +

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

+ +
+
+
General + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+ +
+ +

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

+ +
+
+ + + +
+
Animations
+
+ +

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

+ +
+
+
Smooth + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Jelly + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Tada + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Rotate + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Pulse + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

+ +
+
+ + + +
+
Plain
+
+ +

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

+ +
+
+
General + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Toggle
+
+ +

Toggles are simple show / hide type. Add class p-toggle to .pretty.

+

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

+ +
+
+
Simple + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ + +
+
+
With icon + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Without border + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
With color + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Without label + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ +

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

+ +
+
+ + + + + + +
+
States
+
+ +

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

+ +
+
+
Hover + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ + +
+
+
Focus + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Indeterminate + +
+ + + +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + + +
+
Disable
+
+ +

Normal disabled attribute in checkbox is enough.

+ +
+
+
General + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Lock
+
+ +

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

+ +
+
+
Lock + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Size
+
+ +

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

+ +
+
+
Bigger + +
+ +
show code
+
+
+ +
+ +
+ done + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +

Alternatively, we can also set font-size property to class .pretty

+ +
+
+ + + +
+
Radio buttons
+
+ +

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

+ +
+
+
Basic + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Colors + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Solid color and icons + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Outline colors + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Animations + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Plain + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Switch + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Tested font icon libraries
+
+ +

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

+ + +
+
+
Font awesome + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+
Bootstrap Glyphicons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( MDI ) + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( ZMDI ) + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Typeicons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Ion icons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( Google ) + + + +
+ +
show code
+
+
+ +
+ +
+ done + +
+
+ +
+ +
+ clear + +
+
+ +
+ +
+ favorite_border + +
+
+ favorite + +
+
+ +
+ +
+ + +

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

+ +
+
+ + + +
+
Tested SVG libraries
+
+ +

These are couple of well known svg libraries which is tested at this moment.

+ +
+
+
UIKit + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Feathers + + + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + + + +
+
+ +
+ +
+ +

But my instict says, other libraries also should work.

+ +
+
+ + + + + +
+
Scalability
+
+ + +
+
+
Try changing font size + +
+ + + +
show code
+
+
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+ +
+ + +
+
+ + + +
+
SCSS Customize
+
+ + +
+
+
Settings
+
+
+

+    // If you felt the name is not-so-pretty,
+    // you can always change!
+
+    $pretty--class-name: pretty;
+
+    // are you sure, you wanna change my handpicked
+    // awesome super duper colors?
+
+    $pretty--color-default:#bdc3c7;
+    $pretty--color-primary:#428bca;
+    $pretty--color-info:#5bc0de;
+    $pretty--color-success:#5cb85c;
+    $pretty--color-warning:#f0ad4e;
+    $pretty--color-danger:#d9534f;
+    $pretty--color-dark:#5a656b;
+
+    // uh, boring z-index stuff, who cares.
+
+    $pretty--z-index-back:0;
+    $pretty--z-index-between:1;
+    $pretty--z-index-front:2;
+
+    // nobody will change this.
+
+    $pretty--debug:false;
+    $pretty--dev-err:'Invalid input type!';
+
+
+
+ + +
+
+
Import
+
+
+

+    /* REQUIRED */
+    @import '~pretty-checkbox/scss/variables';
+    @import '~pretty-checkbox/scss/core';
+
+    /* OPTIONALS */
+    @import '~pretty-checkbox/scss/elements/default/fill';
+    @import '~pretty-checkbox/scss/elements/default/outline';
+    @import '~pretty-checkbox/scss/elements/default/thick';
+
+    @import '~pretty-checkbox/scss/elements/font-icon/general';
+
+    @import '~pretty-checkbox/scss/elements/svg/general';
+
+    @import '~pretty-checkbox/scss/elements/image/general';
+
+    @import '~pretty-checkbox/scss/elements/switch/general';
+    @import '~pretty-checkbox/scss/elements/switch/fill';
+    @import '~pretty-checkbox/scss/elements/switch/slim';
+
+    @import '~pretty-checkbox/scss/extras/toggle';
+    @import '~pretty-checkbox/scss/extras/plain';
+    @import '~pretty-checkbox/scss/extras/round';
+    @import '~pretty-checkbox/scss/extras/curve';
+    @import '~pretty-checkbox/scss/extras/animation';
+    @import '~pretty-checkbox/scss/extras/disabled';
+    @import '~pretty-checkbox/scss/extras/locked';
+    @import '~pretty-checkbox/scss/extras/colors';
+    @import '~pretty-checkbox/scss/extras/print';
+
+    @import '~pretty-checkbox/scss/states/hover';
+    @import '~pretty-checkbox/scss/states/focus';
+    @import '~pretty-checkbox/scss/states/indeterminate';
+
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + +
+
More
+
+ + +
+
+
Browser Compatability
+
+
+ +
Works in all latest browsers.
+
+
+ >= 10
+
+ >= 25
+
+ >= 40
+
+ >= 8
+
+ >= 25
+
+ +
+
+ + +
+
+
Framework Compatability
+
+
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+ + + +
+
+ + + + + +
+ +
+
+ + +
+
+
Inspirations
+
+
+ +
+ Awesome Bootstrap Checkbox - Idea +
+ Animista - Animations. +
+ +
+
+ + +
+
+
Contributions
+
+
+ +
+ Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome! +
+ +
+
+ + +
+
+
Support and share
+
+
+ + + +
+
+ + +
+
+
Credits
+
+
+ +
+ Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
+ Svg icons from useiconic · sparkk.fr
+ Slider generated from range.css + +
+ +
+
+ + +
+
+
Licence
+
+
+ +
The MIT License
+ +
+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + From 71b6eed1cfabbfd09c4d8b0fc298cebc1c7bf34c Mon Sep 17 00:00:00 2001 From: lokesh_coder Date: Sat, 21 Oct 2017 10:46:07 -0700 Subject: [PATCH 03/10] updated pc link --- public/404.html | 5489 +++++++++++++++++++++++++++++ src/html/layouts/application.html | 3 +- src/html/layouts/content.html | 62 - src/static/ngsw.json | 2 +- 4 files changed, 5492 insertions(+), 64 deletions(-) create mode 100644 public/404.html diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..68503dd --- /dev/null +++ b/public/404.html @@ -0,0 +1,5489 @@ + + + + + + + + Pretty checkbox | Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

pretty checkbox

+

A pure css library to beautify checkbox and radio buttons

+
+ Star + + +
+
+
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
+
+ + + + + + +
+
+ + + +
+
Installation
+
+ +

+ Step 1 : Download from + yarn or + npm +

+ +
+
+
+	             
+    > yarn add pretty-checkbox  //or
+    > npm install pretty-checkbox
+
+
+
+
+ +

+ Alternatively, you can also use CDN link +

+ +
+
+
+	
+    https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css
+
+
+
+
+ +

+ Step 2 : Add + dist/pretty-checkbox.min.css file in your html or import + src/pretty-checkbox.scss file in your scss file +

+ +
+
+
+	
+    @import '~pretty-checkbox/src/pretty-checkbox.scss';
+
+
+
+
+ +

+ Step 3 : Add the mark up in your file. Can be used with + Bootstrap, + Foundation, + Bulma frameworks. +

+ +
+
+
+	
+    <div class="pretty p-default">
+        <input type="checkbox" />
+        <div class="state">
+            <label>Check</label>
+        </div>
+    </div>
+
+
+
+
+ + +
+
+ + +
+
Basic checkbox
+
+ +

These are simple checkboxes with three shapes. Add class + p-default as like mentioned in above example. +

+

By default, it will be in + Square shape. To change, add class + p-curve or + p-round. +

+ +
+
+
Default + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
Curve + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
Round + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
Switch
+
+ +

Add class + p-switch. For shapes add class, + p-outline or + p-fill or + p-slim +

+ +
+
+
iOS style + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + +
+
Colors
+
+ +

+ There are five colors. + + + + + . Can be used as + Solid ( + p-primary ) or + Outline ( + p-primary-o ). +

+

To apply colors, add class + p-primary to + .state class inside + .pretty +

+ +
+
+
Solid + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Mixed + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+ Show colors for all combinations +
+ +
+ +
+
+
Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Square & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Curve + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Curve & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Round + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Fill + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Fill & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Thick + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Round & Thick & Outline + +
+ +
show code
+
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + + +
+
+
Switch + +
+ +
show code
+
+
+ + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ Hide combinations +
+ +

Colors can be added, removed, changed from SCSS settings.

+ +
+
+ + + + + + +
+
Font icons
+
+ +

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

+ +
+
+
General + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

+ +
+
+ + + +
+
Svg
+
+ +

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

+ +
+
+
General + +
+ +
show code
+
+
+ +
+ +
+ + + + + +
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+
+ + + +
+ +
+ +

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

+ +
+
+ + + +
+
Image
+
+ +

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

+ +
+
+
General + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+ +
+ +

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

+ +
+
+ + + +
+
Animations
+
+ +

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

+ +
+
+
Smooth + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Jelly + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Tada + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Rotate + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Pulse + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

+ +
+
+ + + +
+
Plain
+
+ +

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

+ +
+
+
General + +
+ +
show code
+
+
+ + + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Toggle
+
+ +

Toggles are simple show / hide type. Add class p-toggle to .pretty.

+

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

+ +
+
+
Simple + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ + +
+
+
With icon + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Without border + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
With color + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Without label + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ +

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

+ +
+
+ + + + + + +
+
States
+
+ +

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

+ +
+
+
Hover + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ + +
+
+
Focus + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Indeterminate + +
+ + + +
show code
+
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ + + +
+
Disable
+
+ +

Normal disabled attribute in checkbox is enough.

+ +
+
+
General + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Lock
+
+ +

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

+ +
+
+
Lock + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Size
+
+ +

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

+ +
+
+
Bigger + +
+ +
show code
+
+
+ +
+ +
+ done + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +

Alternatively, we can also set font-size property to class .pretty

+ +
+
+ + + +
+
Radio buttons
+
+ +

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

+ +
+
+
Basic + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Colors + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
Solid color and icons + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Outline colors + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Animations + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Plain + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Switch + +
+ +
show code
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ + + +
+
Tested font icon libraries
+
+ +

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

+ + +
+
+
Font awesome + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+
Bootstrap Glyphicons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( MDI ) + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( ZMDI ) + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Typeicons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Ion icons + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+
Material icon ( Google ) + + + +
+ +
show code
+
+
+ +
+ +
+ done + +
+
+ +
+ +
+ clear + +
+
+ +
+ +
+ favorite_border + +
+
+ favorite + +
+
+ +
+ +
+ + +

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

+ +
+
+ + + +
+
Tested SVG libraries
+
+ +

These are couple of well known svg libraries which is tested at this moment.

+ +
+
+
UIKit + + + +
+ +
show code
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
Feathers + + + +
+ +
show code
+
+
+ + +
+ +
+ + +
+
+ + +
+ +
+ + + + +
+
+ +
+ +
+ +

But my instict says, other libraries also should work.

+ +
+
+ + + + + +
+
Scalability
+
+ + +
+
+
Try changing font size + +
+ + + +
show code
+
+
+ +
+
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+ +
+ + +
+
+ + + +
+
SCSS Customize
+
+ + +
+
+
Settings
+
+
+

+    // If you felt the name is not-so-pretty,
+    // you can always change!
+
+    $pretty--class-name: pretty;
+
+    // are you sure, you wanna change my handpicked
+    // awesome super duper colors?
+
+    $pretty--color-default:#bdc3c7;
+    $pretty--color-primary:#428bca;
+    $pretty--color-info:#5bc0de;
+    $pretty--color-success:#5cb85c;
+    $pretty--color-warning:#f0ad4e;
+    $pretty--color-danger:#d9534f;
+    $pretty--color-dark:#5a656b;
+
+    // uh, boring z-index stuff, who cares.
+
+    $pretty--z-index-back:0;
+    $pretty--z-index-between:1;
+    $pretty--z-index-front:2;
+
+    // nobody will change this.
+
+    $pretty--debug:false;
+    $pretty--dev-err:'Invalid input type!';
+
+
+
+ + +
+
+
Import
+
+
+

+    /* REQUIRED */
+    @import '~pretty-checkbox/scss/variables';
+    @import '~pretty-checkbox/scss/core';
+
+    /* OPTIONALS */
+    @import '~pretty-checkbox/scss/elements/default/fill';
+    @import '~pretty-checkbox/scss/elements/default/outline';
+    @import '~pretty-checkbox/scss/elements/default/thick';
+
+    @import '~pretty-checkbox/scss/elements/font-icon/general';
+
+    @import '~pretty-checkbox/scss/elements/svg/general';
+
+    @import '~pretty-checkbox/scss/elements/image/general';
+
+    @import '~pretty-checkbox/scss/elements/switch/general';
+    @import '~pretty-checkbox/scss/elements/switch/fill';
+    @import '~pretty-checkbox/scss/elements/switch/slim';
+
+    @import '~pretty-checkbox/scss/extras/toggle';
+    @import '~pretty-checkbox/scss/extras/plain';
+    @import '~pretty-checkbox/scss/extras/round';
+    @import '~pretty-checkbox/scss/extras/curve';
+    @import '~pretty-checkbox/scss/extras/animation';
+    @import '~pretty-checkbox/scss/extras/disabled';
+    @import '~pretty-checkbox/scss/extras/locked';
+    @import '~pretty-checkbox/scss/extras/colors';
+    @import '~pretty-checkbox/scss/extras/print';
+
+    @import '~pretty-checkbox/scss/states/hover';
+    @import '~pretty-checkbox/scss/states/focus';
+    @import '~pretty-checkbox/scss/states/indeterminate';
+
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + +
+
More
+
+ + +
+
+
Browser Compatability
+
+
+ +
Works in all latest browsers.
+
+
+ >= 10
+
+ >= 25
+
+ >= 40
+
+ >= 8
+
+ >= 25
+
+ +
+
+ + +
+
+
Framework Compatability
+
+
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+ + + +
+
+ + + + + +
+ +
+
+ + +
+
+
Inspirations
+
+
+ +
+ Awesome Bootstrap Checkbox - Idea +
+ Animista - Animations. +
+ +
+
+ + +
+
+
Contributions
+
+
+ +
+ Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome! +
+ +
+
+ + +
+
+
Support and share
+
+
+ + + +
+
+ + +
+
+
Credits
+
+
+ +
+ Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
+ Svg icons from useiconic · sparkk.fr
+ Slider generated from range.css + +
+ +
+
+ + +
+
+
Licence
+
+
+ +
The MIT License
+ +
+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/html/layouts/application.html b/src/html/layouts/application.html index 343269a..79f8718 100644 --- a/src/html/layouts/application.html +++ b/src/html/layouts/application.html @@ -57,7 +57,8 @@ - + + diff --git a/src/html/layouts/content.html b/src/html/layouts/content.html index 9c10ced..a51551f 100644 --- a/src/html/layouts/content.html +++ b/src/html/layouts/content.html @@ -1,65 +1,3 @@ -
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- - -
-
- - -
-
-
- - - - {% from "./partials/common.html" import section, code,block,codeblock,contentblock %}
diff --git a/src/static/ngsw.json b/src/static/ngsw.json index bc6f394..419e014 100644 --- a/src/static/ngsw.json +++ b/src/static/ngsw.json @@ -32,7 +32,7 @@ { "name": "api-freshness", "patterns": [ - "https:\\/\\/192\\.168\\.43\\.188\\:3040\\/dist\\/pretty-checkbox\\.min\\.css" + "https:\\/\\/cdn\\.jsdelivr\\.net\\/npm\\/pretty-checkbox@3\\/dist\\/pretty-checkbox\\.min\\.css" ], "strategy": "freshness", "maxSize": 100, From 78f9c595fec7823263f416d8c530ec01c682258d Mon Sep 17 00:00:00 2001 From: lokesh_coder Date: Sat, 21 Oct 2017 18:35:15 -0700 Subject: [PATCH 04/10] doc update --- code/snippets.js | 2 +- config/task-config.js | 2 +- public/404.html | 3742 +------------- public/index.html | 3742 +------------- public/javascripts/app.js | 1 + public/ngsw.json | 2 +- public/stylesheets/app.css | 5614 +--------------------- src/html/layouts/application.html | 9 +- src/stylesheets/app.scss | 1 - src/stylesheets/partials/_bootstrap.scss | 50 +- 10 files changed, 194 insertions(+), 12971 deletions(-) create mode 100644 public/javascripts/app.js diff --git a/code/snippets.js b/code/snippets.js index b0dc957..397fd0a 100644 --- a/code/snippets.js +++ b/code/snippets.js @@ -8,7 +8,7 @@ c.install_cli = c.install_cdn = ` - https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css + https://cdn.jsdelivr.net/npm/pretty-checkbox@3/dist/pretty-checkbox.min.css `; c.install_import = diff --git a/config/task-config.js b/config/task-config.js index b4227de..2639b37 100644 --- a/config/task-config.js +++ b/config/task-config.js @@ -37,6 +37,6 @@ module.exports = { }, production: { - rev: true + rev: false } } diff --git a/public/404.html b/public/404.html index 68503dd..2f11d0d 100644 --- a/public/404.html +++ b/public/404.html @@ -1,264 +1,23 @@ - - - - - - - - Pretty checkbox | Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

pretty checkbox

-

A pure css library to beautify checkbox and radio buttons

-
- Star - - -
-
-
- - -
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- - -
-
- - -
-
-
- - - - - - -
-
- - - -
-
Installation
-
- -

- Step 1 : Download from - yarn or - npm -

- -
-
-
+    ga('send', 'pageview');

pretty checkbox

A pure css library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

 	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
 
-
-
-
- -

- Alternatively, you can also use CDN link -

- -
-
-
+

Alternatively, you can also use CDN link

 	
-    https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css
+    https://cdn.jsdelivr.net/npm/pretty-checkbox@3/dist/pretty-checkbox.min.css
 
-
-
-
- -

- Step 2 : Add - dist/pretty-checkbox.min.css file in your html or import - src/pretty-checkbox.scss file in your scss file -

- -
-
-
+

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

 	
     @import '~pretty-checkbox/src/pretty-checkbox.scss';
 
-
-
-
- -

- Step 3 : Add the mark up in your file. Can be used with - Bootstrap, - Foundation, - Bulma frameworks. -

- -
-
-
+

Step 3 : Add the mark up in your file. Can be used with Bootstrap, Foundation, Bulma frameworks.

 	
     <div class="pretty p-default">
         <input type="checkbox" />
@@ -267,65 +26,7 @@ 
Installation
</div> </div>
-
-
-
- - -
-
- - -
-
Basic checkbox
-
- -

These are simple checkboxes with three shapes. Add class - p-default as like mentioned in above example. -

-

By default, it will be in - Square shape. To change, add class - p-curve or - p-round. -

- -
-
-
Default - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
-
- -
-
-
Curve - -
- -
show code
-
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Curve
show code
-
- -
-
-
Round - -
- -
show code
-
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Round
show code
-
- - -
-
- - -
-
Switch
-
- -

Add class - p-switch. For shapes add class, - p-outline or - p-fill or - p-slim -

- -
-
-
iOS style - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
-
- - -
-
- - -
-
Colors
-
- -

- There are five colors. - - - - - . Can be used as - Solid ( - p-primary ) or - Outline ( - p-primary-o ). -

-

To apply colors, add class - p-primary to - .state class inside - .pretty -

- -
-
-
Solid - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
-
- - -
-
-
Mixed - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Mixed
show code
-
- - -
- Show colors for all combinations -
- -
- -
-
-
Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Show colors for all combinations
Outline
show code
-
- - -
-
-
Square & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Fill
show code
-
- - -
-
-
Square & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Fill & Outline
show code
-
- - -
-
-
Square & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Thick
show code
-
- - -
-
-
Square & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Thick & Outline
show code
-
- - - -
-
-
Curve - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve
show code
-
- - -
-
-
Curve & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Outline
show code
-
- - -
-
-
Curve & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Fill
show code
-
- - -
-
-
Curve & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Fill & Outline
show code
-
- - -
-
-
Curve & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Thick
show code
-
- - -
-
-
Curve & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Thick & Outline
show code
-
- - - -
-
-
Round - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round
show code
-
- - -
-
-
Round & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Outline
show code
-
- - -
-
-
Round & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Fill
show code
-
- - -
-
-
Round & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Fill & Outline
show code
-
- - -
-
-
Round & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Thick
show code
-
- - -
-
-
Round & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Thick & Outline
show code
-
- - - -
-
-
Switch - -
- -
show code
-
-
- - - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
- -
- Hide combinations -
- -

Colors can be added, removed, changed from SCSS settings.

- -
-
- - - - - - -
-
Font icons
-
- -

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

- -
-
-
General - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
-
- -

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

- -
-
- - - -
-
Svg
-
- -

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

- -
-
-
General - -
- -
show code
-
-
- -
- -
- - - - - -
-
- - -
- -
- - -
-
- - -
- -
- - -
-
- -
- -
- -
- -

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

- -
- - - - -
-
Image
-
- -

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

- -
-
-
General - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
- -
- -

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

- -
-
- - - -
-
Animations
-
- -

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

- -
-
-
Smooth - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
-
- - -
-
-
Jelly - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Tada - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Rotate - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Pulse - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

- -
-
- - - -
-
Plain
-
- -

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

- -
-
-
General - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -
-
- - - -
-
Toggle
-
- -

Toggles are simple show / hide type. Add class p-toggle to .pretty.

-

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

- -
-
-
Simple - -
- -
show code
-
-
- -
- -
- -
-
- -
-
- -
-
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
-
- - -
-
-
With icon - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
With icon
show code
-
- - -
-
-
Without border - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
Without border
show code
-
- - -
-
-
With color - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
- -
- - -
-
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
With color
show code
-
- - -
-
-
Without label - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
-
- -
-
Without label
show code
-
- -

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

- -
-
- - - - - - -
-
States
-
- -

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

- -
-
-
Hover - -
- -
show code
-
-
- -
- -
- -
-
- -
-
- -
-

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
-
- - -
-
-
Focus - -
- -
show code
-
-
- -
- -
- -
-
- -
-
Focus
show code
-
- - -
-
-
Indeterminate - -
- - - -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
Indeterminate
show code
-
- - -
-
- - - -
-
Disable
-
- -

Normal disabled attribute in checkbox is enough.

- -
-
-
General - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- -
-
- -
-
Disable

Normal disabled attribute in checkbox is enough.

General
show code
-
- - -
-
- - - -
-
Lock
-
- -

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

- -
-
-
Lock - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- -
-
- -
-
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
-
- - -
-
- - - -
-
Size
-
- -

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

- -
-
-
Bigger - -
- -
show code
-
-
- -
- -
- done - -
-
- -
- -
- -
-
- -
-
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
-
- -

Alternatively, we can also set font-size property to class .pretty

- -
-
- - - -
-
Radio buttons
-
- -

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

- -
-
-
Basic - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
-
- - -
-
-
Colors - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Colors
show code
-
- - -
-
-
Solid color and icons - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Solid color and icons
show code
-
- - -
-
-
Outline colors - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Outline colors
show code
-
- - -
-
-
Animations - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Animations
show code
-
- - -
-
-
Plain - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Plain
show code
-
- - -
-
-
Switch - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Switch
show code
-
- - -
-
- - - -
-
Tested font icon libraries
-
- -

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

- - -
-
-
Font awesome - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- - -
-
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
-
- - -
-
-
Bootstrap Glyphicons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Bootstrap Glyphicons
show code
-
- - -
-
-
Material icon ( MDI ) - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Material icon ( MDI )
show code
-
- - -
-
-
Material icon ( ZMDI ) - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Material icon ( ZMDI )
show code
-
- - -
-
-
Typeicons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Typeicons
show code
-
- - -
-
-
Ion icons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Ion icons
show code
-
- - -
-
-
Material icon ( Google ) - - - -
- -
show code
-
-
- -
- -
- done - -
-
- -
- -
- clear - -
-
- -
- -
- favorite_border - -
-
- favorite - -
-
- -
-
Material icon ( Google )
show code
done
clear
favorite_border
favorite
-
- - -

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

- -
-
- - - -
-
Tested SVG libraries
-
- -

These are couple of well known svg libraries which is tested at this moment.

- -
-
-
UIKit - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
-
- - -
-
-
Feathers - - - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- - - - -
-
- -
-
Feathers
show code
-
- -

But my instict says, other libraries also should work.

- -
-
- - - - - -
-
Scalability
-
- - -
-
-
Try changing font size - -
- - - -
show code
-
-
- -
-
- -
- -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
- -
-

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
-
- - -
-
- - - -
-
SCSS Customize
-
- - -
-
-
Settings
-
-
-

+
SCSS Customize
Settings

     // If you felt the name is not-so-pretty,
     // you can always change!
 
@@ -5183,17 +1859,7 @@ 
Settings
$pretty--debug:false; $pretty--dev-err:'Invalid input type!'; -
-
-
- - -
-
-
Import
-
-
-

+
Import

     /* REQUIRED */
     @import '~pretty-checkbox/scss/variables';
     @import '~pretty-checkbox/scss/core';
@@ -5226,234 +1892,7 @@ 
Import
@import '~pretty-checkbox/scss/states/hover'; @import '~pretty-checkbox/scss/states/focus'; @import '~pretty-checkbox/scss/states/indeterminate'; -
-
-
- - -
-
- - - - - - - - - - - - - - - - - -
-
More
-
- - -
-
-
Browser Compatability
-
-
- -
Works in all latest browsers.
-
-
- >= 10
-
- >= 25
-
- >= 40
-
- >= 8
-
- >= 25
-
- -
-
- - -
-
-
Framework Compatability
-
-
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
-
- - - -
-
- - - - - -
- -
-
- - -
-
-
Inspirations
-
-
- -
- Awesome Bootstrap Checkbox - Idea -
- Animista - Animations. -
- -
-
- - -
-
-
Contributions
-
-
- -
- Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome! -
- -
-
- - -
-
-
Support and share
-
-
- - - -
-
- - -
-
-
Credits
-
-
- -
- Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
- Svg icons from useiconic · sparkk.fr
- Slider generated from range.css - -
- -
-
- - -
-
-
Licence
-
-
- -
The MIT License
- -
-
- - -
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - + } \ No newline at end of file diff --git a/public/index.html b/public/index.html index 68503dd..2f11d0d 100644 --- a/public/index.html +++ b/public/index.html @@ -1,264 +1,23 @@ - - - - - - - - Pretty checkbox | Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

pretty checkbox

-

A pure css library to beautify checkbox and radio buttons

-
- Star - - -
-
-
- - -
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- - -
-
- - -
-
-
- - - - - - -
-
- - - -
-
Installation
-
- -

- Step 1 : Download from - yarn or - npm -

- -
-
-
+    ga('send', 'pageview');

pretty checkbox

A pure css library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

 	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
 
-
-
-
- -

- Alternatively, you can also use CDN link -

- -
-
-
+

Alternatively, you can also use CDN link

 	
-    https://cdn.jsdelivr.net/npm/pretty-checkbox/dist/pretty.min.css
+    https://cdn.jsdelivr.net/npm/pretty-checkbox@3/dist/pretty-checkbox.min.css
 
-
-
-
- -

- Step 2 : Add - dist/pretty-checkbox.min.css file in your html or import - src/pretty-checkbox.scss file in your scss file -

- -
-
-
+

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

 	
     @import '~pretty-checkbox/src/pretty-checkbox.scss';
 
-
-
-
- -

- Step 3 : Add the mark up in your file. Can be used with - Bootstrap, - Foundation, - Bulma frameworks. -

- -
-
-
+

Step 3 : Add the mark up in your file. Can be used with Bootstrap, Foundation, Bulma frameworks.

 	
     <div class="pretty p-default">
         <input type="checkbox" />
@@ -267,65 +26,7 @@ 
Installation
</div> </div>
-
-
-
- - -
-
- - -
-
Basic checkbox
-
- -

These are simple checkboxes with three shapes. Add class - p-default as like mentioned in above example. -

-

By default, it will be in - Square shape. To change, add class - p-curve or - p-round. -

- -
-
-
Default - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
-
- -
-
-
Curve - -
- -
show code
-
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Curve
show code
-
- -
-
-
Round - -
- -
show code
-
-
- - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Round
show code
-
- - -
-
- - -
-
Switch
-
- -

Add class - p-switch. For shapes add class, - p-outline or - p-fill or - p-slim -

- -
-
-
iOS style - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
-
- - -
-
- - -
-
Colors
-
- -

- There are five colors. - - - - - . Can be used as - Solid ( - p-primary ) or - Outline ( - p-primary-o ). -

-

To apply colors, add class - p-primary to - .state class inside - .pretty -

- -
-
-
Solid - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
-
- - -
-
-
Mixed - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Mixed
show code
-
- - -
- Show colors for all combinations -
- -
- -
-
-
Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Show colors for all combinations
Outline
show code
-
- - -
-
-
Square & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Fill
show code
-
- - -
-
-
Square & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Fill & Outline
show code
-
- - -
-
-
Square & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Thick
show code
-
- - -
-
-
Square & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Square & Thick & Outline
show code
-
- - - -
-
-
Curve - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve
show code
-
- - -
-
-
Curve & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Outline
show code
-
- - -
-
-
Curve & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Fill
show code
-
- - -
-
-
Curve & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Fill & Outline
show code
-
- - -
-
-
Curve & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Thick
show code
-
- - -
-
-
Curve & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Curve & Thick & Outline
show code
-
- - - -
-
-
Round - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round
show code
-
- - -
-
-
Round & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Outline
show code
-
- - -
-
-
Round & Fill - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Fill
show code
-
- - -
-
-
Round & Fill & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Fill & Outline
show code
-
- - -
-
-
Round & Thick - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Thick
show code
-
- - -
-
-
Round & Thick & Outline - -
- -
show code
-
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
Round & Thick & Outline
show code
-
- - - -
-
-
Switch - -
- -
show code
-
-
- - - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
- -
- Hide combinations -
- -

Colors can be added, removed, changed from SCSS settings.

- -
-
- - - - - - -
-
Font icons
-
- -

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

- -
-
-
General - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
-
- -

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

- -
-
- - - -
-
Svg
-
- -

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

- -
-
-
General - -
- -
show code
-
-
- -
- -
- - - - - -
-
- - -
- -
- - -
-
- - -
- -
- - -
-
- -
- -
- -
- -

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

- -
- - - - -
-
Image
-
- -

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

- -
-
-
General - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
- -
- -

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

- -
-
- - - -
-
Animations
-
- -

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

- -
-
-
Smooth - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
-
- - -
-
-
Jelly - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Tada - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Rotate - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
Pulse - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

- -
-
- - - -
-
Plain
-
- -

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

- -
-
-
General - -
- -
show code
-
-
- - - -
- -
- - -
-
- -
- -
- -
-
- -
- -
- - -
-
- - - -
-
Toggle
-
- -

Toggles are simple show / hide type. Add class p-toggle to .pretty.

-

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

- -
-
-
Simple - -
- -
show code
-
-
- -
- -
- -
-
- -
-
- -
-
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
-
- - -
-
-
With icon - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
With icon
show code
-
- - -
-
-
Without border - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
Without border
show code
-
- - -
-
-
With color - -
- -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
- -
- - -
-
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
With color
show code
-
- - -
-
-
Without label - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
-
- -
-
Without label
show code
-
- -

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

- -
-
- - - - - - -
-
States
-
- -

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

- -
-
-
Hover - -
- -
show code
-
-
- -
- -
- -
-
- -
-
- -
-

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
-
- - -
-
-
Focus - -
- -
show code
-
-
- -
- -
- -
-
- -
-
Focus
show code
-
- - -
-
-
Indeterminate - -
- - - -
show code
-
-
- -
- -
- - -
-
- - -
-
- -
-
Indeterminate
show code
-
- - -
-
- - - -
-
Disable
-
- -

Normal disabled attribute in checkbox is enough.

- -
-
-
General - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- -
-
- -
-
Disable

Normal disabled attribute in checkbox is enough.

General
show code
-
- - -
-
- - - -
-
Lock
-
- -

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

- -
-
-
Lock - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- -
-
- -
-
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
-
- - -
-
- - - -
-
Size
-
- -

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

- -
-
-
Bigger - -
- -
show code
-
-
- -
- -
- done - -
-
- -
- -
- -
-
- -
-
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
-
- -

Alternatively, we can also set font-size property to class .pretty

- -
-
- - - -
-
Radio buttons
-
- -

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

- -
-
-
Basic - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
-
- - -
-
-
Colors - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Colors
show code
-
- - -
-
-
Solid color and icons - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Solid color and icons
show code
-
- - -
-
-
Outline colors - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Outline colors
show code
-
- - -
-
-
Animations - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Animations
show code
-
- - -
-
-
Plain - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-
Plain
show code
-
- - -
-
-
Switch - -
- -
show code
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
Switch
show code
-
- - -
-
- - - -
-
Tested font icon libraries
-
- -

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

- - -
-
-
Font awesome - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- - -
-
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
-
- - -
-
-
Bootstrap Glyphicons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Bootstrap Glyphicons
show code
-
- - -
-
-
Material icon ( MDI ) - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Material icon ( MDI )
show code
-
- - -
-
-
Material icon ( ZMDI ) - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Material icon ( ZMDI )
show code
-
- - -
-
-
Typeicons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Typeicons
show code
-
- - -
-
-
Ion icons - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
- -
- - -
-
- - -
-
- -
-
Ion icons
show code
-
- - -
-
-
Material icon ( Google ) - - - -
- -
show code
-
-
- -
- -
- done - -
-
- -
- -
- clear - -
-
- -
- -
- favorite_border - -
-
- favorite - -
-
- -
-
Material icon ( Google )
show code
done
clear
favorite_border
favorite
-
- - -

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

- -
-
- - - -
-
Tested SVG libraries
-
- -

These are couple of well known svg libraries which is tested at this moment.

- -
-
-
UIKit - - - -
- -
show code
-
-
- -
- -
- - -
-
- -
- -
- - -
-
- -
-

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
-
- - -
-
-
Feathers - - - -
- -
show code
-
-
- - -
- -
- - -
-
- - -
- -
- - - - -
-
- -
-
Feathers
show code
-
- -

But my instict says, other libraries also should work.

- -
-
- - - - - -
-
Scalability
-
- - -
-
-
Try changing font size - -
- - - -
show code
-
-
- -
-
- -
- -
-
- -
- -
- - -
-
- -
- -
- - -
-
-
- -
-

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
-
- - -
-
- - - -
-
SCSS Customize
-
- - -
-
-
Settings
-
-
-

+
SCSS Customize
Settings

     // If you felt the name is not-so-pretty,
     // you can always change!
 
@@ -5183,17 +1859,7 @@ 
Settings
$pretty--debug:false; $pretty--dev-err:'Invalid input type!'; -
-
-
- - -
-
-
Import
-
-
-

+
Import

     /* REQUIRED */
     @import '~pretty-checkbox/scss/variables';
     @import '~pretty-checkbox/scss/core';
@@ -5226,234 +1892,7 @@ 
Import
@import '~pretty-checkbox/scss/states/hover'; @import '~pretty-checkbox/scss/states/focus'; @import '~pretty-checkbox/scss/states/indeterminate'; -
-
-
- - -
-
- - - - - - - - - - - - - - - - - -
-
More
-
- - -
-
-
Browser Compatability
-
-
- -
Works in all latest browsers.
-
-
- >= 10
-
- >= 25
-
- >= 40
-
- >= 8
-
- >= 25
-
- -
-
- - -
-
-
Framework Compatability
-
-
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
-
- - - -
-
- - - - - -
- -
-
- - -
-
-
Inspirations
-
-
- -
- Awesome Bootstrap Checkbox - Idea -
- Animista - Animations. -
- -
-
- - -
-
-
Contributions
-
-
- -
- Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome! -
- -
-
- - -
-
-
Support and share
-
-
- - - -
-
- - -
-
-
Credits
-
-
- -
- Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
- Svg icons from useiconic · sparkk.fr
- Slider generated from range.css - -
- -
-
- - -
-
-
Licence
-
-
- -
The MIT License
- -
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - + } \ No newline at end of file diff --git a/public/javascripts/app.js b/public/javascripts/app.js new file mode 100644 index 0000000..c8dc3a0 --- /dev/null +++ b/public/javascripts/app.js @@ -0,0 +1 @@ +!function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="javascripts/",t(t.s=6)}([function(e,t,n){for(var a=document.querySelectorAll("[data-module]"),r=0;r',this.hideCodeHTML='hide code ',this.el.addEventListener("click",function(e){var t=e.target.parentNode.parentNode.querySelector(".card-footer");n.isShowing?(t.className=t.className.replace(" fadeIn"," hide"),e.target.innerHTML=n.showCodeHTML,n.isShowing=!1):(t.className=t.className.replace(" hide"," fadeIn"),e.target.innerHTML=n.hideCodeHTML,n.isShowing=!0)})};t.default=r},function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n code { - padding: 0; - color: inherit; - background-color: inherit; } - -kbd { - padding: 0.2rem 0.4rem; - font-size: 90%; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; } - kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; } - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - font-size: 90%; - color: #212529; } - pre code { - padding: 0; - font-size: inherit; - color: inherit; - background-color: transparent; - border-radius: 0; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - -.container { - margin-right: auto; - margin-left: auto; - padding-right: 15px; - padding-left: 15px; - width: 100%; } - @media (min-width: 576px) { - .container { - max-width: 540px; } } - @media (min-width: 768px) { - .container { - max-width: 720px; } } - @media (min-width: 992px) { - .container { - max-width: 960px; } } - @media (min-width: 1200px) { - .container { - max-width: 1140px; } } - -.container-fluid { - width: 100%; - margin-right: auto; - margin-left: auto; - padding-right: 15px; - padding-left: 15px; - width: 100%; } - -.row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; } - -.no-gutters { - margin-right: 0; - margin-left: 0; } - .no-gutters > .col, - .no-gutters > [class*="col-"] { - padding-right: 0; - padding-left: 0; } - -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, -.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, -.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, -.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, -.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, -.col-xl-auto { - position: relative; - width: 100%; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; } - -.col { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; } - -.col-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; } - -.col-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; } - -.col-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; } - -.col-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; } - -.col-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; } - -.col-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; } - -.col-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; } - -.col-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; } - -.col-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; } - -.col-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; } - -.col-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; } - -.col-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; } - -.col-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; } - -.order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; } - -.order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; } - -.order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; } - -.order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; } - -.order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; } - -.order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; } - -.order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; } - -.order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; } - -.order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; } - -.order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; } - -.order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; } - -.order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; } - -@media (min-width: 576px) { - .col-sm { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; } - .col-sm-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; } - .col-sm-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; } - .col-sm-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; } - .col-sm-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; } - .col-sm-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; } - .col-sm-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; } - .col-sm-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; } - .col-sm-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; } - .col-sm-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; } - .col-sm-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; } - .col-sm-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; } - .col-sm-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; } - .col-sm-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; } - .order-sm-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; } - .order-sm-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; } - .order-sm-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; } - .order-sm-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; } - .order-sm-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; } - .order-sm-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; } - .order-sm-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; } - .order-sm-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; } - .order-sm-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; } - .order-sm-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; } - .order-sm-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; } - .order-sm-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; } } - -@media (min-width: 768px) { - .col-md { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; } - .col-md-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; } - .col-md-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; } - .col-md-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; } - .col-md-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; } - .col-md-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; } - .col-md-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; } - .col-md-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; } - .col-md-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; } - .col-md-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; } - .col-md-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; } - .col-md-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; } - .col-md-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; } - .col-md-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; } - .order-md-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; } - .order-md-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; } - .order-md-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; } - .order-md-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; } - .order-md-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; } - .order-md-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; } - .order-md-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; } - .order-md-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; } - .order-md-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; } - .order-md-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; } - .order-md-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; } - .order-md-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; } } - -@media (min-width: 992px) { - .col-lg { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; } - .col-lg-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; } - .col-lg-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; } - .col-lg-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; } - .col-lg-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; } - .col-lg-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; } - .col-lg-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; } - .col-lg-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; } - .col-lg-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; } - .col-lg-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; } - .col-lg-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; } - .col-lg-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; } - .col-lg-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; } - .col-lg-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; } - .order-lg-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; } - .order-lg-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; } - .order-lg-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; } - .order-lg-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; } - .order-lg-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; } - .order-lg-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; } - .order-lg-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; } - .order-lg-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; } - .order-lg-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; } - .order-lg-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; } - .order-lg-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; } - .order-lg-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; } } - -@media (min-width: 1200px) { - .col-xl { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; } - .col-xl-auto { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; } - .col-xl-1 { - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333%; - flex: 0 0 8.33333%; - max-width: 8.33333%; } - .col-xl-2 { - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66667%; - flex: 0 0 16.66667%; - max-width: 16.66667%; } - .col-xl-3 { - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; } - .col-xl-4 { - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333%; - flex: 0 0 33.33333%; - max-width: 33.33333%; } - .col-xl-5 { - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66667%; - flex: 0 0 41.66667%; - max-width: 41.66667%; } - .col-xl-6 { - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; } - .col-xl-7 { - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333%; - flex: 0 0 58.33333%; - max-width: 58.33333%; } - .col-xl-8 { - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66667%; - flex: 0 0 66.66667%; - max-width: 66.66667%; } - .col-xl-9 { - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; } - .col-xl-10 { - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333%; - flex: 0 0 83.33333%; - max-width: 83.33333%; } - .col-xl-11 { - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66667%; - flex: 0 0 91.66667%; - max-width: 91.66667%; } - .col-xl-12 { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; } - .order-xl-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; } - .order-xl-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; } - .order-xl-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; } - .order-xl-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; } - .order-xl-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; } - .order-xl-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; } - .order-xl-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; } - .order-xl-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; } - .order-xl-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; } - .order-xl-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; } - .order-xl-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; } - .order-xl-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; } } - -.table { - width: 100%; - max-width: 100%; - margin-bottom: 1rem; - background-color: transparent; } - .table th, - .table td { - padding: 0.75rem; - vertical-align: top; - border-top: 1px solid #e9ecef; } - .table thead th { - vertical-align: bottom; - border-bottom: 2px solid #e9ecef; } - .table tbody + tbody { - border-top: 2px solid #e9ecef; } - .table .table { - background-color: #fff; } - -.table-sm th, -.table-sm td { - padding: 0.3rem; } - -.table-bordered { - border: 1px solid #e9ecef; } - .table-bordered th, - .table-bordered td { - border: 1px solid #e9ecef; } - .table-bordered thead th, - .table-bordered thead td { - border-bottom-width: 2px; } - -.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(0, 0, 0, 0.05); } - -.table-hover tbody tr:hover { - background-color: rgba(0, 0, 0, 0.075); } - -.table-primary, -.table-primary > th, -.table-primary > td { - background-color: #b8daff; } - -.table-hover .table-primary:hover { - background-color: #9fcdff; } - .table-hover .table-primary:hover > td, - .table-hover .table-primary:hover > th { - background-color: #9fcdff; } - -.table-secondary, -.table-secondary > th, -.table-secondary > td { - background-color: #dddfe2; } - -.table-hover .table-secondary:hover { - background-color: #cfd2d6; } - .table-hover .table-secondary:hover > td, - .table-hover .table-secondary:hover > th { - background-color: #cfd2d6; } - -.table-success, -.table-success > th, -.table-success > td { - background-color: #c3e6cb; } - -.table-hover .table-success:hover { - background-color: #b1dfbb; } - .table-hover .table-success:hover > td, - .table-hover .table-success:hover > th { - background-color: #b1dfbb; } - -.table-info, -.table-info > th, -.table-info > td { - background-color: #bee5eb; } - -.table-hover .table-info:hover { - background-color: #abdde5; } - .table-hover .table-info:hover > td, - .table-hover .table-info:hover > th { - background-color: #abdde5; } - -.table-warning, -.table-warning > th, -.table-warning > td { - background-color: #ffeeba; } - -.table-hover .table-warning:hover { - background-color: #ffe8a1; } - .table-hover .table-warning:hover > td, - .table-hover .table-warning:hover > th { - background-color: #ffe8a1; } - -.table-danger, -.table-danger > th, -.table-danger > td { - background-color: #f5c6cb; } - -.table-hover .table-danger:hover { - background-color: #f1b0b7; } - .table-hover .table-danger:hover > td, - .table-hover .table-danger:hover > th { - background-color: #f1b0b7; } - -.table-light, -.table-light > th, -.table-light > td { - background-color: #fdfdfe; } - -.table-hover .table-light:hover { - background-color: #ececf6; } - .table-hover .table-light:hover > td, - .table-hover .table-light:hover > th { - background-color: #ececf6; } - -.table-dark, -.table-dark > th, -.table-dark > td { - background-color: #c6c8ca; } - -.table-hover .table-dark:hover { - background-color: #b9bbbe; } - .table-hover .table-dark:hover > td, - .table-hover .table-dark:hover > th { - background-color: #b9bbbe; } - -.table-active, -.table-active > th, -.table-active > td { - background-color: rgba(0, 0, 0, 0.075); } - -.table-hover .table-active:hover { - background-color: rgba(0, 0, 0, 0.075); } - .table-hover .table-active:hover > td, - .table-hover .table-active:hover > th { - background-color: rgba(0, 0, 0, 0.075); } - -.thead-inverse th { - color: #fff; - background-color: #212529; } - -.thead-default th { - color: #495057; - background-color: #e9ecef; } - -.table-inverse { - color: #fff; - background-color: #212529; } - .table-inverse th, - .table-inverse td, - .table-inverse thead th { - border-color: #32383e; } - .table-inverse.table-bordered { - border: 0; } - .table-inverse.table-striped tbody tr:nth-of-type(odd) { - background-color: rgba(255, 255, 255, 0.05); } - .table-inverse.table-hover tbody tr:hover { - background-color: rgba(255, 255, 255, 0.075); } - -@media (max-width: 991px) { - .table-responsive { - display: block; - width: 100%; - overflow-x: auto; - -ms-overflow-style: -ms-autohiding-scrollbar; } - .table-responsive.table-bordered { - border: 0; } } - -.btn { - display: inline-block; - font-weight: normal; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - border: 1px solid transparent; - padding: 0.5rem 0.75rem; - font-size: 1rem; - line-height: 1.25; - border-radius: 0.25rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } - .btn:focus, .btn:hover { - text-decoration: none; } - .btn:focus, .btn.focus { - outline: 0; - box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25); } - .btn.disabled, .btn:disabled { - opacity: .65; } - .btn:active, .btn.active { - background-image: none; } - -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; } - -.btn-primary { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-primary:hover { - color: #fff; - background-color: #0069d9; - border-color: #0062cc; } - .btn-primary:focus, .btn-primary.focus { - box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); } - .btn-primary.disabled, .btn-primary:disabled { - background-color: #007bff; - border-color: #007bff; } - .btn-primary:active, .btn-primary.active, - .show > .btn-primary.dropdown-toggle { - background-color: #0069d9; - background-image: none; - border-color: #0062cc; } - -.btn-secondary { - color: #fff; - background-color: #868e96; - border-color: #868e96; } - .btn-secondary:hover { - color: #fff; - background-color: #727b84; - border-color: #6c757d; } - .btn-secondary:focus, .btn-secondary.focus { - box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); } - .btn-secondary.disabled, .btn-secondary:disabled { - background-color: #868e96; - border-color: #868e96; } - .btn-secondary:active, .btn-secondary.active, - .show > .btn-secondary.dropdown-toggle { - background-color: #727b84; - background-image: none; - border-color: #6c757d; } - -.btn-success { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-success:hover { - color: #fff; - background-color: #218838; - border-color: #1e7e34; } - .btn-success:focus, .btn-success.focus { - box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); } - .btn-success.disabled, .btn-success:disabled { - background-color: #28a745; - border-color: #28a745; } - .btn-success:active, .btn-success.active, - .show > .btn-success.dropdown-toggle { - background-color: #218838; - background-image: none; - border-color: #1e7e34; } - -.btn-info { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:hover { - color: #fff; - background-color: #138496; - border-color: #117a8b; } - .btn-info:focus, .btn-info.focus { - box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); } - .btn-info.disabled, .btn-info:disabled { - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-info:active, .btn-info.active, - .show > .btn-info.dropdown-toggle { - background-color: #138496; - background-image: none; - border-color: #117a8b; } - -.btn-warning { - color: #111; - background-color: #ffc107; - border-color: #ffc107; } - .btn-warning:hover { - color: #111; - background-color: #e0a800; - border-color: #d39e00; } - .btn-warning:focus, .btn-warning.focus { - box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); } - .btn-warning.disabled, .btn-warning:disabled { - background-color: #ffc107; - border-color: #ffc107; } - .btn-warning:active, .btn-warning.active, - .show > .btn-warning.dropdown-toggle { - background-color: #e0a800; - background-image: none; - border-color: #d39e00; } - -.btn-danger { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-danger:hover { - color: #fff; - background-color: #c82333; - border-color: #bd2130; } - .btn-danger:focus, .btn-danger.focus { - box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); } - .btn-danger.disabled, .btn-danger:disabled { - background-color: #dc3545; - border-color: #dc3545; } - .btn-danger:active, .btn-danger.active, - .show > .btn-danger.dropdown-toggle { - background-color: #c82333; - background-image: none; - border-color: #bd2130; } - -.btn-light { - color: #111; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:hover { - color: #111; - background-color: #e2e6ea; - border-color: #dae0e5; } - .btn-light:focus, .btn-light.focus { - box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); } - .btn-light.disabled, .btn-light:disabled { - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-light:active, .btn-light.active, - .show > .btn-light.dropdown-toggle { - background-color: #e2e6ea; - background-image: none; - border-color: #dae0e5; } - -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-dark:hover { - color: #fff; - background-color: #23272b; - border-color: #1d2124; } - .btn-dark:focus, .btn-dark.focus { - box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); } - .btn-dark.disabled, .btn-dark:disabled { - background-color: #343a40; - border-color: #343a40; } - .btn-dark:active, .btn-dark.active, - .show > .btn-dark.dropdown-toggle { - background-color: #23272b; - background-image: none; - border-color: #1d2124; } - -.btn-outline-primary { - color: #007bff; - background-color: transparent; - background-image: none; - border-color: #007bff; } - .btn-outline-primary:hover { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - .btn-outline-primary:focus, .btn-outline-primary.focus { - box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); } - .btn-outline-primary.disabled, .btn-outline-primary:disabled { - color: #007bff; - background-color: transparent; } - .btn-outline-primary:active, .btn-outline-primary.active, - .show > .btn-outline-primary.dropdown-toggle { - color: #fff; - background-color: #007bff; - border-color: #007bff; } - -.btn-outline-secondary { - color: #868e96; - background-color: transparent; - background-image: none; - border-color: #868e96; } - .btn-outline-secondary:hover { - color: #fff; - background-color: #868e96; - border-color: #868e96; } - .btn-outline-secondary:focus, .btn-outline-secondary.focus { - box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); } - .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { - color: #868e96; - background-color: transparent; } - .btn-outline-secondary:active, .btn-outline-secondary.active, - .show > .btn-outline-secondary.dropdown-toggle { - color: #fff; - background-color: #868e96; - border-color: #868e96; } - -.btn-outline-success { - color: #28a745; - background-color: transparent; - background-image: none; - border-color: #28a745; } - .btn-outline-success:hover { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - .btn-outline-success:focus, .btn-outline-success.focus { - box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); } - .btn-outline-success.disabled, .btn-outline-success:disabled { - color: #28a745; - background-color: transparent; } - .btn-outline-success:active, .btn-outline-success.active, - .show > .btn-outline-success.dropdown-toggle { - color: #fff; - background-color: #28a745; - border-color: #28a745; } - -.btn-outline-info { - color: #17a2b8; - background-color: transparent; - background-image: none; - border-color: #17a2b8; } - .btn-outline-info:hover { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - .btn-outline-info:focus, .btn-outline-info.focus { - box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); } - .btn-outline-info.disabled, .btn-outline-info:disabled { - color: #17a2b8; - background-color: transparent; } - .btn-outline-info:active, .btn-outline-info.active, - .show > .btn-outline-info.dropdown-toggle { - color: #fff; - background-color: #17a2b8; - border-color: #17a2b8; } - -.btn-outline-warning { - color: #ffc107; - background-color: transparent; - background-image: none; - border-color: #ffc107; } - .btn-outline-warning:hover { - color: #fff; - background-color: #ffc107; - border-color: #ffc107; } - .btn-outline-warning:focus, .btn-outline-warning.focus { - box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); } - .btn-outline-warning.disabled, .btn-outline-warning:disabled { - color: #ffc107; - background-color: transparent; } - .btn-outline-warning:active, .btn-outline-warning.active, - .show > .btn-outline-warning.dropdown-toggle { - color: #fff; - background-color: #ffc107; - border-color: #ffc107; } - -.btn-outline-danger { - color: #dc3545; - background-color: transparent; - background-image: none; - border-color: #dc3545; } - .btn-outline-danger:hover { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - .btn-outline-danger:focus, .btn-outline-danger.focus { - box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); } - .btn-outline-danger.disabled, .btn-outline-danger:disabled { - color: #dc3545; - background-color: transparent; } - .btn-outline-danger:active, .btn-outline-danger.active, - .show > .btn-outline-danger.dropdown-toggle { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; } - -.btn-outline-light { - color: #f8f9fa; - background-color: transparent; - background-image: none; - border-color: #f8f9fa; } - .btn-outline-light:hover { - color: #fff; - background-color: #f8f9fa; - border-color: #f8f9fa; } - .btn-outline-light:focus, .btn-outline-light.focus { - box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); } - .btn-outline-light.disabled, .btn-outline-light:disabled { - color: #f8f9fa; - background-color: transparent; } - .btn-outline-light:active, .btn-outline-light.active, - .show > .btn-outline-light.dropdown-toggle { - color: #fff; - background-color: #f8f9fa; - border-color: #f8f9fa; } - -.btn-outline-dark { - color: #343a40; - background-color: transparent; - background-image: none; - border-color: #343a40; } - .btn-outline-dark:hover { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - .btn-outline-dark:focus, .btn-outline-dark.focus { - box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); } - .btn-outline-dark.disabled, .btn-outline-dark:disabled { - color: #343a40; - background-color: transparent; } - .btn-outline-dark:active, .btn-outline-dark.active, - .show > .btn-outline-dark.dropdown-toggle { - color: #fff; - background-color: #343a40; - border-color: #343a40; } - -.btn-link { - font-weight: normal; - color: #007bff; - border-radius: 0; } - .btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled { - background-color: transparent; } - .btn-link, .btn-link:focus, .btn-link:active { - border-color: transparent; - box-shadow: none; } - .btn-link:hover { - border-color: transparent; } - .btn-link:focus, .btn-link:hover { - color: #0056b3; - text-decoration: underline; - background-color: transparent; } - .btn-link:disabled { - color: #868e96; } - .btn-link:disabled:focus, .btn-link:disabled:hover { - text-decoration: none; } - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - line-height: 1.5; - border-radius: 0.3rem; } - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - line-height: 1.5; - border-radius: 0.2rem; } - -.btn-block { - display: block; - width: 100%; } - -.btn-block + .btn-block { - margin-top: 0.5rem; } - -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; } - -.fade { - opacity: 0; - transition: opacity 0.15s linear; } - .fade.show { - opacity: 1; } - -.collapse { - display: none; } - .collapse.show { - display: block; } - -tr.collapse.show { - display: table-row; } - -tbody.collapse.show { - display: table-row-group; } - -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition: height 0.35s ease; } - -.dropup, -.dropdown { - position: relative; } - -.dropdown-toggle::after { - display: inline-block; - width: 0; - height: 0; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-left: 0.3em solid transparent; } - -.dropdown-toggle:empty::after { - margin-left: 0; } - -.dropup .dropdown-menu { - margin-top: 0; - margin-bottom: 0.125rem; } - -.dropup .dropdown-toggle::after { - border-top: 0; - border-bottom: 0.3em solid; } - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0.125rem 0 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; } - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1.5rem; - clear: both; - font-weight: normal; - color: #212529; - text-align: inherit; - white-space: nowrap; - background: none; - border: 0; } - .dropdown-item:focus, .dropdown-item:hover { - color: #16181b; - text-decoration: none; - background-color: #f8f9fa; } - .dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #007bff; } - .dropdown-item.disabled, .dropdown-item:disabled { - color: #868e96; - background-color: transparent; } - -.show > a { - outline: 0; } - -.dropdown-menu.show { - display: block; } - -.dropdown-header { - display: block; - padding: 0.5rem 1.5rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #868e96; - white-space: nowrap; } - -.btn-group, -.btn-group-vertical { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle; } - .btn-group > .btn, - .btn-group-vertical > .btn { - position: relative; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - margin-bottom: 0; } - .btn-group > .btn:hover, - .btn-group-vertical > .btn:hover { - z-index: 2; } - .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, - .btn-group-vertical > .btn:focus, - .btn-group-vertical > .btn:active, - .btn-group-vertical > .btn.active { - z-index: 2; } - .btn-group .btn + .btn, - .btn-group .btn + .btn-group, - .btn-group .btn-group + .btn, - .btn-group .btn-group + .btn-group, - .btn-group-vertical .btn + .btn, - .btn-group-vertical .btn + .btn-group, - .btn-group-vertical .btn-group + .btn, - .btn-group-vertical .btn-group + .btn-group { - margin-left: -1px; } - -.btn-toolbar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .btn-toolbar .input-group { - width: auto; } - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; } - -.btn-group > .btn:first-child { - margin-left: 0; } - .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.btn-group > .btn-group { - float: left; } - -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; } - -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.btn + .dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; } - .btn + .dropdown-toggle-split::after { - margin-left: 0; } - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; } - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; } - -.btn-group-vertical { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; } - .btn-group-vertical .btn, - .btn-group-vertical .btn-group { - width: 100%; } - .btn-group-vertical > .btn + .btn, - .btn-group-vertical > .btn + .btn-group, - .btn-group-vertical > .btn-group + .btn, - .btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; } - -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; } - -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; } - -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; } - -.input-group { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; } - .input-group .form-control { - position: relative; - z-index: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - width: 1%; - margin-bottom: 0; } - .input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover { - z-index: 3; } - -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - .input-group-addon:not(:first-child):not(:last-child), - .input-group-btn:not(:first-child):not(:last-child), - .input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; } - -.input-group-addon, -.input-group-btn { - white-space: nowrap; - vertical-align: middle; } - -.input-group-addon { - padding: 0.5rem 0.75rem; - margin-bottom: 0; - font-size: 1rem; - font-weight: normal; - line-height: 1.25; - color: #495057; - text-align: center; - background-color: #e9ecef; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - .input-group-addon.form-control-sm, - .input-group-sm > .input-group-addon, - .input-group-sm > .input-group-btn > .input-group-addon.btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: 0.2rem; } - .input-group-addon.form-control-lg, - .input-group-lg > .input-group-addon, - .input-group-lg > .input-group-btn > .input-group-addon.btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: 0.3rem; } - .input-group-addon input[type="radio"], - .input-group-addon input[type="checkbox"] { - margin-top: 0; } - -.input-group .form-control:not(:last-child), -.input-group-addon:not(:last-child), -.input-group-btn:not(:last-child) > .btn, -.input-group-btn:not(:last-child) > .btn-group > .btn, -.input-group-btn:not(:last-child) > .dropdown-toggle, -.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - -.input-group-addon:not(:last-child) { - border-right: 0; } - -.input-group .form-control:not(:first-child), -.input-group-addon:not(:first-child), -.input-group-btn:not(:first-child) > .btn, -.input-group-btn:not(:first-child) > .btn-group > .btn, -.input-group-btn:not(:first-child) > .dropdown-toggle, -.input-group-btn:not(:last-child) > .btn:not(:first-child), -.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - -.form-control + .input-group-addon:not(:first-child) { - border-left: 0; } - -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; } - .input-group-btn > .btn { - position: relative; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); } - .input-group-btn > .btn + .btn { - margin-left: -1px; } - .input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover { - z-index: 3; } - .input-group-btn:not(:last-child) > .btn, - .input-group-btn:not(:last-child) > .btn-group { - margin-right: -1px; } - .input-group-btn:not(:first-child) > .btn, - .input-group-btn:not(:first-child) > .btn-group { - z-index: 2; - margin-left: -1px; } - .input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover, - .input-group-btn:not(:first-child) > .btn-group:focus, - .input-group-btn:not(:first-child) > .btn-group:active, - .input-group-btn:not(:first-child) > .btn-group:hover { - z-index: 3; } - -.custom-control { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - min-height: 1.5rem; - padding-left: 1.5rem; - margin-right: 1rem; } - -.custom-control-input { - position: absolute; - z-index: -1; - opacity: 0; } - .custom-control-input:checked ~ .custom-control-indicator { - color: #fff; - background-color: #007bff; } - .custom-control-input:focus ~ .custom-control-indicator { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #007bff; } - .custom-control-input:active ~ .custom-control-indicator { - color: #fff; - background-color: #b3d7ff; } - .custom-control-input:disabled ~ .custom-control-indicator { - background-color: #e9ecef; } - .custom-control-input:disabled ~ .custom-control-description { - color: #868e96; } - -.custom-control-indicator { - position: absolute; - top: 0.25rem; - left: 0; - display: block; - width: 1rem; - height: 1rem; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: #ddd; - background-repeat: no-repeat; - background-position: center center; - background-size: 50% 50%; } - -.custom-checkbox .custom-control-indicator { - border-radius: 0.25rem; } - -.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); } - -.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator { - background-color: #007bff; - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); } - -.custom-radio .custom-control-indicator { - border-radius: 50%; } - -.custom-radio .custom-control-input:checked ~ .custom-control-indicator { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); } - -.custom-controls-stacked { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } - .custom-controls-stacked .custom-control { - margin-bottom: 0.25rem; } - .custom-controls-stacked .custom-control + .custom-control { - margin-left: 0; } - -.custom-select { - display: inline-block; - max-width: 100%; - height: calc(2.25rem + 2px); - padding: 0.375rem 1.75rem 0.375rem 0.75rem; - line-height: 1.25; - color: #495057; - vertical-align: middle; - background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; - background-clip: padding-box; - background-size: 8px 10px; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; } - .custom-select:focus { - border-color: #80bdff; - outline: none; } - .custom-select:focus::-ms-value { - color: #495057; - background-color: #fff; } - .custom-select:disabled { - color: #868e96; - background-color: #e9ecef; } - .custom-select::-ms-expand { - opacity: 0; } - -.custom-select-sm { - height: calc(1.8125rem + 2px); - padding-top: 0.375rem; - padding-bottom: 0.375rem; - font-size: 75%; } - -.custom-file { - position: relative; - display: inline-block; - max-width: 100%; - height: calc(2.25rem + 2px); - margin-bottom: 0; } - -.custom-file-input { - min-width: 14rem; - max-width: 100%; - height: calc(2.25rem + 2px); - margin: 0; - opacity: 0; } - .custom-file-input:focus ~ .custom-file-control { - box-shadow: 0 0 0 0.075rem #fff, 0 0 0 0.2rem #007bff; } - -.custom-file-control { - position: absolute; - top: 0; - right: 0; - left: 0; - z-index: 5; - height: calc(2.25rem + 2px); - padding: 0.5rem 0.75rem; - overflow: hidden; - line-height: 1.25; - color: #495057; - pointer-events: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; } - .custom-file-control:lang(en):empty::after { - content: "Choose file..."; } - .custom-file-control::before { - position: absolute; - top: 0; - right: 0; - z-index: 6; - display: block; - height: calc(2.25rem + 2px); - padding: 0.5rem 0.75rem; - line-height: 1.25; - color: #495057; - background-color: #e9ecef; - border-left: 1px solid rgba(0, 0, 0, 0.15); } - .custom-file-control:lang(en)::before { - content: "Browse"; } - -.nav { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - -.nav-link { - display: block; - padding: 0.5rem 1rem; } - .nav-link:focus, .nav-link:hover { - text-decoration: none; } - .nav-link.disabled { - color: #868e96; } - -.nav-tabs { - border-bottom: 1px solid #ddd; } - .nav-tabs .nav-item { - margin-bottom: -1px; } - .nav-tabs .nav-link { - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - .nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { - border-color: #e9ecef #e9ecef #ddd; } - .nav-tabs .nav-link.disabled { - color: #868e96; - background-color: transparent; - border-color: transparent; } - .nav-tabs .nav-link.active, - .nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #ddd #ddd #fff; } - .nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.nav-pills .nav-link { - border-radius: 0.25rem; } - .nav-pills .nav-link.active, - .show > .nav-pills .nav-link { - color: #fff; - background-color: #007bff; } - -.nav-fill .nav-item { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - text-align: center; } - -.nav-justified .nav-item { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - text-align: center; } - -.tab-content > .tab-pane { - display: none; } - -.tab-content > .active { - display: block; } - -.navbar { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 0.5rem 1rem; } - .navbar > .container, - .navbar > .container-fluid { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; } - -.navbar-brand { - display: inline-block; - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - line-height: inherit; - white-space: nowrap; } - .navbar-brand:focus, .navbar-brand:hover { - text-decoration: none; } - -.navbar-nav { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; } - .navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; } - .navbar-nav .dropdown-menu { - position: static; - float: none; } - -.navbar-text { - display: inline-block; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } - -.navbar-collapse { - -ms-flex-preferred-size: 100%; - flex-basis: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; } - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; } - .navbar-toggler:focus, .navbar-toggler:hover { - text-decoration: none; } - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - content: ""; - background: no-repeat center center; - background-size: 100% 100%; } - -@media (max-width: 575px) { - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - padding-right: 0; - padding-left: 0; } } - -@media (min-width: 576px) { - .navbar-expand-sm { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .navbar-expand-sm .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-sm .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem; } - .navbar-expand-sm > .container, - .navbar-expand-sm > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; } - .navbar-expand-sm .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .navbar-expand-sm .navbar-toggler { - display: none; } } - -@media (max-width: 767px) { - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - padding-right: 0; - padding-left: 0; } } - -@media (min-width: 768px) { - .navbar-expand-md { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .navbar-expand-md .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-md .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem; } - .navbar-expand-md > .container, - .navbar-expand-md > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; } - .navbar-expand-md .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .navbar-expand-md .navbar-toggler { - display: none; } } - -@media (max-width: 991px) { - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - padding-right: 0; - padding-left: 0; } } - -@media (min-width: 992px) { - .navbar-expand-lg { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .navbar-expand-lg .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-lg .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem; } - .navbar-expand-lg > .container, - .navbar-expand-lg > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; } - .navbar-expand-lg .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .navbar-expand-lg .navbar-toggler { - display: none; } } - -@media (max-width: 1199px) { - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - padding-right: 0; - padding-left: 0; } } - -@media (min-width: 1200px) { - .navbar-expand-xl { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .navbar-expand-xl .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand-xl .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem; } - .navbar-expand-xl > .container, - .navbar-expand-xl > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; } - .navbar-expand-xl .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .navbar-expand-xl .navbar-toggler { - display: none; } } - -.navbar-expand { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - padding-right: 0; - padding-left: 0; } - .navbar-expand .navbar-nav { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; } - .navbar-expand .navbar-nav .dropdown-menu { - position: absolute; } - .navbar-expand .navbar-nav .dropdown-menu-right { - right: 0; - left: auto; } - .navbar-expand .navbar-nav .nav-link { - padding-right: .5rem; - padding-left: .5rem; } - .navbar-expand > .container, - .navbar-expand > .container-fluid { - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; } - .navbar-expand .navbar-collapse { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .navbar-expand .navbar-toggler { - display: none; } - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); } - .navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover { - color: rgba(0, 0, 0, 0.9); } - -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.5); } - .navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover { - color: rgba(0, 0, 0, 0.7); } - .navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); } - -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.show, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); } - -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.5); - border-color: rgba(0, 0, 0, 0.1); } - -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } - -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.5); } - -.navbar-dark .navbar-brand { - color: white; } - .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { - color: white; } - -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.5); } - .navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover { - color: rgba(255, 255, 255, 0.75); } - .navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); } - -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .active > .nav-link, -.navbar-dark .navbar-nav .nav-link.show, -.navbar-dark .navbar-nav .nav-link.active { - color: white; } - -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.5); - border-color: rgba(255, 255, 255, 0.1); } - -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } - -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.5); } - -.card { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; } - -.card-body { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - padding: 1.25rem; } - -.card-title { - margin-bottom: 0.75rem; } - -.card-subtitle { - margin-top: -0.375rem; - margin-bottom: 0; } - -.card-text:last-child { - margin-bottom: 0; } - -.card-link:hover { - text-decoration: none; } - -.card-link + .card-link { - margin-left: 1.25rem; } - -.card > .list-group:first-child .list-group-item:first-child { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; } - -.card > .list-group:last-child .list-group-item:last-child { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; } - -.card-header { - padding: 0.75rem 1.25rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); } - .card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } - -.card-footer { - padding: 0.75rem 1.25rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); } - .card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } - -.card-header-tabs { - margin-right: -0.625rem; - margin-bottom: -0.75rem; - margin-left: -0.625rem; - border-bottom: 0; } - -.card-header-pills { - margin-right: -0.625rem; - margin-left: -0.625rem; } - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1.25rem; } - -.card-img { - width: 100%; - border-radius: calc(0.25rem - 1px); } - -.card-img-top { - width: 100%; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); } - -.card-img-bottom { - width: 100%; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); } - -@media (min-width: 576px) { - .card-deck { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - margin-right: -15px; - margin-left: -15px; } - .card-deck .card { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - flex: 1 0 0%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin-right: 15px; - margin-left: 15px; } } - -@media (min-width: 576px) { - .card-group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; } - .card-group .card { - -webkit-box-flex: 1; - -ms-flex: 1 0 0%; - flex: 1 0 0%; } - .card-group .card + .card { - margin-left: 0; - border-left: 0; } - .card-group .card:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; } - .card-group .card:first-child .card-img-top { - border-top-right-radius: 0; } - .card-group .card:first-child .card-img-bottom { - border-bottom-right-radius: 0; } - .card-group .card:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; } - .card-group .card:last-child .card-img-top { - border-top-left-radius: 0; } - .card-group .card:last-child .card-img-bottom { - border-bottom-left-radius: 0; } - .card-group .card:not(:first-child):not(:last-child) { - border-radius: 0; } - .card-group .card:not(:first-child):not(:last-child) .card-img-top, - .card-group .card:not(:first-child):not(:last-child) .card-img-bottom { - border-radius: 0; } } - -.card-columns .card { - margin-bottom: 0.75rem; } - -@media (min-width: 576px) { - .card-columns { - -webkit-column-count: 3; - column-count: 3; - -webkit-column-gap: 1.25rem; - column-gap: 1.25rem; } - .card-columns .card { - display: inline-block; - width: 100%; } } - -.badge { - display: inline-block; - padding: 0.25em 0.4em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; } - .badge:empty { - display: none; } - -.btn .badge { - position: relative; - top: -1px; } - -.badge-pill { - padding-right: 0.6em; - padding-left: 0.6em; - border-radius: 10rem; } - -.badge-primary { - color: #fff; - background-color: #007bff; } - .badge-primary[href]:focus, .badge-primary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #0062cc; } - -.badge-secondary { - color: #fff; - background-color: #868e96; } - .badge-secondary[href]:focus, .badge-secondary[href]:hover { - color: #fff; - text-decoration: none; - background-color: #6c757d; } - -.badge-success { - color: #fff; - background-color: #28a745; } - .badge-success[href]:focus, .badge-success[href]:hover { - color: #fff; - text-decoration: none; - background-color: #1e7e34; } - -.badge-info { - color: #fff; - background-color: #17a2b8; } - .badge-info[href]:focus, .badge-info[href]:hover { - color: #fff; - text-decoration: none; - background-color: #117a8b; } - -.badge-warning { - color: #111; - background-color: #ffc107; } - .badge-warning[href]:focus, .badge-warning[href]:hover { - color: #111; - text-decoration: none; - background-color: #d39e00; } - -.badge-danger { - color: #fff; - background-color: #dc3545; } - .badge-danger[href]:focus, .badge-danger[href]:hover { - color: #fff; - text-decoration: none; - background-color: #bd2130; } - -.badge-light { - color: #111; - background-color: #f8f9fa; } - .badge-light[href]:focus, .badge-light[href]:hover { - color: #111; - text-decoration: none; - background-color: #dae0e5; } - -.badge-dark { - color: #fff; - background-color: #343a40; } - .badge-dark[href]:focus, .badge-dark[href]:hover { - color: #fff; - text-decoration: none; - background-color: #1d2124; } - -.jumbotron { - padding: 2rem 1rem; - margin-bottom: 2rem; - background-color: #e9ecef; - border-radius: 0.3rem; } - @media (min-width: 576px) { - .jumbotron { - padding: 4rem 2rem; } } - -.jumbotron-fluid { - padding-right: 0; - padding-left: 0; - border-radius: 0; } - -.alert { - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; } - -.alert-heading { - color: inherit; } - -.alert-link { - font-weight: bold; } - -.alert-dismissible .close { - position: relative; - top: -0.75rem; - right: -1.25rem; - padding: 0.75rem 1.25rem; - color: inherit; } - -.alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; } - .alert-primary hr { - border-top-color: #9fcdff; } - .alert-primary .alert-link { - color: #002752; } - -.alert-secondary { - color: #464a4e; - background-color: #e7e8ea; - border-color: #dddfe2; } - .alert-secondary hr { - border-top-color: #cfd2d6; } - .alert-secondary .alert-link { - color: #2e3133; } - -.alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; } - .alert-success hr { - border-top-color: #b1dfbb; } - .alert-success .alert-link { - color: #0b2e13; } - -.alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; } - .alert-info hr { - border-top-color: #abdde5; } - .alert-info .alert-link { - color: #062c33; } - -.alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; } - .alert-warning hr { - border-top-color: #ffe8a1; } - .alert-warning .alert-link { - color: #533f03; } - -.alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; } - .alert-danger hr { - border-top-color: #f1b0b7; } - .alert-danger .alert-link { - color: #491217; } - -.alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; } - .alert-light hr { - border-top-color: #ececf6; } - .alert-light .alert-link { - color: #686868; } - -.alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; } - .alert-dark hr { - border-top-color: #b9bbbe; } - .alert-dark .alert-link { - color: #040505; } - -.media { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; } - -.media-body { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; } - -.tooltip { - position: absolute; - z-index: 1070; - display: block; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-style: normal; - font-weight: normal; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; } - .tooltip.show { - opacity: 0.9; } - .tooltip .arrow { - position: absolute; - display: block; - width: 5px; - height: 5px; } - .tooltip.bs-tooltip-top, .tooltip.bs-tooltip-auto[x-placement^="top"] { - padding: 5px 0; } - .tooltip.bs-tooltip-top .arrow, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow { - bottom: 0; } - .tooltip.bs-tooltip-top .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="top"] .arrow::before { - margin-left: -3px; - content: ""; - border-width: 5px 5px 0; - border-top-color: #000; } - .tooltip.bs-tooltip-right, .tooltip.bs-tooltip-auto[x-placement^="right"] { - padding: 0 5px; } - .tooltip.bs-tooltip-right .arrow, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow { - left: 0; } - .tooltip.bs-tooltip-right .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="right"] .arrow::before { - margin-top: -3px; - content: ""; - border-width: 5px 5px 5px 0; - border-right-color: #000; } - .tooltip.bs-tooltip-bottom, .tooltip.bs-tooltip-auto[x-placement^="bottom"] { - padding: 5px 0; } - .tooltip.bs-tooltip-bottom .arrow, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow { - top: 0; } - .tooltip.bs-tooltip-bottom .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { - margin-left: -3px; - content: ""; - border-width: 0 5px 5px; - border-bottom-color: #000; } - .tooltip.bs-tooltip-left, .tooltip.bs-tooltip-auto[x-placement^="left"] { - padding: 0 5px; } - .tooltip.bs-tooltip-left .arrow, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow { - right: 0; } - .tooltip.bs-tooltip-left .arrow::before, .tooltip.bs-tooltip-auto[x-placement^="left"] .arrow::before { - right: 0; - margin-top: -3px; - content: ""; - border-width: 5px 0 5px 5px; - border-left-color: #000; } - .tooltip .arrow::before { - position: absolute; - border-color: transparent; - border-style: solid; } - -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; } - -.align-baseline { - vertical-align: baseline !important; } - -.align-top { - vertical-align: top !important; } - -.align-middle { - vertical-align: middle !important; } - -.align-bottom { - vertical-align: bottom !important; } - -.align-text-bottom { - vertical-align: text-bottom !important; } - -.align-text-top { - vertical-align: text-top !important; } - -.bg-primary { - background-color: #007bff !important; } - -a.bg-primary:focus, a.bg-primary:hover { - background-color: #0062cc !important; } - -.bg-secondary { - background-color: #868e96 !important; } - -a.bg-secondary:focus, a.bg-secondary:hover { - background-color: #6c757d !important; } - -.bg-success { - background-color: #28a745 !important; } - -a.bg-success:focus, a.bg-success:hover { - background-color: #1e7e34 !important; } - -.bg-info { - background-color: #17a2b8 !important; } - -a.bg-info:focus, a.bg-info:hover { - background-color: #117a8b !important; } - -.bg-warning { - background-color: #ffc107 !important; } - -a.bg-warning:focus, a.bg-warning:hover { - background-color: #d39e00 !important; } - -.bg-danger { - background-color: #dc3545 !important; } - -a.bg-danger:focus, a.bg-danger:hover { - background-color: #bd2130 !important; } - -.bg-light { - background-color: #f8f9fa !important; } - -a.bg-light:focus, a.bg-light:hover { - background-color: #dae0e5 !important; } - -.bg-dark { - background-color: #343a40 !important; } - -a.bg-dark:focus, a.bg-dark:hover { - background-color: #1d2124 !important; } - -.bg-white { - background-color: #fff !important; } - -.bg-transparent { - background-color: transparent !important; } - -.border { - border: 1px solid #e9ecef !important; } - -.border-0 { - border: 0 !important; } - -.border-top-0 { - border-top: 0 !important; } - -.border-right-0 { - border-right: 0 !important; } - -.border-bottom-0 { - border-bottom: 0 !important; } - -.border-left-0 { - border-left: 0 !important; } - -.border-primary { - border-color: #007bff !important; } - -.border-secondary { - border-color: #868e96 !important; } - -.border-success { - border-color: #28a745 !important; } - -.border-info { - border-color: #17a2b8 !important; } - -.border-warning { - border-color: #ffc107 !important; } - -.border-danger { - border-color: #dc3545 !important; } - -.border-light { - border-color: #f8f9fa !important; } - -.border-dark { - border-color: #343a40 !important; } - -.border-white { - border-color: #fff !important; } - -.rounded { - border-radius: 0.25rem !important; } - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; } - -.rounded-right { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; } - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-left { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; } - -.rounded-circle { - border-radius: 50%; } - -.rounded-0 { - border-radius: 0; } - -.clearfix::after { - display: block; - clear: both; - content: ""; } - -.d-none { - display: none !important; } - -.d-inline { - display: inline !important; } - -.d-inline-block { - display: inline-block !important; } - -.d-block { - display: block !important; } - -.d-table { - display: table !important; } - -.d-table-cell { - display: table-cell !important; } - -.d-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - -.d-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; } - -@media (min-width: 576px) { - .d-sm-none { - display: none !important; } - .d-sm-inline { - display: inline !important; } - .d-sm-inline-block { - display: inline-block !important; } - .d-sm-block { - display: block !important; } - .d-sm-table { - display: table !important; } - .d-sm-table-cell { - display: table-cell !important; } - .d-sm-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .d-sm-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; } } - -@media (min-width: 768px) { - .d-md-none { - display: none !important; } - .d-md-inline { - display: inline !important; } - .d-md-inline-block { - display: inline-block !important; } - .d-md-block { - display: block !important; } - .d-md-table { - display: table !important; } - .d-md-table-cell { - display: table-cell !important; } - .d-md-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .d-md-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; } } - -@media (min-width: 992px) { - .d-lg-none { - display: none !important; } - .d-lg-inline { - display: inline !important; } - .d-lg-inline-block { - display: inline-block !important; } - .d-lg-block { - display: block !important; } - .d-lg-table { - display: table !important; } - .d-lg-table-cell { - display: table-cell !important; } - .d-lg-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .d-lg-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; } } - -@media (min-width: 1200px) { - .d-xl-none { - display: none !important; } - .d-xl-inline { - display: inline !important; } - .d-xl-inline-block { - display: inline-block !important; } - .d-xl-block { - display: block !important; } - .d-xl-table { - display: table !important; } - .d-xl-table-cell { - display: table-cell !important; } - .d-xl-flex { - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; } - .d-xl-inline-flex { - display: -webkit-inline-box !important; - display: -ms-inline-flexbox !important; - display: inline-flex !important; } } - -.d-print-block { - display: none !important; } - @media print { - .d-print-block { - display: block !important; } } - -.d-print-inline { - display: none !important; } - @media print { - .d-print-inline { - display: inline !important; } } - -.d-print-inline-block { - display: none !important; } - @media print { - .d-print-inline-block { - display: inline-block !important; } } - -@media print { - .d-print-none { - display: none !important; } } - -.embed-responsive { - position: relative; - display: block; - width: 100%; - padding: 0; - overflow: hidden; } - .embed-responsive::before { - display: block; - content: ""; } - .embed-responsive .embed-responsive-item, - .embed-responsive iframe, - .embed-responsive embed, - .embed-responsive object, - .embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; } - -.embed-responsive-21by9::before { - padding-top: 42.85714%; } - -.embed-responsive-16by9::before { - padding-top: 56.25%; } - -.embed-responsive-4by3::before { - padding-top: 75%; } - -.embed-responsive-1by1::before { - padding-top: 100%; } - -.flex-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important; } - -.flex-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important; } - -.flex-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; } - -.flex-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; } - -.flex-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; } - -.flex-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; } - -.flex-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; } - -.justify-content-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; } - -.justify-content-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; } - -.justify-content-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; } - -.justify-content-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; } - -.justify-content-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; } - -.align-items-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; } - -.align-items-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; } - -.align-items-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; } - -.align-items-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; } - -.align-items-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; } - -.align-content-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; } - -.align-content-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; } - -.align-content-center { - -ms-flex-line-pack: center !important; - align-content: center !important; } - -.align-content-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; } - -.align-content-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; } - -.align-content-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; } - -.align-self-auto { - -ms-flex-item-align: auto !important; - -ms-grid-row-align: auto !important; - align-self: auto !important; } - -.align-self-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; } - -.align-self-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; } - -.align-self-center { - -ms-flex-item-align: center !important; - -ms-grid-row-align: center !important; - align-self: center !important; } - -.align-self-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; } - -.align-self-stretch { - -ms-flex-item-align: stretch !important; - -ms-grid-row-align: stretch !important; - align-self: stretch !important; } - -@media (min-width: 576px) { - .flex-sm-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important; } - .flex-sm-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important; } - .flex-sm-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; } - .flex-sm-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; } - .flex-sm-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; } - .flex-sm-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; } - .flex-sm-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; } - .justify-content-sm-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; } - .justify-content-sm-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; } - .justify-content-sm-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; } - .justify-content-sm-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; } - .justify-content-sm-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; } - .align-items-sm-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; } - .align-items-sm-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; } - .align-items-sm-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; } - .align-items-sm-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; } - .align-items-sm-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; } - .align-content-sm-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; } - .align-content-sm-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; } - .align-content-sm-center { - -ms-flex-line-pack: center !important; - align-content: center !important; } - .align-content-sm-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; } - .align-content-sm-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; } - .align-content-sm-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; } - .align-self-sm-auto { - -ms-flex-item-align: auto !important; - -ms-grid-row-align: auto !important; - align-self: auto !important; } - .align-self-sm-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; } - .align-self-sm-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; } - .align-self-sm-center { - -ms-flex-item-align: center !important; - -ms-grid-row-align: center !important; - align-self: center !important; } - .align-self-sm-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; } - .align-self-sm-stretch { - -ms-flex-item-align: stretch !important; - -ms-grid-row-align: stretch !important; - align-self: stretch !important; } } - -@media (min-width: 768px) { - .flex-md-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important; } - .flex-md-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important; } - .flex-md-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; } - .flex-md-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; } - .flex-md-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; } - .flex-md-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; } - .flex-md-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; } - .justify-content-md-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; } - .justify-content-md-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; } - .justify-content-md-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; } - .justify-content-md-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; } - .justify-content-md-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; } - .align-items-md-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; } - .align-items-md-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; } - .align-items-md-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; } - .align-items-md-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; } - .align-items-md-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; } - .align-content-md-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; } - .align-content-md-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; } - .align-content-md-center { - -ms-flex-line-pack: center !important; - align-content: center !important; } - .align-content-md-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; } - .align-content-md-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; } - .align-content-md-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; } - .align-self-md-auto { - -ms-flex-item-align: auto !important; - -ms-grid-row-align: auto !important; - align-self: auto !important; } - .align-self-md-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; } - .align-self-md-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; } - .align-self-md-center { - -ms-flex-item-align: center !important; - -ms-grid-row-align: center !important; - align-self: center !important; } - .align-self-md-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; } - .align-self-md-stretch { - -ms-flex-item-align: stretch !important; - -ms-grid-row-align: stretch !important; - align-self: stretch !important; } } - -@media (min-width: 992px) { - .flex-lg-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important; } - .flex-lg-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important; } - .flex-lg-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; } - .flex-lg-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; } - .flex-lg-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; } - .flex-lg-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; } - .flex-lg-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; } - .justify-content-lg-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; } - .justify-content-lg-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; } - .justify-content-lg-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; } - .justify-content-lg-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; } - .justify-content-lg-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; } - .align-items-lg-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; } - .align-items-lg-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; } - .align-items-lg-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; } - .align-items-lg-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; } - .align-items-lg-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; } - .align-content-lg-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; } - .align-content-lg-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; } - .align-content-lg-center { - -ms-flex-line-pack: center !important; - align-content: center !important; } - .align-content-lg-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; } - .align-content-lg-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; } - .align-content-lg-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; } - .align-self-lg-auto { - -ms-flex-item-align: auto !important; - -ms-grid-row-align: auto !important; - align-self: auto !important; } - .align-self-lg-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; } - .align-self-lg-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; } - .align-self-lg-center { - -ms-flex-item-align: center !important; - -ms-grid-row-align: center !important; - align-self: center !important; } - .align-self-lg-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; } - .align-self-lg-stretch { - -ms-flex-item-align: stretch !important; - -ms-grid-row-align: stretch !important; - align-self: stretch !important; } } - -@media (min-width: 1200px) { - .flex-xl-row { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: row !important; - flex-direction: row !important; } - .flex-xl-column { - -webkit-box-orient: vertical !important; - -webkit-box-direction: normal !important; - -ms-flex-direction: column !important; - flex-direction: column !important; } - .flex-xl-row-reverse { - -webkit-box-orient: horizontal !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: row-reverse !important; - flex-direction: row-reverse !important; } - .flex-xl-column-reverse { - -webkit-box-orient: vertical !important; - -webkit-box-direction: reverse !important; - -ms-flex-direction: column-reverse !important; - flex-direction: column-reverse !important; } - .flex-xl-wrap { - -ms-flex-wrap: wrap !important; - flex-wrap: wrap !important; } - .flex-xl-nowrap { - -ms-flex-wrap: nowrap !important; - flex-wrap: nowrap !important; } - .flex-xl-wrap-reverse { - -ms-flex-wrap: wrap-reverse !important; - flex-wrap: wrap-reverse !important; } - .justify-content-xl-start { - -webkit-box-pack: start !important; - -ms-flex-pack: start !important; - justify-content: flex-start !important; } - .justify-content-xl-end { - -webkit-box-pack: end !important; - -ms-flex-pack: end !important; - justify-content: flex-end !important; } - .justify-content-xl-center { - -webkit-box-pack: center !important; - -ms-flex-pack: center !important; - justify-content: center !important; } - .justify-content-xl-between { - -webkit-box-pack: justify !important; - -ms-flex-pack: justify !important; - justify-content: space-between !important; } - .justify-content-xl-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; } - .align-items-xl-start { - -webkit-box-align: start !important; - -ms-flex-align: start !important; - align-items: flex-start !important; } - .align-items-xl-end { - -webkit-box-align: end !important; - -ms-flex-align: end !important; - align-items: flex-end !important; } - .align-items-xl-center { - -webkit-box-align: center !important; - -ms-flex-align: center !important; - align-items: center !important; } - .align-items-xl-baseline { - -webkit-box-align: baseline !important; - -ms-flex-align: baseline !important; - align-items: baseline !important; } - .align-items-xl-stretch { - -webkit-box-align: stretch !important; - -ms-flex-align: stretch !important; - align-items: stretch !important; } - .align-content-xl-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; } - .align-content-xl-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; } - .align-content-xl-center { - -ms-flex-line-pack: center !important; - align-content: center !important; } - .align-content-xl-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; } - .align-content-xl-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; } - .align-content-xl-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; } - .align-self-xl-auto { - -ms-flex-item-align: auto !important; - -ms-grid-row-align: auto !important; - align-self: auto !important; } - .align-self-xl-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; } - .align-self-xl-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; } - .align-self-xl-center { - -ms-flex-item-align: center !important; - -ms-grid-row-align: center !important; - align-self: center !important; } - .align-self-xl-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; } - .align-self-xl-stretch { - -ms-flex-item-align: stretch !important; - -ms-grid-row-align: stretch !important; - align-self: stretch !important; } } - -.float-left { - float: left !important; } - -.float-right { - float: right !important; } - -.float-none { - float: none !important; } - -@media (min-width: 576px) { - .float-sm-left { - float: left !important; } - .float-sm-right { - float: right !important; } - .float-sm-none { - float: none !important; } } - -@media (min-width: 768px) { - .float-md-left { - float: left !important; } - .float-md-right { - float: right !important; } - .float-md-none { - float: none !important; } } - -@media (min-width: 992px) { - .float-lg-left { - float: left !important; } - .float-lg-right { - float: right !important; } - .float-lg-none { - float: none !important; } } - -@media (min-width: 1200px) { - .float-xl-left { - float: left !important; } - .float-xl-right { - float: right !important; } - .float-xl-none { - float: none !important; } } - -.position-static { - position: static !important; } - -.position-relative { - position: relative !important; } - -.position-absolute { - position: absolute !important; } - -.position-fixed { - position: fixed !important; } - -.position-sticky { - position: -webkit-sticky !important; - position: sticky !important; } - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; } - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; } - -@supports ((position: -webkit-sticky) or (position: sticky)) { - .sticky-top { - position: -webkit-sticky; - position: sticky; - top: 0; - z-index: 1020; } } - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - -webkit-clip-path: inset(50%); - clip-path: inset(50%); - border: 0; } - -.sr-only-focusable:active, .sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - overflow: visible; - clip: auto; - white-space: normal; - -webkit-clip-path: none; - clip-path: none; } - -.w-25 { - width: 25% !important; } - -.w-50 { - width: 50% !important; } - -.w-75 { - width: 75% !important; } - -.w-100 { - width: 100% !important; } - -.h-25 { - height: 25% !important; } - -.h-50 { - height: 50% !important; } - -.h-75 { - height: 75% !important; } - -.h-100 { - height: 100% !important; } - -.mw-100 { - max-width: 100% !important; } - -.mh-100 { - max-height: 100% !important; } - -.m-0 { - margin: 0 !important; } - -.mt-0, -.my-0 { - margin-top: 0 !important; } - -.mr-0, -.mx-0 { - margin-right: 0 !important; } - -.mb-0, -.my-0 { - margin-bottom: 0 !important; } - -.ml-0, -.mx-0 { - margin-left: 0 !important; } - -.m-1 { - margin: 0.25rem !important; } - -.mt-1, -.my-1 { - margin-top: 0.25rem !important; } - -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; } - -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; } - -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; } - -.m-2 { - margin: 0.5rem !important; } - -.mt-2, -.my-2 { - margin-top: 0.5rem !important; } - -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; } - -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; } - -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; } - -.m-3 { - margin: 1rem !important; } - -.mt-3, -.my-3 { - margin-top: 1rem !important; } - -.mr-3, -.mx-3 { - margin-right: 1rem !important; } - -.mb-3, -.my-3 { - margin-bottom: 1rem !important; } - -.ml-3, -.mx-3 { - margin-left: 1rem !important; } - -.m-4 { - margin: 1.5rem !important; } - -.mt-4, -.my-4 { - margin-top: 1.5rem !important; } - -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; } - -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; } - -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; } - -.m-5 { - margin: 3rem !important; } - -.mt-5, -.my-5 { - margin-top: 3rem !important; } - -.mr-5, -.mx-5 { - margin-right: 3rem !important; } - -.mb-5, -.my-5 { - margin-bottom: 3rem !important; } - -.ml-5, -.mx-5 { - margin-left: 3rem !important; } - -.p-0 { - padding: 0 !important; } - -.pt-0, -.py-0 { - padding-top: 0 !important; } - -.pr-0, -.px-0 { - padding-right: 0 !important; } - -.pb-0, -.py-0 { - padding-bottom: 0 !important; } - -.pl-0, -.px-0 { - padding-left: 0 !important; } - -.p-1 { - padding: 0.25rem !important; } - -.pt-1, -.py-1 { - padding-top: 0.25rem !important; } - -.pr-1, -.px-1 { - padding-right: 0.25rem !important; } - -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; } - -.pl-1, -.px-1 { - padding-left: 0.25rem !important; } - -.p-2 { - padding: 0.5rem !important; } - -.pt-2, -.py-2 { - padding-top: 0.5rem !important; } - -.pr-2, -.px-2 { - padding-right: 0.5rem !important; } - -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; } - -.pl-2, -.px-2 { - padding-left: 0.5rem !important; } - -.p-3 { - padding: 1rem !important; } - -.pt-3, -.py-3 { - padding-top: 1rem !important; } - -.pr-3, -.px-3 { - padding-right: 1rem !important; } - -.pb-3, -.py-3 { - padding-bottom: 1rem !important; } - -.pl-3, -.px-3 { - padding-left: 1rem !important; } - -.p-4 { - padding: 1.5rem !important; } - -.pt-4, -.py-4 { - padding-top: 1.5rem !important; } - -.pr-4, -.px-4 { - padding-right: 1.5rem !important; } - -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; } - -.pl-4, -.px-4 { - padding-left: 1.5rem !important; } - -.p-5 { - padding: 3rem !important; } - -.pt-5, -.py-5 { - padding-top: 3rem !important; } - -.pr-5, -.px-5 { - padding-right: 3rem !important; } - -.pb-5, -.py-5 { - padding-bottom: 3rem !important; } - -.pl-5, -.px-5 { - padding-left: 3rem !important; } - -.m-auto { - margin: auto !important; } - -.mt-auto, -.my-auto { - margin-top: auto !important; } - -.mr-auto, -.mx-auto { - margin-right: auto !important; } - -.mb-auto, -.my-auto { - margin-bottom: auto !important; } - -.ml-auto, -.mx-auto { - margin-left: auto !important; } - -@media (min-width: 576px) { - .m-sm-0 { - margin: 0 !important; } - .mt-sm-0, - .my-sm-0 { - margin-top: 0 !important; } - .mr-sm-0, - .mx-sm-0 { - margin-right: 0 !important; } - .mb-sm-0, - .my-sm-0 { - margin-bottom: 0 !important; } - .ml-sm-0, - .mx-sm-0 { - margin-left: 0 !important; } - .m-sm-1 { - margin: 0.25rem !important; } - .mt-sm-1, - .my-sm-1 { - margin-top: 0.25rem !important; } - .mr-sm-1, - .mx-sm-1 { - margin-right: 0.25rem !important; } - .mb-sm-1, - .my-sm-1 { - margin-bottom: 0.25rem !important; } - .ml-sm-1, - .mx-sm-1 { - margin-left: 0.25rem !important; } - .m-sm-2 { - margin: 0.5rem !important; } - .mt-sm-2, - .my-sm-2 { - margin-top: 0.5rem !important; } - .mr-sm-2, - .mx-sm-2 { - margin-right: 0.5rem !important; } - .mb-sm-2, - .my-sm-2 { - margin-bottom: 0.5rem !important; } - .ml-sm-2, - .mx-sm-2 { - margin-left: 0.5rem !important; } - .m-sm-3 { - margin: 1rem !important; } - .mt-sm-3, - .my-sm-3 { - margin-top: 1rem !important; } - .mr-sm-3, - .mx-sm-3 { - margin-right: 1rem !important; } - .mb-sm-3, - .my-sm-3 { - margin-bottom: 1rem !important; } - .ml-sm-3, - .mx-sm-3 { - margin-left: 1rem !important; } - .m-sm-4 { - margin: 1.5rem !important; } - .mt-sm-4, - .my-sm-4 { - margin-top: 1.5rem !important; } - .mr-sm-4, - .mx-sm-4 { - margin-right: 1.5rem !important; } - .mb-sm-4, - .my-sm-4 { - margin-bottom: 1.5rem !important; } - .ml-sm-4, - .mx-sm-4 { - margin-left: 1.5rem !important; } - .m-sm-5 { - margin: 3rem !important; } - .mt-sm-5, - .my-sm-5 { - margin-top: 3rem !important; } - .mr-sm-5, - .mx-sm-5 { - margin-right: 3rem !important; } - .mb-sm-5, - .my-sm-5 { - margin-bottom: 3rem !important; } - .ml-sm-5, - .mx-sm-5 { - margin-left: 3rem !important; } - .p-sm-0 { - padding: 0 !important; } - .pt-sm-0, - .py-sm-0 { - padding-top: 0 !important; } - .pr-sm-0, - .px-sm-0 { - padding-right: 0 !important; } - .pb-sm-0, - .py-sm-0 { - padding-bottom: 0 !important; } - .pl-sm-0, - .px-sm-0 { - padding-left: 0 !important; } - .p-sm-1 { - padding: 0.25rem !important; } - .pt-sm-1, - .py-sm-1 { - padding-top: 0.25rem !important; } - .pr-sm-1, - .px-sm-1 { - padding-right: 0.25rem !important; } - .pb-sm-1, - .py-sm-1 { - padding-bottom: 0.25rem !important; } - .pl-sm-1, - .px-sm-1 { - padding-left: 0.25rem !important; } - .p-sm-2 { - padding: 0.5rem !important; } - .pt-sm-2, - .py-sm-2 { - padding-top: 0.5rem !important; } - .pr-sm-2, - .px-sm-2 { - padding-right: 0.5rem !important; } - .pb-sm-2, - .py-sm-2 { - padding-bottom: 0.5rem !important; } - .pl-sm-2, - .px-sm-2 { - padding-left: 0.5rem !important; } - .p-sm-3 { - padding: 1rem !important; } - .pt-sm-3, - .py-sm-3 { - padding-top: 1rem !important; } - .pr-sm-3, - .px-sm-3 { - padding-right: 1rem !important; } - .pb-sm-3, - .py-sm-3 { - padding-bottom: 1rem !important; } - .pl-sm-3, - .px-sm-3 { - padding-left: 1rem !important; } - .p-sm-4 { - padding: 1.5rem !important; } - .pt-sm-4, - .py-sm-4 { - padding-top: 1.5rem !important; } - .pr-sm-4, - .px-sm-4 { - padding-right: 1.5rem !important; } - .pb-sm-4, - .py-sm-4 { - padding-bottom: 1.5rem !important; } - .pl-sm-4, - .px-sm-4 { - padding-left: 1.5rem !important; } - .p-sm-5 { - padding: 3rem !important; } - .pt-sm-5, - .py-sm-5 { - padding-top: 3rem !important; } - .pr-sm-5, - .px-sm-5 { - padding-right: 3rem !important; } - .pb-sm-5, - .py-sm-5 { - padding-bottom: 3rem !important; } - .pl-sm-5, - .px-sm-5 { - padding-left: 3rem !important; } - .m-sm-auto { - margin: auto !important; } - .mt-sm-auto, - .my-sm-auto { - margin-top: auto !important; } - .mr-sm-auto, - .mx-sm-auto { - margin-right: auto !important; } - .mb-sm-auto, - .my-sm-auto { - margin-bottom: auto !important; } - .ml-sm-auto, - .mx-sm-auto { - margin-left: auto !important; } } - -@media (min-width: 768px) { - .m-md-0 { - margin: 0 !important; } - .mt-md-0, - .my-md-0 { - margin-top: 0 !important; } - .mr-md-0, - .mx-md-0 { - margin-right: 0 !important; } - .mb-md-0, - .my-md-0 { - margin-bottom: 0 !important; } - .ml-md-0, - .mx-md-0 { - margin-left: 0 !important; } - .m-md-1 { - margin: 0.25rem !important; } - .mt-md-1, - .my-md-1 { - margin-top: 0.25rem !important; } - .mr-md-1, - .mx-md-1 { - margin-right: 0.25rem !important; } - .mb-md-1, - .my-md-1 { - margin-bottom: 0.25rem !important; } - .ml-md-1, - .mx-md-1 { - margin-left: 0.25rem !important; } - .m-md-2 { - margin: 0.5rem !important; } - .mt-md-2, - .my-md-2 { - margin-top: 0.5rem !important; } - .mr-md-2, - .mx-md-2 { - margin-right: 0.5rem !important; } - .mb-md-2, - .my-md-2 { - margin-bottom: 0.5rem !important; } - .ml-md-2, - .mx-md-2 { - margin-left: 0.5rem !important; } - .m-md-3 { - margin: 1rem !important; } - .mt-md-3, - .my-md-3 { - margin-top: 1rem !important; } - .mr-md-3, - .mx-md-3 { - margin-right: 1rem !important; } - .mb-md-3, - .my-md-3 { - margin-bottom: 1rem !important; } - .ml-md-3, - .mx-md-3 { - margin-left: 1rem !important; } - .m-md-4 { - margin: 1.5rem !important; } - .mt-md-4, - .my-md-4 { - margin-top: 1.5rem !important; } - .mr-md-4, - .mx-md-4 { - margin-right: 1.5rem !important; } - .mb-md-4, - .my-md-4 { - margin-bottom: 1.5rem !important; } - .ml-md-4, - .mx-md-4 { - margin-left: 1.5rem !important; } - .m-md-5 { - margin: 3rem !important; } - .mt-md-5, - .my-md-5 { - margin-top: 3rem !important; } - .mr-md-5, - .mx-md-5 { - margin-right: 3rem !important; } - .mb-md-5, - .my-md-5 { - margin-bottom: 3rem !important; } - .ml-md-5, - .mx-md-5 { - margin-left: 3rem !important; } - .p-md-0 { - padding: 0 !important; } - .pt-md-0, - .py-md-0 { - padding-top: 0 !important; } - .pr-md-0, - .px-md-0 { - padding-right: 0 !important; } - .pb-md-0, - .py-md-0 { - padding-bottom: 0 !important; } - .pl-md-0, - .px-md-0 { - padding-left: 0 !important; } - .p-md-1 { - padding: 0.25rem !important; } - .pt-md-1, - .py-md-1 { - padding-top: 0.25rem !important; } - .pr-md-1, - .px-md-1 { - padding-right: 0.25rem !important; } - .pb-md-1, - .py-md-1 { - padding-bottom: 0.25rem !important; } - .pl-md-1, - .px-md-1 { - padding-left: 0.25rem !important; } - .p-md-2 { - padding: 0.5rem !important; } - .pt-md-2, - .py-md-2 { - padding-top: 0.5rem !important; } - .pr-md-2, - .px-md-2 { - padding-right: 0.5rem !important; } - .pb-md-2, - .py-md-2 { - padding-bottom: 0.5rem !important; } - .pl-md-2, - .px-md-2 { - padding-left: 0.5rem !important; } - .p-md-3 { - padding: 1rem !important; } - .pt-md-3, - .py-md-3 { - padding-top: 1rem !important; } - .pr-md-3, - .px-md-3 { - padding-right: 1rem !important; } - .pb-md-3, - .py-md-3 { - padding-bottom: 1rem !important; } - .pl-md-3, - .px-md-3 { - padding-left: 1rem !important; } - .p-md-4 { - padding: 1.5rem !important; } - .pt-md-4, - .py-md-4 { - padding-top: 1.5rem !important; } - .pr-md-4, - .px-md-4 { - padding-right: 1.5rem !important; } - .pb-md-4, - .py-md-4 { - padding-bottom: 1.5rem !important; } - .pl-md-4, - .px-md-4 { - padding-left: 1.5rem !important; } - .p-md-5 { - padding: 3rem !important; } - .pt-md-5, - .py-md-5 { - padding-top: 3rem !important; } - .pr-md-5, - .px-md-5 { - padding-right: 3rem !important; } - .pb-md-5, - .py-md-5 { - padding-bottom: 3rem !important; } - .pl-md-5, - .px-md-5 { - padding-left: 3rem !important; } - .m-md-auto { - margin: auto !important; } - .mt-md-auto, - .my-md-auto { - margin-top: auto !important; } - .mr-md-auto, - .mx-md-auto { - margin-right: auto !important; } - .mb-md-auto, - .my-md-auto { - margin-bottom: auto !important; } - .ml-md-auto, - .mx-md-auto { - margin-left: auto !important; } } - -@media (min-width: 992px) { - .m-lg-0 { - margin: 0 !important; } - .mt-lg-0, - .my-lg-0 { - margin-top: 0 !important; } - .mr-lg-0, - .mx-lg-0 { - margin-right: 0 !important; } - .mb-lg-0, - .my-lg-0 { - margin-bottom: 0 !important; } - .ml-lg-0, - .mx-lg-0 { - margin-left: 0 !important; } - .m-lg-1 { - margin: 0.25rem !important; } - .mt-lg-1, - .my-lg-1 { - margin-top: 0.25rem !important; } - .mr-lg-1, - .mx-lg-1 { - margin-right: 0.25rem !important; } - .mb-lg-1, - .my-lg-1 { - margin-bottom: 0.25rem !important; } - .ml-lg-1, - .mx-lg-1 { - margin-left: 0.25rem !important; } - .m-lg-2 { - margin: 0.5rem !important; } - .mt-lg-2, - .my-lg-2 { - margin-top: 0.5rem !important; } - .mr-lg-2, - .mx-lg-2 { - margin-right: 0.5rem !important; } - .mb-lg-2, - .my-lg-2 { - margin-bottom: 0.5rem !important; } - .ml-lg-2, - .mx-lg-2 { - margin-left: 0.5rem !important; } - .m-lg-3 { - margin: 1rem !important; } - .mt-lg-3, - .my-lg-3 { - margin-top: 1rem !important; } - .mr-lg-3, - .mx-lg-3 { - margin-right: 1rem !important; } - .mb-lg-3, - .my-lg-3 { - margin-bottom: 1rem !important; } - .ml-lg-3, - .mx-lg-3 { - margin-left: 1rem !important; } - .m-lg-4 { - margin: 1.5rem !important; } - .mt-lg-4, - .my-lg-4 { - margin-top: 1.5rem !important; } - .mr-lg-4, - .mx-lg-4 { - margin-right: 1.5rem !important; } - .mb-lg-4, - .my-lg-4 { - margin-bottom: 1.5rem !important; } - .ml-lg-4, - .mx-lg-4 { - margin-left: 1.5rem !important; } - .m-lg-5 { - margin: 3rem !important; } - .mt-lg-5, - .my-lg-5 { - margin-top: 3rem !important; } - .mr-lg-5, - .mx-lg-5 { - margin-right: 3rem !important; } - .mb-lg-5, - .my-lg-5 { - margin-bottom: 3rem !important; } - .ml-lg-5, - .mx-lg-5 { - margin-left: 3rem !important; } - .p-lg-0 { - padding: 0 !important; } - .pt-lg-0, - .py-lg-0 { - padding-top: 0 !important; } - .pr-lg-0, - .px-lg-0 { - padding-right: 0 !important; } - .pb-lg-0, - .py-lg-0 { - padding-bottom: 0 !important; } - .pl-lg-0, - .px-lg-0 { - padding-left: 0 !important; } - .p-lg-1 { - padding: 0.25rem !important; } - .pt-lg-1, - .py-lg-1 { - padding-top: 0.25rem !important; } - .pr-lg-1, - .px-lg-1 { - padding-right: 0.25rem !important; } - .pb-lg-1, - .py-lg-1 { - padding-bottom: 0.25rem !important; } - .pl-lg-1, - .px-lg-1 { - padding-left: 0.25rem !important; } - .p-lg-2 { - padding: 0.5rem !important; } - .pt-lg-2, - .py-lg-2 { - padding-top: 0.5rem !important; } - .pr-lg-2, - .px-lg-2 { - padding-right: 0.5rem !important; } - .pb-lg-2, - .py-lg-2 { - padding-bottom: 0.5rem !important; } - .pl-lg-2, - .px-lg-2 { - padding-left: 0.5rem !important; } - .p-lg-3 { - padding: 1rem !important; } - .pt-lg-3, - .py-lg-3 { - padding-top: 1rem !important; } - .pr-lg-3, - .px-lg-3 { - padding-right: 1rem !important; } - .pb-lg-3, - .py-lg-3 { - padding-bottom: 1rem !important; } - .pl-lg-3, - .px-lg-3 { - padding-left: 1rem !important; } - .p-lg-4 { - padding: 1.5rem !important; } - .pt-lg-4, - .py-lg-4 { - padding-top: 1.5rem !important; } - .pr-lg-4, - .px-lg-4 { - padding-right: 1.5rem !important; } - .pb-lg-4, - .py-lg-4 { - padding-bottom: 1.5rem !important; } - .pl-lg-4, - .px-lg-4 { - padding-left: 1.5rem !important; } - .p-lg-5 { - padding: 3rem !important; } - .pt-lg-5, - .py-lg-5 { - padding-top: 3rem !important; } - .pr-lg-5, - .px-lg-5 { - padding-right: 3rem !important; } - .pb-lg-5, - .py-lg-5 { - padding-bottom: 3rem !important; } - .pl-lg-5, - .px-lg-5 { - padding-left: 3rem !important; } - .m-lg-auto { - margin: auto !important; } - .mt-lg-auto, - .my-lg-auto { - margin-top: auto !important; } - .mr-lg-auto, - .mx-lg-auto { - margin-right: auto !important; } - .mb-lg-auto, - .my-lg-auto { - margin-bottom: auto !important; } - .ml-lg-auto, - .mx-lg-auto { - margin-left: auto !important; } } - -@media (min-width: 1200px) { - .m-xl-0 { - margin: 0 !important; } - .mt-xl-0, - .my-xl-0 { - margin-top: 0 !important; } - .mr-xl-0, - .mx-xl-0 { - margin-right: 0 !important; } - .mb-xl-0, - .my-xl-0 { - margin-bottom: 0 !important; } - .ml-xl-0, - .mx-xl-0 { - margin-left: 0 !important; } - .m-xl-1 { - margin: 0.25rem !important; } - .mt-xl-1, - .my-xl-1 { - margin-top: 0.25rem !important; } - .mr-xl-1, - .mx-xl-1 { - margin-right: 0.25rem !important; } - .mb-xl-1, - .my-xl-1 { - margin-bottom: 0.25rem !important; } - .ml-xl-1, - .mx-xl-1 { - margin-left: 0.25rem !important; } - .m-xl-2 { - margin: 0.5rem !important; } - .mt-xl-2, - .my-xl-2 { - margin-top: 0.5rem !important; } - .mr-xl-2, - .mx-xl-2 { - margin-right: 0.5rem !important; } - .mb-xl-2, - .my-xl-2 { - margin-bottom: 0.5rem !important; } - .ml-xl-2, - .mx-xl-2 { - margin-left: 0.5rem !important; } - .m-xl-3 { - margin: 1rem !important; } - .mt-xl-3, - .my-xl-3 { - margin-top: 1rem !important; } - .mr-xl-3, - .mx-xl-3 { - margin-right: 1rem !important; } - .mb-xl-3, - .my-xl-3 { - margin-bottom: 1rem !important; } - .ml-xl-3, - .mx-xl-3 { - margin-left: 1rem !important; } - .m-xl-4 { - margin: 1.5rem !important; } - .mt-xl-4, - .my-xl-4 { - margin-top: 1.5rem !important; } - .mr-xl-4, - .mx-xl-4 { - margin-right: 1.5rem !important; } - .mb-xl-4, - .my-xl-4 { - margin-bottom: 1.5rem !important; } - .ml-xl-4, - .mx-xl-4 { - margin-left: 1.5rem !important; } - .m-xl-5 { - margin: 3rem !important; } - .mt-xl-5, - .my-xl-5 { - margin-top: 3rem !important; } - .mr-xl-5, - .mx-xl-5 { - margin-right: 3rem !important; } - .mb-xl-5, - .my-xl-5 { - margin-bottom: 3rem !important; } - .ml-xl-5, - .mx-xl-5 { - margin-left: 3rem !important; } - .p-xl-0 { - padding: 0 !important; } - .pt-xl-0, - .py-xl-0 { - padding-top: 0 !important; } - .pr-xl-0, - .px-xl-0 { - padding-right: 0 !important; } - .pb-xl-0, - .py-xl-0 { - padding-bottom: 0 !important; } - .pl-xl-0, - .px-xl-0 { - padding-left: 0 !important; } - .p-xl-1 { - padding: 0.25rem !important; } - .pt-xl-1, - .py-xl-1 { - padding-top: 0.25rem !important; } - .pr-xl-1, - .px-xl-1 { - padding-right: 0.25rem !important; } - .pb-xl-1, - .py-xl-1 { - padding-bottom: 0.25rem !important; } - .pl-xl-1, - .px-xl-1 { - padding-left: 0.25rem !important; } - .p-xl-2 { - padding: 0.5rem !important; } - .pt-xl-2, - .py-xl-2 { - padding-top: 0.5rem !important; } - .pr-xl-2, - .px-xl-2 { - padding-right: 0.5rem !important; } - .pb-xl-2, - .py-xl-2 { - padding-bottom: 0.5rem !important; } - .pl-xl-2, - .px-xl-2 { - padding-left: 0.5rem !important; } - .p-xl-3 { - padding: 1rem !important; } - .pt-xl-3, - .py-xl-3 { - padding-top: 1rem !important; } - .pr-xl-3, - .px-xl-3 { - padding-right: 1rem !important; } - .pb-xl-3, - .py-xl-3 { - padding-bottom: 1rem !important; } - .pl-xl-3, - .px-xl-3 { - padding-left: 1rem !important; } - .p-xl-4 { - padding: 1.5rem !important; } - .pt-xl-4, - .py-xl-4 { - padding-top: 1.5rem !important; } - .pr-xl-4, - .px-xl-4 { - padding-right: 1.5rem !important; } - .pb-xl-4, - .py-xl-4 { - padding-bottom: 1.5rem !important; } - .pl-xl-4, - .px-xl-4 { - padding-left: 1.5rem !important; } - .p-xl-5 { - padding: 3rem !important; } - .pt-xl-5, - .py-xl-5 { - padding-top: 3rem !important; } - .pr-xl-5, - .px-xl-5 { - padding-right: 3rem !important; } - .pb-xl-5, - .py-xl-5 { - padding-bottom: 3rem !important; } - .pl-xl-5, - .px-xl-5 { - padding-left: 3rem !important; } - .m-xl-auto { - margin: auto !important; } - .mt-xl-auto, - .my-xl-auto { - margin-top: auto !important; } - .mr-xl-auto, - .mx-xl-auto { - margin-right: auto !important; } - .mb-xl-auto, - .my-xl-auto { - margin-bottom: auto !important; } - .ml-xl-auto, - .mx-xl-auto { - margin-left: auto !important; } } - -.text-justify { - text-align: justify !important; } - -.text-nowrap { - white-space: nowrap !important; } - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.text-left { - text-align: left !important; } - -.text-right { - text-align: right !important; } - -.text-center { - text-align: center !important; } - -@media (min-width: 576px) { - .text-sm-left { - text-align: left !important; } - .text-sm-right { - text-align: right !important; } - .text-sm-center { - text-align: center !important; } } - -@media (min-width: 768px) { - .text-md-left { - text-align: left !important; } - .text-md-right { - text-align: right !important; } - .text-md-center { - text-align: center !important; } } - -@media (min-width: 992px) { - .text-lg-left { - text-align: left !important; } - .text-lg-right { - text-align: right !important; } - .text-lg-center { - text-align: center !important; } } - -@media (min-width: 1200px) { - .text-xl-left { - text-align: left !important; } - .text-xl-right { - text-align: right !important; } - .text-xl-center { - text-align: center !important; } } - -.text-lowercase { - text-transform: lowercase !important; } - -.text-uppercase { - text-transform: uppercase !important; } - -.text-capitalize { - text-transform: capitalize !important; } - -.font-weight-light { - font-weight: 300 !important; } - -.font-weight-normal { - font-weight: normal !important; } - -.font-weight-bold { - font-weight: bold !important; } - -.font-italic { - font-style: italic !important; } - -.text-white { - color: #fff !important; } - -.text-primary { - color: #007bff !important; } - -a.text-primary:focus, a.text-primary:hover { - color: #0062cc !important; } - -.text-secondary { - color: #868e96 !important; } - -a.text-secondary:focus, a.text-secondary:hover { - color: #6c757d !important; } - -.text-success { - color: #28a745 !important; } - -a.text-success:focus, a.text-success:hover { - color: #1e7e34 !important; } - -.text-info { - color: #17a2b8 !important; } - -a.text-info:focus, a.text-info:hover { - color: #117a8b !important; } - -.text-warning { - color: #ffc107 !important; } - -a.text-warning:focus, a.text-warning:hover { - color: #d39e00 !important; } - -.text-danger { - color: #dc3545 !important; } - -a.text-danger:focus, a.text-danger:hover { - color: #bd2130 !important; } - -.text-light { - color: #f8f9fa !important; } - -a.text-light:focus, a.text-light:hover { - color: #dae0e5 !important; } - -.text-dark { - color: #343a40 !important; } - -a.text-dark:focus, a.text-dark:hover { - color: #1d2124 !important; } - -.text-muted { - color: #868e96 !important; } - -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; } - -.visible { - visibility: visible !important; } - -.invisible { - visibility: hidden !important; } - -/* system-font.css v1.1.0 | CC0-1.0 License | github.com/jonathantneal/system-font-face */ -@font-face { - font-family: system-ui; - font-style: normal; - font-weight: 300; - src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Segoe UI Light"), local("Ubuntu Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); } - -@font-face { - font-family: system-ui; - font-style: italic; - font-weight: 300; - src: local(".SFNSText-LightItalic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Light Italic"), local("Ubuntu Light Italic"), local("Roboto-LightItalic"), local("DroidSans"), local("Tahoma"); } - -@font-face { - font-family: system-ui; - font-style: normal; - font-weight: 400; - src: local(".SFNSText-Regular"), local(".HelveticaNeueDeskInterface-Regular"), local(".LucidaGrandeUI"), local("Segoe UI"), local("Ubuntu"), local("Roboto-Regular"), local("DroidSans"), local("Tahoma"); } - -@font-face { - font-family: system-ui; - font-style: italic; - font-weight: 400; - src: local(".SFNSText-Italic"), local(".HelveticaNeueDeskInterface-Italic"), local(".LucidaGrandeUI"), local("Segoe UI Italic"), local("Ubuntu Italic"), local("Roboto-Italic"), local("DroidSans"), local("Tahoma"); } - -@font-face { - font-family: system-ui; - font-style: normal; - font-weight: 500; - src: local(".SFNSText-Medium"), local(".HelveticaNeueDeskInterface-MediumP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold"), local("Ubuntu Medium"), local("Roboto-Medium"), local("DroidSans-Bold"), local("Tahoma Bold"); } - -@font-face { - font-family: system-ui; - font-style: italic; - font-weight: 500; - src: local(".SFNSText-MediumItalic"), local(".HelveticaNeueDeskInterface-MediumItalicP4"), local(".LucidaGrandeUI"), local("Segoe UI Semibold Italic"), local("Ubuntu Medium Italic"), local("Roboto-MediumItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); } - -@font-face { - font-family: system-ui; - font-style: normal; - font-weight: 700; - src: local(".SFNSText-Bold"), local(".HelveticaNeueDeskInterface-Bold"), local(".LucidaGrandeUI"), local("Segoe UI Bold"), local("Ubuntu Bold"), local("Roboto-Bold"), local("DroidSans-Bold"), local("Tahoma Bold"); } - -@font-face { - font-family: system-ui; - font-style: italic; - font-weight: 700; - src: local(".SFNSText-BoldItalic"), local(".HelveticaNeueDeskInterface-BoldItalic"), local(".LucidaGrandeUI"), local("Segoe UI Bold Italic"), local("Ubuntu Bold Italic"), local("Roboto-BoldItalic"), local("DroidSans-Bold"), local("Tahoma Bold"); } - -@font-face { - font-family: 'Glyphicons Halflings'; - src: url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot"); - src: url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff") format("woff"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular") format("svg"); } - -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; } - -.glyphicon-heart-empty:before { - content: "\e143"; } - -.glyphicon-ok:before { - content: "\e013"; } - -.glyphicon-remove:before { - content: "\e014"; } - -.glyphicon-heart:before { - content: "\e005"; } - -input[type=range].slider { - -webkit-appearance: none; - width: 100%; - margin: 5.2px 0; } - -input[type=range].slider:focus { - outline: none; } - -input[type=range].slider::-webkit-slider-runnable-track { - width: 100%; - height: 5.6px; - cursor: pointer; - box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); - background: rgba(90, 101, 107, 0.32); - border-radius: 25px; - border: 1.9px solid transparent; } - -input[type=range].slider::-webkit-slider-thumb { - box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; - border: 0px solid transparent; - height: 16px; - width: 16px; - border-radius: 13px; - background: #e17075; - cursor: pointer; - -webkit-appearance: none; - margin-top: -7.1px; } - -input[type=range].slider:focus::-webkit-slider-runnable-track { - background: rgba(129, 142, 149, 0.32); } - -input[type=range].slider::-moz-range-track { - width: 100%; - height: 5.6px; - cursor: pointer; - box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); - background: rgba(90, 101, 107, 0.32); - border-radius: 25px; - border: 1.9px solid transparent; } - -input[type=range].slider::-moz-range-thumb { - box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; - border: 0px solid transparent; - height: 16px; - width: 16px; - border-radius: 13px; - background: #e17075; - cursor: pointer; } - -input[type=range].slider::-ms-track { - width: 100%; - height: 5.6px; - cursor: pointer; - background: transparent; - border-color: transparent; - color: transparent; } - -input[type=range].slider::-ms-fill-lower { - background: rgba(53, 59, 63, 0.32); - border: 1.9px solid transparent; - border-radius: 50px; - box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); } - -input[type=range].slider::-ms-fill-upper { - background: rgba(90, 101, 107, 0.32); - border: 1.9px solid transparent; - border-radius: 50px; - box-shadow: 0px 0px 0px transparent, 0px 0px 0px rgba(13, 13, 13, 0); } - -input[type=range].slider::-ms-thumb { - box-shadow: 0px 0px 0px #000031, 0px 0px 0px #00004b; - border: 0px solid transparent; - height: 16px; - width: 16px; - border-radius: 13px; - background: #e17075; - cursor: pointer; - height: 5.6px; } - -input[type=range].slider:focus::-ms-fill-lower { - background: rgba(90, 101, 107, 0.32); } - -input[type=range].slider:focus::-ms-fill-upper { - background: rgba(129, 142, 149, 0.32); } - -body { - font-size: 14px; - background-color: rgba(252, 252, 252, 0.29); - color: #5a656b; - font-family: "Segoe UI", system-ui, Tahoma; } - -.jumbotron { - padding: 50px 0; - text-align: center; - background: #8033b0; - border-bottom: 4px solid #75b7dd; - background: linear-gradient(to left, #124665, #8033b0); - position: relative; - color: #fff; } - .jumbotron h1 { - margin: 0 0 20px; - color: #75b7dd; - font-weight: 300; - font-size: 48px; - letter-spacing: -2px; } - .jumbotron p { - color: rgba(255, 255, 255, 0.65); } - .jumbotron .container { - position: relative; } - .jumbotron:before { - content: ''; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 0; - opacity: 0.4; - background-image: url("data:image/svg+xml,"); } - -pre[class*="language-"] { - border: 0; - border-radius: 0; - background: transparent; - padding: 0; } - -code[class*="language-"], -pre[class*="language-"] { - font-family: 'Inconsolata'; - font-size: 14px; } - -.borbot { - border-bottom: 3px solid #f3f3f3; } - -.s-highlight { - color: #e17075; } - -.hide { - display: none; } - -.card { - border-radius: 0; } - .card .card-header { - border-bottom: 1px solid rgba(0, 0, 0, 0.04); } - .card .card-footer { - padding-left: 0; - background: #fcfcfc; } - -prism-block > pre { - margin: 0 !important; - padding: 0 !important; } - -.show-code { - cursor: pointer; - font-size: 12px; } - .show-code:hover { - color: #e17075; } - .show-code i.mdi { - font-size: 18px; - line-height: 1; - display: inline-block; - vertical-align: text-top; - color: #e17075; } - -strong { - font-family: 'Inconsolata'; - font-weight: 700; - padding: 0 4px; - font-size: 100%; - color: #000; - border-radius: 3px; - background: transparent; } - -.btn.btn-small { - padding: 0 10px; - line-height: 1; - background: #f5f5f5; - color: rgba(0, 0, 0, 0.43); - text-transform: uppercase; - font-size: 0.8em; - font-weight: 700; - cursor: pointer; } - -.btn.btn-browser { - font-weight: 500; - font-size: 95%; } - .btn.btn-browser img { - width: 20px; - vertical-align: bottom; } - .btn.btn-browser span { - font-family: Inconsolata; - font-weight: 700; - color: #95acc4; } - -.btn.btn-framework { - padding: 0; - margin-right: 1em; } - -.highlight { - color: #e17075; } - -div#disqus_thread { - background: #ffffff; - padding: 10px; - border: 1px solid #dfdfdf; } - -a.btn.btn-link { - background: #a6b2b9; - color: #fff; - padding: 0 4px; - border-radius: 2px; - margin-right: 10px; } - a.btn.btn-link.facebook:hover { - background-color: #3b5998; } - a.btn.btn-link.twitter:hover { - background-color: #1da1f2; } - a.btn.btn-link.linkedin:hover { - background-color: #0077b5; } - a.btn.btn-link.gplus:hover { - background-color: #dd4b39; } - -.card-info { - background: #f2f5fc; - border-top: 1px solid #dfdfdf; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 1rem; - color: #8992a6; - font-size: 90%; } - .card-info .mdi { - line-height: 1; - vertical-align: middle; - opacity: 0.5; - color: #4f5667; - margin-right: 4px; } - .card-info .mdi:before { - font-size: 18px; } - -.nav-link { - color: #727a81; } - .nav-link i.mdi { - font-size: 1.3rem; - vertical-align: sub; - line-height: 1; } - .nav-link:hover { - color: #e17075; } - -span.color-preview { - display: inline-block; - width: 1em; - height: 1em; - background-color: #bdc3c7; - border-radius: 100%; - margin: 0 2px; } - span.color-preview.primary { - background-color: #428bca; } - span.color-preview.success { - background-color: #5cb85c; } - span.color-preview.info { - background-color: #5bc0de; } - span.color-preview.warning { - background-color: #f0ad4e; } - span.color-preview.danger { - background-color: #d9534f; } - -.note { - background: transparent; - padding: 0 1em; - border: 0; - font-size: 90%; - color: rgba(0, 0, 0, 0.64); - border-left: 3px solid #e17075; } - -h6 { - font-size: 14px; } - -section.section { - margin-bottom: 3em; } - section.section a { - font-weight: 500; } - -.btn-collapse { - background: #fff; - border: 1px solid #dfdfdf; - border-radius: 0; - font-size: 1em; - font-weight: 500; - color: #828b90; - cursor: pointer; - padding: 1em; - margin-bottom: 1em; } - .btn-collapse:hover { - background: #f7f7f7; - border-color: #e6dfdf; - color: #90a1ad; } - -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcHJpbnQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fcmVib290LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwiYXBwLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2hvdmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3R5cGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2xpc3RzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2NvZGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2dyaWQtZnJhbWV3b3JrLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RhYmxlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGFibGUtcm93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19idXR0b25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL190cmFuc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX3RyYW5zaXRpb25zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2Ryb3Bkb3duLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19uYXYtZGl2aWRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19idXR0b24tZ3JvdXAuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9faW5wdXQtZ3JvdXAuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY3VzdG9tLWZvcm1zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX25hdi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19uYXZiYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fY2FyZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFkZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9fanVtYm90cm9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2FsZXJ0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19hbGVydC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL19tZWRpYS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL190b29sdGlwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19yZXNldC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19hbGlnbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYmFja2dyb3VuZC12YXJpYW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19iYWNrZ3JvdW5kLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL19ib3JkZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fZW1iZWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX2Zsb2F0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19mbG9hdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NjcmVlbnJlYWRlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX3NjcmVlbi1yZWFkZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy91dGlsaXRpZXMvX3NpemluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fc3BhY2luZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3V0aWxpdGllcy9fdGV4dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC10cnVuY2F0ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1lbXBoYXNpcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fdGV4dC1oaWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdXRpbGl0aWVzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL192aXNpYmlsaXR5LnNjc3MiLCJwYXJ0aWFscy9fc3lzdGVtLWZvbnRzLnNjc3MiLCJwYXJ0aWFscy9fZ3lscGguc2NzcyIsInBhcnRpYWxzL19zbGlkZXIuc2NzcyIsInBhcnRpYWxzL19yZXNldC5zY3NzIiwicGFydGlhbHMvX3ZhcmFpYWJsZXMuc2NzcyIsInBhcnRpYWxzL19jb3JlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0U7RUFDRTs7O0lBTUUsNkJBQTRCO0lBRTVCLDRCQUEyQixFQUM1QjtFQUVEOztJQUVFLDJCQUEwQixFQUMzQjtFQU9EO0lBQ0UsOEJBQTZCLEVBQzlCO0VBYUQ7SUFDRSxpQ0FBZ0MsRUFDakM7RUFDRDs7SUFFRSx1QkFBZ0M7SUFDaEMseUJBQXdCLEVBQ3pCO0VBT0Q7SUFDRSw0QkFBMkIsRUFDNUI7RUFFRDs7SUFFRSx5QkFBd0IsRUFDekI7RUFFRDs7O0lBR0UsV0FBVTtJQUNWLFVBQVMsRUFDVjtFQUVEOztJQUVFLHdCQUF1QixFQUN4QjtFQUtEO0lBQ0UsY0FB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RUFVNUg7RUFFRDtJQU1JLDRDZm9DWSxFZWxDZjtFQUdEO0lBRUUsMEJmNkJjO0llNUJkLHNCZjRCYyxFZTNCZjtFQUVEOztJQUdFLDBCQWhDcUY7SUFpQ3JGLHVCQUFzQjtJQUN0QixzQkFsQzJILEVBb0M1SDs7QURrQkQ7RUNkQSxlZjhCZTtFZTdCZiw4QkFBNkI7RUFDN0IsdUJBQXNCO0VBQ3RCLHNCZjJCZSxFY2RkO0VabERDO0lhd0NBLFlEUzRDO0lDUjVDLDBCZnVCYTtJZXRCYixzQmZzQmEsRUVoRVE7RWE2Q3ZCO0lBRUUsNkNmaUJhLEVlaEJkO0VBRUQ7SUFFRSxlZllhO0llWGIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmSWE7SWVIYixzQmZHYSxFZUZkOztBRGREO0VDZEEsZWZZZ0I7RWVYaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZTZ0IsRWNJZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZLYztJZUpkLHNCZkljLEVFOUNPO0VhNkN2QjtJQUVFLCtDZkRjLEVlRWY7RUFFRDtJQUVFLGVmTmM7SWVPZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZkYztJZWVkLHNCZmZjLEVlZ0JmOztBRGREO0VDZEEsZWZxQ2U7RWVwQ2YsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZrQ2UsRWNyQmQ7RVpsREM7SWF3Q0EsWURTNEM7SUNSNUMsMEJmOEJhO0llN0JiLHNCZjZCYSxFRXZFUTtFYTZDdkI7SUFFRSw2Q2Z3QmEsRWV2QmQ7RUFFRDtJQUVFLGVmbUJhO0llbEJiLDhCQUE2QixFQUM5QjtFQUVEOztJQUdFLFlEVjRDO0lDVzVDLDBCZldhO0llVmIsc0JmVWEsRWVUZDs7QURkRDtFQ2RBLGVmdUNlO0VldENmLDhCQUE2QjtFQUM3Qix1QkFBc0I7RUFDdEIsc0Jmb0NlLEVjdkJkO0VabERDO0lhd0NBLFlEUzRDO0lDUjVDLDBCZmdDYTtJZS9CYixzQmYrQmEsRUV6RVE7RWE2Q3ZCO0lBRUUsOENmMEJhLEVlekJkO0VBRUQ7SUFFRSxlZnFCYTtJZXBCYiw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZhYTtJZVpiLHNCZllhLEVlWGQ7O0FEZEQ7RUNkQSxlZm9DZTtFZW5DZiw4QkFBNkI7RUFDN0IsdUJBQXNCO0VBQ3RCLHNCZmlDZSxFY3BCZDtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmY2QmE7SWU1QmIsc0JmNEJhLEVFdEVRO0VhNkN2QjtJQUVFLDZDZnVCYSxFZXRCZDtFQUVEO0lBRUUsZWZrQmE7SWVqQmIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmVWE7SWVUYixzQmZTYSxFZVJkOztBRGREO0VDZEEsZWZrQ2U7RWVqQ2YsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmYrQmUsRWNsQmQ7RVpsREM7SWF3Q0EsWURTNEM7SUNSNUMsMEJmMkJhO0llMUJiLHNCZjBCYSxFRXBFUTtFYTZDdkI7SUFFRSw2Q2ZxQmEsRWVwQmQ7RUFFRDtJQUVFLGVmZ0JhO0llZmIsOEJBQTZCLEVBQzlCO0VBRUQ7O0lBR0UsWURWNEM7SUNXNUMsMEJmUWE7SWVQYixzQmZPYSxFZU5kOztBRGREO0VDZEEsZWZPZ0I7RWVOaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZJZ0IsRWNTZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZBYztJZUNkLHNCZkRjLEVFekNPO0VhNkN2QjtJQUVFLCtDZk5jLEVlT2Y7RUFFRDtJQUVFLGVmWGM7SWVZZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZRFY0QztJQ1c1QywwQmZuQmM7SWVvQmQsc0JmcEJjLEVlcUJmOztBRGREO0VDZEEsZWZjZ0I7RWViaEIsOEJBQTZCO0VBQzdCLHVCQUFzQjtFQUN0QixzQmZXZ0IsRWNFZjtFWmxEQztJYXdDQSxZRFM0QztJQ1I1QywwQmZPYztJZU5kLHNCZk1jLEVFaERPO0VhNkN2QjtJQUVFLDRDZkNjLEVlQWY7RUFFRDtJQUVFLGVmSmM7SWVLZCw4QkFBNkIsRUFDOUI7RUFFRDs7SUFHRSxZ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QztFMEJocEJoQyxvQjFCZ3BCZ0M7RU0vcUI5QixxQk5rckIrQixFMEJqcEJsQzs7QUFPQztFYmlCRSxZQUFXO0VjM0RiLDBCM0J5RWUsRTBCN0JkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViaUJFLFlBQVc7RWMzRGIsMEIzQnVEZ0IsRTBCWGY7RXhCeEJDO0lXdUNBLFlBQVc7SWN0RFQsc0JBQXFCO0lBQ3JCLDBCQUFrQyxFekJpQm5DOztBd0JtQkg7RWJpQkUsWUFBVztFYzNEYiwwQjNCZ0ZlLEUwQnBDZDtFeEJ4QkM7SVd1Q0EsWUFBVztJY3REVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0JrRmUsRTBCdENkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViZUUsWUFBVztFY3pEYiwwQjNCK0VlLEUwQm5DZDtFeEJ4QkM7SVdxQ0EsWUFBVztJY3BEVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0I2RWUsRTBCakNkO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QXdCbUJIO0ViZUUsWUFBVztFY3pEYiwwQjNCa0RnQixFMEJOZjtFeEJ4QkM7SVdxQ0EsWUFBVztJY3BEVCxzQkFBcUI7SUFDckIsMEJBQWtDLEV6QmlCbkM7O0F3Qm1CSDtFYmlCRSxZQUFXO0VjM0RiLDBCM0J5RGdCLEUwQmJmO0V4QnhCQztJV3VDQSxZQUFXO0ljdERULHNCQUFxQjtJQUNyQiwwQkFBa0MsRXpCaUJuQzs7QTBCekJMO0VBQ0UsbUJBQW9EO0VBQ3BELG9CNUJ1bUJtQztFNEJ0bUJuQywwQjVCa0RnQjtFTWpEZCxzQk40TjBCLEU0QnZON0I7RW5CK0NHO0ltQnhESjtNQU9JLG1CNUJrbUJpQyxFNEJobUJwQyxFQUFBOztBQUVEO0VBQ0UsaUJBQWdCO0VBQ2hCLGdCQUFlO0V0QlRiLGlCc0JVc0IsRUFDekI7O0FDWEQ7RUFDRSx5QjdCd3RCbUM7RTZCdnRCbkMsb0I3Qnd0QmdDO0U2QnZ0QmhDLDhCQUE2QztFdkJIM0MsdUJOMk4yQixFNkJ0TjlCOztBQUdEO0VBRUUsZUFBYyxFQUNmOztBQUdEO0VBQ0Usa0I3QndPcUIsRTZCdk90Qjs7QUFPRDtFQUdJLG1CQUFrQjtFQUNsQixjN0I2ckJnQztFNkI1ckJoQyxnQjdCNnJCaUM7RTZCNXJCakMseUI3QjRyQmlDO0U2QjNyQmpDLGVBQWMsRUFDZjs7QUFTRDtFQzNDQSxlakJzRmtFO0VpQnJGbEUsMEJqQm1GdUU7RWlCbEZ2RSxzQmpCa0Z1RSxFZ0J2Q3RFO0VDekNEO0lBQ0UsMEJBQXFDLEVBQ3RDO0VBRUQ7SUFDRSxlQUEwQixFQUMzQjs7QURpQ0Q7RUMzQ0EsZWpCc0ZrRTtFaUJyRmxFLDBCakJtRnVFO0VpQmxGdkUsc0JqQmtGdUUsRWdCdkN0RTtFQ3pDRDtJQUNFLDBCQUFxQyxFQUN0QztFQUVEO0lBQ0UsZUFBMEIsRUFDM0I7O0FEaUNEO0VDM0NBLGVqQnNGa0U7RWlCckZsRSwwQmpCbUZ1RTtFaUJsRnZFLHNCakJrRnVFLEVnQnZDdEU7RUN6Q0Q7SUFDRSwwQkFBcUMsRUFDdEM7RUFFRDtJQUNFLGVBQTBCLEVBQzNCOztBRGlDRDtFQzNDQSxlakJzRmtFO0VpQnJGbEUsMEJqQm1GdUU7RWlCbEZ2RSxzQmpCa0Z1RSxFZ0J2Q3RFO0VDekNEO0lBQ0UsMEJBQXFDLEVBQ3RDO0VBRUQ7SUFDRSxlQUEwQixFQUMzQjs7QURpQ0Q7RUMzQ0EsZWpCc0ZrRTtFaUJyRmxFLDBCakJtRnVFO0VpQmxGdkUsc0JqQmtGdUUsRWdCdkN0RTtFQ3pDRDtJQUNFLDBCQUFxQyxFQUN0QztFQUVEO0lBQ0UsZUFBMEIsRUFDM0I7O0FEaUNEO0VDM0NBLGVqQnNGa0U7RWlCckZsRSwwQmpCbUZ1RTtFaUJsRnZFLHNCakJrRnVFLEVnQnZDdEU7RUN6Q0Q7SUFDRSwwQkFBcUMsRUFDdEM7RUFFRDtJQUNFLGVBQTBCLEVBQzNCOztBRGlDRDtFQzNDQSxlakJzRmtFO0VpQnJGbEUsMEJqQm1GdUU7RWlCbEZ2RSxzQmpCa0Z1RSxFZ0J2Q3RFO0VDekNEO0lBQ0UsMEJBQXFDLEVBQ3RDO0VBRUQ7SUFDRSxlQUEwQixFQUMzQjs7QURpQ0Q7RUMzQ0EsZWpCc0ZrRTtFaUJyRmxFLDBCakJtRnVFO0VpQmxGdkUsc0JqQmtGdUUsRWdCdkN0RTtFQ3pDRDtJQUNFLDBCQUFxQyxFQUN0QztFQUVEO0lBQ0UsZUFBMEIsRUFDM0I7O0FDWEg7RUFDRSxxQkFBYTtFQUFiLHFCQUFhO0VBQWIsY0FBYTtFQUNiLHlCQUF1QjtNQUF2QixzQkFBdUI7VUFBdkIsd0JBQXVCLEVBQ3hCOztBQUVEO0VBQ0Usb0JBQU87TUFBUCxZQUFPO1VBQVAsUUFBTyxFQUNSOztBQ05EO0VBQ0UsbUJBQWtCO0VBQ2xCLGNoQ3NoQjhCO0VnQ3JoQjlCLGVBQWM7RUFDZCxVaENvb0I2QjtFaUN2b0I3QixrS2pDK08ySztFaUM3TzNLLG1CQUFrQjtFQUNsQixvQmpDcVB5QjtFaUNwUHpCLGlCakN3UG9CO0VpQ3ZQcEIsaUJBQWdCO0VBQ2hCLGtCQUFpQjtFQUNqQixzQkFBcUI7RUFDckIsa0JBQWlCO0VBQ2pCLHFCQUFvQjtFQUNwQix1QkFBc0I7RUFDdEIsbUJBQWtCO0VBQ2xCLHFCQUFvQjtFQUNwQixvQkFBbUI7RUFDbkIsaUJBQWdCO0VEUGhCLG9CaEM4T3NCO0VnQzVPdEIsc0JBQXFCO0VBQ3JCLFdBQVUsRUFvRlg7RUEvRkQ7SUFhVyxhaEN3bkJxQixFZ0N4bkJRO0VBYnhDO0lBZ0JJLG1CQUFrQjtJQUNsQixlQUFjO0lBQ2QsV2hDeW5CNkI7SWdDeG5CN0IsWWhDeW5CNkIsRWdDeG5COUI7RUFwQkg7SUF1QkksZUFBK0IsRUFXaEM7SUFsQ0g7TUF5Qk0sVUFBUyxFQUNWO0lBMUJMO01BNkJNLGtCQUF1QztNQUN2QyxZQUFXO01BQ1gsd0JBQXlEO01BQ3pELHVCaEM0Qk8sRWdDM0JSO0VBakNMO0lBb0NJLGVoQ3VtQjZCLEVnQzVsQjlCO0lBL0NIO01Bc0NNLFFBQU8sRUFDUjtJQXZDTDtNQTBDTSxpQkFBc0M7TUFDdEMsWUFBVztNQUNYLDRCQUE4RTtNQUM5RSx5QmhDZU8sRWdDZFI7RUE5Q0w7SUFpREksZUFBK0IsRUFXaEM7SUE1REg7TUFtRE0sT0FBTSxFQUNQO0lBcERMO01BdURNLGtCQUF1QztNQUN2QyxZQUFXO01BQ1gsd0JoQ2tsQjJCO01nQ2psQjNCLDBCaENFTyxFZ0NEUjtFQTNETDtJQThESSxlaEM2a0I2QixFZ0Nqa0I5QjtJQTFFSDtNQWdFTSxTQUFRLEVBQ1Q7SUFqRUw7TUFvRU0sU0FBUTtNQUNSLGlCQUFzQztNQUN0QyxZQUFXO01BQ1gsNEJoQ29rQjJCO01nQ25rQjNCLHdCaENaTyxFZ0NhUjtFQXpFTDtJQTJGSSxtQkFBa0I7SUFDbEIsMEJBQXlCO0lBQ3pCLG9CQUFtQixFQUNwQjs7QUFJSDtFQUNFLGlCaEMraEJpQztFZ0M5aEJqQyxpQmhDbWlCK0I7RWdDbGlCL0IsWWhDbkRXO0VnQ29EWCxtQkFBa0I7RUFDbEIsdUJoQzNDVztFTXpEVCx1Qk4yTjJCLEVnQ3JIOUI7O0FFMUdEO0VBQXFCLG9DQUFtQyxFQUFLOztBQUM3RDtFQUFxQiwrQkFBOEIsRUFBSzs7QUFDeEQ7RUFBcUIsa0NBQWlDLEVBQUs7O0FBQzNEO0VBQXFCLGtDQUFpQyxFQUFLOztBQUMzRDtFQUFxQix1Q0FBc0MsRUFBSzs7QUFDaEU7RUFBcUIsb0NBQW1DLEVBQUs7O0FDRjNEO0VBQ0UscUNBQW1DLEVBQ3BDOztBakNpQkM7RWlDZEUscUNBQWdELEVqQ2lCakQ7O0FpQ3RCSDtFQUNFLHFDQUFtQyxFQUNwQzs7QWpDaUJDO0VpQ2RFLHFDQUFnRCxFakNpQmpEOztBaUN0Qkg7RUFDRSxxQ0FBbUMsRUFDcEM7O0FqQ2lCQztFaUNkRSxxQ0FBZ0QsRWpDaUJqRDs7QWlDdEJIO0VBQ0UscUNBQW1DLEVBQ3BDOztBakNpQkM7RWlDZEUscUNBQWdELEVqQ2lCakQ7O0FpQ3RCSDtFQUNFLHFDQUFtQyxFQUNwQzs7QWpDaUJDO0VpQ2RFLHFDQUFnRCxFakNpQmpEOztBaUN0Qkg7RUFDRSxxQ0FBbUMsRUFDcEM7O0FqQ2lCQztFaUNkRSxxQ0FBZ0QsRWpDaUJqRDs7QWlDdEJIO0VBQ0UscUNBQW1DLEVBQ3BDOztBakNpQkM7RWlDZEUscUNBQWdELEVqQ2lCakQ7O0FpQ3RCSDtFQUNFLHFDQUFtQyxFQUNwQzs7QWpDaUJDO0VpQ2RFLHFDQUFnRCxFakNpQmpEOztBa0NyQkw7RUFBWSxrQ0FBbUMsRUFBSTs7QUFDbkQ7RUFBa0IseUNBQXdDLEVBQUs7O0FDRC9EO0VBQW1CLHFDQUFvRCxFQUFJOztBQUMzRTtFQUFtQixxQkFBb0IsRUFBSzs7QUFDNUM7RUFBbUIseUJBQXdCLEVBQUs7O0FBQ2hEO0VBQW1CLDJCQUEwQixFQUFLOztBQUNsRDtFQUFtQiw0QkFBMkIsRUFBSzs7QUFDbkQ7RUFBbUIsMEJBQXlCLEVBQUs7O0FBRy9DO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUZEO0VBQ0UsaUNBQStCLEVBQ2hDOztBQUdIO0VBQ0UsOEJBQStCLEVBQ2hDOztBQU1EO0VBQ0Usa0NBQXdDLEVBQ3pDOztBQUNEO0VBQ0UsMkNBQWlEO0VBQ2pELDRDQUFrRCxFQUNuRDs7QUFDRDtFQUNFLDRDQUFrRDtFQUNsRCwrQ0FBcUQsRUFDdEQ7O0FBQ0Q7RUFDRSwrQ0FBcUQ7RUFDckQsOENBQW9ELEVBQ3JEOztBQUNEO0VBQ0UsMkNBQWlEO0VBQ2pELDhDQUFvRCxFQUNyRDs7QUFFRDtFQUNFLG1CQUFrQixFQUNuQjs7QUFFRDtFQUNFLGlCQUFnQixFQUNqQjs7QUNsREM7RUFDRSxlQUFjO0VBQ2QsWUFBVztFQUNYLFlBQVcsRUFDWjs7QUNHQztFQUEyQix5QkFBd0IsRUFBSzs7QUFDeEQ7RUFBMkIsMkJBQTBCLEVBQUs7O0FBQzFEO0VBQTJCLGlDQUFnQyxFQUFLOztBQUNoRTtFQUEyQiwwQkFBeUIsRUFBSzs7QUFDekQ7RUFBMkIsMEJBQXlCLEVBQUs7O0FBQ3pEO0VBQTJCLCtCQUE4QixFQUFLOztBQUM5RDtFQUEyQixnQ0FBd0I7RUFBeEIsZ0NBQXdCO0VBQXhCLHlCQUF3QixFQUFLOztBQUN4RDtFQUEyQix1Q0FBK0I7RUFBL0IsdUNBQStCO0VBQS9CLGdDQUErQixFQUFLOztBOUJ5Qy9EO0U4QmhEQTtJQUEyQix5QkFBd0IsRUFBSztFQUN4RDtJQUEyQiwyQkFBMEIsRUFBSztFQUMxRDtJQUEyQixpQ0FBZ0MsRUFBSztFQUNoRTtJQUEyQiwwQkFBeUIsRUFBSztFQUN6RDtJQUEyQiwwQkFBeUIsRUFBSztFQUN6RDtJQUEyQiwrQkFBOEIsRUFBSztFQUM5RDtJQUEyQixnQ0FBd0I7SUFBeEIsZ0NBQXdCO0lBQXhCLHlCQUF3QixFQUFLO0VBQ3hEO0lBQTJCLHVDQUErQjtJQUEvQix1Q0FBK0I7SUFBL0IsZ0NBQStCLEVBQUssRUFBQTs7QTlCeUMvRDtFOEJoREE7SUFBMkIseUJBQXdCLEVBQUs7RUFDeEQ7SUFBMkIsMkJBQTBCLEVBQUs7RUFDMUQ7SUFBMkIsaUNBQWdDLEVBQUs7RUFDaEU7SUFBMkIsMEJBQXlCLEVBQUs7RUFDekQ7SUFBMkIsMEJBQXlCLEVBQUs7RUFDekQ7SUFBMkIsK0JBQThCLEVBQUs7RUFDOUQ7SUFBMkIsZ0NBQXdCO0lBQXhCLGdDQUF3QjtJQUF4Qix5QkFBd0IsRUFBSztFQUN4RDtJQUEyQix1Q0FBK0I7SUFBL0IsdUNBQStCO0lBQS9CLGdDQUErQixFQUFLLEVBQUE7O0E5QnlDL0Q7RThCaERBO0lBQTJCLHlCQUF3QixFQUFLO0VBQ3hEO0lBQTJCLDJCQUEwQixFQUFLO0VBQzFEO0lBQTJCLGlDQUFnQyxFQUFLO0VBQ2hFO0lBQTJCLDBCQUF5QixFQUFLO0VBQ3pEO0lBQTJCLDBCQUF5QixFQUFLO0VBQ3pEO0lBQTJCLCtCQUE4QixFQUFLO0VBQzlEO0lBQTJCLGdDQUF3QjtJQUF4QixnQ0FBd0I7SUFBeEIseUJBQXdCLEVBQUs7RUFDeEQ7SUFBMkIsdUNBQStCO0lBQS9CLHVDQUErQjtJQUEvQixnQ0FBK0IsRUFBSyxFQUFBOztBOUJ5Qy9EO0U4QmhEQTtJQUEyQix5QkFBd0IsRUFBSztFQUN4RDtJQUEyQiwyQkFBMEIsRUFBSztFQUMxRDtJQUEyQixpQ0FBZ0MsRUFBSztFQUNoRTtJQUEyQiwwQkFBeUIsRUFBSztFQUN6RDtJQUEyQiwwQkFBeUIsRUFBSztFQUN6RDtJQUEyQiwrQkFBOEIsRUFBSztFQUM5RDtJQUEyQixnQ0FBd0I7SUFBeEIsZ0NBQXdCO0lBQXhCLHlCQUF3QixFQUFLO0VBQ3hEO0lBQTJCLHVDQUErQjtJQUEvQix1Q0FBK0I7SUFBL0IsZ0NBQStCLEVBQUssRUFBQTs7QUFTbkU7RUFDRSx5QkFBd0IsRUFLekI7RUFIQztJQUhGO01BSUksMEJBQXlCLEVBRTVCLEVBQUE7O0FBRUQ7RUFDRSx5QkFBd0IsRUFLekI7RUFIQztJQUhGO01BSUksMkJBQTBCLEVBRTdCLEVBQUE7O0FBRUQ7RUFDRSx5QkFBd0IsRUFLekI7RUFIQztJQUhGO01BSUksaUNBQWdDLEVBRW5DLEVBQUE7O0FBR0M7RUFERjtJQUVJLHlCQUF3QixFQUUzQixFQUFBOztBQ2xERDtFQUNFLG1CQUFrQjtFQUNsQixlQUFjO0VBQ2QsWUFBVztFQUNYLFdBQVU7RUFDVixpQkFBZ0IsRUFvQmpCO0VBekJEO0lBUUksZUFBYztJQUNkLFlBQVcsRUFDWjtFQVZIOzs7OztJQWlCSSxtQkFBa0I7SUFDbEIsT0FBTTtJQUNOLFVBQVM7SUFDVCxRQUFPO0lBQ1AsWUFBVztJQUNYLGFBQVk7SUFDWixVQUFTLEVBQ1Y7O0FBR0g7RUFFSSx1QkFBK0IsRUFDaEM7O0FBR0g7RUFFSSxvQkFBK0IsRUFDaEM7O0FBR0g7RUFFSSxpQkFBOEIsRUFDL0I7O0FBR0g7RUFFSSxrQkFBOEIsRUFDL0I7O0FDMUNDO0VBQWdDLDBDQUE4QjtFQUE5Qix5Q0FBOEI7TUFBOUIsbUNBQThCO1VBQTlCLCtCQUE4QixFQUFLOztBQUNuRTtFQUFnQyx3Q0FBaUM7RUFBakMseUNBQWlDO01BQWpDLHNDQUFpQztVQUFqQyxrQ0FBaUMsRUFBSzs7QUFDdEU7RUFBZ0MsMENBQXNDO0VBQXRDLDBDQUFzQztNQUF0QywyQ0FBc0M7VUFBdEMsdUNBQXNDLEVBQUs7O0FBQzNFO0VBQWdDLHdDQUF5QztFQUF6QywwQ0FBeUM7TUFBekMsOENBQXlDO1VBQXpDLDBDQUF5QyxFQUFLOztBQUU5RTtFQUE4QiwrQkFBMEI7TUFBMUIsMkJBQTBCLEVBQUs7O0FBQzdEO0VBQThCLGlDQUE0QjtNQUE1Qiw2QkFBNEIsRUFBSzs7QUFDL0Q7RUFBOEIsdUNBQWtDO01BQWxDLG1DQUFrQyxFQUFLOztBQUVyRTtFQUFvQyxtQ0FBc0M7TUFBdEMsZ0NBQXNDO1VBQXRDLHVDQUFzQyxFQUFLOztBQUMvRTtFQUFvQyxpQ0FBb0M7TUFBcEMsOEJBQW9DO1VBQXBDLHFDQUFvQyxFQUFLOztBQUM3RTtFQUFvQyxvQ0FBa0M7TUFBbEMsaUNBQWtDO1VBQWxDLG1DQUFrQyxFQUFLOztBQUMzRTtFQUFvQyxxQ0FBeUM7TUFBekMsa0NBQXlDO1VBQXpDLDBDQUF5QyxFQUFLOztBQUNsRjtFQUFvQyxxQ0FBd0M7TUFBeEMseUNBQXdDLEVBQUs7O0FBRWpGO0VBQWlDLG9DQUFrQztNQUFsQyxpQ0FBa0M7VUFBbEMsbUNBQWtDLEVBQUs7O0FBQ3hFO0VBQWlDLGtDQUFnQztNQUFoQywrQkFBZ0M7VUFBaEMsaUNBQWdDLEVBQUs7O0FBQ3RFO0VBQWlDLHFDQUE4QjtNQUE5QixrQ0FBOEI7VUFBOUIsK0JBQThCLEVBQUs7O0FBQ3BFO0VBQWlDLHVDQUFnQztNQUFoQyxvQ0FBZ0M7VUFBaEMsaUNBQWdDLEVBQUs7O0FBQ3RFO0VBQWlDLHNDQUErQjtNQUEvQixtQ0FBK0I7VUFBL0IsZ0NBQStCLEVBQUs7O0FBRXJFO0VBQWtDLHFDQUFvQztNQUFwQyxxQ0FBb0MsRUFBSzs7QUFDM0U7RUFBa0MsbUNBQWtDO01BQWxDLG1DQUFrQyxFQUFLOztBQUN6RTtFQUFrQyxzQ0FBZ0M7TUFBaEMsaUNBQWdDLEVBQUs7O0FBQ3ZFO0VBQWtDLHVDQUF1QztNQUF2Qyx3Q0FBdUMsRUFBSzs7QUFDOUU7RUFBa0MsMENBQXNDO01BQXRDLHVDQUFzQyxFQUFLOztBQUM3RTtFQUFrQyx1Q0FBaUM7TUFBakMsa0NBQWlDLEVBQUs7O0FBRXhFO0VBQWdDLHFDQUEyQjtNQUEzQixvQ0FBMkI7TUFBM0IsNEJBQTJCLEVBQUs7O0FBQ2hFO0VBQWdDLHNDQUFpQztNQUFqQyxrQ0FBaUMsRUFBSzs7QUFDdEU7RUFBZ0Msb0NBQStCO01BQS9CLGdDQUErQixFQUFLOztBQUNwRTtFQUFnQyx1Q0FBNkI7TUFBN0Isc0NBQTZCO01BQTdCLDhCQUE2QixFQUFLOztBQUNsRTtFQUFnQyx5Q0FBK0I7TUFBL0IsZ0NBQStCLEVBQUs7O0FBQ3BFO0VBQWdDLHdDQUE4QjtNQUE5Qix1Q0FBOEI7TUFBOUIsK0JBQThCLEVBQUs7O0FoQ2VuRTtFZ0NoREE7SUFBZ0MsMENBQThCO0lBQTlCLHlDQUE4QjtRQUE5QixtQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDbkU7SUFBZ0Msd0NBQWlDO0lBQWpDLHlDQUFpQztRQUFqQyxzQ0FBaUM7WUFBakMsa0NBQWlDLEVBQUs7RUFDdEU7SUFBZ0MsMENBQXNDO0lBQXRDLDBDQUFzQztRQUF0QywyQ0FBc0M7WUFBdEMsdUNBQXNDLEVBQUs7RUFDM0U7SUFBZ0Msd0NBQXlDO0lBQXpDLDBDQUF5QztRQUF6Qyw4Q0FBeUM7WUFBekMsMENBQXlDLEVBQUs7RUFFOUU7SUFBOEIsK0JBQTBCO1FBQTFCLDJCQUEwQixFQUFLO0VBQzdEO0lBQThCLGlDQUE0QjtRQUE1Qiw2QkFBNEIsRUFBSztFQUMvRDtJQUE4Qix1Q0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFFckU7SUFBb0MsbUNBQXNDO1FBQXRDLGdDQUFzQztZQUF0Qyx1Q0FBc0MsRUFBSztFQUMvRTtJQUFvQyxpQ0FBb0M7UUFBcEMsOEJBQW9DO1lBQXBDLHFDQUFvQyxFQUFLO0VBQzdFO0lBQW9DLG9DQUFrQztRQUFsQyxpQ0FBa0M7WUFBbEMsbUNBQWtDLEVBQUs7RUFDM0U7SUFBb0MscUNBQXlDO1FBQXpDLGtDQUF5QztZQUF6QywwQ0FBeUMsRUFBSztFQUNsRjtJQUFvQyxxQ0FBd0M7UUFBeEMseUNBQXdDLEVBQUs7RUFFakY7SUFBaUMsb0NBQWtDO1FBQWxDLGlDQUFrQztZQUFsQyxtQ0FBa0MsRUFBSztFQUN4RTtJQUFpQyxrQ0FBZ0M7UUFBaEMsK0JBQWdDO1lBQWhDLGlDQUFnQyxFQUFLO0VBQ3RFO0lBQWlDLHFDQUE4QjtRQUE5QixrQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDcEU7SUFBaUMsdUNBQWdDO1FBQWhDLG9DQUFnQztZQUFoQyxpQ0FBZ0MsRUFBSztFQUN0RTtJQUFpQyxzQ0FBK0I7UUFBL0IsbUNBQStCO1lBQS9CLGdDQUErQixFQUFLO0VBRXJFO0lBQWtDLHFDQUFvQztRQUFwQyxxQ0FBb0MsRUFBSztFQUMzRTtJQUFrQyxtQ0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFDekU7SUFBa0Msc0NBQWdDO1FBQWhDLGlDQUFnQyxFQUFLO0VBQ3ZFO0lBQWtDLHVDQUF1QztRQUF2Qyx3Q0FBdUMsRUFBSztFQUM5RTtJQUFrQywwQ0FBc0M7UUFBdEMsdUNBQXNDLEVBQUs7RUFDN0U7SUFBa0MsdUNBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBRXhFO0lBQWdDLHFDQUEyQjtRQUEzQixvQ0FBMkI7UUFBM0IsNEJBQTJCLEVBQUs7RUFDaEU7SUFBZ0Msc0NBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBQ3RFO0lBQWdDLG9DQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx1Q0FBNkI7UUFBN0Isc0NBQTZCO1FBQTdCLDhCQUE2QixFQUFLO0VBQ2xFO0lBQWdDLHlDQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx3Q0FBOEI7UUFBOUIsdUNBQThCO1FBQTlCLCtCQUE4QixFQUFLLEVBQUE7O0FoQ2VuRTtFZ0NoREE7SUFBZ0MsMENBQThCO0lBQTlCLHlDQUE4QjtRQUE5QixtQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDbkU7SUFBZ0Msd0NBQWlDO0lBQWpDLHlDQUFpQztRQUFqQyxzQ0FBaUM7WUFBakMsa0NBQWlDLEVBQUs7RUFDdEU7SUFBZ0MsMENBQXNDO0lBQXRDLDBDQUFzQztRQUF0QywyQ0FBc0M7WUFBdEMsdUNBQXNDLEVBQUs7RUFDM0U7SUFBZ0Msd0NBQXlDO0lBQXpDLDBDQUF5QztRQUF6Qyw4Q0FBeUM7WUFBekMsMENBQXlDLEVBQUs7RUFFOUU7SUFBOEIsK0JBQTBCO1FBQTFCLDJCQUEwQixFQUFLO0VBQzdEO0lBQThCLGlDQUE0QjtRQUE1Qiw2QkFBNEIsRUFBSztFQUMvRDtJQUE4Qix1Q0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFFckU7SUFBb0MsbUNBQXNDO1FBQXRDLGdDQUFzQztZQUF0Qyx1Q0FBc0MsRUFBSztFQUMvRTtJQUFvQyxpQ0FBb0M7UUFBcEMsOEJBQW9DO1lBQXBDLHFDQUFvQyxFQUFLO0VBQzdFO0lBQW9DLG9DQUFrQztRQUFsQyxpQ0FBa0M7WUFBbEMsbUNBQWtDLEVBQUs7RUFDM0U7SUFBb0MscUNBQXlDO1FBQXpDLGtDQUF5QztZQUF6QywwQ0FBeUMsRUFBSztFQUNsRjtJQUFvQyxxQ0FBd0M7UUFBeEMseUNBQXdDLEVBQUs7RUFFakY7SUFBaUMsb0NBQWtDO1FBQWxDLGlDQUFrQztZQUFsQyxtQ0FBa0MsRUFBSztFQUN4RTtJQUFpQyxrQ0FBZ0M7UUFBaEMsK0JBQWdDO1lBQWhDLGlDQUFnQyxFQUFLO0VBQ3RFO0lBQWlDLHFDQUE4QjtRQUE5QixrQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDcEU7SUFBaUMsdUNBQWdDO1FBQWhDLG9DQUFnQztZQUFoQyxpQ0FBZ0MsRUFBSztFQUN0RTtJQUFpQyxzQ0FBK0I7UUFBL0IsbUNBQStCO1lBQS9CLGdDQUErQixFQUFLO0VBRXJFO0lBQWtDLHFDQUFvQztRQUFwQyxxQ0FBb0MsRUFBSztFQUMzRTtJQUFrQyxtQ0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFDekU7SUFBa0Msc0NBQWdDO1FBQWhDLGlDQUFnQyxFQUFLO0VBQ3ZFO0lBQWtDLHVDQUF1QztRQUF2Qyx3Q0FBdUMsRUFBSztFQUM5RTtJQUFrQywwQ0FBc0M7UUFBdEMsdUNBQXNDLEVBQUs7RUFDN0U7SUFBa0MsdUNBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBRXhFO0lBQWdDLHFDQUEyQjtRQUEzQixvQ0FBMkI7UUFBM0IsNEJBQTJCLEVBQUs7RUFDaEU7SUFBZ0Msc0NBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBQ3RFO0lBQWdDLG9DQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx1Q0FBNkI7UUFBN0Isc0NBQTZCO1FBQTdCLDhCQUE2QixFQUFLO0VBQ2xFO0lBQWdDLHlDQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx3Q0FBOEI7UUFBOUIsdUNBQThCO1FBQTlCLCtCQUE4QixFQUFLLEVBQUE7O0FoQ2VuRTtFZ0NoREE7SUFBZ0MsMENBQThCO0lBQTlCLHlDQUE4QjtRQUE5QixtQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDbkU7SUFBZ0Msd0NBQWlDO0lBQWpDLHlDQUFpQztRQUFqQyxzQ0FBaUM7WUFBakMsa0NBQWlDLEVBQUs7RUFDdEU7SUFBZ0MsMENBQXNDO0lBQXRDLDBDQUFzQztRQUF0QywyQ0FBc0M7WUFBdEMsdUNBQXNDLEVBQUs7RUFDM0U7SUFBZ0Msd0NBQXlDO0lBQXpDLDBDQUF5QztRQUF6Qyw4Q0FBeUM7WUFBekMsMENBQXlDLEVBQUs7RUFFOUU7SUFBOEIsK0JBQTBCO1FBQTFCLDJCQUEwQixFQUFLO0VBQzdEO0lBQThCLGlDQUE0QjtRQUE1Qiw2QkFBNEIsRUFBSztFQUMvRDtJQUE4Qix1Q0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFFckU7SUFBb0MsbUNBQXNDO1FBQXRDLGdDQUFzQztZQUF0Qyx1Q0FBc0MsRUFBSztFQUMvRTtJQUFvQyxpQ0FBb0M7UUFBcEMsOEJBQW9DO1lBQXBDLHFDQUFvQyxFQUFLO0VBQzdFO0lBQW9DLG9DQUFrQztRQUFsQyxpQ0FBa0M7WUFBbEMsbUNBQWtDLEVBQUs7RUFDM0U7SUFBb0MscUNBQXlDO1FBQXpDLGtDQUF5QztZQUF6QywwQ0FBeUMsRUFBSztFQUNsRjtJQUFvQyxxQ0FBd0M7UUFBeEMseUNBQXdDLEVBQUs7RUFFakY7SUFBaUMsb0NBQWtDO1FBQWxDLGlDQUFrQztZQUFsQyxtQ0FBa0MsRUFBSztFQUN4RTtJQUFpQyxrQ0FBZ0M7UUFBaEMsK0JBQWdDO1lBQWhDLGlDQUFnQyxFQUFLO0VBQ3RFO0lBQWlDLHFDQUE4QjtRQUE5QixrQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDcEU7SUFBaUMsdUNBQWdDO1FBQWhDLG9DQUFnQztZQUFoQyxpQ0FBZ0MsRUFBSztFQUN0RTtJQUFpQyxzQ0FBK0I7UUFBL0IsbUNBQStCO1lBQS9CLGdDQUErQixFQUFLO0VBRXJFO0lBQWtDLHFDQUFvQztRQUFwQyxxQ0FBb0MsRUFBSztFQUMzRTtJQUFrQyxtQ0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFDekU7SUFBa0Msc0NBQWdDO1FBQWhDLGlDQUFnQyxFQUFLO0VBQ3ZFO0lBQWtDLHVDQUF1QztRQUF2Qyx3Q0FBdUMsRUFBSztFQUM5RTtJQUFrQywwQ0FBc0M7UUFBdEMsdUNBQXNDLEVBQUs7RUFDN0U7SUFBa0MsdUNBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBRXhFO0lBQWdDLHFDQUEyQjtRQUEzQixvQ0FBMkI7UUFBM0IsNEJBQTJCLEVBQUs7RUFDaEU7SUFBZ0Msc0NBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBQ3RFO0lBQWdDLG9DQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx1Q0FBNkI7UUFBN0Isc0NBQTZCO1FBQTdCLDhCQUE2QixFQUFLO0VBQ2xFO0lBQWdDLHlDQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx3Q0FBOEI7UUFBOUIsdUNBQThCO1FBQTlCLCtCQUE4QixFQUFLLEVBQUE7O0FoQ2VuRTtFZ0NoREE7SUFBZ0MsMENBQThCO0lBQTlCLHlDQUE4QjtRQUE5QixtQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDbkU7SUFBZ0Msd0NBQWlDO0lBQWpDLHlDQUFpQztRQUFqQyxzQ0FBaUM7WUFBakMsa0NBQWlDLEVBQUs7RUFDdEU7SUFBZ0MsMENBQXNDO0lBQXRDLDBDQUFzQztRQUF0QywyQ0FBc0M7WUFBdEMsdUNBQXNDLEVBQUs7RUFDM0U7SUFBZ0Msd0NBQXlDO0lBQXpDLDBDQUF5QztRQUF6Qyw4Q0FBeUM7WUFBekMsMENBQXlDLEVBQUs7RUFFOUU7SUFBOEIsK0JBQTBCO1FBQTFCLDJCQUEwQixFQUFLO0VBQzdEO0lBQThCLGlDQUE0QjtRQUE1Qiw2QkFBNEIsRUFBSztFQUMvRDtJQUE4Qix1Q0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFFckU7SUFBb0MsbUNBQXNDO1FBQXRDLGdDQUFzQztZQUF0Qyx1Q0FBc0MsRUFBSztFQUMvRTtJQUFvQyxpQ0FBb0M7UUFBcEMsOEJBQW9DO1lBQXBDLHFDQUFvQyxFQUFLO0VBQzdFO0lBQW9DLG9DQUFrQztRQUFsQyxpQ0FBa0M7WUFBbEMsbUNBQWtDLEVBQUs7RUFDM0U7SUFBb0MscUNBQXlDO1FBQXpDLGtDQUF5QztZQUF6QywwQ0FBeUMsRUFBSztFQUNsRjtJQUFvQyxxQ0FBd0M7UUFBeEMseUNBQXdDLEVBQUs7RUFFakY7SUFBaUMsb0NBQWtDO1FBQWxDLGlDQUFrQztZQUFsQyxtQ0FBa0MsRUFBSztFQUN4RTtJQUFpQyxrQ0FBZ0M7UUFBaEMsK0JBQWdDO1lBQWhDLGlDQUFnQyxFQUFLO0VBQ3RFO0lBQWlDLHFDQUE4QjtRQUE5QixrQ0FBOEI7WUFBOUIsK0JBQThCLEVBQUs7RUFDcEU7SUFBaUMsdUNBQWdDO1FBQWhDLG9DQUFnQztZQUFoQyxpQ0FBZ0MsRUFBSztFQUN0RTtJQUFpQyxzQ0FBK0I7UUFBL0IsbUNBQStCO1lBQS9CLGdDQUErQixFQUFLO0VBRXJFO0lBQWtDLHFDQUFvQztRQUFwQyxxQ0FBb0MsRUFBSztFQUMzRTtJQUFrQyxtQ0FBa0M7UUFBbEMsbUNBQWtDLEVBQUs7RUFDekU7SUFBa0Msc0NBQWdDO1FBQWhDLGlDQUFnQyxFQUFLO0VBQ3ZFO0lBQWtDLHVDQUF1QztRQUF2Qyx3Q0FBdUMsRUFBSztFQUM5RTtJQUFrQywwQ0FBc0M7UUFBdEMsdUNBQXNDLEVBQUs7RUFDN0U7SUFBa0MsdUNBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBRXhFO0lBQWdDLHFDQUEyQjtRQUEzQixvQ0FBMkI7UUFBM0IsNEJBQTJCLEVBQUs7RUFDaEU7SUFBZ0Msc0NBQWlDO1FBQWpDLGtDQUFpQyxFQUFLO0VBQ3RFO0lBQWdDLG9DQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx1Q0FBNkI7UUFBN0Isc0NBQTZCO1FBQTdCLDhCQUE2QixFQUFLO0VBQ2xFO0lBQWdDLHlDQUErQjtRQUEvQixnQ0FBK0IsRUFBSztFQUNwRTtJQUFnQyx3Q0FBOEI7UUFBOUIsdUNBQThCO1FBQTlCLCtCQUE4QixFQUFLLEVBQUE7O0FDckNuRTtFQ0hGLHVCQUFzQixFREcyQjs7QUFDL0M7RUNERix3QkFBdUIsRURDMkI7O0FBQ2hEO0VDQ0YsdUJBQXNCLEVERDJCOztBakNrRC9DO0VpQ3BEQTtJQ0hGLHVCQUFzQixFREcyQjtFQUMvQztJQ0RGLHdCQUF1QixFREMyQjtFQUNoRDtJQ0NGLHVCQUFzQixFREQyQixFQUFBOztBakNrRC9DO0VpQ3BEQTtJQ0hGLHVCQUFzQixFREcyQjtFQUMvQztJQ0RGLHdCQUF1QixFREMyQjtFQUNoRDtJQ0NGLHVCQUFzQixFREQyQixFQUFBOztBakNrRC9DO0VpQ3BEQTtJQ0hGLHVCQUFzQixFREcyQjtFQUMvQztJQ0RGLHdCQUF1QixFREMyQjtFQUNoRDtJQ0NGLHVCQUFzQixFREQyQixFQUFBOztBakNrRC9DO0VpQ3BEQTtJQ0hGLHVCQUFzQixFREcyQjtFQUMvQztJQ0RGLHdCQUF1QixFREMyQjtFQUNoRDtJQ0NGLHVCQUFzQixFREQyQixFQUFBOztBRUFqRDtFQUF5Qiw0QkFBOEIsRUFBSTs7QUFBM0Q7RUFBeUIsOEJBQThCLEVBQUk7O0FBQTNEO0VBQXlCLDhCQUE4QixFQUFJOztBQUEzRDtFQUF5QiwyQkFBOEIsRUFBSTs7QUFBM0Q7RUFBeUIsb0NBQThCO0VBQTlCLDRCQUE4QixFQUFJOztBQUs3RDtFQUNFLGdCQUFlO0VBQ2YsT0FBTTtFQUNOLFNBQVE7RUFDUixRQUFPO0VBQ1AsYzVDcWdCOEIsRTRDcGdCL0I7O0FBRUQ7RUFDRSxnQkFBZTtFQUNmLFNBQVE7RUFDUixVQUFTO0VBQ1QsUUFBTztFQUNQLGM1QzZmOEIsRTRDNWYvQjs7QUFHNkI7RUFEOUI7SUFFSSx5QkFBZ0I7SUFBaEIsaUJBQWdCO0lBQ2hCLE9BQU07SUFDTixjNUNxZjRCLEU0Q25mL0IsRUFBQTs7QUM3QkQ7RUNFRSxtQkFBa0I7RUFDbEIsV0FBVTtFQUNWLFlBQVc7RUFDWCxXQUFVO0VBQ1YsaUJBQWdCO0VBQ2hCLHVCQUFtQjtFQUNuQixvQkFBbUI7RUFDbkIsOEJBQXFCO1VBQXJCLHNCQUFxQjtFQUNyQixVQUFTLEVEUlY7O0FDa0JDO0VBRUUsaUJBQWdCO0VBQ2hCLFlBQVc7RUFDWCxhQUFZO0VBQ1osa0JBQWlCO0VBQ2pCLFdBQVU7RUFDVixvQkFBbUI7RUFDbkIsd0JBQWU7VUFBZixnQkFBZSxFQUNoQjs7QUM3QkM7RUFBdUIsc0JBQTRCLEVBQUk7O0FBQXZEO0VBQXVCLHNCQUE0QixFQUFJOztBQUF2RDtFQUF1QixzQkFBNEIsRUFBSTs7QUFBdkQ7RUFBdUIsdUJBQTRCLEVBQUk7O0FBQXZEO0VBQXVCLHVCQUE0QixFQUFJOztBQUF2RDtFQUF1Qix1QkFBNEIsRUFBSTs7QUFBdkQ7RUFBdUIsdUJBQTRCLEVBQUk7O0FBQXZEO0VBQXVCLHdCQUE0QixFQUFJOztBQUkzRDtFQUFVLDJCQUEwQixFQUFLOztBQUN6QztFQUFVLDRCQUEyQixFQUFLOztBQ0FsQztFQUFpQyxxQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUseUJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLDJCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSw0QkFBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsMEJBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQywyQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsK0JBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGlDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxrQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsZ0NBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQywwQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsOEJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGdDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxpQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsK0JBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyx3QkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsNEJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLDhCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSwrQkFBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsNkJBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQywwQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsOEJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGdDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxpQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsK0JBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyx3QkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsNEJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLDhCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSwrQkFBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsNkJBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyxzQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsMEJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLDRCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSw2QkFBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsMkJBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyw0QkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsZ0NBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGtDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxtQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsaUNBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQywyQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsK0JBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGlDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxrQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsZ0NBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyx5QkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsNkJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLCtCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxnQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsOEJBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQywyQkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsK0JBQW9DLEVBQ3JDOztBQUNEOztFQUVFLGlDQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxrQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsZ0NBQXNDLEVBQ3ZDOztBQWhCRDtFQUFpQyx5QkFBbUMsRUFBSTs7QUFDeEU7O0VBRUUsNkJBQW9DLEVBQ3JDOztBQUNEOztFQUVFLCtCQUF3QyxFQUN6Qzs7QUFDRDs7RUFFRSxnQ0FBMEMsRUFDM0M7O0FBQ0Q7O0VBRUUsOEJBQXNDLEVBQ3ZDOztBQUtMO0VBQW9CLHdCQUE4QixFQUFLOztBQUN2RDs7RUFFRSw0QkFBMkIsRUFDNUI7O0FBQ0Q7O0VBRUUsOEJBQTZCLEVBQzlCOztBQUNEOztFQUVFLCtCQUE4QixFQUMvQjs7QUFDRDs7RUFFRSw2QkFBNEIsRUFDN0I7O0F2Q1VEO0V1Qy9DSTtJQUFpQyxxQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSx5QkFBb0MsRUFDckM7RUFDRDs7SUFFRSwyQkFBd0MsRUFDekM7RUFDRDs7SUFFRSw0QkFBMEMsRUFDM0M7RUFDRDs7SUFFRSwwQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMkJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsK0JBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsaUNBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsa0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsZ0NBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDBCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDhCQUFvQyxFQUNyQztFQUNEOztJQUVFLGdDQUF3QyxFQUN6QztFQUNEOztJQUVFLGlDQUEwQyxFQUMzQztFQUNEOztJQUVFLCtCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx3QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw0QkFBb0MsRUFDckM7RUFDRDs7SUFFRSw4QkFBd0MsRUFDekM7RUFDRDs7SUFFRSwrQkFBMEMsRUFDM0M7RUFDRDs7SUFFRSw2QkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMEJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsOEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsZ0NBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsaUNBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsK0JBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHdCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDRCQUFvQyxFQUNyQztFQUNEOztJQUVFLDhCQUF3QyxFQUN6QztFQUNEOztJQUVFLCtCQUEwQyxFQUMzQztFQUNEOztJQUVFLDZCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyxzQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSwwQkFBb0MsRUFDckM7RUFDRDs7SUFFRSw0QkFBd0MsRUFDekM7RUFDRDs7SUFFRSw2QkFBMEMsRUFDM0M7RUFDRDs7SUFFRSwyQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsNEJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsZ0NBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsa0NBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsbUNBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsaUNBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDJCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLCtCQUFvQyxFQUNyQztFQUNEOztJQUVFLGlDQUF3QyxFQUN6QztFQUNEOztJQUVFLGtDQUEwQyxFQUMzQztFQUNEOztJQUVFLGdDQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx5QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw2QkFBb0MsRUFDckM7RUFDRDs7SUFFRSwrQkFBd0MsRUFDekM7RUFDRDs7SUFFRSxnQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSw4QkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMkJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsK0JBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsaUNBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsa0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsZ0NBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHlCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDZCQUFvQyxFQUNyQztFQUNEOztJQUVFLCtCQUF3QyxFQUN6QztFQUNEOztJQUVFLGdDQUEwQyxFQUMzQztFQUNEOztJQUVFLDhCQUFzQyxFQUN2QztFQUtMO0lBQW9CLHdCQUE4QixFQUFLO0VBQ3ZEOztJQUVFLDRCQUEyQixFQUM1QjtFQUNEOztJQUVFLDhCQUE2QixFQUM5QjtFQUNEOztJQUVFLCtCQUE4QixFQUMvQjtFQUNEOztJQUVFLDZCQUE0QixFQUM3QixFQUFBOztBdkNVRDtFdUMvQ0k7SUFBaUMscUJBQW1DLEVBQUk7RUFDeEU7O0lBRUUseUJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsMkJBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsNEJBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsMEJBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDJCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLCtCQUFvQyxFQUNyQztFQUNEOztJQUVFLGlDQUF3QyxFQUN6QztFQUNEOztJQUVFLGtDQUEwQyxFQUMzQztFQUNEOztJQUVFLGdDQUFzQyxFQUN2QztFQWhCRDtJQUFpQywwQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw4QkFBb0MsRUFDckM7RUFDRDs7SUFFRSxnQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxpQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSwrQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsd0JBQW1DLEVBQUk7RUFDeEU7O0lBRUUsNEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsOEJBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsK0JBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsNkJBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDBCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDhCQUFvQyxFQUNyQztFQUNEOztJQUVFLGdDQUF3QyxFQUN6QztFQUNEOztJQUVFLGlDQUEwQyxFQUMzQztFQUNEOztJQUVFLCtCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx3QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw0QkFBb0MsRUFDckM7RUFDRDs7SUFFRSw4QkFBd0MsRUFDekM7RUFDRDs7SUFFRSwrQkFBMEMsRUFDM0M7RUFDRDs7SUFFRSw2QkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsc0JBQW1DLEVBQUk7RUFDeEU7O0lBRUUsMEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsNEJBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsNkJBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsMkJBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDRCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLGdDQUFvQyxFQUNyQztFQUNEOztJQUVFLGtDQUF3QyxFQUN6QztFQUNEOztJQUVFLG1DQUEwQyxFQUMzQztFQUNEOztJQUVFLGlDQUFzQyxFQUN2QztFQWhCRDtJQUFpQywyQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSwrQkFBb0MsRUFDckM7RUFDRDs7SUFFRSxpQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxrQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSxnQ0FBc0MsRUFDdkM7RUFoQkQ7SUFBaUMseUJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsNkJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsK0JBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsZ0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsOEJBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDJCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLCtCQUFvQyxFQUNyQztFQUNEOztJQUVFLGlDQUF3QyxFQUN6QztFQUNEOztJQUVFLGtDQUEwQyxFQUMzQztFQUNEOztJQUVFLGdDQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx5QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw2QkFBb0MsRUFDckM7RUFDRDs7SUFFRSwrQkFBd0MsRUFDekM7RUFDRDs7SUFFRSxnQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSw4QkFBc0MsRUFDdkM7RUFLTDtJQUFvQix3QkFBOEIsRUFBSztFQUN2RDs7SUFFRSw0QkFBMkIsRUFDNUI7RUFDRDs7SUFFRSw4QkFBNkIsRUFDOUI7RUFDRDs7SUFFRSwrQkFBOEIsRUFDL0I7RUFDRDs7SUFFRSw2QkFBNEIsRUFDN0IsRUFBQTs7QXZDVUQ7RXVDL0NJO0lBQWlDLHFCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLHlCQUFvQyxFQUNyQztFQUNEOztJQUVFLDJCQUF3QyxFQUN6QztFQUNEOztJQUVFLDRCQUEwQyxFQUMzQztFQUNEOztJQUVFLDBCQUFzQyxFQUN2QztFQWhCRDtJQUFpQywyQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSwrQkFBb0MsRUFDckM7RUFDRDs7SUFFRSxpQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxrQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSxnQ0FBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMEJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsOEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsZ0NBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsaUNBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsK0JBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHdCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDRCQUFvQyxFQUNyQztFQUNEOztJQUVFLDhCQUF3QyxFQUN6QztFQUNEOztJQUVFLCtCQUEwQyxFQUMzQztFQUNEOztJQUVFLDZCQUFzQyxFQUN2QztFQWhCRDtJQUFpQywwQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw4QkFBb0MsRUFDckM7RUFDRDs7SUFFRSxnQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxpQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSwrQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsd0JBQW1DLEVBQUk7RUFDeEU7O0lBRUUsNEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsOEJBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsK0JBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsNkJBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHNCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDBCQUFvQyxFQUNyQztFQUNEOztJQUVFLDRCQUF3QyxFQUN6QztFQUNEOztJQUVFLDZCQUEwQyxFQUMzQztFQUNEOztJQUVFLDJCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyw0QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSxnQ0FBb0MsRUFDckM7RUFDRDs7SUFFRSxrQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxtQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSxpQ0FBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMkJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsK0JBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsaUNBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsa0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsZ0NBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHlCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDZCQUFvQyxFQUNyQztFQUNEOztJQUVFLCtCQUF3QyxFQUN6QztFQUNEOztJQUVFLGdDQUEwQyxFQUMzQztFQUNEOztJQUVFLDhCQUFzQyxFQUN2QztFQWhCRDtJQUFpQywyQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSwrQkFBb0MsRUFDckM7RUFDRDs7SUFFRSxpQ0FBd0MsRUFDekM7RUFDRDs7SUFFRSxrQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSxnQ0FBc0MsRUFDdkM7RUFoQkQ7SUFBaUMseUJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsNkJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsK0JBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsZ0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsOEJBQXNDLEVBQ3ZDO0VBS0w7SUFBb0Isd0JBQThCLEVBQUs7RUFDdkQ7O0lBRUUsNEJBQTJCLEVBQzVCO0VBQ0Q7O0lBRUUsOEJBQTZCLEVBQzlCO0VBQ0Q7O0lBRUUsK0JBQThCLEVBQy9CO0VBQ0Q7O0lBRUUsNkJBQTRCLEVBQzdCLEVBQUE7O0F2Q1VEO0V1Qy9DSTtJQUFpQyxxQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSx5QkFBb0MsRUFDckM7RUFDRDs7SUFFRSwyQkFBd0MsRUFDekM7RUFDRDs7SUFFRSw0QkFBMEMsRUFDM0M7RUFDRDs7SUFFRSwwQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMkJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsK0JBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsaUNBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsa0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsZ0NBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDBCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDhCQUFvQyxFQUNyQztFQUNEOztJQUVFLGdDQUF3QyxFQUN6QztFQUNEOztJQUVFLGlDQUEwQyxFQUMzQztFQUNEOztJQUVFLCtCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx3QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw0QkFBb0MsRUFDckM7RUFDRDs7SUFFRSw4QkFBd0MsRUFDekM7RUFDRDs7SUFFRSwrQkFBMEMsRUFDM0M7RUFDRDs7SUFFRSw2QkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMEJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsOEJBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsZ0NBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsaUNBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsK0JBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHdCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDRCQUFvQyxFQUNyQztFQUNEOztJQUVFLDhCQUF3QyxFQUN6QztFQUNEOztJQUVFLCtCQUEwQyxFQUMzQztFQUNEOztJQUVFLDZCQUFzQyxFQUN2QztFQWhCRDtJQUFpQyxzQkFBbUMsRUFBSTtFQUN4RTs7SUFFRSwwQkFBb0MsRUFDckM7RUFDRDs7SUFFRSw0QkFBd0MsRUFDekM7RUFDRDs7SUFFRSw2QkFBMEMsRUFDM0M7RUFDRDs7SUFFRSwyQkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsNEJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsZ0NBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsa0NBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsbUNBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsaUNBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLDJCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLCtCQUFvQyxFQUNyQztFQUNEOztJQUVFLGlDQUF3QyxFQUN6QztFQUNEOztJQUVFLGtDQUEwQyxFQUMzQztFQUNEOztJQUVFLGdDQUFzQyxFQUN2QztFQWhCRDtJQUFpQyx5QkFBbUMsRUFBSTtFQUN4RTs7SUFFRSw2QkFBb0MsRUFDckM7RUFDRDs7SUFFRSwrQkFBd0MsRUFDekM7RUFDRDs7SUFFRSxnQ0FBMEMsRUFDM0M7RUFDRDs7SUFFRSw4QkFBc0MsRUFDdkM7RUFoQkQ7SUFBaUMsMkJBQW1DLEVBQUk7RUFDeEU7O0lBRUUsK0JBQW9DLEVBQ3JDO0VBQ0Q7O0lBRUUsaUNBQXdDLEVBQ3pDO0VBQ0Q7O0lBRUUsa0NBQTBDLEVBQzNDO0VBQ0Q7O0lBRUUsZ0NBQXNDLEVBQ3ZDO0VBaEJEO0lBQWlDLHlCQUFtQyxFQUFJO0VBQ3hFOztJQUVFLDZCQUFvQyxFQUNyQztFQUNEOztJQUVFLCtCQUF3QyxFQUN6QztFQUNEOztJQUVFLGdDQUEwQyxFQUMzQztFQUNEOztJQUVFLDhCQUFzQyxFQUN2QztFQUtMO0lBQW9CLHdCQUE4QixFQUFLO0VBQ3ZEOztJQUVFLDRCQUEyQixFQUM1QjtFQUNEOztJQUVFLDhCQUE2QixFQUM5QjtFQUNEOztJQUVFLCtCQUE4QixFQUMvQjtFQUNEOztJQUVFLDZCQUE0QixFQUM3QixFQUFBOztBQ3hDTDtFQUFpQiwrQkFBOEIsRUFBSzs7QUFDcEQ7RUFBaUIsK0JBQThCLEVBQUs7O0FBQ3BEO0VDSkUsaUJBQWdCO0VBQ2hCLHdCQUF1QjtFQUN2QixvQkFBbUIsRURFc0I7O0FBUXZDO0VBQXdCLDRCQUEyQixFQUFLOztBQUN4RDtFQUF3Qiw2QkFBNEIsRUFBSzs7QUFDekQ7RUFBd0IsOEJBQTZCLEVBQUs7O0F4Q3NDMUQ7RXdDeENBO0lBQXdCLDRCQUEyQixFQUFLO0VBQ3hEO0lBQXdCLDZCQUE0QixFQUFLO0VBQ3pEO0lBQXdCLDhCQUE2QixFQUFLLEVBQUE7O0F4Q3NDMUQ7RXdDeENBO0lBQXdCLDRCQUEyQixFQUFLO0VBQ3hEO0lBQXdCLDZCQUE0QixFQUFLO0VBQ3pEO0lBQXdCLDhCQUE2QixFQUFLLEVBQUE7O0F4Q3NDMUQ7RXdDeENBO0lBQXdCLDRCQUEyQixFQUFLO0VBQ3hEO0lBQXdCLDZCQUE0QixFQUFLO0VBQ3pEO0lBQXdCLDhCQUE2QixFQUFLLEVBQUE7O0F4Q3NDMUQ7RXdDeENBO0lBQXdCLDRCQUEyQixFQUFLO0VBQ3hEO0lBQXdCLDZCQUE0QixFQUFLO0VBQ3pEO0lBQXdCLDhCQUE2QixFQUFLLEVBQUE7O0FBTTlEO0VBQW1CLHFDQUFvQyxFQUFLOztBQUM1RDtFQUFtQixxQ0FBb0MsRUFBSzs7QUFDNUQ7RUFBbUIsc0NBQXFDLEVBQUs7O0FBSTdEO0VBQXNCLDRCQUEwQyxFQUFJOztBQUNwRTtFQUFzQiwrQkFBMkMsRUFBSTs7QUFDckU7RUFBc0IsNkJBQXlDLEVBQUk7O0FBQ25FO0VBQXNCLDhCQUE2QixFQUFLOztBQUl4RDtFQUFjLHVCQUFzQixFQUFLOztBRWxDdkM7RUFDRSwwQkFBd0IsRUFDekI7O0FqRGlCQztFaURkRSwwQkFBcUMsRWpEaUJ0Qzs7QWlEdEJIO0VBQ0UsMEJBQXdCLEVBQ3pCOztBakRpQkM7RWlEZEUsMEJBQXFDLEVqRGlCdEM7O0FpRHRCSDtFQUNFLDBCQUF3QixFQUN6Qjs7QWpEaUJDO0VpRGRFLDBCQUFxQyxFakRpQnRDOztBaUR0Qkg7RUFDRSwwQkFBd0IsRUFDekI7O0FqRGlCQztFaURkRSwwQkFBcUMsRWpEaUJ0Qzs7QWlEdEJIO0VBQ0UsMEJBQXdCLEVBQ3pCOztBakRpQkM7RWlEZEUsMEJBQXFDLEVqRGlCdEM7O0FpRHRCSDtFQUNFLDBCQUF3QixFQUN6Qjs7QWpEaUJDO0VpRGRFLDBCQUFxQyxFakRpQnRDOztBaUR0Qkg7RUFDRSwwQkFBd0IsRUFDekI7O0FqRGlCQztFaURkRSwwQkFBcUMsRWpEaUJ0Qzs7QWlEdEJIO0VBQ0UsMEJBQXdCLEVBQ3pCOztBakRpQkM7RWlEZEUsMEJBQXFDLEVqRGlCdEM7O0ErQ2tCTDtFQUFjLDBCQUE2QixFQUFJOztBQUkvQztFRzdDRSxZQUFXO0VBQ1gsbUJBQWtCO0VBQ2xCLGtCQUFpQjtFQUNqQiw4QkFBNkI7RUFDN0IsVUFBUyxFSDJDVjs7QUk3Q0Q7RUNERSwrQkFBa0MsRURHbkM7O0FBRUQ7RUNMRSw4QkFBa0MsRURPbkM7O0FFVkQsMEZBQTBGO0FBRTFGO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsZ05BQStNLEVBQUE7O0FBR25OO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsMk9BQTBPLEVBQUE7O0FBRzlPO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsME1BQXlNLEVBQUE7O0FBRzdNO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIscU5BQW9OLEVBQUE7O0FBR3hOO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsbU9BQWtPLEVBQUE7O0FBR3RPO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsbVFBQWtRLEVBQUE7O0FBR3RRO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIscU5BQW9OLEVBQUE7O0FBR3hOO0VBQ0ksdUJBQXNCO0VBQ3RCLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIscVBBQW9QLEVBQUE7O0FDdkR4UDtFQUNJLG9DQUFtQztFQUNuQyxtR0FBa0c7RUFDbEcsZ2ZBQStlLEVBQUE7O0FBR25mO0VBQ0ksbUJBQWtCO0VBQ2xCLFNBQVE7RUFDUixzQkFBcUI7RUFDckIsb0NBQW1DO0VBQ25DLG1CQUFrQjtFQUNsQixvQkFBbUI7RUFDbkIsZUFBYztFQUNkLG9DQUFtQyxFQUN0Qzs7QUFFQTtFQUNHLGlCQUFnQixFQUNuQjs7QUFFQTtFQUNHLGlCQUFnQixFQUNuQjs7QUFFQTtFQUNHLGlCQUFnQixFQUNuQjs7QUFFQTtFQUNHLGlCQUFnQixFQUNuQjs7QUM3QkQ7RUFDSSx5QkFBd0I7RUFDeEIsWUFBVztFQUNYLGdCQUFlLEVBQ2xCOztBQUVEO0VBQ0ksY0FBYSxFQUNoQjs7QUFFRDtFQUNJLFlBQVc7RUFDWCxjQUFhO0VBQ2IsZ0JBQWU7RUFDZixxRUFBeUU7RUFDekUscUNBQW9DO0VBQ3BDLG9CQUFtQjtFQUNuQixnQ0FBb0MsRUFDdkM7O0FBRUQ7RUFDSSxxREFBb0Q7RUFDcEQsOEJBQWtDO0VBQ2xDLGFBQVk7RUFDWixZQUFXO0VBQ1gsb0JBQW1CO0VBQ25CLG9CQUFtQjtFQUNuQixnQkFBZTtFQUNmLHlCQUF3QjtFQUN4QixtQkFBa0IsRUFDckI7O0FBRUQ7RUFDSSxzQ0FBcUMsRUFDeEM7O0FBRUQ7RUFDSSxZQUFXO0VBQ1gsY0FBYTtFQUNiLGdCQUFlO0VBQ2YscUVBQXlFO0VBQ3pFLHFDQUFvQztFQUNwQyxvQkFBbUI7RUFDbkIsZ0NBQW9DLEVBQ3ZDOztBQUVEO0VBQ0kscURBQW9EO0VBQ3BELDhCQUFrQztFQUNsQyxhQUFZO0VBQ1osWUFBVztFQUNYLG9CQUFtQjtFQUNuQixvQkFBbUI7RUFDbkIsZ0JBQWUsRUFDbEI7O0FBRUQ7RUFDSSxZQUFXO0VBQ1gsY0FBYTtFQUNiLGdCQUFlO0VBQ2Ysd0JBQXVCO0VBQ3ZCLDBCQUF5QjtFQUN6QixtQkFBa0IsRUFDckI7O0FBRUQ7RUFDSSxtQ0FBa0M7RUFDbEMsZ0NBQW9DO0VBQ3BDLG9CQUFtQjtFQUNuQixxRUFBeUUsRUFDNUU7O0FBRUQ7RUFDSSxxQ0FBb0M7RUFDcEMsZ0NBQW9DO0VBQ3BDLG9CQUFtQjtFQUNuQixxRUFBeUUsRUFDNUU7O0FBRUQ7RUFDSSxxREFBb0Q7RUFDcEQsOEJBQWtDO0VBQ2xDLGFBQVk7RUFDWixZQUFXO0VBQ1gsb0JBQW1CO0VBQ25CLG9CQUFtQjtFQUNuQixnQkFBZTtFQUNmLGNBQWEsRUFDaEI7O0FBRUQ7RUFDSSxxQ0FBb0MsRUFDdkM7O0FBRUQ7RUFDSSxzQ0FBcUMsRUFDeEM7O0FDbEdEO0VBQ0ksZ0JBQWU7RUFDZiw0Q0FBMkM7RUFDM0MsZUNEYztFREVkLDJDQ0F1QyxFREMxQzs7QUFFRDtFQUNJLGdCQUFlO0VBQ2YsbUJBQWtCO0VBQ2xCLG9CQ1ZpQjtFRFdqQixpQ0NWYTtFRFdiLHVEQUE0RDtFQUM1RCxtQkFBa0I7RUFDbEIsWUFBVyxFQXlCZDtFQWhDRDtJQVNRLGlCQUFnQjtJQUNoQixlQ2hCUztJRGlCVCxpQkFBZ0I7SUFDaEIsZ0JBQWU7SUFDZixxQkFBb0IsRUFDdkI7RUFkTDtJQWdCUSxpQ0FBZ0MsRUFDbkM7RUFqQkw7SUFtQlEsbUJBQWtCLEVBQ3JCO0VBcEJMO0lBc0JRLFlBQVc7SUFDWCxtQkFBa0I7SUFDbEIsUUFBTztJQUNQLE9BQU07SUFDTixZQUFXO0lBQ1gsYUFBWTtJQUNaLFdBQVU7SUFDVixhQUFZO0lBQ1osK3NCQUE4c0IsRUFDanRCOztBRXRDTDtFQUNJLFVBQVM7RUFDVCxpQkFBZ0I7RUFDaEIsd0JBQXVCO0VBQ3ZCLFdBQVUsRUFDYjs7QUFFRDs7RUFFSSwyQkFBMEI7RUFDMUIsZ0JBQWUsRUFDbEI7O0FBRUQ7RUFDSSxpQ0FBZ0MsRUFDbkM7O0FBRUQ7RUFDSSxlQUFjLEVBQ2pCOztBQUVEO0VBQ0ksY0FBYSxFQUNoQjs7QUFFRDtFQUNJLGlCQUFnQixFQVFuQjtFQVREO0lBR1EsNkNBQTRDLEVBQy9DO0VBSkw7SUFNUSxnQkFBZTtJQUNmLG9CQUFtQixFQUN0Qjs7QUFHTDtFQUNJLHFCQUFvQjtFQUNwQixzQkFBcUIsRUFDeEI7O0FBRUQ7RUFDSSxnQkFBZTtFQUNmLGdCQUFlLEVBV2xCO0VBYkQ7SUFJUSxlQUFjLEVBQ2pCO0VBTEw7SUFPUSxnQkFBZTtJQUNmLGVBQWM7SUFDZCxzQkFBcUI7SUFDckIseUJBQXdCO0lBQ3hCLGVBQWMsRUFDakI7O0FBR0w7RUFDSSwyQkFBMEI7RUFDMUIsaUJBQWdCO0VBQ2hCLGVBQWM7RUFDZCxnQkFBZTtFQUNmLFlBQVc7RUFDWCxtQkFBa0I7RUFDbEIsd0JBQXVCLEVBQzFCOztBQUVEO0VBQ0ksZ0JBQWU7RUFDZixlQUFjO0VBQ2Qsb0JBQW1CO0VBQ25CLDJCQUEwQjtFQUMxQiwwQkFBeUI7RUFDekIsaUJBQWdCO0VBQ2hCLGlCQUFnQjtFQUNoQixnQkFBZSxFQUNsQjs7QUFFRDtFQUNJLGlCQUFnQjtFQUNoQixlQUFjLEVBVWpCO0VBWkQ7SUFJUSxZQUFXO0lBQ1gsdUJBQXNCLEVBQ3pCO0VBTkw7SUFRUSx5QkFBd0I7SUFDeEIsaUJBQWdCO0lBQ2hCLGVBQWMsRUFDakI7O0FBR0w7RUFDSSxXQUFVO0VBQ1Ysa0JBQWlCLEVBQ3BCOztBQUVEO0VBQ0ksZUFBYyxFQUNqQjs7QUFFRDtFQUNJLG9CQUFtQjtFQUNuQixjQUFhO0VBQ2IsMEJBQXlCLEVBQzVCOztBQUVEO0VBQ0ksb0JBQW1CO0VBQ25CLFlBQVc7RUFDWCxlQUFjO0VBQ2QsbUJBQWtCO0VBQ2xCLG1CQUFrQixFQWFyQjtFQWxCRDtJQU9RLDBCQUF5QixFQUM1QjtFQVJMO0lBVVEsMEJBQXlCLEVBQzVCO0VBWEw7SUFhUSwwQkFBeUIsRUFDNUI7RUFkTDtJQWdCUSwwQkFBeUIsRUFDNUI7O0FBR0w7RUFDSSxvQkFBOEI7RUFDOUIsOEJBQTZCO0VBQzdCLDBCQUFtQjtNQUFuQix1QkFBbUI7VUFBbkIsb0JBQW1CO0VBQ25CLHFCQUFhO0VBQWIscUJBQWE7RUFBYixjQUFhO0VBQ2IsY0FBYTtFQUNiLGVBQWM7RUFDZCxlQUFjLEVBV2pCO0VBbEJEO0lBU1EsZUFBYztJQUNkLHVCQUFzQjtJQUN0QixhQUFZO0lBQ1osZUFBYztJQUNkLGtCQUFpQixFQUlwQjtJQWpCTDtNQWVZLGdCQUFlLEVBQ2xCOztBQUlUO0VBQ0ksZUFBYyxFQVNqQjtFQVZEO0lBR1Esa0JBQWlCO0lBQ2pCLG9CQUFtQjtJQUNuQixlQUFjLEVBQ2pCO0VBTkw7SUFRUSxlQUFjLEVBQ2pCOztBQUdMO0VBQ0ksc0JBQXFCO0VBQ3JCLFdBQVU7RUFDVixZQUFXO0VBQ1gsMEJBQXlCO0VBQ3pCLG9CQUFtQjtFQUNuQixjQUFhLEVBZ0JoQjtFQXRCRDtJQVFRLDBCQUF5QixFQUM1QjtFQVRMO0lBV1EsMEJBQXlCLEVBQzVCO0VBWkw7SUFjUSwwQkFBeUIsRUFDNUI7RUFmTDtJQWlCUSwwQkFBeUIsRUFDNUI7RUFsQkw7SUFvQlEsMEJBQXlCLEVBQzVCOztBQUdMO0VBQ0ksd0JBQXVCO0VBQ3ZCLGVBQWM7RUFDZCxVQUFTO0VBQ1QsZUFBYztFQUNkLDJCQUEwQjtFQUMxQiwrQkFBOEIsRUFDakM7O0FBRUQ7RUFDSSxnQkFBZSxFQUNsQjs7QUFFRDtFQUNJLG1CQUFrQixFQUlyQjtFQUxEO0lBR1EsaUJBQWdCLEVBQ25COztBQUdMO0VBQ0ksaUJBQWdCO0VBQ2hCLDBCQUF5QjtFQUN6QixpQkFBZ0I7RUFDaEIsZUFBYztFQUNkLGlCQUFnQjtFQUNoQixlQUFjO0VBQ2QsZ0JBQWU7RUFDZixhQUFZO0VBQ1osbUJBQWtCLEVBTXJCO0VBZkQ7SUFXUSxvQkFBbUI7SUFDbkIsc0JBQXFCO0lBQ3JCLGVBQWMsRUFDakIiLCJmaWxlIjoiYXBwLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNjc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi9tYXN0ZXIvc3JjL2Nzcy9tYWluLmNzc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgc3R5bGVzLlxuLy8gSW5saW5lZCB0byBhdm9pZCB0aGUgYWRkaXRpb25hbCBIVFRQIHJlcXVlc3Q6XG4vLyBodHRwOi8vd3d3LnBocGllZC5jb20vZGVsYXktbG9hZGluZy15b3VyLXByaW50LWNzcy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpZiAkZW5hYmxlLXByaW50LXN0eWxlcyB7XG4gIEBtZWRpYSBwcmludCB7XG4gICAgKixcbiAgICAqOjpiZWZvcmUsXG4gICAgKjo6YWZ0ZXIge1xuICAgICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IG91dCBgY29sb3JgIGFuZCBgYmFja2dyb3VuZGBcbiAgICAgIC8vY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTNcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAvL2JhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgYSxcbiAgICBhOnZpc2l0ZWQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgLy8gQm9vdHN0cmFwIHNwZWNpZmljOyBjb21tZW50IHRoZSBmb2xsb3dpbmcgc2VsZWN0b3Igb3V0XG4gICAgLy9hW2hyZWZdOjphZnRlciB7XG4gICAgLy8gIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgIC8vfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWM7IGNvbW1lbnQgdGhlIGZvbGxvd2luZyBzZWxlY3RvciBvdXRcbiAgICAvL1xuICAgIC8vIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsXG4gICAgLy8gb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgIHBzZXVkbyBwcm90b2NvbFxuICAgIC8vXG5cbiAgICAvL2FbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgICAvL2FbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTo6YWZ0ZXIge1xuICAgIC8vIGNvbnRlbnQ6IFwiXCI7XG4gICAgLy99XG5cbiAgICBwcmUge1xuICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAjOTk5OyAgIC8vIEJvb3RzdHJhcCBjdXN0b20gY29kZTsgdXNpbmcgYCRib3JkZXItd2lkdGhgIGluc3RlYWQgb2YgMXB4XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBQcmludGluZyBUYWJsZXM6XG4gICAgLy8gaHR0cDovL2Nzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUHJpbnRpbmdfVGFibGVzXG4gICAgLy9cblxuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcbiAgICB9XG5cbiAgICB0cixcbiAgICBpbWcge1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWMgY2hhbmdlcyBzdGFydFxuXG4gICAgLy8gQm9vdHN0cmFwIGNvbXBvbmVudHNcbiAgICAubmF2YmFyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5iYWRnZSB7XG4gICAgICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgIzAwMDtcbiAgICB9XG5cbiAgICAudGFibGUge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50O1xuXG4gICAgICB0ZCxcbiAgICAgIHRoIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgICAudGFibGUtYm9yZGVyZWQge1xuICAgICAgdGgsXG4gICAgICB0ZCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCb290c3RyYXAgc3BlY2lmaWMgY2hhbmdlcyBlbmRcbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnQsIER1cGxpY2F0ZVByb3BlcnR5LCBWZW5kb3JQcmVmaXhcblxuLy8gUmVib290XG4vL1xuLy8gTm9ybWFsaXphdGlvbiBvZiBIVE1MIGVsZW1lbnRzLCBtYW51YWxseSBmb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzIHRvIHJlbW92ZVxuLy8gc3R5bGVzIHRhcmdldGluZyBpcnJlbGV2YW50IGJyb3dzZXJzIHdoaWxlIGFwcGx5aW5nIG5ldyBzdHlsZXMuXG4vL1xuLy8gTm9ybWFsaXplIGlzIGxpY2Vuc2VkIE1JVC4gaHR0cHM6Ly9naXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzc1xuXG5cbi8vIERvY3VtZW50XG4vL1xuLy8gMS4gQ2hhbmdlIGZyb20gYGJveC1zaXppbmc6IGNvbnRlbnQtYm94YCBzbyB0aGF0IGB3aWR0aGAgaXMgbm90IGFmZmVjdGVkIGJ5IGBwYWRkaW5nYCBvciBgYm9yZGVyYC5cbi8vIDIuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMuXG4vLyAzLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4vLyA0LiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbi8vIDUuIFNldHRpbmcgQHZpZXdwb3J0IGNhdXNlcyBzY3JvbGxiYXJzIHRvIG92ZXJsYXAgY29udGVudCBpbiBJRTExIGFuZCBFZGdlLCBzb1xuLy8gICAgd2UgZm9yY2UgYSBub24tb3ZlcmxhcHBpbmcsIG5vbi1hdXRvLWhpZGluZyBzY3JvbGxiYXIgdG8gY291bnRlcmFjdC5cbi8vIDYuIENoYW5nZSB0aGUgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IHRvIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgaW4gaU9TLlxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG59XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLy8gMlxuICBsaW5lLWhlaWdodDogMS4xNTsgLy8gM1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIDRcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7IC8vIDVcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApOyAvLyA2XG59XG5cbi8vIElFMTArIGRvZXNuJ3QgaG9ub3IgYDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiPmAgaW4gc29tZSBjYXNlcy5cbkBhdC1yb290IHtcbiAgQC1tcy12aWV3cG9ydCB7IHdpZHRoOiBkZXZpY2Utd2lkdGg7IH1cbn1cblxuLy8gU2hpbSBmb3IgXCJuZXdcIiBIVE1MNSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIHRvIGRpc3BsYXkgY29ycmVjdGx5IChJRTEwLCBvbGRlciBicm93c2VycylcbmFydGljbGUsIGFzaWRlLCBkaWFsb2csIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8vIEJvZHlcbi8vXG4vLyAxLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4vLyAyLiBBcyBhIGJlc3QgcHJhY3RpY2UsIGFwcGx5IGEgZGVmYXVsdCBgYmFja2dyb3VuZC1jb2xvcmAuXG4vLyAzLiBTZXQgYW4gZXhwbGljaXQgaW5pdGlhbCB0ZXh0LWFsaWduIHZhbHVlIHNvIHRoYXQgd2UgY2FuIGxhdGVyIHVzZSB0aGVcbi8vICAgIHRoZSBgaW5oZXJpdGAgdmFsdWUgb24gdGhpbmdzIGxpa2UgYDx0aD5gIGVsZW1lbnRzLlxuXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyAvLyAxXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYmFzZTtcbiAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuICBjb2xvcjogJGJvZHktY29sb3I7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8vIDNcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmc7IC8vIDJcbn1cblxuLy8gU3VwcHJlc3MgdGhlIGZvY3VzIG91dGxpbmUgb24gZWxlbWVudHMgdGhhdCBjYW5ub3QgYmUgYWNjZXNzZWQgdmlhIGtleWJvYXJkLlxuLy8gVGhpcyBwcmV2ZW50cyBhbiB1bndhbnRlZCBmb2N1cyBvdXRsaW5lIGZyb20gYXBwZWFyaW5nIGFyb3VuZCBlbGVtZW50cyB0aGF0XG4vLyBtaWdodCBzdGlsbCByZXNwb25kIHRvIHBvaW50ZXIgZXZlbnRzLlxuLy9cbi8vIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZVxuW3RhYmluZGV4PVwiLTFcIl06Zm9jdXMge1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cblxuLy8gQ29udGVudCBncm91cGluZ1xuLy9cbi8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4vLyAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLy8gMVxuICBoZWlnaHQ6IDA7IC8vIDFcbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbn1cblxuXG4vL1xuLy8gVHlwb2dyYXBoeVxuLy9cblxuLy8gUmVtb3ZlIHRvcCBtYXJnaW5zIGZyb20gaGVhZGluZ3Ncbi8vXG4vLyBCeSBkZWZhdWx0LCBgPGgxPmAtYDxoNj5gIGFsbCByZWNlaXZlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMuIFdlIG51a2UgdGhlIHRvcFxuLy8gbWFyZ2luIGZvciBlYXNpZXIgY29udHJvbCB3aXRoaW4gdHlwZSBzY2FsZXMgYXMgaXQgYXZvaWRzIG1hcmdpbiBjb2xsYXBzaW5nLlxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xufVxuXG4vLyBSZXNldCBtYXJnaW5zIG9uIHBhcmFncmFwaHNcbi8vXG4vLyBTaW1pbGFybHksIHRoZSB0b3AgbWFyZ2luIG9uIGA8cD5gcyBnZXQgcmVzZXQuIEhvd2V2ZXIsIHdlIGFsc28gcmVzZXQgdGhlXG4vLyBib3R0b20gbWFyZ2luIHRvIHVzZSBgcmVtYCB1bml0cyBpbnN0ZWFkIG9mIGBlbWAuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xufVxuXG4vLyBBYmJyZXZpYXRpb25zXG4vL1xuLy8gMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuLy8gMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbi8vIDMuIEFkZCBleHBsaWNpdCBjdXJzb3IgdG8gaW5kaWNhdGUgY2hhbmdlZCBiZWhhdmlvci5cbi8vIDQuIER1cGxpY2F0ZSBiZWhhdmlvciB0byB0aGUgZGF0YS0qIGF0dHJpYnV0ZSBmb3Igb3VyIHRvb2x0aXAgcGx1Z2luXG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7IC8vIDRcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvLyAyXG4gIGN1cnNvcjogaGVscDsgLy8gM1xuICBib3JkZXItYm90dG9tOiAwOyAvLyAxXG59XG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5vbCxcbnVsLFxuZGwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6ICRkdC1mb250LXdlaWdodDtcbn1cblxuZGQge1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDA7IC8vIFVuZG8gYnJvd3NlciBkZWZhdWx0XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLVxufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaVxufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyAvLyBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vyc1xufVxuXG4vL1xuLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4vLyBhbGwgYnJvd3NlcnMuXG4vL1xuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIgeyBib3R0b206IC0uMjVlbTsgfVxuc3VwIHsgdG9wOiAtLjVlbTsgfVxuXG5cbi8vXG4vLyBMaW5rc1xuLy9cblxuYSB7XG4gIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1kZWNvcmF0aW9uO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvLyBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG5cbiAgQGluY2x1ZGUgaG92ZXIge1xuICAgIGNvbG9yOiAkbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRsaW5rLWhvdmVyLWRlY29yYXRpb247XG4gIH1cbn1cblxuLy8gQW5kIHVuZG8gdGhlc2Ugc3R5bGVzIGZvciBwbGFjZWhvbGRlciBsaW5rcy9uYW1lZCBhbmNob3JzICh3aXRob3V0IGhyZWYpXG4vLyB3aGljaCBoYXZlIG5vdCBiZWVuIG1hZGUgZXhwbGljaXRseSBrZXlib2FyZC1mb2N1c2FibGUgKHdpdGhvdXQgdGFiaW5kZXgpLlxuLy8gSXQgd291bGQgYmUgbW9yZSBzdHJhaWdodGZvcndhcmQgdG8ganVzdCB1c2UgYVtocmVmXSBpbiBwcmV2aW91cyBibG9jaywgYnV0IHRoYXRcbi8vIGNhdXNlcyBzcGVjaWZpY2l0eSBpc3N1ZXMgaW4gbWFueSBvdGhlciBzdHlsZXMgdGhhdCBhcmUgdG9vIGNvbXBsZXggdG8gZml4LlxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTk0MDJcblxuYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSkge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cblxuLy9cbi8vIENvZGVcbi8vXG5cbnByZSxcbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICBmb250LXNpemU6IDFlbTsgLy8gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxufVxuXG5wcmUge1xuICAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0IHRvcCBtYXJnaW5cbiAgbWFyZ2luLXRvcDogMDtcbiAgLy8gUmVzZXQgYnJvd3NlciBkZWZhdWx0IG9mIGAxZW1gIHRvIHVzZSBgcmVtYHNcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgLy8gRG9uJ3QgYWxsb3cgY29udGVudCB0byBicmVhayBvdXRzaWRlXG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG5cbi8vXG4vLyBGaWd1cmVzXG4vL1xuXG5maWd1cmUge1xuICAvLyBBcHBseSBhIGNvbnNpc3RlbnQgbWFyZ2luIHN0cmF0ZWd5IChtYXRjaGVzIG91ciB0eXBlIHN0eWxlcykuXG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cblxuLy9cbi8vIEltYWdlcyBhbmQgY29udGVudFxuLy9cblxuaW1nIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLS5cbn1cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyAvLyBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRVxufVxuXG5cbi8vIEF2b2lkIDMwMG1zIGNsaWNrIGRlbGF5IG9uIHRvdWNoIGRldmljZXMgdGhhdCBzdXBwb3J0IHRoZSBgdG91Y2gtYWN0aW9uYCBDU1MgcHJvcGVydHkuXG4vL1xuLy8gSW4gcGFydGljdWxhciwgdW5saWtlIG1vc3Qgb3RoZXIgYnJvd3NlcnMsIElFMTErRWRnZSBvbiBXaW5kb3dzIDEwIG9uIHRvdWNoIGRldmljZXMgYW5kIElFIE1vYmlsZSAxMC0xMVxuLy8gRE9OJ1QgcmVtb3ZlIHRoZSBjbGljayBkZWxheSB3aGVuIGA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoXCI+YCBpcyBwcmVzZW50LlxuLy8gSG93ZXZlciwgdGhleSBETyBzdXBwb3J0IHJlbW92aW5nIHRoZSBjbGljayBkZWxheSB2aWEgYHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uYC5cbi8vIFNlZTpcbi8vICogaHR0cHM6Ly92NC1hbHBoYS5nZXRib290c3RyYXAuY29tL2NvbnRlbnQvcmVib290LyNjbGljay1kZWxheS1vcHRpbWl6YXRpb24tZm9yLXRvdWNoXG4vLyAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jZmVhdD1jc3MtdG91Y2gtYWN0aW9uXG4vLyAqIGh0dHBzOi8vcGF0cmlja2hsYXVrZS5naXRodWIuaW8vdG91Y2gvdGVzdHMvcmVzdWx0cy8jc3VwcHJlc3NpbmctMzAwbXMtZGVsYXlcblxuYSxcbmFyZWEsXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSxcbmlucHV0LFxubGFiZWwsXG5zZWxlY3QsXG5zdW1tYXJ5LFxudGV4dGFyZWEge1xuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuXG4vL1xuLy8gVGFibGVzXG4vL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8vIFByZXZlbnQgZG91YmxlIGJvcmRlcnNcbn1cblxuY2FwdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAkdGFibGUtY2VsbC1wYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHRhYmxlLWNlbGwtcGFkZGluZztcbiAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbn1cblxudGgge1xuICAvLyBNYXRjaGVzIGRlZmF1bHQgYDx0ZD5gIGFsaWdubWVudCBieSBpbmhlcml0aW5nIGZyb20gdGhlIGA8Ym9keT5gLCBvciB0aGVcbiAgLy8gY2xvc2VzdCBwYXJlbnQgd2l0aCBhIHNldCBgdGV4dC1hbGlnbmAuXG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cblxuLy9cbi8vIEZvcm1zXG4vL1xuXG5sYWJlbCB7XG4gIC8vIEFsbG93IGxhYmVscyB0byB1c2UgYG1hcmdpbmAgZm9yIHNwYWNpbmcuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5cbi8vIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbi8vIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbi8vXG4vLyBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2UvXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmlucHV0LFxuYnV0dG9uLFxuc2VsZWN0LFxub3B0Z3JvdXAsXG50ZXh0YXJlYSB7XG4gIG1hcmdpbjogMDsgLy8gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvLyBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3hcbn1cblxuLy8gMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXG4vLyAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4vLyAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLy8gMVxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDJcbn1cblxuLy8gUmVtb3ZlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIEZpcmVmb3gsIGJ1dCBkb24ndCByZXN0b3JlIHRoZSBvdXRsaW5lIGxpa2UgTm9ybWFsaXplLlxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLVxuICBwYWRkaW5nOiAwOyAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtXG59XG5cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCBhcHBlYXJhbmNlIG9mIHRlbXBvcmFsIGlucHV0cyB0byBhdm9pZCBhIE1vYmlsZSBTYWZhcmlcbiAgLy8gYnVnIHdoZXJlIHNldHRpbmcgYSBjdXN0b20gbGluZS1oZWlnaHQgcHJldmVudHMgdGV4dCBmcm9tIGJlaW5nIHZlcnRpY2FsbHlcbiAgLy8gY2VudGVyZWQgd2l0aGluIHRoZSBpbnB1dC5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk4NDhcbiAgLy8gYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTEyNjZcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICAvLyBUZXh0YXJlYXMgc2hvdWxkIHJlYWxseSBvbmx5IHJlc2l6ZSB2ZXJ0aWNhbGx5IHNvIHRoZXkgZG9uJ3QgYnJlYWsgdGhlaXIgKGhvcml6b250YWwpIGNvbnRhaW5lcnMuXG4gIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbmZpZWxkc2V0IHtcbiAgLy8gQnJvd3NlcnMgc2V0IGEgZGVmYXVsdCBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgIG9uIGZpZWxkc2V0cyxcbiAgLy8gdW5saWtlIGUuZy4gYDxkaXY+YHMsIHdoaWNoIGhhdmUgYG1pbi13aWR0aDogMDtgIGJ5IGRlZmF1bHQuXG4gIC8vIFNvIHdlIHJlc2V0IHRoYXQgdG8gZW5zdXJlIGZpZWxkc2V0cyBiZWhhdmUgbW9yZSBsaWtlIGEgc3RhbmRhcmQgYmxvY2sgZWxlbWVudC5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTIzNTlcbiAgLy8gYW5kIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZmllbGRzZXQtYW5kLWxlZ2VuZC1lbGVtZW50c1xuICBtaW4td2lkdGg6IDA7XG4gIC8vIFJlc2V0IHRoZSBkZWZhdWx0IG91dGxpbmUgYmVoYXZpb3Igb2YgZmllbGRzZXRzIHNvIHRoZXkgZG9uJ3QgYWZmZWN0IHBhZ2UgbGF5b3V0LlxuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbi8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG59XG5cbi8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLy8gVGhpcyBvdmVycmlkZXMgdGhlIGV4dHJhIHJvdW5kZWQgY29ybmVycyBvbiBzZWFyY2ggaW5wdXRzIGluIGlPUyBzbyB0aGF0IG91clxuICAvLyBgLmZvcm0tY29udHJvbGAgY2xhc3MgY2FuIHByb3Blcmx5IHN0eWxlIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCBzaW1wbHlcbiAgLy8gYmUgYWRkZWQgdG8gYC5mb3JtLWNvbnRyb2xgIGFzIGl0J3Mgbm90IHNwZWNpZmljIGVub3VnaC4gRm9yIGRldGFpbHMsIHNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzExNTg2LlxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLy9cbi8vIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4vL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbi8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbi8vXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvLyAxXG59XG5cbi8vXG4vLyBDb3JyZWN0IGVsZW1lbnQgZGlzcGxheXNcbi8vXG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzXG59XG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUVcbn1cblxuLy8gQWx3YXlzIGhpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSBgaGlkZGVuYCBIVE1MIGF0dHJpYnV0ZSAoZnJvbSBQdXJlQ1NTKS5cbi8vIE5lZWRlZCBmb3IgcHJvcGVyIGRpc3BsYXkgaW4gSUUgMTAtLlxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBWYXJpYWJsZXNcbi8vXG4vLyBDb3B5IHNldHRpbmdzIGZyb20gdGhpcyBmaWxlIGludG8gdGhlIHByb3ZpZGVkIGBfY3VzdG9tLnNjc3NgIHRvIG92ZXJyaWRlXG4vLyB0aGUgQm9vdHN0cmFwIGRlZmF1bHRzIHdpdGhvdXQgbW9kaWZ5aW5nIGtleSwgdmVyc2lvbmVkIGZpbGVzLlxuLy9cbi8vIFZhcmlhYmxlcyBzaG91bGQgZm9sbG93IHRoZSBgJGNvbXBvbmVudC1zdGF0ZS1wcm9wZXJ0eS1zaXplYCBmb3JtdWxhIGZvclxuLy8gY29uc2lzdGVudCBuYW1pbmcuIEV4OiAkbmF2LWxpbmstZGlzYWJsZWQtY29sb3IgYW5kICRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHMuXG5cbi8vIFRhYmxlIG9mIENvbnRlbnRzXG4vL1xuLy8gQ29sb3Igc3lzdGVtXG4vLyBPcHRpb25zXG4vLyBTcGFjaW5nXG4vLyBCb2R5XG4vLyBMaW5rc1xuLy8gUGFyYWdyYXBoc1xuLy8gR3JpZCBicmVha3BvaW50c1xuLy8gR3JpZCBjb250YWluZXJzXG4vLyBHcmlkIGNvbHVtbnNcbi8vIEZvbnRzXG4vLyBDb21wb25lbnRzXG4vLyBUYWJsZXNcbi8vIEJ1dHRvbnNcbi8vIEZvcm1zXG4vLyBEcm9wZG93bnNcbi8vIFotaW5kZXggbWFzdGVyIGxpc3Rcbi8vIE5hdnNcbi8vIE5hdmJhclxuLy8gUGFnaW5hdGlvblxuLy8gSnVtYm90cm9uXG4vLyBGb3JtIHN0YXRlcyBhbmQgYWxlcnRzXG4vLyBDYXJkc1xuLy8gVG9vbHRpcHNcbi8vIFBvcG92ZXJzXG4vLyBCYWRnZXNcbi8vIE1vZGFsc1xuLy8gQWxlcnRzXG4vLyBQcm9ncmVzcyBiYXJzXG4vLyBMaXN0IGdyb3VwXG4vLyBJbWFnZSB0aHVtYm5haWxzXG4vLyBGaWd1cmVzXG4vLyBCcmVhZGNydW1ic1xuLy8gQ2Fyb3VzZWxcbi8vIENsb3NlXG4vLyBDb2RlXG5cblxuLy9cbi8vIENvbG9yIHN5c3RlbVxuLy9cblxuJHdoaXRlOiAgI2ZmZiAhZGVmYXVsdDtcbiRncmF5LTEwMDogI2Y4ZjlmYSAhZGVmYXVsdDtcbiRncmF5LTIwMDogI2U5ZWNlZiAhZGVmYXVsdDtcbiRncmF5LTMwMDogI2RlZTJlNiAhZGVmYXVsdDtcbiRncmF5LTQwMDogI2NlZDRkYSAhZGVmYXVsdDtcbiRncmF5LTUwMDogI2FkYjViZCAhZGVmYXVsdDtcbiRncmF5LTYwMDogIzg2OGU5NiAhZGVmYXVsdDtcbiRncmF5LTcwMDogIzQ5NTA1NyAhZGVmYXVsdDtcbiRncmF5LTgwMDogIzM0M2E0MCAhZGVmYXVsdDtcbiRncmF5LTkwMDogIzIxMjUyOSAhZGVmYXVsdDtcbiRibGFjazogICMwMDAgIWRlZmF1bHQ7XG5cbiRncmF5czogKFxuICAxMDA6ICRncmF5LTEwMCxcbiAgMjAwOiAkZ3JheS0yMDAsXG4gIDMwMDogJGdyYXktMzAwLFxuICA0MDA6ICRncmF5LTQwMCxcbiAgNTAwOiAkZ3JheS01MDAsXG4gIDYwMDogJGdyYXktNjAwLFxuICA3MDA6ICRncmF5LTcwMCxcbiAgODAwOiAkZ3JheS04MDAsXG4gIDkwMDogJGdyYXktOTAwXG4pICFkZWZhdWx0O1xuXG4kYmx1ZTogICAgIzAwN2JmZiAhZGVmYXVsdDtcbiRpbmRpZ286ICAjNjYxMGYyICFkZWZhdWx0O1xuJHB1cnBsZTogICM2ZjQyYzEgIWRlZmF1bHQ7XG4kcGluazogICAgI2U4M2U4YyAhZGVmYXVsdDtcbiRyZWQ6ICAgICAjZGMzNTQ1ICFkZWZhdWx0O1xuJG9yYW5nZTogICNmZDdlMTQgIWRlZmF1bHQ7XG4keWVsbG93OiAgI2ZmYzEwNyAhZGVmYXVsdDtcbiRncmVlbjogICAjMjhhNzQ1ICFkZWZhdWx0O1xuJHRlYWw6ICAgICMyMGM5OTcgIWRlZmF1bHQ7XG4kY3lhbjogICAgIzE3YTJiOCAhZGVmYXVsdDtcblxuJGNvbG9yczogKFxuICBibHVlOiAkYmx1ZSxcbiAgaW5kaWdvOiAkaW5kaWdvLFxuICBwdXJwbGU6ICRwdXJwbGUsXG4gIHBpbms6ICRwaW5rLFxuICByZWQ6ICRyZWQsXG4gIG9yYW5nZTogJG9yYW5nZSxcbiAgeWVsbG93OiAkeWVsbG93LFxuICBncmVlbjogJGdyZWVuLFxuICB0ZWFsOiAkdGVhbCxcbiAgY3lhbjogJGN5YW4sXG4gIHdoaXRlOiAkd2hpdGUsXG4gIGdyYXk6ICRncmF5LTYwMCxcbiAgZ3JheS1kYXJrOiAkZ3JheS04MDBcbikgIWRlZmF1bHQ7XG5cbiR0aGVtZS1jb2xvcnM6IChcbiAgcHJpbWFyeTogJGJsdWUsXG4gIHNlY29uZGFyeTogJGdyYXktNjAwLFxuICBzdWNjZXNzOiAkZ3JlZW4sXG4gIGluZm86ICRjeWFuLFxuICB3YXJuaW5nOiAkeWVsbG93LFxuICBkYW5nZXI6ICRyZWQsXG4gIGxpZ2h0OiAkZ3JheS0xMDAsXG4gIGRhcms6ICRncmF5LTgwMFxuKSAhZGVmYXVsdDtcblxuLy8gU2V0IGEgc3BlY2lmaWMganVtcCBwb2ludCBmb3IgcmVxdWVzdGluZyBjb2xvciBqdW1wc1xuJHRoZW1lLWNvbG9yLWludGVydmFsOiA4JSAhZGVmYXVsdDtcblxuXG4vLyBPcHRpb25zXG4vL1xuLy8gUXVpY2tseSBtb2RpZnkgZ2xvYmFsIHN0eWxpbmcgYnkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9wdGlvbmFsIGZlYXR1cmVzLlxuXG4kZW5hYmxlLXJvdW5kZWQ6ICAgICAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRlbmFibGUtc2hhZG93czogICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtZ3JhZGllbnRzOiAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRlbmFibGUtdHJhbnNpdGlvbnM6ICAgICAgICB0cnVlICFkZWZhdWx0O1xuJGVuYWJsZS1ob3Zlci1tZWRpYS1xdWVyeTogIGZhbHNlICFkZWZhdWx0O1xuJGVuYWJsZS1ncmlkLWNsYXNzZXM6ICAgICAgIHRydWUgIWRlZmF1bHQ7XG4kZW5hYmxlLXByaW50LXN0eWxlczogICAgICAgdHJ1ZSAhZGVmYXVsdDtcblxuXG4vLyBTcGFjaW5nXG4vL1xuLy8gQ29udHJvbCB0aGUgZGVmYXVsdCBzdHlsaW5nIG9mIG1vc3QgQm9vdHN0cmFwIGVsZW1lbnRzIGJ5IG1vZGlmeWluZyB0aGVzZVxuLy8gdmFyaWFibGVzLiBNb3N0bHkgZm9jdXNlZCBvbiBzcGFjaW5nLlxuLy8gWW91IGNhbiBhZGQgbW9yZSBlbnRyaWVzIHRvIHRoZSAkc3BhY2VycyBtYXAsIHNob3VsZCB5b3UgbmVlZCBtb3JlIHZhcmlhdGlvbi5cblxuJHNwYWNlcjogMXJlbSAhZGVmYXVsdDtcbiRzcGFjZXJzOiAoXG4gIDA6IDAsXG4gIDE6ICgkc3BhY2VyICogLjI1KSxcbiAgMjogKCRzcGFjZXIgKiAuNSksXG4gIDM6ICRzcGFjZXIsXG4gIDQ6ICgkc3BhY2VyICogMS41KSxcbiAgNTogKCRzcGFjZXIgKiAzKVxuKSAhZGVmYXVsdDtcblxuLy8gVGhpcyB2YXJpYWJsZSBhZmZlY3RzIHRoZSBgLmgtKmAgYW5kIGAudy0qYCBjbGFzc2VzLlxuJHNpemVzOiAoXG4gIDI1OiAyNSUsXG4gIDUwOiA1MCUsXG4gIDc1OiA3NSUsXG4gIDEwMDogMTAwJVxuKSAhZGVmYXVsdDtcblxuLy8gQm9keVxuLy9cbi8vIFNldHRpbmdzIGZvciB0aGUgYDxib2R5PmAgZWxlbWVudC5cblxuJGJvZHktYmc6ICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRib2R5LWNvbG9yOiAgICAkZ3JheS05MDAgIWRlZmF1bHQ7XG5cbi8vIExpbmtzXG4vL1xuLy8gU3R5bGUgYW5jaG9yIGVsZW1lbnRzLlxuXG4kbGluay1jb2xvcjogICAgICAgICAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kbGluay1kZWNvcmF0aW9uOiAgICAgICBub25lICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0O1xuXG4vLyBQYXJhZ3JhcGhzXG4vL1xuLy8gU3R5bGUgcCBlbGVtZW50LlxuXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW07XG5cblxuLy8gR3JpZCBicmVha3BvaW50c1xuLy9cbi8vIERlZmluZSB0aGUgbWluaW11bSBkaW1lbnNpb25zIGF0IHdoaWNoIHlvdXIgbGF5b3V0IHdpbGwgY2hhbmdlLFxuLy8gYWRhcHRpbmcgdG8gZGlmZmVyZW50IHNjcmVlbiBzaXplcywgZm9yIHVzZSBpbiBtZWRpYSBxdWVyaWVzLlxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweFxuKSAhZGVmYXVsdDtcbkBpbmNsdWRlIF9hc3NlcnQtYXNjZW5kaW5nKCRncmlkLWJyZWFrcG9pbnRzLCBcIiRncmlkLWJyZWFrcG9pbnRzXCIpO1xuQGluY2x1ZGUgX2Fzc2VydC1zdGFydHMtYXQtemVybygkZ3JpZC1icmVha3BvaW50cyk7XG5cblxuLy8gR3JpZCBjb250YWluZXJzXG4vL1xuLy8gRGVmaW5lIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGAuY29udGFpbmVyYCBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcy5cblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHhcbikgIWRlZmF1bHQ7XG5AaW5jbHVkZSBfYXNzZXJ0LWFzY2VuZGluZygkY29udGFpbmVyLW1heC13aWR0aHMsIFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXCIpO1xuXG5cbi8vIEdyaWQgY29sdW1uc1xuLy9cbi8vIFNldCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW5kIHNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBndXR0ZXJzLlxuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aDogMzBweCAhZGVmYXVsdDtcblxuLy8gQ29tcG9uZW50c1xuLy9cbi8vIERlZmluZSBjb21tb24gcGFkZGluZyBhbmQgYm9yZGVyIHJhZGl1cyBzaXplcyBhbmQgbW9yZS5cblxuJGxpbmUtaGVpZ2h0LWxnOiAgICAgICAgIDEuNSAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAxLjUgIWRlZmF1bHQ7XG5cbiRib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcbiRib3JkZXItY29sb3I6ICRncmF5LTIwMCAhZGVmYXVsdDtcblxuJGJvcmRlci1yYWRpdXM6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAgICAgICAuM3JlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLXNtOiAgICAgICAuMnJlbSAhZGVmYXVsdDtcblxuJGNvbXBvbmVudC1hY3RpdmUtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiRjb21wb25lbnQtYWN0aXZlLWJnOiAgICB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG5cbiRjYXJldC13aWR0aDogICAgICAgICAgICAuM2VtICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbi1iYXNlOiAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcbiR0cmFuc2l0aW9uLWZhZGU6ICAgICAgICBvcGFjaXR5IC4xNXMgbGluZWFyICFkZWZhdWx0O1xuJHRyYW5zaXRpb24tY29sbGFwc2U6ICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XG5cblxuLy8gRm9udHNcbi8vXG4vLyBGb250LCBsaW5lLWhlaWdodCwgYW5kIGNvbG9yIGZvciBib2R5IHRleHQsIGhlYWRpbmdzLCBhbmQgbW9yZS5cblxuJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogIFwiU0ZNb25vLVJlZ3VsYXJcIiwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlICFkZWZhdWx0O1xuJGZvbnQtZmFtaWx5LWJhc2U6ICAgICAgICRmb250LWZhbWlseS1zYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4kZm9udC1zaXplLWJhc2U6IDFyZW0gIWRlZmF1bHQ7IC8vIEFzc3VtZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCwgdHlwaWNhbGx5IGAxNnB4YFxuJGZvbnQtc2l6ZS1sZzogICAxLjI1cmVtICFkZWZhdWx0O1xuJGZvbnQtc2l6ZS1zbTogICAuODc1cmVtICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ub3JtYWw6IG5vcm1hbCAhZGVmYXVsdDtcbiRmb250LXdlaWdodC1ib2xkOiBib2xkICFkZWZhdWx0O1xuXG4kZm9udC13ZWlnaHQtYmFzZTogJGZvbnQtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjUgIWRlZmF1bHQ7XG5cbiRoMS1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcbiRoMi1mb250LXNpemU6IDJyZW0gIWRlZmF1bHQ7XG4kaDMtZm9udC1zaXplOiAxLjc1cmVtICFkZWZhdWx0O1xuJGg0LWZvbnQtc2l6ZTogMS41cmVtICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiAoJHNwYWNlciAvIDIpICFkZWZhdWx0O1xuJGhlYWRpbmdzLWZvbnQtZmFtaWx5OiAgIGluaGVyaXQgIWRlZmF1bHQ7XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6ICAgNTAwICFkZWZhdWx0O1xuJGhlYWRpbmdzLWxpbmUtaGVpZ2h0OiAgIDEuMSAhZGVmYXVsdDtcbiRoZWFkaW5ncy1jb2xvcjogICAgICAgICBpbmhlcml0ICFkZWZhdWx0O1xuXG4kZGlzcGxheTEtc2l6ZTogNnJlbSAhZGVmYXVsdDtcbiRkaXNwbGF5Mi1zaXplOiA1LjVyZW0gIWRlZmF1bHQ7XG4kZGlzcGxheTMtc2l6ZTogNC41cmVtICFkZWZhdWx0O1xuJGRpc3BsYXk0LXNpemU6IDMuNXJlbSAhZGVmYXVsdDtcblxuJGRpc3BsYXkxLXdlaWdodDogICAgIDMwMCAhZGVmYXVsdDtcbiRkaXNwbGF5Mi13ZWlnaHQ6ICAgICAzMDAgIWRlZmF1bHQ7XG4kZGlzcGxheTMtd2VpZ2h0OiAgICAgMzAwICFkZWZhdWx0O1xuJGRpc3BsYXk0LXdlaWdodDogICAgIDMwMCAhZGVmYXVsdDtcbiRkaXNwbGF5LWxpbmUtaGVpZ2h0OiAkaGVhZGluZ3MtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG5cbiRsZWFkLWZvbnQtc2l6ZTogICAxLjI1cmVtICFkZWZhdWx0O1xuJGxlYWQtZm9udC13ZWlnaHQ6IDMwMCAhZGVmYXVsdDtcblxuJHNtYWxsLWZvbnQtc2l6ZTogODAlICFkZWZhdWx0O1xuXG4kdGV4dC1tdXRlZDogJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYmxvY2txdW90ZS1zbWFsbC1jb2xvcjogICRncmF5LTYwMCAhZGVmYXVsdDtcbiRibG9ja3F1b3RlLWZvbnQtc2l6ZTogICAgKCRmb250LXNpemUtYmFzZSAqIDEuMjUpICFkZWZhdWx0O1xuXG4kaHItYm9yZGVyLWNvbG9yOiByZ2JhKCRibGFjaywuMSkgIWRlZmF1bHQ7XG4kaHItYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG4kbWFyay1wYWRkaW5nOiAuMmVtICFkZWZhdWx0O1xuXG4kZHQtZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4ka2JkLWJveC1zaGFkb3c6ICAgICAgICAgaW5zZXQgMCAtLjFyZW0gMCByZ2JhKCRibGFjaywuMjUpICFkZWZhdWx0O1xuJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4kbGlzdC1pbmxpbmUtcGFkZGluZzogNXB4ICFkZWZhdWx0O1xuXG4kbWFyay1iZzogI2ZjZjhlMyAhZGVmYXVsdDtcblxuXG4vLyBUYWJsZXNcbi8vXG4vLyBDdXN0b21pemVzIHRoZSBgLnRhYmxlYCBjb21wb25lbnQgd2l0aCBiYXNpYyB2YWx1ZXMsIGVhY2ggdXNlZCBhY3Jvc3MgYWxsIHRhYmxlIHZhcmlhdGlvbnMuXG5cbiR0YWJsZS1jZWxsLXBhZGRpbmc6ICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHRhYmxlLWNlbGwtcGFkZGluZy1zbTogICAgICAgICAuM3JlbSAhZGVmYXVsdDtcblxuJHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiR0YWJsZS1hY2NlbnQtYmc6ICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1ob3Zlci1iZzogICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjA3NSkgIWRlZmF1bHQ7XG4kdGFibGUtYWN0aXZlLWJnOiAgICAgICAgICAgICAgICR0YWJsZS1ob3Zlci1iZyAhZGVmYXVsdDtcblxuJHRhYmxlLWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG5cbiR0YWJsZS1oZWFkLWJnOiAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHRhYmxlLWhlYWQtY29sb3I6ICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG5cbiR0YWJsZS1pbnZlcnNlLWJnOiAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHRhYmxlLWludmVyc2UtYWNjZW50LWJnOiAgICAgICByZ2JhKCR3aGl0ZSwgLjA1KSAhZGVmYXVsdDtcbiR0YWJsZS1pbnZlcnNlLWhvdmVyLWJnOiAgICAgICAgcmdiYSgkd2hpdGUsIC4wNzUpICFkZWZhdWx0O1xuJHRhYmxlLWludmVyc2UtYm9yZGVyLWNvbG9yOiAgICBsaWdodGVuKCRncmF5LTkwMCwgNy41JSkgIWRlZmF1bHQ7XG4kdGFibGUtaW52ZXJzZS1jb2xvcjogICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xuXG5cbi8vIEJ1dHRvbnNcbi8vXG4vLyBGb3IgZWFjaCBvZiBCb290c3RyYXAncyBidXR0b25zLCBkZWZpbmUgdGV4dCwgYmFja2dyb3VuZCBhbmQgYm9yZGVyIGNvbG9yLlxuXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteDogICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1saW5lLWhlaWdodDogICAgIDEuMjUgIWRlZmF1bHQ7XG5cbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1zbTogICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtOiAgMS41ICFkZWZhdWx0O1xuXG4kaW5wdXQtYnRuLXBhZGRpbmcteS1sZzogICAgLjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtYnRuLXBhZGRpbmcteC1sZzogICAgMXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGc6ICAxLjUgIWRlZmF1bHQ7XG5cbiRidG4tZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAgICRmb250LXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG4kYnRuLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoJHdoaXRlLC4xNSksIDAgMXB4IDFweCByZ2JhKCRibGFjaywuMDc1KSAhZGVmYXVsdDtcbiRidG4tZm9jdXMtYm94LXNoYWRvdzogICAgICAgICAgIDAgMCAwIDNweCByZ2JhKHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSwgLjI1KSAhZGVmYXVsdDtcbiRidG4tYWN0aXZlLWJveC1zaGFkb3c6ICAgICAgICAgIGluc2V0IDAgM3B4IDVweCByZ2JhKCRibGFjaywuMTI1KSAhZGVmYXVsdDtcblxuJGJ0bi1saW5rLWRpc2FibGVkLWNvbG9yOiAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kYnRuLWJsb2NrLXNwYWNpbmcteTogICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIGZvciBjdXN0b21pemluZyBidXR0b24gcmFkaXVzIGluZGVwZW5kZW50bHkgZnJvbSBnbG9iYWwgYm9yZGVyIHJhZGl1c1xuJGJ0bi1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kYnRuLWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRidG4tYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kYnRuLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cblxuLy8gRm9ybXNcblxuJGlucHV0LWJnOiAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGlucHV0LWRpc2FibGVkLWJnOiAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG4kaW5wdXQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICByZ2JhKCRibGFjaywuMTUpICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDsgLy8gRm9yIGZvcm0gY29udHJvbHMgYW5kIGJ1dHRvbnNcbiRpbnB1dC1ib3gtc2hhZG93OiAgICAgICAgICAgICAgIGluc2V0IDAgMXB4IDFweCByZ2JhKCRibGFjaywuMDc1KSAhZGVmYXVsdDtcblxuJGlucHV0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kaW5wdXQtYm9yZGVyLXJhZGl1cy1sZzogICAgICAgICAkYm9yZGVyLXJhZGl1cy1sZyAhZGVmYXVsdDtcbiRpbnB1dC1ib3JkZXItcmFkaXVzLXNtOiAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xuXG4kaW5wdXQtZm9jdXMtYmc6ICAgICAgICAgICAgICAgICAkaW5wdXQtYmcgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAgICBsaWdodGVuKHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSwgMjUlKSAhZGVmYXVsdDtcbiRpbnB1dC1mb2N1cy1ib3gtc2hhZG93OiAgICAgICAgICRpbnB1dC1ib3gtc2hhZG93LCAkYnRuLWZvY3VzLWJveC1zaGFkb3cgIWRlZmF1bHQ7XG4kaW5wdXQtZm9jdXMtY29sb3I6ICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XG5cbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAqIDIgIWRlZmF1bHQ7XG5cbiRpbnB1dC1oZWlnaHQtaW5uZXI6ICAgICAgICAgICAgKCRmb250LXNpemUtYmFzZSAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQpICsgKCRpbnB1dC1idG4tcGFkZGluZy15ICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0OiAgICAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lci1zbTogICAgICAgICAoJGZvbnQtc2l6ZS1zbSAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQtc20pICsgKCRpbnB1dC1idG4tcGFkZGluZy15LXNtICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LXNtOiAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyLXNtfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LWhlaWdodC1pbm5lci1sZzogICAgICAgICAoJGZvbnQtc2l6ZS1sZyAqICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcpICsgKCRpbnB1dC1idG4tcGFkZGluZy15LWxnICogMikgIWRlZmF1bHQ7XG4kaW5wdXQtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgIGNhbGMoI3skaW5wdXQtaGVpZ2h0LWlubmVyLWxnfSArICN7JGlucHV0LWhlaWdodC1ib3JkZXJ9KSAhZGVmYXVsdDtcblxuJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsIGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cyAhZGVmYXVsdDtcblxuJGZvcm0tdGV4dC1tYXJnaW4tdG9wOiAgICAgLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1tYXJnaW4tYm90dG9tOiAgLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1ndXR0ZXI6ICAgMS4yNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWNoZWNrLWlucHV0LW1hcmdpbi15OiAuMjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDogLjI1cmVtICFkZWZhdWx0O1xuXG4kZm9ybS1jaGVjay1pbmxpbmUtbWFyZ2luLXg6IC43NXJlbSAhZGVmYXVsdDtcblxuJGZvcm0tZ3JvdXAtbWFyZ2luLWJvdHRvbTogICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJnOiAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjogJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC1ncm91cC1idG4tYm9yZGVyLWNvbG9yOiAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1ndXR0ZXI6ICAgMS41cmVtICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLXNwYWNlci15OiAuMjVyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtc3BhY2VyLXg6IDFyZW0gIWRlZmF1bHQ7XG5cbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZTogICAgICAgMXJlbSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICAgICAgICAgI2RkZCAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmctc2l6ZTogICAgNTAlIDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdzogaW5zZXQgMCAuMjVyZW0gLjI1cmVtIHJnYmEoJGJsYWNrLC4xKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1kaXNhYmxlZC1iZzogICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWRlc2NyaXB0aW9uLWRpc2FibGVkLWNvbG9yOiAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnOiAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c6IDAgMCAwIDFweCAkYm9keS1iZywgMCAwIDAgM3B4IHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtY29sb3I6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgbGlnaHRlbih0aGVtZS1jb2xvcihcInByaW1hcnlcIiksIDM1JSkgIWRlZmF1bHQ7XG4kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1ib3gtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9JyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJnOiB0aGVtZS1jb2xvcihcInByaW1hcnlcIikgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3IgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU6IHN0ci1yZXBsYWNlKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nI3skY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWNvbG9yfScgZD0nTTAgMmg0Jy8lM0UlM0Mvc3ZnJTNFXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG4kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJveC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XG5cbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6IDUwJSAhZGVmYXVsdDtcbiRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWljb24tY2hlY2tlZDogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yfScvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXk6ICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1oZWlnaHQ6ICAgICAgICAgICAgICAkaW5wdXQtaGVpZ2h0ICAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWluZGljYXRvci1wYWRkaW5nOiAgIDFyZW0gIWRlZmF1bHQ7IC8vIEV4dHJhIHBhZGRpbmcgdG8gYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBiYWNrZ3JvdW5kLWltYWdlIGJhc2VkIGluZGljYXRvclxuJGN1c3RvbS1zZWxlY3QtbGluZS1oZWlnaHQ6ICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWNvbG9yOiAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJnOiAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWRpc2FibGVkLWJnOiAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJnLXNpemU6ICAgICAgIDhweCAxMHB4ICFkZWZhdWx0OyAvLyBJbiBwaXhlbHMgYmVjYXVzZSBpbWFnZSBkaW1lbnNpb25zXG4kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItY29sb3I6ICMzMzMgIWRlZmF1bHQ7XG4kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3I6ICAgICBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPScjeyRjdXN0b20tc2VsZWN0LWluZGljYXRvci1jb2xvcn0nIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aDogICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3JkZXItY29sb3I6IGxpZ2h0ZW4odGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpLCAyNSUpICFkZWZhdWx0O1xuJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdzogICBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIC4wNzUpLCAwIDAgNXB4IHJnYmEoJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yLCAuNSkgIWRlZmF1bHQ7XG5cbiRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbTogIDc1JSAhZGVmYXVsdDtcbiRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTogJGlucHV0LWhlaWdodC1zbSAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLWhlaWdodDogICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtd2lkdGg6ICAgICAgICAgICAgMTRyZW0gIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdzogMCAwIDAgLjA3NXJlbSAkd2hpdGUsIDAgMCAwIC4ycmVtIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcblxuJGN1c3RvbS1maWxlLXBhZGRpbmcteTogICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLXBhZGRpbmcteDogICAgICRpbnB1dC1idG4tcGFkZGluZy14ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWxpbmUtaGVpZ2h0OiAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtY29sb3I6ICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJnOiAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGg6ICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1ib3JkZXItY29sb3I6ICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJvcmRlci1yYWRpdXM6ICRpbnB1dC1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJveC1zaGFkb3c6ICAgICRpbnB1dC1ib3gtc2hhZG93ICFkZWZhdWx0O1xuJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjogICRjdXN0b20tZmlsZS1jb2xvciAhZGVmYXVsdDtcbiRjdXN0b20tZmlsZS1idXR0b24tYmc6ICAgICAkaW5wdXQtZ3JvdXAtYWRkb24tYmcgIWRlZmF1bHQ7XG4kY3VzdG9tLWZpbGUtdGV4dDogKFxuICBwbGFjZWhvbGRlcjogKFxuICAgIGVuOiBcIkNob29zZSBmaWxlLi4uXCJcbiAgKSxcbiAgYnV0dG9uLWxhYmVsOiAoXG4gICAgZW46IFwiQnJvd3NlXCJcbiAgKVxuKSAhZGVmYXVsdDtcblxuXG4vLyBGb3JtIHZhbGlkYXRpb25cbiRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yOiAgIHRoZW1lLWNvbG9yKFwic3VjY2Vzc1wiKSAhZGVmYXVsdDtcbiRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3I6IHRoZW1lLWNvbG9yKFwiZGFuZ2VyXCIpICFkZWZhdWx0O1xuXG5cbi8vIERyb3Bkb3duc1xuLy9cbi8vIERyb3Bkb3duIG1lbnUgY29udGFpbmVyIGFuZCBjb250ZW50cy5cblxuJGRyb3Bkb3duLW1pbi13aWR0aDogICAgICAgICAgICAgMTByZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XG4kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kZHJvcGRvd24tYm9yZGVyLWNvbG9yOiAgICAgICAgICByZ2JhKCRibGFjaywuMTUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWJvcmRlci13aWR0aDogICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRkcm9wZG93bi1kaXZpZGVyLWJnOiAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRkcm9wZG93bi1ib3gtc2hhZG93OiAgICAgICAgICAgIDAgLjVyZW0gMXJlbSByZ2JhKCRibGFjaywuMTc1KSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWxpbmstY29sb3I6ICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItY29sb3I6ICAgICAgZGFya2VuKCRncmF5LTkwMCwgNSUpICFkZWZhdWx0O1xuJGRyb3Bkb3duLWxpbmstaG92ZXItYmc6ICAgICAgICAgJGdyYXktMTAwICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjogICAkZ3JheS02MDAgIWRlZmF1bHQ7XG5cbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteTogICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDogICAgICAgIDEuNXJlbSAhZGVmYXVsdDtcblxuJGRyb3Bkb3duLWhlYWRlci1jb2xvcjogICAgICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG5cbi8vIFotaW5kZXggbWFzdGVyIGxpc3Rcbi8vXG4vLyBXYXJuaW5nOiBBdm9pZCBjdXN0b21pemluZyB0aGVzZSB2YWx1ZXMuIFRoZXkncmUgdXNlZCBmb3IgYSBiaXJkJ3MgZXllIHZpZXdcbi8vIG9mIGNvbXBvbmVudHMgZGVwZW5kZW50IG9uIHRoZSB6LWF4aXMgYW5kIGFyZSBkZXNpZ25lZCB0byBhbGwgd29yayB0b2dldGhlci5cblxuJHppbmRleC1kcm9wZG93bjogICAgICAgICAgIDEwMDAgIWRlZmF1bHQ7XG4kemluZGV4LXN0aWNreTogICAgICAgICAgICAgMTAyMCAhZGVmYXVsdDtcbiR6aW5kZXgtZml4ZWQ6ICAgICAgICAgICAgICAxMDMwICFkZWZhdWx0O1xuJHppbmRleC1tb2RhbC1iYWNrZHJvcDogICAgIDEwNDAgIWRlZmF1bHQ7XG4kemluZGV4LW1vZGFsOiAgICAgICAgICAgICAgMTA1MCAhZGVmYXVsdDtcbiR6aW5kZXgtcG9wb3ZlcjogICAgICAgICAgICAxMDYwICFkZWZhdWx0O1xuJHppbmRleC10b29sdGlwOiAgICAgICAgICAgIDEwNzAgIWRlZmF1bHQ7XG5cbi8vIE5hdnNcblxuJG5hdi1saW5rLXBhZGRpbmcteTogICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjogICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuXG4kbmF2LXRhYnMtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgI2RkZCAhZGVmYXVsdDtcbiRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG5hdi10YWJzLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAgI2RkZCAhZGVmYXVsdDtcblxuJG5hdi1waWxscy1ib3JkZXItcmFkaXVzOiAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWNvbG9yOiAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtYmc6ICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4vLyBOYXZiYXJcblxuJG5hdmJhci1wYWRkaW5nLXk6ICAgICAgICAgICAgICAgICAgKCRzcGFjZXIgLyAyKSAhZGVmYXVsdDtcbiRuYXZiYXItcGFkZGluZy14OiAgICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItYnJhbmQtZm9udC1zaXplOiAgICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4vLyBDb21wdXRlIHRoZSBuYXZiYXItYnJhbmQgcGFkZGluZy15IHNvIHRoZSBuYXZiYXItYnJhbmQgd2lsbCBoYXZlIHRoZSBzYW1lIGhlaWdodCBhcyBuYXZiYXItdGV4dCBhbmQgbmF2LWxpbmtcbiRuYXYtbGluay1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICRuYXZiYXItYnJhbmQtZm9udC1zaXplICogJGxpbmUtaGVpZ2h0LWJhc2UgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLWhlaWdodDogICAgICAgICAgICAgICAoJGZvbnQtc2l6ZS1iYXNlICogJGxpbmUtaGVpZ2h0LWJhc2UgKyAkbmF2LWxpbmstcGFkZGluZy15ICogMikgIWRlZmF1bHQ7XG4kbmF2YmFyLWJyYW5kLXBhZGRpbmcteTogICAgICAgICAgICAoJG5hdmJhci1icmFuZC1oZWlnaHQgLSAkbmF2LWxpbmstaGVpZ2h0KSAvIDIgIWRlZmF1bHQ7XG5cbiRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgICAuMjVyZW0gIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItcGFkZGluZy14OiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJG5hdmJhci10b2dnbGVyLWZvbnQtc2l6ZTogICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XG4kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAgJGJ0bi1ib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuXG4kbmF2YmFyLWRhcmstY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCR3aGl0ZSwuNSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstaG92ZXItY29sb3I6ICAgICAgICAgICByZ2JhKCR3aGl0ZSwuNzUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjogICAgICAgICAgcmdiYSgkd2hpdGUsMSkgIWRlZmF1bHQ7XG4kbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I6ICAgICAgICByZ2JhKCR3aGl0ZSwuMjUpICFkZWZhdWx0O1xuJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZzogc3RyLXJlcGxhY2UodXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWNvbG9yfScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0VcIiksIFwiI1wiLCBcIiUyM1wiKSAhZGVmYXVsdDtcbiRuYXZiYXItZGFyay10b2dnbGVyLWJvcmRlci1jb2xvcjogIHJnYmEoJHdoaXRlLC4xKSAhZGVmYXVsdDtcblxuJG5hdmJhci1saWdodC1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssLjUpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogICAgICAgICAgcmdiYSgkYmxhY2ssLjcpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICAgICAgICAgcmdiYSgkYmxhY2ssLjkpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjogICAgICAgcmdiYSgkYmxhY2ssLjMpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc6IHN0ci1yZXBsYWNlKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPScjeyRuYXZiYXItbGlnaHQtY29sb3J9JyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssLjEpICFkZWZhdWx0O1xuXG4vLyBQYWdpbmF0aW9uXG5cbiRwYWdpbmF0aW9uLXBhZGRpbmcteTogICAgICAgICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LXNtOiAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLXBhZGRpbmcteS1sZzogICAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tcGFkZGluZy14LWxnOiAgICAgICAgICAgICAxLjVyZW0gIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1saW5lLWhlaWdodDogICAgICAgICAgICAgIDEuMjUgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRsaW5rLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICNkZGQgIWRlZmF1bHQ7XG5cbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICRsaW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYmc6ICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgI2RkZCAhZGVmYXVsdDtcblxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogICAgICAgdGhlbWUtY29sb3IoXCJwcmltYXJ5XCIpICFkZWZhdWx0O1xuXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1jb2xvcjogICAgICAgICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1ib3JkZXItY29sb3I6ICAgICAjZGRkICFkZWZhdWx0O1xuXG5cbi8vIEp1bWJvdHJvblxuXG4kanVtYm90cm9uLXBhZGRpbmc6ICAgICAgICAgICAgICAycmVtICFkZWZhdWx0O1xuJGp1bWJvdHJvbi1iZzogICAgICAgICAgICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIENhcmRzXG5cbiRjYXJkLXNwYWNlci15OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRjYXJkLXNwYWNlci14OiAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItd2lkdGg6ICAgICAgICAxcHggIWRlZmF1bHQ7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcbiRjYXJkLWJvcmRlci1jb2xvcjogICAgICAgIHJnYmEoJGJsYWNrLC4xMjUpICFkZWZhdWx0O1xuJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1czogY2FsYygjeyRjYXJkLWJvcmRlci1yYWRpdXN9IC0gI3skY2FyZC1ib3JkZXItd2lkdGh9KSAhZGVmYXVsdDtcbiRjYXJkLWNhcC1iZzogICAgICAgICAgICAgIHJnYmEoJGJsYWNrLCAuMDMpICFkZWZhdWx0O1xuJGNhcmQtYmc6ICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4kY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4kY2FyZC1kZWNrLW1hcmdpbjogICAgICAgICAgKCRncmlkLWd1dHRlci13aWR0aCAvIDIpICFkZWZhdWx0O1xuXG4kY2FyZC1jb2x1bW5zLWNvdW50OiAgICAgICAgMyAhZGVmYXVsdDtcbiRjYXJkLWNvbHVtbnMtZ2FwOiAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGNhcmQtY29sdW1ucy1tYXJnaW46ICAgICAgICRjYXJkLXNwYWNlci15ICFkZWZhdWx0O1xuXG5cbi8vIFRvb2x0aXBzXG5cbiR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJHRvb2x0aXAtYmc6ICAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJHRvb2x0aXAtb3BhY2l0eTogICAgICAgICAgICAgLjkgIWRlZmF1bHQ7XG4kdG9vbHRpcC1wYWRkaW5nLXk6ICAgICAgICAgICAzcHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1wYWRkaW5nLXg6ICAgICAgICAgICA4cHggIWRlZmF1bHQ7XG4kdG9vbHRpcC1tYXJnaW46ICAgICAgICAgICAgICAwICFkZWZhdWx0O1xuXG5cbiR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgIDVweCAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWhlaWdodDogICAgICAgIDVweCAhZGVmYXVsdDtcbiR0b29sdGlwLWFycm93LWNvbG9yOiAgICAgICAgICR0b29sdGlwLWJnICFkZWZhdWx0O1xuXG5cbi8vIFBvcG92ZXJzXG5cbiRwb3BvdmVyLWlubmVyLXBhZGRpbmc6ICAgICAgICAgICAgICAgMXB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcG9wb3Zlci1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHBvcG92ZXItYm9yZGVyLWNvbG9yOiAgICAgICAgICAgICAgICByZ2JhKCRibGFjaywuMikgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib3gtc2hhZG93OiAgICAgICAgICAgICAgICAgIDAgNXB4IDEwcHggcmdiYSgkYmxhY2ssLjIpICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1oZWFkZXItYmc6ICAgICAgICAgICAgICAgICAgICBkYXJrZW4oJHBvcG92ZXItYmcsIDMlKSAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1jb2xvcjogICAgICAgICAgICAgICAgICRoZWFkaW5ncy1jb2xvciAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6ICAgICAgICAgICAgIDhweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXg6ICAgICAgICAgICAgIDE0cHggIWRlZmF1bHQ7XG5cbiRwb3BvdmVyLWJvZHktY29sb3I6ICAgICAgICAgICAgICAgJGJvZHktY29sb3IgIWRlZmF1bHQ7XG4kcG9wb3Zlci1ib2R5LXBhZGRpbmcteTogICAgICAgICAgIDlweCAhZGVmYXVsdDtcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAgICAgICAgICAgMTRweCAhZGVmYXVsdDtcblxuJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgICAxMHB4ICFkZWZhdWx0O1xuJHBvcG92ZXItYXJyb3ctaGVpZ2h0OiAgICAgICAgICAgICAgICA1cHggIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1jb2xvcjogICAgICAgICAgICAgICAgICRwb3BvdmVyLWJnICFkZWZhdWx0O1xuXG4kcG9wb3Zlci1hcnJvdy1vdXRlci13aWR0aDogICAgICAgICAgICgkcG9wb3Zlci1hcnJvdy13aWR0aCArIDFweCkgIWRlZmF1bHQ7XG4kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICAgIGZhZGUtaW4oJHBvcG92ZXItYm9yZGVyLWNvbG9yLCAuMDUpICFkZWZhdWx0O1xuXG5cbi8vIEJhZGdlc1xuXG4kYmFkZ2UtY29sb3I6ICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC1zaXplOiAgICAgICAgICAgICA3NSUgIWRlZmF1bHQ7XG4kYmFkZ2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcbiRiYWRnZS1wYWRkaW5nLXk6ICAgICAgICAgICAgIC4yNWVtICFkZWZhdWx0O1xuJGJhZGdlLXBhZGRpbmcteDogICAgICAgICAgICAgLjRlbSAhZGVmYXVsdDtcblxuJGJhZGdlLXBpbGwtcGFkZGluZy14OiAgICAgICAgLjZlbSAhZGVmYXVsdDtcbi8vIFVzZSBhIGhpZ2hlciB0aGFuIG5vcm1hbCB2YWx1ZSB0byBlbnN1cmUgY29tcGxldGVseSByb3VuZGVkIGVkZ2VzIHdoZW5cbi8vIGN1c3RvbWl6aW5nIHBhZGRpbmcgb3IgZm9udC1zaXplIG9uIGxhYmVscy5cbiRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXM6ICAgIDEwcmVtICFkZWZhdWx0O1xuXG5cbi8vIE1vZGFsc1xuXG4vLyBQYWRkaW5nIGFwcGxpZWQgdG8gdGhlIG1vZGFsIGJvZHlcbiRtb2RhbC1pbm5lci1wYWRkaW5nOiAgICAgICAgIDE1cHggIWRlZmF1bHQ7XG5cbiRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgIDEwcHggIWRlZmF1bHQ7XG4kbW9kYWwtZGlhbG9nLW1hcmdpbi15LXNtLXVwOiAzMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtdGl0bGUtbGluZS1oZWlnaHQ6ICAgICAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcblxuJG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLWNvbG9yOiAgICAgcmdiYSgkYmxhY2ssLjIpICFkZWZhdWx0O1xuJG1vZGFsLWNvbnRlbnQtYm9yZGVyLXdpZHRoOiAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3cteHM6ICAgIDAgM3B4IDlweCByZ2JhKCRibGFjaywuNSkgIWRlZmF1bHQ7XG4kbW9kYWwtY29udGVudC1ib3gtc2hhZG93LXNtLXVwOiAwIDVweCAxNXB4IHJnYmEoJGJsYWNrLC41KSAhZGVmYXVsdDtcblxuJG1vZGFsLWJhY2tkcm9wLWJnOiAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHk6ICAgICAgLjUgIWRlZmF1bHQ7XG4kbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvcjogICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kbW9kYWwtZm9vdGVyLWJvcmRlci1jb2xvcjogICAkbW9kYWwtaGVhZGVyLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoOiAgICRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aCAhZGVmYXVsdDtcbiRtb2RhbC1mb290ZXItYm9yZGVyLXdpZHRoOiAgICRtb2RhbC1oZWFkZXItYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJG1vZGFsLWhlYWRlci1wYWRkaW5nOiAgICAgICAgMTVweCAhZGVmYXVsdDtcblxuJG1vZGFsLWxnOiAgICAgICAgICAgICAgICAgICAgODAwcHggIWRlZmF1bHQ7XG4kbW9kYWwtbWQ6ICAgICAgICAgICAgICAgICAgICA1MDBweCAhZGVmYXVsdDtcbiRtb2RhbC1zbTogICAgICAgICAgICAgICAgICAgIDMwMHB4ICFkZWZhdWx0O1xuXG4kbW9kYWwtdHJhbnNpdGlvbjogICAgICAgICAgICB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG5cbi8vIEFsZXJ0c1xuLy9cbi8vIERlZmluZSBhbGVydCBjb2xvcnMsIGJvcmRlciByYWRpdXMsIGFuZCBwYWRkaW5nLlxuXG4kYWxlcnQtcGFkZGluZy15OiAgICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kYWxlcnQtcGFkZGluZy14OiAgICAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xuJGFsZXJ0LW1hcmdpbi1ib3R0b206ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRhbGVydC1ib3JkZXItcmFkaXVzOiAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJGFsZXJ0LWxpbmstZm9udC13ZWlnaHQ6ICAgICAgJGZvbnQtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuXG5cbi8vIFByb2dyZXNzIGJhcnNcblxuJHByb2dyZXNzLWhlaWdodDogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xuJHByb2dyZXNzLWZvbnQtc2l6ZTogICAgICAgICAgICAuNzVyZW0gIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmc6ICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYm94LXNoYWRvdzogICAgICAgICAgIGluc2V0IDAgLjFyZW0gLjFyZW0gcmdiYSgkYmxhY2ssLjEpICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3MtYmFyLWJnOiAgICAgICAgICAgICAgIHRoZW1lLWNvbG9yKFwicHJpbWFyeVwiKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZzogMXMgbGluZWFyIGluZmluaXRlICFkZWZhdWx0O1xuJHByb2dyZXNzLWJhci10cmFuc2l0aW9uOiAgICAgICB3aWR0aCAuNnMgZWFzZSAhZGVmYXVsdDtcblxuLy8gTGlzdCBncm91cFxuXG4kbGlzdC1ncm91cC1iZzogICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICAgICAgICByZ2JhKCRibGFjaywuMTI1KSAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWJvcmRlci13aWR0aDogICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXk6ICAgICAgLjc1cmVtICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtaXRlbS1wYWRkaW5nLXg6ICAgICAgMS4yNXJlbSAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtaG92ZXItYmc6ICAgICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3RpdmUtY29sb3I6ICAgICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGl2ZS1ib3JkZXItY29sb3I6ICAgICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xuXG4kbGlzdC1ncm91cC1kaXNhYmxlZC1jb2xvcjogICAgICAkZ3JheS02MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1kaXNhYmxlZC1iZzogICAgICAgICAkbGlzdC1ncm91cC1iZyAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAgICAgICAgICAgICAkZ3JheS03MDAgIWRlZmF1bHQ7XG4kbGlzdC1ncm91cC1hY3Rpb24taG92ZXItY29sb3I6ICAgICAgICRsaXN0LWdyb3VwLWFjdGlvbi1jb2xvciAhZGVmYXVsdDtcblxuJGxpc3QtZ3JvdXAtYWN0aW9uLWFjdGl2ZS1jb2xvcjogICAgICAkYm9keS1jb2xvciAhZGVmYXVsdDtcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICAgICAgICAgJGdyYXktMjAwICFkZWZhdWx0O1xuXG5cbi8vIEltYWdlIHRodW1ibmFpbHNcblxuJHRodW1ibmFpbC1wYWRkaW5nOiAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xuJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XG4kdGh1bWJuYWlsLWJvcmRlci13aWR0aDogICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3JkZXItY29sb3I6ICAgICAgI2RkZCAhZGVmYXVsdDtcbiR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xuJHRodW1ibmFpbC1ib3gtc2hhZG93OiAgICAgICAgMCAxcHggMnB4IHJnYmEoJGJsYWNrLC4wNzUpICFkZWZhdWx0O1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiAgICAgICAgYWxsIC4ycyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuXG4vLyBGaWd1cmVzXG5cbiRmaWd1cmUtY2FwdGlvbi1mb250LXNpemU6IDkwJSAhZGVmYXVsdDtcbiRmaWd1cmUtY2FwdGlvbi1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcblxuXG4vLyBCcmVhZGNydW1ic1xuXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLXBhZGRpbmcteDogICAgICAgICAgMXJlbSAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWl0ZW0tcGFkZGluZzogICAgICAgLjVyZW0gIWRlZmF1bHQ7XG5cbiRicmVhZGNydW1iLW1hcmdpbi1ib3R0b206ICAgICAgMXJlbSAhZGVmYXVsdDtcblxuJGJyZWFkY3J1bWItYmc6ICAgICAgICAgICAgICAgICAkZ3JheS0yMDAgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcbiRicmVhZGNydW1iLWFjdGl2ZS1jb2xvcjogICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItZGl2aWRlcjogICAgICAgICAgICBcIi9cIiAhZGVmYXVsdDtcblxuXG4vLyBDYXJvdXNlbFxuXG4kY2Fyb3VzZWwtY29udHJvbC1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgICAgICAgICAgIDE1JSAhZGVmYXVsdDtcbiRjYXJvdXNlbC1jb250cm9sLW9wYWNpdHk6ICAgICAgICAgICAgICAgICAgICAuNSAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWluZGljYXRvci13aWR0aDogICAgICAgICAgICAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtaW5kaWNhdG9yLWhlaWdodDogICAgICAgICAgICAgICAgICAgM3B4ICFkZWZhdWx0O1xuJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIDNweCAhZGVmYXVsdDtcbiRjYXJvdXNlbC1pbmRpY2F0b3ItYWN0aXZlLWJnOiAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC1jYXB0aW9uLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICA3MCUgIWRlZmF1bHQ7XG4kY2Fyb3VzZWwtY2FwdGlvbi1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xuXG4kY2Fyb3VzZWwtY29udHJvbC1pY29uLXdpZHRoOiAgICAgICAgICAgICAgICAgMjBweCAhZGVmYXVsdDtcblxuJGNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLWJnOiBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTQgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRVwiKSwgXCIjXCIsIFwiJTIzXCIpICFkZWZhdWx0O1xuJGNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uLWJnOiBzdHItcmVwbGFjZSh1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyN7JGNhcm91c2VsLWNvbnRyb2wtY29sb3J9JyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTEuNSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFXCIpLCBcIiNcIiwgXCIlMjNcIikgIWRlZmF1bHQ7XG5cbiRjYXJvdXNlbC10cmFuc2l0aW9uOiAgICAgICAgICAgdHJhbnNmb3JtIC42cyBlYXNlICFkZWZhdWx0O1xuXG5cbi8vIENsb3NlXG5cbiRjbG9zZS1mb250LXNpemU6ICAgICAgICAgICAgICRmb250LXNpemUtYmFzZSAqIDEuNSAhZGVmYXVsdDtcbiRjbG9zZS1mb250LXdlaWdodDogICAgICAgICAgICRmb250LXdlaWdodC1ib2xkICFkZWZhdWx0O1xuJGNsb3NlLWNvbG9yOiAgICAgICAgICAgICAgICAgJGJsYWNrICFkZWZhdWx0O1xuJGNsb3NlLXRleHQtc2hhZG93OiAgICAgICAgICAgMCAxcHggMCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vIENvZGVcblxuJGNvZGUtZm9udC1zaXplOiAgICAgICAgICAgICAgOTAlICFkZWZhdWx0O1xuJGNvZGUtcGFkZGluZy15OiAgICAgICAgICAgICAgLjJyZW0gIWRlZmF1bHQ7XG4kY29kZS1wYWRkaW5nLXg6ICAgICAgICAgICAgICAuNHJlbSAhZGVmYXVsdDtcbiRjb2RlLWNvbG9yOiAgICAgICAgICAgICAgICAgICNiZDQxNDcgIWRlZmF1bHQ7XG4kY29kZS1iZzogICAgICAgICAgICAgICAgICAgICAkZ3JheS0xMDAgIWRlZmF1bHQ7XG5cbiRrYmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcbiRrYmQtYmc6ICAgICAgICAgICAgICAgICAgICAgICRncmF5LTkwMCAhZGVmYXVsdDtcblxuJHByZS1jb2xvcjogICAgICAgICAgICAgICAgICAgJGdyYXktOTAwICFkZWZhdWx0O1xuJHByZS1zY3JvbGxhYmxlLW1heC1oZWlnaHQ6ICAgMzQwcHggIWRlZmF1bHQ7XG4iLCJAbWVkaWEgcHJpbnQge1xuICAqLFxuICAqOjpiZWZvcmUsXG4gICo6OmFmdGVyIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICBhLFxuICBhOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGFiYnJbdGl0bGVdOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiOyB9XG4gIHByZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwICFpbXBvcnRhbnQ7IH1cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzOyB9XG4gIGgyLFxuICBoMyB7XG4gICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cbiAgLm5hdmJhciB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAuYmFkZ2Uge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7IH1cbiAgLnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7IH1cbiAgICAudGFibGUgdGQsXG4gICAgLnRhYmxlIHRoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxuICAudGFibGUtYm9yZGVyZWQgdGgsXG4gIC50YWJsZS1ib3JkZXJlZCB0ZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZCAhaW1wb3J0YW50OyB9IH1cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG5ALW1zLXZpZXdwb3J0IHtcbiAgd2lkdGg6IGRldmljZS13aWR0aDsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGlhbG9nLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5bdGFiaW5kZXg9XCItMVwiXTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgfVxuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfVxuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG5hYmJyW3RpdGxlXSxcbmFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0ge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBjdXJzb3I6IGhlbHA7XG4gIGJvcmRlci1ib3R0b206IDA7IH1cblxuYWRkcmVzcyB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cblxub2wsXG51bCxcbmRsIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7IH1cblxuZHQge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG5kZCB7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTsgfVxuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7IH1cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTsgfVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLS4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLS41ZW07IH1cblxuYSB7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyB9XG4gIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMDA1NmIzO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cywgYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7XG4gICAgb3V0bGluZTogMDsgfVxuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07IH1cblxucHJlIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTsgfVxuXG5pbWcge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBib3JkZXItc3R5bGU6IG5vbmU7IH1cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbmEsXG5hcmVhLFxuYnV0dG9uLFxuW3JvbGU9XCJidXR0b25cIl0sXG5pbnB1dCxcbmxhYmVsLFxuc2VsZWN0LFxuc3VtbWFyeSxcbnRleHRhcmVhIHtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB9XG5cbmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNzVyZW07XG4gIGNvbG9yOiAjODY4ZTk2O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjYXB0aW9uLXNpZGU6IGJvdHRvbTsgfVxuXG50aCB7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IH1cblxubGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtOyB9XG5cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjsgfVxuXG5pbnB1dCxcbmJ1dHRvbixcbnNlbGVjdCxcbm9wdGdyb3VwLFxudGV4dGFyZWEge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9XG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyB9XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyB9XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXRbdHlwZT1cImRhdGVcIl0sXG5pbnB1dFt0eXBlPVwidGltZVwiXSxcbmlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbmlucHV0W3R5cGU9XCJtb250aFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDsgfVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICByZXNpemU6IHZlcnRpY2FsOyB9XG5cbmZpZWxkc2V0IHtcbiAgbWluLXdpZHRoOiAwO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDsgfVxuXG5sZWdlbmQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IH1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgfVxuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgZm9udDogaW5oZXJpdDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IH1cblxub3V0cHV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG4uaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgY29sb3I6IGluaGVyaXQ7IH1cblxuaDEsIC5oMSB7XG4gIGZvbnQtc2l6ZTogMi41cmVtOyB9XG5cbmgyLCAuaDIge1xuICBmb250LXNpemU6IDJyZW07IH1cblxuaDMsIC5oMyB7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTsgfVxuXG5oNCwgLmg0IHtcbiAgZm9udC1zaXplOiAxLjVyZW07IH1cblxuaDUsIC5oNSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuXG5oNiwgLmg2IHtcbiAgZm9udC1zaXplOiAxcmVtOyB9XG5cbi5sZWFkIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBmb250LXdlaWdodDogMzAwOyB9XG5cbi5kaXNwbGF5LTEge1xuICBmb250LXNpemU6IDZyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7IH1cblxuLmRpc3BsYXktMiB7XG4gIGZvbnQtc2l6ZTogNS41cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMS4xOyB9XG5cbi5kaXNwbGF5LTMge1xuICBmb250LXNpemU6IDQuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTsgfVxuXG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAzLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7IH1cblxuaHIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cblxuc21hbGwsXG4uc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfVxuXG5tYXJrLFxuLm1hcmsge1xuICBwYWRkaW5nOiAwLjJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsgfVxuXG4ubGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4ubGlzdC1pbmxpbmUge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuLmluaXRpYWxpc20ge1xuICBmb250LXNpemU6IDkwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuXG4uYmxvY2txdW90ZS1mb290ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiA4MCU7XG4gIGNvbG9yOiAjODY4ZTk2OyB9XG4gIC5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAxNCBcXDAwQTBcIjsgfVxuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBcIlNGTW9uby1SZWd1bGFyXCIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZTsgfVxuXG5jb2RlIHtcbiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiAjYmQ0MTQ3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG4gIGEgPiBjb2RlIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7IH1cblxua2JkIHtcbiAgcGFkZGluZzogMC4ycmVtIDAuNHJlbTtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07IH1cbiAga2JkIGtiZCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBjb2xvcjogIzIxMjUyOTsgfVxuICBwcmUgY29kZSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAzNDBweDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsOyB9XG5cbi5jb250YWluZXIge1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA1NDBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA3MjBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC5jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiA5NjBweDsgfSB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuY29udGFpbmVyIHtcbiAgICAgIG1heC13aWR0aDogMTE0MHB4OyB9IH1cblxuLmNvbnRhaW5lci1mbHVpZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDsgfVxuXG4ubm8tZ3V0dGVycyB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgLm5vLWd1dHRlcnMgPiAuY29sLFxuICAubm8tZ3V0dGVycyA+IFtjbGFzcyo9XCJjb2wtXCJdIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfVxuXG4uY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLFxuLmNvbC1hdXRvLCAuY29sLXNtLTEsIC5jb2wtc20tMiwgLmNvbC1zbS0zLCAuY29sLXNtLTQsIC5jb2wtc20tNSwgLmNvbC1zbS02LCAuY29sLXNtLTcsIC5jb2wtc20tOCwgLmNvbC1zbS05LCAuY29sLXNtLTEwLCAuY29sLXNtLTExLCAuY29sLXNtLTEyLCAuY29sLXNtLFxuLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLFxuLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLFxuLmNvbC1sZy1hdXRvLCAuY29sLXhsLTEsIC5jb2wteGwtMiwgLmNvbC14bC0zLCAuY29sLXhsLTQsIC5jb2wteGwtNSwgLmNvbC14bC02LCAuY29sLXhsLTcsIC5jb2wteGwtOCwgLmNvbC14bC05LCAuY29sLXhsLTEwLCAuY29sLXhsLTExLCAuY29sLXhsLTEyLCAuY29sLXhsLFxuLmNvbC14bC1hdXRvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7IH1cblxuLmNvbCB7XG4gIGZsZXgtYmFzaXM6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi5jb2wtYXV0byB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiBub25lOyB9XG5cbi5jb2wtMSB7XG4gIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxuXG4uY29sLTIge1xuICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuXG4uY29sLTMge1xuICBmbGV4OiAwIDAgMjUlO1xuICBtYXgtd2lkdGg6IDI1JTsgfVxuXG4uY29sLTQge1xuICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxuXG4uY29sLTUge1xuICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuXG4uY29sLTYge1xuICBmbGV4OiAwIDAgNTAlO1xuICBtYXgtd2lkdGg6IDUwJTsgfVxuXG4uY29sLTcge1xuICBmbGV4OiAwIDAgNTguMzMzMzMlO1xuICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxuXG4uY29sLTgge1xuICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuXG4uY29sLTkge1xuICBmbGV4OiAwIDAgNzUlO1xuICBtYXgtd2lkdGg6IDc1JTsgfVxuXG4uY29sLTEwIHtcbiAgZmxleDogMCAwIDgzLjMzMzMzJTtcbiAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cblxuLmNvbC0xMSB7XG4gIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG5cbi5jb2wtMTIge1xuICBmbGV4OiAwIDAgMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi5vcmRlci0xIHtcbiAgb3JkZXI6IDE7IH1cblxuLm9yZGVyLTIge1xuICBvcmRlcjogMjsgfVxuXG4ub3JkZXItMyB7XG4gIG9yZGVyOiAzOyB9XG5cbi5vcmRlci00IHtcbiAgb3JkZXI6IDQ7IH1cblxuLm9yZGVyLTUge1xuICBvcmRlcjogNTsgfVxuXG4ub3JkZXItNiB7XG4gIG9yZGVyOiA2OyB9XG5cbi5vcmRlci03IHtcbiAgb3JkZXI6IDc7IH1cblxuLm9yZGVyLTgge1xuICBvcmRlcjogODsgfVxuXG4ub3JkZXItOSB7XG4gIG9yZGVyOiA5OyB9XG5cbi5vcmRlci0xMCB7XG4gIG9yZGVyOiAxMDsgfVxuXG4ub3JkZXItMTEge1xuICBvcmRlcjogMTE7IH1cblxuLm9yZGVyLTEyIHtcbiAgb3JkZXI6IDEyOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY29sLXNtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgLmNvbC1zbS1hdXRvIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IG5vbmU7IH1cbiAgLmNvbC1zbS0xIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfVxuICAuY29sLXNtLTIge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH1cbiAgLmNvbC1zbS0zIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlOyB9XG4gIC5jb2wtc20tNCB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfVxuICAuY29sLXNtLTUge1xuICAgIGZsZXg6IDAgMCA0MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH1cbiAgLmNvbC1zbS02IHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlOyB9XG4gIC5jb2wtc20tNyB7XG4gICAgZmxleDogMCAwIDU4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfVxuICAuY29sLXNtLTgge1xuICAgIGZsZXg6IDAgMCA2Ni42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH1cbiAgLmNvbC1zbS05IHtcbiAgICBmbGV4OiAwIDAgNzUlO1xuICAgIG1heC13aWR0aDogNzUlOyB9XG4gIC5jb2wtc20tMTAge1xuICAgIGZsZXg6IDAgMCA4My4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH1cbiAgLmNvbC1zbS0xMSB7XG4gICAgZmxleDogMCAwIDkxLjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfVxuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7IH1cbiAgLm9yZGVyLXNtLTEge1xuICAgIG9yZGVyOiAxOyB9XG4gIC5vcmRlci1zbS0yIHtcbiAgICBvcmRlcjogMjsgfVxuICAub3JkZXItc20tMyB7XG4gICAgb3JkZXI6IDM7IH1cbiAgLm9yZGVyLXNtLTQge1xuICAgIG9yZGVyOiA0OyB9XG4gIC5vcmRlci1zbS01IHtcbiAgICBvcmRlcjogNTsgfVxuICAub3JkZXItc20tNiB7XG4gICAgb3JkZXI6IDY7IH1cbiAgLm9yZGVyLXNtLTcge1xuICAgIG9yZGVyOiA3OyB9XG4gIC5vcmRlci1zbS04IHtcbiAgICBvcmRlcjogODsgfVxuICAub3JkZXItc20tOSB7XG4gICAgb3JkZXI6IDk7IH1cbiAgLm9yZGVyLXNtLTEwIHtcbiAgICBvcmRlcjogMTA7IH1cbiAgLm9yZGVyLXNtLTExIHtcbiAgICBvcmRlcjogMTE7IH1cbiAgLm9yZGVyLXNtLTEyIHtcbiAgICBvcmRlcjogMTI7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbC1tZCB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5jb2wtbWQtYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiBub25lOyB9XG4gIC5jb2wtbWQtMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC1tZC0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG4gIC5jb2wtbWQtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLW1kLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC1tZC01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG4gIC5jb2wtbWQtNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLW1kLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC1tZC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG4gIC5jb2wtbWQtOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLW1kLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wtbWQtMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmNvbC1tZC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5vcmRlci1tZC0xIHtcbiAgICBvcmRlcjogMTsgfVxuICAub3JkZXItbWQtMiB7XG4gICAgb3JkZXI6IDI7IH1cbiAgLm9yZGVyLW1kLTMge1xuICAgIG9yZGVyOiAzOyB9XG4gIC5vcmRlci1tZC00IHtcbiAgICBvcmRlcjogNDsgfVxuICAub3JkZXItbWQtNSB7XG4gICAgb3JkZXI6IDU7IH1cbiAgLm9yZGVyLW1kLTYge1xuICAgIG9yZGVyOiA2OyB9XG4gIC5vcmRlci1tZC03IHtcbiAgICBvcmRlcjogNzsgfVxuICAub3JkZXItbWQtOCB7XG4gICAgb3JkZXI6IDg7IH1cbiAgLm9yZGVyLW1kLTkge1xuICAgIG9yZGVyOiA5OyB9XG4gIC5vcmRlci1tZC0xMCB7XG4gICAgb3JkZXI6IDEwOyB9XG4gIC5vcmRlci1tZC0xMSB7XG4gICAgb3JkZXI6IDExOyB9XG4gIC5vcmRlci1tZC0xMiB7XG4gICAgb3JkZXI6IDEyOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jb2wtbGcge1xuICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuICAuY29sLWxnLWF1dG8ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogbm9uZTsgfVxuICAuY29sLWxnLTEge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlOyB9XG4gIC5jb2wtbGctMiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfVxuICAuY29sLWxnLTMge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7IH1cbiAgLmNvbC1sZy00IHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlOyB9XG4gIC5jb2wtbGctNSB7XG4gICAgZmxleDogMCAwIDQxLjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfVxuICAuY29sLWxnLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7IH1cbiAgLmNvbC1sZy03IHtcbiAgICBmbGV4OiAwIDAgNTguMzMzMzMlO1xuICAgIG1heC13aWR0aDogNTguMzMzMzMlOyB9XG4gIC5jb2wtbGctOCB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfVxuICAuY29sLWxnLTkge1xuICAgIGZsZXg6IDAgMCA3NSU7XG4gICAgbWF4LXdpZHRoOiA3NSU7IH1cbiAgLmNvbC1sZy0xMCB7XG4gICAgZmxleDogMCAwIDgzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfVxuICAuY29sLWxnLTExIHtcbiAgICBmbGV4OiAwIDAgOTEuNjY2NjclO1xuICAgIG1heC13aWR0aDogOTEuNjY2NjclOyB9XG4gIC5jb2wtbGctMTIge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTsgfVxuICAub3JkZXItbGctMSB7XG4gICAgb3JkZXI6IDE7IH1cbiAgLm9yZGVyLWxnLTIge1xuICAgIG9yZGVyOiAyOyB9XG4gIC5vcmRlci1sZy0zIHtcbiAgICBvcmRlcjogMzsgfVxuICAub3JkZXItbGctNCB7XG4gICAgb3JkZXI6IDQ7IH1cbiAgLm9yZGVyLWxnLTUge1xuICAgIG9yZGVyOiA1OyB9XG4gIC5vcmRlci1sZy02IHtcbiAgICBvcmRlcjogNjsgfVxuICAub3JkZXItbGctNyB7XG4gICAgb3JkZXI6IDc7IH1cbiAgLm9yZGVyLWxnLTgge1xuICAgIG9yZGVyOiA4OyB9XG4gIC5vcmRlci1sZy05IHtcbiAgICBvcmRlcjogOTsgfVxuICAub3JkZXItbGctMTAge1xuICAgIG9yZGVyOiAxMDsgfVxuICAub3JkZXItbGctMTEge1xuICAgIG9yZGVyOiAxMTsgfVxuICAub3JkZXItbGctMTIge1xuICAgIG9yZGVyOiAxMjsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbC14bCB7XG4gICAgZmxleC1iYXNpczogMDtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5jb2wteGwtYXV0byB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiBub25lOyB9XG4gIC5jb2wteGwtMSB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7IH1cbiAgLmNvbC14bC0yIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclOyB9XG4gIC5jb2wteGwtMyB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTsgfVxuICAuY29sLXhsLTQge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLmNvbC14bC01IHtcbiAgICBmbGV4OiAwIDAgNDEuNjY2NjclO1xuICAgIG1heC13aWR0aDogNDEuNjY2NjclOyB9XG4gIC5jb2wteGwtNiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTsgfVxuICAuY29sLXhsLTcge1xuICAgIGZsZXg6IDAgMCA1OC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLmNvbC14bC04IHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjclOyB9XG4gIC5jb2wteGwtOSB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTsgfVxuICAuY29sLXhsLTEwIHtcbiAgICBmbGV4OiAwIDAgODMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogODMuMzMzMzMlOyB9XG4gIC5jb2wteGwtMTEge1xuICAgIGZsZXg6IDAgMCA5MS42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gIC5vcmRlci14bC0xIHtcbiAgICBvcmRlcjogMTsgfVxuICAub3JkZXIteGwtMiB7XG4gICAgb3JkZXI6IDI7IH1cbiAgLm9yZGVyLXhsLTMge1xuICAgIG9yZGVyOiAzOyB9XG4gIC5vcmRlci14bC00IHtcbiAgICBvcmRlcjogNDsgfVxuICAub3JkZXIteGwtNSB7XG4gICAgb3JkZXI6IDU7IH1cbiAgLm9yZGVyLXhsLTYge1xuICAgIG9yZGVyOiA2OyB9XG4gIC5vcmRlci14bC03IHtcbiAgICBvcmRlcjogNzsgfVxuICAub3JkZXIteGwtOCB7XG4gICAgb3JkZXI6IDg7IH1cbiAgLm9yZGVyLXhsLTkge1xuICAgIG9yZGVyOiA5OyB9XG4gIC5vcmRlci14bC0xMCB7XG4gICAgb3JkZXI6IDEwOyB9XG4gIC5vcmRlci14bC0xMSB7XG4gICAgb3JkZXI6IDExOyB9XG4gIC5vcmRlci14bC0xMiB7XG4gICAgb3JkZXI6IDEyOyB9IH1cblxuLnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlIHRoLFxuICAudGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsgfVxuICAudGFibGUgdGhlYWQgdGgge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlIHRib2R5ICsgdGJvZHkge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZTllY2VmOyB9XG4gIC50YWJsZSAudGFibGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuLnRhYmxlLXNtIHRoLFxuLnRhYmxlLXNtIHRkIHtcbiAgcGFkZGluZzogMC4zcmVtOyB9XG5cbi50YWJsZS1ib3JkZXJlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlLWJvcmRlcmVkIHRoLFxuICAudGFibGUtYm9yZGVyZWQgdGQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7IH1cbiAgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRoLFxuICAudGFibGUtYm9yZGVyZWQgdGhlYWQgdGQge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsgfVxuXG4udGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTsgfVxuXG4udGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuXG4udGFibGUtcHJpbWFyeSxcbi50YWJsZS1wcmltYXJ5ID4gdGgsXG4udGFibGUtcHJpbWFyeSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsgfVxuXG4udGFibGUtc2Vjb25kYXJ5LFxuLnRhYmxlLXNlY29uZGFyeSA+IHRoLFxuLnRhYmxlLXNlY29uZGFyeSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGZlMjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmQyZDY7IH1cbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0ZCxcbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkNjsgfVxuXG4udGFibGUtc3VjY2Vzcyxcbi50YWJsZS1zdWNjZXNzID4gdGgsXG4udGFibGUtc3VjY2VzcyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsgfVxuXG4udGFibGUtaW5mbyxcbi50YWJsZS1pbmZvID4gdGgsXG4udGFibGUtaW5mbyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1OyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsgfVxuXG4udGFibGUtd2FybmluZyxcbi50YWJsZS13YXJuaW5nID4gdGgsXG4udGFibGUtd2FybmluZyA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZThhMTsgfVxuXG4udGFibGUtZGFuZ2VyLFxuLnRhYmxlLWRhbmdlciA+IHRoLFxuLnRhYmxlLWRhbmdlciA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1YzZjYjsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmMWIwYjc7IH1cbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCxcbiAgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsgfVxuXG4udGFibGUtbGlnaHQsXG4udGFibGUtbGlnaHQgPiB0aCxcbi50YWJsZS1saWdodCA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsgfVxuICAudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsXG4gIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsgfVxuXG4udGFibGUtZGFyayxcbi50YWJsZS1kYXJrID4gdGgsXG4udGFibGUtZGFyayA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsgfVxuXG4udGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOyB9XG4gIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZTsgfVxuXG4udGFibGUtYWN0aXZlLFxuLnRhYmxlLWFjdGl2ZSA+IHRoLFxuLnRhYmxlLWFjdGl2ZSA+IHRkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA3NSk7IH1cblxuLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuICAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLFxuICAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsgfVxuXG4udGhlYWQtaW52ZXJzZSB0aCB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OyB9XG5cbi50aGVhZC1kZWZhdWx0IHRoIHtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cblxuLnRhYmxlLWludmVyc2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsgfVxuICAudGFibGUtaW52ZXJzZSB0aCxcbiAgLnRhYmxlLWludmVyc2UgdGQsXG4gIC50YWJsZS1pbnZlcnNlIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6ICMzMjM4M2U7IH1cbiAgLnRhYmxlLWludmVyc2UudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDsgfVxuICAudGFibGUtaW52ZXJzZS50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7IH1cbiAgLnRhYmxlLWludmVyc2UudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAudGFibGUtcmVzcG9uc2l2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsgfVxuICAgIC50YWJsZS1yZXNwb25zaXZlLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgIGJvcmRlcjogMDsgfSB9XG5cbi5idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OyB9XG4gIC5idG46Zm9jdXMsIC5idG46aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAuYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsgfVxuICAuYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNjU7IH1cbiAgLmJ0bjphY3RpdmUsIC5idG4uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyB9XG5cbmEuYnRuLmRpc2FibGVkLFxuZmllbGRzZXRbZGlzYWJsZWRdIGEuYnRuIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjsgfVxuICAuYnRuLXByaW1hcnk6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDY5ZDk7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjOyB9XG4gIC5idG4tcHJpbWFyeTpmb2N1cywgLmJ0bi1wcmltYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxuICAuYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cbiAgLmJ0bi1wcmltYXJ5OmFjdGl2ZSwgLmJ0bi1wcmltYXJ5LmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OWQ5O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA2MmNjOyB9XG5cbi5idG4tc2Vjb25kYXJ5IHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTY7XG4gIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxuICAuYnRuLXNlY29uZGFyeTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzcyN2I4NDtcbiAgICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7IH1cbiAgLmJ0bi1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tc2Vjb25kYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxMzQsIDE0MiwgMTUwLCAwLjUpOyB9XG4gIC5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjtcbiAgICBib3JkZXItY29sb3I6ICM4NjhlOTY7IH1cbiAgLmJ0bi1zZWNvbmRhcnk6YWN0aXZlLCAuYnRuLXNlY29uZGFyeS5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzI3Yjg0O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOyB9XG5cbi5idG4tc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICBib3JkZXItY29sb3I6ICMyOGE3NDU7IH1cbiAgLmJ0bi1zdWNjZXNzOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4O1xuICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDsgfVxuICAuYnRuLXN1Y2Nlc3M6Zm9jdXMsIC5idG4tc3VjY2Vzcy5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNDAsIDE2NywgNjksIDAuNSk7IH1cbiAgLmJ0bi1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLXN1Y2Nlc3M6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5idG4tc3VjY2VzczphY3RpdmUsIC5idG4tc3VjY2Vzcy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDsgfVxuXG4uYnRuLWluZm8ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4OyB9XG4gIC5idG4taW5mbzpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjtcbiAgICBib3JkZXItY29sb3I6ICMxMTdhOGI7IH1cbiAgLmJ0bi1pbmZvOmZvY3VzLCAuYnRuLWluZm8uZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxuICAuYnRuLWluZm8uZGlzYWJsZWQsIC5idG4taW5mbzpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cbiAgLmJ0bi1pbmZvOmFjdGl2ZSwgLmJ0bi1pbmZvLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTM4NDk2O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiAjMTE3YThiOyB9XG5cbi5idG4td2FybmluZyB7XG4gIGNvbG9yOiAjMTExO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3O1xuICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJ0bi13YXJuaW5nOmhvdmVyIHtcbiAgICBjb2xvcjogIzExMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBhODAwO1xuICAgIGJvcmRlci1jb2xvcjogI2QzOWUwMDsgfVxuICAuYnRuLXdhcm5pbmc6Zm9jdXMsIC5idG4td2FybmluZy5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjU1LCAxOTMsIDcsIDAuNSk7IH1cbiAgLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7XG4gICAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3OyB9XG4gIC5idG4td2FybmluZzphY3RpdmUsIC5idG4td2FybmluZy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJvcmRlci1jb2xvcjogI2QzOWUwMDsgfVxuXG4uYnRuLWRhbmdlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICBib3JkZXItY29sb3I6ICNkYzM1NDU7IH1cbiAgLmJ0bi1kYW5nZXI6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gICAgYm9yZGVyLWNvbG9yOiAjYmQyMTMwOyB9XG4gIC5idG4tZGFuZ2VyOmZvY3VzLCAuYnRuLWRhbmdlci5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjIwLCA1MywgNjksIDAuNSk7IH1cbiAgLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1O1xuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxuICAuYnRuLWRhbmdlcjphY3RpdmUsIC5idG4tZGFuZ2VyLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjODIzMzM7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNiZDIxMzA7IH1cblxuLmJ0bi1saWdodCB7XG4gIGNvbG9yOiAjMTExO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJ0bi1saWdodDpob3ZlciB7XG4gICAgY29sb3I6ICMxMTE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTZlYTtcbiAgICBib3JkZXItY29sb3I6ICNkYWUwZTU7IH1cbiAgLmJ0bi1saWdodDpmb2N1cywgLmJ0bi1saWdodC5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsgfVxuICAuYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuICAuYnRuLWxpZ2h0OmFjdGl2ZSwgLmJ0bi1saWdodC5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNkYWUwZTU7IH1cblxuLmJ0bi1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLWRhcms6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gICAgYm9yZGVyLWNvbG9yOiAjMWQyMTI0OyB9XG4gIC5idG4tZGFyazpmb2N1cywgLmJ0bi1kYXJrLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1MiwgNTgsIDY0LCAwLjUpOyB9XG4gIC5idG4tZGFyay5kaXNhYmxlZCwgLmJ0bi1kYXJrOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICAgIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLWRhcms6YWN0aXZlLCAuYnRuLWRhcmsuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICMxZDIxMjQ7IH1cblxuLmJ0bi1vdXRsaW5lLXByaW1hcnkge1xuICBjb2xvcjogIzAwN2JmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZjsgfVxuICAuYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cbiAgLmJ0bi1vdXRsaW5lLXByaW1hcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5LmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjMDA3YmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1wcmltYXJ5OmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXByaW1hcnkuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7IH1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gIGNvbG9yOiAjODY4ZTk2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2OyB9XG4gIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTY7XG4gICAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2OyB9XG4gIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDEzNCwgMTQyLCAxNTAsIDAuNSk7IH1cbiAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODY4ZTk2O1xuICAgIGJvcmRlci1jb2xvcjogIzg2OGU5NjsgfVxuXG4uYnRuLW91dGxpbmUtc3VjY2VzcyB7XG4gIGNvbG9yOiAjMjhhNzQ1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTsgfVxuICAuYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOyB9XG4gIC5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICMyOGE3NDU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6YWN0aXZlLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5hY3RpdmUsXG4gIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1O1xuICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTsgfVxuXG4uYnRuLW91dGxpbmUtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4OyB9XG4gIC5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4O1xuICAgIGJvcmRlci1jb2xvcjogIzE3YTJiODsgfVxuICAuYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIzLCAxNjIsIDE4NCwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtaW5mby5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWluZm86ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjMTdhMmI4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1pbmZvOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm8uYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODtcbiAgICBib3JkZXItY29sb3I6ICMxN2EyYjg7IH1cblxuLmJ0bi1vdXRsaW5lLXdhcm5pbmcge1xuICBjb2xvcjogI2ZmYzEwNztcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsgfVxuICAuYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNTUsIDE5MywgNywgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjZmZjMTA3O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS13YXJuaW5nOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuYWN0aXZlLFxuICAuc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNztcbiAgICBib3JkZXItY29sb3I6ICNmZmMxMDc7IH1cblxuLmJ0bi1vdXRsaW5lLWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7XG4gICAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIyMCwgNTMsIDY5LCAwLjUpOyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXIuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYW5nZXI6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjZGMzNTQ1O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gIC5idG4tb3V0bGluZS1kYW5nZXI6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTtcbiAgICBib3JkZXItY29sb3I6ICNkYzM1NDU7IH1cblxuLmJ0bi1vdXRsaW5lLWxpZ2h0IHtcbiAgY29sb3I6ICNmOGY5ZmE7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBib3JkZXItY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuICAuYnRuLW91dGxpbmUtbGlnaHQ6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodC5mb2N1cyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsgfVxuICAuYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1saWdodDpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICNmOGY5ZmE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1vdXRsaW5lLWxpZ2h0OmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWxpZ2h0LmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO1xuICAgIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsgfVxuXG4uYnRuLW91dGxpbmUtZGFyayB7XG4gIGNvbG9yOiAjMzQzYTQwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOyB9XG4gIC5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwO1xuICAgIGJvcmRlci1jb2xvcjogIzM0M2E0MDsgfVxuICAuYnRuLW91dGxpbmUtZGFyazpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhcmsuZm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7IH1cbiAgLmJ0bi1vdXRsaW5lLWRhcmsuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYXJrOmRpc2FibGVkIHtcbiAgICBjb2xvcjogIzM0M2E0MDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLW91dGxpbmUtZGFyazphY3RpdmUsIC5idG4tb3V0bGluZS1kYXJrLmFjdGl2ZSxcbiAgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFyay5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7XG4gICAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOyB9XG5cbi5idG4tbGluayB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGNvbG9yOiAjMDA3YmZmO1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG4gIC5idG4tbGluaywgLmJ0bi1saW5rOmFjdGl2ZSwgLmJ0bi1saW5rLmFjdGl2ZSwgLmJ0bi1saW5rOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLWxpbmssIC5idG4tbGluazpmb2N1cywgLmJ0bi1saW5rOmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lOyB9XG4gIC5idG4tbGluazpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluazpob3ZlciB7XG4gICAgY29sb3I6ICMwMDU2YjM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLmJ0bi1saW5rOmRpc2FibGVkIHtcbiAgICBjb2xvcjogIzg2OGU5NjsgfVxuICAgIC5idG4tbGluazpkaXNhYmxlZDpmb2N1cywgLmJ0bi1saW5rOmRpc2FibGVkOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4uYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsgfVxuXG4uYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3JkZXItcmFkaXVzOiAwLjJyZW07IH1cblxuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTsgfVxuXG4uYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTsgfVxuXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLmJ0bi1ibG9jayxcbmlucHV0W3R5cGU9XCJyZXNldFwiXS5idG4tYmxvY2ssXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLmJ0bi1ibG9jayB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5mYWRlIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBsaW5lYXI7IH1cbiAgLmZhZGUuc2hvdyB7XG4gICAgb3BhY2l0eTogMTsgfVxuXG4uY29sbGFwc2Uge1xuICBkaXNwbGF5OiBub25lOyB9XG4gIC5jb2xsYXBzZS5zaG93IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuXG50ci5jb2xsYXBzZS5zaG93IHtcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XG5cbnRib2R5LmNvbGxhcHNlLnNob3cge1xuICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH1cblxuLmNvbGxhcHNpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7IH1cblxuLmRyb3B1cCxcbi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDtcbiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG5cbi5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOyB9XG5cbi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDsgfVxuXG4uZHJvcGRvd24tbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuICBkaXNwbGF5OiBub25lO1xuICBmbG9hdDogbGVmdDtcbiAgbWluLXdpZHRoOiAxMHJlbTtcbiAgcGFkZGluZzogMC41cmVtIDA7XG4gIG1hcmdpbjogMC4xMjVyZW0gMCAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiAjMjEyNTI5O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG5cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46IDAuNXJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsgfVxuXG4uZHJvcGRvd24taXRlbSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMC4yNXJlbSAxLjVyZW07XG4gIGNsZWFyOiBib3RoO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBjb2xvcjogIzIxMjUyOTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiAwOyB9XG4gIC5kcm9wZG93bi1pdGVtOmZvY3VzLCAuZHJvcGRvd24taXRlbTpob3ZlciB7XG4gICAgY29sb3I6ICMxNjE4MWI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmRyb3Bkb3duLWl0ZW0uYWN0aXZlLCAuZHJvcGRvd24taXRlbTphY3RpdmUge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOyB9XG4gIC5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnNob3cgPiBhIHtcbiAgb3V0bGluZTogMDsgfVxuXG4uZHJvcGRvd24tbWVudS5zaG93IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLmRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVyZW0gMS41cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBjb2xvcjogIzg2OGU5NjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4uYnRuLWdyb3VwLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLmJ0bi1ncm91cCA+IC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAgIC5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLFxuICAgIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDI7IH1cbiAgICAuYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsXG4gICAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsXG4gICAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLFxuICAgIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7XG4gICAgICB6LWluZGV4OiAyOyB9XG4gIC5idG4tZ3JvdXAgLmJ0biArIC5idG4sXG4gIC5idG4tZ3JvdXAgLmJ0biArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biArIC5idG4tZ3JvdXAsXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAge1xuICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyB9XG5cbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gIC5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAge1xuICAgIHdpZHRoOiBhdXRvOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG4gIC5idG4tZ3JvdXAgPiAuYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmJ0bi1ncm91cCA+IC5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwIHtcbiAgZmxvYXQ6IGxlZnQ7IH1cblxuLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOmxhc3QtY2hpbGQsXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpID4gLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cblxuLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07XG4gIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOyB9XG4gIC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMzc1cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuMzc1cmVtOyB9XG5cbi5idG4tbGcgKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLWxnID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07IH1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLFxuICAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAge1xuICAgIHdpZHRoOiAxMDAlOyB9XG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bixcbiAgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLWdyb3VwLFxuICAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7XG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICBtYXJnaW4tbGVmdDogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cblxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bjpsYXN0LWNoaWxkLFxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxuXG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0gPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5bZGF0YS10b2dnbGU9XCJidXR0b25zXCJdID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB3aWR0aDogMSU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICAgIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDphY3RpdmUsIC5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sOmhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDM7IH1cblxuLmlucHV0LWdyb3VwLWFkZG9uLFxuLmlucHV0LWdyb3VwLWJ0bixcbi5pbnB1dC1ncm91cCAuZm9ybS1jb250cm9sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSxcbiAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLFxuICAuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1idG4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi5pbnB1dC1ncm91cC1hZGRvbiB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICBjb2xvcjogIzQ5NTA1NztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG4gIC5pbnB1dC1ncm91cC1hZGRvbi5mb3JtLWNvbnRyb2wtc20sXG4gIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbixcbiAgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWJ0biA+IC5pbnB1dC1ncm91cC1hZGRvbi5idG4ge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMC4ycmVtOyB9XG4gIC5pbnB1dC1ncm91cC1hZGRvbi5mb3JtLWNvbnRyb2wtbGcsXG4gIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbixcbiAgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWJ0biA+IC5pbnB1dC1ncm91cC1hZGRvbi5idG4ge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cbiAgLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgLmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmxhc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6bGFzdC1jaGlsZCksXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cCA+IC5idG4sXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuZHJvcGRvd24tdG9nZ2xlLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfVxuXG4uaW5wdXQtZ3JvdXAtYWRkb246bm90KDpsYXN0LWNoaWxkKSB7XG4gIGJvcmRlci1yaWdodDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUsXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG5cbi5mb3JtLWNvbnRyb2wgKyAuaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCkge1xuICBib3JkZXItbGVmdDogMDsgfVxuXG4uaW5wdXQtZ3JvdXAtYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgLmlucHV0LWdyb3VwLWJ0biA+IC5idG4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0biArIC5idG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjpmb2N1cywgLmlucHV0LWdyb3VwLWJ0biA+IC5idG46YWN0aXZlLCAuaW5wdXQtZ3JvdXAtYnRuID4gLmJ0bjpob3ZlciB7XG4gICAgICB6LWluZGV4OiAzOyB9XG4gIC5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sXG4gIC5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4tZ3JvdXAge1xuICAgIG1hcmdpbi1yaWdodDogLTFweDsgfVxuICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bixcbiAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAge1xuICAgIHotaW5kZXg6IDI7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcHg7IH1cbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmb2N1cywgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG46YWN0aXZlLCAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpob3ZlcixcbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpmb2N1cyxcbiAgICAuaW5wdXQtZ3JvdXAtYnRuOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bi1ncm91cDphY3RpdmUsXG4gICAgLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXA6aG92ZXIge1xuICAgICAgei1pbmRleDogMzsgfVxuXG4uY3VzdG9tLWNvbnRyb2wge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBtaW4taGVpZ2h0OiAxLjVyZW07XG4gIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDFyZW07IH1cblxuLmN1c3RvbS1jb250cm9sLWlucHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAtMTtcbiAgb3BhY2l0eTogMDsgfVxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDNweCAjMDA3YmZmOyB9XG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDphY3RpdmUgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOyB9XG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH1cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWRlc2NyaXB0aW9uIHtcbiAgICBjb2xvcjogIzg2OGU5NjsgfVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuMjVyZW07XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkZGQ7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTsgfVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyB9XG5cbi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4uY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0VcIik7IH1cblxuLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlOyB9XG5cbi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4uY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9XG4gIC5jdXN0b20tY29udHJvbHMtc3RhY2tlZCAuY3VzdG9tLWNvbnRyb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH1cbiAgICAuY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQgLmN1c3RvbS1jb250cm9sICsgLmN1c3RvbS1jb250cm9sIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTtcbiAgcGFkZGluZzogMC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA1JyUzRSUzQ3BhdGggZmlsbD0nJTIzMzMzJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM0UlM0Mvc3ZnJTNFXCIpIG5vLXJlcGVhdCByaWdodCAwLjc1cmVtIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgYXBwZWFyYW5jZTogbm9uZTsgfVxuICAuY3VzdG9tLXNlbGVjdDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjODBiZGZmO1xuICAgIG91dGxpbmU6IG5vbmU7IH1cbiAgICAuY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHtcbiAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuICAuY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsgfVxuICAuY3VzdG9tLXNlbGVjdDo6LW1zLWV4cGFuZCB7XG4gICAgb3BhY2l0eTogMDsgfVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpO1xuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcbiAgZm9udC1zaXplOiA3NSU7IH1cblxuLmN1c3RvbS1maWxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5jdXN0b20tZmlsZS1pbnB1dCB7XG4gIG1pbi13aWR0aDogMTRyZW07XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7IH1cbiAgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWNvbnRyb2wge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMDc1cmVtICNmZmYsIDAgMCAwIDAuMnJlbSAjMDA3YmZmOyB9XG5cbi5jdXN0b20tZmlsZS1jb250cm9sIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiA1O1xuICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsaW5lLWhlaWdodDogMS4yNTtcbiAgY29sb3I6ICM0OTUwNTc7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAuY3VzdG9tLWZpbGUtY29udHJvbDpsYW5nKGVuKTplbXB0eTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiQ2hvb3NlIGZpbGUuLi5cIjsgfVxuICAuY3VzdG9tLWZpbGUtY29udHJvbDo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDY7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpO1xuICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOyB9XG4gIC5jdXN0b20tZmlsZS1jb250cm9sOmxhbmcoZW4pOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiQnJvd3NlXCI7IH1cblxuLm5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi5uYXYtbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsgfVxuICAubmF2LWxpbms6Zm9jdXMsIC5uYXYtbGluazpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIC5uYXYtbGluay5kaXNhYmxlZCB7XG4gICAgY29sb3I6ICM4NjhlOTY7IH1cblxuLm5hdi10YWJzIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7IH1cbiAgLm5hdi10YWJzIC5uYXYtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDsgfVxuICAubmF2LXRhYnMgLm5hdi1saW5rIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOyB9XG4gICAgLm5hdi10YWJzIC5uYXYtbGluazpmb2N1cywgLm5hdi10YWJzIC5uYXYtbGluazpob3ZlciB7XG4gICAgICBib3JkZXItY29sb3I6ICNlOWVjZWYgI2U5ZWNlZiAjZGRkOyB9XG4gICAgLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogIzg2OGU5NjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSxcbiAgLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICM0OTUwNTc7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXItY29sb3I6ICNkZGQgI2RkZCAjZmZmOyB9XG4gIC5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7XG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG5cbi5uYXYtcGlsbHMgLm5hdi1saW5rIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsXG4gIC5zaG93ID4gLm5hdi1waWxscyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7IH1cblxuLm5hdi1maWxsIC5uYXYtaXRlbSB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHtcbiAgZmxleC1iYXNpczogMDtcbiAgZmxleC1ncm93OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4udGFiLWNvbnRlbnQgPiAuYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtOyB9XG4gIC5uYXZiYXIgPiAuY29udGFpbmVyLFxuICAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cblxuLm5hdmJhci1icmFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6IDAuMzEyNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuMzEyNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4gIC5uYXZiYXItYnJhbmQ6Zm9jdXMsIC5uYXZiYXItYnJhbmQ6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4ubmF2YmFyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuICAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIGZsb2F0OiBub25lOyB9XG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTsgfVxuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuXG4ubmF2YmFyLXRvZ2dsZXIge1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfVxuICAubmF2YmFyLXRvZ2dsZXI6Zm9jdXMsIC5uYXZiYXItdG9nZ2xlcjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi5uYXZiYXItdG9nZ2xlci1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS41ZW07XG4gIGhlaWdodDogMS41ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXNtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudS1yaWdodCB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvOyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lcixcbiAgICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubmF2YmFyLWV4cGFuZC1tZCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gICAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogLjVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsXG4gICAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwOyB9XG4gICAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cbiAgICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLXRvZ2dsZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm5hdmJhci1leHBhbmQtbGcge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLFxuICAgIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2Uge1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lcixcbiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLm5hdmJhci1leHBhbmQteGwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAgICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87IH1cbiAgICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtOyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLFxuICAgIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuICAgIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2Uge1xuICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4ubmF2YmFyLWV4cGFuZCB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH1cbiAgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLFxuICAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlOyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUtcmlnaHQge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBhdXRvOyB9XG4gICAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfVxuICAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsXG4gIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7IH1cbiAgLm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gIC5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG4gIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxuICAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7IH1cbiAgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQge1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7IH1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluayxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csXG4ubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cblxuLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDAsIDAsIDAsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFXCIpOyB9XG5cbi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cywgLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIge1xuICAgIGNvbG9yOiB3aGl0ZTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsgfVxuICAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluayxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdyxcbi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRVwiKTsgfVxuXG4ubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmNhcmQtYm9keSB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBwYWRkaW5nOiAxLjI1cmVtOyB9XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfVxuXG4uY2FyZC1zdWJ0aXRsZSB7XG4gIG1hcmdpbi10b3A6IC0wLjM3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5jYXJkLWxpbms6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLmNhcmQtbGluayArIC5jYXJkLWxpbmsge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTsgfVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsgfVxuXG4uY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmNhcmQtaGVhZGVyIHtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDMpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7IH1cbiAgLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCkgMCAwOyB9XG5cbi5jYXJkLWZvb3RlciB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOyB9XG4gIC5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpOyB9XG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICBib3JkZXItYm90dG9tOiAwOyB9XG5cbi5jYXJkLWhlYWRlci1waWxscyB7XG4gIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtOyB9XG5cbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6IDEuMjVyZW07IH1cblxuLmNhcmQtaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7IH1cblxuLmNhcmQtaW1nLXRvcCB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsgfVxuXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAuY2FyZC1kZWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMTVweDtcbiAgICBtYXJnaW4tbGVmdDogLTE1cHg7IH1cbiAgICAuY2FyZC1kZWNrIC5jYXJkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAxIDAgMCU7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmNhcmQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDsgfVxuICAgIC5jYXJkLWdyb3VwIC5jYXJkIHtcbiAgICAgIGZsZXg6IDEgMCAwJTsgfVxuICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQgKyAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDsgfVxuICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgICAuY2FyZC1ncm91cCAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwOyB9XG4gICAgICAgIC5jYXJkLWdyb3VwIC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgLmNhcmQtaW1nLXRvcCxcbiAgICAgICAgLmNhcmQtZ3JvdXAgLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwOyB9IH1cblxuLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5jYXJkLWNvbHVtbnMge1xuICAgIGNvbHVtbi1jb3VudDogMztcbiAgICBjb2x1bW4tZ2FwOiAxLjI1cmVtOyB9XG4gICAgLmNhcmQtY29sdW1ucyAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5iYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC4yNWVtIDAuNGVtO1xuICBmb250LXNpemU6IDc1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cbiAgLmJhZGdlOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG5cbi5idG4gLmJhZGdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xcHg7IH1cblxuLmJhZGdlLXBpbGwge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogMTByZW07IH1cblxuLmJhZGdlLXByaW1hcnkge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsgfVxuICAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cywgLmJhZGdlLXByaW1hcnlbaHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjOyB9XG5cbi5iYWRnZS1zZWNvbmRhcnkge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg2OGU5NjsgfVxuICAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsgfVxuXG4uYmFkZ2Utc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OyB9XG4gIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzLCAuYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7IH1cblxuLmJhZGdlLWluZm8ge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsgfVxuICAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cywgLmJhZGdlLWluZm9baHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOyB9XG5cbi5iYWRnZS13YXJuaW5nIHtcbiAgY29sb3I6ICMxMTE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7IH1cbiAgLmJhZGdlLXdhcm5pbmdbaHJlZl06Zm9jdXMsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogIzExMTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsgfVxuXG4uYmFkZ2UtZGFuZ2VyIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7IH1cbiAgLmJhZGdlLWRhbmdlcltocmVmXTpmb2N1cywgLmJhZGdlLWRhbmdlcltocmVmXTpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZDIxMzA7IH1cblxuLmJhZGdlLWxpZ2h0IHtcbiAgY29sb3I6ICMxMTE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH1cbiAgLmJhZGdlLWxpZ2h0W2hyZWZdOmZvY3VzLCAuYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIge1xuICAgIGNvbG9yOiAjMTExO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1OyB9XG5cbi5iYWRnZS1kYXJrIHtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7IH1cbiAgLmJhZGdlLWRhcmtbaHJlZl06Zm9jdXMsIC5iYWRnZS1kYXJrW2hyZWZdOmhvdmVyIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsgfVxuXG4uanVtYm90cm9uIHtcbiAgcGFkZGluZzogMnJlbSAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07IH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgLmp1bWJvdHJvbiB7XG4gICAgICBwYWRkaW5nOiA0cmVtIDJyZW07IH0gfVxuXG4uanVtYm90cm9uLWZsdWlkIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG5cbi5hbGVydCB7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmFsZXJ0LWhlYWRpbmcge1xuICBjb2xvcjogaW5oZXJpdDsgfVxuXG4uYWxlcnQtbGluayB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTAuNzVyZW07XG4gIHJpZ2h0OiAtMS4yNXJlbTtcbiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICBjb2xvcjogaW5oZXJpdDsgfVxuXG4uYWxlcnQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA0MDg1O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NlNWZmO1xuICBib3JkZXItY29sb3I6ICNiOGRhZmY7IH1cbiAgLmFsZXJ0LXByaW1hcnkgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICM5ZmNkZmY7IH1cbiAgLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjMDAyNzUyOyB9XG5cbi5hbGVydC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzQ2NGE0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZThlYTtcbiAgYm9yZGVyLWNvbG9yOiAjZGRkZmUyOyB9XG4gIC5hbGVydC1zZWNvbmRhcnkgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNjZmQyZDY7IH1cbiAgLmFsZXJ0LXNlY29uZGFyeSAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICMyZTMxMzM7IH1cblxuLmFsZXJ0LXN1Y2Nlc3Mge1xuICBjb2xvcjogIzE1NTcyNDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTtcbiAgYm9yZGVyLWNvbG9yOiAjYzNlNmNiOyB9XG4gIC5hbGVydC1zdWNjZXNzIGhyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjYjFkZmJiOyB9XG4gIC5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHtcbiAgICBjb2xvcjogIzBiMmUxMzsgfVxuXG4uYWxlcnQtaW5mbyB7XG4gIGNvbG9yOiAjMGM1NDYwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxO1xuICBib3JkZXItY29sb3I6ICNiZWU1ZWI7IH1cbiAgLmFsZXJ0LWluZm8gaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7IH1cbiAgLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjMDYyYzMzOyB9XG5cbi5hbGVydC13YXJuaW5nIHtcbiAgY29sb3I6ICM4NTY0MDQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7XG4gIGJvcmRlci1jb2xvcjogI2ZmZWViYTsgfVxuICAuYWxlcnQtd2FybmluZyBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZThhMTsgfVxuICAuYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICM1MzNmMDM7IH1cblxuLmFsZXJ0LWRhbmdlciB7XG4gIGNvbG9yOiAjNzIxYzI0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhO1xuICBib3JkZXItY29sb3I6ICNmNWM2Y2I7IH1cbiAgLmFsZXJ0LWRhbmdlciBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2YxYjBiNzsgfVxuICAuYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHtcbiAgICBjb2xvcjogIzQ5MTIxNzsgfVxuXG4uYWxlcnQtbGlnaHQge1xuICBjb2xvcjogIzgxODE4MjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcbiAgYm9yZGVyLWNvbG9yOiAjZmRmZGZlOyB9XG4gIC5hbGVydC1saWdodCBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2VjZWNmNjsgfVxuICAuYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmsge1xuICAgIGNvbG9yOiAjNjg2ODY4OyB9XG5cbi5hbGVydC1kYXJrIHtcbiAgY29sb3I6ICMxYjFlMjE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7XG4gIGJvcmRlci1jb2xvcjogI2M2YzhjYTsgfVxuICAuYWxlcnQtZGFyayBociB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2I5YmJiZTsgfVxuICAuYWxlcnQtZGFyayAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6ICMwNDA1MDU7IH1cblxuLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cblxuLm1lZGlhLWJvZHkge1xuICBmbGV4OiAxOyB9XG5cbi50b29sdGlwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDcwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLCBcIlNlZ29lIFVJIEVtb2ppXCIsIFwiU2Vnb2UgVUkgU3ltYm9sXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBsaW5lLWJyZWFrOiBhdXRvO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIG9wYWNpdHk6IDA7IH1cbiAgLnRvb2x0aXAuc2hvdyB7XG4gICAgb3BhY2l0eTogMC45OyB9XG4gIC50b29sdGlwIC5hcnJvdyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA1cHg7XG4gICAgaGVpZ2h0OiA1cHg7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC10b3AsIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJ0b3BcIl0ge1xuICAgIHBhZGRpbmc6IDVweCAwOyB9XG4gICAgLnRvb2x0aXAuYnMtdG9vbHRpcC10b3AgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwidG9wXCJdIC5hcnJvdyB7XG4gICAgICBib3R0b206IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInRvcFwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggMDtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1yaWdodCwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cInJpZ2h0XCJdIHtcbiAgICBwYWRkaW5nOiAwIDVweDsgfVxuICAgIC50b29sdGlwLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93IHtcbiAgICAgIGxlZnQ6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwicmlnaHRcIl0gLmFycm93OjpiZWZvcmUge1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCA1cHggNXB4IDA7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1ib3R0b20sIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJib3R0b21cIl0ge1xuICAgIHBhZGRpbmc6IDVweCAwOyB9XG4gICAgLnRvb2x0aXAuYnMtdG9vbHRpcC1ib3R0b20gLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwiYm90dG9tXCJdIC5hcnJvdyB7XG4gICAgICB0b3A6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLnRvb2x0aXAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDAgNXB4IDVweDtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7IH1cbiAgLnRvb2x0aXAuYnMtdG9vbHRpcC1sZWZ0LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSB7XG4gICAgcGFkZGluZzogMCA1cHg7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWxlZnQgLmFycm93LCAudG9vbHRpcC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePVwibGVmdFwiXSAuYXJyb3cge1xuICAgICAgcmlnaHQ6IDA7IH1cbiAgICAudG9vbHRpcC5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC50b29sdGlwLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49XCJsZWZ0XCJdIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6IDVweCAwIDVweCA1cHg7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsgfVxuICAudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuXG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmc6IDNweCA4cHg7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07IH1cblxuLmFsaWduLWJhc2VsaW5lIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRvcCB7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tbWlkZGxlIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1ib3R0b20ge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRleHQtYm90dG9tIHtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXRleHQtdG9wIHtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnQ7IH1cblxuLmJnLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1wcmltYXJ5OmZvY3VzLCBhLmJnLXByaW1hcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7IH1cblxuLmJnLXNlY29uZGFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4NjhlOTYgIWltcG9ydGFudDsgfVxuXG5hLmJnLXNlY29uZGFyeTpmb2N1cywgYS5iZy1zZWNvbmRhcnk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7IH1cblxuLmJnLXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1zdWNjZXNzOmZvY3VzLCBhLmJnLXN1Y2Nlc3M6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7IH1cblxuLmJnLWluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1pbmZvOmZvY3VzLCBhLmJnLWluZm86aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7IH1cblxuLmJnLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7IH1cblxuYS5iZy13YXJuaW5nOmZvY3VzLCBhLmJnLXdhcm5pbmc6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7IH1cblxuLmJnLWRhbmdlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsgfVxuXG5hLmJnLWRhbmdlcjpmb2N1cywgYS5iZy1kYW5nZXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7IH1cblxuLmJnLWxpZ2h0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50OyB9XG5cbmEuYmctbGlnaHQ6Zm9jdXMsIGEuYmctbGlnaHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7IH1cblxuLmJnLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7IH1cblxuYS5iZy1kYXJrOmZvY3VzLCBhLmJnLWRhcms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7IH1cblxuLmJnLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5iZy10cmFuc3BhcmVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWYgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLTAge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLXRvcC0wIHtcbiAgYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItcmlnaHQtMCB7XG4gIGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItYm90dG9tLTAge1xuICBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1sZWZ0LTAge1xuICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItcHJpbWFyeSB7XG4gIGJvcmRlci1jb2xvcjogIzAwN2JmZiAhaW1wb3J0YW50OyB9XG5cbi5ib3JkZXItc2Vjb25kYXJ5IHtcbiAgYm9yZGVyLWNvbG9yOiAjODY4ZTk2ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1zdWNjZXNzIHtcbiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1pbmZvIHtcbiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci13YXJuaW5nIHtcbiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3ICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1kYW5nZXIge1xuICBib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsgfVxuXG4uYm9yZGVyLWxpZ2h0IHtcbiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci1kYXJrIHtcbiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwICFpbXBvcnRhbnQ7IH1cblxuLmJvcmRlci13aGl0ZSB7XG4gIGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkIHtcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkLXRvcCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLnJvdW5kZWQtYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5yb3VuZGVkLWxlZnQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucm91bmRlZC1jaXJjbGUge1xuICBib3JkZXItcmFkaXVzOiA1MCU7IH1cblxuLnJvdW5kZWQtMCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cblxuLmNsZWFyZml4OjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogXCJcIjsgfVxuXG4uZC1ub25lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG5cbi5kLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuXG4uZC10YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cblxuLmQtdGFibGUtY2VsbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuXG4uZC1mbGV4IHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG5cbi5kLWlubGluZS1mbGV4IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmQtc20tbm9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIC5kLXNtLWlubGluZSB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgLmQtc20taW5saW5lLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxuICAuZC1zbS1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAuZC1zbS10YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxuICAuZC1zbS10YWJsZS1jZWxsIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cbiAgLmQtc20tZmxleCB7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gIC5kLXNtLWlubGluZS1mbGV4IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5kLW1kLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuZC1tZC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gIC5kLW1kLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgLmQtbWQtdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gIC5kLW1kLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAuZC1tZC1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZC1sZy1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgLmQtbGctaW5saW5lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAuZC1sZy1pbmxpbmUtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLXRhYmxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gIC5kLWxnLXRhYmxlLWNlbGwge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAuZC1sZy1mbGV4IHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH1cbiAgLmQtbGctaW5saW5lLWZsZXgge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5kLXhsLW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuZC14bC1pbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gIC5kLXhsLWlubGluZS1ibG9jayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgLmQteGwtdGFibGUtY2VsbCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gIC5kLXhsLWZsZXgge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxuICAuZC14bC1pbmxpbmUtZmxleCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWJsb2NrIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIEBtZWRpYSBwcmludCB7XG4gICAgLmQtcHJpbnQtYmxvY2sge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWlubGluZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgcHJpbnQge1xuICAgIC5kLXByaW50LWlubGluZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfSB9XG5cbi5kLXByaW50LWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICBAbWVkaWEgcHJpbnQge1xuICAgIC5kLXByaW50LWlubGluZS1ibG9jayB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBwcmludCB7XG4gIC5kLXByaW50LW5vbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi5lbWJlZC1yZXNwb25zaXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLmVtYmVkLXJlc3BvbnNpdmU6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogXCJcIjsgfVxuICAuZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsXG4gIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLFxuICAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsXG4gIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA0Mi44NTcxNCU7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7IH1cblxuLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHtcbiAgcGFkZGluZy10b3A6IDc1JTsgfVxuXG4uZW1iZWQtcmVzcG9uc2l2ZS0xYnkxOjpiZWZvcmUge1xuICBwYWRkaW5nLXRvcDogMTAwJTsgfVxuXG4uZmxleC1yb3cge1xuICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtY29sdW1uIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG5cbi5mbGV4LXJvdy1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtY29sdW1uLXJldmVyc2Uge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4uZmxleC13cmFwIHtcbiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cblxuLmZsZXgtbm93cmFwIHtcbiAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxuXG4uZmxleC13cmFwLXJldmVyc2Uge1xuICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG5cbi5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuXG4uanVzdGlmeS1jb250ZW50LWVuZCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuXG4uanVzdGlmeS1jb250ZW50LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cblxuLmp1c3RpZnktY29udGVudC1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1pdGVtcy1zdGFydCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLWVuZCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1pdGVtcy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWl0ZW1zLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1jb250ZW50LXN0YXJ0IHtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1jb250ZW50LWVuZCB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWNvbnRlbnQtY2VudGVyIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLWNvbnRlbnQtYmV0d2VlbiB7XG4gIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tY29udGVudC1hcm91bmQge1xuICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tY29udGVudC1zdHJldGNoIHtcbiAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbi5hbGlnbi1zZWxmLWF1dG8ge1xuICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtc3RhcnQge1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtZW5kIHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tc2VsZi1jZW50ZXIge1xuICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuXG4uYWxpZ24tc2VsZi1iYXNlbGluZSB7XG4gIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cblxuLmFsaWduLXNlbGYtc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgLmZsZXgtc20tcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20tY29sdW1uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20tcm93LXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXNtLWNvbHVtbi1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC1zbS13cmFwIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfVxuICAuZmxleC1zbS1ub3dyYXAge1xuICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtc20td3JhcC1yZXZlcnNlIHtcbiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtc20tZW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtc20tc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLWNlbnRlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1zbS1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tc3RhcnQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1lbmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tY2VudGVyIHtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtc20tYXJvdW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHtcbiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tYXV0byB7XG4gICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tZW5kIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tYmFzZWxpbmUge1xuICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5mbGV4LW1kLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC1tZC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbWQtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbWQtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LW1kLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1tZC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbWQtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQtbWQtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1tZC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1tZC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLW1kLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxleC1sZy1yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy1jb2x1bW4ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy1yb3ctcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgtbGctY29sdW1uLXJldmVyc2Uge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LWxnLXdyYXAge1xuICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LWxnLW5vd3JhcCB7XG4gICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfVxuICAuZmxleC1sZy13cmFwLXJldmVyc2Uge1xuICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC1sZy1lbmQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4ge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQtbGctYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy1sZy1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMtbGctc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1zdGFydCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWVuZCB7XG4gICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1jZW50ZXIge1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4ge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tY29udGVudC1sZy1hcm91bmQge1xuICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LWxnLXN0cmV0Y2gge1xuICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1hdXRvIHtcbiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtbGctc3RhcnQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1lbmQge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLXNlbGYtbGctY2VudGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1iYXNlbGluZSB7XG4gICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi1sZy1zdHJldGNoIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5mbGV4LXhsLXJvdyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLWNvbHVtbiB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLXJvdy1yZXZlcnNlIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuZmxleC14bC1jb2x1bW4tcmV2ZXJzZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgteGwtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgLmZsZXgteGwtbm93cmFwIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gIC5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7XG4gICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfVxuICAuanVzdGlmeS1jb250ZW50LXhsLWVuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5qdXN0aWZ5LWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgLmp1c3RpZnktY29udGVudC14bC1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWl0ZW1zLXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAuYWxpZ24taXRlbXMteGwtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLXN0YXJ0IHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtZW5kIHtcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWNlbnRlciB7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1jb250ZW50LXhsLWFyb3VuZCB7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7XG4gICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWF1dG8ge1xuICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi14bC1zdGFydCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWVuZCB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAuYWxpZ24tc2VsZi14bC1jZW50ZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9XG4gIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfSB9XG5cbi5mbG9hdC1sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuXG4uZmxvYXQtcmlnaHQge1xuICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuXG4uZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5mbG9hdC1zbS1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC1zbS1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLmZsb2F0LXNtLW5vbmUge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmZsb2F0LW1kLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLmZsb2F0LW1kLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQtbWQtbm9uZSB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuZmxvYXQtbGctbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQtbGctcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC1sZy1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuZmxvYXQteGwtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuICAuZmxvYXQteGwtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC5mbG9hdC14bC1ub25lIHtcbiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuLnBvc2l0aW9uLXN0YXRpYyB7XG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tcmVsYXRpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tZml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgfVxuXG4ucG9zaXRpb24tc3RpY2t5IHtcbiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50OyB9XG5cbi5maXhlZC10b3Age1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMzA7IH1cblxuLmZpeGVkLWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAzMDsgfVxuXG5Ac3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHtcbiAgLnN0aWNreS10b3Age1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiAwO1xuICAgIHotaW5kZXg6IDEwMjA7IH0gfVxuXG4uc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgYm9yZGVyOiAwOyB9XG5cbi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBjbGlwLXBhdGg6IG5vbmU7IH1cblxuLnctMjUge1xuICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7IH1cblxuLnctNTAge1xuICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7IH1cblxuLnctNzUge1xuICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH1cblxuLnctMTAwIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4uaC0yNSB7XG4gIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7IH1cblxuLmgtNTAge1xuICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50OyB9XG5cbi5oLTc1IHtcbiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsgfVxuXG4uaC0xMDAge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4ubXctMTAwIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLm1oLTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4ubS0wIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cblxuLm10LTAsXG4ubXktMCB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4ubXItMCxcbi5teC0wIHtcbiAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLm1iLTAsXG4ubXktMCB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4ubWwtMCxcbi5teC0wIHtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4ubS0xIHtcbiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLm10LTEsXG4ubXktMSB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubXItMSxcbi5teC0xIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1iLTEsXG4ubXktMSB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubWwtMSxcbi5teC0xIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubS0yIHtcbiAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubXQtMixcbi5teS0yIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1yLTIsXG4ubXgtMiB7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm1iLTIsXG4ubXktMiB7XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tbC0yLFxuLm14LTIge1xuICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tMyB7XG4gIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tdC0zLFxuLm15LTMge1xuICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm1yLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tYi0zLFxuLm15LTMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm1sLTMsXG4ubXgtMyB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tNCB7XG4gIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH1cblxuLm10LTQsXG4ubXktNCB7XG4gIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tci00LFxuLm14LTQge1xuICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tYi00LFxuLm15LTQge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ubWwtNCxcbi5teC00IHtcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5tLTUge1xuICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ubXQtNSxcbi5teS01IHtcbiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5tci01LFxuLm14LTUge1xuICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ubWItNSxcbi5teS01IHtcbiAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5tbC01LFxuLm14LTUge1xuICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTAge1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cblxuLnB0LTAsXG4ucHktMCB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cblxuLnByLTAsXG4ucHgtMCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuXG4ucGItMCxcbi5weS0wIHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4ucGwtMCxcbi5weC0wIHtcbiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuLnAtMSB7XG4gIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHQtMSxcbi5weS0xIHtcbiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHItMSxcbi5weC0xIHtcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wYi0xLFxuLnB5LTEge1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wbC0xLFxuLnB4LTEge1xuICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucC0yIHtcbiAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLnB0LTIsXG4ucHktMiB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHItMixcbi5weC0yIHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cblxuLnBiLTIsXG4ucHktMiB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucGwtMixcbi5weC0yIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucC0zIHtcbiAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wdC0zLFxuLnB5LTMge1xuICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wci0zLFxuLnB4LTMge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLnBiLTMsXG4ucHktMyB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cblxuLnBsLTMsXG4ucHgtMyB7XG4gIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTQge1xuICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucHQtNCxcbi5weS00IHtcbiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wci00LFxuLnB4LTQge1xuICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuXG4ucGItNCxcbi5weS00IHtcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wbC00LFxuLnB4LTQge1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG5cbi5wLTUge1xuICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLnB0LTUsXG4ucHktNSB7XG4gIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLnByLTUsXG4ucHgtNSB7XG4gIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ucGItNSxcbi5weS01IHtcbiAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuXG4ucGwtNSxcbi5weC01IHtcbiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cblxuLm0tYXV0byB7XG4gIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9XG5cbi5tdC1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLm1yLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XG5cbi5tYi1hdXRvLFxuLm15LWF1dG8ge1xuICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLm1sLWF1dG8sXG4ubXgtYXV0byB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5tLXNtLTAge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS0wLFxuICAubXktc20tMCB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9XG4gIC5tci1zbS0wLFxuICAubXgtc20tMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTAsXG4gIC5teS1zbS0wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTAsXG4gIC5teC1zbS0wIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9XG4gIC5tLXNtLTEge1xuICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS0xLFxuICAubXktc20tMSB7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1zbS0xLFxuICAubXgtc20tMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTEsXG4gIC5teS1zbS0xIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTEsXG4gIC5teC1zbS0xIHtcbiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLXNtLTIge1xuICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXNtLTIsXG4gIC5teS1zbS0yIHtcbiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItc20tMixcbiAgLm14LXNtLTIge1xuICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXNtLTIsXG4gIC5teS1zbS0yIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtc20tMixcbiAgLm14LXNtLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS0zIHtcbiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsgfVxuICAubXQtc20tMyxcbiAgLm15LXNtLTMge1xuICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubXItc20tMyxcbiAgLm14LXNtLTMge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS0zLFxuICAubXktc20tMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1zbS0zLFxuICAubXgtc20tMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS00IHtcbiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1zbS00LFxuICAubXktc20tNCB7XG4gICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXNtLTQsXG4gIC5teC1zbS00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS00LFxuICAubXktc20tNCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXNtLTQsXG4gIC5teC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tc20tNSB7XG4gICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXNtLTUsXG4gIC5teS1zbS01IHtcbiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXNtLTUsXG4gIC5teC1zbS01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubWItc20tNSxcbiAgLm15LXNtLTUge1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuICAubWwtc20tNSxcbiAgLm14LXNtLTUge1xuICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tMCB7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS0wLFxuICAucHktc20tMCB7XG4gICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfVxuICAucHItc20tMCxcbiAgLnB4LXNtLTAge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuICAucGItc20tMCxcbiAgLnB5LXNtLTAge1xuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTAsXG4gIC5weC1zbS0wIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAucC1zbS0xIHtcbiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXNtLTEsXG4gIC5weS1zbS0xIHtcbiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1zbS0xLFxuICAucHgtc20tMSB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1zbS0xLFxuICAucHktc20tMSB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtc20tMSxcbiAgLnB4LXNtLTEge1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXNtLTIge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS0yLFxuICAucHktc20tMiB7XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1zbS0yLFxuICAucHgtc20tMiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXNtLTIsXG4gIC5weS1zbS0yIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTIsXG4gIC5weC1zbS0yIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXNtLTMge1xuICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucHQtc20tMyxcbiAgLnB5LXNtLTMge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXNtLTMsXG4gIC5weC1zbS0zIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXNtLTMsXG4gIC5weS1zbS0zIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1zbS0zLFxuICAucHgtc20tMyB7XG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tNCB7XG4gICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXNtLTQsXG4gIC5weS1zbS00IHtcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXNtLTQsXG4gIC5weC1zbS00IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItc20tNCxcbiAgLnB5LXNtLTQge1xuICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtc20tNCxcbiAgLnB4LXNtLTQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtc20tNSB7XG4gICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1zbS01LFxuICAucHktc20tNSB7XG4gICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHItc20tNSxcbiAgLnB4LXNtLTUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucGItc20tNSxcbiAgLnB5LXNtLTUge1xuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXNtLTUsXG4gIC5weC1zbS01IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubS1zbS1hdXRvIHtcbiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfVxuICAubXQtc20tYXV0byxcbiAgLm15LXNtLWF1dG8ge1xuICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubXItc20tYXV0byxcbiAgLm14LXNtLWF1dG8ge1xuICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tYi1zbS1hdXRvLFxuICAubXktc20tYXV0byB7XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tbC1zbS1hdXRvLFxuICAubXgtc20tYXV0byB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubS1tZC0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuICAubXQtbWQtMCxcbiAgLm15LW1kLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuICAubXItbWQtMCxcbiAgLm14LW1kLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0wLFxuICAubXktbWQtMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC0wLFxuICAubXgtbWQtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAubS1tZC0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbWQtMSxcbiAgLm15LW1kLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItbWQtMSxcbiAgLm14LW1kLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0xLFxuICAubXktbWQtMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC0xLFxuICAubXgtbWQtMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1tZC0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1tZC0yLFxuICAubXktbWQtMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLTIsXG4gIC5teC1tZC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1tZC0yLFxuICAubXktbWQtMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLW1kLTIsXG4gIC5teC1tZC0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LW1kLTMsXG4gIC5teS1tZC0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLTMsXG4gIC5teC1tZC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWItbWQtMyxcbiAgLm15LW1kLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbWQtMyxcbiAgLm14LW1kLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbWQtNCxcbiAgLm15LW1kLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1tZC00LFxuICAubXgtbWQtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbWQtNCxcbiAgLm15LW1kLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1tZC00LFxuICAubXgtbWQtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLW1kLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1tZC01LFxuICAubXktbWQtNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1tZC01LFxuICAubXgtbWQtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLW1kLTUsXG4gIC5teS1tZC01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLW1kLTUsXG4gIC5teC1tZC01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuICAucHQtbWQtMCxcbiAgLnB5LW1kLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnByLW1kLTAsXG4gIC5weC1tZC0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTAsXG4gIC5weS1tZC0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC0wLFxuICAucHgtbWQtMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnAtbWQtMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1tZC0xLFxuICAucHktbWQtMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbWQtMSxcbiAgLnB4LW1kLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItbWQtMSxcbiAgLnB5LW1kLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLW1kLTEsXG4gIC5weC1tZC0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1tZC0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbWQtMixcbiAgLnB5LW1kLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbWQtMixcbiAgLnB4LW1kLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1tZC0yLFxuICAucHktbWQtMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC0yLFxuICAucHgtbWQtMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1tZC0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LW1kLTMsXG4gIC5weS1tZC0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1tZC0zLFxuICAucHgtbWQtMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1tZC0zLFxuICAucHktbWQtMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbWQtMyxcbiAgLnB4LW1kLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1tZC00LFxuICAucHktbWQtNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1tZC00LFxuICAucHgtbWQtNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTQsXG4gIC5weS1tZC00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLW1kLTQsXG4gIC5weC1tZC00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLW1kLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbWQtNSxcbiAgLnB5LW1kLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLW1kLTUsXG4gIC5weC1tZC01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLW1kLTUsXG4gIC5weS1tZC01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1tZC01LFxuICAucHgtbWQtNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbWQtYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm10LW1kLWF1dG8sXG4gIC5teS1tZC1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1yLW1kLWF1dG8sXG4gIC5teC1tZC1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWItbWQtYXV0byxcbiAgLm15LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWwtbWQtYXV0byxcbiAgLm14LW1kLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLm0tbGctMCB7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTAsXG4gIC5teS1sZy0wIHtcbiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLm1yLWxnLTAsXG4gIC5teC1sZy0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuICAubWItbGctMCxcbiAgLm15LWxnLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICAubWwtbGctMCxcbiAgLm14LWxnLTAge1xuICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLm0tbGctMSB7XG4gICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTEsXG4gIC5teS1sZy0xIHtcbiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLWxnLTEsXG4gIC5teC1sZy0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbGctMSxcbiAgLm15LWxnLTEge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbGctMSxcbiAgLm14LWxnLTEge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0tbGctMiB7XG4gICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWItbGctMixcbiAgLm15LWxnLTIge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1sZy0yLFxuICAubXgtbGctMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLTMge1xuICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC1sZy0zLFxuICAubXktbGctMyB7XG4gICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy0zLFxuICAubXgtbGctMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLTMsXG4gIC5teS1sZy0zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLWxnLTMsXG4gIC5teC1sZy0zIHtcbiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLTQge1xuICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXItbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLTQsXG4gIC5teS1sZy00IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWwtbGctNCxcbiAgLm14LWxnLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubS1sZy01IHtcbiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsgfVxuICAubXQtbGctNSxcbiAgLm15LWxnLTUge1xuICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsgfVxuICAubXItbGctNSxcbiAgLm14LWxnLTUge1xuICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi1sZy01LFxuICAubXktbGctNSB7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC1sZy01LFxuICAubXgtbGctNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy0wIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTAsXG4gIC5weS1sZy0wIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XG4gIC5wci1sZy0wLFxuICAucHgtbGctMCB7XG4gICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy0wLFxuICAucHktbGctMCB7XG4gICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICAucGwtbGctMCxcbiAgLnB4LWxnLTAge1xuICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XG4gIC5wLWxnLTEge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbGctMSxcbiAgLnB5LWxnLTEge1xuICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLWxnLTEsXG4gIC5weC1sZy0xIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLWxnLTEsXG4gIC5weS1sZy0xIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1sZy0xLFxuICAucHgtbGctMSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtbGctMiB7XG4gICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTIsXG4gIC5weS1sZy0yIHtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLWxnLTIsXG4gIC5weC1sZy0yIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGItbGctMixcbiAgLnB5LWxnLTIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbGctMixcbiAgLnB4LWxnLTIge1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnAtbGctMyB7XG4gICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC1sZy0zLFxuICAucHktbGctMyB7XG4gICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucHItbGctMyxcbiAgLnB4LWxnLTMge1xuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGItbGctMyxcbiAgLnB5LWxnLTMge1xuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLWxnLTMsXG4gIC5weC1sZy0zIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy00IHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQtbGctNCxcbiAgLnB5LWxnLTQge1xuICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHItbGctNCxcbiAgLnB4LWxnLTQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy00LFxuICAucHktbGctNCB7XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC1sZy00LFxuICAucHgtbGctNCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC1sZy01IHtcbiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LWxnLTUsXG4gIC5weS1sZy01IHtcbiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wci1sZy01LFxuICAucHgtbGctNSB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi1sZy01LFxuICAucHktbGctNSB7XG4gICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsgfVxuICAucGwtbGctNSxcbiAgLnB4LWxnLTUge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tLWxnLWF1dG8ge1xuICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tdC1sZy1hdXRvLFxuICAubXktbGctYXV0byB7XG4gICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9XG4gIC5tci1sZy1hdXRvLFxuICAubXgtbGctYXV0byB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1iLWxnLWF1dG8sXG4gIC5teS1sZy1hdXRvIHtcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1sLWxnLWF1dG8sXG4gIC5teC1sZy1hdXRvIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAubS14bC0wIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsgfVxuICAubXQteGwtMCxcbiAgLm15LXhsLTAge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuICAubXIteGwtMCxcbiAgLm14LXhsLTAge1xuICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0wLFxuICAubXkteGwtMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC0wLFxuICAubXgteGwtMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuICAubS14bC0xIHtcbiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQteGwtMSxcbiAgLm15LXhsLTEge1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubXIteGwtMSxcbiAgLm14LXhsLTEge1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0xLFxuICAubXkteGwtMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC0xLFxuICAubXgteGwtMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAubS14bC0yIHtcbiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC14bC0yLFxuICAubXkteGwtMiB7XG4gICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLTIsXG4gIC5teC14bC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tYi14bC0yLFxuICAubXkteGwtMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXhsLTIsXG4gIC5teC14bC0yIHtcbiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtMyB7XG4gICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm10LXhsLTMsXG4gIC5teS14bC0zIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLTMsXG4gIC5teC14bC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWIteGwtMyxcbiAgLm15LXhsLTMge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAubWwteGwtMyxcbiAgLm14LXhsLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtNCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubXQteGwtNCxcbiAgLm15LXhsLTQge1xuICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tci14bC00LFxuICAubXgteGwtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfVxuICAubWIteGwtNCxcbiAgLm15LXhsLTQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tbC14bC00LFxuICAubXgteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5tLXhsLTUge1xuICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tdC14bC01LFxuICAubXkteGwtNSB7XG4gICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5tci14bC01LFxuICAubXgteGwtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1iLXhsLTUsXG4gIC5teS14bC01IHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm1sLXhsLTUsXG4gIC5teC14bC01IHtcbiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTAge1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuICAucHQteGwtMCxcbiAgLnB5LXhsLTAge1xuICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH1cbiAgLnByLXhsLTAsXG4gIC5weC14bC0wIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTAsXG4gIC5weS14bC0wIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC0wLFxuICAucHgteGwtMCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cbiAgLnAteGwtMSB7XG4gICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC14bC0xLFxuICAucHkteGwtMSB7XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucHIteGwtMSxcbiAgLnB4LXhsLTEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucGIteGwtMSxcbiAgLnB5LXhsLTEge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXhsLTEsXG4gIC5weC14bC0xIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsgfVxuICAucC14bC0yIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHQteGwtMixcbiAgLnB5LXhsLTIge1xuICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucHIteGwtMixcbiAgLnB4LXhsLTIge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi14bC0yLFxuICAucHkteGwtMiB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC0yLFxuICAucHgteGwtMiB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsgfVxuICAucC14bC0zIHtcbiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnB0LXhsLTMsXG4gIC5weS14bC0zIHtcbiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci14bC0zLFxuICAucHgteGwtMyB7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wYi14bC0zLFxuICAucHkteGwtMyB7XG4gICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfVxuICAucGwteGwtMyxcbiAgLnB4LXhsLTMge1xuICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTQge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wdC14bC00LFxuICAucHkteGwtNCB7XG4gICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wci14bC00LFxuICAucHgteGwtNCB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTQsXG4gIC5weS14bC00IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBsLXhsLTQsXG4gIC5weC14bC00IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9XG4gIC5wLXhsLTUge1xuICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsgfVxuICAucHQteGwtNSxcbiAgLnB5LXhsLTUge1xuICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnByLXhsLTUsXG4gIC5weC14bC01IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLnBiLXhsLTUsXG4gIC5weS14bC01IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OyB9XG4gIC5wbC14bC01LFxuICAucHgteGwtNSB7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7IH1cbiAgLm0teGwtYXV0byB7XG4gICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm10LXhsLWF1dG8sXG4gIC5teS14bC1hdXRvIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgLm1yLXhsLWF1dG8sXG4gIC5teC14bC1hdXRvIHtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWIteGwtYXV0byxcbiAgLm15LXhsLWF1dG8ge1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfVxuICAubWwteGwtYXV0byxcbiAgLm14LXhsLWF1dG8ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfVxuXG4udGV4dC1qdXN0aWZ5IHtcbiAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfVxuXG4udGV4dC10cnVuY2F0ZSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50ZXh0LWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xuICAudGV4dC1zbS1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtc20tcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtc20tY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGV4dC1tZC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbWQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbWQtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAudGV4dC1sZy1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbGctcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgLnRleHQtbGctY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRleHQteGwtbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9XG4gIC50ZXh0LXhsLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG4gIC50ZXh0LXhsLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfVxuXG4udGV4dC1sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWNhcGl0YWxpemUge1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi5mb250LXdlaWdodC1saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDsgfVxuXG4uZm9udC13ZWlnaHQtbm9ybWFsIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OyB9XG5cbi5mb250LXdlaWdodC1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsgfVxuXG4uZm9udC1pdGFsaWMge1xuICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsgfVxuXG4udGV4dC13aGl0ZSB7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LXByaW1hcnk6Zm9jdXMsIGEudGV4dC1wcmltYXJ5OmhvdmVyIHtcbiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsgfVxuXG4udGV4dC1zZWNvbmRhcnkge1xuICBjb2xvcjogIzg2OGU5NiAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1zZWNvbmRhcnk6Zm9jdXMsIGEudGV4dC1zZWNvbmRhcnk6aG92ZXIge1xuICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LXN1Y2Nlc3Mge1xuICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1zdWNjZXNzOmZvY3VzLCBhLnRleHQtc3VjY2Vzczpob3ZlciB7XG4gIGNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtaW5mbyB7XG4gIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LWluZm86Zm9jdXMsIGEudGV4dC1pbmZvOmhvdmVyIHtcbiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsgfVxuXG4udGV4dC13YXJuaW5nIHtcbiAgY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsgfVxuXG5hLnRleHQtd2FybmluZzpmb2N1cywgYS50ZXh0LXdhcm5pbmc6aG92ZXIge1xuICBjb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LWRhbmdlciB7XG4gIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7IH1cblxuYS50ZXh0LWRhbmdlcjpmb2N1cywgYS50ZXh0LWRhbmdlcjpob3ZlciB7XG4gIGNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7IH1cblxuLnRleHQtbGlnaHQge1xuICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50OyB9XG5cbmEudGV4dC1saWdodDpmb2N1cywgYS50ZXh0LWxpZ2h0OmhvdmVyIHtcbiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsgfVxuXG4udGV4dC1kYXJrIHtcbiAgY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsgfVxuXG5hLnRleHQtZGFyazpmb2N1cywgYS50ZXh0LWRhcms6aG92ZXIge1xuICBjb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LW11dGVkIHtcbiAgY29sb3I6ICM4NjhlOTYgIWltcG9ydGFudDsgfVxuXG4udGV4dC1oaWRlIHtcbiAgZm9udDogMC8wIGE7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7IH1cblxuLnZpc2libGUge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7IH1cblxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB9XG5cbi8qIHN5c3RlbS1mb250LmNzcyB2MS4xLjAgfCBDQzAtMS4wIExpY2Vuc2UgfCBnaXRodWIuY29tL2pvbmF0aGFudG5lYWwvc3lzdGVtLWZvbnQtZmFjZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1MaWdodFwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTGlnaHRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0XCIpLCBsb2NhbChcIlVidW50dSBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIGxvY2FsKFwiRHJvaWRTYW5zXCIpLCBsb2NhbChcIlRhaG9tYVwiKTsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LUxpZ2h0SXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1JdGFsaWNcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0IEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1MaWdodEl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtUmVndWxhclwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtUmVndWxhclwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUlcIiksIGxvY2FsKFwiVWJ1bnR1XCIpLCBsb2NhbChcIlJvYm90by1SZWd1bGFyXCIpLCBsb2NhbChcIkRyb2lkU2Fuc1wiKSwgbG9jYWwoXCJUYWhvbWFcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1JdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTWVkaXVtXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1NZWRpdW1QNFwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgU2VtaWJvbGRcIiksIGxvY2FsKFwiVWJ1bnR1IE1lZGl1bVwiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTWVkaXVtSXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1NZWRpdW1JdGFsaWNQNFwiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgU2VtaWJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBNZWRpdW0gSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1JdGFsaWNcIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkXCIpLCBsb2NhbChcIlVidW50dSBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtQm9sZEl0YWxpY1wiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtQm9sZEl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiVWJ1bnR1IEJvbGQgSXRhbGljXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJztcbiAgc3JjOiB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdFwiKTtcbiAgc3JjOiB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcImh0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCJodHRwczovL25ldGRuYS5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjAuMC9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4wLjAvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5zdmcjZ2x5cGhpY29ucy1oYWxmbGluZ3NyZWd1bGFyXCIpIGZvcm1hdChcInN2Z1wiKTsgfVxuXG4uZ2x5cGhpY29uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDFweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogJ0dseXBoaWNvbnMgSGFsZmxpbmdzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7IH1cblxuLmdseXBoaWNvbi1oZWFydC1lbXB0eTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTE0M1wiOyB9XG5cbi5nbHlwaGljb24tb2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGUwMTNcIjsgfVxuXG4uZ2x5cGhpY29uLXJlbW92ZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTAxNFwiOyB9XG5cbi5nbHlwaGljb24taGVhcnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGUwMDVcIjsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXIge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDUuMnB4IDA7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcbiAgYm9yZGVyOiAwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGhlaWdodDogMTZweDtcbiAgd2lkdGg6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDEzcHg7XG4gIGJhY2tncm91bmQ6ICNlMTcwNzU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBtYXJnaW4tdG9wOiAtNy4xcHg7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDMxLCAwcHggMHB4IDBweCAjMDAwMDRiO1xuICBib3JkZXI6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcbiAgYmFja2dyb3VuZDogI2UxNzA3NTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LW1zLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNS42cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tcy1maWxsLWxvd2VyIHtcbiAgYmFja2dyb3VuZDogcmdiYSg1MywgNTksIDYzLCAwLjMyKTtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtZmlsbC11cHBlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcbiAgYm9yZGVyOiAxLjlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggdHJhbnNwYXJlbnQsIDBweCAwcHggMHB4IHJnYmEoMTMsIDEzLCAxMywgMCk7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdGh1bWIge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAjMDAwMDMxLCAwcHggMHB4IDBweCAjMDAwMDRiO1xuICBib3JkZXI6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgaGVpZ2h0OiAxNnB4O1xuICB3aWR0aDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcbiAgYmFja2dyb3VuZDogI2UxNzA3NTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDUuNnB4OyB9XG5cbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjpmb2N1czo6LW1zLWZpbGwtbG93ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7IH1cblxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotbXMtZmlsbC11cHBlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7IH1cblxuYm9keSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTIsIDI1MiwgMjUyLCAwLjI5KTtcbiAgY29sb3I6ICM1YTY1NmI7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIHN5c3RlbS11aSwgVGFob21hOyB9XG5cbi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiA1MHB4IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogIzgwMzNiMDtcbiAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICM3NWI3ZGQ7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAjMTI0NjY1LCAjODAzM2IwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjb2xvcjogI2ZmZjsgfVxuICAuanVtYm90cm9uIGgxIHtcbiAgICBtYXJnaW46IDAgMCAyMHB4O1xuICAgIGNvbG9yOiAjNzViN2RkO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgZm9udC1zaXplOiA0OHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAtMnB4OyB9XG4gIC5qdW1ib3Ryb24gcCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NSk7IH1cbiAgLmp1bWJvdHJvbiAuY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLmp1bWJvdHJvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgd2lkdGg9JzY0JyBoZWlnaHQ9JzY0JyB2aWV3Qm94PScwIDAgNjQgNjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6bTAtMmMzLjMxNCAwIDYtMi42ODYgNi02cy0yLjY4Ni02LTYtNi02IDIuNjg2LTYgNiAyLjY4NiA2IDYgNnptMzMuNDE0LTZsNS45NS01Ljk1TDQ1Ljk1LjYzNiA0MCA2LjU4NiAzNC4wNS42MzYgMzIuNjM2IDIuMDUgMzguNTg2IDhsLTUuOTUgNS45NSAxLjQxNCAxLjQxNEw0MCA5LjQxNGw1Ljk1IDUuOTUgMS40MTQtMS40MTRMNDEuNDE0IDh6TTQwIDQ4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4em0wLTJjMy4zMTQgMCA2LTIuNjg2IDYtNnMtMi42ODYtNi02LTYtNiAyLjY4Ni02IDYgMi42ODYgNiA2IDZ6TTkuNDE0IDQwbDUuOTUtNS45NS0xLjQxNC0xLjQxNEw4IDM4LjU4NmwtNS45NS01Ljk1TC42MzYgMzQuMDUgNi41ODYgNDBsLTUuOTUgNS45NSAxLjQxNCAxLjQxNEw4IDQxLjQxNGw1Ljk1IDUuOTUgMS40MTQtMS40MTRMOS40MTQgNDB6JyBmaWxsPScjOUM5MkFDJyBmaWxsLW9wYWNpdHk9JzAuNCcgZmlsbC1ydWxlPSdldmVub2RkJy8+PC9zdmc+XCIpOyB9XG5cbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwOyB9XG5cbmNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLFxucHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSB7XG4gIGZvbnQtZmFtaWx5OiAnSW5jb25zb2xhdGEnO1xuICBmb250LXNpemU6IDE0cHg7IH1cblxuLmJvcmJvdCB7XG4gIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjZjNmM2YzOyB9XG5cbi5zLWhpZ2hsaWdodCB7XG4gIGNvbG9yOiAjZTE3MDc1OyB9XG5cbi5oaWRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4uY2FyZCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cbiAgLmNhcmQgLmNhcmQtaGVhZGVyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA0KTsgfVxuICAuY2FyZCAuY2FyZC1mb290ZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZmNmY2ZjOyB9XG5cbnByaXNtLWJsb2NrID4gcHJlIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuXG4uc2hvdy1jb2RlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDEycHg7IH1cbiAgLnNob3ctY29kZTpob3ZlciB7XG4gICAgY29sb3I6ICNlMTcwNzU7IH1cbiAgLnNob3ctY29kZSBpLm1kaSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gICAgY29sb3I6ICNlMTcwNzU7IH1cblxuc3Ryb25nIHtcbiAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YSc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICBmb250LXNpemU6IDEwMCU7XG4gIGNvbG9yOiAjMDAwO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG5cbi5idG4uYnRuLXNtYWxsIHtcbiAgcGFkZGluZzogMCAxMHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Myk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4uYnRuLmJ0bi1icm93c2VyIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiA5NSU7IH1cbiAgLmJ0bi5idG4tYnJvd3NlciBpbWcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH1cbiAgLmJ0bi5idG4tYnJvd3NlciBzcGFuIHtcbiAgICBmb250LWZhbWlseTogSW5jb25zb2xhdGE7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogIzk1YWNjNDsgfVxuXG4uYnRuLmJ0bi1mcmFtZXdvcmsge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tcmlnaHQ6IDFlbTsgfVxuXG4uaGlnaGxpZ2h0IHtcbiAgY29sb3I6ICNlMTcwNzU7IH1cblxuZGl2I2Rpc3F1c190aHJlYWQge1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGZkZmRmOyB9XG5cbmEuYnRuLmJ0bi1saW5rIHtcbiAgYmFja2dyb3VuZDogI2E2YjJiOTtcbiAgY29sb3I6ICNmZmY7XG4gIHBhZGRpbmc6IDAgNHB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDsgfVxuICBhLmJ0bi5idG4tbGluay5mYWNlYm9vazpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNiNTk5ODsgfVxuICBhLmJ0bi5idG4tbGluay50d2l0dGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRhMWYyOyB9XG4gIGEuYnRuLmJ0bi1saW5rLmxpbmtlZGluOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N2I1OyB9XG4gIGEuYnRuLmJ0bi1saW5rLmdwbHVzOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQ0YjM5OyB9XG5cbi5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjZjJmNWZjO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RmZGZkZjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMXJlbTtcbiAgY29sb3I6ICM4OTkyYTY7XG4gIGZvbnQtc2l6ZTogOTAlOyB9XG4gIC5jYXJkLWluZm8gLm1kaSB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY29sb3I6ICM0ZjU2Njc7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7IH1cbiAgICAuY2FyZC1pbmZvIC5tZGk6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMThweDsgfVxuXG4ubmF2LWxpbmsge1xuICBjb2xvcjogIzcyN2E4MTsgfVxuICAubmF2LWxpbmsgaS5tZGkge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgLm5hdi1saW5rOmhvdmVyIHtcbiAgICBjb2xvcjogI2UxNzA3NTsgfVxuXG5zcGFuLmNvbG9yLXByZXZpZXcge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxZW07XG4gIGhlaWdodDogMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRjM2M3O1xuICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICBtYXJnaW46IDAgMnB4OyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDI4YmNhOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNiODVjOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5pbmZvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWJjMGRlOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy53YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBhZDRlOyB9XG4gIHNwYW4uY29sb3ItcHJldmlldy5kYW5nZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkOTUzNGY7IH1cblxuLm5vdGUge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMCAxZW07XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiA5MCU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjQpO1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkICNlMTcwNzU7IH1cblxuaDYge1xuICBmb250LXNpemU6IDE0cHg7IH1cblxuc2VjdGlvbi5zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogM2VtOyB9XG4gIHNlY3Rpb24uc2VjdGlvbiBhIHtcbiAgICBmb250LXdlaWdodDogNTAwOyB9XG5cbi5idG4tY29sbGFwc2Uge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGZkZmRmO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBmb250LXNpemU6IDFlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6ICM4MjhiOTA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07IH1cbiAgLmJ0bi1jb2xsYXBzZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgICBib3JkZXItY29sb3I6ICNlNmRmZGY7XG4gICAgY29sb3I6ICM5MGExYWQ7IH1cbiIsIkBtaXhpbiBob3ZlciB7XG4gIC8vIFRPRE86IHJlLWVuYWJsZSBhbG9uZyB3aXRoIG1xNC1ob3Zlci1zaGltXG4vLyAgQGlmICRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnkge1xuLy8gICAgLy8gU2VlIE1lZGlhIFF1ZXJpZXMgTGV2ZWwgNDogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL21lZGlhcXVlcmllcy8jaG92ZXJcbi8vICAgIC8vIEN1cnJlbnRseSBzaGltbWVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL21xNC1ob3Zlci1zaGltXG4vLyAgICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuLy8gICAgICAmOmhvdmVyIHsgQGNvbnRlbnQgfVxuLy8gICAgfVxuLy8gIH1cbi8vICBAZWxzZSB7XG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBJbmRlbnRhdGlvblxuICAgICY6aG92ZXIgeyBAY29udGVudCB9XG4vLyBzY3NzLWxpbnQ6ZW5hYmxlIEluZGVudGF0aW9uXG4vLyAgfVxufVxuXG5cbkBtaXhpbiBob3Zlci1mb2N1cyB7XG4gIEBpZiAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5IHtcbiAgICAmOmZvY3VzIHsgQGNvbnRlbnQgfVxuICAgIEBpbmNsdWRlIGhvdmVyIHsgQGNvbnRlbnQgfVxuICB9IEBlbHNlIHtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWhvdmVyLWZvY3VzIHtcbiAgQGlmICRlbmFibGUtaG92ZXItbWVkaWEtcXVlcnkge1xuICAgICYsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudFxuICAgIH1cbiAgICBAaW5jbHVkZSBob3ZlciB7IEBjb250ZW50IH1cbiAgfSBAZWxzZSB7XG4gICAgJixcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gIEBpZiAkZW5hYmxlLWhvdmVyLW1lZGlhLXF1ZXJ5IHtcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50XG4gICAgfVxuICAgIEBpbmNsdWRlIGhvdmVyIHsgQGNvbnRlbnQgfVxuICB9IEBlbHNlIHtcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlLFxuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnRcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBIZWFkaW5nc1xuLy9cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbi5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICBtYXJnaW4tYm90dG9tOiAkaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTtcbiAgZm9udC1mYW1pbHk6ICRoZWFkaW5ncy1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRoZWFkaW5ncy1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWFkaW5ncy1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRoZWFkaW5ncy1jb2xvcjtcbn1cblxuaDEsIC5oMSB7IGZvbnQtc2l6ZTogJGgxLWZvbnQtc2l6ZTsgfVxuaDIsIC5oMiB7IGZvbnQtc2l6ZTogJGgyLWZvbnQtc2l6ZTsgfVxuaDMsIC5oMyB7IGZvbnQtc2l6ZTogJGgzLWZvbnQtc2l6ZTsgfVxuaDQsIC5oNCB7IGZvbnQtc2l6ZTogJGg0LWZvbnQtc2l6ZTsgfVxuaDUsIC5oNSB7IGZvbnQtc2l6ZTogJGg1LWZvbnQtc2l6ZTsgfVxuaDYsIC5oNiB7IGZvbnQtc2l6ZTogJGg2LWZvbnQtc2l6ZTsgfVxuXG4ubGVhZCB7XG4gIGZvbnQtc2l6ZTogJGxlYWQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGxlYWQtZm9udC13ZWlnaHQ7XG59XG5cbi8vIFR5cGUgZGlzcGxheSBjbGFzc2VzXG4uZGlzcGxheS0xIHtcbiAgZm9udC1zaXplOiAkZGlzcGxheTEtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5MS13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cbi5kaXNwbGF5LTIge1xuICBmb250LXNpemU6ICRkaXNwbGF5Mi1zaXplO1xuICBmb250LXdlaWdodDogJGRpc3BsYXkyLXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRkaXNwbGF5LWxpbmUtaGVpZ2h0O1xufVxuLmRpc3BsYXktMyB7XG4gIGZvbnQtc2l6ZTogJGRpc3BsYXkzLXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZGlzcGxheTMtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGRpc3BsYXktbGluZS1oZWlnaHQ7XG59XG4uZGlzcGxheS00IHtcbiAgZm9udC1zaXplOiAkZGlzcGxheTQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRkaXNwbGF5NC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZGlzcGxheS1saW5lLWhlaWdodDtcbn1cblxuXG4vL1xuLy8gSG9yaXpvbnRhbCBydWxlc1xuLy9cblxuaHIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci10b3A6ICRoci1ib3JkZXItd2lkdGggc29saWQgJGhyLWJvcmRlci1jb2xvcjtcbn1cblxuXG4vL1xuLy8gRW1waGFzaXNcbi8vXG5cbnNtYWxsLFxuLnNtYWxsIHtcbiAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbn1cblxubWFyayxcbi5tYXJrIHtcbiAgcGFkZGluZzogJG1hcmstcGFkZGluZztcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1hcmstYmc7XG59XG5cblxuLy9cbi8vIExpc3RzXG4vL1xuXG4ubGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIGxpc3QtdW5zdHlsZWQ7XG59XG5cbi8vIElubGluZSB0dXJucyBsaXN0IGl0ZW1zIGludG8gaW5saW5lLWJsb2NrXG4ubGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkO1xufVxuLmxpc3QtaW5saW5lLWl0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRsaXN0LWlubGluZS1wYWRkaW5nO1xuICB9XG59XG5cblxuLy9cbi8vIE1pc2Ncbi8vXG5cbi8vIEJ1aWxkcyBvbiBgYWJicmBcbi5pbml0aWFsaXNtIHtcbiAgZm9udC1zaXplOiA5MCU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEJsb2NrcXVvdGVzXG4uYmxvY2txdW90ZSB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZXI7XG4gIGZvbnQtc2l6ZTogJGJsb2NrcXVvdGUtZm9udC1zaXplO1xufVxuXG4uYmxvY2txdW90ZS1mb290ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiA4MCU7IC8vIGJhY2sgdG8gZGVmYXVsdCBmb250LXNpemVcbiAgY29sb3I6ICRibG9ja3F1b3RlLXNtYWxsLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMTQgXFwwMEEwXCI7IC8vIGVtIGRhc2gsIG5ic3BcbiAgfVxufVxuIiwiLy8gTGlzdHNcblxuLy8gVW5zdHlsZWQga2VlcHMgbGlzdCBpdGVtcyBibG9jayBsZXZlbCwganVzdCByZW1vdmVzIGRlZmF1bHQgYnJvd3NlciBwYWRkaW5nIGFuZCBsaXN0LXN0eWxlXG5AbWl4aW4gbGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbiIsIi8vIElubGluZSBhbmQgYmxvY2sgY29kZSBzdHlsZXNcbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG59XG5cbi8vIElubGluZSBjb2RlXG5jb2RlIHtcbiAgcGFkZGluZzogJGNvZGUtcGFkZGluZy15ICRjb2RlLXBhZGRpbmcteDtcbiAgZm9udC1zaXplOiAkY29kZS1mb250LXNpemU7XG4gIGNvbG9yOiAkY29kZS1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvZGUtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIFN0cmVhbWxpbmUgdGhlIHN0eWxlIHdoZW4gaW5zaWRlIGFuY2hvcnMgdG8gYXZvaWQgYnJva2VuIHVuZGVybGluZSBhbmQgbW9yZVxuICBhID4gJiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFVzZXIgaW5wdXQgdHlwaWNhbGx5IGVudGVyZWQgdmlhIGtleWJvYXJkXG5rYmQge1xuICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nLXkgJGNvZGUtcGFkZGluZy14O1xuICBmb250LXNpemU6ICRjb2RlLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICRrYmQtY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRrYmQtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtc20pO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRrYmQtYm94LXNoYWRvdyk7XG5cbiAga2JkIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICBmb250LXdlaWdodDogJG5lc3RlZC1rYmQtZm9udC13ZWlnaHQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxufVxuXG4vLyBCbG9ja3Mgb2YgY29kZVxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGZvbnQtc2l6ZTogJGNvZGUtZm9udC1zaXplO1xuICBjb2xvcjogJHByZS1jb2xvcjtcblxuICAvLyBBY2NvdW50IGZvciBzb21lIGNvZGUgb3V0cHV0cyB0aGF0IHBsYWNlIGNvZGUgdGFncyBpbiBwcmUgdGFnc1xuICBjb2RlIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG5cbi8vIEVuYWJsZSBzY3JvbGxhYmxlIGJsb2NrcyBvZiBjb2RlXG4ucHJlLXNjcm9sbGFibGUge1xuICBtYXgtaGVpZ2h0OiAkcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xufVxuIiwiLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1c1xuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpdXM7XG4gIH1cbn1cbiIsIi8vIENvbnRhaW5lciB3aWR0aHNcbi8vXG4vLyBTZXQgdGhlIGNvbnRhaW5lciB3aWR0aCwgYW5kIG92ZXJyaWRlIGl0IGZvciBmaXhlZCBuYXZiYXJzIGluIG1lZGlhIHF1ZXJpZXMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gICAgQGluY2x1ZGUgbWFrZS1jb250YWluZXItbWF4LXdpZHRocygpO1xuICB9XG59XG5cbi8vIEZsdWlkIGNvbnRhaW5lclxuLy9cbi8vIFV0aWxpemVzIHRoZSBtaXhpbiBtZWFudCBmb3IgZml4ZWQgd2lkdGggY29udGFpbmVycywgYnV0IHdpdGggMTAwJSB3aWR0aCBmb3Jcbi8vIGZsdWlkLCBmdWxsIHdpZHRoIGxheW91dHMuXG5cbkBpZiAkZW5hYmxlLWdyaWQtY2xhc3NlcyB7XG4gIC5jb250YWluZXItZmx1aWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIG1ha2UtY29udGFpbmVyKCk7XG4gIH1cbn1cblxuLy8gUm93XG4vL1xuLy8gUm93cyBjb250YWluIGFuZCBjbGVhciB0aGUgZmxvYXRzIG9mIHlvdXIgY29sdW1ucy5cblxuQGlmICRlbmFibGUtZ3JpZC1jbGFzc2VzIHtcbiAgLnJvdyB7XG4gICAgQGluY2x1ZGUgbWFrZS1yb3coKTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgbmVnYXRpdmUgbWFyZ2luIGZyb20gZGVmYXVsdCAucm93LCB0aGVuIHRoZSBob3Jpem9udGFsIHBhZGRpbmdcbiAgLy8gZnJvbSBhbGwgaW1tZWRpYXRlIGNoaWxkcmVuIGNvbHVtbnMgKHRvIHByZXZlbnQgcnVuYXdheSBzdHlsZSBpbmhlcml0YW5jZSkuXG4gIC5uby1ndXR0ZXJzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgICA+IC5jb2wsXG4gICAgPiBbY2xhc3MqPVwiY29sLVwiXSB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBDb2x1bW5zXG4vL1xuLy8gQ29tbW9uIHN0eWxlcyBmb3Igc21hbGwgYW5kIGxhcmdlIGdyaWQgY29sdW1uc1xuXG5AaWYgJGVuYWJsZS1ncmlkLWNsYXNzZXMge1xuICBAaW5jbHVkZSBtYWtlLWdyaWQtY29sdW1ucygpO1xufVxuIiwiLy8vIEdyaWQgc3lzdGVtXG4vL1xuLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLlxuXG5AbWl4aW4gbWFrZS1jb250YWluZXIoKSB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIHBhZGRpbmctcmlnaHQ6ICgkZ3JpZC1ndXR0ZXItd2lkdGggLyAyKTtcbiAgcGFkZGluZy1sZWZ0OiAgKCRncmlkLWd1dHRlci13aWR0aCAvIDIpO1xuICB3aWR0aDogMTAwJTtcbn1cblxuXG4vLyBGb3IgZWFjaCBicmVha3BvaW50LCBkZWZpbmUgdGhlIG1heGltdW0gd2lkdGggb2YgdGhlIGNvbnRhaW5lciBpbiBhIG1lZGlhIHF1ZXJ5XG5AbWl4aW4gbWFrZS1jb250YWluZXItbWF4LXdpZHRocygkbWF4LXdpZHRoczogJGNvbnRhaW5lci1tYXgtd2lkdGhzLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBlYWNoICRicmVha3BvaW50LCAkY29udGFpbmVyLW1heC13aWR0aCBpbiAkbWF4LXdpZHRocyB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBtYXgtd2lkdGg6ICRjb250YWluZXItbWF4LXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWFrZS1yb3coKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAoJGdyaWQtZ3V0dGVyLXdpZHRoIC8gLTIpO1xuICBtYXJnaW4tbGVmdDogICgkZ3JpZC1ndXR0ZXItd2lkdGggLyAtMik7XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1yZWFkeSgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBiZWNvbWluZyB0b28gbmFycm93IHdoZW4gYXQgc21hbGxlciBncmlkIHRpZXJzIGJ5XG4gIC8vIGFsd2F5cyBzZXR0aW5nIGB3aWR0aDogMTAwJTtgLiBUaGlzIHdvcmtzIGJlY2F1c2Ugd2UgdXNlIGBmbGV4YCB2YWx1ZXNcbiAgLy8gbGF0ZXIgb24gdG8gb3ZlcnJpZGUgdGhpcyBpbml0aWFsIHdpZHRoLlxuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4OyAvLyBQcmV2ZW50IGNvbGxhcHNpbmdcbiAgcGFkZGluZy1yaWdodDogKCRncmlkLWd1dHRlci13aWR0aCAvIDIpO1xuICBwYWRkaW5nLWxlZnQ6ICAoJGdyaWQtZ3V0dGVyLXdpZHRoIC8gMik7XG59XG5cbkBtaXhpbiBtYWtlLWNvbCgkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgZmxleDogMCAwIHBlcmNlbnRhZ2UoJHNpemUgLyAkY29sdW1ucyk7XG4gIC8vIEFkZCBhIGBtYXgtd2lkdGhgIHRvIGVuc3VyZSBjb250ZW50IHdpdGhpbiBlYWNoIGNvbHVtbiBkb2VzIG5vdCBibG93IG91dFxuICAvLyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbi4gQXBwbGllcyB0byBJRTEwKyBhbmQgRmlyZWZveC4gQ2hyb21lIGFuZCBTYWZhcmlcbiAgLy8gZG8gbm90IGFwcGVhciB0byByZXF1aXJlIHRoaXMuXG4gIG1heC13aWR0aDogcGVyY2VudGFnZSgkc2l6ZSAvICRjb2x1bW5zKTtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4xLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNzY3cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIDFweCwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW5mcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUpXG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUpXG4gIH1cbn1cbiIsIi8vIEZyYW1ld29yayBncmlkIGdlbmVyYXRpb25cbi8vXG4vLyBVc2VkIG9ubHkgYnkgQm9vdHN0cmFwIHRvIGdlbmVyYXRlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBncmlkIGNsYXNzZXMgZ2l2ZW5cbi8vIGFueSB2YWx1ZSBvZiBgJGdyaWQtY29sdW1uc2AuXG5cbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkY29sdW1uczogJGdyaWQtY29sdW1ucywgJGd1dHRlcjogJGdyaWQtZ3V0dGVyLXdpZHRoLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIC8vIENvbW1vbiBwcm9wZXJ0aWVzIGZvciBhbGwgYnJlYWtwb2ludHNcbiAgJWdyaWQtY29sdW1uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWluLWhlaWdodDogMXB4OyAvLyBQcmV2ZW50IGNvbHVtbnMgZnJvbSBjb2xsYXBzaW5nIHdoZW4gZW1wdHlcbiAgICBwYWRkaW5nLXJpZ2h0OiAoJGd1dHRlciAvIDIpO1xuICAgIHBhZGRpbmctbGVmdDogICgkZ3V0dGVyIC8gMik7XG4gIH1cblxuICBAZWFjaCAkYnJlYWtwb2ludCBpbiBtYXAta2V5cygkYnJlYWtwb2ludHMpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG5cbiAgICAvLyBBbGxvdyBjb2x1bW5zIHRvIHN0cmV0Y2ggZnVsbCB3aWR0aCBiZWxvdyB0aGVpciBicmVha3BvaW50c1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgLmNvbCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgIEBleHRlbmQgJWdyaWQtY29sdW1uO1xuICAgICAgfVxuICAgIH1cbiAgICAuY29sI3skaW5maXh9LFxuICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICBAZXh0ZW5kICVncmlkLWNvbHVtbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIC8vIFByb3ZpZGUgYmFzaWMgYC5jb2wte2JwfWAgY2xhc3NlcyBmb3IgZXF1YWwtd2lkdGggZmxleGJveCBjb2x1bW5zXG4gICAgICAuY29sI3skaW5maXh9IHtcbiAgICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAuY29sI3skaW5maXh9LWF1dG8ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTsgLy8gUmVzZXQgZWFybGllciBncmlkIHRpZXJzXG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAuY29sI3skaW5maXh9LSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbCgkaSwgJGNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAub3JkZXIjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgIG9yZGVyOiAkaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2ljIEJvb3RzdHJhcCB0YWJsZVxuLy9cblxuLnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJnOyAvLyBSZXNldCBmb3IgbmVzdGluZyB3aXRoaW4gcGFyZW50cyB3aXRoIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1jZWxsLXBhZGRpbmc7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBib3JkZXItdG9wOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0aGVhZCB0aCB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICBib3JkZXItYm90dG9tOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0Ym9keSArIHRib2R5IHtcbiAgICBib3JkZXItdG9wOiAoMiAqICR0YWJsZS1ib3JkZXItd2lkdGgpIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICAudGFibGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWJnO1xuICB9XG59XG5cblxuLy9cbi8vIENvbmRlbnNlZCB0YWJsZSB3LyBoYWxmIHBhZGRpbmdcbi8vXG5cbi50YWJsZS1zbSB7XG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJHRhYmxlLWNlbGwtcGFkZGluZy1zbTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlcmVkIHZlcnNpb25cbi8vXG4vLyBBZGQgYm9yZGVycyBhbGwgYXJvdW5kIHRoZSB0YWJsZSBhbmQgYmV0d2VlbiBhbGwgdGhlIGNvbHVtbnMuXG5cbi50YWJsZS1ib3JkZXJlZCB7XG4gIGJvcmRlcjogJHRhYmxlLWJvcmRlci13aWR0aCBzb2xpZCAkdGFibGUtYm9yZGVyLWNvbG9yO1xuXG4gIHRoLFxuICB0ZCB7XG4gICAgYm9yZGVyOiAkdGFibGUtYm9yZGVyLXdpZHRoIHNvbGlkICR0YWJsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICB0aGVhZCB7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogKDIgKiAkdGFibGUtYm9yZGVyLXdpZHRoKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBaZWJyYS1zdHJpcGluZ1xuLy9cbi8vIERlZmF1bHQgemVicmEtc3RyaXBlIHN0eWxlcyAoYWx0ZXJuYXRpbmcgZ3JheSBhbmQgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMpXG5cbi50YWJsZS1zdHJpcGVkIHtcbiAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWFjY2VudC1iZztcbiAgfVxufVxuXG5cbi8vIEhvdmVyIGVmZmVjdFxuLy9cbi8vIFBsYWNlZCBoZXJlIHNpbmNlIGl0IGhhcyB0byBjb21lIGFmdGVyIHRoZSBwb3RlbnRpYWwgemVicmEgc3RyaXBpbmdcblxuLnRhYmxlLWhvdmVyIHtcbiAgdGJvZHkgdHIge1xuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1ob3Zlci1iZztcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUYWJsZSBiYWNrZ3JvdW5kc1xuLy9cbi8vIEV4YWN0IHNlbGVjdG9ycyBiZWxvdyByZXF1aXJlZCB0byBvdmVycmlkZSBgLnRhYmxlLXN0cmlwZWRgIGFuZCBwcmV2ZW50XG4vLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuXG5AZWFjaCAkY29sb3IsICR2YWx1ZSBpbiAkdGhlbWUtY29sb3JzIHtcbiAgQGluY2x1ZGUgdGFibGUtcm93LXZhcmlhbnQoJGNvbG9yLCB0aGVtZS1jb2xvci1sZXZlbCgkY29sb3IsIC05KSk7XG59XG5cbkBpbmNsdWRlIHRhYmxlLXJvdy12YXJpYW50KGFjdGl2ZSwgJHRhYmxlLWFjdGl2ZS1iZyk7XG5cblxuLy8gSW52ZXJzZSBzdHlsZXNcbi8vXG4vLyBTYW1lIHRhYmxlIG1hcmt1cCwgYnV0IGludmVydGVkIGNvbG9yIHNjaGVtZTogZGFyayBiYWNrZ3JvdW5kIGFuZCBsaWdodCB0ZXh0LlxuXG4udGhlYWQtaW52ZXJzZSB7XG4gIHRoIHtcbiAgICBjb2xvcjogJHRhYmxlLWludmVyc2UtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWludmVyc2UtYmc7XG4gIH1cbn1cblxuLnRoZWFkLWRlZmF1bHQge1xuICB0aCB7XG4gICAgY29sb3I6ICR0YWJsZS1oZWFkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLWJnO1xuICB9XG59XG5cbi50YWJsZS1pbnZlcnNlIHtcbiAgY29sb3I6ICR0YWJsZS1pbnZlcnNlLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1iZztcblxuICB0aCxcbiAgdGQsXG4gIHRoZWFkIHRoIHtcbiAgICBib3JkZXItY29sb3I6ICR0YWJsZS1pbnZlcnNlLWJvcmRlci1jb2xvcjtcbiAgfVxuXG4gICYudGFibGUtYm9yZGVyZWQge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICYudGFibGUtc3RyaXBlZCB7XG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1hY2NlbnQtYmc7XG4gICAgfVxuICB9XG5cbiAgJi50YWJsZS1ob3ZlciB7XG4gICAgdGJvZHkgdHIge1xuICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaW52ZXJzZS1ob3Zlci1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vLyBSZXNwb25zaXZlIHRhYmxlc1xuLy9cbi8vIEFkZCBgLnRhYmxlLXJlc3BvbnNpdmVgIHRvIGAudGFibGVgcyBhbmQgd2UnbGwgbWFrZSB0aGVtIG1vYmlsZSBmcmllbmRseSBieVxuLy8gZW5hYmxpbmcgaG9yaXpvbnRhbCBzY3JvbGxpbmcuIE9ubHkgYXBwbGllcyA8NzY4cHguIEV2ZXJ5dGhpbmcgYWJvdmUgdGhhdFxuLy8gd2lsbCBkaXNwbGF5IG5vcm1hbGx5LlxuXG4udGFibGUtcmVzcG9uc2l2ZSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvcHVsbC8xMDA1N1xuXG4gICAgLy8gUHJldmVudCBkb3VibGUgYm9yZGVyIG9uIGhvcml6b250YWwgc2Nyb2xsIGR1ZSB0byB1c2Ugb2YgYGRpc3BsYXk6IGJsb2NrO2BcbiAgICAmLnRhYmxlLWJvcmRlcmVkIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFRhYmxlc1xuXG5AbWl4aW4gdGFibGUtcm93LXZhcmlhbnQoJHN0YXRlLCAkYmFja2dyb3VuZCkge1xuICAvLyBFeGFjdCBzZWxlY3RvcnMgYmVsb3cgcmVxdWlyZWQgdG8gb3ZlcnJpZGUgYC50YWJsZS1zdHJpcGVkYCBhbmQgcHJldmVudFxuICAvLyBpbmhlcml0YW5jZSB0byBuZXN0ZWQgdGFibGVzLlxuICAudGFibGUtI3skc3RhdGV9IHtcbiAgICAmLFxuICAgID4gdGgsXG4gICAgPiB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZXMgZm9yIGAudGFibGUtaG92ZXJgXG4gIC8vIE5vdGU6IHRoaXMgaXMgbm90IGF2YWlsYWJsZSBmb3IgY2VsbHMgb3Igcm93cyB3aXRoaW4gYHRoZWFkYCBvciBgdGZvb3RgLlxuICAudGFibGUtaG92ZXIge1xuICAgICRob3Zlci1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDUlKTtcblxuICAgIC50YWJsZS0jeyRzdGF0ZX0ge1xuICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcblxuICAgICAgICA+IHRkLFxuICAgICAgICA+IHRoIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQm9vdHN0cmFwIGZ1bmN0aW9uc1xuLy9cbi8vIFV0aWxpdHkgbWl4aW5zIGFuZCBmdW5jdGlvbnMgZm9yIGV2YWx1dGF0aW5nIHNvdXJjZSBjb2RlIGFjcm9zcyBvdXIgdmFyaWFibGVzLCBtYXBzLCBhbmQgbWl4aW5zLlxuXG4vLyBBc2NlbmRpbmdcbi8vIFVzZWQgdG8gZXZhbHVhdGUgU2FzcyBtYXBzIGxpa2Ugb3VyIGdyaWQgYnJlYWtwb2ludHMuXG5AbWl4aW4gX2Fzc2VydC1hc2NlbmRpbmcoJG1hcCwgJG1hcC1uYW1lKSB7XG4gICRwcmV2LWtleTogbnVsbDtcbiAgJHByZXYtbnVtOiBudWxsO1xuICBAZWFjaCAka2V5LCAkbnVtIGluICRtYXAge1xuICAgIEBpZiAkcHJldi1udW0gPT0gbnVsbCB7XG4gICAgICAvLyBEbyBub3RoaW5nXG4gICAgfSBAZWxzZSBpZiBub3QgY29tcGFyYWJsZSgkcHJldi1udW0sICRudW0pIHtcbiAgICAgIEB3YXJuIFwiUG90ZW50aWFsbHkgaW52YWxpZCB2YWx1ZSBmb3IgI3skbWFwLW5hbWV9OiBUaGlzIG1hcCBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciwgYnV0IGtleSAnI3ska2V5fScgaGFzIHZhbHVlICN7JG51bX0gd2hvc2UgdW5pdCBtYWtlcyBpdCBpbmNvbXBhcmFibGUgdG8gI3skcHJldi1udW19LCB0aGUgdmFsdWUgb2YgdGhlIHByZXZpb3VzIGtleSAnI3skcHJldi1rZXl9JyAhXCI7XG4gICAgfSBAZWxzZSBpZiAkcHJldi1udW0gPj0gJG51bSB7XG4gICAgICBAd2FybiBcIkludmFsaWQgdmFsdWUgZm9yICN7JG1hcC1uYW1lfTogVGhpcyBtYXAgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIsIGJ1dCBrZXkgJyN7JGtleX0nIGhhcyB2YWx1ZSAjeyRudW19IHdoaWNoIGlzbid0IGdyZWF0ZXIgdGhhbiAjeyRwcmV2LW51bX0sIHRoZSB2YWx1ZSBvZiB0aGUgcHJldmlvdXMga2V5ICcjeyRwcmV2LWtleX0nICFcIjtcbiAgICB9XG4gICAgJHByZXYta2V5OiAka2V5O1xuICAgICRwcmV2LW51bTogJG51bTtcbiAgfVxufVxuXG4vLyBTdGFydHMgYXQgemVyb1xuLy8gQW5vdGhlciBncmlkIG1peGluIHRoYXQgZW5zdXJlcyB0aGUgbWluLXdpZHRoIG9mIHRoZSBsb3dlc3QgYnJlYWtwb2ludCBzdGFydHMgYXQgMC5cbkBtaXhpbiBfYXNzZXJ0LXN0YXJ0cy1hdC16ZXJvKCRtYXApIHtcbiAgJHZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgJGZpcnN0LXZhbHVlOiBudGgoJHZhbHVlcywgMSk7XG4gIEBpZiAkZmlyc3QtdmFsdWUgIT0gMCB7XG4gICAgQHdhcm4gXCJGaXJzdCBicmVha3BvaW50IGluIGAkZ3JpZC1icmVha3BvaW50c2AgbXVzdCBzdGFydCBhdCAwLCBidXQgc3RhcnRzIGF0ICN7JGZpcnN0LXZhbHVlfS5cIjtcbiAgfVxufVxuXG4vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG4vLyBVc2VkIG9uIG91ciBTVkcgaWNvbiBiYWNrZ3JvdW5kcyBmb3IgY3VzdG9tIGZvcm1zLlxuLy9cbi8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxuLy8gQHBhcmFtIHtTdHJpbmd9ICRyZXBsYWNlICgnJykgLSBOZXcgdmFsdWVcbi8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xuQGZ1bmN0aW9uIHN0ci1yZXBsYWNlKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlOiBcIlwiKSB7XG4gICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuLy8gQ29sb3IgY29udHJhc3RcbkBtaXhpbiBjb2xvci15aXEoJGNvbG9yKSB7XG4gICRyOiByZWQoJGNvbG9yKTtcbiAgJGc6IGdyZWVuKCRjb2xvcik7XG4gICRiOiBibHVlKCRjb2xvcik7XG5cbiAgJHlpcTogKCgkciAqIDI5OSkgKyAoJGcgKiA1ODcpICsgKCRiICogMTE0KSkgLyAxMDAwO1xuXG4gIEBpZiAoJHlpcSA+PSAxNTApIHtcbiAgICBjb2xvcjogIzExMTtcbiAgfSBAZWxzZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLy8gUmV0cmVpdmUgY29sb3IgU2FzcyBtYXBzXG5AZnVuY3Rpb24gY29sb3IoJGtleTogXCJibHVlXCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRjb2xvcnMsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gdGhlbWUtY29sb3IoJGtleTogXCJwcmltYXJ5XCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1jb2xvcnMsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gZ3JheXNjYWxlKCRrZXk6IFwiMTAwXCIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRncmF5cywgJGtleSk7XG59XG5cbi8vIFJlcXVlc3QgYSB0aGVtZSBjb2xvciBsZXZlbFxuQGZ1bmN0aW9uIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvci1uYW1lOiBcInByaW1hcnlcIiwgJGxldmVsOiAwKSB7XG4gICRjb2xvcjogdGhlbWUtY29sb3IoJGNvbG9yLW5hbWUpO1xuICAkY29sb3ItYmFzZTogaWYoJGxldmVsID4gMCwgIzAwMCwgI2ZmZik7XG5cbiAgQGlmICRsZXZlbCA8IDAge1xuICAgIC8vIExpZ2h0ZXIgdmFsdWVzIG5lZWQgYSBxdWljayBkb3VibGUgbmVnYXRpdmUgZm9yIHRoZSBTYXNzIG1hdGggdG8gd29ya1xuICAgIEByZXR1cm4gbWl4KCRjb2xvci1iYXNlLCAkY29sb3IsICRsZXZlbCAqIC0xICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiBtaXgoJGNvbG9yLWJhc2UsICRjb2xvciwgJGxldmVsICogJHRoZW1lLWNvbG9yLWludGVydmFsKTtcbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnRcblxuLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogJGJ0bi1mb250LXdlaWdodDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYm9yZGVyOiAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGlucHV0LWJ0bi1wYWRkaW5nLXksICRpbnB1dC1idG4tcGFkZGluZy14LCAkZm9udC1zaXplLWJhc2UsICRpbnB1dC1idG4tbGluZS1oZWlnaHQsICRidG4tYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oJGJ0bi10cmFuc2l0aW9uKTtcblxuICAvLyBTaGFyZSBob3ZlciBhbmQgZm9jdXMgc3R5bGVzXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbiAgJjpmb2N1cyxcbiAgJi5mb2N1cyB7XG4gICAgb3V0bGluZTogMDtcbiAgICBib3gtc2hhZG93OiAkYnRuLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogLjY1O1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3cobm9uZSk7XG4gIH1cblxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWZvY3VzLWJveC1zaGFkb3csICRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbi8vIEZ1dHVyZS1wcm9vZiBkaXNhYmxpbmcgb2YgY2xpY2tzIG9uIGA8YT5gIGVsZW1lbnRzXG5hLmJ0bi5kaXNhYmxlZCxcbmZpZWxkc2V0W2Rpc2FibGVkXSBhLmJ0biB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5cbi8vXG4vLyBBbHRlcm5hdGUgYnV0dG9uc1xuLy9cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBidXR0b24tdmFyaWFudCgkdmFsdWUsICR2YWx1ZSk7XG4gIH1cbn1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5idG4tb3V0bGluZS0jeyRjb2xvcn0ge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1vdXRsaW5lLXZhcmlhbnQoJHZhbHVlLCAjZmZmKTtcbiAgfVxufVxuXG5cbi8vXG4vLyBMaW5rIGJ1dHRvbnNcbi8vXG5cbi8vIE1ha2UgYSBidXR0b24gbG9vayBhbmQgYmVoYXZlIGxpa2UgYSBsaW5rXG4uYnRuLWxpbmsge1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgY29sb3I6ICRsaW5rLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICYsXG4gICY6YWN0aXZlLFxuICAmLmFjdGl2ZSxcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxuICAmLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICBjb2xvcjogJGxpbmstaG92ZXItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkbGluay1ob3Zlci1kZWNvcmF0aW9uO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkYnRuLWxpbmstZGlzYWJsZWQtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIEJ1dHRvbiBTaXplc1xuLy9cblxuLmJ0bi1sZyB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1zaXplKCRpbnB1dC1idG4tcGFkZGluZy15LWxnLCAkaW5wdXQtYnRuLXBhZGRpbmcteC1sZywgJGZvbnQtc2l6ZS1sZywgJGxpbmUtaGVpZ2h0LWxnLCAkYnRuLWJvcmRlci1yYWRpdXMtbGcpO1xufVxuXG4uYnRuLXNtIHtcbiAgQGluY2x1ZGUgYnV0dG9uLXNpemUoJGlucHV0LWJ0bi1wYWRkaW5nLXktc20sICRpbnB1dC1idG4tcGFkZGluZy14LXNtLCAkZm9udC1zaXplLXNtLCAkbGluZS1oZWlnaHQtc20sICRidG4tYm9yZGVyLXJhZGl1cy1zbSk7XG59XG5cblxuLy9cbi8vIEJsb2NrIGJ1dHRvblxuLy9cblxuLmJ0bi1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLy8gVmVydGljYWxseSBzcGFjZSBvdXQgbXVsdGlwbGUgYmxvY2sgYnV0dG9uc1xuLmJ0bi1ibG9jayArIC5idG4tYmxvY2sge1xuICBtYXJnaW4tdG9wOiAkYnRuLWJsb2NrLXNwYWNpbmcteTtcbn1cblxuLy8gU3BlY2lmaWNpdHkgb3ZlcnJpZGVzXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cImJ1dHRvblwiXSB7XG4gICYuYnRuLWJsb2NrIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLy8gQnV0dG9uIHZhcmlhbnRzXG4vL1xuLy8gRWFzaWx5IHB1bXAgb3V0IGRlZmF1bHQgc3R5bGVzLCBhcyB3ZWxsIGFzIDpob3ZlciwgOmZvY3VzLCA6YWN0aXZlLFxuLy8gYW5kIGRpc2FibGVkIG9wdGlvbnMgZm9yIGFsbCBidXR0b25zXG5cbkBtaXhpbiBidXR0b24tdmFyaWFudCgkYmFja2dyb3VuZCwgJGJvcmRlciwgJGFjdGl2ZS1iYWNrZ3JvdW5kOiBkYXJrZW4oJGJhY2tncm91bmQsIDcuNSUpLCAkYWN0aXZlLWJvcmRlcjogZGFya2VuKCRib3JkZXIsIDEwJSkpIHtcbiAgQGluY2x1ZGUgY29sb3IteWlxKCRiYWNrZ3JvdW5kKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlcjtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdygkYnRuLWJveC1zaGFkb3cpO1xuXG4gICY6aG92ZXIge1xuICAgIEBpbmNsdWRlIGNvbG9yLXlpcSgkYmFja2dyb3VuZCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjdGl2ZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlci1jb2xvcjogJGFjdGl2ZS1ib3JkZXI7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICAvLyBBdm9pZCB1c2luZyBtaXhpbiBzbyB3ZSBjYW4gcGFzcyBjdXN0b20gZm9jdXMgc2hhZG93IHByb3Blcmx5XG4gICAgQGlmICRlbmFibGUtc2hhZG93cyB7XG4gICAgICBib3gtc2hhZG93OiAkYnRuLWJveC1zaGFkb3csIDAgMCAwIDNweCByZ2JhKCRib3JkZXIsIC41KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKCRib3JkZXIsIC41KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBjb21lcyBmaXJzdCBzbyBhY3RpdmUgY2FuIHByb3Blcmx5IHJlc3R5bGVcbiAgJi5kaXNhYmxlZCxcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyO1xuICB9XG5cbiAgJjphY3RpdmUsXG4gICYuYWN0aXZlLFxuICAuc2hvdyA+ICYuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWN0aXZlLWJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLy8gUmVtb3ZlIHRoZSBncmFkaWVudCBmb3IgdGhlIHByZXNzZWQvYWN0aXZlIHN0YXRlXG4gICAgYm9yZGVyLWNvbG9yOiAkYWN0aXZlLWJvcmRlcjtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRidG4tYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24tb3V0bGluZS12YXJpYW50KCRjb2xvciwgJGNvbG9yLWhvdmVyOiAjZmZmKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICBib3JkZXItY29sb3I6ICRjb2xvcjtcblxuICBAaW5jbHVkZSBob3ZlciB7XG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmZvY3VzLFxuICAmLmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgkY29sb3IsIC41KTtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmOmFjdGl2ZSxcbiAgJi5hY3RpdmUsXG4gIC5zaG93ID4gJi5kcm9wZG93bi10b2dnbGUge1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vIEJ1dHRvbiBzaXplc1xuQG1peGluIGJ1dHRvbi1zaXplKCRwYWRkaW5nLXksICRwYWRkaW5nLXgsICRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJGJvcmRlci1yYWRpdXMpIHtcbiAgcGFkZGluZzogJHBhZGRpbmcteSAkcGFkZGluZy14O1xuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xufVxuIiwiQG1peGluIHRyYW5zaXRpb24oJHRyYW5zaXRpb24uLi4pIHtcbiAgQGlmICRlbmFibGUtdHJhbnNpdGlvbnMge1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID09IDAge1xuICAgICAgdHJhbnNpdGlvbjogJHRyYW5zaXRpb24tYmFzZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiLmZhZGUge1xuICBvcGFjaXR5OiAwO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWZhZGUpO1xuXG4gICYuc2hvdyB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4uY29sbGFwc2Uge1xuICBkaXNwbGF5OiBub25lO1xuICAmLnNob3cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbnRyIHtcbiAgJi5jb2xsYXBzZS5zaG93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gIH1cbn1cblxudGJvZHkge1xuICAmLmNvbGxhcHNlLnNob3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDtcbiAgfVxufVxuXG4uY29sbGFwc2luZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLWNvbGxhcHNlKTtcbn1cbiIsIi8vIFRoZSBkcm9wZG93biB3cmFwcGVyIChgPGRpdj5gKVxuLmRyb3B1cCxcbi5kcm9wZG93biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIC8vIEdlbmVyYXRlIHRoZSBjYXJldCBhdXRvbWF0aWNhbGx5XG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAkY2FyZXQtd2lkdGggKiAuODU7XG4gICAgdmVydGljYWwtYWxpZ246ICRjYXJldC13aWR0aCAqIC44NTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci10b3A6ICRjYXJldC13aWR0aCBzb2xpZDtcbiAgICBib3JkZXItcmlnaHQ6ICRjYXJldC13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItbGVmdDogJGNhcmV0LXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgJjplbXB0eTo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi8vIEFsbG93IGZvciBkcm9wZG93bnMgdG8gZ28gYm90dG9tIHVwIChha2EsIGRyb3B1cC1tZW51KVxuLy8gSnVzdCBhZGQgLmRyb3B1cCBhZnRlciB0aGUgc3RhbmRhcmQgLmRyb3Bkb3duIGNsYXNzIGFuZCB5b3UncmUgc2V0LlxuLmRyb3B1cCB7XG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206ICRkcm9wZG93bi1zcGFjZXI7XG4gIH1cblxuICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGNhcmV0LXdpZHRoIHNvbGlkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgZHJvcGRvd24gbWVudVxuLmRyb3Bkb3duLW1lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1kcm9wZG93bjtcbiAgZGlzcGxheTogbm9uZTsgLy8gbm9uZSBieSBkZWZhdWx0LCBidXQgYmxvY2sgb24gXCJvcGVuXCIgb2YgdGhlIG1lbnVcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1pbi13aWR0aDogJGRyb3Bkb3duLW1pbi13aWR0aDtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmcteSAwO1xuICBtYXJnaW46ICRkcm9wZG93bi1zcGFjZXIgMCAwOyAvLyBvdmVycmlkZSBkZWZhdWx0IHVsXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlOyAvLyBSZWRlY2xhcmUgYmVjYXVzZSBuZXN0aW5nIGNhbiBjYXVzZSBpbmhlcml0YW5jZSBpc3N1ZXNcbiAgY29sb3I6ICRib2R5LWNvbG9yO1xuICB0ZXh0LWFsaWduOiBsZWZ0OyAvLyBFbnN1cmVzIHByb3BlciBhbGlnbm1lbnQgaWYgcGFyZW50IGhhcyBpdCBjaGFuZ2VkIChlLmcuLCBtb2RhbCBmb290ZXIpXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iZztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyLXdpZHRoIHNvbGlkICRkcm9wZG93bi1ib3JkZXItY29sb3I7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRkcm9wZG93bi1ib3gtc2hhZG93KTtcbn1cblxuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBgPGhyPmApIHdpdGhpbiB0aGUgZHJvcGRvd25cbi5kcm9wZG93bi1kaXZpZGVyIHtcbiAgQGluY2x1ZGUgbmF2LWRpdmlkZXIoJGRyb3Bkb3duLWRpdmlkZXItYmcpO1xufVxuXG4vLyBMaW5rcywgYnV0dG9ucywgYW5kIG1vcmUgd2l0aGluIHRoZSBkcm9wZG93biBtZW51XG4vL1xuLy8gYDxidXR0b24+YC1zcGVjaWZpYyBzdHlsZXMgYXJlIGRlbm90ZWQgd2l0aCBgLy8gRm9yIDxidXR0b24+c2Bcbi5kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyAvLyBGb3IgYDxidXR0b24+YHNcbiAgcGFkZGluZzogJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy15ICRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDtcbiAgY2xlYXI6IGJvdGg7XG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBjb2xvcjogJGRyb3Bkb3duLWxpbmstY29sb3I7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7IC8vIEZvciBgPGJ1dHRvbj5gc1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBwcmV2ZW50IGxpbmtzIGZyb20gcmFuZG9tbHkgYnJlYWtpbmcgb250byBuZXcgbGluZXNcbiAgYmFja2dyb3VuZDogbm9uZTsgLy8gRm9yIGA8YnV0dG9uPmBzXG4gIGJvcmRlcjogMDsgLy8gRm9yIGA8YnV0dG9uPmBzXG5cbiAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1ob3Zlci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyb3Bkb3duLWxpbmstaG92ZXItYmc7XG4gIH1cblxuICAmLmFjdGl2ZSxcbiAgJjphY3RpdmUge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZztcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZHJvcGRvd24tbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAvLyBSZW1vdmUgQ1NTIGdyYWRpZW50cyBpZiB0aGV5J3JlIGVuYWJsZWRcbiAgICBAaWYgJGVuYWJsZS1ncmFkaWVudHMge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gT3BlbiBzdGF0ZSBmb3IgdGhlIGRyb3Bkb3duXG4uc2hvdyB7XG4gIC8vIFJlbW92ZSB0aGUgb3V0bGluZSB3aGVuIDpmb2N1cyBpcyB0cmlnZ2VyZWRcbiAgPiBhIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi5kcm9wZG93bi1tZW51LnNob3cge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLy8gRHJvcGRvd24gc2VjdGlvbiBoZWFkZXJzXG4uZHJvcGRvd24taGVhZGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nLXkgJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy14O1xuICBtYXJnaW4tYm90dG9tOiAwOyAvLyBmb3IgdXNlIHdpdGggaGVhZGluZyBlbGVtZW50c1xuICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gIGNvbG9yOiAkZHJvcGRvd24taGVhZGVyLWNvbG9yO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvLyBhcyB3aXRoID4gbGkgPiBhXG59XG4iLCIvLyBIb3Jpem9udGFsIGRpdmlkZXJzXG4vL1xuLy8gRGl2aWRlcnMgKGJhc2ljYWxseSBhbiBocikgd2l0aGluIGRyb3Bkb3ducyBhbmQgbmF2IGxpc3RzXG5cbkBtaXhpbiBuYXYtZGl2aWRlcigkY29sb3I6ICNlNWU1ZTUpIHtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW46ICgkc3BhY2VyIC8gMikgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvcjtcbn1cbiIsIi8vIHNjc3MtbGludDpkaXNhYmxlIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vIE1ha2UgdGhlIGRpdiBiZWhhdmUgbGlrZSBhIGJ1dHRvblxuLmJ0bi1ncm91cCxcbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyBtYXRjaCAuYnRuIGFsaWdubWVudCBnaXZlbiBmb250LXNpemUgaGFjayBhYm92ZVxuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAvLyBCcmluZyB0aGUgaG92ZXIsIGZvY3VzZWQsIGFuZCBcImFjdGl2ZVwiIGJ1dHRvbnMgdG8gdGhlIGZyb250IHRvIG92ZXJsYXlcbiAgICAvLyB0aGUgYm9yZGVycyBwcm9wZXJseVxuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUsXG4gICAgJi5hY3RpdmUge1xuICAgICAgei1pbmRleDogMjtcbiAgICB9XG4gIH1cblxuICAvLyBQcmV2ZW50IGRvdWJsZSBib3JkZXJzIHdoZW4gYnV0dG9ucyBhcmUgbmV4dCB0byBlYWNoIG90aGVyXG4gIC5idG4gKyAuYnRuLFxuICAuYnRuICsgLmJ0bi1ncm91cCxcbiAgLmJ0bi1ncm91cCArIC5idG4sXG4gIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHtcbiAgICBtYXJnaW4tbGVmdDogLSRpbnB1dC1idG4tYm9yZGVyLXdpZHRoO1xuICB9XG59XG5cbi8vIE9wdGlvbmFsOiBHcm91cCBtdWx0aXBsZSBidXR0b24gZ3JvdXBzIHRvZ2V0aGVyIGZvciBhIHRvb2xiYXJcbi5idG4tdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLmJ0bi1ncm91cCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSkge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4vLyBTZXQgY29ybmVycyBpbmRpdmlkdWFsIGJlY2F1c2Ugc29tZXRpbWVzIGEgc2luZ2xlIGJ1dHRvbiBjYW4gYmUgaW4gYSAuYnRuLWdyb3VwIGFuZCB3ZSBuZWVkIDpmaXJzdC1jaGlsZCBhbmQgOmxhc3QtY2hpbGQgdG8gYm90aCBtYXRjaFxuLmJ0bi1ncm91cCA+IC5idG46Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tbGVmdDogMDtcblxuICAmOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuICB9XG59XG4vLyBOZWVkIC5kcm9wZG93bi10b2dnbGUgc2luY2UgOmxhc3QtY2hpbGQgZG9lc24ndCBhcHBseSBnaXZlbiBhIC5kcm9wZG93bi1tZW51IGltbWVkaWF0ZWx5IGFmdGVyIGl0XG4uYnRuLWdyb3VwID4gLmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmJ0bi1ncm91cCA+IC5kcm9wZG93bi10b2dnbGU6bm90KDpmaXJzdC1jaGlsZCkge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG5cbi8vIEN1c3RvbSBlZGl0cyBmb3IgaW5jbHVkaW5nIGJ0bi1ncm91cHMgd2l0aGluIGJ0bi1ncm91cHMgKHVzZWZ1bCBmb3IgaW5jbHVkaW5nIGRyb3Bkb3duIGJ1dHRvbnMgd2l0aGluIGEgYnRuLWdyb3VwKVxuLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXAge1xuICBmbG9hdDogbGVmdDtcbn1cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkge1xuICA+IC5idG46bGFzdC1jaGlsZCxcbiAgPiAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuICB9XG59XG4uYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygwKTtcbn1cblxuXG4vLyBTaXppbmdcbi8vXG4vLyBSZW1peCB0aGUgZGVmYXVsdCBidXR0b24gc2l6aW5nIGNsYXNzZXMgaW50byBuZXcgb25lcyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbi5cblxuLmJ0bi1ncm91cC1zbSA+IC5idG4geyBAZXh0ZW5kIC5idG4tc207IH1cbi5idG4tZ3JvdXAtbGcgPiAuYnRuIHsgQGV4dGVuZCAuYnRuLWxnOyB9XG5cblxuLy9cbi8vIFNwbGl0IGJ1dHRvbiBkcm9wZG93bnNcbi8vXG5cbi5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXggKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXggKiAuNzU7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gKiAuNzU7XG59XG5cbi5idG4tbGcgKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgcGFkZGluZy1yaWdodDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgKiAuNzU7XG4gIHBhZGRpbmctbGVmdDogJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGcgKiAuNzU7XG59XG5cblxuLy8gVGhlIGNsaWNrYWJsZSBidXR0b24gZm9yIHRvZ2dsaW5nIHRoZSBtZW51XG4vLyBTZXQgdGhlIHNhbWUgaW5zZXQgc2hhZG93IGFzIHRoZSA6YWN0aXZlIHN0YXRlXG4uYnRuLWdyb3VwLnNob3cgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGJ0bi1hY3RpdmUtYm94LXNoYWRvdyk7XG5cbiAgLy8gU2hvdyBubyBzaGFkb3cgZm9yIGAuYnRuLWxpbmtgIHNpbmNlIGl0IGhhcyBubyBvdGhlciBidXR0b24gc3R5bGVzLlxuICAmLmJ0bi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9XG59XG5cblxuLy9cbi8vIFZlcnRpY2FsIGJ1dHRvbiBncm91cHNcbi8vXG5cbi5idG4tZ3JvdXAtdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIC5idG4sXG4gIC5idG4tZ3JvdXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgPiAuYnRuICsgLmJ0bixcbiAgPiAuYnRuICsgLmJ0bi1ncm91cCxcbiAgPiAuYnRuLWdyb3VwICsgLmJ0bixcbiAgPiAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7XG4gICAgbWFyZ2luLXRvcDogLSRpbnB1dC1idG4tYm9yZGVyLXdpZHRoO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuIHtcbiAgJjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG4gICY6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoMCk7XG4gIH1cbiAgJjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygwKTtcbiAgfVxufVxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gID4gLmJ0bjpsYXN0LWNoaWxkLFxuICA+IC5kcm9wZG93bi10b2dnbGUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmFkaXVzKDApO1xuICB9XG59XG4uYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0bjpmaXJzdC1jaGlsZCB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xufVxuXG5cbi8vIENoZWNrYm94IGFuZCByYWRpbyBvcHRpb25zXG4vL1xuLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgYnJvd3NlcidzIGZvcm0gdmFsaWRhdGlvbiBmZWVkYmFjaywgcG93ZXJlZCBieSB0aGVcbi8vIGByZXF1aXJlZGAgYXR0cmlidXRlLCB3ZSBoYXZlIHRvIFwiaGlkZVwiIHRoZSBpbnB1dHMgdmlhIGBjbGlwYC4gV2UgY2Fubm90IHVzZVxuLy8gYGRpc3BsYXk6IG5vbmU7YCBvciBgdmlzaWJpbGl0eTogaGlkZGVuO2AgYXMgdGhhdCBhbHNvIGhpZGVzIHRoZSBwb3BvdmVyLlxuLy8gU2ltcGx5IHZpc3VhbGx5IGhpZGluZyB0aGUgaW5wdXRzIHZpYSBgb3BhY2l0eWAgd291bGQgbGVhdmUgdGhlbSBjbGlja2FibGUgaW5cbi8vIGNlcnRhaW4gY2FzZXMgd2hpY2ggaXMgcHJldmVudGVkIGJ5IHVzaW5nIGBjbGlwYCBhbmQgYHBvaW50ZXItZXZlbnRzYC5cbi8vIFRoaXMgd2F5LCB3ZSBlbnN1cmUgYSBET00gZWxlbWVudCBpcyB2aXNpYmxlIHRvIHBvc2l0aW9uIHRoZSBwb3BvdmVyIGZyb20uXG4vL1xuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9wdWxsLzEyNzk0IGFuZFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL3B1bGwvMTQ1NTkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbltkYXRhLXRvZ2dsZT1cImJ1dHRvbnNcIl0ge1xuICA+IC5idG4sXG4gID4gLmJ0bi1ncm91cCA+IC5idG4ge1xuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSxcbiAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY2xpcDogcmVjdCgwLDAsMCwwKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uaW5wdXQtZ3JvdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC5mb3JtLWNvbnRyb2wge1xuICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBpbnB1dCBpcyBhbHdheXMgYWJvdmUgdGhlICphcHBlbmRlZCogYWRkb24gYnV0dG9uIGZvclxuICAgIC8vIHByb3BlciBib3JkZXIgY29sb3JzLlxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIC8vIEFkZCB3aWR0aCAxJSBhbmQgZmxleC1iYXNpcyBhdXRvIHRvIGVuc3VyZSB0aGF0IGJ1dHRvbiB3aWxsIG5vdCB3cmFwIG91dFxuICAgIC8vIHRoZSBjb2x1bW4uIEFwcGxpZXMgdG8gSUUgRWRnZSsgYW5kIEZpcmVmb3guIENocm9tZSBkb2VzIG5vdCByZXF1aXJlIHRoaXMuXG4gICAgd2lkdGg6IDElO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAvLyBCcmluZyB0aGUgXCJhY3RpdmVcIiBmb3JtIGNvbnRyb2wgdG8gdGhlIGZyb250XG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgICAgIHotaW5kZXg6IDM7XG4gICAgfVxuICB9XG59XG5cbi5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1idG4sXG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbCB7XG4gIC8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgY29udGVudCBvZiB0aGUgYWRkb25zIHdpdGhpbiB0aGUgaW5wdXQgZ3JvdXBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gIH1cbn1cblxuLmlucHV0LWdyb3VwLWFkZG9uLFxuLmlucHV0LWdyb3VwLWJ0biB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8vIE1hdGNoIHRoZSBpbnB1dHNcbn1cblxuXG4vLyBTaXppbmcgb3B0aW9uc1xuLy9cbi8vIFJlbWl4IHRoZSBkZWZhdWx0IGZvcm0gY29udHJvbCBzaXppbmcgY2xhc3NlcyBpbnRvIG5ldyBvbmVzIGZvciBlYXNpZXJcbi8vIG1hbmlwdWxhdGlvbi5cblxuLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHtcbiAgQGV4dGVuZCAuZm9ybS1jb250cm9sLWxnO1xufVxuLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCxcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hZGRvbixcbi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1idG4gPiAuYnRuIHtcbiAgQGV4dGVuZCAuZm9ybS1jb250cm9sLXNtO1xufVxuXG5cbi8vXG4vLyBUZXh0IGlucHV0IGdyb3Vwc1xuLy9cblxuLmlucHV0LWdyb3VwLWFkZG9uIHtcbiAgcGFkZGluZzogJGlucHV0LWJ0bi1wYWRkaW5nLXkgJGlucHV0LWJ0bi1wYWRkaW5nLXg7XG4gIG1hcmdpbi1ib3R0b206IDA7IC8vIEFsbG93IHVzZSBvZiA8bGFiZWw+IGVsZW1lbnRzIGJ5IG92ZXJyaWRpbmcgb3VyIGRlZmF1bHQgbWFyZ2luLWJvdHRvbVxuICBmb250LXNpemU6ICRmb250LXNpemUtYmFzZTsgLy8gTWF0Y2ggaW5wdXRzXG4gIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuICBsaW5lLWhlaWdodDogJGlucHV0LWJ0bi1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1ncm91cC1hZGRvbi1jb2xvcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtZ3JvdXAtYWRkb24tYmc7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggc29saWQgJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gU2l6aW5nXG4gICYuZm9ybS1jb250cm9sLXNtIHtcbiAgICBwYWRkaW5nOiAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbTtcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkaW5wdXQtYm9yZGVyLXJhZGl1cy1zbSk7XG4gIH1cblxuICAmLmZvcm0tY29udHJvbC1sZyB7XG4gICAgcGFkZGluZzogJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgJGlucHV0LWJ0bi1wYWRkaW5nLXgtbGc7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGlucHV0LWJvcmRlci1yYWRpdXMtbGcpO1xuICB9XG5cbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgUXVhbGlmeWluZ0VsZW1lbnRcbiAgLy8gTnVrZSBkZWZhdWx0IG1hcmdpbnMgZnJvbSBjaGVja2JveGVzIGFuZCByYWRpb3MgdG8gdmVydGljYWxseSBjZW50ZXIgd2l0aGluLlxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl0sXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAvLyBzY3NzLWxpbnQ6ZW5hYmxlIFF1YWxpZnlpbmdFbGVtZW50XG59XG5cblxuLy9cbi8vIFJlc2V0IHJvdW5kZWQgY29ybmVyc1xuLy9cblxuLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmxhc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bixcbi5pbnB1dC1ncm91cC1idG46bm90KDpsYXN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmRyb3Bkb3duLXRvZ2dsZSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4ge1xuICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xufVxuLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6bGFzdC1jaGlsZCkge1xuICBib3JkZXItcmlnaHQ6IDA7XG59XG4uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKSxcbi5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4tZ3JvdXAgPiAuYnRuLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmZpcnN0LWNoaWxkKSA+IC5kcm9wZG93bi10b2dnbGUsXG4uaW5wdXQtZ3JvdXAtYnRuOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLFxuLmlucHV0LWdyb3VwLWJ0bjpub3QoOmxhc3QtY2hpbGQpID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4ge1xuICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG59XG4uZm9ybS1jb250cm9sICsgLmlucHV0LWdyb3VwLWFkZG9uOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgYm9yZGVyLWxlZnQ6IDA7XG59XG5cbi8vXG4vLyBCdXR0b24gaW5wdXQgZ3JvdXBzXG4vL1xuXG4uaW5wdXQtZ3JvdXAtYnRuIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvLyBKYW5raWx5IHByZXZlbnQgaW5wdXQgYnV0dG9uIGdyb3VwcyBmcm9tIHdyYXBwaW5nIHdpdGggYHdoaXRlLXNwYWNlYCBhbmRcbiAgLy8gYGZvbnQtc2l6ZWAgaW4gY29tYmluYXRpb24gd2l0aCBgaW5saW5lLWJsb2NrYCBvbiBidXR0b25zLlxuICBmb250LXNpemU6IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBzcGFjaW5nLCBwb3NpdGlvbiBmb3IgYnJpbmdpbmcgaG92ZXJlZC9mb2N1c2VkL2FjdGl2ZWRcbiAgLy8gZWxlbWVudCBhYm92ZSB0aGUgc2libGluZ3MuXG4gID4gLmJ0biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gICAgYm9yZGVyOiAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCBzb2xpZCAkaW5wdXQtZ3JvdXAtYnRuLWJvcmRlci1jb2xvcjtcblxuICAgICsgLmJ0biB7XG4gICAgICBtYXJnaW4tbGVmdDogKC0kaW5wdXQtYnRuLWJvcmRlci13aWR0aCk7XG4gICAgfVxuXG4gICAgLy8gQnJpbmcgdGhlIFwiYWN0aXZlXCIgYnV0dG9uIHRvIHRoZSBmcm9udFxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gICAgICB6LWluZGV4OiAzO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5lZ2F0aXZlIG1hcmdpbiB0byBvbmx5IGhhdmUgYSBzaW5nbGUsIHNoYXJlZCBib3JkZXIgYmV0d2VlbiB0aGUgdHdvXG4gICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgPiAuYnRuLFxuICAgID4gLmJ0bi1ncm91cCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICgtJGlucHV0LWJ0bi1ib3JkZXItd2lkdGgpO1xuICAgIH1cbiAgfVxuICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICA+IC5idG4sXG4gICAgPiAuYnRuLWdyb3VwIHtcbiAgICAgIHotaW5kZXg6IDI7XG4gICAgICBtYXJnaW4tbGVmdDogKC0kaW5wdXQtYnRuLWJvcmRlci13aWR0aCk7XG4gICAgICAvLyBCZWNhdXNlIHNwZWNpZmljaXR5XG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cy1hY3RpdmUge1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgUHJvcGVydHlDb3VudCwgVmVuZG9yUHJlZml4XG5cbi8vIEVtYmVkZGVkIGljb25zIGZyb20gT3BlbiBJY29uaWMuXG4vLyBSZWxlYXNlZCB1bmRlciBNSVQgYW5kIGNvcHlyaWdodCAyMDE0IFdheWJ1cnkuXG4vLyBodHRwczovL3VzZWljb25pYy5jb20vb3BlblxuXG5cbi8vIENoZWNrYm94ZXMgYW5kIHJhZGlvc1xuLy9cbi8vIEJhc2UgY2xhc3MgdGFrZXMgY2FyZSBvZiBhbGwgdGhlIGtleSBiZWhhdmlvcmFsIGFzcGVjdHMuXG5cbi5jdXN0b20tY29udHJvbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIG1pbi1oZWlnaHQ6ICgxcmVtICogJGxpbmUtaGVpZ2h0LWJhc2UpO1xuICBwYWRkaW5nLWxlZnQ6ICRjdXN0b20tY29udHJvbC1ndXR0ZXI7XG4gIG1hcmdpbi1yaWdodDogJGN1c3RvbS1jb250cm9sLXNwYWNlci14O1xufVxuXG4uY3VzdG9tLWNvbnRyb2wtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IC0xOyAvLyBQdXQgdGhlIGlucHV0IGJlaGluZCB0aGUgbGFiZWwgc28gaXQgZG9lc24ndCBvdmVybGF5IHRleHRcbiAgb3BhY2l0eTogMDtcblxuICAmOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1iZztcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93KTtcbiAgfVxuXG4gICY6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICAvLyB0aGUgbWl4aW4gaXMgbm90IHVzZWQgaGVyZSB0byBtYWtlIHN1cmUgdGhlcmUgaXMgZmVlZGJhY2tcbiAgICBib3gtc2hhZG93OiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c7XG4gIH1cblxuICAmOmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWFjdGl2ZS1iZztcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3cpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZGlzYWJsZWQtYmc7XG4gICAgfVxuXG4gICAgfiAuY3VzdG9tLWNvbnRyb2wtZGVzY3JpcHRpb24ge1xuICAgICAgY29sb3I6ICRjdXN0b20tY29udHJvbC1kZXNjcmlwdGlvbi1kaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ3VzdG9tIGluZGljYXRvclxuLy9cbi8vIEdlbmVyYXRlcyBhIHNoYWRvdyBlbGVtZW50IHRvIGNyZWF0ZSBvdXIgbWFrZXNoaWZ0IGNoZWNrYm94L3JhZGlvIGJhY2tncm91bmQuXG5cbi5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogKCgkbGluZS1oZWlnaHQtYmFzZSAtICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3Itc2l6ZSkgLyAyKTtcbiAgbGVmdDogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU7XG4gIGhlaWdodDogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1zaXplO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1iZy1zaXplO1xuICBAaW5jbHVkZSBib3gtc2hhZG93KCRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdyk7XG59XG5cbi8vIENoZWNrYm94ZXNcbi8vXG4vLyBUd2VhayBqdXN0IGEgZmV3IHRoaW5ncyBmb3IgY2hlY2tib3hlcy5cblxuLmN1c3RvbS1jaGVja2JveCB7XG4gIC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItYm9yZGVyLXJhZGl1cyk7XG4gIH1cblxuICAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1pbmRpY2F0b3Ige1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDtcbiAgfVxuXG4gIC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWluZGljYXRvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1iZztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pY29uLWluZGV0ZXJtaW5hdGU7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygkY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1pbmRldGVybWluYXRlLWJveC1zaGFkb3cpO1xuICB9XG59XG5cbi8vIFJhZGlvc1xuLy9cbi8vIFR3ZWFrIGp1c3QgYSBmZXcgdGhpbmdzIGZvciByYWRpb3MuXG5cbi5jdXN0b20tcmFkaW8ge1xuICAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBib3JkZXItcmFkaXVzOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1ib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkY3VzdG9tLXJhZGlvLWluZGljYXRvci1pY29uLWNoZWNrZWQ7XG4gIH1cbn1cblxuXG4vLyBMYXlvdXQgb3B0aW9uc1xuLy9cbi8vIEJ5IGRlZmF1bHQgcmFkaW9zIGFuZCBjaGVja2JveGVzIGFyZSBgaW5saW5lLWJsb2NrYCB3aXRoIG5vIGFkZGl0aW9uYWwgc3BhY2luZ1xuLy8gc2V0LiBVc2UgdGhlc2Ugb3B0aW9uYWwgY2xhc3NlcyB0byB0d2VhayB0aGUgbGF5b3V0LlxuXG4uY3VzdG9tLWNvbnRyb2xzLXN0YWNrZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC5jdXN0b20tY29udHJvbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGN1c3RvbS1jb250cm9sLXNwYWNlci15O1xuXG4gICAgKyAuY3VzdG9tLWNvbnRyb2wge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU2VsZWN0XG4vL1xuLy8gUmVwbGFjZXMgdGhlIGJyb3dzZXIgZGVmYXVsdCBzZWxlY3Qgd2l0aCBhIGN1c3RvbSBvbmUsIG1vc3RseSBwdWxsZWQgZnJvbVxuLy8gaHR0cDovL3ByaW1lcmNzcy5pby5cbi8vXG5cbi5jdXN0b20tc2VsZWN0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgcGFkZGluZzogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICgkY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXggKyAkY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZykgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15ICRjdXN0b20tc2VsZWN0LXBhZGRpbmcteDtcbiAgbGluZS1oZWlnaHQ6ICRjdXN0b20tc2VsZWN0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGN1c3RvbS1zZWxlY3QtY29sb3I7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJhY2tncm91bmQ6ICRjdXN0b20tc2VsZWN0LWJnICRjdXN0b20tc2VsZWN0LWluZGljYXRvciBuby1yZXBlYXQgcmlnaHQgJGN1c3RvbS1zZWxlY3QtcGFkZGluZy14IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYmFja2dyb3VuZC1zaXplOiAkY3VzdG9tLXNlbGVjdC1iZy1zaXplO1xuICBib3JkZXI6ICRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aCBzb2xpZCAkY3VzdG9tLXNlbGVjdC1ib3JkZXItY29sb3I7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM7XG4gIH0gQGVsc2Uge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjdXN0b20tc2VsZWN0LWZvY3VzLWJvcmRlci1jb2xvcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1zZWxlY3QtZm9jdXMtYm94LXNoYWRvdyk7XG5cbiAgICAmOjotbXMtdmFsdWUge1xuICAgICAgLy8gRm9yIHZpc3VhbCBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHBsYXRmb3Jtcy9icm93c2VycyxcbiAgICAgIC8vIHN1cHJlc3MgdGhlIGRlZmF1bHQgd2hpdGUgdGV4dCBvbiBibHVlIGJhY2tncm91bmQgaGlnaGxpZ2h0IGdpdmVuIHRvXG4gICAgICAvLyB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRleHQgd2hlbiB0aGUgKHN0aWxsIGNsb3NlZCkgPHNlbGVjdD4gcmVjZWl2ZXMgZm9jdXNcbiAgICAgIC8vIGluIElFIGFuZCAodW5kZXIgY2VydGFpbiBjb25kaXRpb25zKSBFZGdlLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJnO1xuICAgIH1cbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1iZztcbiAgfVxuXG4gIC8vIEhpZGVzIHRoZSBkZWZhdWx0IGNhcmV0IGluIElFMTFcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG4uY3VzdG9tLXNlbGVjdC1zbSB7XG4gIGhlaWdodDogJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LXNtO1xuICBwYWRkaW5nLXRvcDogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJGN1c3RvbS1zZWxlY3QtcGFkZGluZy15O1xuICBmb250LXNpemU6ICRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbTtcbn1cblxuXG4vLyBGaWxlXG4vL1xuLy8gQ3VzdG9tIGZpbGUgaW5wdXQuXG5cbi5jdXN0b20tZmlsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmN1c3RvbS1maWxlLWlucHV0IHtcbiAgbWluLXdpZHRoOiAkY3VzdG9tLWZpbGUtd2lkdGg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7XG5cbiAgJjpmb2N1cyB+IC5jdXN0b20tZmlsZS1jb250cm9sIHtcbiAgICBib3gtc2hhZG93OiAkY3VzdG9tLWZpbGUtZm9jdXMtYm94LXNoYWRvdztcbiAgfVxufVxuXG4uY3VzdG9tLWZpbGUtY29udHJvbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogNTtcbiAgaGVpZ2h0OiAkY3VzdG9tLWZpbGUtaGVpZ2h0O1xuICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGxpbmUtaGVpZ2h0OiAkY3VzdG9tLWZpbGUtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkY3VzdG9tLWZpbGUtY29sb3I7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGN1c3RvbS1maWxlLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICBib3JkZXI6ICRjdXN0b20tZmlsZS1ib3JkZXItd2lkdGggc29saWQgJGN1c3RvbS1maWxlLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY3VzdG9tLWZpbGUtYm9yZGVyLXJhZGl1cyk7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3coJGN1c3RvbS1maWxlLWJveC1zaGFkb3cpO1xuXG4gIEBlYWNoICRsYW5nLCAkdGV4dCBpbiBtYXAtZ2V0KCRjdXN0b20tZmlsZS10ZXh0LCBwbGFjZWhvbGRlcikge1xuICAgICY6bGFuZygjeyRsYW5nfSk6ZW1wdHk6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICR0ZXh0O1xuICAgIH1cbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiA2O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJGN1c3RvbS1maWxlLWhlaWdodDtcbiAgICBwYWRkaW5nOiAkY3VzdG9tLWZpbGUtcGFkZGluZy15ICRjdXN0b20tZmlsZS1wYWRkaW5nLXg7XG4gICAgbGluZS1oZWlnaHQ6ICRjdXN0b20tZmlsZS1saW5lLWhlaWdodDtcbiAgICBjb2xvcjogJGN1c3RvbS1maWxlLWJ1dHRvbi1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3VzdG9tLWZpbGUtYnV0dG9uLWJnO1xuICAgIGJvcmRlci1sZWZ0OiAkY3VzdG9tLWZpbGUtYm9yZGVyLXdpZHRoIHNvbGlkICRjdXN0b20tZmlsZS1ib3JkZXItY29sb3I7XG4gIH1cblxuICBAZWFjaCAkbGFuZywgJHRleHQgaW4gbWFwLWdldCgkY3VzdG9tLWZpbGUtdGV4dCwgYnV0dG9uLWxhYmVsKSB7XG4gICAgJjpsYW5nKCN7JGxhbmd9KTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICR0ZXh0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIEtpY2tzdGFydCBhbnkgbmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBhIHNldCBvZiBzdHlsZSByZXNldHMuIFdvcmtzIHdpdGhcbi8vIGA8bmF2PmBzIG9yIGA8dWw+YHMuXG5cbi5uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLm5hdi1saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRuYXYtbGluay1wYWRkaW5nLXkgJG5hdi1saW5rLXBhZGRpbmcteDtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGUgbGlnaHRlbnMgdGV4dFxuICAmLmRpc2FibGVkIHtcbiAgICBjb2xvcjogJG5hdi1saW5rLWRpc2FibGVkLWNvbG9yO1xuICB9XG59XG5cbi8vXG4vLyBUYWJzXG4vL1xuXG4ubmF2LXRhYnMge1xuICBib3JkZXItYm90dG9tOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkICRuYXYtdGFicy1ib3JkZXItY29sb3I7XG5cbiAgLm5hdi1pdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgfVxuXG4gIC5uYXYtbGluayB7XG4gICAgYm9yZGVyOiAkbmF2LXRhYnMtYm9yZGVyLXdpZHRoIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRuYXYtdGFicy1ib3JkZXItcmFkaXVzKTtcblxuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yICRuYXYtdGFicy1saW5rLWhvdmVyLWJvcmRlci1jb2xvciAkbmF2LXRhYnMtYm9yZGVyLWNvbG9yO1xuICAgIH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAubmF2LWxpbmsuYWN0aXZlLFxuICAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJnO1xuICAgIGJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstYWN0aXZlLWJvcmRlci1jb2xvciAkbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yICRuYXYtdGFicy1saW5rLWFjdGl2ZS1iZztcbiAgfVxuXG4gIC5kcm9wZG93bi1tZW51IHtcbiAgICAvLyBNYWtlIGRyb3Bkb3duIGJvcmRlciBvdmVybGFwIHRhYiBib3JkZXJcbiAgICBtYXJnaW4tdG9wOiAtJG5hdi10YWJzLWJvcmRlci13aWR0aDtcbiAgICAvLyBSZW1vdmUgdGhlIHRvcCByb3VuZGVkIGNvcm5lcnMgaGVyZSBzaW5jZSB0aGVyZSBpcyBhIGhhcmQgZWRnZSBhYm92ZSB0aGUgbWVudVxuICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDApO1xuICB9XG59XG5cblxuLy9cbi8vIFBpbGxzXG4vL1xuXG4ubmF2LXBpbGxzIHtcbiAgLm5hdi1saW5rIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAmLmFjdGl2ZSxcbiAgICAuc2hvdyA+ICYge1xuICAgICAgY29sb3I6ICRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vXG4vLyBKdXN0aWZpZWQgdmFyaWFudHNcbi8vXG5cbi5uYXYtZmlsbCB7XG4gIC5uYXYtaXRlbSB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG5cbi5uYXYtanVzdGlmaWVkIHtcbiAgLm5hdi1pdGVtIHtcbiAgICBmbGV4LWJhc2lzOiAwO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbn1cblxuXG4vLyBUYWJiYWJsZSB0YWJzXG4vL1xuLy8gSGlkZSB0YWJiYWJsZSBwYW5lcyB0byBzdGFydCwgc2hvdyB0aGVtIHdoZW4gYC5hY3RpdmVgXG5cbi50YWItY29udGVudCB7XG4gID4gLnRhYi1wYW5lIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gID4gLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi8vIENvbnRlbnRzXG4vL1xuLy8gTmF2YmFyXG4vLyBOYXZiYXIgYnJhbmRcbi8vIE5hdmJhciBuYXZcbi8vIE5hdmJhciB0ZXh0XG4vLyBOYXZiYXIgZGl2aWRlclxuLy8gUmVzcG9uc2l2ZSBuYXZiYXJcbi8vIE5hdmJhciBwb3NpdGlvblxuLy8gTmF2YmFyIHRoZW1lc1xuXG5cbi8vIE5hdmJhclxuLy9cbi8vIFByb3ZpZGUgYSBzdGF0aWMgbmF2YmFyIGZyb20gd2hpY2ggd2UgZXhwYW5kIHRvIGNyZWF0ZSBmdWxsLXdpZHRoLCBmaXhlZCwgYW5kXG4vLyBvdGhlciBuYXZiYXIgdmFyaWF0aW9ucy5cblxuLm5hdmJhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwOyAvLyBhbGxvdyB1cyB0byBkbyB0aGUgbGluZSBicmVhayBmb3IgY29sbGFwc2luZyBjb250ZW50XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgLy8gc3BhY2Ugb3V0IGJyYW5kIGZyb20gbG9nb1xuICBwYWRkaW5nOiAkbmF2YmFyLXBhZGRpbmcteSAkbmF2YmFyLXBhZGRpbmcteDtcblxuICAvLyBCZWNhdXNlIGZsZXggcHJvcGVydGllcyBhcmVuJ3QgaW5oZXJpdGVkLCB3ZSBuZWVkIHRvIHJlZGVjbGFyZSB0aGVzZSBmaXJzdFxuICAvLyBmZXcgcHJvcGVyaXRpZXMgc28gdGhhdCBjb250ZW50IG5lc3RlZCB3aXRoaW4gYmVoYXZlIHByb3Blcmx5LlxuICA+IC5jb250YWluZXIsXG4gID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgYnJhbmRcbi8vXG4vLyBVc2VkIGZvciBicmFuZCwgcHJvamVjdCwgb3Igc2l0ZSBuYW1lcy5cblxuLm5hdmJhci1icmFuZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXZiYXItYnJhbmQtcGFkZGluZy15O1xuICBwYWRkaW5nLWJvdHRvbTogJG5hdmJhci1icmFuZC1wYWRkaW5nLXk7XG4gIG1hcmdpbi1yaWdodDogJG5hdmJhci1wYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJG5hdmJhci1icmFuZC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgbmF2XG4vL1xuLy8gQ3VzdG9tIG5hdmJhciBuYXZpZ2F0aW9uIChkb2Vzbid0IHJlcXVpcmUgYC5uYXZgLCBidXQgZG9lcyBtYWtlIHVzZSBvZiBgLm5hdi1saW5rYCkuXG5cbi5uYXZiYXItbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgLy8gY2Fubm90IHVzZSBgaW5oZXJpdGAgdG8gZ2V0IHRoZSBgLm5hdmJhcmBzIHZhbHVlXG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAubmF2LWxpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuXG4vLyBOYXZiYXIgdGV4dFxuLy9cbi8vXG5cbi5uYXZiYXItdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy10b3A6ICRuYXYtbGluay1wYWRkaW5nLXk7XG4gIHBhZGRpbmctYm90dG9tOiAkbmF2LWxpbmstcGFkZGluZy15O1xufVxuXG5cbi8vIFJlc3BvbnNpdmUgbmF2YmFyXG4vL1xuLy8gQ3VzdG9tIHN0eWxlcyBmb3IgcmVzcG9uc2l2ZSBjb2xsYXBzaW5nIGFuZCB0b2dnbGluZyBvZiBuYXZiYXIgY29udGVudHMuXG4vLyBQb3dlcmVkIGJ5IHRoZSBjb2xsYXBzZSBCb290c3RyYXAgSmF2YVNjcmlwdCBwbHVnaW4uXG5cbi8vIFdoZW4gY29sbGFwc2VkLCBwcmV2ZW50IHRoZSB0b2dnbGVhYmxlIG5hdmJhciBjb250ZW50cyBmcm9tIGFwcGVhcmluZyBpblxuLy8gdGhlIGRlZmF1bHQgZmxleGJveCByb3cgb3JpZW5hdGlvbi4gUmVxdWlyZXMgdGhlIHVzZSBvZiBgZmxleC13cmFwOiB3cmFwYFxuLy8gb24gdGhlIGAubmF2YmFyYCBwYXJlbnQuXG4ubmF2YmFyLWNvbGxhcHNlIHtcbiAgZmxleC1iYXNpczogMTAwJTtcbiAgLy8gRm9yIGFsd2F5cyBleHBhbmRlZCBvciBleHRyYSBmdWxsIG5hdmJhcnMsIGVuc3VyZSBjb250ZW50IGFsaWducyBpdHNlbGZcbiAgLy8gcHJvcGVybHkgdmVydGljYWxseS4gQ2FuIGJlIGVhc2lseSBvdmVycmlkZGVuIHdpdGggZmxleCB1dGlsaXRpZXMuXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8vIEJ1dHRvbiBmb3IgdG9nZ2xpbmcgdGhlIG5hdmJhciB3aGVuIGluIGl0cyBjb2xsYXBzZWQgc3RhdGVcbi5uYXZiYXItdG9nZ2xlciB7XG4gIHBhZGRpbmc6ICRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXkgJG5hdmJhci10b2dnbGVyLXBhZGRpbmcteDtcbiAgZm9udC1zaXplOiAkbmF2YmFyLXRvZ2dsZXItZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7IC8vIHJlbW92ZSBkZWZhdWx0IGJ1dHRvbiBzdHlsZVxuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRuYXZiYXItdG9nZ2xlci1ib3JkZXItcmFkaXVzKTtcblxuICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG5cbi8vIEtlZXAgYXMgYSBzZXBhcmF0ZSBlbGVtZW50IHNvIGZvbGtzIGNhbiBlYXNpbHkgb3ZlcnJpZGUgaXQgd2l0aCBhbm90aGVyIGljb25cbi8vIG9yIGltYWdlIGZpbGUgYXMgbmVlZGVkLlxuLm5hdmJhci10b2dnbGVyLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxLjVlbTtcbiAgaGVpZ2h0OiAxLjVlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY29udGVudDogXCJcIjtcbiAgYmFja2dyb3VuZDogbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuXG4vLyBHZW5lcmF0ZSBzZXJpZXMgb2YgYC5uYXZiYXItZXhwYW5kLSpgIHJlc3BvbnNpdmUgY2xhc3NlcyBmb3IgY29uZmlndXJpbmdcbi8vIHdoZXJlIHlvdXIgbmF2YmFyIGNvbGxhcHNlcy5cbi5uYXZiYXItZXhwYW5kIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRicmVha3BvaW50LCAkZ3JpZC1icmVha3BvaW50cyk7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRuZXh0LCAkZ3JpZC1icmVha3BvaW50cyk7XG5cbiAgICAmI3skaW5maXh9IHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jb250YWluZXIsXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmV4dCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXG4gICAgICAgIC5uYXZiYXItbmF2IHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuXG4gICAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5kcm9wZG93bi1tZW51LXJpZ2h0IHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogYXV0bzsgLy8gUmVzZXQgdGhlIGRlZmF1bHQgZnJvbSBgLmRyb3Bkb3duLW1lbnVgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLm5hdi1saW5rIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAuNXJlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgbmVzdGluZyBjb250YWluZXJzLCBoYXZlIHRvIHJlZGVjbGFyZSBmb3IgYWxpZ25tZW50IHB1cnBvc2VzXG4gICAgICAgID4gLmNvbnRhaW5lcixcbiAgICAgICAgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNjc3MtbGludDpkaXNhYmxlIEltcG9ydGFudFJ1bGVcbiAgICAgICAgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIHNjc3MtbGludDplbmFibGUgSW1wb3J0YW50UnVsZVxuXG4gICAgICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbi8vIE5hdmJhciB0aGVtZXNcbi8vXG4vLyBTdHlsZXMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5hdmJhcnMgd2l0aCBsaWdodCBvciBkYXJrIGJhY2tncm91bmQuXG5cbi8vIERhcmsgbGlua3MgYWdhaW5zdCBhIGxpZ2h0IGJhY2tncm91bmRcbi5uYXZiYXItbGlnaHQge1xuICAubmF2YmFyLWJyYW5kIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG5cbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcblxuICAgICAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zaG93ID4gLm5hdi1saW5rLFxuICAgIC5hY3RpdmUgPiAubmF2LWxpbmssXG4gICAgLm5hdi1saW5rLnNob3csXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci10b2dnbGVyIHtcbiAgICBjb2xvcjogJG5hdmJhci1saWdodC1jb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRuYXZiYXItbGlnaHQtdG9nZ2xlci1ib3JkZXItY29sb3I7XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJG5hdmJhci1saWdodC10b2dnbGVyLWljb24tYmc7XG4gIH1cblxuICAubmF2YmFyLXRleHQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWxpZ2h0LWNvbG9yO1xuICB9XG59XG5cbi8vIFdoaXRlIGxpbmtzIGFnYWluc3QgYSBkYXJrIGJhY2tncm91bmRcbi5uYXZiYXItZGFyayB7XG4gIC5uYXZiYXItYnJhbmQge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yO1xuXG4gICAgQGluY2x1ZGUgaG92ZXItZm9jdXMge1xuICAgICAgY29sb3I6ICRuYXZiYXItZGFyay1hY3RpdmUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm5hdmJhci1uYXYge1xuICAgIC5uYXYtbGluayB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWNvbG9yO1xuXG4gICAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstaG92ZXItY29sb3I7XG4gICAgICB9XG5cbiAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5zaG93ID4gLm5hdi1saW5rLFxuICAgIC5hY3RpdmUgPiAubmF2LWxpbmssXG4gICAgLm5hdi1saW5rLnNob3csXG4gICAgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJG5hdmJhci1kYXJrLWFjdGl2ZS1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXIge1xuICAgIGNvbG9yOiAkbmF2YmFyLWRhcmstY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I7XG4gIH1cblxuICAubmF2YmFyLXRvZ2dsZXItaWNvbiB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJG5hdmJhci1kYXJrLXRvZ2dsZXItaWNvbi1iZztcbiAgfVxuXG4gIC5uYXZiYXItdGV4dCB7XG4gICAgY29sb3I6ICRuYXZiYXItZGFyay1jb2xvcjtcbiAgfVxufVxuIiwiLy9cbi8vIEJhc2Ugc3R5bGVzXG4vL1xuXG4uY2FyZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAwO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWJnO1xuICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XG4gIGJvcmRlcjogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbn1cblxuLmNhcmQtYm9keSB7XG4gIC8vIEVuYWJsZSBgZmxleC1ncm93OiAxYCBmb3IgZGVja3MgYW5kIGdyb3VwcyBzbyB0aGF0IGNhcmQgYmxvY2tzIHRha2UgdXBcbiAgLy8gYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZSwgZW5zdXJpbmcgZm9vdGVycyBhcmUgYWxpZ25lZCB0byB0aGUgYm90dG9tLlxuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXg7XG59XG5cbi5jYXJkLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogJGNhcmQtc3BhY2VyLXk7XG59XG5cbi5jYXJkLXN1YnRpdGxlIHtcbiAgbWFyZ2luLXRvcDogLSgkY2FyZC1zcGFjZXIteSAvIDIpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC10ZXh0Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uY2FyZC1saW5rIHtcbiAgQGluY2x1ZGUgaG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gICsgLmNhcmQtbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6ICRjYXJkLXNwYWNlci14O1xuICB9XG59XG5cbi5jYXJkIHtcbiAgPiAubGlzdC1ncm91cDpmaXJzdC1jaGlsZCB7XG4gICAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQge1xuICAgIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJhZGl1cygkY2FyZC1ib3JkZXItcmFkaXVzKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gT3B0aW9uYWwgdGV4dHVhbCBjYXBzXG4vL1xuXG4uY2FyZC1oZWFkZXIge1xuICBwYWRkaW5nOiAkY2FyZC1zcGFjZXIteSAkY2FyZC1zcGFjZXIteDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgLy8gUmVtb3ZlcyB0aGUgZGVmYXVsdCBtYXJnaW4tYm90dG9tIG9mIDxoTj5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY2FwLWJnO1xuICBib3JkZXItYm90dG9tOiAkY2FyZC1ib3JkZXItd2lkdGggc29saWQgJGNhcmQtYm9yZGVyLWNvbG9yO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyAkY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzIDAgMCk7XG4gIH1cbn1cblxuLmNhcmQtZm9vdGVyIHtcbiAgcGFkZGluZzogJGNhcmQtc3BhY2VyLXkgJGNhcmQtc3BhY2VyLXg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjYXJkLWNhcC1iZztcbiAgYm9yZGVyLXRvcDogJGNhcmQtYm9yZGVyLXdpZHRoIHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAwICRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMgJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG4gIH1cbn1cblxuXG4vL1xuLy8gSGVhZGVyIG5hdnNcbi8vXG5cbi5jYXJkLWhlYWRlci10YWJzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG4gIG1hcmdpbi1ib3R0b206IC0kY2FyZC1zcGFjZXIteTtcbiAgbWFyZ2luLWxlZnQ6IC0oJGNhcmQtc3BhY2VyLXggLyAyKTtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbn1cblxuLmNhcmQtaGVhZGVyLXBpbGxzIHtcbiAgbWFyZ2luLXJpZ2h0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG4gIG1hcmdpbi1sZWZ0OiAtKCRjYXJkLXNwYWNlci14IC8gMik7XG59XG5cbi8vIENhcmQgaW1hZ2Vcbi5jYXJkLWltZy1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHBhZGRpbmc6ICRjYXJkLWltZy1vdmVybGF5LXBhZGRpbmc7XG59XG5cbi5jYXJkLWltZyB7XG4gIHdpZHRoOiAxMDAlOyAvLyBSZXF1aXJlZCBiZWNhdXNlIHdlIHVzZSBmbGV4Ym94IGFuZCB0aGlzIGluaGVyZW50bHkgYXBwbGllcyBhbGlnbi1zZWxmOiBzdHJldGNoXG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIENhcmQgaW1hZ2UgY2Fwc1xuLmNhcmQtaW1nLXRvcCB7XG4gIHdpZHRoOiAxMDAlOyAvLyBSZXF1aXJlZCBiZWNhdXNlIHdlIHVzZSBmbGV4Ym94IGFuZCB0aGlzIGluaGVyZW50bHkgYXBwbGllcyBhbGlnbi1zZWxmOiBzdHJldGNoXG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKCRjYXJkLWlubmVyLWJvcmRlci1yYWRpdXMpO1xufVxuXG4uY2FyZC1pbWctYm90dG9tIHtcbiAgd2lkdGg6IDEwMCU7IC8vIFJlcXVpcmVkIGJlY2F1c2Ugd2UgdXNlIGZsZXhib3ggYW5kIHRoaXMgaW5oZXJlbnRseSBhcHBsaWVzIGFsaWduLXNlbGY6IHN0cmV0Y2hcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yYWRpdXMoJGNhcmQtaW5uZXItYm9yZGVyLXJhZGl1cyk7XG59XG5cblxuLy8gQ2FyZCBkZWNrXG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgLmNhcmQtZGVjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIG1hcmdpbi1yaWdodDogLSRjYXJkLWRlY2stbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAtJGNhcmQtZGVjay1tYXJnaW47XG5cbiAgICAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAwIDAlO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIG1hcmdpbi1yaWdodDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgICBtYXJnaW4tbGVmdDogJGNhcmQtZGVjay1tYXJnaW47XG4gICAgfVxuICB9XG59XG5cblxuLy9cbi8vIENhcmQgZ3JvdXBzXG4vL1xuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKHNtKSB7XG4gIC5jYXJkLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG5cbiAgICAuY2FyZCB7XG4gICAgICBmbGV4OiAxIDAgMCU7XG5cbiAgICAgICsgLmNhcmQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSByb3VuZGVkIGNvcm5lcnNcbiAgICAgIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmlnaHQtcmFkaXVzKDApO1xuXG4gICAgICAgICAgLmNhcmQtaW1nLXRvcCB7XG4gICAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmNhcmQtaW1nLWJvdHRvbSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoMCk7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wIHtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICAgICAuY2FyZC1pbWctdG9wLFxuICAgICAgICAgIC5jYXJkLWltZy1ib3R0b20ge1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuXG4vL1xuLy8gQ29sdW1uc1xuLy9cblxuLmNhcmQtY29sdW1ucyB7XG4gIC5jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkY2FyZC1jb2x1bW5zLW1hcmdpbjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBjb2x1bW4tY291bnQ6ICRjYXJkLWNvbHVtbnMtY291bnQ7XG4gICAgY29sdW1uLWdhcDogJGNhcmQtY29sdW1ucy1nYXA7XG5cbiAgICAuY2FyZCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8vIERvbid0IGxldCB0aGVtIHZlcnRpY2FsbHkgc3BhbiBtdWx0aXBsZSBjb2x1bW5zXG4gICAgICB3aWR0aDogMTAwJTsgLy8gRG9uJ3QgbGV0IHRoZWlyIHdpZHRoIGNoYW5nZVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQmFzZSBjbGFzc1xuLy9cbi8vIFJlcXVpcmVzIG9uZSBvZiB0aGUgY29udGV4dHVhbCwgY29sb3IgbW9kaWZpZXIgY2xhc3NlcyBmb3IgYGNvbG9yYCBhbmRcbi8vIGBiYWNrZ3JvdW5kLWNvbG9yYC5cblxuLmJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZy15ICRiYWRnZS1wYWRkaW5nLXg7XG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRiYWRnZS1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCk7XG5cbiAgLy8gRW1wdHkgYmFkZ2VzIGNvbGxhcHNlIGF1dG9tYXRpY2FsbHlcbiAgJjplbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBRdWljayBmaXggZm9yIGJhZGdlcyBpbiBidXR0b25zXG4uYnRuIC5iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuXG4vLyBQaWxsIGJhZGdlc1xuLy9cbi8vIE1ha2UgdGhlbSBleHRyYSByb3VuZGVkIHdpdGggYSBtb2RpZmllciB0byByZXBsYWNlIHYzJ3MgYmFkZ2VzLlxuXG4uYmFkZ2UtcGlsbCB7XG4gIHBhZGRpbmctcmlnaHQ6ICRiYWRnZS1waWxsLXBhZGRpbmcteDtcbiAgcGFkZGluZy1sZWZ0OiAkYmFkZ2UtcGlsbC1wYWRkaW5nLXg7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJhZGdlLXBpbGwtYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIENvbG9yc1xuLy9cbi8vIENvbnRleHR1YWwgdmFyaWF0aW9ucyAobGlua2VkIGJhZGdlcyBnZXQgZGFya2VyIG9uIDpob3ZlcikuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYmFkZ2UtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBiYWRnZS12YXJpYW50KCR2YWx1ZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBiYWRnZS12YXJpYW50KCRiZykge1xuICBAaW5jbHVkZSBjb2xvci15aXEoJGJnKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnO1xuXG4gICZbaHJlZl0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yLXlpcSgkYmcpO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiZywgMTAlKTtcbiAgICB9XG4gIH1cbn1cbiIsIi5qdW1ib3Ryb24ge1xuICBwYWRkaW5nOiAkanVtYm90cm9uLXBhZGRpbmcgKCRqdW1ib3Ryb24tcGFkZGluZyAvIDIpO1xuICBtYXJnaW4tYm90dG9tOiAkanVtYm90cm9uLXBhZGRpbmc7XG4gIGJhY2tncm91bmQtY29sb3I6ICRqdW1ib3Ryb24tYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMtbGcpO1xuXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoc20pIHtcbiAgICBwYWRkaW5nOiAoJGp1bWJvdHJvbi1wYWRkaW5nICogMikgJGp1bWJvdHJvbi1wYWRkaW5nO1xuICB9XG59XG5cbi5qdW1ib3Ryb24tZmx1aWQge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG59XG4iLCIvL1xuLy8gQmFzZSBzdHlsZXNcbi8vXG5cbi5hbGVydCB7XG4gIHBhZGRpbmc6ICRhbGVydC1wYWRkaW5nLXkgJGFsZXJ0LXBhZGRpbmcteDtcbiAgbWFyZ2luLWJvdHRvbTogJGFsZXJ0LW1hcmdpbi1ib3R0b207XG4gIGJvcmRlcjogJGFsZXJ0LWJvcmRlci13aWR0aCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkYWxlcnQtYm9yZGVyLXJhZGl1cyk7XG59XG5cbi8vIEhlYWRpbmdzIGZvciBsYXJnZXIgYWxlcnRzXG4uYWxlcnQtaGVhZGluZyB7XG4gIC8vIFNwZWNpZmllZCB0byBwcmV2ZW50IGNvbmZsaWN0cyBvZiBjaGFuZ2luZyAkaGVhZGluZ3MtY29sb3JcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8vIFByb3ZpZGUgY2xhc3MgZm9yIGxpbmtzIHRoYXQgbWF0Y2ggYWxlcnRzXG4uYWxlcnQtbGluayB7XG4gIGZvbnQtd2VpZ2h0OiAkYWxlcnQtbGluay1mb250LXdlaWdodDtcbn1cblxuXG4vLyBEaXNtaXNzaWJsZSBhbGVydHNcbi8vXG4vLyBFeHBhbmQgdGhlIHJpZ2h0IHBhZGRpbmcgYW5kIGFjY291bnQgZm9yIHRoZSBjbG9zZSBidXR0b24ncyBwb3NpdGlvbmluZy5cblxuLmFsZXJ0LWRpc21pc3NpYmxlIHtcbiAgLy8gQWRqdXN0IGNsb3NlIGxpbmsgcG9zaXRpb25cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtJGFsZXJ0LXBhZGRpbmcteTtcbiAgICByaWdodDogLSRhbGVydC1wYWRkaW5nLXg7XG4gICAgcGFkZGluZzogJGFsZXJ0LXBhZGRpbmcteSAkYWxlcnQtcGFkZGluZy14O1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cblxuLy8gQWx0ZXJuYXRlIHN0eWxlc1xuLy9cbi8vIEdlbmVyYXRlIGNvbnRleHR1YWwgbW9kaWZpZXIgY2xhc3NlcyBmb3IgY29sb3JpemluZyB0aGUgYWxlcnQuXG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICAuYWxlcnQtI3skY29sb3J9IHtcbiAgICBAaW5jbHVkZSBhbGVydC12YXJpYW50KHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgLTEwKSwgdGhlbWUtY29sb3ItbGV2ZWwoJGNvbG9yLCAtOSksIHRoZW1lLWNvbG9yLWxldmVsKCRjb2xvciwgNikpO1xuICB9XG59XG4iLCJAbWl4aW4gYWxlcnQtdmFyaWFudCgkYmFja2dyb3VuZCwgJGJvcmRlciwgJGNvbG9yKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBib3JkZXItY29sb3I6ICRib3JkZXI7XG5cbiAgaHIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IGRhcmtlbigkYm9yZGVyLCA1JSk7XG4gIH1cblxuICAuYWxlcnQtbGluayB7XG4gICAgY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSk7XG4gIH1cbn1cbiIsIi5tZWRpYSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ubWVkaWEtYm9keSB7XG4gIGZsZXg6IDE7XG59XG4iLCIvLyBCYXNlIGNsYXNzXG4udG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogJHppbmRleC10b29sdGlwO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAkdG9vbHRpcC1tYXJnaW47XG4gIC8vIE91ciBwYXJlbnQgZWxlbWVudCBjYW4gYmUgYXJiaXRyYXJ5IHNpbmNlIHRvb2x0aXBzIGFyZSBieSBkZWZhdWx0IGluc2VydGVkIGFzIGEgc2libGluZyBvZiB0aGVpciB0YXJnZXQgZWxlbWVudC5cbiAgLy8gU28gcmVzZXQgb3VyIGZvbnQgYW5kIHRleHQgcHJvcGVydGllcyB0byBhdm9pZCBpbmhlcml0aW5nIHdlaXJkIHZhbHVlcy5cbiAgQGluY2x1ZGUgcmVzZXQtdGV4dCgpO1xuICBmb250LXNpemU6ICRmb250LXNpemUtc207XG4gIC8vIEFsbG93IGJyZWFraW5nIHZlcnkgbG9uZyB3b3JkcyBzbyB0aGV5IGRvbid0IG92ZXJmbG93IHRoZSB0b29sdGlwJ3MgYm91bmRzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgb3BhY2l0eTogMDtcblxuICAmLnNob3cgeyBvcGFjaXR5OiAkdG9vbHRpcC1vcGFjaXR5OyB9XG5cbiAgLmFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgIGhlaWdodDogJHRvb2x0aXAtYXJyb3ctaGVpZ2h0O1xuICB9XG5cbiAgJi5icy10b29sdGlwLXRvcCB7XG4gICAgcGFkZGluZzogJHRvb2x0aXAtYXJyb3ctd2lkdGggMDtcbiAgICAuYXJyb3cge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1yaWdodCB7XG4gICAgcGFkZGluZzogMCAkdG9vbHRpcC1hcnJvdy13aWR0aDtcbiAgICAuYXJyb3cge1xuICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICBtYXJnaW4tdG9wOiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAkdG9vbHRpcC1hcnJvdy13aWR0aCAwO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkdG9vbHRpcC1hcnJvdy1jb2xvcjtcbiAgICB9XG4gIH1cbiAgJi5icy10b29sdGlwLWJvdHRvbSB7XG4gICAgcGFkZGluZzogJHRvb2x0aXAtYXJyb3ctd2lkdGggMDtcbiAgICAuYXJyb3cge1xuICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgIC5hcnJvdzo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtKCR0b29sdGlwLWFycm93LXdpZHRoIC0gMik7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwICR0b29sdGlwLWFycm93LXdpZHRoICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1sZWZ0IHtcbiAgICBwYWRkaW5nOiAwICR0b29sdGlwLWFycm93LXdpZHRoO1xuICAgIC5hcnJvdyB7XG4gICAgICByaWdodDogMDtcbiAgICB9XG5cbiAgICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgICByaWdodDogMDtcbiAgICAgIG1hcmdpbi10b3A6IC0oJHRvb2x0aXAtYXJyb3ctd2lkdGggLSAyKTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBib3JkZXItd2lkdGg6ICR0b29sdGlwLWFycm93LXdpZHRoIDAgJHRvb2x0aXAtYXJyb3ctd2lkdGggJHRvb2x0aXAtYXJyb3ctd2lkdGg7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHRvb2x0aXAtYXJyb3ctY29sb3I7XG4gICAgfVxuICB9XG4gICYuYnMtdG9vbHRpcC1hdXRvIHtcbiAgICAmW3gtcGxhY2VtZW50Xj1cInRvcFwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLXRvcDtcbiAgICB9XG4gICAgJlt4LXBsYWNlbWVudF49XCJyaWdodFwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLXJpZ2h0O1xuICAgIH1cbiAgICAmW3gtcGxhY2VtZW50Xj1cImJvdHRvbVwiXSB7XG4gICAgICBAZXh0ZW5kIC5icy10b29sdGlwLWJvdHRvbTtcbiAgICB9XG4gICAgJlt4LXBsYWNlbWVudF49XCJsZWZ0XCJdIHtcbiAgICAgIEBleHRlbmQgLmJzLXRvb2x0aXAtbGVmdDtcbiAgICB9XG4gIH1cblxuICAuYXJyb3c6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgfVxufVxuXG4vLyBXcmFwcGVyIGZvciB0aGUgdG9vbHRpcCBjb250ZW50XG4udG9vbHRpcC1pbm5lciB7XG4gIG1heC13aWR0aDogJHRvb2x0aXAtbWF4LXdpZHRoO1xuICBwYWRkaW5nOiAkdG9vbHRpcC1wYWRkaW5nLXkgJHRvb2x0aXAtcGFkZGluZy14O1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHRvb2x0aXAtYmc7XG4gIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJGJvcmRlci1yYWRpdXMpO1xufVxuIiwiLy8gc2Nzcy1saW50OmRpc2FibGUgRHVwbGljYXRlUHJvcGVydHlcbkBtaXhpbiByZXNldC10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xuICAvLyBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHJlc2V0IGZvbnQtc2l6ZSBvciB3b3JkLXdyYXAuXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcbiAgdGV4dC1hbGlnbjogbGVmdDsgLy8gRmFsbGJhY2sgZm9yIHdoZXJlIGBzdGFydGAgaXMgbm90IHN1cHBvcnRlZFxuICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgd29yZC1zcGFjaW5nOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIGxpbmUtYnJlYWs6IGF1dG87XG59XG4iLCIuYWxpZ24tYmFzZWxpbmUgICAgeyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsgfSAvLyBCcm93c2VyIGRlZmF1bHRcbi5hbGlnbi10b3AgICAgICAgICB7IHZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDsgfVxuLmFsaWduLW1pZGRsZSAgICAgIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9XG4uYWxpZ24tYm90dG9tICAgICAgeyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7IH1cbi5hbGlnbi10ZXh0LWJvdHRvbSB7IHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbSAhaW1wb3J0YW50OyB9XG4uYWxpZ24tdGV4dC10b3AgICAgeyB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDsgfVxuIiwiLy8gQ29udGV4dHVhbCBiYWNrZ3JvdW5kc1xuXG5AbWl4aW4gYmctdmFyaWFudCgkcGFyZW50LCAkY29sb3IpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cbiAgYSN7JHBhcmVudH0ge1xuICAgIEBpbmNsdWRlIGhvdmVyLWZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkY29sb3IsIDEwJSkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSBiZy12YXJpYW50KCcuYmctI3skY29sb3J9JywgJHZhbHVlKTtcbn1cblxuLmJnLXdoaXRlIHsgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7IH1cbi5iZy10cmFuc3BhcmVudCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH1cbiIsIi8vXG4vLyBCb3JkZXJcbi8vXG5cbi5ib3JkZXIgICAgICAgICAgeyBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvciAhaW1wb3J0YW50OyB9XG4uYm9yZGVyLTAgICAgICAgIHsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItdG9wLTAgICAgeyBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7IH1cbi5ib3JkZXItcmlnaHQtMCAgeyBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1ib3R0b20tMCB7IGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuLmJvcmRlci1sZWZ0LTAgICB7IGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7IH1cblxuQGVhY2ggJGNvbG9yLCAkdmFsdWUgaW4gJHRoZW1lLWNvbG9ycyB7XG4gIC5ib3JkZXItI3skY29sb3J9IHtcbiAgICBib3JkZXItY29sb3I6ICR2YWx1ZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5ib3JkZXItd2hpdGUge1xuICBib3JkZXItY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4vL1xuLy8gQm9yZGVyLXJhZGl1c1xuLy9cblxuLnJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuLnJvdW5kZWQtdG9wIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG4ucm91bmRlZC1yaWdodCB7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXMgIWltcG9ydGFudDtcbn1cbi5yb3VuZGVkLWJvdHRvbSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cyAhaW1wb3J0YW50O1xufVxuLnJvdW5kZWQtbGVmdCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzICFpbXBvcnRhbnQ7XG59XG5cbi5yb3VuZGVkLWNpcmNsZSB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuLnJvdW5kZWQtMCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4iLCJAbWl4aW4gY2xlYXJmaXgoKSB7XG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG59XG4iLCIvL1xuLy8gVXRpbGl0aWVzIGZvciBjb21tb24gYGRpc3BsYXlgIHZhbHVlc1xuLy9cblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgLmQjeyRpbmZpeH0tbm9uZSAgICAgICAgIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0taW5saW5lICAgICAgIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICAuZCN7JGluZml4fS1pbmxpbmUtYmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIC5kI3skaW5maXh9LWJsb2NrICAgICAgICB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICAuZCN7JGluZml4fS10YWJsZSAgICAgICAgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0tdGFibGUtY2VsbCAgIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0tZmxleCAgICAgICAgIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9XG4gICAgLmQjeyRpbmZpeH0taW5saW5lLWZsZXggIHsgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfVxuICB9XG59XG5cblxuLy9cbi8vIFV0aWxpdGllcyBmb3IgdG9nZ2xpbmcgYGRpc3BsYXlgIGluIHByaW50XG4vL1xuXG4uZC1wcmludC1ibG9jayB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtaW5saW5lIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLmQtcHJpbnQtbm9uZSB7XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBDcmVkaXQ6IE5pY29sYXMgR2FsbGFnaGVyIGFuZCBTVUlUIENTUy5cblxuLmVtYmVkLXJlc3BvbnNpdmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gIH1cblxuICAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLFxuICBpZnJhbWUsXG4gIGVtYmVkLFxuICBvYmplY3QsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMjFieTkge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDkgLyAyMSk7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtMTZieTkge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDkgLyAxNik7XG4gIH1cbn1cblxuLmVtYmVkLXJlc3BvbnNpdmUtNGJ5MyB7XG4gICY6OmJlZm9yZSB7XG4gICAgcGFkZGluZy10b3A6IHBlcmNlbnRhZ2UoMyAvIDQpO1xuICB9XG59XG5cbi5lbWJlZC1yZXNwb25zaXZlLTFieTEge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiBwZXJjZW50YWdlKDEgLyAxKTtcbiAgfVxufVxuIiwiLy8gRmxleCB2YXJpYXRpb25cbi8vXG4vLyBDdXN0b20gc3R5bGVzIGZvciBhZGRpdGlvbmFsIGZsZXggYWxpZ25tZW50IG9wdGlvbnMuXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5mbGV4I3skaW5maXh9LXJvdyAgICAgICAgICAgIHsgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tY29sdW1uICAgICAgICAgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1yb3ctcmV2ZXJzZSAgICB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0tY29sdW1uLXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4gICAgLmZsZXgjeyRpbmZpeH0td3JhcCAgICAgICAgIHsgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7IH1cbiAgICAuZmxleCN7JGluZml4fS1ub3dyYXAgICAgICAgeyBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9XG4gICAgLmZsZXgjeyRpbmZpeH0td3JhcC1yZXZlcnNlIHsgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsgfVxuXG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1zdGFydCAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWVuZCAgICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgLmp1c3RpZnktY29udGVudCN7JGluZml4fS1iZXR3ZWVuIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuanVzdGlmeS1jb250ZW50I3skaW5maXh9LWFyb3VuZCAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tc3RhcnQgICAgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLWl0ZW1zI3skaW5maXh9LWVuZCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24taXRlbXMjeyRpbmZpeH0tYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1pdGVtcyN7JGluZml4fS1zdHJldGNoICB7IGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH1cblxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LXN0YXJ0ICAgeyBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1lbmQgICAgIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWNlbnRlciAgeyBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1jb250ZW50I3skaW5maXh9LWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1hcm91bmQgIHsgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH1cbiAgICAuYWxpZ24tY29udGVudCN7JGluZml4fS1zdHJldGNoIHsgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG5cbiAgICAuYWxpZ24tc2VsZiN7JGluZml4fS1hdXRvICAgICB7IGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0YXJ0ICAgIHsgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tZW5kICAgICAgeyBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9XG4gICAgLmFsaWduLXNlbGYjeyRpbmZpeH0tY2VudGVyICAgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfVxuICAgIC5hbGlnbi1zZWxmI3skaW5maXh9LXN0cmV0Y2ggIHsgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9XG4gIH1cbn1cbiIsIkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC5mbG9hdCN7JGluZml4fS1sZWZ0ICB7IEBpbmNsdWRlIGZsb2F0LWxlZnQ7IH1cbiAgICAuZmxvYXQjeyRpbmZpeH0tcmlnaHQgeyBAaW5jbHVkZSBmbG9hdC1yaWdodDsgfVxuICAgIC5mbG9hdCN7JGluZml4fS1ub25lICB7IEBpbmNsdWRlIGZsb2F0LW5vbmU7IH1cbiAgfVxufVxuIiwiQG1peGluIGZsb2F0LWxlZnQge1xuICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xufVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG59XG5AbWl4aW4gZmxvYXQtbm9uZSB7XG4gIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLyBDb21tb24gdmFsdWVzXG5cbi8vIFNhc3MgbGlzdCBub3QgaW4gdmFyaWFibGVzIHNpbmNlIGl0J3Mgbm90IGludGVuZGVkIGZvciBjdXN0b21pemF0aW9uLlxuJHBvc2l0aW9uczogc3RhdGljLCByZWxhdGl2ZSwgYWJzb2x1dGUsIGZpeGVkLCBzdGlja3k7XG5cbkBlYWNoICRwb3NpdGlvbiBpbiAkcG9zaXRpb25zIHtcbiAgLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7IHBvc2l0aW9uOiAkcG9zaXRpb24gIWltcG9ydGFudDsgfVxufVxuXG4vLyBTaG9ydGhhbmRcblxuLmZpeGVkLXRvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLmZpeGVkLWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHppbmRleC1maXhlZDtcbn1cblxuLnN0aWNreS10b3Age1xuICBAc3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMDtcbiAgICB6LWluZGV4OiAkemluZGV4LXN0aWNreTtcbiAgfVxufVxuIiwiLy9cbi8vIFNjcmVlbnJlYWRlcnNcbi8vXG5cbi5zci1vbmx5IHtcbiAgQGluY2x1ZGUgc3Itb25seSgpO1xufVxuXG4uc3Itb25seS1mb2N1c2FibGUge1xuICBAaW5jbHVkZSBzci1vbmx5LWZvY3VzYWJsZSgpO1xufVxuIiwiLy8gT25seSBkaXNwbGF5IGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnNcbi8vXG4vLyBTZWU6IGh0dHA6Ly9hMTF5cHJvamVjdC5jb20vcG9zdHMvaG93LXRvLWhpZGUtY29udGVudFxuLy8gU2VlOiBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuXG5AbWl4aW4gc3Itb25seSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwwLDAsMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCAuc3Itb25seSB0byBvbmx5IGRpc3BsYXkgY29udGVudCB3aGVuIGl0J3MgZm9jdXNlZC5cbi8vXG4vLyBVc2VmdWwgZm9yIFwiU2tpcCB0byBtYWluIGNvbnRlbnRcIiBsaW5rczsgc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDEzL05PVEUtV0NBRzIwLVRFQ0hTLTIwMTMwOTA1L0cxXG4vL1xuLy8gQ3JlZGl0OiBIVE1MNSBCb2lsZXJwbGF0ZVxuXG5AbWl4aW4gc3Itb25seS1mb2N1c2FibGUge1xuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY2xpcDogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGNsaXAtcGF0aDogbm9uZTtcbiAgfVxufVxuIiwiLy8gV2lkdGggYW5kIGhlaWdodFxuXG5AZWFjaCAkcHJvcCwgJGFiYnJldiBpbiAod2lkdGg6IHcsIGhlaWdodDogaCkge1xuICBAZWFjaCAkc2l6ZSwgJGxlbmd0aCBpbiAkc2l6ZXMge1xuICAgIC4jeyRhYmJyZXZ9LSN7JHNpemV9IHsgI3skcHJvcH06ICRsZW5ndGggIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi5tdy0xMDAgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuLm1oLTEwMCB7IG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfVxuIiwiLy8gTWFyZ2luIGFuZCBQYWRkaW5nXG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIEBlYWNoICRwcm9wLCAkYWJicmV2IGluIChtYXJnaW46IG0sIHBhZGRpbmc6IHApIHtcbiAgICAgIEBlYWNoICRzaXplLCAkbGVuZ3RoIGluICRzcGFjZXJzIHtcblxuICAgICAgICAuI3skYWJicmV2fSN7JGluZml4fS0jeyRzaXplfSAgeyAjeyRwcm9wfTogICAgICAgICRsZW5ndGggIWltcG9ydGFudDsgfVxuICAgICAgICAuI3skYWJicmV2fXQjeyRpbmZpeH0tI3skc2l6ZX0sXG4gICAgICAgIC4jeyRhYmJyZXZ9eSN7JGluZml4fS0jeyRzaXplfSB7XG4gICAgICAgICAgI3skcHJvcH0tdG9wOiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1yI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXgjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LXJpZ2h0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgLiN7JGFiYnJldn1iI3skaW5maXh9LSN7JHNpemV9LFxuICAgICAgICAuI3skYWJicmV2fXkjeyRpbmZpeH0tI3skc2l6ZX0ge1xuICAgICAgICAgICN7JHByb3B9LWJvdHRvbTogJGxlbmd0aCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC4jeyRhYmJyZXZ9bCN7JGluZml4fS0jeyRzaXplfSxcbiAgICAgICAgLiN7JGFiYnJldn14I3skaW5maXh9LSN7JHNpemV9IHtcbiAgICAgICAgICAjeyRwcm9wfS1sZWZ0OiAkbGVuZ3RoICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb21lIHNwZWNpYWwgbWFyZ2luIHV0aWxzXG4gICAgLm0jeyRpbmZpeH0tYXV0byAgeyBtYXJnaW46ICAgICAgICBhdXRvICFpbXBvcnRhbnQ7IH1cbiAgICAubXQjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tciN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWIjeyRpbmZpeH0tYXV0byxcbiAgICAubXkjeyRpbmZpeH0tYXV0byB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5tbCN7JGluZml4fS1hdXRvLFxuICAgIC5teCN7JGluZml4fS1hdXRvIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gVGV4dFxuLy9cblxuLy8gQWxpZ25tZW50XG5cbi50ZXh0LWp1c3RpZnkgIHsgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OyB9XG4udGV4dC1ub3dyYXAgICB7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfVxuLnRleHQtdHJ1bmNhdGUgeyBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlOyB9XG5cbi8vIFJlc3BvbnNpdmUgYWxpZ25tZW50XG5cbkBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQpIHtcbiAgICAkaW5maXg6IGJyZWFrcG9pbnQtaW5maXgoJGJyZWFrcG9pbnQsICRncmlkLWJyZWFrcG9pbnRzKTtcblxuICAgIC50ZXh0I3skaW5maXh9LWxlZnQgICB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfVxuICAgIC50ZXh0I3skaW5maXh9LXJpZ2h0ICB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cbiAgICAudGV4dCN7JGluZml4fS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuICB9XG59XG5cbi8vIFRyYW5zZm9ybWF0aW9uXG5cbi50ZXh0LWxvd2VyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LXVwcGVyY2FzZSAgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cbi50ZXh0LWNhcGl0YWxpemUgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9XG5cbi8vIFdlaWdodCBhbmQgaXRhbGljc1xuXG4uZm9udC13ZWlnaHQtbGlnaHQgIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodCAhaW1wb3J0YW50OyB9XG4uZm9udC13ZWlnaHQtbm9ybWFsIHsgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWwgIWltcG9ydGFudDsgfVxuLmZvbnQtd2VpZ2h0LWJvbGQgICB7IGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZCAhaW1wb3J0YW50OyB9XG4uZm9udC1pdGFsaWMgICAgICAgIHsgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7IH1cblxuLy8gQ29udGV4dHVhbCBjb2xvcnNcblxuLnRleHQtd2hpdGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbkBlYWNoICRjb2xvciwgJHZhbHVlIGluICR0aGVtZS1jb2xvcnMge1xuICBAaW5jbHVkZSB0ZXh0LWVtcGhhc2lzLXZhcmlhbnQoJy50ZXh0LSN7JGNvbG9yfScsICR2YWx1ZSk7XG59XG5cbi50ZXh0LW11dGVkIHsgY29sb3I6ICR0ZXh0LW11dGVkICFpbXBvcnRhbnQ7IH1cblxuLy8gTWlzY1xuXG4udGV4dC1oaWRlIHtcbiAgQGluY2x1ZGUgdGV4dC1oaWRlKCk7XG59XG4iLCIvLyBUZXh0IHRydW5jYXRlXG4vLyBSZXF1aXJlcyBpbmxpbmUtYmxvY2sgb3IgYmxvY2sgZm9yIHByb3BlciBzdHlsaW5nXG5cbkBtaXhpbiB0ZXh0LXRydW5jYXRlKCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbiIsIi8vIFR5cG9ncmFwaHlcblxuQG1peGluIHRleHQtZW1waGFzaXMtdmFyaWFudCgkcGFyZW50LCAkY29sb3IpIHtcbiAgI3skcGFyZW50fSB7XG4gICAgY29sb3I6ICRjb2xvciAhaW1wb3J0YW50O1xuICB9XG4gIGEjeyRwYXJlbnR9IHtcbiAgICBAaW5jbHVkZSBob3Zlci1mb2N1cyB7XG4gICAgICBjb2xvcjogZGFya2VuKCRjb2xvciwgMTAlKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ1NTIGltYWdlIHJlcGxhY2VtZW50XG5AbWl4aW4gdGV4dC1oaWRlKCkge1xuICBmb250OiAwLzAgYTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbn1cbiIsIi8vXG4vLyBWaXNpYmlsaXR5IHV0aWxpdGllc1xuLy9cblxuLnZpc2libGUge1xuICBAaW5jbHVkZSBpbnZpc2libGUodmlzaWJsZSk7XG59XG5cbi5pbnZpc2libGUge1xuICBAaW5jbHVkZSBpbnZpc2libGUoaGlkZGVuKTtcbn1cbiIsIi8vIFZpc2liaWxpdHlcblxuQG1peGluIGludmlzaWJsZSgkdmlzaWJpbGl0eSkge1xuICB2aXNpYmlsaXR5OiAkdmlzaWJpbGl0eSAhaW1wb3J0YW50O1xufVxuIiwiLyogc3lzdGVtLWZvbnQuY3NzIHYxLjEuMCB8IENDMC0xLjAgTGljZW5zZSB8IGdpdGh1Yi5jb20vam9uYXRoYW50bmVhbC9zeXN0ZW0tZm9udC1mYWNlICovXHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogMzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1MaWdodFwiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTGlnaHRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIExpZ2h0XCIpLCBsb2NhbChcIlVidW50dSBMaWdodFwiKSwgbG9jYWwoXCJSb2JvdG8tTGlnaHRcIiksIGxvY2FsKFwiRHJvaWRTYW5zXCIpLCBsb2NhbChcIlRhaG9tYVwiKTtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogc3lzdGVtLXVpO1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcclxuICAgIHNyYzogbG9jYWwoXCIuU0ZOU1RleHQtTGlnaHRJdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgTGlnaHQgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBMaWdodCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUxpZ2h0SXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fuc1wiKSwgbG9jYWwoXCJUYWhvbWFcIik7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LVJlZ3VsYXJcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLVJlZ3VsYXJcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJXCIpLCBsb2NhbChcIlVidW50dVwiKSwgbG9jYWwoXCJSb2JvdG8tUmVndWxhclwiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1JdGFsaWNcIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLUl0YWxpY1wiKSwgbG9jYWwoXCIuTHVjaWRhR3JhbmRlVUlcIiksIGxvY2FsKFwiU2Vnb2UgVUkgSXRhbGljXCIpLCBsb2NhbChcIlVidW50dSBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUl0YWxpY1wiKSwgbG9jYWwoXCJEcm9pZFNhbnNcIiksIGxvY2FsKFwiVGFob21hXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1NZWRpdW1cIiksIGxvY2FsKFwiLkhlbHZldGljYU5ldWVEZXNrSW50ZXJmYWNlLU1lZGl1bVA0XCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBTZW1pYm9sZFwiKSwgbG9jYWwoXCJVYnVudHUgTWVkaXVtXCIpLCBsb2NhbChcIlJvYm90by1NZWRpdW1cIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBzcmM6IGxvY2FsKFwiLlNGTlNUZXh0LU1lZGl1bUl0YWxpY1wiKSwgbG9jYWwoXCIuSGVsdmV0aWNhTmV1ZURlc2tJbnRlcmZhY2UtTWVkaXVtSXRhbGljUDRcIiksIGxvY2FsKFwiLkx1Y2lkYUdyYW5kZVVJXCIpLCBsb2NhbChcIlNlZ29lIFVJIFNlbWlib2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgTWVkaXVtIEl0YWxpY1wiKSwgbG9jYWwoXCJSb2JvdG8tTWVkaXVtSXRhbGljXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkXCIpLCBsb2NhbChcIlVidW50dSBCb2xkXCIpLCBsb2NhbChcIlJvYm90by1Cb2xkXCIpLCBsb2NhbChcIkRyb2lkU2Fucy1Cb2xkXCIpLCBsb2NhbChcIlRhaG9tYSBCb2xkXCIpO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgc3JjOiBsb2NhbChcIi5TRk5TVGV4dC1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIi5IZWx2ZXRpY2FOZXVlRGVza0ludGVyZmFjZS1Cb2xkSXRhbGljXCIpLCBsb2NhbChcIi5MdWNpZGFHcmFuZGVVSVwiKSwgbG9jYWwoXCJTZWdvZSBVSSBCb2xkIEl0YWxpY1wiKSwgbG9jYWwoXCJVYnVudHUgQm9sZCBJdGFsaWNcIiksIGxvY2FsKFwiUm9ib3RvLUJvbGRJdGFsaWNcIiksIGxvY2FsKFwiRHJvaWRTYW5zLUJvbGRcIiksIGxvY2FsKFwiVGFob21hIEJvbGRcIik7XHJcbn0iLCJAZm9udC1mYWNlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAnR2x5cGhpY29ucyBIYWxmbGluZ3MnO1xyXG4gICAgc3JjOiB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90Jyk7XHJcbiAgICBzcmM6IHVybCgnaHR0cHM6Ly9uZXRkbmEuYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4wLjAvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJ2h0dHBzOi8vbmV0ZG5hLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMC4wL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuc3ZnI2dseXBoaWNvbnMtaGFsZmxpbmdzcmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XHJcbn1cclxuXHJcbi5nbHlwaGljb24ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyBcclxuICAgIHRvcDogMXB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6ICdHbHlwaGljb25zIEhhbGZsaW5ncyc7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxufVxyXG5cclxuIC5nbHlwaGljb24taGVhcnQtZW1wdHk6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlMTQzXCI7XHJcbn1cclxuXHJcbiAuZ2x5cGhpY29uLW9rOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTAxM1wiO1xyXG59XHJcblxyXG4gLmdseXBoaWNvbi1yZW1vdmU6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlMDE0XCI7XHJcbn1cclxuXHJcbiAuZ2x5cGhpY29uLWhlYXJ0OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTAwNVwiO1xyXG59IiwiLy8gaHR0cDovL2RhbmllbHN0ZXJuLmNhL3JhbmdlLmNzcy8/cmVmPWNzcy10cmlja3MjL1xyXG4gXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlciB7XHJcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogNS4ycHggMDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDUuNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoOTAsIDEwMSwgMTA3LCAwLjMyKTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcclxuICAgIGJvcmRlcjogMHB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICB3aWR0aDogMTZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZTE3MDc1O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgbWFyZ2luLXRvcDogLTcuMXB4O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI5LCAxNDIsIDE0OSwgMC4zMik7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjo6LW1vei1yYW5nZS10cmFjayB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNS42cHg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDApLCAwcHggMHB4IDBweCByZ2JhKDEzLCAxMywgMTMsIDApO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSg5MCwgMTAxLCAxMDcsIDAuMzIpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjVweDtcclxuICAgIGJvcmRlcjogMS45cHggc29saWQgcmdiYSgwLCAwLCAwLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbW96LXJhbmdlLXRodW1iIHtcclxuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4ICMwMDAwMzEsIDBweCAwcHggMHB4ICMwMDAwNGI7XHJcbiAgICBib3JkZXI6IDBweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDApO1xyXG4gICAgaGVpZ2h0OiAxNnB4O1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxM3B4O1xyXG4gICAgYmFja2dyb3VuZDogI2UxNzA3NTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdHJhY2sge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDUuNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPXJhbmdlXS5zbGlkZXI6Oi1tcy1maWxsLWxvd2VyIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoNTMsIDU5LCA2MywgMC4zMik7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtZmlsbC11cHBlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7XHJcbiAgICBib3JkZXI6IDEuOXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwKSwgMHB4IDBweCAwcHggcmdiYSgxMywgMTMsIDEzLCAwKTtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOjotbXMtdGh1bWIge1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggIzAwMDAzMSwgMHB4IDBweCAwcHggIzAwMDA0YjtcclxuICAgIGJvcmRlcjogMHB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICB3aWR0aDogMTZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZTE3MDc1O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgaGVpZ2h0OiA1LjZweDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1yYW5nZV0uc2xpZGVyOmZvY3VzOjotbXMtZmlsbC1sb3dlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDkwLCAxMDEsIDEwNywgMC4zMik7XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9cmFuZ2VdLnNsaWRlcjpmb2N1czo6LW1zLWZpbGwtdXBwZXIge1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjksIDE0MiwgMTQ5LCAwLjMyKTtcclxufSIsImJvZHkge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTIsIDI1MiwgMjUyLCAwLjI5KTtcclxuICAgIGNvbG9yOiAkY29sLS10ZXh0O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LS1mYW1pbHk7XHJcbn1cclxuXHJcbi5qdW1ib3Ryb24ge1xyXG4gICAgcGFkZGluZzogNTBweCAwO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbC0tcHJpbWFyeTtcclxuICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAkY29sLS1zZWM7XHJcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgIzEyNDY2NSwgJGNvbC0tcHJpbWFyeSk7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGgxIHtcclxuICAgICAgICBtYXJnaW46IDAgMCAyMHB4O1xyXG4gICAgICAgIGNvbG9yOiAkY29sLS1zZWM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcclxuICAgICAgICBmb250LXNpemU6IDQ4cHg7XHJcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0ycHg7XHJcbiAgICB9XHJcbiAgICBwIHtcclxuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY1KTtcclxuICAgIH1cclxuICAgIC5jb250YWluZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgb3BhY2l0eTogMC40O1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHdpZHRoPSc2NCcgaGVpZ2h0PSc2NCcgdmlld0JveD0nMCAwIDY0IDY0JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGQ9J004IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4em0wLTJjMy4zMTQgMCA2LTIuNjg2IDYtNnMtMi42ODYtNi02LTYtNiAyLjY4Ni02IDYgMi42ODYgNiA2IDZ6bTMzLjQxNC02bDUuOTUtNS45NUw0NS45NS42MzYgNDAgNi41ODYgMzQuMDUuNjM2IDMyLjYzNiAyLjA1IDM4LjU4NiA4bC01Ljk1IDUuOTUgMS40MTQgMS40MTRMNDAgOS40MTRsNS45NSA1Ljk1IDEuNDE0LTEuNDE0TDQxLjQxNCA4ek00MCA0OGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHptMC0yYzMuMzE0IDAgNi0yLjY4NiA2LTZzLTIuNjg2LTYtNi02LTYgMi42ODYtNiA2IDIuNjg2IDYgNiA2ek05LjQxNCA0MGw1Ljk1LTUuOTUtMS40MTQtMS40MTRMOCAzOC41ODZsLTUuOTUtNS45NUwuNjM2IDM0LjA1IDYuNTg2IDQwbC01Ljk1IDUuOTUgMS40MTQgMS40MTRMOCA0MS40MTRsNS45NSA1Ljk1IDEuNDE0LTEuNDE0TDkuNDE0IDQweicgZmlsbD0nIzlDOTJBQycgZmlsbC1vcGFjaXR5PScwLjQnIGZpbGwtcnVsZT0nZXZlbm9kZCcvPjwvc3ZnPlwiKTtcclxuICAgIH1cclxufSIsIiRjb2wtLXByaW1hcnk6IzgwMzNiMDtcclxuJGNvbC0tc2VjOiM3NWI3ZGQ7XHJcbiRjb2wtLXRleHQ6IzVhNjU2YjtcclxuXHJcbiRmb250LS1mYW1pbHk6XCJTZWdvZSBVSVwiLCBzeXN0ZW0tdWksIFRhaG9tYTsgICIsInByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgcGFkZGluZzogMDtcclxufVxyXG5cclxuY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sXHJcbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xyXG4gICAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YSc7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5ib3Jib3Qge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNmM2YzZjM7XHJcbn1cclxuXHJcbi5zLWhpZ2hsaWdodCB7XHJcbiAgICBjb2xvcjogI2UxNzA3NTtcclxufVxyXG5cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmNhcmQge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIC5jYXJkLWhlYWRlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNCk7XHJcbiAgICB9XHJcbiAgICAuY2FyZC1mb290ZXIge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xyXG4gICAgfVxyXG59XHJcblxyXG5wcmlzbS1ibG9jaz5wcmUge1xyXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5zaG93LWNvZGUge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICNlMTcwNzU7XHJcbiAgICB9XHJcbiAgICBpLm1kaSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XHJcbiAgICAgICAgY29sb3I6ICNlMTcwNzU7XHJcbiAgICB9XHJcbn1cclxuXHJcbnN0cm9uZyB7XHJcbiAgICBmb250LWZhbWlseTogJ0luY29uc29sYXRhJztcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBwYWRkaW5nOiAwIDRweDtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5idG4uYnRuLXNtYWxsIHtcclxuICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDMpO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIGZvbnQtc2l6ZTogMC44ZW07XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYnRuLmJ0bi1icm93c2VyIHtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBmb250LXNpemU6IDk1JTtcclxuICAgIGltZyB7XHJcbiAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcclxuICAgIH1cclxuICAgIHNwYW4ge1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiBJbmNvbnNvbGF0YTtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgIGNvbG9yOiAjOTVhY2M0O1xyXG4gICAgfVxyXG59XHJcblxyXG4uYnRuLmJ0bi1mcmFtZXdvcmsge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbi1yaWdodDogMWVtO1xyXG59XHJcblxyXG4uaGlnaGxpZ2h0IHtcclxuICAgIGNvbG9yOiAjZTE3MDc1O1xyXG59XHJcblxyXG5kaXYjZGlzcXVzX3RocmVhZCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZmRmZGY7XHJcbn1cclxuXHJcbmEuYnRuLmJ0bi1saW5rIHtcclxuICAgIGJhY2tncm91bmQ6ICNhNmIyYjk7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIHBhZGRpbmc6IDAgNHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgJi5mYWNlYm9vazpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNiNTk5ODtcclxuICAgIH1cclxuICAgICYudHdpdHRlcjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzFkYTFmMjtcclxuICAgIH1cclxuICAgICYubGlua2VkaW46aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc3YjU7XHJcbiAgICB9XHJcbiAgICAmLmdwbHVzOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGQ0YjM5O1xyXG4gICAgfVxyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYigyNDIsIDI0NSwgMjUyKTtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGZkZmRmO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgY29sb3I6ICM4OTkyYTY7XHJcbiAgICBmb250LXNpemU6IDkwJTtcclxuICAgIC5tZGkge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIGNvbG9yOiAjNGY1NjY3O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLm5hdi1saW5rIHtcclxuICAgIGNvbG9yOiAjNzI3YTgxO1xyXG4gICAgaS5tZGkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBzdWI7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB9XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBjb2xvcjogI2UxNzA3NTtcclxuICAgIH1cclxufVxyXG5cclxuc3Bhbi5jb2xvci1wcmV2aWV3IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxZW07XHJcbiAgICBoZWlnaHQ6IDFlbTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGMzYzc7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xyXG4gICAgbWFyZ2luOiAwIDJweDtcclxuICAgICYucHJpbWFyeSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTtcclxuICAgIH1cclxuICAgICYuc3VjY2VzcyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVjYjg1YztcclxuICAgIH1cclxuICAgICYuaW5mbyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzViYzBkZTtcclxuICAgIH1cclxuICAgICYud2FybmluZyB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwYWQ0ZTtcclxuICAgIH1cclxuICAgICYuZGFuZ2VyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDk1MzRmO1xyXG4gICAgfVxyXG59XHJcblxyXG4ubm90ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIHBhZGRpbmc6IDAgMWVtO1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgZm9udC1zaXplOiA5MCU7XHJcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY0KTtcclxuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2UxNzA3NTtcclxufVxyXG5cclxuaDYge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG5zZWN0aW9uLnNlY3Rpb24ge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM2VtO1xyXG4gICAgYSB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIH1cclxufVxyXG5cclxuLmJ0bi1jb2xsYXBzZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RmZGZkZjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICBmb250LXNpemU6IDFlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBjb2xvcjogIzgyOGI5MDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBhZGRpbmc6IDFlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTZkZmRmO1xyXG4gICAgICAgIGNvbG9yOiAjOTBhMWFkO1xyXG4gICAgfVxyXG59Il19 */ +@font-face{font-family:system-ui;font-style:normal;font-weight:300;src:local(".SFNSText-Light"),local(".HelveticaNeueDeskInterface-Light"),local(".LucidaGrandeUI"),local("Segoe UI Light"),local("Ubuntu Light"),local("Roboto-Light"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:300;src:local(".SFNSText-LightItalic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Light Italic"),local("Ubuntu Light Italic"),local("Roboto-LightItalic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:400;src:local(".SFNSText-Regular"),local(".HelveticaNeueDeskInterface-Regular"),local(".LucidaGrandeUI"),local("Segoe UI"),local("Ubuntu"),local("Roboto-Regular"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:400;src:local(".SFNSText-Italic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Italic"),local("Ubuntu Italic"),local("Roboto-Italic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:500;src:local(".SFNSText-Medium"),local(".HelveticaNeueDeskInterface-MediumP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold"),local("Ubuntu Medium"),local("Roboto-Medium"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:500;src:local(".SFNSText-MediumItalic"),local(".HelveticaNeueDeskInterface-MediumItalicP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold Italic"),local("Ubuntu Medium Italic"),local("Roboto-MediumItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:normal;font-weight:700;src:local(".SFNSText-Bold"),local(".HelveticaNeueDeskInterface-Bold"),local(".LucidaGrandeUI"),local("Segoe UI Bold"),local("Ubuntu Bold"),local("Roboto-Bold"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:700;src:local(".SFNSText-BoldItalic"),local(".HelveticaNeueDeskInterface-BoldItalic"),local(".LucidaGrandeUI"),local("Segoe UI Bold Italic"),local("Ubuntu Bold Italic"),local("Roboto-BoldItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:Glyphicons Halflings;src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot);src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot#iefix) format("embedded-opentype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff) format("woff"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Halflings;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-heart:before{content:"\e005"}input[type=range].slider{-webkit-appearance:none;width:100%;margin:5.2px 0}input[type=range].slider:focus{outline:none}input[type=range].slider::-webkit-slider-runnable-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-webkit-slider-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;-webkit-appearance:none;margin-top:-7.1px}input[type=range].slider:focus::-webkit-slider-runnable-track{background:hsla(201,9%,55%,.32)}input[type=range].slider::-moz-range-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-moz-range-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer}input[type=range].slider::-ms-track{width:100%;height:5.6px;cursor:pointer;background:transparent;border-color:transparent;color:transparent}input[type=range].slider::-ms-fill-lower{background:rgba(53,59,63,.32)}input[type=range].slider::-ms-fill-lower,input[type=range].slider::-ms-fill-upper{border:1.9px solid transparent;border-radius:50px;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0)}input[type=range].slider::-ms-fill-upper{background:rgba(90,101,107,.32)}input[type=range].slider::-ms-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;height:5.6px}input[type=range].slider:focus::-ms-fill-lower{background:rgba(90,101,107,.32)}input[type=range].slider:focus::-ms-fill-upper{background:hsla(201,9%,55%,.32)}body{font-size:14px;background-color:hsla(0,0%,99%,.29);color:#5a656b;font-family:Segoe UI,system-ui,Tahoma}.jumbotron{padding:50px 0;text-align:center;background:#8033b0;border-bottom:4px solid #75b7dd;background:linear-gradient(270deg,#124665,#8033b0);position:relative;color:#fff}.jumbotron h1{margin:0 0 20px;color:#75b7dd;font-weight:300;font-size:48px;letter-spacing:-2px}.jumbotron p{color:hsla(0,0%,100%,.65)}.jumbotron .container{position:relative}.jumbotron:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;opacity:.4;background-image:url('data:image/svg+xml;charset=utf-8,')}pre[class*=language-]{border:0;border-radius:0;background:transparent;padding:0}code[class*=language-],pre[class*=language-]{font-family:Inconsolata;font-size:14px}.borbot{border-bottom:3px solid #f3f3f3}.s-highlight{color:#e17075}.hide{display:none}.card{border-radius:0}.card .card-header{border-bottom:1px solid rgba(0,0,0,.04)}.card .card-footer{padding-left:0;background:#fcfcfc}prism-block>pre{margin:0!important;padding:0!important}.show-code{cursor:pointer;font-size:12px}.show-code:hover{color:#e17075}.show-code i.mdi{font-size:18px;line-height:1;display:inline-block;vertical-align:text-top;color:#e17075}strong{font-family:Inconsolata;font-weight:700;padding:0 4px;font-size:100%;color:#000;border-radius:3px;background:transparent}.btn.btn-small{padding:0 10px;line-height:1;background:#f5f5f5;color:rgba(0,0,0,.43);text-transform:uppercase;font-size:.8em;font-weight:700;cursor:pointer}.btn.btn-browser{font-weight:500;font-size:95%}.btn.btn-browser img{width:20px;vertical-align:bottom}.btn.btn-browser span{font-family:Inconsolata;font-weight:700;color:#95acc4}.btn.btn-framework{padding:0;margin-right:1em}.highlight{color:#e17075}div#disqus_thread{background:#fff;padding:10px;border:1px solid #dfdfdf}a.btn.btn-link{background:#a6b2b9;color:#fff;padding:0 4px;border-radius:2px;margin-right:10px}a.btn.btn-link.facebook:hover{background-color:#3b5998}a.btn.btn-link.twitter:hover{background-color:#1da1f2}a.btn.btn-link.linkedin:hover{background-color:#0077b5}a.btn.btn-link.gplus:hover{background-color:#dd4b39}.card-info{background:#f2f5fc;border-top:1px solid #dfdfdf;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding:1rem;color:#8992a6;font-size:90%}.card-info .mdi{line-height:1;vertical-align:middle;opacity:.5;color:#4f5667;margin-right:4px}.card-info .mdi:before{font-size:18px}.nav-link{color:#727a81}.nav-link i.mdi{font-size:1.3rem;vertical-align:sub;line-height:1}.nav-link:hover{color:#e17075}span.color-preview{display:inline-block;width:1em;height:1em;background-color:#bdc3c7;border-radius:100%;margin:0 2px}span.color-preview.primary{background-color:#428bca}span.color-preview.success{background-color:#5cb85c}span.color-preview.info{background-color:#5bc0de}span.color-preview.warning{background-color:#f0ad4e}span.color-preview.danger{background-color:#d9534f}.note{background:transparent;padding:0 1em;border:0;font-size:90%;color:rgba(0,0,0,.64);border-left:3px solid #e17075}h6{font-size:14px}section.section{margin-bottom:3em}.btn-collapse,section.section a{font-weight:500}.btn-collapse{background:#fff;border:1px solid #dfdfdf;border-radius:0;font-size:1em;color:#828b90;cursor:pointer;padding:1em;margin-bottom:1em}.btn-collapse:hover{background:#f7f7f7;border-color:#e6dfdf;color:#90a1ad} \ No newline at end of file diff --git a/src/html/layouts/application.html b/src/html/layouts/application.html index 79f8718..bd67d9e 100644 --- a/src/html/layouts/application.html +++ b/src/html/layouts/application.html @@ -3,14 +3,12 @@ - {% block title %}{{ title }}{% endblock %} - Pretty checkbox | Documentation - + @@ -38,6 +36,9 @@ + + + @@ -62,6 +63,8 @@ + {% block stylesheet %}{% endblock %} + {% block css %}{% endblock %}

pretty checkbox

A pure css library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

-	             
+    ga('send', 'pageview');

pretty checkbox

A pure CSS library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

+	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
 
 

Alternatively, you can also use CDN link

 	
-    https://cdn.jsdelivr.net/npm/pretty-checkbox@3/dist/pretty-checkbox.min.css
+    https://cdn.jsdelivr.net/npm/pretty-checkbox@3.0/dist/pretty-checkbox.min.css
 
 

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

 	
@@ -26,7 +26,7 @@
         </div>
     </div>
 
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

Svg

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

General
show code

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

Image

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

General
show code

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

Plain

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

General
show code
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
Disable

Normal disabled attribute in checkbox is enough.

General
show code
Disable

Normal disabled attribute in checkbox is enough.

General
show code
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
Feathers
show code
Feathers
show code

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
SCSS Customize
Settings

+
SCSS Customize
Settings

     // If you felt the name is not-so-pretty,
     // you can always change!
 
@@ -1892,7 +1892,7 @@
     @import '~pretty-checkbox/scss/states/hover';
     @import '~pretty-checkbox/scss/states/focus';
     @import '~pretty-checkbox/scss/states/indeterminate';
-
More
Browser Compatability
Works in all latest browsers.
>= 10
>= 25
>= 40
>= 8
>= 25
Framework Compatability
Inspirations
Awesome Bootstrap Checkbox - Idea
Animista - Animations.
Contributions
Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome!
Support and share
Credits
Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
Svg icons from useiconic · sparkk.fr
Slider generated from range.css
Licence
The MIT License
\ No newline at end of file + } \ No newline at end of file diff --git a/public/favicon/og-image.jpg b/public/favicon/og-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2700b99349318b2338cf65ab3e1454bff81454a8 GIT binary patch literal 10718 zcmdUVcT`i&)^`voHV_d}s)~w&pmY#ILB|sqbP(Qr)KDVv+`_}sYe1B)HnK|donc1_?%q#bNh7+e4k8f+A2OM{Ng5lIjW@ctqmg6eFs~_KI z;kd?nf%CeAiopxFi+{#`d~w`Q zaec3(;iQlh*QH0Q;8mJ?=Fte??6LGGI2btqAi!?KoBzFdOG6bPzJ~S>8msDa!mLCa zd4Od9%m}o;NjT}5C|0dv5u&J3-uz6a5Kxw=!QZV#=iPD;x+mD=?b@Yf+Up@sOZG2b zerz?k>hwCI62IiO&1T4P!rY;GbaIpu5nZDz*!6@sKXU}YdQ7sSszu;i1^YILTr$U( zC;FvCvDa`}VCyUyqpwknNCS&Ks5FQNWhYxt(_bC|^y$>SWoKgJFr1!PyLwjNwK;OX zBV}nP_-;hdAH%7yJU1?3!;S!)M7n}63NeIlw*{@l-2@7EzzMoi)Qk=47yaB18WCFIgXNMZ_0^^zmJ|x$MRua`KpZiD-7!i!jNigI~%5iHxr<_RWs5z-1U(o) zet=uwv9|fYEE4EFx)}U2LT0cd%Bc9@<1{WkfTy=9LoK~UW)xYOkVi73D|oxzUL>LH zRZXpKYwd>YTBwH_whoCP0iI!X?VghXz{26*IW+FXM|fbm^Y+@Q(E6u!*22NWWT z8!wbw=+d2?1Djr(t}3~}@^wjo463#2RqaIO__EtQ~Rg?^rPso ztgx|=fD~>~m13XhBuY;k=tG}Q3NVE>2oKHH(Kn#!G#A*QCxnnf9@-#7gLy@M>X=E% z#!?iB3T|vs5c^_=mi2UYK`V21;R`N?{|~DtM66%e2{TRo)El+oHONdI?DTD9I09^} zi1)PVJB*0=@mkb2WU$fqMg4Q0h)ugf1TUe}j0Xej!D4bRD_A-Vya#t~sNlm-z+J_#{)hdX4q+7KI z$84Jmp`*0?VkceoYZm_8!+d*B`GVIhHR|t!ec$Cg%L&s^{76DP>BhGAA1LSdBFtjc zj{ua#+QrsGo5+2;Gu!)FiTf;|Lr`ka(|9w}T$%giIh47@0y%AKY$C6-v1rw;cb)qU#LQ(}l|53p-AwN8Xt|?Q!TtFSPZ}ClrG!sbj(g@6^a*`YBN$!+ z5|!d}j*xBYqUSRp+%<>%(g_+#B%egp@DbUtlAYbF|Bcn{64?iud^`go7E|5;-_POW zp~^Z<>T7?>=$qccRyz4`=6ZTsd+VDtmS)qS>>dGo2V5BK-l>7X5+S&!uiu_gfwg4{ zZhES_f4c{sSbQGEgS@&Gqi`#>Sd}+@J1u!2x=k5yFHS|qCJH;~>*{J=e*Y=`wh$kq^>cfH z34|jOIp?3_SuG8I?5yK-z@7Mwf#v%z6~jiZ#}e(0BZFn~f^Jq0NQbnAv<#7K(P(7! zXyD$H*V?Nd8FtQm-G>8F8ydkX1Q63rYe+|Nd%<*rZ)S<7&fRoRXJv`T9kpQ%;r);i zL2!(TLOLP)^^Tz!^>{^G|5iAaAeuK$4p5)vP`oL(?c)oqR;WL7&s+!K< zBSJ#bK7#9h{hWS2B+aCau0#`L1{FICx0ZVy!!yH2uI&}Fzx>S#{sXMsrkiSnb=~l3 zf}&xIwy52U18A7j^Ml^;set%W^}Yi>b=~>tF#&;b8PR70z#H9SA13+cT8C%C2(d=z zJ>^}_1a>V}ClFXZYqotBN3^+SV6qEzNMcuvbk%cgG+v3?+T zJIRoD3z=!{n0&+lrl?wuAJ12I?a(H!9cJC6pRE+s5^ z4>F|_01?S)RRb|=uu*+K;CFOz(19QKEpi*l2Jc2&o+3t?9FNNV|2?X!@BCD4)S?hg zcU}=Q%8gB0amCTf2R#*{AdO<5%};b^J7=z=PfqRMa7`o1lKP z>2KurujItTlW|3Snko#7a(AO8`$*}%wrN=4A&|KA*^n)S`*6VJYS5yOazsy-r@55D z2rjlC(c;(h`DW2ZBpryvN$&--uE(*6j>Z{!N#Z#A9qhk4FI4S`-kIWPJ(+*RZ6XC4k8L&56 z2)gCI2CW9JH+EpN%ys2pnL8+Vod%JJFZBL|B9W|x$W6D7W_qO-nzVe$NwWam zsb*mxSers3O7*Yo-KAt!-u{;q$EA?F1gfFG72*#~ro&ZHR|Z_G!?){NAu#MgFIE%{VIV9@fqhoQ_6%$-qU;O*CWci*8uUw(UCC88M9&?g3*qoS*hi2Wx}+dVV4tm z#j6sg4nlasF@|YFi(O!bTwhv*RD;Cqa?eLg7R`B^OIx^Hz4blo#2VN^hqyqPF0d+z z6acyt85>inkMxzU=+<@f($kJv8qSK}YlG-a_kWHXQK3}OrMGhh;_YcUubLMn$}11S zNH1WtRPY^FBG%2uhAA}d69sz>uZ5w;VOqZW6>$jN-r~Bv4W zlg91WtLh{E_$5PxS=!(5eJ`ES`3}^(80Zv%T7@G^`y$gU9PMctnbo2Z5o-fj>RJ2I ziX|X8up*Xs)gsk@v_tLv81(s&Azp*KO4@aO%)=rwJz*IlTw^of=ByTZ(L828-09LK zuTw{WCjuEW1N&%V?yWgX^XJ(6hT%5x-4P*K2ug8vG;~CP^o^vQ?I|kTU_`NgX&FAQ|37t{ksHU0$T z9zgUFM$IUmnnUm;u#eE$k|W+Zf*PCMB|NVgS%ckVQ+tJU)@5o>ibw1m?k8-I2 zJca$)iZ+%g{E91XtLEGRL^oQ$)p=@ zo1jnCrlqa|;TXp+*8($m8Ae#dN#mZRoa-1;J3OpA zg@v^6_u{q;Xih;@mb2I&s6LA^eSbNM!K9$y%B~1KxnRGhdk;J*=sAG;S^rx%|G>#> z?OGmvLwP+jQJg0AL#{2ikwe~DRUZ*sWD7~=DnB5^;t&32zqq^+)^7BzbEOBATf zu1-bl`e>FFv>#qq*dh8+KTKp#pE!}fSP@WSzn0Oyfc7sq_B$oe5Jj)#_s}d-O?pI3 zTGm>R!POY~5ycKTpqhxW9LbCj@=Krh&rU|A7f4hg-mIjw|* zKJ|d7B(}u+$cf78n2m%?-*Fn#($`E|>MFZ*oG! zAB}}t;|ay+6aKA-G06;5basY$Ib{Y73J+R5NyF+^b#>Z0`J6>+hy3Ri@4&IeMugJ) z)w7&mtL@e_;-4jzHW^AeUgqDiR(d7Wybofvm@{4oGO^vF1?OlS0rIxDVKpKxw&nhZ z8zW2jbyMFL5$U&7PU=M59^q+`_*P)g|AwKC$sj2yjeJI`_6qFYe_HWVEx-WtKn zvw{c71!;T-+)9($3y^Iwx)!gAnr>x-1@9MAJ{bCZaDbQvNq$f%XMPmFV?#W4Q7N8SI(vpv+Wrdhb`4d7j0>wp}PK zr>6$EKOn{~g@T|U?S4TQjXmFGm9&(I{eZ{T~%+?aDvKy;64HLHjC&6En&?jsSQBu{!{<_NB46@Rc{( z+kw7+5o#=hH!P2+=%0nq1)mIhe8YfO`0pym#^86-u-iTnToV@FjV#kdkG~d#{XWi5?mxwixowNd06RcAdXh+4kBw@Zs=Om)f=SWjorpr;Y&XOG@ou9jm3$)yos= zy?Z$sm5SArSzDa3WvV@qDC%WXJY3xI>JpR*oiL`VLvk|O=w+RLzQ$nSLc#_eM>X=2 z(&-Qs8Wrz_N+Ty1SB3vQ(DPS%P1(?BF6kwT_(rNpf0fIAe#~k#r-Pd7iB7+ST;IFK zWe-mJ@gU=6wfW+yAr<3`VWX=iq8ppb#`;m(vcRC2O|BiCK#25t>eW>xi1f^&MbpX4 ziBRL3Jt(SVEYB3IX2rNbx#l}oqQ0v7=QbCW(7rUteLF2%zLCJC%cW+t9@bXi(UW@8F0_%*3j+3Ayb1yTX7BLBY(j5n(VE1XA}?nnHuhLFb-`-$r9f3c1i~SZzl(57 zB>O>G&;prCgV3Zq=m9Tfb6Sk_pVEyTV~Ui`PNU$zeh7c!g<`6TV_cW5Hoq(5*l+fE z*2KJUfEnv}p$_m{F=Pb0cJYT6A^$3yb9pl#----7VV^<2m5V#*pW5Zu7L@}yV{B0DSWn}!X(8@$MJOb8ax85_KZ zHY@wJiPM6Dlkoknut`WG-An#ipiMUdnb5@r=2f5lp{n!(m&o{o$T?9a^;&$QQ*Eqb z=SGo?=z}O@*-T&GO11AF|H<3c_P>eE=A6wzLw%&Z@^9?O)M3_#^)`a$Ah+yk@JwtU z)H2{nVM7p-f_CJ<@~KRPOippDlZs)+z3B0gJ3=0{u$0o8=V;eN=&y0~cxVUeIcYP> zQQWslcG0rz>ea&0k}~kFAwF#8lA~VSwHBUTqzlx49lu;vL|^5bgjAAx1!N{=hu~ZmI zJ9Un~O}OfFI5CtjJ$HA@nqMfnMH<_!DD%}tbM;gk?PZx=tU7`MQt|6hrI}w$QBuwZ zQs!Kjra+M3s)Op&NXP2CO?9L(I0dpq7Vy}4Yzvij+mqch4yY0B%JRRGJ)-#NP7(2> z8v*;RbktGy6VjD`2KaUr^I`_ug2=a_#Jk2q*ydw61jtsRvRf7_?!LZ0isZ|Gca5wq zMG-&D9jRdcByGl7w>7Bdq4pT^*0S4UpYBc{v|5UnMf!XaSmeXFv4NOQm`~^SlNCcB z(QL2|m_x@$LCj0nOBYN!rswhDGwZI>JAuX?DaH8(-mT5~_JZk@ls?`xr!R;GWz?Ly zn3se|VN1{l&4>9Rf5o2IV1GEx9=x|)j&gmVfmfixTe?ewUbr}HS2OE!?FAL^>$T=j zSz!3KcHN9@dily!UeJ|iPSkSe7Hb`lf9Pm4EYD{&1@LzpQ9oMmD$=|aj0NSN?MlTh zNMv`eX9t1zvt$4z;jDb@C*)Mtg%d7C@ZauF5+Cr_gA24-?6xc0Q|e{+I@lAM*5B-* z1TlcLSXAh}KWEOr(F!;>Lan1%X&PnavD524)W{hEW{9u-{*qpo%H$i9po* zk$oi#wSqbE2GfGuksd4}uUFK5lE-K0g@4*Jqa2l0!7A|be~9o`+g2O zP0-oT)w8@ArHf-z3SK-ni^M=dJ`9ZVzg|h1>u7;M)&0&d%w~9Urw)~h zR+rlSDGf7txKhutJL6j${18h*^)2O(El(c-^x$@sj9?$EY3D$p)zaU%8|!q;ZQ?~8 z=;b<|fifo^mgkHWBB`C7E4N)-ZC3x<(oBH%9lUWiePF|mZbbQ8T@IGF8MT(<0s>^e zUN@k*U;%`Jf=_mrFO8eGCp)BfDG5<0j4C;5>z3HtN{G&1?|+&3qU?G*Wx(gB^NLv# zU7!GN*<;5pyOk2X=x1a`9fyDRFfU?!2vx6p%~t6~!Nzbum8th7!`ktE%~hX; zzvd0ONyu;NW5-D*%5bumxE|1Q-@40qL6-YFMo(9wC7qLe1js#SZWPND*Xy)^m3d=| z$|g-ipT8KTB?z?CcE&VPX+~*K7DA!FnNTUD-IC>DzqNSlH#E$1f4b7}!8`q9_5rkx zxcw)GdJBtu)%&t@qcF{NWznV19;rZ5$HYHnoAmN{V9Os zM*wun+Z5LaotBst_$il!Qm22!ZGLAes5W;++dFpY>s~2IXN8cxo8N;y%oN*9X~k$8 zi%65{sPdAvg2|B-j9qBJK?EX!%+1$82U4b}Wnn3N&o^I21)9M1lg2#H>X_YMRzrfe zEPCW5XT27xJ&piE^*QEZ>VsUZqVBlOn=$WlGX6NkZB6pB47hEau@b$WY7X|UnH>-i z^TRBZY6Q0{nNSH%-%HIM3XCMy?<`z*GJs!I41^6T;=ECWu6BAy?r^DYq?==mLH+0A z;~n~6kO!LMX-UJt>=22K0!Hl#;2NezYH>vA!01O@u75nKAUG2p)Z@r)jt2(yn8642 z@3|H~O>b@5RukfDElR+mdCzOui>z~U@;0XF=;-yW*3>-U6PCq2-+tkSQOw}na#mA> z8`}B`GETq}(p|W!76Y~D+xl;V_4~yawgYe0Skk6Scd{*QIt!w)!xY9ahP&dR@9)OF z8tGeHk2{)hVIFzzz(euqcPVxc#=n;lA^62sR0KZ+ClC|X*<|&Ce_PcaZHdy+Y2QH`FIPTny8xfAr{fjY8I~CjU zesy)2x2`DtE9vfY4-&FG46p;JcM|PNpv3!_-a4kH;{dW=9ovRN{*M?3T2ub)f=3uM ztNv>hN6TfLDiGFF;Ul76oa;ZzvE?tAoNH%~DaN1&9WzqzJ@Brz7QY@jmV5{%-{Cv|@G6!4 zypc%2Kc>2h;M{}On5pPb5u_~(s%n@TXRXGSeHX!x)AL!Yp0HsLF350BYwZ{-P{XqL z9j6*U@^=8Ry?SQYctxzDk_^lD?DLj*`&P(x3DQYvZf- z5p8+q=L}8~5Ij%kYWNz3vWKIGH>6htpKfbSPEG(1PZ#G?Qe2~L1Ll_L<{SKieoYib)KNOGh-NDpiO+Bma^2$?_CdWYW z+E0J^@6Ehy71-Hpon!{Wqp30K3WW~Wx?T^xop@CKxT$3|yYuh!nf1Xw*jVc96UozB zM*zp~u7_qhK1J*eFmtMiqNr9&$Fz~N^8NUR0rw)DG@)9Vv-OzMRKNW!An|OVH7GOp zM?36UZ(nn5?jn0g;f!a{L5*y-2s|`@XzW%CwqZk8iU#kfDxbYvzVL0JD&)O;(9bU{ z!KbD&T_$Ht56PSYGh?Ys&?5j5%emshz{XofReCg#&POz8jq7f$XL(!a;(L+@mky2| zPPX!_`Gt2Lr4ze%yz{q;T}g*yoXWH1OPw%27YN77>%@cLrh@w3;jej>I*P2WY63@q zDk=z&RlIRFGS#IMEO_P7%tqp+!7~Oj`VF8J>_xIa?h9FEV{| zxhLnF@6-y*6D1{H+NyCh*pvv9$IpS_?PG{}DXA-049NO(tEmrv|1k6#AX4)0M)V&x zYoeU-$x_mnz`$$HOoOh2<<*+{p>J#Z-8KzJf(m@tiy@A1cJ>>$axzVOmhr=dt*u?p z)&f9Rn?%puT>EpC8mw`9QR6BNiet}lteCbn?Z_!`^x4hD`pT_BDWn`%SI@Ezo7}5c zz4==m&$dGeQ*hT;I1^RO9+ouzGvCV;V@1gp9_`Xo8v*Hp1?aYCd&C)&C1Kg)H22_$ zW{U3-fY#b@B`{d@P^(6=Ij`1Al$qd@ybu-|&;FVo|0(5C?tyd@>{~=t3gHkr8@N_~ zBMz&W!4)5RY)Z;o-C$H>v)fMIbP>U=ROZeoU+mZ$v4AMl)3Qx!cUP)~;&A-tU3@K` zRKydANQlx#V83{K|f6uK)#rnC;AiqZECy_ZHo#x5UJ@lJl7GoaESzQL@T>36Oxf>w zw7k7FIK2gOn&|P*aNanA7gcYq%(U25AUzBDQfR2->G0$K*s=e4a)RNQJp;e70DbYJ z;=2}m35x1;e&P+M`Ei;{vx{lJWPVV@+~TIa6<$KpcND|BuN?DevTfyD-pzg)438u% zG&&Zs^Zp1RBjo!1iu7T{2l{pDhV_NoUMWG@Pl!0EoN`BkJlo_=;T;8MaG&N8z_>PJ z6_3h{Jxr;+M~*x&NAn&5rjUWPla_}zar>UxveUXa3*8?LWDVX}goiMfj-F~&!LL5lWo4;G^OH19g4^3jhEB literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index fa09227..fa168b9 100644 --- a/public/index.html +++ b/public/index.html @@ -1,23 +1,170 @@ -Pretty checkbox | Documentation
Installation

Step 1 : Download from yarn or npm

-	             
+
+
+
+
+    
+    Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+
+
+    
+
+

pretty checkbox

+

A pure CSS library to beautify checkbox and radio buttons

+
+ Star + +
+
+
+ +
+
+
+
Installation
+
+

+ Step 1 : Download from + yarn or + npm +

+
+
+
+	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
 
-

Alternatively, you can also use CDN link

+
+
+
+

+ Alternatively, you can also use CDN link

+
+
+
 	
-    https://cdn.jsdelivr.net/npm/pretty-checkbox@3/dist/pretty-checkbox.min.css
+    https://cdn.jsdelivr.net/npm/pretty-checkbox@3.0/dist/pretty-checkbox.min.css
 
-

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

+
+
+
+

+ Step 2 : Add + dist/pretty-checkbox.min.css file in your html or import + src/pretty-checkbox.scss file in your scss file

+
+
+
 	
     @import '~pretty-checkbox/src/pretty-checkbox.scss';
 
-

Step 3 : Add the mark up in your file. Can be used with Bootstrap, Foundation, Bulma frameworks.

+
+
+
+

+ Step 3 : Add the mark up in your file. Can be used with + Bootstrap, + Foundation, + Bulma frameworks.

+
+
+
 	
     <div class="pretty p-default">
         <input type="checkbox" />
@@ -26,7 +173,53 @@
         </div>
     </div>
 
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
+
+
+
+
+
+
Basic checkbox
+
+

These are simple checkboxes with three shapes. Add class + p-default as like mentioned in above example.

+

By default, it will be in + Square shape. To change, add class + p-curve or + p-round.

+
+
+
Default
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve
show code
+
+
+
+
Curve
+
show code + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Round
show code
+
+
+
+
Round
+
show code + +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
+
+
+
+
+
Switch
+
+

Add class + p-switch. For shapes add class, + p-outline or + p-fill or + p-slim +

+
+
+
iOS style
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
+
+
+
+
+
Colors
+
+

There are five colors. + + + + + . Can be used as + Solid ( + p-primary ) or + Outline ( + p-primary-o ).

+

To apply colors, add class + p-primary to + .state class inside + .pretty +

+
+
+
Solid
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Mixed
show code
+
+
+
+
Mixed
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Show colors for all combinations
Outline
show code
+
+
+ Show colors for all combinations
+
+
+
+
Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Square & Fill
show code
+
+
+
+
Square & Fill
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Square & Fill & Outline
show code
+
+
+
+
Square & Fill & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Square & Thick
show code
+
+
+
+
Square & Thick
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Square & Thick & Outline
show code
+
+
+
+
Square & Thick & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve
show code
+
+
+
+
Curve
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve & Outline
show code
+
+
+
+
Curve & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve & Fill
show code
+
+
+
+
Curve & Fill
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve & Fill & Outline
show code
+
+
+
+
Curve & Fill & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve & Thick
show code
+
+
+
+
Curve & Thick
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Curve & Thick & Outline
show code
+
+
+
+
Curve & Thick & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round
show code
+
+
+
+
Round
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round & Outline
show code
+
+
+
+
Round & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round & Fill
show code
+
+
+
+
Round & Fill
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round & Fill & Outline
show code
+
+
+
+
Round & Fill & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round & Thick
show code
+
+
+
+
Round & Thick
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Round & Thick & Outline
show code
+
+
+
+
Round & Thick & Outline
+
show code + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
Switch
show code
+
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
+
+
+
+ Hide combinations
+

Colors can be added, removed, changed from SCSS settings.

+
+
+
+
Font icons
+
+

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, + p-icon to + .pretty. Then add + icon class along with font icon classes inside + .state .

+
+
+
General
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

Svg

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

General
show code
+ + + + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + + + +
+
+
+

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

Image

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

General
show code
+

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
+
+

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use + small and transparent images for better results. And Obviously, colors are not applicable to images, + unless I am the GOD.

+
+
+
+
Animations
+
+

To animate, add class + p-smooth or + p-jelly or + p-tada or + p-rotate or + p-pulse to + .pretty +

+
+
+
Smooth
+
show code + +
+
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Jelly
show code
+
Tada
show code
+
Rotate
show code
+
Pulse
show code
+

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

Plain

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

General
show code
+
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
+
+
+
+
+
Toggle
+
+

Toggles are simple show / hide type. Add class + p-toggle to + .pretty.

+

Previously, we have seen example with one state. Now we need to add similar state. Each one will have + class + p-on and + p-off class. By default + p-off state will be visible. On checking, + p-on will be visible.

+
+
+
Simple
+
show code + +
+
+
+
+ +
+ +
+
+ +
+
+
+
With icon
show code
+
+
+
+
With icon
+
show code + +
+
+
+
+ +
+ + +
+
+ + +
+
+
+
Without border
show code
+
+
+
+
Without border
+
show code + +
+
+
+
+ +
+ + +
+
+ + +
+
+
+
With color
show code
+
+
+
+
With color
+
show code + +
+
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Without label
show code
+
+
+
+
Without label
+
show code + +
+
+
+ +
+ +
+ + +
+
+ + +
+
+
+

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
+
+

Checkbox styles cannot be mixed. If it is + p-svg style, both states should be svg.

+
+
+
+
States
+
+

These are checkbox and radio button states like + hover, + focus, + indeterminate. Please check the example code for details.

+
+
+
Hover
+
show code + +
+
+
+
+ +
+ +
+
+ +
+
+
+
Focus
show code
+
+
+
+
Focus
+
show code + +
+
+
+
+ +
+ +
+
+
+
Indeterminate
show code
+
+
+
+
Indeterminate
+ +
show code + +
+
+
+
+ +
+ + +
+
+ + +
+
+
+
Disable

Normal disabled attribute in checkbox is enough.

General
show code
+
+
+
+
+
Disable
+
+

Normal + disabled attribute in checkbox is enough.

+
+
+
General
+
show code + +
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+
+
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
+
+
+
+
+
Lock
+
+

It is quite similar to + disable, but the only difference is, it will lock and make it look like active. To lock, add + class + p-lock to + .pretty +

+
+
+
Lock
+
show code + +
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+
+
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
+
+
+
+
+
Size
+
+

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, + bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class + p-bigger to + .pretty +

+
+
+
Bigger
+
show code + +
+
+
+
+ +
+ done + +
+
+
+ +
+ +
+
+
+

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
+
+

Alternatively, we can also set + font-size property to class + .pretty +

+
+
+
+
Radio buttons
+
+

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for + radio buttons.

+
+
+
Basic
+
show code + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Colors
show code
+
+
+
+
Colors
+
show code + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Solid color and icons
show code
+
+
+
+
Solid color and icons
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
Outline colors
show code
+
+
+
+
Outline colors
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
Animations
show code
+
+
+
+
Animations
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
Plain
show code
+
+
+
+
Plain
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
Switch
show code
+
+
+
+
Switch
+
show code + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
+
+
+
+
+
Tested font icon libraries
+
+

Here's the tested font icon libraries. But however, other icon libraries, and icons created from + icomoon, + fontastic should also work.

+
+
+
Font awesome + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Bootstrap Glyphicons
show code
+
+
+
+
Bootstrap Glyphicons + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Material icon ( MDI )
show code
+
+
+
+
Material icon ( MDI ) + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Material icon ( ZMDI )
show code
+
+
+
+
Material icon ( ZMDI ) + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Typeicons
show code
+
+
+
+
Typeicons + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Ion icons
show code
+
+
+
+
Ion icons + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
Material icon ( Google )
show code
done
clear
favorite_border
favorite
+
+
+
+
Material icon ( Google ) + +
+
show code + +
+
+
+
+ +
+ done + +
+
+
+ +
+ clear + +
+
+
+ +
+ favorite_border + +
+
+ favorite + +
+
+
+

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
+
+

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon + will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

+
+
+
+
Tested SVG libraries
+
+

These are couple of well known svg libraries which is tested at this moment.

+
+
+
UIKit + +
+
show code + +
+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
Feathers
show code
+
+
+
+
Feathers + +
+
show code + +
+
+
+ +
+ +
+ + +
+
+ +
+ +
+ + + + +
+
+
+

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
+
+

But my instict says, other libraries also should work.

+
+
+
+
Scalability
+
+
+
+
Try changing font size
+ +
show code + +
+
+
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
SCSS Customize
Settings

+
+
+
+
+
+
+
SCSS Customize
+
+
+
+
Settings
+
+
+

     // If you felt the name is not-so-pretty,
     // you can always change!
 
@@ -1859,7 +4575,15 @@
 
     $pretty--debug:false;
     $pretty--dev-err:'Invalid input type!';
-
Import

+
+
+
+
+
+
Import
+
+
+

     /* REQUIRED */
     @import '~pretty-checkbox/scss/variables';
     @import '~pretty-checkbox/scss/core';
@@ -1892,14 +4616,222 @@
     @import '~pretty-checkbox/scss/states/hover';
     @import '~pretty-checkbox/scss/states/focus';
     @import '~pretty-checkbox/scss/states/indeterminate';
-
More
Browser Compatability
Works in all latest browsers.
>= 10
>= 25
>= 40
>= 8
>= 25
Framework Compatability
Inspirations
Awesome Bootstrap Checkbox - Idea
Animista - Animations.
Contributions
Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome!
Support and share
Credits
Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
Svg icons from useiconic · sparkk.fr
Slider generated from range.css
Licence
The MIT License
\ No newline at end of file +
+ + + + +
+
More
+
+
+
+
Browser Compatability
+
+
+
Works in all latest browsers.
+
+
+ + >= 10
+
+ + >= 25
+
+ + >= 40
+
+ + >= 8
+
+ + >= 25
+
+
+
+
+
+
Framework Compatability
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+ + + +
+ +
+
+
+
+
Inspirations
+
+
+
+ + Awesome Bootstrap Checkbox - Idea +
+ + Animista - Animations.
+
+
+
+
+
Contributions
+
+
+
Thanks to all those good people who spend their valuable time and helped to improve this library. + And hey, if you + found a issue, or would like to + improve the code, you are always welcome!
+
+
+
+
+
Support and share
+
+ +
+
+
+
Credits
+
+
+
+ Image icons made by + Pixel Buddha, + Gregor Cresnar, + Freepik, + Maxim Basinski from + www.flaticon.com +
+ Svg icons from + useiconic · + sparkk.fr +
+ Slider generated from + range.css +
+
+
+
+
+
Licence
+
+
+
The MIT License
+
+
+
+
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/javascripts/app.js b/public/javascripts/app.js index c8dc3a0..c9457a3 100644 --- a/public/javascripts/app.js +++ b/public/javascripts/app.js @@ -1 +1 @@ -!function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="javascripts/",t(t.s=6)}([function(e,t,n){for(var a=document.querySelectorAll("[data-module]"),r=0;r',this.hideCodeHTML='hide code ',this.el.addEventListener("click",function(e){var t=e.target.parentNode.parentNode.querySelector(".card-footer");n.isShowing?(t.className=t.className.replace(" fadeIn"," hide"),e.target.innerHTML=n.showCodeHTML,n.isShowing=!1):(t.className=t.className.replace(" hide"," fadeIn"),e.target.innerHTML=n.hideCodeHTML,n.isShowing=!0)})};t.default=r},function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n',this.hideCodeHTML='hide code ',this.el.addEventListener("click",function(e){var t=e.target.parentNode.parentNode.querySelector(".card-footer");n.isShowing?(t.className=t.className.replace(" fadeIn"," hide"),e.target.innerHTML=n.showCodeHTML,n.isShowing=!1):(t.className=t.className.replace(" hide"," fadeIn"),e.target.innerHTML=n.hideCodeHTML,n.isShowing=!0)})};t.default=a},function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;nt,this.show?this.el.className=this.el.className.replace("hide",""):this.el.className="hide"}}]),e}();t.default=o},function(e,t,n){e.exports=n(8)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0);n.n(i);console.log("app.js has loaded!")},function(e,t,n){function i(e){return n(a(e))}function a(e){var t=o[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var o={"./":0,"./collapse":1,"./collapse.js":1,"./example":2,"./example.js":2,"./indeterminate":3,"./indeterminate.js":3,"./index":0,"./index.js":0,"./showcode":4,"./showcode.js":4,"./slider":5,"./slider.js":5,"./toggleall":6,"./toggleall.js":6};i.keys=function(){return Object.keys(o)},i.resolve=a,e.exports=i,i.id=9}]); \ No newline at end of file diff --git a/public/stylesheets/app.css b/public/stylesheets/app.css index 73fd431..475e538 100644 --- a/public/stylesheets/app.css +++ b/public/stylesheets/app.css @@ -1 +1 @@ -@font-face{font-family:system-ui;font-style:normal;font-weight:300;src:local(".SFNSText-Light"),local(".HelveticaNeueDeskInterface-Light"),local(".LucidaGrandeUI"),local("Segoe UI Light"),local("Ubuntu Light"),local("Roboto-Light"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:300;src:local(".SFNSText-LightItalic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Light Italic"),local("Ubuntu Light Italic"),local("Roboto-LightItalic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:400;src:local(".SFNSText-Regular"),local(".HelveticaNeueDeskInterface-Regular"),local(".LucidaGrandeUI"),local("Segoe UI"),local("Ubuntu"),local("Roboto-Regular"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:400;src:local(".SFNSText-Italic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Italic"),local("Ubuntu Italic"),local("Roboto-Italic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:500;src:local(".SFNSText-Medium"),local(".HelveticaNeueDeskInterface-MediumP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold"),local("Ubuntu Medium"),local("Roboto-Medium"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:500;src:local(".SFNSText-MediumItalic"),local(".HelveticaNeueDeskInterface-MediumItalicP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold Italic"),local("Ubuntu Medium Italic"),local("Roboto-MediumItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:normal;font-weight:700;src:local(".SFNSText-Bold"),local(".HelveticaNeueDeskInterface-Bold"),local(".LucidaGrandeUI"),local("Segoe UI Bold"),local("Ubuntu Bold"),local("Roboto-Bold"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:700;src:local(".SFNSText-BoldItalic"),local(".HelveticaNeueDeskInterface-BoldItalic"),local(".LucidaGrandeUI"),local("Segoe UI Bold Italic"),local("Ubuntu Bold Italic"),local("Roboto-BoldItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:Glyphicons Halflings;src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot);src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot#iefix) format("embedded-opentype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff) format("woff"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Halflings;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-heart:before{content:"\e005"}input[type=range].slider{-webkit-appearance:none;width:100%;margin:5.2px 0}input[type=range].slider:focus{outline:none}input[type=range].slider::-webkit-slider-runnable-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-webkit-slider-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;-webkit-appearance:none;margin-top:-7.1px}input[type=range].slider:focus::-webkit-slider-runnable-track{background:hsla(201,9%,55%,.32)}input[type=range].slider::-moz-range-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-moz-range-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer}input[type=range].slider::-ms-track{width:100%;height:5.6px;cursor:pointer;background:transparent;border-color:transparent;color:transparent}input[type=range].slider::-ms-fill-lower{background:rgba(53,59,63,.32)}input[type=range].slider::-ms-fill-lower,input[type=range].slider::-ms-fill-upper{border:1.9px solid transparent;border-radius:50px;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0)}input[type=range].slider::-ms-fill-upper{background:rgba(90,101,107,.32)}input[type=range].slider::-ms-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;height:5.6px}input[type=range].slider:focus::-ms-fill-lower{background:rgba(90,101,107,.32)}input[type=range].slider:focus::-ms-fill-upper{background:hsla(201,9%,55%,.32)}body{font-size:14px;background-color:hsla(0,0%,99%,.29);color:#5a656b;font-family:Segoe UI,system-ui,Tahoma}.jumbotron{padding:50px 0;text-align:center;background:#8033b0;border-bottom:4px solid #75b7dd;background:linear-gradient(270deg,#124665,#8033b0);position:relative;color:#fff}.jumbotron h1{margin:0 0 20px;color:#75b7dd;font-weight:300;font-size:48px;letter-spacing:-2px}.jumbotron p{color:hsla(0,0%,100%,.65)}.jumbotron .container{position:relative}.jumbotron:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;opacity:.4;background-image:url('data:image/svg+xml;charset=utf-8,')}pre[class*=language-]{border:0;border-radius:0;background:transparent;padding:0}code[class*=language-],pre[class*=language-]{font-family:Inconsolata;font-size:14px}.borbot{border-bottom:3px solid #f3f3f3}.s-highlight{color:#e17075}.hide{display:none}.card{border-radius:0}.card .card-header{border-bottom:1px solid rgba(0,0,0,.04)}.card .card-footer{padding-left:0;background:#fcfcfc}prism-block>pre{margin:0!important;padding:0!important}.show-code{cursor:pointer;font-size:12px}.show-code:hover{color:#e17075}.show-code i.mdi{font-size:18px;line-height:1;display:inline-block;vertical-align:text-top;color:#e17075}strong{font-family:Inconsolata;font-weight:700;padding:0 4px;font-size:100%;color:#000;border-radius:3px;background:transparent}.btn.btn-small{padding:0 10px;line-height:1;background:#f5f5f5;color:rgba(0,0,0,.43);text-transform:uppercase;font-size:.8em;font-weight:700;cursor:pointer}.btn.btn-browser{font-weight:500;font-size:95%}.btn.btn-browser img{width:20px;vertical-align:bottom}.btn.btn-browser span{font-family:Inconsolata;font-weight:700;color:#95acc4}.btn.btn-framework{padding:0;margin-right:1em}.highlight{color:#e17075}div#disqus_thread{background:#fff;padding:10px;border:1px solid #dfdfdf}a.btn.btn-link{background:#a6b2b9;color:#fff;padding:0 4px;border-radius:2px;margin-right:10px}a.btn.btn-link.facebook:hover{background-color:#3b5998}a.btn.btn-link.twitter:hover{background-color:#1da1f2}a.btn.btn-link.linkedin:hover{background-color:#0077b5}a.btn.btn-link.gplus:hover{background-color:#dd4b39}.card-info{background:#f2f5fc;border-top:1px solid #dfdfdf;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding:1rem;color:#8992a6;font-size:90%}.card-info .mdi{line-height:1;vertical-align:middle;opacity:.5;color:#4f5667;margin-right:4px}.card-info .mdi:before{font-size:18px}.nav-link{color:#727a81}.nav-link i.mdi{font-size:1.3rem;vertical-align:sub;line-height:1}.nav-link:hover{color:#e17075}span.color-preview{display:inline-block;width:1em;height:1em;background-color:#bdc3c7;border-radius:100%;margin:0 2px}span.color-preview.primary{background-color:#428bca}span.color-preview.success{background-color:#5cb85c}span.color-preview.info{background-color:#5bc0de}span.color-preview.warning{background-color:#f0ad4e}span.color-preview.danger{background-color:#d9534f}.note{background:transparent;padding:0 1em;border:0;font-size:90%;color:rgba(0,0,0,.64);border-left:3px solid #e17075}h6{font-size:14px}section.section{margin-bottom:3em}.btn-collapse,section.section a{font-weight:500}.btn-collapse{background:#fff;border:1px solid #dfdfdf;border-radius:0;font-size:1em;color:#828b90;cursor:pointer;padding:1em;margin-bottom:1em}.btn-collapse:hover{background:#f7f7f7;border-color:#e6dfdf;color:#90a1ad} \ No newline at end of file +@font-face{font-family:system-ui;font-style:normal;font-weight:300;src:local(".SFNSText-Light"),local(".HelveticaNeueDeskInterface-Light"),local(".LucidaGrandeUI"),local("Segoe UI Light"),local("Ubuntu Light"),local("Roboto-Light"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:300;src:local(".SFNSText-LightItalic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Light Italic"),local("Ubuntu Light Italic"),local("Roboto-LightItalic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:400;src:local(".SFNSText-Regular"),local(".HelveticaNeueDeskInterface-Regular"),local(".LucidaGrandeUI"),local("Segoe UI"),local("Ubuntu"),local("Roboto-Regular"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:italic;font-weight:400;src:local(".SFNSText-Italic"),local(".HelveticaNeueDeskInterface-Italic"),local(".LucidaGrandeUI"),local("Segoe UI Italic"),local("Ubuntu Italic"),local("Roboto-Italic"),local("DroidSans"),local("Tahoma")}@font-face{font-family:system-ui;font-style:normal;font-weight:500;src:local(".SFNSText-Medium"),local(".HelveticaNeueDeskInterface-MediumP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold"),local("Ubuntu Medium"),local("Roboto-Medium"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:500;src:local(".SFNSText-MediumItalic"),local(".HelveticaNeueDeskInterface-MediumItalicP4"),local(".LucidaGrandeUI"),local("Segoe UI Semibold Italic"),local("Ubuntu Medium Italic"),local("Roboto-MediumItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:normal;font-weight:700;src:local(".SFNSText-Bold"),local(".HelveticaNeueDeskInterface-Bold"),local(".LucidaGrandeUI"),local("Segoe UI Bold"),local("Ubuntu Bold"),local("Roboto-Bold"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:system-ui;font-style:italic;font-weight:700;src:local(".SFNSText-BoldItalic"),local(".HelveticaNeueDeskInterface-BoldItalic"),local(".LucidaGrandeUI"),local("Segoe UI Bold Italic"),local("Ubuntu Bold Italic"),local("Roboto-BoldItalic"),local("DroidSans-Bold"),local("Tahoma Bold")}@font-face{font-family:Glyphicons Halflings;src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot);src:url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.eot#iefix) format("embedded-opentype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.woff) format("woff"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(https://netdna.bootstrapcdn.com/bootstrap/3.0.0/fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Halflings;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-heart:before{content:"\e005"}input[type=range].slider{-webkit-appearance:none;width:100%;margin:5.2px 0}input[type=range].slider:focus{outline:none}input[type=range].slider::-webkit-slider-runnable-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-webkit-slider-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;-webkit-appearance:none;margin-top:-7.1px}input[type=range].slider:focus::-webkit-slider-runnable-track{background:hsla(201,9%,55%,.32)}input[type=range].slider::-moz-range-track{width:100%;height:5.6px;cursor:pointer;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0);background:rgba(90,101,107,.32);border-radius:25px;border:1.9px solid transparent}input[type=range].slider::-moz-range-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer}input[type=range].slider::-ms-track{width:100%;height:5.6px;cursor:pointer;background:transparent;border-color:transparent;color:transparent}input[type=range].slider::-ms-fill-lower{background:rgba(53,59,63,.32)}input[type=range].slider::-ms-fill-lower,input[type=range].slider::-ms-fill-upper{border:1.9px solid transparent;border-radius:50px;box-shadow:0 0 0 transparent,0 0 0 hsla(0,0%,5%,0)}input[type=range].slider::-ms-fill-upper{background:rgba(90,101,107,.32)}input[type=range].slider::-ms-thumb{box-shadow:0 0 0 #000031,0 0 0 #00004b;border:0 solid transparent;height:16px;width:16px;border-radius:13px;background:#e17075;cursor:pointer;height:5.6px}input[type=range].slider:focus::-ms-fill-lower{background:rgba(90,101,107,.32)}input[type=range].slider:focus::-ms-fill-upper{background:hsla(201,9%,55%,.32)}body{font-size:14px;background-color:#f1f3f5;color:#5a656b;font-family:Segoe UI,system-ui,Tahoma}.jumbotron{padding:50px 0;text-align:center;background:#8033b0;border-bottom:4px solid #75b7dd;background:linear-gradient(270deg,#124665,#8033b0);position:relative;color:#fff}.jumbotron h1{margin:0 0 20px;color:#75b7dd;font-weight:300;font-size:48px;letter-spacing:-2px}.jumbotron p{color:hsla(0,0%,100%,.65)}.jumbotron .container{position:relative}.jumbotron:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:0;opacity:.4;background-image:url('data:image/svg+xml;charset=utf-8,')}pre[class*=language-]{border:0;border-radius:0;background:transparent;padding:0}code[class*=language-],pre[class*=language-]{font-family:Inconsolata;font-size:14px}.borbot{border-bottom:3px solid rgba(102,119,136,.2)}.s-highlight{color:#e17075}.hide{display:none}.card{border-radius:0;border-color:rgba(102,119,136,.2)}.card .card-header{border-bottom:1px solid rgba(0,0,0,.04)}.card .card-footer{padding-left:0;background:#fcfcfc}prism-block>pre{margin:0!important;padding:0!important}.show-code{cursor:pointer;font-size:12px}.show-code:hover{color:#e17075}.show-code i.mdi{font-size:18px;line-height:1;display:inline-block;vertical-align:text-top;color:#e17075}strong{font-family:Inconsolata;font-weight:700;padding:0 4px;font-size:100%;color:#000;border-radius:3px;background:transparent}.btn.btn-small{padding:0 10px;line-height:1;background:#f5f5f5;color:rgba(0,0,0,.43);text-transform:uppercase;font-size:.8em;font-weight:700;cursor:pointer}.btn.btn-browser{font-weight:500;font-size:95%}.btn.btn-browser img{width:20px;vertical-align:bottom}.btn.btn-browser span{font-family:Inconsolata;font-weight:700;color:#95acc4}.btn.btn-framework{padding:0;margin-right:1em}.highlight{color:#e17075}div#disqus_thread{background:#fff;padding:10px;border:1px solid #dfdfdf}a.btn.btn-link{background:#a6b2b9;color:#fff;padding:0 4px;border-radius:2px;margin-right:10px}a.btn.btn-link.facebook:hover{background-color:#3b5998}a.btn.btn-link.twitter:hover{background-color:#1da1f2}a.btn.btn-link.linkedin:hover{background-color:#0077b5}a.btn.btn-link.gplus:hover{background-color:#dd4b39}.card-info{background:#f2f5fc;border-top:1px solid #dfdfdf;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding:1rem;color:#8992a6;font-size:90%}.card-info .mdi{line-height:1;vertical-align:middle;opacity:.5;color:#4f5667;margin-right:4px}.card-info .mdi:before{font-size:18px}.nav-link{color:#727a81}.nav-link i.mdi{font-size:1.3rem;vertical-align:sub;line-height:1}.nav-link:hover{color:#e17075}span.color-preview{display:inline-block;width:1em;height:1em;background-color:#bdc3c7;border-radius:100%;margin:0 2px}span.color-preview.primary{background-color:#428bca}span.color-preview.success{background-color:#5cb85c}span.color-preview.info{background-color:#5bc0de}span.color-preview.warning{background-color:#f0ad4e}span.color-preview.danger{background-color:#d9534f}.note{background:transparent;padding:0 1em;border:0;font-size:90%;color:rgba(0,0,0,.48);border-left:3px solid #e17075}h6{font-size:14px}section.section{margin-bottom:3em}.btn-collapse,section.section a{font-weight:500}.btn-collapse{background:#fff;border:1px solid #dfdfdf;border-radius:0;font-size:1em;color:#828b90;cursor:pointer;padding:1em;margin-bottom:1em}.btn-collapse:hover{background:#f7f7f7;border-color:#e6dfdf;color:#90a1ad}.footer{padding-bottom:3em;padding-top:0;opacity:.5;font-size:85%}section h5{font-size:36px;font-weight:300;color:#345}#toggle-all{position:fixed;bottom:0;right:0;background:rgba(0,0,0,.07);text-align:center;vertical-align:middle;font-size:2em;padding:12px;line-height:1;border:1px solid hsla(206,4%,62%,.48);margin:4px;border-radius:3px}#toggle-all .pretty{margin:0}#toggle-all .p-off svg{stroke:hsla(202,5%,47%,.7)}#toggle-all svg{stroke:#1e87f0}#code-sponsor-widget{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:3em;background:#e0e6ed;border-radius:2px;padding:0 0 10px} \ No newline at end of file diff --git a/src/html/index.html b/src/html/index.html index b409290..f178cb7 100644 --- a/src/html/index.html +++ b/src/html/index.html @@ -3,6 +3,7 @@ {% block content %} {% include 'layouts/header.html' %} {% include 'layouts/content.html' %} + {% include 'layouts/footer.html' %} {% endblock %} \ No newline at end of file diff --git a/src/html/layouts/application.html b/src/html/layouts/application.html index bd67d9e..5341ab7 100644 --- a/src/html/layouts/application.html +++ b/src/html/layouts/application.html @@ -3,42 +3,41 @@ - Pretty checkbox | Documentation - + Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking + + {# #} - - - - + + + + - + - + - - + + - - + + - - @@ -58,11 +57,13 @@ - - + + + + - + {% block stylesheet %}{% endblock %} {% block css %}{% endblock %} @@ -110,6 +111,9 @@ + + diff --git a/src/html/layouts/content.html b/src/html/layouts/content.html index a51551f..3781618 100644 --- a/src/html/layouts/content.html +++ b/src/html/layouts/content.html @@ -4,6 +4,7 @@
{% include "./sections/installation.html" %} +
{% include "./sections/basic_checkbox.html" %} {% include "./sections/switch.html" %} {% include "./sections/colors.html" %} diff --git a/src/html/layouts/footer.html b/src/html/layouts/footer.html new file mode 100644 index 0000000..c07d874 --- /dev/null +++ b/src/html/layouts/footer.html @@ -0,0 +1,20 @@ + +
+
+ +
+ + + + +
+
+ + + + +
+
+
\ No newline at end of file diff --git a/src/html/layouts/header.html b/src/html/layouts/header.html index 8b4d2e3..f61f1e2 100644 --- a/src/html/layouts/header.html +++ b/src/html/layouts/header.html @@ -1,7 +1,7 @@

pretty checkbox

-

A pure css library to beautify checkbox and radio buttons

+

A pure CSS library to beautify checkbox and radio buttons

Star @@ -15,31 +15,31 @@

pretty checkbox

\ No newline at end of file + } \ No newline at end of file diff --git a/public/index.html b/public/index.html index fa168b9..93419f4 100644 --- a/public/index.html +++ b/public/index.html @@ -1,170 +1,25 @@ - - - - - - Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

pretty checkbox

-

A pure CSS library to beautify checkbox and radio buttons

-
- Star - -
-
-
- -
-
-
-
Installation
-
-

- Step 1 : Download from - yarn or - npm -

-
-
-
+Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking

pretty checkbox

A pure CSS library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

 	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
 
-
-
-
-

- Alternatively, you can also use CDN link

-
-
-
+

Alternatively, you can also use CDN link

 	
     https://cdn.jsdelivr.net/npm/pretty-checkbox@3.0/dist/pretty-checkbox.min.css
 
-
-
-
-

- Step 2 : Add - dist/pretty-checkbox.min.css file in your html or import - src/pretty-checkbox.scss file in your scss file

-
-
-
+

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

 	
     @import '~pretty-checkbox/src/pretty-checkbox.scss';
 
-
-
-
-

- Step 3 : Add the mark up in your file. Can be used with - Bootstrap, - Foundation, - Bulma frameworks.

-
-
-
+

Step 3 : Add the mark up in your file. Can be used with Bootstrap, Foundation, Bulma frameworks.

 	
     <div class="pretty p-default">
         <input type="checkbox" />
@@ -173,53 +28,7 @@ 
Installation
</div> </div>
-
-
-
-
-
-
-
-
Basic checkbox
-
-

These are simple checkboxes with three shapes. Add class - p-default as like mentioned in above example.

-

By default, it will be in - Square shape. To change, add class - p-curve or - p-round.

-
-
-
Default
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
-
-
-
-
Curve
-
show code - -
-
-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
Curve
show code
-
-
-
-
Round
-
show code - -
-
-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
Round
show code
-
-
-
-
-
Switch
-
-

Add class - p-switch. For shapes add class, - p-outline or - p-fill or - p-slim -

-
-
-
iOS style
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
-
-
-
-
-
Colors
-
-

There are five colors. - - - - - . Can be used as - Solid ( - p-primary ) or - Outline ( - p-primary-o ).

-

To apply colors, add class - p-primary to - .state class inside - .pretty -

-
-
-
Solid
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
-
-
-
-
Mixed
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Mixed
show code
-
-
- Show colors for all combinations
-
-
-
-
Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Show colors for all combinations
Outline
show code
-
-
-
-
Square & Fill
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Square & Fill
show code
-
-
-
-
Square & Fill & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Square & Fill & Outline
show code
-
-
-
-
Square & Thick
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Square & Thick
show code
-
-
-
-
Square & Thick & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Square & Thick & Outline
show code
-
-
-
-
Curve
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve
show code
-
-
-
-
Curve & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve & Outline
show code
-
-
-
-
Curve & Fill
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve & Fill
show code
-
-
-
-
Curve & Fill & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve & Fill & Outline
show code
-
-
-
-
Curve & Thick
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve & Thick
show code
-
-
-
-
Curve & Thick & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Curve & Thick & Outline
show code
-
-
-
-
Round
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round
show code
-
-
-
-
Round & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round & Outline
show code
-
-
-
-
Round & Fill
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round & Fill
show code
-
-
-
-
Round & Fill & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round & Fill & Outline
show code
-
-
-
-
Round & Thick
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round & Thick
show code
-
-
-
-
Round & Thick & Outline
-
show code - -
-
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
-
-
Round & Thick & Outline
show code
-
-
-
-
Switch
-
show code - -
-
-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
-
- Hide combinations
-

Colors can be added, removed, changed from SCSS settings.

-
-
-
-
Font icons
-
-

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, - p-icon to - .pretty. Then add - icon class along with font icon classes inside - .state .

-
-
-
General
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
-
-

This library doesnt comes with any font icons. You need to add appropriate font icon library in your - application. In above example, we have used - mdi mdi-check, which is from - Material design icons library. So, we need to add that library.

-
-
-
-
Svg
-
-

Adding svg icon is very similar to adding font icons. Add class - p-svg to - .pretty and - svg to - <svg> tag or - <img> tag ( if svg file url is used as img source ).

-
-
-
General
-
show code - -
-
-
-
- -
- - - - - -
-
- -
- -
- - -
-
- -
- -
- - - - -
-
-
-
- -
-

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it - based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

-
- -
-
Image
-
-

Adding image is also similar approach like above. Add class - p-image to - .pretty anf - image to - <img> tag.

-
-
-
General
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
-

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use - small and transparent images for better results. And Obviously, colors are not applicable to images, - unless I am the GOD.

-
-
-
-
Animations
-
-

To animate, add class - p-smooth or - p-jelly or - p-tada or - p-rotate or - p-pulse to - .pretty -

-
-
-
Smooth
-
show code - -
-
-
-
- -
- -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
-

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
-
-
-
-
Jelly
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
-
-
-
Tada
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
-
-
-
Rotate
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- - -
-
-
- -
-
-
-
Pulse
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- -
-
-
- -
-

Due to the nature of different checkbox design, certain animations are not applicable in some combinations - that were disussed below.

-
-
-
-
Plain
-
-

To remove the border ( - when checkbox is checked ) add class - p-plain to - .pretty.

-
-
-
General
-
show code - -
-
-
- -
- -
- - -
-
-
- -
- -
-
-
- -
-
-
-
-
Toggle
-
-

Toggles are simple show / hide type. Add class - p-toggle to - .pretty.

-

Previously, we have seen example with one state. Now we need to add similar state. Each one will have - class - p-on and - p-off class. By default - p-off state will be visible. On checking, - p-on will be visible.

-
-
-
Simple
-
show code - -
-
-
-
- -
- -
-
- -
-
-
-
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
-
-
-
-
With icon
-
show code - -
-
-
-
- -
- - -
-
- - -
-
-
-
With icon
show code
-
-
-
-
Without border
-
show code - -
-
-
-
- -
- - -
-
- - -
-
-
-
Without border
show code
-
-
-
-
With color
-
show code - -
-
-
-
- -
- - -
-
- - -
-
-
- -
- - -
-
- - -
-
-
- -
- - -
-
- - -
-
-
-
With color
show code
-
-
-
-
Without label
-
show code - -
-
-
- -
- -
- - -
-
- - -
-
-
-
Without label
show code
-
-

Checkbox styles cannot be mixed. If it is - p-svg style, both states should be svg.

-
-
-
-
States
-
-

These are checkbox and radio button states like - hover, - focus, - indeterminate. Please check the example code for details.

-
-
-
Hover
-
show code - -
-
-
-
- -
- -
-
- -
-
-
-

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
-
-
-
-
Focus
-
show code - -
-
-
-
- -
- -
-
-
-
Focus
show code
-
-
-
-
Indeterminate
- -
show code - -
-
-
-
- -
- - -
-
- - -
-
-
-
Indeterminate
show code
-
-
-
-
-
Disable
-
-

Normal - disabled attribute in checkbox is enough.

-
-
-
General
-
show code - -
-
-
- -
- -
- - -
-
- -
- -
- -
-
-
-
Disable

Normal disabled attribute in checkbox is enough.

General
show code
-
-
-
-
-
Lock
-
-

It is quite similar to - disable, but the only difference is, it will lock and make it look like active. To lock, add - class - p-lock to - .pretty -

-
-
-
Lock
-
show code - -
-
-
- -
- -
- - -
-
- -
- -
- -
-
-
-
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
-
-
-
-
-
Size
-
-

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, - bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class - p-bigger to - .pretty -

-
-
-
Bigger
-
show code - -
-
-
-
- -
- done - -
-
-
- -
- -
-
-
-
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
-
-

Alternatively, we can also set - font-size property to class - .pretty -

-
-
-
-
Radio buttons
-
-

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for - radio buttons.

-
-
-
Basic
-
show code - -
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
-
-
-
-
Colors
-
show code - -
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
Colors
show code
-
-
-
-
Solid color and icons
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
Solid color and icons
show code
-
-
-
-
Outline colors
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
Outline colors
show code
-
-
-
-
Animations
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
Animations
show code
-
-
-
-
Plain
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
Plain
show code
-
-
-
-
Switch
-
show code - -
-
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
Switch
show code
-
-
-
-
-
Tested font icon libraries
-
-

Here's the tested font icon libraries. But however, other icon libraries, and icons created from - icomoon, - fontastic should also work.

-
-
-
Font awesome - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
-
-
-
-
Bootstrap Glyphicons - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Bootstrap Glyphicons
show code
-
-
-
-
Material icon ( MDI ) - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Material icon ( MDI )
show code
-
-
-
-
Material icon ( ZMDI ) - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Material icon ( ZMDI )
show code
-
-
-
-
Typeicons - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Typeicons
show code
-
-
-
-
Ion icons - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
- - -
-
-
-
Ion icons
show code
-
-
-
-
Material icon ( Google ) - -
-
show code - -
-
-
-
- -
- done - -
-
-
- -
- clear - -
-
-
- -
- favorite_border - -
-
- favorite - -
-
-
-
Material icon ( Google )
show code
done
clear
favorite_border
favorite
-
-

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon - will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

-
-
-
-
Tested SVG libraries
-
-

These are couple of well known svg libraries which is tested at this moment.

-
-
-
UIKit - -
-
show code - -
-
-
-
- -
- - -
-
-
- -
- - -
-
-
-

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
-
-
-
-
Feathers - -
-
show code - -
-
-
- -
- -
- - -
-
- -
- -
- - - - -
-
-
-
Feathers
show code
-
-

But my instict says, other libraries also should work.

-
-
-
-
Scalability
-
-
-
-
Try changing font size
- -
show code - -
-
-
-
-
- -
- -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
-

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
-
-
-
-
-
SCSS Customize
-
-
-
-
Settings
-
-
-

+
SCSS Customize
Settings

     // If you felt the name is not-so-pretty,
     // you can always change!
 
@@ -4575,15 +1861,7 @@ 
Settings
$pretty--debug:false; $pretty--dev-err:'Invalid input type!'; -
-
-
-
-
-
Import
-
-
-

+
Import

     /* REQUIRED */
     @import '~pretty-checkbox/scss/variables';
     @import '~pretty-checkbox/scss/core';
@@ -4616,222 +1894,14 @@ 
Import
@import '~pretty-checkbox/scss/states/hover'; @import '~pretty-checkbox/scss/states/focus'; @import '~pretty-checkbox/scss/states/indeterminate'; -
-
-
-
-
-
-
More
-
-
-
-
Browser Compatability
-
-
-
Works in all latest browsers.
-
-
- - >= 10
-
- - >= 25
-
- - >= 40
-
- - >= 8
-
- - >= 25
-
-
-
-
-
-
Framework Compatability
-
-
-
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
-
- - - -
- -
-
-
-
-
Inspirations
-
-
-
- - Awesome Bootstrap Checkbox - Idea -
- - Animista - Animations.
-
-
-
-
-
Contributions
-
-
-
Thanks to all those good people who spend their valuable time and helped to improve this library. - And hey, if you - found a issue, or would like to - improve the code, you are always welcome!
-
-
-
-
-
Support and share
-
- -
-
-
-
Credits
-
-
-
- Image icons made by - Pixel Buddha, - Gregor Cresnar, - Freepik, - Maxim Basinski from - www.flaticon.com -
- Svg icons from - useiconic · - sparkk.fr -
- Slider generated from - range.css -
-
-
-
-
-
Licence
-
-
-
The MIT License
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - \ No newline at end of file +
More
Browser Compatability
Works in all latest browsers.
>= 10
>= 25
>= 40
>= 8
>= 25
Framework Compatability
Inspirations
Awesome Bootstrap Checkbox - Idea
Animista - Animations.
Contributions
Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome!
Support and share
Credits
Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
Svg icons from useiconic · sparkk.fr
Slider generated from range.css
Licence
The MIT License
\ No newline at end of file diff --git a/src/html/layouts/application.html b/src/html/layouts/application.html index 5341ab7..e82ed90 100644 --- a/src/html/layouts/application.html +++ b/src/html/layouts/application.html @@ -1,15 +1,16 @@ {% from 'macros/helpers.html' import sprite %} - - - Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking + + + + Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking - - {# #} + {# + #} @@ -55,36 +56,35 @@ - + - - + + - - + + - - {% block stylesheet %}{% endblock %} - {% block css %}{% endblock %} + {% block stylesheet %}{% endblock %} {% block css %}{% endblock %} + {% include "shared/app-icons.html" %} {% block head %}{% endblock %} + - {% include "shared/app-icons.html" %} - {% block head %}{% endblock %} - - - {% block content %}{% endblock %} - - {% block javascript %} + {% block javascript %} @@ -109,16 +108,13 @@ - + - + - + {% endblock %} + - - {% endblock %} - - + \ No newline at end of file diff --git a/src/html/layouts/content.html b/src/html/layouts/content.html index 3781618..11da44d 100644 --- a/src/html/layouts/content.html +++ b/src/html/layouts/content.html @@ -1,31 +1,15 @@ {% from "./partials/common.html" import section, code,block,codeblock,contentblock %}
-
- - {% include "./sections/installation.html" %} -
- {% include "./sections/basic_checkbox.html" %} - {% include "./sections/switch.html" %} - {% include "./sections/colors.html" %} - {% include "./sections/font_icons.html" %} - {% include "./sections/svg.html" %} - {% include "./sections/image.html" %} - {% include "./sections/animations.html" %} - {% include "./sections/plain.html" %} - {% include "./sections/toggle.html" %} - {% include "./sections/states.html" %} - {% include "./sections/disabled.html" %} - {% include "./sections/lock.html" %} - {% include "./sections/size.html" %} - {% include "./sections/radio_buttons.html" %} - {% include "./sections/tested_font_icons.html" %} - {% include "./sections/tested_svg.html" %} - {% include "./sections/scalability.html" %} - {% include "./sections/scss_customize.html" %} - {% include "./sections/more.html" %} - -
-
- - +
+ + {% include "./sections/installation.html" %} {% include "./sections/basic_checkbox.html" %} {% include "./sections/switch.html" + %} {% include "./sections/colors.html" %} {% include "./sections/font_icons.html" %} {% include "./sections/svg.html" %} + {% include "./sections/image.html" %} {% include "./sections/animations.html" %} {% include "./sections/plain.html" %} + {% include "./sections/toggle.html" %} {% include "./sections/states.html" %} {% include "./sections/disabled.html" %} + {% include "./sections/lock.html" %} {% include "./sections/size.html" %} {% include "./sections/radio_buttons.html" %} + {% include "./sections/tested_font_icons.html" %} {% include "./sections/tested_svg.html" %} {% include "./sections/scalability.html" + %} {% include "./sections/scss_customize.html" %} {% include "./sections/more.html" %} + +
+ \ No newline at end of file From 37608a0f7f2c0934251b024f69e12ba9d63c5208 Mon Sep 17 00:00:00 2001 From: Jordan Wright Date: Sat, 15 Sep 2018 20:27:14 -0500 Subject: [PATCH 09/10] Update lock.html It looks like the correct class is `p-locked`, not `p-lock` --- src/html/layouts/sections/lock.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/html/layouts/sections/lock.html b/src/html/layouts/sections/lock.html index af78dc3..0867d1b 100644 --- a/src/html/layouts/sections/lock.html +++ b/src/html/layouts/sections/lock.html @@ -1,5 +1,5 @@ {% set desc %} -

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

+

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-locked to .pretty

{{block(locked,'Lock')}} {% endset %} -{{section('Lock',desc,'lock')}} \ No newline at end of file +{{section('Lock',desc,'lock')}} From 78fa85536b89c12e6865b6ff2c5941ad26a776f7 Mon Sep 17 00:00:00 2001 From: lokesh-coder Date: Mon, 19 Nov 2018 12:27:57 +0530 Subject: [PATCH 10/10] docs: add framework libraries --- public/404.html | 1907 ----------------- public/index.html | 66 +- public/stylesheets/app.css | 2 +- src/html/layouts/header.html | 2 + src/html/layouts/sections/more.html | 11 +- src/stylesheets/app.scss | 3 +- src/stylesheets/partials/_core.scss | 5 + .../partials/_pretty-checkbox.scss | 1 + 8 files changed, 53 insertions(+), 1944 deletions(-) delete mode 100644 public/404.html diff --git a/public/404.html b/public/404.html deleted file mode 100644 index 93419f4..0000000 --- a/public/404.html +++ /dev/null @@ -1,1907 +0,0 @@ -Pretty checkbox | Custom checkbox and radio buttons in pure css | Beautiful and nice looking

pretty checkbox

A pure CSS library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

-	             
-    > yarn add pretty-checkbox  //or
-    > npm install pretty-checkbox
-
-

Alternatively, you can also use CDN link

-	
-    https://cdn.jsdelivr.net/npm/pretty-checkbox@3.0/dist/pretty-checkbox.min.css
-
-

Step 2 : Add dist/pretty-checkbox.min.css file in your html or import src/pretty-checkbox.scss file in your scss file

-	
-    @import '~pretty-checkbox/src/pretty-checkbox.scss';
-
-

Step 3 : Add the mark up in your file. Can be used with Bootstrap, Foundation, Bulma frameworks.

-	
-    <div class="pretty p-default">
-        <input type="checkbox" />
-        <div class="state">
-            <label>Check</label>
-        </div>
-    </div>
-
-
Basic checkbox

These are simple checkboxes with three shapes. Add class p-default as like mentioned in above example.

By default, it will be in Square shape. To change, add class p-curve or p-round.

Default
show code
Curve
show code
Round
show code
Switch

Add class p-switch. For shapes add class, p-outline or p-fill or p-slim

iOS style
show code
Colors

There are five colors. . Can be used as Solid ( p-primary ) or Outline ( p-primary-o ).

To apply colors, add class p-primary to .state class inside .pretty

Solid
show code
Mixed
show code
Show colors for all combinations
Outline
show code
Square & Fill
show code
Square & Fill & Outline
show code
Square & Thick
show code
Square & Thick & Outline
show code
Curve
show code
Curve & Outline
show code
Curve & Fill
show code
Curve & Fill & Outline
show code
Curve & Thick
show code
Curve & Thick & Outline
show code
Round
show code
Round & Outline
show code
Round & Fill
show code
Round & Fill & Outline
show code
Round & Thick
show code
Round & Thick & Outline
show code
Switch
show code
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

Svg

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

General
show code

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

Image

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

General
show code

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
Jelly
show code
Tada
show code
Rotate
show code
Pulse
show code

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

Plain

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

General
show code
Toggle

Toggles are simple show / hide type. Add class p-toggle to .pretty.

Previously, we have seen example with one state. Now we need to add similar state. Each one will have class p-on and p-off class. By default p-off state will be visible. On checking, p-on will be visible.

Simple
show code
With icon
show code
Without border
show code
With color
show code
Without label
show code

Checkbox styles cannot be mixed. If it is p-svg style, both states should be svg.

States

These are checkbox and radio button states like hover, focus, indeterminate. Please check the example code for details.

Hover
show code
Focus
show code
Indeterminate
show code
Disable

Normal disabled attribute in checkbox is enough.

General
show code
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done

Alternatively, we can also set font-size property to class .pretty

Radio buttons

Styling radio buttons are very similar to checkbox. All those features mentioned above, will wotk for radio buttons.

Basic
show code
Colors
show code
Solid color and icons
show code
Outline colors
show code
Animations
show code
Plain
show code
Switch
show code
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
Bootstrap Glyphicons
show code
Material icon ( MDI )
show code
Material icon ( ZMDI )
show code
Typeicons
show code
Ion icons
show code
Material icon ( Google )
show code
done
clear
favorite_border
favorite

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
Feathers
show code

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
SCSS Customize
Settings

-    // If you felt the name is not-so-pretty,
-    // you can always change!
-
-    $pretty--class-name: pretty;
-
-    // are you sure, you wanna change my handpicked
-    // awesome super duper colors?
-
-    $pretty--color-default:#bdc3c7;
-    $pretty--color-primary:#428bca;
-    $pretty--color-info:#5bc0de;
-    $pretty--color-success:#5cb85c;
-    $pretty--color-warning:#f0ad4e;
-    $pretty--color-danger:#d9534f;
-    $pretty--color-dark:#5a656b;
-
-    // uh, boring z-index stuff, who cares.
-
-    $pretty--z-index-back:0;
-    $pretty--z-index-between:1;
-    $pretty--z-index-front:2;
-
-    // nobody will change this.
-
-    $pretty--debug:false;
-    $pretty--dev-err:'Invalid input type!';
-
Import

-    /* REQUIRED */
-    @import '~pretty-checkbox/scss/variables';
-    @import '~pretty-checkbox/scss/core';
-
-    /* OPTIONALS */
-    @import '~pretty-checkbox/scss/elements/default/fill';
-    @import '~pretty-checkbox/scss/elements/default/outline';
-    @import '~pretty-checkbox/scss/elements/default/thick';
-
-    @import '~pretty-checkbox/scss/elements/font-icon/general';
-
-    @import '~pretty-checkbox/scss/elements/svg/general';
-
-    @import '~pretty-checkbox/scss/elements/image/general';
-
-    @import '~pretty-checkbox/scss/elements/switch/general';
-    @import '~pretty-checkbox/scss/elements/switch/fill';
-    @import '~pretty-checkbox/scss/elements/switch/slim';
-
-    @import '~pretty-checkbox/scss/extras/toggle';
-    @import '~pretty-checkbox/scss/extras/plain';
-    @import '~pretty-checkbox/scss/extras/round';
-    @import '~pretty-checkbox/scss/extras/curve';
-    @import '~pretty-checkbox/scss/extras/animation';
-    @import '~pretty-checkbox/scss/extras/disabled';
-    @import '~pretty-checkbox/scss/extras/locked';
-    @import '~pretty-checkbox/scss/extras/colors';
-    @import '~pretty-checkbox/scss/extras/print';
-
-    @import '~pretty-checkbox/scss/states/hover';
-    @import '~pretty-checkbox/scss/states/focus';
-    @import '~pretty-checkbox/scss/states/indeterminate';
-
More
Browser Compatability
Works in all latest browsers.
>= 10
>= 25
>= 40
>= 8
>= 25
Framework Compatability
Inspirations
Awesome Bootstrap Checkbox - Idea
Animista - Animations.
Contributions
Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome!
Support and share
Credits
Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
Svg icons from useiconic · sparkk.fr
Slider generated from range.css
Licence
The MIT License
\ No newline at end of file diff --git a/public/index.html b/public/index.html index 93419f4..a4f627b 100644 --- a/public/index.html +++ b/public/index.html @@ -6,7 +6,7 @@ })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-81380108-1', 'auto'); - ga('send', 'pageview');

pretty checkbox

A pure CSS library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

+    ga('send', 'pageview');

pretty checkbox

A pure CSS library to beautify checkbox and radio buttons

Installation

Step 1 : Download from yarn or npm

 	             
     > yarn add pretty-checkbox  //or
     > npm install pretty-checkbox
@@ -921,7 +921,7 @@
             <label>Danger</label>
         </div>
     </div>
-
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code
Hide combinations

Colors can be added, removed, changed from SCSS settings.

Font icons

You can add any font icons to replace basic checkbox styles. There are two classes to be added. First, p-icon to .pretty. Then add icon class along with font icon classes inside .state .

General
show code

This library doesnt comes with any font icons. You need to add appropriate font icon library in your application. In above example, we have used mdi mdi-check, which is from Material design icons library. So, we need to add that library.

Svg

Adding svg icon is very similar to adding font icons. Add class p-svg to .pretty and svg to <svg> tag or <img> tag ( if svg file url is used as img source ).

General
show code

SVG's are quite different and unpredictable to apply colors properly. This library tries to color it based on few assumptions. Sometimes, it might return weird results. Dont curse me, in those cases.

Image

Adding image is also similar approach like above. Add class p-image to .pretty anf image to <img> tag.

General
show code

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code

Good news is, images are automatically resized to fit in to the checkbox. But still, its wise to use small and transparent images for better results. And Obviously, colors are not applicable to images, unless I am the GOD.

Animations

To animate, add class p-smooth or p-jelly or p-tada or p-rotate or p-pulse to .pretty

Smooth
show code
Jelly
show code
Tada
show code
Rotate
show code
Pulse
show code

Due to the nature of different checkbox design, certain animations are not applicable in some combinations that were disussed below.

Plain

To remove the border ( when checkbox is checked ) add class p-plain to .pretty.

General
show code
With icon
show code
With icon
show code
Without border
show code
Without border
show code
With color
show code
With color
show code
Without label
show code
Without label
show code
Indeterminate
show code
Indeterminate
show code
Disable

Normal disabled attribute in checkbox is enough.

General
show code
Disable

Normal disabled attribute in checkbox is enough.

General
show code
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-lock to .pretty

Lock
show code
Lock

It is quite similar to disable, but the only difference is, it will lock and make it look like active. To lock, add class p-locked to .pretty

Lock
show code
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
Size

Basically, all the checkbox and radio buttons are sized based on the font size. Bigger the font size, bigger the checkbox and radio. Sometimes, you might need to scale it bit bigger. To do so, add class p-bigger to .pretty

Bigger
show code
done
Solid color and icons
show code
Solid color and icons
show code
Outline colors
show code
Outline colors
show code
Animations
show code
Animations
show code
Plain
show code
Plain
show code
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
Tested font icon libraries

Here's the tested font icon libraries. But however, other icon libraries, and icons created from icomoon, fontastic should also work.

Font awesome
show code
Bootstrap Glyphicons
show code
Bootstrap Glyphicons
show code
Material icon ( MDI )
show code
Material icon ( MDI )
show code
Material icon ( ZMDI )
show code
Material icon ( ZMDI )
show code
Typeicons
show code
Typeicons
show code
Ion icons
show code
Ion icons
show code
Material icon ( Google )
show code
done
clear
favorite_border
favorite
Material icon ( Google )
show code
done
clear
favorite_border
favorite

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code

Some font icons might have inaccurate 'X' aspect ratio or some alignment issue. In those cases, the icon will have minute extra space in top or bottom. No worries, it is quite easy to fix it youself :)

Tested SVG libraries

These are couple of well known svg libraries which is tested at this moment.

UIKit
show code
Feathers
show code
Feathers
show code

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code

But my instict says, other libraries also should work.

Scalability
Try changing font size
show code
More
Browser Compatability
Works in all latest browsers.
>= 10
>= 25
>= 40
>= 8
>= 25
Framework Compatability
Inspirations
Awesome Bootstrap Checkbox - Idea
Animista - Animations.
Contributions
Thanks to all those good people who spend their valuable time and helped to improve this library. And hey, if you found a issue, or would like to improve the code, you are always welcome!
Support and share
Credits
Image icons made by Pixel Buddha, Gregor Cresnar, Freepik, Maxim Basinski from www.flaticon.com
Svg icons from useiconic · sparkk.fr
Slider generated from range.css
Licence
The MIT License