/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/styles/practice.scss ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Practice Player Styles
 */
/**
 * Instrument Visualizer Styles
 *
 * Styles for interactive instrument visualizations (piano, guitar, etc.)
 */
.instrument-visualizer {
  width: 100%;
  padding: 15px;
  padding-top: 50px;
  background: #f8f9fa;
  border-radius: 12px 12px 0 0;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);
  overflow: visible;
}
.instrument-visualizer {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9999;
  max-height: 250px;
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.instrument-visualizer:not(.floating-overlay):not(.compact-mode):not(.instrument-visualizer-piano) {
  transform: translateY(100%);
  opacity: 0;
  pointer-events: none;
}
.instrument-visualizer.collapsed {
  transform: translateY(100%);
  opacity: 0;
  pointer-events: none;
}
.instrument-visualizer[data-size=small] {
  padding: 10px;
  max-height: 160px;
}
.instrument-visualizer[data-size=small] .piano-keyboard {
  max-height: 140px;
}
.instrument-visualizer[data-size=medium] {
  max-height: 250px;
}
.instrument-visualizer[data-size=large] {
  padding: 20px;
  max-height: 350px;
}
.instrument-visualizer[data-size=large] .piano-keyboard {
  max-height: 320px;
}
.instrument-visualizer[data-size=xlarge] {
  padding: 25px;
  max-height: 450px;
}
.instrument-visualizer[data-size=xlarge] .piano-keyboard {
  max-height: 420px;
}
.instrument-visualizer[data-position=sidebar] {
  position: relative;
  max-width: 400px;
  margin-left: 0;
  bottom: auto;
}

.instrument-visualizer-piano .piano-keyboard {
  display: block;
  margin: 0 auto;
  max-width: 100%;
  height: auto;
  user-select: none;
}
.instrument-visualizer-piano .piano-keyboard .piano-key {
  cursor: default;
}
.instrument-visualizer-piano .piano-keyboard .piano-key[style*="cursor: pointer"]:active {
  transform: translateY(2px);
}
.instrument-visualizer-piano .piano-keyboard .white-key {
  stroke: #CCCCCC;
  stroke-width: 1;
}
.instrument-visualizer-piano .piano-keyboard .white-key:hover {
  stroke: #999999;
  stroke-width: 2;
}
.instrument-visualizer-piano .piano-keyboard .black-key {
  stroke: #000000;
  stroke-width: 1;
}
.instrument-visualizer-piano .piano-keyboard .black-key:hover {
  stroke: #333333;
  stroke-width: 1.5;
}
.instrument-visualizer-piano .piano-keyboard .key-label {
  font-size: 10px;
  fill: #999;
  pointer-events: none;
  user-select: none;
}
.instrument-visualizer-piano .piano-keyboard .octave-markers text {
  font-size: 12px;
  font-weight: bold;
  fill: #666;
  user-select: none;
}

.instrument-controls {
  display: flex;
  align-items: center;
  gap: 15px;
  margin-bottom: 15px;
  padding: 10px 15px;
  background: white;
  border-radius: 8px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
.instrument-controls .control-group {
  display: flex;
  align-items: center;
  gap: 8px;
}
.instrument-controls .control-group label {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
  color: #495057;
}
.instrument-controls .control-group button {
  padding: 6px 12px;
  font-size: 0.875rem;
  border-radius: 6px;
  border: 1px solid #ced4da;
  background: white;
  color: #495057;
  cursor: pointer;
  transition: all 0.2s ease;
}
.instrument-controls .control-group button:hover {
  background: #f8f9fa;
  border-color: #adb5bd;
}
.instrument-controls .control-group button.active {
  background: #007ABC;
  border-color: #007ABC;
  color: white;
}
.instrument-controls .control-group button.active:hover {
  background: #0056b3;
  border-color: #0056b3;
}
.instrument-controls .control-group button i {
  margin-right: 4px;
}
.instrument-controls .control-group select {
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid #ced4da;
  background: white;
  color: #495057;
  font-size: 0.875rem;
  cursor: pointer;
  transition: border-color 0.2s ease;
}
.instrument-controls .control-group select:hover {
  border-color: #adb5bd;
}
.instrument-controls .control-group select:focus {
  outline: none;
  border-color: #007ABC;
  box-shadow: 0 0 0 0.2rem rgba(0, 122, 188, 0.25);
}
@media (max-width: 768px) {
  .instrument-controls {
    flex-direction: column;
    align-items: stretch;
  }
  .instrument-controls .control-group {
    justify-content: space-between;
  }
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.instrument-visualizer {
  animation: slideDown 0.3s ease;
}

.instrument-visualizer-guitar {
  position: fixed !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
}
.instrument-visualizer-guitar svg {
  display: block;
  margin: 0 auto;
  max-width: 100%;
  height: auto;
}

.instrument-visualizer-violin {
  position: fixed !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  top: auto !important;
  transform: none !important;
  max-height: 300px !important;
  max-width: 100% !important;
  width: 100% !important;
  border-radius: 12px 12px 0 0 !important;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15) !important;
  z-index: 99 !important;
  padding: 15px !important;
  padding-top: 50px !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
}
.instrument-visualizer-violin svg {
  display: block;
  margin: 0 auto;
}
.instrument-visualizer-violin .finger-position .finger-dot {
  transition: opacity 0.1s ease;
}
.instrument-visualizer-violin .finger-position .finger-text {
  transition: opacity 0.1s ease;
  pointer-events: none;
  user-select: none;
}
.instrument-visualizer-violin .bow-direction-indicator {
  transition: opacity 0.3s ease;
}
.instrument-visualizer-violin .bow-direction-indicator text {
  user-select: none;
}

.instrument-visualizer-saxophone svg {
  display: block;
  margin: 0 auto;
}
.instrument-visualizer-saxophone .key-pad {
  transition: fill 0.15s ease-out, filter 0.15s ease-out;
  cursor: default;
}
.instrument-visualizer-saxophone .key-group:hover .key-pad {
  stroke: #666;
  stroke-width: 2.5;
}

.coming-soon-message {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  padding: 30px;
  text-align: center;
}
.coming-soon-message i {
  font-size: 3rem;
  margin-bottom: 15px;
  opacity: 0.6;
  color: #666;
}
.coming-soon-message h3 {
  font-size: 1.5rem;
  margin-bottom: 10px;
  color: #333;
}
.coming-soon-message p {
  font-size: 1rem;
  opacity: 0.8;
  margin: 0;
  color: #666;
}

.instrument-peek-button {
  position: fixed;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%) translateY(0);
  z-index: 98;
  background: #007ABC;
  border: none;
  border-radius: 25px;
  padding: 10px 20px;
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0, 122, 188, 0.3);
  transition: transform 0.3s ease, opacity 0.3s ease, box-shadow 0.3s ease;
  color: white;
  font-size: 14px;
  font-weight: 500;
}
.instrument-peek-button.hidden {
  transform: translateX(-50%) translateY(100px);
  opacity: 0;
  pointer-events: none;
}
.instrument-peek-button i {
  font-size: 18px;
}
.instrument-peek-button:hover {
  box-shadow: 0 6px 20px rgba(0, 122, 188, 0.5);
  transform: translateX(-50%) translateY(-2px);
}
.instrument-peek-button:active {
  transform: translateX(-50%) translateY(0);
}

@media (prefers-contrast: high) {
  .instrument-visualizer .piano-key {
    stroke-width: 2 !important;
  }
  .instrument-visualizer .white-key {
    stroke: #000000 !important;
  }
  .instrument-visualizer .black-key {
    stroke: #FFFFFF !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  .instrument-visualizer .piano-key {
    transition: none !important;
  }
  .instrument-visualizer {
    animation: none !important;
  }
}

.instrument-visualizer-piano.floating-overlay {
  position: fixed !important;
  bottom: 20px !important;
  left: auto !important;
  right: 20px !important;
  top: auto !important;
  width: auto !important;
  max-width: none !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 32px rgba(0, 122, 188, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
  padding: 12px !important;
  padding-top: 40px !important;
  background: linear-gradient(135deg, #007ABC 0%, #005a8c 100%) !important;
  cursor: move;
  user-select: none;
  z-index: 9999 !important;
}
.instrument-visualizer-piano.floating-overlay::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 32px;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 16px 16px 0 0;
  cursor: move;
}
.instrument-visualizer-piano.floating-overlay[data-size=small] {
  max-height: none !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=small] .piano-keyboard {
  width: 400px !important;
  height: 80px !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=medium] {
  max-height: none !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=medium] .piano-keyboard {
  width: 550px !important;
  height: 110px !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=large] {
  max-height: none !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=large] .piano-keyboard {
  width: 720px !important;
  height: 140px !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=xlarge] {
  max-height: none !important;
}
.instrument-visualizer-piano.floating-overlay[data-size=xlarge] .piano-keyboard {
  width: 900px !important;
  height: 180px !important;
}
.instrument-visualizer-piano.floating-overlay .piano-keyboard {
  display: block !important;
  margin: 0 !important;
}
.instrument-visualizer-piano.floating-overlay.collapsed {
  transform: scale(0.9) !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
@media (max-width: 768px) {
  .instrument-visualizer-piano.floating-overlay {
    bottom: 0 !important;
    right: 0 !important;
    left: 0 !important;
    top: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 12px 12px 0 0 !important;
    padding: 10px !important;
    padding-top: 40px !important;
  }
  .instrument-visualizer-piano.floating-overlay .piano-keyboard {
    width: 100% !important;
    height: auto !important;
    max-height: 100px !important;
  }
}

.floating-visualizer-controls {
  position: absolute;
  top: 6px;
  left: 12px;
  right: 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 10;
}
.floating-visualizer-controls .size-toggle-group {
  display: flex;
  gap: 4px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 8px;
  padding: 4px;
}
.floating-visualizer-controls .size-btn {
  width: 28px;
  height: 24px;
  border: none;
  background: transparent;
  color: rgba(255, 255, 255, 0.6);
  border-radius: 6px;
  cursor: pointer;
  font-size: 11px;
  font-weight: 600;
  transition: all 0.2s;
}
.floating-visualizer-controls .size-btn:hover {
  background: rgba(255, 255, 255, 0.15);
  color: white;
}
.floating-visualizer-controls .size-btn.active {
  background: rgba(255, 255, 255, 0.25);
  color: white;
}
.floating-visualizer-controls .floating-close-btn {
  width: 28px;
  height: 28px;
  border: none;
  background: rgba(220, 53, 69, 0.8);
  color: white;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  transition: all 0.2s;
}
.floating-visualizer-controls .floating-close-btn:hover {
  background: #dc3545;
  transform: scale(1.1);
}

.instrument-visualizer-guitar.compact-mode,
.instrument-visualizer-violin.compact-mode,
.instrument-visualizer-saxophone.compact-mode,
.instrument-visualizer-trumpet.compact-mode,
.instrument-visualizer-flute.compact-mode,
.instrument-visualizer-clarinet.compact-mode {
  position: fixed !important;
  bottom: 20px !important;
  right: 20px !important;
  left: auto !important;
  transform: none !important;
  width: auto !important;
  max-width: 95vw !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 32px rgba(0, 122, 188, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
  padding: 15px 20px !important;
  padding-top: 45px !important;
  background: linear-gradient(135deg, #007ABC 0%, #005a8c 100%) !important;
  cursor: move !important;
  z-index: 9999 !important;
}
.instrument-visualizer-guitar.compact-mode svg,
.instrument-visualizer-violin.compact-mode svg,
.instrument-visualizer-saxophone.compact-mode svg,
.instrument-visualizer-trumpet.compact-mode svg,
.instrument-visualizer-flute.compact-mode svg,
.instrument-visualizer-clarinet.compact-mode svg {
  display: block !important;
  margin: 0 auto !important;
}
.instrument-visualizer-guitar.compact-mode.collapsed,
.instrument-visualizer-violin.compact-mode.collapsed,
.instrument-visualizer-saxophone.compact-mode.collapsed,
.instrument-visualizer-trumpet.compact-mode.collapsed,
.instrument-visualizer-flute.compact-mode.collapsed,
.instrument-visualizer-clarinet.compact-mode.collapsed {
  transform: translateY(100%) !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
@media (max-width: 768px) {
  .instrument-visualizer-guitar.compact-mode,
  .instrument-visualizer-violin.compact-mode,
  .instrument-visualizer-saxophone.compact-mode,
  .instrument-visualizer-trumpet.compact-mode,
  .instrument-visualizer-flute.compact-mode,
  .instrument-visualizer-clarinet.compact-mode {
    bottom: 0 !important;
    right: 0 !important;
    left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 12px 12px 0 0 !important;
    padding: 10px 15px !important;
    padding-top: 40px !important;
  }
}

.instrument-visualizer-guitar.compact-mode {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: visible !important;
}
.instrument-visualizer-guitar.compact-mode svg {
  display: block !important;
  margin: 0 auto !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=small] {
  width: 350px !important;
  max-width: 95vw !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=small] svg {
  width: 100% !important;
  height: auto !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=medium], .instrument-visualizer-guitar.compact-mode:not([data-size]) {
  width: 550px !important;
  max-width: 95vw !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=medium] svg, .instrument-visualizer-guitar.compact-mode:not([data-size]) svg {
  width: 100% !important;
  height: auto !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=large] {
  width: 750px !important;
  max-width: 95vw !important;
}
.instrument-visualizer-guitar.compact-mode[data-size=large] svg {
  width: 100% !important;
  height: auto !important;
}

.instrument-visualizer-violin.compact-mode {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.instrument-visualizer-violin.compact-mode svg {
  display: block !important;
  margin: 0 auto !important;
  width: auto !important;
  height: auto !important;
}
.instrument-visualizer-violin.compact-mode[data-size=small] svg {
  max-width: 320px !important;
  max-height: 200px !important;
}
.instrument-visualizer-violin.compact-mode[data-size=medium] svg, .instrument-visualizer-violin.compact-mode:not([data-size]) svg {
  max-width: 420px !important;
  max-height: 260px !important;
}
.instrument-visualizer-violin.compact-mode[data-size=large] svg {
  max-width: 520px !important;
  max-height: 320px !important;
}

.instrument-visualizer-saxophone.compact-mode {
  position: fixed !important;
  bottom: 20px !important;
  right: 20px !important;
  left: auto !important;
  top: auto !important;
  transform: none !important;
  border-radius: 16px !important;
  box-shadow: 0 8px 32px rgba(0, 122, 188, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
  background: linear-gradient(135deg, #007ABC 0%, #005a8c 100%) !important;
  cursor: move !important;
  z-index: 9999 !important;
  overflow: hidden !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=small] {
  width: 160px !important;
  height: 620px !important;
  padding: 20px !important;
  padding-top: 150px !important;
  padding-bottom: 125px !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=small] svg {
  width: 70px !important;
  height: 120px !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=medium], .instrument-visualizer-saxophone.compact-mode:not([data-size]) {
  width: 190px !important;
  height: 720px !important;
  padding: 25px !important;
  padding-top: 155px !important;
  padding-bottom: 130px !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=medium] svg, .instrument-visualizer-saxophone.compact-mode:not([data-size]) svg {
  width: 85px !important;
  height: 180px !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=large] {
  width: 220px !important;
  height: 820px !important;
  padding: 30px !important;
  padding-top: 160px !important;
  padding-bottom: 135px !important;
}
.instrument-visualizer-saxophone.compact-mode[data-size=large] svg {
  width: 100px !important;
  height: 240px !important;
}
.instrument-visualizer-saxophone.compact-mode svg {
  display: block !important;
  background: white !important;
  border-radius: 8px !important;
  padding: 8px !important;
  box-sizing: content-box !important;
}
@media (max-width: 768px) {
  .instrument-visualizer-saxophone.compact-mode {
    bottom: 10px !important;
    left: 50% !important;
    right: auto !important;
    transform: translateX(-50%) !important;
    border-radius: 16px !important;
  }
  .instrument-visualizer-saxophone.compact-mode, .instrument-visualizer-saxophone.compact-mode[data-size=small], .instrument-visualizer-saxophone.compact-mode[data-size=medium], .instrument-visualizer-saxophone.compact-mode[data-size=large], .instrument-visualizer-saxophone.compact-mode:not([data-size]) {
    width: 150px !important;
    height: 500px !important;
    padding: 15px !important;
    padding-top: 100px !important;
    padding-bottom: 70px !important;
  }
  .instrument-visualizer-saxophone.compact-mode svg, .instrument-visualizer-saxophone.compact-mode[data-size=small] svg, .instrument-visualizer-saxophone.compact-mode[data-size=medium] svg, .instrument-visualizer-saxophone.compact-mode[data-size=large] svg, .instrument-visualizer-saxophone.compact-mode:not([data-size]) svg {
    width: 65px !important;
    height: 100px !important;
  }
}

.instrument-visualizer-trumpet.compact-mode {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.instrument-visualizer-trumpet.compact-mode svg {
  display: block !important;
  margin: 0 auto !important;
  width: auto !important;
  height: auto !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=small] {
  max-width: 400px !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=small] svg {
  max-width: 360px !important;
  max-height: 110px !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=medium], .instrument-visualizer-trumpet.compact-mode:not([data-size]) {
  max-width: 500px !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=medium] svg, .instrument-visualizer-trumpet.compact-mode:not([data-size]) svg {
  max-width: 460px !important;
  max-height: 140px !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=large] {
  max-width: 650px !important;
}
.instrument-visualizer-trumpet.compact-mode[data-size=large] svg {
  max-width: 600px !important;
  max-height: 180px !important;
}

body.instrument-visualizer-visible.visualizer-floating {
  padding-bottom: 0 !important;
}

body.instrument-visualizer-visible.visualizer-compact {
  padding-bottom: 0 !important;
}

body.instrument-visualizer-visible:not(.visualizer-floating):not(.visualizer-compact) {
  padding-bottom: 400px;
}
body.instrument-visualizer-visible:not(.visualizer-floating):not(.visualizer-compact).visualizer-small {
  padding-bottom: 280px;
}
body.instrument-visualizer-visible:not(.visualizer-floating):not(.visualizer-compact).visualizer-large {
  padding-bottom: 500px;
}

@media (max-width: 576px) {
  .instrument-visualizer {
    padding: 10px;
    border-radius: 8px 8px 0 0;
  }
  .instrument-visualizer[data-size=small] {
    padding: 5px;
    max-height: 140px;
  }
  .instrument-visualizer[data-size=large] {
    padding: 15px;
    max-height: 280px;
  }
  .instrument-visualizer-piano .piano-keyboard .key-label {
    font-size: 8px;
  }
  .instrument-visualizer-piano .piano-keyboard .octave-markers text {
    font-size: 10px;
  }
  body.instrument-visualizer-visible {
    padding-bottom: 280px;
  }
  body.instrument-visualizer-visible.visualizer-small {
    padding-bottom: 240px;
  }
  body.instrument-visualizer-visible.visualizer-large {
    padding-bottom: 400px;
  }
}
@media print {
  .instrument-visualizer {
    display: none;
  }
  .instrument-controls {
    display: none;
  }
}
/**
 * Comments & Annotations Styles
 * Styles for teacher comments and student practice annotations
 */
.measure-indicator {
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 10px;
  cursor: pointer;
  z-index: 100;
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
  pointer-events: auto;
  opacity: 0.5;
}
@media (max-width: 768px) {
  .measure-indicator {
    width: 16px;
    height: 16px;
    font-size: 8px;
  }
}
.measure-indicator:hover {
  transform: scale(1.2);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  opacity: 1;
}
.measure-indicator-comment {
  background: #667eea;
}
.measure-indicator-annotation {
  background: #1dd1a1;
}
.measure-indicator.has-pending {
  animation: pulse 2s infinite;
}

#sheetMusicContainer {
  position: relative;
  overflow: hidden;
}

@keyframes pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(240, 147, 251, 0.7);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(240, 147, 251, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(240, 147, 251, 0);
  }
}
.measure-action-menu {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  border-radius: 12px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
  padding: 0;
  z-index: 100000;
  min-width: 280px;
  overflow: hidden;
}
.measure-action-menu-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  background: linear-gradient(135deg, #667eea, #f093fb);
  color: white;
}
.measure-action-menu-header span {
  font-weight: 600;
  font-size: 1.1rem;
}
.measure-action-menu-header .close-menu {
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
  opacity: 0.8;
  transition: opacity 0.2s;
}
.measure-action-menu-header .close-menu:hover {
  opacity: 1;
}
.measure-action-menu-options, .measure-action-menu-existing {
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.measure-action-menu-existing {
  border-top: 1px solid #eee;
  background: #f8f9fa;
}
.measure-action-menu .action-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border: none;
  border-radius: 8px;
  background: #f0f2f5;
  color: #333;
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.2s;
}
.measure-action-menu .action-btn i {
  width: 20px;
  text-align: center;
  color: #667eea;
}
.measure-action-menu .action-btn:hover {
  background: #667eea;
  color: white;
}
.measure-action-menu .action-btn:hover i {
  color: white;
}
.measure-action-menu .action-btn.add-comment-btn i {
  color: #667eea;
}
.measure-action-menu .action-btn.add-annotation-btn i {
  color: #1dd1a1;
}

.comments-panel {
  position: fixed;
  top: 0;
  right: -400px;
  width: 400px;
  max-width: 100vw;
  height: 100vh;
  background: white;
  box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
  z-index: 9999;
  display: flex;
  flex-direction: column;
  transition: right 0.3s ease;
  touch-action: pan-y;
  overscroll-behavior: contain;
}
.comments-panel.open {
  right: 0;
}
.comments-panel .panel-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px;
  background: linear-gradient(135deg, #667eea, #f093fb);
  color: white;
  flex-shrink: 0;
  touch-action: none;
}
.comments-panel .panel-header h5 {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 600;
}
.comments-panel .panel-header .close-panel {
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
  opacity: 0.8;
  transition: opacity 0.2s;
}
.comments-panel .panel-header .close-panel:hover {
  opacity: 1;
}
.comments-panel .panel-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  min-height: 0;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.comments-panel .panel-footer {
  flex-shrink: 0;
  padding: 16px 20px;
  border-top: 1px solid #eee;
  background: white;
  touch-action: none;
}
@media (max-width: 768px) {
  .comments-panel .panel-footer {
    padding-bottom: 50px;
  }
}
.comments-panel .panel-footer .panel-actions {
  display: flex;
  gap: 12px;
  padding: 0;
  border-top: none;
}
.comments-panel .panel-footer .panel-actions .btn {
  flex: 1;
}
.comments-panel .panel-subtitle {
  font-size: 0.9rem;
  color: #666;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid #eee;
}
.comments-panel .panel-actions {
  padding: 16px 20px;
  border-top: 1px solid #eee;
  display: flex;
  gap: 12px;
}
.comments-panel .panel-actions .btn {
  flex: 1;
}

.comments-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.comment-item {
  background: #f8f9fa;
  border-radius: 12px;
  padding: 16px;
  transition: all 0.2s;
}
.comment-item.resolved {
  opacity: 0.7;
  background: #e8f5e9;
}
.comment-item.resolved .comment-content {
  text-decoration: line-through;
}
.comment-item .comment-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 12px;
  flex-wrap: wrap;
  gap: 8px;
}
.comment-item .comment-author {
  display: flex;
  align-items: center;
  gap: 8px;
}
.comment-item .comment-author img, .comment-item .comment-author .author-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
}
.comment-item .comment-author .author-avatar {
  background: #667eea;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
}
.comment-item .comment-author .author-name {
  font-weight: 600;
  color: #333;
}
.comment-item .comment-author .author-role {
  font-size: 0.75rem;
  padding: 2px 8px;
  border-radius: 12px;
  background: #e0e0e0;
  color: #666;
}
.comment-item .comment-author .author-role.badge-teacher {
  background: #667eea;
  color: white;
}
.comment-item .comment-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.85rem;
  color: #888;
}
.comment-item .comment-meta .comment-type i {
  margin-right: 4px;
}
.comment-item .comment-measure {
  font-size: 0.85rem;
  color: #667eea;
  margin-bottom: 8px;
}
.comment-item .comment-measure i {
  margin-right: 4px;
}
.comment-item .comment-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.comment-item .comment-tags .tag {
  font-size: 0.75rem;
  padding: 3px 10px;
  border-radius: 12px;
  background: rgba(240, 147, 251, 0.2);
  color: rgb(226.3392857143, 48.6428571429, 247.3571428571);
  font-weight: 500;
}
.comment-item .comment-tags .tag[data-tag=rhythm], .comment-item .comment-tags .tag:contains("rhythm") {
  background: rgba(231, 76, 60, 0.15);
  color: #c0392b;
}
.comment-item .comment-tags .tag[data-tag=pitch], .comment-item .comment-tags .tag:contains("pitch") {
  background: rgba(52, 152, 219, 0.15);
  color: #2980b9;
}
.comment-item .comment-tags .tag[data-tag=dynamics], .comment-item .comment-tags .tag:contains("dynamics") {
  background: rgba(155, 89, 182, 0.15);
  color: #8e44ad;
}
.comment-item .comment-tags .tag[data-tag=technique], .comment-item .comment-tags .tag:contains("technique") {
  background: rgba(243, 156, 18, 0.15);
  color: #d68910;
}
.comment-item .comment-tags .tag[data-tag=articulation], .comment-item .comment-tags .tag:contains("articulation") {
  background: rgba(26, 188, 156, 0.15);
  color: #16a085;
}
.comment-item .comment-tags .tag[data-tag=tempo], .comment-item .comment-tags .tag:contains("tempo") {
  background: rgba(230, 126, 34, 0.15);
  color: #d35400;
}
.comment-item .comment-content {
  color: #333;
  line-height: 1.5;
  white-space: pre-wrap;
}
.comment-item .comment-actions {
  margin-top: 12px;
  display: flex;
  gap: 8px;
}
.comment-item .comment-actions .btn-sm {
  padding: 4px 12px;
  font-size: 0.8rem;
  border-radius: 6px;
  background: #e0e0e0;
  border: none;
  color: #666;
  cursor: pointer;
  transition: all 0.2s;
}
.comment-item .comment-actions .btn-sm:hover {
  background: #667eea;
  color: white;
}
.comment-item .comment-actions .btn-sm.btn-success {
  background: #4caf50;
  color: white;
}
.comment-item .comment-replies {
  margin-top: 16px;
  padding-left: 20px;
  border-left: 2px solid #e0e0e0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.comment-item .comment-replies .comment-item {
  background: white;
  padding: 12px;
}

.annotations-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.annotation-item {
  background: white;
  border-radius: 12px;
  padding: 16px;
  border-left: 4px solid #1dd1a1;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  transition: all 0.2s;
}
.annotation-item:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.annotation-item .annotation-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  flex-wrap: wrap;
  gap: 8px;
}
.annotation-item .annotation-type {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 0.8rem;
  color: white;
}
.annotation-item .annotation-measure {
  font-size: 0.85rem;
  color: #888;
}
.annotation-item .annotation-measure i {
  margin-right: 4px;
}
.annotation-item .annotation-content {
  color: #333;
  line-height: 1.5;
  white-space: pre-wrap;
}
.annotation-item .annotation-actions {
  margin-top: 12px;
  display: flex;
  gap: 8px;
}
.annotation-item .annotation-actions .btn-sm {
  padding: 4px 12px;
  font-size: 0.8rem;
  border-radius: 6px;
  background: #e0e0e0;
  border: none;
  color: #666;
  cursor: pointer;
  transition: all 0.2s;
}
.annotation-item .annotation-actions .btn-sm:hover {
  background: #333;
  color: white;
}
.annotation-item .annotation-actions .btn-sm.btn-danger:hover {
  background: #ff6b6b;
}

.empty-state {
  text-align: center;
  padding: 40px 20px;
  color: #888;
}
.empty-state i {
  font-size: 3rem;
  margin-bottom: 16px;
  opacity: 0.5;
}
.empty-state p {
  margin: 0;
}

.comments-modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 100001;
  display: flex;
  align-items: center;
  justify-content: center;
}
.comments-modal .modal-backdrop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(2px);
  z-index: 1;
}
.comments-modal .modal-dialog {
  position: relative;
  background: white;
  border-radius: 16px;
  width: 90%;
  max-width: 500px;
  max-height: 90vh;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  animation: modalSlideIn 0.3s ease;
  z-index: 2;
}
.comments-modal .modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  background: linear-gradient(135deg, #667eea, #f093fb);
  color: white;
}
.comments-modal .modal-header h5 {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 600;
}
.comments-modal .modal-header .close-modal {
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
  opacity: 0.8;
  transition: opacity 0.2s;
}
.comments-modal .modal-header .close-modal:hover {
  opacity: 1;
}
.comments-modal .modal-body {
  padding: 24px;
  overflow-y: auto;
  max-height: calc(90vh - 70px);
}

@keyframes modalSlideIn {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.comment-form .form-group, .annotation-form .form-group {
  margin-bottom: 20px;
}
.comment-form .form-group label, .annotation-form .form-group label {
  display: block;
  font-weight: 600;
  color: #333;
  margin-bottom: 8px;
}
.comment-form .form-control, .annotation-form .form-control {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid #e0e0e0;
  border-radius: 8px;
  font-size: 1rem;
  transition: border-color 0.2s;
}
.comment-form .form-control:focus, .annotation-form .form-control:focus {
  outline: none;
  border-color: #667eea;
}
.comment-form textarea.form-control, .annotation-form textarea.form-control {
  resize: vertical;
  min-height: 100px;
}
.comment-form select.form-control, .annotation-form select.form-control {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 viewBox=%270 0 12 12%27%3E%3Cpath fill=%27%23666%27 d=%27M6 8L1 3h10z%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
}
.comment-form .form-control-color, .annotation-form .form-control-color {
  width: 60px;
  height: 40px;
  padding: 4px;
  border: 2px solid #e0e0e0;
  border-radius: 8px;
  cursor: pointer;
}
.comment-form .form-actions, .annotation-form .form-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #eee;
}

.annotation-type-selector {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

.annotation-type-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px;
  border: 2px solid #e0e0e0;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s;
}
.annotation-type-option input {
  display: none;
}
.annotation-type-option .type-badge {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
}
.annotation-type-option .type-label {
  font-size: 0.9rem;
  color: #333;
}
.annotation-type-option:hover {
  border-color: #bbb;
}
.annotation-type-option.selected {
  border-color: #667eea;
  background: rgba(102, 126, 234, 0.05);
}

.tag-checkboxes {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.tag-checkbox {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}
.tag-checkbox input {
  display: none;
}
.tag-checkbox input:checked + .tag-label {
  background: #667eea;
  color: white;
}
.tag-checkbox .tag-label {
  padding: 6px 12px;
  border-radius: 16px;
  background: #e0e0e0;
  color: #666;
  font-size: 0.85rem;
  transition: all 0.2s;
}

.btn {
  padding: 10px 20px;
  border-radius: 8px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  border: none;
  font-size: 0.95rem;
}
.btn-primary {
  background: #667eea;
  color: white;
}
.btn-primary:hover {
  background: rgb(57.1551724138, 88.1896551724, 227.8448275862);
}
.btn-secondary {
  background: #e0e0e0;
  color: #333;
}
.btn-secondary:hover {
  background: #d0d0d0;
}
.btn-danger {
  background: #ff6b6b;
  color: white;
}
.btn-danger:hover {
  background: #ff3838;
}
.btn i {
  margin-right: 6px;
}

.toast {
  position: fixed;
  bottom: 20px;
  right: 20px;
  padding: 12px 20px;
  border-radius: 8px;
  color: white;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  z-index: 100002;
  display: flex;
  align-items: center;
  gap: 8px;
}
.toast-success {
  background: #1dd1a1;
}
.toast-error {
  background: #ff6b6b;
}

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateX(20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
@keyframes slideOut {
  from {
    opacity: 1;
    transform: translateX(0);
  }
  to {
    opacity: 0;
    transform: translateX(20px);
  }
}
@media (max-width: 768px) {
  .comments-panel {
    width: 100%;
    right: -100%;
  }
  .annotation-type-selector {
    grid-template-columns: 1fr;
  }
  .measure-action-menu {
    width: 90%;
    left: 5%;
    transform: translate(0, -50%);
  }
}
.mobile-comments-fab {
  position: fixed;
  bottom: 100px;
  right: 8px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: linear-gradient(135deg, #667eea, #f093fb);
  color: white;
  border: none;
  box-shadow: 0 2px 8px rgba(102, 126, 234, 0.4);
  cursor: pointer;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.mobile-comments-fab i {
  font-size: 14px;
}
.mobile-comments-fab:hover, .mobile-comments-fab:active {
  transform: scale(1.1);
  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.5);
}
.mobile-comments-fab .comments-badge {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 16px;
  height: 16px;
  border-radius: 8px;
  background: #ff6b6b;
  color: white;
  font-size: 9px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
@media (min-width: 769px) {
  .mobile-comments-fab {
    bottom: 20px;
    width: 48px;
    height: 48px;
    opacity: 0.8;
  }
  .mobile-comments-fab:hover {
    opacity: 1;
  }
  .mobile-comments-fab i {
    font-size: 18px;
  }
}

.mobile-comments-sheet {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100000;
  pointer-events: none;
}
.mobile-comments-sheet.open {
  pointer-events: auto;
}
.mobile-comments-sheet.open .sheet-overlay {
  opacity: 1;
}
.mobile-comments-sheet.open .sheet-content {
  transform: translateY(0);
}
.mobile-comments-sheet .sheet-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.mobile-comments-sheet .sheet-content {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  max-height: 80vh;
  background: white;
  border-radius: 16px 16px 0 0;
  transform: translateY(100%);
  transition: transform 0.3s ease;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  touch-action: pan-y;
  overscroll-behavior: contain;
}
.mobile-comments-sheet .sheet-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  background: linear-gradient(135deg, #667eea, #f093fb);
  color: white;
  flex-shrink: 0;
  touch-action: none;
}
.mobile-comments-sheet .sheet-header h3 {
  margin: 0;
  font-size: 1.1rem;
  display: flex;
  align-items: center;
  gap: 10px;
}
.mobile-comments-sheet .sheet-header .sheet-close {
  background: none;
  border: none;
  color: white;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  opacity: 0.8;
}
.mobile-comments-sheet .sheet-header .sheet-close:hover {
  opacity: 1;
}
.mobile-comments-sheet .sheet-tabs {
  display: flex;
  border-bottom: 1px solid #e9ecef;
  background: #f8f9fa;
}
.mobile-comments-sheet .sheet-tab {
  flex: 1;
  padding: 12px 16px;
  background: none;
  border: none;
  font-size: 0.9rem;
  color: #6c757d;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
}
.mobile-comments-sheet .sheet-tab.active {
  color: #667eea;
  border-bottom-color: #667eea;
  font-weight: 500;
}
.mobile-comments-sheet .sheet-body {
  flex: 1;
  overflow-y: auto;
  padding: 0;
  max-height: 60vh;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.mobile-comments-sheet .sheet-tab-content {
  display: none;
  padding: 16px;
}
.mobile-comments-sheet .sheet-tab-content.active {
  display: block;
}
.mobile-comments-sheet .empty-state {
  text-align: center;
  padding: 40px 20px;
  color: #6c757d;
}
.mobile-comments-sheet .empty-state i {
  font-size: 48px;
  margin-bottom: 16px;
  opacity: 0.3;
}
.mobile-comments-sheet .empty-state p {
  margin: 0 0 8px;
}
.mobile-comments-sheet .empty-state .hint {
  font-size: 0.85rem;
  opacity: 0.7;
}
.mobile-comments-sheet .measure-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mobile-comments-sheet .measure-list-item {
  display: flex;
  align-items: center;
  padding: 12px 16px;
  background: #f8f9fa;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s ease;
}
.mobile-comments-sheet .measure-list-item:hover, .mobile-comments-sheet .measure-list-item:active {
  background: #e9ecef;
}
.mobile-comments-sheet .measure-list-item .measure-number {
  font-weight: 500;
  flex: 1;
}
.mobile-comments-sheet .measure-list-item .measure-badges {
  display: flex;
  gap: 6px;
  margin-right: 12px;
}
.mobile-comments-sheet .measure-list-item .item-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 0.75rem;
  color: white;
}
.mobile-comments-sheet .measure-list-item .item-badge.comment-badge {
  background: #667eea;
}
.mobile-comments-sheet .measure-list-item .item-badge.note-badge {
  padding: 4px 6px;
}
.mobile-comments-sheet .measure-list-item > i {
  color: #adb5bd;
  font-size: 12px;
}
.mobile-comments-sheet .all-comments-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.mobile-comments-sheet .comment-list-item {
  padding: 12px;
  background: #f8f9fa;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s ease;
}
.mobile-comments-sheet .comment-list-item:hover, .mobile-comments-sheet .comment-list-item:active {
  background: #e9ecef;
}
.mobile-comments-sheet .comment-list-item .comment-item-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 0.8rem;
}
.mobile-comments-sheet .comment-list-item .comment-item-header .comment-measure {
  background: #667eea;
  color: white;
  padding: 2px 8px;
  border-radius: 4px;
  font-weight: 600;
}
.mobile-comments-sheet .comment-list-item .comment-item-header .comment-author {
  font-weight: 500;
  color: #495057;
}
.mobile-comments-sheet .comment-list-item .comment-item-header .comment-time {
  color: #adb5bd;
  margin-left: auto;
}
.mobile-comments-sheet .comment-list-item .comment-item-content {
  font-size: 0.9rem;
  color: #495057;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.mobile-comments-sheet .comment-list-item .comment-replies-count {
  margin-top: 8px;
  font-size: 0.8rem;
  color: #6c757d;
  display: flex;
  align-items: center;
  gap: 4px;
}
.mobile-comments-sheet .comment-list-item .comment-replies-count i {
  font-size: 10px;
}
.mobile-comments-sheet .add-comment-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.mobile-comments-sheet .add-comment-form label {
  font-weight: 500;
  margin-bottom: 4px;
}
.mobile-comments-sheet .add-comment-form select {
  width: 100%;
  padding: 12px;
  border: 1px solid #dee2e6;
  border-radius: 8px;
  font-size: 1rem;
  background: white;
}
.mobile-comments-sheet .add-comment-form .form-actions {
  display: flex;
  gap: 12px;
}
.mobile-comments-sheet .add-comment-form .form-actions .btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 16px;
  border-radius: 8px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}
.mobile-comments-sheet .add-comment-form .form-actions .btn-primary {
  background: #667eea;
  color: white;
  border: none;
}
.mobile-comments-sheet .add-comment-form .form-actions .btn-primary:hover {
  background: rgb(57.1551724138, 88.1896551724, 227.8448275862);
}
.mobile-comments-sheet .add-comment-form .form-actions .btn-secondary {
  background: white;
  color: #495057;
  border: 1px solid #dee2e6;
}
.mobile-comments-sheet .add-comment-form .form-actions .btn-secondary:hover {
  background: #f8f9fa;
}

/* Metronome beat visualizer - glow effects */
@keyframes metronome-glow-downbeat {
  0% {
    box-shadow: 0 0 0 rgba(139, 69, 19, 0);
    background-color: transparent;
  }
  50% {
    box-shadow: 0 0 20px rgba(139, 69, 19, 0.8), 0 0 30px rgba(139, 69, 19, 0.6);
    background-color: rgba(139, 69, 19, 0.3);
  }
  100% {
    box-shadow: 0 0 0 rgba(139, 69, 19, 0);
    background-color: transparent;
  }
}
@keyframes metronome-glow-beat {
  0% {
    box-shadow: 0 0 0 rgba(0, 123, 255, 0);
    background-color: transparent;
  }
  50% {
    box-shadow: 0 0 20px rgba(0, 123, 255, 0.8), 0 0 30px rgba(0, 123, 255, 0.6);
    background-color: rgba(0, 123, 255, 0.3);
  }
  100% {
    box-shadow: 0 0 0 rgba(0, 123, 255, 0);
    background-color: transparent;
  }
}
/* Apply glow animation to metronome buttons */
.metronome-downbeat-glow {
  animation: metronome-glow-downbeat 0.4s ease-out;
}

.metronome-beat-glow {
  animation: metronome-glow-beat 0.4s ease-out;
}

.practice-container {
  /* Removed all layout properties to let Bootstrap grid work naturally */
}

.sheet-music-section {
  flex: 1;
  overflow: auto;
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 1rem;
  background: #fff;
  position: relative;
}

#loadingIndicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  font-size: 1.2rem;
  color: #666;
}

.controls-panel {
  margin-top: 1rem;
  padding: 1rem;
  background: #f8f9fa;
  border-radius: 4px;
  border: 1px solid #dee2e6;
}

.control-groups-container {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.time-display-inline,
.measure-display-inline {
  display: flex;
  align-items: center;
  padding: 0.4rem 0.75rem;
  background: #f8f9fa;
  border-radius: 6px;
  border: 1px solid #dee2e6;
  white-space: nowrap;
}
@media (max-width: 576px) {
  .time-display-inline,
  .measure-display-inline {
    padding: 0.3rem 0.5rem;
    font-size: 0.85rem;
  }
}

.control-groups-container > .btn {
  padding: 0.5rem 1rem;
  font-weight: 500;
  border-radius: 6px;
}
@media (max-width: 768px) {
  .control-groups-container > .btn .btn-text {
    display: none;
  }
}
@media (max-width: 576px) {
  .control-groups-container > .btn {
    padding: 0.5rem 0.75rem;
  }
}

.control-group-wrapper {
  position: relative;
}
.control-group-wrapper.feature-locked .control-group-btn {
  opacity: 0.6;
  cursor: not-allowed;
}

.control-group-btn {
  display: flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.4rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  border: 1px solid #dee2e6;
  border-radius: 6px;
  background: white;
  color: #495057;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
}
.control-group-btn.btn-primary {
  background: #007bff;
  border-color: #007bff;
  color: white;
}
.control-group-btn.btn-primary:hover:not(:disabled) {
  background: #0056b3;
  border-color: #0056b3;
}
.control-group-btn.btn-success {
  background: #28a745;
  border-color: #28a745;
  color: white;
}
.control-group-btn.btn-success:hover:not(:disabled) {
  background: #1e7e34;
  border-color: #1e7e34;
}
.control-group-btn.btn-outline-secondary {
  background: white;
  border-color: #dee2e6;
  color: #495057;
}
.control-group-btn.btn-outline-secondary:hover:not(:disabled) {
  background: #f8f9fa;
  border-color: #adb5bd;
}
.control-group-btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.control-group-btn.active, .control-group-btn[aria-expanded=true] {
  background: #f8f9fa;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.control-group-btn.active .dropdown-arrow, .control-group-btn[aria-expanded=true] .dropdown-arrow {
  transform: rotate(180deg);
}
@media (max-width: 768px) {
  .control-group-btn .btn-text {
    display: none;
  }
}
.control-group-btn .dropdown-arrow {
  font-size: 0.7rem;
  transition: transform 0.2s ease;
  opacity: 0.7;
}
@media (max-width: 768px) {
  .control-group-btn .dropdown-arrow {
    display: none;
  }
}
.control-group-btn .lock-icon-inline {
  font-size: 0.7rem;
  opacity: 0.7;
}
.control-group-btn .badge {
  font-size: 0.7rem;
  padding: 0.15rem 0.4rem;
  font-weight: 600;
}

.control-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 1000;
  background: white;
  border: 1px solid #dee2e6;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  min-width: 220px;
  max-width: 300px;
  display: none;
  animation: dropdownSlideIn 0.2s ease;
}
.control-dropdown.show {
  display: block;
}
.control-dropdown.dropdown-right {
  left: auto;
  right: 0;
}

@keyframes dropdownSlideIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.control-dropdown-content {
  padding: 0.75rem;
}
.control-dropdown-content .form-label {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #6c757d;
  font-weight: 600;
}
.control-dropdown-content .btn {
  font-size: 0.875rem;
}
.control-dropdown-content small {
  font-size: 0.75rem;
}

.hands-mode-buttons .btn {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  padding: 0.5rem 0.75rem;
  margin-bottom: 0.25rem;
  border-radius: 6px !important;
}
.hands-mode-buttons .btn:last-child {
  margin-bottom: 0;
}
.hands-mode-buttons .btn.active {
  background-color: #e9ecef;
  border-color: #007bff;
  color: #007bff;
  font-weight: 600;
}
.hands-mode-buttons .btn small {
  font-size: 0.7rem;
  opacity: 0.7;
}

.tempo-trainer-section .form-check-input:checked {
  background-color: #6f42c1;
  border-color: #6f42c1;
}
.tempo-trainer-section .tempo-trainer-status {
  padding: 0.5rem;
  background: #f8f9fa;
  border-radius: 4px;
  text-align: center;
}
.tempo-trainer-section .tempo-trainer-status i {
  color: #6f42c1;
}

.metronome-subdivision-buttons .btn {
  font-size: 0.9rem;
  padding: 0.4rem 0.6rem;
}
.metronome-subdivision-buttons .btn.btn-check:checked + .metronome-subdivision-buttons .btn {
  background-color: #007bff;
  color: white;
  border-color: #007bff;
}
.metronome-subdivision-buttons .btn-check:checked + .btn-outline-secondary {
  background-color: #007bff;
  color: white;
  border-color: #007bff;
}

.control-group {
  margin-bottom: 1rem;
}
.control-group:last-child {
  margin-bottom: 0;
}
.control-group label {
  display: block;
  font-weight: 600;
  margin-bottom: 0.5rem;
  font-size: 0.9rem;
}

.playback-controls {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.playback-controls button {
  padding: 0.5rem 1rem;
  border: 1px solid #007bff;
  background: #007bff;
  color: white;
  border-radius: 4px;
  cursor: pointer;
  font-size: 1rem;
}
.playback-controls button:hover:not(:disabled) {
  background: #0056b3;
}
.playback-controls button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.playback-controls button.btn-secondary {
  background: #6c757d;
  border-color: #6c757d;
}
.playback-controls button.btn-secondary:hover:not(:disabled) {
  background: #545b62;
}

.tempo-controls,
.volume-controls,
.transpose-controls {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.tempo-controls input[type=range],
.volume-controls input[type=range],
.transpose-controls input[type=range] {
  flex: 1;
  max-width: 300px;
}
.tempo-controls .value-display,
.volume-controls .value-display,
.transpose-controls .value-display {
  min-width: 50px;
  font-weight: 600;
  font-size: 1rem;
}
.tempo-controls button,
.volume-controls button,
.transpose-controls button {
  padding: 0.25rem 0.75rem;
  border: 1px solid #6c757d;
  background: #6c757d;
  color: white;
  border-radius: 4px;
  cursor: pointer;
}
.tempo-controls button:hover,
.volume-controls button:hover,
.transpose-controls button:hover {
  background: #545b62;
}

.loop-controls {
  display: flex;
  gap: 1rem;
  align-items: center;
}
.loop-controls input[type=number] {
  width: 80px;
  padding: 0.375rem 0.75rem;
  border: 1px solid #ced4da;
  border-radius: 4px;
}
.loop-controls input[type=number]:disabled {
  background: #e9ecef;
}
.loop-controls label {
  display: inline-block;
  margin: 0 0.5rem 0 0;
  font-weight: normal;
}

.progress-bar {
  width: 100%;
  height: 8px;
  background: #e9ecef;
  border-radius: 4px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.progress-bar .progress-fill {
  height: 100%;
  background: #007bff;
  transition: width 0.1s linear;
  border-radius: 4px;
}

.time-display {
  display: flex;
  justify-content: space-between;
  margin-top: 0.25rem;
  font-size: 0.85rem;
  color: #6c757d;
}

.session-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.75rem;
  background: #fff;
  border: 1px solid #dee2e6;
  border-radius: 4px;
  margin-bottom: 1rem;
}
.session-info .info-item {
  display: flex;
  flex-direction: column;
}
.session-info .info-item label {
  font-size: 0.75rem;
  color: #6c757d;
  text-transform: uppercase;
  margin-bottom: 0.25rem;
}
.session-info .info-item .value {
  font-size: 1.1rem;
  font-weight: 600;
}

.save-status {
  padding: 0.5rem 1rem;
  border-radius: 4px;
  font-size: 0.85rem;
  text-align: center;
}
.save-status.saving {
  background: #fff3cd;
  color: #856404;
}
.save-status.saved {
  background: #d4edda;
  color: #155724;
}
.save-status.error {
  background: #f8d7da;
  color: #721c24;
}

.zoom-controls {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}
.zoom-controls button {
  padding: 0.25rem 0.75rem;
  border: 1px solid #6c757d;
  background: #6c757d;
  color: white;
  border-radius: 4px;
  cursor: pointer;
}
.zoom-controls button:hover {
  background: #545b62;
}
.zoom-controls .zoom-value {
  min-width: 50px;
  text-align: center;
  font-weight: 600;
}

.help-modal {
  display: none;
  position: fixed;
  z-index: 1000;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
}
.help-modal .modal-content {
  background: white;
  margin: 10% auto;
  padding: 2rem;
  border-radius: 8px;
  max-width: 600px;
  position: relative;
}
.help-modal .modal-content .close {
  position: absolute;
  right: 1rem;
  top: 1rem;
  font-size: 2rem;
  cursor: pointer;
  color: #aaa;
}
.help-modal .modal-content .close:hover {
  color: #000;
}
.help-modal .modal-content h3 {
  margin-top: 0;
  margin-bottom: 1rem;
}
.help-modal .modal-content .shortcuts-list {
  list-style: none;
  padding: 0;
}
.help-modal .modal-content .shortcuts-list li {
  display: flex;
  justify-content: space-between;
  padding: 0.5rem 0;
  border-bottom: 1px solid #e9ecef;
}
.help-modal .modal-content .shortcuts-list li:last-child {
  border-bottom: none;
}
.help-modal .modal-content .shortcuts-list li kbd {
  background: #f8f9fa;
  border: 1px solid #ced4da;
  border-radius: 3px;
  padding: 0.2rem 0.5rem;
  font-family: monospace;
  font-size: 0.9rem;
}

.muted {
  background: #dc3545 !important;
  border-color: #dc3545 !important;
}
.muted:hover {
  background: #c82333 !important;
}

.pitch-feedback-panel {
  padding: 0.5rem 0.75rem;
  background: #f8f9fa;
  border-radius: 4px;
  border: 1px solid #dee2e6;
}

.pitch-feedback-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: nowrap;
}

.pitch-status-compact {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.3rem 0.6rem;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  min-width: 100px;
}
.pitch-status-compact .status-icon {
  font-size: 1.1rem;
}
.pitch-status-compact.waiting {
  background: #e7f1ff;
  color: #004085;
}
.pitch-status-compact.correct {
  background: #d4edda;
  color: #155724;
}
.pitch-status-compact.wrong-note {
  background: #f8d7da;
  color: #721c24;
}
.pitch-status-compact.out-of-tune {
  background: #fff3cd;
  color: #856404;
}
.pitch-status-compact.completed {
  background: #d1ecf1;
  color: #0c5460;
}
.pitch-status-compact.transitioning {
  background: #e0e7ff;
  color: #3730a3;
}
.pitch-status-compact.waiting-silence {
  background: #fef3c7;
  color: #92400e;
}

.pitch-note-display {
  display: flex;
  align-items: center;
  gap: 0.3rem;
}
.pitch-note-display .note-label {
  font-size: 0.65rem;
  color: #6c757d;
  font-weight: 600;
}
.pitch-note-display .note-value {
  font-size: 1.2rem;
  font-weight: 700;
  min-width: 45px;
  text-align: center;
}
.pitch-note-display .note-value.correct {
  color: #28a745;
}
.pitch-note-display .note-value.out-of-tune {
  color: #ffc107;
}
.pitch-note-display .note-value.wrong {
  color: #dc3545;
}

.pitch-meter-compact {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex: 1;
  min-width: 120px;
}
.pitch-meter-compact .pitch-meter-track {
  position: relative;
  height: 8px;
  flex: 1;
  background: linear-gradient(to right, #dc3545 0%, #ffc107 25%, #28a745 45%, #28a745 55%, #ffc107 75%, #dc3545 100%);
  border-radius: 4px;
}
.pitch-meter-compact .pitch-meter-track .pitch-meter-center-line {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 2px;
  background: #333;
}
.pitch-meter-compact .pitch-meter-track .pitch-meter-indicator {
  position: absolute;
  top: -2px;
  width: 4px;
  height: 12px;
  background: #333;
  border-radius: 2px;
  transform: translateX(-50%);
  transition: left 0.1s ease;
}
.pitch-meter-compact .cents-value {
  font-size: 0.75rem;
  font-weight: 600;
  min-width: 40px;
  text-align: center;
}
.pitch-meter-compact .cents-value.correct {
  color: #28a745;
}
.pitch-meter-compact .cents-value.out-of-tune {
  color: #ffc107;
}
.pitch-meter-compact .cents-value.wrong {
  color: #dc3545;
}

.hold-progress-compact {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-width: 80px;
}
.hold-progress-compact .hold-timer-track {
  height: 6px;
  width: 50px;
  background: #e9ecef;
  border-radius: 3px;
  overflow: hidden;
}
.hold-progress-compact .hold-timer-track .hold-timer-fill {
  height: 100%;
  background: #667eea;
  transition: width 0.1s linear;
  border-radius: 3px;
}
.hold-progress-compact .hold-timer-text {
  font-size: 0.7rem;
  color: #6c757d;
  font-weight: 500;
  min-width: 30px;
}

@media (max-width: 768px) {
  .practice-container {
    padding: 0.5rem;
  }
  .controls-panel {
    padding: 0.75rem;
  }
  .session-info {
    flex-wrap: wrap;
  }
  .session-info .info-item {
    flex: 1 1 45%;
    margin-bottom: 0.5rem;
  }
  .tempo-controls,
  .volume-controls {
    flex-wrap: wrap;
  }
  .tempo-controls input[type=range],
  .volume-controls input[type=range] {
    flex: 1 1 100%;
  }
  .pitch-feedback-row {
    gap: 0.5rem;
    font-size: 0.85rem;
  }
  .pitch-note-display .note-value {
    font-size: 1rem;
    min-width: 35px;
  }
  .pitch-meter-compact {
    min-width: 80px;
  }
  #loopDropdown {
    display: none !important;
  }
}
/* Practice Plan Step Navigation */
.plan-step-item {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  border-radius: 6px;
  transition: all 0.2s ease;
}
.plan-step-item.clickable {
  cursor: pointer;
}
.plan-step-item.clickable:hover {
  background-color: rgba(0, 123, 255, 0.05);
}
.plan-step-item.clickable:hover .jump-to-step-btn {
  opacity: 1;
}
.plan-step-item.current {
  background-color: rgba(0, 123, 255, 0.1);
  border-left: 3px solid #007bff;
}
.plan-step-item.completed {
  opacity: 0.7;
}

.jump-to-step-btn {
  margin-left: auto;
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
  opacity: 0.6;
  transition: all 0.2s ease;
  white-space: nowrap;
}
.jump-to-step-btn:hover {
  opacity: 1;
  transform: translateX(2px);
}
.jump-to-step-btn i {
  font-size: 0.875rem;
}

.plan-step-status {
  font-size: 1.2rem;
  min-width: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.plan-step-info {
  flex: 1;
}

.plan-step-name {
  font-size: 0.9rem;
  margin-bottom: 0.25rem;
}

.plan-step-details {
  font-size: 0.8rem;
  color: #6c757d;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJhY3RpY2UuY3NzIiwibWFwcGluZ3MiOiI7OztBQUFBOztFQUFBO0FDQUE7Ozs7RUFBQTtBQU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QURHSjtBQ1ZBO0VBZUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QURGSjtBQ01JO0VBQ0k7RUFDQTtFQUNBO0FESlI7QUNPSTtFQUNJO0VBQ0E7RUFDQTtBRExSO0FDU0k7RUFDSTtFQUNBO0FEUFI7QUNTUTtFQUNJO0FEUFo7QUNXSTtFQUNJO0FEVFI7QUNZSTtFQUNJO0VBQ0E7QURWUjtBQ1lRO0VBQ0k7QURWWjtBQ2NJO0VBQ0k7RUFDQTtBRFpSO0FDY1E7RUFDSTtBRFpaO0FDcUJJO0VBRUk7RUFDQTtFQUNBO0VBQ0E7QURwQlI7O0FDMEJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRHZCUjtBQzBCUTtFQUNJO0FEeEJaO0FDZ0NnQjtFQUNJO0FEOUJwQjtBQ29DUTtFQUNJO0VBQ0E7QURsQ1o7QUNvQ1k7RUFDSTtFQUNBO0FEbENoQjtBQ3VDUTtFQUNJO0VBQ0E7QURyQ1o7QUN1Q1k7RUFDSTtFQUNBO0FEckNoQjtBQzBDUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FEeENaO0FDNENRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUQxQ1o7O0FDZ0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRDdDSjtBQytDSTtFQUNJO0VBQ0E7RUFDQTtBRDdDUjtBQytDUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FEN0NaO0FDZ0RRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRDlDWjtBQ2dEWTtFQUNJO0VBQ0E7QUQ5Q2hCO0FDaURZO0VBQ0k7RUFDQTtFQUNBO0FEL0NoQjtBQ2lEZ0I7RUFDSTtFQUNBO0FEL0NwQjtBQ21EWTtFQUNJO0FEakRoQjtBQ3FEUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QURuRFo7QUNxRFk7RUFDSTtBRG5EaEI7QUNzRFk7RUFDSTtFQUNBO0VBQ0E7QURwRGhCO0FDMERJO0VBNUVKO0lBNkVRO0lBQ0E7RUR2RE47RUN5RE07SUFDSTtFRHZEVjtBQUNGOztBQzREQTtFQUNJO0lBQ0k7SUFDQTtFRHpETjtFQzJERTtJQUNJO0lBQ0E7RUR6RE47QUFDRjtBQzREQTtFQUNJO0FEMURKOztBQzhEQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0FENURKO0FDOERJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUQ1RFI7O0FDaUVBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtBRGpFSjtBQ21FSTtFQUNJO0VBQ0E7QURqRVI7QUNzRVE7RUFDSTtBRHBFWjtBQ3VFUTtFQUNJO0VBQ0E7RUFDQTtBRHJFWjtBQzBFSTtFQUNJO0FEeEVSO0FDMEVRO0VBQ0k7QUR4RVo7O0FDaUZJO0VBQ0k7RUFDQTtBRDlFUjtBQ2tGSTtFQUNJO0VBQ0E7QURoRlI7QUNxRlE7RUFDSTtFQUNBO0FEbkZaOztBQ3lGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FEdEZKO0FDd0ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUR0RlI7QUN5Rkk7RUFDSTtFQUNBO0VBQ0E7QUR2RlI7QUMwRkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBRHhGUjs7QUM2RkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUQxRko7QUM0Rkk7RUFDSTtFQUNBO0VBQ0E7QUQxRlI7QUM2Rkk7RUFDSTtBRDNGUjtBQzhGSTtFQUNJO0VBQ0E7QUQ1RlI7QUMrRkk7RUFDSTtBRDdGUjs7QUNvR0k7RUFDSTtJQUNJO0VEakdWO0VDb0dNO0lBQ0k7RURsR1Y7RUNxR007SUFDSTtFRG5HVjtBQUNGO0FDdUdJO0VBQ0k7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O0VBQ0E7RUFDQTtFQUNBO0FGaXJCSjtBRS9xQkk7RUFDSTtBRmlyQlI7QUU5cUJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGZ3JCUjtBRTdxQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRitxQlI7QUU1cUJJO0VBQ0k7RUFDQTtBRjhxQlI7QUU1cUJRO0VBQ0k7QUY4cUJaO0FFMXFCSTtFQUNJO0VBQ0E7RUFDQTtBRjRxQlI7QUV6cUJJO0VBQ0k7RUFDQTtFQUNBO0FGMnFCUjtBRXpxQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGMnFCWjtBRXpxQlk7RUFDSTtFQUNBO0FGMnFCaEI7QUV4cUJZO0VBQ0ksbUJBcmhCUTtBRityQ3hCOztBRW5xQkE7RUFDSTtFQUNBO0VBQ0E7QUZzcUJKO0FFcHFCSTtFQUNJO0VBQ0E7RUFDQTtBRnNxQlI7QUVucUJJO0VBQ0k7QUZxcUJSOztBRWhxQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZtcUJKO0FFanFCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZtcUJSO0FFaHFCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGa3FCUjtBRS9wQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZpcUJSO0FFL3BCUTtFQUNJO0VBQ0E7RUFDQTtBRmlxQlo7QUU5cEJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUZncUJaO0FFOXBCWTtFQUNJO0FGZ3FCaEI7QUUzcEJJO0VBQ0k7RUFDQTtFQUNBO0FGNnBCUjs7QUV6cEJBO0VBQ0k7SUFDSTtJQUNBO0VGNHBCTjtFRTFwQkU7SUFDSTtJQUNBO0VGNHBCTjtBQUNGO0FFdnBCSTtFQUNJO0FGeXBCUjtBRXZwQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBRnlwQlo7QUVycEJJO0VBQ0k7RUFDQTtF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QUNBO0VBQ0E7RUFDQTtFQUNBO0FBeXNESjtBQXZzREk7RUFDSTtBQXlzRFI7QUF2c0RRO0VBQ0k7QUF5c0RaO0FBdnNEWTtFQUNJO0FBeXNEaEI7QUFwc0RJO0VBQ0k7RUFDQTtBQXNzRFI7QUFuc0RJO0VBQ0k7QUFxc0RSOztBQWpzREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFvc0RKO0FBbHNESTtFQUNJO0VBQ0E7QUFvc0RSO0FBanNESTtFQUNJO0FBbXNEUjs7QUEvckRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtzREo7O0FBL3JEQTtFQUNJO0FBa3NESjs7QUEvckRBO0VBQ0k7RUFDQTtBQWtzREo7O0FBL3JEQTtFQUNJO0VBQ0E7QUFrc0RKLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcmFjdGl0by8uL2Fzc2V0cy9zdHlsZXMvcHJhY3RpY2Uuc2NzcyIsIndlYnBhY2s6Ly9wcmFjdGl0by8uL2Fzc2V0cy9zdHlsZXMvX2luc3RydW1lbnQtdmlzdWFsaXplci5zY3NzIiwid2VicGFjazovL3ByYWN0aXRvLy4vYXNzZXRzL3N0eWxlcy9fY29tbWVudHMtYW5ub3RhdGlvbnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByYWN0aWNlIFBsYXllciBTdHlsZXNcbiAqL1xuXG5AaW1wb3J0ICdpbnN0cnVtZW50LXZpc3VhbGl6ZXInO1xuQGltcG9ydCAnY29tbWVudHMtYW5ub3RhdGlvbnMnO1xuXG4vKiBNZXRyb25vbWUgYmVhdCB2aXN1YWxpemVyIC0gZ2xvdyBlZmZlY3RzICovXG5Aa2V5ZnJhbWVzIG1ldHJvbm9tZS1nbG93LWRvd25iZWF0IHtcbiAgICAwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEoMTM5LCA2OSwgMTksIDApO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSgxMzksIDY5LCAxOSwgMC44KSwgMCAwIDMwcHggcmdiYSgxMzksIDY5LCAxOSwgMC42KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMzksIDY5LCAxOSwgMC4zKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEoMTM5LCA2OSwgMTksIDApO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbWV0cm9ub21lLWdsb3ctYmVhdCB7XG4gICAgMCUge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKDAsIDEyMywgMjU1LCAwKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMCwgMTIzLCAyNTUsIDAuOCksIDAgMCAzMHB4IHJnYmEoMCwgMTIzLCAyNTUsIDAuNik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuMyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKDAsIDEyMywgMjU1LCAwKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4vKiBBcHBseSBnbG93IGFuaW1hdGlvbiB0byBtZXRyb25vbWUgYnV0dG9ucyAqL1xuLm1ldHJvbm9tZS1kb3duYmVhdC1nbG93IHtcbiAgICBhbmltYXRpb246IG1ldHJvbm9tZS1nbG93LWRvd25iZWF0IDAuNHMgZWFzZS1vdXQ7XG59XG5cbi5tZXRyb25vbWUtYmVhdC1nbG93IHtcbiAgICBhbmltYXRpb246IG1ldHJvbm9tZS1nbG93LWJlYXQgMC40cyBlYXNlLW91dDtcbn1cblxuLnByYWN0aWNlLWNvbnRhaW5lciB7XG4gICAgLyogUmVtb3ZlZCBhbGwgbGF5b3V0IHByb3BlcnRpZXMgdG8gbGV0IEJvb3RzdHJhcCBncmlkIHdvcmsgbmF0dXJhbGx5ICovXG59XG5cbi5zaGVldC1tdXNpYy1zZWN0aW9uIHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbiNsb2FkaW5nSW5kaWNhdG9yIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBjb2xvcjogIzY2Njtcbn1cblxuLmNvbnRyb2xzLXBhbmVsIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjtcbn1cblxuLy8gTmV3IEdyb3VwZWQgQ29udHJvbCBTeXN0ZW1cbi5jb250cm9sLWdyb3Vwcy1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi8vIElubGluZSB0aW1lIGFuZCBtZWFzdXJlIGRpc3BsYXlzXG4udGltZS1kaXNwbGF5LWlubGluZSxcbi5tZWFzdXJlLWRpc3BsYXktaW5saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC40cmVtIDAuNzVyZW07XG4gICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICB9XG59XG5cbi8vIFByaW1hcnkgYWN0aW9uIGJ1dHRvbnMgKHBsYXksIHN0YXJ0IGxpc3RlbmluZywgZXRjLilcbi5jb250cm9sLWdyb3Vwcy1jb250YWluZXIgPiAuYnRuIHtcbiAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcblxuICAgIC5idG4tdGV4dCB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSB0ZXh0IG9uIG1vYmlsZSwga2VlcCBpY29uc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgIH1cbn1cblxuLmNvbnRyb2wtZ3JvdXAtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJi5mZWF0dXJlLWxvY2tlZCB7XG4gICAgICAgIC5jb250cm9sLWdyb3VwLWJ0biB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY29udHJvbC1ncm91cC1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuMjVyZW07XG4gICAgcGFkZGluZzogMC40cmVtIDAuNzVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAmLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogIzAwN2JmZjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA1NmIzO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA1NmIzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5idG4tc3VjY2VzcyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMyOGE3NDU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzI4YTc0NTtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzFlN2UzNDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzFlN2UzNDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2RlZTJlNjtcbiAgICAgICAgY29sb3I6ICM0OTUwNTc7XG5cbiAgICAgICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjYWRiNWJkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSxcbiAgICAmW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcblxuICAgICAgICAuZHJvcGRvd24tYXJyb3cge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4tdGV4dCB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSB0ZXh0IG9uIG1vYmlsZSwga2VlcCBpY29uc1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWFycm93IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgYXJyb3cgb24gbW9iaWxlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubG9jay1pY29uLWlubGluZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMTVyZW0gMC40cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbn1cblxuLmNvbnRyb2wtZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICBtaW4td2lkdGg6IDIyMHB4O1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBhbmltYXRpb246IGRyb3Bkb3duU2xpZGVJbiAwLjJzIGVhc2U7XG5cbiAgICAmLnNob3cge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbiBhZGp1c3RtZW50IGZvciByaWdodC1zaWRlIGRyb3Bkb3duc1xuICAgICYuZHJvcGRvd24tcmlnaHQge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogMDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgZHJvcGRvd25TbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4uY29udHJvbC1kcm9wZG93bi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtO1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgfVxuXG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgfVxufVxuXG4vLyBIYW5kcyBTZXBhcmF0ZSBNb2RlIFN0eWxlc1xuLmhhbmRzLW1vZGUtYnV0dG9ucyB7XG4gICAgLmJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweCAhaW1wb3J0YW50O1xuICAgICAgICBcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7XG4gICAgICAgICAgICBjb2xvcjogIzAwN2JmZjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHNtYWxsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUZW1wbyBUcmFpbmVyIFN0eWxlc1xuLnRlbXBvLXRyYWluZXItc2VjdGlvbiB7XG4gICAgLmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2ZjQyYzE7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzZmNDJjMTtcbiAgICB9XG4gICAgXG4gICAgLnRlbXBvLXRyYWluZXItc3RhdHVzIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgXG4gICAgICAgIGkge1xuICAgICAgICAgICAgY29sb3I6ICM2ZjQyYzE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1ldHJvbm9tZSBTdWJkaXZpc2lvbiBTdHlsZXNcbi5tZXRyb25vbWUtc3ViZGl2aXNpb24tYnV0dG9ucyB7XG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtO1xuICAgICAgICBcbiAgICAgICAgJi5idG4tY2hlY2s6Y2hlY2tlZCArICYge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzAwN2JmZjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAuYnRuLWNoZWNrOmNoZWNrZWQgKyAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBib3JkZXItY29sb3I6ICMwMDdiZmY7XG4gICAgfVxufVxuXG4uY29udHJvbC1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICB9XG59XG5cbi5wbGF5YmFjay1jb250cm9scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDdiZmY7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDdiZmY7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcblxuICAgICAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDU2YjM7XG4gICAgICAgIH1cblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzZjNzU3ZDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzZjNzU3ZDtcblxuICAgICAgICAgICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzU0NWI2MjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRlbXBvLWNvbnRyb2xzLFxuLnZvbHVtZS1jb250cm9scyxcbi50cmFuc3Bvc2UtY29udHJvbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG5cbiAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIH1cblxuICAgIC52YWx1ZS1kaXNwbGF5IHtcbiAgICAgICAgbWluLXdpZHRoOiA1MHB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNmM3NTdkO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjNmM3NTdkO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzU0NWI2MjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxvb3AtY29udHJvbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcbiAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlOWVjZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIDAuNXJlbSAwIDA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTllY2VmO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAucHJvZ3Jlc3MtZmlsbCB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogIzAwN2JmZjtcbiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcyBsaW5lYXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB9XG59XG5cbi50aW1lLWRpc3BsYXkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG4uc2Vzc2lvbi1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgLmluZm8taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC52YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zYXZlLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmLnNhdmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYzY2Q7XG4gICAgICAgIGNvbG9yOiAjODU2NDA0O1xuICAgIH1cblxuICAgICYuc2F2ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZDRlZGRhO1xuICAgICAgICBjb2xvcjogIzE1NTcyNDtcbiAgICB9XG5cbiAgICAmLmVycm9yIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZDdkYTtcbiAgICAgICAgY29sb3I6ICM3MjFjMjQ7XG4gICAgfVxufVxuXG4uem9vbS1jb250cm9scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNmM3NTdkO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjNmM3NTdkO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzU0NWI2MjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC56b29tLXZhbHVlIHtcbiAgICAgICAgbWluLXdpZHRoOiA1MHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxufVxuXG4uaGVscC1tb2RhbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuXG4gICAgLm1vZGFsLWNvbnRlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgbWFyZ2luOiAxMCUgYXV0bztcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmNsb3NlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgdG9wOiAxcmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgY29sb3I6ICNhYWE7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuc2hvcnRjdXRzLWxpc3Qge1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcblxuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAga2JkIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tdXRlZCB7XG4gICAgYmFja2dyb3VuZDogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNjODIzMzMgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vIFBpdGNoIFByYWN0aWNlIEZlZWRiYWNrIFVJIC0gU3VwZXIgQ29tcGFjdCBTaW5nbGUgUm93XG4ucGl0Y2gtZmVlZGJhY2stcGFuZWwge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtO1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG59XG5cbi5waXRjaC1mZWVkYmFjay1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG59XG5cbi5waXRjaC1zdGF0dXMtY29tcGFjdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC40cmVtO1xuICAgIHBhZGRpbmc6IDAuM3JlbSAwLjZyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuXG4gICAgLnN0YXR1cy1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgfVxuXG4gICAgJi53YWl0aW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2U3ZjFmZjtcbiAgICAgICAgY29sb3I6ICMwMDQwODU7XG4gICAgfVxuXG4gICAgJi5jb3JyZWN0IHtcbiAgICAgICAgYmFja2dyb3VuZDogI2Q0ZWRkYTtcbiAgICAgICAgY29sb3I6ICMxNTU3MjQ7XG4gICAgfVxuXG4gICAgJi53cm9uZy1ub3RlIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZDdkYTtcbiAgICAgICAgY29sb3I6ICM3MjFjMjQ7XG4gICAgfVxuXG4gICAgJi5vdXQtb2YtdHVuZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYzY2Q7XG4gICAgICAgIGNvbG9yOiAjODU2NDA0O1xuICAgIH1cblxuICAgICYuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2QxZWNmMTtcbiAgICAgICAgY29sb3I6ICMwYzU0NjA7XG4gICAgfVxuXG4gICAgJi50cmFuc2l0aW9uaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2UwZTdmZjtcbiAgICAgICAgY29sb3I6ICMzNzMwYTM7XG4gICAgfVxuXG4gICAgJi53YWl0aW5nLXNpbGVuY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmVmM2M3O1xuICAgICAgICBjb2xvcjogIzkyNDAwZTtcbiAgICB9XG59XG5cbi5waXRjaC1ub3RlLWRpc3BsYXkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuM3JlbTtcblxuICAgIC5ub3RlLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICAubm90ZS12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtaW4td2lkdGg6IDQ1cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAmLmNvcnJlY3Qge1xuICAgICAgICAgICAgY29sb3I6ICMyOGE3NDU7XG4gICAgICAgIH1cblxuICAgICAgICAmLm91dC1vZi10dW5lIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZjMTA3O1xuICAgICAgICB9XG5cbiAgICAgICAgJi53cm9uZyB7XG4gICAgICAgICAgICBjb2xvcjogI2RjMzU0NTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBpdGNoLW1ldGVyLWNvbXBhY3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMTIwcHg7XG5cbiAgICAucGl0Y2gtbWV0ZXItdHJhY2sge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsXG4gICAgICAgICAgICAjZGMzNTQ1IDAlLFxuICAgICAgICAgICAgI2ZmYzEwNyAyNSUsXG4gICAgICAgICAgICAjMjhhNzQ1IDQ1JSxcbiAgICAgICAgICAgICMyOGE3NDUgNTUlLFxuICAgICAgICAgICAgI2ZmYzEwNyA3NSUsXG4gICAgICAgICAgICAjZGMzNTQ1IDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG5cbiAgICAgICAgLnBpdGNoLW1ldGVyLWNlbnRlci1saW5lIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIHdpZHRoOiAycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBpdGNoLW1ldGVyLWluZGljYXRvciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgICAgICB3aWR0aDogNHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzMzMztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNlbnRzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAmLmNvcnJlY3Qge1xuICAgICAgICAgICAgY29sb3I6ICMyOGE3NDU7XG4gICAgICAgIH1cblxuICAgICAgICAmLm91dC1vZi10dW5lIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZjMTA3O1xuICAgICAgICB9XG5cbiAgICAgICAgJi53cm9uZyB7XG4gICAgICAgICAgICBjb2xvcjogI2RjMzU0NTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmhvbGQtcHJvZ3Jlc3MtY29tcGFjdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC41cmVtO1xuICAgIG1pbi13aWR0aDogODBweDtcblxuICAgIC5ob2xkLXRpbWVyLXRyYWNrIHtcbiAgICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTllY2VmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLmhvbGQtdGltZXItZmlsbCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNjY3ZWVhO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcyBsaW5lYXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaG9sZC10aW1lci10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBtaW4td2lkdGg6IDMwcHg7XG4gICAgfVxufVxuXG4vLyBSZXNwb25zaXZlXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAucHJhY3RpY2UtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgIH1cblxuICAgIC5jb250cm9scy1wYW5lbCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgfVxuXG4gICAgLnNlc3Npb24taW5mbyB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAuaW5mby1pdGVtIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSA0NSU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGVtcG8tY29udHJvbHMsXG4gICAgLnZvbHVtZS1jb250cm9scyB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xuICAgICAgICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGl0Y2gtZmVlZGJhY2stcm93IHtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICB9XG5cbiAgICAucGl0Y2gtbm90ZS1kaXNwbGF5IC5ub3RlLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBtaW4td2lkdGg6IDM1cHg7XG4gICAgfVxuXG4gICAgLnBpdGNoLW1ldGVyLWNvbXBhY3Qge1xuICAgICAgICBtaW4td2lkdGg6IDgwcHg7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBsb29wIGRyb3Bkb3duIG9uIG1vYmlsZSAobW9kYWwgaXMgdXNlZCBpbnN0ZWFkKVxuICAgICNsb29wRHJvcGRvd24ge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBQcmFjdGljZSBQbGFuIFN0ZXAgTmF2aWdhdGlvbiAqL1xuLnBsYW4tc3RlcC1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgJi5jbGlja2FibGUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjA1KTtcblxuICAgICAgICAgICAgLmp1bXAtdG8tc3RlcC1idG4ge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmN1cnJlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjEpO1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMwMDdiZmY7XG4gICAgfVxuXG4gICAgJi5jb21wbGV0ZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4uanVtcC10by1zdGVwLWJ0biB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgfVxufVxuXG4ucGxhbi1zdGVwLXN0YXR1cyB7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgbWluLXdpZHRoOiAyNHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnBsYW4tc3RlcC1pbmZvIHtcbiAgICBmbGV4OiAxO1xufVxuXG4ucGxhbi1zdGVwLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG5cbi5wbGFuLXN0ZXAtZGV0YWlscyB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgY29sb3I6ICM2Yzc1N2Q7XG59XG4iLCIvKipcbiAqIEluc3RydW1lbnQgVmlzdWFsaXplciBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIGludGVyYWN0aXZlIGluc3RydW1lbnQgdmlzdWFsaXphdGlvbnMgKHBpYW5vLCBndWl0YXIsIGV0Yy4pXG4gKi9cblxuLmluc3RydW1lbnQtdmlzdWFsaXplciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBwYWRkaW5nLXRvcDogNTBweDsgLy8gU3BhY2UgZm9yIGNsb3NlIGJ1dHRvblxuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvLyBBbGxvdyBjbG9zZSBidXR0b24gdG8gc2hvdyBvdXRzaWRlXG5cbiAgICAvLyBUcnVtcGV0IHZpc3VhbGl6ZXIgLSBub3JtYWwgYmFja2dyb3VuZCBsaWtlIG90aGVyIGluc3RydW1lbnRzXG4gICAgJi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItdHJ1bXBldCB7XG4gICAgICAgIC8vIFVzZXMgZGVmYXVsdCBiYWNrZ3JvdW5kIGZyb20gcGFyZW50XG4gICAgfVxuXG4gICAgLy8gU3RpY2t5IHBvc2l0aW9uaW5nIGF0IGJvdHRvbSBvZiB2aWV3cG9ydFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiA5OTk5O1xuICAgIG1heC1oZWlnaHQ6IDI1MHB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIG9wYWNpdHkgMC4zcyBlYXNlO1xuICAgIFxuICAgIC8vIEhpZGUgYnkgZGVmYXVsdCB1bnRpbCBKUyBpbml0aWFsaXplcyB3aXRoIHByb3BlciBtb2RlIGNsYXNzXG4gICAgLy8gVGhpcyBwcmV2ZW50cyBmbGFzaCBvZiB1bnN0eWxlZCBjb250ZW50XG4gICAgJjpub3QoLmZsb2F0aW5nLW92ZXJsYXkpOm5vdCguY29tcGFjdC1tb2RlKTpub3QoLmluc3RydW1lbnQtdmlzdWFsaXplci1waWFubykge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBTaXplIHZhcmlhdGlvbnNcbiAgICAmW2RhdGEtc2l6ZT1cInNtYWxsXCJdIHtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgbWF4LWhlaWdodDogMTYwcHg7XG5cbiAgICAgICAgLnBpYW5vLWtleWJvYXJkIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDE0MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltkYXRhLXNpemU9XCJtZWRpdW1cIl0ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyNTBweDtcbiAgICB9XG5cbiAgICAmW2RhdGEtc2l6ZT1cImxhcmdlXCJdIHtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgbWF4LWhlaWdodDogMzUwcHg7XG5cbiAgICAgICAgLnBpYW5vLWtleWJvYXJkIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltkYXRhLXNpemU9XCJ4bGFyZ2VcIl0ge1xuICAgICAgICBwYWRkaW5nOiAyNXB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA0NTBweDtcblxuICAgICAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNDIwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbiB2YXJpYXRpb25zXG4gICAgJltkYXRhLXBvc2l0aW9uPVwiYmVsb3ctbm90YXRpb25cIl0ge1xuICAgICAgICAvLyBTdGlja3kgYm90dG9tIHBvc2l0aW9uaW5nIChkZWZhdWx0KVxuICAgIH1cblxuICAgICZbZGF0YS1wb3NpdGlvbj1cInNpZGViYXJcIl0ge1xuICAgICAgICAvLyBPdmVycmlkZSBzdGlja3kgZm9yIHNpZGViYXJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgYm90dG9tOiBhdXRvO1xuICAgIH1cbn1cblxuLy8gUGlhbm8tc3BlY2lmaWMgc3R5bGVzXG4uaW5zdHJ1bWVudC12aXN1YWxpemVyLXBpYW5vIHtcbiAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgICAvLyBObyB0cmFuc2l0aW9ucyBmb3IgaW5zdGFudCByZXNwb25zZSB0byBmYXN0IG5vdGVzXG4gICAgICAgIC5waWFuby1rZXkge1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgICAgICAgICAmLmhpZ2hsaWdodGVkIHtcbiAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHRlZCBzdGF0ZSBoYW5kbGVkIGJ5IEpTXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZlIG1vZGVcbiAgICAgICAgICAgICZbc3R5bGUqPVwiY3Vyc29yOiBwb2ludGVyXCJdIHtcbiAgICAgICAgICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgycHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdoaXRlIGtleXNcbiAgICAgICAgLndoaXRlLWtleSB7XG4gICAgICAgICAgICBzdHJva2U6ICNDQ0NDQ0M7XG4gICAgICAgICAgICBzdHJva2Utd2lkdGg6IDE7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogIzk5OTk5OTtcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCbGFjayBrZXlzXG4gICAgICAgIC5ibGFjay1rZXkge1xuICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAwO1xuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiAxO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6ICMzMzMzMzM7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBLZXkgbGFiZWxzXG4gICAgICAgIC5rZXktbGFiZWwge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgZmlsbDogIzk5OTtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPY3RhdmUgbWFya2Vyc1xuICAgICAgICAub2N0YXZlLW1hcmtlcnMgdGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGZpbGw6ICM2NjY7XG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gSW5zdHJ1bWVudCB2aXN1YWxpemVyIGNvbnRyb2xzXG4uaW5zdHJ1bWVudC1jb250cm9scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcblxuICAgIC5jb250cm9sLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2FkYjViZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDdBQkM7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA3QUJDO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDA1NmIzO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDU2YjM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2FkYjViZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMDdBQkM7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIyLCAxODgsIDAuMjUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBsYXlvdXRcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cbiAgICAgICAgLmNvbnRyb2wtZ3JvdXAge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBbmltYXRpb24gZm9yIHNob3dpbmcvaGlkaW5nIHZpc3VhbGl6ZXJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4uaW5zdHJ1bWVudC12aXN1YWxpemVyIHtcbiAgICBhbmltYXRpb246IHNsaWRlRG93biAwLjNzIGVhc2U7XG59XG5cbi8vIEd1aXRhciB2aXN1YWxpemVyIHNwZWNpZmljIHN0eWxlc1xuLmluc3RydW1lbnQtdmlzdWFsaXplci1ndWl0YXIge1xuICAgIC8vIEd1aXRhciB1c2VzIFNWRyByZW5kZXJpbmcsIHBvc2l0aW9uZWQgYXQgYm90dG9tXG4gICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG59XG5cbi8vIFZpb2xpbiB2aXN1YWxpemVyIHNwZWNpZmljIHN0eWxlc1xuLmluc3RydW1lbnQtdmlzdWFsaXplci12aW9saW4ge1xuICAgIC8vIFZpb2xpbiB1c2VzIFNWRyByZW5kZXJpbmcgLSBwb3NpdGlvbmVkIGF0IHN0aWNreSBib3R0b20gbGlrZSBwaWFubyBhbmQgZ3VpdGFyXG4gICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gICAgYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gICAgbWF4LWhlaWdodDogMzAwcHggIWltcG9ydGFudDtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogOTkgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy10b3A6IDUwcHggIWltcG9ydGFudDsgLy8gU3BhY2UgZm9yIGNsb3NlIGJ1dHRvblxuXG4gICAgLy8gQ2VudGVyIHRoZSBTVkcgY29udGVudFxuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcblxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG5cbiAgICAvLyBGaW5nZXJib2FyZCBzdHlsZXNcbiAgICAuZmluZ2VyLXBvc2l0aW9uIHtcbiAgICAgICAgLmZpbmdlci1kb3Qge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjFzIGVhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAuZmluZ2VyLXRleHQge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjFzIGVhc2U7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQm93IGRpcmVjdGlvbiBpbmRpY2F0b3JcbiAgICAuYm93LWRpcmVjdGlvbi1pbmRpY2F0b3Ige1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcblxuICAgICAgICB0ZXh0IHtcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTYXhvcGhvbmUgdmlzdWFsaXplciBzcGVjaWZpYyBzdHlsZXNcbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItc2F4b3Bob25lIHtcbiAgICAvLyBCYXNlIHN0eWxlcyAtIHBvc2l0aW9uaW5nIGhhbmRsZWQgYnkgY29tcGFjdC1tb2RlIGNsYXNzXG4gICAgXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cblxuICAgIC8vIEtleSBwYWQgc3R5bGVzXG4gICAgLmtleS1wYWQge1xuICAgICAgICB0cmFuc2l0aW9uOiBmaWxsIDAuMTVzIGVhc2Utb3V0LCBmaWx0ZXIgMC4xNXMgZWFzZS1vdXQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cbiAgICAvLyBLZXkgZ3JvdXAgaG92ZXIgZWZmZWN0c1xuICAgIC5rZXktZ3JvdXAge1xuICAgICAgICAmOmhvdmVyIC5rZXktcGFkIHtcbiAgICAgICAgICAgIHN0cm9rZTogIzY2NjtcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aDogMi41O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBDb21pbmcgc29vbiBtZXNzYWdlIGZvciB1bmltcGxlbWVudGVkIGluc3RydW1lbnRzXG4uY29taW5nLXNvb24tbWVzc2FnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgcGFkZGluZzogMzBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBpIHtcbiAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGNvbG9yOiAjNjY2O1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGNvbG9yOiAjMzMzO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogIzY2NjtcbiAgICB9XG59XG5cbi8vIFBlZWsgYnV0dG9uIGF0IGJvdHRvbSBjZW50ZXIgd2hlbiBjb2xsYXBzZWRcbi5pbnN0cnVtZW50LXBlZWstYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAxMHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgICB6LWluZGV4OiA5ODtcbiAgICBiYWNrZ3JvdW5kOiAjMDA3QUJDOyAvLyBDb21wYW55IGJsdWVcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTIyLCAxODgsIDAuMyk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICYuaGlkZGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMTAwcHgpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoMCwgMTIyLCAxODgsIDAuNSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyBBY2Nlc3NpYmlsaXR5IGltcHJvdmVtZW50c1xuLmluc3RydW1lbnQtdmlzdWFsaXplciB7XG4gICAgLy8gSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnRcbiAgICBAbWVkaWEgKHByZWZlcnMtY29udHJhc3Q6IGhpZ2gpIHtcbiAgICAgICAgLnBpYW5vLWtleSB7XG4gICAgICAgICAgICBzdHJva2Utd2lkdGg6IDIgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC53aGl0ZS1rZXkge1xuICAgICAgICAgICAgc3Ryb2tlOiAjMDAwMDAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmxhY2sta2V5IHtcbiAgICAgICAgICAgIHN0cm9rZTogI0ZGRkZGRiAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVkdWNlZCBtb3Rpb24gc3VwcG9ydFxuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgICAgIC5waWFuby1rZXkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRkxPQVRJTkcgUElBTk8gT1ZFUkxBWSBNT0RFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmluc3RydW1lbnQtdmlzdWFsaXplci1waWFuby5mbG9hdGluZy1vdmVybGF5IHtcbiAgICAvLyBPdmVycmlkZSBmaXhlZCBib3R0b20gcG9zaXRpb25pbmcgZm9yIGZsb2F0aW5nIG1vZGVcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgICBib3R0b206IDIwcHggIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDIwcHggIWltcG9ydGFudDtcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMnB4IHJnYmEoMCwgMTIyLCAxODgsIDAuMyksIDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA3QUJDIDAlLCAjMDA1YThjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbiAgICBcbiAgICAvLyBTaXplIHRvZ2dsZSBidXR0b24gYXJlYVxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgICAgICAgY3Vyc29yOiBtb3ZlO1xuICAgIH1cbiAgICBcbiAgICAvLyBGbG9hdGluZyBzaXplcyAtIGFsbCBzdGFydCBhdCBib3R0b206IDIwcHhcbiAgICAmW2RhdGEtc2l6ZT1cInNtYWxsXCJdIHtcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICBcbiAgICAgICAgLnBpYW5vLWtleWJvYXJkIHtcbiAgICAgICAgICAgIHdpZHRoOiA0MDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgJltkYXRhLXNpemU9XCJtZWRpdW1cIl0ge1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICAgICAgd2lkdGg6IDU1MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgJltkYXRhLXNpemU9XCJsYXJnZVwiXSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIC5waWFuby1rZXlib2FyZCB7XG4gICAgICAgICAgICB3aWR0aDogNzIwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMTQwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAmW2RhdGEtc2l6ZT1cInhsYXJnZVwiXSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIC5waWFuby1rZXlib2FyZCB7XG4gICAgICAgICAgICB3aWR0aDogOTAwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMTgwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ29sbGFwc2VkIHN0YXRlIGZvciBmbG9hdGluZ1xuICAgICYuY29sbGFwc2VkIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpICFpbXBvcnRhbnQ7XG4gICAgICAgIG9wYWNpdHk6IDAgIWltcG9ydGFudDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgXG4gICAgLy8gTW9iaWxlOiBmdWxsIHdpZHRoIGF0IHZlcnkgYm90dG9tXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIGJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICByaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIHRvcDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gRmxvYXRpbmcgb3ZlcmxheSBjb250cm9sc1xuLmZsb2F0aW5nLXZpc3VhbGl6ZXItY29udHJvbHMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDZweDtcbiAgICBsZWZ0OiAxMnB4O1xuICAgIHJpZ2h0OiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogMTA7XG4gICAgXG4gICAgLnNpemUtdG9nZ2xlLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgfVxuICAgIFxuICAgIC5zaXplLWJ0biB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICBcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIC5mbG9hdGluZy1jbG9zZS1idG4ge1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjIwLCA1MywgNjksIDAuOCk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICBcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZGMzNTQ1O1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUEFDVCBOT04tUElBTk8gSU5TVFJVTUVOVFMgKG5vdyB3aXRoIHNpemUgdG9nZ2xlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItZ3VpdGFyLmNvbXBhY3QtbW9kZSxcbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItdmlvbGluLmNvbXBhY3QtbW9kZSxcbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItc2F4b3Bob25lLmNvbXBhY3QtbW9kZSxcbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItdHJ1bXBldC5jb21wYWN0LW1vZGUsXG4uaW5zdHJ1bWVudC12aXN1YWxpemVyLWZsdXRlLmNvbXBhY3QtbW9kZSxcbi5pbnN0cnVtZW50LXZpc3VhbGl6ZXItY2xhcmluZXQuY29tcGFjdC1tb2RlIHtcbiAgICAvLyBQb3NpdGlvbiBhdCBib3R0b20tcmlnaHQgbGlrZSBwaWFubyAoZHJhZ2dhYmxlKVxuICAgIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICAgIGJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgbWF4LXdpZHRoOiA5NXZ3ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCAxMjIsIDE4OCwgMC4zKSwgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDE1cHggMjBweCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctdG9wOiA0NXB4ICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwN0FCQyAwJSwgIzAwNWE4YyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogbW92ZSAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbiAgICBcbiAgICBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBcbiAgICAmLmNvbGxhcHNlZCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIFxuICAgIC8vIE1vYmlsZTogZnVsbCB3aWR0aCBhdCB2ZXJ5IGJvdHRvbVxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICBib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vIEd1aXRhciBjb21wYWN0IHNpemVzXG4uaW5zdHJ1bWVudC12aXN1YWxpemVyLWd1aXRhci5jb21wYWN0LW1vZGUge1xuICAgIC8vIE92ZXJyaWRlIGFueSBmaXhlZCBwb3NpdGlvbmluZ1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIFxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIFxuICAgICZbZGF0YS1zaXplPVwic21hbGxcIl0ge1xuICAgICAgICB3aWR0aDogMzUwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWF4LXdpZHRoOiA5NXZ3ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgICZbZGF0YS1zaXplPVwibWVkaXVtXCJdLCAmOm5vdChbZGF0YS1zaXplXSkge1xuICAgICAgICB3aWR0aDogNTUwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWF4LXdpZHRoOiA5NXZ3ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgICZbZGF0YS1zaXplPVwibGFyZ2VcIl0ge1xuICAgICAgICB3aWR0aDogNzUwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWF4LXdpZHRoOiA5NXZ3ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBWaW9saW4gY29tcGFjdCBzaXplcyAobGFyZ2VyIHNpemVzKVxuLmluc3RydW1lbnQtdmlzdWFsaXplci12aW9saW4uY29tcGFjdC1tb2RlIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIFxuICAgICZbZGF0YS1zaXplPVwic21hbGxcIl0ge1xuICAgICAgICBzdmcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAzMjBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmW2RhdGEtc2l6ZT1cIm1lZGl1bVwiXSwgJjpub3QoW2RhdGEtc2l6ZV0pIHtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDIwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI2MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJltkYXRhLXNpemU9XCJsYXJnZVwiXSB7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDUyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAzMjBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTYXhvcGhvbmUgY29tcGFjdCBzaXplc1xuLmluc3RydW1lbnQtdmlzdWFsaXplci1zYXhvcGhvbmUuY29tcGFjdC1tb2RlIHtcbiAgICAvLyBGdWxsIGNvbXBhY3QgcG9zaXRpb25pbmcgKG92ZXJyaWRlIGFueSBiYXNlIHN0eWxlcylcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgICBib3R0b206IDIwcHggIWltcG9ydGFudDtcbiAgICByaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB0b3A6IGF1dG8gIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMzJweCByZ2JhKDAsIDEyMiwgMTg4LCAwLjMpLCAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwN0FCQyAwJSwgIzAwNWE4YyAxMDAlKSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogbW92ZSAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIFxuICAgIC8vIFNheG9waG9uZSBpcyBwb3J0cmFpdCAodGFsbCkgLSBiaWcgYmx1ZSBjb250YWluZXIsIHNtYWxsZXIgU1ZHIGluc2lkZVxuICAgICZbZGF0YS1zaXplPVwic21hbGxcIl0ge1xuICAgICAgICB3aWR0aDogMTYwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA2MjBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNTBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTI1cHggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogNzBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMjBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgICZbZGF0YS1zaXplPVwibWVkaXVtXCJdLCAmOm5vdChbZGF0YS1zaXplXSkge1xuICAgICAgICB3aWR0aDogMTkwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA3MjBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAyNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNTVweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTMwcHggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogODVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAxODBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgICZbZGF0YS1zaXplPVwibGFyZ2VcIl0ge1xuICAgICAgICB3aWR0aDogMjIwcHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiA4MjBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNjBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTM1cHggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMjQwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBzdmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIFxuICAgIC8vIE1vYmlsZTogY29tcGFjdCBhdCBib3R0b20gY2VudGVyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIGJvdHRvbTogMTBweCAhaW1wb3J0YW50O1xuICAgICAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDtcbiAgICAgICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIC8vIEZpeGVkIHNpemUgZm9yIG1vYmlsZSAtIGJpZyBibHVlIGNvbnRhaW5lciwgc21hbGxlciBTVkdcbiAgICAgICAgJiwgJltkYXRhLXNpemU9XCJzbWFsbFwiXSwgJltkYXRhLXNpemU9XCJtZWRpdW1cIl0sICZbZGF0YS1zaXplPVwibGFyZ2VcIl0sICY6bm90KFtkYXRhLXNpemVdKSB7XG4gICAgICAgICAgICB3aWR0aDogMTUwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogNTAwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMDBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDcwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNjVweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVHJ1bXBldCBjb21wYWN0IHNpemVzXG4uaW5zdHJ1bWVudC12aXN1YWxpemVyLXRydW1wZXQuY29tcGFjdC1tb2RlIHtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIFxuICAgICZbZGF0YS1zaXplPVwic21hbGxcIl0ge1xuICAgICAgICBtYXgtd2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIFxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAzNjBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTEwcHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmW2RhdGEtc2l6ZT1cIm1lZGl1bVwiXSwgJjpub3QoW2RhdGEtc2l6ZV0pIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MDBweCAhaW1wb3J0YW50O1xuICAgICAgICBcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDYwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDE0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJltkYXRhLXNpemU9XCJsYXJnZVwiXSB7XG4gICAgICAgIG1heC13aWR0aDogNjUwcHggIWltcG9ydGFudDtcbiAgICAgICAgXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxODBweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQk9EWSBQQURESU5HIChvbmx5IGZvciBub24tZmxvYXRpbmcgbW9kZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBObyBib2R5IHBhZGRpbmcgbmVlZGVkIGZvciBmbG9hdGluZy9jb21wYWN0IG1vZGVzXG5ib2R5Lmluc3RydW1lbnQtdmlzdWFsaXplci12aXNpYmxlLnZpc3VhbGl6ZXItZmxvYXRpbmcge1xuICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbmJvZHkuaW5zdHJ1bWVudC12aXN1YWxpemVyLXZpc2libGUudmlzdWFsaXplci1jb21wYWN0IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4vLyBMZWdhY3kgZnVsbC13aWR0aCBtb2RlIHBhZGRpbmdcbmJvZHkuaW5zdHJ1bWVudC12aXN1YWxpemVyLXZpc2libGU6bm90KC52aXN1YWxpemVyLWZsb2F0aW5nKTpub3QoLnZpc3VhbGl6ZXItY29tcGFjdCkge1xuICAgIHBhZGRpbmctYm90dG9tOiA0MDBweDtcblxuICAgICYudmlzdWFsaXplci1zbWFsbCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyODBweDtcbiAgICB9XG5cbiAgICAmLnZpc3VhbGl6ZXItbGFyZ2Uge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTAwcHg7XG4gICAgfVxufVxuXG4vLyBNb2JpbGUgb3B0aW1pemF0aW9uc1xuQG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgLmluc3RydW1lbnQtdmlzdWFsaXplciB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwO1xuXG4gICAgICAgICZbZGF0YS1zaXplPVwic21hbGxcIl0ge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTQwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmW2RhdGEtc2l6ZT1cImxhcmdlXCJdIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAyODBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnN0cnVtZW50LXZpc3VhbGl6ZXItcGlhbm8ge1xuICAgICAgICAucGlhbm8ta2V5Ym9hcmQge1xuICAgICAgICAgICAgLmtleS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA4cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5vY3RhdmUtbWFya2VycyB0ZXh0IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGp1c3QgYm9keSBwYWRkaW5nIGZvciBtb2JpbGVcbiAgICBib2R5Lmluc3RydW1lbnQtdmlzdWFsaXplci12aXNpYmxlIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDI4MHB4OyAvLyBJbmNyZWFzZWQgZnJvbSAyMDBweFxuXG4gICAgICAgICYudmlzdWFsaXplci1zbWFsbCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjQwcHg7IC8vIEluY3JlYXNlZCBmcm9tIDE4MHB4XG4gICAgICAgIH1cblxuICAgICAgICAmLnZpc3VhbGl6ZXItbGFyZ2Uge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4OyAvLyBJbmNyZWFzZWQgZnJvbSAzMzBweFxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBQcmludCBzdHlsZXNcbkBtZWRpYSBwcmludCB7XG4gICAgLmluc3RydW1lbnQtdmlzdWFsaXplciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmluc3RydW1lbnQtY29udHJvbHMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogQ29tbWVudHMgJiBBbm5vdGF0aW9ucyBTdHlsZXNcbiAqIFN0eWxlcyBmb3IgdGVhY2hlciBjb21tZW50cyBhbmQgc3R1ZGVudCBwcmFjdGljZSBhbm5vdGF0aW9uc1xuICovXG5cbi8vIFZhcmlhYmxlc1xuJGNvbW1lbnQtcHJpbWFyeTogIzY2N2VlYTtcbiRjb21tZW50LWZlZWRiYWNrOiAjZjA5M2ZiO1xuJGFubm90YXRpb24tZGlmZmljdWx0eTogI2ZmNmI2YjtcbiRhbm5vdGF0aW9uLXJlbWluZGVyOiAjZmVjYTU3O1xuJGFubm90YXRpb24tdGVjaG5pcXVlOiAjNDhkYmZiO1xuJGFubm90YXRpb24tY3VzdG9tOiAjMWRkMWExO1xuXG4vLyBNZWFzdXJlIEluZGljYXRvcnNcbi5tZWFzdXJlLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBvcGFjaXR5OiAwLjU7IC8vIFNlbWktdHJhbnNwYXJlbnQgdG8gc2VlIG5vdGVzIGJlaGluZFxuXG4gICAgLy8gTW9iaWxlIGFkanVzdG1lbnRzXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICBvcGFjaXR5OiAxOyAvLyBGdWxsIG9wYWNpdHkgb24gaG92ZXJcbiAgICB9XG5cbiAgICAmLWNvbW1lbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgIH1cblxuICAgICYtYW5ub3RhdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhbm5vdGF0aW9uLWN1c3RvbTtcbiAgICB9XG5cbiAgICAvLyBQdWxzZSBhbmltYXRpb24gZm9yIHVucmVzb2x2ZWQgZmVlZGJhY2tcbiAgICAmLmhhcy1wZW5kaW5nIHtcbiAgICAgICAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTtcbiAgICB9XG59XG5cbi8vIENvbnRhaW5lciBmb3Igc2hlZXQgbXVzaWMgLSBlbnN1cmUgcHJvcGVyIHBvc2l0aW9uaW5nXG4jc2hlZXRNdXNpY0NvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8vIFByZXZlbnQgaW5kaWNhdG9ycyBmcm9tIGNhdXNpbmcgaG9yaXpvbnRhbCBzY3JvbGxcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgMCUge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoJGNvbW1lbnQtZmVlZGJhY2ssIDAuNyk7XG4gICAgfVxuICAgIDcwJSB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgkY29tbWVudC1mZWVkYmFjaywgMCk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoJGNvbW1lbnQtZmVlZGJhY2ssIDApO1xuICAgIH1cbn1cblxuLy8gTWVhc3VyZSBBY3Rpb24gTWVudVxuLm1lYXN1cmUtYWN0aW9uLW1lbnUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgcGFkZGluZzogMDtcbiAgICB6LWluZGV4OiAxMDAwMDA7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGNvbW1lbnQtcHJpbWFyeSwgJGNvbW1lbnQtZmVlZGJhY2spO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2xvc2UtbWVudSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLW9wdGlvbnMsICYtZXhpc3Rpbmcge1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAmLWV4aXN0aW5nIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgfVxuXG4gICAgLmFjdGlvbi1idG4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmMGYyZjU7XG4gICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgaSB7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuXG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmFkZC1jb21tZW50LWJ0biBpIHsgY29sb3I6ICRjb21tZW50LXByaW1hcnk7IH1cbiAgICAgICAgJi5hZGQtYW5ub3RhdGlvbi1idG4gaSB7IGNvbG9yOiAkYW5ub3RhdGlvbi1jdXN0b207IH1cbiAgICB9XG59XG5cbi8vIENvbW1lbnRzIFBhbmVsIChTaWRlIFBhbmVsKVxuLmNvbW1lbnRzLXBhbmVsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAtNDAwcHg7XG4gICAgd2lkdGg6IDQwMHB4O1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAtNHB4IDAgMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgdHJhbnNpdGlvbjogcmlnaHQgMC4zcyBlYXNlO1xuICAgIC8vIElzb2xhdGUgdG91Y2ggZXZlbnRzIHRvIHRoaXMgcGFuZWxcbiAgICB0b3VjaC1hY3Rpb246IHBhbi15O1xuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG5cbiAgICAmLm9wZW4ge1xuICAgICAgICByaWdodDogMDtcbiAgICB9XG5cbiAgICAucGFuZWwtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkY29tbWVudC1wcmltYXJ5LCAkY29tbWVudC1mZWVkYmFjayk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIC8vIFByZXZlbnQgaGVhZGVyIGZyb20gdHJpZ2dlcmluZyBzY29yZSBldmVudHNcbiAgICAgICAgdG91Y2gtYWN0aW9uOiBub25lO1xuXG4gICAgICAgIGg1IHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbG9zZS1wYW5lbCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGFuZWwtYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7IC8vIEltcG9ydGFudCBmb3IgZmxleCBvdmVyZmxvd1xuICAgICAgICAvLyBDb250YWluIHNjcm9sbGluZyB3aXRoaW4gdGhpcyBlbGVtZW50XG4gICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICB9XG5cbiAgICAucGFuZWwtZm9vdGVyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAvLyBQcmV2ZW50IGZvb3RlciBmcm9tIHRyaWdnZXJpbmcgc2NvcmUgZXZlbnRzXG4gICAgICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcblxuICAgICAgICAvLyBBZGQgZXh0cmEgcGFkZGluZyBmb3IgcGhvbmUgbmF2aWdhdGlvbiBiYXIgb24gbW9iaWxlXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDUwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAucGFuZWwtYWN0aW9ucyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG5cbiAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGFuZWwtc3VidGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6ICM2NjY7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgcGFuZWwtYWN0aW9ucyBpbnNpZGUgYm9keSAoZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KVxuICAgIC5wYW5lbC1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAyMHB4O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ29tbWVudHMgTGlzdFxuLmNvbW1lbnRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDE2cHg7XG59XG5cbi5jb21tZW50LWl0ZW0ge1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgJi5yZXNvbHZlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgICAgYmFja2dyb3VuZDogI2U4ZjVlOTtcblxuICAgICAgICAuY29tbWVudC1jb250ZW50IHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbW1lbnQtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuY29tbWVudC1hdXRob3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcblxuICAgICAgICBpbWcsIC5hdXRob3ItYXZhdGFyIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYXV0aG9yLWF2YXRhciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuYXV0aG9yLW5hbWUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICB9XG5cbiAgICAgICAgLmF1dGhvci1yb2xlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UwZTBlMDtcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2O1xuXG4gICAgICAgICAgICAmLmJhZGdlLXRlYWNoZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb21tZW50LXByaW1hcnk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbW1lbnQtbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBjb2xvcjogIzg4ODtcblxuICAgICAgICAuY29tbWVudC10eXBlIGkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tbWVudC1tZWFzdXJlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbW1lbnQtcHJpbWFyeTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tbWVudC10YWdzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuXG4gICAgICAgIC50YWcge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29tbWVudC1mZWVkYmFjaywgMC4yKTtcbiAgICAgICAgICAgIGNvbG9yOiBkYXJrZW4oJGNvbW1lbnQtZmVlZGJhY2ssIDIwJSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBTcGVjaWZpYyBjb2xvcnMgZm9yIGRpZmZlcmVudCB0YWcgdHlwZXNcbiAgICAgICAgICAgICZbZGF0YS10YWc9XCJyaHl0aG1cIl0sXG4gICAgICAgICAgICAmOmNvbnRhaW5zKFwicmh5dGhtXCIpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCNlNzRjM2MsIDAuMTUpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjYzAzOTJiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAmW2RhdGEtdGFnPVwicGl0Y2hcIl0sXG4gICAgICAgICAgICAmOmNvbnRhaW5zKFwicGl0Y2hcIikge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoIzM0OThkYiwgMC4xNSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMyOTgwYjk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICZbZGF0YS10YWc9XCJkeW5hbWljc1wiXSxcbiAgICAgICAgICAgICY6Y29udGFpbnMoXCJkeW5hbWljc1wiKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgjOWI1OWI2LCAwLjE1KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzhlNDRhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgJltkYXRhLXRhZz1cInRlY2huaXF1ZVwiXSxcbiAgICAgICAgICAgICY6Y29udGFpbnMoXCJ0ZWNobmlxdWVcIikge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoI2YzOWMxMiwgMC4xNSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNkNjg5MTA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICZbZGF0YS10YWc9XCJhcnRpY3VsYXRpb25cIl0sXG4gICAgICAgICAgICAmOmNvbnRhaW5zKFwiYXJ0aWN1bGF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCMxYWJjOWMsIDAuMTUpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMTZhMDg1O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAmW2RhdGEtdGFnPVwidGVtcG9cIl0sXG4gICAgICAgICAgICAmOmNvbnRhaW5zKFwidGVtcG9cIikge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoI2U2N2UyMiwgMC4xNSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNkMzU0MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tbWVudC1jb250ZW50IHtcbiAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB9XG5cbiAgICAuY29tbWVudC1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA4cHg7XG5cbiAgICAgICAgLmJ0bi1zbSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggMTJweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UwZTBlMDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAjNjY2O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb21tZW50LXByaW1hcnk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmJ0bi1zdWNjZXNzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNGNhZjUwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21tZW50LXJlcGxpZXMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuXG4gICAgICAgIC5jb21tZW50LWl0ZW0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBbm5vdGF0aW9ucyBMaXN0XG4uYW5ub3RhdGlvbnMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTJweDtcbn1cblxuLmFubm90YXRpb24taXRlbSB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgJGFubm90YXRpb24tY3VzdG9tO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIH1cblxuICAgIC5hbm5vdGF0aW9uLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuYW5ub3RhdGlvbi10eXBlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICAuYW5ub3RhdGlvbi1tZWFzdXJlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBjb2xvcjogIzg4ODtcblxuICAgICAgICBpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFubm90YXRpb24tY29udGVudCB7XG4gICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgfVxuXG4gICAgLmFubm90YXRpb24tYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuXG4gICAgICAgIC5idG4tc20ge1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlMGUwZTA7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBjb2xvcjogIzY2NjtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzMzO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5idG4tZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYW5ub3RhdGlvbi1kaWZmaWN1bHR5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBFbXB0eSBTdGF0ZVxuLmVtcHR5LXN0YXRlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNDBweCAyMHB4O1xuICAgIGNvbG9yOiAjODg4O1xuXG4gICAgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4vLyBNb2RhbFxuLmNvbW1lbnRzLW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwMDAwMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAubW9kYWwtYmFja2Ryb3Age1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICAubW9kYWwtZGlhbG9nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICBhbmltYXRpb246IG1vZGFsU2xpZGVJbiAwLjNzIGVhc2U7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxuXG4gICAgLm1vZGFsLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMjBweCAyNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkY29tbWVudC1wcmltYXJ5LCAkY29tbWVudC1mZWVkYmFjayk7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgICAgICBoNSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2xvc2UtbW9kYWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1vZGFsLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAyNHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDkwdmggLSA3MHB4KTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgbW9kYWxTbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyBGb3Jtc1xuLmNvbW1lbnQtZm9ybSwgLmFubm90YXRpb24tZm9ybSB7XG4gICAgLmZvcm0tZ3JvdXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycztcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb21tZW50LXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICB9XG5cbiAgICBzZWxlY3QuZm9ybS1jb250cm9sIHtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nMCAwIDEyIDEyJyUzRSUzQ3BhdGggZmlsbD0nJTIzNjY2JyBkPSdNNiA4TDEgM2gxMHonLyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDEycHggY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4O1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wtY29sb3Ige1xuICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC5mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcbiAgICB9XG59XG5cbi8vIEFubm90YXRpb24gVHlwZSBTZWxlY3RvclxuLmFubm90YXRpb24tdHlwZS1zZWxlY3RvciB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogMTBweDtcbn1cblxuLmFubm90YXRpb24tdHlwZS1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgcGFkZGluZzogMTJweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjZTBlMGUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuXG4gICAgaW5wdXQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC50eXBlLWJhZGdlIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIC50eXBlLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGNvbG9yOiAjMzMzO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNiYmI7XG4gICAgfVxuXG4gICAgJi5zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbW1lbnQtcHJpbWFyeTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgkY29tbWVudC1wcmltYXJ5LCAwLjA1KTtcbiAgICB9XG59XG5cbi8vIFRhZyBDaGVja2JveGVzXG4udGFnLWNoZWNrYm94ZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xufVxuXG4udGFnLWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgaW5wdXQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICY6Y2hlY2tlZCArIC50YWctbGFiZWwge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbW1lbnQtcHJpbWFyeTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWctbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2UwZTBlMDtcbiAgICAgICAgY29sb3I6ICM2NjY7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gICAgfVxufVxuXG4vLyBCdXR0b25zXG4uYnRuIHtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG5cbiAgICAmLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJGNvbW1lbnQtcHJpbWFyeSwgMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogI2UwZTBlMDtcbiAgICAgICAgY29sb3I6ICMzMzM7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZDBkMGQwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYW5ub3RhdGlvbi1kaWZmaWN1bHR5O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJGFubm90YXRpb24tZGlmZmljdWx0eSwgMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB9XG59XG5cbi8vIFRvYXN0IE5vdGlmaWNhdGlvbnNcbi50b2FzdCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMjBweDtcbiAgICByaWdodDogMjBweDtcbiAgICBwYWRkaW5nOiAxMnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgei1pbmRleDogMTAwMDAyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcblxuICAgICYtc3VjY2VzcyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhbm5vdGF0aW9uLWN1c3RvbTtcbiAgICB9XG5cbiAgICAmLWVycm9yIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGFubm90YXRpb24tZGlmZmljdWx0eTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0IHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTtcbiAgICB9XG59XG5cbi8vIFJlc3BvbnNpdmVcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5jb21tZW50cy1wYW5lbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICByaWdodDogLTEwMCU7XG4gICAgfVxuXG4gICAgLmFubm90YXRpb24tdHlwZS1zZWxlY3RvciB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5tZWFzdXJlLWFjdGlvbi1tZW51IHtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgbGVmdDogNSU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIH1cbn1cblxuLy8gTW9iaWxlIEZsb2F0aW5nIENvbW1lbnRzIEJ1dHRvblxuLm1vYmlsZS1jb21tZW50cy1mYWIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IDEwMHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkY29tbWVudC1wcmltYXJ5LCAkY29tbWVudC1mZWVkYmFjayk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB6LWluZGV4OiA5OTk5O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcblxuICAgIGkge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciwgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjUpO1xuICAgIH1cblxuICAgIC5jb21tZW50cy1iYWRnZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtNHB4O1xuICAgICAgICByaWdodDogLTRweDtcbiAgICAgICAgbWluLXdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmNmI2YjtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBmb250LXNpemU6IDlweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjIpO1xuICAgIH1cblxuICAgIC8vIFNob3cgb24gYWxsIGRldmljZXMgYnV0IG1vcmUgcHJvbWluZW50IG9uIG1vYmlsZVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTW9iaWxlIENvbW1lbnRzIEJvdHRvbSBTaGVldFxuLm1vYmlsZS1jb21tZW50cy1zaGVldCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICB6LWluZGV4OiAxMDAwMDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAmLm9wZW4ge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcblxuICAgICAgICAuc2hlZXQtb3ZlcmxheSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNoZWV0LWNvbnRlbnQge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNoZWV0LW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICAgIH1cblxuICAgIC5zaGVldC1jb250ZW50IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAvLyBJc29sYXRlIHRvdWNoIGV2ZW50c1xuICAgICAgICB0b3VjaC1hY3Rpb246IHBhbi15O1xuICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAgIH1cblxuICAgIC5zaGVldC1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGNvbW1lbnQtcHJpbWFyeSwgJGNvbW1lbnQtZmVlZGJhY2spO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaGVldC1jbG9zZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgb3BhY2l0eTogMC44O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNoZWV0LXRhYnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZWNlZjtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICB9XG5cbiAgICAuc2hlZXQtdGFiIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6ICRjb21tZW50LXByaW1hcnk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zaGVldC1ib2R5IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWF4LWhlaWdodDogNjB2aDtcbiAgICAgICAgLy8gQ29udGFpbiBzY3JvbGxpbmcgd2l0aGluIHRoaXMgZWxlbWVudFxuICAgICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgfVxuXG4gICAgLnNoZWV0LXRhYi1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMTZweDtcblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVtcHR5IHN0YXRlXG4gICAgLmVtcHR5LXN0YXRlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiA0MHB4IDIwcHg7XG4gICAgICAgIGNvbG9yOiAjNmM3NTdkO1xuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgZm9udC1zaXplOiA0OHB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmhpbnQge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWVhc3VyZSBsaXN0XG4gICAgLm1lYXN1cmUtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgIH1cblxuICAgIC5tZWFzdXJlLWxpc3QtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIsICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlOWVjZWY7XG4gICAgICAgIH1cblxuICAgICAgICAubWVhc3VyZS1udW1iZXIge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAubWVhc3VyZS1iYWRnZXMge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGdhcDogNnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tYmFkZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgICAgICAgICAgJi5jb21tZW50LWJhZGdlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLm5vdGUtYmFkZ2Uge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IGkge1xuICAgICAgICAgICAgY29sb3I6ICNhZGI1YmQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGwgY29tbWVudHMgbGlzdFxuICAgIC5hbGwtY29tbWVudHMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICB9XG5cbiAgICAuY29tbWVudC1saXN0LWl0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciwgJjphY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2U5ZWNlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb21tZW50LWl0ZW0taGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcblxuICAgICAgICAgICAgLmNvbW1lbnQtbWVhc3VyZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJGNvbW1lbnQtcHJpbWFyeTtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMnB4IDhweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbW1lbnQtYXV0aG9yIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29tbWVudC10aW1lIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2FkYjViZDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb21tZW50LWl0ZW0tY29udGVudCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAuY29tbWVudC1yZXBsaWVzLWNvdW50IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICAgICAgY29sb3I6ICM2Yzc1N2Q7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogNHB4O1xuXG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgZm9ybVxuICAgIC5hZGQtY29tbWVudC1mb3JtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tYWN0aW9ucyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgZ2FwOiAxMnB4O1xuXG4gICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAgICAgICAgICAgICAmLXByaW1hcnkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29tbWVudC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcblxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkY29tbWVudC1wcmltYXJ5LCAxMCUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi1zZWNvbmRhcnkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM0OTUwNTc7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7XG5cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOWZhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/