@charset "UTF-8";
/**
 * Foundation for Sites by ZURB
 * Version 6.4.1
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@media print, screen and (min-width: 40em) {
  .reveal, .reveal.tiny, .reveal.small, .reveal.large {
    right: auto;
    left: auto;
    margin: 0 auto; } }

@font-face {
  font-family: 'icomoon';
  src: url("./fonts/icomoon.eot?bffny1");
  src: url("./fonts/icomoon.eot?#iefixbffny1") format("embedded-opentype"), url("./fonts/icomoon.ttf?bffny1") format("truetype"), url("./fonts/icomoon.woff?bffny1") format("woff"), url("./fonts/icomoon.svg?bffny1#icomoon") format("svg");
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-diamond3:before {
  content: "\f219"; }

.icon-pinterest-p:before {
  content: "\f231"; }

.icon-whatsapp:before {
  content: "\f232"; }

.icon-music:before {
  content: "\f001"; }

.icon-heart3:before {
  content: "\f004"; }

.icon-star3:before {
  content: "\f005"; }

.icon-star-o:before {
  content: "\f006"; }

.icon-user2:before {
  content: "\f007"; }

.icon-th-large2:before {
  content: "\f009"; }

.icon-check2:before {
  content: "\f00c"; }

.icon-close:before {
  content: "\f00d"; }

.icon-cog:before {
  content: "\f013"; }

.icon-home:before {
  content: "\f015"; }

.icon-clock-o:before {
  content: "\f017"; }

.icon-lock:before {
  content: "\f023"; }

.icon-flag2:before {
  content: "\f024"; }

.icon-tag:before {
  content: "\f02b"; }

.icon-book:before {
  content: "\f02d"; }

.icon-image2:before {
  content: "\f03e"; }

.icon-edit:before {
  content: "\f044"; }

.icon-chevron-left:before {
  content: "\f053"; }

.icon-chevron-right:before {
  content: "\f054"; }

.icon-times-circle-o:before {
  content: "\f05c"; }

.icon-check-circle-o:before {
  content: "\f05d"; }

.icon-arrow-left2:before {
  content: "\f061"; }

.icon-arrow-right2:before {
  content: "\f062"; }

.icon-plus:before {
  content: "\f067"; }

.icon-minus:before {
  content: "\f068"; }

.icon-eye3:before {
  content: "\f06e"; }

.icon-comment:before {
  content: "\f075"; }

.icon-magnet:before {
  content: "\f076"; }

.icon-folder:before {
  content: "\f07b"; }

.icon-key:before {
  content: "\f084"; }

.icon-cogs:before {
  content: "\f085"; }

.icon-comments:before {
  content: "\f086"; }

.icon-thumbs-o-up:before {
  content: "\f087"; }

.icon-thumbs-o-down:before {
  content: "\f088"; }

.icon-heart-o:before {
  content: "\f08a"; }

.icon-trophy:before {
  content: "\f091"; }

.icon-phone2:before {
  content: "\f095"; }

.icon-twitter:before {
  content: "\f099"; }

.icon-facebook:before {
  content: "\f09a"; }

.icon-github:before {
  content: "\f09b"; }

.icon-bullhorn:before {
  content: "\f0a1"; }

.icon-certificate:before {
  content: "\f0a3"; }

.icon-wrench:before {
  content: "\f0ad"; }

.icon-tasks:before {
  content: "\f0ae"; }

.icon-briefcase:before {
  content: "\f0b1"; }

.icon-group:before {
  content: "\f0c0"; }

.icon-chain:before {
  content: "\f0c4"; }

.icon-cloud:before {
  content: "\f0c2"; }

.icon-flask:before {
  content: "\f0c3"; }

.icon-cut:before {
  content: "\f0c5"; }

.icon-paperclip:before {
  content: "\f0c6"; }

.icon-bars:before {
  content: "\f0c9"; }

.icon-magic:before {
  content: "\f0d0"; }

.icon-pinterest:before {
  content: "\f0d2"; }

.icon-google-plus:before {
  content: "\f0d5"; }

.icon-linkedin:before {
  content: "\f0e1"; }

.icon-dashboard:before {
  content: "\f0e4"; }

.icon-comments-o:before {
  content: "\f0e6"; }

.icon-bolt:before {
  content: "\f0e7"; }

.icon-sitemap:before {
  content: "\f0e8"; }

.icon-umbrella:before {
  content: "\f0e9"; }

.icon-lightbulb-o:before {
  content: "\f0eb"; }

.icon-cloud-download2:before {
  content: "\f0ed"; }

.icon-cloud-upload2:before {
  content: "\f0ee"; }

.icon-coffee2:before {
  content: "\f0f4"; }

.icon-angle-left:before {
  content: "\f104"; }

.icon-angle-right:before {
  content: "\f105"; }

.icon-desktop:before {
  content: "\f108"; }

.icon-laptop:before {
  content: "\f109"; }

.icon-tablet:before {
  content: "\f10a"; }

.icon-mobile:before {
  content: "\f10b"; }

.icon-quote-left:before {
  content: "\f10d"; }

.icon-quote-right:before {
  content: "\f10e"; }

.icon-github-alt:before {
  content: "\f113"; }

.icon-gamepad:before {
  content: "\f11b"; }

.icon-terminal:before {
  content: "\f120"; }

.icon-code:before {
  content: "\f121"; }

.icon-code-fork:before {
  content: "\f126"; }

.icon-microphone3:before {
  content: "\f130"; }

.icon-rocket2:before {
  content: "\f135"; }

.icon-anchor2:before {
  content: "\f13d"; }

.icon-eur:before {
  content: "\f153"; }

.icon-gbp:before {
  content: "\f154"; }

.icon-dollar:before {
  content: "\f155"; }

.icon-inr:before {
  content: "\f156"; }

.icon-cny:before {
  content: "\f157"; }

.icon-rouble:before {
  content: "\f158"; }

.icon-krw:before {
  content: "\f159"; }

.icon-bitcoin:before {
  content: "\f15a"; }

.icon-thumbs-up:before {
  content: "\f164"; }

.icon-thumbs-down:before {
  content: "\f165"; }

.icon-youtube:before {
  content: "\f167"; }

.icon-youtube-play:before {
  content: "\f16a"; }

.icon-dropbox:before {
  content: "\f16b"; }

.icon-instagram:before {
  content: "\f16d"; }

.icon-tumblr:before {
  content: "\f173"; }

.icon-apple:before {
  content: "\f179"; }

.icon-windows:before {
  content: "\f17a"; }

.icon-android:before {
  content: "\f17b"; }

.icon-linux:before {
  content: "\f17c"; }

.icon-dribbble:before {
  content: "\f17d"; }

.icon-skype:before {
  content: "\f17e"; }

.icon-foursquare:before {
  content: "\f180"; }

.icon-trello:before {
  content: "\f181"; }

.icon-female:before {
  content: "\f182"; }

.icon-male:before {
  content: "\f183"; }

.icon-gittip:before {
  content: "\f184"; }

.icon-arrow-circle-o-right:before {
  content: "\f18e"; }

.icon-arrow-circle-o-left:before {
  content: "\f190"; }

.icon-wordpress:before {
  content: "\f19a"; }

.icon-graduation-cap:before {
  content: "\f19d"; }

.icon-reddit:before {
  content: "\f1a1"; }

.icon-stumbleupon:before {
  content: "\f1a4"; }

.icon-delicious:before {
  content: "\f1a5"; }

.icon-digg:before {
  content: "\f1a6"; }

.icon-drupal:before {
  content: "\f1a9"; }

.icon-joomla:before {
  content: "\f1aa"; }

.icon-behance:before {
  content: "\f1b4"; }

.icon-steam:before {
  content: "\f1b6"; }

.icon-tree:before {
  content: "\f1bb"; }

.icon-spotify:before {
  content: "\f1bc"; }

.icon-soundcloud:before {
  content: "\f1be"; }

.icon-vine:before {
  content: "\f1ca"; }

.icon-life-bouy:before {
  content: "\f1cd"; }

.icon-paper-plane:before {
  content: "\f1d8"; }

.icon-paper-plane-o:before {
  content: "\f1d9"; }

.icon-sliders:before {
  content: "\f1de"; }

.icon-bomb:before {
  content: "\f1e2"; }

.icon-plug:before {
  content: "\f1e6"; }

.icon-slideshare:before {
  content: "\f1e7"; }

.icon-paypal:before {
  content: "\f1ed"; }

.icon-cc-visa:before {
  content: "\f1f0"; }

.icon-cc-mastercard:before {
  content: "\f1f1"; }

.icon-cc-discover:before {
  content: "\f1f2"; }

.icon-cc-amex:before {
  content: "\f1f3"; }

.icon-cc-paypal:before {
  content: "\f1f4"; }

.icon-cc-stripe:before {
  content: "\f1f5"; }

.icon-copyright:before {
  content: "\f1f9"; }

.icon-at:before {
  content: "\f1fa"; }

.icon-birthday-cake:before {
  content: "\f1fd"; }

.icon-area-chart:before {
  content: "\f1fe"; }

.icon-pie-chart:before {
  content: "\f200"; }

.icon-line-chart:before {
  content: "\f201"; }

.icon-lastfm:before {
  content: "\f202"; }

.icon-mobile2:before {
  content: "\e00a"; }

.icon-laptop2:before {
  content: "\e00b"; }

.icon-desktop2:before {
  content: "\e00c"; }

.icon-tablet2:before {
  content: "\e00d"; }

.icon-phone3:before {
  content: "\e00e"; }

.icon-document:before {
  content: "\e00f"; }

.icon-documents:before {
  content: "\e01a"; }

.icon-search4:before {
  content: "\e01b"; }

.icon-clipboard2:before {
  content: "\e01c"; }

.icon-newspaper:before {
  content: "\e01d"; }

.icon-notebook:before {
  content: "\e01e"; }

.icon-book-open:before {
  content: "\e01f"; }

.icon-browser:before {
  content: "\e02a"; }

.icon-calendar2:before {
  content: "\e02b"; }

.icon-presentation:before {
  content: "\e02c"; }

.icon-picture:before {
  content: "\e02d"; }

.icon-pictures:before {
  content: "\e02e"; }

.icon-video3:before {
  content: "\e02f"; }

.icon-camera5:before {
  content: "\e03a"; }

.icon-printer2:before {
  content: "\e03b"; }

.icon-toolbox:before {
  content: "\e03c"; }

.icon-briefcase3:before {
  content: "\e03d"; }

.icon-wallet3:before {
  content: "\e03e"; }

.icon-gift2:before {
  content: "\e03f"; }

.icon-bargraph:before {
  content: "\e04a"; }

.icon-grid2:before {
  content: "\e04b"; }

.icon-expand2:before {
  content: "\e04c"; }

.icon-focus:before {
  content: "\e04d"; }

.icon-edit2:before {
  content: "\e04e"; }

.icon-adjustments:before {
  content: "\e04f"; }

.icon-ribbon2:before {
  content: "\e05a"; }

.icon-hourglass2:before {
  content: "\e05b"; }

.icon-lock4:before {
  content: "\e05c"; }

.icon-megaphone2:before {
  content: "\e05d"; }

.icon-shield:before {
  content: "\e05e"; }

.icon-trophy2:before {
  content: "\e05f"; }

.icon-flag3:before {
  content: "\e06a"; }

.icon-map2:before {
  content: "\e06b"; }

.icon-puzzle2:before {
  content: "\e06c"; }

.icon-basket:before {
  content: "\e06d"; }

.icon-envelope2:before {
  content: "\e06e"; }

.icon-streetsign:before {
  content: "\e06f"; }

.icon-telescope:before {
  content: "\e07a"; }

.icon-gears:before {
  content: "\e07b"; }

.icon-key3:before {
  content: "\e07c"; }

.icon-paperclip2:before {
  content: "\e07d"; }

.icon-attachment:before {
  content: "\e07e"; }

.icon-pricetags:before {
  content: "\e07f"; }

.icon-lightbulb:before {
  content: "\e08a"; }

.icon-layers2:before {
  content: "\e08b"; }

.icon-pencil:before {
  content: "\e08c"; }

.icon-tools2:before {
  content: "\e08d"; }

.icon-tools-2:before {
  content: "\e08e"; }

.icon-scissors:before {
  content: "\e08f"; }

.icon-paintbrush:before {
  content: "\e09a"; }

.icon-magnifying-glass:before {
  content: "\e09b"; }

.icon-circle-compass:before {
  content: "\e09c"; }

.icon-linegraph:before {
  content: "\e09d"; }

.icon-mic:before {
  content: "\e09e"; }

.icon-strategy:before {
  content: "\e09f"; }

.icon-beaker:before {
  content: "\e0a0"; }

.icon-caution:before {
  content: "\e0a1"; }

.icon-recycle:before {
  content: "\e0a2"; }

.icon-anchor3:before {
  content: "\e0a3"; }

.icon-profile-male:before {
  content: "\e0a4"; }

.icon-profile-female:before {
  content: "\e0a5"; }

.icon-bike:before {
  content: "\e0a6"; }

.icon-wine:before {
  content: "\e0a7"; }

.icon-hotairballoon:before {
  content: "\e0a8"; }

.icon-globe3:before {
  content: "\e0a9"; }

.icon-genius:before {
  content: "\e0aa"; }

.icon-map-pin:before {
  content: "\e0ab"; }

.icon-dial:before {
  content: "\e0ac"; }

.icon-chat:before {
  content: "\e0ad"; }

.icon-heart4:before {
  content: "\e0ae"; }

.icon-cloud4:before {
  content: "\e0af"; }

.icon-upload2:before {
  content: "\e0b0"; }

.icon-download2:before {
  content: "\e0b1"; }

.icon-target2:before {
  content: "\e0b2"; }

.icon-hazardous:before {
  content: "\e0b3"; }

.icon-piechart:before {
  content: "\e0b4"; }

.icon-speedometer:before {
  content: "\e0b5"; }

.icon-global:before {
  content: "\e0b6"; }

.icon-compass:before {
  content: "\e0b7"; }

.icon-lifesaver:before {
  content: "\e0b8"; }

.icon-clock3:before {
  content: "\e0b9"; }

.icon-aperture:before {
  content: "\e0ba"; }

.icon-quote3:before {
  content: "\e0bb"; }

.icon-scope:before {
  content: "\e0bc"; }

.icon-alarmclock:before {
  content: "\e0bd"; }

.icon-refresh:before {
  content: "\e0be"; }

.icon-happy3:before {
  content: "\e0bf"; }

.icon-sad3:before {
  content: "\e0c0"; }

.icon-facebook2:before {
  content: "\e0c1"; }

.icon-twitter2:before {
  content: "\e0c2"; }

.icon-googleplus:before {
  content: "\e0c3"; }

.icon-rss:before {
  content: "\e0c4"; }

.icon-tumblr2:before {
  content: "\e0c5"; }

.icon-linkedin2:before {
  content: "\e0c6"; }

.icon-dribbble2:before {
  content: "\e0c7"; }

.icon-heart:before {
  content: "\e610"; }

.icon-cloud2:before {
  content: "\e611"; }

.icon-star:before {
  content: "\e612"; }

.icon-tv:before {
  content: "\e613"; }

.icon-sound:before {
  content: "\e614"; }

.icon-video:before {
  content: "\e615"; }

.icon-trash:before {
  content: "\e616"; }

.icon-user:before {
  content: "\e617"; }

.icon-key2:before {
  content: "\e618"; }

.icon-search2:before {
  content: "\e619"; }

.icon-settings:before {
  content: "\e61a"; }

.icon-camera2:before {
  content: "\e61b"; }

.icon-tag2:before {
  content: "\e61c"; }

.icon-lock2:before {
  content: "\e61d"; }

.icon-bulb:before {
  content: "\e61e"; }

.icon-pen:before {
  content: "\e61f"; }

.icon-diamond2:before {
  content: "\e620"; }

.icon-display:before {
  content: "\e621"; }

.icon-location2:before {
  content: "\e622"; }

.icon-eye:before {
  content: "\e623"; }

.icon-bubble:before {
  content: "\e624"; }

.icon-stack:before {
  content: "\e625"; }

.icon-cup:before {
  content: "\e626"; }

.icon-phone:before {
  content: "\e627"; }

.icon-news:before {
  content: "\e628"; }

.icon-mail:before {
  content: "\e629"; }

.icon-like:before {
  content: "\e62a"; }

.icon-photo:before {
  content: "\e62b"; }

.icon-note:before {
  content: "\e62c"; }

.icon-clock:before {
  content: "\e62d"; }

.icon-paperplane:before {
  content: "\e62e"; }

.icon-params:before {
  content: "\e62f"; }

.icon-banknote:before {
  content: "\e630"; }

.icon-data:before {
  content: "\e631"; }

.icon-music2:before {
  content: "\e632"; }

.icon-megaphone:before {
  content: "\e633"; }

.icon-study:before {
  content: "\e634"; }

.icon-lab2:before {
  content: "\e635"; }

.icon-food:before {
  content: "\e636"; }

.icon-t-shirt:before {
  content: "\e637"; }

.icon-fire2:before {
  content: "\e638"; }

.icon-clip:before {
  content: "\e639"; }

.icon-shop:before {
  content: "\e63a"; }

.icon-calendar:before {
  content: "\e63b"; }

.icon-wallet:before {
  content: "\e63c"; }

.icon-vynil:before {
  content: "\e63d"; }

.icon-truck:before {
  content: "\e63e"; }

.icon-world:before {
  content: "\e63f"; }

.icon-quote:before {
  content: "\e640"; }

.icon-quote2:before {
  content: "\e641"; }

.icon-camera3:before {
  content: "\e642"; }

.icon-film:before {
  content: "\e643"; }

.icon-drink:before {
  content: "\e600"; }

.icon-drink2:before {
  content: "\e601"; }

.icon-drink3:before {
  content: "\e644"; }

.icon-coffee:before {
  content: "\e602"; }

.icon-mug:before {
  content: "\e603"; }

.icon-icecream:before {
  content: "\e604"; }

.icon-cake:before {
  content: "\e605"; }

.icon-cassette:before {
  content: "\e645"; }

.icon-wallet2:before {
  content: "\e646"; }

.icon-sitemap2:before {
  content: "\e647"; }

.icon-direction:before {
  content: "\e606"; }

.icon-lab:before {
  content: "\e607"; }

.icon-tie:before {
  content: "\e608"; }

.icon-medal:before {
  content: "\e648"; }

.icon-stack2:before {
  content: "\e649"; }

.icon-lamp:before {
  content: "\e609"; }

.icon-diamond:before {
  content: "\e60a"; }

.icon-equalizer:before {
  content: "\e60b"; }

.icon-justice:before {
  content: "\e64a"; }

.icon-stats:before {
  content: "\e64b"; }

.icon-hourglass:before {
  content: "\e64c"; }

.icon-abacus:before {
  content: "\e64d"; }

.icon-dollar2:before {
  content: "\e64e"; }

.icon-pig:before {
  content: "\e60c"; }

.icon-envelope:before {
  content: "\e60d"; }

.icon-male2:before {
  content: "\e64f"; }

.icon-female2:before {
  content: "\e650"; }

.icon-info:before {
  content: "\e651"; }

.icon-rocket:before {
  content: "\e60e"; }

.icon-microphone:before {
  content: "\e652"; }

.icon-shipping:before {
  content: "\e653"; }

.icon-ruler:before {
  content: "\e60f"; }

.icon-pencil22:before {
  content: "\e906"; }

.icon-droplet:before {
  content: "\e90b"; }

.icon-camera:before {
  content: "\e90f"; }

.icon-headphones:before {
  content: "\e910"; }

.icon-connection:before {
  content: "\e91b"; }

.icon-book2:before {
  content: "\e91f"; }

.icon-books:before {
  content: "\e920"; }

.icon-folder-open:before {
  content: "\e930"; }

.icon-cart:before {
  content: "\e93a"; }

.icon-equalizer2:before {
  content: "\e993"; }

.icon-pie-chart2:before {
  content: "\e99a"; }

.icon-stats-dots:before {
  content: "\e99b"; }

.icon-spoon-knife:before {
  content: "\e9a3"; }

.icon-leaf:before {
  content: "\e9a4"; }

.icon-rocket4:before {
  content: "\e9a5"; }

.icon-meter:before {
  content: "\e9a6"; }

.icon-fire:before {
  content: "\e9a9"; }

.icon-bin:before {
  content: "\e9ac"; }

.icon-bookmark:before {
  content: "\e9d2"; }

.icon-happy:before {
  content: "\e9df"; }

.icon-happy2:before {
  content: "\e9e0"; }

.icon-smile:before {
  content: "\e9e1"; }

.icon-smile2:before {
  content: "\e9e2"; }

.icon-tongue:before {
  content: "\e9e3"; }

.icon-tongue2:before {
  content: "\e9e4"; }

.icon-sad:before {
  content: "\e9e5"; }

.icon-sad2:before {
  content: "\e9e6"; }

.icon-wink:before {
  content: "\e9e7"; }

.icon-wink2:before {
  content: "\e9e8"; }

.icon-grin:before {
  content: "\e9e9"; }

.icon-grin2:before {
  content: "\e9ea"; }

.icon-cool:before {
  content: "\e9eb"; }

.icon-cool2:before {
  content: "\e9ec"; }

.icon-angry:before {
  content: "\e9ed"; }

.icon-angry2:before {
  content: "\e9ee"; }

.icon-evil:before {
  content: "\e9ef"; }

.icon-evil2:before {
  content: "\e9f0"; }

.icon-shocked:before {
  content: "\e9f1"; }

.icon-shocked2:before {
  content: "\e9f2"; }

.icon-baffled:before {
  content: "\e9f3"; }

.icon-baffled2:before {
  content: "\e9f4"; }

.icon-confused:before {
  content: "\e9f5"; }

.icon-confused2:before {
  content: "\e9f6"; }

.icon-neutral:before {
  content: "\e9f7"; }

.icon-neutral2:before {
  content: "\e9f8"; }

.icon-hipster:before {
  content: "\e9f9"; }

.icon-hipster2:before {
  content: "\e9fa"; }

.icon-wondering:before {
  content: "\e9fb"; }

.icon-wondering2:before {
  content: "\e9fc"; }

.icon-sleepy:before {
  content: "\e9fd"; }

.icon-sleepy2:before {
  content: "\e9fe"; }

.icon-frustrated:before {
  content: "\e9ff"; }

.icon-frustrated2:before {
  content: "\ea00"; }

.icon-crying:before {
  content: "\ea01"; }

.icon-crying2:before {
  content: "\ea02"; }

.icon-play2:before {
  content: "\ea15"; }

.icon-pause:before {
  content: "\ea16"; }

.icon-stop:before {
  content: "\ea17"; }

.icon-previous:before {
  content: "\ea18"; }

.icon-next:before {
  content: "\ea19"; }

.icon-backward:before {
  content: "\ea1a"; }

.icon-forward2:before {
  content: "\ea1b"; }

.icon-play3:before {
  content: "\ea1c"; }

.icon-pause2:before {
  content: "\ea1d"; }

.icon-stop2:before {
  content: "\ea1e"; }

.icon-circle-up:before {
  content: "\ea41"; }

.icon-circle-right:before {
  content: "\ea42"; }

.icon-circle-down:before {
  content: "\ea43"; }

.icon-circle-left:before {
  content: "\ea44"; }

.icon-html5:before {
  content: "\eadf"; }

.icon-html52:before {
  content: "\eae0"; }

.icon-css3:before {
  content: "\eae1"; }

.icon-chrome:before {
  content: "\eae5"; }

.icon-firefox:before {
  content: "\eae6"; }

.icon-IE:before {
  content: "\eae7"; }

.icon-opera:before {
  content: "\eae8"; }

.icon-safari:before {
  content: "\eae9"; }

.icon-bug:before {
  content: "\f092"; }

.icon-gift:before {
  content: "\f042"; }

.icon-git-branch:before {
  content: "\f020"; }

.icon-globe:before {
  content: "\f0b6"; }

.icon-graph:before {
  content: "\f043"; }

.icon-law:before {
  content: "\f0d8"; }

.icon-light-bulb:before {
  content: "\f000"; }

.icon-location:before {
  content: "\f060"; }

.icon-mention:before {
  content: "\f0be"; }

.icon-pencil2:before {
  content: "\f058"; }

.icon-pin:before {
  content: "\f041"; }

.icon-plug2:before {
  content: "\f0d4"; }

.icon-pulse:before {
  content: "\f089"; }

.icon-puzzle:before {
  content: "\f0c1"; }

.icon-rocket3:before {
  content: "\f033"; }

.icon-search:before {
  content: "\f02e"; }

.icon-tools:before {
  content: "\f031"; }

.icon-eye2:before {
  content: "\e000"; }

.icon-paper-clip:before {
  content: "\e001"; }

.icon-mail2:before {
  content: "\e002"; }

.icon-toggle:before {
  content: "\e003"; }

.icon-layout:before {
  content: "\e004"; }

.icon-link:before {
  content: "\e005"; }

.icon-bell:before {
  content: "\e006"; }

.icon-lock3:before {
  content: "\e007"; }

.icon-unlock:before {
  content: "\e008"; }

.icon-ribbon:before {
  content: "\e009"; }

.icon-image:before {
  content: "\e010"; }

.icon-signal:before {
  content: "\e011"; }

.icon-target:before {
  content: "\e012"; }

.icon-clipboard:before {
  content: "\e013"; }

.icon-clock2:before {
  content: "\e014"; }

.icon-watch:before {
  content: "\e015"; }

.icon-air-play:before {
  content: "\e016"; }

.icon-camera4:before {
  content: "\e017"; }

.icon-video2:before {
  content: "\e018"; }

.icon-disc:before {
  content: "\e019"; }

.icon-printer:before {
  content: "\e020"; }

.icon-monitor:before {
  content: "\e021"; }

.icon-server:before {
  content: "\e022"; }

.icon-cog2:before {
  content: "\e023"; }

.icon-heart2:before {
  content: "\e024"; }

.icon-paragraph:before {
  content: "\e025"; }

.icon-align-justify:before {
  content: "\e026"; }

.icon-align-left:before {
  content: "\e027"; }

.icon-align-center:before {
  content: "\e028"; }

.icon-align-right:before {
  content: "\e029"; }

.icon-book3:before {
  content: "\e030"; }

.icon-layers:before {
  content: "\e031"; }

.icon-stack3:before {
  content: "\e032"; }

.icon-stack-2:before {
  content: "\e033"; }

.icon-paper:before {
  content: "\e034"; }

.icon-paper-stack:before {
  content: "\e035"; }

.icon-search3:before {
  content: "\e036"; }

.icon-zoom-in:before {
  content: "\e037"; }

.icon-zoom-out:before {
  content: "\e038"; }

.icon-reply:before {
  content: "\e039"; }

.icon-circle-plus:before {
  content: "\e040"; }

.icon-circle-minus:before {
  content: "\e041"; }

.icon-circle-check:before {
  content: "\e042"; }

.icon-circle-cross:before {
  content: "\e043"; }

.icon-square-plus:before {
  content: "\e044"; }

.icon-square-minus:before {
  content: "\e045"; }

.icon-square-check:before {
  content: "\e046"; }

.icon-square-cross:before {
  content: "\e047"; }

.icon-microphone2:before {
  content: "\e048"; }

.icon-record:before {
  content: "\e049"; }

.icon-skip-back:before {
  content: "\e050"; }

.icon-rewind:before {
  content: "\e051"; }

.icon-play:before {
  content: "\e052"; }

.icon-pause3:before {
  content: "\e053"; }

.icon-stop3:before {
  content: "\e054"; }

.icon-fast-forward:before {
  content: "\e055"; }

.icon-skip-forward:before {
  content: "\e056"; }

.icon-shuffle:before {
  content: "\e057"; }

.icon-repeat:before {
  content: "\e058"; }

.icon-folder2:before {
  content: "\e059"; }

.icon-umbrella2:before {
  content: "\e060"; }

.icon-moon:before {
  content: "\e061"; }

.icon-thermometer:before {
  content: "\e062"; }

.icon-drop:before {
  content: "\e063"; }

.icon-sun:before {
  content: "\e064"; }

.icon-cloud3:before {
  content: "\e065"; }

.icon-cloud-upload:before {
  content: "\e066"; }

.icon-cloud-download:before {
  content: "\e067"; }

.icon-upload:before {
  content: "\e068"; }

.icon-download:before {
  content: "\e069"; }

.icon-location3:before {
  content: "\e070"; }

.icon-location-2:before {
  content: "\e071"; }

.icon-map:before {
  content: "\e072"; }

.icon-battery:before {
  content: "\e073"; }

.icon-head:before {
  content: "\e074"; }

.icon-briefcase2:before {
  content: "\e075"; }

.icon-speech-bubble:before {
  content: "\e076"; }

.icon-anchor:before {
  content: "\e077"; }

.icon-globe2:before {
  content: "\e078"; }

.icon-box:before {
  content: "\e079"; }

.icon-reload:before {
  content: "\e080"; }

.icon-share:before {
  content: "\e081"; }

.icon-marquee:before {
  content: "\e082"; }

.icon-marquee-plus:before {
  content: "\e083"; }

.icon-marquee-minus:before {
  content: "\e084"; }

.icon-tag3:before {
  content: "\e085"; }

.icon-power:before {
  content: "\e086"; }

.icon-command:before {
  content: "\e087"; }

.icon-alt:before {
  content: "\e088"; }

.icon-esc:before {
  content: "\e089"; }

.icon-bar-graph:before {
  content: "\e090"; }

.icon-bar-graph-2:before {
  content: "\e091"; }

.icon-pie-graph:before {
  content: "\e092"; }

.icon-star2:before {
  content: "\e093"; }

.icon-arrow-left:before {
  content: "\e094"; }

.icon-arrow-right:before {
  content: "\e095"; }

.icon-arrow-up:before {
  content: "\e096"; }

.icon-arrow-down:before {
  content: "\e097"; }

.icon-volume:before {
  content: "\e098"; }

.icon-mute:before {
  content: "\e099"; }

.icon-content-right:before {
  content: "\e100"; }

.icon-content-left:before {
  content: "\e101"; }

.icon-grid:before {
  content: "\e102"; }

.icon-grid-2:before {
  content: "\e103"; }

.icon-columns:before {
  content: "\e104"; }

.icon-loader:before {
  content: "\e105"; }

.icon-bag:before {
  content: "\e106"; }

.icon-ban:before {
  content: "\e107"; }

.icon-flag:before {
  content: "\e108"; }

.icon-trash2:before {
  content: "\e109"; }

.icon-expand:before {
  content: "\e110"; }

.icon-contract:before {
  content: "\e111"; }

.icon-maximize:before {
  content: "\e112"; }

.icon-minimize:before {
  content: "\e113"; }

.icon-plus2:before {
  content: "\e114"; }

.icon-minus2:before {
  content: "\e115"; }

.icon-check:before {
  content: "\e116"; }

.icon-cross:before {
  content: "\e117"; }

.icon-move:before {
  content: "\e118"; }

.icon-delete:before {
  content: "\e119"; }

.icon-menu:before {
  content: "\e120"; }

.icon-archive:before {
  content: "\e121"; }

.icon-inbox:before {
  content: "\e122"; }

.icon-outbox:before {
  content: "\e123"; }

.icon-file:before {
  content: "\e124"; }

.icon-file-add:before {
  content: "\e125"; }

.icon-file-subtract:before {
  content: "\e126"; }

.icon-help:before {
  content: "\e127"; }

.icon-open:before {
  content: "\e128"; }

.icon-ellipsis:before {
  content: "\e129"; }

/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
/* Document
       ========================================================================== */
/**
     * 1. Change the default font family in all browsers (opinionated).
     * 2. Correct the line height in all browsers.
     * 3. Prevent adjustments of font size after orientation changes in
     *    IE on Windows Phone and in iOS.
     */
html {
  font-family: sans-serif;
  /* 1 */
  line-height: 1.15;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 3 */ }

/* Sections
       ========================================================================== */
/**
     * Remove the margin in all browsers (opinionated).
     */
body {
  margin: 0; }

/**
     * Add the correct display in IE 9-.
     */
article,
aside,
footer,
header,
nav,
section {
  display: block; }

/**
     * Correct the font size and margin on `h1` elements within `section` and
     * `article` contexts in Chrome, Firefox, and Safari.
     */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
figcaption,
figure {
  display: block; }

/**
     * Add the correct margin in IE 8.
     */
figure {
  margin: 1em 40px; }

/**
     * 1. Add the correct box sizing in Firefox.
     * 2. Show the overflow in Edge and IE.
     */
hr {
  -webkit-box-sizing: content-box;
          box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
     * Add the correct display in IE.
     */
main {
  display: block; }

/**
     * 1. Correct the inheritance and scaling of font size in all browsers.
     * 2. Correct the odd `em` font sizing in all browsers.
     */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Links
       ========================================================================== */
/**
     * 1. Remove the gray background on active links in IE 10.
     * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
     */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */ }

/**
     * Remove the outline on focused links when they are also active or hovered
     * in all browsers (opinionated).
     */
a:active,
a:hover {
  outline-width: 0; }

/* Text-level semantics
       ========================================================================== */
/**
     * 1. Remove the bottom border in Firefox 39-.
     * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
     */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */ }

/**
     * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
     */
b,
strong {
  font-weight: inherit; }

/**
     * Add the correct font weight in Chrome, Edge, and Safari.
     */
b,
strong {
  font-weight: bolder; }

/**
     * 1. Correct the inheritance and scaling of font size in all browsers.
     * 2. Correct the odd `em` font sizing in all browsers.
     */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
     * Add the correct font style in Android 4.3-.
     */
dfn {
  font-style: italic; }

/**
     * Add the correct background and color in IE 9-.
     */
mark {
  background-color: #ff0;
  color: #000; }

/**
     * Add the correct font size in all browsers.
     */
small {
  font-size: 80%; }

/**
     * Prevent `sub` and `sup` elements from affecting the line height in
     * all browsers.
     */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
audio,
video {
  display: inline-block; }

/**
     * Add the correct display in iOS 4-7.
     */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
     * Remove the border on images inside links in IE 10-.
     */
img {
  border-style: none; }

/**
     * Hide the overflow in IE.
     */
svg:not(:root) {
  overflow: hidden; }

/* Forms
       ========================================================================== */
/**
     * 1. Change the font styles in all browsers (opinionated).
     * 2. Remove the margin in Firefox and Safari.
     */
button,
input,
optgroup,
select,
textarea {
  font-family: sans-serif;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
     * Show the overflow in IE.
     */
button {
  overflow: visible; }

/**
     * Remove the inheritance of text transform in Edge, Firefox, and IE.
     * 1. Remove the inheritance of text transform in Firefox.
     */
button,
select {
  /* 1 */
  text-transform: none; }

/**
     * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
     *    controls in Android 4.
     * 2. Correct the inability to style clickable types in iOS and Safari.
     */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */ }

button,
[type="button"],
[type="reset"],
[type="submit"] {
  /**
       * Remove the inner border and padding in Firefox.
       */
  /**
       * Restore the focus styles unset by the previous rule.
       */ }
  button::-moz-focus-inner,
  [type="button"]::-moz-focus-inner,
  [type="reset"]::-moz-focus-inner,
  [type="submit"]::-moz-focus-inner {
    border-style: none;
    padding: 0; }
  button:-moz-focusring,
  [type="button"]:-moz-focusring,
  [type="reset"]:-moz-focusring,
  [type="submit"]:-moz-focusring {
    outline: 1px dotted ButtonText; }

/**
     * Show the overflow in Edge.
     */
input {
  overflow: visible; }

/**
     * 1. Add the correct box sizing in IE 10-.
     * 2. Remove the padding in IE 10-.
     */
[type="checkbox"],
[type="radio"] {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
     * Correct the cursor style of increment and decrement buttons in Chrome.
     */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
     * 1. Correct the odd appearance in Chrome and Safari.
     * 2. Correct the outline style in Safari.
     */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
  /**
       * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
       */ }
  [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration {
    -webkit-appearance: none; }

/**
     * 1. Correct the inability to style clickable types in iOS and Safari.
     * 2. Change font properties to `inherit` in Safari.
     */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/**
     * Change the border, margin, and padding in all browsers (opinionated).
     */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
     * 1. Correct the text wrapping in Edge and IE.
     * 2. Correct the color inheritance from `fieldset` elements in IE.
     * 3. Remove the padding so developers are not caught out when they zero out
     *    `fieldset` elements in all browsers.
     */
legend {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* 1 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  color: inherit;
  /* 2 */
  white-space: normal;
  /* 1 */ }

/**
     * 1. Add the correct display in IE 9-.
     * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
     */
progress {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
     * Remove the default vertical scrollbar in IE.
     */
textarea {
  overflow: auto; }

/* Interactive
       ========================================================================== */
/*
     * Add the correct display in Edge, IE, and Firefox.
     */
details {
  display: block; }

/*
     * Add the correct display in all browsers.
     */
summary {
  display: list-item; }

/*
     * Add the correct display in IE 9-.
     */
menu {
  display: block; }

/* Scripting
       ========================================================================== */
/**
     * Add the correct display in IE 9-.
     */
canvas {
  display: inline-block; }

/**
     * Add the correct display in IE.
     */
template {
  display: none; }

/* Hidden
       ========================================================================== */
/**
     * Add the correct display in IE 10-.
     */
[hidden] {
  display: none; }

.foundation-mq {
  font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }

html {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  font-size: 1.125rem; }

*,
*::before,
*::after {
  -webkit-box-sizing: inherit;
          box-sizing: inherit; }

body {
  margin: 0;
  padding: 0;
  background: #f8f8f8;
  font-family: "PT Sans", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  line-height: 1.7;
  color: #646464;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

img {
  display: inline-block;
  vertical-align: middle;
  max-width: 100%;
  height: auto;
  -ms-interpolation-mode: bicubic; }

textarea {
  height: auto;
  min-height: 50px;
  border-radius: 1px; }

select {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  width: 100%;
  border-radius: 1px; }

.map_canvas img,
.map_canvas embed,
.map_canvas object,
.mqa-display img,
.mqa-display embed,
.mqa-display object {
  max-width: none !important; }

button {
  padding: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: 0;
  border-radius: 1px;
  background: transparent;
  line-height: 1; }
  [data-whatinput='mouse'] button {
    outline: 0; }

pre {
  overflow: auto; }

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; }

.is-visible {
  display: block !important; }

.is-hidden {
  display: none !important; }

.grid-container {
  max-width: 66.66667rem;
  margin: 0 auto; }

.grid-container-padded {
  padding-left: 0.55556rem;
  padding-right: 0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-container-padded {
      padding-left: 0.83333rem;
      padding-right: 0.83333rem; } }
  @media screen and (min-width: 66.66667em) {
    .grid-container-padded {
      padding-left: 0;
      padding-right: 0; } }

.grid-x {
  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; }

.cell {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  min-height: 0px;
  min-width: 0px;
  width: 100%; }
  .cell.auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px; }
  .cell.shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto; }

.grid-x > .auto {
  width: auto; }

.grid-x > .shrink {
  width: auto; }

.grid-x > small-shrink, .grid-x > small-full, .grid-x > small-1, .grid-x > small-2, .grid-x > small-3, .grid-x > small-4, .grid-x > small-5, .grid-x > small-6, .grid-x > small-7, .grid-x > small-8, .grid-x > small-9, .grid-x > small-10, .grid-x > small-11, .grid-x > small-12 {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

@media print, screen and (min-width: 40em) {
  .grid-x > medium-shrink, .grid-x > medium-full, .grid-x > medium-1, .grid-x > medium-2, .grid-x > medium-3, .grid-x > medium-4, .grid-x > medium-5, .grid-x > medium-6, .grid-x > medium-7, .grid-x > medium-8, .grid-x > medium-9, .grid-x > medium-10, .grid-x > medium-11, .grid-x > medium-12 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; } }

@media print, screen and (min-width: 64em) {
  .grid-x > large-shrink, .grid-x > large-full, .grid-x > large-1, .grid-x > large-2, .grid-x > large-3, .grid-x > large-4, .grid-x > large-5, .grid-x > large-6, .grid-x > large-7, .grid-x > large-8, .grid-x > large-9, .grid-x > large-10, .grid-x > large-11, .grid-x > large-12 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; } }

@media screen and (min-width: 75em) {
  .grid-x > xlarge-shrink, .grid-x > xlarge-full, .grid-x > xlarge-1, .grid-x > xlarge-2, .grid-x > xlarge-3, .grid-x > xlarge-4, .grid-x > xlarge-5, .grid-x > xlarge-6, .grid-x > xlarge-7, .grid-x > xlarge-8, .grid-x > xlarge-9, .grid-x > xlarge-10, .grid-x > xlarge-11, .grid-x > xlarge-12 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; } }

@media screen and (min-width: 90em) {
  .grid-x > xxlarge-shrink, .grid-x > xxlarge-full, .grid-x > xxlarge-1, .grid-x > xxlarge-2, .grid-x > xxlarge-3, .grid-x > xxlarge-4, .grid-x > xxlarge-5, .grid-x > xxlarge-6, .grid-x > xxlarge-7, .grid-x > xxlarge-8, .grid-x > xxlarge-9, .grid-x > xxlarge-10, .grid-x > xxlarge-11, .grid-x > xxlarge-12 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; } }

.grid-x > .small-1 {
  width: 8.33333%; }

.grid-x > .small-2 {
  width: 16.66667%; }

.grid-x > .small-3 {
  width: 25%; }

.grid-x > .small-4 {
  width: 33.33333%; }

.grid-x > .small-5 {
  width: 41.66667%; }

.grid-x > .small-6 {
  width: 50%; }

.grid-x > .small-7 {
  width: 58.33333%; }

.grid-x > .small-8 {
  width: 66.66667%; }

.grid-x > .small-9 {
  width: 75%; }

.grid-x > .small-10 {
  width: 83.33333%; }

.grid-x > .small-11 {
  width: 91.66667%; }

.grid-x > .small-12 {
  width: 100%; }

@media print, screen and (min-width: 40em) {
  .grid-x > .medium-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    width: auto; }
  .grid-x > .medium-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: auto; }
  .grid-x > .medium-1 {
    width: 8.33333%; }
  .grid-x > .medium-2 {
    width: 16.66667%; }
  .grid-x > .medium-3 {
    width: 25%; }
  .grid-x > .medium-4 {
    width: 33.33333%; }
  .grid-x > .medium-5 {
    width: 41.66667%; }
  .grid-x > .medium-6 {
    width: 50%; }
  .grid-x > .medium-7 {
    width: 58.33333%; }
  .grid-x > .medium-8 {
    width: 66.66667%; }
  .grid-x > .medium-9 {
    width: 75%; }
  .grid-x > .medium-10 {
    width: 83.33333%; }
  .grid-x > .medium-11 {
    width: 91.66667%; }
  .grid-x > .medium-12 {
    width: 100%; } }

@media print, screen and (min-width: 64em) {
  .grid-x > .large-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    width: auto; }
  .grid-x > .large-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: auto; }
  .grid-x > .large-1 {
    width: 8.33333%; }
  .grid-x > .large-2 {
    width: 16.66667%; }
  .grid-x > .large-3 {
    width: 25%; }
  .grid-x > .large-4 {
    width: 33.33333%; }
  .grid-x > .large-5 {
    width: 41.66667%; }
  .grid-x > .large-6 {
    width: 50%; }
  .grid-x > .large-7 {
    width: 58.33333%; }
  .grid-x > .large-8 {
    width: 66.66667%; }
  .grid-x > .large-9 {
    width: 75%; }
  .grid-x > .large-10 {
    width: 83.33333%; }
  .grid-x > .large-11 {
    width: 91.66667%; }
  .grid-x > .large-12 {
    width: 100%; } }

@media screen and (min-width: 75em) {
  .grid-x > .xlarge-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    width: auto; }
  .grid-x > .xlarge-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: auto; }
  .grid-x > .xlarge-1 {
    width: 8.33333%; }
  .grid-x > .xlarge-2 {
    width: 16.66667%; }
  .grid-x > .xlarge-3 {
    width: 25%; }
  .grid-x > .xlarge-4 {
    width: 33.33333%; }
  .grid-x > .xlarge-5 {
    width: 41.66667%; }
  .grid-x > .xlarge-6 {
    width: 50%; }
  .grid-x > .xlarge-7 {
    width: 58.33333%; }
  .grid-x > .xlarge-8 {
    width: 66.66667%; }
  .grid-x > .xlarge-9 {
    width: 75%; }
  .grid-x > .xlarge-10 {
    width: 83.33333%; }
  .grid-x > .xlarge-11 {
    width: 91.66667%; }
  .grid-x > .xlarge-12 {
    width: 100%; } }

@media screen and (min-width: 90em) {
  .grid-x > .xxlarge-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px;
    width: auto; }
  .grid-x > .xxlarge-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: auto; }
  .grid-x > .xxlarge-1 {
    width: 8.33333%; }
  .grid-x > .xxlarge-2 {
    width: 16.66667%; }
  .grid-x > .xxlarge-3 {
    width: 25%; }
  .grid-x > .xxlarge-4 {
    width: 33.33333%; }
  .grid-x > .xxlarge-5 {
    width: 41.66667%; }
  .grid-x > .xxlarge-6 {
    width: 50%; }
  .grid-x > .xxlarge-7 {
    width: 58.33333%; }
  .grid-x > .xxlarge-8 {
    width: 66.66667%; }
  .grid-x > .xxlarge-9 {
    width: 75%; }
  .grid-x > .xxlarge-10 {
    width: 83.33333%; }
  .grid-x > .xxlarge-11 {
    width: 91.66667%; }
  .grid-x > .xxlarge-12 {
    width: 100%; } }

.grid-margin-x:not(.grid-x) > .cell {
  width: auto; }

.grid-margin-y:not(.grid-y) > .cell {
  height: auto; }

.grid-margin-x {
  margin-left: -0.55556rem;
  margin-right: -0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-margin-x {
      margin-left: -0.83333rem;
      margin-right: -0.83333rem; } }
  .grid-margin-x > .cell {
    width: -webkit-calc(100% - 1.11111rem);
    width: calc(100% - 1.11111rem);
    margin-left: 0.55556rem;
    margin-right: 0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-margin-x > .cell {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem);
      margin-left: 0.83333rem;
      margin-right: 0.83333rem; } }
  .grid-margin-x > .auto {
    width: auto; }
  .grid-margin-x > .shrink {
    width: auto; }
  .grid-margin-x > .small-1 {
    width: -webkit-calc(8.33333% - 1.11111rem);
    width: calc(8.33333% - 1.11111rem); }
  .grid-margin-x > .small-2 {
    width: -webkit-calc(16.66667% - 1.11111rem);
    width: calc(16.66667% - 1.11111rem); }
  .grid-margin-x > .small-3 {
    width: -webkit-calc(25% - 1.11111rem);
    width: calc(25% - 1.11111rem); }
  .grid-margin-x > .small-4 {
    width: -webkit-calc(33.33333% - 1.11111rem);
    width: calc(33.33333% - 1.11111rem); }
  .grid-margin-x > .small-5 {
    width: -webkit-calc(41.66667% - 1.11111rem);
    width: calc(41.66667% - 1.11111rem); }
  .grid-margin-x > .small-6 {
    width: -webkit-calc(50% - 1.11111rem);
    width: calc(50% - 1.11111rem); }
  .grid-margin-x > .small-7 {
    width: -webkit-calc(58.33333% - 1.11111rem);
    width: calc(58.33333% - 1.11111rem); }
  .grid-margin-x > .small-8 {
    width: -webkit-calc(66.66667% - 1.11111rem);
    width: calc(66.66667% - 1.11111rem); }
  .grid-margin-x > .small-9 {
    width: -webkit-calc(75% - 1.11111rem);
    width: calc(75% - 1.11111rem); }
  .grid-margin-x > .small-10 {
    width: -webkit-calc(83.33333% - 1.11111rem);
    width: calc(83.33333% - 1.11111rem); }
  .grid-margin-x > .small-11 {
    width: -webkit-calc(91.66667% - 1.11111rem);
    width: calc(91.66667% - 1.11111rem); }
  .grid-margin-x > .small-12 {
    width: -webkit-calc(100% - 1.11111rem);
    width: calc(100% - 1.11111rem); }
  @media print, screen and (min-width: 40em) {
    .grid-margin-x > .auto {
      width: auto; }
    .grid-margin-x > .shrink {
      width: auto; }
    .grid-margin-x > .small-1 {
      width: -webkit-calc(8.33333% - 1.66667rem);
      width: calc(8.33333% - 1.66667rem); }
    .grid-margin-x > .small-2 {
      width: -webkit-calc(16.66667% - 1.66667rem);
      width: calc(16.66667% - 1.66667rem); }
    .grid-margin-x > .small-3 {
      width: -webkit-calc(25% - 1.66667rem);
      width: calc(25% - 1.66667rem); }
    .grid-margin-x > .small-4 {
      width: -webkit-calc(33.33333% - 1.66667rem);
      width: calc(33.33333% - 1.66667rem); }
    .grid-margin-x > .small-5 {
      width: -webkit-calc(41.66667% - 1.66667rem);
      width: calc(41.66667% - 1.66667rem); }
    .grid-margin-x > .small-6 {
      width: -webkit-calc(50% - 1.66667rem);
      width: calc(50% - 1.66667rem); }
    .grid-margin-x > .small-7 {
      width: -webkit-calc(58.33333% - 1.66667rem);
      width: calc(58.33333% - 1.66667rem); }
    .grid-margin-x > .small-8 {
      width: -webkit-calc(66.66667% - 1.66667rem);
      width: calc(66.66667% - 1.66667rem); }
    .grid-margin-x > .small-9 {
      width: -webkit-calc(75% - 1.66667rem);
      width: calc(75% - 1.66667rem); }
    .grid-margin-x > .small-10 {
      width: -webkit-calc(83.33333% - 1.66667rem);
      width: calc(83.33333% - 1.66667rem); }
    .grid-margin-x > .small-11 {
      width: -webkit-calc(91.66667% - 1.66667rem);
      width: calc(91.66667% - 1.66667rem); }
    .grid-margin-x > .small-12 {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem); }
    .grid-margin-x > .medium-auto {
      width: auto; }
    .grid-margin-x > .medium-shrink {
      width: auto; }
    .grid-margin-x > .medium-1 {
      width: -webkit-calc(8.33333% - 1.66667rem);
      width: calc(8.33333% - 1.66667rem); }
    .grid-margin-x > .medium-2 {
      width: -webkit-calc(16.66667% - 1.66667rem);
      width: calc(16.66667% - 1.66667rem); }
    .grid-margin-x > .medium-3 {
      width: -webkit-calc(25% - 1.66667rem);
      width: calc(25% - 1.66667rem); }
    .grid-margin-x > .medium-4 {
      width: -webkit-calc(33.33333% - 1.66667rem);
      width: calc(33.33333% - 1.66667rem); }
    .grid-margin-x > .medium-5 {
      width: -webkit-calc(41.66667% - 1.66667rem);
      width: calc(41.66667% - 1.66667rem); }
    .grid-margin-x > .medium-6 {
      width: -webkit-calc(50% - 1.66667rem);
      width: calc(50% - 1.66667rem); }
    .grid-margin-x > .medium-7 {
      width: -webkit-calc(58.33333% - 1.66667rem);
      width: calc(58.33333% - 1.66667rem); }
    .grid-margin-x > .medium-8 {
      width: -webkit-calc(66.66667% - 1.66667rem);
      width: calc(66.66667% - 1.66667rem); }
    .grid-margin-x > .medium-9 {
      width: -webkit-calc(75% - 1.66667rem);
      width: calc(75% - 1.66667rem); }
    .grid-margin-x > .medium-10 {
      width: -webkit-calc(83.33333% - 1.66667rem);
      width: calc(83.33333% - 1.66667rem); }
    .grid-margin-x > .medium-11 {
      width: -webkit-calc(91.66667% - 1.66667rem);
      width: calc(91.66667% - 1.66667rem); }
    .grid-margin-x > .medium-12 {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem); } }
  @media print, screen and (min-width: 64em) {
    .grid-margin-x > .large-auto {
      width: auto; }
    .grid-margin-x > .large-shrink {
      width: auto; }
    .grid-margin-x > .large-1 {
      width: -webkit-calc(8.33333% - 1.66667rem);
      width: calc(8.33333% - 1.66667rem); }
    .grid-margin-x > .large-2 {
      width: -webkit-calc(16.66667% - 1.66667rem);
      width: calc(16.66667% - 1.66667rem); }
    .grid-margin-x > .large-3 {
      width: -webkit-calc(25% - 1.66667rem);
      width: calc(25% - 1.66667rem); }
    .grid-margin-x > .large-4 {
      width: -webkit-calc(33.33333% - 1.66667rem);
      width: calc(33.33333% - 1.66667rem); }
    .grid-margin-x > .large-5 {
      width: -webkit-calc(41.66667% - 1.66667rem);
      width: calc(41.66667% - 1.66667rem); }
    .grid-margin-x > .large-6 {
      width: -webkit-calc(50% - 1.66667rem);
      width: calc(50% - 1.66667rem); }
    .grid-margin-x > .large-7 {
      width: -webkit-calc(58.33333% - 1.66667rem);
      width: calc(58.33333% - 1.66667rem); }
    .grid-margin-x > .large-8 {
      width: -webkit-calc(66.66667% - 1.66667rem);
      width: calc(66.66667% - 1.66667rem); }
    .grid-margin-x > .large-9 {
      width: -webkit-calc(75% - 1.66667rem);
      width: calc(75% - 1.66667rem); }
    .grid-margin-x > .large-10 {
      width: -webkit-calc(83.33333% - 1.66667rem);
      width: calc(83.33333% - 1.66667rem); }
    .grid-margin-x > .large-11 {
      width: -webkit-calc(91.66667% - 1.66667rem);
      width: calc(91.66667% - 1.66667rem); }
    .grid-margin-x > .large-12 {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem); } }
  @media screen and (min-width: 75em) {
    .grid-margin-x > .xlarge-auto {
      width: auto; }
    .grid-margin-x > .xlarge-shrink {
      width: auto; }
    .grid-margin-x > .xlarge-1 {
      width: -webkit-calc(8.33333% - 1.66667rem);
      width: calc(8.33333% - 1.66667rem); }
    .grid-margin-x > .xlarge-2 {
      width: -webkit-calc(16.66667% - 1.66667rem);
      width: calc(16.66667% - 1.66667rem); }
    .grid-margin-x > .xlarge-3 {
      width: -webkit-calc(25% - 1.66667rem);
      width: calc(25% - 1.66667rem); }
    .grid-margin-x > .xlarge-4 {
      width: -webkit-calc(33.33333% - 1.66667rem);
      width: calc(33.33333% - 1.66667rem); }
    .grid-margin-x > .xlarge-5 {
      width: -webkit-calc(41.66667% - 1.66667rem);
      width: calc(41.66667% - 1.66667rem); }
    .grid-margin-x > .xlarge-6 {
      width: -webkit-calc(50% - 1.66667rem);
      width: calc(50% - 1.66667rem); }
    .grid-margin-x > .xlarge-7 {
      width: -webkit-calc(58.33333% - 1.66667rem);
      width: calc(58.33333% - 1.66667rem); }
    .grid-margin-x > .xlarge-8 {
      width: -webkit-calc(66.66667% - 1.66667rem);
      width: calc(66.66667% - 1.66667rem); }
    .grid-margin-x > .xlarge-9 {
      width: -webkit-calc(75% - 1.66667rem);
      width: calc(75% - 1.66667rem); }
    .grid-margin-x > .xlarge-10 {
      width: -webkit-calc(83.33333% - 1.66667rem);
      width: calc(83.33333% - 1.66667rem); }
    .grid-margin-x > .xlarge-11 {
      width: -webkit-calc(91.66667% - 1.66667rem);
      width: calc(91.66667% - 1.66667rem); }
    .grid-margin-x > .xlarge-12 {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem); } }
  @media screen and (min-width: 90em) {
    .grid-margin-x > .xxlarge-auto {
      width: auto; }
    .grid-margin-x > .xxlarge-shrink {
      width: auto; }
    .grid-margin-x > .xxlarge-1 {
      width: -webkit-calc(8.33333% - 1.66667rem);
      width: calc(8.33333% - 1.66667rem); }
    .grid-margin-x > .xxlarge-2 {
      width: -webkit-calc(16.66667% - 1.66667rem);
      width: calc(16.66667% - 1.66667rem); }
    .grid-margin-x > .xxlarge-3 {
      width: -webkit-calc(25% - 1.66667rem);
      width: calc(25% - 1.66667rem); }
    .grid-margin-x > .xxlarge-4 {
      width: -webkit-calc(33.33333% - 1.66667rem);
      width: calc(33.33333% - 1.66667rem); }
    .grid-margin-x > .xxlarge-5 {
      width: -webkit-calc(41.66667% - 1.66667rem);
      width: calc(41.66667% - 1.66667rem); }
    .grid-margin-x > .xxlarge-6 {
      width: -webkit-calc(50% - 1.66667rem);
      width: calc(50% - 1.66667rem); }
    .grid-margin-x > .xxlarge-7 {
      width: -webkit-calc(58.33333% - 1.66667rem);
      width: calc(58.33333% - 1.66667rem); }
    .grid-margin-x > .xxlarge-8 {
      width: -webkit-calc(66.66667% - 1.66667rem);
      width: calc(66.66667% - 1.66667rem); }
    .grid-margin-x > .xxlarge-9 {
      width: -webkit-calc(75% - 1.66667rem);
      width: calc(75% - 1.66667rem); }
    .grid-margin-x > .xxlarge-10 {
      width: -webkit-calc(83.33333% - 1.66667rem);
      width: calc(83.33333% - 1.66667rem); }
    .grid-margin-x > .xxlarge-11 {
      width: -webkit-calc(91.66667% - 1.66667rem);
      width: calc(91.66667% - 1.66667rem); }
    .grid-margin-x > .xxlarge-12 {
      width: -webkit-calc(100% - 1.66667rem);
      width: calc(100% - 1.66667rem); } }

.grid-padding-x .grid-padding-x {
  margin-right: -0.55556rem;
  margin-left: -0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-padding-x .grid-padding-x {
      margin-right: -0.83333rem;
      margin-left: -0.83333rem; } }

.grid-padding-x > .cell {
  padding-right: 0.55556rem;
  padding-left: 0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-padding-x > .cell {
      padding-right: 0.83333rem;
      padding-left: 0.83333rem; } }

.small-up-1 > .cell {
  width: 100%; }

.small-up-2 > .cell {
  width: 50%; }

.small-up-3 > .cell {
  width: 33.33333%; }

.small-up-4 > .cell {
  width: 25%; }

.small-up-5 > .cell {
  width: 20%; }

.small-up-6 > .cell {
  width: 16.66667%; }

.small-up-7 > .cell {
  width: 14.28571%; }

.small-up-8 > .cell {
  width: 12.5%; }

@media print, screen and (min-width: 40em) {
  .medium-up-1 > .cell {
    width: 100%; }
  .medium-up-2 > .cell {
    width: 50%; }
  .medium-up-3 > .cell {
    width: 33.33333%; }
  .medium-up-4 > .cell {
    width: 25%; }
  .medium-up-5 > .cell {
    width: 20%; }
  .medium-up-6 > .cell {
    width: 16.66667%; }
  .medium-up-7 > .cell {
    width: 14.28571%; }
  .medium-up-8 > .cell {
    width: 12.5%; } }

@media print, screen and (min-width: 64em) {
  .large-up-1 > .cell {
    width: 100%; }
  .large-up-2 > .cell {
    width: 50%; }
  .large-up-3 > .cell {
    width: 33.33333%; }
  .large-up-4 > .cell {
    width: 25%; }
  .large-up-5 > .cell {
    width: 20%; }
  .large-up-6 > .cell {
    width: 16.66667%; }
  .large-up-7 > .cell {
    width: 14.28571%; }
  .large-up-8 > .cell {
    width: 12.5%; } }

@media screen and (min-width: 75em) {
  .xlarge-up-1 > .cell {
    width: 100%; }
  .xlarge-up-2 > .cell {
    width: 50%; }
  .xlarge-up-3 > .cell {
    width: 33.33333%; }
  .xlarge-up-4 > .cell {
    width: 25%; }
  .xlarge-up-5 > .cell {
    width: 20%; }
  .xlarge-up-6 > .cell {
    width: 16.66667%; }
  .xlarge-up-7 > .cell {
    width: 14.28571%; }
  .xlarge-up-8 > .cell {
    width: 12.5%; } }

@media screen and (min-width: 90em) {
  .xxlarge-up-1 > .cell {
    width: 100%; }
  .xxlarge-up-2 > .cell {
    width: 50%; }
  .xxlarge-up-3 > .cell {
    width: 33.33333%; }
  .xxlarge-up-4 > .cell {
    width: 25%; }
  .xxlarge-up-5 > .cell {
    width: 20%; }
  .xxlarge-up-6 > .cell {
    width: 16.66667%; }
  .xxlarge-up-7 > .cell {
    width: 14.28571%; }
  .xxlarge-up-8 > .cell {
    width: 12.5%; } }

.grid-margin-x.small-up-1 > .cell {
  width: -webkit-calc(100% - 1.11111rem);
  width: calc(100% - 1.11111rem); }

.grid-margin-x.small-up-2 > .cell {
  width: -webkit-calc(50% - 1.11111rem);
  width: calc(50% - 1.11111rem); }

.grid-margin-x.small-up-3 > .cell {
  width: -webkit-calc(33.33333% - 1.11111rem);
  width: calc(33.33333% - 1.11111rem); }

.grid-margin-x.small-up-4 > .cell {
  width: -webkit-calc(25% - 1.11111rem);
  width: calc(25% - 1.11111rem); }

.grid-margin-x.small-up-5 > .cell {
  width: -webkit-calc(20% - 1.11111rem);
  width: calc(20% - 1.11111rem); }

.grid-margin-x.small-up-6 > .cell {
  width: -webkit-calc(16.66667% - 1.11111rem);
  width: calc(16.66667% - 1.11111rem); }

.grid-margin-x.small-up-7 > .cell {
  width: -webkit-calc(14.28571% - 1.11111rem);
  width: calc(14.28571% - 1.11111rem); }

.grid-margin-x.small-up-8 > .cell {
  width: -webkit-calc(12.5% - 1.11111rem);
  width: calc(12.5% - 1.11111rem); }

@media print, screen and (min-width: 40em) {
  .grid-margin-x.small-up-1 > .cell {
    width: -webkit-calc(100% - 1.66667rem);
    width: calc(100% - 1.66667rem); }
  .grid-margin-x.small-up-2 > .cell {
    width: -webkit-calc(50% - 1.66667rem);
    width: calc(50% - 1.66667rem); }
  .grid-margin-x.small-up-3 > .cell {
    width: -webkit-calc(33.33333% - 1.66667rem);
    width: calc(33.33333% - 1.66667rem); }
  .grid-margin-x.small-up-4 > .cell {
    width: -webkit-calc(25% - 1.66667rem);
    width: calc(25% - 1.66667rem); }
  .grid-margin-x.small-up-5 > .cell {
    width: -webkit-calc(20% - 1.66667rem);
    width: calc(20% - 1.66667rem); }
  .grid-margin-x.small-up-6 > .cell {
    width: -webkit-calc(16.66667% - 1.66667rem);
    width: calc(16.66667% - 1.66667rem); }
  .grid-margin-x.small-up-7 > .cell {
    width: -webkit-calc(14.28571% - 1.66667rem);
    width: calc(14.28571% - 1.66667rem); }
  .grid-margin-x.small-up-8 > .cell {
    width: -webkit-calc(12.5% - 1.66667rem);
    width: calc(12.5% - 1.66667rem); }
  .grid-margin-x.medium-up-1 > .cell {
    width: -webkit-calc(100% - 1.66667rem);
    width: calc(100% - 1.66667rem); }
  .grid-margin-x.medium-up-2 > .cell {
    width: -webkit-calc(50% - 1.66667rem);
    width: calc(50% - 1.66667rem); }
  .grid-margin-x.medium-up-3 > .cell {
    width: -webkit-calc(33.33333% - 1.66667rem);
    width: calc(33.33333% - 1.66667rem); }
  .grid-margin-x.medium-up-4 > .cell {
    width: -webkit-calc(25% - 1.66667rem);
    width: calc(25% - 1.66667rem); }
  .grid-margin-x.medium-up-5 > .cell {
    width: -webkit-calc(20% - 1.66667rem);
    width: calc(20% - 1.66667rem); }
  .grid-margin-x.medium-up-6 > .cell {
    width: -webkit-calc(16.66667% - 1.66667rem);
    width: calc(16.66667% - 1.66667rem); }
  .grid-margin-x.medium-up-7 > .cell {
    width: -webkit-calc(14.28571% - 1.66667rem);
    width: calc(14.28571% - 1.66667rem); }
  .grid-margin-x.medium-up-8 > .cell {
    width: -webkit-calc(12.5% - 1.66667rem);
    width: calc(12.5% - 1.66667rem); } }

@media print, screen and (min-width: 64em) {
  .grid-margin-x.large-up-1 > .cell {
    width: -webkit-calc(100% - 1.66667rem);
    width: calc(100% - 1.66667rem); }
  .grid-margin-x.large-up-2 > .cell {
    width: -webkit-calc(50% - 1.66667rem);
    width: calc(50% - 1.66667rem); }
  .grid-margin-x.large-up-3 > .cell {
    width: -webkit-calc(33.33333% - 1.66667rem);
    width: calc(33.33333% - 1.66667rem); }
  .grid-margin-x.large-up-4 > .cell {
    width: -webkit-calc(25% - 1.66667rem);
    width: calc(25% - 1.66667rem); }
  .grid-margin-x.large-up-5 > .cell {
    width: -webkit-calc(20% - 1.66667rem);
    width: calc(20% - 1.66667rem); }
  .grid-margin-x.large-up-6 > .cell {
    width: -webkit-calc(16.66667% - 1.66667rem);
    width: calc(16.66667% - 1.66667rem); }
  .grid-margin-x.large-up-7 > .cell {
    width: -webkit-calc(14.28571% - 1.66667rem);
    width: calc(14.28571% - 1.66667rem); }
  .grid-margin-x.large-up-8 > .cell {
    width: -webkit-calc(12.5% - 1.66667rem);
    width: calc(12.5% - 1.66667rem); } }

@media screen and (min-width: 75em) {
  .grid-margin-x.xlarge-up-1 > .cell {
    width: -webkit-calc(100% - 1.66667rem);
    width: calc(100% - 1.66667rem); }
  .grid-margin-x.xlarge-up-2 > .cell {
    width: -webkit-calc(50% - 1.66667rem);
    width: calc(50% - 1.66667rem); }
  .grid-margin-x.xlarge-up-3 > .cell {
    width: -webkit-calc(33.33333% - 1.66667rem);
    width: calc(33.33333% - 1.66667rem); }
  .grid-margin-x.xlarge-up-4 > .cell {
    width: -webkit-calc(25% - 1.66667rem);
    width: calc(25% - 1.66667rem); }
  .grid-margin-x.xlarge-up-5 > .cell {
    width: -webkit-calc(20% - 1.66667rem);
    width: calc(20% - 1.66667rem); }
  .grid-margin-x.xlarge-up-6 > .cell {
    width: -webkit-calc(16.66667% - 1.66667rem);
    width: calc(16.66667% - 1.66667rem); }
  .grid-margin-x.xlarge-up-7 > .cell {
    width: -webkit-calc(14.28571% - 1.66667rem);
    width: calc(14.28571% - 1.66667rem); }
  .grid-margin-x.xlarge-up-8 > .cell {
    width: -webkit-calc(12.5% - 1.66667rem);
    width: calc(12.5% - 1.66667rem); } }

@media screen and (min-width: 90em) {
  .grid-margin-x.xxlarge-up-1 > .cell {
    width: -webkit-calc(100% - 1.66667rem);
    width: calc(100% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-2 > .cell {
    width: -webkit-calc(50% - 1.66667rem);
    width: calc(50% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-3 > .cell {
    width: -webkit-calc(33.33333% - 1.66667rem);
    width: calc(33.33333% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-4 > .cell {
    width: -webkit-calc(25% - 1.66667rem);
    width: calc(25% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-5 > .cell {
    width: -webkit-calc(20% - 1.66667rem);
    width: calc(20% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-6 > .cell {
    width: -webkit-calc(16.66667% - 1.66667rem);
    width: calc(16.66667% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-7 > .cell {
    width: -webkit-calc(14.28571% - 1.66667rem);
    width: calc(14.28571% - 1.66667rem); }
  .grid-margin-x.xxlarge-up-8 > .cell {
    width: -webkit-calc(12.5% - 1.66667rem);
    width: calc(12.5% - 1.66667rem); } }

.small-margin-collapse {
  margin-right: 0;
  margin-left: 0; }
  .small-margin-collapse > .cell {
    margin-right: 0;
    margin-left: 0; }
  .small-margin-collapse > .small-1 {
    width: 8.33333%; }
  .small-margin-collapse > .small-2 {
    width: 16.66667%; }
  .small-margin-collapse > .small-3 {
    width: 25%; }
  .small-margin-collapse > .small-4 {
    width: 33.33333%; }
  .small-margin-collapse > .small-5 {
    width: 41.66667%; }
  .small-margin-collapse > .small-6 {
    width: 50%; }
  .small-margin-collapse > .small-7 {
    width: 58.33333%; }
  .small-margin-collapse > .small-8 {
    width: 66.66667%; }
  .small-margin-collapse > .small-9 {
    width: 75%; }
  .small-margin-collapse > .small-10 {
    width: 83.33333%; }
  .small-margin-collapse > .small-11 {
    width: 91.66667%; }
  .small-margin-collapse > .small-12 {
    width: 100%; }
  .small-margin-collapse > .medium-1 {
    width: 8.33333%; }
  .small-margin-collapse > .medium-2 {
    width: 16.66667%; }
  .small-margin-collapse > .medium-3 {
    width: 25%; }
  .small-margin-collapse > .medium-4 {
    width: 33.33333%; }
  .small-margin-collapse > .medium-5 {
    width: 41.66667%; }
  .small-margin-collapse > .medium-6 {
    width: 50%; }
  .small-margin-collapse > .medium-7 {
    width: 58.33333%; }
  .small-margin-collapse > .medium-8 {
    width: 66.66667%; }
  .small-margin-collapse > .medium-9 {
    width: 75%; }
  .small-margin-collapse > .medium-10 {
    width: 83.33333%; }
  .small-margin-collapse > .medium-11 {
    width: 91.66667%; }
  .small-margin-collapse > .medium-12 {
    width: 100%; }
  .small-margin-collapse > .large-1 {
    width: 8.33333%; }
  .small-margin-collapse > .large-2 {
    width: 16.66667%; }
  .small-margin-collapse > .large-3 {
    width: 25%; }
  .small-margin-collapse > .large-4 {
    width: 33.33333%; }
  .small-margin-collapse > .large-5 {
    width: 41.66667%; }
  .small-margin-collapse > .large-6 {
    width: 50%; }
  .small-margin-collapse > .large-7 {
    width: 58.33333%; }
  .small-margin-collapse > .large-8 {
    width: 66.66667%; }
  .small-margin-collapse > .large-9 {
    width: 75%; }
  .small-margin-collapse > .large-10 {
    width: 83.33333%; }
  .small-margin-collapse > .large-11 {
    width: 91.66667%; }
  .small-margin-collapse > .large-12 {
    width: 100%; }
  .small-margin-collapse > .xlarge-1 {
    width: 8.33333%; }
  .small-margin-collapse > .xlarge-2 {
    width: 16.66667%; }
  .small-margin-collapse > .xlarge-3 {
    width: 25%; }
  .small-margin-collapse > .xlarge-4 {
    width: 33.33333%; }
  .small-margin-collapse > .xlarge-5 {
    width: 41.66667%; }
  .small-margin-collapse > .xlarge-6 {
    width: 50%; }
  .small-margin-collapse > .xlarge-7 {
    width: 58.33333%; }
  .small-margin-collapse > .xlarge-8 {
    width: 66.66667%; }
  .small-margin-collapse > .xlarge-9 {
    width: 75%; }
  .small-margin-collapse > .xlarge-10 {
    width: 83.33333%; }
  .small-margin-collapse > .xlarge-11 {
    width: 91.66667%; }
  .small-margin-collapse > .xlarge-12 {
    width: 100%; }
  .small-margin-collapse > .xxlarge-1 {
    width: 8.33333%; }
  .small-margin-collapse > .xxlarge-2 {
    width: 16.66667%; }
  .small-margin-collapse > .xxlarge-3 {
    width: 25%; }
  .small-margin-collapse > .xxlarge-4 {
    width: 33.33333%; }
  .small-margin-collapse > .xxlarge-5 {
    width: 41.66667%; }
  .small-margin-collapse > .xxlarge-6 {
    width: 50%; }
  .small-margin-collapse > .xxlarge-7 {
    width: 58.33333%; }
  .small-margin-collapse > .xxlarge-8 {
    width: 66.66667%; }
  .small-margin-collapse > .xxlarge-9 {
    width: 75%; }
  .small-margin-collapse > .xxlarge-10 {
    width: 83.33333%; }
  .small-margin-collapse > .xxlarge-11 {
    width: 91.66667%; }
  .small-margin-collapse > .xxlarge-12 {
    width: 100%; }

.small-padding-collapse {
  margin-right: 0;
  margin-left: 0; }
  .small-padding-collapse > .cell {
    padding-right: 0;
    padding-left: 0; }

@media print, screen and (min-width: 40em) {
  .medium-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .medium-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; }
    .medium-margin-collapse > .small-1 {
      width: 8.33333%; }
    .medium-margin-collapse > .small-2 {
      width: 16.66667%; }
    .medium-margin-collapse > .small-3 {
      width: 25%; }
    .medium-margin-collapse > .small-4 {
      width: 33.33333%; }
    .medium-margin-collapse > .small-5 {
      width: 41.66667%; }
    .medium-margin-collapse > .small-6 {
      width: 50%; }
    .medium-margin-collapse > .small-7 {
      width: 58.33333%; }
    .medium-margin-collapse > .small-8 {
      width: 66.66667%; }
    .medium-margin-collapse > .small-9 {
      width: 75%; }
    .medium-margin-collapse > .small-10 {
      width: 83.33333%; }
    .medium-margin-collapse > .small-11 {
      width: 91.66667%; }
    .medium-margin-collapse > .small-12 {
      width: 100%; }
    .medium-margin-collapse > .medium-1 {
      width: 8.33333%; }
    .medium-margin-collapse > .medium-2 {
      width: 16.66667%; }
    .medium-margin-collapse > .medium-3 {
      width: 25%; }
    .medium-margin-collapse > .medium-4 {
      width: 33.33333%; }
    .medium-margin-collapse > .medium-5 {
      width: 41.66667%; }
    .medium-margin-collapse > .medium-6 {
      width: 50%; }
    .medium-margin-collapse > .medium-7 {
      width: 58.33333%; }
    .medium-margin-collapse > .medium-8 {
      width: 66.66667%; }
    .medium-margin-collapse > .medium-9 {
      width: 75%; }
    .medium-margin-collapse > .medium-10 {
      width: 83.33333%; }
    .medium-margin-collapse > .medium-11 {
      width: 91.66667%; }
    .medium-margin-collapse > .medium-12 {
      width: 100%; }
    .medium-margin-collapse > .large-1 {
      width: 8.33333%; }
    .medium-margin-collapse > .large-2 {
      width: 16.66667%; }
    .medium-margin-collapse > .large-3 {
      width: 25%; }
    .medium-margin-collapse > .large-4 {
      width: 33.33333%; }
    .medium-margin-collapse > .large-5 {
      width: 41.66667%; }
    .medium-margin-collapse > .large-6 {
      width: 50%; }
    .medium-margin-collapse > .large-7 {
      width: 58.33333%; }
    .medium-margin-collapse > .large-8 {
      width: 66.66667%; }
    .medium-margin-collapse > .large-9 {
      width: 75%; }
    .medium-margin-collapse > .large-10 {
      width: 83.33333%; }
    .medium-margin-collapse > .large-11 {
      width: 91.66667%; }
    .medium-margin-collapse > .large-12 {
      width: 100%; }
    .medium-margin-collapse > .xlarge-1 {
      width: 8.33333%; }
    .medium-margin-collapse > .xlarge-2 {
      width: 16.66667%; }
    .medium-margin-collapse > .xlarge-3 {
      width: 25%; }
    .medium-margin-collapse > .xlarge-4 {
      width: 33.33333%; }
    .medium-margin-collapse > .xlarge-5 {
      width: 41.66667%; }
    .medium-margin-collapse > .xlarge-6 {
      width: 50%; }
    .medium-margin-collapse > .xlarge-7 {
      width: 58.33333%; }
    .medium-margin-collapse > .xlarge-8 {
      width: 66.66667%; }
    .medium-margin-collapse > .xlarge-9 {
      width: 75%; }
    .medium-margin-collapse > .xlarge-10 {
      width: 83.33333%; }
    .medium-margin-collapse > .xlarge-11 {
      width: 91.66667%; }
    .medium-margin-collapse > .xlarge-12 {
      width: 100%; }
    .medium-margin-collapse > .xxlarge-1 {
      width: 8.33333%; }
    .medium-margin-collapse > .xxlarge-2 {
      width: 16.66667%; }
    .medium-margin-collapse > .xxlarge-3 {
      width: 25%; }
    .medium-margin-collapse > .xxlarge-4 {
      width: 33.33333%; }
    .medium-margin-collapse > .xxlarge-5 {
      width: 41.66667%; }
    .medium-margin-collapse > .xxlarge-6 {
      width: 50%; }
    .medium-margin-collapse > .xxlarge-7 {
      width: 58.33333%; }
    .medium-margin-collapse > .xxlarge-8 {
      width: 66.66667%; }
    .medium-margin-collapse > .xxlarge-9 {
      width: 75%; }
    .medium-margin-collapse > .xxlarge-10 {
      width: 83.33333%; }
    .medium-margin-collapse > .xxlarge-11 {
      width: 91.66667%; }
    .medium-margin-collapse > .xxlarge-12 {
      width: 100%; }
  .medium-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .medium-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

@media print, screen and (min-width: 64em) {
  .large-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .large-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; }
    .large-margin-collapse > .small-1 {
      width: 8.33333%; }
    .large-margin-collapse > .small-2 {
      width: 16.66667%; }
    .large-margin-collapse > .small-3 {
      width: 25%; }
    .large-margin-collapse > .small-4 {
      width: 33.33333%; }
    .large-margin-collapse > .small-5 {
      width: 41.66667%; }
    .large-margin-collapse > .small-6 {
      width: 50%; }
    .large-margin-collapse > .small-7 {
      width: 58.33333%; }
    .large-margin-collapse > .small-8 {
      width: 66.66667%; }
    .large-margin-collapse > .small-9 {
      width: 75%; }
    .large-margin-collapse > .small-10 {
      width: 83.33333%; }
    .large-margin-collapse > .small-11 {
      width: 91.66667%; }
    .large-margin-collapse > .small-12 {
      width: 100%; }
    .large-margin-collapse > .medium-1 {
      width: 8.33333%; }
    .large-margin-collapse > .medium-2 {
      width: 16.66667%; }
    .large-margin-collapse > .medium-3 {
      width: 25%; }
    .large-margin-collapse > .medium-4 {
      width: 33.33333%; }
    .large-margin-collapse > .medium-5 {
      width: 41.66667%; }
    .large-margin-collapse > .medium-6 {
      width: 50%; }
    .large-margin-collapse > .medium-7 {
      width: 58.33333%; }
    .large-margin-collapse > .medium-8 {
      width: 66.66667%; }
    .large-margin-collapse > .medium-9 {
      width: 75%; }
    .large-margin-collapse > .medium-10 {
      width: 83.33333%; }
    .large-margin-collapse > .medium-11 {
      width: 91.66667%; }
    .large-margin-collapse > .medium-12 {
      width: 100%; }
    .large-margin-collapse > .large-1 {
      width: 8.33333%; }
    .large-margin-collapse > .large-2 {
      width: 16.66667%; }
    .large-margin-collapse > .large-3 {
      width: 25%; }
    .large-margin-collapse > .large-4 {
      width: 33.33333%; }
    .large-margin-collapse > .large-5 {
      width: 41.66667%; }
    .large-margin-collapse > .large-6 {
      width: 50%; }
    .large-margin-collapse > .large-7 {
      width: 58.33333%; }
    .large-margin-collapse > .large-8 {
      width: 66.66667%; }
    .large-margin-collapse > .large-9 {
      width: 75%; }
    .large-margin-collapse > .large-10 {
      width: 83.33333%; }
    .large-margin-collapse > .large-11 {
      width: 91.66667%; }
    .large-margin-collapse > .large-12 {
      width: 100%; }
    .large-margin-collapse > .xlarge-1 {
      width: 8.33333%; }
    .large-margin-collapse > .xlarge-2 {
      width: 16.66667%; }
    .large-margin-collapse > .xlarge-3 {
      width: 25%; }
    .large-margin-collapse > .xlarge-4 {
      width: 33.33333%; }
    .large-margin-collapse > .xlarge-5 {
      width: 41.66667%; }
    .large-margin-collapse > .xlarge-6 {
      width: 50%; }
    .large-margin-collapse > .xlarge-7 {
      width: 58.33333%; }
    .large-margin-collapse > .xlarge-8 {
      width: 66.66667%; }
    .large-margin-collapse > .xlarge-9 {
      width: 75%; }
    .large-margin-collapse > .xlarge-10 {
      width: 83.33333%; }
    .large-margin-collapse > .xlarge-11 {
      width: 91.66667%; }
    .large-margin-collapse > .xlarge-12 {
      width: 100%; }
    .large-margin-collapse > .xxlarge-1 {
      width: 8.33333%; }
    .large-margin-collapse > .xxlarge-2 {
      width: 16.66667%; }
    .large-margin-collapse > .xxlarge-3 {
      width: 25%; }
    .large-margin-collapse > .xxlarge-4 {
      width: 33.33333%; }
    .large-margin-collapse > .xxlarge-5 {
      width: 41.66667%; }
    .large-margin-collapse > .xxlarge-6 {
      width: 50%; }
    .large-margin-collapse > .xxlarge-7 {
      width: 58.33333%; }
    .large-margin-collapse > .xxlarge-8 {
      width: 66.66667%; }
    .large-margin-collapse > .xxlarge-9 {
      width: 75%; }
    .large-margin-collapse > .xxlarge-10 {
      width: 83.33333%; }
    .large-margin-collapse > .xxlarge-11 {
      width: 91.66667%; }
    .large-margin-collapse > .xxlarge-12 {
      width: 100%; }
  .large-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .large-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

@media screen and (min-width: 75em) {
  .xlarge-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xlarge-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; }
    .xlarge-margin-collapse > .small-1 {
      width: 8.33333%; }
    .xlarge-margin-collapse > .small-2 {
      width: 16.66667%; }
    .xlarge-margin-collapse > .small-3 {
      width: 25%; }
    .xlarge-margin-collapse > .small-4 {
      width: 33.33333%; }
    .xlarge-margin-collapse > .small-5 {
      width: 41.66667%; }
    .xlarge-margin-collapse > .small-6 {
      width: 50%; }
    .xlarge-margin-collapse > .small-7 {
      width: 58.33333%; }
    .xlarge-margin-collapse > .small-8 {
      width: 66.66667%; }
    .xlarge-margin-collapse > .small-9 {
      width: 75%; }
    .xlarge-margin-collapse > .small-10 {
      width: 83.33333%; }
    .xlarge-margin-collapse > .small-11 {
      width: 91.66667%; }
    .xlarge-margin-collapse > .small-12 {
      width: 100%; }
    .xlarge-margin-collapse > .medium-1 {
      width: 8.33333%; }
    .xlarge-margin-collapse > .medium-2 {
      width: 16.66667%; }
    .xlarge-margin-collapse > .medium-3 {
      width: 25%; }
    .xlarge-margin-collapse > .medium-4 {
      width: 33.33333%; }
    .xlarge-margin-collapse > .medium-5 {
      width: 41.66667%; }
    .xlarge-margin-collapse > .medium-6 {
      width: 50%; }
    .xlarge-margin-collapse > .medium-7 {
      width: 58.33333%; }
    .xlarge-margin-collapse > .medium-8 {
      width: 66.66667%; }
    .xlarge-margin-collapse > .medium-9 {
      width: 75%; }
    .xlarge-margin-collapse > .medium-10 {
      width: 83.33333%; }
    .xlarge-margin-collapse > .medium-11 {
      width: 91.66667%; }
    .xlarge-margin-collapse > .medium-12 {
      width: 100%; }
    .xlarge-margin-collapse > .large-1 {
      width: 8.33333%; }
    .xlarge-margin-collapse > .large-2 {
      width: 16.66667%; }
    .xlarge-margin-collapse > .large-3 {
      width: 25%; }
    .xlarge-margin-collapse > .large-4 {
      width: 33.33333%; }
    .xlarge-margin-collapse > .large-5 {
      width: 41.66667%; }
    .xlarge-margin-collapse > .large-6 {
      width: 50%; }
    .xlarge-margin-collapse > .large-7 {
      width: 58.33333%; }
    .xlarge-margin-collapse > .large-8 {
      width: 66.66667%; }
    .xlarge-margin-collapse > .large-9 {
      width: 75%; }
    .xlarge-margin-collapse > .large-10 {
      width: 83.33333%; }
    .xlarge-margin-collapse > .large-11 {
      width: 91.66667%; }
    .xlarge-margin-collapse > .large-12 {
      width: 100%; }
    .xlarge-margin-collapse > .xlarge-1 {
      width: 8.33333%; }
    .xlarge-margin-collapse > .xlarge-2 {
      width: 16.66667%; }
    .xlarge-margin-collapse > .xlarge-3 {
      width: 25%; }
    .xlarge-margin-collapse > .xlarge-4 {
      width: 33.33333%; }
    .xlarge-margin-collapse > .xlarge-5 {
      width: 41.66667%; }
    .xlarge-margin-collapse > .xlarge-6 {
      width: 50%; }
    .xlarge-margin-collapse > .xlarge-7 {
      width: 58.33333%; }
    .xlarge-margin-collapse > .xlarge-8 {
      width: 66.66667%; }
    .xlarge-margin-collapse > .xlarge-9 {
      width: 75%; }
    .xlarge-margin-collapse > .xlarge-10 {
      width: 83.33333%; }
    .xlarge-margin-collapse > .xlarge-11 {
      width: 91.66667%; }
    .xlarge-margin-collapse > .xlarge-12 {
      width: 100%; }
    .xlarge-margin-collapse > .xxlarge-1 {
      width: 8.33333%; }
    .xlarge-margin-collapse > .xxlarge-2 {
      width: 16.66667%; }
    .xlarge-margin-collapse > .xxlarge-3 {
      width: 25%; }
    .xlarge-margin-collapse > .xxlarge-4 {
      width: 33.33333%; }
    .xlarge-margin-collapse > .xxlarge-5 {
      width: 41.66667%; }
    .xlarge-margin-collapse > .xxlarge-6 {
      width: 50%; }
    .xlarge-margin-collapse > .xxlarge-7 {
      width: 58.33333%; }
    .xlarge-margin-collapse > .xxlarge-8 {
      width: 66.66667%; }
    .xlarge-margin-collapse > .xxlarge-9 {
      width: 75%; }
    .xlarge-margin-collapse > .xxlarge-10 {
      width: 83.33333%; }
    .xlarge-margin-collapse > .xxlarge-11 {
      width: 91.66667%; }
    .xlarge-margin-collapse > .xxlarge-12 {
      width: 100%; }
  .xlarge-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xlarge-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

@media screen and (min-width: 90em) {
  .xxlarge-margin-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xxlarge-margin-collapse > .cell {
      margin-right: 0;
      margin-left: 0; }
    .xxlarge-margin-collapse > .small-1 {
      width: 8.33333%; }
    .xxlarge-margin-collapse > .small-2 {
      width: 16.66667%; }
    .xxlarge-margin-collapse > .small-3 {
      width: 25%; }
    .xxlarge-margin-collapse > .small-4 {
      width: 33.33333%; }
    .xxlarge-margin-collapse > .small-5 {
      width: 41.66667%; }
    .xxlarge-margin-collapse > .small-6 {
      width: 50%; }
    .xxlarge-margin-collapse > .small-7 {
      width: 58.33333%; }
    .xxlarge-margin-collapse > .small-8 {
      width: 66.66667%; }
    .xxlarge-margin-collapse > .small-9 {
      width: 75%; }
    .xxlarge-margin-collapse > .small-10 {
      width: 83.33333%; }
    .xxlarge-margin-collapse > .small-11 {
      width: 91.66667%; }
    .xxlarge-margin-collapse > .small-12 {
      width: 100%; }
    .xxlarge-margin-collapse > .medium-1 {
      width: 8.33333%; }
    .xxlarge-margin-collapse > .medium-2 {
      width: 16.66667%; }
    .xxlarge-margin-collapse > .medium-3 {
      width: 25%; }
    .xxlarge-margin-collapse > .medium-4 {
      width: 33.33333%; }
    .xxlarge-margin-collapse > .medium-5 {
      width: 41.66667%; }
    .xxlarge-margin-collapse > .medium-6 {
      width: 50%; }
    .xxlarge-margin-collapse > .medium-7 {
      width: 58.33333%; }
    .xxlarge-margin-collapse > .medium-8 {
      width: 66.66667%; }
    .xxlarge-margin-collapse > .medium-9 {
      width: 75%; }
    .xxlarge-margin-collapse > .medium-10 {
      width: 83.33333%; }
    .xxlarge-margin-collapse > .medium-11 {
      width: 91.66667%; }
    .xxlarge-margin-collapse > .medium-12 {
      width: 100%; }
    .xxlarge-margin-collapse > .large-1 {
      width: 8.33333%; }
    .xxlarge-margin-collapse > .large-2 {
      width: 16.66667%; }
    .xxlarge-margin-collapse > .large-3 {
      width: 25%; }
    .xxlarge-margin-collapse > .large-4 {
      width: 33.33333%; }
    .xxlarge-margin-collapse > .large-5 {
      width: 41.66667%; }
    .xxlarge-margin-collapse > .large-6 {
      width: 50%; }
    .xxlarge-margin-collapse > .large-7 {
      width: 58.33333%; }
    .xxlarge-margin-collapse > .large-8 {
      width: 66.66667%; }
    .xxlarge-margin-collapse > .large-9 {
      width: 75%; }
    .xxlarge-margin-collapse > .large-10 {
      width: 83.33333%; }
    .xxlarge-margin-collapse > .large-11 {
      width: 91.66667%; }
    .xxlarge-margin-collapse > .large-12 {
      width: 100%; }
    .xxlarge-margin-collapse > .xlarge-1 {
      width: 8.33333%; }
    .xxlarge-margin-collapse > .xlarge-2 {
      width: 16.66667%; }
    .xxlarge-margin-collapse > .xlarge-3 {
      width: 25%; }
    .xxlarge-margin-collapse > .xlarge-4 {
      width: 33.33333%; }
    .xxlarge-margin-collapse > .xlarge-5 {
      width: 41.66667%; }
    .xxlarge-margin-collapse > .xlarge-6 {
      width: 50%; }
    .xxlarge-margin-collapse > .xlarge-7 {
      width: 58.33333%; }
    .xxlarge-margin-collapse > .xlarge-8 {
      width: 66.66667%; }
    .xxlarge-margin-collapse > .xlarge-9 {
      width: 75%; }
    .xxlarge-margin-collapse > .xlarge-10 {
      width: 83.33333%; }
    .xxlarge-margin-collapse > .xlarge-11 {
      width: 91.66667%; }
    .xxlarge-margin-collapse > .xlarge-12 {
      width: 100%; }
    .xxlarge-margin-collapse > .xxlarge-1 {
      width: 8.33333%; }
    .xxlarge-margin-collapse > .xxlarge-2 {
      width: 16.66667%; }
    .xxlarge-margin-collapse > .xxlarge-3 {
      width: 25%; }
    .xxlarge-margin-collapse > .xxlarge-4 {
      width: 33.33333%; }
    .xxlarge-margin-collapse > .xxlarge-5 {
      width: 41.66667%; }
    .xxlarge-margin-collapse > .xxlarge-6 {
      width: 50%; }
    .xxlarge-margin-collapse > .xxlarge-7 {
      width: 58.33333%; }
    .xxlarge-margin-collapse > .xxlarge-8 {
      width: 66.66667%; }
    .xxlarge-margin-collapse > .xxlarge-9 {
      width: 75%; }
    .xxlarge-margin-collapse > .xxlarge-10 {
      width: 83.33333%; }
    .xxlarge-margin-collapse > .xxlarge-11 {
      width: 91.66667%; }
    .xxlarge-margin-collapse > .xxlarge-12 {
      width: 100%; }
  .xxlarge-padding-collapse {
    margin-right: 0;
    margin-left: 0; }
    .xxlarge-padding-collapse > .cell {
      padding-right: 0;
      padding-left: 0; } }

.small-offset-0 {
  margin-left: 0%; }

.grid-margin-x > .small-offset-0 {
  margin-left: -webkit-calc(0% + 0.55556rem);
  margin-left: calc(0% + 0.55556rem); }

.small-offset-1 {
  margin-left: 8.33333%; }

.grid-margin-x > .small-offset-1 {
  margin-left: -webkit-calc(8.33333% + 0.55556rem);
  margin-left: calc(8.33333% + 0.55556rem); }

.small-offset-2 {
  margin-left: 16.66667%; }

.grid-margin-x > .small-offset-2 {
  margin-left: -webkit-calc(16.66667% + 0.55556rem);
  margin-left: calc(16.66667% + 0.55556rem); }

.small-offset-3 {
  margin-left: 25%; }

.grid-margin-x > .small-offset-3 {
  margin-left: -webkit-calc(25% + 0.55556rem);
  margin-left: calc(25% + 0.55556rem); }

.small-offset-4 {
  margin-left: 33.33333%; }

.grid-margin-x > .small-offset-4 {
  margin-left: -webkit-calc(33.33333% + 0.55556rem);
  margin-left: calc(33.33333% + 0.55556rem); }

.small-offset-5 {
  margin-left: 41.66667%; }

.grid-margin-x > .small-offset-5 {
  margin-left: -webkit-calc(41.66667% + 0.55556rem);
  margin-left: calc(41.66667% + 0.55556rem); }

.small-offset-6 {
  margin-left: 50%; }

.grid-margin-x > .small-offset-6 {
  margin-left: -webkit-calc(50% + 0.55556rem);
  margin-left: calc(50% + 0.55556rem); }

.small-offset-7 {
  margin-left: 58.33333%; }

.grid-margin-x > .small-offset-7 {
  margin-left: -webkit-calc(58.33333% + 0.55556rem);
  margin-left: calc(58.33333% + 0.55556rem); }

.small-offset-8 {
  margin-left: 66.66667%; }

.grid-margin-x > .small-offset-8 {
  margin-left: -webkit-calc(66.66667% + 0.55556rem);
  margin-left: calc(66.66667% + 0.55556rem); }

.small-offset-9 {
  margin-left: 75%; }

.grid-margin-x > .small-offset-9 {
  margin-left: -webkit-calc(75% + 0.55556rem);
  margin-left: calc(75% + 0.55556rem); }

.small-offset-10 {
  margin-left: 83.33333%; }

.grid-margin-x > .small-offset-10 {
  margin-left: -webkit-calc(83.33333% + 0.55556rem);
  margin-left: calc(83.33333% + 0.55556rem); }

.small-offset-11 {
  margin-left: 91.66667%; }

.grid-margin-x > .small-offset-11 {
  margin-left: -webkit-calc(91.66667% + 0.55556rem);
  margin-left: calc(91.66667% + 0.55556rem); }

@media print, screen and (min-width: 40em) {
  .medium-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .medium-offset-0 {
    margin-left: -webkit-calc(0% + 0.83333rem);
    margin-left: calc(0% + 0.83333rem); }
  .medium-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .medium-offset-1 {
    margin-left: -webkit-calc(8.33333% + 0.83333rem);
    margin-left: calc(8.33333% + 0.83333rem); }
  .medium-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .medium-offset-2 {
    margin-left: -webkit-calc(16.66667% + 0.83333rem);
    margin-left: calc(16.66667% + 0.83333rem); }
  .medium-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .medium-offset-3 {
    margin-left: -webkit-calc(25% + 0.83333rem);
    margin-left: calc(25% + 0.83333rem); }
  .medium-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .medium-offset-4 {
    margin-left: -webkit-calc(33.33333% + 0.83333rem);
    margin-left: calc(33.33333% + 0.83333rem); }
  .medium-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .medium-offset-5 {
    margin-left: -webkit-calc(41.66667% + 0.83333rem);
    margin-left: calc(41.66667% + 0.83333rem); }
  .medium-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .medium-offset-6 {
    margin-left: -webkit-calc(50% + 0.83333rem);
    margin-left: calc(50% + 0.83333rem); }
  .medium-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .medium-offset-7 {
    margin-left: -webkit-calc(58.33333% + 0.83333rem);
    margin-left: calc(58.33333% + 0.83333rem); }
  .medium-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .medium-offset-8 {
    margin-left: -webkit-calc(66.66667% + 0.83333rem);
    margin-left: calc(66.66667% + 0.83333rem); }
  .medium-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .medium-offset-9 {
    margin-left: -webkit-calc(75% + 0.83333rem);
    margin-left: calc(75% + 0.83333rem); }
  .medium-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .medium-offset-10 {
    margin-left: -webkit-calc(83.33333% + 0.83333rem);
    margin-left: calc(83.33333% + 0.83333rem); }
  .medium-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .medium-offset-11 {
    margin-left: -webkit-calc(91.66667% + 0.83333rem);
    margin-left: calc(91.66667% + 0.83333rem); } }

@media print, screen and (min-width: 64em) {
  .large-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .large-offset-0 {
    margin-left: -webkit-calc(0% + 0.83333rem);
    margin-left: calc(0% + 0.83333rem); }
  .large-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .large-offset-1 {
    margin-left: -webkit-calc(8.33333% + 0.83333rem);
    margin-left: calc(8.33333% + 0.83333rem); }
  .large-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .large-offset-2 {
    margin-left: -webkit-calc(16.66667% + 0.83333rem);
    margin-left: calc(16.66667% + 0.83333rem); }
  .large-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .large-offset-3 {
    margin-left: -webkit-calc(25% + 0.83333rem);
    margin-left: calc(25% + 0.83333rem); }
  .large-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .large-offset-4 {
    margin-left: -webkit-calc(33.33333% + 0.83333rem);
    margin-left: calc(33.33333% + 0.83333rem); }
  .large-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .large-offset-5 {
    margin-left: -webkit-calc(41.66667% + 0.83333rem);
    margin-left: calc(41.66667% + 0.83333rem); }
  .large-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .large-offset-6 {
    margin-left: -webkit-calc(50% + 0.83333rem);
    margin-left: calc(50% + 0.83333rem); }
  .large-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .large-offset-7 {
    margin-left: -webkit-calc(58.33333% + 0.83333rem);
    margin-left: calc(58.33333% + 0.83333rem); }
  .large-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .large-offset-8 {
    margin-left: -webkit-calc(66.66667% + 0.83333rem);
    margin-left: calc(66.66667% + 0.83333rem); }
  .large-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .large-offset-9 {
    margin-left: -webkit-calc(75% + 0.83333rem);
    margin-left: calc(75% + 0.83333rem); }
  .large-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .large-offset-10 {
    margin-left: -webkit-calc(83.33333% + 0.83333rem);
    margin-left: calc(83.33333% + 0.83333rem); }
  .large-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .large-offset-11 {
    margin-left: -webkit-calc(91.66667% + 0.83333rem);
    margin-left: calc(91.66667% + 0.83333rem); } }

@media screen and (min-width: 75em) {
  .xlarge-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .xlarge-offset-0 {
    margin-left: -webkit-calc(0% + 0.83333rem);
    margin-left: calc(0% + 0.83333rem); }
  .xlarge-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .xlarge-offset-1 {
    margin-left: -webkit-calc(8.33333% + 0.83333rem);
    margin-left: calc(8.33333% + 0.83333rem); }
  .xlarge-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .xlarge-offset-2 {
    margin-left: -webkit-calc(16.66667% + 0.83333rem);
    margin-left: calc(16.66667% + 0.83333rem); }
  .xlarge-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .xlarge-offset-3 {
    margin-left: -webkit-calc(25% + 0.83333rem);
    margin-left: calc(25% + 0.83333rem); }
  .xlarge-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .xlarge-offset-4 {
    margin-left: -webkit-calc(33.33333% + 0.83333rem);
    margin-left: calc(33.33333% + 0.83333rem); }
  .xlarge-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .xlarge-offset-5 {
    margin-left: -webkit-calc(41.66667% + 0.83333rem);
    margin-left: calc(41.66667% + 0.83333rem); }
  .xlarge-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .xlarge-offset-6 {
    margin-left: -webkit-calc(50% + 0.83333rem);
    margin-left: calc(50% + 0.83333rem); }
  .xlarge-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .xlarge-offset-7 {
    margin-left: -webkit-calc(58.33333% + 0.83333rem);
    margin-left: calc(58.33333% + 0.83333rem); }
  .xlarge-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .xlarge-offset-8 {
    margin-left: -webkit-calc(66.66667% + 0.83333rem);
    margin-left: calc(66.66667% + 0.83333rem); }
  .xlarge-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .xlarge-offset-9 {
    margin-left: -webkit-calc(75% + 0.83333rem);
    margin-left: calc(75% + 0.83333rem); }
  .xlarge-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .xlarge-offset-10 {
    margin-left: -webkit-calc(83.33333% + 0.83333rem);
    margin-left: calc(83.33333% + 0.83333rem); }
  .xlarge-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .xlarge-offset-11 {
    margin-left: -webkit-calc(91.66667% + 0.83333rem);
    margin-left: calc(91.66667% + 0.83333rem); } }

@media screen and (min-width: 90em) {
  .xxlarge-offset-0 {
    margin-left: 0%; }
  .grid-margin-x > .xxlarge-offset-0 {
    margin-left: -webkit-calc(0% + 0.83333rem);
    margin-left: calc(0% + 0.83333rem); }
  .xxlarge-offset-1 {
    margin-left: 8.33333%; }
  .grid-margin-x > .xxlarge-offset-1 {
    margin-left: -webkit-calc(8.33333% + 0.83333rem);
    margin-left: calc(8.33333% + 0.83333rem); }
  .xxlarge-offset-2 {
    margin-left: 16.66667%; }
  .grid-margin-x > .xxlarge-offset-2 {
    margin-left: -webkit-calc(16.66667% + 0.83333rem);
    margin-left: calc(16.66667% + 0.83333rem); }
  .xxlarge-offset-3 {
    margin-left: 25%; }
  .grid-margin-x > .xxlarge-offset-3 {
    margin-left: -webkit-calc(25% + 0.83333rem);
    margin-left: calc(25% + 0.83333rem); }
  .xxlarge-offset-4 {
    margin-left: 33.33333%; }
  .grid-margin-x > .xxlarge-offset-4 {
    margin-left: -webkit-calc(33.33333% + 0.83333rem);
    margin-left: calc(33.33333% + 0.83333rem); }
  .xxlarge-offset-5 {
    margin-left: 41.66667%; }
  .grid-margin-x > .xxlarge-offset-5 {
    margin-left: -webkit-calc(41.66667% + 0.83333rem);
    margin-left: calc(41.66667% + 0.83333rem); }
  .xxlarge-offset-6 {
    margin-left: 50%; }
  .grid-margin-x > .xxlarge-offset-6 {
    margin-left: -webkit-calc(50% + 0.83333rem);
    margin-left: calc(50% + 0.83333rem); }
  .xxlarge-offset-7 {
    margin-left: 58.33333%; }
  .grid-margin-x > .xxlarge-offset-7 {
    margin-left: -webkit-calc(58.33333% + 0.83333rem);
    margin-left: calc(58.33333% + 0.83333rem); }
  .xxlarge-offset-8 {
    margin-left: 66.66667%; }
  .grid-margin-x > .xxlarge-offset-8 {
    margin-left: -webkit-calc(66.66667% + 0.83333rem);
    margin-left: calc(66.66667% + 0.83333rem); }
  .xxlarge-offset-9 {
    margin-left: 75%; }
  .grid-margin-x > .xxlarge-offset-9 {
    margin-left: -webkit-calc(75% + 0.83333rem);
    margin-left: calc(75% + 0.83333rem); }
  .xxlarge-offset-10 {
    margin-left: 83.33333%; }
  .grid-margin-x > .xxlarge-offset-10 {
    margin-left: -webkit-calc(83.33333% + 0.83333rem);
    margin-left: calc(83.33333% + 0.83333rem); }
  .xxlarge-offset-11 {
    margin-left: 91.66667%; }
  .grid-margin-x > .xxlarge-offset-11 {
    margin-left: -webkit-calc(91.66667% + 0.83333rem);
    margin-left: calc(91.66667% + 0.83333rem); } }

.grid-y {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-flow: column nowrap;
          flex-flow: column nowrap; }
  .grid-y > .cell {
    width: auto; }
  .grid-y > .auto {
    height: auto; }
  .grid-y > .shrink {
    height: auto; }
  .grid-y > small-shrink, .grid-y > small-full, .grid-y > small-1, .grid-y > small-2, .grid-y > small-3, .grid-y > small-4, .grid-y > small-5, .grid-y > small-6, .grid-y > small-7, .grid-y > small-8, .grid-y > small-9, .grid-y > small-10, .grid-y > small-11, .grid-y > small-12 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  @media print, screen and (min-width: 40em) {
    .grid-y > medium-shrink, .grid-y > medium-full, .grid-y > medium-1, .grid-y > medium-2, .grid-y > medium-3, .grid-y > medium-4, .grid-y > medium-5, .grid-y > medium-6, .grid-y > medium-7, .grid-y > medium-8, .grid-y > medium-9, .grid-y > medium-10, .grid-y > medium-11, .grid-y > medium-12 {
      -ms-flex-preferred-size: auto;
          flex-basis: auto; } }
  @media print, screen and (min-width: 64em) {
    .grid-y > large-shrink, .grid-y > large-full, .grid-y > large-1, .grid-y > large-2, .grid-y > large-3, .grid-y > large-4, .grid-y > large-5, .grid-y > large-6, .grid-y > large-7, .grid-y > large-8, .grid-y > large-9, .grid-y > large-10, .grid-y > large-11, .grid-y > large-12 {
      -ms-flex-preferred-size: auto;
          flex-basis: auto; } }
  @media screen and (min-width: 75em) {
    .grid-y > xlarge-shrink, .grid-y > xlarge-full, .grid-y > xlarge-1, .grid-y > xlarge-2, .grid-y > xlarge-3, .grid-y > xlarge-4, .grid-y > xlarge-5, .grid-y > xlarge-6, .grid-y > xlarge-7, .grid-y > xlarge-8, .grid-y > xlarge-9, .grid-y > xlarge-10, .grid-y > xlarge-11, .grid-y > xlarge-12 {
      -ms-flex-preferred-size: auto;
          flex-basis: auto; } }
  @media screen and (min-width: 90em) {
    .grid-y > xxlarge-shrink, .grid-y > xxlarge-full, .grid-y > xxlarge-1, .grid-y > xxlarge-2, .grid-y > xxlarge-3, .grid-y > xxlarge-4, .grid-y > xxlarge-5, .grid-y > xxlarge-6, .grid-y > xxlarge-7, .grid-y > xxlarge-8, .grid-y > xxlarge-9, .grid-y > xxlarge-10, .grid-y > xxlarge-11, .grid-y > xxlarge-12 {
      -ms-flex-preferred-size: auto;
          flex-basis: auto; } }
  .grid-y > .small-1 {
    height: 8.33333%; }
  .grid-y > .small-2 {
    height: 16.66667%; }
  .grid-y > .small-3 {
    height: 25%; }
  .grid-y > .small-4 {
    height: 33.33333%; }
  .grid-y > .small-5 {
    height: 41.66667%; }
  .grid-y > .small-6 {
    height: 50%; }
  .grid-y > .small-7 {
    height: 58.33333%; }
  .grid-y > .small-8 {
    height: 66.66667%; }
  .grid-y > .small-9 {
    height: 75%; }
  .grid-y > .small-10 {
    height: 83.33333%; }
  .grid-y > .small-11 {
    height: 91.66667%; }
  .grid-y > .small-12 {
    height: 100%; }
  @media print, screen and (min-width: 40em) {
    .grid-y > .medium-auto {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      height: auto; }
    .grid-y > .medium-shrink {
      height: auto; }
    .grid-y > .medium-1 {
      height: 8.33333%; }
    .grid-y > .medium-2 {
      height: 16.66667%; }
    .grid-y > .medium-3 {
      height: 25%; }
    .grid-y > .medium-4 {
      height: 33.33333%; }
    .grid-y > .medium-5 {
      height: 41.66667%; }
    .grid-y > .medium-6 {
      height: 50%; }
    .grid-y > .medium-7 {
      height: 58.33333%; }
    .grid-y > .medium-8 {
      height: 66.66667%; }
    .grid-y > .medium-9 {
      height: 75%; }
    .grid-y > .medium-10 {
      height: 83.33333%; }
    .grid-y > .medium-11 {
      height: 91.66667%; }
    .grid-y > .medium-12 {
      height: 100%; } }
  @media print, screen and (min-width: 64em) {
    .grid-y > .large-auto {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      height: auto; }
    .grid-y > .large-shrink {
      height: auto; }
    .grid-y > .large-1 {
      height: 8.33333%; }
    .grid-y > .large-2 {
      height: 16.66667%; }
    .grid-y > .large-3 {
      height: 25%; }
    .grid-y > .large-4 {
      height: 33.33333%; }
    .grid-y > .large-5 {
      height: 41.66667%; }
    .grid-y > .large-6 {
      height: 50%; }
    .grid-y > .large-7 {
      height: 58.33333%; }
    .grid-y > .large-8 {
      height: 66.66667%; }
    .grid-y > .large-9 {
      height: 75%; }
    .grid-y > .large-10 {
      height: 83.33333%; }
    .grid-y > .large-11 {
      height: 91.66667%; }
    .grid-y > .large-12 {
      height: 100%; } }
  @media screen and (min-width: 75em) {
    .grid-y > .xlarge-auto {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      height: auto; }
    .grid-y > .xlarge-shrink {
      height: auto; }
    .grid-y > .xlarge-1 {
      height: 8.33333%; }
    .grid-y > .xlarge-2 {
      height: 16.66667%; }
    .grid-y > .xlarge-3 {
      height: 25%; }
    .grid-y > .xlarge-4 {
      height: 33.33333%; }
    .grid-y > .xlarge-5 {
      height: 41.66667%; }
    .grid-y > .xlarge-6 {
      height: 50%; }
    .grid-y > .xlarge-7 {
      height: 58.33333%; }
    .grid-y > .xlarge-8 {
      height: 66.66667%; }
    .grid-y > .xlarge-9 {
      height: 75%; }
    .grid-y > .xlarge-10 {
      height: 83.33333%; }
    .grid-y > .xlarge-11 {
      height: 91.66667%; }
    .grid-y > .xlarge-12 {
      height: 100%; } }
  @media screen and (min-width: 90em) {
    .grid-y > .xxlarge-auto {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      height: auto; }
    .grid-y > .xxlarge-shrink {
      height: auto; }
    .grid-y > .xxlarge-1 {
      height: 8.33333%; }
    .grid-y > .xxlarge-2 {
      height: 16.66667%; }
    .grid-y > .xxlarge-3 {
      height: 25%; }
    .grid-y > .xxlarge-4 {
      height: 33.33333%; }
    .grid-y > .xxlarge-5 {
      height: 41.66667%; }
    .grid-y > .xxlarge-6 {
      height: 50%; }
    .grid-y > .xxlarge-7 {
      height: 58.33333%; }
    .grid-y > .xxlarge-8 {
      height: 66.66667%; }
    .grid-y > .xxlarge-9 {
      height: 75%; }
    .grid-y > .xxlarge-10 {
      height: 83.33333%; }
    .grid-y > .xxlarge-11 {
      height: 91.66667%; }
    .grid-y > .xxlarge-12 {
      height: 100%; } }

.grid-padding-y .grid-padding-y {
  margin-top: -0.55556rem;
  margin-bottom: -0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-padding-y .grid-padding-y {
      margin-top: -0.83333rem;
      margin-bottom: -0.83333rem; } }

.grid-padding-y > .cell {
  padding-top: 0.55556rem;
  padding-bottom: 0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-padding-y > .cell {
      padding-top: 0.83333rem;
      padding-bottom: 0.83333rem; } }

.grid-margin-y {
  margin-top: -0.55556rem;
  margin-bottom: -0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-margin-y {
      margin-top: -0.83333rem;
      margin-bottom: -0.83333rem; } }
  .grid-margin-y > .cell {
    height: -webkit-calc(100% - 1.11111rem);
    height: calc(100% - 1.11111rem);
    margin-top: 0.55556rem;
    margin-bottom: 0.55556rem; }
  @media print, screen and (min-width: 40em) {
    .grid-margin-y > .cell {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem);
      margin-top: 0.83333rem;
      margin-bottom: 0.83333rem; } }
  .grid-margin-y > .auto {
    height: auto; }
  .grid-margin-y > .shrink {
    height: auto; }
  .grid-margin-y > .small-1 {
    height: -webkit-calc(8.33333% - 1.11111rem);
    height: calc(8.33333% - 1.11111rem); }
  .grid-margin-y > .small-2 {
    height: -webkit-calc(16.66667% - 1.11111rem);
    height: calc(16.66667% - 1.11111rem); }
  .grid-margin-y > .small-3 {
    height: -webkit-calc(25% - 1.11111rem);
    height: calc(25% - 1.11111rem); }
  .grid-margin-y > .small-4 {
    height: -webkit-calc(33.33333% - 1.11111rem);
    height: calc(33.33333% - 1.11111rem); }
  .grid-margin-y > .small-5 {
    height: -webkit-calc(41.66667% - 1.11111rem);
    height: calc(41.66667% - 1.11111rem); }
  .grid-margin-y > .small-6 {
    height: -webkit-calc(50% - 1.11111rem);
    height: calc(50% - 1.11111rem); }
  .grid-margin-y > .small-7 {
    height: -webkit-calc(58.33333% - 1.11111rem);
    height: calc(58.33333% - 1.11111rem); }
  .grid-margin-y > .small-8 {
    height: -webkit-calc(66.66667% - 1.11111rem);
    height: calc(66.66667% - 1.11111rem); }
  .grid-margin-y > .small-9 {
    height: -webkit-calc(75% - 1.11111rem);
    height: calc(75% - 1.11111rem); }
  .grid-margin-y > .small-10 {
    height: -webkit-calc(83.33333% - 1.11111rem);
    height: calc(83.33333% - 1.11111rem); }
  .grid-margin-y > .small-11 {
    height: -webkit-calc(91.66667% - 1.11111rem);
    height: calc(91.66667% - 1.11111rem); }
  .grid-margin-y > .small-12 {
    height: -webkit-calc(100% - 1.11111rem);
    height: calc(100% - 1.11111rem); }
  @media print, screen and (min-width: 40em) {
    .grid-margin-y > .auto {
      height: auto; }
    .grid-margin-y > .shrink {
      height: auto; }
    .grid-margin-y > .small-1 {
      height: -webkit-calc(8.33333% - 1.66667rem);
      height: calc(8.33333% - 1.66667rem); }
    .grid-margin-y > .small-2 {
      height: -webkit-calc(16.66667% - 1.66667rem);
      height: calc(16.66667% - 1.66667rem); }
    .grid-margin-y > .small-3 {
      height: -webkit-calc(25% - 1.66667rem);
      height: calc(25% - 1.66667rem); }
    .grid-margin-y > .small-4 {
      height: -webkit-calc(33.33333% - 1.66667rem);
      height: calc(33.33333% - 1.66667rem); }
    .grid-margin-y > .small-5 {
      height: -webkit-calc(41.66667% - 1.66667rem);
      height: calc(41.66667% - 1.66667rem); }
    .grid-margin-y > .small-6 {
      height: -webkit-calc(50% - 1.66667rem);
      height: calc(50% - 1.66667rem); }
    .grid-margin-y > .small-7 {
      height: -webkit-calc(58.33333% - 1.66667rem);
      height: calc(58.33333% - 1.66667rem); }
    .grid-margin-y > .small-8 {
      height: -webkit-calc(66.66667% - 1.66667rem);
      height: calc(66.66667% - 1.66667rem); }
    .grid-margin-y > .small-9 {
      height: -webkit-calc(75% - 1.66667rem);
      height: calc(75% - 1.66667rem); }
    .grid-margin-y > .small-10 {
      height: -webkit-calc(83.33333% - 1.66667rem);
      height: calc(83.33333% - 1.66667rem); }
    .grid-margin-y > .small-11 {
      height: -webkit-calc(91.66667% - 1.66667rem);
      height: calc(91.66667% - 1.66667rem); }
    .grid-margin-y > .small-12 {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem); }
    .grid-margin-y > .medium-auto {
      height: auto; }
    .grid-margin-y > .medium-shrink {
      height: auto; }
    .grid-margin-y > .medium-1 {
      height: -webkit-calc(8.33333% - 1.66667rem);
      height: calc(8.33333% - 1.66667rem); }
    .grid-margin-y > .medium-2 {
      height: -webkit-calc(16.66667% - 1.66667rem);
      height: calc(16.66667% - 1.66667rem); }
    .grid-margin-y > .medium-3 {
      height: -webkit-calc(25% - 1.66667rem);
      height: calc(25% - 1.66667rem); }
    .grid-margin-y > .medium-4 {
      height: -webkit-calc(33.33333% - 1.66667rem);
      height: calc(33.33333% - 1.66667rem); }
    .grid-margin-y > .medium-5 {
      height: -webkit-calc(41.66667% - 1.66667rem);
      height: calc(41.66667% - 1.66667rem); }
    .grid-margin-y > .medium-6 {
      height: -webkit-calc(50% - 1.66667rem);
      height: calc(50% - 1.66667rem); }
    .grid-margin-y > .medium-7 {
      height: -webkit-calc(58.33333% - 1.66667rem);
      height: calc(58.33333% - 1.66667rem); }
    .grid-margin-y > .medium-8 {
      height: -webkit-calc(66.66667% - 1.66667rem);
      height: calc(66.66667% - 1.66667rem); }
    .grid-margin-y > .medium-9 {
      height: -webkit-calc(75% - 1.66667rem);
      height: calc(75% - 1.66667rem); }
    .grid-margin-y > .medium-10 {
      height: -webkit-calc(83.33333% - 1.66667rem);
      height: calc(83.33333% - 1.66667rem); }
    .grid-margin-y > .medium-11 {
      height: -webkit-calc(91.66667% - 1.66667rem);
      height: calc(91.66667% - 1.66667rem); }
    .grid-margin-y > .medium-12 {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem); } }
  @media print, screen and (min-width: 64em) {
    .grid-margin-y > .large-auto {
      height: auto; }
    .grid-margin-y > .large-shrink {
      height: auto; }
    .grid-margin-y > .large-1 {
      height: -webkit-calc(8.33333% - 1.66667rem);
      height: calc(8.33333% - 1.66667rem); }
    .grid-margin-y > .large-2 {
      height: -webkit-calc(16.66667% - 1.66667rem);
      height: calc(16.66667% - 1.66667rem); }
    .grid-margin-y > .large-3 {
      height: -webkit-calc(25% - 1.66667rem);
      height: calc(25% - 1.66667rem); }
    .grid-margin-y > .large-4 {
      height: -webkit-calc(33.33333% - 1.66667rem);
      height: calc(33.33333% - 1.66667rem); }
    .grid-margin-y > .large-5 {
      height: -webkit-calc(41.66667% - 1.66667rem);
      height: calc(41.66667% - 1.66667rem); }
    .grid-margin-y > .large-6 {
      height: -webkit-calc(50% - 1.66667rem);
      height: calc(50% - 1.66667rem); }
    .grid-margin-y > .large-7 {
      height: -webkit-calc(58.33333% - 1.66667rem);
      height: calc(58.33333% - 1.66667rem); }
    .grid-margin-y > .large-8 {
      height: -webkit-calc(66.66667% - 1.66667rem);
      height: calc(66.66667% - 1.66667rem); }
    .grid-margin-y > .large-9 {
      height: -webkit-calc(75% - 1.66667rem);
      height: calc(75% - 1.66667rem); }
    .grid-margin-y > .large-10 {
      height: -webkit-calc(83.33333% - 1.66667rem);
      height: calc(83.33333% - 1.66667rem); }
    .grid-margin-y > .large-11 {
      height: -webkit-calc(91.66667% - 1.66667rem);
      height: calc(91.66667% - 1.66667rem); }
    .grid-margin-y > .large-12 {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem); } }
  @media screen and (min-width: 75em) {
    .grid-margin-y > .xlarge-auto {
      height: auto; }
    .grid-margin-y > .xlarge-shrink {
      height: auto; }
    .grid-margin-y > .xlarge-1 {
      height: -webkit-calc(8.33333% - 1.66667rem);
      height: calc(8.33333% - 1.66667rem); }
    .grid-margin-y > .xlarge-2 {
      height: -webkit-calc(16.66667% - 1.66667rem);
      height: calc(16.66667% - 1.66667rem); }
    .grid-margin-y > .xlarge-3 {
      height: -webkit-calc(25% - 1.66667rem);
      height: calc(25% - 1.66667rem); }
    .grid-margin-y > .xlarge-4 {
      height: -webkit-calc(33.33333% - 1.66667rem);
      height: calc(33.33333% - 1.66667rem); }
    .grid-margin-y > .xlarge-5 {
      height: -webkit-calc(41.66667% - 1.66667rem);
      height: calc(41.66667% - 1.66667rem); }
    .grid-margin-y > .xlarge-6 {
      height: -webkit-calc(50% - 1.66667rem);
      height: calc(50% - 1.66667rem); }
    .grid-margin-y > .xlarge-7 {
      height: -webkit-calc(58.33333% - 1.66667rem);
      height: calc(58.33333% - 1.66667rem); }
    .grid-margin-y > .xlarge-8 {
      height: -webkit-calc(66.66667% - 1.66667rem);
      height: calc(66.66667% - 1.66667rem); }
    .grid-margin-y > .xlarge-9 {
      height: -webkit-calc(75% - 1.66667rem);
      height: calc(75% - 1.66667rem); }
    .grid-margin-y > .xlarge-10 {
      height: -webkit-calc(83.33333% - 1.66667rem);
      height: calc(83.33333% - 1.66667rem); }
    .grid-margin-y > .xlarge-11 {
      height: -webkit-calc(91.66667% - 1.66667rem);
      height: calc(91.66667% - 1.66667rem); }
    .grid-margin-y > .xlarge-12 {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem); } }
  @media screen and (min-width: 90em) {
    .grid-margin-y > .xxlarge-auto {
      height: auto; }
    .grid-margin-y > .xxlarge-shrink {
      height: auto; }
    .grid-margin-y > .xxlarge-1 {
      height: -webkit-calc(8.33333% - 1.66667rem);
      height: calc(8.33333% - 1.66667rem); }
    .grid-margin-y > .xxlarge-2 {
      height: -webkit-calc(16.66667% - 1.66667rem);
      height: calc(16.66667% - 1.66667rem); }
    .grid-margin-y > .xxlarge-3 {
      height: -webkit-calc(25% - 1.66667rem);
      height: calc(25% - 1.66667rem); }
    .grid-margin-y > .xxlarge-4 {
      height: -webkit-calc(33.33333% - 1.66667rem);
      height: calc(33.33333% - 1.66667rem); }
    .grid-margin-y > .xxlarge-5 {
      height: -webkit-calc(41.66667% - 1.66667rem);
      height: calc(41.66667% - 1.66667rem); }
    .grid-margin-y > .xxlarge-6 {
      height: -webkit-calc(50% - 1.66667rem);
      height: calc(50% - 1.66667rem); }
    .grid-margin-y > .xxlarge-7 {
      height: -webkit-calc(58.33333% - 1.66667rem);
      height: calc(58.33333% - 1.66667rem); }
    .grid-margin-y > .xxlarge-8 {
      height: -webkit-calc(66.66667% - 1.66667rem);
      height: calc(66.66667% - 1.66667rem); }
    .grid-margin-y > .xxlarge-9 {
      height: -webkit-calc(75% - 1.66667rem);
      height: calc(75% - 1.66667rem); }
    .grid-margin-y > .xxlarge-10 {
      height: -webkit-calc(83.33333% - 1.66667rem);
      height: calc(83.33333% - 1.66667rem); }
    .grid-margin-y > .xxlarge-11 {
      height: -webkit-calc(91.66667% - 1.66667rem);
      height: calc(91.66667% - 1.66667rem); }
    .grid-margin-y > .xxlarge-12 {
      height: -webkit-calc(100% - 1.66667rem);
      height: calc(100% - 1.66667rem); } }

.grid-frame {
  width: 100vw;
  overflow: hidden;
  position: relative;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.cell .grid-frame {
  width: 100%; }

.cell-block {
  overflow-x: auto;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-stype: -ms-autohiding-scrollbar; }

.cell-block-y {
  overflow-y: auto;
  max-height: 100%;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-stype: -ms-autohiding-scrollbar; }

.cell-block-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  max-height: 100%; }
  .cell-block-container > .grid-x {
    max-height: 100%;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }

@media print, screen and (min-width: 40em) {
  .medium-grid-frame {
    width: 100vw;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .cell .medium-grid-frame {
    width: 100%; }
  .medium-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; }
  .medium-cell-block-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-height: 100%; }
    .medium-cell-block-container > .grid-x {
      max-height: 100%;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap; }
  .medium-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; } }

@media print, screen and (min-width: 64em) {
  .large-grid-frame {
    width: 100vw;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .cell .large-grid-frame {
    width: 100%; }
  .large-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; }
  .large-cell-block-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-height: 100%; }
    .large-cell-block-container > .grid-x {
      max-height: 100%;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap; }
  .large-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; } }

@media screen and (min-width: 75em) {
  .xlarge-grid-frame {
    width: 100vw;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .cell .xlarge-grid-frame {
    width: 100%; }
  .xlarge-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; }
  .xlarge-cell-block-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-height: 100%; }
    .xlarge-cell-block-container > .grid-x {
      max-height: 100%;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap; }
  .xlarge-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; } }

@media screen and (min-width: 90em) {
  .xxlarge-grid-frame {
    width: 100vw;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .cell .xxlarge-grid-frame {
    width: 100%; }
  .xxlarge-cell-block {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; }
  .xxlarge-cell-block-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    max-height: 100%; }
    .xxlarge-cell-block-container > .grid-x {
      max-height: 100%;
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap; }
  .xxlarge-cell-block-y {
    overflow-y: auto;
    max-height: 100%;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-stype: -ms-autohiding-scrollbar; } }

.grid-y.grid-frame {
  width: auto;
  height: 100vh;
  overflow: hidden;
  position: relative;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

@media print, screen and (min-width: 40em) {
  .grid-y.medium-grid-frame {
    width: auto;
    height: 100vh;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; } }

@media print, screen and (min-width: 64em) {
  .grid-y.large-grid-frame {
    width: auto;
    height: 100vh;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; } }

@media screen and (min-width: 75em) {
  .grid-y.xlarge-grid-frame {
    width: auto;
    height: 100vh;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; } }

@media screen and (min-width: 90em) {
  .grid-y.xxlarge-grid-frame {
    width: auto;
    height: 100vh;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; } }

.cell .grid-y.grid-frame {
  height: 100%; }

@media print, screen and (min-width: 40em) {
  .cell .grid-y.medium-grid-frame {
    height: 100%; } }

@media print, screen and (min-width: 64em) {
  .cell .grid-y.large-grid-frame {
    height: 100%; } }

@media screen and (min-width: 75em) {
  .cell .grid-y.xlarge-grid-frame {
    height: 100%; } }

@media screen and (min-width: 90em) {
  .cell .grid-y.xxlarge-grid-frame {
    height: 100%; } }

div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
  margin: 0;
  padding: 0; }

p {
  margin-bottom: 1rem;
  font-size: inherit;
  line-height: 1.7;
  text-rendering: optimizeLegibility; }

em,
i {
  font-style: italic;
  line-height: inherit; }

strong,
b {
  font-weight: 700;
  line-height: inherit; }

small {
  font-size: 0.83333rem;
  line-height: inherit; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "PT Sans";
  font-style: normal;
  font-weight: 700;
  color: #1d1500;
  text-rendering: optimizeLegibility; }
  h1 small,
  h2 small,
  h3 small,
  h4 small,
  h5 small,
  h6 small {
    line-height: 0;
    color: #646464; }

h1 {
  font-size: 2.22222rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h2 {
  font-size: 1.77778rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h3 {
  font-size: 1.05556rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h4 {
  font-size: 1rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h5 {
  font-size: 0.94444rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

h6 {
  font-size: 0.88889rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem; }

@media print, screen and (min-width: 40em) {
  h1 {
    font-size: 2.66667rem; }
  h2 {
    font-size: 2.22222rem; }
  h3 {
    font-size: 1.72222rem; }
  h4 {
    font-size: 1.38889rem; }
  h5 {
    font-size: 1.11111rem; }
  h6 {
    font-size: 0.88889rem; } }

a {
  line-height: inherit;
  color: #fbba00;
  text-decoration: none;
  cursor: pointer; }
  a:hover, a:focus {
    color: #d8a000; }
  a img {
    border: 0; }

hr {
  clear: both;
  max-width: 66.66667rem;
  height: 0;
  margin: 1.11111rem auto;
  border-top: 0;
  border-right: 0;
  border-bottom: 1px solid #fbba00;
  border-left: 0; }

ul,
ol,
dl {
  margin-bottom: 1rem;
  list-style-position: outside;
  line-height: 1.7; }

li {
  font-size: inherit; }

ul {
  margin-left: 1.25rem;
  list-style-type: disc; }

ol {
  margin-left: 1.25rem; }

ul ul, ol ul, ul ol, ol ol {
  margin-left: 1.25rem;
  margin-bottom: 0; }

dl {
  margin-bottom: 1rem; }
  dl dt {
    margin-bottom: 0.3rem;
    font-weight: 700; }

blockquote {
  margin: 0 0 1rem;
  padding: 0.5rem 1.11111rem 0 1.05556rem;
  border-left: 1px solid #646464; }
  blockquote, blockquote p {
    line-height: 1.7;
    color: #505050; }

cite {
  display: block;
  font-size: 0.72222rem;
  color: #505050; }
  cite:before {
    content: "— "; }

abbr, abbr[title] {
  border-bottom: 1px dotted #1d1500;
  cursor: help;
  text-decoration: none; }

figure {
  margin: 0; }

code {
  padding: 0.11111rem 0.27778rem 0.05556rem;
  border: 1px solid #646464;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  font-weight: normal;
  color: #1d1500; }

kbd {
  margin: 0;
  padding: 0.11111rem 0.22222rem 0;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  color: #1d1500;
  border-radius: 1px; }

.subheader {
  margin-top: 0.2rem;
  margin-bottom: 0.5rem;
  font-weight: normal;
  line-height: 1.4;
  color: #505050; }

.lead {
  font-size: 1.35rem;
  line-height: 1.6; }

.stat {
  font-size: 2.5rem;
  line-height: 1; }
  p + .stat {
    margin-top: -1rem; }

ul.no-bullet, ol.no-bullet {
  margin-left: 0;
  list-style: none; }

.text-left {
  text-align: left; }

.text-right {
  text-align: right; }

.text-center {
  text-align: center; }

.text-justify {
  text-align: justify; }

@media print, screen and (min-width: 40em) {
  .medium-text-left {
    text-align: left; }
  .medium-text-right {
    text-align: right; }
  .medium-text-center {
    text-align: center; }
  .medium-text-justify {
    text-align: justify; } }

@media print, screen and (min-width: 64em) {
  .large-text-left {
    text-align: left; }
  .large-text-right {
    text-align: right; }
  .large-text-center {
    text-align: center; }
  .large-text-justify {
    text-align: justify; } }

@media screen and (min-width: 75em) {
  .xlarge-text-left {
    text-align: left; }
  .xlarge-text-right {
    text-align: right; }
  .xlarge-text-center {
    text-align: center; }
  .xlarge-text-justify {
    text-align: justify; } }

@media screen and (min-width: 90em) {
  .xxlarge-text-left {
    text-align: left; }
  .xxlarge-text-right {
    text-align: right; }
  .xxlarge-text-center {
    text-align: center; }
  .xxlarge-text-justify {
    text-align: justify; } }

.show-for-print {
  display: none !important; }

@media print {
  * {
    background: transparent !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    color: black !important;
    text-shadow: none !important; }
  .show-for-print {
    display: block !important; }
  .hide-for-print {
    display: none !important; }
  table.show-for-print {
    display: table !important; }
  thead.show-for-print {
    display: table-header-group !important; }
  tbody.show-for-print {
    display: table-row-group !important; }
  tr.show-for-print {
    display: table-row !important; }
  td.show-for-print {
    display: table-cell !important; }
  th.show-for-print {
    display: table-cell !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  .ir a:after,
  a[href^='javascript:']:after,
  a[href^='#']:after {
    content: ''; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  pre,
  blockquote {
    border: 1px solid #505050;
    page-break-inside: avoid; }
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  @page {
    margin: 0.5cm; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; }
  .print-break-inside {
    page-break-inside: auto; } }

.button {
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem 0;
  font-family: inherit;
  padding: 0.65em 1.35em;
  -webkit-appearance: none;
  border: 1px solid transparent;
  border-radius: 1px;
  -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  font-size: 0.9rem;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  background-color: #fbba00;
  color: #fefefe; }
  [data-whatinput='mouse'] .button {
    outline: 0; }
  .button:hover, .button:focus {
    background-color: #d59e00;
    color: #fefefe; }
  .button.tiny {
    font-size: 0.6rem; }
  .button.small {
    font-size: 0.75rem; }
  .button.large {
    font-size: 1.25rem; }
  .button.expanded {
    display: block;
    width: 100%;
    margin-right: 0;
    margin-left: 0; }
  .button.primary {
    background-color: #fbba00;
    color: #1d1500; }
    .button.primary:hover, .button.primary:focus {
      background-color: #c99500;
      color: #1d1500; }
  .button.secondary {
    background-color: #516f84;
    color: #fefefe; }
    .button.secondary:hover, .button.secondary:focus {
      background-color: #41596a;
      color: #fefefe; }
  .button.success {
    background-color: #3adb76;
    color: #1d1500; }
    .button.success:hover, .button.success:focus {
      background-color: #22bb5b;
      color: #1d1500; }
  .button.warning {
    background-color: #ffae00;
    color: #1d1500; }
    .button.warning:hover, .button.warning:focus {
      background-color: #cc8b00;
      color: #1d1500; }
  .button.alert {
    background-color: #cc4b37;
    color: #fefefe; }
    .button.alert:hover, .button.alert:focus {
      background-color: #a53b2a;
      color: #fefefe; }
  .button.disabled, .button[disabled] {
    opacity: 0.25;
    cursor: not-allowed; }
    .button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus {
      background-color: #fbba00;
      color: #fefefe; }
    .button.disabled.primary, .button[disabled].primary {
      opacity: 0.25;
      cursor: not-allowed; }
      .button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus {
        background-color: #fbba00;
        color: #1d1500; }
    .button.disabled.secondary, .button[disabled].secondary {
      opacity: 0.25;
      cursor: not-allowed; }
      .button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
        background-color: #516f84;
        color: #fefefe; }
    .button.disabled.success, .button[disabled].success {
      opacity: 0.25;
      cursor: not-allowed; }
      .button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus {
        background-color: #3adb76;
        color: #1d1500; }
    .button.disabled.warning, .button[disabled].warning {
      opacity: 0.25;
      cursor: not-allowed; }
      .button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus {
        background-color: #ffae00;
        color: #1d1500; }
    .button.disabled.alert, .button[disabled].alert {
      opacity: 0.25;
      cursor: not-allowed; }
      .button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus {
        background-color: #cc4b37;
        color: #fefefe; }
  .button.hollow {
    border: 1px solid #fbba00;
    color: #fbba00; }
    .button.hollow, .button.hollow:hover, .button.hollow:focus {
      background-color: transparent; }
    .button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus {
      background-color: transparent; }
    .button.hollow:hover, .button.hollow:focus {
      border-color: #7e5d00;
      color: #7e5d00; }
      .button.hollow:hover.disabled, .button.hollow:hover[disabled], .button.hollow:focus.disabled, .button.hollow:focus[disabled] {
        border: 1px solid #fbba00;
        color: #fbba00; }
    .button.hollow.primary {
      border: 1px solid #fbba00;
      color: #fbba00; }
      .button.hollow.primary:hover, .button.hollow.primary:focus {
        border-color: #7e5d00;
        color: #7e5d00; }
        .button.hollow.primary:hover.disabled, .button.hollow.primary:hover[disabled], .button.hollow.primary:focus.disabled, .button.hollow.primary:focus[disabled] {
          border: 1px solid #fbba00;
          color: #fbba00; }
    .button.hollow.secondary {
      border: 1px solid #516f84;
      color: #516f84; }
      .button.hollow.secondary:hover, .button.hollow.secondary:focus {
        border-color: #293842;
        color: #293842; }
        .button.hollow.secondary:hover.disabled, .button.hollow.secondary:hover[disabled], .button.hollow.secondary:focus.disabled, .button.hollow.secondary:focus[disabled] {
          border: 1px solid #516f84;
          color: #516f84; }
    .button.hollow.success {
      border: 1px solid #3adb76;
      color: #3adb76; }
      .button.hollow.success:hover, .button.hollow.success:focus {
        border-color: #157539;
        color: #157539; }
        .button.hollow.success:hover.disabled, .button.hollow.success:hover[disabled], .button.hollow.success:focus.disabled, .button.hollow.success:focus[disabled] {
          border: 1px solid #3adb76;
          color: #3adb76; }
    .button.hollow.warning {
      border: 1px solid #ffae00;
      color: #ffae00; }
      .button.hollow.warning:hover, .button.hollow.warning:focus {
        border-color: #805700;
        color: #805700; }
        .button.hollow.warning:hover.disabled, .button.hollow.warning:hover[disabled], .button.hollow.warning:focus.disabled, .button.hollow.warning:focus[disabled] {
          border: 1px solid #ffae00;
          color: #ffae00; }
    .button.hollow.alert {
      border: 1px solid #cc4b37;
      color: #cc4b37; }
      .button.hollow.alert:hover, .button.hollow.alert:focus {
        border-color: #67251a;
        color: #67251a; }
        .button.hollow.alert:hover.disabled, .button.hollow.alert:hover[disabled], .button.hollow.alert:focus.disabled, .button.hollow.alert:focus[disabled] {
          border: 1px solid #cc4b37;
          color: #cc4b37; }
  .button.clear {
    border: 1px solid #fbba00;
    color: #fbba00; }
    .button.clear, .button.clear:hover, .button.clear:focus {
      background-color: transparent; }
    .button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus {
      background-color: transparent; }
    .button.clear:hover, .button.clear:focus {
      border-color: #7e5d00;
      color: #7e5d00; }
      .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus.disabled, .button.clear:focus[disabled] {
        border: 1px solid #fbba00;
        color: #fbba00; }
    .button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear:hover, .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus, .button.clear:focus.disabled, .button.clear:focus[disabled] {
      border-color: transparent; }
    .button.clear.primary {
      border: 1px solid #fbba00;
      color: #fbba00; }
      .button.clear.primary:hover, .button.clear.primary:focus {
        border-color: #7e5d00;
        color: #7e5d00; }
        .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
          border: 1px solid #fbba00;
          color: #fbba00; }
      .button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary:hover, .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus, .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
        border-color: transparent; }
    .button.clear.secondary {
      border: 1px solid #516f84;
      color: #516f84; }
      .button.clear.secondary:hover, .button.clear.secondary:focus {
        border-color: #293842;
        color: #293842; }
        .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
          border: 1px solid #516f84;
          color: #516f84; }
      .button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary:hover, .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus, .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
        border-color: transparent; }
    .button.clear.success {
      border: 1px solid #3adb76;
      color: #3adb76; }
      .button.clear.success:hover, .button.clear.success:focus {
        border-color: #157539;
        color: #157539; }
        .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
          border: 1px solid #3adb76;
          color: #3adb76; }
      .button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success:hover, .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus, .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
        border-color: transparent; }
    .button.clear.warning {
      border: 1px solid #ffae00;
      color: #ffae00; }
      .button.clear.warning:hover, .button.clear.warning:focus {
        border-color: #805700;
        color: #805700; }
        .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
          border: 1px solid #ffae00;
          color: #ffae00; }
      .button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning:hover, .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus, .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
        border-color: transparent; }
    .button.clear.alert {
      border: 1px solid #cc4b37;
      color: #cc4b37; }
      .button.clear.alert:hover, .button.clear.alert:focus {
        border-color: #67251a;
        color: #67251a; }
        .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
          border: 1px solid #cc4b37;
          color: #cc4b37; }
      .button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert:hover, .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus, .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
        border-color: transparent; }
  .button.dropdown::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 0.4em;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #fefefe transparent transparent;
    position: relative;
    top: 0.4em;
    display: inline-block;
    float: right;
    margin-left: 1.35em; }
  .button.dropdown.hollow::after {
    border-top-color: #fbba00; }
  .button.dropdown.hollow.primary::after {
    border-top-color: #fbba00; }
  .button.dropdown.hollow.secondary::after {
    border-top-color: #516f84; }
  .button.dropdown.hollow.success::after {
    border-top-color: #3adb76; }
  .button.dropdown.hollow.warning::after {
    border-top-color: #ffae00; }
  .button.dropdown.hollow.alert::after {
    border-top-color: #cc4b37; }
  .button.arrow-only::after {
    top: -0.1em;
    float: none;
    margin-left: 0; }

[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
textarea {
  display: block;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  width: 100%;
  height: 2.25rem;
  margin: 0 0 0.88889rem;
  padding: 0.44444rem;
  border: 1px solid #646464;
  border-radius: 1px;
  background-color: #fefefe;
  -webkit-box-shadow: inset 0 1px 2px rgba(251, 186, 0, 0.1);
          box-shadow: inset 0 1px 2px rgba(251, 186, 0, 0.1);
  font-family: inherit;
  font-size: 0.83333rem;
  font-weight: normal;
  line-height: 1.7;
  color: #1d1500;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none; }
  [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus,
  textarea:focus {
    outline: none;
    border: 1px solid #fbba00;
    background-color: #fefefe;
    -webkit-box-shadow: 0 0 5px #fbba00;
            box-shadow: 0 0 5px #fbba00;
    -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
    transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
    transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
    transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s; }

textarea {
  max-width: 100%; }
  textarea[rows] {
    height: auto; }

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #646464; }

input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #646464; }

input::placeholder,
textarea::placeholder {
  color: #646464; }

input:disabled, input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #e6e6e6;
  cursor: not-allowed; }

[type='submit'],
[type='button'] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border-radius: 1px; }

input[type='search'] {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }

[type='file'],
[type='checkbox'],
[type='radio'] {
  margin: 0 0 0.88889rem; }

[type='checkbox'] + label,
[type='radio'] + label {
  display: inline-block;
  vertical-align: baseline;
  margin-left: 0.44444rem;
  margin-right: 0.88889rem;
  margin-bottom: 0; }
  [type='checkbox'] + label[for],
  [type='radio'] + label[for] {
    cursor: pointer; }

label > [type='checkbox'],
label > [type='radio'] {
  margin-right: 0.44444rem; }

[type='file'] {
  width: 100%; }

label {
  display: block;
  margin: 0;
  font-size: 0.77778rem;
  font-weight: normal;
  line-height: 1.8;
  color: #1d1500; }
  label.middle {
    margin: 0 0 0.88889rem;
    padding: 0.5rem 0; }

.help-text {
  margin-top: -0.44444rem;
  font-size: 0.72222rem;
  font-style: italic;
  color: #1d1500; }

.input-group {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  margin-bottom: 0.88889rem;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }
  .input-group > :first-child {
    border-radius: 1px 0 0 1px; }
  .input-group > :last-child > * {
    border-radius: 0 1px 1px 0; }

.input-group-label, .input-group-field, .input-group-button, .input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  margin: 0;
  white-space: nowrap; }

.input-group-label {
  padding: 0 1rem;
  border: 1px solid #646464;
  background: #e6e6e6;
  color: #1d1500;
  text-align: center;
  white-space: nowrap;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .input-group-label:first-child {
    border-right: 0; }
  .input-group-label:last-child {
    border-left: 0; }

.input-group-field {
  border-radius: 0;
  -webkit-box-flex: 1;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px;
  height: auto;
  min-width: 0; }

.input-group-button {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto; }
  .input-group-button a,
  .input-group-button input,
  .input-group-button button,
  .input-group-button label {
    height: 2.16667rem;
    padding-top: 0;
    padding-bottom: 0;
    font-size: 0.83333rem; }

fieldset {
  margin: 0;
  padding: 0;
  border: 0; }

legend {
  max-width: 100%;
  margin-bottom: 0.44444rem; }

.fieldset {
  margin: 1rem 0;
  padding: 1.11111rem;
  border: 1px solid #646464; }
  .fieldset legend {
    margin: 0;
    margin-left: -0.16667rem;
    padding: 0 0.16667rem; }

select {
  height: 2.25rem;
  margin: 0 0 0.88889rem;
  padding: 0.44444rem;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: 1px solid #646464;
  border-radius: 1px;
  background-color: #fefefe;
  font-family: inherit;
  font-size: 0.83333rem;
  font-weight: normal;
  line-height: 1.7;
  color: #1d1500;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%2880, 80, 80%29'></polygon></svg>");
  background-origin: content-box;
  background-position: right -0.88889rem center;
  background-repeat: no-repeat;
  background-size: 9px 6px;
  padding-right: 1.33333rem;
  -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s; }
  @media screen and (min-width: 0\0) {
    select {
      background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }
  select:focus {
    outline: none;
    border: 1px solid #fbba00;
    background-color: #fefefe;
    -webkit-box-shadow: 0 0 5px #fbba00;
            box-shadow: 0 0 5px #fbba00;
    -webkit-transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
    transition: border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s;
    transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
    transition: box-shadow 0.5s, border-color 0.25s ease-in-out, -webkit-box-shadow 0.5s; }
  select:disabled {
    background-color: #e6e6e6;
    cursor: not-allowed; }
  select::-ms-expand {
    display: none; }
  select[multiple] {
    height: auto;
    background-image: none; }

.is-invalid-input:not(:focus) {
  border-color: #cc4b37;
  background-color: #f9ecea; }
  .is-invalid-input:not(:focus)::-webkit-input-placeholder {
    color: #cc4b37; }
  .is-invalid-input:not(:focus):-ms-input-placeholder {
    color: #cc4b37; }
  .is-invalid-input:not(:focus)::placeholder {
    color: #cc4b37; }

.is-invalid-label {
  color: #cc4b37; }

.form-error {
  display: none;
  margin-top: -0.44444rem;
  margin-bottom: 0.88889rem;
  font-size: 0.66667rem;
  font-weight: 700;
  color: #cc4b37; }
  .form-error.is-visible {
    display: block; }

.accordion {
  margin-left: 0;
  background: #fefefe;
  list-style-type: none; }
  .accordion[disabled] .accordion-title {
    cursor: not-allowed; }

.accordion-item:first-child > :first-child {
  border-radius: 1px 1px 0 0; }

.accordion-item:last-child > :last-child {
  border-radius: 0 0 1px 1px; }

.accordion-title {
  position: relative;
  display: block;
  padding: 0.75rem 1rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  font-size: 1.125rem;
  line-height: 1;
  color: #1d1500; }
  :last-child:not(.is-active) > .accordion-title {
    border-bottom: 1px solid #e6e6e6;
    border-radius: 0 0 1px 1px; }
  .accordion-title:hover, .accordion-title:focus {
    background-color: #e6e6e6; }
  .accordion-title::before {
    position: absolute;
    top: 50%;
    right: 1rem;
    margin-top: -0.5rem;
    content: '+'; }
  .is-active > .accordion-title::before {
    content: '\2013'; }

.accordion-content {
  display: none;
  padding: 0.5rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  background-color: #fefefe;
  color: #646464; }
  :last-child > .accordion-content:last-child {
    border-bottom: 1px solid #e6e6e6; }

.accordion-menu li {
  width: 100%; }

.accordion-menu a {
  padding: 0.7rem 1rem; }

.accordion-menu .is-accordion-submenu a {
  padding: 0.7rem 1rem; }

.accordion-menu .nested.is-accordion-submenu {
  margin-right: 0;
  margin-left: 1rem; }

.accordion-menu.align-right .nested.is-accordion-submenu {
  margin-right: 1rem;
  margin-left: 0; }

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a {
  position: relative; }
  .accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #fbba00 transparent transparent;
    position: absolute;
    top: 50%;
    margin-top: -3px;
    right: 1rem; }

.accordion-menu.align-left .is-accordion-submenu-parent > a::after {
  left: auto;
  right: 1rem; }

.accordion-menu.align-right .is-accordion-submenu-parent > a::after {
  right: auto;
  left: 1rem; }

.accordion-menu .is-accordion-submenu-parent[aria-expanded='true'] > a::after {
  -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
          transform: rotate(180deg);
  -webkit-transform-origin: 50% 50%;
      -ms-transform-origin: 50% 50%;
          transform-origin: 50% 50%; }

.is-accordion-submenu-parent {
  position: relative; }

.has-submenu-toggle > a {
  margin-right: 40px; }

.submenu-toggle {
  position: absolute;
  top: 0;
  right: 0;
  cursor: pointer;
  width: 40px;
  height: 40px; }
  .submenu-toggle::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #fbba00 transparent transparent;
    top: 0;
    bottom: 0;
    margin: auto; }

.submenu-toggle[aria-expanded='true']::after {
  -webkit-transform: scaleY(-1);
      -ms-transform: scaleY(-1);
          transform: scaleY(-1);
  -webkit-transform-origin: 50% 50%;
      -ms-transform-origin: 50% 50%;
          transform-origin: 50% 50%; }

.submenu-toggle-text {
  position: absolute !important;
  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; }

.badge {
  display: inline-block;
  min-width: 2.1em;
  padding: 0.3em;
  border-radius: 50%;
  font-size: 0.6rem;
  text-align: center;
  background: #fbba00;
  color: #fefefe; }
  .badge.primary {
    background: #fbba00;
    color: #1d1500; }
  .badge.secondary {
    background: #516f84;
    color: #fefefe; }
  .badge.success {
    background: #3adb76;
    color: #1d1500; }
  .badge.warning {
    background: #ffae00;
    color: #1d1500; }
  .badge.alert {
    background: #cc4b37;
    color: #fefefe; }

.button-group {
  margin-bottom: 1rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }
  .button-group::before, .button-group::after {
    display: table;
    content: ' ';
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .button-group::after {
    clear: both; }
  .button-group .button {
    margin: 0;
    margin-right: 10px;
    margin-bottom: 10px;
    font-size: 0.9rem;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto; }
    .button-group .button:last-child {
      margin-right: 0; }
  .button-group.tiny .button {
    font-size: 0.6rem; }
  .button-group.small .button {
    font-size: 0.75rem; }
  .button-group.large .button {
    font-size: 1.25rem; }
  .button-group.expanded .button {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px; }
  .button-group.primary .button {
    background-color: #fbba00;
    color: #1d1500; }
    .button-group.primary .button:hover, .button-group.primary .button:focus {
      background-color: #c99500;
      color: #1d1500; }
  .button-group.secondary .button {
    background-color: #516f84;
    color: #fefefe; }
    .button-group.secondary .button:hover, .button-group.secondary .button:focus {
      background-color: #41596a;
      color: #fefefe; }
  .button-group.success .button {
    background-color: #3adb76;
    color: #1d1500; }
    .button-group.success .button:hover, .button-group.success .button:focus {
      background-color: #22bb5b;
      color: #1d1500; }
  .button-group.warning .button {
    background-color: #ffae00;
    color: #1d1500; }
    .button-group.warning .button:hover, .button-group.warning .button:focus {
      background-color: #cc8b00;
      color: #1d1500; }
  .button-group.alert .button {
    background-color: #cc4b37;
    color: #fefefe; }
    .button-group.alert .button:hover, .button-group.alert .button:focus {
      background-color: #a53b2a;
      color: #fefefe; }
  .button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button {
      -webkit-box-flex: 0;
          -ms-flex: 0 0 100%;
              flex: 0 0 100%; }
      .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child {
        margin-bottom: 0; }
  @media print, screen and (min-width: 40em) {
    .button-group.stacked-for-small .button {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      margin-bottom: 0; } }
  @media print, screen and (min-width: 64em) {
    .button-group.stacked-for-medium .button {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px;
      margin-bottom: 0; } }
  @media screen and (max-width: 39.9375em) {
    .button-group.stacked-for-small.expanded {
      display: block; }
      .button-group.stacked-for-small.expanded .button {
        display: block;
        margin-right: 0; } }

.callout {
  position: relative;
  margin: 0 0 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(29, 21, 0, 0.25);
  border-radius: 1px;
  background-color: white;
  color: #646464; }
  .callout > :first-child {
    margin-top: 0; }
  .callout > :last-child {
    margin-bottom: 0; }
  .callout.primary {
    background-color: #fff5d8;
    color: #646464; }
  .callout.secondary {
    background-color: #e3eaee;
    color: #646464; }
  .callout.success {
    background-color: #e1faea;
    color: #646464; }
  .callout.warning {
    background-color: #fff3d9;
    color: #646464; }
  .callout.alert {
    background-color: #f7e4e1;
    color: #646464; }
  .callout.small {
    padding-top: 0.5rem;
    padding-right: 0.5rem;
    padding-bottom: 0.5rem;
    padding-left: 0.5rem; }
  .callout.large {
    padding-top: 3rem;
    padding-right: 3rem;
    padding-bottom: 3rem;
    padding-left: 3rem; }

.card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  margin-bottom: 1rem;
  border: 1px solid #e6e6e6;
  border-radius: 1px;
  background: #fefefe;
  -webkit-box-shadow: none;
          box-shadow: none;
  overflow: hidden;
  color: #646464; }
  .card > :last-child {
    margin-bottom: 0; }

.card-divider {
  -webkit-box-flex: 0;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding: 1rem;
  background: #e6e6e6; }
  .card-divider > :last-child {
    margin-bottom: 0; }

.card-section {
  -webkit-box-flex: 1;
      -ms-flex: 1 0 auto;
          flex: 1 0 auto;
  padding: 1rem; }
  .card-section > :last-child {
    margin-bottom: 0; }

.card-image {
  min-height: 1px; }

.close-button {
  position: absolute;
  color: #505050;
  cursor: pointer; }
  [data-whatinput='mouse'] .close-button {
    outline: 0; }
  .close-button:hover, .close-button:focus {
    color: #1d1500; }
  .close-button.small {
    right: 0.66rem;
    top: 0.33em;
    font-size: 1.5em;
    line-height: 1; }
  .close-button, .close-button.medium {
    right: 1rem;
    top: 0.5rem;
    font-size: 2em;
    line-height: 1; }

.menu {
  padding: 0;
  margin: 0;
  list-style: none;
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  [data-whatinput='mouse'] .menu li {
    outline: 0; }
  .menu a,
  .menu .button {
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    display: block;
    padding: 0.7rem 1rem; }
  .menu input,
  .menu select,
  .menu a,
  .menu button {
    margin-bottom: 0; }
  .menu input {
    display: inline-block; }
  .menu, .menu.horizontal {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .menu.vertical {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .menu.expanded li {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px; }
  .menu.simple {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .menu.simple li + li {
      margin-left: 1rem; }
    .menu.simple a {
      padding: 0; }
  @media print, screen and (min-width: 40em) {
    .menu.medium-horizontal {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
          -ms-flex-direction: row;
              flex-direction: row; }
    .menu.medium-vertical {
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column; }
    .menu.medium-expanded li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; }
    .menu.medium-simple li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; } }
  @media print, screen and (min-width: 64em) {
    .menu.large-horizontal {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
          -ms-flex-direction: row;
              flex-direction: row; }
    .menu.large-vertical {
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column; }
    .menu.large-expanded li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; }
    .menu.large-simple li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; } }
  @media screen and (min-width: 75em) {
    .menu.xlarge-horizontal {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
          -ms-flex-direction: row;
              flex-direction: row; }
    .menu.xlarge-vertical {
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column; }
    .menu.xlarge-expanded li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; }
    .menu.xlarge-simple li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; } }
  @media screen and (min-width: 90em) {
    .menu.xxlarge-horizontal {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
          -ms-flex-direction: row;
              flex-direction: row; }
    .menu.xxlarge-vertical {
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column; }
    .menu.xxlarge-expanded li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; }
    .menu.xxlarge-simple li {
      -webkit-box-flex: 1;
          -ms-flex: 1 1 0px;
              flex: 1 1 0px; } }
  .menu.nested {
    margin-right: 0;
    margin-left: 1rem; }
  .menu.icons a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .menu.icon-left li a {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-flow: row nowrap;
            flex-flow: row nowrap; }
    .menu.icon-left li a img,
    .menu.icon-left li a i,
    .menu.icon-left li a svg {
      margin-right: 0.25rem; }
  .menu.icon-right li a {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-flow: row nowrap;
            flex-flow: row nowrap; }
    .menu.icon-right li a img,
    .menu.icon-right li a i,
    .menu.icon-right li a svg {
      margin-left: 0.25rem; }
  .menu.icon-top li a {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column nowrap;
            flex-flow: column nowrap; }
    .menu.icon-top li a img,
    .menu.icon-top li a i,
    .menu.icon-top li a svg {
      -ms-flex-item-align: stretch;
          align-self: stretch;
      margin-bottom: 0.25rem;
      text-align: center; }
  .menu.icon-bottom li a {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-flow: column nowrap;
            flex-flow: column nowrap; }
    .menu.icon-bottom li a img,
    .menu.icon-bottom li a i,
    .menu.icon-bottom li a svg {
      -ms-flex-item-align: stretch;
          align-self: stretch;
      margin-bottom: 0.25rem;
      text-align: center; }
  .menu .is-active > a {
    background: none;
    color: #223038; }
  .menu .active > a {
    background: none;
    color: #223038; }
  .menu.align-left {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .menu.align-right li {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
    .menu.align-right li .submenu li {
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: flex-start; }
  .menu.align-right.vertical li {
    display: block;
    text-align: right; }
    .menu.align-right.vertical li .submenu li {
      text-align: right; }
  .menu.align-right .nested {
    margin-right: 1rem;
    margin-left: 0; }
  .menu.align-center li {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
    .menu.align-center li .submenu li {
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: flex-start; }
  .menu .menu-text {
    padding: 0.7rem 1rem;
    font-weight: bold;
    line-height: 1;
    color: inherit; }

.menu-centered > .menu {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  .menu-centered > .menu li {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
    .menu-centered > .menu li .submenu li {
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: flex-start; }

.no-js [data-responsive-menu] ul {
  display: none; }

.menu-icon {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer; }
  .menu-icon::after {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 2px;
    background: #fefefe;
    -webkit-box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe;
            box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe;
    content: ''; }
  .menu-icon:hover::after {
    background: #646464;
    -webkit-box-shadow: 0 7px 0 #646464, 0 14px 0 #646464;
            box-shadow: 0 7px 0 #646464, 0 14px 0 #646464; }

.menu-icon.dark {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer; }
  .menu-icon.dark::after {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 2px;
    background: #1d1500;
    -webkit-box-shadow: 0 7px 0 #1d1500, 0 14px 0 #1d1500;
            box-shadow: 0 7px 0 #1d1500, 0 14px 0 #1d1500;
    content: ''; }
  .menu-icon.dark:hover::after {
    background: #505050;
    -webkit-box-shadow: 0 7px 0 #505050, 0 14px 0 #505050;
            box-shadow: 0 7px 0 #505050, 0 14px 0 #505050; }

.label {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  border-radius: 3px;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  background: #fbba00;
  color: #fefefe; }
  .label.primary {
    background: #fbba00;
    color: #1d1500; }
  .label.secondary {
    background: #516f84;
    color: #fefefe; }
  .label.success {
    background: #3adb76;
    color: #1d1500; }
  .label.warning {
    background: #ffae00;
    color: #1d1500; }
  .label.alert {
    background: #cc4b37;
    color: #fefefe; }

.media-object {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  margin-bottom: 1rem;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .media-object img {
    max-width: none; }
  @media screen and (max-width: 39.9375em) {
    .media-object.stack-for-small {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap; } }
  @media screen and (max-width: 39.9375em) {
    .media-object.stack-for-small .media-object-section {
      padding: 0;
      padding-bottom: 1rem;
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%;
      max-width: 100%; }
      .media-object.stack-for-small .media-object-section img {
        width: 100%; } }

.media-object-section {
  -webkit-box-flex: 0;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto; }
  .media-object-section:first-child {
    padding-right: 1rem; }
  .media-object-section:last-child:not(:nth-child(2)) {
    padding-left: 1rem; }
  .media-object-section > :last-child {
    margin-bottom: 0; }
  .media-object-section.main-section {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 0px;
            flex: 1 1 0px; }

.is-off-canvas-open {
  overflow: hidden; }

.js-off-canvas-overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 11;
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 0.5s ease, visibility 0.5s ease;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  background: rgba(254, 254, 254, 0.25);
  opacity: 0;
  visibility: hidden;
  overflow: hidden; }
  .js-off-canvas-overlay.is-visible {
    opacity: 1;
    visibility: visible; }
  .js-off-canvas-overlay.is-closable {
    cursor: pointer; }
  .js-off-canvas-overlay.is-overlay-absolute {
    position: absolute; }
  .js-off-canvas-overlay.is-overlay-fixed {
    position: fixed; }

.off-canvas-wrapper {
  position: relative;
  overflow: hidden; }

.off-canvas {
  position: fixed;
  z-index: 12;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #223038; }
  [data-whatinput='mouse'] .off-canvas {
    outline: 0; }
  .off-canvas.is-transition-push {
    z-index: 12; }
  .off-canvas.is-closed {
    visibility: hidden; }
  .off-canvas.is-transition-overlap {
    z-index: 13; }
    .off-canvas.is-transition-overlap.is-open {
      -webkit-box-shadow: 0 0 10px rgba(29, 21, 0, 0.7);
              box-shadow: 0 0 10px rgba(29, 21, 0, 0.7); }
  .off-canvas.is-open {
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

.off-canvas-absolute {
  position: absolute;
  z-index: 12;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #223038; }
  [data-whatinput='mouse'] .off-canvas-absolute {
    outline: 0; }
  .off-canvas-absolute.is-transition-push {
    z-index: 12; }
  .off-canvas-absolute.is-closed {
    visibility: hidden; }
  .off-canvas-absolute.is-transition-overlap {
    z-index: 13; }
    .off-canvas-absolute.is-transition-overlap.is-open {
      -webkit-box-shadow: 0 0 10px rgba(29, 21, 0, 0.7);
              box-shadow: 0 0 10px rgba(29, 21, 0, 0.7); }
  .off-canvas-absolute.is-open {
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

.position-left {
  top: 0;
  left: 0;
  width: 250px;
  height: 100%;
  -webkit-transform: translateX(-250px);
      -ms-transform: translateX(-250px);
          transform: translateX(-250px);
  overflow-y: auto; }
  .off-canvas-content .off-canvas.position-left {
    -webkit-transform: translateX(-250px);
        -ms-transform: translateX(-250px);
            transform: translateX(-250px); }
    .off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open {
      -webkit-transform: translate(0, 0);
          -ms-transform: translate(0, 0);
              transform: translate(0, 0); }
  .off-canvas-content.is-open-left.has-transition-push {
    -webkit-transform: translateX(250px);
        -ms-transform: translateX(250px);
            transform: translateX(250px); }
  .position-left.is-transition-push {
    -webkit-box-shadow: inset -13px 0 20px -13px rgba(29, 21, 0, 0.25);
            box-shadow: inset -13px 0 20px -13px rgba(29, 21, 0, 0.25); }

.position-right {
  top: 0;
  right: 0;
  width: 250px;
  height: 100%;
  -webkit-transform: translateX(250px);
      -ms-transform: translateX(250px);
          transform: translateX(250px);
  overflow-y: auto; }
  .off-canvas-content .off-canvas.position-right {
    -webkit-transform: translateX(250px);
        -ms-transform: translateX(250px);
            transform: translateX(250px); }
    .off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open {
      -webkit-transform: translate(0, 0);
          -ms-transform: translate(0, 0);
              transform: translate(0, 0); }
  .off-canvas-content.is-open-right.has-transition-push {
    -webkit-transform: translateX(-250px);
        -ms-transform: translateX(-250px);
            transform: translateX(-250px); }
  .position-right.is-transition-push {
    -webkit-box-shadow: inset 13px 0 20px -13px rgba(29, 21, 0, 0.25);
            box-shadow: inset 13px 0 20px -13px rgba(29, 21, 0, 0.25); }

.position-top {
  top: 0;
  left: 0;
  width: 100%;
  height: 250px;
  -webkit-transform: translateY(-250px);
      -ms-transform: translateY(-250px);
          transform: translateY(-250px);
  overflow-x: auto; }
  .off-canvas-content .off-canvas.position-top {
    -webkit-transform: translateY(-250px);
        -ms-transform: translateY(-250px);
            transform: translateY(-250px); }
    .off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open {
      -webkit-transform: translate(0, 0);
          -ms-transform: translate(0, 0);
              transform: translate(0, 0); }
  .off-canvas-content.is-open-top.has-transition-push {
    -webkit-transform: translateY(250px);
        -ms-transform: translateY(250px);
            transform: translateY(250px); }
  .position-top.is-transition-push {
    -webkit-box-shadow: inset 0 -13px 20px -13px rgba(29, 21, 0, 0.25);
            box-shadow: inset 0 -13px 20px -13px rgba(29, 21, 0, 0.25); }

.position-bottom {
  bottom: 0;
  left: 0;
  width: 100%;
  height: 250px;
  -webkit-transform: translateY(250px);
      -ms-transform: translateY(250px);
          transform: translateY(250px);
  overflow-x: auto; }
  .off-canvas-content .off-canvas.position-bottom {
    -webkit-transform: translateY(250px);
        -ms-transform: translateY(250px);
            transform: translateY(250px); }
    .off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open {
      -webkit-transform: translate(0, 0);
          -ms-transform: translate(0, 0);
              transform: translate(0, 0); }
  .off-canvas-content.is-open-bottom.has-transition-push {
    -webkit-transform: translateY(-250px);
        -ms-transform: translateY(-250px);
            transform: translateY(-250px); }
  .position-bottom.is-transition-push {
    -webkit-box-shadow: inset 0 13px 20px -13px rgba(29, 21, 0, 0.25);
            box-shadow: inset 0 13px 20px -13px rgba(29, 21, 0, 0.25); }

.off-canvas-content {
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }
  .off-canvas-content.has-transition-push {
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }
  .off-canvas-content .off-canvas.is-open {
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

@media print, screen and (min-width: 40em) {
  .position-left.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-left.reveal-for-medium .close-button {
      display: none; }
    .off-canvas-content .position-left.reveal-for-medium {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-left {
      margin-left: 250px; }
    .position-left.reveal-for-medium ~ .off-canvas-content {
      margin-left: 250px; }
  .position-right.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-right.reveal-for-medium .close-button {
      display: none; }
    .off-canvas-content .position-right.reveal-for-medium {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-right {
      margin-right: 250px; }
    .position-right.reveal-for-medium ~ .off-canvas-content {
      margin-right: 250px; }
  .position-top.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-top.reveal-for-medium .close-button {
      display: none; }
    .off-canvas-content .position-top.reveal-for-medium {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-top {
      margin-top: 250px; }
    .position-top.reveal-for-medium ~ .off-canvas-content {
      margin-top: 250px; }
  .position-bottom.reveal-for-medium {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-bottom.reveal-for-medium .close-button {
      display: none; }
    .off-canvas-content .position-bottom.reveal-for-medium {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-bottom {
      margin-bottom: 250px; }
    .position-bottom.reveal-for-medium ~ .off-canvas-content {
      margin-bottom: 250px; } }

@media print, screen and (min-width: 64em) {
  .position-left.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-left.reveal-for-large .close-button {
      display: none; }
    .off-canvas-content .position-left.reveal-for-large {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-left {
      margin-left: 250px; }
    .position-left.reveal-for-large ~ .off-canvas-content {
      margin-left: 250px; }
  .position-right.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-right.reveal-for-large .close-button {
      display: none; }
    .off-canvas-content .position-right.reveal-for-large {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-right {
      margin-right: 250px; }
    .position-right.reveal-for-large ~ .off-canvas-content {
      margin-right: 250px; }
  .position-top.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-top.reveal-for-large .close-button {
      display: none; }
    .off-canvas-content .position-top.reveal-for-large {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-top {
      margin-top: 250px; }
    .position-top.reveal-for-large ~ .off-canvas-content {
      margin-top: 250px; }
  .position-bottom.reveal-for-large {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-bottom.reveal-for-large .close-button {
      display: none; }
    .off-canvas-content .position-bottom.reveal-for-large {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-bottom {
      margin-bottom: 250px; }
    .position-bottom.reveal-for-large ~ .off-canvas-content {
      margin-bottom: 250px; } }

@media screen and (min-width: 75em) {
  .position-left.reveal-for-xlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-left.reveal-for-xlarge .close-button {
      display: none; }
    .off-canvas-content .position-left.reveal-for-xlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-left {
      margin-left: 250px; }
    .position-left.reveal-for-xlarge ~ .off-canvas-content {
      margin-left: 250px; }
  .position-right.reveal-for-xlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-right.reveal-for-xlarge .close-button {
      display: none; }
    .off-canvas-content .position-right.reveal-for-xlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-right {
      margin-right: 250px; }
    .position-right.reveal-for-xlarge ~ .off-canvas-content {
      margin-right: 250px; }
  .position-top.reveal-for-xlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-top.reveal-for-xlarge .close-button {
      display: none; }
    .off-canvas-content .position-top.reveal-for-xlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-top {
      margin-top: 250px; }
    .position-top.reveal-for-xlarge ~ .off-canvas-content {
      margin-top: 250px; }
  .position-bottom.reveal-for-xlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-bottom.reveal-for-xlarge .close-button {
      display: none; }
    .off-canvas-content .position-bottom.reveal-for-xlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-bottom {
      margin-bottom: 250px; }
    .position-bottom.reveal-for-xlarge ~ .off-canvas-content {
      margin-bottom: 250px; } }

@media screen and (min-width: 90em) {
  .position-left.reveal-for-xxlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-left.reveal-for-xxlarge .close-button {
      display: none; }
    .off-canvas-content .position-left.reveal-for-xxlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-left {
      margin-left: 250px; }
    .position-left.reveal-for-xxlarge ~ .off-canvas-content {
      margin-left: 250px; }
  .position-right.reveal-for-xxlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-right.reveal-for-xxlarge .close-button {
      display: none; }
    .off-canvas-content .position-right.reveal-for-xxlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-right {
      margin-right: 250px; }
    .position-right.reveal-for-xxlarge ~ .off-canvas-content {
      margin-right: 250px; }
  .position-top.reveal-for-xxlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-top.reveal-for-xxlarge .close-button {
      display: none; }
    .off-canvas-content .position-top.reveal-for-xxlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-top {
      margin-top: 250px; }
    .position-top.reveal-for-xxlarge ~ .off-canvas-content {
      margin-top: 250px; }
  .position-bottom.reveal-for-xxlarge {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none;
    z-index: 12;
    -webkit-transition: none;
    transition: none;
    visibility: visible; }
    .position-bottom.reveal-for-xxlarge .close-button {
      display: none; }
    .off-canvas-content .position-bottom.reveal-for-xxlarge {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas-content.has-reveal-bottom {
      margin-bottom: 250px; }
    .position-bottom.reveal-for-xxlarge ~ .off-canvas-content {
      margin-bottom: 250px; } }

@media print, screen and (min-width: 40em) {
  .off-canvas.in-canvas-for-medium {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    transition: inherit; }
    .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom {
      -webkit-box-shadow: none;
              box-shadow: none;
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas.in-canvas-for-medium .close-button {
      display: none; } }

@media print, screen and (min-width: 64em) {
  .off-canvas.in-canvas-for-large {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    transition: inherit; }
    .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom {
      -webkit-box-shadow: none;
              box-shadow: none;
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas.in-canvas-for-large .close-button {
      display: none; } }

@media screen and (min-width: 75em) {
  .off-canvas.in-canvas-for-xlarge {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    transition: inherit; }
    .off-canvas.in-canvas-for-xlarge.position-left, .off-canvas.in-canvas-for-xlarge.position-right, .off-canvas.in-canvas-for-xlarge.position-top, .off-canvas.in-canvas-for-xlarge.position-bottom {
      -webkit-box-shadow: none;
              box-shadow: none;
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas.in-canvas-for-xlarge .close-button {
      display: none; } }

@media screen and (min-width: 90em) {
  .off-canvas.in-canvas-for-xxlarge {
    visibility: visible;
    height: auto;
    position: static;
    background: inherit;
    width: inherit;
    overflow: inherit;
    -webkit-transition: inherit;
    transition: inherit; }
    .off-canvas.in-canvas-for-xxlarge.position-left, .off-canvas.in-canvas-for-xxlarge.position-right, .off-canvas.in-canvas-for-xxlarge.position-top, .off-canvas.in-canvas-for-xxlarge.position-bottom {
      -webkit-box-shadow: none;
              box-shadow: none;
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
    .off-canvas.in-canvas-for-xxlarge .close-button {
      display: none; } }

.sticky-container {
  position: relative; }

.sticky {
  position: relative;
  z-index: 0;
  -webkit-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0); }

.sticky.is-stuck {
  position: fixed;
  z-index: 5;
  width: 100%; }
  .sticky.is-stuck.is-at-top {
    top: 0; }
  .sticky.is-stuck.is-at-bottom {
    bottom: 0; }

.sticky.is-anchored {
  position: relative;
  right: auto;
  left: auto; }
  .sticky.is-anchored.is-at-bottom {
    bottom: 0; }

body.is-reveal-open {
  overflow: hidden; }

html.is-reveal-open,
html.is-reveal-open body {
  min-height: 100%;
  overflow: hidden;
  position: fixed;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none; }

.reveal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1005;
  display: none;
  background-color: rgba(29, 21, 0, 0.45);
  overflow-y: scroll; }

.reveal {
  z-index: 1006;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  display: none;
  padding: 1rem;
  border: 1px solid #646464;
  border-radius: 1px;
  background-color: #fefefe;
  position: relative;
  top: 100px;
  margin-right: auto;
  margin-left: auto;
  overflow-y: auto; }
  [data-whatinput='mouse'] .reveal {
    outline: 0; }
  @media print, screen and (min-width: 40em) {
    .reveal {
      min-height: 0; } }
  .reveal .column {
    min-width: 0; }
  .reveal > :last-child {
    margin-bottom: 0; }
  @media print, screen and (min-width: 40em) {
    .reveal {
      width: 600px;
      max-width: 66.66667rem; } }
  .reveal.collapse {
    padding: 0; }
  @media print, screen and (min-width: 40em) {
    .reveal.tiny {
      width: 30%;
      max-width: 66.66667rem; } }
  @media print, screen and (min-width: 40em) {
    .reveal.small {
      width: 50%;
      max-width: 66.66667rem; } }
  @media print, screen and (min-width: 40em) {
    .reveal.large {
      width: 90%;
      max-width: 66.66667rem; } }
  .reveal.full {
    top: 0;
    left: 0;
    width: 100%;
    max-width: none;
    height: 100%;
    height: 100vh;
    min-height: 100vh;
    margin-left: 0;
    border: 0;
    border-radius: 0; }
  @media screen and (max-width: 39.9375em) {
    .reveal {
      top: 0;
      left: 0;
      width: 100%;
      max-width: none;
      height: 100%;
      height: 100vh;
      min-height: 100vh;
      margin-left: 0;
      border: 0;
      border-radius: 0; } }
  .reveal.without-overlay {
    position: fixed; }

.switch {
  height: 2rem;
  position: relative;
  margin-bottom: 1rem;
  outline: 0;
  font-size: 0.77778rem;
  font-weight: bold;
  color: #fefefe;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none; }

.switch-input {
  position: absolute;
  margin-bottom: 0;
  opacity: 0; }

.switch-paddle {
  position: relative;
  display: block;
  width: 4rem;
  height: 2rem;
  border-radius: 1px;
  background: #646464;
  -webkit-transition: all 0.25s ease-out;
  transition: all 0.25s ease-out;
  font-weight: inherit;
  color: inherit;
  cursor: pointer; }
  input + .switch-paddle {
    margin: 0; }
  .switch-paddle::after {
    position: absolute;
    top: 0.25rem;
    left: 0.25rem;
    display: block;
    width: 1.5rem;
    height: 1.5rem;
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
    border-radius: 1px;
    background: #fefefe;
    -webkit-transition: all 0.25s ease-out;
    transition: all 0.25s ease-out;
    content: ''; }
  input:checked ~ .switch-paddle {
    background: #fbba00; }
    input:checked ~ .switch-paddle::after {
      left: 2.25rem; }
  [data-whatinput='mouse'] input:focus ~ .switch-paddle {
    outline: 0; }

.switch-active, .switch-inactive {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%); }

.switch-active {
  left: 8%;
  display: none; }
  input:checked + label > .switch-active {
    display: block; }

.switch-inactive {
  right: 15%; }
  input:checked + label > .switch-inactive {
    display: none; }

.switch.tiny {
  height: 1.5rem; }
  .switch.tiny .switch-paddle {
    width: 3rem;
    height: 1.5rem;
    font-size: 0.55556rem; }
  .switch.tiny .switch-paddle::after {
    top: 0.25rem;
    left: 0.25rem;
    width: 1rem;
    height: 1rem; }
  .switch.tiny input:checked ~ .switch-paddle::after {
    left: 1.75rem; }

.switch.small {
  height: 1.75rem; }
  .switch.small .switch-paddle {
    width: 3.5rem;
    height: 1.75rem;
    font-size: 0.66667rem; }
  .switch.small .switch-paddle::after {
    top: 0.25rem;
    left: 0.25rem;
    width: 1.25rem;
    height: 1.25rem; }
  .switch.small input:checked ~ .switch-paddle::after {
    left: 2rem; }

.switch.large {
  height: 2.5rem; }
  .switch.large .switch-paddle {
    width: 5rem;
    height: 2.5rem;
    font-size: 0.88889rem; }
  .switch.large .switch-paddle::after {
    top: 0.25rem;
    left: 0.25rem;
    width: 2rem;
    height: 2rem; }
  .switch.large input:checked ~ .switch-paddle::after {
    left: 2.75rem; }

table {
  border-collapse: collapse;
  width: 100%;
  margin-bottom: 1rem;
  border-radius: 1px; }
  thead, tbody, tfoot {
    border: 1px solid #f1f1f1;
    background-color: #fefefe; }
  caption {
    padding: 0.44444rem 0.55556rem 0.55556rem;
    font-weight: 700; }
  thead {
    background: #f8f8f8;
    color: #646464; }
  tfoot {
    background: #f1f1f1;
    color: #646464; }
  thead tr, tfoot tr {
    background: transparent; }
  thead th, thead td, tfoot th, tfoot td {
    padding: 0.44444rem 0.55556rem 0.55556rem;
    font-weight: 700;
    text-align: left; }
  tbody th, tbody td {
    padding: 0.44444rem 0.55556rem 0.55556rem; }
  tbody tr:nth-child(even) {
    border-bottom: 0;
    background-color: #f1f1f1; }
  table.unstriped tbody {
    background-color: #fefefe; }
    table.unstriped tbody tr {
      border-bottom: 0;
      border-bottom: 1px solid #f1f1f1;
      background-color: #fefefe; }

@media screen and (max-width: 63.9375em) {
  table.stack thead {
    display: none; }
  table.stack tfoot {
    display: none; }
  table.stack tr,
  table.stack th,
  table.stack td {
    display: block; }
  table.stack td {
    border-top: 0; } }

table.scroll {
  display: block;
  width: 100%;
  overflow-x: auto; }

table.hover thead tr:hover {
  background-color: #f3f3f3; }

table.hover tfoot tr:hover {
  background-color: #ececec; }

table.hover tbody tr:hover {
  background-color: #f9f9f9; }

table.hover:not(.unstriped) tr:nth-of-type(even):hover {
  background-color: #ececec; }

.table-scroll {
  overflow-x: auto; }
  .table-scroll table {
    width: auto; }

.tabs {
  margin: 0;
  border: 1px solid #e6e6e6;
  background: #fefefe;
  list-style-type: none; }
  .tabs::before, .tabs::after {
    display: table;
    content: ' ';
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .tabs::after {
    clear: both; }

.tabs.vertical > li {
  display: block;
  float: none;
  width: auto; }

.tabs.simple > li > a {
  padding: 0; }
  .tabs.simple > li > a:hover {
    background: transparent; }

.tabs.primary {
  background: #fbba00; }
  .tabs.primary > li > a {
    color: #1d1500; }
    .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
      background: #eeb100; }

.tabs-title {
  float: left; }
  .tabs-title > a {
    display: block;
    padding: 1.25rem 1.5rem;
    font-size: 0.66667rem;
    line-height: 1;
    color: #fbba00; }
    .tabs-title > a:hover {
      background: #fefefe;
      color: #d8a000; }
    .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
      background: #e6e6e6;
      color: #fbba00; }

.tabs-content {
  border: 1px solid #e6e6e6;
  border-top: 0;
  background: #fefefe;
  color: #646464;
  -webkit-transition: all 0.5s ease;
  transition: all 0.5s ease; }

.tabs-content.vertical {
  border: 1px solid #e6e6e6;
  border-left: 0; }

.tabs-panel {
  display: none;
  padding: 1rem; }
  .tabs-panel.is-active {
    display: block; }

.thumbnail {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 1rem;
  border: solid 4px #fefefe;
  border-radius: 1px;
  -webkit-box-shadow: 0 0 0 1px rgba(29, 21, 0, 0.2);
          box-shadow: 0 0 0 1px rgba(29, 21, 0, 0.2);
  line-height: 0; }

a.thumbnail {
  -webkit-transition: -webkit-box-shadow 200ms ease-out;
  transition: -webkit-box-shadow 200ms ease-out;
  transition: box-shadow 200ms ease-out;
  transition: box-shadow 200ms ease-out, -webkit-box-shadow 200ms ease-out; }
  a.thumbnail:hover, a.thumbnail:focus {
    -webkit-box-shadow: 0 0 6px 1px rgba(251, 186, 0, 0.5);
            box-shadow: 0 0 6px 1px rgba(251, 186, 0, 0.5); }
  a.thumbnail image {
    -webkit-box-shadow: none;
            box-shadow: none; }

.title-bar {
  padding: 0.25rem;
  background: #fbba00;
  color: #223038;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .title-bar .menu-icon {
    margin-left: 0.25rem;
    margin-right: 0.25rem; }

.title-bar-left,
.title-bar-right {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 0px;
          flex: 1 1 0px; }

.title-bar-right {
  text-align: right; }

.title-bar-title {
  display: inline-block;
  vertical-align: middle;
  font-weight: bold; }

.top-bar {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  padding: 0 0.25rem;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .top-bar,
  .top-bar ul {
    background-color: #fbba00; }
  .top-bar input {
    max-width: 200px;
    margin-right: 1rem; }
  .top-bar .input-group-field {
    width: 100%;
    margin-right: 0; }
  .top-bar input.button {
    width: auto; }
  .top-bar .top-bar-left,
  .top-bar .top-bar-right {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 100%;
            flex: 0 0 100%;
    max-width: 100%; }
  @media print, screen and (min-width: 40em) {
    .top-bar {
      -ms-flex-wrap: nowrap;
          flex-wrap: nowrap; }
      .top-bar .top-bar-left {
        -webkit-box-flex: 1;
            -ms-flex: 1 1 auto;
                flex: 1 1 auto;
        margin-right: auto; }
      .top-bar .top-bar-right {
        -webkit-box-flex: 0;
            -ms-flex: 0 1 auto;
                flex: 0 1 auto;
        margin-left: auto; } }
  @media screen and (max-width: 63.9375em) {
    .top-bar.stacked-for-medium {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap; }
      .top-bar.stacked-for-medium .top-bar-left,
      .top-bar.stacked-for-medium .top-bar-right {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 100%;
                flex: 0 0 100%;
        max-width: 100%; } }
  @media screen and (max-width: 74.9375em) {
    .top-bar.stacked-for-large {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap; }
      .top-bar.stacked-for-large .top-bar-left,
      .top-bar.stacked-for-large .top-bar-right {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 100%;
                flex: 0 0 100%;
        max-width: 100%; } }
  @media screen and (max-width: 89.9375em) {
    .top-bar.stacked-for-xlarge {
      -ms-flex-wrap: wrap;
          flex-wrap: wrap; }
      .top-bar.stacked-for-xlarge .top-bar-left,
      .top-bar.stacked-for-xlarge .top-bar-right {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 100%;
                flex: 0 0 100%;
        max-width: 100%; } }
  .top-bar.stacked-for-xxlarge {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .top-bar.stacked-for-xxlarge .top-bar-left,
    .top-bar.stacked-for-xxlarge .top-bar-right {
      -webkit-box-flex: 0;
          -ms-flex: 0 0 100%;
              flex: 0 0 100%;
      max-width: 100%; }

.top-bar-title {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  margin: 0.5rem 1rem 0.5rem 0; }

.top-bar-left,
.top-bar-right {
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto; }

.hide {
  display: none !important; }

.invisible {
  visibility: hidden; }

@media screen and (max-width: 39.9375em) {
  .hide-for-small-only {
    display: none !important; } }

@media screen and (max-width: 0em), screen and (min-width: 40em) {
  .show-for-small-only {
    display: none !important; } }

@media print, screen and (min-width: 40em) {
  .hide-for-medium {
    display: none !important; } }

@media screen and (max-width: 39.9375em) {
  .show-for-medium {
    display: none !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .hide-for-medium-only {
    display: none !important; } }

@media screen and (max-width: 39.9375em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important; } }

@media print, screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important; } }

@media screen and (max-width: 63.9375em) {
  .show-for-large {
    display: none !important; } }

@media screen and (min-width: 64em) and (max-width: 74.9375em) {
  .hide-for-large-only {
    display: none !important; } }

@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important; } }

@media screen and (min-width: 75em) {
  .hide-for-xlarge {
    display: none !important; } }

@media screen and (max-width: 74.9375em) {
  .show-for-xlarge {
    display: none !important; } }

@media screen and (min-width: 75em) and (max-width: 89.9375em) {
  .hide-for-xlarge-only {
    display: none !important; } }

@media screen and (max-width: 74.9375em), screen and (min-width: 90em) {
  .show-for-xlarge-only {
    display: none !important; } }

@media screen and (min-width: 90em) {
  .hide-for-xxlarge {
    display: none !important; } }

@media screen and (max-width: 89.9375em) {
  .show-for-xxlarge {
    display: none !important; } }

@media screen and (min-width: 90em) {
  .hide-for-xxlarge-only {
    display: none !important; } }

@media screen and (max-width: 89.9375em) {
  .show-for-xxlarge-only {
    display: none !important; } }

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  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; }

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  width: auto;
  height: auto;
  overflow: visible;
  clip: auto;
  white-space: normal;
  -webkit-clip-path: none;
          clip-path: none; }

.show-for-landscape,
.hide-for-portrait {
  display: block !important; }
  @media screen and (orientation: landscape) {
    .show-for-landscape,
    .hide-for-portrait {
      display: block !important; } }
  @media screen and (orientation: portrait) {
    .show-for-landscape,
    .hide-for-portrait {
      display: none !important; } }

.hide-for-landscape,
.show-for-portrait {
  display: none !important; }
  @media screen and (orientation: landscape) {
    .hide-for-landscape,
    .show-for-portrait {
      display: none !important; } }
  @media screen and (orientation: portrait) {
    .hide-for-landscape,
    .show-for-portrait {
      display: block !important; } }

.align-right {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.align-center {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.align-justify {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.align-spaced {
  -ms-flex-pack: distribute;
      justify-content: space-around; }

.align-right.vertical.menu > li > a {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.align-center.vertical.menu > li > a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.align-top {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.align-self-top {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.align-bottom {
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end; }

.align-self-bottom {
  -ms-flex-item-align: end;
      align-self: flex-end; }

.align-middle {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.align-self-middle {
  -ms-flex-item-align: center;
      align-self: center; }

.align-stretch {
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.align-self-stretch {
  -ms-flex-item-align: stretch;
      align-self: stretch; }

.align-center-middle {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -ms-flex-line-pack: center;
      align-content: center; }

.small-order-1 {
  -webkit-box-ordinal-group: 2;
      -ms-flex-order: 1;
          order: 1; }

.small-order-2 {
  -webkit-box-ordinal-group: 3;
      -ms-flex-order: 2;
          order: 2; }

.small-order-3 {
  -webkit-box-ordinal-group: 4;
      -ms-flex-order: 3;
          order: 3; }

.small-order-4 {
  -webkit-box-ordinal-group: 5;
      -ms-flex-order: 4;
          order: 4; }

.small-order-5 {
  -webkit-box-ordinal-group: 6;
      -ms-flex-order: 5;
          order: 5; }

.small-order-6 {
  -webkit-box-ordinal-group: 7;
      -ms-flex-order: 6;
          order: 6; }

@media print, screen and (min-width: 40em) {
  .medium-order-1 {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .medium-order-2 {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2; }
  .medium-order-3 {
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3; }
  .medium-order-4 {
    -webkit-box-ordinal-group: 5;
        -ms-flex-order: 4;
            order: 4; }
  .medium-order-5 {
    -webkit-box-ordinal-group: 6;
        -ms-flex-order: 5;
            order: 5; }
  .medium-order-6 {
    -webkit-box-ordinal-group: 7;
        -ms-flex-order: 6;
            order: 6; } }

@media print, screen and (min-width: 64em) {
  .large-order-1 {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .large-order-2 {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2; }
  .large-order-3 {
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3; }
  .large-order-4 {
    -webkit-box-ordinal-group: 5;
        -ms-flex-order: 4;
            order: 4; }
  .large-order-5 {
    -webkit-box-ordinal-group: 6;
        -ms-flex-order: 5;
            order: 5; }
  .large-order-6 {
    -webkit-box-ordinal-group: 7;
        -ms-flex-order: 6;
            order: 6; } }

@media screen and (min-width: 75em) {
  .xlarge-order-1 {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .xlarge-order-2 {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2; }
  .xlarge-order-3 {
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3; }
  .xlarge-order-4 {
    -webkit-box-ordinal-group: 5;
        -ms-flex-order: 4;
            order: 4; }
  .xlarge-order-5 {
    -webkit-box-ordinal-group: 6;
        -ms-flex-order: 5;
            order: 5; }
  .xlarge-order-6 {
    -webkit-box-ordinal-group: 7;
        -ms-flex-order: 6;
            order: 6; } }

@media screen and (min-width: 90em) {
  .xxlarge-order-1 {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1; }
  .xxlarge-order-2 {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2; }
  .xxlarge-order-3 {
    -webkit-box-ordinal-group: 4;
        -ms-flex-order: 3;
            order: 3; }
  .xxlarge-order-4 {
    -webkit-box-ordinal-group: 5;
        -ms-flex-order: 4;
            order: 4; }
  .xxlarge-order-5 {
    -webkit-box-ordinal-group: 6;
        -ms-flex-order: 5;
            order: 5; }
  .xxlarge-order-6 {
    -webkit-box-ordinal-group: 7;
        -ms-flex-order: 6;
            order: 6; } }

.flex-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.flex-child-auto {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto; }

.flex-child-grow {
  -webkit-box-flex: 1;
      -ms-flex: 1 0 auto;
          flex: 1 0 auto; }

.flex-child-shrink {
  -webkit-box-flex: 0;
      -ms-flex: 0 1 auto;
          flex: 0 1 auto; }

.flex-dir-row {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.flex-dir-row-reverse {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }

.flex-dir-column {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

.flex-dir-column-reverse {
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse; }

@media print, screen and (min-width: 40em) {
  .medium-flex-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .medium-flex-child-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto; }
  .medium-flex-child-grow {
    -webkit-box-flex: 1;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto; }
  .medium-flex-child-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto; }
  .medium-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .medium-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .medium-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .medium-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

@media print, screen and (min-width: 64em) {
  .large-flex-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .large-flex-child-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto; }
  .large-flex-child-grow {
    -webkit-box-flex: 1;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto; }
  .large-flex-child-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto; }
  .large-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .large-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .large-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .large-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

@media screen and (min-width: 75em) {
  .xlarge-flex-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .xlarge-flex-child-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto; }
  .xlarge-flex-child-grow {
    -webkit-box-flex: 1;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto; }
  .xlarge-flex-child-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto; }
  .xlarge-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .xlarge-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .xlarge-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .xlarge-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

@media screen and (min-width: 90em) {
  .xxlarge-flex-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .xxlarge-flex-child-auto {
    -webkit-box-flex: 1;
        -ms-flex: 1 1 auto;
            flex: 1 1 auto; }
  .xxlarge-flex-child-grow {
    -webkit-box-flex: 1;
        -ms-flex: 1 0 auto;
            flex: 1 0 auto; }
  .xxlarge-flex-child-shrink {
    -webkit-box-flex: 0;
        -ms-flex: 0 1 auto;
            flex: 0 1 auto; }
  .xxlarge-flex-dir-row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .xxlarge-flex-dir-row-reverse {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .xxlarge-flex-dir-column {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .xxlarge-flex-dir-column-reverse {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

.margin-0 {
  margin-top: 0rem !important;
  margin-right: 0rem !important;
  margin-bottom: 0rem !important;
  margin-left: 0rem !important; }

.padding-0 {
  padding-top: 0rem !important;
  padding-right: 0rem !important;
  padding-bottom: 0rem !important;
  padding-left: 0rem !important; }

.margin-top-0 {
  margin-top: 0rem !important; }

.padding-top-0 {
  padding-top: 0rem !important; }

.margin-right-0 {
  margin-right: 0rem !important; }

.padding-right-0 {
  padding-right: 0rem !important; }

.margin-bottom-0 {
  margin-bottom: 0rem !important; }

.padding-bottom-0 {
  padding-bottom: 0rem !important; }

.margin-left-0 {
  margin-left: 0rem !important; }

.padding-left-0 {
  padding-left: 0rem !important; }

.margin-horizontal-0 {
  margin-right: 0rem !important;
  margin-left: 0rem !important; }

.padding-horizontal-0 {
  padding-right: 0rem !important;
  padding-left: 0rem !important; }

.margin-vertical-0 {
  margin-top: 0rem !important;
  margin-bottom: 0rem !important; }

.padding-vertical-0 {
  padding-top: 0rem !important;
  padding-bottom: 0rem !important; }

.margin-1 {
  margin-top: 1rem !important;
  margin-right: 1rem !important;
  margin-bottom: 1rem !important;
  margin-left: 1rem !important; }

.padding-1 {
  padding-top: 1rem !important;
  padding-right: 1rem !important;
  padding-bottom: 1rem !important;
  padding-left: 1rem !important; }

.margin-top-1 {
  margin-top: 1rem !important; }

.padding-top-1 {
  padding-top: 1rem !important; }

.margin-right-1 {
  margin-right: 1rem !important; }

.padding-right-1 {
  padding-right: 1rem !important; }

.margin-bottom-1 {
  margin-bottom: 1rem !important; }

.padding-bottom-1 {
  padding-bottom: 1rem !important; }

.margin-left-1 {
  margin-left: 1rem !important; }

.padding-left-1 {
  padding-left: 1rem !important; }

.margin-horizontal-1 {
  margin-right: 1rem !important;
  margin-left: 1rem !important; }

.padding-horizontal-1 {
  padding-right: 1rem !important;
  padding-left: 1rem !important; }

.margin-vertical-1 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important; }

.padding-vertical-1 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important; }

.margin-2 {
  margin-top: 2rem !important;
  margin-right: 2rem !important;
  margin-bottom: 2rem !important;
  margin-left: 2rem !important; }

.padding-2 {
  padding-top: 2rem !important;
  padding-right: 2rem !important;
  padding-bottom: 2rem !important;
  padding-left: 2rem !important; }

.margin-top-2 {
  margin-top: 2rem !important; }

.padding-top-2 {
  padding-top: 2rem !important; }

.margin-right-2 {
  margin-right: 2rem !important; }

.padding-right-2 {
  padding-right: 2rem !important; }

.margin-bottom-2 {
  margin-bottom: 2rem !important; }

.padding-bottom-2 {
  padding-bottom: 2rem !important; }

.margin-left-2 {
  margin-left: 2rem !important; }

.padding-left-2 {
  padding-left: 2rem !important; }

.margin-horizontal-2 {
  margin-right: 2rem !important;
  margin-left: 2rem !important; }

.padding-horizontal-2 {
  padding-right: 2rem !important;
  padding-left: 2rem !important; }

.margin-vertical-2 {
  margin-top: 2rem !important;
  margin-bottom: 2rem !important; }

.padding-vertical-2 {
  padding-top: 2rem !important;
  padding-bottom: 2rem !important; }

.margin-3 {
  margin-top: 3rem !important;
  margin-right: 3rem !important;
  margin-bottom: 3rem !important;
  margin-left: 3rem !important; }

.padding-3 {
  padding-top: 3rem !important;
  padding-right: 3rem !important;
  padding-bottom: 3rem !important;
  padding-left: 3rem !important; }

.margin-top-3 {
  margin-top: 3rem !important; }

.padding-top-3 {
  padding-top: 3rem !important; }

.margin-right-3 {
  margin-right: 3rem !important; }

.padding-right-3 {
  padding-right: 3rem !important; }

.margin-bottom-3 {
  margin-bottom: 3rem !important; }

.padding-bottom-3 {
  padding-bottom: 3rem !important; }

.margin-left-3 {
  margin-left: 3rem !important; }

.padding-left-3 {
  padding-left: 3rem !important; }

.margin-horizontal-3 {
  margin-right: 3rem !important;
  margin-left: 3rem !important; }

.padding-horizontal-3 {
  padding-right: 3rem !important;
  padding-left: 3rem !important; }

.margin-vertical-3 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important; }

.padding-vertical-3 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important; }

.position-static {
  position: static !important; }

.position-relative {
  position: relative !important; }

.position-absolute {
  position: absolute !important; }

.position-fixed {
  position: fixed !important; }

.position-fixed-top {
  position: fixed !important;
  top: 0rem !important;
  right: 0rem !important;
  left: 0rem !important;
  z-index: 975; }

.position-fixed-bottom {
  position: fixed !important;
  right: 0rem !important;
  bottom: 0rem !important;
  left: 0rem !important;
  z-index: 975; }

/* ----------- TABLE OF CONTENTS ------------
1. UTILITY CLASSES
2. GENERAL STYLES AND CONTAINERS
3. TYPOGRAPHY
4. LINKS
5. NAVIGATION
6. LISTS / TABLES
7. IMAGES
8. APP
9. ANIMATIONS
----------------------------------------------- */
/* ------------------------------------------ */
/* 1. UTILITY CLASSES */
/* ------------------------------------------ */
.block {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important; }
  .block__bottom {
    padding-bottom: 3rem !important; }
  .block__top {
    padding-top: 3rem !important; }
  .block__divider {
    border-bottom: 1px solid #fbba00; }

@media print, screen and (min-width: 64em) {
  .block {
    padding-top: 2.5rem !important;
    padding-bottom: 2.5rem !important; }
    .block__bottom {
      padding-bottom: 4rem !important; }
    .block__top {
      padding-top: 4rem !important; } }

.primary {
  color: #fbba00; }

/* ------------------------------------------ */
/* 2. GENERAL STYLES AND CONTAINERS */
/* ------------------------------------------ */
.block__basic footer {
  margin-top: .5rem; }

.block__hero {
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  border-top: 0; }
  .block__hero .inner {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important; }
    @media print, screen and (min-width: 64em) {
      .block__hero .inner {
        padding-top: 5rem !important;
        padding-bottom: 5rem !important; } }
  .block__hero--light {
    color: #fefefe; }
    .block__hero--light .head__hero, .block__hero--light .subhead__hero {
      color: #fefefe; }

.hero__pages {
  background-image: url("images/hero-wave-final.jpg");
  height: 50px; }
  .hero__pages .head__tagline, .hero__pages .head__hero {
    font-size: 1.11111rem;
    color: #fbba00;
    margin-bottom: 0; }
    .hero__pages .head__tagline span, .hero__pages .head__hero span {
      font-size: 0.77778rem;
      color: #fefefe;
      font-weight: normal; }

#logo {
  width: 120px; }
  .template-home #logo {
    position: absolute;
    width: 200px;
    left: -1px;
    top: 15px; }

#logo-mobile {
  max-width: 50%; }

.top-bar-title {
  margin: 0 1rem 0 0; }

.divider {
  position: relative;
  margin-bottom: 3rem;
  padding-bottom: 0; }
  .divider:before {
    content: "";
    position: absolute;
    width: 50px;
    height: 1px;
    bottom: -15px;
    left: 0;
    border-bottom: 4px solid #fbba00; }

/* Card elements */
.cell.card {
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.card-section p {
  font-size: 0.83333rem; }

/* Button elements */
.button {
  text-transform: uppercase;
  font-size: 0.83333rem;
  font-weight: 700; }
  .button.hollow {
    font-weight: normal; }

.button.register {
  color: #fefefe; }

.hamburger, .title-bar .hamburger {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer; }
  .hamburger::after, .title-bar .hamburger::after {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 3px;
    background: #223038;
    -webkit-box-shadow: 0 6px 0 #223038, 0 12px 0 #223038;
            box-shadow: 0 6px 0 #223038, 0 12px 0 #223038;
    content: ''; }
  .hamburger:hover::after {
    background: #223038;
    -webkit-box-shadow: 0 6px 0 #223038, 0 12px 0 #223038;
            box-shadow: 0 6px 0 #223038, 0 12px 0 #223038; }

/* Entries */
.entry__meta {
  color: #1d1500; }

.entry__author, .entry__sessions, .entry__type {
  font-style: italic; }

/* CK Editor related styles */
.TextformatterVideoEmbed {
  margin: 2rem 0; }

p > img {
  margin: 1rem 0; }

blockquote {
  font-style: italic; }

.align_left {
  float: left;
  margin-right: 1rem; }

.align_right {
  float: right;
  margin-right: 1rem; }

.align_center {
  display: block; }

/* Footer */
/* Sticky footer https://codepen.io/vanessazoyd/pen/NxJEMK */
html {
  position: relative;
  min-height: 100%; }

body, html {
  height: auto; }

body {
  margin-bottom: 6em;
  display: block; }

.site__footer {
  position: absolute;
  bottom: 0;
  width: 100%;
  background: #223038;
  color: #799aad;
  padding: .7rem 0; }
  .site__footer .medium-order-1 {
    line-height: 1; }
  .site__footer .menu.simple {
    margin-bottom: 1rem; }
    .site__footer .menu.simple a {
      line-height: 1.66667rem; }
    @media print, screen and (min-width: 40em) {
      .site__footer .menu.simple {
        margin-bottom: 0; } }

/* ------------------------------------------ */
/* 3. TYPOGRAPHY */
/* ------------------------------------------ */
h1 {
  font-weight: 700; }

.subheader {
  text-transform: uppercase;
  font-size: 1rem;
  color: #505050; }

.up {
  text-transform: uppercase; }

.small {
  font-size: 0.83333rem; }

.strong {
  font-weight: 700; }

.head__tagline, .head__hero, .hero__banner .head__tagline {
  font-size: 2.66667rem;
  line-height: 1.2; }

.subhead__hero {
  font-weight: 700; }

h3.entry__title, h4.entry__title {
  font-size: 1.11111rem; }

.lead__tagline {
  color: #fefefe; }

.entry__single .entry__header {
  position: relative;
  margin-bottom: 3rem;
  padding-bottom: 0;
  margin-bottom: 2rem; }
  .entry__single .entry__header:before {
    content: "";
    position: absolute;
    width: 50px;
    height: 1px;
    bottom: -15px;
    left: 0;
    border-bottom: 4px solid #fbba00; }

address {
  font-size: 0.83333rem;
  font-style: inherit;
  margin: 1rem 0; }

@media print, screen and (min-width: 64em) {
  .head__article {
    font-size: 2.7rem; } }

/* ------------------------------------------ */
/* 4. LINKS */
/* ------------------------------------------ */
a {
  -webkit-transition: all 300ms ease-in-out;
  transition: all 300ms ease-in-out; }

.label a {
  color: #fefefe; }

.readmore, .readless {
  color: #1d1500;
  text-transform: uppercase;
  font-size: 0.83333rem; }
  .readmore:hover, .readless:hover {
    color: #fbba00; }

.readmore .icon-arrow-right, .readmore .icon-arrow-down {
  margin-left: .5rem;
  display: inline-block; }

.readless .icon-arrow-left, .readless .icon-arrow-up, .icon-paper {
  margin-right: .5rem;
  display: inline-block; }

.entry__download {
  color: #1d1500; }
  .entry__download:hover {
    color: #fbba00; }
  .entry__download .icon-paper {
    font-size: 1.25rem; }

/* ------------------------------------------ */
/* 5. NAVIGATION */
/* ------------------------------------------ */
.nav__main a {
  text-transform: uppercase;
  font-size: 0.88889rem;
  color: #223038;
  padding: 1.2rem 1rem 1.2rem 1rem; }

.nav__main .active a {
  font-weight: 600; }

.hover-underline-menu .underline-from-center {
  position: relative; }
  .hover-underline-menu .underline-from-center::after {
    content: "";
    position: absolute;
    top: -webkit-calc(100% - 0.2rem);
    top: calc(100% - 0.2rem);
    border-bottom: 0.2rem solid #223038;
    left: 50%;
    right: 50%;
    -webkit-transition: all 0.5s ease;
    transition: all 0.5s ease; }
  .hover-underline-menu .underline-from-center:hover::after {
    left: 0;
    right: 0;
    -webkit-transition: all 0.5s ease;
    transition: all 0.5s ease; }

#offCanvas {
  color: #fefefe; }
  #offCanvas .title-bar {
    padding: .7rem 1rem;
    position: relative; }
  #offCanvas .info-bar {
    padding: .7rem 1rem; }
    #offCanvas .info-bar .lead {
      font-weight: 600; }

.title-bar .hamburger {
  margin-right: .5em;
  cursor: pointer; }

.nav__mobile a {
  color: #fefefe;
  text-transform: uppercase;
  font-size: 0.88889rem; }

.nav__mobile .active a {
  background-color: inherit;
  font-weight: 600;
  color: #fbba00; }

.nav__footer li a {
  text-transform: uppercase;
  font-size: 0.88889rem;
  color: #799aad; }

.nav__footer li.active a {
  color: inherit;
  font-weight: 700; }

/* ------------------------------------------ */
/* 6. LISTS/TABLES */
/* ------------------------------------------ */
/* ------------------------------------------ */
/* 8. APP */
/* ------------------------------------------ */
/* 8.1. HOMEPAGE */
/* ------------------------------------------ */
.hero__banner {
  background-image: url("images/hero-headphones@xxlarge.jpg");
  background-image: url("images/hero-headphones@small.jpg"); }
  @media screen and (-webkit-min-device-pixel-ratio: 2), (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    .hero__banner {
      background-image: url("images/hero-headphones@large.jpg"); } }
  @media print, screen and (min-width: 64em) {
    .hero__banner {
      background-image: url("images/hero-headphones@large.jpg"); } }
  @media screen and (min-width: 64em) and (-webkit-min-device-pixel-ratio: 2), print and (-webkit-min-device-pixel-ratio: 2), print and (min-resolution: 192dpi), screen and (min-width: 64em) and (min-resolution: 192dpi) {
    .hero__banner {
      background-image: url("images/hero-headphones@large@2x.jpg"); } }
  @media screen and (min-width: 75em) {
    .hero__banner {
      background-image: url("images/hero-headphones@xxlarge.jpg"); } }
  @media screen and (min-width: 75em) and (-webkit-min-device-pixel-ratio: 2), screen and (min-width: 75em) and (min-resolution: 192dpi) {
    .hero__banner {
      background-image: url("images/hero-headphones@xxlarge@2x.jpg"); } }
  .hero__banner .head__hero, .hero__banner .head__tagline {
    color: #fbba00;
    font-size: 3.33333rem; }
    @media print, screen and (min-width: 64em) {
      .hero__banner .head__hero, .hero__banner .head__tagline {
        font-size: 4rem; } }
  .hero__banner .lead__tagline {
    font-size: 1.11111rem;
    font-weight: 700; }
    @media print, screen and (min-width: 40em) {
      .hero__banner .lead__tagline {
        font-size: 1.35rem; } }

/* Summershool */
.hero__summershool {
  color: #fefefe;
  background-image: url("images/hero-summershool.jpg"); }
  .hero__summershool .head__hero {
    color: #fbba00; }
  .hero__summershool .subheader {
    color: #fefefe; }

/* Support logos */
.block__logostrip ul li > img {
  margin: 0 1rem;
  height: 100px; }

/* Map and location */
.map__canvas {
  height: 22.22222rem; }

#gmap {
  min-height: 22.22222rem;
  width: 100%;
  height: 100%; }

.location {
  position: relative; }
.location .card {
  position: relative;
  margin: 4em 0 8em 0;
  z-index: 80;
  background-image: url("images/bg-location.jpg");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover; }
.location .card .subheader {
  color: #fefefe; }
.location .card-section {
  font-size: 85%;
  color: #0c0c0c;
  background-color: rgba(255, 255, 255, 0.6); }
.location #gmap {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0; }

.location .card .card-divider {
  background-color: #fbba00; }

/* 8.2 PROGRAM */
/* ------------------------------------------ */
/*!
 * FullCalendar v3.4.0 Stylesheet
 * Docs & License: https://fullcalendar.io/
 * (c) 2017 Adam Shaw
 */
.fc {
  direction: ltr;
  text-align: left; }

.fc-rtl {
  text-align: right; }

body .fc {
  /* extra precedence to overcome jqui */
  font-size: 1em; }

/* Colors
--------------------------------------------------------------------------------------------------*/
.fc-unthemed th,
.fc-unthemed td,
.fc-unthemed thead,
.fc-unthemed tbody,
.fc-unthemed .fc-divider,
.fc-unthemed .fc-row,
.fc-unthemed .fc-content,
.fc-unthemed .fc-popover,
.fc-unthemed .fc-list-view,
.fc-unthemed .fc-list-heading td {
  border-color: #ddd; }

.fc-unthemed .fc-popover {
  background-color: #fefefe; }

.fc-unthemed .fc-divider,
.fc-unthemed .fc-popover .fc-header,
.fc-unthemed .fc-list-heading td {
  background: #eee; }

.fc-unthemed .fc-popover .fc-header .fc-close {
  color: #666; }

.fc-unthemed td.fc-today {
  background: #fcf8e3; }

.fc-highlight {
  /* when user is selecting cells */
  background: #bce8f1;
  opacity: .3; }

.fc-bgevent {
  /* default look for background events */
  background: #8fdf82;
  opacity: .3; }

.fc-nonbusiness {
  /* default look for non-business-hours areas */
  /* will inherit .fc-bgevent's styles */
  background: #d7d7d7; }

.fc-unthemed .fc-disabled-day {
  background: #d7d7d7;
  opacity: .3; }

.ui-widget .fc-disabled-day {
  /* themed */
  background-image: none; }

/* Icons (inline elements with styled text that mock arrow icons)
--------------------------------------------------------------------------------------------------*/
.fc-icon {
  display: inline-block;
  height: 1em;
  line-height: 1em;
  font-size: 1em;
  text-align: center;
  overflow: hidden;
  font-family: "Courier New", Courier, monospace;
  /* don't allow browser text-selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }

/*
Acceptable font-family overrides for individual icons:
	"Arial", sans-serif
	"Times New Roman", serif

NOTE: use percentage font sizes or else old IE chokes
*/
.fc-icon:after {
  position: relative; }

.fc-icon-left-single-arrow:after {
  content: "\02039";
  font-weight: bold;
  font-size: 200%;
  top: -7%; }

.fc-icon-right-single-arrow:after {
  content: "\0203A";
  font-weight: bold;
  font-size: 200%;
  top: -7%; }

.fc-icon-left-double-arrow:after {
  content: "\000AB";
  font-size: 160%;
  top: -7%; }

.fc-icon-right-double-arrow:after {
  content: "\000BB";
  font-size: 160%;
  top: -7%; }

.fc-icon-left-triangle:after {
  content: "\25C4";
  font-size: 125%;
  top: 3%; }

.fc-icon-right-triangle:after {
  content: "\25BA";
  font-size: 125%;
  top: 3%; }

.fc-icon-down-triangle:after {
  content: "\25BC";
  font-size: 125%;
  top: 2%; }

.fc-icon-x:after {
  content: "\000D7";
  font-size: 200%;
  top: 6%; }

/* Buttons (styled <button> tags, normalized to work cross-browser)
--------------------------------------------------------------------------------------------------*/
.fc button {
  /* force height to include the border and padding */
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  /* dimensions */
  margin: 0;
  height: 2.1em;
  padding: 0 .6em;
  /* text & cursor */
  font-size: 1em;
  /* normalize */
  white-space: nowrap;
  cursor: pointer; }

/* Firefox has an annoying inner border */
.fc button::-moz-focus-inner {
  margin: 0;
  padding: 0; }

.fc-state-default {
  /* non-theme */
  border: 1px solid; }

.fc-state-default.fc-corner-left {
  /* non-theme */
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px; }

.fc-state-default.fc-corner-right {
  /* non-theme */
  border-top-right-radius: 4px;
  border-bottom-right-radius: 4px; }

/* icons in buttons */
.fc button .fc-icon {
  /* non-theme */
  position: relative;
  top: -0.05em;
  /* seems to be a good adjustment across browsers */
  margin: 0 .2em;
  vertical-align: middle; }

/*
  button states
  borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
*/
.fc-state-default {
  background-color: #f5f5f5;
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
  background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e6e6e6));
  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
  background-repeat: repeat-x;
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  color: #333;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); }

.fc-state-hover,
.fc-state-down,
.fc-state-active,
.fc-state-disabled {
  color: #333333;
  background-color: #e6e6e6; }

.fc-state-hover {
  color: #333333;
  text-decoration: none;
  background-position: 0 -15px;
  -webkit-transition: background-position 0.1s linear;
  transition: background-position 0.1s linear; }

.fc-state-down,
.fc-state-active {
  background-color: #cccccc;
  background-image: none;
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); }

.fc-state-disabled {
  cursor: default;
  background-image: none;
  opacity: 0.65;
  -webkit-box-shadow: none;
          box-shadow: none; }

/* Buttons Groups
--------------------------------------------------------------------------------------------------*/
.fc-button-group {
  display: inline-block; }

/*
every button that is not first in a button group should scootch over one pixel and cover the
previous button's border...
*/
.fc .fc-button-group > * {
  /* extra precedence b/c buttons have margin set to zero */
  float: left;
  margin: 0 0 0 -1px; }

.fc .fc-button-group > :first-child {
  /* same */
  margin-left: 0; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-popover {
  position: absolute;
  -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); }

.fc-popover .fc-header {
  /* TODO: be more consistent with fc-head/fc-body */
  padding: 2px 4px; }

.fc-popover .fc-header .fc-title {
  margin: 0 2px; }

.fc-popover .fc-header .fc-close {
  cursor: pointer; }

.fc-ltr .fc-popover .fc-header .fc-title,
.fc-rtl .fc-popover .fc-header .fc-close {
  float: left; }

.fc-rtl .fc-popover .fc-header .fc-title,
.fc-ltr .fc-popover .fc-header .fc-close {
  float: right; }

/* unthemed */
.fc-unthemed .fc-popover {
  border-width: 1px;
  border-style: solid; }

.fc-unthemed .fc-popover .fc-header .fc-close {
  font-size: .9em;
  margin-top: 2px; }

/* jqui themed */
.fc-popover > .ui-widget-header + .ui-widget-content {
  border-top: 0;
  /* where they meet, let the header have the border */ }

/* Misc Reusable Components
--------------------------------------------------------------------------------------------------*/
.fc-divider {
  border-style: solid;
  border-width: 1px; }

hr.fc-divider {
  height: 0;
  margin: 0;
  padding: 0 0 2px;
  /* height is unreliable across browsers, so use padding */
  border-width: 1px 0; }

.fc-clear {
  clear: both; }

.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton {
  /* these element should always cling to top-left/right corners */
  position: absolute;
  top: 0;
  left: 0;
  right: 0; }

.fc-bg {
  bottom: 0;
  /* strech bg to bottom edge */ }

.fc-bg table {
  height: 100%;
  /* strech bg to bottom edge */ }

/* Tables
--------------------------------------------------------------------------------------------------*/
.fc table {
  width: 100%;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* fix scrollbar issue in firefox */
  table-layout: fixed;
  border-collapse: collapse;
  border-spacing: 0;
  font-size: 1em;
  /* normalize cross-browser */ }

.fc th {
  text-align: center; }

.fc th,
.fc td {
  border-style: solid;
  border-width: 1px;
  padding: 0;
  vertical-align: top; }

.fc td.fc-today {
  border-style: double;
  /* overcome neighboring borders */ }

/* Internal Nav Links
--------------------------------------------------------------------------------------------------*/
a[data-goto] {
  cursor: pointer; }

a[data-goto]:hover {
  text-decoration: underline; }

/* Fake Table Rows
--------------------------------------------------------------------------------------------------*/
.fc .fc-row {
  /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */
  /* no visible border by default. but make available if need be (scrollbar width compensation) */
  border-style: solid;
  border-width: 0; }

.fc-row table {
  /* don't put left/right border on anything within a fake row.
	   the outer tbody will worry about this */
  border-left: 0 hidden transparent;
  border-right: 0 hidden transparent;
  /* no bottom borders on rows */
  border-bottom: 0 hidden transparent; }

.fc-row:first-child table {
  border-top: 0 hidden transparent;
  /* no top border on first row */ }

/* Day Row (used within the header and the DayGrid)
--------------------------------------------------------------------------------------------------*/
.fc-row {
  position: relative; }

.fc-row .fc-bg {
  z-index: 1; }

/* highlighting cells & background event skeleton */
.fc-row .fc-bgevent-skeleton,
.fc-row .fc-highlight-skeleton {
  bottom: 0;
  /* stretch skeleton to bottom of row */ }

.fc-row .fc-bgevent-skeleton table,
.fc-row .fc-highlight-skeleton table {
  height: 100%;
  /* stretch skeleton to bottom of row */ }

.fc-row .fc-highlight-skeleton td,
.fc-row .fc-bgevent-skeleton td {
  border-color: transparent; }

.fc-row .fc-bgevent-skeleton {
  z-index: 2; }

.fc-row .fc-highlight-skeleton {
  z-index: 3; }

/*
row content (which contains day/week numbers and events) as well as "helper" (which contains
temporary rendered events).
*/
.fc-row .fc-content-skeleton {
  position: relative;
  z-index: 4;
  padding-bottom: 2px;
  /* matches the space above the events */ }

.fc-row .fc-helper-skeleton {
  z-index: 5; }

.fc-row .fc-content-skeleton td,
.fc-row .fc-helper-skeleton td {
  /* see-through to the background below */
  background: none;
  /* in case <td>s are globally styled */
  border-color: transparent;
  /* don't put a border between events and/or the day number */
  border-bottom: 0; }

.fc-row .fc-content-skeleton tbody td,
.fc-row .fc-helper-skeleton tbody td {
  /* don't put a border between event cells */
  border-top: 0; }

/* Scrolling Container
--------------------------------------------------------------------------------------------------*/
.fc-scroller {
  -webkit-overflow-scrolling: touch; }

/* TODO: move to agenda/basic */
.fc-scroller > .fc-day-grid,
.fc-scroller > .fc-time-grid {
  position: relative;
  /* re-scope all positions */
  width: 100%;
  /* hack to force re-sizing this inner element when scrollbars appear/disappear */ }

/* Global Event Styles
--------------------------------------------------------------------------------------------------*/
.fc-event {
  position: relative;
  /* for resize handle and other inner positioning */
  display: block;
  /* make the <a> tag block */
  font-size: .85em;
  line-height: 1.3;
  border-radius: 3px;
  border: 1px solid #3a87ad;
  /* default BORDER color */
  font-weight: normal;
  /* undo jqui's ui-widget-header bold */ }

.fc-event,
.fc-event-dot {
  background-color: #3a87ad;
  /* default BACKGROUND color */ }

/* overpower some of bootstrap's and jqui's styles on <a> tags */
.fc-event,
.fc-event:hover,
.ui-widget .fc-event {
  color: #fff;
  /* default TEXT color */
  text-decoration: none;
  /* if <a> has an href */ }

.fc-event[href],
.fc-event.fc-draggable {
  cursor: pointer;
  /* give events with links and draggable events a hand mouse pointer */ }

.fc-not-allowed,
.fc-not-allowed .fc-event {
  /* to override an event's custom cursor */
  cursor: not-allowed; }

.fc-event .fc-bg {
  /* the generic .fc-bg already does position */
  z-index: 1;
  background: #fff;
  opacity: .25; }

.fc-event .fc-content {
  position: relative;
  z-index: 2; }

/* resizer (cursor AND touch devices) */
.fc-event .fc-resizer {
  position: absolute;
  z-index: 4; }

/* resizer (touch devices) */
.fc-event .fc-resizer {
  display: none; }

.fc-event.fc-allow-mouse-resize .fc-resizer,
.fc-event.fc-selected .fc-resizer {
  /* only show when hovering or selected (with touch) */
  display: block; }

/* hit area */
.fc-event.fc-selected .fc-resizer:before {
  /* 40x40 touch area */
  content: "";
  position: absolute;
  z-index: 9999;
  /* user of this util can scope within a lower z-index */
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  margin-left: -20px;
  margin-top: -20px; }

/* Event Selection (only for touch devices)
--------------------------------------------------------------------------------------------------*/
.fc-event.fc-selected {
  z-index: 9999 !important;
  /* overcomes inline z-index */
  -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); }

.fc-event.fc-selected.fc-dragging {
  -webkit-box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);
          box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); }

/* Horizontal Events
--------------------------------------------------------------------------------------------------*/
/* bigger touch area when selected */
.fc-h-event.fc-selected:before {
  content: "";
  position: absolute;
  z-index: 3;
  /* below resizers */
  top: -10px;
  bottom: -10px;
  left: 0;
  right: 0; }

/* events that are continuing to/from another week. kill rounded corners and butt up against edge */
.fc-ltr .fc-h-event.fc-not-start,
.fc-rtl .fc-h-event.fc-not-end {
  margin-left: 0;
  border-left-width: 0;
  padding-left: 1px;
  /* replace the border with padding */
  border-top-left-radius: 0;
  border-bottom-left-radius: 0; }

.fc-ltr .fc-h-event.fc-not-end,
.fc-rtl .fc-h-event.fc-not-start {
  margin-right: 0;
  border-right-width: 0;
  padding-right: 1px;
  /* replace the border with padding */
  border-top-right-radius: 0;
  border-bottom-right-radius: 0; }

/* resizer (cursor AND touch devices) */
/* left resizer  */
.fc-ltr .fc-h-event .fc-start-resizer,
.fc-rtl .fc-h-event .fc-end-resizer {
  cursor: w-resize;
  left: -1px;
  /* overcome border */ }

/* right resizer */
.fc-ltr .fc-h-event .fc-end-resizer,
.fc-rtl .fc-h-event .fc-start-resizer {
  cursor: e-resize;
  right: -1px;
  /* overcome border */ }

/* resizer (mouse devices) */
.fc-h-event.fc-allow-mouse-resize .fc-resizer {
  width: 7px;
  top: -1px;
  /* overcome top border */
  bottom: -1px;
  /* overcome bottom border */ }

/* resizer (touch devices) */
.fc-h-event.fc-selected .fc-resizer {
  /* 8x8 little dot */
  border-radius: 4px;
  border-width: 1px;
  width: 6px;
  height: 6px;
  border-style: solid;
  border-color: inherit;
  background: #fff;
  /* vertically center */
  top: 50%;
  margin-top: -4px; }

/* left resizer  */
.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,
.fc-rtl .fc-h-event.fc-selected .fc-end-resizer {
  margin-left: -4px;
  /* centers the 8x8 dot on the left edge */ }

/* right resizer */
.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,
.fc-rtl .fc-h-event.fc-selected .fc-start-resizer {
  margin-right: -4px;
  /* centers the 8x8 dot on the right edge */ }

/* DayGrid events
----------------------------------------------------------------------------------------------------
We use the full "fc-day-grid-event" class instead of using descendants because the event won't
be a descendant of the grid when it is being dragged.
*/
.fc-day-grid-event {
  margin: 1px 2px 0;
  /* spacing between events and edges */
  padding: 0 1px; }

tr:first-child > td > .fc-day-grid-event {
  margin-top: 2px;
  /* a little bit more space before the first event */ }

.fc-day-grid-event.fc-selected:after {
  content: "";
  position: absolute;
  z-index: 1;
  /* same z-index as fc-bg, behind text */
  /* overcome the borders */
  top: -1px;
  right: -1px;
  bottom: -1px;
  left: -1px;
  /* darkening effect */
  background: #000;
  opacity: .25; }

.fc-day-grid-event .fc-content {
  /* force events to be one-line tall */
  white-space: nowrap;
  overflow: hidden; }

.fc-day-grid-event .fc-time {
  font-weight: bold; }

/* resizer (cursor devices) */
/* left resizer  */
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {
  margin-left: -2px;
  /* to the day cell's edge */ }

/* right resizer */
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {
  margin-right: -2px;
  /* to the day cell's edge */ }

/* Event Limiting
--------------------------------------------------------------------------------------------------*/
/* "more" link that represents hidden events */
a.fc-more {
  margin: 1px 3px;
  font-size: .85em;
  cursor: pointer;
  text-decoration: none; }

a.fc-more:hover {
  text-decoration: underline; }

.fc-limited {
  /* rows and cells that are hidden because of a "more" link */
  display: none; }

/* popover that appears when "more" link is clicked */
.fc-day-grid .fc-row {
  z-index: 1;
  /* make the "more" popover one higher than this */ }

.fc-more-popover {
  z-index: 2;
  width: 220px; }

.fc-more-popover .fc-event-container {
  padding: 10px; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-now-indicator {
  position: absolute;
  border: 0 solid red; }

/* Utilities
--------------------------------------------------------------------------------------------------*/
.fc-unselectable {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent; }

/* Toolbar
--------------------------------------------------------------------------------------------------*/
.fc-toolbar {
  text-align: center; }

.fc-toolbar.fc-header-toolbar {
  margin-bottom: 1em; }

.fc-toolbar.fc-footer-toolbar {
  margin-top: 1em; }

.fc-toolbar .fc-left {
  float: left; }

.fc-toolbar .fc-right {
  float: right; }

.fc-toolbar .fc-center {
  display: inline-block; }

/* the things within each left/right/center section */
.fc .fc-toolbar > * > * {
  /* extra precedence to override button border margins */
  float: left;
  margin-left: .75em; }

/* the first thing within each left/center/right section */
.fc .fc-toolbar > * > :first-child {
  /* extra precedence to override button border margins */
  margin-left: 0; }

/* title text */
.fc-toolbar h2 {
  margin: 0; }

/* button layering (for border precedence) */
.fc-toolbar button {
  position: relative; }

.fc-toolbar .fc-state-hover,
.fc-toolbar .ui-state-hover {
  z-index: 2; }

.fc-toolbar .fc-state-down {
  z-index: 3; }

.fc-toolbar .fc-state-active,
.fc-toolbar .ui-state-active {
  z-index: 4; }

.fc-toolbar button:focus {
  z-index: 5; }

/* View Structure
--------------------------------------------------------------------------------------------------*/
/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */
/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */
.fc-view-container *,
.fc-view-container *:before,
.fc-view-container *:after {
  -webkit-box-sizing: content-box;
  box-sizing: content-box; }

.fc-view,
.fc-view > table {
  /* so dragged elements can be above the view's main element */
  position: relative;
  z-index: 1; }

/* BasicView
--------------------------------------------------------------------------------------------------*/
/* day row structure */
.fc-basicWeek-view .fc-content-skeleton,
.fc-basicDay-view .fc-content-skeleton {
  /* there may be week numbers in these views, so no padding-top */
  padding-bottom: 1em;
  /* ensure a space at bottom of cell for user selecting/clicking */ }

.fc-basic-view .fc-body .fc-row {
  min-height: 4em;
  /* ensure that all rows are at least this tall */ }

/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */
.fc-row.fc-rigid {
  overflow: hidden; }

.fc-row.fc-rigid .fc-content-skeleton {
  position: absolute;
  top: 0;
  left: 0;
  right: 0; }

/* week and day number styling */
.fc-day-top.fc-other-month {
  opacity: 0.3; }

.fc-basic-view .fc-week-number,
.fc-basic-view .fc-day-number {
  padding: 2px; }

.fc-basic-view th.fc-week-number,
.fc-basic-view th.fc-day-number {
  padding: 0 2px;
  /* column headers can't have as much v space */ }

.fc-ltr .fc-basic-view .fc-day-top .fc-day-number {
  float: right; }

.fc-rtl .fc-basic-view .fc-day-top .fc-day-number {
  float: left; }

.fc-ltr .fc-basic-view .fc-day-top .fc-week-number {
  float: left;
  border-radius: 0 0 3px 0; }

.fc-rtl .fc-basic-view .fc-day-top .fc-week-number {
  float: right;
  border-radius: 0 0 0 3px; }

.fc-basic-view .fc-day-top .fc-week-number {
  min-width: 1.5em;
  text-align: center;
  background-color: #f2f2f2;
  color: #808080; }

/* when week/day number have own column */
.fc-basic-view td.fc-week-number {
  text-align: center; }

.fc-basic-view td.fc-week-number > * {
  /* work around the way we do column resizing and ensure a minimum width */
  display: inline-block;
  min-width: 1.25em; }

/* AgendaView all-day area
--------------------------------------------------------------------------------------------------*/
.fc-agenda-view .fc-day-grid {
  position: relative;
  z-index: 2;
  /* so the "more.." popover will be over the time grid */ }

.fc-agenda-view .fc-day-grid .fc-row {
  min-height: 3em;
  /* all-day section will never get shorter than this */ }

.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton {
  padding-bottom: 1em;
  /* give space underneath events for clicking/selecting days */ }

/* TimeGrid axis running down the side (for both the all-day area and the slot area)
--------------------------------------------------------------------------------------------------*/
.fc .fc-axis {
  /* .fc to overcome default cell styles */
  vertical-align: middle;
  padding: 0 4px;
  white-space: nowrap; }

.fc-ltr .fc-axis {
  text-align: right; }

.fc-rtl .fc-axis {
  text-align: left; }

.ui-widget td.fc-axis {
  font-weight: normal;
  /* overcome jqui theme making it bold */ }

/* TimeGrid Structure
--------------------------------------------------------------------------------------------------*/
.fc-time-grid-container,
.fc-time-grid {
  /* so slats/bg/content/etc positions get scoped within here */
  position: relative;
  z-index: 1; }

.fc-time-grid {
  min-height: 100%;
  /* so if height setting is 'auto', .fc-bg stretches to fill height */ }

.fc-time-grid table {
  /* don't put outer borders on slats/bg/content/etc */
  border: 0 hidden transparent; }

.fc-time-grid > .fc-bg {
  z-index: 1; }

.fc-time-grid .fc-slats,
.fc-time-grid > hr {
  /* the <hr> AgendaView injects when grid is shorter than scroller */
  position: relative;
  z-index: 2; }

.fc-time-grid .fc-content-col {
  position: relative;
  /* because now-indicator lives directly inside */ }

.fc-time-grid .fc-content-skeleton {
  position: absolute;
  z-index: 3;
  top: 0;
  left: 0;
  right: 0; }

/* divs within a cell within the fc-content-skeleton */
.fc-time-grid .fc-business-container {
  position: relative;
  z-index: 1; }

.fc-time-grid .fc-bgevent-container {
  position: relative;
  z-index: 2; }

.fc-time-grid .fc-highlight-container {
  position: relative;
  z-index: 3; }

.fc-time-grid .fc-event-container {
  position: relative;
  z-index: 4; }

.fc-time-grid .fc-now-indicator-line {
  z-index: 5; }

.fc-time-grid .fc-helper-container {
  /* also is fc-event-container */
  position: relative;
  z-index: 6; }

/* TimeGrid Slats (lines that run horizontally)
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-slats td {
  height: 1.5em;
  border-bottom: 0;
  /* each cell is responsible for its top border */ }

.fc-time-grid .fc-slats .fc-minor td {
  border-top-style: dotted; }

.fc-time-grid .fc-slats .ui-widget-content {
  /* for jqui theme */
  background: none;
  /* see through to fc-bg */ }

/* TimeGrid Highlighting Slots
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-highlight-container {
  /* a div within a cell within the fc-highlight-skeleton */
  position: relative;
  /* scopes the left/right of the fc-highlight to be in the column */ }

.fc-time-grid .fc-highlight {
  position: absolute;
  left: 0;
  right: 0;
  /* top and bottom will be in by JS */ }

/* TimeGrid Event Containment
--------------------------------------------------------------------------------------------------*/
.fc-ltr .fc-time-grid .fc-event-container {
  /* space on the sides of events for LTR (default) */
  margin: 0 2.5% 0 2px; }

.fc-rtl .fc-time-grid .fc-event-container {
  /* space on the sides of events for RTL */
  margin: 0 2px 0 2.5%; }

.fc-time-grid .fc-event,
.fc-time-grid .fc-bgevent {
  position: absolute;
  z-index: 1;
  /* scope inner z-index's */ }

.fc-time-grid .fc-bgevent {
  /* background events always span full width */
  left: 0;
  right: 0; }

/* Generic Vertical Event
--------------------------------------------------------------------------------------------------*/
.fc-v-event.fc-not-start {
  /* events that are continuing from another day */
  /* replace space made by the top border with padding */
  border-top-width: 0;
  padding-top: 1px;
  /* remove top rounded corners */
  border-top-left-radius: 0;
  border-top-right-radius: 0; }

.fc-v-event.fc-not-end {
  /* replace space made by the top border with padding */
  border-bottom-width: 0;
  padding-bottom: 1px;
  /* remove bottom rounded corners */
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0; }

/* TimeGrid Event Styling
----------------------------------------------------------------------------------------------------
We use the full "fc-time-grid-event" class instead of using descendants because the event won't
be a descendant of the grid when it is being dragged.
*/
.fc-time-grid-event {
  overflow: hidden;
  /* don't let the bg flow over rounded corners */ }

.fc-time-grid-event.fc-selected {
  /* need to allow touch resizers to extend outside event's bounding box */
  /* common fc-selected styles hide the fc-bg, so don't need this anyway */
  overflow: visible; }

.fc-time-grid-event.fc-selected .fc-bg {
  display: none;
  /* hide semi-white background, to appear darker */ }

.fc-time-grid-event .fc-content {
  overflow: hidden;
  /* for when .fc-selected */ }

.fc-time-grid-event .fc-time,
.fc-time-grid-event .fc-title {
  padding: 0 1px; }

.fc-time-grid-event .fc-time {
  font-size: .85em;
  white-space: nowrap; }

/* short mode, where time and title are on the same line */
.fc-time-grid-event.fc-short .fc-content {
  /* don't wrap to second line (now that contents will be inline) */
  white-space: nowrap; }

.fc-time-grid-event.fc-short .fc-time,
.fc-time-grid-event.fc-short .fc-title {
  /* put the time and title on the same line */
  display: inline-block;
  vertical-align: top; }

.fc-time-grid-event.fc-short .fc-time span {
  display: none;
  /* don't display the full time text... */ }

.fc-time-grid-event.fc-short .fc-time:before {
  content: attr(data-start);
  /* ...instead, display only the start time */ }

.fc-time-grid-event.fc-short .fc-time:after {
  content: "\000A0-\000A0";
  /* seperate with a dash, wrapped in nbsp's */ }

.fc-time-grid-event.fc-short .fc-title {
  font-size: .85em;
  /* make the title text the same size as the time */
  padding: 0;
  /* undo padding from above */ }

/* resizer (cursor device) */
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer {
  left: 0;
  right: 0;
  bottom: 0;
  height: 8px;
  overflow: hidden;
  line-height: 8px;
  font-size: 11px;
  font-family: monospace;
  text-align: center;
  cursor: s-resize; }

.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after {
  content: "="; }

/* resizer (touch device) */
.fc-time-grid-event.fc-selected .fc-resizer {
  /* 10x10 dot */
  border-radius: 5px;
  border-width: 1px;
  width: 8px;
  height: 8px;
  border-style: solid;
  border-color: inherit;
  background: #fff;
  /* horizontally center */
  left: 50%;
  margin-left: -5px;
  /* center on the bottom edge */
  bottom: -5px; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-now-indicator-line {
  border-top-width: 1px;
  left: 0;
  right: 0; }

/* arrow on axis */
.fc-time-grid .fc-now-indicator-arrow {
  margin-top: -5px;
  /* vertically center on top coordinate */ }

.fc-ltr .fc-time-grid .fc-now-indicator-arrow {
  left: 0;
  /* triangle pointing right... */
  border-width: 5px 0 5px 6px;
  border-top-color: transparent;
  border-bottom-color: transparent; }

.fc-rtl .fc-time-grid .fc-now-indicator-arrow {
  right: 0;
  /* triangle pointing left... */
  border-width: 5px 6px 5px 0;
  border-top-color: transparent;
  border-bottom-color: transparent; }

/* List View
--------------------------------------------------------------------------------------------------*/
/* possibly reusable */
.fc-event-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 5px; }

/* view wrapper */
.fc-rtl .fc-list-view {
  direction: rtl;
  /* unlike core views, leverage browser RTL */ }

.fc-list-view {
  border-width: 1px;
  border-style: solid; }

/* table resets */
.fc .fc-list-table {
  table-layout: auto;
  /* for shrinkwrapping cell content */ }

.fc-list-table td {
  border-width: 1px 0 0;
  padding: 8px 14px; }

.fc-list-table tr:first-child td {
  border-top-width: 0; }

/* day headings with the list */
.fc-list-heading {
  border-bottom-width: 1px; }

.fc-list-heading td {
  font-weight: bold; }

.fc-ltr .fc-list-heading-main {
  float: left; }

.fc-ltr .fc-list-heading-alt {
  float: right; }

.fc-rtl .fc-list-heading-main {
  float: right; }

.fc-rtl .fc-list-heading-alt {
  float: left; }

/* event list items */
.fc-list-item.fc-has-url {
  cursor: pointer;
  /* whole row will be clickable */ }

.fc-list-item:hover td {
  background-color: #f5f5f5; }

.fc-list-item-marker,
.fc-list-item-time {
  white-space: nowrap;
  width: 1px; }

/* make the dot closer to the event title */
.fc-ltr .fc-list-item-marker {
  padding-right: 0; }

.fc-rtl .fc-list-item-marker {
  padding-left: 0; }

.fc-list-item-title a {
  /* every event title cell has an <a> tag */
  text-decoration: none;
  color: inherit; }

.fc-list-item-title a[href]:hover {
  /* hover effect only on titles with hrefs */
  text-decoration: underline; }

/* message when no events */
.fc-list-empty-wrap2 {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }

.fc-list-empty-wrap1 {
  width: 100%;
  height: 100%;
  display: table; }

.fc-list-empty {
  display: table-cell;
  vertical-align: middle;
  text-align: center; }

.fc-unthemed .fc-list-empty {
  /* theme will provide own background */
  background-color: #eee; }

/*!
 * FullCalendar Scheduler v1.6.2
 * Docs & License: https://fullcalendar.io/scheduler/
 * (c) 2017 Adam Shaw
 */
/* TODO: break this file up */
/* Scroller
--------------------------------------------------------------------------------------------------*/
.fc-scroller-clip {
  overflow: hidden;
  /* for clipping scrollbars */
  position: relative;
  /* so things like scrollfollowers can attach to this */ }

/* supresses rendering of native scrollbars */
/* on .fc-scroller */
.fc-no-scrollbars {
  background: rgba(255, 255, 255, 0);
  /* hack for dynamic DOM nodes (in Chrome OSX at least) */ }

.fc-no-scrollbars::-webkit-scrollbar {
  width: 0;
  height: 0; }

.fc-scroller-canvas {
  position: relative;
  /* origin for bg */
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* so that padding (for gutter) will be part of height */
  min-height: 100%; }

.fc-scroller-canvas > .fc-bg {
  z-index: 1;
  /* make default? */ }

.fc-scroller-canvas > .fc-content {
  z-index: 2;
  /* make default? */
  position: relative;
  /* origin for inner content */
  border-style: solid;
  border-width: 0; }

/* for themed, hard to get the border-color, so just forget it (REVISIT) */
.ui-widget .fc-scroller-canvas > .fc-content {
  border-color: transparent; }

.fc-scroller-canvas.fc-gutter-left > .fc-content {
  border-left-width: 1px;
  margin-left: -1px; }

.fc-scroller-canvas.fc-gutter-right > .fc-content {
  border-right-width: 1px;
  margin-right: -1px; }

.fc-scroller-canvas.fc-gutter-top > .fc-content {
  border-top-width: 1px;
  margin-top: -1px; }

/* content is responsible for bottom border */
/* View Structure
--------------------------------------------------------------------------------------------------*/
.fc-rtl .fc-timeline {
  direction: rtl; }

.fc-timeline .fc-divider {
  width: 3px;
  border-style: double;
  /* overcome neighboring borders */ }

.fc-timeline .fc-head > tr > .fc-divider {
  border-bottom: 0; }

.fc-timeline .fc-body > tr > .fc-divider {
  border-top: 0; }

.fc-timeline .fc-body .fc-divider.ui-widget-header {
  background-image: none; }

.fc-scrolled .fc-head .fc-scroller {
  z-index: 2;
  /* so drop shadow will go above body panes */ }

.fc-timeline.fc-scrolled .fc-head .fc-scroller {
  -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.075);
          box-shadow: 0 3px 4px rgba(0, 0, 0, 0.075); }

.fc-timeline .fc-body .fc-scroller {
  z-index: 1; }

/*
on most tables that expand to the edges, kill the outer border,
because the container elements take care of it.
example tables:
.fc-scroller-canvas .fc-content table
.fc-scroller-canvas .fc-bg .fc-slats table
*/
.fc-timeline .fc-scroller-canvas > div > table,
.fc-timeline .fc-scroller-canvas > div > div > table {
  border-style: hidden; }

/*
for resource rows (in both the spreadsheet and timeline areas),
undo previous rule in order to always show last border.
*/
.fc-timeline .fc-scroller-canvas > .fc-content > .fc-rows > table {
  border-bottom-style: none; }

/* Table Cell Common
--------------------------------------------------------------------------------------------------*/
.fc-timeline th,
.fc-timeline td {
  white-space: nowrap; }

.fc-timeline .fc-cell-content {
  overflow: hidden; }

.fc-timeline .fc-cell-text {
  padding-left: 4px;
  padding-right: 4px; }

.fc-timeline .fc-col-resizer {
  cursor: col-resize; }

/*
Cells at the start of a week
TODO: figure out better styling

.fc-ltr .fc-timeline .fc-em-cell div {
	border-left: 3px solid #eee;
	height: 100%;
}
.fc-rtl .fc-timeline .fc-em-cell {
	border-right-width: 3px;
}
*/
/* head */
.fc-timeline th {
  vertical-align: middle; }

.fc-timeline .fc-head .fc-cell-content {
  padding-top: 3px;
  padding-bottom: 3px; }

/* body */
.fc-timeline .fc-body .ui-widget-content {
  background-image: none; }

/* Resource Area
--------------------------------------------------------------------------------------------------*/
.fc-resource-area {
  width: 30%; }

.fc-resource-area col {
  width: 40%;
  min-width: 70px;
  /* will be read by JS */ }

.fc-resource-area col.fc-main-col {
  width: 60%;
  /* make the first column in a nested setup bigger */ }

.fc-flat .fc-expander-space {
  /* fc-flat is opposite of fc-nested */
  display: none; }

.fc-ltr .fc-resource-area tr > * {
  text-align: left; }

.fc-rtl .fc-resource-area tr > * {
  text-align: right; }

.fc-resource-area .fc-cell-content {
  padding-left: 4px;
  padding-right: 4px; }

/* head */
.fc-resource-area .fc-super th {
  text-align: center; }

.fc-resource-area th > div {
  position: relative; }

.fc-resource-area th .fc-cell-content {
  position: relative;
  z-index: 1; }

.fc-resource-area th .fc-col-resizer {
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  width: 5px; }

.fc-ltr .fc-resource-area th .fc-col-resizer {
  right: -3px; }

.fc-rtl .fc-resource-area th .fc-col-resizer {
  left: -3px; }

/* body */
tr.fc-collapsed > td,
tr.fc-transitioning > td {
  /* during the transition */
  overflow: hidden;
  /* prevents absolutely-positioned events from bleeding out */ }

tr.fc-transitioning > td > div {
  -webkit-transition: margin-top 0.2s;
  transition: margin-top 0.2s; }

tr.fc-collapsed > td > div {
  margin-top: -10px; }

.fc-body .fc-resource-area .fc-cell-content {
  /* might BE the cell */
  padding-top: 8px;
  padding-bottom: 8px; }

.fc-no-overlap .fc-body .fc-resource-area .fc-cell-content {
  /* might BE the cell */
  padding-top: 5px;
  padding-bottom: 5px; }

.fc-resource-area .fc-icon {
  /* the expander and spacers before the expander */
  width: 1em;
  /* ensure constant width, esp for empty icons */
  font-size: .9em;
  vertical-align: middle;
  margin-top: -1%; }

.fc-resource-area .fc-expander {
  cursor: pointer;
  color: #666;
  /* for the icon within */ }

/* Time Area
--------------------------------------------------------------------------------------------------*/
.fc-time-area col {
  min-width: 2.2em;
  /* detected by JS */ }

/* head */
.fc-ltr .fc-time-area .fc-chrono th {
  text-align: left; }

.fc-rtl .fc-time-area .fc-chrono th {
  text-align: right; }

/* body slats (vertical lines) */
.fc-time-area .fc-slats {
  /* fc-bg is responsible for a lot of this now! */
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }

.fc-time-area .fc-slats table {
  height: 100%; }

.fc-time-area .fc-slats .fc-minor {
  border-style: dotted; }

.fc-time-area .fc-slats td {
  border-width: 0 1px;
  /* need to do this. sometimes -1 margin wouldn't hide the dotted */ }

.fc-ltr .fc-time-area .fc-slats td {
  border-right-width: 0; }

.fc-rtl .fc-time-area .fc-slats td {
  border-left-width: 0; }

/* body content containers
   can be within rows or directly within the pane's content
*/
.fc-time-area .fc-bgevent-container,
.fc-time-area .fc-highlight-container {
  position: absolute;
  z-index: 2;
  /* only for directly within pane. not for row. overridden later */
  top: 0;
  bottom: 0;
  width: 0; }

.fc-ltr .fc-time-area .fc-helper-container,
.fc-ltr .fc-time-area .fc-bgevent-container,
.fc-ltr .fc-time-area .fc-highlight-container {
  left: 0; }

.fc-rtl .fc-time-area .fc-helper-container,
.fc-rtl .fc-time-area .fc-bgevent-container,
.fc-rtl .fc-time-area .fc-highlight-container {
  right: 0; }

.fc-time-area .fc-bgevent,
.fc-time-area .fc-highlight {
  position: absolute;
  top: 0;
  bottom: 0; }

/* body resource rows */
.fc-time-area .fc-rows {
  position: relative;
  z-index: 3; }

.fc-time-area .fc-rows .ui-widget-content {
  background: none; }

.fc-time-area .fc-rows td > div {
  position: relative; }

.fc-time-area .fc-rows .fc-bgevent-container,
.fc-time-area .fc-rows .fc-highlight-container {
  z-index: 1; }

.fc-time-area .fc-event-container {
  position: relative;
  z-index: 2;
  /* above bgevent and highlight */
  width: 0;
  /* for event positioning. will end up on correct side based on dir */ }

.fc-time-area .fc-helper-container {
  /* also an fc-event-container */
  position: absolute;
  z-index: 3;
  top: 0; }

.fc-time-area .fc-event-container {
  padding-bottom: 8px;
  top: -1px; }

.fc-time-area tr:first-child .fc-event-container {
  top: 0; }

.fc-no-overlap .fc-time-area .fc-event-container {
  padding-bottom: 0;
  top: 0; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-timeline .fc-now-indicator {
  /* both the arrow and the line */
  z-index: 3;
  /* one above scroller's fc-content */
  top: 0; }

.fc-time-area .fc-now-indicator-arrow {
  margin: 0 -6px;
  /* 5, then one more to counteract scroller's negative margins */
  /* triangle pointing down... */
  border-width: 6px 5px 0 5px;
  border-left-color: transparent;
  border-right-color: transparent; }

.fc-time-area .fc-now-indicator-line {
  margin: 0 -1px;
  /* counteract scroller's negative margins */
  bottom: 0;
  border-left-width: 1px; }

/* Time Grid Events
--------------------------------------------------------------------------------------------------*/
.fc-timeline-event {
  position: absolute;
  border-radius: 0;
  padding: 2px 0;
  margin-bottom: 1px; }

.fc-no-overlap .fc-timeline-event {
  padding: 5px 0;
  margin-bottom: 0; }

/* don't overlap grid lines at the event's end */
.fc-ltr .fc-timeline-event {
  margin-right: 1px; }

.fc-rtl .fc-timeline-event {
  margin-left: 1px; }

.fc-timeline-event .fc-content {
  padding: 0 1px;
  white-space: nowrap;
  overflow: hidden; }

.fc-timeline-event .fc-time {
  font-weight: bold;
  padding: 0 1px; }

.fc-rtl .fc-timeline-event .fc-time {
  display: inline-block;
  /* will force it on the other side */ }

.fc-timeline-event .fc-title {
  padding: 0 1px; }

.fc-timeline-event.fc-selected .fc-bg {
  display: none;
  /* hide semi-white background, to appear darker */ }

/* follower logic */
.fc-ltr .fc-timeline-event .fc-title {
  padding-left: 10px;
  margin-left: -8px; }

.fc-rtl .fc-timeline-event .fc-title {
  padding-right: 10px;
  margin-right: -8px; }

.fc-ltr .fc-timeline-event.fc-not-start .fc-title {
  margin-left: -2px; }

.fc-rtl .fc-timeline-event.fc-not-start .fc-title {
  margin-right: -2px; }

.fc-timeline-event.fc-not-start .fc-title,
.fc-body .fc-time-area .fc-following {
  position: relative; }

.fc-timeline-event.fc-not-start .fc-title:before,
.fc-body .fc-time-area .fc-following:before {
  /* generic arrow */
  content: "";
  position: absolute;
  top: 50%;
  margin-top: -5px;
  border: 5px solid #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  opacity: .5; }

.fc-ltr .fc-timeline-event.fc-not-start .fc-title:before,
.fc-ltr .fc-body .fc-time-area .fc-following:before {
  /* LTR. left pointing arrow */
  border-left: 0;
  left: 2px; }

.fc-rtl .fc-timeline-event.fc-not-start .fc-title:before,
.fc-rtl .fc-body .fc-time-area .fc-following:before {
  /* RTL. right pointing arrow */
  border-right: 0;
  right: 2px; }

/* License Message
--------------------------------------------------------------------------------------------------*/
.fc-license-message {
  position: absolute;
  z-index: 99999;
  bottom: 1px;
  left: 1px;
  background: #eee;
  border-color: #ddd;
  border-style: solid;
  border-width: 1px 1px 0 0;
  padding: 2px 4px;
  font-size: 12px;
  border-top-right-radius: 3px; }

/* data range above calendar */
#calendar {
  padding: 0 1rem 0; }

.fc table {
  font-size: 0.83333rem; }

.fc-toolbar .fc-left h2 {
  margin-top: 0.2rem;
  margin-bottom: 0.5rem;
  font-weight: normal;
  line-height: 1.4;
  text-transform: uppercase;
  font-size: 1rem;
  color: #505050; }
  @media screen and (max-width: 39.9375em) {
    .fc-toolbar .fc-left h2 {
      font-size: 1rem; } }

@media screen and (max-width: 39.9375em) {
  .fc-resource-area {
    width: 20% !important; } }

@media screen and (max-width: 22.9375em) {
  .fc-toolbar .fc-right {
    float: none; }
    .fc-toolbar .fc-right .subheader {
      margin-top: 1rem; } }

.fc button {
  text-shadow: none;
  -webkit-box-shadow: none;
          box-shadow: none;
  border-radius: 1px !important;
  text-transform: uppercase;
  font-size: 0.83333rem;
  font-weight: 700;
  background-image: none;
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem 0;
  font-family: inherit;
  padding: 0.65em 1.35em;
  -webkit-appearance: none;
  border: 1px solid transparent;
  border-radius: 1px;
  -webkit-transition: background-color 0.25s ease-out, color 0.25s ease-out;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  font-size: 0.9rem;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  background-color: #fbba00;
  color: #fefefe;
  padding: .5em 1.35em !important;
  font-size: 0.83333rem; }
  [data-whatinput='mouse'] .fc button {
    outline: 0; }
  .fc button:hover, .fc button:focus {
    background-color: #d59e00;
    color: #fefefe; }

@media print, screen and (min-width: 64em) {
  .block__program .divider {
    margin-bottom: 1rem; } }

@media screen and (max-width: 39.9375em) {
  .block__program {
    padding-bottom: 0; } }

.block__legend .label {
  text-indent: -9999px;
  height: 3px;
  padding: .33rem;
  margin-bottom: .75rem; }

.block__legend dd {
  margin: 0 .3em;
  line-height: 1; }

.block__eventlist ul {
  margin-bottom: 2rem; }

.block__eventlist .label__session {
  margin-bottom: 1rem; }

.block__eventlist .main .subheader {
  margin-top: 0; }

.eventlist__filter .subheader {
  margin-top: 0;
  margin-bottom: 1rem; }

@media screen and (min-width: 40em) and (max-width: 48em) {
  .eventlist__filter .button-group {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .eventlist__filter .button-group #button__filter {
      margin-bottom: .5rem; } }

#button__filter, #button__reset {
  margin-bottom: 0;
  font-size: .7rem; }

.wrap__filter {
  margin-bottom: 1rem; }

.label__filter {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  border-radius: 3px;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  background-color: #646464;
  color: #fefefe; }

/* 8.3 EXHIBITION */
/* ------------------------------------------ */
.block__exhibitorlist .icon-map-pin, .block__exhibitor .icon-map-pin {
  margin-right: .3rem;
  display: inline-block; }

.callout__exhibitor {
  position: relative; }
  .callout__exhibitor .subheader {
    margin: 0 0 .5rem 0; }
  .callout__exhibitor .icon-star-o {
    margin-right: .3rem;
    display: inline-block; }
  .callout__exhibitor .label__supporter {
    position: absolute;
    right: -10px;
    top: 5px; }
  .callout__exhibitor .readmore.show-for-small-only {
    margin-top: .5rem;
    display: inline-block; }

.block__exhibitor.entry__single .media-object-section:first-child {
  padding-right: 2rem; }

.block__exhibitor.entry__single h1 {
  line-height: 1; }

@media screen and (min-width: 28.125em) {
  .block__exhibitor.entry__single .exhibitor__logo {
    max-width: 200px; } }

@media print, screen and (min-width: 40em) {
  .block__exhibitor.entry__single .exhibitor__logo {
    max-width: 150px; } }

.exhibitor__newsitem {
  margin-bottom: 2rem;
  padding-bottom: 1rem; }

.exhibitor__news {
  margin-bottom: 1rem; }

[data-readmore] {
  position: relative; }

/* Set default styling of gradient. 
Note the height of 0. We'll transition the height, rather than the background. I think this makes for a smoother effect. This also has the added benefit of not overlaying the text at the bottom with an absolutely positioned pseudo-element—even if it is transparent—which could prevent text selection. */
[data-readmore]:before {
  content: '';
  width: 100%;
  height: 0;
  position: absolute;
  left: 0;
  bottom: 0;
  display: block;
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(248, 248, 248, 0)), to(#f8f8f8));
  background-image: -webkit-linear-gradient(rgba(248, 248, 248, 0), #f8f8f8);
  background-image: linear-gradient(rgba(248, 248, 248, 0), #f8f8f8);
  /* Be sure to use the same speed value as in your Readmore configuration, keeping in mind that CSS transition speed is stated in seconds. */
  -webkit-transition: height .5s;
  transition: height .5s; }

/* Set the height of the gradient to 80 when CLOSED */
[data-readmore][aria-expanded="false"]:before,
[data-readmore][aria-expanded="true"].transitioning:before {
  height: 80px; }

/* This isn't strictly necessary, but I think it makes for a smoother effect. */
/* Set the height of the gradient to 0 when transitioning from CLOSED to OPEN */
[data-readmore][aria-expanded="false"].transitioning:before {
  height: 0; }

/* 8.4 BLOG */
/* ------------------------------------------ */
.entry__teaser a, .entry__single .entry__meta a {
  color: #1d1500; }
  .entry__teaser a:hover, .entry__single .entry__meta a:hover {
    color: #fbba00; }

.block__bloglist .main .entry__teaser, .block__post.entry__single .entry__teaser {
  margin-bottom: 1rem;
  padding-bottom: 1rem; }
  @media print, screen and (min-width: 40em) {
    .block__bloglist .main .entry__teaser, .block__post.entry__single .entry__teaser {
      margin-bottom: 2rem;
      padding-bottom: 2rem; } }
  .block__bloglist .main .entry__teaser h2, .block__post.entry__single .entry__teaser h2 {
    margin-bottom: .5rem; }

.block__bloglist .main .entry__header, .block__post.entry__single .entry__header {
  position: relative;
  margin-bottom: 3rem;
  padding-bottom: 0;
  margin-bottom: 2rem; }
  .block__bloglist .main .entry__header:before, .block__post.entry__single .entry__header:before {
    content: "";
    position: absolute;
    width: 50px;
    height: 1px;
    bottom: -15px;
    left: 0;
    border-bottom: 4px solid #fbba00; }

.block__bloglist .main .entry__meta, .block__post.entry__single .entry__meta {
  margin-bottom: .5rem; }

.block__bloglist .main .entry__summary, .block__post.entry__single .entry__summary {
  margin-bottom: 1rem; }

.block__bloglist .main .entry__social, .block__post.entry__single .entry__social {
  margin-top: .5rem;
  font-size: 1.22222rem; }

.block__bloglist .main .entry__social li + li, .block__post.entry__single .entry__social li + li {
  margin-left: .5rem; }

.block__bloglist aside .subheader {
  line-height: 3.11111rem;
  margin-top: 0;
  position: relative;
  margin-bottom: 3rem;
  padding-bottom: 0;
  margin-bottom: 2rem; }
  .block__bloglist aside .subheader:before {
    content: "";
    position: absolute;
    width: 50px;
    height: 1px;
    bottom: -15px;
    left: 0;
    border-bottom: 4px solid #fbba00; }

.block__bloglist aside ul {
  margin-left: 1.1em; }
  .block__bloglist aside ul li {
    position: relative;
    padding: 6px 3px;
    font-size: 90%; }
    .block__bloglist aside ul li [class^=icon-], .block__bloglist aside ul li [class*="icon-"] {
      position: absolute;
      left: -1.75em;
      text-align: center;
      top: 6px;
      padding: 5px;
      font-size: 90%; }

.block__bloglist aside .active {
  font-weight: 700; }

.block__bloglist aside [class^=bloglist__] {
  margin-bottom: 1rem; }

.block__bloglist aside [class^=bloglist__] a {
  color: #1d1500; }
  .block__bloglist aside [class^=bloglist__] a:hover {
    color: #fbba00; }

/* ------------------------------------------ */
/* 9. ANIMATIONS */
/* ------------------------------------------ */
/* wow library */
.wow {
  visibility: hidden; }

.animate-slide-in {
  -webkit-animation-name: slide-in-up-100;
          animation-name: slide-in-up-100;
  -webkit-animation-duration: 750ms;
          animation-duration: 750ms; }

@-webkit-keyframes slide-in-up-100 {
  0% {
    -webkit-transform: translateY(100%);
            transform: translateY(100%); }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@keyframes slide-in-up-100 {
  0% {
    -webkit-transform: translateY(100%);
            transform: translateY(100%); }
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

.animate-fade-in {
  -webkit-animation-name: fade-0-to-100;
          animation-name: fade-0-to-100;
  -webkit-animation-duration: 500ms;
          animation-duration: 500ms; }

@-webkit-keyframes fade-0-to-100 {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

@keyframes fade-0-to-100 {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

    @font-face {
  font-family: 'icomoon';
  src: url("fonts/icomoon.eot?xxj13f");
  src: url("fonts/icomoon.eot?xxj13f#iefix") format("embedded-opentype"), url("fonts/icomoon.ttf?xxj13f") format("truetype"), url("fonts/icomoon.woff?xxj13f") format("woff"), url("fonts/icomoon.svg?xxj13f#icomoon") format("svg");
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-home:before {
  content: "\e900"; }

.icon-home2:before {
  content: "\e901"; }

.icon-home3:before {
  content: "\e902"; }

.icon-office:before {
  content: "\e903"; }

.icon-newspaper:before {
  content: "\e904"; }

.icon-pencil:before {
  content: "\e905"; }

.icon-pencil2:before {
  content: "\e906"; }

.icon-quill:before {
  content: "\e907"; }

.icon-pen:before {
  content: "\e908"; }

.icon-blog:before {
  content: "\e909"; }

.icon-eyedropper:before {
  content: "\e90a"; }

.icon-droplet:before {
  content: "\e90b"; }

.icon-paint-format:before {
  content: "\e90c"; }

.icon-image:before {
  content: "\e90d"; }

.icon-images:before {
  content: "\e90e"; }

.icon-camera:before {
  content: "\e90f"; }

.icon-headphones:before {
  content: "\e910"; }

.icon-music:before {
  content: "\e911"; }

.icon-play:before {
  content: "\e912"; }

.icon-film:before {
  content: "\e913"; }

.icon-video-camera:before {
  content: "\e914"; }

.icon-pacman:before {
  content: "\e916"; }

.icon-diamonds:before {
  content: "\e919"; }

.icon-bullhorn:before {
  content: "\e91a"; }

.icon-connection:before {
  content: "\e91b"; }

.icon-podcast:before {
  content: "\e91c"; }

.icon-feed:before {
  content: "\e91d"; }

.icon-mic:before {
  content: "\e91e"; }

.icon-book:before {
  content: "\e91f"; }

.icon-books:before {
  content: "\e920"; }

.icon-library:before {
  content: "\e921"; }

.icon-file-text:before {
  content: "\e922"; }

.icon-profile:before {
  content: "\e923"; }

.icon-file-empty:before {
  content: "\e924"; }

.icon-files-empty:before {
  content: "\e925"; }

.icon-file-text2:before {
  content: "\e926"; }

.icon-file-picture:before {
  content: "\e927"; }

.icon-file-music:before {
  content: "\e928"; }

.icon-file-play:before {
  content: "\e929"; }

.icon-file-video:before {
  content: "\e92a"; }

.icon-file-zip:before {
  content: "\e92b"; }

.icon-copy:before {
  content: "\e92c"; }

.icon-paste:before {
  content: "\e92d"; }

.icon-stack:before {
  content: "\e92e"; }

.icon-folder:before {
  content: "\e92f"; }

.icon-folder-open:before {
  content: "\e930"; }

.icon-folder-plus:before {
  content: "\e931"; }

.icon-folder-minus:before {
  content: "\e932"; }

.icon-folder-download:before {
  content: "\e933"; }

.icon-folder-upload:before {
  content: "\e934"; }

.icon-price-tag:before {
  content: "\e935"; }

.icon-price-tags:before {
  content: "\e936"; }

.icon-barcode:before {
  content: "\e937"; }

.icon-qrcode:before {
  content: "\e938"; }

.icon-ticket:before {
  content: "\e939"; }

.icon-cart:before {
  content: "\e93a"; }

.icon-coin-dollar:before {
  content: "\e93b"; }

.icon-coin-euro:before {
  content: "\e93c"; }

.icon-coin-pound:before {
  content: "\e93d"; }

.icon-coin-yen:before {
  content: "\e93e"; }

.icon-credit-card:before {
  content: "\e93f"; }

.icon-calculator:before {
  content: "\e940"; }

.icon-lifebuoy:before {
  content: "\e941"; }

.icon-phone:before {
  content: "\e942"; }

.icon-phone-hang-up:before {
  content: "\e943"; }

.icon-address-book:before {
  content: "\e944"; }

.icon-envelop:before {
  content: "\e945"; }

.icon-pushpin:before {
  content: "\e946"; }

.icon-location:before {
  content: "\e947"; }

.icon-location2:before {
  content: "\e948"; }

.icon-compass:before {
  content: "\e949"; }

.icon-compass2:before {
  content: "\e94a"; }

.icon-map:before {
  content: "\e94b"; }

.icon-map2:before {
  content: "\e94c"; }

.icon-history:before {
  content: "\e94d"; }

.icon-clock:before {
  content: "\e94e"; }

.icon-clock2:before {
  content: "\e94f"; }

.icon-alarm:before {
  content: "\e950"; }

.icon-bell:before {
  content: "\e951"; }

.icon-stopwatch:before {
  content: "\e952"; }

.icon-calendar:before {
  content: "\e953"; }

.icon-printer:before {
  content: "\e954"; }

.icon-keyboard:before {
  content: "\e955"; }

.icon-display:before {
  content: "\e956"; }

.icon-laptop:before {
  content: "\e957"; }

.icon-mobile:before {
  content: "\e958"; }

.icon-mobile2:before {
  content: "\e959"; }

.icon-tablet:before {
  content: "\e95a"; }

.icon-tv:before {
  content: "\e95b"; }

.icon-drawer:before {
  content: "\e95c"; }

.icon-drawer2:before {
  content: "\e95d"; }

.icon-box-add:before {
  content: "\e95e"; }

.icon-box-remove:before {
  content: "\e95f"; }

.icon-download:before {
  content: "\e960"; }

.icon-upload:before {
  content: "\e961"; }

.icon-floppy-disk:before {
  content: "\e962"; }

.icon-drive:before {
  content: "\e963"; }

.icon-database:before {
  content: "\e964"; }

.icon-undo:before {
  content: "\e965"; }

.icon-redo:before {
  content: "\e966"; }

.icon-undo2:before {
  content: "\e967"; }

.icon-redo2:before {
  content: "\e968"; }

.icon-forward:before {
  content: "\e969"; }

.icon-reply:before {
  content: "\e96a"; }

.icon-bubble:before {
  content: "\e96b"; }

.icon-bubbles:before {
  content: "\e96c"; }

.icon-bubbles2:before {
  content: "\e96d"; }

.icon-bubble2:before {
  content: "\e96e"; }

.icon-bubbles3:before {
  content: "\e96f"; }

.icon-bubbles4:before {
  content: "\e970"; }

.icon-user:before {
  content: "\e971"; }

.icon-users:before {
  content: "\e972"; }

.icon-user-plus:before {
  content: "\e973"; }

.icon-user-minus:before {
  content: "\e974"; }

.icon-user-check:before {
  content: "\e975"; }

.icon-user-tie:before {
  content: "\e976"; }

.icon-quotes-left:before {
  content: "\e977"; }

.icon-quotes-right:before {
  content: "\e978"; }

.icon-hour-glass:before {
  content: "\e979"; }

.icon-spinner:before {
  content: "\e97a"; }

.icon-spinner2:before {
  content: "\e97b"; }

.icon-spinner3:before {
  content: "\e97c"; }

.icon-spinner4:before {
  content: "\e97d"; }

.icon-spinner5:before {
  content: "\e97e"; }

.icon-spinner6:before {
  content: "\e97f"; }

.icon-spinner7:before {
  content: "\e980"; }

.icon-spinner8:before {
  content: "\e981"; }

.icon-spinner9:before {
  content: "\e982"; }

.icon-spinner10:before {
  content: "\e983"; }

.icon-spinner11:before {
  content: "\e984"; }

.icon-binoculars:before {
  content: "\e985"; }

.icon-search:before {
  content: "\e986"; }

.icon-zoom-in:before {
  content: "\e987"; }

.icon-zoom-out:before {
  content: "\e988"; }

.icon-enlarge:before {
  content: "\e989"; }

.icon-shrink:before {
  content: "\e98a"; }

.icon-enlarge2:before {
  content: "\e98b"; }

.icon-shrink2:before {
  content: "\e98c"; }

.icon-key:before {
  content: "\e98d"; }

.icon-key2:before {
  content: "\e98e"; }

.icon-lock:before {
  content: "\e98f"; }

.icon-unlocked:before {
  content: "\e990"; }

.icon-wrench:before {
  content: "\e991"; }

.icon-equalizer:before {
  content: "\e992"; }

.icon-equalizer2:before {
  content: "\e993"; }

.icon-cog:before {
  content: "\e994"; }

.icon-cogs:before {
  content: "\e995"; }

.icon-hammer:before {
  content: "\e996"; }

.icon-magic-wand:before {
  content: "\e997"; }

.icon-aid-kit:before {
  content: "\e998"; }

.icon-bug:before {
  content: "\e999"; }

.icon-pie-chart:before {
  content: "\e99a"; }

.icon-stats-dots:before {
  content: "\e99b"; }

.icon-stats-bars:before {
  content: "\e99c"; }

.icon-stats-bars2:before {
  content: "\e99d"; }

.icon-trophy:before {
  content: "\e99e"; }

.icon-gift:before {
  content: "\e99f"; }

.icon-glass:before {
  content: "\e9a0"; }

.icon-glass2:before {
  content: "\e9a1"; }

.icon-mug:before {
  content: "\e9a2"; }

.icon-spoon-knife:before {
  content: "\e9a3"; }

.icon-leaf:before {
  content: "\e9a4"; }

.icon-rocket:before {
  content: "\e9a5"; }

.icon-meter:before {
  content: "\e9a6"; }

.icon-meter2:before {
  content: "\e9a7"; }

.icon-hammer2:before {
  content: "\e9a8"; }

.icon-fire:before {
  content: "\e9a9"; }

.icon-lab:before {
  content: "\e9aa"; }

.icon-magnet:before {
  content: "\e9ab"; }

.icon-bin:before {
  content: "\e9ac"; }

.icon-bin2:before {
  content: "\e9ad"; }

.icon-briefcase:before {
  content: "\e9ae"; }

.icon-airplane:before {
  content: "\e9af"; }

.icon-truck:before {
  content: "\e9b0"; }

.icon-road:before {
  content: "\e9b1"; }

.icon-accessibility:before {
  content: "\e9b2"; }

.icon-target:before {
  content: "\e9b3"; }

.icon-shield:before {
  content: "\e9b4"; }

.icon-power:before {
  content: "\e9b5"; }

.icon-switch:before {
  content: "\e9b6"; }

.icon-power-cord:before {
  content: "\e9b7"; }

.icon-clipboard:before {
  content: "\e9b8"; }

.icon-list-numbered:before {
  content: "\e9b9"; }

.icon-list:before {
  content: "\e9ba"; }

.icon-list2:before {
  content: "\e9bb"; }

.icon-tree:before {
  content: "\e9bc"; }

.icon-menu:before {
  content: "\e9bd"; }

.icon-menu2:before {
  content: "\e9be"; }

.icon-menu3:before {
  content: "\e9bf"; }

.icon-menu4:before {
  content: "\e9c0"; }

.icon-cloud:before {
  content: "\e9c1"; }

.icon-cloud-download:before {
  content: "\e9c2"; }

.icon-cloud-upload:before {
  content: "\e9c3"; }

.icon-cloud-check:before {
  content: "\e9c4"; }

.icon-download2:before {
  content: "\e9c5"; }

.icon-upload2:before {
  content: "\e9c6"; }

.icon-download3:before {
  content: "\e9c7"; }

.icon-upload3:before {
  content: "\e9c8"; }

.icon-sphere:before {
  content: "\e9c9"; }

.icon-earth:before {
  content: "\e9ca"; }

.icon-link:before {
  content: "\e9cb"; }

.icon-flag:before {
  content: "\e9cc"; }

.icon-attachment:before {
  content: "\e9cd"; }

.icon-eye:before {
  content: "\e9ce"; }

.icon-eye-plus:before {
  content: "\e9cf"; }

.icon-eye-minus:before {
  content: "\e9d0"; }

.icon-eye-blocked:before {
  content: "\e9d1"; }

.icon-bookmark:before {
  content: "\e9d2"; }

.icon-bookmarks:before {
  content: "\e9d3"; }

.icon-sun:before {
  content: "\e9d4"; }

.icon-contrast:before {
  content: "\e9d5"; }

.icon-brightness-contrast:before {
  content: "\e9d6"; }

.icon-star-empty:before {
  content: "\e9d7"; }

.icon-star-half:before {
  content: "\e9d8"; }

.icon-star-full:before {
  content: "\e9d9"; }

.icon-heart:before {
  content: "\e9da"; }

.icon-heart-broken:before {
  content: "\e9db"; }

.icon-man:before {
  content: "\e9dc"; }

.icon-woman:before {
  content: "\e9dd"; }

.icon-man-woman:before {
  content: "\e9de"; }

.icon-happy:before {
  content: "\e9df"; }

.icon-happy2:before {
  content: "\e9e0"; }

.icon-smile:before {
  content: "\e9e1"; }

.icon-smile2:before {
  content: "\e9e2"; }

.icon-tongue:before {
  content: "\e9e3"; }

.icon-tongue2:before {
  content: "\e9e4"; }

.icon-sad:before {
  content: "\e9e5"; }

.icon-sad2:before {
  content: "\e9e6"; }

.icon-wink:before {
  content: "\e9e7"; }

.icon-wink2:before {
  content: "\e9e8"; }

.icon-grin:before {
  content: "\e9e9"; }

.icon-grin2:before {
  content: "\e9ea"; }

.icon-cool:before {
  content: "\e9eb"; }

.icon-cool2:before {
  content: "\e9ec"; }

.icon-angry:before {
  content: "\e9ed"; }

.icon-angry2:before {
  content: "\e9ee"; }

.icon-evil:before {
  content: "\e9ef"; }

.icon-evil2:before {
  content: "\e9f0"; }

.icon-shocked:before {
  content: "\e9f1"; }

.icon-shocked2:before {
  content: "\e9f2"; }

.icon-baffled:before {
  content: "\e9f3"; }

.icon-baffled2:before {
  content: "\e9f4"; }

.icon-confused:before {
  content: "\e9f5"; }

.icon-confused2:before {
  content: "\e9f6"; }

.icon-neutral:before {
  content: "\e9f7"; }

.icon-neutral2:before {
  content: "\e9f8"; }

.icon-hipster:before {
  content: "\e9f9"; }

.icon-hipster2:before {
  content: "\e9fa"; }

.icon-wondering:before {
  content: "\e9fb"; }

.icon-wondering2:before {
  content: "\e9fc"; }

.icon-sleepy:before {
  content: "\e9fd"; }

.icon-sleepy2:before {
  content: "\e9fe"; }

.icon-frustrated:before {
  content: "\e9ff"; }

.icon-frustrated2:before {
  content: "\ea00"; }

.icon-crying:before {
  content: "\ea01"; }

.icon-crying2:before {
  content: "\ea02"; }

.icon-point-up:before {
  content: "\ea03"; }

.icon-point-right:before {
  content: "\ea04"; }

.icon-point-down:before {
  content: "\ea05"; }

.icon-point-left:before {
  content: "\ea06"; }

.icon-warning:before {
  content: "\ea07"; }

.icon-notification:before {
  content: "\ea08"; }

.icon-question:before {
  content: "\ea09"; }

.icon-plus:before {
  content: "\ea0a"; }

.icon-minus:before {
  content: "\ea0b"; }

.icon-info:before {
  content: "\ea0c"; }

.icon-cancel-circle:before {
  content: "\ea0d"; }

.icon-blocked:before {
  content: "\ea0e"; }

.icon-cross:before {
  content: "\ea0f"; }

.icon-checkmark:before {
  content: "\ea10"; }

.icon-checkmark2:before {
  content: "\ea11"; }

.icon-spell-check:before {
  content: "\ea12"; }

.icon-enter:before {
  content: "\ea13"; }

.icon-exit:before {
  content: "\ea14"; }

.icon-play2:before {
  content: "\ea15"; }

.icon-pause:before {
  content: "\ea16"; }

.icon-stop:before {
  content: "\ea17"; }

.icon-previous:before {
  content: "\ea18"; }

.icon-next:before {
  content: "\ea19"; }

.icon-backward:before {
  content: "\ea1a"; }

.icon-forward2:before {
  content: "\ea1b"; }

.icon-play3:before {
  content: "\ea1c"; }

.icon-pause2:before {
  content: "\ea1d"; }

.icon-stop2:before {
  content: "\ea1e"; }

.icon-backward2:before {
  content: "\ea1f"; }

.icon-forward3:before {
  content: "\ea20"; }

.icon-first:before {
  content: "\ea21"; }

.icon-last:before {
  content: "\ea22"; }

.icon-previous2:before {
  content: "\ea23"; }

.icon-next2:before {
  content: "\ea24"; }

.icon-eject:before {
  content: "\ea25"; }

.icon-volume-high:before {
  content: "\ea26"; }

.icon-volume-medium:before {
  content: "\ea27"; }

.icon-volume-low:before {
  content: "\ea28"; }

.icon-volume-mute:before {
  content: "\ea29"; }

.icon-volume-mute2:before {
  content: "\ea2a"; }

.icon-volume-increase:before {
  content: "\ea2b"; }

.icon-volume-decrease:before {
  content: "\ea2c"; }

.icon-loop:before {
  content: "\ea2d"; }

.icon-loop2:before {
  content: "\ea2e"; }

.icon-infinite:before {
  content: "\ea2f"; }

.icon-shuffle:before {
  content: "\ea30"; }

.icon-arrow-up-left:before {
  content: "\ea31"; }

.icon-arrow-up:before {
  content: "\ea32"; }

.icon-arrow-up-right:before {
  content: "\ea33"; }

.icon-arrow-right:before {
  content: "\ea34"; }

.icon-arrow-down-right:before {
  content: "\ea35"; }

.icon-arrow-down:before {
  content: "\ea36"; }

.icon-arrow-down-left:before {
  content: "\ea37"; }

.icon-arrow-left:before {
  content: "\ea38"; }

.icon-arrow-up-left2:before {
  content: "\ea39"; }

.icon-arrow-up2:before {
  content: "\ea3a"; }

.icon-arrow-up-right2:before {
  content: "\ea3b"; }

.icon-arrow-right2:before {
  content: "\ea3c"; }

.icon-arrow-down-right2:before {
  content: "\ea3d"; }

.icon-arrow-down2:before {
  content: "\ea3e"; }

.icon-arrow-down-left2:before {
  content: "\ea3f"; }

.icon-arrow-left2:before {
  content: "\ea40"; }

.icon-circle-up:before {
  content: "\ea41"; }

.icon-circle-right:before {
  content: "\ea42"; }

.icon-circle-down:before {
  content: "\ea43"; }

.icon-circle-left:before {
  content: "\ea44"; }

.icon-tab:before {
  content: "\ea45"; }

.icon-move-up:before {
  content: "\ea46"; }

.icon-move-down:before {
  content: "\ea47"; }

.icon-sort-alpha-asc:before {
  content: "\ea48"; }

.icon-sort-alpha-desc:before {
  content: "\ea49"; }

.icon-sort-numeric-asc:before {
  content: "\ea4a"; }

.icon-sort-numberic-desc:before {
  content: "\ea4b"; }

.icon-sort-amount-asc:before {
  content: "\ea4c"; }

.icon-sort-amount-desc:before {
  content: "\ea4d"; }

.icon-command:before {
  content: "\ea4e"; }

.icon-shift:before {
  content: "\ea4f"; }

.icon-ctrl:before {
  content: "\ea50"; }

.icon-opt:before {
  content: "\ea51"; }

.icon-checkbox-checked:before {
  content: "\ea52"; }

.icon-checkbox-unchecked:before {
  content: "\ea53"; }

.icon-radio-checked:before {
  content: "\ea54"; }

.icon-radio-checked2:before {
  content: "\ea55"; }

.icon-radio-unchecked:before {
  content: "\ea56"; }

.icon-crop:before {
  content: "\ea57"; }

.icon-make-group:before {
  content: "\ea58"; }

.icon-ungroup:before {
  content: "\ea59"; }

.icon-scissors:before {
  content: "\ea5a"; }

.icon-filter:before {
  content: "\ea5b"; }

.icon-font:before {
  content: "\ea5c"; }

.icon-ligature:before {
  content: "\ea5d"; }

.icon-ligature2:before {
  content: "\ea5e"; }

.icon-text-height:before {
  content: "\ea5f"; }

.icon-text-width:before {
  content: "\ea60"; }

.icon-font-size:before {
  content: "\ea61"; }

.icon-bold:before {
  content: "\ea62"; }

.icon-underline:before {
  content: "\ea63"; }

.icon-italic:before {
  content: "\ea64"; }

.icon-strikethrough:before {
  content: "\ea65"; }

.icon-omega:before {
  content: "\ea66"; }

.icon-sigma:before {
  content: "\ea67"; }

.icon-page-break:before {
  content: "\ea68"; }

.icon-superscript:before {
  content: "\ea69"; }

.icon-subscript:before {
  content: "\ea6a"; }

.icon-superscript2:before {
  content: "\ea6b"; }

.icon-subscript2:before {
  content: "\ea6c"; }

.icon-text-color:before {
  content: "\ea6d"; }

.icon-pagebreak:before {
  content: "\ea6e"; }

.icon-clear-formatting:before {
  content: "\ea6f"; }

.icon-table:before {
  content: "\ea70"; }

.icon-table2:before {
  content: "\ea71"; }

.icon-insert-template:before {
  content: "\ea72"; }

.icon-pilcrow:before {
  content: "\ea73"; }

.icon-ltr:before {
  content: "\ea74"; }

.icon-rtl:before {
  content: "\ea75"; }

.icon-section:before {
  content: "\ea76"; }

.icon-paragraph-left:before {
  content: "\ea77"; }

.icon-paragraph-center:before {
  content: "\ea78"; }

.icon-paragraph-right:before {
  content: "\ea79"; }

.icon-paragraph-justify:before {
  content: "\ea7a"; }

.icon-indent-increase:before {
  content: "\ea7b"; }

.icon-indent-decrease:before {
  content: "\ea7c"; }

.icon-share:before {
  content: "\ea7d"; }

.icon-new-tab:before {
  content: "\ea7e"; }

.icon-embed:before {
  content: "\ea7f"; }

.icon-embed2:before {
  content: "\ea80"; }

.icon-terminal:before {
  content: "\ea81"; }

.icon-share2:before {
  content: "\ea82"; }

.icon-mail:before {
  content: "\ea83"; }

.icon-mail2:before {
  content: "\ea84"; }

.icon-mail3:before {
  content: "\ea85"; }

.icon-mail4:before {
  content: "\ea86"; }

.icon-amazon:before {
  content: "\ea87"; }

.icon-google:before {
  content: "\ea88"; }

.icon-google2:before {
  content: "\ea89"; }

.icon-google3:before {
  content: "\ea8a"; }

.icon-google-plus:before {
  content: "\ea8b"; }

.icon-google-plus2:before {
  content: "\ea8c"; }

.icon-google-plus3:before {
  content: "\ea8d"; }

.icon-hangouts:before {
  content: "\ea8e"; }

.icon-google-drive:before {
  content: "\ea8f"; }

.icon-facebook:before {
  content: "\ea90"; }

.icon-facebook2:before {
  content: "\ea91"; }

.icon-instagram:before {
  content: "\ea92"; }

.icon-whatsapp:before {
  content: "\ea93"; }

.icon-spotify:before {
  content: "\ea94"; }

.icon-telegram:before {
  content: "\ea95"; }

.icon-twitter:before {
  content: "\ea96"; }

.icon-vine:before {
  content: "\ea97"; }

.icon-vk:before {
  content: "\ea98"; }

.icon-renren:before {
  content: "\ea99"; }

.icon-sina-weibo:before {
  content: "\ea9a"; }

.icon-rss:before {
  content: "\ea9b"; }

.icon-rss2:before {
  content: "\ea9c"; }

.icon-youtube:before {
  content: "\ea9d"; }

.icon-youtube2:before {
  content: "\ea9e"; }

.icon-twitch:before {
  content: "\ea9f"; }

.icon-vimeo:before {
  content: "\eaa0"; }

.icon-vimeo2:before {
  content: "\eaa1"; }

.icon-lanyrd:before {
  content: "\eaa2"; }

.icon-flickr:before {
  content: "\eaa3"; }

.icon-flickr2:before {
  content: "\eaa4"; }

.icon-flickr3:before {
  content: "\eaa5"; }

.icon-flickr4:before {
  content: "\eaa6"; }

.icon-dribbble:before {
  content: "\eaa7"; }

.icon-behance:before {
  content: "\eaa8"; }

.icon-behance2:before {
  content: "\eaa9"; }

.icon-deviantart:before {
  content: "\eaaa"; }

.icon-500px:before {
  content: "\eaab"; }

.icon-steam:before {
  content: "\eaac"; }

.icon-steam2:before {
  content: "\eaad"; }

.icon-dropbox:before {
  content: "\eaae"; }

.icon-onedrive:before {
  content: "\eaaf"; }

.icon-github:before {
  content: "\eab0"; }

.icon-npm:before {
  content: "\eab1"; }

.icon-basecamp:before {
  content: "\eab2"; }

.icon-trello:before {
  content: "\eab3"; }

.icon-wordpress:before {
  content: "\eab4"; }

.icon-joomla:before {
  content: "\eab5"; }

.icon-ello:before {
  content: "\eab6"; }

.icon-blogger:before {
  content: "\eab7"; }

.icon-blogger2:before {
  content: "\eab8"; }

.icon-tumblr:before {
  content: "\eab9"; }

.icon-tumblr2:before {
  content: "\eaba"; }

.icon-yahoo:before {
  content: "\eabb"; }

.icon-yahoo2:before {
  content: "\eabc"; }

.icon-tux:before {
  content: "\eabd"; }

.icon-appleinc:before {
  content: "\eabe"; }

.icon-finder:before {
  content: "\eabf"; }

.icon-android:before {
  content: "\eac0"; }

.icon-windows:before {
  content: "\eac1"; }

.icon-windows8:before {
  content: "\eac2"; }

.icon-soundcloud:before {
  content: "\eac3"; }

.icon-soundcloud2:before {
  content: "\eac4"; }

.icon-skype:before {
  content: "\eac5"; }

.icon-reddit:before {
  content: "\eac6"; }

.icon-hackernews:before {
  content: "\eac7"; }

.icon-wikipedia:before {
  content: "\eac8"; }

.icon-linkedin:before {
  content: "\eac9"; }

.icon-linkedin2:before {
  content: "\eaca"; }

.icon-lastfm:before {
  content: "\eacb"; }

.icon-lastfm2:before {
  content: "\eacc"; }

.icon-delicious:before {
  content: "\eacd"; }

.icon-stumbleupon:before {
  content: "\eace"; }

.icon-stumbleupon2:before {
  content: "\eacf"; }

.icon-stackoverflow:before {
  content: "\ead0"; }

.icon-pinterest:before {
  content: "\ead1"; }

.icon-pinterest2:before {
  content: "\ead2"; }

.icon-xing:before {
  content: "\ead3"; }

.icon-xing2:before {
  content: "\ead4"; }

.icon-flattr:before {
  content: "\ead5"; }

.icon-foursquare:before {
  content: "\ead6"; }

.icon-yelp:before {
  content: "\ead7"; }

.icon-paypal:before {
  content: "\ead8"; }

.icon-chrome:before {
  content: "\ead9"; }

.icon-firefox:before {
  content: "\eada"; }

.icon-IE:before {
  content: "\eadb"; }

.icon-edge:before {
  content: "\eadc"; }

.icon-safari:before {
  content: "\eadd"; }

.icon-opera:before {
  content: "\eade"; }

.icon-file-pdf:before {
  content: "\eadf"; }

.icon-file-openoffice:before {
  content: "\eae0"; }

.icon-file-word:before {
  content: "\eae1"; }

.icon-file-excel:before {
  content: "\eae2"; }

.icon-libreoffice:before {
  content: "\eae3"; }

.icon-html-five:before {
  content: "\eae4"; }

.icon-html-five2:before {
  content: "\eae5"; }

.icon-css3:before {
  content: "\eae6"; }

.icon-git:before {
  content: "\eae7"; }

.icon-codepen:before {
  content: "\eae8"; }

.icon-svg:before {
  content: "\eae9"; }

.icon-IcoMoon:before {
  content: "\eaea"; }

/*!
 * FullCalendar v3.9.0
 * Docs & License: https://fullcalendar.io/
 * (c) 2018 Adam Shaw
 */
.fc {
  direction: ltr;
  text-align: left; }

.fc-rtl {
  text-align: right; }

body .fc {
  /* extra precedence to overcome jqui */
  font-size: 1em; }

/* Colors
--------------------------------------------------------------------------------------------------*/
.fc-highlight {
  /* when user is selecting cells */
  background: #bce8f1;
  opacity: .3; }

.fc-bgevent {
  /* default look for background events */
  background: #8fdf82;
  opacity: .3; }

.fc-nonbusiness {
  /* default look for non-business-hours areas */
  /* will inherit .fc-bgevent's styles */
  background: #d7d7d7; }

/* Buttons (styled <button> tags, normalized to work cross-browser)
--------------------------------------------------------------------------------------------------*/
.fc button {
  /* force height to include the border and padding */
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  /* dimensions */
  margin: 0;
  height: 2.1em;
  padding: 0 .6em;
  /* text & cursor */
  font-size: 1em;
  /* normalize */
  white-space: nowrap;
  cursor: pointer; }

/* Firefox has an annoying inner border */
.fc button::-moz-focus-inner {
  margin: 0;
  padding: 0; }

.fc-state-default {
  /* non-theme */
  border: 1px solid; }

.fc-state-default.fc-corner-left {
  /* non-theme */
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px; }

.fc-state-default.fc-corner-right {
  /* non-theme */
  border-top-right-radius: 4px;
  border-bottom-right-radius: 4px; }

/* icons in buttons */
.fc button .fc-icon {
  /* non-theme */
  position: relative;
  top: -0.05em;
  /* seems to be a good adjustment across browsers */
  margin: 0 .2em;
  vertical-align: middle; }

/*
  button states
  borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
*/
.fc-state-default {
  background-color: #f5f5f5;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#e6e6e6));
  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
  background-repeat: repeat-x;
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  color: #333;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); }

.fc-state-hover,
.fc-state-down,
.fc-state-active,
.fc-state-disabled {
  color: #333333;
  background-color: #e6e6e6; }

.fc-state-hover {
  color: #333333;
  text-decoration: none;
  background-position: 0 -15px;
  -webkit-transition: background-position 0.1s linear;
  transition: background-position 0.1s linear; }

.fc-state-down,
.fc-state-active {
  background-color: #cccccc;
  background-image: none;
  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); }

.fc-state-disabled {
  cursor: default;
  background-image: none;
  opacity: 0.65;
  -webkit-box-shadow: none;
          box-shadow: none; }

/* Buttons Groups
--------------------------------------------------------------------------------------------------*/
.fc-button-group {
  display: inline-block; }

/*
every button that is not first in a button group should scootch over one pixel and cover the
previous button's border...
*/
.fc .fc-button-group > * {
  /* extra precedence b/c buttons have margin set to zero */
  float: left;
  margin: 0 0 0 -1px; }

.fc .fc-button-group > :first-child {
  /* same */
  margin-left: 0; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-popover {
  position: absolute;
  -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); }

.fc-popover .fc-header {
  /* TODO: be more consistent with fc-head/fc-body */
  padding: 2px 4px; }

.fc-popover .fc-header .fc-title {
  margin: 0 2px; }

.fc-popover .fc-header .fc-close {
  cursor: pointer; }

.fc-ltr .fc-popover .fc-header .fc-title,
.fc-rtl .fc-popover .fc-header .fc-close {
  float: left; }

.fc-rtl .fc-popover .fc-header .fc-title,
.fc-ltr .fc-popover .fc-header .fc-close {
  float: right; }

/* Misc Reusable Components
--------------------------------------------------------------------------------------------------*/
.fc-divider {
  border-style: solid;
  border-width: 1px; }

hr.fc-divider {
  height: 0;
  margin: 0;
  padding: 0 0 2px;
  /* height is unreliable across browsers, so use padding */
  border-width: 1px 0; }

.fc-clear {
  clear: both; }

.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton {
  /* these element should always cling to top-left/right corners */
  position: absolute;
  top: 0;
  left: 0;
  right: 0; }

.fc-bg {
  bottom: 0;
  /* strech bg to bottom edge */ }

.fc-bg table {
  height: 100%;
  /* strech bg to bottom edge */ }

/* Tables
--------------------------------------------------------------------------------------------------*/
.fc table {
  width: 100%;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* fix scrollbar issue in firefox */
  table-layout: fixed;
  border-collapse: collapse;
  border-spacing: 0;
  font-size: 1em;
  /* normalize cross-browser */ }

.fc th {
  text-align: center; }

.fc th,
.fc td {
  border-style: solid;
  border-width: 1px;
  padding: 0;
  vertical-align: top; }

.fc td.fc-today {
  border-style: double;
  /* overcome neighboring borders */ }

/* Internal Nav Links
--------------------------------------------------------------------------------------------------*/
a[data-goto] {
  cursor: pointer; }

a[data-goto]:hover {
  text-decoration: underline; }

/* Fake Table Rows
--------------------------------------------------------------------------------------------------*/
.fc .fc-row {
  /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */
  /* no visible border by default. but make available if need be (scrollbar width compensation) */
  border-style: solid;
  border-width: 0; }

.fc-row table {
  /* don't put left/right border on anything within a fake row.
     the outer tbody will worry about this */
  border-left: 0 hidden transparent;
  border-right: 0 hidden transparent;
  /* no bottom borders on rows */
  border-bottom: 0 hidden transparent; }

.fc-row:first-child table {
  border-top: 0 hidden transparent;
  /* no top border on first row */ }

/* Day Row (used within the header and the DayGrid)
--------------------------------------------------------------------------------------------------*/
.fc-row {
  position: relative; }

.fc-row .fc-bg {
  z-index: 1; }

/* highlighting cells & background event skeleton */
.fc-row .fc-bgevent-skeleton,
.fc-row .fc-highlight-skeleton {
  bottom: 0;
  /* stretch skeleton to bottom of row */ }

.fc-row .fc-bgevent-skeleton table,
.fc-row .fc-highlight-skeleton table {
  height: 100%;
  /* stretch skeleton to bottom of row */ }

.fc-row .fc-highlight-skeleton td,
.fc-row .fc-bgevent-skeleton td {
  border-color: transparent; }

.fc-row .fc-bgevent-skeleton {
  z-index: 2; }

.fc-row .fc-highlight-skeleton {
  z-index: 3; }

/*
row content (which contains day/week numbers and events) as well as "helper" (which contains
temporary rendered events).
*/
.fc-row .fc-content-skeleton {
  position: relative;
  z-index: 4;
  padding-bottom: 2px;
  /* matches the space above the events */ }

.fc-row .fc-helper-skeleton {
  z-index: 5; }

.fc .fc-row .fc-content-skeleton table,
.fc .fc-row .fc-content-skeleton td,
.fc .fc-row .fc-helper-skeleton td {
  /* see-through to the background below */
  /* extra precedence to prevent theme-provided backgrounds */
  background: none;
  /* in case <td>s are globally styled */
  border-color: transparent; }

.fc-row .fc-content-skeleton td,
.fc-row .fc-helper-skeleton td {
  /* don't put a border between events and/or the day number */
  border-bottom: 0; }

.fc-row .fc-content-skeleton tbody td,
.fc-row .fc-helper-skeleton tbody td {
  /* don't put a border between event cells */
  border-top: 0; }

/* Scrolling Container
--------------------------------------------------------------------------------------------------*/
.fc-scroller {
  -webkit-overflow-scrolling: touch; }

/* TODO: move to agenda/basic */
.fc-scroller > .fc-day-grid,
.fc-scroller > .fc-time-grid {
  position: relative;
  /* re-scope all positions */
  width: 100%;
  /* hack to force re-sizing this inner element when scrollbars appear/disappear */ }

/* Global Event Styles
--------------------------------------------------------------------------------------------------*/
.fc-event {
  position: relative;
  /* for resize handle and other inner positioning */
  display: block;
  /* make the <a> tag block */
  font-size: .85em;
  line-height: 1.3;
  border-radius: 3px;
  border: 1px solid #3a87ad;
  /* default BORDER color */ }

.fc-event,
.fc-event-dot {
  background-color: #3a87ad;
  /* default BACKGROUND color */ }

.fc-event,
.fc-event:hover {
  color: #fff;
  /* default TEXT color */
  text-decoration: none;
  /* if <a> has an href */ }

.fc-event[href],
.fc-event.fc-draggable {
  cursor: pointer;
  /* give events with links and draggable events a hand mouse pointer */ }

.fc-not-allowed,
.fc-not-allowed .fc-event {
  /* to override an event's custom cursor */
  cursor: not-allowed; }

.fc-event .fc-bg {
  /* the generic .fc-bg already does position */
  z-index: 1;
  background: #fff;
  opacity: .25; }

.fc-event .fc-content {
  position: relative;
  z-index: 2; }

/* resizer (cursor AND touch devices) */
.fc-event .fc-resizer {
  position: absolute;
  z-index: 4; }

/* resizer (touch devices) */
.fc-event .fc-resizer {
  display: none; }

.fc-event.fc-allow-mouse-resize .fc-resizer,
.fc-event.fc-selected .fc-resizer {
  /* only show when hovering or selected (with touch) */
  display: block; }

/* hit area */
.fc-event.fc-selected .fc-resizer:before {
  /* 40x40 touch area */
  content: "";
  position: absolute;
  z-index: 9999;
  /* user of this util can scope within a lower z-index */
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  margin-left: -20px;
  margin-top: -20px; }

/* Event Selection (only for touch devices)
--------------------------------------------------------------------------------------------------*/
.fc-event.fc-selected {
  z-index: 9999 !important;
  /* overcomes inline z-index */
  -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); }

.fc-event.fc-selected.fc-dragging {
  -webkit-box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3);
          box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); }

/* Horizontal Events
--------------------------------------------------------------------------------------------------*/
/* bigger touch area when selected */
.fc-h-event.fc-selected:before {
  content: "";
  position: absolute;
  z-index: 3;
  /* below resizers */
  top: -10px;
  bottom: -10px;
  left: 0;
  right: 0; }

/* events that are continuing to/from another week. kill rounded corners and butt up against edge */
.fc-ltr .fc-h-event.fc-not-start,
.fc-rtl .fc-h-event.fc-not-end {
  margin-left: 0;
  border-left-width: 0;
  padding-left: 1px;
  /* replace the border with padding */
  border-top-left-radius: 0;
  border-bottom-left-radius: 0; }

.fc-ltr .fc-h-event.fc-not-end,
.fc-rtl .fc-h-event.fc-not-start {
  margin-right: 0;
  border-right-width: 0;
  padding-right: 1px;
  /* replace the border with padding */
  border-top-right-radius: 0;
  border-bottom-right-radius: 0; }

/* resizer (cursor AND touch devices) */
/* left resizer  */
.fc-ltr .fc-h-event .fc-start-resizer,
.fc-rtl .fc-h-event .fc-end-resizer {
  cursor: w-resize;
  left: -1px;
  /* overcome border */ }

/* right resizer */
.fc-ltr .fc-h-event .fc-end-resizer,
.fc-rtl .fc-h-event .fc-start-resizer {
  cursor: e-resize;
  right: -1px;
  /* overcome border */ }

/* resizer (mouse devices) */
.fc-h-event.fc-allow-mouse-resize .fc-resizer {
  width: 7px;
  top: -1px;
  /* overcome top border */
  bottom: -1px;
  /* overcome bottom border */ }

/* resizer (touch devices) */
.fc-h-event.fc-selected .fc-resizer {
  /* 8x8 little dot */
  border-radius: 4px;
  border-width: 1px;
  width: 6px;
  height: 6px;
  border-style: solid;
  border-color: inherit;
  background: #fff;
  /* vertically center */
  top: 50%;
  margin-top: -4px; }

/* left resizer  */
.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,
.fc-rtl .fc-h-event.fc-selected .fc-end-resizer {
  margin-left: -4px;
  /* centers the 8x8 dot on the left edge */ }

/* right resizer */
.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,
.fc-rtl .fc-h-event.fc-selected .fc-start-resizer {
  margin-right: -4px;
  /* centers the 8x8 dot on the right edge */ }

/* DayGrid events
----------------------------------------------------------------------------------------------------
We use the full "fc-day-grid-event" class instead of using descendants because the event won't
be a descendant of the grid when it is being dragged.
*/
.fc-day-grid-event {
  margin: 1px 2px 0;
  /* spacing between events and edges */
  padding: 0 1px; }

tr:first-child > td > .fc-day-grid-event {
  margin-top: 2px;
  /* a little bit more space before the first event */ }

.fc-day-grid-event.fc-selected:after {
  content: "";
  position: absolute;
  z-index: 1;
  /* same z-index as fc-bg, behind text */
  /* overcome the borders */
  top: -1px;
  right: -1px;
  bottom: -1px;
  left: -1px;
  /* darkening effect */
  background: #000;
  opacity: .25; }

.fc-day-grid-event .fc-content {
  /* force events to be one-line tall */
  white-space: nowrap;
  overflow: hidden; }

.fc-day-grid-event .fc-time {
  font-weight: bold; }

/* resizer (cursor devices) */
/* left resizer  */
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer {
  margin-left: -2px;
  /* to the day cell's edge */ }

/* right resizer */
.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,
.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer {
  margin-right: -2px;
  /* to the day cell's edge */ }

/* Event Limiting
--------------------------------------------------------------------------------------------------*/
/* "more" link that represents hidden events */
a.fc-more {
  margin: 1px 3px;
  font-size: .85em;
  cursor: pointer;
  text-decoration: none; }

a.fc-more:hover {
  text-decoration: underline; }

.fc-limited {
  /* rows and cells that are hidden because of a "more" link */
  display: none; }

/* popover that appears when "more" link is clicked */
.fc-day-grid .fc-row {
  z-index: 1;
  /* make the "more" popover one higher than this */ }

.fc-more-popover {
  z-index: 2;
  width: 220px; }

.fc-more-popover .fc-event-container {
  padding: 10px; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-now-indicator {
  position: absolute;
  border: 0 solid red; }

/* Utilities
--------------------------------------------------------------------------------------------------*/
.fc-unselectable {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent; }

/*
TODO: more distinction between this file and common.css
*/
/* Colors
--------------------------------------------------------------------------------------------------*/
.fc-unthemed th,
.fc-unthemed td,
.fc-unthemed thead,
.fc-unthemed tbody,
.fc-unthemed .fc-divider,
.fc-unthemed .fc-row,
.fc-unthemed .fc-content,
.fc-unthemed .fc-popover,
.fc-unthemed .fc-list-view,
.fc-unthemed .fc-list-heading td {
  border-color: #ddd; }

.fc-unthemed .fc-popover {
  background-color: #fff; }

.fc-unthemed .fc-divider,
.fc-unthemed .fc-popover .fc-header,
.fc-unthemed .fc-list-heading td {
  background: #eee; }

.fc-unthemed .fc-popover .fc-header .fc-close {
  color: #666; }

.fc-unthemed td.fc-today {
  background: #fcf8e3; }

.fc-unthemed .fc-disabled-day {
  background: #d7d7d7;
  opacity: .3; }

/* Icons (inline elements with styled text that mock arrow icons)
--------------------------------------------------------------------------------------------------*/
.fc-icon {
  display: inline-block;
  height: 1em;
  line-height: 1em;
  font-size: 1em;
  text-align: center;
  overflow: hidden;
  font-family: "Courier New", Courier, monospace;
  /* don't allow browser text-selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }

/*
Acceptable font-family overrides for individual icons:
  "Arial", sans-serif
  "Times New Roman", serif

NOTE: use percentage font sizes or else old IE chokes
*/
.fc-icon:after {
  position: relative; }

.fc-icon-left-single-arrow:after {
  content: "\2039";
  font-weight: bold;
  font-size: 200%;
  top: -7%; }

.fc-icon-right-single-arrow:after {
  content: "\203A";
  font-weight: bold;
  font-size: 200%;
  top: -7%; }

.fc-icon-left-double-arrow:after {
  content: "\AB";
  font-size: 160%;
  top: -7%; }

.fc-icon-right-double-arrow:after {
  content: "\BB";
  font-size: 160%;
  top: -7%; }

.fc-icon-left-triangle:after {
  content: "\25C4";
  font-size: 125%;
  top: 3%; }

.fc-icon-right-triangle:after {
  content: "\25BA";
  font-size: 125%;
  top: 3%; }

.fc-icon-down-triangle:after {
  content: "\25BC";
  font-size: 125%;
  top: 2%; }

.fc-icon-x:after {
  content: "\D7";
  font-size: 200%;
  top: 6%; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-unthemed .fc-popover {
  border-width: 1px;
  border-style: solid; }

.fc-unthemed .fc-popover .fc-header .fc-close {
  font-size: .9em;
  margin-top: 2px; }

/* List View
--------------------------------------------------------------------------------------------------*/
.fc-unthemed .fc-list-item:hover td {
  background-color: #f5f5f5; }

/* Colors
--------------------------------------------------------------------------------------------------*/
.ui-widget .fc-disabled-day {
  background-image: none; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-popover > .ui-widget-header + .ui-widget-content {
  border-top: 0;
  /* where they meet, let the header have the border */ }

/* Global Event Styles
--------------------------------------------------------------------------------------------------*/
.ui-widget .fc-event {
  /* overpower jqui's styles on <a> tags. TODO: more DRY */
  color: #fff;
  /* default TEXT color */
  text-decoration: none;
  /* if <a> has an href */
  /* undo ui-widget-header bold */
  font-weight: normal; }

/* TimeGrid axis running down the side (for both the all-day area and the slot area)
--------------------------------------------------------------------------------------------------*/
.ui-widget td.fc-axis {
  font-weight: normal;
  /* overcome bold */ }

/* TimeGrid Slats (lines that run horizontally)
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-slats .ui-widget-content {
  background: none;
  /* see through to fc-bg */ }

.fc.fc-bootstrap3 a {
  text-decoration: none; }

.fc.fc-bootstrap3 a[data-goto]:hover {
  text-decoration: underline; }

.fc-bootstrap3 hr.fc-divider {
  border-color: inherit; }

.fc-bootstrap3 .fc-today.alert {
  border-radius: 0; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-bootstrap3 .fc-popover .panel-body {
  padding: 0; }

/* TimeGrid Slats (lines that run horizontally)
--------------------------------------------------------------------------------------------------*/
.fc-bootstrap3 .fc-time-grid .fc-slats table {
  /* some themes have background color. see through to slats */
  background: none; }

.fc.fc-bootstrap4 a {
  text-decoration: none; }

.fc.fc-bootstrap4 a[data-goto]:hover {
  text-decoration: underline; }

.fc-bootstrap4 hr.fc-divider {
  border-color: inherit; }

.fc-bootstrap4 .fc-today.alert {
  border-radius: 0; }

.fc-bootstrap4 a.fc-event:not([href]):not([tabindex]) {
  color: #fff; }

.fc-bootstrap4 .fc-popover.card {
  position: absolute; }

/* Popover
--------------------------------------------------------------------------------------------------*/
.fc-bootstrap4 .fc-popover .card-body {
  padding: 0; }

/* TimeGrid Slats (lines that run horizontally)
--------------------------------------------------------------------------------------------------*/
.fc-bootstrap4 .fc-time-grid .fc-slats table {
  /* some themes have background color. see through to slats */
  background: none; }

/* Toolbar
--------------------------------------------------------------------------------------------------*/
.fc-toolbar {
  text-align: center; }

.fc-toolbar.fc-header-toolbar {
  margin-bottom: 1em; }

.fc-toolbar.fc-footer-toolbar {
  margin-top: 1em; }

.fc-toolbar .fc-left {
  float: left; }

.fc-toolbar .fc-right {
  float: right; }

.fc-toolbar .fc-center {
  display: inline-block; }

/* the things within each left/right/center section */
.fc .fc-toolbar > * > * {
  /* extra precedence to override button border margins */
  float: left;
  margin-left: .75em; }

/* the first thing within each left/center/right section */
.fc .fc-toolbar > * > :first-child {
  /* extra precedence to override button border margins */
  margin-left: 0; }

/* title text */
.fc-toolbar h2 {
  margin: 0; }

/* button layering (for border precedence) */
.fc-toolbar button {
  position: relative; }

.fc-toolbar .fc-state-hover,
.fc-toolbar .ui-state-hover {
  z-index: 2; }

.fc-toolbar .fc-state-down {
  z-index: 3; }

.fc-toolbar .fc-state-active,
.fc-toolbar .ui-state-active {
  z-index: 4; }

.fc-toolbar button:focus {
  z-index: 5; }

/* View Structure
--------------------------------------------------------------------------------------------------*/
/* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */
/* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */
.fc-view-container *,
.fc-view-container *:before,
.fc-view-container *:after {
  -webkit-box-sizing: content-box;
  box-sizing: content-box; }

.fc-view,
.fc-view > table {
  /* so dragged elements can be above the view's main element */
  position: relative;
  z-index: 1; }

/* BasicView
--------------------------------------------------------------------------------------------------*/
/* day row structure */
.fc-basicWeek-view .fc-content-skeleton,
.fc-basicDay-view .fc-content-skeleton {
  /* there may be week numbers in these views, so no padding-top */
  padding-bottom: 1em;
  /* ensure a space at bottom of cell for user selecting/clicking */ }

.fc-basic-view .fc-body .fc-row {
  min-height: 4em;
  /* ensure that all rows are at least this tall */ }

/* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */
.fc-row.fc-rigid {
  overflow: hidden; }

.fc-row.fc-rigid .fc-content-skeleton {
  position: absolute;
  top: 0;
  left: 0;
  right: 0; }

/* week and day number styling */
.fc-day-top.fc-other-month {
  opacity: 0.3; }

.fc-basic-view .fc-week-number,
.fc-basic-view .fc-day-number {
  padding: 2px; }

.fc-basic-view th.fc-week-number,
.fc-basic-view th.fc-day-number {
  padding: 0 2px;
  /* column headers can't have as much v space */ }

.fc-ltr .fc-basic-view .fc-day-top .fc-day-number {
  float: right; }

.fc-rtl .fc-basic-view .fc-day-top .fc-day-number {
  float: left; }

.fc-ltr .fc-basic-view .fc-day-top .fc-week-number {
  float: left;
  border-radius: 0 0 3px 0; }

.fc-rtl .fc-basic-view .fc-day-top .fc-week-number {
  float: right;
  border-radius: 0 0 0 3px; }

.fc-basic-view .fc-day-top .fc-week-number {
  min-width: 1.5em;
  text-align: center;
  background-color: #f2f2f2;
  color: #808080; }

/* when week/day number have own column */
.fc-basic-view td.fc-week-number {
  text-align: center; }

.fc-basic-view td.fc-week-number > * {
  /* work around the way we do column resizing and ensure a minimum width */
  display: inline-block;
  min-width: 1.25em; }

/* AgendaView all-day area
--------------------------------------------------------------------------------------------------*/
.fc-agenda-view .fc-day-grid {
  position: relative;
  z-index: 2;
  /* so the "more.." popover will be over the time grid */ }

.fc-agenda-view .fc-day-grid .fc-row {
  min-height: 3em;
  /* all-day section will never get shorter than this */ }

.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton {
  padding-bottom: 1em;
  /* give space underneath events for clicking/selecting days */ }

/* TimeGrid axis running down the side (for both the all-day area and the slot area)
--------------------------------------------------------------------------------------------------*/
.fc .fc-axis {
  /* .fc to overcome default cell styles */
  vertical-align: middle;
  padding: 0 4px;
  white-space: nowrap; }

.fc-ltr .fc-axis {
  text-align: right; }

.fc-rtl .fc-axis {
  text-align: left; }

/* TimeGrid Structure
--------------------------------------------------------------------------------------------------*/
.fc-time-grid-container,
.fc-time-grid {
  /* so slats/bg/content/etc positions get scoped within here */
  position: relative;
  z-index: 1; }

.fc-time-grid {
  min-height: 100%;
  /* so if height setting is 'auto', .fc-bg stretches to fill height */ }

.fc-time-grid table {
  /* don't put outer borders on slats/bg/content/etc */
  border: 0 hidden transparent; }

.fc-time-grid > .fc-bg {
  z-index: 1; }

.fc-time-grid .fc-slats,
.fc-time-grid > hr {
  /* the <hr> AgendaView injects when grid is shorter than scroller */
  position: relative;
  z-index: 2; }

.fc-time-grid .fc-content-col {
  position: relative;
  /* because now-indicator lives directly inside */ }

.fc-time-grid .fc-content-skeleton {
  position: absolute;
  z-index: 3;
  top: 0;
  left: 0;
  right: 0; }

/* divs within a cell within the fc-content-skeleton */
.fc-time-grid .fc-business-container {
  position: relative;
  z-index: 1; }

.fc-time-grid .fc-bgevent-container {
  position: relative;
  z-index: 2; }

.fc-time-grid .fc-highlight-container {
  position: relative;
  z-index: 3; }

.fc-time-grid .fc-event-container {
  position: relative;
  z-index: 4; }

.fc-time-grid .fc-now-indicator-line {
  z-index: 5; }

.fc-time-grid .fc-helper-container {
  /* also is fc-event-container */
  position: relative;
  z-index: 6; }

/* TimeGrid Slats (lines that run horizontally)
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-slats td {
  height: 1.5em;
  border-bottom: 0;
  /* each cell is responsible for its top border */ }

.fc-time-grid .fc-slats .fc-minor td {
  border-top-style: dotted; }

/* TimeGrid Highlighting Slots
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-highlight-container {
  /* a div within a cell within the fc-highlight-skeleton */
  position: relative;
  /* scopes the left/right of the fc-highlight to be in the column */ }

.fc-time-grid .fc-highlight {
  position: absolute;
  left: 0;
  right: 0;
  /* top and bottom will be in by JS */ }

/* TimeGrid Event Containment
--------------------------------------------------------------------------------------------------*/
.fc-ltr .fc-time-grid .fc-event-container {
  /* space on the sides of events for LTR (default) */
  margin: 0 2.5% 0 2px; }

.fc-rtl .fc-time-grid .fc-event-container {
  /* space on the sides of events for RTL */
  margin: 0 2px 0 2.5%; }

.fc-time-grid .fc-event,
.fc-time-grid .fc-bgevent {
  position: absolute;
  z-index: 1;
  /* scope inner z-index's */ }

.fc-time-grid .fc-bgevent {
  /* background events always span full width */
  left: 0;
  right: 0; }

/* Generic Vertical Event
--------------------------------------------------------------------------------------------------*/
.fc-v-event.fc-not-start {
  /* events that are continuing from another day */
  /* replace space made by the top border with padding */
  border-top-width: 0;
  padding-top: 1px;
  /* remove top rounded corners */
  border-top-left-radius: 0;
  border-top-right-radius: 0; }

.fc-v-event.fc-not-end {
  /* replace space made by the top border with padding */
  border-bottom-width: 0;
  padding-bottom: 1px;
  /* remove bottom rounded corners */
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0; }

/* TimeGrid Event Styling
----------------------------------------------------------------------------------------------------
We use the full "fc-time-grid-event" class instead of using descendants because the event won't
be a descendant of the grid when it is being dragged.
*/
.fc-time-grid-event {
  overflow: hidden;
  /* don't let the bg flow over rounded corners */ }

.fc-time-grid-event.fc-selected {
  /* need to allow touch resizers to extend outside event's bounding box */
  /* common fc-selected styles hide the fc-bg, so don't need this anyway */
  overflow: visible; }

.fc-time-grid-event.fc-selected .fc-bg {
  display: none;
  /* hide semi-white background, to appear darker */ }

.fc-time-grid-event .fc-content {
  overflow: hidden;
  /* for when .fc-selected */ }

.fc-time-grid-event .fc-time,
.fc-time-grid-event .fc-title {
  padding: 0 1px; }

.fc-time-grid-event .fc-time {
  font-size: .85em;
  white-space: nowrap; }

/* short mode, where time and title are on the same line */
.fc-time-grid-event.fc-short .fc-content {
  /* don't wrap to second line (now that contents will be inline) */
  white-space: nowrap; }

.fc-time-grid-event.fc-short .fc-time,
.fc-time-grid-event.fc-short .fc-title {
  /* put the time and title on the same line */
  display: inline-block;
  vertical-align: top; }

.fc-time-grid-event.fc-short .fc-time span {
  display: none;
  /* don't display the full time text... */ }

.fc-time-grid-event.fc-short .fc-time:before {
  content: attr(data-start);
  /* ...instead, display only the start time */ }

.fc-time-grid-event.fc-short .fc-time:after {
  content: "\A0-\A0";
  /* seperate with a dash, wrapped in nbsp's */ }

.fc-time-grid-event.fc-short .fc-title {
  font-size: .85em;
  /* make the title text the same size as the time */
  padding: 0;
  /* undo padding from above */ }

/* resizer (cursor device) */
.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer {
  left: 0;
  right: 0;
  bottom: 0;
  height: 8px;
  overflow: hidden;
  line-height: 8px;
  font-size: 11px;
  font-family: monospace;
  text-align: center;
  cursor: s-resize; }

.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after {
  content: "="; }

/* resizer (touch device) */
.fc-time-grid-event.fc-selected .fc-resizer {
  /* 10x10 dot */
  border-radius: 5px;
  border-width: 1px;
  width: 8px;
  height: 8px;
  border-style: solid;
  border-color: inherit;
  background: #fff;
  /* horizontally center */
  left: 50%;
  margin-left: -5px;
  /* center on the bottom edge */
  bottom: -5px; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-time-grid .fc-now-indicator-line {
  border-top-width: 1px;
  left: 0;
  right: 0; }

/* arrow on axis */
.fc-time-grid .fc-now-indicator-arrow {
  margin-top: -5px;
  /* vertically center on top coordinate */ }

.fc-ltr .fc-time-grid .fc-now-indicator-arrow {
  left: 0;
  /* triangle pointing right... */
  border-width: 5px 0 5px 6px;
  border-top-color: transparent;
  border-bottom-color: transparent; }

.fc-rtl .fc-time-grid .fc-now-indicator-arrow {
  right: 0;
  /* triangle pointing left... */
  border-width: 5px 6px 5px 0;
  border-top-color: transparent;
  border-bottom-color: transparent; }

/* List View
--------------------------------------------------------------------------------------------------*/
/* possibly reusable */
.fc-event-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 5px; }

/* view wrapper */
.fc-rtl .fc-list-view {
  direction: rtl;
  /* unlike core views, leverage browser RTL */ }

.fc-list-view {
  border-width: 1px;
  border-style: solid; }

/* table resets */
.fc .fc-list-table {
  table-layout: auto;
  /* for shrinkwrapping cell content */ }

.fc-list-table td {
  border-width: 1px 0 0;
  padding: 8px 14px; }

.fc-list-table tr:first-child td {
  border-top-width: 0; }

/* day headings with the list */
.fc-list-heading {
  border-bottom-width: 1px; }

.fc-list-heading td {
  font-weight: bold; }

.fc-ltr .fc-list-heading-main {
  float: left; }

.fc-ltr .fc-list-heading-alt {
  float: right; }

.fc-rtl .fc-list-heading-main {
  float: right; }

.fc-rtl .fc-list-heading-alt {
  float: left; }

/* event list items */
.fc-list-item.fc-has-url {
  cursor: pointer;
  /* whole row will be clickable */ }

.fc-list-item-marker,
.fc-list-item-time {
  white-space: nowrap;
  width: 1px; }

/* make the dot closer to the event title */
.fc-ltr .fc-list-item-marker {
  padding-right: 0; }

.fc-rtl .fc-list-item-marker {
  padding-left: 0; }

.fc-list-item-title a {
  /* every event title cell has an <a> tag */
  text-decoration: none;
  color: inherit; }

.fc-list-item-title a[href]:hover {
  /* hover effect only on titles with hrefs */
  text-decoration: underline; }

/* message when no events */
.fc-list-empty-wrap2 {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }

.fc-list-empty-wrap1 {
  width: 100%;
  height: 100%;
  display: table; }

.fc-list-empty {
  display: table-cell;
  vertical-align: middle;
  text-align: center; }

.fc-unthemed .fc-list-empty {
  /* theme will provide own background */
  background-color: #eee; }

/*!
 * FullCalendar Scheduler v1.9.4
 * Docs & License: https://fullcalendar.io/scheduler/
 * (c) 2018 Adam Shaw
 */
/* TODO: break this file up */
/* Scroller
--------------------------------------------------------------------------------------------------*/
.fc-scroller-clip {
  overflow: hidden;
  /* for clipping scrollbars */
  position: relative;
  /* so things like scrollfollowers can attach to this */ }

/* supresses rendering of native scrollbars */
/* on .fc-scroller */
.fc-no-scrollbars {
  background: rgba(255, 255, 255, 0);
  /* hack for dynamic DOM nodes (in Chrome OSX at least) */ }

.fc-no-scrollbars::-webkit-scrollbar {
  width: 0;
  height: 0; }

.fc-scroller-canvas {
  position: relative;
  /* origin for bg */
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* so that padding (for gutter) will be part of height */
  min-height: 100%; }

.fc-scroller-canvas > .fc-bg {
  z-index: 1;
  /* make default? */ }

.fc-scroller-canvas > .fc-content {
  z-index: 2;
  /* make default? */
  position: relative;
  /* origin for inner content */
  border-style: solid;
  border-width: 0; }

/* for themed, hard to get the border-color, so just forget it (REVISIT) */
.ui-widget .fc-scroller-canvas > .fc-content {
  border-color: transparent; }

.fc-scroller-canvas.fc-gutter-left > .fc-content {
  border-left-width: 1px;
  margin-left: -1px; }

.fc-scroller-canvas.fc-gutter-right > .fc-content {
  border-right-width: 1px;
  margin-right: -1px; }

.fc-scroller-canvas.fc-gutter-top > .fc-content {
  border-top-width: 1px;
  margin-top: -1px; }

/* content is responsible for bottom border */
/* View Structure
--------------------------------------------------------------------------------------------------*/
.fc-rtl .fc-timeline {
  direction: rtl; }

.fc-timeline .fc-divider {
  width: 3px;
  border-style: double;
  /* overcome neighboring borders */ }

.fc-timeline .fc-head > tr > .fc-divider {
  border-bottom: 0; }

.fc-timeline .fc-body > tr > .fc-divider {
  border-top: 0; }

.fc-timeline .fc-body .fc-divider.ui-widget-header {
  background-image: none; }

.fc-scrolled .fc-head .fc-scroller {
  z-index: 2;
  /* so drop shadow will go above body panes */ }

.fc-timeline.fc-scrolled .fc-head .fc-scroller {
  -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.075);
          box-shadow: 0 3px 4px rgba(0, 0, 0, 0.075); }

.fc-timeline .fc-body .fc-scroller {
  z-index: 1; }

/*
on most tables that expand to the edges, kill the outer border,
because the container elements take care of it.
example tables:
.fc-scroller-canvas .fc-content table
.fc-scroller-canvas .fc-bg .fc-slats table
*/
.fc-timeline .fc-scroller-canvas > div > table,
.fc-timeline .fc-scroller-canvas > div > div > table {
  border-style: hidden; }

/*
for resource rows (in both the spreadsheet and timeline areas),
undo previous rule in order to always show last border.
*/
.fc-timeline .fc-scroller-canvas > .fc-content > .fc-rows > table {
  border-bottom-style: none; }

/* Table Cell Common
--------------------------------------------------------------------------------------------------*/
.fc-timeline th,
.fc-timeline td {
  white-space: nowrap; }

.fc-timeline .fc-cell-content {
  overflow: hidden; }

.fc-timeline .fc-cell-text {
  padding-left: 4px;
  padding-right: 4px; }

.fc-timeline .fc-col-resizer {
  cursor: col-resize; }

/*
Cells at the start of a week
TODO: figure out better styling

.fc-ltr .fc-timeline .fc-em-cell div {
  border-left: 3px solid #eee;
  height: 100%;
}
.fc-rtl .fc-timeline .fc-em-cell {
  border-right-width: 3px;
}
*/
/* head */
.fc-timeline th {
  vertical-align: middle; }

.fc-timeline .fc-head .fc-cell-content {
  padding-top: 3px;
  padding-bottom: 3px; }

/* body */
.fc-timeline .fc-body .ui-widget-content {
  background-image: none; }

/* Resource Area
--------------------------------------------------------------------------------------------------*/
.fc-resource-area {
  width: 30%; }

.fc-resource-area col {
  width: 40%;
  min-width: 70px;
  /* will be read by JS */ }

.fc-resource-area col.fc-main-col {
  width: 60%;
  /* make the first column in a nested setup bigger */ }

.fc-flat .fc-expander-space {
  /* fc-flat is opposite of fc-nested */
  display: none; }

.fc-ltr .fc-resource-area tr > * {
  text-align: left; }

.fc-rtl .fc-resource-area tr > * {
  text-align: right; }

.fc-resource-area .fc-cell-content {
  padding-left: 4px;
  padding-right: 4px; }

/* head */
.fc-resource-area .fc-super th {
  text-align: center; }

.fc-resource-area th > div {
  position: relative; }

.fc-resource-area th .fc-cell-content {
  position: relative;
  z-index: 1; }

.fc-resource-area th .fc-col-resizer {
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  width: 5px; }

.fc-ltr .fc-resource-area th .fc-col-resizer {
  right: -3px; }

.fc-rtl .fc-resource-area th .fc-col-resizer {
  left: -3px; }

/* body */
tr.fc-collapsed > td,
tr.fc-transitioning > td {
  /* during the transition */
  overflow: hidden;
  /* prevents absolutely-positioned events from bleeding out */ }

tr.fc-transitioning > td > div {
  -webkit-transition: margin-top 0.2s;
  transition: margin-top 0.2s; }

tr.fc-collapsed > td > div {
  margin-top: -10px; }

.fc-body .fc-resource-area .fc-cell-content {
  /* might BE the cell */
  position: relative;
  /* optimization for ScrollFollower */
  padding-top: 8px;
  padding-bottom: 8px; }

.fc-no-overlap .fc-body .fc-resource-area .fc-cell-content {
  /* might BE the cell */
  padding-top: 5px;
  padding-bottom: 5px; }

.fc-resource-area .fc-icon {
  /* the expander and spacers before the expander */
  width: 1em;
  /* ensure constant width, esp for empty icons */
  font-size: .9em;
  vertical-align: middle;
  margin-top: -1%; }

.fc-resource-area .fc-expander {
  cursor: pointer;
  color: #666;
  /* for the icon within */ }

/* Time Area
--------------------------------------------------------------------------------------------------*/
.fc-time-area col {
  min-width: 2.2em;
  /* detected by JS */ }

/* head */
.fc-ltr .fc-time-area .fc-chrono th {
  text-align: left; }

.fc-rtl .fc-time-area .fc-chrono th {
  text-align: right; }

/* body slats (vertical lines) */
.fc-time-area .fc-slats {
  /* fc-bg is responsible for a lot of this now! */
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }

.fc-time-area .fc-slats table {
  height: 100%; }

.fc-time-area .fc-slats .fc-minor {
  border-style: dotted; }

.fc-time-area .fc-slats td {
  border-width: 0 1px;
  /* need to do this. sometimes -1 margin wouldn't hide the dotted */ }

.fc-ltr .fc-time-area .fc-slats td {
  border-right-width: 0; }

.fc-rtl .fc-time-area .fc-slats td {
  border-left-width: 0; }

/* body content containers
   can be within rows or directly within the pane's content
*/
.fc-time-area .fc-bgevent-container,
.fc-time-area .fc-highlight-container {
  position: absolute;
  z-index: 2;
  /* only for directly within pane. not for row. overridden later */
  top: 0;
  bottom: 0;
  width: 0; }

.fc-ltr .fc-time-area .fc-helper-container,
.fc-ltr .fc-time-area .fc-bgevent-container,
.fc-ltr .fc-time-area .fc-highlight-container {
  left: 0; }

.fc-rtl .fc-time-area .fc-helper-container,
.fc-rtl .fc-time-area .fc-bgevent-container,
.fc-rtl .fc-time-area .fc-highlight-container {
  right: 0; }

.fc-time-area .fc-bgevent,
.fc-time-area .fc-highlight {
  position: absolute;
  top: 0;
  bottom: 0; }

/* body resource rows */
.fc-time-area .fc-rows {
  position: relative;
  z-index: 3; }

.fc-time-area .fc-rows .ui-widget-content {
  background: none; }

.fc-time-area .fc-rows td > div {
  position: relative; }

.fc-time-area .fc-rows .fc-bgevent-container,
.fc-time-area .fc-rows .fc-highlight-container {
  z-index: 1; }

.fc-time-area .fc-event-container {
  position: relative;
  z-index: 2;
  /* above bgevent and highlight */
  width: 0;
  /* for event positioning. will end up on correct side based on dir */ }

.fc-time-area .fc-helper-container {
  /* also an fc-event-container */
  position: absolute;
  z-index: 3;
  top: 0; }

.fc-time-area .fc-event-container {
  padding-bottom: 8px;
  top: -1px; }

.fc-time-area tr:first-child .fc-event-container {
  top: 0; }

.fc-no-overlap .fc-time-area .fc-event-container {
  padding-bottom: 0;
  top: 0; }

/* Now Indicator
--------------------------------------------------------------------------------------------------*/
.fc-timeline .fc-now-indicator {
  /* both the arrow and the line */
  z-index: 3;
  /* one above scroller's fc-content */
  top: 0; }

.fc-time-area .fc-now-indicator-arrow {
  margin: 0 -6px;
  /* 5, then one more to counteract scroller's negative margins */
  /* triangle pointing down... */
  border-width: 6px 5px 0 5px;
  border-left-color: transparent;
  border-right-color: transparent; }

.fc-time-area .fc-now-indicator-line {
  margin: 0 -1px;
  /* counteract scroller's negative margins */
  bottom: 0;
  border-left-width: 1px; }

/* Time Grid Events
--------------------------------------------------------------------------------------------------*/
.fc-timeline-event {
  position: absolute;
  border-radius: 0;
  padding: 2px 0;
  margin-bottom: 1px; }

.fc-no-overlap .fc-timeline-event {
  padding: 5px 0;
  margin-bottom: 0; }

/* don't overlap grid lines at the event's end */
.fc-ltr .fc-timeline-event {
  margin-right: 1px; }

.fc-rtl .fc-timeline-event {
  margin-left: 1px; }

.fc-timeline-event .fc-content {
  padding: 0 1px;
  white-space: nowrap;
  overflow: hidden; }

.fc-timeline-event .fc-time {
  font-weight: bold;
  padding: 0 1px; }

.fc-rtl .fc-timeline-event .fc-time {
  display: inline-block;
  /* will force it on the other side */ }

.fc-timeline-event .fc-title {
  position: relative;
  /* optimization for ScrollFollower */
  padding: 0 1px; }

.fc-timeline-event.fc-selected .fc-bg {
  display: none;
  /* hide semi-white background, to appear darker */ }

/* follower logic */
.fc-ltr .fc-timeline-event .fc-title {
  padding-left: 10px;
  margin-left: -8px; }

.fc-rtl .fc-timeline-event .fc-title {
  padding-right: 10px;
  margin-right: -8px; }

.fc-ltr .fc-timeline-event.fc-not-start .fc-title {
  margin-left: -2px; }

.fc-rtl .fc-timeline-event.fc-not-start .fc-title {
  margin-right: -2px; }

.fc-timeline-event.fc-not-start .fc-title,
.fc-body .fc-time-area .fc-following {
  position: relative; }

.fc-timeline-event.fc-not-start .fc-title:before,
.fc-body .fc-time-area .fc-following:before {
  /* generic arrow */
  content: "";
  position: absolute;
  top: 50%;
  margin-top: -5px;
  border: 5px solid #000;
  border-top-color: transparent;
  border-bottom-color: transparent;
  opacity: .5; }

.fc-ltr .fc-timeline-event.fc-not-start .fc-title:before,
.fc-ltr .fc-body .fc-time-area .fc-following:before {
  /* LTR. left pointing arrow */
  border-left: 0;
  left: 2px; }

.fc-rtl .fc-timeline-event.fc-not-start .fc-title:before,
.fc-rtl .fc-body .fc-time-area .fc-following:before {
  /* RTL. right pointing arrow */
  border-right: 0;
  right: 2px; }

/* License Message
--------------------------------------------------------------------------------------------------*/
.fc-license-message {
  position: absolute;
  z-index: 99999;
  bottom: 1px;
  left: 1px;
  background: #eee;
  border-color: #ddd;
  border-style: solid;
  border-width: 1px 1px 0 0;
  padding: 2px 4px;
  font-size: 12px;
  border-top-right-radius: 3px; }


/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsInNvdXJjZXMiOlsiYXBwLnNjc3MiLCJfc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2NvbG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3MvX25vcm1hbGl6ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9ub3JtYWxpemUtc2Nzcy9zYXNzL25vcm1hbGl6ZS9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL25vcm1hbGl6ZS1zY3NzL3Nhc3Mvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUvX25vcm1hbGl6ZS1taXhpbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19taXNzaW5nLWRlcGVuZGVuY2llcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL190cnVlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHVyZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19yZW1vdmUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19yZXBsYWNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdG8tbGlzdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL19nbG9iYWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19yb3cuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fY29sdW1uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3NpemUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3V0dGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NsYXNzZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fbGF5b3V0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2ZsZXgtZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL194eS1ncmlkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2d1dHRlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jZWxsLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2ZyYW1lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jb2xsYXBzZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jbGFzc2VzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYmFzZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19oZWxwZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2FsaWdubWVudC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19wcmludC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcmFuZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZXJyb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdmlzaWJpbGl0eS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19mbG9hdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi1tZW51LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2xvc2UtYnV0dG9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2RyaWxsZG93bi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi1tZW51LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LWljb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb2ZmLWNhbnZhcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vcmJpdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wYWdpbmF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Byb2dyZXNzLWJhci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXZlYWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N0aWNreS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zd2l0Y2guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFicy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aXRsZS1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aHVtYm5haWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Byb3RvdHlwZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3JlbGF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm94LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcm90YXRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdHlwZXNjYWxlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC11dGlsaXRpZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXRyYW5zZm9ybWF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC1kZWNvcmF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZm9udC1zdHlsaW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fbGlzdC1zdHlsZS10eXBlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcm91bmRlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlcmVkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2hhZG93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYXJyb3cuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zZXBhcmF0b3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19vdmVyZmxvdy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2Rpc3BsYXkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ib3guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3JkZXItbm9uZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NpemluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NwYWNpbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL21vdGlvbi11aS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21vdGlvbi11aS9zcmMvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy91dGlsL19hbmltYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL3V0aWwvX2FyZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL3V0aWwvX2tleWZyYW1lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy91dGlsL19zZWxlY3Rvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21vdGlvbi11aS9zcmMvdXRpbC9fc2VyaWVzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy91dGlsL190cmFuc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy91dGlsL191bml0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy9lZmZlY3RzL19mYWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy9lZmZlY3RzL19oaW5nZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21vdGlvbi11aS9zcmMvZWZmZWN0cy9fc3Bpbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21vdGlvbi11aS9zcmMvZWZmZWN0cy9fem9vbS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL21vdGlvbi11aS9zcmMvZWZmZWN0cy9fc2hha2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL2VmZmVjdHMvX3NsaWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy9lZmZlY3RzL193aWdnbGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL3RyYW5zaXRpb25zL19mYWRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy90cmFuc2l0aW9ucy9faGluZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL3RyYW5zaXRpb25zL196b29tLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy90cmFuc2l0aW9ucy9fc2xpZGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9tb3Rpb24tdWkvc3JjL3RyYW5zaXRpb25zL19zcGluLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbW90aW9uLXVpL3NyYy9fY2xhc3Nlcy5zY3NzIiwiX2ljb21vb24uc2NzcyIsIl9taXhpbnMuc2NzcyIsIl9mdWxsY2FsZW5kYXIuc2NzcyIsIl9zY2hlZHVsZXIuc2NzcyIsIl9mdWxsY2FsZW5kYXJfaWNzYXRoZW1lLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgJ3V0Zi04JztcblxuQGltcG9ydCAnc2V0dGluZ3MnO1xuQGltcG9ydCAnZm91bmRhdGlvbic7XG5AaW1wb3J0ICdtb3Rpb24tdWknO1xuQGltcG9ydCAnaWNvbW9vbic7XG5cbkBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbi8vQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcbkBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcbkBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1mb3Jtcztcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQ7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbkBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbkBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1jYXJkO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG5AaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnUtaWNvbjtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4vLyBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bi1tZW51O1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xuQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50O1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50O1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1tZXRlci1lbGVtZW50O1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcbkBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRhYmxlO1xuQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXRpdGxlLWJhcjtcbi8vIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcbkBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcbkBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xuQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7XG5cbkBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmc7XG5AaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1wb3NpdGlvbjtcblxuLy8gQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcztcblxuLy8gQGluY2x1ZGUgbW90aW9uLXVpLXRyYW5zaXRpb25zO1xuLy8gQGluY2x1ZGUgbW90aW9uLXVpLWFuaW1hdGlvbnM7XG5cbkBpbXBvcnQgJ21peGlucyc7XG5cblxuLyogLS0tLS0tLS0tLS0gVEFCTEUgT0YgQ09OVEVOVFMgLS0tLS0tLS0tLS0tXG4xLiBVVElMSVRZIENMQVNTRVNcbjIuIEdFTkVSQUwgU1RZTEVTIEFORCBDT05UQUlORVJTXG4zLiBUWVBPR1JBUEhZXG40LiBMSU5LU1xuNS4gTkFWSUdBVElPTlxuNi4gTElTVFMgLyBUQUJMRVNcbjcuIElNQUdFU1xuOC4gQVBQXG45LiBBTklNQVRJT05TXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIDEuIFVUSUxJVFkgQ0xBU1NFUyAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5ibG9jayB7XG5cbiAgICBAaW5jbHVkZSBwYWRkaW5nKDEsIG51bGwsIDEsIG51bGwpO1xuXG4gICAgJl9fYm90dG9tIHtcbiAgICAgICAgQGluY2x1ZGUgcGFkZGluZyhudWxsLCBudWxsLCAzLCBudWxsKTtcbiAgICB9XG5cbiAgICAmX190b3Age1xuICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKDMsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgICZfX2RpdmlkZXIge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAuYmxvY2sge1xuXG4gICAgQGluY2x1ZGUgcGFkZGluZygyLjUsIG51bGwsIDIuNSwgbnVsbCk7XG5cbiAgICAgICZfX2JvdHRvbSB7XG4gICAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgbnVsbCwgNCwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgICZfX3RvcCB7XG4gICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoNCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICB9XG5cbiAgICB9XG59XG5cbi5wcmltYXJ5IHtcbiAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xufVxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogMi4gR0VORVJBTCBTVFlMRVMgQU5EIENPTlRBSU5FUlMgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uYmxvY2tfX2Jhc2ljIGZvb3RlciB7XG5cbiAgICBtYXJnaW4tdG9wOiAuNXJlbTtcbn1cblxuLmJsb2NrX19oZXJvIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYm9yZGVyLXRvcDogMDtcblxuICAuaW5uZXIge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoMywgbnVsbCwgMywgbnVsbCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoNSwgbnVsbCwgNSwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgJi0tbGlnaHQge1xuXG4gICAgY29sb3I6ICR3aGl0ZTtcblxuICAgIC5oZWFkX19oZXJvLCAuc3ViaGVhZF9faGVybyB7XG5cbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG4gIH1cblxufVxuXG4uaGVyb19fcGFnZXMge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJpbWFnZXMvaGVyby13YXZlLWZpbmFsLmpwZ1wiKTtcbiAgaGVpZ2h0OiA1MHB4O1xuXG4gIC5oZWFkX190YWdsaW5lIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwcHgpO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTRweCk7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgfVxuXG4gIH1cblxufVxuXG4jbG9nbyB7XG5cbiAgICB3aWR0aDogMTIwcHg7XG5cbiAgICAudGVtcGxhdGUtaG9tZSAmIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICB0b3A6IDE1cHg7XG4gICAgfVxuXG59XG5cbiNsb2dvLW1vYmlsZSB7XG5cbiAgbWF4LXdpZHRoOiA1MCU7XG5cbn1cblxuLnRvcC1iYXItdGl0bGUge1xuXG4gICAgbWFyZ2luOiAwIDFyZW0gMCAwO1xuXG59XG5cbi5kaXZpZGVyIHtcblxuICAgIEBpbmNsdWRlIGRpdmlkZXI7XG5cbn1cblxuLyogQ2FyZCBlbGVtZW50cyAqL1xuXG5cbi5jZWxsLmNhcmQge1xuXG4gICAgZmxleC1ncm93OiAwOyAvLyByZXNldCBmbGV4LWdyb3cgcHJvcGVydHkgaW4gYmxvY2sgZ3JpZHNcblxufVxuXG5cbi5jYXJkLXNlY3Rpb24gcCB7XG5cbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG5cbn1cblxuLyogQnV0dG9uIGVsZW1lbnRzICovXG5cbi5idXR0b24ge1xuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG5cbiAgICAmLmhvbGxvdyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgfVxuXG59XG5cbi5idXR0b24ucmVnaXN0ZXIge1xuXG4gICAgY29sb3I6ICR3aGl0ZTtcblxufVxuXG4uaGFtYnVyZ2VyIHtcblxuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkZGFyay1ibHVlLCAkZGFyay1ibHVlLCAyMHB4LCAxNnB4LCAzcHgsIDMpO1xuXG59XG5cbi8qIEVudHJpZXMgKi9cblxuLmVudHJ5X19tZXRhIHtcblxuICAgIGNvbG9yOiAkYmxhY2s7XG5cbn1cblxuLmVudHJ5X19hdXRob3IsIC5lbnRyeV9fc2Vzc2lvbnMsIC5lbnRyeV9fdHlwZSB7XG5cbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qIENLIEVkaXRvciByZWxhdGVkIHN0eWxlcyAqL1xuXG4uVGV4dGZvcm1hdHRlclZpZGVvRW1iZWQge1xuXG4gICAgbWFyZ2luOiAycmVtIDA7XG59XG5cbnAgPiBpbWcge1xuXG4gICAgbWFyZ2luOiAxcmVtIDA7XG5cbn1cblxuYmxvY2txdW90ZSB7XG5cbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5hbGlnbl9sZWZ0IHtcblxuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cblxuLmFsaWduX3JpZ2h0IHtcblxuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG59XG5cbi5hbGlnbl9jZW50ZXIge1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qIEZvb3RlciAqL1xuXG4vKiBTdGlja3kgZm9vdGVyIGh0dHBzOi8vY29kZXBlbi5pby92YW5lc3Nhem95ZC9wZW4vTnhKRU1LICovXG5cbmh0bWwge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgXG59XG4gIFxuYm9keSwgaHRtbCB7XG5cbiAgaGVpZ2h0OiBhdXRvO1xuXG59XG5cbmJvZHkge1xuICBtYXJnaW4tYm90dG9tOiA2ZW07XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbn1cblxuLnNpdGVfX2Zvb3RlciB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAkZGFyay1ibHVlO1xuICBjb2xvcjogbGlnaHRlbigkZGFyay1ibHVlLCA0MCUpO1xuICBwYWRkaW5nOiAuN3JlbSAwO1xuXG4gIC5tZWRpdW0tb3JkZXItMSB7XG5cbiAgICBsaW5lLWhlaWdodDogMTtcblxuICB9XG5cbiAgLm1lbnUuc2ltcGxlIHtcblxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICBhIHtcblxuICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDMwcHgpO1xuXG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgIC8vIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG59XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiAzLiBUWVBPR1JBUEhZICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuaDEge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4uc3ViaGVhZGVyIHtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IHJlbS1jYWxjKDE4cHgpO1xuICBjb2xvcjogJGRhcmstZ3JheTtcblxufVxuXG4udXAge1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbn1cblxuLnNtYWxsIHtcblxuICAgIGZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbn1cblxuLnN0cm9uZyB7XG5cbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbn1cblxuLmhlYWRfX3RhZ2xpbmUge1xuXG4gICAgZm9udC1zaXplOiByZW0tY2FsYyg0OHB4KTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuXG59XG5cbi5oZWFkX19oZXJvIHtcblxuICAgIEBleHRlbmQgLmhlYWRfX3RhZ2xpbmU7XG59XG5cbi5zdWJoZWFkX19oZXJvIHtcblxuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xufVxuXG5oMy5lbnRyeV9fdGl0bGUsIGg0LmVudHJ5X190aXRsZSB7XG5cbiAgZm9udC1zaXplOiByZW0tY2FsYygyMHB4KTtcblxufVxuXG4ubGVhZF9fdGFnbGluZSB7XG5cbiAgY29sb3I6ICR3aGl0ZTtcblxufVxuXG4uZW50cnlfX3NpbmdsZSB7XG5cbiAgICAuZW50cnlfX2hlYWRlciB7XG5cbiAgICAgICAgQGluY2x1ZGUgZGl2aWRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICB9XG59XG5cbmFkZHJlc3Mge1xuXG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICAgIGZvbnQtc3R5bGU6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAwO1xuXG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBcbiAgICAuaGVhZF9fYXJ0aWNsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi43cmVtO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiA0LiBMSU5LUyAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmEge1xuXG4gICAgdHJhbnNpdGlvbjogYWxsIDMwMG1zIGVhc2UtaW4tb3V0O1xuICAgIFxufVxuXG4ubGFiZWwgYSB7XG5cbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xufVxuXG4ucmVhZG1vcmUsIC5yZWFkbGVzcyB7XG5cbiAgICBAaW5jbHVkZSBwbGFpbkxpbms7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG59XG5cbi5yZWFkbW9yZSAuaWNvbi1hcnJvdy1yaWdodCwgLnJlYWRtb3JlIC5pY29uLWFycm93LWRvd24ge1xuXG4gICAgbWFyZ2luLWxlZnQ6IC41cmVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxufVxuXG4ucmVhZGxlc3MgLmljb24tYXJyb3ctbGVmdCwgLnJlYWRsZXNzIC5pY29uLWFycm93LXVwLCAuaWNvbi1wYXBlciB7XG5cbiAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBcbn1cblxuLmVudHJ5X19kb3dubG9hZCB7XG5cbiAgICBAaW5jbHVkZSBwbGFpbkxpbms7XG5cbiAgICAuaWNvbi1wYXBlciB7XG5cbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiA1LiBOQVZJR0FUSU9OICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuJG1lbnUtdW5kZXJsaW5lLWZyb20tY2VudGVyLWJvcmRlci10aGlja25lc3M6IDAuMnJlbTtcblxuLm5hdl9fbWFpbiBhIHtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IHJlbS1jYWxjKDE2cHgpO1xuICBjb2xvcjogJGRhcmstYmx1ZTtcbiAgcGFkZGluZzogMS4ycmVtIDFyZW0gMS4ycmVtIDFyZW07XG5cbn1cblxuLm5hdl9fbWFpbiAuYWN0aXZlIGEge1xuXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG5cbn1cblxuLmhvdmVyLXVuZGVybGluZS1tZW51IHtcblxuICAgIC51bmRlcmxpbmUtZnJvbS1jZW50ZXIge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyRtZW51LXVuZGVybGluZS1mcm9tLWNlbnRlci1ib3JkZXItdGhpY2tuZXNzfSk7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRtZW51LXVuZGVybGluZS1mcm9tLWNlbnRlci1ib3JkZXItdGhpY2tuZXNzIHNvbGlkICRkYXJrLWJsdWU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgcmlnaHQ6IDUwJTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcbiAgICAgIH1cbiAgICB9XG59XG5cblxuI29mZkNhbnZhcyB7XG5cbiAgY29sb3I6ICR3aGl0ZTtcblxuICAudGl0bGUtYmFyIHtcblxuICAgIHBhZGRpbmc6IC43cmVtIDFyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIH1cblxuICAuaW5mby1iYXIge1xuXG4gICAgcGFkZGluZzogLjdyZW0gMXJlbTtcblxuICAgIC5sZWFkIHtcblxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcblxuICAgIH1cbiAgfVxufVxuXG4udGl0bGUtYmFyIC5oYW1idXJnZXIge1xuXG4gICAgQGV4dGVuZCAuaGFtYnVyZ2VyO1xuICAgIG1hcmdpbi1yaWdodDogLjVlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbn1cblxuLm5hdl9fbW9iaWxlIGEge1xuXG4gIGNvbG9yOiAkd2hpdGU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTZweCk7XG5cbn1cblxuLm5hdl9fbW9iaWxlIC5hY3RpdmUgYSB7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuXG59XG5cbi5uYXZfX2Zvb3RlciBsaSBhIHtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IHJlbS1jYWxjKDE2cHgpO1xuICBjb2xvcjogbGlnaHRlbigkZGFyay1ibHVlLCA0MCUpO1xuXG59XG5cbi5uYXZfX2Zvb3RlciBsaS5hY3RpdmUgYSB7XG5cbiAgY29sb3I6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogNi4gTElTVFMvVEFCTEVTICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogOC4gQVBQICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG4vKiA4LjEuIEhPTUVQQUdFICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmhlcm9fX2Jhbm5lciB7XG5cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJpbWFnZXMvaGVyby1oZWFkcGhvbmVzQHh4bGFyZ2UuanBnXCIpOyAvLyBkZWZhdWx0IGJhbm5lclxuICAgIFxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCAoc21hbGwpIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaW1hZ2VzL2hlcm8taGVhZHBob25lc0BzbWFsbC5qcGdcIik7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChyZXRpbmEpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImltYWdlcy9oZXJvLWhlYWRwaG9uZXNAbGFyZ2UuanBnXCIpO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG5cbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaW1hZ2VzL2hlcm8taGVhZHBob25lc0BsYXJnZS5qcGdcIik7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChyZXRpbmEpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImltYWdlcy9oZXJvLWhlYWRwaG9uZXNAbGFyZ2VAMnguanBnXCIpO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG5cbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaW1hZ2VzL2hlcm8taGVhZHBob25lc0B4eGxhcmdlLmpwZ1wiKTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHJldGluYSkge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaW1hZ2VzL2hlcm8taGVhZHBob25lc0B4eGxhcmdlQDJ4LmpwZ1wiKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAuaGVhZF9fdGFnbGluZSB7XG5cbiAgICBAZXh0ZW5kIC5oZWFkX190YWdsaW5lO1xuICAgIGNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDYwcHgpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuXG4gICAgICAgIGZvbnQtc2l6ZTogNHJlbTtcblxuICAgIH1cbiAgfVxuXG4gIC5sZWFkX190YWdsaW5lIHtcblxuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjBweCk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG5cbiAgICAgICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XG5cbiAgICB9XG5cbiAgfVxuXG59XG5cbi8qIFN1bW1lcnNob29sICovXG5cbi5oZXJvX19zdW1tZXJzaG9vbCB7XG5cbiAgY29sb3I6ICR3aGl0ZTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaW1hZ2VzL2hlcm8tc3VtbWVyc2hvb2wuanBnXCIpOyAvL3JlbW92ZSB0aGlzIHdoZW4gaXNzdWUgIzIyOTEgc29sdmVkXG5cbiAgLmhlYWRfX2hlcm8ge1xuXG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuXG4gIH1cblxuICAuc3ViaGVhZGVyIHtcblxuICAgIGNvbG9yOiAkd2hpdGU7XG5cbiAgfVxuXG59XG5cbi8qIFN1cHBvcnQgbG9nb3MgKi9cblxuLmJsb2NrX19sb2dvc3RyaXAgdWwgbGkgPiBpbWcge1xuXG4gIG1hcmdpbjogMCAxcmVtO1xuICBoZWlnaHQ6IDEwMHB4OyAvLyBtYWtlIGNocm9tZSBoYXBweSFcblxufVxuXG4vKiBNYXAgYW5kIGxvY2F0aW9uICovXG5cbi5tYXBfX2NhbnZhcyB7XG5cbiAgICBoZWlnaHQ6IHJlbS1jYWxjKDQwMHB4KTtcblxufVxuXG5cbiNnbWFwIHtcblxuICBtaW4taGVpZ2h0OiByZW0tY2FsYyg0MDBweCk7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5cbn1cblxuLnZlbnVlIHtcblxuICAgIC5jYXJkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLmNhcmQtZGl2aWRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdWJoZWFkZXIge1xuICAgICAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogOC4yIFBST0dSQU0gKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cbkBpbXBvcnQgJ2Z1bGxjYWxlbmRhcic7XG5AaW1wb3J0ICdzY2hlZHVsZXInO1xuQGltcG9ydCAnZnVsbGNhbGVuZGFyX2ljc2F0aGVtZSc7XG5cblxuLmJsb2NrX19wcm9ncmFtIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcblxuICAgICAgICAuZGl2aWRlciB7XG5cbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcblxuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICB9XG59XG5cbi5ibG9ja19fbGVnZW5kIHtcblxuICAubGFiZWwge1xuXG4gICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG4gICAgaGVpZ2h0OiAzcHg7XG4gICAgcGFkZGluZzogLjMzcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IC43NXJlbTtcbiAgfVxuXG4gIGRkIHtcblxuICAgIG1hcmdpbjogMCAuM2VtO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gIH1cbn1cblxuLmJsb2NrX19ldmVudGxpc3Qge1xuXG4gICAgdWwge1xuXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luKjI7XG5cbiAgICB9XG5cbiAgICAubGFiZWxfX3Nlc3Npb24ge1xuXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuXG4gICAgfVxuXG4gICAgLm1haW4gLnN1YmhlYWRlciB7XG5cbiAgICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICB9XG5cbn1cblxuLmV2ZW50bGlzdF9fZmlsdGVyIHtcblxuICAgIC5zdWJoZWFkZXIge1xuXG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIFxuICAgIH1cblxuICAgIC5idXR0b24tZ3JvdXAge1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7YnJlYWtwb2ludCg2NDApfSBhbmQgI3ticmVha3BvaW50KDc2OCBkb3duKX0ge1xuICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgICAgICAjYnV0dG9uX19maWx0ZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuI2J1dHRvbl9fZmlsdGVyLCAjYnV0dG9uX19yZXNldCAge1xuXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBmb250LXNpemU6IC43cmVtO1xufVxuXG4ud3JhcF9fZmlsdGVyIHtcblxuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG59XG5cbi5sYWJlbF9fZmlsdGVyIHtcblxuICAgIEBpbmNsdWRlIGxhYmVsO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtZWRpdW0tZ3JheTtcbiAgICBjb2xvcjogJHdoaXRlO1xufVxuXG5cbi8qIDguMyBFWEhJQklUSU9OICovXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmJsb2NrX19leGhpYml0b3JsaXN0LCAuYmxvY2tfX2V4aGliaXRvciB7XG5cbiAgICAuaWNvbi1tYXAtcGluIHtcblxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC4zcmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG59XG5cbi5jYWxsb3V0X19leGhpYml0b3Ige1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAuc3ViaGVhZGVyIHtcblxuICAgIG1hcmdpbjogMCAwIC41cmVtIDA7XG5cbiAgfVxuXG4gIC5pY29uLXN0YXItbyB7XG5cbiAgICBtYXJnaW4tcmlnaHQ6IC4zcmVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIC5sYWJlbF9fc3VwcG9ydGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IC0xMHB4O1xuICAgIHRvcDogNXB4O1xuICB9XG5cbiAgLnJlYWRtb3JlLnNob3ctZm9yLXNtYWxsLW9ubHkge1xuXG4gICAgbWFyZ2luLXRvcDogLjVyZW07XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbn1cblxuLmJsb2NrX19leGhpYml0b3IuZW50cnlfX3NpbmdsZSB7XG5cblxuICAgIC5tZWRpYS1vYmplY3Qtc2VjdGlvbjpmaXJzdC1jaGlsZCB7XG5cbiAgICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcbiAgICB9XG5cblxuICAgIGgxIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLmV4aGliaXRvcl9fbG9nbyB7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCg0NTApIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtZWRpdW0pIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLmV4aGliaXRvcl9fbmV3c2l0ZW0ge1xuXG4gICAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4qMjtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGdsb2JhbC1wYWRkaW5nO1xufVxuXG4uZXhoaWJpdG9yX19uZXdzIHtcblxuICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuXG59XG5cbi8vIGdyYWRpZW50IGVmZmVjdCBodHRwOi8vanNiaW4uY29tL3h1Y2lxYXAvZWRpdD9odG1sLGNzcyxvdXRwdXQgIFxuXG5bZGF0YS1yZWFkbW9yZV0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFNldCBkZWZhdWx0IHN0eWxpbmcgb2YgZ3JhZGllbnQuIFxuTm90ZSB0aGUgaGVpZ2h0IG9mIDAuIFdlJ2xsIHRyYW5zaXRpb24gdGhlIGhlaWdodCwgcmF0aGVyIHRoYW4gdGhlIGJhY2tncm91bmQuIEkgdGhpbmsgdGhpcyBtYWtlcyBmb3IgYSBzbW9vdGhlciBlZmZlY3QuIFRoaXMgYWxzbyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2Ygbm90IG92ZXJsYXlpbmcgdGhlIHRleHQgYXQgdGhlIGJvdHRvbSB3aXRoIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBwc2V1ZG8tZWxlbWVudOKAlGV2ZW4gaWYgaXQgaXMgdHJhbnNwYXJlbnTigJR3aGljaCBjb3VsZCBwcmV2ZW50IHRleHQgc2VsZWN0aW9uLiAqL1xuW2RhdGEtcmVhZG1vcmVdOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI0OCwgMjQ4LCAyNDgsIDApLCByZ2JhKDI0OCwgMjQ4LCAyNDgsIDEpKTtcbiAgXG4gIC8qIEJlIHN1cmUgdG8gdXNlIHRoZSBzYW1lIHNwZWVkIHZhbHVlIGFzIGluIHlvdXIgUmVhZG1vcmUgY29uZmlndXJhdGlvbiwga2VlcGluZyBpbiBtaW5kIHRoYXQgQ1NTIHRyYW5zaXRpb24gc3BlZWQgaXMgc3RhdGVkIGluIHNlY29uZHMuICovXG4gIHRyYW5zaXRpb246IGhlaWdodCAuNXNcbn1cblxuLyogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIGdyYWRpZW50IHRvIDgwIHdoZW4gQ0xPU0VEICovXG5bZGF0YS1yZWFkbW9yZV1bYXJpYS1leHBhbmRlZD1cImZhbHNlXCJdOmJlZm9yZSxcbi8qIEFsc28gd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gT1BFTiB0byBDTE9TRUQgKi9cbltkYXRhLXJlYWRtb3JlXVthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXS50cmFuc2l0aW9uaW5nOmJlZm9yZSB7XG4gIGhlaWdodDogODBweDtcbn1cblxuXG4vKiBUaGlzIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IEkgdGhpbmsgaXQgbWFrZXMgZm9yIGEgc21vb3RoZXIgZWZmZWN0LiAqL1xuLyogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIGdyYWRpZW50IHRvIDAgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gQ0xPU0VEIHRvIE9QRU4gKi9cbltkYXRhLXJlYWRtb3JlXVthcmlhLWV4cGFuZGVkPVwiZmFsc2VcIl0udHJhbnNpdGlvbmluZzpiZWZvcmUge1xuICBoZWlnaHQ6IDA7XG59XG5cblxuLyogOC40IEJMT0cgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uZW50cnlfX3RlYXNlciBhLCAuZW50cnlfX3NpbmdsZSAuZW50cnlfX21ldGEgYSB7XG5cbiAgICBAaW5jbHVkZSBwbGFpbkxpbms7XG59XG5cbi5ibG9ja19fYmxvZ2xpc3QgLm1haW4sIC5ibG9ja19fcG9zdC5lbnRyeV9fc2luZ2xlIHtcblxuXG4gICAgLmVudHJ5X190ZWFzZXIge1xuXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJGdsb2JhbC1wYWRkaW5nO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbioyO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICRnbG9iYWwtcGFkZGluZyoyO1xuICAgICAgICB9XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZW50cnlfX2hlYWRlciB7XG4gICAgICAgIEBpbmNsdWRlIGRpdmlkZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgfVxuXG4gICAgLmVudHJ5X19tZXRhIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG4gICAgfVxuXG4gICAgLmVudHJ5X19zdW1tYXJ5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4gICAgfVxuXG4gICAgLmVudHJ5X19zb2NpYWwge1xuICAgICAgICBtYXJnaW4tdG9wOiAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMnB4KTtcbiAgICB9XG5cbiAgICAuZW50cnlfX3NvY2lhbCBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAuNXJlbTtcbiAgICB9XG5cbn1cblxuLmJsb2NrX19ibG9nbGlzdCBhc2lkZSB7XG5cbiAgICAuc3ViaGVhZGVyIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDU2cHgpO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBAaW5jbHVkZSBkaXZpZGVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIH1cblxuICAgIHVsIHtcblxuICAgICAgICBAaW5jbHVkZSBpY29ubGlzdDtcbiAgICB9XG5cbiAgICAuYWN0aXZlIHtcblxuICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG5cbiAgICB9XG5cbiAgICBbY2xhc3NePWJsb2dsaXN0X19dIHtcblxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcblxuICAgIH1cblxuICAgIFtjbGFzc149YmxvZ2xpc3RfX10gYSB7XG5cbiAgICAgICAgQGluY2x1ZGUgcGxhaW5MaW5rO1xuXG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogOS4gQU5JTUFUSU9OUyAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIHdvdyBsaWJyYXJ5ICovXG5cbi53b3cgeyB2aXNpYmlsaXR5OiBoaWRkZW47IH1cblxuLmFuaW1hdGUtc2xpZGUtaW4ge1xuXG4gIEBpbmNsdWRlIG11aS1hbmltYXRpb24oc2xpZGUoJHN0YXRlOmluLCAkZGlyZWN0aW9uOnVwKSk7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogNzUwbXM7XG5cbn1cblxuLmFuaW1hdGUtZmFkZS1pbiB7XG5cbiAgQGluY2x1ZGUgbXVpLWFuaW1hdGlvbihmYWRlKTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiA1MDBtcztcblxufVxuIiwiLy8gIEZvdW5kYXRpb24gZm9yIFNpdGVzIFNldHRpbmdzXG4vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG4vLyAgVGFibGUgb2YgQ29udGVudHM6XG4vL1xuLy8gICAxLiBHbG9iYWxcbi8vICAgMi4gQnJlYWtwb2ludHNcbi8vICAgMy4gVGhlIEdyaWRcbi8vICAgNC4gQmFzZSBUeXBvZ3JhcGh5XG4vLyAgIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xuLy8gICA2LiBBYmlkZVxuLy8gICA3LiBBY2NvcmRpb25cbi8vICAgOC4gQWNjb3JkaW9uIE1lbnVcbi8vICAgOS4gQmFkZ2Vcbi8vICAxMC4gQnJlYWRjcnVtYnNcbi8vICAxMS4gQnV0dG9uXG4vLyAgMTIuIEJ1dHRvbiBHcm91cFxuLy8gIDEzLiBDYWxsb3V0XG4vLyAgMTQuIENhcmRcbi8vICAxNS4gQ2xvc2UgQnV0dG9uXG4vLyAgMTYuIERyaWxsZG93blxuLy8gIDE3LiBEcm9wZG93blxuLy8gIDE4LiBEcm9wZG93biBNZW51XG4vLyAgMTkuIEZvcm1zXG4vLyAgMjAuIExhYmVsXG4vLyAgMjEuIE1lZGlhIE9iamVjdFxuLy8gIDIyLiBNZW51XG4vLyAgMjMuIE1ldGVyXG4vLyAgMjQuIE9mZi1jYW52YXNcbi8vICAyNS4gT3JiaXRcbi8vICAyNi4gUGFnaW5hdGlvblxuLy8gIDI3LiBQcm9ncmVzcyBCYXJcbi8vICAyOC4gUmVzcG9uc2l2ZSBFbWJlZFxuLy8gIDI5LiBSZXZlYWxcbi8vICAzMC4gU2xpZGVyXG4vLyAgMzEuIFN3aXRjaFxuLy8gIDMyLiBUYWJsZVxuLy8gIDMzLiBUYWJzXG4vLyAgMzQuIFRodW1ibmFpbFxuLy8gIDM1LiBUaXRsZSBCYXJcbi8vICAzNi4gVG9vbHRpcFxuLy8gIDM3LiBUb3AgQmFyXG5cbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG5cbi8vIDEuIEdsb2JhbFxuLy8gLS0tLS0tLS0tXG5cbiRnbG9iYWwtZm9udC1zaXplOiByZW0tY2FsYygxOHB4KTtcbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDEyMDApO1xuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjc7XG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXG4gIHByaW1hcnk6ICNmYmJhMDAsIC8vIHZkdCBicmFuZFxuICBzZWNvbmRhcnk6ICM1MTZmODQsIC8vIG1lZGl1bSBibHVlIGZyb20gaGVyb1xuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbik7XG4kbGlnaHQtZ3JheTogI2U2ZTZlNjtcbiRtZWRpdW0tZ3JheTogIzY0NjQ2NDtcbiRkYXJrLWdyYXk6ICM1MDUwNTA7IC8vIDgwJSBncmF5IGFzIHBlciBWRFQgc3R5bGVndWlkZVxuJGRhcmstYmx1ZTogIzIyMzAzODtcbiRibGFjazogIzFkMTUwMDtcbiR3aGl0ZTogI2ZlZmVmZTtcbiRib2R5LWJhY2tncm91bmQ6ICNmOGY4Zjg7XG4kYm9keS1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXk7XG4kYm9keS1mb250LWZhbWlseTogJ1BUIFNhbnMnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcbiRnbG9iYWwtbWFyZ2luOiAxcmVtO1xuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWw7XG4kZ2xvYmFsLXdlaWdodC1ib2xkOiA3MDA7XG4kZ2xvYmFsLXJhZGl1czogMXB4O1xuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyO1xuJGdsb2JhbC1mbGV4Ym94OiB0cnVlO1xuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xuXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XG5cbi8vIDIuIEJyZWFrcG9pbnRzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pO1xuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlO1xuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSB4bGFyZ2UgeHhsYXJnZSk7XG5cbi8vIDMuIFRoZSBHcmlkXG4vLyAtLS0tLS0tLS0tLVxuXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4LFxuKTtcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlO1xuJGJsb2NrLWdyaWQtbWF4OiA4O1xuXG4vLyA0LiBCYXNlIFR5cG9ncmFwaHlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAnUFQgU2Fucyc7XG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiRoZWFkZXItY29sb3I6ICRibGFjaztcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kaGVhZGVyLXN0eWxlczogKFxuICBzbWFsbDogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogNDApLFxuICAgICdoMic6ICgnZm9udC1zaXplJzogMzIpLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMTkpLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMTcpLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxuICApLFxuICBtZWRpdW06IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ4KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDMxKSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDI1KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbik7XG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kc21hbGwtZm9udC1zaXplOiByZW0tY2FsYygxNXB4KTtcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5O1xuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW07XG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kY29kZS1jb2xvcjogJGJsYWNrO1xuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSk7XG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpO1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmU7XG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZTtcbiRoci13aWR0aDogJGdsb2JhbC13aWR0aDtcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KTtcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnO1xuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrO1xuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApO1xuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjaztcblxuLy8gNS4gVHlwb2dyYXBoeSBIZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjtcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNjtcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kc3RhdC1mb250LXNpemU6IDIuNXJlbTtcblxuLy8gNi4gQWJpZGVcbi8vIC0tLS0tLS0tXG5cbiRhYmlkZS1pbnB1dHM6IHRydWU7XG4kYWJpZGUtbGFiZWxzOiB0cnVlO1xuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCk7XG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG5cbi8vIDcuIEFjY29yZGlvblxuLy8gLS0tLS0tLS0tLS0tXG5cbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWU7XG4kYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemU7XG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRoZWFkZXItY29sb3I7XG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogLjc1cmVtIDFyZW07XG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IC41cmVtO1xuXG4vLyA4LiBBY2NvcmRpb24gTWVudVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xuXG4vLyA5LiBCYWRnZVxuLy8gLS0tLS0tLS1cblxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJhZGdlLWNvbG9yOiAkd2hpdGU7XG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2s7XG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbTtcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XG5cbi8vIDEwLiBCcmVhZGNydW1ic1xuLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSk7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2s7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtO1xuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g6IHRydWU7XG5cbi8vIDExLiBCdXR0b25cbi8vIC0tLS0tLS0tLS1cblxuJGJ1dHRvbi1wYWRkaW5nOiAwLjY1ZW0gMS4zNWVtO1xuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJ1dHRvbi1maWxsOiBzb2xpZDtcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4kYnV0dG9uLWNvbG9yOiAkd2hpdGU7XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrO1xuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoOiAxcHg7XG4kYnV0dG9uLXNpemVzOiAoXG4gIHRpbnk6IDAuNnJlbSxcbiAgc21hbGw6IDAuNzVyZW0sXG4gIGRlZmF1bHQ6IDAuOXJlbSxcbiAgbGFyZ2U6IDEuMjVyZW0sXG4pO1xuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogLTIwJTtcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJTtcbiRidXR0b24tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjI1cyBlYXNlLW91dCwgY29sb3IgMC4yNXMgZWFzZS1vdXQ7XG5cbi8vIDEyLiBCdXR0b24gR3JvdXBcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbTtcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxMHB4O1xuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbic7XG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNjtcbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZTtcblxuLy8gMTMuIENhbGxvdXRcbi8vIC0tLS0tLS0tLS0tXG5cbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlO1xuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpO1xuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwO1xuJGNhbGxvdXQtcGFkZGluZzogMXJlbTtcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZDtcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJTtcblxuLy8gMTQuIENhcmRcbi8vIC0tLS0tLS0tXG5cbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XG4kY2FyZC1zaGFkb3c6IG5vbmU7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRjYXJkLW1hcmdpbjogJGdsb2JhbC1tYXJnaW47XG5cbi8vIDE1LiBDbG9zZSBCdXR0b25cbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3A7XG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcbiAgc21hbGw6IDAuNjZyZW0sXG4gIG1lZGl1bTogMXJlbSxcbik7XG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXG4gIHNtYWxsOiAwLjMzZW0sXG4gIG1lZGl1bTogMC41cmVtLFxuKTtcbiRjbG9zZWJ1dHRvbi1zaXplOiAoXG4gIHNtYWxsOiAxLjVlbSxcbiAgbWVkaXVtOiAyZW0sXG4pO1xuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDE7XG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXk7XG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjaztcblxuLy8gMTYuIERyaWxsZG93blxuLy8gLS0tLS0tLS0tLS0tLVxuXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXI7XG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGRyaWxsZG93bi1hcnJvdy1zaXplOiA2cHg7XG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZTtcblxuLy8gMTcuIERyb3Bkb3duXG4vLyAtLS0tLS0tLS0tLS1cblxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW07XG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtO1xuJGRyb3Bkb3duLXdpZHRoOiAzMDBweDtcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGRyb3Bkb3duLXNpemVzOiAoXG4gIHRpbnk6IDEwMHB4LFxuICBzbWFsbDogMjAwcHgsXG4gIGxhcmdlOiA0MDBweCxcbik7XG5cbi8vIDE4LiBEcm9wZG93biBNZW51XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZTtcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3I7XG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweDtcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweDtcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyb3Bkb3dubWVudS1ib3JkZXI6IG5vbmU7XG4kZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJGRhcmstYmx1ZTtcblxuLy8gMTkuIEZvcm1zXG4vLyAtLS0tLS0tLS1cblxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGlucHV0LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE1KTtcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGlucHV0LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGU7XG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRwcmltYXJ5LWNvbG9yO1xuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuMSk7XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRwcmltYXJ5LWNvbG9yO1xuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQ7XG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQ7XG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlO1xuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjAuIExhYmVsXG4vLyAtLS0tLS0tLS1cblxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGxhYmVsLWNvbG9yOiAkd2hpdGU7XG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2s7XG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbTtcbiRsYWJlbC1yYWRpdXM6IDNweDtcblxuLy8gMjEuIE1lZGlhIE9iamVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJTtcblxuLy8gMjIuIE1lbnVcbi8vIC0tLS0tLS0tXG5cbiRtZW51LW1hcmdpbjogMDtcbiRtZW51LW1hcmdpbi1uZXN0ZWQ6IDFyZW07XG4kbWVudS1pdGVtLXBhZGRpbmc6IDFyZW0gMXJlbTtcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkZGFyay1ibHVlO1xuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogbm9uZTtcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbTtcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kbWVudS1ib3JkZXI6ICRsaWdodC1ncmF5O1xuXG4vLyAyMy4gTWV0ZXJcbi8vIC0tLS0tLS0tLVxuXG4kbWV0ZXItaGVpZ2h0OiAxcmVtO1xuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3I7XG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3I7XG5cbi8vIDI0LiBPZmYtY2FudmFzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kb2ZmY2FudmFzLXNpemU6IDI1MHB4O1xuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplOiAyNTBweDtcbiRvZmZjYW52YXMtYmFja2dyb3VuZDogJGRhcmstYmx1ZTtcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KTtcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDE7XG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMDtcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTtcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXM7XG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlO1xuJG9mZmNhbnZhcy1maXhlZC1yZXZlYWw6IHRydWU7XG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpO1xuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JztcblxuLy8gMjUuIE9yYml0XG4vLyAtLS0tLS0tLS1cblxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5O1xuJG9yYml0LWJ1bGxldC1kaWFtZXRlcjogMS4ycmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbTtcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW07XG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwO1xuXG4vLyAyNi4gUGFnaW5hdGlvblxuLy8gLS0tLS0tLS0tLS0tLS1cblxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3I7XG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZTtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheTtcbiRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yOiAkYmxhY2s7XG4kcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlO1xuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2U7XG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWU7XG5cbi8vIDI3LiBQcm9ncmVzcyBCYXJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJHByb2dyZXNzLWhlaWdodDogMXJlbTtcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjguIFJlc3BvbnNpdmUgRW1iZWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KTtcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxuICBkZWZhdWx0OiA0IGJ5IDMsXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXG4pO1xuXG4vLyAyOS4gUmV2ZWFsXG4vLyAtLS0tLS0tLS0tXG5cbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlO1xuJHJldmVhbC13aWR0aDogNjAwcHg7XG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aDtcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kcmV2ZWFsLXppbmRleDogMTAwNTtcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSk7XG5cbi8vIDMwLiBTbGlkZXJcbi8vIC0tLS0tLS0tLS1cblxuJHNsaWRlci13aWR0aC12ZXJ0aWNhbDogMC41cmVtO1xuJHNsaWRlci10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW07XG4kc2xpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJHNsaWRlci1maWxsLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtO1xuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xuJHNsaWRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAzMS4gU3dpdGNoXG4vLyAtLS0tLS0tLS0tXG5cbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3I7XG4kc3dpdGNoLWhlaWdodDogMnJlbTtcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbTtcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtO1xuJHN3aXRjaC1oZWlnaHQtbGFyZ2U6IDIuNXJlbTtcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbjtcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbTtcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQ7XG5cbi8vIDMyLiBUYWJsZVxuLy8gLS0tLS0tLS0tXG5cbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFibGUtY29sb3Itc2NhbGU6IDUlO1xuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApO1xuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZTtcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xuJHRhYmxlLXN0cmlwZTogZXZlbjtcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKTtcbiR0YWJsZS1oZWFkLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1oZWFkLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2U7XG5cbi8vIDMzLiBUYWJzXG4vLyAtLS0tLS0tLVxuXG4kdGFiLW1hcmdpbjogMDtcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheTtcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGU7XG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XG4kdGFiLWV4cGFuZC1tYXg6IDY7XG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXk7XG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbTtcblxuLy8gMzQuIFRodW1ibmFpbFxuLy8gLS0tLS0tLS0tLS0tLVxuXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZTtcbiR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpO1xuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSk7XG4kdGh1bWJuYWlsLXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQ7XG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDM1LiBUaXRsZSBCYXJcbi8vIC0tLS0tLS0tLS0tLS1cblxuJHRpdGxlYmFyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJHRpdGxlYmFyLWNvbG9yOiAkZGFyay1ibHVlO1xuJHRpdGxlYmFyLXBhZGRpbmc6IDAuMjVyZW07XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZDtcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5O1xuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbTtcblxuLy8gMzYuIFRvb2x0aXBcbi8vIC0tLS0tLS0tLS0tXG5cbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5O1xuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZTtcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW07XG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW07XG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NjtcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDM3LiBUb3AgQmFyXG4vLyAtLS0tLS0tLS0tLVxuXG4kdG9wYmFyLXBhZGRpbmc6IDAgMC4yNXJlbTtcbiR0b3BiYXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDogJHRvcGJhci1iYWNrZ3JvdW5kO1xuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMDtcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4O1xuJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bTtcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEZpbmRzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGIgLSBTZWNvbmQgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG5AZnVuY3Rpb24gZ2NkKCRhLCAkYikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxuICBAaWYgKCRiICE9IDApIHtcbiAgICBAcmV0dXJuIGdjZCgkYiwgJGEgJSAkYik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYWJzKCRhKTtcbiAgfVxufVxuXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGJhc2UgbnVtYmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcHJvZHVjdCBvZiB0aGUgZXhwb25lbnRpYXRpb24uXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxNikge1xuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XG4gICAgJHByZWMyIDogcG93KDEwLCAkcHJlYyk7XG4gICAgJGV4cG9uZW50OiByb3VuZCgkZXhwb25lbnQgKiAkcHJlYzIpO1xuICAgICRkZW5vbWluYXRvcjogZ2NkKCRleHBvbmVudCwgJHByZWMyKTtcbiAgICBAcmV0dXJuIG50aC1yb290KHBvdygkYmFzZSwgJGV4cG9uZW50IC8gJGRlbm9taW5hdG9yKSwgJHByZWMyIC8gJGRlbm9taW5hdG9yLCAkcHJlYyk7XG4gIH1cblxuICAkdmFsdWU6ICRiYXNlO1xuICBAaWYgJGV4cG9uZW50ID4gMSB7XG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGV4cG9uZW50IDwgMSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbkBmdW5jdGlvbiBudGgtcm9vdCgkbnVtLCAkbjogMiwgJHByZWM6IDEyKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9OdGhfcm9vdCNKYXZhU2NyaXB0XG4gICR4OiAxO1xuXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJHByZWMge1xuICAgICR4OiAxIC8gJG4gKiAoKCRuIC0gMSkgKiAkeCArICgkbnVtIC8gcG93KCR4LCAkbiAtIDEpKSk7XG4gIH1cblxuICBAcmV0dXJuICR4O1xufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgd2lkdGggZm9yIGEgZ2l2ZW4gcmF0aW8uXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmF0aW8gLSBSYXRpbyB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQsIGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IEEgcGVyY2VudGFnZSB2YWx1ZSBmb3IgdGhlIGhlaWdodCByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgYSByZXNwb25zaXZlIGNvbnRhaW5lci5cbkBmdW5jdGlvbiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbykge1xuICAkdzogbnRoKCRyYXRpbywgMSk7XG4gICRoOiBudGgoJHJhdGlvLCAzKTtcbiAgQHJldHVybiAkaCAvICR3ICogMTAwJTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbn1cblxuLy8vIENvbnZlcnRzIG9uZSBvciBtb3JlIHBpeGVsIHZhbHVlcyBpbnRvIG1hdGNoaW5nIHJlbSB2YWx1ZXMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBUaGUgYmFzZSB2YWx1ZSB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgYHJlbWAuIElmIHlvdSdyZSB1c2luZyBGb3VuZGF0aW9uIG91dCBvZiB0aGUgYm94LCB0aGlzIGlzIDE2cHguIElmIHRoaXMgcGFyYW1ldGVyIGlzIGBudWxsYCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVmZXJlbmNlIHRoZSBgJGJhc2UtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFyZW07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgcmVtIGlmIHVuaXRzIGZvciAkdmFsdWUgaXMgbm90IHJlbSBvciBlbVxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIC8vIE5vdyBsZXRzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogKCR2YWx1ZSAvIDEwMCUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgLy8gJ3B4J1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcge1xuICAgIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlcm4gdGhlbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xuICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgKCR2YWx1ZSA+IDEwKSB7XG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBub3QgZmFsc2V5LCBpbiBDU1MgdGVybXMuIEZhbHNleSB2YWx1ZXMgYXJlIGBudWxsYCwgYG5vbmVgLCBgMGAgd2l0aCBhbnkgdW5pdCwgb3IgYW4gZW1wdHkgbGlzdC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICR2YWwgLSBWYWx1ZSB0byBjaGVjay5cbi8vL1xuLy8vIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWxgIGlzIG5vdCBmYWxzZXkuXG5AZnVuY3Rpb24gaGFzLXZhbHVlKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gbnVsbCBvciAkdmFsID09IG5vbmUge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkdmFsKSA9PSAwIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vIERldGVybWluZSBhIHRvcC9yaWdodC9ib3R0b20vcmlnaHQgdmFsdWUgb24gYSBwYWRkaW5nLCBtYXJnaW4sIGV0Yy4gcHJvcGVydHksIG5vIG1hdHRlciBob3cgbWFueSB2YWx1ZXMgd2VyZSBwYXNzZWQgaW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHNpZGUgb2YgYSB2YWx1ZSwgYnV0IGRvbid0IGtub3cgaWYgdGhlIHZhbHVlIGlzIHVzaW5nIGEgc2hvcnRoYW5kIGZvcm1hdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxOdW1iZXJ9ICR2YWwgLSBWYWx1ZSB0byBhbmFseXplLiBTaG91bGQgYmUgYSBzaG9ydGhhbmQgc2l6aW5nIHByb3BlcnR5LCBlLmcuIFwiMWVtIDJlbSAxZW1cIlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRvIHJldHVybi4gU2hvdWxkIGJlIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCwgb3IgYGxlZnRgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gYCR2YWxgIGFuZCBgJHNpZGVgLlxuQGZ1bmN0aW9uIGdldC1zaWRlKCR2YWwsICRzaWRlKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkdmFsKTtcblxuICBAaWYgJGxlbmd0aCA9PSAxIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSAzIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgKSwgJHNpZGUpO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDQge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIHJpZ2h0OiBudGgoJHZhbCwgMiksXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCA0KSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbn1cblxuLy8vIEdpdmVuIGJvcmRlciAkdmFsLCBmaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgYm9yZGVyLCB3aGljaCBpcyAkZWxlbS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgJGVsZW0gYXJlIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsIC0gQm9yZGVyIHZhbHVlIHRvIGZpbmQgYSB2YWx1ZSBpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIC0gQm9yZGVyIGNvbXBvbmVudCB0byBleHRyYWN0LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBJZiB0aGUgdmFsdWUgZXhpc3RzLCByZXR1cm5zIHRoZSB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiB0aGUgYm9yZGVyIGRlZmluaXRpb24sIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBhIDBweCB3aWR0aCwgc29saWQgc3R5bGUsIG9yIGJsYWNrIGJvcmRlci5cbkBmdW5jdGlvbiBnZXQtYm9yZGVyLXZhbHVlKCR2YWwsICRlbGVtKSB7XG4gIC8vIEZpbmQgdGhlIHdpZHRoLCBzdHlsZSwgb3IgY29sb3IgYW5kIHJldHVybiBpdFxuICBAZWFjaCAkdiBpbiAkdmFsIHtcbiAgICAkdHlwZTogdHlwZS1vZigkdik7XG4gICAgQGlmICRlbGVtID09IHdpZHRoIGFuZCAkdHlwZSA9PSAnbnVtYmVyJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gc3R5bGUgYW5kICR0eXBlID09ICdzdHJpbmcnIHtcbiAgICAgIEByZXR1cm4gJHY7XG4gICAgfVxuICAgIEBpZiAkZWxlbSA9PSBjb2xvciBhbmQgJHR5cGUgPT0gJ2NvbG9yJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmF1bHRzXG4gICRkZWZhdWx0czogKFxuICAgIHdpZHRoOiAwLFxuICAgIHN0eWxlOiBzb2xpZCxcbiAgICBjb2xvcjogIzAwMCxcbiAgKTtcblxuICBAcmV0dXJuIG1hcC1nZXQoJGRlZmF1bHRzLCAkZWxlbSk7XG59XG5cbi8vLyBGaW5kcyBhIHZhbHVlIGluIGEgbmVzdGVkIG1hcC5cbi8vLyBAbGluayBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvZGVlcC1nZXRzZXQtbWFwcy8gRGVlcCBHZXQvU2V0IGluIE1hcHNcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5cy4uLiAtIEtleXMgdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgYSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICB9XG4gIEByZXR1cm4gJG1hcDtcbn1cblxuLy8vIENhc3RzIGEgbWFwIGludG8gYSBsaXN0LlxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTQvMDQvMjgvY2FzdGluZy1tYXAtaW50by1saXN0L1xuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcHVsbCBhIHZhbHVlIGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRGVwZW5kaW5nIG9uIHRoZSBmbGFnLCByZXR1cm5zIGVpdGhlciAka2V5cyBvciAkdmFsdWVzIG9yIGJvdGguXG5AZnVuY3Rpb24gbWFwLXRvLWxpc3QoJG1hcCwgJGtlZXA6ICdib3RoJykge1xuICAka2VlcDogaWYoaW5kZXgoJ2tleXMnICd2YWx1ZXMnLCAka2VlcCksICRrZWVwLCAnYm90aCcpO1xuXG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAka2V5czogKCk7XG4gICAgJHZhbHVlczogKCk7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRtYXAge1xuICAgICAgJGtleXM6IGFwcGVuZCgka2V5cywgJGtleSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHZhbCk7XG4gICAgfVxuXG4gICAgQGlmICRrZWVwID09ICdrZXlzJyB7XG4gICAgICBAcmV0dXJuICRrZXlzO1xuICAgIH1cbiAgICBAZWxzZSBpZiAka2VlcCA9PSAndmFsdWVzJyB7XG4gICAgICBAcmV0dXJuICR2YWx1ZXM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gemlwKCRrZXlzLCAkdmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJG1hcCkgIT0gJ2xpc3QnLCAoJHZhbHVlLCksICRtYXApO1xuXG59XG5cbi8vLyBTYWZlbHkgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1hcC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIE5hbWUgb2YgdGhlIG1hcCBrZXkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXG5AZnVuY3Rpb24gbWFwLXNhZmUtZ2V0KCRtYXAsICRrZXkpIHtcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0tleTogYCN7JGtleX1gIGlzIG5vdCBhdmFpbGFibGUgaW4gYCN7JG1hcH1gJztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciAtIFVzZWQgZGlyZWN0aW9uIGJldHdlZW4gXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiIGFuZCBcImxlZnRcIi5cbi8vLyBAcmV0dXJuIHtLZXl3b3JkfSBPcHBvc2l0ZSBkaXJlY3Rpb24gb2YgJGRpclxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1vcHBvc2l0ZShcbiAgJGRpclxuKSB7XG4gICRkaXJzOiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTtcbiAgJHBsYWNlOiBpbmRleCgkZGlycywgJGRpcik7XG5cbiAgQGlmICRwbGFjZSA9PSBudWxsIHtcbiAgICBAZXJyb3IgJ2RpcmVjdGlvbi1vcHBvc2l0ZTogSW52YWxpZCAkZGlyIHBhcmFtZXRlciwgZXhwZWN0ZWQgYSB2YWx1ZSBmcm9tIFwiI3skZGlyc31cIiwgZm91bmQgXCIjeyRkaXJ9XCIuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYWxjdWwgdGhlIG9wcG9zaXRlIHBsYWNlIGluIGEgY2lyY2xlLCB3aXRoIGEgc3RhcnRpbmcgaW5kZXggb2YgMVxuICAkbGVuZ3RoOiBsZW5ndGgoJGRpcnMpO1xuICAkZGVtaTogJGxlbmd0aCAvIDI7XG4gICRvcHBvc2l0ZS1wbGFjZTogKCgkcGxhY2UgKyAkZGVtaSAtIDEpICUgJGxlbmd0aCkgKyAxO1xuXG4gIEByZXR1cm4gbnRoKCRkaXJzLCAkb3Bwb3NpdGUtcGxhY2UpO1xufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5cbiRjb250cmFzdC13YXJuaW5nczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gY2hlY2sgdGhlIGx1bWluYW5jZSBvZi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG5AZnVuY3Rpb24gY29sb3ItbHVtaW5hbmNlKCRjb2xvcikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWZcbiAgJHJnYmE6IHJlZCgkY29sb3IpLCBncmVlbigkY29sb3IpLCBibHVlKCRjb2xvcik7XG4gICRyZ2JhMjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAzIHtcbiAgICAkcmdiOiBudGgoJHJnYmEsICRpKTtcbiAgICAkcmdiOiAkcmdiIC8gMjU1O1xuXG4gICAgJHJnYjogaWYoJHJnYiA8IDAuMDM5MjgsICRyZ2IgLyAxMi45MiwgcG93KCgkcmdiICsgMC4wNTUpIC8gMS4wNTUsIDIuNCkpO1xuXG4gICAgJHJnYmEyOiBhcHBlbmQoJHJnYmEyLCAkcmdiKTtcbiAgfVxuXG4gIEByZXR1cm4gMC4yMTI2ICogbnRoKCRyZ2JhMiwgMSkgKyAwLjcxNTIgKiBudGgoJHJnYmEyLCAyKSArIDAuMDcyMiAqIG50aCgkcmdiYTIsIDMpO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBjb250cmFzdCByYXRpbyBvZiB0d28gY29sb3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMSAtIEZpcnN0IGNvbG9yIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yMiAtIFNlY29uZCBjb2xvciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGNvbnRyYXN0IHJhdGlvIG9mIHRoZSBjb21wYXJlZCBjb2xvcnMuXG5AZnVuY3Rpb24gY29sb3ItY29udHJhc3QoJGNvbG9yMSwgJGNvbG9yMikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jY29udHJhc3QtcmF0aW9kZWZcbiAgJGx1bWluYW5jZTE6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IxKSArIDAuMDU7XG4gICRsdW1pbmFuY2UyOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMikgKyAwLjA1O1xuICAkcmF0aW86ICRsdW1pbmFuY2UxIC8gJGx1bWluYW5jZTI7XG5cbiAgQGlmICRsdW1pbmFuY2UyID4gJGx1bWluYW5jZTEge1xuICAgICRyYXRpbzogMSAvICRyYXRpbztcbiAgfVxuXG4gICRyYXRpbzogcm91bmQoJHJhdGlvICogMTApIC8gMTA7XG5cbiAgQHJldHVybiAkcmF0aW87XG59XG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGJhc2VgLCBhbmQgcmV0dXJucyB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYXNlIC0gQ29sb3IgdG8gY2hlY2sgbHVtaW5hbmNlLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGNvbG9ycyBbKCR3aGl0ZSwgJGJsYWNrKV0gLSBDb2xvcnMgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvbGVyYW5jZSBbJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZV0gLSBDb250cmFzdCB0b2xlcmFuY2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuQGZ1bmN0aW9uIGNvbG9yLXBpY2stY29udHJhc3QoJGJhc2UsICRjb2xvcnM6ICgkd2hpdGUsICRibGFjayksICR0b2xlcmFuY2U6ICRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2UpIHtcbiAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsIDEpKTtcbiAgJGJlc3Q6IG50aCgkY29sb3JzLCAxKTtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkY29sb3JzKSB7XG4gICAgJGN1cnJlbnQtY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICBAaWYgKCRjdXJyZW50LWNvbnRyYXN0IC0gJGNvbnRyYXN0ID4gJHRvbGVyYW5jZSkge1xuICAgICAgJGNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgICAkYmVzdDogbnRoKCRjb2xvcnMsICRpKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRjb250cmFzdC13YXJuaW5ncyBhbmQgJGNvbnRyYXN0IDwgMykge1xuICAgIEB3YXJuIFwiQ29udHJhc3QgcmF0aW8gb2YgI3skYmVzdH0gb24gI3skYmFzZX0gaXMgcHJldHR5IGJhZCwganVzdCAjeyRjb250cmFzdH1cIjtcbiAgfVxuXG4gIEByZXR1cm4gJGJlc3Q7XG59XG5cbi8vLyBTY2FsZXMgYSBjb2xvciB0byBiZSBkYXJrZXIgaWYgaXQncyBsaWdodCwgb3IgbGlnaHRlciBpZiBpdCdzIGRhcmsuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHRpbnQgYSBjb2xvciBhcHByb3ByaWF0ZSB0byBpdHMgbGlnaHRuZXNzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gc2NhbGUuXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkc2NhbGUgWzUlXSAtIEFtb3VudCB0byBzY2FsZSB1cCBvciBkb3duLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNDAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gQSBzY2FsZWQgY29sb3IuXG5AZnVuY3Rpb24gc21hcnQtc2NhbGUoJGNvbG9yLCAkc2NhbGU6IDUlLCAkdGhyZXNob2xkOiA0MCUpIHtcbiAgQGlmIGxpZ2h0bmVzcygkY29sb3IpID4gJHRocmVzaG9sZCB7XG4gICAgJHNjYWxlOiAtJHNjYWxlO1xuICB9XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkc2NhbGUpO1xufVxuXG4vLy8gR2V0IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcGFyYW0ge2tleX0gY29sb3Iga2V5IGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG5AZnVuY3Rpb24gZ2V0LWNvbG9yKCRrZXkpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnZ2l2ZW4gJGtleSBpcyBub3QgYXZhaWxhYmxlIGluICRmb3VuZGF0aW9uLXBhbGV0dGUnO1xuICB9XG59XG5cbi8vLyBUcmFuc2ZlcnMgdGhlIGNvbG9ycyBpbiB0aGUgYCRmb3VuZGF0aW9uLXBhbGV0dGVgbWFwIGludG8gdmFyaWFibGVzLCBzdWNoIGFzIGAkcHJpbWFyeS1jb2xvcmAgYW5kIGAkc2Vjb25kYXJ5LWNvbG9yYC4gQ2FsbCB0aGlzIG1peGluIGJlbG93IHRoZSBHbG9iYWwgc2VjdGlvbiBvZiB5b3VyIHNldHRpbmdzIGZpbGUgdG8gcHJvcGVybHkgbWlncmF0ZSB5b3VyIGNvZGViYXNlLlxuQG1peGluIGFkZC1mb3VuZGF0aW9uLWNvbG9ycygpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2Vzcykge1xuICAgICRzdWNjZXNzLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpIHtcbiAgICAkd2FybmluZy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkge1xuICAgICRhbGVydC1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkgIWdsb2JhbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8S2V5d29yZH0gJHR5cGVzIFsoKV0gLSBBIGxpc3Qgb2YgdGV4dCBpbnB1dCB0eXBlcyB0byB1c2UuIExlYXZlIGJsYW5rIHRvIHVzZSBhbGwgb2YgdGhlbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xuICAkcmV0dXJuOiAoKTtcblxuICAkYWxsLXR5cGVzOlxuICAgIHRleHRcbiAgICBwYXNzd29yZFxuICAgIGRhdGVcbiAgICBkYXRldGltZVxuICAgIGRhdGV0aW1lLWxvY2FsXG4gICAgbW9udGhcbiAgICB3ZWVrXG4gICAgZW1haWxcbiAgICBudW1iZXJcbiAgICBzZWFyY2hcbiAgICB0ZWxcbiAgICB0aW1lXG4gICAgdXJsXG4gICAgY29sb3I7XG5cbiAgQGlmIG5vdCBoYXMtdmFsdWUoJHR5cGVzKSB7XG4gICAgJHR5cGVzOiAkYWxsLXR5cGVzO1xuICB9XG5cbiAgQGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcbiAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgdW5xdW90ZSgnW3R5cGU9XFwnI3skdHlwZX1cXCddI3skbW9kaWZpZXJ9JyksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIiQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICdsZWZ0JzogZmxleC1zdGFydCxcbiAgJ3JpZ2h0JzogZmxleC1lbmQsXG4gICdjZW50ZXInOiBjZW50ZXIsXG4gICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcbiAgJ3NwYWNlZCc6IHNwYWNlLWFyb3VuZCxcbik7XG5cbiQtemYtZmxleC1hbGlnbjogKFxuICAndG9wJzogZmxleC1zdGFydCxcbiAgJ2JvdHRvbSc6IGZsZXgtZW5kLFxuICAnbWlkZGxlJzogY2VudGVyLFxuICAnc3RyZXRjaCc6IHN0cmV0Y2gsXG4pO1xuXG4kLXpmLWZsZXgtZGlyZWN0aW9uOiAoXG4gICdyb3cnOiByb3csXG4gICdyb3ctcmV2ZXJzZSc6IHJvdy1yZXZlcnNlLFxuICAnY29sdW1uJzogY29sdW1uLFxuICAnY29sdW1uLXJldmVyc2UnOiBjb2x1bW4tcmV2ZXJzZSxcbik7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggYnkgYWRkaW5nIGBkaXNwbGF5OiBmbGV4YCB0byB0aGUgZWxlbWVudC5cbkBtaXhpbiBmbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLy8vIEhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGFsaWducyB0aGUgaXRlbXMgd2l0aGluIGEgZmxleCBjb250YWluZXIuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR4IFtudWxsXSAtIEhvcml6b250YWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGBsZWZ0YCwgYHJpZ2h0YCwgYGNlbnRlcmAsIGBqdXN0aWZ5YCwgb3IgYHNwYWNlZGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCBob3Jpem9udGFsIGFsaWdubWVudC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbigkeDogbnVsbCwgJHk6IG51bGwpIHtcbiAgQGlmICR4IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWp1c3RpZnksICR4KSB7XG4gICAgICAkeDogbWFwLWdldCgkLXpmLWZsZXgtanVzdGlmeSwgJHgpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR4fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuIFVzZSBsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5LCBvciBzcGFjZWQuJztcbiAgICB9XG4gIH1cblxuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIHZlcnRpY2FsIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBqdXN0aWZ5LWNvbnRlbnQ6ICR4O1xuICBhbGlnbi1pdGVtczogJHk7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGFsaWduIGEgc2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBmbGV4IHJvdy4gQXBwbHkgdGhpcyBtaXhpbiB0byBhIGZsZXggY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24tc2VsZigkeTogbnVsbCkge1xuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1jb2x1bW4tYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBhbGlnbi1zZWxmOiAkeTtcbn1cblxuLy8vIENoYW5nZXMgdGhlIHNvdXJjZSBvcmRlciBvZiBhIGZsZXggY2hpbGQuIENoaWxkcmVuIHdpdGggbG93ZXIgbnVtYmVycyBhcHBlYXIgZmlyc3QgaW4gdGhlIGxheW91dC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9yZGVyIFswXSAtIE9yZGVyIG51bWJlciB0byBhcHBseS5cbkBtaXhpbiBmbGV4LW9yZGVyKCRvcmRlcjogMCkge1xuICBvcmRlcjogJG9yZGVyO1xufVxuXG4vLy8gQ2hhbmdlIGZsZXgtZGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtyb3ddIC0gRmxleCBkaXJlY3Rpb24gdG8gdXNlLiBDYW4gYmVcbi8vLyAgIC0gcm93IChkZWZhdWx0KTogc2FtZSBhcyB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSByb3ctcmV2ZXJzZTogb3Bwb3NpdGUgdG8gdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gY29sdW1uOiBzYW1lIGFzIHJvdyBidXQgdG9wIHRvIGJvdHRvbVxuLy8vICAgLSBjb2x1bW4tcmV2ZXJzZTogc2FtZSBhcyByb3ctcmV2ZXJzZSB0b3AgdG8gYm90dG9tXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogcm93KSB7XG4gIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnWW91ciBzbWFsbGVzdCBicmVha3BvaW50IChkZWZpbmVkIGluICRicmVha3BvaW50cykgbXVzdCBiZSBzZXQgdG8gXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IDA7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBFdmVudHVhbCBvdXRwdXRcbiAgJHN0cjogJyc7XG4gIC8vIElzIGl0IGEgbmFtZWQgbWVkaWEgcXVlcnk/XG4gICRuYW1lZDogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG4gIEBlbHNlIGlmICRicCA9PSAncmV0aW5hJyB7XG4gICAgQHJldHVybiAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSc7XG4gIH1cblxuICAvLyBUcnkgdG8gcHVsbCBhIG5hbWVkIGJyZWFrcG9pbnQgb3V0IG9mIHRoZSAkYnJlYWtwb2ludHMgbWFwXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAgICAgJGJwLW1heDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgIH1cblxuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgICRuYW1lZDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciAkYnJlYWtwb2ludHMgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgYW55IHBpeGVsLCByZW0sIG9yIHVuaXRsZXNzIHZhbHVlIHRvIGVtXG4gICRicDogLXpmLWJwLXRvLWVtKCRicCk7XG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAoMS8xNik7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuXG4gIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICRvbGQtemYtc2l6ZTogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XG4gICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgQGlmICRzdHIgPT0gJycge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgQGVsc2Uge1xuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcbiAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgb2xkIGJyZWFrcG9pbnQgc2l6ZVxuICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xufVxuXG4vLy8gQ29udmVycyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBsYXN0IGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigka2V5KSB7XG4gICRsaXN0OiAoKTtcbiAgJGZvdW5kX2tleTogZmFsc2U7XG5cbiAgQGVhY2ggJG5hbWUgaW4gJC16Zi1icmVha3BvaW50cy1rZXlzIHtcbiAgICBAaWYgKCRuYW1lID09ICRrZXkpIHtcbiAgICAgICRmb3VuZF9rZXk6IHRydWU7XG4gICAgfVxuICAgIEBpZiBub3QgJGZvdW5kX2tleSB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkbmFtZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW5nIC0gYSBuYW1lZCBvciBub24tbmFtZWQgYnJlYWtwb2luZy5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICRsYXN0OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcbiAgJGZvdW5kOiBmYWxzZTtcblxuICAkdmFsdWU6IHVuaXRsZXNzLWNhbGMoJGJyZWFrcG9pbnQsIDFweCk7XG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICBAaWYgdW5pdGxlc3MtY2FsYygkdmFsKSA+ICR2YWx1ZSB7XG4gICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkbGFzdDogJGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsYXN0O1xufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBSZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJG1hcDtcbiAgfVxuXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHNtYWxsKSB7XG4gICRzbWFsbC11cDogc2NyZWVuO1xuICAkc21hbGwtb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoc21hbGwgb25seSl9Jyk7XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XG4gICR4eGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX0nKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhbiBpbm5lciBib3gtc2hhZG93IGZvciBvbmx5IG9uZSBzaWRlXG4vLy8gXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2lkZSAtIFNpZGUgdGhlIHNoYWRvdyBpcyBzdXBwb3NlZCB0byBhcHBlYXIuIENhbiBiZSBgdG9wYCwgYGxlZnRgLCBgcmlnaHRgIG9yIGBib3R0b21gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIFdpZHRoIGZvciB0aGUgdGFyZ2V0IHNpZGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3Igb2YgdGhlIHNoYWRvdy5cbkBtaXhpbiBpbm5lci1zaWRlLXNoYWRvdyhcbiAgJHNpZGU6IGJvdHRvbSxcbiAgJHNpemU6IDIwcHgsXG4gICRjb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpXG4pIHtcblxuICAkaGVscGVyOiByb3VuZCgkc2l6ZSAqIDAuNjUpO1xuXG4gIEBpZiAoJHNpZGUgPT0gdG9wKSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAkaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH1cbiAgQGVsc2VpZiAoJHNpZGUgPT0gbGVmdCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9XG4gIEBlbHNlaWYgKCRzaWRlID09IHJpZ2h0KSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgKC0xKSokaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfVxuICBAZWxzZWlmICgkc2lkZSA9PSBib3R0b20pIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICgtMSkqJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgQ1NTIHRyaWFuZ2xlLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZHJvcGRvd24gYXJyb3dzLCBkcm9wZG93biBwaXBzLCBhbmQgbW9yZS4gVXNlIHRoaXMgbWl4aW4gaW5zaWRlIGEgYCY6OmJlZm9yZWAgb3IgYCY6OmFmdGVyYCBzZWxlY3RvciwgdG8gYXR0YWNoIHRoZSB0cmlhbmdsZSB0byBhbiBleGlzdGluZyBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR0cmlhbmdsZS1jb2xvciAtIENvbG9yIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0cmlhbmdsZS1kaXJlY3Rpb24gLSBEaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHBvaW50cy4gQ2FuIGJlIGB1cGAsIGByaWdodGAsIGBkb3duYCwgb3IgYGxlZnRgLlxuQG1peGluIGNzcy10cmlhbmdsZShcbiAgJHRyaWFuZ2xlLXNpemUsXG4gICR0cmlhbmdsZS1jb2xvcixcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxuKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuXG4gIGJvcmRlcjogaW5zZXQgJHRyaWFuZ2xlLXNpemU7XG5cbiAgY29udGVudDogJyc7XG5cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSB1cCkge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHJpZ2h0KSB7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBtZW51IGljb24gd2l0aCBhIHNldCB3aWR0aCwgaGVpZ2h0LCBudW1iZXIgb2YgYmFycywgYW5kIGNvbG9ycy4gVGhlIG1peGluIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiB0aGUgYmFycyB0byBkZXRlcm1pbmUgc3BhY2luZy4gPGRpdiBjbGFzcz1cImRvY3MtZXhhbXBsZS1idXJnZXJcIj48L2Rpdj5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yLWhvdmVyIFskZGFyay1ncmF5XSAtIENvbG9yIHRvIHVzZSB3aGVuIHRoZSBpY29uIGlzIGhvdmVyZWQgb3Zlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsyMHB4XSAtIFdpZHRoIG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IFsxNnB4XSAtIEhlaWdodCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbMnB4XSAtIEhlaWdodCBvZiBpbmRpdmlkdWFsIGJhcnMgaW4gdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXJzIFszXSAtIE51bWJlciBvZiBiYXJzIGluIHRoZSBpY29uLlxuQG1peGluIGhhbWJ1cmdlcihcbiAgJGNvbG9yOiAkYmxhY2ssXG4gICRjb2xvci1ob3ZlcjogJGRhcmstZ3JheSxcbiAgJHdpZHRoOiAyMHB4LFxuICAkaGVpZ2h0OiAxNnB4LFxuICAkd2VpZ2h0OiAycHgsXG4gICRiYXJzOiAzXG4pIHtcbiAgLy8gYm94LXNoYWRvdyBDU1Mgb3V0cHV0XG4gICRzaGFkb3c6ICgpO1xuICAkaG92ZXItc2hhZG93OiAoKTtcblxuICAvLyBTcGFjaW5nIGJldHdlZW4gYmFycyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgZWFjaCBiYXJcbiAgJHNwYWNpbmc6ICgkaGVpZ2h0IC0gKCR3ZWlnaHQgKiAkYmFycykpIC8gKCRiYXJzIC0gMSk7XG5cbiAgQGlmIHVuaXQoJHNwYWNpbmcpID09ICdweCcge1xuICAgICRzcGFjaW5nOiBmbG9vcigkc3BhY2luZyk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICRzaGFkb3c6IGFwcGVuZCgkc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3IsIGNvbW1hKTtcbiAgfVxuXG4gIC8vIEljb24gY29udGFpbmVyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBJY29uIGJhcnNcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHdlaWdodDtcblxuICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBIb3ZlciBzdGF0ZVxuICBAaWYgJGNvbG9yLWhvdmVyIHtcbiAgICAvLyBHZW5lcmF0ZSBDU1NcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcbiAgICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgICAkaG92ZXItc2hhZG93OiBhcHBlbmQoJGhvdmVyLXNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLWhvdmVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJjpob3Zlcjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWhvdmVyO1xuICAgICAgYm94LXNoYWRvdzogJGhvdmVyLXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgYSBkb3dud2FyZC1mYWNpbmcgdHJpYW5nbGUgYXMgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIGFuIGVsZW1lbnQuIFRoZSBpbWFnZSBpcyBmb3JtYXR0ZWQgYXMgYW4gU1ZHLCBtYWtpbmcgaXQgZWFzeSB0byBjaGFuZ2UgdGhlIGNvbG9yLiBCZWNhdXNlIEludGVybmV0IEV4cGxvcmVyIGRvZXNuJ3Qgc3VwcG9ydCBlbmNvZGVkIFNWR3MgYXMgYmFja2dyb3VuZCBpbWFnZXMsIGEgUE5HIGZhbGxiYWNrIGlzIGFsc28gaW5jbHVkZWQuXG4vLy8gVGhlcmUgYXJlIHR3byBQTkcgZmFsbGJhY2tzOiBhIGJsYWNrIHRyaWFuZ2xlIGFuZCBhIHdoaXRlIHRyaWFuZ2xlLiBUaGUgb25lIHVzZWQgZGVwZW5kcyBvbiB0aGUgbGlnaHRuZXNzIG9mIHRoZSBpbnB1dCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIHRyaWFuZ2xlLlxuQG1peGluIGJhY2tncm91bmQtdHJpYW5nbGUoJGNvbG9yOiAkYmxhY2spIHtcbiAgJHJnYjogJ3JnYiUyOCN7cm91bmQocmVkKCRjb2xvcikpfSwgI3tyb3VuZChncmVlbigkY29sb3IpKX0sICN7cm91bmQoYmx1ZSgkY29sb3IpKX0lMjknO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIHdpZHRoPSczMicgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDMyIDI0Jz48cG9seWdvbiBwb2ludHM9JzAsMCAzMiwwIDE2LDI0JyBzdHlsZT0nZmlsbDogI3skcmdifSc+PC9wb2x5Z29uPjwvc3ZnPlwiKTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjBcXDApIHtcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA2MCUge1xuICAgICAgLy8gV2hpdGUgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJcEpSRUZVZU5yRWtja05nREFNQkJmUmtFdDBPYlJCQmRzR1hVRGdtUWZLNFhoSDJtOGN6UUFBeTI3UjN0c3c0UWZlMng4dU9PNm9ZTGI2R2xPb3IzR0Yrc3dVUkFPbVVKK1J3dEVKczlXdlRHRVl4QlhxSTFNUUFaaENmVVFLUnpETVZqK1R3ckFJVjZqdlNVRWtZQXIxTFNrY3lUQmIvVitLWWZYN3hBZXVzcTNzTER0R0gza0VHQUNQV0lmbE5aZmhSUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBCbGFjayB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1CSlJFRlVlTnJFbGxzT2hDQU1SVnN6QzlJbHpVN0tDbVZIVEpzb01XWU1VdHB5djlCZ2J1WFFCNVpTZGdCWVlZNHljZ0Jpdms4S1lGc1FNZk1pVFRCUDRvM25VekNLek9hYkxKYkx5Mi9nMzFldkdrQWdpblI0L1plZ0tINXFYM2JKQ3NjQTN0MHgza2dPNXRRRnloaEZmNTB4UnFGTGJ5TVVOSlF6Z3lqR1Mvd2dDcHZLcWtSQnB1V3JFNFY5ZCsxRTRkUFVYcUlnMTA3U1FPRS8yRFJReE13VER5Z0lJblZERVQ5VDNsQ29qLzZqL1ZDbUdqWk9sMmxLcFo4QUF3RFFQN3pJaW1ER0ZRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHRoZSBtaWNybyBjbGVhcmZpeCBoYWNrIHBvcHVsYXJpemVkIGJ5IE5pY29sYXMgR2FsbGFnaGVyLiBJbmNsdWRlIHRoaXMgbWl4aW4gb24gYSBjb250YWluZXIgaWYgaXRzIGNoaWxkcmVuIGFyZSBhbGwgZmxvYXRlZCwgdG8gZ2l2ZSB0aGUgY29udGFpbmVyIGEgcHJvcGVyIGhlaWdodC5cbi8vLyBUaGUgY2xlYXJmaXggaXMgYXVnbWVudGVkIHdpdGggc3BlY2lmaWMgc3R5bGVzIHRvIHByZXZlbnQgYm9yZGVycyBpbiBmbGV4Ym94IGVudmlyb25tZW50c1xuLy8vIEBsaW5rIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLyBNaWNybyBDbGVhcmZpeCBIYWNrXG4vLy8gQGxpbmsgaHR0cDovL2RhbmlzYWRlc2lnbmVyLmNvbS9ibG9nL2ZsZXhib3gtY2xlYXItZml4LXBzZXVkby1lbGVtZW50cy8gRmxleGJveCBmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNvbnRlbnQ6ICcgJztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZSgxIC8gJGkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsMCwwLDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG4gIGJvcmRlcjogMDtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBjbGlwLXBhdGg6IG5vbmU7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIGl0ZXJhdGUgb3ZlciBicmVha3BvaW50cyB3aXRob3V0IGRvaW5nIHRoZSBtZWRpYSBxdWVyeSBpdHNlbGYuIFVzZWZ1bCBmb3IgbW9yZSBjb21wbGV4IG1lZGlhIHF1ZXJ5IGdlbmVyYXRpb24gYXMgaW4gdGhlIG1hcmdpbiBncmlkLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiB0cnVlLCAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHM6IHRydWUpIHtcbiAgJGxpc3Q6ICRicmVha3BvaW50LWNsYXNzZXM7XG5cbiAgQGlmIG5vdCAkc21hbGwge1xuICAgICRsaXN0OiBzbC1yZW1vdmUoJGxpc3QsICQtemYtemVyby1icmVha3BvaW50KTtcbiAgfVxuXG4gIEBlYWNoICRuYW1lIGluICRsaXN0IHtcbiAgICAkLXpmLXNpemU6ICRuYW1lICFnbG9iYWw7XG5cbiAgICBAaWYgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgdGhlIGBAY29udGVudGAgcGFzc2VkIHRvIHRoZSBtaXhpbiB3aXRoIGEgdmFsdWUgYCQtemYtYnAtdmFsdWVgIHJlbGF0ZWQgdG8gYSBicmVha3BvaW50LCBkZXBlbmRpbmcgb24gdGhlIGAkbmFtZWAgcGFyYW1ldGVyOlxuLy8vIC0gRm9yIGEgc2luZ2xlIHZhbHVlLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhpcyB2YWx1ZS5cbi8vLyAtIEZvciBhIGJyZWFrcG9pbnQgbmFtZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgLlxuLy8vIC0gRm9yIFwiYXV0b1wiLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAgYW5kIGlzIHBhc3NlZCB0byBgQGNvbnRlbnRgLCB3aGljaCBpcyBtYWRlIHJlc3BvbnNpdmUgZm9yIGVhY2ggYnJlYWtwb2ludCBvZiBgJG1hcGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJG5hbWUgW2F1dG9dIC0gU2luZ2xlIHZhbHVlLCBicmVha3BvaW50IG5hbWUsIG9yIGxpc3Qgb2YgYnJlYWtwb2ludCBuYW1lcyB0byB1c2UuIFwiYXV0b1wiIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gTWFwIG9mIGJyZWFrcG9pbnRzIGFuZCB2YWx1ZXMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS5cbkBtaXhpbiAtemYtYnJlYWtwb2ludC12YWx1ZShcbiAgJG5hbWU6IGF1dG8sXG4gICRtYXA6IG51bGxcbikge1xuICBAaWYgJG5hbWUgPT0gYXV0byBhbmQgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgLy8gXCJhdXRvXCJcbiAgICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRrKSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCR2LCAkbWFwKSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIGJyZWFrcG9pbnQgbmFtZVxuICAgIEBpZiB0eXBlLW9mKCRuYW1lKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkbmFtZTogLXpmLWdldC1icC12YWwoJG1hcCwgJG5hbWUpO1xuICAgIH1cblxuICAgIC8vIGJyZWFrcG9pbnQgdmFsdWVcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJC16Zi1mb250LXN0YWNrOiAoXG4gICdnZW9yZ2lhJzogKEdlb3JnaWEsIFwiVVJXIEJvb2ttYW4gTFwiLCBzZXJpZiksXG4gICdoZWx2ZXRpY2EnOiAoSGVsdmV0aWNhLCBBcmlhbCwgXCJOaW1idXMgU2FucyBMXCIsIHNhbnMtc2VyaWYpLFxuICAnbHVjaWRhLWdyYW5kZSc6IChcIkx1Y2lkYSBHcmFuZGVcIiwgXCJMdWNpZGEgU2FucyBVbmljb2RlXCIsIFwiQml0c3RyZWFtIFZlcmEgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbiAgJ21vbm9zcGFjZSc6IChcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIFwiTmltYnVzIFNhbnMgTFwiLCBtb25vc3BhY2UpLFxuICAnc3lzdGVtJzogKC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiT3h5Z2VuXCIsIFwiVWJ1bnR1XCIsIFwiQ2FudGFyZWxsXCIsIFwiRmlyYSBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiksXG4gICd2ZXJkYW5hJzogKFZlcmRhbmEsIEdlbmV2YSwgXCJEZWphVnUgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbik7XG5cbi8vLyBSZXR1cm4gYSBmb250IHN0YWNrIGxpc3QgZnJvbSBhIG1hcC4gRXF1aXZhbGVudCB0byBgbWFwLXNhZmUtZ2V0KCRuYW1lLCAkLXpmLWZvbnQtc3RhY2spYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RhY2sgLSBOYW1lIG9mIHRoZSBmb250IHN0YWNrLlxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIFskLXpmLWZvbnQtc3RhY2tdIC0gTWFwIG9mIGZvbnQgc3RhY2tzIHRvIHJldHJpZXZlIGEgbGlzdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEZvdW5kIGZvbnQgc3RhY2suXG5AZnVuY3Rpb24gZm9udC1zdGFjaygkc3RhY2ssICRtYXA6ICQtemYtZm9udC1zdGFjaykge1xuICBAcmV0dXJuIG1hcC1zYWZlLWdldCgkbWFwLCAkc3RhY2spO1xufVxuIiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4gKiBWZXJzaW9uIDYuNC4xXG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcbiAqL1xuXG4vLyBEZXBlbmRlbmNpZXNcbkBpbXBvcnQgJy4uL192ZW5kb3Ivbm9ybWFsaXplLXNjc3Mvc2Fzcy9ub3JtYWxpemUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL21pc3NpbmctZGVwZW5kZW5jaWVzJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy90cnVlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3B1cmdlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlbW92ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZXBsYWNlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3RvLWxpc3QnO1xuXG4vLyBTZXR0aW5nc1xuLy8gaW1wb3J0IHlvdXIgb3duIGBzZXR0aW5nc2AgaGVyZSBvclxuLy8gaW1wb3J0IGFuZCBtb2RpZnkgdGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhyb3VnaFxuLy8gQGltcG9ydCAnc2V0dGluZ3Mvc2V0dGluZ3MnO1xuXG4vLyBTYXNzIHV0aWxpdGllc1xuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8gR2xvYmFsIHZhcmlhYmxlcyBhbmQgc3R5bGVzXG5AaW1wb3J0ICdnbG9iYWwnO1xuXG4vLyBDb21wb25lbnRzXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xuQGltcG9ydCAneHktZ3JpZC94eS1ncmlkJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICdmb3Jtcy9mb3Jtcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xuQGltcG9ydCAnY29tcG9uZW50cy9mbG9hdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbi1tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2xvc2UtYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9sYWJlbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lZGlhLW9iamVjdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51LWljb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9vZmYtY2FudmFzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmV2ZWFsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3RpY2t5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9wLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Rvb2x0aXAnO1xuQGltcG9ydCAncHJvdG90eXBlL3Byb3RvdHlwZSc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcoXG4gICRmbGV4OiB0cnVlLFxuICAkcHJvdG90eXBlOiBmYWxzZVxuKSB7XG4gIEBpZiAkZmxleCB7XG4gICAgJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XG4gIEBpZiBub3QgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICR4eS1ncmlkIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm1zO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYmFkZ2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhbGxvdXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FyZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWxhYmVsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b3AtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xuXG4gIEBpZiAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7XG4gIH1cblxuICBAaWYgJHByb3RvdHlwZSB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcztcbiAgfVxufVxuIiwiQGltcG9ydCAnbm9ybWFsaXplL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdub3JtYWxpemUvdmVydGljYWwtcmh5dGhtJztcbkBpbXBvcnQgJ25vcm1hbGl6ZS9ub3JtYWxpemUtbWl4aW4nO1xuIiwiLy9cbi8vIFZhcmlhYmxlc1xuLy9cbi8vIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWVzIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxlcyBpbiB5b3VyIFNhc3Ncbi8vIGJlZm9yZSBpbXBvcnRpbmcgdGhlIG5vcm1hbGl6ZS1zY3NzIGxpYnJhcnkuXG5cbi8vIFRoZSBmb250IHNpemUgc2V0IG9uIHRoZSByb290IGh0bWwgZWxlbWVudC5cbiRiYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8gVGhlIGJhc2UgbGluZSBoZWlnaHQgZGV0ZXJtaW5lcyB0aGUgYmFzaWMgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0uXG4kYmFzZS1saW5lLWhlaWdodDogMjRweCAhZGVmYXVsdDtcblxuLy8gVGhlIGxlbmd0aCB1bml0IGluIHdoaWNoIHRvIG91dHB1dCB2ZXJ0aWNhbCByaHl0aG0gdmFsdWVzLlxuLy8gU3VwcG9ydGVkIHZhbHVlczogcHgsIGVtLCByZW0uXG4kYmFzZS11bml0OiAnZW0nICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IGZhbWlseS5cbiRiYXNlLWZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9udCBzaXplcyBmb3IgaDEtaDYuXG4kaDEtZm9udC1zaXplOiAyICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGgyLWZvbnQtc2l6ZTogMS41ICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoMy1mb250LXNpemU6IDEuMTcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDQtZm9udC1zaXplOiAxICAgICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGg1LWZvbnQtc2l6ZTogMC44MyAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoNi1mb250LXNpemU6IDAuNjcgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBhbW91bnQgbGlzdHMgYW5kIGJsb2NrcXVvdGVzIGFyZSBpbmRlbnRlZC5cbiRpbmRlbnQtYW1vdW50OiA0MHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIGNvbnRyb2xzIHdoZXRoZXIgbm9ybWFsaXplLXNjc3Mgd2lsbCBvdXRwdXRcbi8vIGZvbnQtc2l6ZXMsIGxpbmUtaGVpZ2h0cyBhbmQgYmxvY2stbGV2ZWwgdG9wL2JvdHRvbSBtYXJnaW5zIHRoYXQgZm9ybSBhIGJhc2ljXG4vLyB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHBhZ2UsIHdoaWNoIGRpZmZlcnMgZnJvbSB0aGUgb3JpZ2luYWwgTm9ybWFsaXplLmNzcy5cbi8vIEhvd2V2ZXIsIGNoYW5naW5nIGFueSBvZiB0aGUgdmFyaWFibGVzIGFib3ZlIHdpbGwgY2F1c2Vcbi8vICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHRvIGJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUuXG4kbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvL1xuLy8gVmVydGljYWwgUmh5dGhtXG4vL1xuLy8gVGhpcyBpcyB0aGUgbWluaW1hbCBhbW91bnQgb2YgY29kZSBuZWVkZWQgdG8gY3JlYXRlIHZlcnRpY2FsIHJoeXRobSBpbiBvdXJcbi8vIENTUy4gSWYgeW91IGFyZSBsb29raW5nIGZvciBhIHJvYnVzdCBzb2x1dGlvbiwgbG9vayBhdCB0aGUgZXhjZWxsZW50IFR5cGV5XG4vLyBsaWJyYXJ5LiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcHRhcmFudG8vdHlwZXlcblxuQGZ1bmN0aW9uIG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG86ICRiYXNlLWZvbnQtc2l6ZSwgJHVuaXQ6ICRiYXNlLXVuaXQpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSBweCB7XG4gICAgQGVycm9yIFwiVGhlIG5vcm1hbGl6ZSB2ZXJ0aWNhbC1yaHl0aG0gbW9kdWxlIG9ubHkgc3VwcG9ydHMgcHggaW5wdXRzLiBUaGUgdHlwZXkgbGlicmFyeSBpcyBiZXR0ZXIuXCI7XG4gIH1cbiAgQGlmICR1bml0ID09IHJlbSB7XG4gICAgQHJldHVybiAoJHZhbHVlIC8gJGJhc2UtZm9udC1zaXplKSAqIDFyZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gZW0ge1xuICAgIEByZXR1cm4gKCR2YWx1ZSAvICRyZWxhdGl2ZS10bykgKiAxZW07XG4gIH1cbiAgQGVsc2UgeyAvLyAkdW5pdCA9PSBweFxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG59XG5cbkBtaXhpbiBub3JtYWxpemUtZm9udC1zaXplKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncHgnIHtcbiAgICBAZXJyb3IgXCJub3JtYWxpemUtZm9udC1zaXplKCkgb25seSBzdXBwb3J0cyBweCBpbnB1dHMuIFRoZSB0eXBleSBsaWJyYXJ5IGlzIGJldHRlci5cIjtcbiAgfVxuICBmb250LXNpemU6IG5vcm1hbGl6ZS1yaHl0aG0oJHZhbHVlLCAkcmVsYXRpdmUtdG8pO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplLXJoeXRobSgkcHJvcGVydHksICR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XG4gICR2YWx1ZS1saXN0OiAkdmFsdWVzO1xuICAkc2VwOiBzcGFjZTtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlcykgPT0gJ2xpc3QnIHtcbiAgICAkc2VwOiBsaXN0LXNlcGFyYXRvcigkdmFsdWVzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHZhbHVlLWxpc3Q6IGFwcGVuZCgoKSwgJHZhbHVlcyk7XG4gIH1cblxuICAkbm9ybWFsaXplZC12YWx1ZXM6ICgpO1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlLWxpc3Qge1xuICAgIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAkdmFsdWUgIT0gMCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqIG5vcm1hbGl6ZS1yaHl0aG0oJGJhc2UtbGluZS1oZWlnaHQsICRyZWxhdGl2ZS10byk7XG4gICAgfVxuICAgICRub3JtYWxpemVkLXZhbHVlczogYXBwZW5kKCRub3JtYWxpemVkLXZhbHVlcywgJHZhbHVlLCAkc2VwKTtcbiAgfVxuICAjeyRwcm9wZXJ0eX06ICRub3JtYWxpemVkLXZhbHVlcztcbn1cblxuQG1peGluIG5vcm1hbGl6ZS1tYXJnaW4oJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShtYXJnaW4sICR2YWx1ZXMsICRyZWxhdGl2ZS10byk7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtbGluZS1oZWlnaHQoJGZvbnQtc2l6ZSwgJG1pbi1saW5lLXBhZGRpbmc6IDJweCkge1xuICAkbGluZXM6IGNlaWwoJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KTtcbiAgLy8gSWYgbGluZXMgYXJlIGNyYW1wZWQgaW5jbHVkZSBzb21lIGV4dHJhIGxlYWRpbmcuXG4gIEBpZiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplKSA8ICgkbWluLWxpbmUtcGFkZGluZyAqIDIpIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIDE7XG4gIH1cbiAgQGluY2x1ZGUgbm9ybWFsaXplLXJoeXRobShsaW5lLWhlaWdodCwgJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cbiIsIi8vIEhlbHBlciBmdW5jdGlvbiBmb3IgdGhlIG5vcm1hbGl6ZSgpIG1peGluLlxuQGZ1bmN0aW9uIF9ub3JtYWxpemUtaW5jbHVkZSgkc2VjdGlvbiwgJGV4Y2x1ZGU6IG51bGwpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBuZWVkZWQgYnkgdGhpcyBmdW5jdGlvbi5cbiAgQGlmIG5vdCBnbG9iYWxfdmFyaWFibGVfZXhpc3RzKF9ub3JtYWxpemUtaW5jbHVkZSkge1xuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6ICgpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogKCkgIWdsb2JhbDtcbiAgfVxuICAvLyBTaW5jZSB3ZSBhcmUgZ2l2ZW4gMiBwYXJhbWV0ZXJzLCBzZXQgdGhlIGdsb2JhbCB2YXJpYWJsZXMuXG4gIEBpZiAkZXhjbHVkZSAhPSBudWxsIHtcbiAgICAkaW5jbHVkZTogJHNlY3Rpb247XG4gICAgLy8gU2FzcyBkb2Vzbid0IGhhdmUgc3RhdGljIHZhcmlhYmxlcywgc28gdGhlIHdvcmstYXJvdW5kIGlzIHRvIHN0dWZmIHRoZXNlXG4gICAgLy8gdmFsdWVzIGludG8gZ2xvYmFsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gYWNjZXNzIHRoZW0gaW4gZnV0dXJlIGNhbGxzLlxuICAgICRfbm9ybWFsaXplLWluY2x1ZGU6IGlmKHR5cGUtb2YoJGluY2x1ZGUpID09ICdsaXN0JywgJGluY2x1ZGUsICgkaW5jbHVkZSkpICFnbG9iYWw7XG4gICAgJF9ub3JtYWxpemUtZXhjbHVkZTogaWYodHlwZS1vZigkZXhjbHVkZSkgPT0gJ2xpc3QnLCAkZXhjbHVkZSwgKCRleGNsdWRlKSkgIWdsb2JhbDtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiAkc2VjdGlvbiBpcyBpbiB0aGUgJGluY2x1ZGUgbGlzdC5cbiAgQGlmIGluZGV4KCRfbm9ybWFsaXplLWluY2x1ZGUsICRzZWN0aW9uKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmICRpbmNsdWRlIGlzIHNldCB0byAoYWxsKSwgbWFrZSBzdXJlICRzZWN0aW9uIGlzIG5vdCBpbiAkZXhjbHVkZS5cbiAgQGVsc2UgaWYgbm90IGluZGV4KCRfbm9ybWFsaXplLWV4Y2x1ZGUsICRzZWN0aW9uKSBhbmQgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgYWxsKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbkBtaXhpbiBub3JtYWxpemUoJGluY2x1ZGU6IChhbGwpLCAkZXhjbHVkZTogKCkpIHtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGVscGVyIGZ1bmN0aW9uIGJ5IHBhc3NpbmcgaXQgdGhpcyBtaXhpbidzIHBhcmFtZXRlcnMuXG4gICRpbml0OiBfbm9ybWFsaXplLWluY2x1ZGUoJGluY2x1ZGUsICRleGNsdWRlKTtcblxuICAvLyBJZiB3ZSd2ZSBjdXN0b21pemVkIGFueSBmb250IHZhcmlhYmxlcywgd2UnbGwgbmVlZCBleHRyYSBwcm9wZXJ0aWVzLlxuICBAaWYgJGJhc2UtZm9udC1zaXplICE9IDE2cHhcbiAgICBvciAkYmFzZS1saW5lLWhlaWdodCAhPSAyNHB4XG4gICAgb3IgJGJhc2UtdW5pdCAhPSAnZW0nXG4gICAgb3IgJGgxLWZvbnQtc2l6ZSAhPSAyICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgyLWZvbnQtc2l6ZSAhPSAxLjUgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgzLWZvbnQtc2l6ZSAhPSAxLjE3ICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg0LWZvbnQtc2l6ZSAhPSAxICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg1LWZvbnQtc2l6ZSAhPSAwLjgzICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg2LWZvbnQtc2l6ZSAhPSAwLjY3ICogJGJhc2UtZm9udC1zaXplIHtcbiAgICAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobTogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLyohIG5vcm1hbGl6ZS1zY3NzIHwgTUlUL0dQTHYyIExpY2Vuc2UgfCBiaXQubHkvbm9ybWFsaXplLXNjc3MgKi9cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGRvY3VtZW50KSB7XG4gICAgLyogRG9jdW1lbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgICAgKiAzLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXG4gICAgICogICAgSUUgb24gV2luZG93cyBQaG9uZSBhbmQgaW4gaU9TLlxuICAgICAqL1xuXG4gICAgaHRtbCB7XG4gICAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7IC8qIDEgKi9cbiAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgIC8vIENvcnJlY3Qgb2xkIGJyb3dzZXIgYnVnIHRoYXQgcHJldmVudGVkIGFjY2Vzc2libGUgcmVzaXppbmcgb2YgdGV4dFxuICAgICAgICAvLyB3aGVuIHJvb3QgZm9udC1zaXplIGlzIHNldCB3aXRoIHB4IG9yIGVtLlxuICAgICAgICBmb250LXNpemU6ICgkYmFzZS1mb250LXNpemUgLyAxNnB4KSAqIDEwMCU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemUpICogMWVtOyAvKiAyICovXG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAyICovXG4gICAgICB9XG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMyAqL1xuICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzZWN0aW9ucykge1xuICAgIC8qIFNlY3Rpb25zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgYm9keSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhcnRpY2xlLFxuICAgIGFzaWRlLFxuICAgIGZvb3RlcixcbiAgICBoZWFkZXIsXG4gICAgbmF2LFxuICAgIHNlY3Rpb24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAgICAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAvKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gKi9cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMS1mb250LXNpemUpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBtYXJnaW46IDAuNjdlbSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICBoMiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDItZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMi1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoMyB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDMtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMy1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg0LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDQtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNC1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg1LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDUtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDYtZm9udC1zaXplKTtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNi1mb250LXNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoZ3JvdXBpbmcpIHtcbiAgICAvKiBHcm91cGluZyBjb250ZW50XG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XG4gICAgICB9XG5cbiAgICAgIGRsLFxuICAgICAgb2wsXG4gICAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBUdXJuIG9mZiBtYXJnaW5zIG9uIG5lc3RlZCBsaXN0cy5cbiAgICAgICAqL1xuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgb2wsXG4gICAgICAgIHVsIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGQge1xuICAgICAgICBtYXJnaW46IDAgMCAwICRpbmRlbnQtYW1vdW50O1xuICAgICAgfVxuXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBmaWdjYXB0aW9uLFxuICAgIGZpZ3VyZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXG4gICAgICovXG5cbiAgICBmaWd1cmUge1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxICRpbmRlbnQtYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbWFyZ2luOiAxZW0gJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKi9cblxuICAgIGhyIHtcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gICAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gICAgICovXG5cbiAgICBtYWluIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgcCxcbiAgICAgIHByZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIHByZSB7XG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShsaW5rcykge1xuICAgIC8qIExpbmtzXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICAgKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXG4gICAgICovXG5cbiAgICBhIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiAxICovXG4gICAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXG4gICAgICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICovXG5cbiAgICBhOmFjdGl2ZSxcbiAgICBhOmhvdmVyIHtcbiAgICAgIG91dGxpbmUtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZSh0ZXh0KSB7XG4gICAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICAgICAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBhYmJyW3RpdGxlXSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gICAgICovXG5cbiAgICBiLFxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYixcbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAgICAgKi9cblxuICAgIGNvZGUsXG4gICAga2JkLFxuICAgIHNhbXAge1xuICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gICAgICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cbiAgICAgKi9cblxuICAgIGRmbiB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICAgICAqL1xuXG4gICAgbWFyayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICAgICAgY29sb3I6ICMwMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzbWFsbCB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAgICAgKiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdWIsXG4gICAgc3VwIHtcbiAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgc3ViIHtcbiAgICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgICB9XG5cbiAgICBzdXAge1xuICAgICAgdG9wOiAtMC41ZW07XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShlbWJlZGRlZCkge1xuICAgIC8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBhdWRpbyxcbiAgICB2aWRlbyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAgICAgKi9cblxuICAgIGF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgICAgKi9cblxuICAgIHN2Zzpub3QoOnJvb3QpIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShmb3Jtcykge1xuICAgIC8qIEZvcm1zXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qKlxuICAgICAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGlucHV0LFxuICAgIG9wdGdyb3VwLFxuICAgIHNlbGVjdCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7IC8qIDEgKi9cbiAgICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICgkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICAgICAqL1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAgICAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBzZWxlY3QgeyAvKiAxICovXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAgICAgKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGJ1dHRvbixcbiAgICBodG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG4gICAgW3R5cGU9XCJyZXNldFwiXSxcbiAgICBbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICAgIH1cblxuICAgIGJ1dHRvbixcbiAgICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgICBbdHlwZT1cInJlc2V0XCJdLFxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICAgICAgICovXG5cbiAgICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICAgICAgICovXG5cbiAgICAgICY6LW1vei1mb2N1c3Jpbmcge1xuICAgICAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAgICAgKi9cblxuICAgIGlucHV0IHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAgICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxuICAgICAqL1xuXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSxcbiAgICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gICAgICovXG5cbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gICAgICovXG5cbiAgICBbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cblxuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICAgICAgICovXG5cbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gICAgICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICAgICAqL1xuXG4gICAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICAgICAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgZmllbGRzZXQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gICAgICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICAgICAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgbGVnZW5kIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICAgIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgICAgIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgICAgIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICogMi4gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAgICAgKi9cblxuICAgIHByb2dyZXNzIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xuICAgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAgICAgKi9cblxuICAgIHRleHRhcmVhIHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfbm9ybWFsaXplLWluY2x1ZGUoaW50ZXJhY3RpdmUpIHtcbiAgICAvKiBJbnRlcmFjdGl2ZVxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cbiAgICAgKi9cblxuICAgIGRldGFpbHMge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICAgICAqL1xuXG4gICAgbWVudSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgLypcbiAgICAgICAgICogMS4gU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cbiAgICAgICAgICogMi4gU2V0IGNvbnNpc3RlbnQgc3BhY2UgZm9yIHRoZSBsaXN0IHN0eWxlIGltYWdlLlxuICAgICAgICAgKi9cblxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCk7IC8qIDEgKi9cbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7IC8qIDIgKi9cblxuICAgICAgICAvKipcbiAgICAgICAgICogVHVybiBvZmYgbWFyZ2lucyBvbiBuZXN0ZWQgbGlzdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIG1lbnUgJixcbiAgICAgICAgb2wgJixcbiAgICAgICAgdWwgJiB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShzY3JpcHRpbmcpIHtcbiAgICAvKiBTY3JpcHRpbmdcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gICAgICovXG5cbiAgICBjYW52YXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICAgICAqL1xuXG4gICAgdGVtcGxhdGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGhpZGRlbikge1xuICAgIC8qIEhpZGRlblxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC0uXG4gICAgICovXG5cbiAgICBbaGlkZGVuXSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vXG4vLy8gQ2hlY2tzIHdoZXRoZXIgYCRmdW5jdGlvbnNgIGV4aXN0IGluIGdsb2JhbCBzY29wZS5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdMaXN0fSAkZnVuY3Rpb25zIC0gbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfSBXaGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgbWlzc2luZyBkZXBlbmRlbmNpZXNcbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCRmdW5jdGlvbnMuLi4pIHtcbiAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiAoKTtcbiAgXG4gIEBlYWNoICRmdW5jdGlvbiBpbiAkZnVuY3Rpb25zIHtcbiAgICBAaWYgbm90IGZ1bmN0aW9uLWV4aXN0cygkZnVuY3Rpb24pIHtcbiAgICAgICRtaXNzaW5nLWRlcGVuZGVuY2llczogYXBwZW5kKCRtaXNzaW5nLWRlcGVuZGVuY2llcywgJGZ1bmN0aW9uLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIFxuICBAaWYgbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwIHtcbiAgICBAZXJyb3IgJ1VubWV0IGRlcGVuZGVuY2llcyEgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkOiAjeyRtaXNzaW5nLWRlcGVuZGVuY2llc30uJztcbiAgfVxuXG4gIEByZXR1cm4gbGVuZ3RoKCRtaXNzaW5nLWRlcGVuZGVuY2llcykgPiAwO1xufVxuIiwiLy8vXG4vLy8gUmV0dXJucyB0cnV0aGluZXNzIG9mIGAkdmFsdWVgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIHZhbHVlIHRvIGNoZWNrXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtaXMtdHJ1ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUgPT0gbnVsbCwgZmFsc2UsICR2YWx1ZSBhbmQgJHZhbHVlICE9IG51bGwgYW5kICR2YWx1ZSAhPSAnJyBhbmQgJHZhbHVlICE9ICgpKTtcbn1cbiIsIi8vLyBSZW1vdmVzIGFsbCBmYWxzZSBhbmQgbnVsbCB2YWx1ZXMgZnJvbSBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXB1cmdlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gbGlzdCB0byBwdXJnZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1wdXJnZShudWxsIGEgZmFsc2UgYilcbi8vLyAvLyBhIGJcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXB1cmdlKCRsaXN0KSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC10by1saXN0Jyk7XG4gIFxuICAkcmVzdWx0OiAoKTtcblxuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIHNsLWlzLXRydWUoJGl0ZW0pIHtcbiAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkaXRlbSwgbGlzdC1zZXBhcmF0b3IoJGxpc3QpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHJlc3VsdCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEBhbGlhcyBzbC1wdXJnZVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtY2xlYW4oJGxpc3QpIHtcbiAgQHJldHVybiBzbC1wdXJnZSgkbGlzdCk7XG59XG4iLCIvLy9cbi8vLyBSZW1vdmVzIHZhbHVlKHMpIGAkdmFsdWVgIGZyb20gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZW1vdmVcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZXBsYWNlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAgICAgLSBsaXN0IHRvIHVwZGF0ZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlICAgICAtIHZhbHVlIHRvIHJlbW92ZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZW1vdmUoYSBiIGMsIGEpXG4vLy8gLy8gYiBjXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLXJlcGxhY2UnKTtcblxuICBAcmV0dXJuIHNsLXJlcGxhY2UoJGxpc3QsICR2YWx1ZSwgbnVsbCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZW1vdmVcbi8vLyBAYWxpYXMgc2wtcmVtb3ZlXG4vLy9cblxuQGZ1bmN0aW9uIHNsLXdpdGhvdXQoJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKTtcbn1cbiIsIi8vL1xuLy8vIFJlcGxhY2VzIGAkb2xkYCBieSBgJG5ld2AgaW4gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZXBsYWNlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gdXBkYXRlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkb2xkICAgLSB2YWx1ZSB0byByZXBsYWNlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgLSBuZXcgdmFsdWUgZm9yICRvbGRcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgYiwgeilcbi8vLyAvLyBhIHogY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCB5LCB6KVxuLy8vIC8vIGEgYiBjXG4vLy8gXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLXJlcGxhY2UoJGxpc3QsICRvbGQsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtcHVyZ2UnLCAnc2wtdG8tbGlzdCcpO1xuXG4gICRydW5uaW5nOiB0cnVlO1xuXG4gIEB3aGlsZSAkcnVubmluZyB7XG4gICAgJGluZGV4OiBpbmRleCgkbGlzdCwgJG9sZCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAkcnVubmluZzogZmFsc2U7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKTtcbiAgICB9XG5cbiAgfVxuXG4gICRsaXN0OiBpZihzbC1pcy10cnVlKCR2YWx1ZSksICRsaXN0LCBzbC1wdXJnZSgkbGlzdCkpO1xuICBcbiAgQHJldHVybiBzbC10by1saXN0KCRsaXN0KTtcbn1cbiIsIi8vL1xuLy8vIENhc3RzIGAkdmFsdWVgIGludG8gYSBsaXN0LlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2FzdCB0byBsaXN0XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZXBhcmF0b3IgW3NwYWNlXSAtIHNlcGFyYXRvciB0byB1c2Vcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtdG8tbGlzdChhIGIgYywgY29tbWEpXG4vLy8gLy8gYSwgYiwgY1xuLy8vIFxuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXRvLWxpc3QoJHZhbHVlLCAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFsdWUpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJHZhbHVlLCAkc2VwYXJhdG9yKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vLyBAYWxpYXMgc2wtdG8tbGlzdFxuLy8vXG5cbkBmdW5jdGlvbiBzbC1saXN0aWZ5KCR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHZhbHVlKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgZm9yY2UtYXR0cmlidXRlLW5lc3RpbmcsIGZvcmNlLXBzZXVkby1uZXN0aW5nLCBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cbi8vLyBAdHlwZSBNYXBcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogIzE3NzliYSxcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcG9zaXRpb246IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gTmVzdGVkIG1hcmdpbiBmb3Igc3VibWVudS5cbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIENTUy4gQ2FuIGJlIGVpdGhlciBgbHRyYCBvciBgcnRsYC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xuXG5AaWYgbm90IG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgQGVycm9yICdJbiAkZm91bmRhdGlvbi1wYWxldHRlLCB5b3UgbXVzdCBoYXZlIGEgY29sb3IgbmFtZWQgXCJwcmltYXJ5XCIuJztcbn1cblxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIHRleHQgZGlyZWN0aW9uXG4kZ2xvYmFsLWxlZnQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCByaWdodCwgbGVmdCk7XG4kZ2xvYmFsLXJpZ2h0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgbGVmdCwgcmlnaHQpO1xuXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcbiRwcmltYXJ5LWNvbG9yOiBnZXQtY29sb3IocHJpbWFyeSk7XG4kc2Vjb25kYXJ5LWNvbG9yOiBnZXQtY29sb3Ioc2Vjb25kYXJ5KTtcbiRzdWNjZXNzLWNvbG9yOiBnZXQtY29sb3Ioc3VjY2Vzcyk7XG4kd2FybmluZy1jb2xvcjogZ2V0LWNvbG9yKHdhcm5pbmcpO1xuJGFsZXJ0LWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzIHtcbiAgQGluY2x1ZGUgLXpmLW5vcm1hbGl6ZTtcblxuICAvLyBUaGVzZSBzdHlsZXMgYXJlIGFwcGxpZWQgdG8gYSA8bWV0YT4gdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHRcbiAgLmZvdW5kYXRpb24tbXEge1xuICAgIGZvbnQtZmFtaWx5OiAnI3stemYtYnAtc2VyaWFsaXplKCRicmVha3BvaW50cyl9JztcbiAgfVxuXG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXG4gICosXG4gICo6OmJlZm9yZSxcbiAgKjo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBEZWZhdWx0IGJvZHkgc3R5bGVzXG4gIGJvZHkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG5cbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICAvLyBHZXQgcmlkIG9mIGdhcCB1bmRlciBpbWFnZXMgYnkgbWFraW5nIHRoZW0gZGlzcGxheTogaW5saW5lLWJsb2NrOyBieSBkZWZhdWx0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcbiAgc2VsZWN0IHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gU3R5bGVzIEdvb2dsZSBNYXBzIGFuZCBNYXBRdWVzdCBlbWJlZHMgcHJvcGVybHlcbiAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1pZHNcbiAgLm1hcF9jYW52YXMsXG4gIC5tcWEtZGlzcGxheSB7XG4gICAgaW1nLFxuICAgIGVtYmVkLFxuICAgIG9iamVjdCB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCA8YnV0dG9uPiBzdHlsZXMgY3JlYXRlZCBieSBtb3N0IGJyb3dzZXJzXG4gIGJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuXG4gICAgcGFkZGluZzogMDtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICAvLyBQcmV2ZW50IHRleHQgb3ZlcmZsb3cgb24gcHJlXG4gIHByZSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBNYWtlIHJlc2V0IGluaGVyaXQgZm9udC1mYW1pbHkgaW5zdGVhZCBvZiBzZXR0aW5ncyBzYW5zLXNlcmlmXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcbiAgLmlzLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIExvYWRzIG5vcm1hbGl6ZS5jc3MuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gLXpmLW5vcm1hbGl6ZSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZSgpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSByb3cuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgZGVmYXVsdCBjb2x1bW4gY291bnQgb2YgYSBncmlkLiBDaGFuZ2luZyB0aGlzIHZhbHVlIGFmZmVjdHMgdGhlIGxvZ2ljIG9mIHRoZSBncmlkIG1peGlucywgYW5kIHRoZSBudW1iZXIgb2YgQ1NTIGNsYXNzZXMgb3V0cHV0LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMiAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiBjb2x1bW5zIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4vLy8gQHNpbmNlIDYuMS4wXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXG4gIHNtYWxsOiAyMHB4LFxuICBtZWRpdW06IDMwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgd2lsbCBhbGlnbiB0byB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgcm93LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2VsZWN0b3IgdXNlZCBmb3IgYW4gYWxpYXMgb2YgY29sdW1uICh3aXRoIEBleHRlbmQpLiBJZiBgZmFsc2VgLCBubyBhbGlhcyBpcyBjcmVhdGVkLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucycgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgaGlnaGVzdCBudW1iZXIgb2YgYC54LXVwYCBjbGFzc2VzIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBibG9jayBncmlkIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWwgdmFsdWUgdG8gc3RvcmUgdGhlIGVuZCBjb2x1bW4gZmxvYXQgZGlyZWN0aW9uXG4kLXpmLWVuZC1mbG9hdDogaWYoJGdyaWQtY29sdW1uLWFsaWduLWVkZ2UsICRnbG9iYWwtcmlnaHQsICRnbG9iYWwtbGVmdCk7XG5cbkBpbXBvcnQgJ3Jvdyc7XG5AaW1wb3J0ICdjb2x1bW4nO1xuQGltcG9ydCAnc2l6ZSc7XG5AaW1wb3J0ICdwb3NpdGlvbic7XG5AaW1wb3J0ICdndXR0ZXInO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG5AaW1wb3J0ICdsYXlvdXQnO1xuXG5AaW1wb3J0ICdmbGV4LWdyaWQnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiBjb2x1bW5zIGRlZmluZWQgaW5zaWRlIHRoaXMgbWl4aW4gdG8gdXNlIGEgZGlmZmVyZW50IGNvbHVtbiBjb3VudC5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHJvb3QgW2ZhbHNlXVxuLy8vICAgSWYgYGZhbHNlYCwgc2VsZWN0b3JzIGluc2lkZSB0aGlzIG1peGluIHdpbGwgbmVzdCBpbnNpZGUgdGhlIHBhcmVudCBzZWxlY3Rvci5cbi8vLyAgIElmIGB0cnVlYCwgc2VsZWN0b3JzIHdpbGwgbm90IG5lc3QuXG5AbWl4aW4gZ3JpZC1jb250ZXh0KFxuICAkY29sdW1ucyxcbiAgJHJvb3Q6IGZhbHNlXG4pIHtcbiAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY29sdW1uIGNvdW50IHNvIGl0IGNhbiBiZSByZS1zZXQgbGF0ZXJcbiAgJG9sZC1ncmlkLWNvbHVtbi1jb3VudDogJGdyaWQtY29sdW1uLWNvdW50O1xuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRjb2x1bW5zICFnbG9iYWw7XG5cbiAgQGlmICRyb290IHtcbiAgICBAYXQtcm9vdCB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgb2xkIGNvbHVtbiBjb3VudFxuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRvbGQtZ3JpZC1jb2x1bW4tY291bnQgIWdsb2JhbDtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIHJvdy5cbi8vLyBAY29udGVudFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIENvbHVtbiBjb3VudCBmb3IgdGhpcyByb3cuIGBudWxsYCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb2x1bW4gY291bnQuXG4vLy8gQHBhcmFtIHtLZXl3b3Jkc30gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93KFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY2Y6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRjZiB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEludmVydHMgdGhlIG1hcmdpbnMgb2YgYSByb3cgdG8gbmVzdCBpdCBpbnNpZGUgb2YgYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtcm93LW5lc3QoJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgJG1hcmdpbjogcmVtLWNhbGMoLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICQtemYtc2l6ZSkpIC8gMiAqIC0xO1xuXG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXQgYSBncmlkIHJvdyBzaXplXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG5AbWl4aW4gZ3JpZC1yb3ctc2l6ZSgkc2l6ZTogJGdyaWQtcm93LXdpZHRoKSB7XG4gIEBpZiAkc2l6ZSA9PSBleHBhbmQge1xuICAgICRzaXplOiBub25lO1xuICB9XG5cbiAgbWF4LXdpZHRoOiAkc2l6ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgbGlzdCBvZiB0aGUgZm9ybWF0IFwieCBvZiB5XCIgKHdpdGhvdXQgcXVvdGVzKSB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gICR3aWR0aDogMCU7XG5cbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIGFuZCBjb2x1bW4gY291bnRzXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJyB7XG4gICAgQGlmIHVuaXQoJGNvbHVtbnMpID09ICclJyB7XG4gICAgICAkd2lkdGg6ICRjb2x1bW5zO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY29sdW1ucyA8IDEge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1uLWNvdW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgZXhwcmVzc2lvbnNcbiAgQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcbiAgICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSAhPSAzIHtcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgdGhlIGZvcm1hdCBcIm4gb2YgblwiLic7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZShudGgoJGNvbHVtbnMsIDEpIC8gbnRoKCRjb2x1bW5zLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG5cbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAvLyBMYXN0IGNvbHVtbiBhbGlnbm1lbnRcbiAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4gcm93LiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIGFkZGluZyBgLnJvd2AgYW5kIGAuY29sdW1uYCB0byB0aGUgc2FtZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gV2lkdGggb2YgdGhlIGd1dHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNvbHVtbiByb3cuIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtcm93O1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gICYsXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxuQGZ1bmN0aW9uIGdyaWQtY29sKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgQHJldHVybiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBtaXhpbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcm93KClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1yb3dcbkBtaXhpbiBncmlkLWNvbC1yb3coXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KCRndXR0ZXJzKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgd2lkdGggb2YgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICB3aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tc2l6ZSgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tc2l6ZVxuQG1peGluIGdyaWQtY29sLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBEaXJlY3Rpb24gYW5kIGFtb3VudCB0byBtb3ZlLiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGUgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LiBTZXQgdG8gY2VudGVyIHRvIGNlbnRlciB0aGUgY29sdW1uLlxuQG1peGluIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbikge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09ICdudW1iZXInIHtcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdXcm9uZyBzeW50YXggZm9yIGdyaWQtY29sdW1uLXBvc2l0aW9uKCkuIEVudGVyIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbnVtYmVyLCBvciBjZW50ZXIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtblxuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRndXR0ZXIgW2F1dG9dXG4vLy8gICBTcGFjaW5nIGJldHdlZW4gY29sdW1ucywgYWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgc2luZ2xlIHZhbHVlIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoYXQgZXhhY3Qgc2l6ZS5cbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBndXR0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJGd1dHRlcnMgbWFwLlxuLy8vICAgLSBcImF1dG9cIiB3aWxsIG1ha2UgdGhlIGd1dHRlciByZXNwb25zaXZlLCB1c2luZyB0aGUgJGd1dHRlcnMgbWFwIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJGd1dHRlciwgJGd1dHRlcnMpIHtcbiAgICAkcGFkZGluZzogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxufVxuXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIGdyaWQtY29sdW1uLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xufVxuXG4vLy8gVW4tY29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmUtYWRkaW5nIHRoZSBwYWRkaW5nLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXIgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEB3YXJuICdUaGlzIG1peGluIGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGdyaWQtY29sdW1uLWd1dHRlcigpLiBncmlkLWNvbHVtbi11bmNvbGxhcHNlKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWd1dHRlclxuQG1peGluIGdyaWQtY29sLWd1dHRlcihcbiAgJGd1dHRlcjogYXV0byxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlciwgJGd1dHRlcnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tY29sbGFwc2UoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWNvbGxhcHNlXG5AbWl4aW4gZ3JpZC1jb2wtY29sbGFwc2Uge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1jb2xsYXBzZTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXVuY29sbGFwc2UoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVuY29sbGFwc2VcbkBtaXhpbiBncmlkLWNvbC11bmNvbGxhcHNlKCRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcbiAgQHdhcm4gJ1RoaXMgbWl4aW4gaXMgYmVpbmcgcmVwbGFjZWQgYnkgZ3JpZC1jb2wtZ3V0dGVyKCkuIGdyaWQtY29sLXVuY29sbGFwc2UoKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5jb2xsYXBzZSgkZ3V0dGVyKTtcbn1cblxuLy8vIFNldHMgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMgdG8gbWF0Y2ggZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRtYXJnaW4gW2F1dG9dXG4vLy8gICBUaGUgYm90dG9tIG1hcmdpbiBvbiBncmlkIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRtYXJnaW5zIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBtYXJnaW4gcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRtYXJnaW5zIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFyZ2lucyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1tYXJnaW4gKFxuICAkbWFyZ2luOiBhdXRvLFxuICAkbWFyZ2luczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRtYXJnaW4sICRtYXJnaW5zKSB7XG4gICAgJG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gT3V0cHV0cyBDU1MgY2xhc3NlcyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gZm91bmRhdGlvbi1ncmlkKFxuICAkcm93OiAncm93JyxcbiAgJGNvbHVtbjogJ2NvbHVtbicsXG4gICRjb2x1bW4tcm93OiAnY29sdW1uLXJvdycsXG4gICRndXR0ZXI6ICdndXR0ZXInLFxuICAkcHVzaDogJ3B1c2gnLFxuICAkcHVsbDogJ3B1bGwnLFxuICAkY2VudGVyOiAnY2VudGVyZWQnLFxuICAkdW5jZW50ZXI6ICd1bmNlbnRlcmVkJyxcbiAgJGNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICAkdW5jb2xsYXBzZTogJ3VuY29sbGFwc2UnLFxuICAkb2Zmc2V0OiAnb2Zmc2V0JyxcbiAgJGVuZDogJ2VuZCcsXG4gICRleHBhbmRlZDogJ2V4cGFuZGVkJyxcbiAgJGJsb2NrOiAnYmxvY2snXG4pIHtcbiAgLy8gUm93XG4gIC4jeyRyb3d9IHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdztcblxuICAgIC8vIENvbGxhcHNpbmdcbiAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYgLiN7JHJvd30ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3JpZC1jb2x1bW4tZ3V0dGVyKTtcblxuICAgICAgJi4jeyRjb2xsYXBzZX0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIChmdWxsLXdpZHRoKSByb3dcbiAgICAmLiN7JGV4cGFuZGVkfSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguI3skZXhwYW5kZWR9KSAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJGdyaWQtY29sdW1uLWd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgLy8gU3RhdGljICh1bnJlc3BvbnNpdmUpIHJvdyBndXR0ZXJzXG4gICAgICAvL1xuICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHtcbiAgICAgICAgJi4jeyRndXR0ZXJ9LSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuI3skY29sdW1ufSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2w7XG5cbiAgICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICAgJi4jeyRlbmR9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC4jeyRyb3d9IC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgLy8gQ29sdW1uIHdpZHRoXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtc2l6ZSgkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvdXJjZSBvcmRlcmluZ1xuICAgICAgQGlmICRpIDwgJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygtJGkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skb2Zmc2V0fS0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLW9mZigkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgJy4jeyRjb2x1bW59Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuI3skZXhwYW5kZWR9LiN7JHJvd30gLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0uI3skcm93fSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LSN7JHVuY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjZW50ZXJ9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcyhjZW50ZXIpO1xuICAgIH1cblxuICAgIC8vIEd1dHRlciBhZGp1c3RtZW50XG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNlbnRlcn0sXG4gICAgLiN7JC16Zi1zaXplfS0jeyRwdXNofS0wLFxuICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tMCB7XG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC11bnBvcztcbiAgICB9XG4gIH1cblxuICAvLyBCbG9jayBncmlkIGNvbHVtbnNcbiAgLiN7JGNvbHVtbn0tI3skYmxvY2t9IHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICBAaWYgJGNvbHVtbiA9PSAnY29sdW1uJyBhbmQgaGFzLXZhbHVlKCRncmlkLWNvbHVtbi1hbGlhcykge1xuICAgIC4jeyRncmlkLWNvbHVtbi1hbGlhc30ge1xuICAgICAgLy8gc2Fzcy1saW50OmRpc2FibGUtYmxvY2sgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG4gICAgICBAZXh0ZW5kIC5jb2x1bW47XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jb2x1bW4nXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGd1dHRlclxuLy8vICAgVGhlIGd1dHRlciB0byBhcHBseSB0byBjaGlsZCBlbGVtZW50cy4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtICRncmlkLWNvbHVtbi1ndXR0ZXIgd2lsbCB1c2UgdGhlIHZhbHVlcyBpbiB0aGUgJGdyaWQtY29sdW1uLWd1dHRlciBtYXAsIGluY2x1ZGluZyBicmVha3BvaW50IHNpemVzLlxuLy8vICAgLSBBIGZpeGVkIG51bWVyaWMgdmFsdWUgd2lsbCBhcHBseSB0aGlzIGd1dHRlciB0byBhbGwgYnJlYWtwb2ludHMuXG5AbWl4aW4gZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY29sdW1uJyxcbiAgJGd1dHRlcjogbnVsbFxuKSB7XG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICAvLyBJZiBhICRndXR0ZXIgdmFsdWUgaXMgcGFzc2VkXG4gICAgQGlmKCRndXR0ZXIpIHtcbiAgICAgIC8vIEd1dHRlcnNcbiAgICAgIEBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdtYXAnIHtcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcbiAgICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJHZhbHVlKSAvIDI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XG4gICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoI3skbn1uKzEpIHtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBpdGVtcyB0aGF0IGFwcGVhciBpbiBlYWNoIHJvdy5cbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XG4gICAgQGlmICRpID09IDEge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxleC1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgZm9yIHRoaXMgcm93LiBJZiBzZXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCksIHRoZSBnbG9iYWwgY29sdW1uIGNvdW50IHdpbGwgYmUgdXNlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRiYXNlIFt0cnVlXSAtIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgYmFzaWMgc3R5bGVzIGZyb20gYmVpbmcgb3V0cHV0LiBVc2VmdWwgaWYgeW91J3JlIGNhbGxpbmcgdGhpcyBtaXhpbiBvbiB0aGUgc2FtZSBlbGVtZW50IHR3aWNlLCBhcyBpdCBwcmV2ZW50cyBkdXBsaWNhdGUgQ1NTIG91dHB1dC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyBtYXJnaW5zLCBpbiBjYXNlIHRoZSByb3cgaXMgbmVzdGVkLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGZsZXgtZ3JpZC1yb3coXG4gICRiZWhhdmlvcjogbnVsbCxcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiYXNlOiB0cnVlLFxuICAkd3JhcDogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAkbWFyZ2luOiBhdXRvO1xuICAkd3JhcDogaWYoJHdyYXAsIHdyYXAsIG5vd3JhcCk7XG5cbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIEBpZiAkYmFzZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyAkd3JhcDtcbiAgfVxuXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbnRleHQoJGNvbHVtbnMsICRiYXNlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGBmbGV4YCBwcm9wZXJ0eSBmb3IgYSBmbGV4IGdyaWQgY29sdW1uLiBJdCBhY2NlcHRzIGFsbCBvZiB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlIGJhc2ljIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgYWxvbmcgd2l0aCB0d28gZXh0cmFzOlxuLy8vICAgLSBgZXhwYW5kYCAodGhlIGRlZmF1bHQpIHdpbGwgbWFrZSB0aGUgY29sdW1uIGV4cGFuZCB0byBmaWxsIHNwYWNlLlxuLy8vICAgLSBgc2hyaW5rYCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBjb250cmFjdCwgc28gaXQgb25seSB0YWtlcyB1cCB0aGUgaG9yaXpvbnRhbCBzcGFjZSBpdCBuZWVkcy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi5cbkBmdW5jdGlvbiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zOiBleHBhbmQpIHtcbiAgJGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG5cbiAgQGlmICRjb2x1bW5zID09IHNocmluayB7XG4gICAgJGZsZXg6IDAgMCBhdXRvO1xuICB9XG4gIEBlbHNlIGlmICRjb2x1bW5zICE9IGV4cGFuZCB7XG4gICAgJGZsZXg6IDAgMCBncmlkLWNvbHVtbigkY29sdW1ucyk7XG4gIH1cblxuICBAcmV0dXJuICRmbGV4O1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbHVtbiBmb3IgYSBmbGV4IGdyaWQuIEJ5IGRlZmF1bHQsIHRoZSBjb2x1bW4gd2lsbCBzdHJldGNoIHRvIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIsIGJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggc2l6aW5nIGNsYXNzZXMsIG9yIGJ5IHVzaW5nIHRoZSBgdW5zdGFja2AgY2xhc3Mgb24gdGhlIHBhcmVudCBmbGV4IHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzIHdpZHRoLiBTZWUgdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXJgIG1peGluLlxuQG1peGluIGZsZXgtZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiBleHBhbmQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgLy8gQmFzZSBwcm9wZXJ0aWVzXG4gIEBpbmNsdWRlIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zKTtcblxuICAvLyBHdXR0ZXJzXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gIC8vIGZpeGVzIHJlY2VudCBDaHJvbWUgdmVyc2lvbiBub3QgbGltaXRpbmcgY2hpbGQgd2lkdGhcbiAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ5MzQ1ODYvd2hpdGUtc3BhY2Utbm93cmFwLWFuZC1mbGV4Ym94LWRpZC1ub3Qtd29yay1pbi1jaHJvbWVcbiAgQGlmICRjb2x1bW5zID09IGV4cGFuZCB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxuICBAaWYgJGNvbHVtbnMgIT0gZXhwYW5kIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xuICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgYmxvY2sgZ3JpZCBmb3IgYSBmbGV4IGdyaWQgcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gZGlzcGxheSBvbiBlYWNoIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gdXNlIHRvIHRhcmdldCBjb2x1bW5zIHdpdGhpbiB0aGUgcm93LlxuQG1peGluIGZsZXgtZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY29sdW1uJ1xuKSB7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgJHBjdDogcGVyY2VudGFnZSgxLyRuKTtcblxuICAgIGZsZXg6IDAgMCAkcGN0O1xuICAgIG1heC13aWR0aDogJHBjdDtcbiAgfVxufVxuXG4vLy8gQ2hhbmdlcyB0aGUgd2lkdGggZmxleCBncmlkIGNvbHVtbi5cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGZsZXgtZ3JpZC1zaXplKCRjb2x1bW5zOiBudWxsKSB7XG4gICRjb2x1bW5zOiAkY29sdW1ucyBvciBleHBhbmQ7XG5cbiAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkY29sdW1ucyk7XG5cbiAgLy8gbWF4LXdpZHRoIGZpeGVzIElFIDEwLzExIG5vdCByZXNwZWN0aW5nIHRoZSBmbGV4LWJhc2lzIHByb3BlcnR5XG4gIEBpZiAkY29sdW1ucyAhPSBleHBhbmQgYW5kICRjb2x1bW5zICE9IHNocmluayB7XG4gICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG4gIH1cbn1cblxuXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWdyaWQge1xuICAvLyBSb3dcbiAgLnJvdyB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdztcblxuICAgIC8vIE5lc3RpbmcgYmVoYXZpb3JcbiAgICAmIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdyhuZXN0LCAkYmFzZTogZmFsc2UpO1xuXG4gICAgICAmLmNvbGxhcHNlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCByb3dcbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcblxuICAgICAgLnJvdyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLmV4cGFuZGVkKSAucm93IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcbiAgICB9XG5cbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgID4gLmNvbHVtbiB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVuZG8gbmVnYXRpdmUgbWFyZ2luc1xuICAgIC8vIEZyb20gY29sbGFwc2VkIGNoaWxkXG4gICAgJi5pcy1jb2xsYXBzZS1jaGlsZCxcbiAgICAmLmNvbGxhcHNlID4gLmNvbHVtbiA+IC5yb3cge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29sdW1uXG4gIC5jb2x1bW4ge1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW47XG4gIH1cblxuICAvLyBDb2x1bW4gcm93XG4gIC8vIFRoZSBkb3VibGUgLnJvdyBjbGFzcyBpcyBuZWVkZWQgdG8gYnVtcCB1cCB0aGUgc3BlY2lmaWNpdHlcbiAgLmNvbHVtbi5yb3cucm93IHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC8vIFRvIHByb3Blcmx5IG5lc3QgYSBjb2x1bW4gcm93LCBwYWRkaW5nIGFuZCBtYXJnaW4gaXMgcmVtb3ZlZFxuICAucm93IC5jb2x1bW4ucm93LnJvdyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRpfSB7XG4gICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oJGkpO1xuICAgICAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRpKTtcbiAgICAgIH1cblxuICAgICAgLy8gT2Zmc2V0c1xuICAgICAgJG86ICRpIC0gMTtcblxuICAgICAgLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1vZmZzZXQoJG8pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsb2NrIGdyaWRcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWxheW91dCgkaSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAvLyBTaXppbmcgKGV4cGFuZClcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi1zaXplKSB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tZXhwYW5kIHtcbiAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQXV0by1zdGFja2luZy91bnN0YWNraW5nXG4gICAgICBAYXQtcm9vdCAod2l0aG91dDogbWVkaWEpIHtcbiAgICAgICAgLnJvdy4jeyQtemYtc2l6ZX0tdW5zdGFjayB7XG4gICAgICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oMTAwJSk7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi1zaXplKSB7XG4gICAgICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIGNvbGxhcHNpbmdcbiAgICAuI3skLXpmLXNpemV9LWNvbGxhcHNlIHtcbiAgICAgID4gLmNvbHVtbiB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS11bmNvbGxhcHNlIHtcbiAgICAgID4gLmNvbHVtbiB7IEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkLXpmLXNpemUpOyB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2l6aW5nIChzaHJpbmspXG4gIC5zaHJpbmsge1xuICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oc2hyaW5rKTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvLyBCbG9jayBncmlkIGNvbHVtbnNcbiAgLmNvbHVtbi1ibG9jayB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xuICB9XG5cbiAgLmNvbHVtbnMge1xuICAgIEBleHRlbmQgLmNvbHVtbjsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBwbGFjZWhvbGRlci1pbi1leHRlbmRcblxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBFbmFibGVzIHRoZSBYWSBncmlkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiR4eS1ncmlkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSBncmlkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkLlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIG1hcmdpbiBiZXR3ZWVuIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgbWFyZ2luIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIGluIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgcGFkZGluZyBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyB0byB1c2Ugd2hlbiBwYWRkaW5nIHRoZSBncmlkLWNvbnRhaW5lci5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMgIWRlZmF1bHQ7XG5cblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIHRvIGFwcGx5IHBhZGRpbmcgdG8gYSBncmlkIGNvbnRhaW5lclxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29udGFpbmVyLW1heDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjZWxscyBpbiBhIGJsb2NrIGdyaWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbkBpbXBvcnQgJ2d1dHRlcnMnO1xuQGltcG9ydCAnZ3JpZCc7XG5AaW1wb3J0ICdjZWxsJztcbkBpbXBvcnQgJ2ZyYW1lJztcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcbkBpbXBvcnQgJ2xheW91dCc7XG5AaW1wb3J0ICdjb2xsYXBzZSc7XG5AaW1wb3J0ICdjbGFzc2VzJztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZSBndXR0ZXJzIGZvciBhIGNlbGwvY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBlaXRoZXIgbWFyZ2luIG9yIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZWdhdGl2ZSBbZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgZ3V0dGVyIGFzIGEgbmVnYXRpdmUgdmFsdWUuIENvbW1vbmx5IHVzZWQgZm9yIG5lc3RlZCBncmlkcy5cbkBtaXhpbiB4eS1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbmVnYXRpdmU6IGZhbHNlXG4pIHtcbiAgJG9wZXJhdG9yOiBpZigkbmVnYXRpdmUsICctJywgJycpO1xuXG4gIC8vIElmIHdlIGhhdmUgZGVjbGFyZWQgbmVnYXRpdmUgZ3V0dGVycywgZm9yY2UgdHlwZSB0byBgbWFyZ2luLlxuICAkZ3V0dGVyLXR5cGU6IGlmKCRuZWdhdGl2ZSwgJ21hcmdpbicsICRndXR0ZXItdHlwZSk7XG5cbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cbiAgQGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRndXR0ZXJzKSB7XG4gICAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XG5cbiAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiAjeyRvcGVyYXRvcn0kZ3V0dGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZWlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAvIDI7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiAjeyRvcGVyYXRvcn0kZ3V0dGVyO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhIG1heCB3aWR0aCBjb250YWluZXIsIGRlc2lnbmVkIHRvIGhvdXNlIHlvdXIgZ3JpZCBjb250ZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJGdyaWQtY29udGFpbmVyXSAtIGEgd2lkdGggdG8gbGltaXQgdGhlIGNvbnRhaW5lciB0by5cbkBtaXhpbiB4eS1ncmlkLWNvbnRhaW5lcihcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXJcbikge1xuICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi8vLyBBZGQgcGFkZGluZyB0byB5b3VyIGNvbnRhaW5lciwgdXAgdG8gYSBwYXJ0aWN1bGFyIHNpemVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRncmlkLWNvbnRhaW5lcl0gLSBhIHdpZHRoIHRvIGxpbWl0IHRoZSBjb250YWluZXIgdG8uXG5AbWl4aW4geHktZ3JpZC1jb250YWluZXItcGFkZGluZyhcbiAgJHBhZGRpbmc6ICRncmlkLWNvbnRhaW5lci1wYWRkaW5nLFxuICAkbWF4OiAkZ3JpZC1jb250YWluZXItbWF4XG4pIHtcbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cbiAgQGlmICh0eXBlLW9mKCRwYWRkaW5nKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRwYWRkaW5nKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUgLyAyKTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUgLyAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2VpZiAodHlwZS1vZigkcGFkZGluZykgPT0gJ251bWJlcicpIHtcbiAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKCRwYWRkaW5nKSAvIDI7XG4gICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoJHBhZGRpbmcpIC8gMjtcbiAgfVxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtYXgpIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgeW91ciBmbGV4IGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBJZiB0aGUgY2VsbHMgd2l0aGluIHNob3VsZCB3cmFwIG9yIG5vdC5cbkBtaXhpbiB4eS1ncmlkKFxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxuICAkd3JhcDogdHJ1ZVxuKSB7XG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6ICRkaXJlY3Rpb24gJHdyYXA7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2Ugc2l6ZSBvZiBhIGNlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkc2l6ZSBbJGdyaWQtY29sdW1uc10gLSBTaXplIHRvIG1ha2UgdGhlIGNlbGwuIFlvdSBjYW4gcGFzcyBhIHZhbHVlIGluIG11bHRpcGxlIGZvcm1hdHMsIHN1Y2ggYXMgYDZgLCBgNTAlYCwgYDEgb2YgMiBvciAxLzMuXG5AZnVuY3Rpb24geHktY2VsbC1zaXplKFxuICAkc2l6ZTogJGdyaWQtY29sdW1uc1xuKSB7XG4gIC8vIFBhcnNpbmcgcGVyY2VudHMsIGRlY2ltYWxzLCBuIG9mIG4gYW5kIG51bWJlciBjb3VudHNcbiAgQGlmIHR5cGUtb2YoJHNpemUpID09ICdudW1iZXInIHtcbiAgICBAaWYgdW5pdCgkc2l6ZSkgPT0gJyUnIHtcbiAgICAgICRzaXplOiAkc2l6ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgJHNpemUgPCAxIHtcbiAgICAgICRzaXplOiBwZXJjZW50YWdlKCRzaXplKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHNpemU6IHBlcmNlbnRhZ2UoJHNpemUgLyAkZ3JpZC1jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgb3IgXCJuL25cIiBleHByZXNzaW9uc1xuICBAZWxzZWlmIHR5cGUtb2YoJHNpemUpID09ICdsaXN0JyB7XG4gICAgQGlmIGxlbmd0aCgkc2l6ZSkgIT0gMyB7XG4gICAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSB0aGUgZm9ybWF0IFwibiBvZiBuXCIgb3IgXCJuL25cIi4nO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkc2l6ZTogcGVyY2VudGFnZShudGgoJHNpemUsIDEpIC8gbnRoKCRzaXplLCAzKSk7XG4gICAgfVxuICB9XG4gIC8vIEFueXRoaW5nIGVsc2UgaXMgaW5jb3JyZWN0XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIiAvIFwibi9uXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHNpemU7XG59XG5cbi8vLyBTZXRzIGJhc2UgZmxleCBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gIG9yIGBzaHJpbmtgLlxuQG1peGluIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XG4gICAgLy8gVGhpcyBpcyB0aGUgYmFzZSBzdHlsZSwgYWxsIG90aGVycyBpbmhlcml0IGZyb20gaXRcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBtaW4taGVpZ2h0OiAwcHg7XG4gICAgbWluLXdpZHRoOiAwcHg7XG4gIH1cbiAgQGVsc2VpZiAoJHNpemUgPT0gJ2F1dG8nKSB7XG4gICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgfVxuICBAZWxzZWlmICgkc2l6ZSA9PSAnc2hyaW5rJykge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG59XG5cbi8vLyBSZXNldHMgYSBjZWxscyB3aWR0aCAob3IgaGVpZ2h0IGlmIHZlcnRpY2FsIGlzIHRydWUpIGFzIHdlbGwgYXMgc3RyaXBzIGl0cyBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtcmVzZXQoJHZlcnRpY2FsOiB0cnVlKSB7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB3aWR0aCwgaGVpZ2h0KTtcbiAgI3skZGlyZWN0aW9ufTogYXV0bztcbn1cblxuLy8gU2V0cyBvdXIgY2VsbCB3aWR0aHMgb3IgaGVpZ2h0cyBkZXBlbmRpbmcgb24gZ3V0dGVyIHR5cGUuXG5AbWl4aW4gLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJG1hcmdpbi1ndXR0ZXIsICR2ZXJ0aWNhbCkge1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcbiAgICAkdmFsOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAxMDAlLCBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcbiAgICAjeyRkaXJlY3Rpb259OiAkdmFsO1xuICB9XG4gIEBlbHNlaWYgKCRzaXplID09ICdhdXRvJykge1xuICAgICN7JGRpcmVjdGlvbn06IGF1dG87XG4gICAgJHZhbDogaWYoJG1hcmdpbi1ndXR0ZXIgPT0gMCwgMTAwJSwgY2FsYygxMDAlIC0gI3tyZW0tY2FsYygkbWFyZ2luLWd1dHRlcil9KSk7XG4gIH1cbiAgQGVsc2VpZiAoJHNpemUgPT0gJ3NocmluaycpIHtcbiAgICAjeyRkaXJlY3Rpb259OiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdmFsOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAje3h5LWNlbGwtc2l6ZSgkc2l6ZSl9LCBjYWxjKCN7eHktY2VsbC1zaXplKCRzaXplKX0gLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcbiAgICAjeyRkaXJlY3Rpb259OiAkdmFsO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgY2VsbCBmb3IgeW91ciBncmlkLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgIChkZWZhdWx0KSBmb3IgMTAwJSB3aWR0aCwgYGF1dG9gIHRvIHVzZSB1cCBhdmFpbGFibGUgc3BhY2UgYW5kIGBzaHJpbmtgIHRvIHVzZSB1cCBvbmx5IHJlcXVpcmVkIHNwYWNlLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnNcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbChcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIEBpZigkYnJlYWtwb2ludCA9PSBudWxsKSB7XG4gICAgLy8gSWYgYCRicC1zaXplYCBpcyBhdmFpbGFibGUgdGhlbiB1c2UgdGhpcywgb3RoZXJ3aXNlIHJldmVydCB0byB0aGUgc21hbGxlc3QgYnAuXG4gICAgQGlmKHZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkgYW5kIHR5cGUtb2YoJC16Zi1zaXplKSAhPSAnbnVtYmVyJykge1xuICAgICAgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBvdXIgZ3V0dGVycyBmcm9tIG1hcCBpZiBhdmFpbGFibGUsIGlmIG5vdCBtYXAganVzdCByZXR1cm4gdGhlIHZhbHVlLlxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuXG4gIC8vIEJhc2UgZmxleCBwcm9wZXJ0aWVzXG4gIEBpbmNsdWRlIHh5LWNlbGwtYmFzZSgkc2l6ZSk7XG5cbiAgQGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICRndXR0ZXIsICR2ZXJ0aWNhbCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsIDAsICR2ZXJ0aWNhbCk7XG4gIH1cblxuICBAaWYgJGd1dHRlci1vdXRwdXQge1xuICAgIC8vIElmIGd1dHRlcnMgPSBtYXBcbiAgICBAaWYodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcbiAgICAgIC8vIElmICRndXR0ZXJzIG1hcCBoYXMgYSBrZXkgPSAkYnJlYWtwb2ludCwgb3V0cHV0IHRoZSB2YWx1ZVxuICAgICAgQGlmIChtYXAtaGFzLWtleSgkZ3V0dGVycywgJGJyZWFrcG9pbnQpKSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgbm90IGEgbWFwXG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHNpemVkIGdyaWQuIFVzZWQgdG8gZ2VuZXJhdGUgb3VyIGdyaWQgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoZGVmYXVsdCkgZm9yIDEwMCUgd2lkdGgsIGBhdXRvYCB0byB1c2UgdXAgYXZhaWxhYmxlIHNwYWNlIGFuZCBgc2hyaW5rYCB0byB1c2UgdXAgb25seSByZXF1aXJlZCBzcGFjZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXN0YXRpYyhcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnQsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuXG4gICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcblxuICBAaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJGd1dHRlciwgJHZlcnRpY2FsKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgMCwgJHZlcnRpY2FsKTtcbiAgfVxuXG4gIC8vIElmIHdlIHdhbnQgdG8gb3V0cHV0IHRoZSBndXR0ZXJzXG4gIEBpZigkZ3V0dGVyLW91dHB1dCkge1xuICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBwYXNzIGJyZWFrcG9pbnQgaW4gaGVyZSB0b28uXG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICB9XG59XG4iLCIvLy8gTW9kaWZpZXMgYSBncmlkIHRvIGdpdmUgaXQgXCJmcmFtZVwiIGJlaGF2aW9yIChubyBvdmVyZmxvdywgbm8gd3JhcCwgc3RyZXRjaCBiZWhhdmlvcilcbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBJcyBncmlkIHZlcnRpY2FsIG9yIGhvcml6b250YWwuIFNob3VsZCBtYXRjaCBncmlkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lc3RlZCBbZmFsc2VdIC0gSXMgZ3JpZCBuZXN0ZWQgb3Igbm90LiBJZiBuZXN0ZWQgaXMgdHJ1ZSB0aGlzIHNldHMgdGhlIGZyYW1lIHRvIDEwMCUgaGVpZ2h0LCBvdGhlcndpc2Ugd2lsbCBiZSAxMDB2aC5cbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkbmVzdGVkOiBmYWxzZVxuKSB7XG5cbiAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcbiAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICB9IEBlbHNlIHtcbiAgICB3aWR0aDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XG4gIH1cblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG5AbWl4aW4geHktY2VsbC1ibG9jayhcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcblxuICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfSBAZWxzZSB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIC1tcy1vdmVyZmxvdy1zdHlwZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyO1xufVxuXG4vLy8gQ29udGFpbmVyIGZvciBpbnNpZGUgYSBncmlkIGZyYW1lIGNvbnRhaW5pbmcgbXVsdGlwbGUgYmxvY2tzLiBUeXBpY2FsbHkgdXNlZFxuLy8vIGFzIGEgbW9kaWZpZXIgZm9yIGEgYC5jZWxsYCB0byBhbGxvdyB0aGUgY2VsbCB0byBwYXNzIGFsb25nIGZsZXggc2l6aW5nXG4vLy8gY29uc3RyYWludHMgLyBmcm9tIHBhcmVudHMgdG8gY2hpbGRyZW4uXG5AbWl4aW4geHktY2VsbC1ibG9jay1jb250YWluZXIoKSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG5cbiAgPiAuZ3JpZC14IHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodC9ib3R0b20gYnkgYCRuYCBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHpmLWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG9mZnNldC4gSWYgc2V0IHRvIHRydWUgd2lsbCBhcHBseSBtYXJnaW4tdG9wIGluc3RlYWQuXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXG4gJG4sXG4gJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsLCAndG9wJywgJGdsb2JhbC1sZWZ0KTtcblxuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkYnJlYWtwb2ludCwgJGd1dHRlcnMpIHtcbiAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XG4gICAgJHNpemU6IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgY2FsYygje3h5LWNlbGwtc2l6ZSgkbil9ICsgI3skZ3V0dGVyfSksICN7eHktY2VsbC1zaXplKCRuKX0pO1xuXG4gICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06ICN7JHNpemV9O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jZWxsJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnNcbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gIG9yIGBwYWRkaW5nYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1ncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRzaXplOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVyLXR5cGU6ICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbiwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDb2xsYXBzZXMgdGhlIGdyaWQgYSBjZWxscyB3aXRoaW4gaXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsuY2VsbF0gLSBUaGUgY2hpbGQgZWxlbWVudCB0byByZW1vdmUgdGhlIGd1dHRlciBmcm9tLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVGhlIHR5cGUgb2YgZ3V0dGVyIHRvIHJlbW92ZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9ucyB0byByZW1vdmUgZ3V0dGVycyBmcm9tLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbkBtaXhpbiB4eS1ncmlkLWNvbGxhcHNlKFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0XG4pIHtcbiAgLy8gRmlyc3QsIGxldHMgbmVnYXRlIGFueSBtYXJnaW5zIG9uIHRoZSB0b3AgbGV2ZWxcbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcblxuICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAvLyBPdXRwdXQgbmV3IHdpZHRocyB0byBub3QgaW5jbHVkZSBndXR0ZXJzXG4gICAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCAkZ3V0dGVyLW91dHB1dDogZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuXG4gICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICB9XG5cbiAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIHBhZGRpbmctI3skdmFsdWV9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmFzZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEdyaWQgQ29udGFpbmVyXG4gIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XG4gIH1cblxuICAuZ3JpZC1jb250YWluZXItcGFkZGVkIHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lci1wYWRkaW5nO1xuICB9XG5cbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xuICAuZ3JpZC14IHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkO1xuICB9XG5cbiAgLmNlbGwge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZSgpO1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRncmlkLWNvbHVtbnMsIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuXG4gICAgJi5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcbiAgICB9XG5cbiAgICAmLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgfVxuICAuZ3JpZC14IHtcbiAgICA+IC5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKGF1dG8sIGZhbHNlKTtcbiAgICB9XG5cbiAgICA+IC5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXV0byB3aWR0aFxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrL3dvcmthcm91bmQsIHNlZSB0aGVzZSBpc3N1ZXMgJiBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAyMjIgYW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XG4gICAgLmdyaWQteCB7XG4gICAgICAkc3RyOiBcIj4gI3skLXpmLXNpemV9LXNocmluaywgPiAjeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+ICN7JC16Zi1zaXplfS0jeyRpfVwiXG4gICAgICB9XG4gICAgICAjeyRzdHJ9IHtcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LXNocmluayB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhzaHJpbmssIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgd2lkdGggd2hlbiB1c2luZyBgLmdyaWQtbWFyZ2luLXhgIG5vdCBvbiBgLmdyaWQteGBcbiAgLmdyaWQtbWFyZ2luLXg6bm90KC5ncmlkLXgpID4gLmNlbGwge1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG5cbiAgLy8gUmVzZXQgaGVpZ2h0IHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi15YCBub3Qgb24gYC5ncmlkLXlgXG4gIC5ncmlkLW1hcmdpbi15Om5vdCguZ3JpZC15KSA+IC5jZWxsIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkY2xhc3MtYnJlYWtwb2ludCwgJGd1dHRlci1icmVha3BvaW50LCAkdmVydGljYWwpIHtcbiAgJHByZWZpeDogaWYoJGNsYXNzLWJyZWFrcG9pbnQgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQsICcnLCAnI3skY2xhc3MtYnJlYWtwb2ludH0tJyk7XG4gID4gLiN7JHByZWZpeH1hdXRvIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICB9XG5cbiAgPiAuI3skcHJlZml4fXNocmluayB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgJGNsYXNzbmFtZTogaWYoJHZlcnRpY2FsLCAnLiN7JGNsYXNzLWJyZWFrcG9pbnR9LSN7JGl9JywgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScpO1xuXG4gICAgPiAjeyRjbGFzc25hbWV9IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsOiAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktbWFyZ2luLWdyaWQtY2xhc3NlcyhcbiAgJGd1dHRlci1wb3NpdGlvbjogbGVmdCByaWdodCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJHdyYXBwaW5nLXNlbGVjdG9yOiAnLmdyaWQtbWFyZ2luLXgnXG4pe1xuICAjeyR3cmFwcGluZy1zZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiAkZ3V0dGVyLXBvc2l0aW9uKTtcblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG5cbiAgICAvLyBiYXNlIHN0eWxlcyBuZWVkIHRvIGFsbCBiZSBiZWZvcmUgdGhlIGF1dG8gYW5kIHNocmluayBzdHlsZXNcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSBhbmQgJC16Zi1zaXplICE9ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLmNlbGwge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG5cbiAgICAgIC8vIFRoaXMgaXMgcHVyZWx5IGZvciByZXNwb25zaXZlIGd1dHRlcnMgLSB0aGUgbWFyZ2luIGdyaWQgaGFzIHRvIGdvIGJhY2sgYW5kIGFkanVzdCB3aWR0aHMgKG9yIGhlaWdodHMpXG4gICAgICAvLyBmb3IgcHJpb3IgYnJlYWtwb2ludHMgYmFzZWQgb24gdGhlIHJlc3BvbnNpdmUgZ3V0dGVyLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaWYobWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRicCkpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkYnAsICQtemYtc2l6ZSwgJHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgfVxuICB9XG59XG5cbi8vIEJsb2NrIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQ6IHRydWUsICRwYWRkaW5nLWdyaWQ6IHRydWUpIHtcbiAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xuICAgICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkaSwgJy5jZWxsJywgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJGksICcuY2VsbCcsIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJGJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLmdyaWQtbWFyZ2luLXguI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkaSwgJy5jZWxsJywgZmFsc2UsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkYnJlYWtwb2ludDogJC16Zi1zaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb2xsYXBzZSBjbGFzc2VzXG5AbWl4aW4geHktY29sbGFwc2UtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgICAgLiN7JC16Zi1zaXplfS1wYWRkaW5nLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBPZmZzZXQgY2xhc3Nlc1xuQG1peGluIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gT2Zmc2V0c1xuICAgICAgJG86ICRpIC0gMTtcblxuICAgICAgLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLW9mZnNldCgkbywgJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkYnJlYWtwb2ludDogJC16Zi1zaXplKTtcbiAgICAgIH1cblxuICAgICAgLmdyaWQtbWFyZ2luLXggPiAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkYnJlYWtwb2ludDogJC16Zi1zaXplKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVmVydGljYWwgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKFxuICAkbWFyZ2luLWdyaWQ6IHRydWUsXG4gICRwYWRkaW5nLWdyaWQ6IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcbiAgICB9XG4gIH1cblxuICAuZ3JpZC15IHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkKHZlcnRpY2FsLCBmYWxzZSk7XG5cblxuICAgID4gLmNlbGwge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1yZXNldCgpO1xuICAgIH1cblxuICAgID4gLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG4gICAgPiAuc2hyaW5rIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyBhbmQgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgICAgJHN0cjogXCI+ICN7JC16Zi1zaXplfS1zaHJpbmssID4gI3skLXpmLXNpemV9LWZ1bGxcIjtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAjeyQtemYtc2l6ZX0tI3skaX1cIlxuICAgICAgfVxuICAgICAgI3skc3RyfSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoYXV0byk7XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhzaHJpbmssIGZhbHNlLCAkYnJlYWtwb2ludDogJC16Zi1zaXplLCAkdmVydGljYWw6IHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKCRpLCBmYWxzZSwgJHZlcnRpY2FsOiB0cnVlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgLmdyaWQtcGFkZGluZy15IHtcbiAgICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogdG9wIGJvdHRvbSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICAgID4gLmNlbGwge1xuICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZywgJGd1dHRlci1wb3NpdGlvbjogdG9wIGJvdHRvbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKVxuICB9XG59XG5cbkBtaXhpbiB4eS1mcmFtZS1ncmlkLWNsYXNzZXMoJHZlcnRpY2FsLWdyaWQ6IHRydWUpIHtcbiAgLy8gRnJhbWVkIGdyaWQgc3R5bGVzXG4gIC5ncmlkLWZyYW1lIHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICB9XG5cbiAgLmNlbGwgLmdyaWQtZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICB9XG5cbiAgLmNlbGwtYmxvY2sge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcbiAgfVxuXG4gIC5jZWxsLWJsb2NrLXkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gIH1cblxuXG4gIC5jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgfVxuXG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuXG4gICAgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWU7XG4gICAgfVxuXG4gICAgLmNlbGwgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICR2ZXJ0aWNhbC1ncmlkIHtcblxuICAgIC5ncmlkLXkge1xuICAgICAgJi5ncmlkLWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgICAgJi4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIC5ncmlkLXkuZ3JpZC1mcmFtZSB7XG4gICAgICAgIGhlaWdodDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgICAgLmdyaWQteS4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmFsIGNsYXNzZXNcbkBtaXhpbiBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcyhcbiAgJGJhc2UtZ3JpZDogdHJ1ZSxcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxuICAkcGFkZGluZy1ncmlkOiB0cnVlLFxuICAkYmxvY2stZ3JpZDogdHJ1ZSxcbiAgJGNvbGxhcHNlOiB0cnVlLFxuICAkb2Zmc2V0OiB0cnVlLFxuICAkdmVydGljYWwtZ3JpZDogdHJ1ZSxcbiAgJGZyYW1lLWdyaWQ6IHRydWVcbikge1xuXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcbiAgQGlmKCRiYXNlLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1iYXNlLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gTWFyZ2luIGdyaWRcbiAgQGlmKCRtYXJnaW4tZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFBhZGRpbmcgZ3JpZFxuICBAaWYoJHBhZGRpbmctZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBCbG9jayBncmlkXG4gIEBpZigkYmxvY2stZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gQ29sbGFwc2UgZ3V0dGVyc1xuICBAaWYoJGNvbGxhcHNlKSB7XG4gICAgQGluY2x1ZGUgeHktY29sbGFwc2UtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICAvLyBPZmZzZXQgZ3V0dGVyc1xuICBAaWYoJG9mZnNldCkge1xuICAgIEBpbmNsdWRlIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGdyaWRcbiAgQGlmKCR2ZXJ0aWNhbC1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICBAaWYgKCRmcmFtZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkKVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8vXG5cbi8vIEJhc2UgdHlwb2dyYXBoeSBzdHlsZXMgKHRhZ3Mgb25seSlcbkBpbXBvcnQgJ2Jhc2UnO1xuXG4vLyBUeXBvZ3JhcGh5IGhlbHBlciBjbGFzc2VzIChjbGFzc2VzIG9ubHkpXG5AaW1wb3J0ICdoZWxwZXJzJztcblxuLy8gVGV4dCBhbGlnbm1lbnQgY2xhc3Nlc1xuQGltcG9ydCAnYWxpZ25tZW50JztcblxuLy8gUHJpbnQgc3R5bGVzXG5AaW1wb3J0ICdwcmludCc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHkge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1iYXNlXG4vLy8vXG5cbi8vIEJhc2UgVHlwb2dyYXBoeVxuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cbi8vIFRoZXNlIGFyZSBzdHlsZXMgYXBwbGllZCB0byBiYXNpYyBIVE1MIHRhZ3MsIGluY2x1ZGluZzpcbi8vICAgLSBQYXJhZ3JhcGhzIDxwPlxuLy8gICAtIEJvbGQvaXRhbGljcyA8Yj4gPHN0cm9uZz4gPGk+IDxlbT5cbi8vICAgLSBTbWFsbCB0ZXh0IDxzbWFsbD5cbi8vICAgLSBIZWFkaW5ncyA8aDE+LTxoNj5cbi8vICAgLSBBbmNob3JzIDxhPlxuLy8gICAtIERpdmlkZXJzIDxocj5cbi8vICAgLSBMaXN0cyA8dWw+IDxvbD4gPGRsPlxuLy8gICAtIEJsb2NrcXVvdGVzIDxibG9ja3F1b3RlPlxuLy8gICAtIENvZGUgYmxvY2tzIDxjb2RlPlxuLy8gICAtIEFiYnJldmlhdGlvbnMgPGFiYnI+XG4vLyAgIC0gQ2l0YXRpb25zIDxjaXRlPlxuLy8gICAtIEtleXN0cm9rZXMgPGtiZD5cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBoZWFkZXIgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdHlsZSAoZS5nLiBpdGFsaWNpemVkKSBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0YWNrIHVzZWQgZm9yIGVsZW1lbnRzIHRoYXQgdXNlIG1vbm9zcGFjZWQgdHlwZSwgc3VjaCBhcyBjb2RlIHNhbXBsZXNcbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItY29sb3I6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyBmb3IgaGVhZGluZ3MgYXQgdmFyaW91cyBzY3JlZW4gc2l6ZXMuIEVhY2gga2V5IGlzIGEgYnJlYWtwb2ludCwgYW5kIGVhY2ggdmFsdWUgaXMgYSBtYXAgb2YgaGVhZGluZyBzdHlsZXMuXG4vLy8gQHR5cGUgTWFwXG4kaGVhZGVyLXN0eWxlczogKFxuICBzbWFsbDogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogMjQpLFxuICAgICdoMic6ICgnZm9udC1zaXplJzogMjApLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMTkpLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMTgpLFxuICAgICdoNSc6ICgnZm9udC1zaXplJzogMTcpLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxuICApLFxuICBtZWRpdW06IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ4KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDQwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDMxKSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDI1KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbikgIWRlZmF1bHQ7XG5cbi8vICRoZWFkZXItc3R5bGVzIG1hcCBpcyBidWlsdCBmcm9tICRoZWFkZXItc2l6ZXMgaW4gb3JkZXIgdG8gZW5zdXJlIGRvd253YXJkIGNvbXBhdGliaWxpdHlcbi8vIHdoZW4gJGhlYWRlci1zaXplcyBpcyBkZXByZWNpYXRlZCwgJGhlYWRlci1zdHlsZXMgbmVlZHMgdG8gZ2V0ICFkZWZhdWx0IHZhbHVlcyBsaWtlIHNldHRpbmdzLnNjc3NcbkBmdW5jdGlvbiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKSB7XG4gIEB3YXJuICdOb3RlLCB0aGF0ICRoZWFkZXItc2l6ZXMgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCAkaGVhZGVyLXN0eWxlcy4gJGhlYWRlci1zaXplcyBzdGlsbCB3b3JrcywgYnV0IGl0IGlzIGdvaW5nIHRvIGJlIGRlcHJlY2lhdGVkLic7XG4gICRoZWFkZXItc3R5bGVzOiAoKTtcbiAgQGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc2l6ZXMge1xuICAgICRoZWFkZXItbWFwOiAoKTtcbiAgICBAZWFjaCAkaGVhZGVyLCAkZm9udC1zaXplIGluICRoZWFkZXJzIHtcbiAgICAgICRoZWFkZXItbWFwOiBtYXAtbWVyZ2UoJGhlYWRlci1tYXAsICgkaGVhZGVyOiAoJ2ZvbnQtc2l6ZSc6ICRmb250LXNpemUpKSk7ICBcbiAgICB9XG4gICAgJGhlYWRlci1zdHlsZXM6IG1hcC1tZXJnZSgkaGVhZGVyLXN0eWxlcywgKCRzaXplOiAkaGVhZGVyLW1hcCkpO1xuICB9XG4gIEByZXR1cm4gJGhlYWRlci1zdHlsZXM7XG59XG5cbi8vIElmIGl0IGV4aXN0cyAkaGVhZGVycy1zaXplcyBpcyB1c2VkIHRvIGJ1aWxkICRoZWFkZXItc3R5bGVzLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGhlYWRlci1zaXplcykge1xuICAkaGVhZGVyLXN0eWxlczogYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcyk7XG59XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2Qgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBgPHNtYWxsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc21hbGwtZm9udC1zaXplOiA4MCUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBgPHNtYWxsPmAgZWxlbWVudHMgd2hlbiBwbGFjZWQgaW5zaWRlIGhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnNpZGUgYDxwPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBmb3IgcGFyYWdyYXBoIHRleHQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW4gY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIExpc3RcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgYXJvdW5kIHRleHQgb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRjb2RlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNSAxKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYW5jaG9yLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZW9jcmF0aW9uIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIHdpZHRoIG9mIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoci13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGZvciBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTGlzdFxuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGZvciBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGhyLW1hcmdpbjogcmVtLWNhbGMoMjApIGF1dG8gIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgaXRlbXMgaW4gYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tICFkZWZhdWx0O1xuXG4vLy8gQnVsbGV0IHR5cGUgdG8gdXNlIGZvciB1bm9yZGVyZWQgbGlzdHMgKGUuZy4sIGBzcXVhcmVgLCBgY2lyY2xlYCwgYGRpc2NgKS5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsaXN0LXN0eWxlLXR5cGU6IGRpc2MgIWRlZmF1bHQ7XG5cbi8vLyBQb3NpdGlvbmluZyBmb3IgYnVsbGV0cyBvbiB1bm9yZGVyZWQgbGlzdCBpdGVtcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgbGlzdHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGEgbGlzdCBpbnNpZGUgYSBsaXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBmb3IgYDxkbD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRlZm5saXN0LW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBmb3IgYDxkdD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGA8ZHQ+YCBhbmQgYDxkZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTogMC4zcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBhIGA8YmxvY2txdW90ZT5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KSAhZGVmYXVsdDtcblxuLy8vIFNpZGUgYm9yZGVyIGZvciBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBMaXN0XG4kYmxvY2txdW90ZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGA8Y2l0ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQc2V1ZG8gY29udGVudCBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2sgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZSB7XG4gIC8vIFR5cG9ncmFwaHkgcmVzZXRzXG4gIGRpdixcbiAgZGwsXG4gIGR0LFxuICBkZCxcbiAgdWwsXG4gIG9sLFxuICBsaSxcbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNixcbiAgcHJlLFxuICBmb3JtLFxuICBwLFxuICBibG9ja3F1b3RlLFxuICB0aCxcbiAgdGQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUGFyYWdyYXBoc1xuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG5cbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICB0ZXh0LXJlbmRlcmluZzogJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZztcbiAgfVxuXG4gIC8vIEVtcGhhc2l6ZWQgdGV4dFxuICBlbSxcbiAgaSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU3Ryb25nIHRleHRcbiAgc3Ryb25nLFxuICBiIHtcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFNtYWxsIHRleHRcbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEhlYWRpbmdzXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyLWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtc3R5bGU6ICRoZWFkZXItZm9udC1zdHlsZTtcbiAgICBmb250LXdlaWdodDogJGhlYWRlci1mb250LXdlaWdodDtcbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICB0ZXh0LXJlbmRlcmluZzogJGhlYWRlci10ZXh0LXJlbmRlcmluZztcblxuICAgIHNtYWxsIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgY29sb3I6ICRoZWFkZXItc21hbGwtZm9udC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAvLyBIZWFkaW5nIHN0eWxlc1xuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zdHlsZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRoZWFkZXIsICRoZWFkZXItZGVmcyBpbiAkaGVhZGVycyB7XG4gICAgICAgICRmb250LXNpemUtdGVtcDogMXJlbTtcbiAgICAgICAgI3skaGVhZGVyfSB7XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmb250LXNpemUpIHtcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZzKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmcykpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCksICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxoKSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGgpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMoJGhlYWRlci1saW5laGVpZ2h0LCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi10b3ApIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG10KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbXQpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1iKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWIpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRoZWFkZXItbWFyZ2luLWJvdHRvbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlua3NcbiAgYSB7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICRhbmNob3ItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIGNsZWFyOiBib3RoO1xuXG4gICAgbWF4LXdpZHRoOiAkaHItd2lkdGg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcblxuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1ib3R0b206ICRoci1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cblxuICAvLyBMaXN0c1xuICB1bCxcbiAgb2wsXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246ICRsaXN0LXN0eWxlLXBvc2l0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gTGlzdCBpdGVtc1xuICBsaSB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6ICRsaXN0LXN0eWxlLXR5cGU7XG4gIH1cblxuICAvLyBPcmRlcmVkIGxpc3RzXG4gIG9sIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE5lc3RlZCB1bm9yZGVyZWQvb3JkZXJlZCBsaXN0c1xuICB1bCwgb2wge1xuICAgICYgJiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW47XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmluaXRpb24gbGlzdHNcbiAgZGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZHQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZGVmbmxpc3QtdGVybS13ZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2txdW90ZXNcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwIDAgJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuICAgIHBhZGRpbmc6ICRibG9ja3F1b3RlLXBhZGRpbmc7XG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xuXG4gICAgJiwgcCB7XG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgICAgY29sb3I6ICRibG9ja3F1b3RlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIENpdGF0aW9uc1xuICBjaXRlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6ICRjaXRlLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGNpdGUtY29sb3I7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY2l0ZS1wc2V1ZG8tY29udGVudDtcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIsIGFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBoZWxwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIEZpZ3VyZXNcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgXG4gIC8vIENvZGVcbiAgY29kZSB7XG4gICAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcblxuICAgIGJvcmRlcjogJGNvZGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XG5cbiAgICBmb250LWZhbWlseTogJGNvZGUtZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICRjb2RlLWZvbnQtd2VpZ2h0O1xuICAgIGNvbG9yOiAkY29kZS1jb2xvcjtcbiAgfVxuXG4gIC8vIEtleXN0cm9rZXNcbiAga2JkIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogJGtleXN0cm9rZS1wYWRkaW5nO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGtleXN0cm9rZS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRrZXlzdHJva2UtZm9udDtcbiAgICBjb2xvcjogJGtleXN0cm9rZS1jb2xvcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJGtleXN0cm9rZS1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRrZXlzdHJva2UtcmFkaXVzO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1oZWxwZXJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGVhZC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0b3AgbWFyZ2luIGZvciBzdWJoaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3Igc3RhdGlzdGljIG51bWJlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3RhdC1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzIHtcbiAgLy8gVXNlIHRvIGNyZWF0ZSBhIHN1YmhlYWRpbmcgdW5kZXIgYSBtYWluIGhlYWRlclxuICAvLyBNYWtlIHN1cmUgeW91IHBhaXIgdGhlIHR3byBlbGVtZW50cyBpbiBhIDxoZWFkZXI+IGVsZW1lbnQsIGxpa2UgdGhpczpcbiAgLy8gPGhlYWRlcj5cbiAgLy8gICA8aDE+SGVhZGluZzwvaDE+XG4gIC8vICAgPGgyPlN1YmhlYWRpbmc8L2gyPlxuICAvLyA8L2hlYWRlcj5cbiAgLnN1YmhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogJHN1YmhlYWRlci1tYXJnaW4tdG9wO1xuICAgIG1hcmdpbi1ib3R0b206ICRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtd2VpZ2h0OiAkc3ViaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkc3ViaGVhZGVyLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXG4gIC5sZWFkIHtcbiAgICBmb250LXNpemU6ICRsZWFkLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXG4gIC5zdGF0IHtcbiAgICBmb250LXNpemU6ICRzdGF0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIHAgKyAmIHtcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xuICAgIH1cbiAgfVxuXG4gIHVsLCBvbCB7XG4gICAgLy8gVXNlIHRvIHJlbW92ZSBudW1iZXJzIGZyb20gb3JkZXJlZCBsaXN0ICYgYnVsbGV0cyBmcm9tIHVub3JkZXJlZCBsaXN0XG4gICAgJi5uby1idWxsZXQge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLnRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSWYgYHRydWVgLCBhbGwgZWxlbWVudHMgd2lsbCBoYXZlIHRyYW5zcGFyZW50IGJhY2tncm91bmRzIHdoZW4gcHJpbnRlZCwgdG8gc2F2ZSBvbiBpbmsuXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBncm91cCBnbG9iYWxcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcbiRwcmludC1ocmVmczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gc2Fzcy1saW50OmRpc2FibGUtYWxsXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByaW50LXN0eWxlcyB7XG4gIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgKiB7XG4gICAgICBAaWYgJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgLy8gQmxhY2sgcHJpbnRzIGZhc3RlcjogaDVicC5jb20vc1xuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgLmhpZGUtZm9yLXByaW50IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbiAgICB0YWJsZS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgICB0aGVhZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdGJvZHkuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRyLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cbiAgICB0ZC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICAgIHRoLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG5cbiAgICAvLyBEaXNwbGF5IHRoZSBVUkwgb2YgYSBsaW5rIGFmdGVyIHRoZSB0ZXh0XG4gICAgYSxcbiAgICBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XG4gICAgQGlmICRwcmludC1ocmVmcyB7XG4gICAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxuICAgIH1cblxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcbiAgICAuaXIgYTphZnRlcixcbiAgICBhW2hyZWZePSdqYXZhc2NyaXB0OiddOmFmdGVyLFxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XG5cbiAgICAvLyBEaXNwbGF5IHdoYXQgYW4gYWJicmV2aWF0aW9uIHN0YW5kcyBmb3IgYWZ0ZXIgdGhlIHRleHRcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XG5cbiAgICAvLyBQcmV2ZW50IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgYSBibG9ja3F1b3RlIG9yIHByZWZvcm1hdHRlZCB0ZXh0IGJsb2NrXG4gICAgcHJlLFxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICAvLyBoNWJwLmNvbS90XG4gICAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cblxuICAgIHRyLFxuICAgIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuICAgIEBwYWdlIHsgbWFyZ2luOiAwLjVjbTsgfVxuXG4gICAgcCxcbiAgICBoMixcbiAgICBoMyB7XG4gICAgICBvcnBoYW5zOiAzO1xuICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIC8vIEF2b2lkIHBhZ2UgYnJlYWtzIGFmdGVyIGEgaGVhZGluZ1xuICAgIGgyLFxuICAgIGgzIHsgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7IH1cblxuICAgIC8vIEhlbHBlciB0byByZS1hbGxvdyBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGNlcnRhaW4gZWxlbWVudHMgKGUuZy4gcHJlLCBibG9ja3F1b3RlLCB0cilcbiAgICAucHJpbnQtYnJlYWstaW5zaWRlIHtcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEdsb2JhbCBzcGFjaW5nIGZvciBmb3JtIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG5AaW1wb3J0ICd0ZXh0JztcbkBpbXBvcnQgJ2NoZWNrYm94JztcbkBpbXBvcnQgJ2xhYmVsJztcbkBpbXBvcnQgJ2hlbHAtdGV4dCc7XG5AaW1wb3J0ICdpbnB1dC1ncm91cCc7XG5AaW1wb3J0ICdmaWVsZHNldCc7XG5AaW1wb3J0ICdzZWxlY3QnO1xuQGltcG9ydCAncmFuZ2UnO1xuQGltcG9ydCAncHJvZ3Jlc3MnO1xuQGltcG9ydCAnbWV0ZXInO1xuQGltcG9ydCAnZXJyb3InO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS10ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZXJyb3I7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHBsYWNlaG9sZGVyIHRleHQgd2l0aGluIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEZvbnRcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBmb2N1c2VkIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGZvY3VzZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBhZGRpbmc6ICRmb3JtLXNwYWNpbmcgLyAyICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgb3V0c2lkZSB0ZXh0IGlucHV0cyB3aGVuIGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLy8gUHJvcGVydGllcyB0byB0cmFuc2l0aW9uIG9uIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgdGhlIHVwL2Rvd24gYnV0dG9ucyB0aGF0IENocm9tZSBhbmQgRmlyZWZveCBhZGQgdG8gYDxpbnB1dCB0eXBlPSdudW1iZXInPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFJhZGl1cyBmb3IgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGZvcm0gYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tZWxlbWVudCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICB9XG5cbiAgLy8gRm9jdXMgc3RhdGVcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXRleHQge1xuICAvLyBUZXh0IGlucHV0c1xuICAje3RleHQtaW5wdXRzKCl9LFxuICB0ZXh0YXJlYSB7XG4gICAgQGluY2x1ZGUgZm9ybS1lbGVtZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyBUZXh0IGFyZWFzXG4gIHRleHRhcmVhIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAmW3Jvd3NdIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG4gIH1cblxuICBpbnB1dCxcbiAgdGV4dGFyZWEge1xuICAgIC8vIFBsYWNlaG9sZGVyIHRleHRcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yO1xuICAgIH1cblxuICAgIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXG4gIFt0eXBlPSdzdWJtaXQnXSxcbiAgW3R5cGU9J2J1dHRvbiddIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWJ1dHRvbi1yYWRpdXM7XG4gIH1cblxuICAvLyBSZXNldCBOb3JtYWxpemUgc2V0dGluZyBjb250ZW50LWJveCB0byBzZWFyY2ggZWxlbWVudHNcbiAgaW5wdXRbdHlwZT0nc2VhcmNoJ10geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xuICBbdHlwZT0nbnVtYmVyJ10ge1xuICAgIEBpZiBub3QgJGlucHV0LW51bWJlci1zcGlubmVycyB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4XG5cbiAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1jaGVja2JveCB7XG4gIFt0eXBlPSdmaWxlJ10sXG4gIFt0eXBlPSdjaGVja2JveCddLFxuICBbdHlwZT0ncmFkaW8nXSB7XG4gICAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgfVxuXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXQvbGFiZWwgc2libGluZ3NcbiAgW3R5cGU9J2NoZWNrYm94J10gKyBsYWJlbCxcbiAgW3R5cGU9J3JhZGlvJ10gKyBsYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblxuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRmb3JtLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICZbZm9yXSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dHMgaW5zaWRlIGxhYmVsc1xuICBsYWJlbCA+IFt0eXBlPSdjaGVja2JveCddLFxuICBsYWJlbCA+IFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBmaWxlIGlucHV0IHdpZHRoXG4gIFt0eXBlPSdmaWxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcblxuICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvcjtcbn1cblxuQG1peGluIGZvcm0tbGFiZWwtbWlkZGxlIHtcbiAgJGlucHV0LWJvcmRlci13aWR0aDogZ2V0LWJvcmRlci12YWx1ZSgkaW5wdXQtYm9yZGVyLCB3aWR0aCk7XG5cbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogKCRmb3JtLXNwYWNpbmcgLyAyICsgcmVtLWNhbGMoJGlucHV0LWJvcmRlci13aWR0aCkpIDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tbGFiZWwge1xuICBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZm9ybS1sYWJlbDtcblxuICAgICYubWlkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGZvcm0tbGFiZWwtbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHN0eWxlIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dCB7XG4gIC5oZWxwLXRleHQge1xuICAgICRtYXJnaW4tdG9wOiAoJGZvcm0tc3BhY2luZyAqIDAuNSkgKiAtMTtcblxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIGZvbnQtc2l6ZTogJGhlbHB0ZXh0LWZvbnQtc2l6ZTtcbiAgICBmb250LXN0eWxlOiAkaGVscHRleHQtZm9udC1zdHlsZTtcbiAgICBjb2xvcjogJGhlbHB0ZXh0LWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LXByZWZpeC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0L3JpZ2h0IHBhZGRpbmcgb2YgYW4gcHJlL3Bvc3RmaXhlZCBpbnB1dCBsYWJlbFxuJGlucHV0LXByZWZpeC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXgge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSArICRmb3JtLXNwYWNpbmcgKiAxLjUpO1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCB0YWJsZSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDAsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMpO1xuICAgIH1cblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICVpbnB1dC1ncm91cC1jaGlsZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtbGFiZWwge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmc6IDAgJGlucHV0LXByZWZpeC1wYWRkaW5nO1xuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kO1xuXG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC1wcmVmaXgtYm9yZGVyKSB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDElO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIGEsXG4gICAgaW5wdXQsXG4gICAgYnV0dG9uLFxuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljaXR5IGJ1bXAgbmVlZGVkIHRvIHByZXZlbnQgb3ZlcnJpZGUgYnkgYnV0dG9uc1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGJldHdlZW4gdGhlIGxlZ2VuZCB0ZXh0IGFuZCBmaWVsZHNldCBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMykgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmaWVsZHNldCB7XG4gIG1hcmdpbjogJGZpZWxkc2V0LW1hcmdpbjtcbiAgcGFkZGluZzogJGZpZWxkc2V0LXBhZGRpbmc7XG4gIGJvcmRlcjogJGZpZWxkc2V0LWJvcmRlcjtcblxuICBsZWdlbmQge1xuICAgIC8vIENvdmVycyB1cCB0aGUgZmllbGRzZXQncyBib3JkZXIgdG8gY3JlYXRlIGFydGlmaWNpYWwgcGFkZGluZ1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiByZW0tY2FsYygtMyk7XG4gICAgcGFkZGluZzogJGxlZ2VuZC1wYWRkaW5nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQge1xuICBmaWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgbGVnZW5kIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBzZWxlY3QgbWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGRyb3Bkb3duIHRyaWFuZ2xlIGluc2lkZSBzZWxlY3QgbWVudXMuIFNldCB0byBgdHJhbnNwYXJlbnRgIHRvIHJlbW92ZSBpdCBlbnRpcmVseS5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC10cmlhbmdsZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzZWxlY3QgbWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tc2VsZWN0IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiB1bml0bGVzcy1jYWxjKCRpbnB1dC1saW5lLWhlaWdodCkpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG5cbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkc2VsZWN0LXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNlbGVjdC1iYWNrZ3JvdW5kO1xuXG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1jb2xvcjtcblxuICBAaWYgJHNlbGVjdC10cmlhbmdsZS1jb2xvciAhPSB0cmFuc3BhcmVudCB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC10cmlhbmdsZSgkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogY29udGVudC1ib3g7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGdsb2JhbC1yaWdodCAoLSRmb3JtLXNwYWNpbmcpIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogOXB4IDZweDtcblxuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogKCRmb3JtLXNwYWNpbmcgKiAxLjUpO1xuICB9XG5cbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICB9XG5cbiAgLy8gRm9jdXMgc3RhdGVcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIERpc2FibGVkIHN0YXRlXG4gICY6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xuICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEhpZGUgdGhlIGRyb3Bkb3duIGFycm93IHNob3duIGluIG5ld2VyIElFIHZlcnNpb25zXG4gICY6Oi1tcy1leHBhbmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmW211bHRpcGxlXSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xuICBzZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzbGlkZXIncyB0cmFjay5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGFjdGl2ZSBmaWxsIGNvbG9yIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgaGFuZGxlIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGhhbmRsZSBmb3IgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgYW1vdW50IG9mIGEgZGlzYWJsZWQgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQge1xuICBpbnB1dFt0eXBlPVwicmFuZ2VcIl0geyAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgJG1hcmdpbjogKCRzbGlkZXItaGFuZGxlLWhlaWdodCAtICRzbGlkZXItaGVpZ2h0KSAvIDI7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiAwO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4XG5cbiAgICAvLyBDaHJvbWUvU2FmYXJpXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNsaWRlci1oYW5kbGUge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaXJlZm94XG4gICAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlclxuICAgICY6Oi1tcy10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gICAgICBib3JkZXI6IDA7XG4gICAgICBib3JkZXItdG9wOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBib3JkZXItYm90dG9tOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtbG93ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIEBhdC1yb290IHtcbiAgICAgIG91dHB1dCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb2dyZXNzLWJhclxuLy8vL1xuXG4vLy8gSGVpZ2h0IG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHByb2dyZXNzIGJhcidzIG1ldGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1lbGVtZW50IHtcbiAgcHJvZ3Jlc3Mge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAkcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICB9XG5cbiAgICAvLyBGb3IgRmlyZWZveFxuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1vei1wcm9ncmVzcy1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXN2YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciBzZXRzIHRoZSBmaWxsIHdpdGggY29sb3JcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcblxuICAgICAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIElFIGFuZCBFZGdlXG4gICAgJjo6LW1zLWZpbGwge1xuICAgICAgQGlmIGhhc3ZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWV0ZXJcbi8vLy9cblxuLy8vIEhlaWdodCBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIExlbmd0aFxuJG1ldGVyLWhlaWdodDogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWV0ZXIgZmlsbCBmb3IgYW4gb3B0aW1hbCB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1nb29kOiAkc3VjY2Vzcy1jb2xvciAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIGF2ZXJhZ2UgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtbWVkaXVtOiAkd2FybmluZy1jb2xvciAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGEgc3Vib3B0aW1hbCB2YWx1ZSBpbiBhIGA8bWV0ZXI+YCBlbGVtZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kbWV0ZXItZmlsbC1iYWQ6ICRhbGVydC1jb2xvciAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tbWV0ZXItZWxlbWVudCB7XG4gIG1ldGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRtZXRlci1oZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgIC8vIERpc2FibGUgYC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZWAgZnJvbSBnZXR0aW5nIHByZWZpeGVkLFxuICAgIC8vIFdlIGhhdmUgZGlzYWJsZWQgYXV0b3ByZWZpeGVyIGZpcnN0IGFuZCBhcmUganVzdCBvbmx5IHVzaW5nIFxuICAgIC8vIGAtbW96LWFwcGVhcmFuY2U6IG5vbmVgIGFzIGEgcHJlZml4IGFuZCBuZWdsZWN0aW5nIHRoZSB3ZWJraXQuXG4gICAgXG4gICAgLyohIGF1dG9wcmVmaXhlcjogb2ZmICovXG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICB9XG5cbiAgICAvLyBGb3IgRmlyZWZveFxuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcblxuICAgIC8vIENocm9tZS9TYWZhcmkvRWRnZVxuICAgICY6Oi13ZWJraXQtbWV0ZXItYmFyIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLWlubmVyLWVsZW1lbnQge1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLWdvb2Q7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItc3Vib3B0aW11bS12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1tZWRpdW07XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjotbW96LW1ldGVyLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1wc2V1ZG8tbmVzdGluZ1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1wc2V1ZG8tbmVzdGluZ1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtbWVkaXVtO1xuICAgIH1cblxuICAgICY6LW1vei1tZXRlci1zdWItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBmb3JjZS1wc2V1ZG8tbmVzdGluZ1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtYmFkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWJpZGVcbi8vLy9cblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBsYWJlbHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdG8gdXNlIGZvciBsYWJlbHMgb2YgaW52YWxpZCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1lcnJvci1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBvZiBhbiBpbnB1dCBmaWVsZCB0byBoYXZlIGFuIGVycm9yIHN0YXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYWNrZ3JvdW5kLWxpZ2h0ZW4gWzEwJV0gLSBMaWdodG5lc3MgbGV2ZWwgb2YgdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gZm9ybS1pbnB1dC1lcnJvcihcbiAgJGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQsXG4gICRiYWNrZ3JvdW5kLWxpZ2h0ZW46IDEwJVxuKSB7XG4gICY6bm90KDpmb2N1cykge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRiYWNrZ3JvdW5kLCAkd2hpdGUsICRiYWNrZ3JvdW5kLWxpZ2h0ZW4pO1xuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgZXJyb3Igc3R5bGVzIHRvIGEgZm9ybSBlbGVtZW50LCB1c2luZyB0aGUgdmFsdWVzIGluIHRoZSBzZXR0aW5ncyBmaWxlLlxuQG1peGluIGZvcm0tZXJyb3Ige1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW4tdG9wOiAkZm9ybS1zcGFjaW5nICogLTAuNTtcbiAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICBmb250LXNpemU6ICRpbnB1dC1lcnJvci1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtZXJyb3ItY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZXJyb3Ige1xuICBAaWYgJGFiaWRlLWlucHV0cyB7XG4gICAgLy8gRXJyb3IgY2xhc3MgZm9yIGludmFsaWQgaW5wdXRzXG4gICAgLmlzLWludmFsaWQtaW5wdXQge1xuICAgICAgQGluY2x1ZGUgZm9ybS1pbnB1dC1lcnJvcjtcbiAgICB9XG4gIH1cblxuICBAaWYgJGFiaWRlLWxhYmVscyB7XG4gICAgLy8gRXJyb3IgY2xhc3MgZm9yIGxhYmVscyBvZiBpbnZhbGlkIG91dHB1dHNcbiAgICAuaXMtaW52YWxpZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDtcbiAgICB9XG4gIH1cblxuICAvLyBGb3JtIGVycm9yIGVsZW1lbnRcbiAgLmZvcm0tZXJyb3Ige1xuICAgIEBpbmNsdWRlIGZvcm0tZXJyb3I7XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vIEhpZGUgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBvbmx5IGRpc3BsYXlpbmcgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gc2hvdy1mb3IoJHNpemUpIHtcbiAgJHNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gICRzaXplOiAtemYtYnAtdG8tZW0oJHNpemUpIC0gKDEgLyAxNik7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yLW9ubHkoJHNpemUpIHtcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gICR1cHBlci1ib3VuZC1zaXplOiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG5cbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxuICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSkgLSAoMSAvIDE2KTtcbiAgLy8gdGVzdCBhY3R1YWwgbG93ZXItYm91bmQtc2l6ZSwgaWYgMCBzZXQgaXQgdG8gMGVtXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XG4gIH1cblxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yLW9ubHkoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcyB7XG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xuICAgICAgfVxuXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcigkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgc2hvdy1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxuICAuc2hvdy1mb3Itc3IsXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxuXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZS1vZmY7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXG4gIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuaGlkZS1mb3ItbGFuZHNjYXBlLFxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsb2F0XG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXMge1xuICAuZmxvYXQtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZmxvYXQtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICAuY2xlYXJmaXgge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b25cbi8vLy9cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gQHR5cGUgRm9udFxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmlsbCBmb3IgYnV0dG9ucy4gQ2FuIGVpdGhlciBiZSBgc29saWRgIG9yIGBob2xsb3dgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIGZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHdpZHRoIGZvciBob2xsb3cgb3V0bGluZSBidXR0b25zXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBob2xsb3cgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJSAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWw6IGZsaXAgZnJvbSBtYXJnaW4tcmlnaHQgdG8gbWFyZ2luLWxlZnQgZm9yIGRlZmF1bHRzXG5AaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG59XG5cbi8vLyB0cmFuc2l0aW9ucyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLyBUT0RPOiBEb2N1bWVudCBidXR0b24tYmFzZSgpIG1peGluXG5AbWl4aW4gYnV0dG9uLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcbiAgZm9udC1mYW1pbHk6ICRidXR0b24tZm9udC1mYW1pbHk7XG5cbiAgQGlmICh0eXBlLW9mKCRidXR0b24tcGFkZGluZykgPT0gJ21hcCcpIHtcbiAgICBAZWFjaCAkc2l6ZSwgJHBhZGRpbmcgaW4gJGJ1dHRvbi1wYWRkaW5nIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwYWRkaW5nOiAkYnV0dG9uLXBhZGRpbmc7XG4gIH1cblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgdHJhbnNpdGlvbjogJGJ1dHRvbi10cmFuc2l0aW9uO1xuXG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFt0cnVlXSAtIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBleHBhbmQgYmVoYXZpb3IuIFNldCB0byBgZmFsc2VgIHRvIHJldmVyc2UgdGhpcyBiZWhhdmlvci5cbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcbiAgQGlmICRleHBhbmQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcbiAgfVxuXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcbiAgICAkYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJhY2tncm91bmQsICRsaWdodG5lc3M6ICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzcyk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vLyBSZW1vdmVzIGJhY2tncm91bmQgZmlsbCBvbiBob3ZlciBhbmQgZm9jdXMgZm9yIGhvbGxvdyBidXR0b25zLlxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xuICAmLFxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICAmLFxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzLFxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgICYuZGlzYWJsZWQsXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQsIHJlc2V0aW5nIHRoZSBjdXJzb3IsIGFuZCBkaXNhYmxpbmcgcG9pbnRlciBldmVudHMuXG4vLy8gQHBhcmFtIFtDb2xvcl0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHBhcmFtIFtDb2xvcl0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLWRpc2FibGVkKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRidXR0b24tY29sb3Jcbikge1xuICBAaWYgJGNvbG9yID09IGF1dG8ge1xuICAgICRjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRidXR0b24tY29sb3IsICRidXR0b24tY29sb3ItYWx0KSk7XG4gIH1cblxuICBvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRyb3Bkb3duIGFycm93IHRvIGEgYnV0dG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSBbMC40ZW1dIC0gU2l6ZSBvZiB0aGUgYXJyb3cuIFdlIHJlY29tbWVuZCB1c2luZyBhbiBgZW1gIHZhbHVlIHNvIHRoZSB0cmlhbmdsZSBzY2FsZXMgd2hlbiB1c2VkIGluc2lkZSBkaWZmZXJlbnQgc2l6ZXMgb2YgYnV0dG9ucy5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgW3doaXRlXSAtIENvbG9yIG9mIHRoZSBhcnJvdy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9mZnNldCBbJGJ1dHRvbi1wYWRkaW5nXSAtIERpc3RhbmNlIGJldHdlZW4gdGhlIGFycm93IGFuZCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uLiBEZWZhdWx0cyB0byB3aGF0ZXZlciB0aGUgcmlnaHQgcGFkZGluZyBvZiBhIGJ1dHRvbiBpcy5cbkBtaXhpbiBidXR0b24tZHJvcGRvd24oXG4gICRzaXplOiAwLjRlbSxcbiAgJGNvbG9yOiAkd2hpdGUsXG4gICRvZmZzZXQ6IGdldC1zaWRlKCRidXR0b24tcGFkZGluZywgcmlnaHQpXG4pIHtcbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCBkb3duKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwLjRlbTsgLy8gQWxpZ25zIHRoZSBhcnJvdyB3aXRoIHRoZSB0ZXh0IG9mIHRoZSBidXR0b25cblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmbG9hdDogI3skZ2xvYmFsLXJpZ2h0fTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG59XG5cbi8vLyBBZGRzIGFsbCBzdHlsZXMgZm9yIGEgYnV0dG9uLiBGb3IgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgc3R5bGVzLCB1c2UgdGhlIGluZGl2aWR1YWwgYnV0dG9uIG1peGlucy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW2ZhbHNlXSAtIFNldCB0byBgdHJ1ZWAgdG8gbWFrZSB0aGUgYnV0dG9uIGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0eWxlIFtzb2xpZF0gLSBTZXQgdG8gYGhvbGxvd2AgdG8gY3JlYXRlIGEgaG9sbG93IGJ1dHRvbi4gVGhlIGNvbG9yIGRlZmluZWQgaW4gYCRiYWNrZ3JvdW5kYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24oXG4gICRleHBhbmQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRzdHlsZTogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2U7XG5cbiAgQGlmICRzdHlsZSA9PSBzb2xpZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcbiAgfVxuICBAZWxzZSBpZiAkc3R5bGUgPT0gaG9sbG93IHtcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG5cbiAgQGlmICRleHBhbmQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uIHtcbiAgLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZXhwYW5kOyB9XG5cbiAgICAvLyBDb2xvcnNcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGhvbGxvdyB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuI3skbmFtZX0uZHJvcGRvd246OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlZCBzdHlsZVxuICAgICYuZGlzYWJsZWQsXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRpc2FibGVkO1xuXG4gICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZCgkY29sb3IsIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSG9sbG93IHN0eWxlXG4gICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xuICAgICAgJi5ob2xsb3cge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlO1xuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhciBzdHlsZVxuICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gY2xlYXIge1xuICAgICAgJi5jbGVhciB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGU7XG5cbiAgICAgICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgJiwgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XG5cbiAgICAgICAgICAgICYsICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgJixcbiAgICAgICAgICAgICAgJi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgJltkaXNhYmxlZF0ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEcm9wZG93biBhcnJvd1xuICAgICYuZHJvcGRvd24ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRyb3Bkb3duO1xuXG4gICAgICBAaWYgJGJ1dHRvbi1maWxsID09IGhvbGxvdyB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5ob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnV0dG9uIHdpdGggZHJvcGRvd24gYXJyb3cgb25seVxuICAgICYuYXJyb3ctb25seTo6YWZ0ZXIge1xuICAgICAgdG9wOiAtMC4xZW07XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b24tZ3JvdXBcbi8vLy9cblxuLy8vIE1hcmdpbiBmb3IgYnV0dG9uIGdyb3Vwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJyAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGJ1dHRvbnMgdGhhdCBjYW4gYmUgaW4gYW4gZXZlbi13aWR0aCBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcblxuLy8vIERldGVybWluZXMgaWYgJGJ1dHRvbi1yYWRpdXMgaXMgYXBwbGllZCB0byBlYWNoIGJ1dHRvbiBvciB0aGUgYnV0dG9uIGdyb3VwIGFzIGEgd2hvbGUuIFVzZSAkZ2xvYmFsLXJhZGl1cyBpbiBfc2V0dGluZ3Muc2NzcyB0byBjaGFuZ2UgcmFkaXVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZCBzdHlsZXMgZm9yIGEgYnV0dG9uIGdyb3VwIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNoaWxkLXNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cChcbiAgJGNoaWxkLXNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZ1xuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtbWFyZ2luO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgfVxuXG4gICN7JGNoaWxkLXNlbGVjdG9yfSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1leHBhbmQoXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmcsXG4gICRjb3VudDogbnVsbFxuKSB7XG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRzcGFjaW5nO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIE9uZSBjaGlsZFxuICAgICAgJjpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCVcbiAgICAgIH1cblxuICAgICAgLy8gVHdvIG9yIG1vcmUgY2hpbGRyZWVuXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRidXR0b25ncm91cC1leHBhbmQtbWF4IHtcbiAgICAgICAgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICYsICY6Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoI3skaX0pIH4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKCN7cGVyY2VudGFnZSgxIC8gJGkpfSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nICogLSRidXR0b25ncm91cC1leHBhbmQtbWF4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gU3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC11bnN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24tZ3JvdXAge1xuICAuYnV0dG9uLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXA7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggR3JvdXBcbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLWV4cGFuZDsgfVxuXG4gICAgLy8gQ29sb3JzXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZCxcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLFxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1zdGFjaztcbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbC5leHBhbmRlZCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgZm9yY2UtZWxlbWVudC1uZXN0aW5nXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb24tbWVudVxuLy8vL1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gYm9yZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1ib3JkZXI6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIExpc3RcbiRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyOiAkYWNjb3JkaW9ubWVudS1ib3JkZXIgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDogNDBweCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCBoZWlnaHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQ6bm90KC5oYXMtc3VibWVudS10b2dnbGUpID4gYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cbiAgJi5hbGlnbi1sZWZ0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogMXJlbTtcbiAgfVxuICAmLmFsaWduLXJpZ2h0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogMXJlbTtcbiAgfVxufVxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnUge1xuXG4gIC5hY2NvcmRpb24tbWVudSB7XG4gICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XG4gICAgICBib3JkZXItYm90dG9tOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgQGlmICRhY2NvcmRpb25tZW51LWJvcmRlciB7XG4gICAgICAgIGJvcmRlci10b3A6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICB9XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nO1xuICAgIH1cbiAgICBcbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgYSB7XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4sIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzO1xuXG4gICAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50W2FyaWEtZXhwYW5kZWQ9J3RydWUnXSA+IGE6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgbGkge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmhhcy1zdWJtZW51LXRvZ2dsZSA+IGEge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgfVxuXG4gIC8vIFN1Ym1lbnUgdG9nZ2xlXG4gIC5zdWJtZW51LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIHdpZHRoOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDtcblxuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyO1xuXG4gICAgQGlmICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGFycm93IHRvIHRoZSB0b2dnbGVcbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNnB4LCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG5cbiAgICAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cblxuICAvLyBSb3RhdGUgdGhlIGFycm93IHdoZW4gbWVudSBpcyBvcGVuXG4gIC5zdWJtZW51LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgfVxuXG4gIC5zdWJtZW51LXRvZ2dsZS10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWNjb3JkaW9uXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYW4gYWNjb3JkaW9uIGdyb3VwLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBwbHVzIGFuZCBtaW51cyBpY29ucyB0byB0aGUgc2lkZSBvZiBlYWNoIGFjY29yZGlvbiB0aXRsZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9uLXBsdXNtaW51czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBhY2NvcmRpb24gdGl0bGVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhbiBhY2NvcmRpb24gaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBhY2NvcmRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBnZXRzIGBkYXRhLWFjY29yZGlvbmAuXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRhaW5lciAoXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWJhY2tncm91bmRcbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAmW2Rpc2FibGVkXSB7XG4gICAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGlzdCBpdGVtIHdpdGhpbiBhbiBhY2NvcmRpb24gdWwuXG5AbWl4aW4gYWNjb3JkaW9uLWl0ZW0ge1xuICAmOmZpcnN0LWNoaWxkID4gOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cyAwIDA7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQgPiA6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHRpdGxlIG9mIGFuIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaW5rIHdpdGhpbiBhbiBhY2NvcmRpb24gaXRlbS5cbkBtaXhpbiBhY2NvcmRpb24tdGl0bGUgKFxuICAkcGFkZGluZzogJGFjY29yZGlvbi1pdGVtLXBhZGRpbmcsXG4gICRmb250LXNpemU6ICRhY2NvcmRpb24tdGl0bGUtZm9udC1zaXplLFxuICAkY29sb3I6ICRhY2NvcmRpb24taXRlbS1jb2xvcixcbiAgJGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcixcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXG4pIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuXG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgOmxhc3QtY2hpbGQ6bm90KC5pcy1hY3RpdmUpID4gJiB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgfVxuXG4gIEBpZiAkYWNjb3JkaW9uLXBsdXNtaW51cyB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICAgIG1hcmdpbi10b3A6IC0wLjVyZW07XG4gICAgICBjb250ZW50OiAnKyc7XG4gICAgfVxuXG4gICAgLmlzLWFjdGl2ZSA+ICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnXFwyMDEzJztcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhY2NvcmRpb24gY29udGVudC4gQXBwbHkgdGhpcyB0byB0aGUgY29udGVudCBwYW5lIGJlbG93IGFuIGFjY29yZGlvbiBpdGVtJ3MgdGl0bGUuXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRlbnQgKFxuICAkcGFkZGluZzogJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmcsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWNvbnRlbnQtY29sb3Jcbikge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuXG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgOmxhc3QtY2hpbGQgPiAmOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYWNjb3JkaW9uIHtcbiAgLmFjY29yZGlvbiB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5hY2NvcmRpb24taXRlbSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWl0ZW07XG4gIH1cblxuICAuYWNjb3JkaW9uLXRpdGxlIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tdGl0bGU7XG4gIH1cblxuICAuYWNjb3JkaW9uLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBiYWRnZVxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJhZGdlLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgYSBiYWRnZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1taW53aWR0aDogMi4xZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBiYWRnZS5cbkBtaXhpbiBiYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLXdpZHRoOiAkYmFkZ2UtbWlud2lkdGg7XG4gIHBhZGRpbmc6ICRiYWRnZS1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBmb250LXNpemU6ICRiYWRnZS1mb250LXNpemU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tYmFkZ2Uge1xuICAuYmFkZ2Uge1xuICAgIEBpbmNsdWRlIGJhZGdlO1xuXG4gICAgYmFja2dyb3VuZDogJGJhZGdlLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRiYWRnZS1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJhZGdlLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGJhZGdlLWNvbG9yLCAkYmFkZ2UtY29sb3ItYWx0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVhZGNydW1ic1xuLy8vL1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBhY3RpdmUgYnJlYWRjcnVtYiBsaW5rLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBPcGFjaXR5IG9mIGRpc2FibGVkIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnJlYWRjcnVtYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgbWFrZXMgYnJlYWRjcnVtYiBsaW5rcyB1cHBlcmNhc2UuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIGEgc2VwZXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoKSB7XG4gICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g7XG59XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLycgIWRlZmF1bHQ7XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yIGluIHJ0bCBtb2RlLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgICBmb250LXNpemU6ICRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvciB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2VwYXJhdG9yOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdsdHInLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbSwgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29udGVudDogJHNlcGFyYXRvcjtcbiAgICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcbiAgLmJyZWFkY3J1bWJzIHtcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNhbGxvdXRcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIHZhbHVlIGZvciBjYWxsb3V0IGJhY2tncm91bmRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZSBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTGlzdFxuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgaW5uZXIgcGFkZGluZyBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMsIGlmIHRoZSBjYWxsb3V0IGhhcyBhIGRhcmsgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQW1vdW50IHRvIHRpbnQgbGlua3MgdXNlZCB3aXRoaW4gY29sb3JlZCBwYW5lbHMuIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLlxuLy8vIEB0eXBlIE51bWJlciB8IEJvb2xlYW5cbiRjYWxsb3V0LWxpbmstdGludDogMzAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGEgY2FsbG91dCwgaW5jbHVkaW5nIHBhZGRpbmcgYW5kIG1hcmdpbi5cbkBtaXhpbiBjYWxsb3V0LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAkY2FsbG91dC1tYXJnaW47XG4gIHBhZGRpbmc6ICRjYWxsb3V0LXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkY2FsbG91dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRjYWxsb3V0LXJhZGl1cztcblxuICAvLyBSZXNwZWN0IHRoZSBwYWRkaW5nLCBmb29sLlxuICA+IDpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHF1aWNrIHN0eWxlcyBmb3IgYSBjYWxsb3V0IHVzaW5nIGEgc2luZ2xlIGNvbG9yIGFzIGEgYmFzZWxpbmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0LXN0eWxlKCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICAkYmFja2dyb3VuZDogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGUpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRjYWxsb3V0LWZvbnQtY29sb3IsICRjYWxsb3V0LWZvbnQtY29sb3ItYWx0KSk7XG59XG5cbkBtaXhpbiBjYWxsb3V0LXNpemUoJHBhZGRpbmcpIHtcbiAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYWxsb3V0LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dCgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgQGluY2x1ZGUgY2FsbG91dC1iYXNlO1xuICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhbGxvdXQge1xuICAuY2FsbG91dCB7XG4gICAgQGluY2x1ZGUgY2FsbG91dDtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc21hbGwge1xuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDAuNXJlbSk7XG4gICAgfVxuXG4gICAgJi5sYXJnZSB7XG4gICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoM3JlbSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYXJkXG4vLy8vXG5cbi8vLyBEZWZ1YWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FyZHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZS5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY2FyZCBzaGFkb3cuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhcmQtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luLlxuLy8vIEB0eXBlIG51bWJlclxuJGNhcmQtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gZm9udCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiAtIEJvdHRvbSBtYXJnaW4gb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkYm9yZGVyIC0gQm9yZGVyIGFyb3VuZCB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYWRpdXMgLSBib3JkZXIgcmFkaXVzIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHNoYWRvdyAtIGJveCBzaGFkb3cgb2YgdGhlIGNhcmQuXG5AbWl4aW4gY2FyZC1jb250YWluZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRjYXJkLWZvbnQtY29sb3IsXG4gICRtYXJnaW46ICRjYXJkLW1hcmdpbi1ib3R0b20sXG4gICRib3JkZXI6ICRjYXJkLWJvcmRlcixcbiAgJHJhZGl1czogJGNhcmQtYm9yZGVyLXJhZGl1cyxcbiAgJHNoYWRvdzogJGNhcmQtc2hhZG93XG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuXG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGRpdmlkZXIuXG5AbWl4aW4gY2FyZC1kaXZpZGVyKFxuICAkYmFja2dyb3VuZDogJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kLFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIHNlY3Rpb24uXG5AbWl4aW4gY2FyZC1zZWN0aW9uKFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhcmQge1xuICAuY2FyZCB7XG4gICAgQGluY2x1ZGUgY2FyZC1jb250YWluZXI7XG4gIH1cblxuICAuY2FyZC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBjYXJkLWRpdmlkZXI7XG4gIH1cblxuICAuY2FyZC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBjYXJkLXNlY3Rpb247XG4gIH1cblxuICAvLyBGb3IgSUUgMTEgLSBGbGV4YnVnXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MvaXNzdWVzLzc1XG4gIC5jYXJkLWltYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNsb3NlLWJ1dHRvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLiBUaGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGByaWdodGAgb3IgYGxlZnRgLCBhbmQgdGhlIHNlY29uZCB2YWx1ZSBzaG91bGQgYmUgYHRvcGAgb3IgYGJvdHRvbWAuXG4vLy8gQHR5cGUgTGlzdFxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCAob3IgbGVmdCkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcbiAgc21hbGw6IDAuNjZyZW0sXG4gIG1lZGl1bTogMXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXG4gIHNtYWxsOiAwLjMzZW0sXG4gIG1lZGl1bTogMC41cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24gd2hlbiBiZWluZyBob3ZlcmVkIG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcblxuXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHNpemUgbmFtZSBleGlzdHMgaW4gdGhlIHZhbHVlIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkdmFsdWUsICRzaXplKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXG5AbWl4aW4gY2xvc2UtYnV0dG9uLXNpemUoJHNpemUpIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcbiAgZm9udC1zaXplOiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1zaXplLCAkc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKHNtYWxsKSB9XG4gICAgJiwgJi5tZWRpdW0geyBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZShtZWRpdW0pIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJpbGxkb3duXG4vLy8vXG5cbi8vLyBUcmFuc2l0aW9uIHByb3BlcnR5IHRvIHVzZSBmb3IgYW5pbWF0aW5nIG1lbnVzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhciAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYXJyb3dzIHRvIGRyaWxsZG93biBpdGVtcyB3aXRoIHN1Ym1lbnVzLCBhcyB3ZWxsIGFzIHRoZSBiYWNrIGJ1dHRvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJpbGxkb3duLWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgbmVzdGVkIG1hcmdpblxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1uZXN0ZWQtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHRvcCBsZXZlbCBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZyBpbiB0aGUgc3VibWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gc3VibWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gemYtZHJpbGxkb3duLWxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IC0xICogJGRyaWxsZG93bi1hcnJvdy1zaXplO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtcmlnaHQpO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tbGVmdCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgcmlnaHQpO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gIH1cblxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5hbmltYXRlLWhlaWdodCB7XG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgdG9wIGxldmVsIDx1bD5cbiAgLmRyaWxsZG93biB7XG4gICAgYSB7XG4gICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLy8gQXBwbGllZCB0byBzdWJtZW51IDx1bD5zXG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICAgIHotaW5kZXg6IC0xO1xuXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgICAgdHJhbnNpdGlvbjogJGRyaWxsZG93bi10cmFuc2l0aW9uO1xuXG4gICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XG4gICAgICB9XG5cbiAgICAgICYuaXMtY2xvc2luZyB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgMTAwJSwgLTEwMCUpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3VibWVudSBpdGVtIHBhZGRpbmdcbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgLmRyaWxsZG93bi1zdWJtZW51LWNvdmVyLXByZXZpb3VzIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1sZWZ0KTtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fS13aWR0aDogMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC43NXJlbTsgLy8gQ3JlYXRlcyBzcGFjZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHRcblxuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9LXdpZHRoOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZHJvcGRvd24tbWVudVxuLy8vL1xuXG4vLy8gRW5hYmxlcyBhcnJvd3MgZm9yIGl0ZW1zIHdpdGggZHJvcGRvd24gbWVudXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyb3Bkb3dubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyb3Bkb3duIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBwYWRkaW5nIGZvciBhbGlnbmluZyB0aGUgYXJyb3cgY29ycmVjdGx5LlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nOiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRvcCBsZXZlbCBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gID4gYTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1yaWdodH06IDE0cHg7XG4gIH1cblxuICAmLm9wZW5zLWxlZnQgPiBhOjphZnRlciB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogNXB4O1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHtcbiAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkub3BlbnMtcmlnaHQge1xuICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgID4gbGkuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDVweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgID4gbGkge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDA7XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtbGVmdCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtcmlnaHQge1xuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93bi1tZW51IHtcbiAgLmRyb3Bkb3duLm1lbnUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuXG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgICBwYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlIHN0YXRlXG4gICAgLmlzLWFjdGl2ZSA+IGEge1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAubm8tanMgJiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgYTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLWlubmVyID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuXG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xuXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDtcblxuICAgIC5kcm9wZG93biAmIGEge1xuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAodHlwZS1vZigkZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCkgPT0gJ251bWJlcicpIHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgbWFyZ2luLXRvcDogKC0kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBsaSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBbVE9ET10gQ3V0IGJhY2sgc3BlY2lmaWNpdHlcbiAgICAvLyY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsIC8vIHdoeSBpcyB0aGlzIGxpbmUgbmVlZGVkPyBPcGVuaW5nIGlzIGhhbmRsZWQgYnkgSlMgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdWdseSBmbGlja2VyaW5nIHdoZW4gdGhlIHN1YiBpcyByZS1wb3NpdGlvbmVkIGF1dG9tYXRpY2FsbHkuLi5cbiAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyb3Bkb3duXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWZvbnQtc2l6ZTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi13aWR0aDogMzAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgZHJvcGRvd24gcGFuZXMuIEVhY2ggc2l6ZSBpcyBhIENTUyBjbGFzcyB5b3UgY2FuIGFwcGx5LlxuLy8vIEB0eXBlIE1hcFxuJGRyb3Bkb3duLXNpemVzOiAoXG4gIHRpbnk6IDEwMHB4LFxuICBzbWFsbDogMjAwcHgsXG4gIGxhcmdlOiA0MDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgYSBiYXNpYyBkcm9wZG93bi5cbkBtaXhpbiBkcm9wZG93bi1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuXG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nO1xuXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgZGlzcGxheTogbm9uZTtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmFja2dyb3VuZDtcblxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XG5cblxuICAvLyBBbGxvdyBhbiBpbnRlcm1pdHRlbnQgc3RhdGUgdG8gZG8gcG9zaXRpb25pbmcgYmVmb3JlIG1ha2luZyB2aXNpYmxlLlxuICAmLmlzLW9wZW5pbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJi5pcy1vcGVuIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcbiAgLmRyb3Bkb3duLXBhbmUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWNvbnRhaW5lcjtcbiAgfVxuXG4gIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkZHJvcGRvd24tc2l6ZXMge1xuICAgIC5kcm9wZG93bi1wYW5lLiN7JG5hbWV9IHtcbiAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIEZsZXhib3ggVXRpbGl0aWVzXG4vLy8vXG4vL1xuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb3VudCBvZiBzb3VyY2Ugb3JkZXJpbmdgXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQ6IDYgIWRlZmF1bHQ7XG5cbi8vLyBRdWlja2x5IGRpc2FibGUvZW5hYmxlIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIFZhbmlsbGEgRmxleCBIZWxwZXJzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHM6IHRydWUgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmbGV4LWhlbHBlcnMge1xuICAuZmxleC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGZsZXg7XG4gIH1cblxuICAuZmxleC1jaGlsZC1hdXRvIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWdyb3cge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuXG4gIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgIC5mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWF1dG8ge1xuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1zaHJpbmsge1xuICAgICAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tZmxleC1kaXItI3skZGlyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzIHtcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdXNpbmcganVzdGlmeS1jb250ZW50XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnbGVmdCcpIHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgU3BlY2lmaWNhbGx5IGZvciBWZXJ0aWNhbCBNZW51XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnbGVmdCcsICdqdXN0aWZ5JywgJ3NwYWNlZCcpIHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgJi52ZXJ0aWNhbC5tZW51ID4gbGkgPiBhIHsgXG4gICAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcbiAgQGVhY2ggJHZkaXIsICRwcm9wIGluICQtemYtZmxleC1hbGlnbiB7XG4gICAgLmFsaWduLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHk6ICR2ZGlyKTtcbiAgICB9XG5cbiAgICAuYWxpZ24tc2VsZi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHk6ICR2ZGlyKTtcbiAgICB9XG4gIH1cblxuICAvLyBDZW50cmFsIGFsaWdubWVudCBvZiBjb250ZW50XG4gIC5hbGlnbi1jZW50ZXItbWlkZGxlIHtcbiAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiBjZW50ZXIsICR5OiBtaWRkbGUpO1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC8vIFNvdXJjZSBvcmRlcmluZ1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudCB7XG4gICAgICAuI3skLXpmLXNpemV9LW9yZGVyLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1vcmRlcigkaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmFuaWxsYSBGbGV4Ym94IEhlbHBlcnNcbiAgQGluY2x1ZGUgZmxleC1oZWxwZXJzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmVzcG9uc2l2ZS1lbWJlZFxuLy8vL1xuXG4vLy8gTWFyZ2luIGJlbG93IGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBBc3BlY3QgcmF0aW9zIHVzZWQgdG8gZGV0ZXJtaW5lIHBhZGRpbmctYm90dG9tIG9mIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVycy5cbi8vLyBAdHlwZSBNYXBcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxuICBkZWZhdWx0OiA0IGJ5IDMsXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXG4pICFkZWZhdWx0O1xuXG4vLyBXQVJOSU5HOiBXaWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA2LjRcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvOiBkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyBhIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfExpc3R9ICRyYXRpbyBbZGVmYXVsdF0gLSBSYXRpbyBvZiB0aGUgY29udGFpbmVyLiBDYW4gYmUgYSBrZXkgZnJvbSB0aGUgYCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvc2AgbWFwIG9yIGEgbGlzdCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG5AbWl4aW4gcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpIHtcbiAgQGlmIHR5cGUtb2YoJHJhdGlvKSA9PSAnc3RyaW5nJyB7XG4gICAgJHJhdGlvOiBtYXAtZ2V0KCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcywgJHJhdGlvKTtcbiAgfVxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luLWJvdHRvbTogJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTtcbiAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBpZnJhbWUsXG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCB7XG4gIC5yZXNwb25zaXZlLWVtYmVkLFxuICAuZmxleC12aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpO1xuXG4gICAgJHJhdGlvczogbWFwLXJlbW92ZSgkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3MsZGVmYXVsdCk7XG5cbiAgICBAZWFjaCAkbmFtZSwgJHJhdGlvIGluICRyYXRpb3Mge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtdmlkZW8ge1xuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQoKS4gZm91bmRhdGlvbi1mbGV4LXZpZGVvKCkgd2lsbCBiZSByZW1vdmVkIGluIEZvdW5kYXRpb24gNi40Lic7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbn1cblxuQG1peGluIGZsZXgtdmlkZW8oJHJhdGlvOiAkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpbykge1xuICBAd2FybiAnVGhpcyBtaXhpbiBpcyBiZWluZyByZXBsYWNlZCBieSByZXNwb25zaXZlLWVtYmVkKCkuIGZsZXgtdmlkZW8oKSB3aWxsIGJlIHJlbW92ZWQgaW4gRm91bmRhdGlvbiA2LjQuJztcbiAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW8pO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbGFiZWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYmFzZSBzdHlsZXMgZm9yIGEgbGFiZWwuXG5AbWl4aW4gbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6ICRsYWJlbC1yYWRpdXM7XG5cbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1sYWJlbCB7XG4gIC5sYWJlbCB7XG4gICAgQGluY2x1ZGUgbGFiZWw7XG5cbiAgICBiYWNrZ3JvdW5kOiAkbGFiZWwtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkbGFiZWwtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkbGFiZWwtY29sb3IsICRsYWJlbC1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lZGlhLW9iamVjdFxuLy8vL1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIExlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb24gc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgaW1hZ2VzIHdpdGhpbiBhIG1lZGlhIG9iamVjdCwgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YWNrZWQgdmVydGljYWxseS4gU2V0IHRvICdhdXRvJyB0byB1c2UgdGhlIGltYWdlJ3MgbmF0dXJhbCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbWVkaWEgb2JqZWN0IGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCBibG9jayk7XG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3Igc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZ10gLSBQYWRkaW5nIGJldHdlZW4gc2VjdGlvbnMuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXNlY3Rpb24oJHBhZGRpbmc6ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmcpIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJHBhZGRpbmc7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQ6bm90KDpudGgtY2hpbGQoMikpIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1sZWZ0fTogJHBhZGRpbmc7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBzdGFjayBzZWN0aW9ucyBvZiBhIG1lZGlhIG9iamVjdC4gQXBwbHkgdGhpcyB0byB0aGUgc2VjdGlvbiBlbGVtZW50cywgbm90IHRoZSBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXN0YWNrIHtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1ib3R0b206ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0IHtcbiAgLm1lZGlhLW9iamVjdCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LWNvbnRhaW5lcjtcblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9IC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXN0YWNrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXNlY3Rpb247XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICYubWFpbi1zZWN0aW9uIHtcbiAgICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJi5taWRkbGUge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuXG4gICAgICAmLmJvdHRvbSB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZW51XG4vLy8vXG5cbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gTGVmdC1oYW5kIG1hcmdpbiBvZiBhIG5lc3RlZCBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciBpdGVtcyBpbiBhIHBpbGwgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWl0ZW1zLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gbWFyZ2luIGZvciBpdGVtcyBpbiBhIHNpbXBsZSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtc2ltcGxlLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGFuIGljb24gYW5kIHRleHQgaW4gYSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pY29uLXNwYWNpbmc6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbiBob3ZlcmVkIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgc3RhdGUuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGBhY3RpdmVgIHdpdGggYGlzLWFjdGl2ZWAuIFxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBhY3RpdmVgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1zdGF0ZS1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgY2VudGVyZWQuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGAubWVudS1jZW50ZXJlZCA+IC5tZW51YCB3aXRoIGAubWVudS5hbGlnbi1jZW50ZXJgLiBcbi8vLyBCdXQgcGxlYXNlIG5vdGUgdGhhdCBgbWVudS1jZW50ZXJlZGAgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgTWVudS5cbkBtaXhpbiBtZW51LWJhc2Uge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gIGxpIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIH1cblxuICBhLFxuICAuYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtcy1wYWRkaW5nO1xuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXG4gIGlucHV0LFxuICBzZWxlY3QsXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLy8vIEV4cGFuZHMgdGhlIGl0ZW1zIG9mIGEgTWVudSwgc28gZWFjaCBpdGVtIGlzIHRoZSBzYW1lIHdpZHRoLlxuQG1peGluIG1lbnUtZXhwYW5kIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgbGkge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgPiBsaSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFsaWduIG1lbnUgaXRlbXMuXG5AbWl4aW4gbWVudS1hbGlnbigkYWxpZ25tZW50KSB7XG4gIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi52ZXJ0aWNhbCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSBjZW50ZXIge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnUuIFRoaXMgZWZmZWN0cyB0aGUgc2lkZSBvZiB0aGUgYDxsaT5gIHRoYXQgcmVjZWl2ZXMgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiBbJG1lbnUtc2ltcGxlLW1hcmdpbl0gLSBUaGUgbWFyZ2luIHRvIGFwcGx5IHRvIGVhY2ggYDxsaT5gLlxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCwgJG1hcmdpbjogJG1lbnUtc2ltcGxlLW1hcmdpbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgbGkgKyBsaSB7XG4gICAgbWFyZ2luLSN7JGRpcn06ICRtYXJnaW47XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJG1hcmdpbiBbJG1lbnUtbmVzdGVkLW1hcmdpbl0gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRuZXN0ZWQtYWxpZ25tZW50IFtsZWZ0XSAtIEFsaWdubWVudCBvZiB0aGUgbmVzdGVkIGNsYXNzXG5AbWl4aW4gbWVudS1uZXN0ZWQoXG4gICRtYXJnaW46ICRtZW51LW5lc3RlZC1tYXJnaW4sXG4gICRuZXN0ZWQtYWxpZ25tZW50OiBsZWZ0XG4pIHtcbiAgQGlmICRuZXN0ZWQtYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1hcmdpbjtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xuICB9XG5cbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBpY29ucyBpbiBtZW51cy5cbkBtaXhpbiBtZW51LWljb25zKCkge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBpbWcsXG4gICAgaSxcbiAgICBzdmcge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgKyBzcGFuIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgcG9zaXRpb24gY2xhc3NlcyBmb3IgaWNvbnMgd2l0aGluIGEgbWVudS5cbkBtaXhpbiBtZW51LWljb24tcG9zaXRpb24oJHBvc2l0aW9uOiBsZWZ0LCAkc3BhY2luZzogJG1lbnUtaWNvbi1zcGFjaW5nKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRzcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIHBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xuXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiBtZW51LXN0YXRlLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gIGNvbG9yOiAkbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVudSB7XG4gIC5tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LWJhc2U7XG5cbiAgICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uOiBob3Jpem9udGFsXG4gICAgJiwgJi5ob3Jpem9udGFsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIG1vZGlmaWVyXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBtb2RpZmllciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlXG4gICAgJi5zaW1wbGUge1xuICAgICAgQGluY2x1ZGUgbWVudS1zaW1wbGU7XG4gICAgfVxuXG4gICAgLy8gQnJlYWtwb2ludCBzcGVjaWZpYyB2ZXJzaW9uc1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiBmYWxzZSkge1xuICAgICAgJi4jeyQtemYtc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tc2ltcGxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYubmVzdGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkO1xuICAgIH1cblxuICAgIC8vIEljb24gQmFzZSBTdHlsZXNcbiAgICAmLmljb25zIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBMZWZ0XG4gICAgJi5pY29uLWxlZnQge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKGxlZnQpO1xuICAgIH1cblxuICAgIC8vIEljb24gUmlnaHRcbiAgICAmLmljb24tcmlnaHQge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHJpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBJY29uIFRvcFxuICAgICYuaWNvbi10b3Age1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHRvcCk7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBCb3R0b21cbiAgICAmLmljb24tYm90dG9tIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihib3R0b20pO1xuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBzdGF0ZVxuICAgIC5pcy1hY3RpdmUgPiBhIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xuICAgIH1cbiAgICBcbiAgICAvLyBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IGZvciBhY3RpdmUgc3RhdGVcbiAgICBAaWYgJG1lbnUtc3RhdGUtYmFjay1jb21wYXQge1xuICAgICAgLmFjdGl2ZSA+IGEge1xuICAgICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGlnbiBsZWZ0XG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtbGVmdH0ge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBBbGlnbiByaWdodFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKHJpZ2h0KTtcblxuICAgICAgLm5lc3RlZCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRuZXN0ZWQtYWxpZ25tZW50OiByaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gY2VudGVyXG4gICAgJi5hbGlnbi1jZW50ZXIge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihjZW50ZXIpO1xuICAgIH1cblxuICAgIC5tZW51LXRleHQge1xuICAgICAgQGluY2x1ZGUgbWVudS10ZXh0O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdCB7XG4gICAgLm1lbnUtY2VudGVyZWQge1xuICAgICAgPiAubWVudSB7XG4gICAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJldmVudCBGT1VDIHdoZW4gdXNpbmcgdGhlIFJlc3BvbnNpdmUgTWVudSBwbHVnaW5cbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUtaWNvbiB7XG4gIC5tZW51LWljb24ge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkY29sb3I6ICR0aXRsZWJhci1pY29uLWNvbG9yLCAkY29sb3ItaG92ZXI6ICR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyKTtcbiAgfVxuXG4gIC5tZW51LWljb24uZGFyayB7XG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvZmYtY2FudmFzXG4vLy8vXG5cbi8vLyBXaWR0aCBvZiBhIGxlZnQvcmlnaHQgb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtc2l6ZTogMjUwcHggIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSB0b3AvYm90dG9tIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemU6IDI1MHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBmb3IgdGhlIG9mZi1jYW52YXMgb3ZlcmxhcCBwYW5lbC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIGNvbnRlbnQgb3ZlcmxheS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB1c2luZyB0aGUgYHJldmVhbC1mb3ItKmAgY2xhc3NlcyBvciBtaXhpbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cyAhZGVmYXVsdDtcblxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgS2V5d29yZFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYSByZXZlYWxlZCBvZmYtY2FudmFzIHdpbGwgYmUgZml4ZWQtcG9zaXRpb24sIGFuZCBzY3JvbGwgd2l0aCB0aGUgc2NyZWVuLlxuLy8vIEB0eXBlIEJvb2xcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2ljcyB7XG5cbiAgLy8gQ2hlY2tzIHRoZSB6LWluZGV4ZXMgYW5kIGluY3JlYXNlIHRoZW0gZHVlIHRvIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXggPD0gJG9mZmNhbnZhcy1wdXNoLXppbmRleCB7ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG5cbiAgLy8gSGlkZXMgb3ZlcmZsb3cgb24gYm9keSB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXG4gIC5qcy1vZmYtY2FudmFzLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG4gICAgXG4gICAgJi5pcy1vdmVybGF5LWZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgd3JhcHBlci5cbkBtaXhpbiBvZmYtY2FudmFzLXdyYXBwZXIoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtYmFzZShcbiAgJGJhY2tncm91bmQ6ICRvZmZjYW52YXMtYmFja2dyb3VuZCxcbiAgJHRyYW5zaXRpb246ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZyxcbiAgJGZpeGVkOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuXG4gIEBpZiAkZml4ZWQgPT0gdHJ1ZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAvLyBTZXQgdGhlIG9mZi1jYW52YXMgei1pbmRleC5cbiAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXg7XG4gIH1cblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcblxuICAvLyBIaWRlIGluYWN0aXZlIG9mZi1jYW52YXMgd2l0aGluIHRoZSBjb250ZW50IHRoYXQgaGF2ZSB0aGUgc2FtZSBwb3NpdGlvblxuICAmLmlzLWNsb3NlZCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLy8gT3ZlcmxhcCBvbmx5IHN0eWxlcy5cbiAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAge1xuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgYm94LXNoYWRvdzogJG9mZmNhbnZhcy1zaGFkb3c7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0cyB0cmFuc2Zvcm0gdG8gMCB0byBzaG93IGFuIG9mZi1jYW52YXMgcGFuZWwuXG4gICYuaXMtb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRvIHBvc2l0aW9uIGFuIG9mZi1jYW52YXMgcGFuZWwgdG8gdGhlIGxlZnQvcmlnaHQvdG9wL2JvdHRvbS5cbkBtaXhpbiBvZmYtY2FudmFzLXBvc2l0aW9uKFxuICAkcG9zaXRpb246IGxlZnQsXG4gICRvcmllbnRhdGlvbjogaG9yaXpvbnRhbCxcbiAgJHNpemU6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemUsICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSlcbikge1xuICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIFxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBcbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcblxuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHNpemU7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIGlzIHNldCwgYWRkIGlubmVyIGJveC1zaGFkb3cuXG4gIC8vIFRoaXMgbWltaWNzIHRoZSBvZmYtY2FudmFzIHBhbmVsIGhhdmluZyBhIGxvd2VyIHotaW5kZXgsIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgb25lLlxuICBAaWYgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSB7XG4gICAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cocmlnaHQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGxlZnQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhib3R0b20sICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyh0b3AsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICB9ICAgIFxuICB9XG5cbn1cblxuLy8vIFNldHMgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbnRlbnQgY29udGFpbmVyLlxuQG1peGluIG9mZi1jYW52YXMtY29udGVudCgpIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgLy8gVHJhbnNmb3JtIHNjb3BlIHVudGlsIHRoZSBlbGVtZW50IGlzIGNsb3NlZCAobWFrZXMgc3VyZSB0cmFuc2l0aW9uZW5kIGdldHMgdHJpZ2dlcmVkKVxuICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgZWxlbWVudCAmIGNvbnRlbnQsIG5lc3RlZCBpbiBhbm90aGVyIGNvbnRlbnRcbiAgLm9mZi1jYW52YXMuaXMtb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRoYXQgcmV2ZWFsIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1yZXZlYWwoXG4kcG9zaXRpb246IGxlZnQsXG4kemluZGV4OiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsXG4kY29udGVudDogJG1haW5jb250ZW50LWNsYXNzXG4pIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICB6LWluZGV4OiAkemluZGV4O1xuICB0cmFuc2l0aW9uOiBub25lO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gIEBpZiBub3QgJG9mZmNhbnZhcy1maXhlZC1yZXZlYWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBDb25zaWRlciByZXZlYWxlZCBlbGVtZW50IGlzIG5lc3RlZCBpbiBjb250ZW50XG4gIC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgQGF0LXJvb3QgLiN7JGNvbnRlbnR9Lmhhcy1yZXZlYWwtI3skcG9zaXRpb259IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAkb2ZmY2FudmFzLXNpemU7XG4gIH1cblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAocHJpb3IgdG8gdjYuNClcbiAgJiB+IC4jeyRjb250ZW50fSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogJG9mZmNhbnZhcy1zaXplO1xuICB9XG59XG5cbi8vLyBPdmVycmlkZXMgdGhlIG9mZi1jYW52YXMgc3R5bGVzXG5AbWl4aW4gaW4tY2FudmFzKCkge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gIHdpZHRoOiBpbmhlcml0O1xuICBvdmVyZmxvdzogaW5oZXJpdDtcbiAgdHJhbnNpdGlvbjogaW5oZXJpdDtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5wb3NpdGlvbi1sZWZ0LFxuICAmLnBvc2l0aW9uLXJpZ2h0LFxuICAmLnBvc2l0aW9uLXRvcCxcbiAgJi5wb3NpdGlvbi1ib3R0b20ge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XG5cbiAgLy8gT2ZmLWNhbnZhcyB3cmFwcGVyXG4gIC5vZmYtY2FudmFzLXdyYXBwZXIge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtd3JhcHBlcjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyXG4gIC5vZmYtY2FudmFzIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2U7XG5cbiAgICAvLyBGb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSBmb3IgbmVzdGVkIG9mZi1jYW52YXMgYmVjYXVzZSBmaXhlZCBkb2Vzbid0IHdvcmsgZm9yIHB1c2ggdHJhbnNpdGlvbiB3aXRoaW4gdGhlIHRyYW5zZm9ybSBzY29wZS5cbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgICAgLy8gTk9URTogc2luY2Ugb3ZlcmxhcCB0cmFuc2l0aW9uIGlzIGN1cnJlbnRseSBmb3JjZWQgaWYgbmVzdGVkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgdW50aWwgbmVzdGVkIHB1c2ggdHJhbnNpdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxuICAub2ZmLWNhbnZhcy1hYnNvbHV0ZSB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi1yaWdodCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCwgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cblxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5wb3NpdGlvbi1sZWZ0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXJpZ2h0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi10b3AucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwodG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1ib3R0b20ucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1vdmUgaW4tY2FudmFzIGZvciBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5vZmYtY2FudmFzLmluLWNhbnZhcy1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGluLWNhbnZhcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvcmJpdFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpYW1ldGVyIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmcm9tIE9yYml0J3MgYnVsbGV0cyB0byB3aGF0ZXZlciBjb250ZW50IG1heSBsdXJrIGJlbG93IGl0LlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY29udHJvbHMgd2hlbiBob3ZlcmVkLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBvdXRlciBPcmJpdCB3cmFwcGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXRgIGNsYXNzLlxuQG1peGluIG9yYml0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1zbGlkZSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICYubm8tbW90aW9udWkge1xuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBvcmJpdC1maWd1cmUge1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzbGlkZSBjb250YWluaW5nIGFuIGltYWdlLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtaW1hZ2VgIGNsYXNzLlxuQG1peGluIG9yYml0LWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIG9yYml0IHNsaWRlIGNhcHRpb24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1jYXB0aW9uYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jYXB0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiAkb3JiaXQtY2FwdGlvbi1wYWRkaW5nO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQpO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBpbiBhbiBPcmJpdCBzbGlkZXIuIFRoZXNlIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIGAub3JiaXQtbmV4dGAgYW5kIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzZXMgaW4gdGhlIGRlZmF1bHQgQ1NTLlxuQG1peGluIG9yYml0LWNvbnRyb2wge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgei1pbmRleDogJG9yYml0LWNvbnRyb2wtemluZGV4O1xuICBwYWRkaW5nOiAkb3JiaXQtY29udHJvbC1wYWRkaW5nO1xuICBjb2xvcjogJHdoaXRlO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXByZXZpb3VzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1wcmV2aW91cyB7XG4gICN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgbmV4dCBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1uZXh0YCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1uZXh0IHtcbiAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY29udGFpbmVyIG9mIE9yYml0IGJ1bGxldHMuIC8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IHByZXZpb3VzIGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWJ1bGxldHNgIGNsYXNzLlxuQG1peGluIG9yYml0LWJ1bGxldHMge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wO1xuICBtYXJnaW4tYm90dG9tOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b207XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBidXR0b24ge1xuICAgIHdpZHRoOiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIGhlaWdodDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBtYXJnaW46ICRvcmJpdC1idWxsZXQtbWFyZ2luO1xuXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vcmJpdCB7XG4gIC5vcmJpdCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtd3JhcHBlcjtcbiAgfVxuXG4gIC5vcmJpdC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5vcmJpdC1zbGlkZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtc2xpZGU7XG4gIH1cblxuICAub3JiaXQtZmlndXJlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1maWd1cmU7XG4gIH1cblxuICAub3JiaXQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIG9yYml0LWltYWdlO1xuICB9XG5cbiAgLm9yYml0LWNhcHRpb24ge1xuICAgIEBpbmNsdWRlIG9yYml0LWNhcHRpb247XG4gIH1cblxuICAlb3JiaXQtY29udHJvbCB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udHJvbDtcbiAgfVxuXG4gIC5vcmJpdC1wcmV2aW91cyB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1wcmV2aW91cztcbiAgfVxuXG4gIC5vcmJpdC1uZXh0IHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LW5leHQ7XG4gIH1cblxuICAub3JiaXQtYnVsbGV0cyB7XG4gICAgQGluY2x1ZGUgb3JiaXQtYnVsbGV0cztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcGFnaW5hdGlvblxuLy8vL1xuXG4vLy8gRm9udCBzaXplIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFnaW5hdGlvbiBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCBtYXJnaW4gdG8gc2VwYXJhdGUgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBlbGxpcHNpcyBpbiBhIHBhZ2luYXRpb24gbWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3Ncbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXkgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgb24gbW9iaWxlIGV2ZW4gaWYgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGBmYWxzZWAuXG4vLy8gVGhpcyBwYXJhbWV0ZXIgd2lsbCBvbmx5IG92ZXJyaWRlIHRoZSB2aXNpYmlsaXR5IHNldHRpbmcgb2YgdGhlIGN1cnJlbnQgaXRlbSBmb3IgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7YCxcbi8vLyBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgdmlzaWJpbGl0eSB3aGVuIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgdHJ1ZWAuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFycm93cyBhcmUgYWRkZWQgdG8gdGhlIG5leHQgYW5kIHByZXZpb3VzIGxpbmtzIG9mIHBhZ2luYXRpb24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcGFnaW5hdGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1jb250YWluZXIgKFxuICAkbWFyZ2luLWJvdHRvbTogJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbSxcbiAgJGZvbnQtc2l6ZTogJHBhZ2luYXRpb24tZm9udC1zaXplLFxuICAkc3BhY2luZzogJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nLFxuICAkcmFkaXVzOiAkcGFnaW5hdGlvbi1yYWRpdXMsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvcixcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAvLyBMaXN0IGl0ZW1cbiAgbGkge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcblxuICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXMge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOmxhc3QtY2hpbGQsXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuXG4gICAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbSB7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgY3VycmVudCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkYmFja2dyb3VuZC1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudCxcbiAgJGNvbG9yLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudFxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jdXJyZW50O1xuICBjb2xvcjogJGNvbG9yLWN1cnJlbnQ7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWRcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgY29sb3I6ICRjb2xvcjtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGVsbGlwc2lzIGZvciB1c2UgaW4gYSBwYWdpbmF0aW9uIGxpc3QuXG5AbWl4aW4gcGFnaW5hdGlvbi1lbGxpcHNpcyAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRjb2xvcjogJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3Jcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgY29udGVudDogJ1xcMjAyNic7XG4gIGNvbG9yOiAkY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXBhZ2luYXRpb24ge1xuICAucGFnaW5hdGlvbiB7XG4gICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1jb250YWluZXI7XG5cbiAgICAuY3VycmVudCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudDtcbiAgICB9XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkO1xuICAgIH1cblxuICAgIC5lbGxpcHNpczo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1lbGxpcHNpcztcbiAgICB9XG4gIH1cblxuICBAaWYgJHBhZ2luYXRpb24tYXJyb3dzIHtcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cyBhOjpiZWZvcmUsXG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMuZGlzYWJsZWQ6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC41cmVtO1xuICAgICAgY29udGVudDogJ1xcMDBhYic7XG4gICAgfVxuXG4gICAgLnBhZ2luYXRpb24tbmV4dCBhOjphZnRlcixcbiAgICAucGFnaW5hdGlvbi1uZXh0LmRpc2FibGVkOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwLjVyZW07XG4gICAgICBjb250ZW50OiAnXFwwMGJiJztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiBwcm9ncmVzcy1jb250YWluZXIge1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWJhciB7XG4gIC8vIFByb2dyZXNzIGJhclxuICAucHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLWNvbnRhaW5lcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbm5lciBtZXRlclxuICAucHJvZ3Jlc3MtbWV0ZXIge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyO1xuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXIgdGV4dFxuICAucHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXItdGV4dDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmV2ZWFsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIGEgbW9kYWwsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXhpbXVtIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHotaW5kZXggZm9yIG1vZGFscy4gVGhlIG92ZXJsYXkgdXNlcyB0aGlzIHZhbHVlLCB3aGlsZSB0aGUgbW9kYWwgaXRzZWxmIHVzZXMgdGhpcyB2YWx1ZSBwbHVzIG9uZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtemluZGV4OiAxMDA1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBtb2RhbCBvdmVybGF5cy5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KSAhZGVmYXVsdDtcblxuXG4vLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcbi8vIFByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgd2hlbiBkZWZpbmluZyBtdWx0aXBsZSBSZXZlYWwgc2l6ZXNcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICVyZXZlYWwtY2VudGVyZWQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbW9kYWwgb3ZlcmxheS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgb3ZlcmxheS5cbkBtaXhpbiByZXZlYWwtb3ZlcmxheSgkYmFja2dyb3VuZDogJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQpIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhIG1vZGFsLlxuQG1peGluIHJldmVhbC1tb2RhbC1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB6LWluZGV4OiAkcmV2ZWFsLXppbmRleCArIDE7XG4gIC8vIFdvcmthcm91bmQgYW5kcm9pZCBicm93c2VyIHotaW5kZXggYnVnXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcmV2ZWFsLXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkcmV2ZWFsLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJldmVhbC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRyZXZlYWwtYmFja2dyb3VuZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgcm93cyBkb24ndCBoYXZlIGEgbWluLXdpZHRoIG9uIHRoZW1cbiAgLmNvbHVtbiB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBtb2RhbC4gR2VuZXJhbGx5IGEgcGVyY2VudGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxuICAkd2lkdGg6ICRyZXZlYWwtd2lkdGgsXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBAZXh0ZW5kICVyZXZlYWwtY2VudGVyZWQ7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBmdWxsLXNjcmVlbiBtb2RhbCwgd2hpY2ggc3RyZXRjaGVzIHRoZSBmdWxsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy5cbkBtaXhpbiByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbiB7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcblxuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGhlaWdodDogMTAwdmg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tZHVwbGljYXRlLXByb3BlcnRpZXNcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuXG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmV2ZWFsIHtcbiAgLy8gW1RPRE9dIElzIHRoaXMgbmVjZXNzYXJ5P1xuICBib2R5LmlzLXJldmVhbC1vcGVuIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIGh0bWwgZ2V0cyB0aGlzIGNsYXNzIG9ubHkgaW4gaU9TXG4gIGh0bWwuaXMtcmV2ZWFsLW9wZW4sXG4gIGh0bWwuaXMtcmV2ZWFsLW9wZW4gYm9keSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuXG4gIC8vIE92ZXJsYXlcbiAgLnJldmVhbC1vdmVybGF5IHtcbiAgICBAaW5jbHVkZSByZXZlYWwtb3ZlcmxheTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNvbnRhaW5lclxuICAucmV2ZWFsIHtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtYmFzZTtcbiAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoJHJldmVhbC13aWR0aCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTAwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvLyBSZW1vdmUgcGFkZGluZ1xuICAgICYuY29sbGFwc2Uge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAvLyBTaXppbmcgY2xhc3Nlc1xuICAgICYudGlueSAgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoMzAlKTsgfVxuICAgICYuc21hbGwgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoNTAlKTsgfVxuICAgICYubGFyZ2UgeyBAaW5jbHVkZSByZXZlYWwtbW9kYWwtd2lkdGgoOTAlKTsgfVxuXG4gICAgLy8gRnVsbC1zY3JlZW4gbW9kZVxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuO1xuICAgIH1cblxuICAgICYud2l0aG91dC1vdmVybGF5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBbVE9ET10gQ2hlY2sgaG93IHBsdWdpbiBjb25maXJtcyBkaXNhYmxlZCBvciB2ZXJ0aWNhbCBzdGF0dXNcbi8vIFtUT0RPXSBDaGVjayBpZiB0cmFuc2l0aW9uOiBhbGw7IGlzIG5lY2Vzc2FyeVxuXG4vLy8vXG4vLy8gQGdyb3VwIHNsaWRlclxuLy8vL1xuXG4vLy8gRGVmYXVsdCBzbGlkZXIgd2lkdGggb2YgYSB2ZXJ0aWNhbCBzbGlkZXIuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydGllcyB0byBhcHBseSB0byB0aGUgc2xpZGVyIGhhbmRsZSBhbmQgZmlsbC4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIGFjdGl2ZSBmaWxsIGZvciBzbGlkZXJzLlxuQG1peGluIHNsaWRlci1maWxsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGhlIHNsaWRlciBoYW5kbGVzLlxuQG1peGluIHNsaWRlci1oYW5kbGUge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xuICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIG1hcmdpbjogMCAxLjI1cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcblxuICAuc2xpZGVyLWZpbGwge1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc2xpZGVyIHtcbiAgLy8gQ29udGFpbmVyXG4gIC5zbGlkZXIge1xuICAgIEBpbmNsdWRlIHNsaWRlci1jb250YWluZXI7XG4gIH1cblxuICAvLyBGaWxsIGFyZWFcbiAgLnNsaWRlci1maWxsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcbiAgfVxuXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAuc2xpZGVyLmRpc2FibGVkLFxuICAuc2xpZGVyW2Rpc2FibGVkXSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gVmVydGljYWwgc2xpZGVyXG4gIC5zbGlkZXIudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHNsaWRlci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFJUTCBzdXBwb3J0XG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zdGlja3kge1xuICAuc3RpY2t5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLnN0aWNreSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIC5zdGlja3kuaXMtc3R1Y2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA1O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJi5pcy1hdC10b3Age1xuICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAuc3RpY2t5LmlzLWFuY2hvcmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHN3aXRjaFxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnRpbnkgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2hcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLyBtYWtlIHRoZW0gdmFyaWFibGVzXG4vLyBhc2sgYWJvdXQgYWNjZXNzaWJpbGl0eSBvbiBsYWJlbFxuLy8gY2hhbmdlIGNsYXNzIG5hbWUgZm9yIHRleHRcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBjb250YWluZXIgY2xhc3MuXG5AbWl4aW4gc3dpdGNoLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XG4gIG91dGxpbmU6IDA7XG5cbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBpbnB1dC4gQXBwbHkgdGhpcyB0byBhbiBgPGlucHV0PmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1pbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgb3BhY2l0eTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuXG4gIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcmFkaXVzO1xuICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG5cbiAgLy8gUmVzZXR0aW5nIHRoZXNlIDxsYWJlbD4gcHJlc2V0cyBzbyB0eXBlIHN0eWxlcyBjYXNjYWRlIGRvd25cbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3BlY2lmaWNpdHlcbiAgaW5wdXQgKyAmIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBUaGUgcGFkZGxlIGl0c2VsZlxuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1wYWRkbGUtcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XG4gICAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgdmlzdWFsIHN0eWxlIHdoZW4gdGhlIHN3aXRjaCBpcyBhY3RpdmVcbiAgaW5wdXQ6Y2hlY2tlZCB+ICYge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcbiAgICB9XG4gIH1cblxuICBpbnB1dDpmb2N1cyB+ICYge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxuQG1peGluIHN3aXRjaC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XG4gICN7JGdsb2JhbC1yaWdodH06IDE1JTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHN3aXRjaC1oZWlnaHQgWzJyZW1dIC0gSGVpZ2h0IG9mIHRoZSBzd2l0Y2ggYm9keS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRsZS1vZmZzZXQgWzAuMjVyZW1dIC0gU3BhY2luZyBiZXR3ZWVuIHRoZSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgc3dpdGNoIGJvZHkuXG5AbWl4aW4gc3dpdGNoLXNpemUoXG4gICRmb250LXNpemU6IDFyZW0sXG4gICRzd2l0Y2gtaGVpZ2h0OiAycmVtLFxuICAkcGFkZGxlLW9mZnNldDogMC4yNXJlbVxuKSB7XG5cbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRwYWRkbGUtb2Zmc2V0O1xuXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG5cbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICB9XG5cbiAgLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcbiAgICB0b3A6ICRwYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1vZmZzZXQ7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcbiAgfVxuXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN3aXRjaCB7XG4gIC8vIENvbnRhaW5lciBjbGFzc1xuICAuc3dpdGNoIHtcbiAgICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XG4gIH1cblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRcbiAgLnN3aXRjaC1pbnB1dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWlucHV0O1xuICB9XG5cbiAgLy8gPGxhYmVsPiBlbGVtZW50XG4gIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtcGFkZGxlO1xuICB9XG5cbiAgLy8gQmFzZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAlc3dpdGNoLXRleHQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0O1xuICB9XG5cbiAgLy8gQWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1hY3RpdmU7XG4gIH1cblxuICAvLyBJbmFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWluYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1pbmFjdGl2ZTtcbiAgfVxuXG4gIC8vIFN3aXRjaCBzaXplc1xuICAuc3dpdGNoLnRpbnkge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEwKSwgJHN3aXRjaC1oZWlnaHQtdGlueSwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2guc21hbGwge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEyKSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLmxhcmdlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgZm9yY2UtZWxlbWVudC1uZXN0aW5nLCBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFibGVcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIHRhYmxlIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFibGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtaG92ZXItc2NhbGU6IDIlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RyaXBlZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIHRhYmxlcyBhcmUgc3RyaXBlZCBieSBkZWZhdWx0IGFuZCBhbiAudW5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuIElmIGBmYWxzZWAsIGEgLnN0cmlwZWQgY2xhc3MgaXMgY3JlYXRlZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3Igc3RyaXBlZCByb3dzLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIHN0cmlwZSBvbiByb3dzIG9mIHRoZSB0YWJsZXMsIGV4Y2x1ZGluZyB0aGUgaGVhZGVyIGFuZCBmb290ZXIuIElmIGV2ZW4sIHRoZSBldmVuIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgb2RkLCB0aGUgb2RkIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgZW1wdHksIG9yIGFueSBvdGhlciB2YWx1ZSwgdGhlIHRhYmxlIHJvd3Mgd2lsbCBoYXZlIG5vIHN0cmlwaW5nLlxuLy8vIEB0eXBlIEtleXdvcmRcbiR0YWJsZS1zdHJpcGU6IGV2ZW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWFkZXIgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvb3Rlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHN0YWNrZWQgdGFibGUgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUpIHtcbiAgdHIge1xuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXG4gICAgQGlmICRzdHJpcGUgPT0gZXZlbiB7XG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSwgJGlzLXN0cmlwZWQ6ICR0YWJsZS1pcy1zdHJpcGVkKSB7XG4gIHRoZWFkLFxuICB0Ym9keSxcbiAgdGZvb3Qge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENhcHRpb25cbiAgY2FwdGlvbiB7XG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkXG4gIHRoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtaGVhZC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtaGVhZC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgZm9vdFxuICB0Zm9vdCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWZvb3QtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWZvb3QtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGhlYWQgYW5kIGZvb3RcbiAgdGhlYWQsXG4gIHRmb290IHtcbiAgICAvLyBSb3dzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdHIge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgICAgdGV4dC1hbGlnbjogI3skZ2xvYmFsLWxlZnR9O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmxlIHJvd3NcbiAgdGJvZHkge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRhYmxlcyBhcmUgc3RyaXBlZFxuICBAaWYgJGlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICB9XG5cbiAgICAmLnVuc3RyaXBlZCB7XG4gICAgICB0Ym9keSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIG5vdCBzdHJpcGVkXG4gIEBlbHNlIGlmICRpcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICB0Ym9keSB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICB9XG5cbiAgICAmLnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxuQG1peGluIHRhYmxlKFxuICAkc3RyaXBlOiAkdGFibGUtc3RyaXBlLFxuICAkbmVzdDogZmFsc2Vcbikge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4gIEBpZiAkbmVzdCB7XG4gICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLWNoaWxkcmVuLXN0eWxlcygkc3RyaXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gaG9yaXpvbnRhbGx5IHNjcm9sbCB0aGUgdGFibGUgd2hlbiB0aGUgY29udGVudCBvdmVyZmxvd3MgaG9yaXpvbnRhbGx5LlxuQG1peGluIHRhYmxlLXNjcm9sbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG5AbWl4aW4gdGFibGUtaG92ZXIge1xuICB0aGVhZCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBoZWFkZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1oZWFkLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Zm9vdCB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSB0YWJsZSBmb290ZXIgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1mb290LXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICB0Ym9keSB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1ob3ZlcjtcbiAgICB9XG4gIH1cblxuICBAaWYgJHRhYmxlLWlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZWlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxuQG1peGluIHRhYmxlLXN0YWNrKCRoZWFkZXI6ICRzaG93LWhlYWRlci1mb3Itc3RhY2tlZCkge1xuICBAaWYgJGhlYWRlciB7XG4gICAgdGhlYWQge1xuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgdGZvb3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICB0cixcbiAgdGgsXG4gIHRkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHRkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYmxlKCRuZXN0OiBmYWxzZSkge1xuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgdGFibGUoJG5lc3Q6ICRuZXN0KTtcbiAgfVxuXG4gIHRhYmxlLnN0YWNrIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZS1zdGFjay1icmVha3BvaW50IGRvd24pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxlLXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlLnNjcm9sbCB7XG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xuICB9XG5cbiAgdGFibGUuaG92ZXIge1xuICAgIEBpbmNsdWRlIHRhYmxlLWhvdmVyO1xuICB9XG5cbiAgLnRhYmxlLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIHRhYmxlIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFic1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gb2YgdGhlIHRhYiBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiB0YWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBBY3RpdmUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0YWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYSB0YWIgaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1wYWRkaW5nOiAxLjI1cmVtIDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGBleHBhbmQtbmAgY2xhc3NlcyB0byBpbmNsdWRlIGluIHRoZSBDU1MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHRhYnMtY29udGFpbmVyIChcbiAgJG1hcmdpbjogJHRhYi1tYXJnaW4sXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkbWFyZ2luO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXG5AbWl4aW4gdGFicy1jb250YWluZXItdmVydGljYWwge1xuICA+IGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXRpdGxlIChcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxuICAkY29sb3I6ICR0YWItY29sb3IsXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXG4gICRiYWNrZ3JvdW5kLWFjdGl2ZTogJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZVxuKSB7XG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgICBjb2xvcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkY29sb3ItYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB3cmFwcGVyIHRoYXQgc3Vycm91bmRzIGEgdGFiIGdyb3VwJ3MgY29udGVudCBwYW5lcy5cbkBtaXhpbiB0YWJzLWNvbnRlbnQgKFxuICAkYmFja2dyb3VuZDogJHRhYi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJHRhYi1jb250ZW50LWNvbG9yLFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXRvcDogMDtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkY29sb3I7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XG59XG5cbi8vLyBBdWdtZW50cyBhIHRhYiBjb250ZW50IGNvbnRhaW5lciB0byBoYXZlIGEgdmVydGljYWwgc3R5bGUsIGJ5IHNoaWZ0aW5nIHRoZSBib3JkZXIgYXJvdW5kLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRlbnQoKWAuXG5AbWl4aW4gdGFicy1jb250ZW50LXZlcnRpY2FsIChcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gaW5kaXZpZHVhbCB0YWIgY29udGVudCBwYW5lbCB3aXRoaW4gdGhlIHRhYiBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXBhbmVsIChcbiAgJHBhZGRpbmc6ICR0YWItY29udGVudC1wYWRkaW5nXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJi5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYnMge1xuICAudGFicyB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXI7XG4gIH1cblxuICAvLyBWZXJ0aWNhbFxuICAudGFicy52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXItdmVydGljYWw7XG4gIH1cblxuICAvLyBTaW1wbGVcbiAgLnRhYnMuc2ltcGxlIHtcbiAgICA+IGxpID4gYSB7XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpbWFyeSBjb2xvclxuICAudGFicy5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgID4gbGkgPiBhIHtcbiAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRwcmltYXJ5LWNvbG9yKTtcblxuICAgICAgJjpob3ZlcixcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkcHJpbWFyeS1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYnMtdGl0bGUge1xuICAgIEBpbmNsdWRlIHRhYnMtdGl0bGU7XG4gIH1cblxuICAudGFicy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQ7XG4gIH1cblxuICAudGFicy1jb250ZW50LnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQtdmVydGljYWw7XG4gIH1cblxuICAudGFicy1wYW5lbCB7XG4gICAgQGluY2x1ZGUgdGFicy1wYW5lbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgV2VpZ2h0XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10aXRsZS1iYXIge1xuICAudGl0bGUtYmFyIHtcbiAgICBwYWRkaW5nOiAkdGl0bGViYXItcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiAkdGl0bGViYXItYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLm1lbnUtaWNvbiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLnRpdGxlLWJhci1sZWZ0LFxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRpdGxlLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlLWJhci10aXRsZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udC13ZWlnaHQ6ICR0aXRsZWJhci10ZXh0LWZvbnQtd2VpZ2h0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0b3AtYmFyXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHRvcCBiYXIuIFRoaXMgY29sb3IgYWxzbyBjYXNjYWRlcyB0byBtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b3BiYXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIHN1Ym1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci4gVXNlZnVsbCBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgdHJhbnNwYXJlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGZvciB0aGUgdG9wIGJhciB0aXRsZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItdGl0bGUtc3BhY2luZzogMC41cmVtIDFyZW0gMC41cmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIHdpZHRoIG9mIGA8aW5wdXQ+YCBlbGVtZW50cyBpbnNpZGUgdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgYXQgd2hpY2ggdG9wIGJhciBzd2l0Y2hlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wIHZpZXcuXG4vLy8gQHR5cGUgQnJlYWtwb2ludFxuJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHRvcCBiYXIgY29udGFpbmVyLlxuQG1peGluIHRvcC1iYXItY29udGFpbmVyIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBwYWRkaW5nOiAkdG9wYmFyLXBhZGRpbmc7XG5cbiAgJixcbiAgdWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyBkaWZmZXJudCBmcm9tICR0b3BiYXItYmFja2dyb3VuZC1zdWJtZW51XG4gIEBpZiAoJHRvcGJhci1iYWNrZ3JvdW5kICE9ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kKSB7XG4gICAgdWwgdWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdHJhaW4gd2lkdGggb2YgaW5wdXRzIGJ5IGRlZmF1bHQgdG8gbWFrZSB0aGVtIGVhc2llciB0byBhcnJhbmdlXG4gIGlucHV0IHtcbiAgICBtYXgtd2lkdGg6ICR0b3BiYXItaW5wdXQtd2lkdGg7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gIH1cblxuICAvLyBUaGUgYWJvdmUgc3R5bGVzIHNob3VsZG4ndCBhcHBseSB0byBpbnB1dCBncm91cCBmaWVsZHNcbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgfVxuXG4gIGlucHV0LmJ1dHRvbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi8vLyBNYWtlcyBzZWN0aW9ucyBvZiBhIHRvcCBiYXIgc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG5AbWl4aW4gdG9wLWJhci1zdGFja2VkIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBVbmRvZXMgdGhlIENTUyBhcHBsaWVkIGJ5IHRoZSBgdG9wLWJhci1zdGFja2VkKClgIG1peGluLlxuQG1peGluIHRvcC1iYXItdW5zdGFjayB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgLnRvcC1iYXItbGVmdCB7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICB9XG5cbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9wLWJhciB7XG4gIC8vIFRvcCBiYXIgY29udGFpbmVyXG4gIC50b3AtYmFyIHtcbiAgICBAaW5jbHVkZSB0b3AtYmFyLWNvbnRhaW5lcjtcblxuICAgIC8vIFN0YWNrIG9uIHNtYWxsIHNjcmVlbnMgYnkgZGVmYXVsdFxuICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBpbmNsdWRlIHRvcC1iYXItdW5zdGFjaztcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBjbGFzc2VzIGZvciBzdGFja2luZyBvbiBlYWNoIHNjcmVlbiBzaXplIChkZWZpbmVkIGluICRicmVha3BvaW50LWNsYXNzZXMpXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAmLnN0YWNrZWQtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdWItc2VjdGlvbnNcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLnRvcC1iYXItdGl0bGUge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBtYXJnaW46ICR0b3BiYXItdGl0bGUtc3BhY2luZztcbiAgICB9XG5cbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRvcC1iYXItdGl0bGUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBwYWRkaW5nOiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG5cbiAgICAgIC5tZW51LWljb24ge1xuICAgICAgICBib3R0b206IDJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRodW1ibmFpbFxuLy8vL1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIEJvcmRlclxuJHRodW1ibmFpbC1ib3JkZXI6IHNvbGlkIDRweCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMikgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcHJ0aWVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aHVtYm5haWwgc3R5bGVzIHRvIGFuIGVsZW1lbnQuXG5AbWl4aW4gdGh1bWJuYWlsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTtcblxuICBib3JkZXI6ICR0aHVtYm5haWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkdGh1bWJuYWlsLXJhZGl1cztcbiAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3c7XG5cbiAgbGluZS1oZWlnaHQ6IDA7XG59XG5cbkBtaXhpbiB0aHVtYm5haWwtbGluayB7XG4gIHRyYW5zaXRpb246ICR0aHVtYm5haWwtdHJhbnNpdGlvbjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjtcbiAgfVxuXG4gIGltYWdlIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRodW1ibmFpbCB7XG4gIC50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbDtcbiAgfVxuXG4gIGEudGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB0aHVtYm5haWwtbGluaztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9vbHRpcFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjdXJzb3Igb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBib3R0b20gb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBMaXN0XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4IHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLW1heC13aWR0aDogMTByZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoYXMtdGlwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xuICBjdXJzb3I6ICRoYXMtdGlwLWN1cnNvcjtcbn1cblxuQG1peGluIHRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIHotaW5kZXg6IDEyMDA7XG5cbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yO1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgJi5ib3R0b20ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XG4gICAgICBib3R0b206IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi50b3Age1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBkb3duKTtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmxlZnQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5yaWdodCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGxlZnQpO1xuICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi10b3A6OmJlZm9yZSB7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHRvcDogMTAlO1xuICB9XG5cbiAgJi5hbGlnbi1ib3R0b206OmJlZm9yZSB7XG4gICAgYm90dG9tOiAxMCU7XG4gICAgdG9wOiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1sZWZ0OjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwJTtcbiAgICByaWdodDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQ6OmJlZm9yZSB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogMTAlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvb2x0aXAge1xuICAuaGFzLXRpcCB7XG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcbiAgfVxuXG4gIC50b29sdGlwIHtcbiAgICBAaW5jbHVkZSB0b29sdGlwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGVcbi8vLy9cblxuLy8gUmVsYXRpb25hbCBNaXhpbnNcbkBpbXBvcnQgJ3JlbGF0aW9uJztcblxuLy8gQm94IE1peGluXG5AaW1wb3J0ICdib3gnO1xuXG4vLyBSb3RhdGUgTWl4aW5cbkBpbXBvcnQgJ3JvdGF0ZSc7XG5cbi8vIFR5cGVzY2FsZVxuQGltcG9ydCAndHlwZXNjYWxlJztcblxuLy8gVGV4dCB1dGlsaXRpZXNcbkBpbXBvcnQgJ3RleHQtdXRpbGl0aWVzJztcblxuLy8gVGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXG5AaW1wb3J0ICd0ZXh0LXRyYW5zZm9ybWF0aW9uJztcblxuLy8gVGV4dCBEZWNvcmF0aW9uIGNsYXNzZXNcbkBpbXBvcnQgJ3RleHQtZGVjb3JhdGlvbic7XG5cbi8vIEZvbnQgU3R5bGluZ1xuQGltcG9ydCAnZm9udC1zdHlsaW5nJztcblxuLy8gTGlzdCBTdHlsZSB0eXBlXG5AaW1wb3J0ICdsaXN0LXN0eWxlLXR5cGUnO1xuXG4vLyBSb3VuZGVkIFV0aWxpdHlcbkBpbXBvcnQgJ3JvdW5kZWQnO1xuXG4vLyBCb3JkZXJlZCBVdGlsaXR5XG5AaW1wb3J0ICdib3JkZXJlZCc7XG5cbi8vIFNoYWRvdyBVdGlsaXR5XG5AaW1wb3J0ICdzaGFkb3cnO1xuXG4vLyBBcnJvdyBVdGlsaXR5XG5AaW1wb3J0ICdhcnJvdyc7XG5cbi8vIFNlcGFyYXRvciBVdGlsaXR5XG5AaW1wb3J0ICdzZXBhcmF0b3InO1xuXG4vLyBPdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xuQGltcG9ydCAnb3ZlcmZsb3cnO1xuXG4vLyBEaXNwbGF5IGNsYXNzZXNcbkBpbXBvcnQgJ2Rpc3BsYXknO1xuXG4vLyBQb3NpdGlvbiBIZWxwZXJzXG5AaW1wb3J0ICdwb3NpdGlvbic7XG5cbi8vIEJvcmRlciBib3hcbkBpbXBvcnQgJ2JvcmRlci1ib3gnO1xuXG4vLyBCb3JkZXIgbm9uZSBVdGlsdHlcbkBpbXBvcnQgJ2JvcmRlci1ub25lJztcblxuLy8gU2l6aW5nIFV0aWxpdGllc1xuQGltcG9ydCAnc2l6aW5nJztcblxuLy8gU3BhY2luZyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3NwYWNpbmcnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXR5cGVzY2FsZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXJvdW5kZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlcmVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zZXBhcmF0b3I7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLW92ZXJmbG93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1kaXNwbGF5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1wb3NpdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLWJveDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLW5vbmU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc3BhY2luZztcbn1cbiIsIi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGZpcnN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEZpcnN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGZpcnN0KCRudW0pIHtcbiAgQGlmICRudW0gPT0gMSB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICY6bnRoLWNoaWxkKC1uICsgI3skbnVtfSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGZpcnN0IGV4YWN0IGNoaWxkXG5AbWl4aW4gZmlyc3QtY2hpbGQge1xuICAmOmZpcnN0LW9mLXR5cGUge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGxhc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gTGFzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBsYXN0KCRudW0pIHtcbiAgJjpudGgtbGFzdC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBsYXN0IGV4YWN0IGNoaWxkXG5AbWl4aW4gbGFzdC1jaGlsZCB7XG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGNoaWxkcmVuIGV2ZXJ5IGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgb2YgYWxsIGNoaWxkcmVuXG5AbWl4aW4gZXZlcnkoJG51bSkge1xuICAmOm50aC1jaGlsZCgjeyRudW19bikge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3Qgb25seSB0aGUgZmlyc3QgYW5kIGxhc3QgY2hpbGQuXG5AbWl4aW4gZmlyc3QtbGFzdCB7XG4gICY6Zmlyc3QtY2hpbGQsXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYWZ0ZXIgdGhlIGZpcnN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEFmdGVyIEZpcnN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGFmdGVyLWZpcnN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQobiArICN7JG51bSArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmVmb3JlIGAkbnVtYCBmcm9tIHRoZSBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRnJvbSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGZyb20tbGFzdCgkbnVtKSB7XG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGAkbnVtYCBjaGlsZCBmcm9tIHRoZSBmaXJzdCBhbmQgdGhlIGAkbnVtYCBjaGlsZCBmcm9tIHRoZSBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBjYWxsZWQgZnJvbSBmaXJzdCBhbmQgbGFzdCBcbkBtaXhpbiBmcm9tLWZpcnN0LWxhc3QoJG51bSkge1xuICAmOm50aC1jaGlsZCgjeyRudW19KSxcbiAgJjpudGgtbGFzdC1jaGlsZCgjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYnV0IGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW4gXG5AbWl4aW4gYWxsLWJ1dCgkbnVtKSB7XG4gICY6bm90KDpudGgtY2hpbGQoI3skbnVtfSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIHRoZSBgJG51bWAgZmlyc3QgYW5kIHRoZSBgJG51bWAgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgZXhjbHVkZWQgZnJvbSBmaXJzdCBhbmQgbGFzdCBmcm9tIGFsbCBvdGhlciBjaGlsZHJlblxuQG1peGluIGFsbC1idXQtZmlyc3QtbGFzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKG4gKyAjeyRudW19KTpudGgtbGFzdC1jaGlsZChuICsgI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBXaWxsIG9ubHkgc2VsZWN0IHRoZSBjaGlsZCBpZiBpdOKAmXMgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIG5vdCBiZSBhcHBsaWVkLlxuQG1peGluIHVuaXF1ZSB7XG4gICY6b25seS1jaGlsZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFdpbGwgb25seSBzZWxlY3QgY2hpbGRyZW4gaWYgdGhleSBhcmUgbm90IHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxuQG1peGluIG5vdC11bmlxdWUoKSB7XG4gICY6bm90KDpvbmx5LWNoaWxkKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBiZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBldmVuIGNoaWxkcmVuLlxuQG1peGluIGV2ZW4ge1xuICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIGV2ZW4tYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKGV2ZW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbi5cbkBtaXhpbiBvZGQge1xuICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBvZGQtYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKG9kZCk6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgYCRudW1gIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBFdmVyeSBgbmAgbnVtYmVyIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBuYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBuYCBudW1iZXJcbkBtaXhpbiBudW1iZXItYmV0d2VlbigkbnVtLCAkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJveFxuLy8vL1xuXG4vLy8gQm94IE1peGluOiBFYXNpbHkgY3JlYXRlIGEgc3F1YXJlLCByZWN0YW5nbGUgb3IgYSBjaXJjbGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoW10gV2lkdGggb2YgdGhlIGJveFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0WyR3aWR0aF0gSGVpZ2h0IG9mIHRoZSBib3gsIGRlZmF1bHRzIHRvIGAkd2lkdGhgIHRvIGVhc2lseSBtYWtlIGEgc3F1YXJlXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2lyY2xlW2ZhbHNlXSBNYWtlcyB0aGUgYm94IGEgY2lyY2xlLCBieSBkZWZhdWx0IGBmYWxzZWAuXG5AbWl4aW4gYm94KFxuICAkd2lkdGgsIFxuICAkaGVpZ2h0OiAkd2lkdGgsIFxuICAkY2lyY2xlOiBmYWxzZVxuKSB7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgQGlmICRjaXJjbGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm90YXRlXG4vLy8vXG5cbi8vLyBSb3RhdGUgTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWdcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZSgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGUoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVYIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFgtQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWCgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGVYKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBZLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVkoJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlWSgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVogTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWi1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVaKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZVooJGRlZyArIGRlZyk7XG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXR5cGVzY2FsZVxuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdHlwZXNjYWxlIHtcblx0QGVhY2ggJHNpemUsICRoZWFkZXJzIGluICRoZWFkZXItc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkaGVhZGVyLCAkaGVhZGVyLWRlZnMgaW4gJGhlYWRlcnMge1xuICAgICAgICAkZm9udC1zaXplLXRlbXA6IDFyZW07XG4gICAgICAgIC4jeyRoZWFkZXJ9IHtcbiAgICAgICAgICBAZXh0ZW5kICN7JGhlYWRlcn07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXV0aWxpdGllc1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB1dGlsaXRpZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IFZhbHVlIGZvciBgdGV4dC1vdmVyZmxvd2AgdmFyaWFibGVcbi8vLyBAdHlwZSBTdHJpbmdcbiRwcm90b3R5cGUtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWRlZmF1bHQ7XG5cbi8vLyBJbWFnZSBSZXBsYWNlbWVudCB1dGlsaXR5LiBgdGV4dC1oaWRlYFxuQG1peGluIHRleHQtaGlkZSB7XG4gIGZvbnQ6IDAvMCBhICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLy8vIFRydW5jYXRpbmcgdGhlIHRleHQsIGVsaXBzaXMgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFskcHJvdG90eXBlLXRleHQtb3ZlcmZsb3ddIFRleHQgVHJ1bmNhdGVcbkBtaXhpbiB0ZXh0LXRydW5jYXRlKFxuICAkb3ZlcmZsb3c6ICRwcm90b3R5cGUtdGV4dC1vdmVyZmxvd1xuKSB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIHRleHQtb3ZlcmZsb3c6ICRvdmVyZmxvdzsgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLy8vIE5vIHdyYXBwaW5nIG9mIHRoZSB0ZXh0LiBgdGV4dC1ub3dyYXBgXG5AbWl4aW4gdGV4dC1ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBXcmFwcGluZyBvZiB0aGUgdGV4dC4gYHRleHQtd3JhcGBcbkBtaXhpbiB0ZXh0LXdyYXAge1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzIHtcbiAgLnRleHQtaGlkZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1oaWRlO1xuICB9XG5cbiAgLnRleHQtdHJ1bmNhdGUge1xuICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XG4gIH1cblxuICAudGV4dC1ub3dyYXAge1xuICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xuICB9XG5cbiAgLnRleHQtd3JhcCB7XG4gICAgQGluY2x1ZGUgdGV4dC13cmFwO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtaGlkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtdHJ1bmNhdGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC1ub3dyYXAge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1ub3dyYXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtd3JhcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGB0ZXh0LXRyYW5zZm9ybWF0aW9uYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb246IChcbiAgbG93ZXJjYXNlLFxuICB1cHBlcmNhc2UsXG4gIGNhcGl0YWxpemVcbikgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IFRyYW5zZm9ybWF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb25gXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0cmFuc2Zvcm1hdGlvbiBbXSBUZXh0IFRyYW5zZm9ybWF0aW9uXG5AbWl4aW4gdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKSB7XG4gIHRleHQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtYXRpb24gIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICBAZWFjaCAkdHJhbnNmb3JtYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcbiAgICAudGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICBcdEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkdHJhbnNmb3JtYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skdHJhbnNmb3JtYXRpb259IHtcbiAgXHRcdFx0ICAgICAgQGluY2x1ZGUgdGV4dC10cmFuc2Zvcm0oJHRyYW5zZm9ybWF0aW9uKTtcbiAgXHRcdFx0ICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25cbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgZGVjb3JhdGlvbiBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtZGVjb3JhdGlvbmAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcbiAgb3ZlcmxpbmUsXG4gIHVuZGVybGluZSxcbiAgbGluZS10aHJvdWdoLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgRGVjb3JhdGlvbiwgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25gXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWNvcmF0aW9uIFtdIFRleHQgRGVjb3JhdGlvblxuQG1peGluIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbikge1xuICB0ZXh0LWRlY29yYXRpb246ICRkZWNvcmF0aW9uICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICBAZWFjaCAkZGVjb3JhdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgLnRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWZvbnQtc3R5bGluZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZm9udCBzdHlsaW5nIHR5cGVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIExldHRlciBzcGFjaW5nIGZvciBgLmZvbnQtd2lkZWBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LW5vcm1hbGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LWJvbGRgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtYm9sZGBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtZm9udC1ib2xkOiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3aWRlIGxldHRlciBzcGFjaW5nIVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV0dGVyLXNwYWNpbmcgWyRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ10gV2lkZSBsZXR0ZXIgc3BhY2luZyBmb3IgdGhlIGZvbnRcbkBtaXhpbiBmb250LXdpZGUoXG4gICRsZXR0ZXItc3BhY2luZzogJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nXG4pIHtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcbn1cblxuLy8vIEZvbnQgV2VpZ2h0IE5vcm1hbCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWyRwcm90b3R5cGUtZm9udC1ub3JtYWxdIFdlaWdodCBvZiB0aGUgZm9udCAobm9ybWFsKVxuQG1peGluIGZvbnQtbm9ybWFsKFxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtbm9ybWFsXG4pIHtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG59XG5cbi8vLyBGb250IFdlaWdodCBCb2xkLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LWJvbGRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWyRwcm90b3R5cGUtZm9udC1ib2xkXSBXZWlnaHQgb2YgdGhlIGZvbnQgKGJvbGQpXG5AbWl4aW4gZm9udC1ib2xkKFxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtYm9sZFxuKSB7XG4gIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xufVxuXG4vLy8gRm9udCBTdHlsZSBJdGFsaWNcbkBtaXhpbiBmb250LWl0YWxpYyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nIHtcbiAgLmZvbnQtd2lkZXtcbiAgICBAaW5jbHVkZSBmb250LXdpZGU7XG4gIH1cblxuICAuZm9udC1ub3JtYWwge1xuICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xuICB9XG5cbiAgLmZvbnQtYm9sZCB7XG4gICAgQGluY2x1ZGUgZm9udC1ib2xkO1xuICB9XG5cbiAgLmZvbnQtaXRhbGljIHtcbiAgICBAaW5jbHVkZSBmb250LWl0YWxpYztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC13aWRle1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC13aWRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LW5vcm1hbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LW5vcm1hbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ib2xkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtYm9sZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1pdGFsaWMge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBsaXN0IHN0eWxpbmcgdHlwZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS11bm9yZGVyZWRgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQ6IChcbiAgZGlzYyxcbiAgY2lyY2xlLFxuICBzcXVhcmVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLW9yZGVyZWRgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkOiAoXG4gIGRlY2ltYWwsXG4gIGxvd2VyLWFscGhhLFxuICBsb3dlci1sYXRpbixcbiAgbG93ZXItcm9tYW4sXG4gIHVwcGVyLWFscGhhLFxuICB1cHBlci1sYXRpbixcbiAgdXBwZXItcm9tYW5cbikgIWRlZmF1bHQ7XG5cblxuLy8vIFN0eWxlIHR5cGUgZm9yIHVub3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZGBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlLXR5cGUtdW5vcmRlcmVkIFtdIFN0eWxlIHR5cGUgZm9yIHVub3JkZXJlZCBMaXN0c1xuQG1peGluIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCkge1xuICBsaXN0LXN0eWxlLXR5cGU6ICRzdHlsZS10eXBlLXVub3JkZXJlZCAhaW1wb3J0YW50O1xufVxuXG4vLy8gU3R5bGUgdHlwZSBmb3Igb3JkZXJlZCBMaXN0cywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWRgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZS10eXBlLW9yZGVyZWQgW10gU3R5bGUgdHlwZSBmb3Igb3JkZXJlZCBMaXN0c1xuQG1peGluIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtb3JkZXJlZCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gbGlzdC11bm9yZGVyZWQge1xuICBAZWFjaCAkc3R5bGUtdHlwZS11bm9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZCB7XG4gICAgdWwubGlzdC0jeyRzdHlsZS10eXBlLXVub3JkZXJlZH0ge1xuICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgdWwuI3skc2l6ZX0tbGlzdC0jeyRzdHlsZS10eXBlLXVub3JkZXJlZH0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1vcmRlcmVkIHtcbiAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XG4gICAgb2wubGlzdC0jeyRzdHlsZS10eXBlLW9yZGVyZWR9IHtcbiAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRzdHlsZS10eXBlLW9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBvbC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGUge1xuICBAaW5jbHVkZSBsaXN0LXVub3JkZXJlZDtcbiAgQGluY2x1ZGUgbGlzdC1vcmRlcmVkO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXJvdW5kZWRcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHJvdW5kZWQgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItcmFkaXVzYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKSAhZGVmYXVsdDtcblxuLy8vIFJvdW5kZWQgdXRpbGl0eSAoYWxsIGNvcm5lcnMpOiBBZGRzIHJhZGl1cyBjb3JuZXJzIChhbGwgY29ybmVycykgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaXVzIFskcHJvdG90eXBlLWJvcmRlci1yYWRpdXNdIEJvcmRlciByYWRpdXMgKGFsbCBjb3JuZXJzKVxuQG1peGluIGJvcmRlci1yYWRpdXMoXG4gICRyYWRpdXM6ICRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c1xuKSB7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG59XG5cbi8vLyBSb3VuZGVkIHNxdWFyZSB1dGlsaXR5IG9yIHJlY3RhbmdsZSB1dGlsaXR5IChhbGwgY29ybmVycyk6IFJvdW5kcyBhbGwgY29ybmVycyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQgdG8gbWFrZSBhIHBpbGwgc2hhcGUuXG5AbWl4aW4gYm9yZGVyLXJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiA1MDAwcHggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXJvdW5kZWQge1xuICAucm91bmRlZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XG4gIH1cblxuICAucmFkaXVzIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1yb3VuZGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1yb3VuZGVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuI3skc2l6ZX0tcmFkaXVzIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHJvdW5kZWQtcmFkaXVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlcmVkXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXJlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItd2lkdGhgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci13aWR0aDogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci10eXBlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS1ib3JkZXItdHlwZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1jb2xvcmAgZGVmYXVsdGVkIHRvIGBtZWRpdW0tZ3JheWBcbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlcmVkIFV0aWxpdHk6IEFkZHMgYSBsaWdodCBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRwcm90b3R5cGUtYm9yZGVyLXdpZHRoXSBXaWR0aCBvZiB0aGUgYm9yZGVyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIFskcHJvdG90eXBlLWJvcmRlci10eXBlXSBUeXBlIG9mIHRoZSBib3JkZXJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXSBDb2xvciBvZiB0aGUgYm9yZGVyXG5AbWl4aW4gYm9yZGVyZWQoXG4gICR3aWR0aDogJHByb3RvdHlwZS1ib3JkZXItd2lkdGgsXG4gICR0eXBlOiAkcHJvdG90eXBlLWJvcmRlci10eXBlLFxuICAkY29sb3I6ICRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXG4pIHtcbiAgYm9yZGVyOiAkd2lkdGggJHR5cGUgJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQge1xuICAuYm9yZGVyZWQge1xuICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2hhZG93XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzaGFkb3cgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJveC1zaGFkb3dgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwwLDAsLjE2KSxcbiAgICAgICAgICAgICAgICAgICAgICAgMCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKSAhZGVmYXVsdDtcblxuLy8vIFNoYWRvdyBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm94IHNoYWRvdyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaGFkb3cgWyRwcm90b3R5cGUtYm94LXNoYWRvd10gQm94IFNoYWRvdyBvZiBhIGNvbXBvbmVudFxuQG1peGluIHNoYWRvdyhcbiAgJHNoYWRvdzogJHByb3RvdHlwZS1ib3gtc2hhZG93XG4pIHtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdyB7XG4gIC5zaGFkb3cge1xuICAgIEBpbmNsdWRlIHNoYWRvdztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1zaGFkb3cge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2hhZG93O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWFycm93XG4vLy8vXG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBhcnJvd2AgZGlyZWN0aW9uXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnM6IChcbiAgZG93bixcbiAgdXAsXG4gIHJpZ2h0LFxuICBsZWZ0XG4pICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgdGhlIEFycm93LCBgMC40Mzc1cmVtYCBieSBkZWZhdWx0LlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1hcnJvdy1zaXplOiAwLjQzNzVyZW07XG5cbi8vLyBDb2xvciBvZiB0aGUgQXJyb3csIGAkYmxhY2tgIGJ5IGRlZmF1bHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93IHtcbiAgQGVhY2ggJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb24gaW4gJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zIHtcbiAgICAuYXJyb3ctI3skcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LXNpemUsIFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LWNvbG9yLCBcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2VwYXJhdG9yXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhbGlnbm1lbnQgb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0OiByZW0tY2FsYygyKSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRvcCBNYXJnaW4gb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRpdGxlIHNlcGFyYXRvciBVdGlsaXR5LCBtb3N0bHkgdXNlZCB0byBzdHlsZSB0aGUgbWFpbiBoZWFkaW5nIG9mIGEgc2VjdGlvblxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYWxpZ24gWyRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduXSAtIHNlcGFyYXRvciBBbGlnbm1lbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0XSAtIFdpZHRoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGhdIC0gSGVpZ2h0XG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFskcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXSAtIE1hcmdpbiBUb3BcbkBtaXhpbiBzZXBhcmF0b3IgKFxuICAkYWxpZ246ICRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduLFxuICAkaGVpZ2h0OiAkcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQsXG4gICR3aWR0aDogJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGgsXG4gICRiYWNrZ3JvdW5kOiAkcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kLFxuICAkdG9wOiAkcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXG4pIHtcbiAgdGV4dC1hbGlnbjogJGFsaWduICFpbXBvcnRhbnQ7XG5cdEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSk7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIG1hcmdpbjogJHRvcCBhdXRvIDA7XG5cbiAgICBAaWYgJGFsaWduID09IGxlZnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaWYgJGFsaWduID09IHJpZ2h0IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yIHtcblx0LnNlcGFyYXRvci1jZW50ZXIge1xuXHRcdEBpbmNsdWRlIHNlcGFyYXRvcihjZW50ZXIpO1xuXHR9XG5cbiAgLnNlcGFyYXRvci1sZWZ0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gIH1cblxuICAuc2VwYXJhdG9yLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xuICB9XG5cblx0QGlmICgkcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1jZW50ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItbGVmdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItcmlnaHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1vdmVyZmxvd1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igb3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYG92ZXJmbG93YCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLW92ZXJmbG93OiAoXG4gIHZpc2libGUsXG4gIGhpZGRlbixcbiAgc2Nyb2xsXG4pICFkZWZhdWx0O1xuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXNcbkBtaXhpbiBvdmVyZmxvdygkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3c6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcyBvbiBob3Jpem9udGFsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzIChob3Jpem9udGFsIGF4aXMpXG5AbWl4aW4gb3ZlcmZsb3cteCgkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3cteDogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIHZlcnRpY2FsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzICh2ZXJ0aWNhbCBheGlzKVxuQG1peGluIG92ZXJmbG93LXkoJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93LXk6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3cge1xuICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XG4gICAgLm92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtZGlzcGxheVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZGlzcGxheSBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGRpc3BsYXlgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICBpbmxpbmUsXG4gIGlubGluZS1ibG9jayxcbiAgYmxvY2ssXG4gIHRhYmxlLFxuICB0YWJsZS1jZWxsXG4pICFkZWZhdWx0O1xuXG4vLy8gRGlzcGxheSBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLWRpc3BsYXlgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtdIERpc3BsYXkgY2xhc3Nlc1xuQG1peGluIGRpc3BsYXkoJGRpc3BsYXkpIHtcbiAgZGlzcGxheTogJGRpc3BsYXkgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXkge1xuICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xuICAgIC5kaXNwbGF5LSN7JGRpc3BsYXl9IHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJGRpc3BsYXkgaW4gJHByb3RvdHlwZS1kaXNwbGF5IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LWRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5KCRkaXNwbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1wb3NpdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcG9zaXRpb24gaGVscGVyc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgcG9zaXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtcG9zaXRpb246IChcbiAgc3RhdGljLFxuICByZWxhdGl2ZSxcbiAgYWJzb2x1dGUsXG4gIGZpeGVkXG4pICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgZml4ZWQgcG9zaXRpb25pbmdcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1ICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb24gY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1wb3NpdGlvbmAsIHdoZXJlYXMgYWxsIHRoZSBvZmZzZXQgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBvc2l0aW9uYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHBvc2l0aW9uIFtdIFBvc2l0aW9uIGNsYXNzZXMsIEVpdGhlciBgc3RhdGljYCwgYHJlbGF0aXZlYCwgYGFic29sdXRlYCBvciBgZml4ZWRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gVG9wIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUmlnaHQgb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gQm90dG9tIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBMZWZ0IG9mZnNldFxuQG1peGluIHBvc2l0aW9uKFxuICAkcG9zaXRpb24sXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHRvcDogJHRvcCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIHJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBsZWZ0OiAkbGVmdCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gdG9wIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLXRvcGBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC10b3AoXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgMCwgMCwgbnVsbCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gYm90dG9tIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLWJvdHRvbWBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC1ib3R0b20oXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgbnVsbCwgMCwgMCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb24ge1xuICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gIC5wb3NpdGlvbi1maXhlZC10b3Age1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcbiAgfVxuICAucG9zaXRpb24tZml4ZWQtYm90dG9tIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gICAgICAgIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLXRvcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC10b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLWJveFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIGJveC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGJveCB1dGlsaXR5XG5AbWl4aW4gYm9yZGVyLWJveCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3gge1xuICAuYm9yZGVyLWJveCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLWJveCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm94O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ub25lXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXIgbm9uZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBub25lIHV0aWxpdHlcbkBtaXhpbiBib3JkZXItbm9uZSB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLW5vbmUge1xuICAuYm9yZGVyLW5vbmUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ub25lO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLW5vbmUge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2l6aW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzaXppbmdgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc2l6aW5nOiAoXG4gIHdpZHRoLFxuICBoZWlnaHRcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIHNpemVzLlxuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zaXplczogKFxuICAyNTogMjUlLFxuICA1MDogNTAlLFxuICA3NTogNzUlLFxuICAxMDA6IDEwMCVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXggV2lkdGggMTAwIHV0aWxpdHkuXG5AbWl4aW4gbWF4LXdpZHRoLTEwMCB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4vLy8gTWF4IEhlaWdodCAxMDAgdXRpbGl0eS5cbkBtaXhpbiBtYXgtaGVpZ2h0LTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZyB7XG4gIC8vIEVsZW1lbnQgU2l6aW5nXG4gIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xuICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgLiN7JHNpemluZ30tI3skbGVuZ3RofSB7XG4gICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWF4IHdpZHRoICYgaGVpZ2h0XG4gIC5tYXgtd2lkdGgtMTAwIHtcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgtMTAwO1xuICB9XG4gIC5tYXgtaGVpZ2h0LTEwMCB7XG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodC0xMDA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcbiAgICAgICAgICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgICAgICAgICAuI3skc2l6ZX0tI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcbiAgICAgICAgICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc3BhY2luZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc3BhY2luZyBjbGFzc2VzIChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbnVtYmVyIG9mIHNwYWNlcnMgY291bnQgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc3BhY2Vycy1jb3VudDogMyAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLW1hcmdpbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBNYXJnaW4gVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBNYXJnaW4gUmlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBNYXJnaW4gQm90dG9tXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIE1hcmdpbiBMZWZ0XG5AbWl4aW4gbWFyZ2luKFxuICAkdG9wOiBudWxsLFxuICAkcmlnaHQ6IG51bGwsXG4gICRib3R0b206IG51bGwsXG4gICRsZWZ0OiBudWxsXG4pIHtcbiAgQGlmICR0b3AgIT0gbnVsbCB7XG4gICAgbWFyZ2luLXRvcDogJHRvcCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG51bGwge1xuICAgIG1hcmdpbi1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFBhZGRpbmcgaGVscGVyIG1peGluLCBhbGwgdGhlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1wYWRkaW5nYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIFBhZGRpbmcgVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBQYWRkaW5nIFJpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gUGFkZGluZyBCb3R0b21cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gUGFkZGluZyBMZWZ0XG5AbWl4aW4gcGFkZGluZyhcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHBhZGRpbmctdG9wOiAkdG9wICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmcge1xuICBAZm9yICRzcGFjZXIgZnJvbSAwIHRocm91Z2ggJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50IHtcbiAgICAvLyBBbGwgU2lkZXNcbiAgICAubWFyZ2luLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xuICAgIH1cblxuICAgIC5wYWRkaW5nLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgcGFkZGluZygkc3BhY2VyLCAkc3BhY2VyLCAkc3BhY2VyLCAkc3BhY2VyKTtcbiAgICB9XG5cbiAgICAvLyBUb3AgU2lkZVxuICAgIC5tYXJnaW4tdG9wLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsIG51bGwsIG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgIC5wYWRkaW5nLXRvcC0jeyRzcGFjZXJ9IHtcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgLy8gUmlnaHQgU2lkZVxuICAgIC5tYXJnaW4tcmlnaHQtI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgLnBhZGRpbmctcmlnaHQtI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsIG51bGwpO1xuICAgIH1cblxuICAgIC8vIEJvdHRvbSBTaWRlXG4gICAgLm1hcmdpbi1ib3R0b20tI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgbnVsbCwgJHNwYWNlciwgbnVsbCk7XG4gICAgfVxuXG4gICAgLnBhZGRpbmctYm90dG9tLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgcGFkZGluZyhudWxsLCBudWxsLCAkc3BhY2VyLCBudWxsKTtcbiAgICB9XG5cbiAgICAvLyBMZWZ0IFNpZGVcbiAgICAubWFyZ2luLWxlZnQtI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgbnVsbCwgbnVsbCwgJHNwYWNlcik7XG4gICAgfVxuXG4gICAgLnBhZGRpbmctbGVmdC0jeyRzcGFjZXJ9IHtcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcobnVsbCwgbnVsbCwgbnVsbCwgJHNwYWNlcik7XG4gICAgfVxuXG4gICAgLy8gSG9yaXpvbnRhbCBBeGVzXG4gICAgLm1hcmdpbi1ob3Jpem9udGFsLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xuICAgIH1cblxuICAgIC5wYWRkaW5nLWhvcml6b250YWwtI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIEF4ZXNcbiAgICAubWFyZ2luLXZlcnRpY2FsLSN7JHNwYWNlcn0ge1xuICAgICAgQGluY2x1ZGUgbWFyZ2luKCRzcGFjZXIsIG51bGwsICRzcGFjZXIsIG51bGwpXG4gICAgfVxuXG4gICAgLnBhZGRpbmctdmVydGljYWwtI3skc3BhY2VyfSB7XG4gICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsIG51bGwsICRzcGFjZXIsIG51bGwpXG4gICAgfVxuXG4gICAgQGlmICgkcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLy8gQWxsIFNpZGVzXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlciwgJHNwYWNlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUb3AgU2lkZVxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi10b3AtI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbigkc3BhY2VyLCBudWxsLCBudWxsLCBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctdG9wLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKCRzcGFjZXIsIG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSaWdodCBTaWRlXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLXJpZ2h0LSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCwgJHNwYWNlciwgbnVsbCwgbnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4jeyRzaXplfS1wYWRkaW5nLXJpZ2h0LSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBCb3R0b20gU2lkZVxuICAgICAgICAgICAgLiN7JHNpemV9LW1hcmdpbi1ib3R0b20tI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbihudWxsLCBudWxsLCAkc3BhY2VyLCBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctYm90dG9tLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsICRzcGFjZXIsIG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBMZWZ0IFNpZGVcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4tbGVmdC0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsIG51bGwsIG51bGwsICRzcGFjZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy1sZWZ0LSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsIG51bGwsIG51bGwsICRzcGFjZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBIb3Jpem9udGFsIEF4ZXNcbiAgICAgICAgICAgIC4jeyRzaXplfS1tYXJnaW4taG9yaXpvbnRhbC0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuI3skc2l6ZX0tcGFkZGluZy1ob3Jpem9udGFsLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwsICRzcGFjZXIsIG51bGwsICRzcGFjZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBWZXJ0aWNhbCBBeGVzXG4gICAgICAgICAgICAuI3skc2l6ZX0tbWFyZ2luLXZlcnRpY2FsLSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4oJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLiN7JHNpemV9LXBhZGRpbmctdmVydGljYWwtI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmcoJHNwYWNlciwgbnVsbCwgJHNwYWNlciwgbnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIE1vdGlvbiBVSSBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tL21vdGlvbi11aVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ3NldHRpbmdzJztcblxuQGltcG9ydCAndXRpbC9hbmltYXRpb24nO1xuQGltcG9ydCAndXRpbC9hcmdzJztcbkBpbXBvcnQgJ3V0aWwva2V5ZnJhbWUnO1xuQGltcG9ydCAndXRpbC9zZWxlY3Rvcic7XG5AaW1wb3J0ICd1dGlsL3Nlcmllcyc7XG5AaW1wb3J0ICd1dGlsL3RyYW5zaXRpb24nO1xuQGltcG9ydCAndXRpbC91bml0JztcblxuQGltcG9ydCAnZWZmZWN0cy9mYWRlJztcbkBpbXBvcnQgJ2VmZmVjdHMvaGluZ2UnO1xuQGltcG9ydCAnZWZmZWN0cy9zcGluJztcbkBpbXBvcnQgJ2VmZmVjdHMvem9vbSc7XG5AaW1wb3J0ICdlZmZlY3RzL3NoYWtlJztcbkBpbXBvcnQgJ2VmZmVjdHMvc2xpZGUnO1xuQGltcG9ydCAnZWZmZWN0cy93aWdnbGUnO1xuXG5AaW1wb3J0ICd0cmFuc2l0aW9ucy9mYWRlJztcbkBpbXBvcnQgJ3RyYW5zaXRpb25zL2hpbmdlJztcbkBpbXBvcnQgJ3RyYW5zaXRpb25zL3pvb20nO1xuQGltcG9ydCAndHJhbnNpdGlvbnMvc2xpZGUnO1xuQGltcG9ydCAndHJhbnNpdGlvbnMvc3Bpbic7XG5cbkBpbXBvcnQgJ2NsYXNzZXMnO1xuIiwiLy8vIEZvcm1hdCBmb3IgQ1NTIGNsYXNzZXMgY3JlYXRlZCB3aXRoIE1vdGlvbiBVSS5cbi8vLyBAdHlwZSBNYXBcbi8vLyBAcHJvcCB7Qm9vbGVhbn0gYXBwZW5kIFt0cnVlXSAtIERlZmluZXMgaWYgc2VsZWN0b3JzIGFyZSBjaGFpbmVkIHRvIHRoZSBzZWxlY3RvciAoYC5jbGFzcy5lbnRlcmApLCBvciBhcHBlbmRlZCBhcyBhIG5ldyBjbGFzcyAoYC5jbGFzcy1lbnRlcmApLlxuLy8vIEBwcm9wIHtTdHJpbmd9IHByZWZpeCBbJ211aS0nXSAtIFByZWZpeCB0byBhZGQgYmVmb3JlIHRoZSBzdGF0ZSBvZiBhIGNsYXNzLiBFbnRlciBhbiBlbXB0eSBzdHJpbmcgdG8gdXNlIG5vIHByZWZpeC5cbi8vLyBAcHJvcCB7U3RyaW5nfSBwcmVmaXggWyctYWN0aXZlJ10gLSBTdWZmaXggdG8gYWRkIHRvIHRoZSBhY3RpdmUgc3RhdGUgY2xhc3MuXG4kbW90aW9uLXVpLWNsYXNzZXM6IChcbiAgY2hhaW46IHRydWUsXG4gIHByZWZpeDogJ211aS0nLFxuICBhY3RpdmU6ICctYWN0aXZlJyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0ZSBuYW1lcyB0byByZWZlcmVuY2Ugd2hlbiB3cml0aW5nIG1vdGlvbiBjbGFzc2VzLiBUbyB1c2UgbXVsdGlwbGUgY2xhc3MgbmFtZXMgZm9yIG9uZSBzdGF0ZSwgZW50ZXIgYSBsaXN0IG9mIHN0cmluZ3MgaW5zdGVhZCBvZiBvbmUgc3RyaW5nLlxuLy8vIEB0eXBlIE1hcFxuJG1vdGlvbi11aS1zdGF0ZXM6IChcbiAgaW46ICdlbnRlcicsXG4gIG91dDogJ2xlYXZlJyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHNwZWVkIHRoYXQgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMgcGxheSBhdCwgYWxvbmcgd2l0aCB2YWx1ZXMgZm9yIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRoZSBzcGVlZC5cbi8vLyBAdHlwZSBNYXBcbiRtb3Rpb24tdWktc3BlZWRzOiAoXG4gIGRlZmF1bHQ6IDUwMG1zLFxuICBzbG93OiA3NTBtcyxcbiAgZmFzdDogMjUwbXMsXG4pICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBkZWxheSB0byBhZGQgYmVmb3JlIG1vdGlvbiwgYWxvbmcgd2l0aCB2YWx1ZXMgZm9yIG1vZGlmaWVyIGNsYXNzZXMgdG8gY2hhbmdlIHRoZSBkZWxheS5cbi8vLyBAdHlwZSBNYXBcbiRtb3Rpb24tdWktZGVsYXlzOiAoXG4gIGRlZmF1bHQ6IDAsXG4gIHNob3J0OiAzMDBtcyxcbiAgbG9uZzogNzAwbXMsXG4pICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBlYXNpbmcgZm9yIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zLCBhbG9uZyB3aXRoIHZhbHVlcyBmb3IgbW9kaWZpZXIgY2xhc3NlcyB0byBjaGFuZ2UgdGhlIGVhc2luZy5cbi8vLyBAdHlwZSBNYXBcbiRtb3Rpb24tdWktZWFzaW5nczogKFxuICBkZWZhdWx0OiBsaW5lYXIsXG4gIGxpbmVhcjogbGluZWFyLFxuICBlYXNlOiBlYXNlLFxuICBlYXNlLWluOiBlYXNlLWluLFxuICBlYXNlLW91dDogZWFzZS1vdXQsXG4gIGVhc2UtaW4tb3V0OiBlYXNlLWluLW91dCxcbiAgYm91bmNlLWluOiBjdWJpYy1iZXppZXIoMC40ODUsIDAuMTU1LCAwLjI0LCAxLjI0NSksXG4gIGJvdW5jZS1vdXQ6IGN1YmljLWJlemllcigwLjQ4NSwgMC4xNTUsIDAuNTE1LCAwLjg0NSksXG4gIGJvdW5jZS1pbi1vdXQ6IGN1YmljLWJlemllcigwLjc2LCAtMC4yNDUsIDAuMjQsIDEuMjQ1KSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBNaXNjZWxsYW5lb3VzIHNldHRpbmdzIHJlbGF0ZWQgdG8gTW90aW9uIFVJLlxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtCb29sZWFufSBzbGlkZS1hbmQtZmFkZSBbZmFsc2VdIC0gRGVmaW5lcyBpZiBzbGlkZSBtb3Rpb25zIHNob3VsZCBhbHNvIGZhZGUgaW4vb3V0LlxuLy8vIEBwcm9wIHtCb29sZWFufSBzbGlkZS1hbmQtZmFkZSBbdHJ1ZV0gLSBEZWZpbmVzIGlmIGhpbmdlIG1vdGlvbnMgc2hvdWxkIGFsc28gZmFkZSBpbi9vdXQuXG4vLy8gQHByb3Age0Jvb2xlYW59IHNsaWRlLWFuZC1mYWRlIFt0cnVlXSAtIERlZmluZXMgaWYgc2NhbGUgbW90aW9ucyBzaG91bGQgYWxzbyBmYWRlIGluL291dC5cbi8vLyBAcHJvcCB7Qm9vbGVhbn0gc2xpZGUtYW5kLWZhZGUgW3RydWVdIC0gRGVmaW5lcyBpZiBzcGluIG1vdGlvbnMgc2hvdWxkIGFsc28gZmFkZSBpbi9vdXQuXG4kbW90aW9uLXVpLXNldHRpbmdzOiAoXG4gIHNsaWRlLWFuZC1mYWRlOiBmYWxzZSxcbiAgaGluZ2UtYW5kLWZhZGU6IHRydWUsXG4gIHNjYWxlLWFuZC1mYWRlOiB0cnVlLFxuICBzcGluLWFuZC1mYWRlOiB0cnVlLFxuICBhY3RpdmF0ZS1xdWV1ZS1jbGFzczogJ2lzLWFuaW1hdGluZycsXG4pICFkZWZhdWx0O1xuIiwiLy8vIENyZWF0ZXMgYSBrZXlmcmFtZSBmcm9tIG9uZSBvciBtb3JlIGVmZmVjdCBmdW5jdGlvbnMgYW5kIGFzc2lnbnMgaXQgdG8gdGhlIGVsZW1lbnQgYnkgYWRkaW5nIHRoZSBgYW5pbWF0aW9uLW5hbWVgIHByb3BlcnR5LlxuLy8vIEBwYXJhbSB7RnVuY3Rpb259ICRlZmZlY3RzLi4uIC0gT25lIG9yIG1vcmUgZWZmZWN0IGZ1bmN0aW9ucyB0byBidWlsZCB0aGUga2V5ZnJhbWUgd2l0aC5cbkBtaXhpbiBtdWktYW5pbWF0aW9uKCRhcmdzLi4uKSB7XG4gICRuYW1lOiBtYXAtZ2V0KC1tdWktcHJvY2Vzcy1hcmdzKCRhcmdzLi4uKSwgbmFtZSk7XG4gIEBpbmNsdWRlIG11aS1rZXlmcmFtZXMoJG5hbWUsICRhcmdzLi4uKTtcbiAgYW5pbWF0aW9uLW5hbWU6IHVucXVvdGUoJG5hbWUpO1xufVxuIiwiLy8vIFByb2Nlc3NlcyBhIHNlcmllcyBvZiBrZXlmcmFtZSBmdW5jdGlvbiBhcmd1bWVudHMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AZnVuY3Rpb24gLW11aS1wcm9jZXNzLWFyZ3MoJGFyZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYXJncykgPT0gMSB7XG4gICAgJGFyZzogbnRoKCRhcmdzLCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRhcmcpID09ICdzdHJpbmcnIHtcbiAgICAgIEByZXR1cm4gY2FsbCgkYXJnKTtcbiAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGFyZykgPT0gJ21hcCcge1xuICAgICAgQHJldHVybiAkYXJnO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gLW11aS1rZXlmcmFtZS1jb21iaW5lKCRhcmdzLi4uKTtcbn1cbiIsIi8vIEludGVybmFsIGNvdW50ZXIgZm9yIGNyZWF0aW5nIHVuaXF1ZSBrZXlmcmFtZSBuYW1lc1xuJC1tdWktY3VzdG9tOiAwO1xuXG4vLy8gQ3JlYXRlcyBhIGtleWZyYW1lIGZyb20gb25lIG9yIG1vcmUgZWZmZWN0IGZ1bmN0aW9ucy4gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBgbXVpLWFuaW1hdGlvbmAgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEga2V5ZnJhbWUgYW5pbWF0aW9uICp3aXRob3V0KiBhdXRvbWF0aWNhbGx5IGFzc2lnbmluZyBpdCB0byB0aGUgZWxlbWVudC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBrZXlmcmFtZS5cbi8vLyBAcGFyYW0ge0Z1bmN0aW9ufSAkZWZmZWN0cy4uLiAtIE9uZSBvciBtb3JlIGVmZmVjdCBmdW5jdGlvbnMgdG8gYnVpbGQgdGhlIGtleWZyYW1lIHdpdGguXG5AbWl4aW4gbXVpLWtleWZyYW1lcygkbmFtZSwgJGVmZmVjdHMuLi4pIHtcbiAgJG9iajogLW11aS1wcm9jZXNzLWFyZ3MoJGVmZmVjdHMuLi4pO1xuICAkb2JqOiBtYXAtcmVtb3ZlKCRvYmosIG5hbWUpO1xuXG4gIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgIC8vIE5vdyBpdGVyYXRlIHRocm91Z2ggZWFjaCBrZXlmcmFtZSBwZXJjZW50YWdlXG4gICAgQGVhY2ggJHBjdCwgJHByb3BzIGluICRvYmoge1xuICAgICAgI3stbXVpLWtleWZyYW1lLXBjdCgkcGN0KX0ge1xuICAgICAgICAvLyBMYXN0bHksIGl0ZXJhdGUgdGhyb3VnaCBlYWNoIENTUyBwcm9wZXJ0eSB3aXRoaW4gYSBwZXJjZW50YWdlIGFuZCBwcmludCBpdCBvdXRcbiAgICAgICAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkcHJvcHMge1xuICAgICAgICAgICN7JHByb3B9OiAjeyR2YWx1ZX07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzdHJpbmcgZm9yIGEgQ1NTIGtleWZyYW1lLCBieSBjb252ZXJ0aW5nIGEgbGlzdCBvZiBudW1iZXJzIHRvIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcGVyY2VudGFnZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGlucHV0IC0gTGlzdCBvZiBudW1iZXJzIHRvIHVzZS5cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IEEgc2V0IG9mIGNvbW1hLXNlcGFyYXRlZCBwZXJjZW50YWdlIHZhbHVlcy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBmdW5jdGlvbiAtbXVpLWtleWZyYW1lLXBjdCgkaW5wdXQpIHtcbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJGlucHV0KSA9PSAnbnVtYmVyJyB7XG4gICAgJG91dHB1dDogKCRpbnB1dCAqIDElKTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpbnB1dCkgPT0gJ2xpc3QnIHtcbiAgICBAZWFjaCAkaSBpbiAkaW5wdXQge1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICgkaSAqIDElKSwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuLy8vIFByaW50cyB0aGUgQ1NTIHByb3BlcnRpZXMgZnJvbSBhIHNwZWNpZmljIGtleSBpbiBhIGtleWZyYW1lcyBtYXAuIFVzZWQgdG8gYm9ycm93IENTUyBmcm9tIGtleWZyYW1lIGZ1bmN0aW9ucyBmb3IgdXNlIGluIHRyYW5zaXRpb25zLlxuLy8vIEBwYXJhbSB7TWFwfSAka2YgLSBLZXlmcmFtZSBtYXAgdG8gZXh0cmFjdCBmcm9tLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAka2V5IC0gS2V5IGluIHRoZSBtYXAgdG8gcHJpbnQgdGhlIENTUyBvZi5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiAtbXVpLWtleWZyYW1lLWdldCgka2YsICRrZXkpIHtcbiAgJG1hcDogbWFwLWdldCgka2YsICRrZXkpO1xuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG1hcCBvciAoKSB7XG4gICAgLy8gU29tZSBrZXlmcmFtZSBtYXBzIHN0b3JlIHRyYW5zZm9ybXMgYXMgcXVvdGVkIHN0cmluZ3NcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdzdHJpbmcnIHtcbiAgICAgICR2YWx1ZTogdW5xdW90ZSgkdmFsdWUpO1xuICAgIH1cbiAgICAjeyRwcm9wfTogJHZhbHVlO1xuICB9XG59XG5cbi8vLyBSZWZvcm1hdHMgYSBtYXAgY29udGFpbmluZyBrZXlzIHdpdGggYSBsaXN0IG9mIHZhbHVlcywgc28gdGhhdCBlYWNoIGtleSBpcyBhIHNpbmdsZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzcGxpdCB1cC5cbi8vLyBAcmV0dXJuIHtNYXB9IEEgcmVmb3JtYXR0ZWQgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQGZ1bmN0aW9uIC1tdWkta2V5ZnJhbWUtc3BsaXQoJG1hcCkge1xuICAkbmV3LW1hcDogKCk7XG5cbiAgLy8gU3BsaXQga2V5cyB3aXRoIG11bHRpcGxlIHZhbHVlcyBpbnRvIGluZGl2aWR1YWwga2V5c1xuICBAZWFjaCAka2V5LCAkaXRlbSBpbiAkbWFwIHtcbiAgICAka2V5LXR5cGU6IHR5cGUtb2YoJGtleSk7XG5cbiAgICBAaWYgJGtleS10eXBlID09ICdudW1iZXInIHtcbiAgICAgICRuZXctbWFwOiBtYXAtbWVyZ2UoJG5ldy1tYXAsICgka2V5OiAkaXRlbSkpO1xuICAgIH0gQGVsc2UgaWYgJGtleS10eXBlID09ICdsaXN0JyB7XG4gICAgICBAZWFjaCAkayBpbiAka2V5IHtcbiAgICAgICAgJG5ldy1tYXA6IG1hcC1tZXJnZSgkbmV3LW1hcCwgKCRrOiAkaXRlbSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5ldy1tYXA7XG59XG5cbi8vLyBDb21iaW5lcyBhIHNlcmllcyBvZiBrZXlmcmFtZSBvYmplY3RzIGludG8gb25lLlxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwcy4uLiAtIEEgc2VyaWVzIG9mIG1hcHMgdG8gbWVyZ2UsIGFzIGluZGl2aWR1YWwgcGFyYW1ldGVycy5cbi8vLyBAcmV0dXJuIHtNYXB9IEEgY29tYmluZWQga2V5ZnJhbWUgb2JqZWN0LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQGZ1bmN0aW9uIC1tdWkta2V5ZnJhbWUtY29tYmluZSgkbWFwcy4uLikge1xuICAkbmV3LW1hcDogKCk7XG5cbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2ggbWFwIHBhc3NlZCBpblxuICBAZWFjaCAkbWFwIGluICRtYXBzIHtcbiAgICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkbWFwOiBjYWxsKCRtYXApO1xuICAgIH1cblxuICAgICRtYXA6IC1tdWkta2V5ZnJhbWUtc3BsaXQoJG1hcCk7XG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBrZXlmcmFtZSBpbiB0aGUgbWFwXG4gICAgLy8gJGtleSBpcyB0aGUga2V5ZnJhbWUgcGVyY2VudGFnZVxuICAgIC8vICR2YWx1ZSBpcyBhIG1hcCBvZiBDU1MgcHJvcGVydGllc1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAgICRuZXctdmFsdWU6ICgpO1xuXG4gICAgICBAaWYgbWFwLWhhcy1rZXkoJG5ldy1tYXAsICRrZXkpIHtcbiAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJlYWR5IGhhcyB0aGUga2V5ZnJhbWUgJSwgYXBwZW5kIHRoZSBuZXcgcHJvcGVydHlcbiAgICAgICAgJG5ldy12YWx1ZTogLW11aS1tZXJnZS1wcm9wZXJ0aWVzKG1hcC1nZXQoJG5ldy1tYXAsICRrZXkpLCAkdmFsdWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSwgY3JlYXRlIGEgbmV3IG1hcCB3aXRoIHRoZSBuZXcgcHJvcGVydHlcbiAgICAgICAgJG5ldy12YWx1ZTogJHZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5hbGx5LCBtZXJnZSB0aGUgbW9kaWZpZWQga2V5ZnJhbWUgdmFsdWUgaW50byB0aGUgb3V0cHV0IG1hcFxuICAgICAgJG5ldy1tYXA6IG1hcC1tZXJnZSgkbmV3LW1hcCwgKCRrZXk6ICRuZXctdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYWtlIGEgbmFtZSBmb3IgdGhlIGtleWZyYW1lc1xuICAkLW11aS1jdXN0b206ICQtbXVpLWN1c3RvbSArIDEgIWdsb2JhbDtcbiAgJG1hcC1uYW1lOiAobmFtZTogJ2N1c3RvbS0jeyQtbXVpLWN1c3RvbX0nKTtcbiAgJG5ldy1tYXA6IG1hcC1tZXJnZSgkbmV3LW1hcCwgJG1hcC1uYW1lKTtcblxuICBAcmV0dXJuICRuZXctbWFwO1xufVxuXG4vLy8gQ29tYmluZXMgdHdvIG1hcHMgb2YgQ1NTIHByb3BlcnRpZXMgaW50byBvbmUgbWFwLiBJZiBib3RoIG1hcHMgaGF2ZSBhIHRyYW5zZm9ybSBwcm9wZXJ0eSwgdGhlIHZhbHVlcyBmcm9tIGVhY2ggd2lsbCBiZSBjb21iaW5lZCBpbnRvIG9uZSBwcm9wZXJ0eS5cbi8vLyBAcGFyYW0ge01hcH0gJG9uZSAtIEZpcnN0IG1hcCB0byBtZXJnZS5cbi8vLyBAcGFyYW0ge01hcH0gJHR3byAtIFNlY29uZCBtYXAgdG8gbWVyZ2UuXG4vLy8gQHJldHVybiB7TWFwfSBBIGNvbWJpbmVkIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBmdW5jdGlvbiAtbXVpLW1lcmdlLXByb3BlcnRpZXMoJG9uZSwgJHR3bykge1xuICBAaWYgbWFwLWhhcy1rZXkoJG9uZSwgdHJhbnNmb3JtKSBhbmQgbWFwLWhhcy1rZXkoJHR3bywgdHJhbnNmb3JtKSB7XG4gICAgJHRyYW5zZm9ybTogam9pbihtYXAtZ2V0KCRvbmUsIHRyYW5zZm9ybSksIG1hcC1nZXQoJHR3bywgdHJhbnNmb3JtKSk7XG4gICAgJG9uZTogbWFwLW1lcmdlKCRvbmUsICh0cmFuc2Zvcm06ICR0cmFuc2Zvcm0pKTtcbiAgICAkdHdvOiBtYXAtcmVtb3ZlKCR0d28sIHRyYW5zZm9ybSk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkb25lLCAkdHdvKTtcbn1cbiIsIi8vLyBCdWlsZHMgYSBzZWxlY3RvciBmb3IgYSBtb3Rpb24gY2xhc3MsIHVzaW5nIHRoZSBzZXR0aW5ncyBkZWZpbmVkIGluIHRoZSBgJG1vdGlvbi11aS1jbGFzc2VzYCBhbmQgYCRtb3Rpb24tdWktc3RhdGVzYCBtYXBzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfExpc3R9ICRzdGF0ZXMgLSBPbmUgb3IgbW9yZSBzdHJpbmdzIHRoYXQgY29ycmVsYXRlIHRvIGEgc3RhdGUuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYWN0aXZlIC0gRGVmaW5lcyBpZiB0aGUgc2VsZWN0b3IgaXMgZm9yIHRoZSBzZXR1cCBvciBhY3RpdmUgY2xhc3MuXG4vLy8gQHJldHVybiB7U3RyaW5nfSBBIHNlbGVjdG9yIHRoYXQgY2FuIGJlIGludGVycG9sYXRlZCBpbnRvIHlvdXIgU2FzcyBjb2RlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQGZ1bmN0aW9uIC1tdWktYnVpbGQtc2VsZWN0b3IoJHN0YXRlcywgJGFjdGl2ZTogZmFsc2UpIHtcbiAgJHJldHVybjogJyc7XG4gICRjaGFpbjogbWFwLWdldCgkbW90aW9uLXVpLWNsYXNzZXMsIGNoYWluKTtcbiAgJHByZWZpeDogbWFwLWdldCgkbW90aW9uLXVpLWNsYXNzZXMsIHByZWZpeCk7XG4gICRzdWZmaXg6IG1hcC1nZXQoJG1vdGlvbi11aS1jbGFzc2VzLCBhY3RpdmUpO1xuXG4gIEBlYWNoICRzZWwgaW4gJHN0YXRlcyB7XG4gICAgJHJldHVybjogJHJldHVybiArIGlmKCRjaGFpbiwgJyYuJywgJyN7Jn0tJykgKyAkcHJlZml4ICsgJHNlbDtcblxuICAgIEBpZiAkYWN0aXZlIHtcbiAgICAgICRyZXR1cm46ICRyZXR1cm4gKyBpZigkY2hhaW4sICcuJywgJyN7Jn0tJykgKyAkcHJlZml4ICsgJHNlbCArICRzdWZmaXg7XG4gICAgfVxuXG4gICAgJHJldHVybjogJHJldHVybiArICcsICc7XG4gIH1cblxuICBAcmV0dXJuIHN0ci1zbGljZSgkcmV0dXJuLCAxLCAtMyk7XG59XG4iLCIkLW11aS1xdWV1ZTogKCk7XG5cbi8vLyBQYXVzZXMgdGhlIGFuaW1hdGlvbiBvbiBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCB0aGVuIHBsYXlzIGl0IHdoZW4gYW4gYWN0aXZlIGNsYXNzIGlzIGFkZGVkIHRvIGEgcGFyZW50LiBBbHNvIHNldHMgdGhlIGZpbGwgbW9kZSBvZiB0aGUgYW5pbWF0aW9uIHRvIGBib3RoYC4gVGhpcyBwYXVzZXMgdGhlIGVsZW1lbnQgYXQgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBhbmltYXRpb24sIGFuZCBob2xkcyBpdCBpbiBwbGFjZSBhdCB0aGUgZW5kLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuJWFuaW1hdGVkLWVsZW1lbnQge1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuXG4gIC4je21hcC1nZXQoJG1vdGlvbi11aS1zZXR0aW5ncywgYWN0aXZhdGUtcXVldWUtY2xhc3MpfSAmIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG5ldyBhbmltYXRpb24gcXVldWUuXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGRlbGF5IFswc10gLSBEZWxheSBpbiBzZWNvbmRzIG9yIG1pbGxpc2Vjb25kcyB0byBwbGFjZSBhdCB0aGUgZnJvbnQgb2YgdGhlIGFuaW1hdGlvbiBxdWV1ZS5cbkBtaXhpbiBtdWktc2VyaWVzKCRkZWxheTogMHMpIHtcbiAgJC1tdWktcXVldWU6ICgpICFnbG9iYWw7XG5cbiAgQGlmICRkZWxheSA+IDAge1xuICAgICRpdGVtOiAoJGRlbGF5LCAwcyk7XG4gICAgJC1tdWktcXVldWU6IGFwcGVuZCgkLW11aS1xdWV1ZSwgJGl0ZW0pICFnbG9iYWw7XG4gIH1cblxuICBAY29udGVudDtcbn1cblxuLy8vIEFkZHMgYW4gYW5pbWF0aW9uIHRvIGFuIGFuaW1hdGlvbiBxdWV1ZS4gT25seSB1c2UgdGhpcyBtaXhpbiBpbnNpZGUgb2YgYG11aS1zZXJpZXMoKWAuXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGR1cmF0aW9uIFsxc10gLSBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbi5cbi8vLyBAcGFyYW0ge0R1cmF0aW9ufSAkZ2FwIFswc10gLSBBbW91bnQgb2YgdGltZSB0byBwYXVzZSBiZWZvcmUgcGxheWluZyB0aGUgYW5pbWF0aW9uIGFmdGVyIHRoaXMgb25lLiBVc2UgYSBuZWdhdGl2ZSB2YWx1ZSB0byBtYWtlIHRoZSBuZXh0IGVmZmVjdCBvdmVybGFwIHdpdGggdGhlIGN1cnJlbnQgb25lLlxuLy8vIEBwYXJhbSB7RnVuY3Rpb259ICRrZXlmcmFtZXMuLi4gLSBPbmUgb3IgbW9yZSBlZmZlY3QgZnVuY3Rpb25zIHRvIGJ1aWxkIHRoZSBrZXlmcmFtZSB3aXRoLlxuQG1peGluIG11aS1xdWV1ZShcbiAgJGR1cmF0aW9uOiAxcyxcbiAgJGdhcDogMHMsXG4gICRrZXlmcmFtZXMuLi5cbikge1xuICAvLyBCdWlsZCB0aGUgYW5pbWF0aW9uXG4gICRrZjogLW11aS1wcm9jZXNzLWFyZ3MoJGtleWZyYW1lcy4uLik7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBkZWxheSBmb3IgdGhpcyBhbmltYXRpb24gYmFzZWQgb24gaG93IGxvbmcgdGhlIHByZXZpb3VzIG9uZXMgdGFrZVxuICAkYWN0dWFsLWRlbGF5OiAwcztcbiAgQGVhY2ggJGFuaW0gaW4gJC1tdWktcXVldWUge1xuICAgICRhY3R1YWwtZGVsYXk6ICRhY3R1YWwtZGVsYXkgKyBudGgoJGFuaW0sIDEpICsgbnRoKCRhbmltLCAyKTtcbiAgfVxuXG4gIC8vIEFwcGVuZCB0aGlzIGFuaW1hdGlvbidzIGxlbmd0aCBhbmQgZ2FwIHRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlXG4gICRpdGVtOiAoJGR1cmF0aW9uLCAkZ2FwKTtcbiAgJC1tdWktcXVldWU6IGFwcGVuZCgkLW11aS1xdWV1ZSwgJGl0ZW0pICFnbG9iYWw7XG5cbiAgLy8gQ1NTIG91dHB1dFxuICBAZXh0ZW5kICVhbmltYXRlZC1lbGVtZW50O1xuICBAaW5jbHVkZSBtdWktYW5pbWF0aW9uKCRrZik7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICBhbmltYXRpb24tZGVsYXk6ICRhY3R1YWwtZGVsYXk7XG59XG4iLCIvLy8gQXBwbGllcyBiYXNpYyB0cmFuc2l0aW9uIHNldHRpbmdzIHRvIGFuIGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGR1cmF0aW9uIFtudWxsXSAtIExlbmd0aCAoc3BlZWQpIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxGdW5jdGlvbn0gJHRpbWluZyBbbnVsbF0gLSBFYXNpbmcgb2YgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGRlbGF5IFtudWxsXSAtIERlbGF5IGluIHNlY29uZHMgb3IgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgdHJhbnNpdGlvbiBzdGFydHMuXG5AbWl4aW4gdHJhbnNpdGlvbi1iYXNpY3MoXG4gICRkdXJhdGlvbjogbnVsbCxcbiAgJHRpbWluZzogbnVsbCxcbiAgJGRlbGF5OiBudWxsXG4pIHtcbiAgQGluY2x1ZGUgLW1vdGlvbi11aS1kZWZhdWx0cztcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJHRpbWluZztcbiAgdHJhbnNpdGlvbi1kZWxheTogJGRlbGF5O1xufVxuXG4vLy8gV3JhcHMgdGhlIGNvbnRlbnQgaW4gdGhlIHNldHVwIGNsYXNzIGZvciBhIHRyYW5zaXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyIC0gU3RhdGUgdG8gc2V0dXAgZm9yIHRyYW5zaXRpb24uXG5AbWl4aW4gdHJhbnNpdGlvbi1zdGFydCgkZGlyKSB7XG4gICRzZWxlY3RvcjogLW11aS1idWlsZC1zZWxlY3RvcihtYXAtZ2V0KCRtb3Rpb24tdWktc3RhdGVzLCAkZGlyKSk7XG5cbiAgQGF0LXJvb3Qge1xuICAgICN7JHNlbGVjdG9yfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFdyYXBzIHRoZSBjb250ZW50IGluIHRoZSBhY3RpdmUgY2xhc3MgZm9yIGEgdHJhbnNpdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBTdGF0ZSB0byBhY3RpdmF0ZSBhIHRyYW5zaXRpb24gb24uXG5AbWl4aW4gdHJhbnNpdGlvbi1lbmQoJGRpcikge1xuICAkc2VsZWN0b3I6IC1tdWktYnVpbGQtc2VsZWN0b3IobWFwLWdldCgkbW90aW9uLXVpLXN0YXRlcywgJGRpciksIHRydWUpO1xuXG4gIEBhdC1yb290IHtcbiAgICAjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzdGFnZ2VyIGFuaW1hdGlvbiwgd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBBbmd1bGFyJ3MgYG5nLXJlcGVhdGAuXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGRlbGF5LWFtb3VudCAtIEFtb3VudCBvZiB0aW1lIGluIHNlY29uZHMgb3IgbWlsbGlzZWNvbmRzIHRvIGFkZCBiZXR3ZWVuIGVhY2ggaXRlbSdzIGFuaW1hdGlvbi5cbkBtaXhpbiBzdGFnZ2VyKCRkZWxheS1hbW91bnQpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogJGRlbGF5LWFtb3VudDtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMDsgLy8gUHJldmVudCBhY2NpZGVudGFsIENTUyBpbmhlcml0YW5jZVxufVxuIiwiLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy8gQHJldHVybiB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG4iLCIvLy8gQ3JlYXRlcyBhIGZhZGluZyBhbmltYXRpb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmcm9tIFswXSAtIE9wYWNpdHkgdG8gc3RhcnQgYXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0byBbMV0gLSBPcGFjaXR5IHRvIGVuZCBhdC5cbi8vLyBAcmV0dXJuIHtNYXB9IEEga2V5ZnJhbWVzIG1hcCB0aGF0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGBnZW5lcmF0ZS1rZXlmcmFtZXMoKWAgbWl4aW4uXG5AZnVuY3Rpb24gZmFkZShcbiAgJGZyb206IDAsXG4gICR0bzogMVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRmcm9tKTtcbiAgJGtleWZyYW1lczogKCk7XG5cbiAgQGlmICR0eXBlID09ICdzdHJpbmcnIHtcbiAgICBAaWYgJGZyb20gPT0gaW4ge1xuICAgICAgJGZyb206IDA7XG4gICAgICAkdG86IDE7XG4gICAgfSBAZWxzZSBpZiAkZnJvbSA9PSBvdXQge1xuICAgICAgJGZyb206IDE7XG4gICAgICAkdG86IDA7XG4gICAgfVxuICB9XG5cbiAgJGZyb21OYW1lOiAkZnJvbSAqIDEwMDtcbiAgJHRvTmFtZTogICAkdG8gICAqIDEwMDtcblxuICAka2V5ZnJhbWVzOiAoXG4gICAgbmFtZTogJ2ZhZGUtI3skZnJvbU5hbWV9LXRvLSN7JHRvTmFtZX0nLFxuICAgIDA6IChvcGFjaXR5OiAkZnJvbSksXG4gICAgMTAwOiAob3BhY2l0eTogJHRvKSxcbiAgKTtcblxuICBAcmV0dXJuICRrZXlmcmFtZXM7XG59XG4iLCIvLy8gQ3JlYXRlcyBhIGhpbmdlIGVmZmVjdCBieSByb3RhdGluZyB0aGUgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdGF0ZSBbaW5dIC0gU3RhdGUgdG8gdHJhbnNpdGlvbiB0by5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRmcm9tIFtsZWZ0XSAtIEVkZ2Ugb2YgdGhlIGVsZW1lbnQgdG8gcm90YXRlIGZyb20uIENhbiBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRheGlzIFtlZGdlXSAtIEF4aXMgb2YgdGhlIGVsZW1lbnQgdG8gcm90YXRlIG9uLiBDYW4gYmUgYGVkZ2VgIG9yIGBjZW50ZXJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyc3BlY3RpdmUgWzIwMDBweF0gLSBQZXJjZWl2ZWQgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmlld2VyIGFuZCB0aGUgZWxlbWVudC4gQSBoaWdoZXIgbnVtYmVyIHdpbGwgbWFrZSB0aGUgcm90YXRpb24gZWZmZWN0IG1vcmUgcHJvbm91bmNlZC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0dXJuLW9yaWdpbiBbZnJvbS1iYWNrXSAtIFNpZGUgb2YgdGhlIGVsZW1lbnQgdG8gc3RhcnQgdGhlIHJvdGF0aW9uIGZyb20uIENhbiBiZSBgZnJvbS1iYWNrYCBvciBgZnJvbS1mcm9udGAuXG5AZnVuY3Rpb24gaGluZ2UgKFxuICAkc3RhdGU6IGluLFxuICAkZnJvbTogbGVmdCxcbiAgJGF4aXM6IGVkZ2UsXG4gICRwZXJzcGVjdGl2ZTogMjAwMHB4LFxuICAkdHVybi1vcmlnaW46IGZyb20tYmFja1xuKSB7XG4gIC8vIFJvdGF0aW9uIGRpcmVjdGlvbnMgd2hlbiBoaW5naW5nIGZyb20gYmFjayB2cy4gZnJvbnRcbiAgJHJvdGF0aW9uLWFtb3VudDogOTBkZWc7XG4gICRyb3RhdGlvbnMtYmFjazogKFxuICAgIHRvcDogcm90YXRlWCgkcm90YXRpb24tYW1vdW50ICogLTEpLFxuICAgIHJpZ2h0OiByb3RhdGVZKCRyb3RhdGlvbi1hbW91bnQgKiAtMSksXG4gICAgYm90dG9tOiByb3RhdGVYKCRyb3RhdGlvbi1hbW91bnQpLFxuICAgIGxlZnQ6IHJvdGF0ZVkoJHJvdGF0aW9uLWFtb3VudCksXG4gICk7XG4gICRyb3RhdGlvbnMtZnJvbTogKFxuICAgIHRvcDogcm90YXRlWCgkcm90YXRpb24tYW1vdW50KSxcbiAgICByaWdodDogcm90YXRlWSgkcm90YXRpb24tYW1vdW50KSxcbiAgICBib3R0b206IHJvdGF0ZVgoJHJvdGF0aW9uLWFtb3VudCAqIC0xKSxcbiAgICBsZWZ0OiByb3RhdGVZKCRyb3RhdGlvbi1hbW91bnQgKiAtMSksXG4gICk7XG5cbiAgLy8gUm90YXRpb24gb3JpZ2luXG4gICRyb3RhdGlvbjogJyc7XG4gIEBpZiAkdHVybi1vcmlnaW4gPT0gZnJvbS1mcm9udCB7XG4gICAgJHJvdGF0aW9uOiBtYXAtZ2V0KCRyb3RhdGlvbnMtZnJvbSwgJGZyb20pO1xuICB9IEBlbHNlIGlmICR0dXJuLW9yaWdpbiA9PSBmcm9tLWJhY2sge1xuICAgICRyb3RhdGlvbjogbWFwLWdldCgkcm90YXRpb25zLWJhY2ssICRmcm9tKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJyR0dXJuLW9yaWdpbiBtdXN0IGJlIGVpdGhlciBcImZyb20tYmFja1wiIG9yIFwiZnJvbS1mcm9udFwiJztcbiAgfVxuXG4gIC8vIFN0YXJ0IGFuZCBlbmQgc3RhdGVcbiAgJHN0YXJ0OiAnJztcbiAgJGVuZDogJyc7XG4gIEBpZiAkc3RhdGUgPT0gaW4ge1xuICAgICRzdGFydDogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkcm90YXRpb247XG4gICAgJGVuZDogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSByb3RhdGUoMGRlZyk7XG4gIH0gQGVsc2Uge1xuICAgICRzdGFydDogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSByb3RhdGUoMGRlZyk7XG4gICAgJGVuZDogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkcm90YXRpb247XG4gIH1cblxuICAvLyBUdXJuIGF4aXNcbiAgJG9yaWdpbjogJyc7XG4gIEBpZiAkYXhpcyA9PSBlZGdlIHtcbiAgICAkb3JpZ2luOiAkZnJvbTtcbiAgfSBAZWxzZSB7XG4gICAgJG9yaWdpbjogY2VudGVyO1xuICB9XG5cbiAgJGtleWZyYW1lczogKFxuICAgIG5hbWU6ICdoaW5nZS0jeyRzdGF0ZX0tI3skZnJvbX0tI3skYXhpc30tI3skdHVybi1vcmlnaW59JyxcbiAgICAwOiAodHJhbnNmb3JtOiAkc3RhcnQsIHRyYW5zZm9ybS1vcmlnaW46ICRvcmlnaW4pLFxuICAgIDEwMDogKHRyYW5zZm9ybTogJGVuZCksXG4gICk7XG5cbiAgQHJldHVybiAka2V5ZnJhbWVzO1xufVxuIiwiLy8vIENyZWF0ZXMgYSBzcGlubmluZyBhbmltYXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtjd10gLSBEaXJlY3Rpb24gdG8gc3Bpbi4gU2hvdWxkIGJlIGBjd2AgKGNsb2Nrd2lzZSkgb3IgYGNjd2AgKGNvdW50ZXJjbG9ja3dpc2UpLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYW1vdW50IFszNjBkZWddIC0gQW1vdW50IHRvIHNwaW4uIENhbiBiZSBhbnkgQ1NTIGFuZ2xlIHVuaXQuXG4vLy8gQHJldHVybiB7TWFwfSBBIGtleWZyYW1lcyBtYXAgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBgZ2VuZXJhdGUta2V5ZnJhbWVzKClgIG1peGluLlxuQGZ1bmN0aW9uIHNwaW4oXG4gICRzdGF0ZTogaW4sXG4gICRkaXJlY3Rpb246IGN3LFxuICAkYW1vdW50OiAxdHVyblxuKSB7XG4gICRzdGFydDogMDtcbiAgJGVuZDogMDtcblxuICBAaWYgJHN0YXRlID09IGluIHtcbiAgICAkc3RhcnQ6IGlmKCRkaXJlY3Rpb24gPT0gY2N3LCAkYW1vdW50LCAkYW1vdW50ICogLTEpO1xuICAgICRlbmQ6IDA7XG4gIH0gQGVsc2Uge1xuICAgICRzdGFydDogMDtcbiAgICAkZW5kOiBpZigkZGlyZWN0aW9uID09IGNjdywgJGFtb3VudCAqIC0xLCAkYW1vdW50KTtcbiAgfVxuXG4gICRrZXlmcmFtZXM6IChcbiAgICBuYW1lOiAnc3Bpbi0jeyRkaXJlY3Rpb259LSN7JGFtb3VudH0nLFxuICAgIDA6ICh0cmFuc2Zvcm06IHJvdGF0ZSgkc3RhcnQpKSxcbiAgICAxMDA6ICh0cmFuc2Zvcm06IHJvdGF0ZSgkZW5kKSksXG4gICk7XG5cbiAgQHJldHVybiAka2V5ZnJhbWVzO1xufVxuIiwiLy8vIENyZWF0ZXMgYSBzY2FsaW5nIHRyYW5zaXRpb24uIEEgc2NhbGUgb2YgYDFgIG1lYW5zIHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIHNpemUuIExhcmdlciBudW1iZXJzIG1ha2UgdGhlIGVsZW1lbnQgYmlnZ2VyLCB3aGlsZSBudW1iZXJzIGxlc3MgdGhhbiAxIG1ha2UgdGhlIGVsZW1lbnQgc21hbGxlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZyb20gWzEuNV0gLSBTaXplIHRvIHN0YXJ0IGF0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG8gWzFdIC0gU2l6ZSB0byBlbmQgYXQuXG5AZnVuY3Rpb24gem9vbShcbiAgJGZyb206IDAsXG4gICR0bzogMVxuKSB7XG4gICRrZXlmcmFtZXM6IChcbiAgICBuYW1lOiAnc2NhbGUtI3skdG99LXRvLSN7JGZyb219JyxcbiAgICAwOiAodHJhbnNmb3JtOiBzY2FsZSgkZnJvbSkpLFxuICAgIDEwMDogKHRyYW5zZm9ybTogc2NhbGUoJHRvKSksXG4gICk7XG5cbiAgQHJldHVybiAka2V5ZnJhbWVzO1xufVxuIiwiLy8vIENyZWF0ZXMgYSBzaGFraW5nIGFuaW1hdGlvbi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICRpbnRlbnNpdHkgWzclXSAtIEludGVuc2l0eSBvZiB0aGUgc2hha2UsIGFzIGEgcGVyY2VudGFnZSB2YWx1ZS5cbi8vLyBAcmV0dXJuIHtNYXB9IEEga2V5ZnJhbWVzIG1hcCB0aGF0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGBnZW5lcmF0ZS1rZXlmcmFtZXMoKWAgbWl4aW4uXG5AZnVuY3Rpb24gc2hha2UoJGludGVuc2l0eTogNyUpIHtcbiAgJHJpZ2h0OiAoMCwgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCwgNzAsIDgwLCA5MCk7XG4gICRsZWZ0OiAoNSwgMTUsIDI1LCAzNSwgNDUsIDU1LCA2NSwgNzUsIDg1LCA5NSk7XG5cbiAgJGtleWZyYW1lczogKFxuICAgIG5hbWU6ICdzaGFrZS0jeygkaW50ZW5zaXR5IC8gMSUpfScsXG4gICAgJHJpZ2h0OiAodHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRpbnRlbnNpdHkpKSxcbiAgICAkbGVmdDogKHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJGludGVuc2l0eSkpLFxuICApO1xuXG4gIEByZXR1cm4gJGtleWZyYW1lcztcbn1cbiIsIi8vLyBDcmVhdGVzIGEgc2xpZGluZyBhbmltYXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RhdGUgW2luXSAtIFdoZXRoZXIgdG8gbW92ZSB0byAoYGluYCkgb3IgZnJvbSAoYG91dGApIHRoZSBlbGVtZW50J3MgZGVmYXVsdCBwb3NpdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3VwXSAtIERpcmVjdGlvbiB0byBtb3ZlLiBDYW4gYmUgYHVwYCwgYGRvd25gLCBgbGVmdGAsIG9yIGByaWdodGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhbW91bnQgWzEwMCVdIC0gRGlzdGFuY2UgdG8gbW92ZS4gQ2FuIGJlIGFueSBDU1MgbGVuZ3RoIHVuaXQuXG4vLy8gQHJldHVybiB7TWFwfSBBIGtleWZyYW1lcyBtYXAgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBgZ2VuZXJhdGUta2V5ZnJhbWVzKClgIG1peGluLlxuQGZ1bmN0aW9uIHNsaWRlKFxuICAkc3RhdGU6IGluLFxuICAkZGlyZWN0aW9uOiB1cCxcbiAgJGFtb3VudDogMTAwJVxuKSB7XG4gICRmcm9tOiAkYW1vdW50O1xuICAkdG86IDA7XG4gICRmdW5jOiAndHJhbnNsYXRlWSc7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCBvciAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAkZnVuYzogJ3RyYW5zbGF0ZVgnO1xuICB9XG5cbiAgQGlmICRzdGF0ZSA9PSBvdXQge1xuICAgICRmcm9tOiAwO1xuICAgICR0bzogJGFtb3VudDtcbiAgfVxuXG4gIEBpZiAkZGlyZWN0aW9uID09IGRvd24gb3IgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgQGlmICRzdGF0ZSA9PSBpbiB7XG4gICAgICAkZnJvbTogLSRmcm9tO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICRzdGF0ZSA9PSBvdXQge1xuICAgICAgJHRvOiAtJHRvO1xuICAgIH1cbiAgfVxuXG4gICRrZXlmcmFtZXM6IChcbiAgICBuYW1lOiAnc2xpZGUtI3skc3RhdGV9LSN7JGRpcmVjdGlvbn0tI3tzdHJpcC11bml0KCRhbW91bnQpfScsXG4gICAgMDogKHRyYW5zZm9ybTogJyN7JGZ1bmN9KCN7JGZyb219KScpLFxuICAgIDEwMDogKHRyYW5zZm9ybTogJyN7JGZ1bmN9KCN7JHRvfSknKSxcbiAgKTtcblxuICBAcmV0dXJuICRrZXlmcmFtZXM7XG59XG4iLCIvLy8gQ3JlYXRlcyBhIHdpZ2dsaW5nIGFuaW1hdGlvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGludGVuc2l0eSBbN2RlZ10gLSBJbnRlbnNpdHkgb2YgdGhlIHdpZ2dsZS4gQ2FuIGJlIGFueSBDU1MgYW5nbGUgdW5pdC5cbi8vLyBAcmV0dXJuIHtNYXB9IEEga2V5ZnJhbWVzIG1hcCB0aGF0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGBnZW5lcmF0ZS1rZXlmcmFtZXMoKWAgbWl4aW4uXG5AZnVuY3Rpb24gd2lnZ2xlKCRpbnRlbnNpdHk6IDdkZWcpIHtcbiAgJGtleWZyYW1lczogKFxuICAgIG5hbWU6ICd3aWdnbGUtI3skaW50ZW5zaXR5fScsXG4gICAgKDQwLCA1MCwgNjApOiAodHJhbnNmb3JtOiByb3RhdGUoJGludGVuc2l0eSkpLFxuICAgICgzNSwgNDUsIDU1LCA2NSk6ICh0cmFuc2Zvcm06IHJvdGF0ZSgtJGludGVuc2l0eSkpLFxuICAgICgwLCAzMCwgNzAsIDEwMCk6ICh0cmFuc2Zvcm06IHJvdGF0ZSgwKSksXG4gICk7XG5cbiAgQHJldHVybiAka2V5ZnJhbWVzO1xufVxuIiwiLy8vIENyZWF0ZXMgYSBmYWRlIHRyYW5zaXRpb24gYnkgYWRqdXN0aW5nIHRoZSBvcGFjaXR5IG9mIHRoZSBlbGVtZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0YXRlIFtpbl0gLSBTdGF0ZSB0byB0cmFuc2l0aW9uIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZnJvbSBbMF0gLSBPcGFjaXR5IHRvIHN0YXJ0IGF0LiBNdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvIFsxXSAtIE9wYWNpdHkgdG8gZW5kIG9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGR1cmF0aW9uIFtudWxsXSAtIExlbmd0aCAoc3BlZWQpIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxGdW5jdGlvbn0gJHRpbWluZyBbbnVsbF0gLSBFYXNpbmcgb2YgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHBhcmFtIHtEdXJhdGlvbn0gJGRlbGF5IFtudWxsXSAtIERlbGF5IGluIHNlY29uZHMgb3IgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgdHJhbnNpdGlvbiBzdGFydHMuXG5AbWl4aW4gbXVpLWZhZGUoXG4gICRzdGF0ZTogaW4sXG4gICRmcm9tOiAwLFxuICAkdG86IDEsXG4gICRkdXJhdGlvbjogbnVsbCxcbiAgJHRpbWluZzogbnVsbCxcbiAgJGRlbGF5OiBudWxsXG4pIHtcbiAgJGZhZGU6IGZhZGUoJGZyb20sICR0byk7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1zdGFydCgkc3RhdGUpIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLWJhc2ljcygkZHVyYXRpb24sICR0aW1pbmcsICRkZWxheSk7XG4gICAgQGluY2x1ZGUgLW11aS1rZXlmcmFtZS1nZXQoJGZhZGUsIDApO1xuXG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbiAgfVxuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tZW5kKCRzdGF0ZSkge1xuICAgIEBpbmNsdWRlIC1tdWkta2V5ZnJhbWUtZ2V0KCRmYWRlLCAxMDApO1xuICB9XG59XG4iLCIvLy8gQ3JlYXRlcyBhIGhpbmdlIHRyYW5zaXRpb24gYnkgcm90YXRpbmcgdGhlIGVsZW1lbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RhdGUgW2luXSAtIFN0YXRlIHRvIHRyYW5zaXRpb24gdG8uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZnJvbSBbbGVmdF0gLSBFZGdlIG9mIHRoZSBlbGVtZW50IHRvIHJvdGF0ZSBmcm9tLiBDYW4gYmUgYHRvcGAsIGByaWdodGAsIGBib3R0b21gLCBvciBgbGVmdGAuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkYXhpcyBbZWRnZV0gLSBBeGlzIG9mIHRoZSBlbGVtZW50IHRvIHJvdGF0ZSBvbi4gQ2FuIGJlIGBlZGdlYCBvciBgY2VudGVyYC5cbi8vLyBAcGFyYW0ge0xlbmd0aH0gJHBlcnNwZWN0aXZlIFsyMDAwcHhdIC0gUGVyY2VpdmVkIGRpc3RhbmNlIGJldHdlZW4gdGhlIHZpZXdlciBhbmQgdGhlIGVsZW1lbnQuIEEgaGlnaGVyIG51bWJlciB3aWxsIG1ha2UgdGhlIHJvdGF0aW9uIGVmZmVjdCBtb3JlIHByb25vdW5jZWQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHVybi1vcmlnaW4gW2Zyb20tYmFja10gLSBTaWRlIG9mIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSByb3RhdGlvbiBmcm9tLiBDYW4gYmUgYGZyb20tYmFja2Agb3IgYGZyb20tZnJvbnRgLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGZhZGUgW3RydWVdIC0gU2V0IHRvIGB0cnVlYCB0byBmYWRlIHRoZSBlbGVtZW50IGluIG9yIG91dCBzaW11bHRhbmVvdXNseS5cbi8vLyBAcGFyYW0ge0R1cmF0aW9ufSAkZHVyYXRpb24gW251bGxdIC0gTGVuZ3RoIChzcGVlZCkgb2YgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfEZ1bmN0aW9ufSAkdGltaW5nIFtudWxsXSAtIEVhc2luZyBvZiB0aGUgdHJhbnNpdGlvbi5cbi8vLyBAcGFyYW0ge0R1cmF0aW9ufSAkZGVsYXkgW251bGxdIC0gRGVsYXkgaW4gc2Vjb25kcyBvciBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSB0cmFuc2l0aW9uIHN0YXJ0cy5cbkBtaXhpbiBtdWktaGluZ2UgKFxuICAkc3RhdGU6IGluLFxuICAkZnJvbTogbGVmdCxcbiAgJGF4aXM6IGVkZ2UsXG4gICRwZXJzcGVjdGl2ZTogMjAwMHB4LFxuICAkdHVybi1vcmlnaW46IGZyb20tYmFjayxcbiAgJGZhZGU6IG1hcC1nZXQoJG1vdGlvbi11aS1zZXR0aW5ncywgaGluZ2UtYW5kLWZhZGUpLFxuICAkZHVyYXRpb246IG51bGwsXG4gICR0aW1pbmc6IG51bGwsXG4gICRkZWxheTogbnVsbFxuKSB7XG4gICRoaW5nZTogaGluZ2UoJHN0YXRlLCAkZnJvbSwgJGF4aXMsICRwZXJzcGVjdGl2ZSwgJHR1cm4tb3JpZ2luKTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uLXN0YXJ0KCRzdGF0ZSkge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tYmFzaWNzKCRkdXJhdGlvbiwgJHRpbWluZywgJGRlbGF5KTtcbiAgICBAaW5jbHVkZSAtbXVpLWtleWZyYW1lLWdldCgkaGluZ2UsIDApO1xuXG4gICAgQGlmICRmYWRlIHtcbiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICAgIG9wYWNpdHk6IGlmKCRzdGF0ZSA9PSBpbiwgMCwgMSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1lbmQoJHN0YXRlKSB7XG4gICAgQGluY2x1ZGUgLW11aS1rZXlmcmFtZS1nZXQoJGhpbmdlLCAxMDApO1xuXG4gICAgQGlmICRmYWRlIHtcbiAgICAgIG9wYWNpdHk6IGlmKCRzdGF0ZSA9PSBpbiwgMSwgMCk7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gQ3JlYXRlcyBhIHNjYWxpbmcgdHJhbnNpdGlvbi4gQSBzY2FsZSBvZiBgMWAgbWVhbnMgdGhlIGVsZW1lbnQgaXMgdGhlIHNhbWUgc2l6ZS4gTGFyZ2VyIG51bWJlcnMgbWFrZSB0aGUgZWxlbWVudCBiaWdnZXIsIHdoaWxlIG51bWJlcnMgbGVzcyB0aGFuIDEgbWFrZSB0aGUgZWxlbWVudCBzbWFsbGVyLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0YXRlIFtpbl0gLSBTdGF0ZSB0byB0cmFuc2l0aW9uIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZnJvbSBbMS41XSAtIFNpemUgdG8gc3RhcnQgYXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmcm9tIFsxXSAtIFNpemUgdG8gZW5kIGF0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGZhZGUgW3RydWVdIC0gU2V0IHRvIGB0cnVlYCB0byBmYWRlIHRoZSBlbGVtZW50IGluIG9yIG91dCBzaW11bHRhbmVvdXNseS5cbi8vLyBAcGFyYW0ge0R1cmF0aW9ufSAkZHVyYXRpb24gW251bGxdIC0gTGVuZ3RoIChzcGVlZCkgb2YgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfEZ1bmN0aW9ufSAkdGltaW5nIFtudWxsXSAtIEVhc2luZyBvZiB0aGUgdHJhbnNpdGlvbi5cbi8vLyBAcGFyYW0ge0R1cmF0aW9ufSAkZGVsYXkgW251bGxdIC0gRGVsYXkgaW4gc2Vjb25kcyBvciBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSB0cmFuc2l0aW9uIHN0YXJ0cy5cbkBtaXhpbiBtdWktem9vbShcbiAgJHN0YXRlOiBpbixcbiAgJGZyb206IDEuNSxcbiAgJHRvOiAxLFxuICAkZmFkZTogbWFwLWdldCgkbW90aW9uLXVpLXNldHRpbmdzLCBzY2FsZS1hbmQtZmFkZSksXG4gICRkdXJhdGlvbjogbnVsbCxcbiAgJHRpbWluZzogbnVsbCxcbiAgJGRlbGF5OiBudWxsXG4pIHtcbiAgJHNjYWxlOiB6b29tKCRmcm9tLCAkdG8pO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb24tc3RhcnQoJHN0YXRlKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1iYXNpY3MoJGR1cmF0aW9uLCAkdGltaW5nLCAkZGVsYXkpO1xuICAgIEBpbmNsdWRlIC1tdWkta2V5ZnJhbWUtZ2V0KCRzY2FsZSwgMCk7XG5cbiAgICBAaWYgJGZhZGUge1xuICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICAgICAgb3BhY2l0eTogaWYoJHN0YXRlID09IGluLCAwLCAxKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWVuZCgkc3RhdGUpIHtcbiAgICBAaW5jbHVkZSAtbXVpLWtleWZyYW1lLWdldCgkc2NhbGUsIDEwMCk7XG5cbiAgICBAaWYgJGZhZGUge1xuICAgICAgb3BhY2l0eTogaWYoJHN0YXRlID09IGluLCAxLCAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLyBDcmVhdGVzIGEgc2xpZGluZyB0cmFuc2l0aW9uIGJ5IHRyYW5zbGF0aW5nIHRoZSBlbGVtZW50IGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0YXRlIFtpbl0gLSBTdGF0ZSB0byB0cmFuc2l0aW9uIHRvLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbbGVmdF0gLSBEaXJlY3Rpb24gdG8gc2xpZGUgdG8uIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cbi8vLyBAcGFyYW0ge0xlbmd0aH0gJGFtb3VudCBbMTAwJV0gLSBMZW5ndGggb2YgdGhlIHNsaWRlIGFzIGEgcGVyY2VudGFnZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRmYWRlIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIGZhZGUgdGhlIGVsZW1lbnQgaW4gb3Igb3V0IHNpbXVsdGFuZW91c2x5LlxuLy8vIEBwYXJhbSB7RHVyYXRpb259ICRkdXJhdGlvbiBbbnVsbF0gLSBMZW5ndGggKHNwZWVkKSBvZiB0aGUgdHJhbnNpdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR8RnVuY3Rpb259ICR0aW1pbmcgW251bGxdIC0gRWFzaW5nIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7RHVyYXRpb259ICRkZWxheSBbbnVsbF0gLSBEZWxheSBpbiBzZWNvbmRzIG9yIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHRyYW5zaXRpb24gc3RhcnRzLlxuQG1peGluIG11aS1zbGlkZSAoXG4gICRzdGF0ZTogaW4sXG4gICRkaXJlY3Rpb246IGxlZnQsXG4gICRhbW91bnQ6IDEwMCUsXG4gICRmYWRlOiBtYXAtZ2V0KCRtb3Rpb24tdWktc2V0dGluZ3MsIHNsaWRlLWFuZC1mYWRlKSxcbiAgJGR1cmF0aW9uOiBudWxsLFxuICAkdGltaW5nOiBudWxsLFxuICAkZGVsYXk6IG51bGxcbikge1xuICAkc2xpZGU6IHNsaWRlKCRzdGF0ZSwgJGRpcmVjdGlvbiwgJGFtb3VudCk7XG5cbiAgLy8gQ1NTIE91dHB1dFxuICBAaW5jbHVkZSB0cmFuc2l0aW9uLXN0YXJ0KCRzdGF0ZSkge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tYmFzaWNzKCRkdXJhdGlvbiwgJHRpbWluZywgJGRlbGF5KTtcbiAgICBAaW5jbHVkZSAtbXVpLWtleWZyYW1lLWdldCgkc2xpZGUsIDApO1xuXG4gICAgQGlmICRmYWRlIHtcbiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICAgIG9wYWNpdHk6IGlmKCRzdGF0ZSA9PSBpbiwgMCwgMSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gICAgfVxuXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1lbmQoJHN0YXRlKSB7XG4gICAgQGluY2x1ZGUgLW11aS1rZXlmcmFtZS1nZXQoJHNsaWRlLCAxMDApO1xuXG4gICAgQGlmICRmYWRlIHtcbiAgICAgIG9wYWNpdHk6IGlmKCRzdGF0ZSA9PSBpbiwgMSwgMCk7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gQ3JlYXRlcyBhIHNwaW5uaW5nIHRyYW5zaXRpb24gYnkgcm90YXRpbmcgdGhlIGVsZW1lbnQuIFRoZSBgdHVybmAgdW5pdCBpcyB1c2VkIHRvIHNwZWNpZnkgaG93IGZhciB0byByb3RhdGUuIGAxdHVybmAgaXMgZXF1YWwgdG8gYSAzNjAtZGVncmVlIHNwaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RhdGUgW2luXSAtIFN0YXRlIHRvIHRyYW5zaXRpb24gdG8uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZGlyZWN0aW9uIFtjd10gLSBEaXJlY3Rpb24gdG8gc3Bpbi4gU2hvdWxkIGJlIGBjd2AgKGNsb2Nrd2lzZSkgb3IgYGNjd2AgKGNvdW50ZXJjbG9ja3dpc2UpLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYW1vdW50IFswLjc1dHVybl0gLSBBbW91bnQgdG8gZWxlbWVudCB0aGUgZWxlbWVudC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRmYWRlIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIGZhZGUgdGhlIGVsZW1lbnQgaW4gb3Igb3V0IHNpbXVsdGFuZW91c2x5LlxuLy8vIEBwYXJhbSB7RHVyYXRpb259ICRkdXJhdGlvbiBbbnVsbF0gLSBMZW5ndGggKHNwZWVkKSBvZiB0aGUgdHJhbnNpdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR8RnVuY3Rpb259ICR0aW1pbmcgW251bGxdIC0gRWFzaW5nIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7RHVyYXRpb259ICRkZWxheSBbbnVsbF0gLSBEZWxheSBpbiBzZWNvbmRzIG9yIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHRyYW5zaXRpb24gc3RhcnRzLlxuQG1peGluIG11aS1zcGluKFxuICAkc3RhdGU6IGluLFxuICAkZGlyZWN0aW9uOiBjdyxcbiAgJGFtb3VudDogMC43NXR1cm4sXG4gICRmYWRlOiBtYXAtZ2V0KCRtb3Rpb24tdWktc2V0dGluZ3MsIHNwaW4tYW5kLWZhZGUpLFxuICAkZHVyYXRpb246IG51bGwsXG4gICR0aW1pbmc6IG51bGwsXG4gICRkZWxheTogbnVsbFxuKSB7XG4gICRzcGluOiBzcGluKCRzdGF0ZSwgJGRpcmVjdGlvbiwgJGFtb3VudCk7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1zdGFydCgkc3RhdGUpIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLWJhc2ljcygkZHVyYXRpb24sICR0aW1pbmcsICRkZWxheSk7XG4gICAgQGluY2x1ZGUgLW11aS1rZXlmcmFtZS1nZXQoJHNwaW4sIDApO1xuXG4gICAgQGlmICRmYWRlIHtcbiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICAgIG9wYWNpdHk6IGlmKCRzdGF0ZSA9PSBpbiwgMCwgMSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1lbmQoJHN0YXRlKSB7XG4gICAgQGluY2x1ZGUgLW11aS1rZXlmcmFtZS1nZXQoJHNwaW4sIDEwMCk7XG5cbiAgICBAaWYgJGZhZGUge1xuICAgICAgb3BhY2l0eTogaWYoJHN0YXRlID09IGluLCAxLCAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHNjc3MtbGludDpkaXNhYmxlIEltcG9ydGFudFJ1bGUsIFNwYWNlQWZ0ZXJDb21tYSwgU2luZ2xlTGluZVBlclByb3BlcnR5XG5cbkBtaXhpbiAtbW90aW9uLXVpLWRlZmF1bHRzIHtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogbWFwLWdldCgkbW90aW9uLXVpLXNwZWVkcywgZGVmYXVsdCk7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBtYXAtZ2V0KCRtb3Rpb24tdWktZWFzaW5ncywgZGVmYXVsdCk7XG59XG5cbi8vIFRyYW5zaXRpb25zXG4vLyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLVxuQG1peGluIG1vdGlvbi11aS10cmFuc2l0aW9ucyB7XG4gIC8vIFNsaWRlXG4gIC5zbGlkZS1pbi1kb3duICAgIHsgQGluY2x1ZGUgbXVpLXNsaWRlKGluLCAgZG93bik7IH1cbiAgLnNsaWRlLWluLWxlZnQgICAgeyBAaW5jbHVkZSBtdWktc2xpZGUoaW4sICByaWdodCk7IH1cbiAgLnNsaWRlLWluLXVwICAgICAgeyBAaW5jbHVkZSBtdWktc2xpZGUoaW4sICB1cCk7IH1cbiAgLnNsaWRlLWluLXJpZ2h0ICAgeyBAaW5jbHVkZSBtdWktc2xpZGUoaW4sICBsZWZ0KTsgfVxuICAuc2xpZGUtb3V0LWRvd24gICB7IEBpbmNsdWRlIG11aS1zbGlkZShvdXQsIGRvd24pOyB9XG4gIC5zbGlkZS1vdXQtcmlnaHQgIHsgQGluY2x1ZGUgbXVpLXNsaWRlKG91dCwgcmlnaHQpOyB9XG4gIC5zbGlkZS1vdXQtdXAgICAgIHsgQGluY2x1ZGUgbXVpLXNsaWRlKG91dCwgdXApOyB9XG4gIC5zbGlkZS1vdXQtbGVmdCAgIHsgQGluY2x1ZGUgbXVpLXNsaWRlKG91dCwgbGVmdCk7IH1cblxuICAvLyBGYWRlXG4gIC5mYWRlLWluICB7IEBpbmNsdWRlIG11aS1mYWRlKGluLCAgMCwgMSk7IH1cbiAgLmZhZGUtb3V0IHsgQGluY2x1ZGUgbXVpLWZhZGUob3V0LCAxLCAwKTsgfVxuXG4gIC8vIEhpbmdlXG4gIC5oaW5nZS1pbi1mcm9tLXRvcCAgICAgIHsgQGluY2x1ZGUgbXVpLWhpbmdlKGluLCAgdG9wKTsgfVxuICAuaGluZ2UtaW4tZnJvbS1yaWdodCAgICB7IEBpbmNsdWRlIG11aS1oaW5nZShpbiwgIHJpZ2h0KTsgfVxuICAuaGluZ2UtaW4tZnJvbS1ib3R0b20gICB7IEBpbmNsdWRlIG11aS1oaW5nZShpbiwgIGJvdHRvbSk7IH1cbiAgLmhpbmdlLWluLWZyb20tbGVmdCAgICAgeyBAaW5jbHVkZSBtdWktaGluZ2UoaW4sICBsZWZ0KTsgfVxuICAuaGluZ2UtaW4tZnJvbS1taWRkbGUteCAgeyBAaW5jbHVkZSBtdWktaGluZ2UoaW4sICB0b3AsICAgY2VudGVyKTsgfVxuICAuaGluZ2UtaW4tZnJvbS1taWRkbGUteSAgeyBAaW5jbHVkZSBtdWktaGluZ2UoaW4sICByaWdodCwgY2VudGVyKTsgfVxuICAuaGluZ2Utb3V0LWZyb20tdG9wICAgICB7IEBpbmNsdWRlIG11aS1oaW5nZShvdXQsIHRvcCk7IH1cbiAgLmhpbmdlLW91dC1mcm9tLXJpZ2h0ICAgeyBAaW5jbHVkZSBtdWktaGluZ2Uob3V0LCByaWdodCk7IH1cbiAgLmhpbmdlLW91dC1mcm9tLWJvdHRvbSAgeyBAaW5jbHVkZSBtdWktaGluZ2Uob3V0LCBib3R0b20pOyB9XG4gIC5oaW5nZS1vdXQtZnJvbS1sZWZ0ICAgIHsgQGluY2x1ZGUgbXVpLWhpbmdlKG91dCwgbGVmdCk7IH1cbiAgLmhpbmdlLW91dC1mcm9tLW1pZGRsZS14IHsgQGluY2x1ZGUgbXVpLWhpbmdlKG91dCwgdG9wLCAgIGNlbnRlcik7IH1cbiAgLmhpbmdlLW91dC1mcm9tLW1pZGRsZS15IHsgQGluY2x1ZGUgbXVpLWhpbmdlKG91dCwgcmlnaHQsIGNlbnRlcik7IH1cblxuICAvLyBTY2FsZVxuICAuc2NhbGUtaW4tdXAgICAgeyBAaW5jbHVkZSBtdWktem9vbShpbiwgIDAuNSwgMSk7IH1cbiAgLnNjYWxlLWluLWRvd24gIHsgQGluY2x1ZGUgbXVpLXpvb20oaW4sICAxLjUsIDEpOyB9XG4gIC5zY2FsZS1vdXQtdXAgICB7IEBpbmNsdWRlIG11aS16b29tKG91dCwgMSwgMS41KTsgfVxuICAuc2NhbGUtb3V0LWRvd24geyBAaW5jbHVkZSBtdWktem9vbShvdXQsIDEsIDAuNSk7IH1cblxuICAvLyBTcGluXG4gIC5zcGluLWluICAgICB7IEBpbmNsdWRlIG11aS1zcGluKGluLCAgY3cpOyB9XG4gIC5zcGluLW91dCAgICB7IEBpbmNsdWRlIG11aS1zcGluKG91dCwgY3cpOyB9XG4gIC5zcGluLWluLWNjdyAgeyBAaW5jbHVkZSBtdWktc3BpbihpbiwgIGNjdyk7IH1cbiAgLnNwaW4tb3V0LWNjdyB7IEBpbmNsdWRlIG11aS1zcGluKG91dCwgY2N3KTsgfVxuXG4gIC8vIFRyYW5zaXRpb24gTW9kaWZpZXJzXG4gIC8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkbW90aW9uLXVpLXNwZWVkcyB7XG4gICAgQGlmICRuYW1lICE9IGRlZmF1bHQge1xuICAgICAgLiN7JG5hbWV9IHsgdHJhbnNpdGlvbi1kdXJhdGlvbjogJHZhbHVlICFpbXBvcnRhbnQ7IH1cbiAgICB9XG4gIH1cblxuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRtb3Rpb24tdWktZWFzaW5ncyB7XG4gICAgQGlmICRuYW1lICE9IGRlZmF1bHQge1xuICAgICAgLiN7JG5hbWV9IHsgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkbW90aW9uLXVpLWRlbGF5cyB7XG4gICAgQGlmICRuYW1lICE9IGRlZmF1bHQge1xuICAgICAgLiN7JG5hbWV9LWRlbGF5IHsgdHJhbnNpdGlvbi1kZWxheTogJHZhbHVlICFpbXBvcnRhbnQ7IH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQW5pbWF0aW9uc1xuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cbkBtaXhpbiBtb3Rpb24tdWktYW5pbWF0aW9ucyB7XG4gIC5zaGFrZSAgICB7IEBpbmNsdWRlIG11aS1hbmltYXRpb24oc2hha2UpOyB9XG4gIC5zcGluLWN3ICB7IEBpbmNsdWRlIG11aS1hbmltYXRpb24oc3Bpbik7IH1cbiAgLnNwaW4tY2N3IHsgQGluY2x1ZGUgbXVpLWFuaW1hdGlvbihzcGluKGNjdykpOyB9XG4gIC53aWdnbGUgICB7IEBpbmNsdWRlIG11aS1hbmltYXRpb24od2lnZ2xlKTsgfVxuXG4gIC5zaGFrZSxcbiAgLnNwaW4tY3csXG4gIC5zcGluLWNjdyxcbiAgLndpZ2dsZSB7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiBtYXAtZ2V0KCRtb3Rpb24tdWktc3BlZWRzLCBkZWZhdWx0KTtcbiAgfVxuXG4gIC8vIEFuaW1hdGlvbiBNb2RpZmllcnNcbiAgLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cbiAgLmluZmluaXRlIHsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7IH1cblxuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRtb3Rpb24tdWktc3BlZWRzIHtcbiAgICBAaWYgJG5hbWUgIT0gZGVmYXVsdCB7XG4gICAgICAuI3skbmFtZX0geyBhbmltYXRpb24tZHVyYXRpb246ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkbW90aW9uLXVpLWVhc2luZ3Mge1xuICAgIEBpZiAkbmFtZSAhPSBkZWZhdWx0IHtcbiAgICAgIC4jeyRuYW1lfSB7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR2YWx1ZSAhaW1wb3J0YW50OyB9XG4gICAgfVxuICB9XG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkbW90aW9uLXVpLWRlbGF5cyB7XG4gICAgQGlmICRuYW1lICE9IGRlZmF1bHQge1xuICAgICAgLiN7JG5hbWV9LWRlbGF5IHsgYW5pbWF0aW9uLWRlbGF5OiAkdmFsdWUgIWltcG9ydGFudDsgfVxuICAgIH1cbiAgfVxufVxuIiwiQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG5cdHNyYzp1cmwoJy4vZm9udHMvaWNvbW9vbi5lb3Q/YmZmbnkxJyk7XG5cdHNyYzp1cmwoJy4vZm9udHMvaWNvbW9vbi5lb3Q/I2llZml4YmZmbnkxJykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnLi9mb250cy9pY29tb29uLnR0Zj9iZmZueTEnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCcuL2ZvbnRzL2ljb21vb24ud29mZj9iZmZueTEnKSBmb3JtYXQoJ3dvZmYnKSxcblx0XHR1cmwoJy4vZm9udHMvaWNvbW9vbi5zdmc/YmZmbnkxI2ljb21vb24nKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG5cdGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG5cdHNwZWFrOiBub25lO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtdmFyaWFudDogbm9ybWFsO1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0bGluZS1oZWlnaHQ6IDE7XG5cblx0LyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1kaWFtb25kMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjIxOVwiO1xufVxuLmljb24tcGludGVyZXN0LXA6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYyMzFcIjtcbn1cbi5pY29uLXdoYXRzYXBwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMjMyXCI7XG59XG4uaWNvbi1tdXNpYzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAwMVwiO1xufVxuLmljb24taGVhcnQzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDA0XCI7XG59XG4uaWNvbi1zdGFyMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAwNVwiO1xufVxuLmljb24tc3Rhci1vOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDA2XCI7XG59XG4uaWNvbi11c2VyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAwN1wiO1xufVxuLmljb24tdGgtbGFyZ2UyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDA5XCI7XG59XG4uaWNvbi1jaGVjazI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMGNcIjtcbn1cbi5pY29uLWNsb3NlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDBkXCI7XG59XG4uaWNvbi1jb2c6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMTNcIjtcbn1cbi5pY29uLWhvbWU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMTVcIjtcbn1cbi5pY29uLWNsb2NrLW86YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMTdcIjtcbn1cbi5pY29uLWxvY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMjNcIjtcbn1cbi5pY29uLWZsYWcyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDI0XCI7XG59XG4uaWNvbi10YWc6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMmJcIjtcbn1cbi5pY29uLWJvb2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMmRcIjtcbn1cbi5pY29uLWltYWdlMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAzZVwiO1xufVxuLmljb24tZWRpdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA0NFwiO1xufVxuLmljb24tY2hldnJvbi1sZWZ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDUzXCI7XG59XG4uaWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDU0XCI7XG59XG4uaWNvbi10aW1lcy1jaXJjbGUtbzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA1Y1wiO1xufVxuLmljb24tY2hlY2stY2lyY2xlLW86YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNWRcIjtcbn1cbi5pY29uLWFycm93LWxlZnQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDYxXCI7XG59XG4uaWNvbi1hcnJvdy1yaWdodDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNjJcIjtcbn1cbi5pY29uLXBsdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNjdcIjtcbn1cbi5pY29uLW1pbnVzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDY4XCI7XG59XG4uaWNvbi1leWUzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDZlXCI7XG59XG4uaWNvbi1jb21tZW50OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDc1XCI7XG59XG4uaWNvbi1tYWduZXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNzZcIjtcbn1cbi5pY29uLWZvbGRlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA3YlwiO1xufVxuLmljb24ta2V5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDg0XCI7XG59XG4uaWNvbi1jb2dzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDg1XCI7XG59XG4uaWNvbi1jb21tZW50czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA4NlwiO1xufVxuLmljb24tdGh1bWJzLW8tdXA6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwODdcIjtcbn1cbi5pY29uLXRodW1icy1vLWRvd246YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwODhcIjtcbn1cbi5pY29uLWhlYXJ0LW86YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwOGFcIjtcbn1cbi5pY29uLXRyb3BoeTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA5MVwiO1xufVxuLmljb24tcGhvbmUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDk1XCI7XG59XG4uaWNvbi10d2l0dGVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDk5XCI7XG59XG4uaWNvbi1mYWNlYm9vazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA5YVwiO1xufVxuLmljb24tZ2l0aHViOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDliXCI7XG59XG4uaWNvbi1idWxsaG9ybjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBhMVwiO1xufVxuLmljb24tY2VydGlmaWNhdGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYTNcIjtcbn1cbi5pY29uLXdyZW5jaDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBhZFwiO1xufVxuLmljb24tdGFza3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYWVcIjtcbn1cbi5pY29uLWJyaWVmY2FzZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBiMVwiO1xufVxuLmljb24tZ3JvdXA6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYzBcIjtcbn1cbi5pY29uLWNoYWluOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMGM0XCI7XG59XG4uaWNvbi1jbG91ZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBjMlwiO1xufVxuLmljb24tZmxhc2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYzNcIjtcbn1cbi5pY29uLWN1dDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBjNVwiO1xufVxuLmljb24tcGFwZXJjbGlwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMGM2XCI7XG59XG4uaWNvbi1iYXJzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMGM5XCI7XG59XG4uaWNvbi1tYWdpYzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBkMFwiO1xufVxuLmljb24tcGludGVyZXN0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMGQyXCI7XG59XG4uaWNvbi1nb29nbGUtcGx1czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBkNVwiO1xufVxuLmljb24tbGlua2VkaW46YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZTFcIjtcbn1cbi5pY29uLWRhc2hib2FyZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBlNFwiO1xufVxuLmljb24tY29tbWVudHMtbzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBlNlwiO1xufVxuLmljb24tYm9sdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBlN1wiO1xufVxuLmljb24tc2l0ZW1hcDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBlOFwiO1xufVxuLmljb24tdW1icmVsbGE6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZTlcIjtcbn1cbi5pY29uLWxpZ2h0YnVsYi1vOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMGViXCI7XG59XG4uaWNvbi1jbG91ZC1kb3dubG9hZDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZWRcIjtcbn1cbi5pY29uLWNsb3VkLXVwbG9hZDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZWVcIjtcbn1cbi5pY29uLWNvZmZlZTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZjRcIjtcbn1cbi5pY29uLWFuZ2xlLWxlZnQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMDRcIjtcbn1cbi5pY29uLWFuZ2xlLXJpZ2h0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTA1XCI7XG59XG4uaWNvbi1kZXNrdG9wOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTA4XCI7XG59XG4uaWNvbi1sYXB0b3A6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMDlcIjtcbn1cbi5pY29uLXRhYmxldDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjEwYVwiO1xufVxuLmljb24tbW9iaWxlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTBiXCI7XG59XG4uaWNvbi1xdW90ZS1sZWZ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTBkXCI7XG59XG4uaWNvbi1xdW90ZS1yaWdodDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjEwZVwiO1xufVxuLmljb24tZ2l0aHViLWFsdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjExM1wiO1xufVxuLmljb24tZ2FtZXBhZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjExYlwiO1xufVxuLmljb24tdGVybWluYWw6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMjBcIjtcbn1cbi5pY29uLWNvZGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMjFcIjtcbn1cbi5pY29uLWNvZGUtZm9yazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjEyNlwiO1xufVxuLmljb24tbWljcm9waG9uZTM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMzBcIjtcbn1cbi5pY29uLXJvY2tldDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxMzVcIjtcbn1cbi5pY29uLWFuY2hvcjI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxM2RcIjtcbn1cbi5pY29uLWV1cjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE1M1wiO1xufVxuLmljb24tZ2JwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTU0XCI7XG59XG4uaWNvbi1kb2xsYXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxNTVcIjtcbn1cbi5pY29uLWlucjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE1NlwiO1xufVxuLmljb24tY255OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTU3XCI7XG59XG4uaWNvbi1yb3VibGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxNThcIjtcbn1cbi5pY29uLWtydzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE1OVwiO1xufVxuLmljb24tYml0Y29pbjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE1YVwiO1xufVxuLmljb24tdGh1bWJzLXVwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTY0XCI7XG59XG4uaWNvbi10aHVtYnMtZG93bjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE2NVwiO1xufVxuLmljb24teW91dHViZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE2N1wiO1xufVxuLmljb24teW91dHViZS1wbGF5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTZhXCI7XG59XG4uaWNvbi1kcm9wYm94OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTZiXCI7XG59XG4uaWNvbi1pbnN0YWdyYW06YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxNmRcIjtcbn1cbi5pY29uLXR1bWJscjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE3M1wiO1xufVxuLmljb24tYXBwbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxNzlcIjtcbn1cbi5pY29uLXdpbmRvd3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxN2FcIjtcbn1cbi5pY29uLWFuZHJvaWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxN2JcIjtcbn1cbi5pY29uLWxpbnV4OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTdjXCI7XG59XG4uaWNvbi1kcmliYmJsZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE3ZFwiO1xufVxuLmljb24tc2t5cGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxN2VcIjtcbn1cbi5pY29uLWZvdXJzcXVhcmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxODBcIjtcbn1cbi5pY29uLXRyZWxsbzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjE4MVwiO1xufVxuLmljb24tZmVtYWxlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTgyXCI7XG59XG4uaWNvbi1tYWxlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTgzXCI7XG59XG4uaWNvbi1naXR0aXA6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxODRcIjtcbn1cbi5pY29uLWFycm93LWNpcmNsZS1vLXJpZ2h0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMThlXCI7XG59XG4uaWNvbi1hcnJvdy1jaXJjbGUtby1sZWZ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTkwXCI7XG59XG4uaWNvbi13b3JkcHJlc3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxOWFcIjtcbn1cbi5pY29uLWdyYWR1YXRpb24tY2FwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMTlkXCI7XG59XG4uaWNvbi1yZWRkaXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxYTFcIjtcbn1cbi5pY29uLXN0dW1ibGV1cG9uOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWE0XCI7XG59XG4uaWNvbi1kZWxpY2lvdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxYTVcIjtcbn1cbi5pY29uLWRpZ2c6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxYTZcIjtcbn1cbi5pY29uLWRydXBhbDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFhOVwiO1xufVxuLmljb24tam9vbWxhOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWFhXCI7XG59XG4uaWNvbi1iZWhhbmNlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWI0XCI7XG59XG4uaWNvbi1zdGVhbTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFiNlwiO1xufVxuLmljb24tdHJlZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFiYlwiO1xufVxuLmljb24tc3BvdGlmeTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFiY1wiO1xufVxuLmljb24tc291bmRjbG91ZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFiZVwiO1xufVxuLmljb24tdmluZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFjYVwiO1xufVxuLmljb24tbGlmZS1ib3V5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWNkXCI7XG59XG4uaWNvbi1wYXBlci1wbGFuZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFkOFwiO1xufVxuLmljb24tcGFwZXItcGxhbmUtbzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFkOVwiO1xufVxuLmljb24tc2xpZGVyczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFkZVwiO1xufVxuLmljb24tYm9tYjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFlMlwiO1xufVxuLmljb24tcGx1ZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFlNlwiO1xufVxuLmljb24tc2xpZGVzaGFyZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFlN1wiO1xufVxuLmljb24tcGF5cGFsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWVkXCI7XG59XG4uaWNvbi1jYy12aXNhOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWYwXCI7XG59XG4uaWNvbi1jYy1tYXN0ZXJjYXJkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWYxXCI7XG59XG4uaWNvbi1jYy1kaXNjb3ZlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFmMlwiO1xufVxuLmljb24tY2MtYW1leDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFmM1wiO1xufVxuLmljb24tY2MtcGF5cGFsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMWY0XCI7XG59XG4uaWNvbi1jYy1zdHJpcGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxZjVcIjtcbn1cbi5pY29uLWNvcHlyaWdodDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjFmOVwiO1xufVxuLmljb24tYXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxZmFcIjtcbn1cbi5pY29uLWJpcnRoZGF5LWNha2U6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxZmRcIjtcbn1cbi5pY29uLWFyZWEtY2hhcnQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYxZmVcIjtcbn1cbi5pY29uLXBpZS1jaGFydDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjIwMFwiO1xufVxuLmljb24tbGluZS1jaGFydDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjIwMVwiO1xufVxuLmljb24tbGFzdGZtOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMjAyXCI7XG59XG4uaWNvbi1tb2JpbGUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDBhXCI7XG59XG4uaWNvbi1sYXB0b3AyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDBiXCI7XG59XG4uaWNvbi1kZXNrdG9wMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwY1wiO1xufVxuLmljb24tdGFibGV0MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwZFwiO1xufVxuLmljb24tcGhvbmUzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDBlXCI7XG59XG4uaWNvbi1kb2N1bWVudDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwZlwiO1xufVxuLmljb24tZG9jdW1lbnRzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDFhXCI7XG59XG4uaWNvbi1zZWFyY2g0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDFiXCI7XG59XG4uaWNvbi1jbGlwYm9hcmQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDFjXCI7XG59XG4uaWNvbi1uZXdzcGFwZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMWRcIjtcbn1cbi5pY29uLW5vdGVib29rOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDFlXCI7XG59XG4uaWNvbi1ib29rLW9wZW46YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMWZcIjtcbn1cbi5pY29uLWJyb3dzZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMmFcIjtcbn1cbi5pY29uLWNhbGVuZGFyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyYlwiO1xufVxuLmljb24tcHJlc2VudGF0aW9uOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDJjXCI7XG59XG4uaWNvbi1waWN0dXJlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDJkXCI7XG59XG4uaWNvbi1waWN0dXJlczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyZVwiO1xufVxuLmljb24tdmlkZW8zOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDJmXCI7XG59XG4uaWNvbi1jYW1lcmE1OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDNhXCI7XG59XG4uaWNvbi1wcmludGVyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzYlwiO1xufVxuLmljb24tdG9vbGJveDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzY1wiO1xufVxuLmljb24tYnJpZWZjYXNlMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzZFwiO1xufVxuLmljb24td2FsbGV0MzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzZVwiO1xufVxuLmljb24tZ2lmdDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwM2ZcIjtcbn1cbi5pY29uLWJhcmdyYXBoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDRhXCI7XG59XG4uaWNvbi1ncmlkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0YlwiO1xufVxuLmljb24tZXhwYW5kMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0Y1wiO1xufVxuLmljb24tZm9jdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNGRcIjtcbn1cbi5pY29uLWVkaXQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDRlXCI7XG59XG4uaWNvbi1hZGp1c3RtZW50czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0ZlwiO1xufVxuLmljb24tcmliYm9uMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1YVwiO1xufVxuLmljb24taG91cmdsYXNzMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1YlwiO1xufVxuLmljb24tbG9jazQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNWNcIjtcbn1cbi5pY29uLW1lZ2FwaG9uZTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNWRcIjtcbn1cbi5pY29uLXNoaWVsZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1ZVwiO1xufVxuLmljb24tdHJvcGh5MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1ZlwiO1xufVxuLmljb24tZmxhZzM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNmFcIjtcbn1cbi5pY29uLW1hcDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNmJcIjtcbn1cbi5pY29uLXB1enpsZTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNmNcIjtcbn1cbi5pY29uLWJhc2tldDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA2ZFwiO1xufVxuLmljb24tZW52ZWxvcGUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDZlXCI7XG59XG4uaWNvbi1zdHJlZXRzaWduOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDZmXCI7XG59XG4uaWNvbi10ZWxlc2NvcGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwN2FcIjtcbn1cbi5pY29uLWdlYXJzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDdiXCI7XG59XG4uaWNvbi1rZXkzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDdjXCI7XG59XG4uaWNvbi1wYXBlcmNsaXAyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDdkXCI7XG59XG4uaWNvbi1hdHRhY2htZW50OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDdlXCI7XG59XG4uaWNvbi1wcmljZXRhZ3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwN2ZcIjtcbn1cbi5pY29uLWxpZ2h0YnVsYjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA4YVwiO1xufVxuLmljb24tbGF5ZXJzMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA4YlwiO1xufVxuLmljb24tcGVuY2lsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDhjXCI7XG59XG4uaWNvbi10b29sczI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOGRcIjtcbn1cbi5pY29uLXRvb2xzLTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOGVcIjtcbn1cbi5pY29uLXNjaXNzb3JzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDhmXCI7XG59XG4uaWNvbi1wYWludGJydXNoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDlhXCI7XG59XG4uaWNvbi1tYWduaWZ5aW5nLWdsYXNzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDliXCI7XG59XG4uaWNvbi1jaXJjbGUtY29tcGFzczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA5Y1wiO1xufVxuLmljb24tbGluZWdyYXBoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDlkXCI7XG59XG4uaWNvbi1taWM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOWVcIjtcbn1cbi5pY29uLXN0cmF0ZWd5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDlmXCI7XG59XG4uaWNvbi1iZWFrZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTBcIjtcbn1cbi5pY29uLWNhdXRpb246YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTFcIjtcbn1cbi5pY29uLXJlY3ljbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTJcIjtcbn1cbi5pY29uLWFuY2hvcjM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTNcIjtcbn1cbi5pY29uLXByb2ZpbGUtbWFsZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBhNFwiO1xufVxuLmljb24tcHJvZmlsZS1mZW1hbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTVcIjtcbn1cbi5pY29uLWJpa2U6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTZcIjtcbn1cbi5pY29uLXdpbmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYTdcIjtcbn1cbi5pY29uLWhvdGFpcmJhbGxvb246YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYThcIjtcbn1cbi5pY29uLWdsb2JlMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBhOVwiO1xufVxuLmljb24tZ2VuaXVzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGFhXCI7XG59XG4uaWNvbi1tYXAtcGluOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGFiXCI7XG59XG4uaWNvbi1kaWFsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGFjXCI7XG59XG4uaWNvbi1jaGF0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGFkXCI7XG59XG4uaWNvbi1oZWFydDQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYWVcIjtcbn1cbi5pY29uLWNsb3VkNDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBhZlwiO1xufVxuLmljb24tdXBsb2FkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBiMFwiO1xufVxuLmljb24tZG93bmxvYWQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGIxXCI7XG59XG4uaWNvbi10YXJnZXQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGIyXCI7XG59XG4uaWNvbi1oYXphcmRvdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYjNcIjtcbn1cbi5pY29uLXBpZWNoYXJ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGI0XCI7XG59XG4uaWNvbi1zcGVlZG9tZXRlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBiNVwiO1xufVxuLmljb24tZ2xvYmFsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGI2XCI7XG59XG4uaWNvbi1jb21wYXNzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGI3XCI7XG59XG4uaWNvbi1saWZlc2F2ZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYjhcIjtcbn1cbi5pY29uLWNsb2NrMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBiOVwiO1xufVxuLmljb24tYXBlcnR1cmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYmFcIjtcbn1cbi5pY29uLXF1b3RlMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBiYlwiO1xufVxuLmljb24tc2NvcGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYmNcIjtcbn1cbi5pY29uLWFsYXJtY2xvY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYmRcIjtcbn1cbi5pY29uLXJlZnJlc2g6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYmVcIjtcbn1cbi5pY29uLWhhcHB5MzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBiZlwiO1xufVxuLmljb24tc2FkMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBjMFwiO1xufVxuLmljb24tZmFjZWJvb2syOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGMxXCI7XG59XG4uaWNvbi10d2l0dGVyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBjMlwiO1xufVxuLmljb24tZ29vZ2xlcGx1czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBjM1wiO1xufVxuLmljb24tcnNzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGM0XCI7XG59XG4uaWNvbi10dW1ibHIyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMGM1XCI7XG59XG4uaWNvbi1saW5rZWRpbjI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwYzZcIjtcbn1cbi5pY29uLWRyaWJiYmxlMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTBjN1wiO1xufVxuLmljb24taGVhcnQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTBcIjtcbn1cbi5pY29uLWNsb3VkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxMVwiO1xufVxuLmljb24tc3RhcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxMlwiO1xufVxuLmljb24tdHY6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTNcIjtcbn1cbi5pY29uLXNvdW5kOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjE0XCI7XG59XG4uaWNvbi12aWRlbzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxNVwiO1xufVxuLmljb24tdHJhc2g6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTZcIjtcbn1cbi5pY29uLXVzZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTdcIjtcbn1cbi5pY29uLWtleTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MThcIjtcbn1cbi5pY29uLXNlYXJjaDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MTlcIjtcbn1cbi5pY29uLXNldHRpbmdzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFhXCI7XG59XG4uaWNvbi1jYW1lcmEyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFiXCI7XG59XG4uaWNvbi10YWcyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFjXCI7XG59XG4uaWNvbi1sb2NrMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxZFwiO1xufVxuLmljb24tYnVsYjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYxZVwiO1xufVxuLmljb24tcGVuOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjFmXCI7XG59XG4uaWNvbi1kaWFtb25kMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyMFwiO1xufVxuLmljb24tZGlzcGxheTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyMVwiO1xufVxuLmljb24tbG9jYXRpb24yOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjIyXCI7XG59XG4uaWNvbi1leWU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MjNcIjtcbn1cbi5pY29uLWJ1YmJsZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyNFwiO1xufVxuLmljb24tc3RhY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MjVcIjtcbn1cbi5pY29uLWN1cDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyNlwiO1xufVxuLmljb24tcGhvbmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MjdcIjtcbn1cbi5pY29uLW5ld3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MjhcIjtcbn1cbi5pY29uLW1haWw6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MjlcIjtcbn1cbi5pY29uLWxpa2U6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MmFcIjtcbn1cbi5pY29uLXBob3RvOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjJiXCI7XG59XG4uaWNvbi1ub3RlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjJjXCI7XG59XG4uaWNvbi1jbG9jazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyZFwiO1xufVxuLmljb24tcGFwZXJwbGFuZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYyZVwiO1xufVxuLmljb24tcGFyYW1zOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjJmXCI7XG59XG4uaWNvbi1iYW5rbm90ZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzMFwiO1xufVxuLmljb24tZGF0YTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzMVwiO1xufVxuLmljb24tbXVzaWMyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjMyXCI7XG59XG4uaWNvbi1tZWdhcGhvbmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MzNcIjtcbn1cbi5pY29uLXN0dWR5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjM0XCI7XG59XG4uaWNvbi1sYWIyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjM1XCI7XG59XG4uaWNvbi1mb29kOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjM2XCI7XG59XG4uaWNvbi10LXNoaXJ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjM3XCI7XG59XG4uaWNvbi1maXJlMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzOFwiO1xufVxuLmljb24tY2xpcDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzOVwiO1xufVxuLmljb24tc2hvcDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzYVwiO1xufVxuLmljb24tY2FsZW5kYXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2M2JcIjtcbn1cbi5pY29uLXdhbGxldDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzY1wiO1xufVxuLmljb24tdnluaWw6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2M2RcIjtcbn1cbi5pY29uLXRydWNrOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjNlXCI7XG59XG4uaWNvbi13b3JsZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYzZlwiO1xufVxuLmljb24tcXVvdGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2NDBcIjtcbn1cbi5pY29uLXF1b3RlMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0MVwiO1xufVxuLmljb24tY2FtZXJhMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0MlwiO1xufVxuLmljb24tZmlsbTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0M1wiO1xufVxuLmljb24tZHJpbms6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDBcIjtcbn1cbi5pY29uLWRyaW5rMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwMVwiO1xufVxuLmljb24tZHJpbmszOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjQ0XCI7XG59XG4uaWNvbi1jb2ZmZWU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDJcIjtcbn1cbi5pY29uLW11ZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwM1wiO1xufVxuLmljb24taWNlY3JlYW06YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDRcIjtcbn1cbi5pY29uLWNha2U6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDVcIjtcbn1cbi5pY29uLWNhc3NldHRlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjQ1XCI7XG59XG4uaWNvbi13YWxsZXQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjQ2XCI7XG59XG4uaWNvbi1zaXRlbWFwMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0N1wiO1xufVxuLmljb24tZGlyZWN0aW9uOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjA2XCI7XG59XG4uaWNvbi1sYWI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MDdcIjtcbn1cbi5pY29uLXRpZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwOFwiO1xufVxuLmljb24tbWVkYWw6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2NDhcIjtcbn1cbi5pY29uLXN0YWNrMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0OVwiO1xufVxuLmljb24tbGFtcDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwOVwiO1xufVxuLmljb24tZGlhbW9uZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwYVwiO1xufVxuLmljb24tZXF1YWxpemVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjBiXCI7XG59XG4uaWNvbi1qdXN0aWNlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjRhXCI7XG59XG4uaWNvbi1zdGF0czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTY0YlwiO1xufVxuLmljb24taG91cmdsYXNzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjRjXCI7XG59XG4uaWNvbi1hYmFjdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2NGRcIjtcbn1cbi5pY29uLWRvbGxhcjI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2NGVcIjtcbn1cbi5pY29uLXBpZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwY1wiO1xufVxuLmljb24tZW52ZWxvcGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGRcIjtcbn1cbi5pY29uLW1hbGUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjRmXCI7XG59XG4uaWNvbi1mZW1hbGUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjUwXCI7XG59XG4uaWNvbi1pbmZvOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjUxXCI7XG59XG4uaWNvbi1yb2NrZXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2MGVcIjtcbn1cbi5pY29uLW1pY3JvcGhvbmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU2NTJcIjtcbn1cbi5pY29uLXNoaXBwaW5nOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlNjUzXCI7XG59XG4uaWNvbi1ydWxlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTYwZlwiO1xufVxuLmljb24tcGVuY2lsMjI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5MDZcIjtcbn1cbi5pY29uLWRyb3BsZXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5MGJcIjtcbn1cbi5pY29uLWNhbWVyYTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTkwZlwiO1xufVxuLmljb24taGVhZHBob25lczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTkxMFwiO1xufVxuLmljb24tY29ubmVjdGlvbjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTkxYlwiO1xufVxuLmljb24tYm9vazI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5MWZcIjtcbn1cbi5pY29uLWJvb2tzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOTIwXCI7XG59XG4uaWNvbi1mb2xkZXItb3BlbjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTkzMFwiO1xufVxuLmljb24tY2FydDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTkzYVwiO1xufVxuLmljb24tZXF1YWxpemVyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTk5M1wiO1xufVxuLmljb24tcGllLWNoYXJ0MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTk5YVwiO1xufVxuLmljb24tc3RhdHMtZG90czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTk5YlwiO1xufVxuLmljb24tc3Bvb24ta25pZmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5YTNcIjtcbn1cbi5pY29uLWxlYWY6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5YTRcIjtcbn1cbi5pY29uLXJvY2tldDQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5YTVcIjtcbn1cbi5pY29uLW1ldGVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWE2XCI7XG59XG4uaWNvbi1maXJlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWE5XCI7XG59XG4uaWNvbi1iaW46YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5YWNcIjtcbn1cbi5pY29uLWJvb2ttYXJrOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWQyXCI7XG59XG4uaWNvbi1oYXBweTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlkZlwiO1xufVxuLmljb24taGFwcHkyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWUwXCI7XG59XG4uaWNvbi1zbWlsZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllMVwiO1xufVxuLmljb24tc21pbGUyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWUyXCI7XG59XG4uaWNvbi10b25ndWU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZTNcIjtcbn1cbi5pY29uLXRvbmd1ZTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZTRcIjtcbn1cbi5pY29uLXNhZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllNVwiO1xufVxuLmljb24tc2FkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllNlwiO1xufVxuLmljb24td2luazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllN1wiO1xufVxuLmljb24td2luazI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZThcIjtcbn1cbi5pY29uLWdyaW46YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZTlcIjtcbn1cbi5pY29uLWdyaW4yOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWVhXCI7XG59XG4uaWNvbi1jb29sOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWViXCI7XG59XG4uaWNvbi1jb29sMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllY1wiO1xufVxuLmljb24tYW5ncnk6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZWRcIjtcbn1cbi5pY29uLWFuZ3J5MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllZVwiO1xufVxuLmljb24tZXZpbDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTllZlwiO1xufVxuLmljb24tZXZpbDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZjBcIjtcbn1cbi5pY29uLXNob2NrZWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZjFcIjtcbn1cbi5pY29uLXNob2NrZWQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWYyXCI7XG59XG4uaWNvbi1iYWZmbGVkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWYzXCI7XG59XG4uaWNvbi1iYWZmbGVkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmNFwiO1xufVxuLmljb24tY29uZnVzZWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZjVcIjtcbn1cbi5pY29uLWNvbmZ1c2VkMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmNlwiO1xufVxuLmljb24tbmV1dHJhbDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmN1wiO1xufVxuLmljb24tbmV1dHJhbDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZjhcIjtcbn1cbi5pY29uLWhpcHN0ZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZjlcIjtcbn1cbi5pY29uLWhpcHN0ZXIyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlOWZhXCI7XG59XG4uaWNvbi13b25kZXJpbmc6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZmJcIjtcbn1cbi5pY29uLXdvbmRlcmluZzI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGU5ZmNcIjtcbn1cbi5pY29uLXNsZWVweTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmZFwiO1xufVxuLmljb24tc2xlZXB5MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmZVwiO1xufVxuLmljb24tZnJ1c3RyYXRlZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTlmZlwiO1xufVxuLmljb24tZnJ1c3RyYXRlZDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhMDBcIjtcbn1cbi5pY29uLWNyeWluZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWEwMVwiO1xufVxuLmljb24tY3J5aW5nMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWEwMlwiO1xufVxuLmljb24tcGxheTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhMTVcIjtcbn1cbi5pY29uLXBhdXNlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTE2XCI7XG59XG4uaWNvbi1zdG9wOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTE3XCI7XG59XG4uaWNvbi1wcmV2aW91czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWExOFwiO1xufVxuLmljb24tbmV4dDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWExOVwiO1xufVxuLmljb24tYmFja3dhcmQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhMWFcIjtcbn1cbi5pY29uLWZvcndhcmQyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTFiXCI7XG59XG4uaWNvbi1wbGF5MzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWExY1wiO1xufVxuLmljb24tcGF1c2UyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTFkXCI7XG59XG4uaWNvbi1zdG9wMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWExZVwiO1xufVxuLmljb24tY2lyY2xlLXVwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTQxXCI7XG59XG4uaWNvbi1jaXJjbGUtcmlnaHQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhNDJcIjtcbn1cbi5pY29uLWNpcmNsZS1kb3duOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYTQzXCI7XG59XG4uaWNvbi1jaXJjbGUtbGVmdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWE0NFwiO1xufVxuLmljb24taHRtbDU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhZGZcIjtcbn1cbi5pY29uLWh0bWw1MjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWFlMFwiO1xufVxuLmljb24tY3NzMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWFlMVwiO1xufVxuLmljb24tY2hyb21lOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYWU1XCI7XG59XG4uaWNvbi1maXJlZm94OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlYWU2XCI7XG59XG4uaWNvbi1JRTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWFlN1wiO1xufVxuLmljb24tb3BlcmE6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGVhZThcIjtcbn1cbi5pY29uLXNhZmFyaTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZWFlOVwiO1xufVxuLmljb24tYnVnOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDkyXCI7XG59XG4uaWNvbi1naWZ0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDQyXCI7XG59XG4uaWNvbi1naXQtYnJhbmNoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDIwXCI7XG59XG4uaWNvbi1nbG9iZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBiNlwiO1xufVxuLmljb24tZ3JhcGg6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNDNcIjtcbn1cbi5pY29uLWxhdzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjBkOFwiO1xufVxuLmljb24tbGlnaHQtYnVsYjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAwMFwiO1xufVxuLmljb24tbG9jYXRpb246YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNjBcIjtcbn1cbi5pY29uLW1lbnRpb246YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYmVcIjtcbn1cbi5pY29uLXBlbmNpbDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwNThcIjtcbn1cbi5pY29uLXBpbjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjA0MVwiO1xufVxuLmljb24tcGx1ZzI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwZDRcIjtcbn1cbi5pY29uLXB1bHNlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxmMDg5XCI7XG59XG4uaWNvbi1wdXp6bGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwYzFcIjtcbn1cbi5pY29uLXJvY2tldDM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMzNcIjtcbn1cbi5pY29uLXNlYXJjaDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZjAyZVwiO1xufVxuLmljb24tdG9vbHM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGYwMzFcIjtcbn1cbi5pY29uLWV5ZTI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMDBcIjtcbn1cbi5pY29uLXBhcGVyLWNsaXA6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMDFcIjtcbn1cbi5pY29uLW1haWwyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDAyXCI7XG59XG4uaWNvbi10b2dnbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMDNcIjtcbn1cbi5pY29uLWxheW91dDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwNFwiO1xufVxuLmljb24tbGluazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwNVwiO1xufVxuLmljb24tYmVsbDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwNlwiO1xufVxuLmljb24tbG9jazM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMDdcIjtcbn1cbi5pY29uLXVubG9jazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAwOFwiO1xufVxuLmljb24tcmliYm9uOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDA5XCI7XG59XG4uaWNvbi1pbWFnZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAxMFwiO1xufVxuLmljb24tc2lnbmFsOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDExXCI7XG59XG4uaWNvbi10YXJnZXQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMTJcIjtcbn1cbi5pY29uLWNsaXBib2FyZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAxM1wiO1xufVxuLmljb24tY2xvY2syOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDE0XCI7XG59XG4uaWNvbi13YXRjaDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAxNVwiO1xufVxuLmljb24tYWlyLXBsYXk6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMTZcIjtcbn1cbi5pY29uLWNhbWVyYTQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMTdcIjtcbn1cbi5pY29uLXZpZGVvMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAxOFwiO1xufVxuLmljb24tZGlzYzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAxOVwiO1xufVxuLmljb24tcHJpbnRlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyMFwiO1xufVxuLmljb24tbW9uaXRvcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyMVwiO1xufVxuLmljb24tc2VydmVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDIyXCI7XG59XG4uaWNvbi1jb2cyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDIzXCI7XG59XG4uaWNvbi1oZWFydDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMjRcIjtcbn1cbi5pY29uLXBhcmFncmFwaDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyNVwiO1xufVxuLmljb24tYWxpZ24tanVzdGlmeTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyNlwiO1xufVxuLmljb24tYWxpZ24tbGVmdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyN1wiO1xufVxuLmljb24tYWxpZ24tY2VudGVyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDI4XCI7XG59XG4uaWNvbi1hbGlnbi1yaWdodDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAyOVwiO1xufVxuLmljb24tYm9vazM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMzBcIjtcbn1cbi5pY29uLWxheWVyczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzMVwiO1xufVxuLmljb24tc3RhY2szOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDMyXCI7XG59XG4uaWNvbi1zdGFjay0yOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDMzXCI7XG59XG4uaWNvbi1wYXBlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzNFwiO1xufVxuLmljb24tcGFwZXItc3RhY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMzVcIjtcbn1cbi5pY29uLXNlYXJjaDM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMzZcIjtcbn1cbi5pY29uLXpvb20taW46YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwMzdcIjtcbn1cbi5pY29uLXpvb20tb3V0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDM4XCI7XG59XG4uaWNvbi1yZXBseTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTAzOVwiO1xufVxuLmljb24tY2lyY2xlLXBsdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNDBcIjtcbn1cbi5pY29uLWNpcmNsZS1taW51czpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0MVwiO1xufVxuLmljb24tY2lyY2xlLWNoZWNrOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDQyXCI7XG59XG4uaWNvbi1jaXJjbGUtY3Jvc3M6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNDNcIjtcbn1cbi5pY29uLXNxdWFyZS1wbHVzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDQ0XCI7XG59XG4uaWNvbi1zcXVhcmUtbWludXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNDVcIjtcbn1cbi5pY29uLXNxdWFyZS1jaGVjazpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0NlwiO1xufVxuLmljb24tc3F1YXJlLWNyb3NzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDQ3XCI7XG59XG4uaWNvbi1taWNyb3Bob25lMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA0OFwiO1xufVxuLmljb24tcmVjb3JkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDQ5XCI7XG59XG4uaWNvbi1za2lwLWJhY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNTBcIjtcbn1cbi5pY29uLXJld2luZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1MVwiO1xufVxuLmljb24tcGxheTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1MlwiO1xufVxuLmljb24tcGF1c2UzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDUzXCI7XG59XG4uaWNvbi1zdG9wMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1NFwiO1xufVxuLmljb24tZmFzdC1mb3J3YXJkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDU1XCI7XG59XG4uaWNvbi1za2lwLWZvcndhcmQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNTZcIjtcbn1cbi5pY29uLXNodWZmbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNTdcIjtcbn1cbi5pY29uLXJlcGVhdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1OFwiO1xufVxuLmljb24tZm9sZGVyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA1OVwiO1xufVxuLmljb24tdW1icmVsbGEyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDYwXCI7XG59XG4uaWNvbi1tb29uOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDYxXCI7XG59XG4uaWNvbi10aGVybW9tZXRlcjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA2MlwiO1xufVxuLmljb24tZHJvcDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA2M1wiO1xufVxuLmljb24tc3VuOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDY0XCI7XG59XG4uaWNvbi1jbG91ZDM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNjVcIjtcbn1cbi5pY29uLWNsb3VkLXVwbG9hZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA2NlwiO1xufVxuLmljb24tY2xvdWQtZG93bmxvYWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNjdcIjtcbn1cbi5pY29uLXVwbG9hZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA2OFwiO1xufVxuLmljb24tZG93bmxvYWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNjlcIjtcbn1cbi5pY29uLWxvY2F0aW9uMzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA3MFwiO1xufVxuLmljb24tbG9jYXRpb24tMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA3MVwiO1xufVxuLmljb24tbWFwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDcyXCI7XG59XG4uaWNvbi1iYXR0ZXJ5OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDczXCI7XG59XG4uaWNvbi1oZWFkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDc0XCI7XG59XG4uaWNvbi1icmllZmNhc2UyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDc1XCI7XG59XG4uaWNvbi1zcGVlY2gtYnViYmxlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDc2XCI7XG59XG4uaWNvbi1hbmNob3I6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwNzdcIjtcbn1cbi5pY29uLWdsb2JlMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA3OFwiO1xufVxuLmljb24tYm94OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDc5XCI7XG59XG4uaWNvbi1yZWxvYWQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwODBcIjtcbn1cbi5pY29uLXNoYXJlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDgxXCI7XG59XG4uaWNvbi1tYXJxdWVlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDgyXCI7XG59XG4uaWNvbi1tYXJxdWVlLXBsdXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwODNcIjtcbn1cbi5pY29uLW1hcnF1ZWUtbWludXM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwODRcIjtcbn1cbi5pY29uLXRhZzM6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwODVcIjtcbn1cbi5pY29uLXBvd2VyOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDg2XCI7XG59XG4uaWNvbi1jb21tYW5kOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDg3XCI7XG59XG4uaWNvbi1hbHQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwODhcIjtcbn1cbi5pY29uLWVzYzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA4OVwiO1xufVxuLmljb24tYmFyLWdyYXBoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDkwXCI7XG59XG4uaWNvbi1iYXItZ3JhcGgtMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA5MVwiO1xufVxuLmljb24tcGllLWdyYXBoOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDkyXCI7XG59XG4uaWNvbi1zdGFyMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA5M1wiO1xufVxuLmljb24tYXJyb3ctbGVmdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTA5NFwiO1xufVxuLmljb24tYXJyb3ctcmlnaHQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOTVcIjtcbn1cbi5pY29uLWFycm93LXVwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDk2XCI7XG59XG4uaWNvbi1hcnJvdy1kb3duOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMDk3XCI7XG59XG4uaWNvbi12b2x1bWU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOThcIjtcbn1cbi5pY29uLW11dGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUwOTlcIjtcbn1cbi5pY29uLWNvbnRlbnQtcmlnaHQ6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMDBcIjtcbn1cbi5pY29uLWNvbnRlbnQtbGVmdDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTEwMVwiO1xufVxuLmljb24tZ3JpZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTEwMlwiO1xufVxuLmljb24tZ3JpZC0yOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTAzXCI7XG59XG4uaWNvbi1jb2x1bW5zOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTA0XCI7XG59XG4uaWNvbi1sb2FkZXI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMDVcIjtcbn1cbi5pY29uLWJhZzpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTEwNlwiO1xufVxuLmljb24tYmFuOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTA3XCI7XG59XG4uaWNvbi1mbGFnOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTA4XCI7XG59XG4uaWNvbi10cmFzaDI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMDlcIjtcbn1cbi5pY29uLWV4cGFuZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTExMFwiO1xufVxuLmljb24tY29udHJhY3Q6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMTFcIjtcbn1cbi5pY29uLW1heGltaXplOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTEyXCI7XG59XG4uaWNvbi1taW5pbWl6ZTpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTExM1wiO1xufVxuLmljb24tcGx1czI6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMTRcIjtcbn1cbi5pY29uLW1pbnVzMjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTExNVwiO1xufVxuLmljb24tY2hlY2s6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMTZcIjtcbn1cbi5pY29uLWNyb3NzOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTE3XCI7XG59XG4uaWNvbi1tb3ZlOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTE4XCI7XG59XG4uaWNvbi1kZWxldGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMTlcIjtcbn1cbi5pY29uLW1lbnU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMjBcIjtcbn1cbi5pY29uLWFyY2hpdmU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMjFcIjtcbn1cbi5pY29uLWluYm94OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTIyXCI7XG59XG4uaWNvbi1vdXRib3g6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMjNcIjtcbn1cbi5pY29uLWZpbGU6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXGUxMjRcIjtcbn1cbi5pY29uLWZpbGUtYWRkOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTI1XCI7XG59XG4uaWNvbi1maWxlLXN1YnRyYWN0OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTI2XCI7XG59XG4uaWNvbi1oZWxwOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTI3XCI7XG59XG4uaWNvbi1vcGVuOmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFxlMTI4XCI7XG59XG4uaWNvbi1lbGxpcHNpczpiZWZvcmUge1xuXHRjb250ZW50OiBcIlxcZTEyOVwiO1xufVxuIiwiQG1peGluIGRpdmlkZXIge1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgJHByaW1hcnktY29sb3I7XG4gICAgfVxuXG59XG5cblxuQG1peGluIGljb25saXN0IHtcblxuICAgIG1hcmdpbi1sZWZ0OiAxLjFlbTtcblxuICAgIGxpIHtcblxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDZweCAzcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogOTAlO1xuXG4gICAgICAgICYgW2NsYXNzXj1pY29uLV0sICYgW2NsYXNzKj1cImljb24tXCJdIHtcblxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogLTEuNzVlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHRvcDogNnB4O1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiA5MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuQG1peGluIHBsYWluTGluayB7XG5cbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGFuY2hvci1jb2xvcjtcbiAgICB9XG59XG5cblxuQG1peGluIHN1YmhlYWRlciB7XG5cbiAgICBtYXJnaW4tdG9wOiAwLjJyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMThweCk7XG4gICAgY29sb3I6ICRkYXJrLWdyYXk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMThweCk7XG4gICAgfVxufSIsIi8qIVxuICogRnVsbENhbGVuZGFyIHYzLjQuMCBTdHlsZXNoZWV0XG4gKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vXG4gKiAoYykgMjAxNyBBZGFtIFNoYXdcbiAqL1xuXG5cbi5mYyB7XG5cdGRpcmVjdGlvbjogbHRyO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uZmMtcnRsIHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbmJvZHkgLmZjIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVyY29tZSBqcXVpICovXG5cdGZvbnQtc2l6ZTogMWVtO1xufVxuXG5cbi8qIENvbG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtdW50aGVtZWQgdGgsXG4uZmMtdW50aGVtZWQgdGQsXG4uZmMtdW50aGVtZWQgdGhlYWQsXG4uZmMtdW50aGVtZWQgdGJvZHksXG4uZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsXG4uZmMtdW50aGVtZWQgLmZjLXJvdyxcbi5mYy11bnRoZW1lZCAuZmMtY29udGVudCwgLyogZm9yIGd1dHRlciBib3JkZXIgKi9cbi5mYy11bnRoZW1lZCAuZmMtcG9wb3Zlcixcbi5mYy11bnRoZW1lZCAuZmMtbGlzdC12aWV3LFxuLmZjLXVudGhlbWVkIC5mYy1saXN0LWhlYWRpbmcgdGQge1xuXHRib3JkZXItY29sb3I6ICNkZGQ7XG59XG5cbi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbn1cblxuLmZjLXVudGhlbWVkIC5mYy1kaXZpZGVyLFxuLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIsXG4uZmMtdW50aGVtZWQgLmZjLWxpc3QtaGVhZGluZyB0ZCB7XG5cdGJhY2tncm91bmQ6ICNlZWU7XG59XG5cbi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7XG5cdGNvbG9yOiAjNjY2O1xufVxuXG4uZmMtdW50aGVtZWQgdGQuZmMtdG9kYXkge1xuXHRiYWNrZ3JvdW5kOiAjZmNmOGUzO1xufVxuXG4uZmMtaGlnaGxpZ2h0IHsgLyogd2hlbiB1c2VyIGlzIHNlbGVjdGluZyBjZWxscyAqL1xuXHRiYWNrZ3JvdW5kOiAjYmNlOGYxO1xuXHRvcGFjaXR5OiAuMztcbn1cblxuLmZjLWJnZXZlbnQgeyAvKiBkZWZhdWx0IGxvb2sgZm9yIGJhY2tncm91bmQgZXZlbnRzICovXG5cdGJhY2tncm91bmQ6IHJnYigxNDMsIDIyMywgMTMwKTtcblx0b3BhY2l0eTogLjM7XG59XG5cbi5mYy1ub25idXNpbmVzcyB7IC8qIGRlZmF1bHQgbG9vayBmb3Igbm9uLWJ1c2luZXNzLWhvdXJzIGFyZWFzICovXG5cdC8qIHdpbGwgaW5oZXJpdCAuZmMtYmdldmVudCdzIHN0eWxlcyAqL1xuXHRiYWNrZ3JvdW5kOiAjZDdkN2Q3O1xufVxuXG4uZmMtdW50aGVtZWQgLmZjLWRpc2FibGVkLWRheSB7XG5cdGJhY2tncm91bmQ6ICNkN2Q3ZDc7XG5cdG9wYWNpdHk6IC4zO1xufVxuXG4udWktd2lkZ2V0IC5mYy1kaXNhYmxlZC1kYXkgeyAvKiB0aGVtZWQgKi9cblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbn1cblxuXG4vKiBJY29ucyAoaW5saW5lIGVsZW1lbnRzIHdpdGggc3R5bGVkIHRleHQgdGhhdCBtb2NrIGFycm93IGljb25zKVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtaWNvbiB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0aGVpZ2h0OiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGZvbnQtc2l6ZTogMWVtO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcblxuXHQvKiBkb24ndCBhbGxvdyBicm93c2VyIHRleHQtc2VsZWN0aW9uICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcblx0LWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuXHQtbW96LXVzZXItc2VsZWN0OiBub25lO1xuXHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cbi8qXG5BY2NlcHRhYmxlIGZvbnQtZmFtaWx5IG92ZXJyaWRlcyBmb3IgaW5kaXZpZHVhbCBpY29uczpcblx0XCJBcmlhbFwiLCBzYW5zLXNlcmlmXG5cdFwiVGltZXMgTmV3IFJvbWFuXCIsIHNlcmlmXG5cbk5PVEU6IHVzZSBwZXJjZW50YWdlIGZvbnQgc2l6ZXMgb3IgZWxzZSBvbGQgSUUgY2hva2VzXG4qL1xuXG4uZmMtaWNvbjphZnRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmZjLWljb24tbGVmdC1zaW5nbGUtYXJyb3c6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlxcMDIwMzlcIjtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdGZvbnQtc2l6ZTogMjAwJTtcblx0dG9wOiAtNyU7XG59XG5cbi5mYy1pY29uLXJpZ2h0LXNpbmdsZS1hcnJvdzphZnRlciB7XG5cdGNvbnRlbnQ6IFwiXFwwMjAzQVwiO1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0Zm9udC1zaXplOiAyMDAlO1xuXHR0b3A6IC03JTtcbn1cblxuLmZjLWljb24tbGVmdC1kb3VibGUtYXJyb3c6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlxcMDAwQUJcIjtcblx0Zm9udC1zaXplOiAxNjAlO1xuXHR0b3A6IC03JTtcbn1cblxuLmZjLWljb24tcmlnaHQtZG91YmxlLWFycm93OmFmdGVyIHtcblx0Y29udGVudDogXCJcXDAwMEJCXCI7XG5cdGZvbnQtc2l6ZTogMTYwJTtcblx0dG9wOiAtNyU7XG59XG5cbi5mYy1pY29uLWxlZnQtdHJpYW5nbGU6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlxcMjVDNFwiO1xuXHRmb250LXNpemU6IDEyNSU7XG5cdHRvcDogMyU7XG59XG5cbi5mYy1pY29uLXJpZ2h0LXRyaWFuZ2xlOmFmdGVyIHtcblx0Y29udGVudDogXCJcXDI1QkFcIjtcblx0Zm9udC1zaXplOiAxMjUlO1xuXHR0b3A6IDMlO1xufVxuXG4uZmMtaWNvbi1kb3duLXRyaWFuZ2xlOmFmdGVyIHtcblx0Y29udGVudDogXCJcXDI1QkNcIjtcblx0Zm9udC1zaXplOiAxMjUlO1xuXHR0b3A6IDIlO1xufVxuXG4uZmMtaWNvbi14OmFmdGVyIHtcblx0Y29udGVudDogXCJcXDAwMEQ3XCI7XG5cdGZvbnQtc2l6ZTogMjAwJTtcblx0dG9wOiA2JTtcbn1cblxuXG4vKiBCdXR0b25zIChzdHlsZWQgPGJ1dHRvbj4gdGFncywgbm9ybWFsaXplZCB0byB3b3JrIGNyb3NzLWJyb3dzZXIpXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYyBidXR0b24ge1xuXHQvKiBmb3JjZSBoZWlnaHQgdG8gaW5jbHVkZSB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nICovXG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG5cdC8qIGRpbWVuc2lvbnMgKi9cblx0bWFyZ2luOiAwO1xuXHRoZWlnaHQ6IDIuMWVtO1xuXHRwYWRkaW5nOiAwIC42ZW07XG5cblx0LyogdGV4dCAmIGN1cnNvciAqL1xuXHRmb250LXNpemU6IDFlbTsgLyogbm9ybWFsaXplICovXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogRmlyZWZveCBoYXMgYW4gYW5ub3lpbmcgaW5uZXIgYm9yZGVyICovXG4uZmMgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9XG5cdFxuLmZjLXN0YXRlLWRlZmF1bHQgeyAvKiBub24tdGhlbWUgKi9cblx0Ym9yZGVyOiAxcHggc29saWQ7XG59XG5cbi5mYy1zdGF0ZS1kZWZhdWx0LmZjLWNvcm5lci1sZWZ0IHsgLyogbm9uLXRoZW1lICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xufVxuXG4uZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItcmlnaHQgeyAvKiBub24tdGhlbWUgKi9cblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcbn1cblxuLyogaWNvbnMgaW4gYnV0dG9ucyAqL1xuXG4uZmMgYnV0dG9uIC5mYy1pY29uIHsgLyogbm9uLXRoZW1lICovXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dG9wOiAtMC4wNWVtOyAvKiBzZWVtcyB0byBiZSBhIGdvb2QgYWRqdXN0bWVudCBhY3Jvc3MgYnJvd3NlcnMgKi9cblx0bWFyZ2luOiAwIC4yZW07XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cdFxuLypcbiAgYnV0dG9uIHN0YXRlc1xuICBib3Jyb3dlZCBmcm9tIHR3aXR0ZXIgYm9vdHN0cmFwIChodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC8pXG4qL1xuXG4uZmMtc3RhdGUtZGVmYXVsdCB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG5cdGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7XG5cdGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmZmZmZmKSwgdG8oI2U2ZTZlNikpO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNlNmU2ZTYpO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTtcblx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmZmZmZiwgI2U2ZTZlNik7XG5cdGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcblx0Ym9yZGVyLWNvbG9yOiAjZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjtcblx0Ym9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7XG5cdGNvbG9yOiAjMzMzO1xuXHR0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG5cdGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cblxuLmZjLXN0YXRlLWhvdmVyLFxuLmZjLXN0YXRlLWRvd24sXG4uZmMtc3RhdGUtYWN0aXZlLFxuLmZjLXN0YXRlLWRpc2FibGVkIHtcblx0Y29sb3I6ICMzMzMzMzM7XG5cdGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG59XG5cbi5mYy1zdGF0ZS1ob3ZlciB7XG5cdGNvbG9yOiAjMzMzMzMzO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE1cHg7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjtcblx0ICAgLW1vei10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLXBvc2l0aW9uIDAuMXMgbGluZWFyO1xuXHQgICAgIC1vLXRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7XG5cdCAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjtcbn1cblxuLmZjLXN0YXRlLWRvd24sXG4uZmMtc3RhdGUtYWN0aXZlIHtcblx0YmFja2dyb3VuZC1jb2xvcjogI2NjY2NjYztcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblx0Ym94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksIDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4uZmMtc3RhdGUtZGlzYWJsZWQge1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG5cdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG5cdG9wYWNpdHk6IDAuNjU7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG59XG5cblxuLyogQnV0dG9ucyBHcm91cHNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLWJ1dHRvbi1ncm91cCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLypcbmV2ZXJ5IGJ1dHRvbiB0aGF0IGlzIG5vdCBmaXJzdCBpbiBhIGJ1dHRvbiBncm91cCBzaG91bGQgc2Nvb3RjaCBvdmVyIG9uZSBwaXhlbCBhbmQgY292ZXIgdGhlXG5wcmV2aW91cyBidXR0b24ncyBib3JkZXIuLi5cbiovXG5cbi5mYyAuZmMtYnV0dG9uLWdyb3VwID4gKiB7IC8qIGV4dHJhIHByZWNlZGVuY2UgYi9jIGJ1dHRvbnMgaGF2ZSBtYXJnaW4gc2V0IHRvIHplcm8gKi9cblx0ZmxvYXQ6IGxlZnQ7XG5cdG1hcmdpbjogMCAwIDAgLTFweDtcbn1cblxuLmZjIC5mYy1idXR0b24tZ3JvdXAgPiA6Zmlyc3QtY2hpbGQgeyAvKiBzYW1lICovXG5cdG1hcmdpbi1sZWZ0OiAwO1xufVxuXG5cbi8qIFBvcG92ZXJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXBvcG92ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsMCwwLC4xNSk7XG59XG5cbi5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgeyAvKiBUT0RPOiBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBmYy1oZWFkL2ZjLWJvZHkgKi9cblx0cGFkZGluZzogMnB4IDRweDtcbn1cblxuLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUge1xuXHRtYXJnaW46IDAgMnB4O1xufVxuXG4uZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmZjLWx0ciAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSxcbi5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2Uge1xuXHRmbG9hdDogbGVmdDtcbn1cblxuLmZjLXJ0bCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy10aXRsZSxcbi5mYy1sdHIgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2Uge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi8qIHVudGhlbWVkICovXG5cbi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4uZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2Uge1xuXHRmb250LXNpemU6IC45ZW07XG5cdG1hcmdpbi10b3A6IDJweDtcbn1cblxuLyoganF1aSB0aGVtZWQgKi9cblxuLmZjLXBvcG92ZXIgPiAudWktd2lkZ2V0LWhlYWRlciArIC51aS13aWRnZXQtY29udGVudCB7XG5cdGJvcmRlci10b3A6IDA7IC8qIHdoZXJlIHRoZXkgbWVldCwgbGV0IHRoZSBoZWFkZXIgaGF2ZSB0aGUgYm9yZGVyICovXG59XG5cblxuLyogTWlzYyBSZXVzYWJsZSBDb21wb25lbnRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy1kaXZpZGVyIHtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbmhyLmZjLWRpdmlkZXIge1xuXHRoZWlnaHQ6IDA7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMCAwIDJweDsgLyogaGVpZ2h0IGlzIHVucmVsaWFibGUgYWNyb3NzIGJyb3dzZXJzLCBzbyB1c2UgcGFkZGluZyAqL1xuXHRib3JkZXItd2lkdGg6IDFweCAwO1xufVxuXG4uZmMtY2xlYXIge1xuXHRjbGVhcjogYm90aDtcbn1cblxuLmZjLWJnLFxuLmZjLWJnZXZlbnQtc2tlbGV0b24sXG4uZmMtaGlnaGxpZ2h0LXNrZWxldG9uLFxuLmZjLWhlbHBlci1za2VsZXRvbiB7XG5cdC8qIHRoZXNlIGVsZW1lbnQgc2hvdWxkIGFsd2F5cyBjbGluZyB0byB0b3AtbGVmdC9yaWdodCBjb3JuZXJzICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcbn1cblxuLmZjLWJnIHtcblx0Ym90dG9tOiAwOyAvKiBzdHJlY2ggYmcgdG8gYm90dG9tIGVkZ2UgKi9cbn1cblxuLmZjLWJnIHRhYmxlIHtcblx0aGVpZ2h0OiAxMDAlOyAvKiBzdHJlY2ggYmcgdG8gYm90dG9tIGVkZ2UgKi9cbn1cblxuXG4vKiBUYWJsZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjIHRhYmxlIHtcblx0d2lkdGg6IDEwMCU7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIGZpeCBzY3JvbGxiYXIgaXNzdWUgaW4gZmlyZWZveCAqL1xuXHR0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXHRib3JkZXItc3BhY2luZzogMDtcblx0Zm9udC1zaXplOiAxZW07IC8qIG5vcm1hbGl6ZSBjcm9zcy1icm93c2VyICovXG59XG5cbi5mYyB0aCB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZjIHRoLFxuLmZjIHRkIHtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdHBhZGRpbmc6IDA7XG5cdHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi5mYyB0ZC5mYy10b2RheSB7XG5cdGJvcmRlci1zdHlsZTogZG91YmxlOyAvKiBvdmVyY29tZSBuZWlnaGJvcmluZyBib3JkZXJzICovXG59XG5cblxuLyogSW50ZXJuYWwgTmF2IExpbmtzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmFbZGF0YS1nb3RvXSB7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuYVtkYXRhLWdvdG9dOmhvdmVyIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cblxuLyogRmFrZSBUYWJsZSBSb3dzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYyAuZmMtcm93IHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVyY29tZSB0aGVtZXMgdy8gLnVpLXdpZGdldC1jb250ZW50IGZvcmNpbmcgYSAxcHggYm9yZGVyICovXG5cdC8qIG5vIHZpc2libGUgYm9yZGVyIGJ5IGRlZmF1bHQuIGJ1dCBtYWtlIGF2YWlsYWJsZSBpZiBuZWVkIGJlIChzY3JvbGxiYXIgd2lkdGggY29tcGVuc2F0aW9uKSAqL1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG5cbi5mYy1yb3cgdGFibGUge1xuXHQvKiBkb24ndCBwdXQgbGVmdC9yaWdodCBib3JkZXIgb24gYW55dGhpbmcgd2l0aGluIGEgZmFrZSByb3cuXG5cdCAgIHRoZSBvdXRlciB0Ym9keSB3aWxsIHdvcnJ5IGFib3V0IHRoaXMgKi9cblx0Ym9yZGVyLWxlZnQ6IDAgaGlkZGVuIHRyYW5zcGFyZW50O1xuXHRib3JkZXItcmlnaHQ6IDAgaGlkZGVuIHRyYW5zcGFyZW50O1xuXG5cdC8qIG5vIGJvdHRvbSBib3JkZXJzIG9uIHJvd3MgKi9cblx0Ym9yZGVyLWJvdHRvbTogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7IFxufVxuXG4uZmMtcm93OmZpcnN0LWNoaWxkIHRhYmxlIHtcblx0Ym9yZGVyLXRvcDogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7IC8qIG5vIHRvcCBib3JkZXIgb24gZmlyc3Qgcm93ICovXG59XG5cblxuLyogRGF5IFJvdyAodXNlZCB3aXRoaW4gdGhlIGhlYWRlciBhbmQgdGhlIERheUdyaWQpXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy1yb3cge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5mYy1yb3cgLmZjLWJnIHtcblx0ei1pbmRleDogMTtcbn1cblxuLyogaGlnaGxpZ2h0aW5nIGNlbGxzICYgYmFja2dyb3VuZCBldmVudCBza2VsZXRvbiAqL1xuXG4uZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uLFxuLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHtcblx0Ym90dG9tOiAwOyAvKiBzdHJldGNoIHNrZWxldG9uIHRvIGJvdHRvbSBvZiByb3cgKi9cbn1cblxuLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0YWJsZSxcbi5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0YWJsZSB7XG5cdGhlaWdodDogMTAwJTsgLyogc3RyZXRjaCBza2VsZXRvbiB0byBib3R0b20gb2Ygcm93ICovXG59XG5cbi5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0ZCxcbi5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGQge1xuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uIHtcblx0ei1pbmRleDogMjtcblxufVxuXG4uZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24ge1xuXHR6LWluZGV4OiAzO1xufVxuXG4vKlxucm93IGNvbnRlbnQgKHdoaWNoIGNvbnRhaW5zIGRheS93ZWVrIG51bWJlcnMgYW5kIGV2ZW50cykgYXMgd2VsbCBhcyBcImhlbHBlclwiICh3aGljaCBjb250YWluc1xudGVtcG9yYXJ5IHJlbmRlcmVkIGV2ZW50cykuXG4qL1xuXG4uZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiA0O1xuXHRwYWRkaW5nLWJvdHRvbTogMnB4OyAvKiBtYXRjaGVzIHRoZSBzcGFjZSBhYm92ZSB0aGUgZXZlbnRzICovXG59XG5cbi5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbiB7XG5cdHotaW5kZXg6IDU7XG59XG5cbi5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGQsXG4uZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGQge1xuXHQvKiBzZWUtdGhyb3VnaCB0byB0aGUgYmFja2dyb3VuZCBiZWxvdyAqL1xuXHRiYWNrZ3JvdW5kOiBub25lOyAvKiBpbiBjYXNlIDx0ZD5zIGFyZSBnbG9iYWxseSBzdHlsZWQgKi9cblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuXHQvKiBkb24ndCBwdXQgYSBib3JkZXIgYmV0d2VlbiBldmVudHMgYW5kL29yIHRoZSBkYXkgbnVtYmVyICovXG5cdGJvcmRlci1ib3R0b206IDA7XG59XG5cbi5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGJvZHkgdGQsIC8qIGNlbGxzIHdpdGggZXZlbnRzIGluc2lkZSAoc28gTk9UIHRoZSBkYXkgbnVtYmVyIGNlbGwpICovXG4uZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gdGJvZHkgdGQge1xuXHQvKiBkb24ndCBwdXQgYSBib3JkZXIgYmV0d2VlbiBldmVudCBjZWxscyAqL1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG5cbi8qIFNjcm9sbGluZyBDb250YWluZXJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXNjcm9sbGVyIHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4vKiBUT0RPOiBtb3ZlIHRvIGFnZW5kYS9iYXNpYyAqL1xuLmZjLXNjcm9sbGVyID4gLmZjLWRheS1ncmlkLFxuLmZjLXNjcm9sbGVyID4gLmZjLXRpbWUtZ3JpZCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogcmUtc2NvcGUgYWxsIHBvc2l0aW9ucyAqL1xuXHR3aWR0aDogMTAwJTsgLyogaGFjayB0byBmb3JjZSByZS1zaXppbmcgdGhpcyBpbm5lciBlbGVtZW50IHdoZW4gc2Nyb2xsYmFycyBhcHBlYXIvZGlzYXBwZWFyICovXG59XG5cblxuLyogR2xvYmFsIEV2ZW50IFN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtZXZlbnQge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciByZXNpemUgaGFuZGxlIGFuZCBvdGhlciBpbm5lciBwb3NpdGlvbmluZyAqL1xuXHRkaXNwbGF5OiBibG9jazsgLyogbWFrZSB0aGUgPGE+IHRhZyBibG9jayAqL1xuXHRmb250LXNpemU6IC44NWVtO1xuXHRsaW5lLWhlaWdodDogMS4zO1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICMzYTg3YWQ7IC8qIGRlZmF1bHQgQk9SREVSIGNvbG9yICovXG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7IC8qIHVuZG8ganF1aSdzIHVpLXdpZGdldC1oZWFkZXIgYm9sZCAqL1xufVxuXG4uZmMtZXZlbnQsXG4uZmMtZXZlbnQtZG90IHtcblx0YmFja2dyb3VuZC1jb2xvcjogIzNhODdhZDsgLyogZGVmYXVsdCBCQUNLR1JPVU5EIGNvbG9yICovXG59XG5cbi8qIG92ZXJwb3dlciBzb21lIG9mIGJvb3RzdHJhcCdzIGFuZCBqcXVpJ3Mgc3R5bGVzIG9uIDxhPiB0YWdzICovXG4uZmMtZXZlbnQsXG4uZmMtZXZlbnQ6aG92ZXIsXG4udWktd2lkZ2V0IC5mYy1ldmVudCB7XG5cdGNvbG9yOiAjZmZmOyAvKiBkZWZhdWx0IFRFWFQgY29sb3IgKi9cblx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyAvKiBpZiA8YT4gaGFzIGFuIGhyZWYgKi9cbn1cblxuLmZjLWV2ZW50W2hyZWZdLFxuLmZjLWV2ZW50LmZjLWRyYWdnYWJsZSB7XG5cdGN1cnNvcjogcG9pbnRlcjsgLyogZ2l2ZSBldmVudHMgd2l0aCBsaW5rcyBhbmQgZHJhZ2dhYmxlIGV2ZW50cyBhIGhhbmQgbW91c2UgcG9pbnRlciAqL1xufVxuXG4uZmMtbm90LWFsbG93ZWQsIC8qIGNhdXNlcyBhIFwid2FybmluZ1wiIGN1cnNvci4gYXBwbGllZCBvbiBib2R5ICovXG4uZmMtbm90LWFsbG93ZWQgLmZjLWV2ZW50IHsgLyogdG8gb3ZlcnJpZGUgYW4gZXZlbnQncyBjdXN0b20gY3Vyc29yICovXG5cdGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5mYy1ldmVudCAuZmMtYmcgeyAvKiB0aGUgZ2VuZXJpYyAuZmMtYmcgYWxyZWFkeSBkb2VzIHBvc2l0aW9uICovXG5cdHotaW5kZXg6IDE7XG5cdGJhY2tncm91bmQ6ICNmZmY7XG5cdG9wYWNpdHk6IC4yNTtcbn1cblxuLmZjLWV2ZW50IC5mYy1jb250ZW50IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAyO1xufVxuXG4vKiByZXNpemVyIChjdXJzb3IgQU5EIHRvdWNoIGRldmljZXMpICovXG5cbi5mYy1ldmVudCAuZmMtcmVzaXplciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogNDtcbn1cblxuLyogcmVzaXplciAodG91Y2ggZGV2aWNlcykgKi9cblxuLmZjLWV2ZW50IC5mYy1yZXNpemVyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLmZjLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtcmVzaXplcixcbi5mYy1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplciB7XG5cdC8qIG9ubHkgc2hvdyB3aGVuIGhvdmVyaW5nIG9yIHNlbGVjdGVkICh3aXRoIHRvdWNoKSAqL1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLyogaGl0IGFyZWEgKi9cblxuLmZjLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVyOmJlZm9yZSB7XG5cdC8qIDQweDQwIHRvdWNoIGFyZWEgKi9cblx0Y29udGVudDogXCJcIjtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk5OyAvKiB1c2VyIG9mIHRoaXMgdXRpbCBjYW4gc2NvcGUgd2l0aGluIGEgbG93ZXIgei1pbmRleCAqL1xuXHR0b3A6IDUwJTtcblx0bGVmdDogNTAlO1xuXHR3aWR0aDogNDBweDtcblx0aGVpZ2h0OiA0MHB4O1xuXHRtYXJnaW4tbGVmdDogLTIwcHg7XG5cdG1hcmdpbi10b3A6IC0yMHB4O1xufVxuXG5cbi8qIEV2ZW50IFNlbGVjdGlvbiAob25seSBmb3IgdG91Y2ggZGV2aWNlcylcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLWV2ZW50LmZjLXNlbGVjdGVkIHtcblx0ei1pbmRleDogOTk5OSAhaW1wb3J0YW50OyAvKiBvdmVyY29tZXMgaW5saW5lIHotaW5kZXggKi9cblx0Ym94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLmZjLWV2ZW50LmZjLXNlbGVjdGVkLmZjLWRyYWdnaW5nIHtcblx0Ym94LXNoYWRvdzogMCAycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuXG4vKiBIb3Jpem9udGFsIEV2ZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKiBiaWdnZXIgdG91Y2ggYXJlYSB3aGVuIHNlbGVjdGVkICovXG4uZmMtaC1ldmVudC5mYy1zZWxlY3RlZDpiZWZvcmUge1xuXHRjb250ZW50OiBcIlwiO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDM7IC8qIGJlbG93IHJlc2l6ZXJzICovXG5cdHRvcDogLTEwcHg7XG5cdGJvdHRvbTogLTEwcHg7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xufVxuXG4vKiBldmVudHMgdGhhdCBhcmUgY29udGludWluZyB0by9mcm9tIGFub3RoZXIgd2Vlay4ga2lsbCByb3VuZGVkIGNvcm5lcnMgYW5kIGJ1dHQgdXAgYWdhaW5zdCBlZGdlICovXG5cbi5mYy1sdHIgLmZjLWgtZXZlbnQuZmMtbm90LXN0YXJ0LFxuLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3QtZW5kIHtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDFweDsgLyogcmVwbGFjZSB0aGUgYm9yZGVyIHdpdGggcGFkZGluZyAqL1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uZmMtbHRyIC5mYy1oLWV2ZW50LmZjLW5vdC1lbmQsXG4uZmMtcnRsIC5mYy1oLWV2ZW50LmZjLW5vdC1zdGFydCB7XG5cdG1hcmdpbi1yaWdodDogMDtcblx0Ym9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAxcHg7IC8qIHJlcGxhY2UgdGhlIGJvcmRlciB3aXRoIHBhZGRpbmcgKi9cblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG5cdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xufVxuXG4vKiByZXNpemVyIChjdXJzb3IgQU5EIHRvdWNoIGRldmljZXMpICovXG5cbi8qIGxlZnQgcmVzaXplciAgKi9cbi5mYy1sdHIgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXIsXG4uZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplciB7XG5cdGN1cnNvcjogdy1yZXNpemU7XG5cdGxlZnQ6IC0xcHg7IC8qIG92ZXJjb21lIGJvcmRlciAqL1xufVxuXG4vKiByaWdodCByZXNpemVyICovXG4uZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplcixcbi5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXIge1xuXHRjdXJzb3I6IGUtcmVzaXplO1xuXHRyaWdodDogLTFweDsgLyogb3ZlcmNvbWUgYm9yZGVyICovXG59XG5cbi8qIHJlc2l6ZXIgKG1vdXNlIGRldmljZXMpICovXG5cbi5mYy1oLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtcmVzaXplciB7XG5cdHdpZHRoOiA3cHg7XG5cdHRvcDogLTFweDsgLyogb3ZlcmNvbWUgdG9wIGJvcmRlciAqL1xuXHRib3R0b206IC0xcHg7IC8qIG92ZXJjb21lIGJvdHRvbSBib3JkZXIgKi9cbn1cblxuLyogcmVzaXplciAodG91Y2ggZGV2aWNlcykgKi9cblxuLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLXJlc2l6ZXIge1xuXHQvKiA4eDggbGl0dGxlIGRvdCAqL1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHR3aWR0aDogNnB4O1xuXHRoZWlnaHQ6IDZweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHQvKiB2ZXJ0aWNhbGx5IGNlbnRlciAqL1xuXHR0b3A6IDUwJTtcblx0bWFyZ2luLXRvcDogLTRweDtcbn1cblxuLyogbGVmdCByZXNpemVyICAqL1xuLmZjLWx0ciAuZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtc3RhcnQtcmVzaXplcixcbi5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLWVuZC1yZXNpemVyIHtcblx0bWFyZ2luLWxlZnQ6IC00cHg7IC8qIGNlbnRlcnMgdGhlIDh4OCBkb3Qgb24gdGhlIGxlZnQgZWRnZSAqL1xufVxuXG4vKiByaWdodCByZXNpemVyICovXG4uZmMtbHRyIC5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1lbmQtcmVzaXplcixcbi5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLXN0YXJ0LXJlc2l6ZXIge1xuXHRtYXJnaW4tcmlnaHQ6IC00cHg7IC8qIGNlbnRlcnMgdGhlIDh4OCBkb3Qgb24gdGhlIHJpZ2h0IGVkZ2UgKi9cbn1cblxuXG4vKiBEYXlHcmlkIGV2ZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuV2UgdXNlIHRoZSBmdWxsIFwiZmMtZGF5LWdyaWQtZXZlbnRcIiBjbGFzcyBpbnN0ZWFkIG9mIHVzaW5nIGRlc2NlbmRhbnRzIGJlY2F1c2UgdGhlIGV2ZW50IHdvbid0XG5iZSBhIGRlc2NlbmRhbnQgb2YgdGhlIGdyaWQgd2hlbiBpdCBpcyBiZWluZyBkcmFnZ2VkLlxuKi9cblxuLmZjLWRheS1ncmlkLWV2ZW50IHtcblx0bWFyZ2luOiAxcHggMnB4IDA7IC8qIHNwYWNpbmcgYmV0d2VlbiBldmVudHMgYW5kIGVkZ2VzICovXG5cdHBhZGRpbmc6IDAgMXB4O1xufVxuXG50cjpmaXJzdC1jaGlsZCA+IHRkID4gLmZjLWRheS1ncmlkLWV2ZW50IHtcblx0bWFyZ2luLXRvcDogMnB4OyAvKiBhIGxpdHRsZSBiaXQgbW9yZSBzcGFjZSBiZWZvcmUgdGhlIGZpcnN0IGV2ZW50ICovXG59XG5cbi5mYy1kYXktZ3JpZC1ldmVudC5mYy1zZWxlY3RlZDphZnRlciB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMTsgLyogc2FtZSB6LWluZGV4IGFzIGZjLWJnLCBiZWhpbmQgdGV4dCAqL1xuXHQvKiBvdmVyY29tZSB0aGUgYm9yZGVycyAqL1xuXHR0b3A6IC0xcHg7XG5cdHJpZ2h0OiAtMXB4O1xuXHRib3R0b206IC0xcHg7XG5cdGxlZnQ6IC0xcHg7XG5cdC8qIGRhcmtlbmluZyBlZmZlY3QgKi9cblx0YmFja2dyb3VuZDogIzAwMDtcblx0b3BhY2l0eTogLjI1O1xufVxuXG4uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnQgeyAvKiBmb3JjZSBldmVudHMgdG8gYmUgb25lLWxpbmUgdGFsbCAqL1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZmMtZGF5LWdyaWQtZXZlbnQgLmZjLXRpbWUge1xuXHRmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogcmVzaXplciAoY3Vyc29yIGRldmljZXMpICovXG5cbi8qIGxlZnQgcmVzaXplciAgKi9cbi5mYy1sdHIgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtc3RhcnQtcmVzaXplcixcbi5mYy1ydGwgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtZW5kLXJlc2l6ZXIge1xuXHRtYXJnaW4tbGVmdDogLTJweDsgLyogdG8gdGhlIGRheSBjZWxsJ3MgZWRnZSAqL1xufVxuXG4vKiByaWdodCByZXNpemVyICovXG4uZmMtbHRyIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLWVuZC1yZXNpemVyLFxuLmZjLXJ0bCAuZmMtZGF5LWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1zdGFydC1yZXNpemVyIHtcblx0bWFyZ2luLXJpZ2h0OiAtMnB4OyAvKiB0byB0aGUgZGF5IGNlbGwncyBlZGdlICovXG59XG5cblxuLyogRXZlbnQgTGltaXRpbmdcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogXCJtb3JlXCIgbGluayB0aGF0IHJlcHJlc2VudHMgaGlkZGVuIGV2ZW50cyAqL1xuXG5hLmZjLW1vcmUge1xuXHRtYXJnaW46IDFweCAzcHg7XG5cdGZvbnQtc2l6ZTogLjg1ZW07XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5hLmZjLW1vcmU6aG92ZXIge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLmZjLWxpbWl0ZWQgeyAvKiByb3dzIGFuZCBjZWxscyB0aGF0IGFyZSBoaWRkZW4gYmVjYXVzZSBvZiBhIFwibW9yZVwiIGxpbmsgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLyogcG9wb3ZlciB0aGF0IGFwcGVhcnMgd2hlbiBcIm1vcmVcIiBsaW5rIGlzIGNsaWNrZWQgKi9cblxuLmZjLWRheS1ncmlkIC5mYy1yb3cge1xuXHR6LWluZGV4OiAxOyAvKiBtYWtlIHRoZSBcIm1vcmVcIiBwb3BvdmVyIG9uZSBoaWdoZXIgdGhhbiB0aGlzICovXG59XG5cbi5mYy1tb3JlLXBvcG92ZXIge1xuXHR6LWluZGV4OiAyO1xuXHR3aWR0aDogMjIwcHg7XG59XG5cbi5mYy1tb3JlLXBvcG92ZXIgLmZjLWV2ZW50LWNvbnRhaW5lciB7XG5cdHBhZGRpbmc6IDEwcHg7XG59XG5cblxuLyogTm93IEluZGljYXRvclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtbm93LWluZGljYXRvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Ym9yZGVyOiAwIHNvbGlkIHJlZDtcbn1cblxuXG4vKiBVdGlsaXRpZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXVuc2VsZWN0YWJsZSB7XG5cdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdCAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdCAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdCAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdCAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xufVxuXG5cblxuLyogVG9vbGJhclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtdG9vbGJhciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIge1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5mYy10b29sYmFyLmZjLWZvb3Rlci10b29sYmFyIHtcblx0bWFyZ2luLXRvcDogMWVtO1xufVxuXG4uZmMtdG9vbGJhciAuZmMtbGVmdCB7XG5cdGZsb2F0OiBsZWZ0O1xufVxuXG4uZmMtdG9vbGJhciAuZmMtcmlnaHQge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5mYy10b29sYmFyIC5mYy1jZW50ZXIge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qIHRoZSB0aGluZ3Mgd2l0aGluIGVhY2ggbGVmdC9yaWdodC9jZW50ZXIgc2VjdGlvbiAqL1xuLmZjIC5mYy10b29sYmFyID4gKiA+ICogeyAvKiBleHRyYSBwcmVjZWRlbmNlIHRvIG92ZXJyaWRlIGJ1dHRvbiBib3JkZXIgbWFyZ2lucyAqL1xuXHRmbG9hdDogbGVmdDtcblx0bWFyZ2luLWxlZnQ6IC43NWVtO1xufVxuXG4vKiB0aGUgZmlyc3QgdGhpbmcgd2l0aGluIGVhY2ggbGVmdC9jZW50ZXIvcmlnaHQgc2VjdGlvbiAqL1xuLmZjIC5mYy10b29sYmFyID4gKiA+IDpmaXJzdC1jaGlsZCB7IC8qIGV4dHJhIHByZWNlZGVuY2UgdG8gb3ZlcnJpZGUgYnV0dG9uIGJvcmRlciBtYXJnaW5zICovXG5cdG1hcmdpbi1sZWZ0OiAwO1xufVxuXHRcbi8qIHRpdGxlIHRleHQgKi9cblxuLmZjLXRvb2xiYXIgaDIge1xuXHRtYXJnaW46IDA7XG59XG5cbi8qIGJ1dHRvbiBsYXllcmluZyAoZm9yIGJvcmRlciBwcmVjZWRlbmNlKSAqL1xuXG4uZmMtdG9vbGJhciBidXR0b24ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5mYy10b29sYmFyIC5mYy1zdGF0ZS1ob3Zlcixcbi5mYy10b29sYmFyIC51aS1zdGF0ZS1ob3ZlciB7XG5cdHotaW5kZXg6IDI7XG59XG5cdFxuLmZjLXRvb2xiYXIgLmZjLXN0YXRlLWRvd24ge1xuXHR6LWluZGV4OiAzO1xufVxuXG4uZmMtdG9vbGJhciAuZmMtc3RhdGUtYWN0aXZlLFxuLmZjLXRvb2xiYXIgLnVpLXN0YXRlLWFjdGl2ZSB7XG5cdHotaW5kZXg6IDQ7XG59XG5cbi5mYy10b29sYmFyIGJ1dHRvbjpmb2N1cyB7XG5cdHotaW5kZXg6IDU7XG59XG5cblxuLyogVmlldyBTdHJ1Y3R1cmVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogdW5kbyB0d2l0dGVyIGJvb3RzdHJhcCdzIGJveC1zaXppbmcgcnVsZXMuIG5vcm1hbGl6ZXMgcG9zaXRpb25pbmcgdGVjaG5pcXVlcyAqL1xuLyogZG9uJ3QgZG8gdGhpcyBmb3IgdGhlIHRvb2xiYXIgYmVjYXVzZSB3ZSdsbCB3YW50IGJvb3RzdHJhcCB0byBzdHlsZSB0aG9zZSBidXR0b25zIGFzIHNvbWUgcHQgKi9cbi5mYy12aWV3LWNvbnRhaW5lciAqLFxuLmZjLXZpZXctY29udGFpbmVyICo6YmVmb3JlLFxuLmZjLXZpZXctY29udGFpbmVyICo6YWZ0ZXIge1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHQgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHQgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4uZmMtdmlldywgLyogc2NvcGUgcG9zaXRpb25pbmcgYW5kIHotaW5kZXgncyBmb3IgZXZlcnl0aGluZyB3aXRoaW4gdGhlIHZpZXcgKi9cbi5mYy12aWV3ID4gdGFibGUgeyAvKiBzbyBkcmFnZ2VkIGVsZW1lbnRzIGNhbiBiZSBhYm92ZSB0aGUgdmlldydzIG1haW4gZWxlbWVudCAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDE7XG59XG5cblxuXG4vKiBCYXNpY1ZpZXdcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogZGF5IHJvdyBzdHJ1Y3R1cmUgKi9cblxuLmZjLWJhc2ljV2Vlay12aWV3IC5mYy1jb250ZW50LXNrZWxldG9uLFxuLmZjLWJhc2ljRGF5LXZpZXcgLmZjLWNvbnRlbnQtc2tlbGV0b24ge1xuXHQvKiB0aGVyZSBtYXkgYmUgd2VlayBudW1iZXJzIGluIHRoZXNlIHZpZXdzLCBzbyBubyBwYWRkaW5nLXRvcCAqL1xuXHRwYWRkaW5nLWJvdHRvbTogMWVtOyAvKiBlbnN1cmUgYSBzcGFjZSBhdCBib3R0b20gb2YgY2VsbCBmb3IgdXNlciBzZWxlY3RpbmcvY2xpY2tpbmcgKi9cbn1cblxuLmZjLWJhc2ljLXZpZXcgLmZjLWJvZHkgLmZjLXJvdyB7XG5cdG1pbi1oZWlnaHQ6IDRlbTsgLyogZW5zdXJlIHRoYXQgYWxsIHJvd3MgYXJlIGF0IGxlYXN0IHRoaXMgdGFsbCAqL1xufVxuXG4vKiBhIFwicmlnaWRcIiByb3cgd2lsbCB0YWtlIHVwIGEgY29uc3RhbnQgYW1vdW50IG9mIGhlaWdodCBiZWNhdXNlIGNvbnRlbnQtc2tlbGV0b24gaXMgYWJzb2x1dGUgKi9cblxuLmZjLXJvdy5mYy1yaWdpZCB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5mYy1yb3cuZmMtcmlnaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG59XG5cbi8qIHdlZWsgYW5kIGRheSBudW1iZXIgc3R5bGluZyAqL1xuXG4uZmMtZGF5LXRvcC5mYy1vdGhlci1tb250aCB7XG5cdG9wYWNpdHk6IDAuMztcbn1cblxuLmZjLWJhc2ljLXZpZXcgLmZjLXdlZWstbnVtYmVyLFxuLmZjLWJhc2ljLXZpZXcgLmZjLWRheS1udW1iZXIge1xuXHRwYWRkaW5nOiAycHg7XG59XG5cbi5mYy1iYXNpYy12aWV3IHRoLmZjLXdlZWstbnVtYmVyLFxuLmZjLWJhc2ljLXZpZXcgdGguZmMtZGF5LW51bWJlciB7XG5cdHBhZGRpbmc6IDAgMnB4OyAvKiBjb2x1bW4gaGVhZGVycyBjYW4ndCBoYXZlIGFzIG11Y2ggdiBzcGFjZSAqL1xufVxuXG4uZmMtbHRyIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy1kYXktbnVtYmVyIHsgZmxvYXQ6IHJpZ2h0OyB9XG4uZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy1kYXktbnVtYmVyIHsgZmxvYXQ6IGxlZnQ7IH1cblxuLmZjLWx0ciAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtd2Vlay1udW1iZXIgeyBmbG9hdDogbGVmdDsgYm9yZGVyLXJhZGl1czogMCAwIDNweCAwOyB9XG4uZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy13ZWVrLW51bWJlciB7IGZsb2F0OiByaWdodDsgYm9yZGVyLXJhZGl1czogMCAwIDAgM3B4OyB9XG5cbi5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy13ZWVrLW51bWJlciB7XG5cdG1pbi13aWR0aDogMS41ZW07XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcblx0Y29sb3I6ICM4MDgwODA7XG59XG5cbi8qIHdoZW4gd2Vlay9kYXkgbnVtYmVyIGhhdmUgb3duIGNvbHVtbiAqL1xuXG4uZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZjLWJhc2ljLXZpZXcgdGQuZmMtd2Vlay1udW1iZXIgPiAqIHtcblx0Lyogd29yayBhcm91bmQgdGhlIHdheSB3ZSBkbyBjb2x1bW4gcmVzaXppbmcgYW5kIGVuc3VyZSBhIG1pbmltdW0gd2lkdGggKi9cblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRtaW4td2lkdGg6IDEuMjVlbTtcbn1cblxuXG4vKiBBZ2VuZGFWaWV3IGFsbC1kYXkgYXJlYVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAyOyAvKiBzbyB0aGUgXCJtb3JlLi5cIiBwb3BvdmVyIHdpbGwgYmUgb3ZlciB0aGUgdGltZSBncmlkICovXG59XG5cbi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyB7XG5cdG1pbi1oZWlnaHQ6IDNlbTsgLyogYWxsLWRheSBzZWN0aW9uIHdpbGwgbmV2ZXIgZ2V0IHNob3J0ZXIgdGhhbiB0aGlzICovXG59XG5cbi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB7XG5cdHBhZGRpbmctYm90dG9tOiAxZW07IC8qIGdpdmUgc3BhY2UgdW5kZXJuZWF0aCBldmVudHMgZm9yIGNsaWNraW5nL3NlbGVjdGluZyBkYXlzICovXG59XG5cblxuLyogVGltZUdyaWQgYXhpcyBydW5uaW5nIGRvd24gdGhlIHNpZGUgKGZvciBib3RoIHRoZSBhbGwtZGF5IGFyZWEgYW5kIHRoZSBzbG90IGFyZWEpXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYyAuZmMtYXhpcyB7IC8qIC5mYyB0byBvdmVyY29tZSBkZWZhdWx0IGNlbGwgc3R5bGVzICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdHBhZGRpbmc6IDAgNHB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZmMtbHRyIC5mYy1heGlzIHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5mYy1ydGwgLmZjLWF4aXMge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udWktd2lkZ2V0IHRkLmZjLWF4aXMge1xuXHRmb250LXdlaWdodDogbm9ybWFsOyAvKiBvdmVyY29tZSBqcXVpIHRoZW1lIG1ha2luZyBpdCBib2xkICovXG59XG5cblxuLyogVGltZUdyaWQgU3RydWN0dXJlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy10aW1lLWdyaWQtY29udGFpbmVyLCAvKiBzbyBzY3JvbGwgY29udGFpbmVyJ3Mgei1pbmRleCBpcyBiZWxvdyBhbGwtZGF5ICovXG4uZmMtdGltZS1ncmlkIHsgLyogc28gc2xhdHMvYmcvY29udGVudC9ldGMgcG9zaXRpb25zIGdldCBzY29wZWQgd2l0aGluIGhlcmUgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAxO1xufVxuXG4uZmMtdGltZS1ncmlkIHtcblx0bWluLWhlaWdodDogMTAwJTsgLyogc28gaWYgaGVpZ2h0IHNldHRpbmcgaXMgJ2F1dG8nLCAuZmMtYmcgc3RyZXRjaGVzIHRvIGZpbGwgaGVpZ2h0ICovXG59XG5cbi5mYy10aW1lLWdyaWQgdGFibGUgeyAvKiBkb24ndCBwdXQgb3V0ZXIgYm9yZGVycyBvbiBzbGF0cy9iZy9jb250ZW50L2V0YyAqL1xuXHRib3JkZXI6IDAgaGlkZGVuIHRyYW5zcGFyZW50O1xufVxuXG4uZmMtdGltZS1ncmlkID4gLmZjLWJnIHtcblx0ei1pbmRleDogMTtcbn1cblxuLmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMsXG4uZmMtdGltZS1ncmlkID4gaHIgeyAvKiB0aGUgPGhyPiBBZ2VuZGFWaWV3IGluamVjdHMgd2hlbiBncmlkIGlzIHNob3J0ZXIgdGhhbiBzY3JvbGxlciAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDI7XG59XG5cbi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtY29sIHtcblx0cG9zaXRpb246IHJlbGF0aXZlOyAvKiBiZWNhdXNlIG5vdy1pbmRpY2F0b3IgbGl2ZXMgZGlyZWN0bHkgaW5zaWRlICovXG59XG5cbi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24ge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDM7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG59XG5cbi8qIGRpdnMgd2l0aGluIGEgY2VsbCB3aXRoaW4gdGhlIGZjLWNvbnRlbnQtc2tlbGV0b24gKi9cblxuLmZjLXRpbWUtZ3JpZCAuZmMtYnVzaW5lc3MtY29udGFpbmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAxO1xufVxuXG4uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogMjtcbn1cblxuLmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0LWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogMztcbn1cblxuLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiA0O1xufVxuXG4uZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWxpbmUge1xuXHR6LWluZGV4OiA1O1xufVxuXG4uZmMtdGltZS1ncmlkIC5mYy1oZWxwZXItY29udGFpbmVyIHsgLyogYWxzbyBpcyBmYy1ldmVudC1jb250YWluZXIgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiA2O1xufVxuXG5cbi8qIFRpbWVHcmlkIFNsYXRzIChsaW5lcyB0aGF0IHJ1biBob3Jpem9udGFsbHkpXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIHRkIHtcblx0aGVpZ2h0OiAxLjVlbTtcblx0Ym9yZGVyLWJvdHRvbTogMDsgLyogZWFjaCBjZWxsIGlzIHJlc3BvbnNpYmxlIGZvciBpdHMgdG9wIGJvcmRlciAqL1xufVxuXG4uZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAuZmMtbWlub3IgdGQge1xuXHRib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG59XG5cbi5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIC51aS13aWRnZXQtY29udGVudCB7IC8qIGZvciBqcXVpIHRoZW1lICovXG5cdGJhY2tncm91bmQ6IG5vbmU7IC8qIHNlZSB0aHJvdWdoIHRvIGZjLWJnICovXG59XG5cblxuLyogVGltZUdyaWQgSGlnaGxpZ2h0aW5nIFNsb3RzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodC1jb250YWluZXIgeyAvKiBhIGRpdiB3aXRoaW4gYSBjZWxsIHdpdGhpbiB0aGUgZmMtaGlnaGxpZ2h0LXNrZWxldG9uICovXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogc2NvcGVzIHRoZSBsZWZ0L3JpZ2h0IG9mIHRoZSBmYy1oaWdobGlnaHQgdG8gYmUgaW4gdGhlIGNvbHVtbiAqL1xufVxuXG4uZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHQge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHQvKiB0b3AgYW5kIGJvdHRvbSB3aWxsIGJlIGluIGJ5IEpTICovXG59XG5cblxuLyogVGltZUdyaWQgRXZlbnQgQ29udGFpbm1lbnRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLWx0ciAuZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIgeyAvKiBzcGFjZSBvbiB0aGUgc2lkZXMgb2YgZXZlbnRzIGZvciBMVFIgKGRlZmF1bHQpICovXG5cdG1hcmdpbjogMCAyLjUlIDAgMnB4O1xufVxuXG4uZmMtcnRsIC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lciB7IC8qIHNwYWNlIG9uIHRoZSBzaWRlcyBvZiBldmVudHMgZm9yIFJUTCAqL1xuXHRtYXJnaW46IDAgMnB4IDAgMi41JTtcbn1cblxuLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQsXG4uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAxOyAvKiBzY29wZSBpbm5lciB6LWluZGV4J3MgKi9cbn1cblxuLmZjLXRpbWUtZ3JpZCAuZmMtYmdldmVudCB7XG5cdC8qIGJhY2tncm91bmQgZXZlbnRzIGFsd2F5cyBzcGFuIGZ1bGwgd2lkdGggKi9cblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG59XG5cblxuLyogR2VuZXJpYyBWZXJ0aWNhbCBFdmVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtdi1ldmVudC5mYy1ub3Qtc3RhcnQgeyAvKiBldmVudHMgdGhhdCBhcmUgY29udGludWluZyBmcm9tIGFub3RoZXIgZGF5ICovXG5cdC8qIHJlcGxhY2Ugc3BhY2UgbWFkZSBieSB0aGUgdG9wIGJvcmRlciB3aXRoIHBhZGRpbmcgKi9cblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcblx0cGFkZGluZy10b3A6IDFweDtcblxuXHQvKiByZW1vdmUgdG9wIHJvdW5kZWQgY29ybmVycyAqL1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuLmZjLXYtZXZlbnQuZmMtbm90LWVuZCB7XG5cdC8qIHJlcGxhY2Ugc3BhY2UgbWFkZSBieSB0aGUgdG9wIGJvcmRlciB3aXRoIHBhZGRpbmcgKi9cblx0Ym9yZGVyLWJvdHRvbS13aWR0aDogMDtcblx0cGFkZGluZy1ib3R0b206IDFweDtcblxuXHQvKiByZW1vdmUgYm90dG9tIHJvdW5kZWQgY29ybmVycyAqL1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn1cblxuXG4vKiBUaW1lR3JpZCBFdmVudCBTdHlsaW5nXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5XZSB1c2UgdGhlIGZ1bGwgXCJmYy10aW1lLWdyaWQtZXZlbnRcIiBjbGFzcyBpbnN0ZWFkIG9mIHVzaW5nIGRlc2NlbmRhbnRzIGJlY2F1c2UgdGhlIGV2ZW50IHdvbid0XG5iZSBhIGRlc2NlbmRhbnQgb2YgdGhlIGdyaWQgd2hlbiBpdCBpcyBiZWluZyBkcmFnZ2VkLlxuKi9cblxuLmZjLXRpbWUtZ3JpZC1ldmVudCB7XG5cdG92ZXJmbG93OiBoaWRkZW47IC8qIGRvbid0IGxldCB0aGUgYmcgZmxvdyBvdmVyIHJvdW5kZWQgY29ybmVycyAqL1xufVxuXG4uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkIHtcblx0LyogbmVlZCB0byBhbGxvdyB0b3VjaCByZXNpemVycyB0byBleHRlbmQgb3V0c2lkZSBldmVudCdzIGJvdW5kaW5nIGJveCAqL1xuXHQvKiBjb21tb24gZmMtc2VsZWN0ZWQgc3R5bGVzIGhpZGUgdGhlIGZjLWJnLCBzbyBkb24ndCBuZWVkIHRoaXMgYW55d2F5ICovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1iZyB7XG5cdGRpc3BsYXk6IG5vbmU7IC8qIGhpZGUgc2VtaS13aGl0ZSBiYWNrZ3JvdW5kLCB0byBhcHBlYXIgZGFya2VyICovXG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLWNvbnRlbnQge1xuXHRvdmVyZmxvdzogaGlkZGVuOyAvKiBmb3Igd2hlbiAuZmMtc2VsZWN0ZWQgKi9cbn1cblxuLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSxcbi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpdGxlIHtcblx0cGFkZGluZzogMCAxcHg7XG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWUge1xuXHRmb250LXNpemU6IC44NWVtO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBzaG9ydCBtb2RlLCB3aGVyZSB0aW1lIGFuZCB0aXRsZSBhcmUgb24gdGhlIHNhbWUgbGluZSAqL1xuXG4uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy1jb250ZW50IHtcblx0LyogZG9uJ3Qgd3JhcCB0byBzZWNvbmQgbGluZSAobm93IHRoYXQgY29udGVudHMgd2lsbCBiZSBpbmxpbmUpICovXG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWUsXG4uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aXRsZSB7XG5cdC8qIHB1dCB0aGUgdGltZSBhbmQgdGl0bGUgb24gdGhlIHNhbWUgbGluZSAqL1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWUgc3BhbiB7XG5cdGRpc3BsYXk6IG5vbmU7IC8qIGRvbid0IGRpc3BsYXkgdGhlIGZ1bGwgdGltZSB0ZXh0Li4uICovXG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YmVmb3JlIHtcblx0Y29udGVudDogYXR0cihkYXRhLXN0YXJ0KTsgLyogLi4uaW5zdGVhZCwgZGlzcGxheSBvbmx5IHRoZSBzdGFydCB0aW1lICovXG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlxcMDAwQTAtXFwwMDBBMFwiOyAvKiBzZXBlcmF0ZSB3aXRoIGEgZGFzaCwgd3JhcHBlZCBpbiBuYnNwJ3MgKi9cbn1cblxuLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGl0bGUge1xuXHRmb250LXNpemU6IC44NWVtOyAvKiBtYWtlIHRoZSB0aXRsZSB0ZXh0IHRoZSBzYW1lIHNpemUgYXMgdGhlIHRpbWUgKi9cblx0cGFkZGluZzogMDsgLyogdW5kbyBwYWRkaW5nIGZyb20gYWJvdmUgKi9cbn1cblxuLyogcmVzaXplciAoY3Vyc29yIGRldmljZSkgKi9cblxuLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXIge1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0Ym90dG9tOiAwO1xuXHRoZWlnaHQ6IDhweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0bGluZS1oZWlnaHQ6IDhweDtcblx0Zm9udC1zaXplOiAxMXB4O1xuXHRmb250LWZhbWlseTogbW9ub3NwYWNlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGN1cnNvcjogcy1yZXNpemU7XG59XG5cbi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVyOmFmdGVyIHtcblx0Y29udGVudDogXCI9XCI7XG59XG5cbi8qIHJlc2l6ZXIgKHRvdWNoIGRldmljZSkgKi9cblxuLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplciB7XG5cdC8qIDEweDEwIGRvdCAqL1xuXHRib3JkZXItcmFkaXVzOiA1cHg7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHR3aWR0aDogOHB4O1xuXHRoZWlnaHQ6IDhweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHQvKiBob3Jpem9udGFsbHkgY2VudGVyICovXG5cdGxlZnQ6IDUwJTtcblx0bWFyZ2luLWxlZnQ6IC01cHg7XG5cdC8qIGNlbnRlciBvbiB0aGUgYm90dG9tIGVkZ2UgKi9cblx0Ym90dG9tOiAtNXB4O1xufVxuXG5cbi8qIE5vdyBJbmRpY2F0b3Jcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1saW5lIHtcblx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcbn1cblxuLyogYXJyb3cgb24gYXhpcyAqL1xuXG4uZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWFycm93IHtcblx0bWFyZ2luLXRvcDogLTVweDsgLyogdmVydGljYWxseSBjZW50ZXIgb24gdG9wIGNvb3JkaW5hdGUgKi9cbn1cblxuLmZjLWx0ciAuZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWFycm93IHtcblx0bGVmdDogMDtcblx0LyogdHJpYW5nbGUgcG9pbnRpbmcgcmlnaHQuLi4gKi9cblx0Ym9yZGVyLXdpZHRoOiA1cHggMCA1cHggNnB4O1xuXHRib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5mYy1ydGwgLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1hcnJvdyB7XG5cdHJpZ2h0OiAwO1xuXHQvKiB0cmlhbmdsZSBwb2ludGluZyBsZWZ0Li4uICovXG5cdGJvcmRlci13aWR0aDogNXB4IDZweCA1cHggMDtcblx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5cblxuLyogTGlzdCBWaWV3XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qIHBvc3NpYmx5IHJldXNhYmxlICovXG5cbi5mYy1ldmVudC1kb3Qge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiAxMHB4O1xuXHRoZWlnaHQ6IDEwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcbn1cblxuLyogdmlldyB3cmFwcGVyICovXG5cbi5mYy1ydGwgLmZjLWxpc3QtdmlldyB7XG5cdGRpcmVjdGlvbjogcnRsOyAvKiB1bmxpa2UgY29yZSB2aWV3cywgbGV2ZXJhZ2UgYnJvd3NlciBSVEwgKi9cbn1cblxuLmZjLWxpc3QtdmlldyB7XG5cdGJvcmRlci13aWR0aDogMXB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4vKiB0YWJsZSByZXNldHMgKi9cblxuLmZjIC5mYy1saXN0LXRhYmxlIHtcblx0dGFibGUtbGF5b3V0OiBhdXRvOyAvKiBmb3Igc2hyaW5rd3JhcHBpbmcgY2VsbCBjb250ZW50ICovXG59XG5cbi5mYy1saXN0LXRhYmxlIHRkIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHggMCAwO1xuXHRwYWRkaW5nOiA4cHggMTRweDtcbn1cblxuLmZjLWxpc3QtdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQge1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxuXG4vKiBkYXkgaGVhZGluZ3Mgd2l0aCB0aGUgbGlzdCAqL1xuXG4uZmMtbGlzdC1oZWFkaW5nIHtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xufVxuXG4uZmMtbGlzdC1oZWFkaW5nIHRkIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5mYy1sdHIgLmZjLWxpc3QtaGVhZGluZy1tYWluIHsgZmxvYXQ6IGxlZnQ7IH1cbi5mYy1sdHIgLmZjLWxpc3QtaGVhZGluZy1hbHQgeyBmbG9hdDogcmlnaHQ7IH1cblxuLmZjLXJ0bCAuZmMtbGlzdC1oZWFkaW5nLW1haW4geyBmbG9hdDogcmlnaHQ7IH1cbi5mYy1ydGwgLmZjLWxpc3QtaGVhZGluZy1hbHQgeyBmbG9hdDogbGVmdDsgfVxuXG4vKiBldmVudCBsaXN0IGl0ZW1zICovXG5cbi5mYy1saXN0LWl0ZW0uZmMtaGFzLXVybCB7XG5cdGN1cnNvcjogcG9pbnRlcjsgLyogd2hvbGUgcm93IHdpbGwgYmUgY2xpY2thYmxlICovXG59XG5cbi5mYy1saXN0LWl0ZW06aG92ZXIgdGQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuXG4uZmMtbGlzdC1pdGVtLW1hcmtlcixcbi5mYy1saXN0LWl0ZW0tdGltZSB7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHdpZHRoOiAxcHg7XG59XG5cbi8qIG1ha2UgdGhlIGRvdCBjbG9zZXIgdG8gdGhlIGV2ZW50IHRpdGxlICovXG4uZmMtbHRyIC5mYy1saXN0LWl0ZW0tbWFya2VyIHsgcGFkZGluZy1yaWdodDogMDsgfVxuLmZjLXJ0bCAuZmMtbGlzdC1pdGVtLW1hcmtlciB7IHBhZGRpbmctbGVmdDogMDsgfVxuXG4uZmMtbGlzdC1pdGVtLXRpdGxlIGEge1xuXHQvKiBldmVyeSBldmVudCB0aXRsZSBjZWxsIGhhcyBhbiA8YT4gdGFnICovXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0Y29sb3I6IGluaGVyaXQ7XG59XG5cbi5mYy1saXN0LWl0ZW0tdGl0bGUgYVtocmVmXTpob3ZlciB7XG5cdC8qIGhvdmVyIGVmZmVjdCBvbmx5IG9uIHRpdGxlcyB3aXRoIGhyZWZzICovXG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4vKiBtZXNzYWdlIHdoZW4gbm8gZXZlbnRzICovXG5cbi5mYy1saXN0LWVtcHR5LXdyYXAyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG59XG5cbi5mYy1saXN0LWVtcHR5LXdyYXAxIHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMTAwJTtcblx0ZGlzcGxheTogdGFibGU7XG59XG5cbi5mYy1saXN0LWVtcHR5IHtcblx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZmMtdW50aGVtZWQgLmZjLWxpc3QtZW1wdHkgeyAvKiB0aGVtZSB3aWxsIHByb3ZpZGUgb3duIGJhY2tncm91bmQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cbiIsIi8qIVxuICogRnVsbENhbGVuZGFyIFNjaGVkdWxlciB2MS42LjJcbiAqIERvY3MgJiBMaWNlbnNlOiBodHRwczovL2Z1bGxjYWxlbmRhci5pby9zY2hlZHVsZXIvXG4gKiAoYykgMjAxNyBBZGFtIFNoYXdcbiAqL1xuXG4vKiBUT0RPOiBicmVhayB0aGlzIGZpbGUgdXAgKi9cblxuLyogU2Nyb2xsZXJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXNjcm9sbGVyLWNsaXAge1xuXHRvdmVyZmxvdzogaGlkZGVuOyAvKiBmb3IgY2xpcHBpbmcgc2Nyb2xsYmFycyAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7IC8qIHNvIHRoaW5ncyBsaWtlIHNjcm9sbGZvbGxvd2VycyBjYW4gYXR0YWNoIHRvIHRoaXMgKi9cbn1cblxuLyogc3VwcmVzc2VzIHJlbmRlcmluZyBvZiBuYXRpdmUgc2Nyb2xsYmFycyAqL1xuLyogb24gLmZjLXNjcm9sbGVyICovXG4uZmMtbm8tc2Nyb2xsYmFycyB7XG5cdGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7IC8qIGhhY2sgZm9yIGR5bmFtaWMgRE9NIG5vZGVzIChpbiBDaHJvbWUgT1NYIGF0IGxlYXN0KSAqL1xufVxuLmZjLW5vLXNjcm9sbGJhcnM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0d2lkdGg6IDA7XG5cdGhlaWdodDogMDtcbn1cblxuLmZjLXNjcm9sbGVyLWNhbnZhcyB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogb3JpZ2luIGZvciBiZyAqL1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiBzbyB0aGF0IHBhZGRpbmcgKGZvciBndXR0ZXIpIHdpbGwgYmUgcGFydCBvZiBoZWlnaHQgKi9cblx0bWluLWhlaWdodDogMTAwJTtcbn1cblxuLmZjLXNjcm9sbGVyLWNhbnZhcyA+IC5mYy1iZyB7XG5cdHotaW5kZXg6IDE7IC8qIG1ha2UgZGVmYXVsdD8gKi9cbn1cblxuLmZjLXNjcm9sbGVyLWNhbnZhcyA+IC5mYy1jb250ZW50IHtcblx0ei1pbmRleDogMjsgLyogbWFrZSBkZWZhdWx0PyAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7IC8qIG9yaWdpbiBmb3IgaW5uZXIgY29udGVudCAqL1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG5cbi8qIGZvciB0aGVtZWQsIGhhcmQgdG8gZ2V0IHRoZSBib3JkZXItY29sb3IsIHNvIGp1c3QgZm9yZ2V0IGl0IChSRVZJU0lUKSAqL1xuLnVpLXdpZGdldCAuZmMtc2Nyb2xsZXItY2FudmFzID4gLmZjLWNvbnRlbnQge1xuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZmMtc2Nyb2xsZXItY2FudmFzLmZjLWd1dHRlci1sZWZ0ID4gLmZjLWNvbnRlbnQgeyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBtYXJnaW4tbGVmdDogLTFweCB9XG4uZmMtc2Nyb2xsZXItY2FudmFzLmZjLWd1dHRlci1yaWdodCA+IC5mYy1jb250ZW50IHsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IG1hcmdpbi1yaWdodDogLTFweCB9XG4uZmMtc2Nyb2xsZXItY2FudmFzLmZjLWd1dHRlci10b3AgPiAuZmMtY29udGVudCB7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgbWFyZ2luLXRvcDogLTFweCB9XG4vKiBjb250ZW50IGlzIHJlc3BvbnNpYmxlIGZvciBib3R0b20gYm9yZGVyICovXG5cblxuLyogVmlldyBTdHJ1Y3R1cmVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXJ0bCAuZmMtdGltZWxpbmUge1xuXHRkaXJlY3Rpb246IHJ0bDtcbn1cblxuLmZjLXRpbWVsaW5lIC5mYy1kaXZpZGVyIHtcblx0d2lkdGg6IDNweDtcblx0Ym9yZGVyLXN0eWxlOiBkb3VibGU7IC8qIG92ZXJjb21lIG5laWdoYm9yaW5nIGJvcmRlcnMgKi9cbn1cblxuLmZjLXRpbWVsaW5lIC5mYy1oZWFkID4gdHIgPiAuZmMtZGl2aWRlciB7XG5cdGJvcmRlci1ib3R0b206IDA7XG59XG5cbi5mYy10aW1lbGluZSAuZmMtYm9keSA+IHRyID4gLmZjLWRpdmlkZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZmMtdGltZWxpbmUgLmZjLWJvZHkgLmZjLWRpdmlkZXIudWktd2lkZ2V0LWhlYWRlciB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG5cbi5mYy1zY3JvbGxlZCAuZmMtaGVhZCAuZmMtc2Nyb2xsZXIge1xuXHR6LWluZGV4OiAyOyAvKiBzbyBkcm9wIHNoYWRvdyB3aWxsIGdvIGFib3ZlIGJvZHkgcGFuZXMgKi9cbn1cblxuLmZjLXRpbWVsaW5lLmZjLXNjcm9sbGVkIC5mYy1oZWFkIC5mYy1zY3JvbGxlciB7XG5cdGJveC1zaGFkb3c6IDAgM3B4IDRweCByZ2JhKDAsMCwwLDAuMDc1KTtcbn1cblxuLmZjLXRpbWVsaW5lIC5mYy1ib2R5IC5mYy1zY3JvbGxlciB7XG5cdHotaW5kZXg6IDE7XG59XG5cbi8qXG5vbiBtb3N0IHRhYmxlcyB0aGF0IGV4cGFuZCB0byB0aGUgZWRnZXMsIGtpbGwgdGhlIG91dGVyIGJvcmRlcixcbmJlY2F1c2UgdGhlIGNvbnRhaW5lciBlbGVtZW50cyB0YWtlIGNhcmUgb2YgaXQuXG5leGFtcGxlIHRhYmxlczpcbi5mYy1zY3JvbGxlci1jYW52YXMgLmZjLWNvbnRlbnQgdGFibGVcbi5mYy1zY3JvbGxlci1jYW52YXMgLmZjLWJnIC5mYy1zbGF0cyB0YWJsZVxuKi9cbi5mYy10aW1lbGluZSAuZmMtc2Nyb2xsZXItY2FudmFzID4gZGl2ID4gdGFibGUsXG4uZmMtdGltZWxpbmUgLmZjLXNjcm9sbGVyLWNhbnZhcyA+IGRpdiA+IGRpdiA+IHRhYmxlIHtcblx0Ym9yZGVyLXN0eWxlOiBoaWRkZW47XG59XG5cbi8qXG5mb3IgcmVzb3VyY2Ugcm93cyAoaW4gYm90aCB0aGUgc3ByZWFkc2hlZXQgYW5kIHRpbWVsaW5lIGFyZWFzKSxcbnVuZG8gcHJldmlvdXMgcnVsZSBpbiBvcmRlciB0byBhbHdheXMgc2hvdyBsYXN0IGJvcmRlci5cbiovXG4uZmMtdGltZWxpbmUgLmZjLXNjcm9sbGVyLWNhbnZhcyA+IC5mYy1jb250ZW50ID4gLmZjLXJvd3MgPiB0YWJsZSB7XG5cdGJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7XG59XG5cblxuLyogVGFibGUgQ2VsbCBDb21tb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXRpbWVsaW5lIHRoLFxuLmZjLXRpbWVsaW5lIHRkIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmZjLXRpbWVsaW5lIC5mYy1jZWxsLWNvbnRlbnQge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZmMtdGltZWxpbmUgLmZjLWNlbGwtdGV4dCB7XG5cdHBhZGRpbmctbGVmdDogNHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG59XG5cbi5mYy10aW1lbGluZSAuZmMtY29sLXJlc2l6ZXIge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi8qXG5DZWxscyBhdCB0aGUgc3RhcnQgb2YgYSB3ZWVrXG5UT0RPOiBmaWd1cmUgb3V0IGJldHRlciBzdHlsaW5nXG5cbi5mYy1sdHIgLmZjLXRpbWVsaW5lIC5mYy1lbS1jZWxsIGRpdiB7XG5cdGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2VlZTtcblx0aGVpZ2h0OiAxMDAlO1xufVxuLmZjLXJ0bCAuZmMtdGltZWxpbmUgLmZjLWVtLWNlbGwge1xuXHRib3JkZXItcmlnaHQtd2lkdGg6IDNweDtcbn1cbiovXG5cbi8qIGhlYWQgKi9cblxuLmZjLXRpbWVsaW5lIHRoIHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmZjLXRpbWVsaW5lIC5mYy1oZWFkIC5mYy1jZWxsLWNvbnRlbnQge1xuXHRwYWRkaW5nLXRvcDogM3B4O1xuXHRwYWRkaW5nLWJvdHRvbTogM3B4O1xufVxuXG4vKiBib2R5ICovXG5cbi5mYy10aW1lbGluZSAuZmMtYm9keSAudWktd2lkZ2V0LWNvbnRlbnQge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xufVxuXG5cbi8qIFJlc291cmNlIEFyZWFcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLXJlc291cmNlLWFyZWEge1xuXHR3aWR0aDogMzAlO1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSBjb2wge1xuXHR3aWR0aDogNDAlO1xuXHRtaW4td2lkdGg6IDcwcHg7IC8qIHdpbGwgYmUgcmVhZCBieSBKUyAqL1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSBjb2wuZmMtbWFpbi1jb2wge1xuXHR3aWR0aDogNjAlOyAvKiBtYWtlIHRoZSBmaXJzdCBjb2x1bW4gaW4gYSBuZXN0ZWQgc2V0dXAgYmlnZ2VyICovXG59XG5cblxuLmZjLWZsYXQgLmZjLWV4cGFuZGVyLXNwYWNlIHsgLyogZmMtZmxhdCBpcyBvcHBvc2l0ZSBvZiBmYy1uZXN0ZWQgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cblxuXG4uZmMtbHRyIC5mYy1yZXNvdXJjZS1hcmVhIHRyID4gKiB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XG4uZmMtcnRsIC5mYy1yZXNvdXJjZS1hcmVhIHRyID4gKiB7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSAuZmMtY2VsbC1jb250ZW50IHtcblx0cGFkZGluZy1sZWZ0OiA0cHg7XG5cdHBhZGRpbmctcmlnaHQ6IDRweDtcbn1cblxuLyogaGVhZCAqL1xuXG4uZmMtcmVzb3VyY2UtYXJlYSAuZmMtc3VwZXIgdGgge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5mYy1yZXNvdXJjZS1hcmVhIHRoID4gZGl2IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSB0aCAuZmMtY2VsbC1jb250ZW50IHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAxO1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSB0aCAuZmMtY29sLXJlc2l6ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDI7XG5cdHRvcDogMDtcblx0Ym90dG9tOiAwO1xuXHR3aWR0aDogNXB4O1xufVxuXG4uZmMtbHRyIC5mYy1yZXNvdXJjZS1hcmVhIHRoIC5mYy1jb2wtcmVzaXplciB7XG5cdHJpZ2h0OiAtM3B4O1xufVxuLmZjLXJ0bCAuZmMtcmVzb3VyY2UtYXJlYSB0aCAuZmMtY29sLXJlc2l6ZXIge1xuXHRsZWZ0OiAtM3B4O1xufVxuXG4vKiBib2R5ICovXG5cbnRyLmZjLWNvbGxhcHNlZCA+IHRkLCAvKiBiZWZvcmUgdGhlIHRyYW5zaXRpb24gKHByZXZlbnRzIGluaXRpYWwgZmxpY2tlcikgKi9cbnRyLmZjLXRyYW5zaXRpb25pbmcgPiB0ZCB7IC8qIGR1cmluZyB0aGUgdHJhbnNpdGlvbiAqL1xuXHRvdmVyZmxvdzogaGlkZGVuOyAvKiBwcmV2ZW50cyBhYnNvbHV0ZWx5LXBvc2l0aW9uZWQgZXZlbnRzIGZyb20gYmxlZWRpbmcgb3V0ICovXG59XG5cbnRyLmZjLXRyYW5zaXRpb25pbmcgPiB0ZCA+IGRpdiB7XG5cdHRyYW5zaXRpb246IG1hcmdpbi10b3AgMC4ycztcbn1cblxudHIuZmMtY29sbGFwc2VkID4gdGQgPiBkaXYge1xuXHRtYXJnaW4tdG9wOiAtMTBweDtcbn1cblxuXG4uZmMtYm9keSAuZmMtcmVzb3VyY2UtYXJlYSAuZmMtY2VsbC1jb250ZW50IHsgLyogbWlnaHQgQkUgdGhlIGNlbGwgKi9cblx0cGFkZGluZy10b3A6IDhweDtcblx0cGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuLmZjLW5vLW92ZXJsYXAgLmZjLWJvZHkgLmZjLXJlc291cmNlLWFyZWEgLmZjLWNlbGwtY29udGVudCB7IC8qIG1pZ2h0IEJFIHRoZSBjZWxsICovXG5cdHBhZGRpbmctdG9wOiA1cHg7XG5cdHBhZGRpbmctYm90dG9tOiA1cHg7XG59XG5cbi5mYy1yZXNvdXJjZS1hcmVhIC5mYy1pY29uIHsgLyogdGhlIGV4cGFuZGVyIGFuZCBzcGFjZXJzIGJlZm9yZSB0aGUgZXhwYW5kZXIgKi9cblx0d2lkdGg6IDFlbTsgLyogZW5zdXJlIGNvbnN0YW50IHdpZHRoLCBlc3AgZm9yIGVtcHR5IGljb25zICovXG5cdGZvbnQtc2l6ZTogLjllbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0bWFyZ2luLXRvcDogLTElO1xufVxuXG4uZmMtcmVzb3VyY2UtYXJlYSAuZmMtZXhwYW5kZXIge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGNvbG9yOiAjNjY2OyAvKiBmb3IgdGhlIGljb24gd2l0aGluICovXG59XG5cblxuLyogVGltZSBBcmVhXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy10aW1lLWFyZWEgY29sIHtcblx0bWluLXdpZHRoOiAyLjJlbTsgLyogZGV0ZWN0ZWQgYnkgSlMgKi9cbn1cblxuLyogaGVhZCAqL1xuXG4uZmMtbHRyIC5mYy10aW1lLWFyZWEgLmZjLWNocm9ubyB0aCB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XG4uZmMtcnRsIC5mYy10aW1lLWFyZWEgLmZjLWNocm9ubyB0aCB7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4vKiBib2R5IHNsYXRzICh2ZXJ0aWNhbCBsaW5lcykgKi9cblxuLmZjLXRpbWUtYXJlYSAuZmMtc2xhdHMgeyAvKiBmYy1iZyBpcyByZXNwb25zaWJsZSBmb3IgYSBsb3Qgb2YgdGhpcyBub3chICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0Ym90dG9tOiAwO1xufVxuXG4uZmMtdGltZS1hcmVhIC5mYy1zbGF0cyB0YWJsZSB7XG5cdGhlaWdodDogMTAwJTtcbn1cblxuLmZjLXRpbWUtYXJlYSAuZmMtc2xhdHMgLmZjLW1pbm9yIHtcblx0Ym9yZGVyLXN0eWxlOiBkb3R0ZWQ7XG59XG5cbi5mYy10aW1lLWFyZWEgLmZjLXNsYXRzIHRkIHtcblx0Ym9yZGVyLXdpZHRoOiAwIDFweDsgLyogbmVlZCB0byBkbyB0aGlzLiBzb21ldGltZXMgLTEgbWFyZ2luIHdvdWxkbid0IGhpZGUgdGhlIGRvdHRlZCAqL1xufVxuXG4uZmMtbHRyIC5mYy10aW1lLWFyZWEgLmZjLXNsYXRzIHRkIHtcblx0Ym9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xufVxuLmZjLXJ0bCAuZmMtdGltZS1hcmVhIC5mYy1zbGF0cyB0ZCB7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xufVxuXG4vKiBib2R5IGNvbnRlbnQgY29udGFpbmVyc1xuICAgY2FuIGJlIHdpdGhpbiByb3dzIG9yIGRpcmVjdGx5IHdpdGhpbiB0aGUgcGFuZSdzIGNvbnRlbnRcbiovXG5cbi5mYy10aW1lLWFyZWEgLmZjLWJnZXZlbnQtY29udGFpbmVyLFxuLmZjLXRpbWUtYXJlYSAuZmMtaGlnaGxpZ2h0LWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMjsgLyogb25seSBmb3IgZGlyZWN0bHkgd2l0aGluIHBhbmUuIG5vdCBmb3Igcm93LiBvdmVycmlkZGVuIGxhdGVyICovXG5cdHRvcDogMDtcblx0Ym90dG9tOiAwO1xuXHR3aWR0aDogMDtcbn1cblxuLmZjLWx0ciAuZmMtdGltZS1hcmVhIC5mYy1oZWxwZXItY29udGFpbmVyLCAvKiBvbmx5IHdpdGhpbiByb3cgKi9cbi5mYy1sdHIgLmZjLXRpbWUtYXJlYSAuZmMtYmdldmVudC1jb250YWluZXIsXG4uZmMtbHRyIC5mYy10aW1lLWFyZWEgLmZjLWhpZ2hsaWdodC1jb250YWluZXIge1xuXHRsZWZ0OiAwO1xufVxuLmZjLXJ0bCAuZmMtdGltZS1hcmVhIC5mYy1oZWxwZXItY29udGFpbmVyLCAvKiBvbmx5IHdpdGhpbiByb3cgKi9cbi5mYy1ydGwgLmZjLXRpbWUtYXJlYSAuZmMtYmdldmVudC1jb250YWluZXIsXG4uZmMtcnRsIC5mYy10aW1lLWFyZWEgLmZjLWhpZ2hsaWdodC1jb250YWluZXIge1xuXHRyaWdodDogMDtcbn1cblxuLmZjLXRpbWUtYXJlYSAuZmMtYmdldmVudCxcbi5mYy10aW1lLWFyZWEgLmZjLWhpZ2hsaWdodCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRib3R0b206IDA7XG59XG5cbi8qIGJvZHkgcmVzb3VyY2Ugcm93cyAqL1xuXG4uZmMtdGltZS1hcmVhIC5mYy1yb3dzIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAzO1xufVxuXG4uZmMtdGltZS1hcmVhIC5mYy1yb3dzIC51aS13aWRnZXQtY29udGVudCB7XG5cdGJhY2tncm91bmQ6IG5vbmU7XG59XG5cbi5mYy10aW1lLWFyZWEgLmZjLXJvd3MgdGQgPiBkaXYge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5mYy10aW1lLWFyZWEgLmZjLXJvd3MgLmZjLWJnZXZlbnQtY29udGFpbmVyLFxuLmZjLXRpbWUtYXJlYSAuZmMtcm93cyAuZmMtaGlnaGxpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6IDE7XG59XG5cbi5mYy10aW1lLWFyZWEgLmZjLWV2ZW50LWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogMjsgLyogYWJvdmUgYmdldmVudCBhbmQgaGlnaGxpZ2h0ICovXG5cdHdpZHRoOiAwOyAvKiBmb3IgZXZlbnQgcG9zaXRpb25pbmcuIHdpbGwgZW5kIHVwIG9uIGNvcnJlY3Qgc2lkZSBiYXNlZCBvbiBkaXIgKi9cbn1cblxuLmZjLXRpbWUtYXJlYSAuZmMtaGVscGVyLWNvbnRhaW5lciB7IC8qIGFsc28gYW4gZmMtZXZlbnQtY29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogMztcblx0dG9wOiAwO1xufVxuXG4uZmMtdGltZS1hcmVhIC5mYy1ldmVudC1jb250YWluZXIge1xuXHRwYWRkaW5nLWJvdHRvbTogOHB4O1xuXHR0b3A6IC0xcHg7XG59XG5cbi5mYy10aW1lLWFyZWEgdHI6Zmlyc3QtY2hpbGQgLmZjLWV2ZW50LWNvbnRhaW5lciB7XG5cdHRvcDogMDtcbn1cblxuLmZjLW5vLW92ZXJsYXAgLmZjLXRpbWUtYXJlYSAuZmMtZXZlbnQtY29udGFpbmVyIHtcblx0cGFkZGluZy1ib3R0b206IDA7XG5cdHRvcDogMDtcbn1cblxuXG4vKiBOb3cgSW5kaWNhdG9yXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi5mYy10aW1lbGluZSAuZmMtbm93LWluZGljYXRvciB7IC8qIGJvdGggdGhlIGFycm93IGFuZCB0aGUgbGluZSAqL1xuXHR6LWluZGV4OiAzOyAvKiBvbmUgYWJvdmUgc2Nyb2xsZXIncyBmYy1jb250ZW50ICovXG5cdHRvcDogMDtcbn1cblxuLmZjLXRpbWUtYXJlYSAuZmMtbm93LWluZGljYXRvci1hcnJvdyB7XG5cdG1hcmdpbjogMCAtNnB4OyAvKiA1LCB0aGVuIG9uZSBtb3JlIHRvIGNvdW50ZXJhY3Qgc2Nyb2xsZXIncyBuZWdhdGl2ZSBtYXJnaW5zICovXG5cdC8qIHRyaWFuZ2xlIHBvaW50aW5nIGRvd24uLi4gKi9cblx0Ym9yZGVyLXdpZHRoOiA2cHggNXB4IDAgNXB4O1xuXHRib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5mYy10aW1lLWFyZWEgLmZjLW5vdy1pbmRpY2F0b3ItbGluZSB7XG5cdG1hcmdpbjogMCAtMXB4OyAvKiBjb3VudGVyYWN0IHNjcm9sbGVyJ3MgbmVnYXRpdmUgbWFyZ2lucyAqL1xuXHRib3R0b206IDA7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XG59XG5cblxuLyogVGltZSBHcmlkIEV2ZW50c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4uZmMtdGltZWxpbmUtZXZlbnQge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJvcmRlci1yYWRpdXM6IDA7XG5cdHBhZGRpbmc6IDJweCAwO1xuXHRtYXJnaW4tYm90dG9tOiAxcHg7XG59XG5cbi5mYy1uby1vdmVybGFwIC5mYy10aW1lbGluZS1ldmVudCB7XG5cdHBhZGRpbmc6IDVweCAwO1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBkb24ndCBvdmVybGFwIGdyaWQgbGluZXMgYXQgdGhlIGV2ZW50J3MgZW5kICovXG4uZmMtbHRyIC5mYy10aW1lbGluZS1ldmVudCB7IG1hcmdpbi1yaWdodDogMXB4IH1cbi5mYy1ydGwgLmZjLXRpbWVsaW5lLWV2ZW50IHsgbWFyZ2luLWxlZnQ6IDFweCB9XG5cbi5mYy10aW1lbGluZS1ldmVudCAuZmMtY29udGVudCB7XG5cdHBhZGRpbmc6IDAgMXB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZmMtdGltZWxpbmUtZXZlbnQgLmZjLXRpbWUge1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0cGFkZGluZzogMCAxcHg7XG59XG5cbi5mYy1ydGwgLmZjLXRpbWVsaW5lLWV2ZW50IC5mYy10aW1lIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiB3aWxsIGZvcmNlIGl0IG9uIHRoZSBvdGhlciBzaWRlICovXG59XG5cbi5mYy10aW1lbGluZS1ldmVudCAuZmMtdGl0bGUge1xuXHRwYWRkaW5nOiAwIDFweDtcbn1cblxuLmZjLXRpbWVsaW5lLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1iZyB7XG5cdGRpc3BsYXk6IG5vbmU7IC8qIGhpZGUgc2VtaS13aGl0ZSBiYWNrZ3JvdW5kLCB0byBhcHBlYXIgZGFya2VyICovXG59XG5cblxuLyogZm9sbG93ZXIgbG9naWMgKi9cblxuXG4uZmMtbHRyIC5mYy10aW1lbGluZS1ldmVudCAuZmMtdGl0bGUge1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdG1hcmdpbi1sZWZ0OiAtOHB4O1xufVxuLmZjLXJ0bCAuZmMtdGltZWxpbmUtZXZlbnQgLmZjLXRpdGxlIHtcblx0cGFkZGluZy1yaWdodDogMTBweDtcblx0bWFyZ2luLXJpZ2h0OiAtOHB4O1xufVxuXG4uZmMtbHRyIC5mYy10aW1lbGluZS1ldmVudC5mYy1ub3Qtc3RhcnQgLmZjLXRpdGxlIHtcblx0bWFyZ2luLWxlZnQ6IC0ycHg7XG59XG4uZmMtcnRsIC5mYy10aW1lbGluZS1ldmVudC5mYy1ub3Qtc3RhcnQgLmZjLXRpdGxlIHtcblx0bWFyZ2luLXJpZ2h0OiAtMnB4O1xufVxuXG4uZmMtdGltZWxpbmUtZXZlbnQuZmMtbm90LXN0YXJ0IC5mYy10aXRsZSxcbi5mYy1ib2R5IC5mYy10aW1lLWFyZWEgLmZjLWZvbGxvd2luZyB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmZjLXRpbWVsaW5lLWV2ZW50LmZjLW5vdC1zdGFydCAuZmMtdGl0bGU6YmVmb3JlLFxuLmZjLWJvZHkgLmZjLXRpbWUtYXJlYSAuZmMtZm9sbG93aW5nOmJlZm9yZSB7IC8qIGdlbmVyaWMgYXJyb3cgKi9cblx0Y29udGVudDogXCJcIjtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0bWFyZ2luLXRvcDogLTVweDtcblx0Ym9yZGVyOiA1cHggc29saWQgIzAwMDtcblx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuXHRvcGFjaXR5OiAuNTtcbn1cblxuLmZjLWx0ciAuZmMtdGltZWxpbmUtZXZlbnQuZmMtbm90LXN0YXJ0IC5mYy10aXRsZTpiZWZvcmUsXG4uZmMtbHRyIC5mYy1ib2R5IC5mYy10aW1lLWFyZWEgLmZjLWZvbGxvd2luZzpiZWZvcmUgeyAvKiBMVFIuIGxlZnQgcG9pbnRpbmcgYXJyb3cgKi9cblx0Ym9yZGVyLWxlZnQ6IDA7XG5cdGxlZnQ6IDJweDtcbn1cblxuLmZjLXJ0bCAuZmMtdGltZWxpbmUtZXZlbnQuZmMtbm90LXN0YXJ0IC5mYy10aXRsZTpiZWZvcmUsXG4uZmMtcnRsIC5mYy1ib2R5IC5mYy10aW1lLWFyZWEgLmZjLWZvbGxvd2luZzpiZWZvcmUgeyAvKiBSVEwuIHJpZ2h0IHBvaW50aW5nIGFycm93ICovXG5cdGJvcmRlci1yaWdodDogMDtcblx0cmlnaHQ6IDJweDtcbn1cblxuXG4vKiBMaWNlbnNlIE1lc3NhZ2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLmZjLWxpY2Vuc2UtbWVzc2FnZSB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogOTk5OTk7XG5cdGJvdHRvbTogMXB4O1xuXHRsZWZ0OiAxcHg7XG5cdGJhY2tncm91bmQ6ICNlZWU7XG5cdGJvcmRlci1jb2xvcjogI2RkZDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMDtcblx0cGFkZGluZzogMnB4IDRweDtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xufVxuIiwiLyogZGF0YSByYW5nZSBhYm92ZSBjYWxlbmRhciAqL1xuXG4jY2FsZW5kYXIge1xuXG4gICAgcGFkZGluZzogMCAkZ2xvYmFsLXBhZGRpbmcgMDtcbn1cblxuLmZjIHRhYmxlIHtcblxuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTVweCk7XG59XG5cbi5mYy10b29sYmFyIC5mYy1sZWZ0IGgyIHtcblxuICAgIEBpbmNsdWRlIHN1YmhlYWRlcjtcbn1cblxuXG5AaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcblxuICAgIC5mYy1yZXNvdXJjZS1hcmVhIHtcblxuICAgICAgICB3aWR0aDogMjAlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50ICgzNjcgZG93bikge1xuXG4gICAgLmZjLXRvb2xiYXIgLmZjLXJpZ2h0IHtcblxuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgXG4gICAgICAgIC5zdWJoZWFkZXIge1xuXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxufVxuXG4uZmMgYnV0dG9uIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFpbXBvcnRhbnQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJ1dHRvbigpO1xuICAgIHBhZGRpbmc6IC41ZW0gMS4zNWVtICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNXB4KTtcbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBYUFBOzs7OztHQUtHO0FIMEpHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0UyRVo3QyxBQXZHQSxPQXVHTyxFQUFQLEFBdkdBLE9BdUdPLEFBZUwsS0FBTSxFQWZS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QUFhLEVBRGlCLEdBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixXRXFKYSxHRnJKYixLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixTQUFzQixHR3REckQ7RUVtSkssQUZySkYsV0VxSmEsR0ZySmIsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsR0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLFdFcUphLEdGckpiLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLEdBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixXRXFKYSxHRnJKYixLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixTQUFzQixHR3REckQ7RUVtSkssQUZySkYsV0VxSmEsR0ZySmIsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsU0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLFdFcUphLEdGckpiLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLEtBQXNCLEdHdERyRDs7QS9CcUlHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWlDY2hDLEFGckpGLFlFcUpjLEdGckpkLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLElBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixZRXFKYyxHRnJKZCxLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixHQUFzQixHR3REckQ7RUVtSkssQUZySkYsWUVxSmMsR0ZySmQsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsU0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLFlFcUpjLEdGckpkLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLEdBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixZRXFKYyxHRnJKZCxLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixHQUFzQixHR3REckQ7RUVtSkssQUZySkYsWUVxSmMsR0ZySmQsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsU0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLFlFcUpjLEdGckpkLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLFNBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixZRXFKYyxHRnJKZCxLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixLQUFzQixHR3REckQ7O0EvQnFJRyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VpQ2NoQyxBRnJKRixhRXFKZSxHRnJKZixLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixJQUFzQixHR3REckQ7RUVtSkssQUZySkYsYUVxSmUsR0ZySmYsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsR0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLGFFcUplLEdGckpmLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLFNBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixhRXFKZSxHRnJKZixLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixHQUFzQixHR3REckQ7RUVtSkssQUZySkYsYUVxSmUsR0ZySmYsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsR0FBc0IsR0d0RHJEO0VFbUpLLEFGckpGLGFFcUplLEdGckpmLEtBQUssQ0FBUTtJSHlEZixLQUFhLEVBRGlCLFNBQXNCLEdHdERyRDtFRW1KSyxBRnJKRixhRXFKZSxHRnJKZixLQUFLLENBQVE7SUh5RGYsS0FBYSxFQURpQixTQUFzQixHR3REckQ7RUVtSkssQUZySkYsYUVxSmUsR0ZySmYsS0FBSyxDQUFRO0lIeURmLEtBQWEsRUFEaUIsS0FBc0IsR0d0RHJEOztBRTBLSyxBRjVLRixjRTRLZ0IsQUFBQSxXQUFXLEdGNUszQixLQUFLLENBQVE7RUh5RGYsS0FBYSxFQUR5Qyx1QkFBMEQsR0d0RGpIOztBRTBLSyxBRjVLRixjRTRLZ0IsQUFBQSxXQUFXLEdGNUszQixLQUFLLENBQVE7RUh5RGYsS0FBYSxFQUR5QyxzQkFBMEQsR0d0RGpIOztBRTBLSyxBRjVLRixjRTRLZ0IsQUFBQSxXQUFXLEdGNUszQixLQUFLLENBQVE7RUh5RGYsS0FBYSxFQUR5Qyw0QkFBMEQsR0d0RGpIOztBRTBLSyxBRjVLRixjRTRLZ0IsQUFBQSxXQUFXLEdGNUszQixLQUFLLENBQVE7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O0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7SUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtJSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7SUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtJSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7SUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0VDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFdBQVcsQ0FBRztJSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7RUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsV0FBVyxDQUFHO0lKbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztFQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixXQUFXLENBQUc7SUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DOztBQ3NMSCxBQUFBLHVCQUF1QixDQUFRO0VEL0svQixZQUFnQixFQUFTLENBQUM7RUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDaUx6QjtFQUZELEFENUtBLHVCQzRLdUIsR0Q1S3ZCLEtBQUssQ0FBUTtJQUVYLGFBQWlCLEVBQVUsQ0FBQztJQUE1QixZQUFpQixFQUFVLENBQUMsR0FFL0I7O0FoQzRHQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFaUNzRHpDLEFBQUEsdUJBQXVCLENBQU87SUQvTDlCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUMsR0NpTXpCO0lBRkQsQUQ1TEUsdUJDNExxQixHRDVMckIsS0FBSyxDQUFRO01BRVgsWUFBZ0IsRUFBUyxDQUFDO01BQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQUU3QjtJQ3dMRCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixXQUFXLENBQUc7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFdBQVcsQ0FBRztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsV0FBVyxDQUFHO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztFQ3NMSCxBQUFBLHdCQUF3QixDQUFPO0lEL0svQixZQUFnQixFQUFTLENBQUM7SUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDaUx6QjtJQUZELEFENUtBLHdCQzRLd0IsR0Q1S3hCLEtBQUssQ0FBUTtNQUVYLGFBQWlCLEVBQVUsQ0FBQztNQUE1QixZQUFpQixFQUFVLENBQUMsR0FFL0I7O0FoQzRHQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFaUNzRHpDLEFBQUEsc0JBQXNCLENBQVE7SUQvTDlCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUMsR0NpTXpCO0lBRkQsQUQ1TEUsc0JDNExvQixHRDVMcEIsS0FBSyxDQUFRO01BRVgsWUFBZ0IsRUFBUyxDQUFDO01BQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQUU3QjtJQ3dMRCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsUUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLEdBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSxzQkNrTGtCLEdEbExsQixXQUFXLENBQUc7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHNCQ2tMa0IsR0RsTGxCLFdBQVcsQ0FBRztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksc0JDa0xrQixHRGxMbEIsV0FBVyxDQUFHO01KbURwQixLQUFhLEVBRGlCLElBQXNCLEdJaEQvQztFQ3NMSCxBQUFBLHVCQUF1QixDQUFRO0lEL0svQixZQUFnQixFQUFTLENBQUM7SUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDaUx6QjtJQUZELEFENUtBLHVCQzRLdUIsR0Q1S3ZCLEtBQUssQ0FBUTtNQUVYLGFBQWlCLEVBQVUsQ0FBQztNQUE1QixZQUFpQixFQUFVLENBQUMsR0FFL0I7O0FoQ2lIQyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VpQ2lEbEMsQUFBQSx1QkFBdUIsQ0FBTztJRC9MOUIsWUFBZ0IsRUFBUyxDQUFDO0lBQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQ2lNekI7SUFGRCxBRDVMRSx1QkM0THFCLEdENUxyQixLQUFLLENBQVE7TUFFWCxZQUFnQixFQUFTLENBQUM7TUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdBRTdCO0lDd0xELEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixRQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsR0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHVCQ2tMbUIsR0RsTG5CLFdBQVcsQ0FBRztNSm1EcEIsS0FBYSxFQURpQixTQUFzQixHSWhEL0M7SUNnTEgsQURsTEksdUJDa0xtQixHRGxMbkIsV0FBVyxDQUFHO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx1QkNrTG1CLEdEbExuQixXQUFXLENBQUc7TUptRHBCLEtBQWEsRUFEaUIsSUFBc0IsR0loRC9DO0VDc0xILEFBQUEsd0JBQXdCLENBQU87SUQvSy9CLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUMsR0NpTHpCO0lBRkQsQUQ1S0Esd0JDNEt3QixHRDVLeEIsS0FBSyxDQUFRO01BRVgsYUFBaUIsRUFBVSxDQUFDO01BQTVCLFlBQWlCLEVBQVUsQ0FBQyxHQUUvQjs7QWhDaUhDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWlDaURsQyxBQUFBLHdCQUF3QixDQUFNO0lEL0w5QixZQUFnQixFQUFTLENBQUM7SUFBMUIsV0FBZ0IsRUFBUyxDQUFDLEdDaU16QjtJQUZELEFENUxFLHdCQzRMc0IsR0Q1THRCLEtBQUssQ0FBUTtNQUVYLFlBQWdCLEVBQVMsQ0FBQztNQUExQixXQUFnQixFQUFTLENBQUMsR0FFN0I7SUN3TEQsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFFBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixJQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFFBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixJQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFFBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsUUFBUSxDQUFNO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixRQUFRLENBQU07TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFFBQVEsQ0FBTTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixJQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFFBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsU0FBUyxDQUFLO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixTQUFTLENBQUs7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFNBQVMsQ0FBSztNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixJQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFFBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsVUFBVSxDQUFJO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixVQUFVLENBQUk7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFVBQVUsQ0FBSTtNSm1EcEIsS0FBYSxFQURpQixHQUFzQixHSWhEL0M7SUNnTEgsQURsTEksd0JDa0xvQixHRGxMcEIsV0FBVyxDQUFHO01KbURwQixLQUFhLEVBRGlCLFNBQXNCLEdJaEQvQztJQ2dMSCxBRGxMSSx3QkNrTG9CLEdEbExwQixXQUFXLENBQUc7TUptRHBCLEtBQWEsRUFEaUIsU0FBc0IsR0loRC9DO0lDZ0xILEFEbExJLHdCQ2tMb0IsR0RsTHBCLFdBQVcsQ0FBRztNSm1EcEIsS0FBYSxFQURpQixJQUFzQixHSWhEL0M7RUNzTEgsQUFBQSx5QkFBeUIsQ0FBTTtJRC9LL0IsWUFBZ0IsRUFBUyxDQUFDO0lBQTFCLFdBQWdCLEVBQVMsQ0FBQyxHQ2lMekI7SUFGRCxBRDVLQSx5QkM0S3lCLEdENUt6QixLQUFLLENBQVE7TUFFWCxhQUFpQixFQUFVLENBQUM7TUFBNUIsWUFBaUIsRUFBVSxDQUFDLEdBRS9COztBQ3NMQyxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxFQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLHFCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxRQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDJCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxTQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDRCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxHQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLHNCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxTQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDRCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxTQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDRCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxHQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLHNCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxTQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDRCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxTQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLDRCQUFDLEdHc04xQjs7QUFORCxBQUFBLGVBQWUsQ0FBWTtFSGhON0IsV0FBb0IsRUFBUSxHQUFDLEdHa04xQjs7QUFFRCxBQUFpQixjQUFILEdBQUcsZUFBZSxDQUFZO0VIcE45QyxXQUFvQixFQUFRLHNCQUFDLEdHc04xQjs7QUFORCxBQUFBLGdCQUFnQixDQUFXO0VIaE43QixXQUFv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 */
